xiaoyong931011
2023-02-13 0c568e9f295471f6b80e0b6d156ae890163b19bf
订单发货设置
7 files modified
224 ■■■■■ changed files
src/main/java/cc/mrbird/febs/mall/controller/AdminMallOrderController.java 47 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallOrderService.java 8 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java 10 ●●●● patch | view | raw | blame | history
src/main/resources/mapper/modules/MallOrderInfoMapper.xml 2 ●●● patch | view | raw | blame | history
src/main/resources/templates/febs/views/modules/order/deliverGoods.html 4 ●●●● patch | view | raw | blame | history
src/main/resources/templates/febs/views/modules/order/orderDetail.html 36 ●●●● patch | view | raw | blame | history
src/main/resources/templates/febs/views/modules/order/orderList.html 117 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/controller/AdminMallOrderController.java
@@ -278,13 +278,24 @@
        String title = "订单列表";
        orderSheet.setSheetName(title);
        orderSheet.setTitle(title);
//        String[] header = {"订单编号", "订单金额", "下单时间", "配送方式", "收货姓名", "收货电话", "收货地址", "商品名称", "订单状态", "物流单号", "物流公司", "物流公司码"};
        String[] header = {"订单编号", "订单金额", "下单时间", "配送方式", "收货姓名", "收货电话", "收货地址", "商品名称", "订单状态", "物流单号", "物流公司", "物流公司码"};
        orderSheet.setHeaders(header);
        QueryRequest request = new QueryRequest();
        request.setPageNum(1);
        request.setPageSize(9999);
        List<MallOrderInfo> dataList = adminMallOrderService.findOrderListInPage(mallOrderInfo, request).getRecords();
        List<MallOrderInfo> dataList = new ArrayList<>();
        String orderIds = mallOrderInfo.getOrderIds();
        List<String> ids = StrUtil.splitTrim(orderIds, ",");
        for(String id : ids){
            long orderId = Long.parseLong(id);
            MallOrderInfo mallOrderInfo1 = mallOrderInfoMapper.selectAllOrderInfoByIdAndTakeUniqueCode(orderId,mallOrderInfo.getTakeUniqueCode());
            if(ObjectUtil.isNotEmpty(mallOrderInfo1)){
                dataList.add(mallOrderInfo1);
            }
        }
//        List<MallOrderInfo> dataList = adminMallOrderService.findOrderListInPage(mallOrderInfo, request).getRecords();
        List<List<Object>> list = new ArrayList<>();
        if (dataList.size() > 0) {
            for (MallOrderInfo item : dataList) {
@@ -346,19 +357,19 @@
            mallOrderInfo.setDeliveryState(OrderDeliveryStateEnum.DELIVERY_FINISH.getValue());
            mallOrderInfoMapper.updateById(mallOrderInfo);
            OrderStateDto orderStateDto = new OrderStateDto();
            String productNames = getProductNames(mallOrderInfo.getMemberId(), mallOrderInfo.getId());
            orderStateDto.setGoodsName(StrUtil.sub(productNames,0,15)+"...");
            String takeUniqueCode = mallOrderInfo.getTakeUniqueCode();
            MallTeamLeader mallTeamLeader = mallTeamLeaderMapper.selectLeaderByUniqueCode(takeUniqueCode);
            orderStateDto.setAddressArea(mallTeamLeader.getAddressArea());
            orderStateDto.setDetailAddress(StrUtil.sub(mallTeamLeader.getDetailAddress(),0,20)+"...");
            orderStateDto.setRemark("果蔬等生鲜,请尽快取货");
            orderStateDto.setLeaderPhone(mallTeamLeader.getPhone());
            orderStateDto.setOpenId(mallMemberMapper.selectById(mallOrderInfo.getMemberId()).getOpenId());
            DataDictionaryCustom dataDictionaryCustom = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.WX_TEMPLATE_ID_THREE.getType(), DataDictionaryEnum.WX_TEMPLATE_ID_THREE.getCode());
            orderStateDto.setTemplateId(dataDictionaryCustom.getValue());
            iXcxPayService.pushOrderToAddress(orderStateDto);
//            OrderStateDto orderStateDto = new OrderStateDto();
//            String productNames = getProductNames(mallOrderInfo.getMemberId(), mallOrderInfo.getId());
//            orderStateDto.setGoodsName(StrUtil.sub(productNames,0,15)+"...");
//            String takeUniqueCode = mallOrderInfo.getTakeUniqueCode();
//            MallTeamLeader mallTeamLeader = mallTeamLeaderMapper.selectLeaderByUniqueCode(takeUniqueCode);
//            orderStateDto.setAddressArea(mallTeamLeader.getAddressArea());
//            orderStateDto.setDetailAddress(StrUtil.sub(mallTeamLeader.getDetailAddress(),0,20)+"...");
//            orderStateDto.setRemark("果蔬等生鲜,请尽快取货");
//            orderStateDto.setLeaderPhone(mallTeamLeader.getPhone());
//            orderStateDto.setOpenId(mallMemberMapper.selectById(mallOrderInfo.getMemberId()).getOpenId());
//            DataDictionaryCustom dataDictionaryCustom = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.WX_TEMPLATE_ID_THREE.getType(), DataDictionaryEnum.WX_TEMPLATE_ID_THREE.getCode());
//            orderStateDto.setTemplateId(dataDictionaryCustom.getValue());
//            iXcxPayService.pushOrderToAddress(orderStateDto);
//            iXcxPayService.uniformMessageSend(orderStateDto);
        }
        return new FebsResponse().success();
@@ -372,9 +383,9 @@
        for(String id : ids){
            long orderId = Long.parseLong(id);
            MallOrderInfo mallOrderInfo = mallOrderInfoMapper.selectByIdAndTakeUniqueCode(orderId,mallOrderInfoDto.getTakeUniqueCode());
            if(ObjectUtil.isEmpty(mallOrderInfo)){
                return new FebsResponse().fail().message("请确认订单是否属于该团长");
            }
//            if(ObjectUtil.isEmpty(mallOrderInfo)){
//                return new FebsResponse().fail().message("请确认订单是否属于该团长");
//            }
            Integer status = mallOrderInfo.getStatus() == null ? 0 : mallOrderInfo.getStatus();
            Integer deliveryState = mallOrderInfo.getDeliveryState() == null ? 0 : mallOrderInfo.getDeliveryState();
            if(OrderStatusEnum.WAIT_SHIPPING.getValue() != status){
@@ -510,7 +521,7 @@
        }
        String fileName = file.getOriginalFilename();
        String dirPath = "/Users/helius/Documents/";
        String dirPath = "/home/javaweb/webresource/qianAYi/";
        File saveFile = new File(new File(dirPath).getAbsolutePath() + File.separator + fileName);
        if (!saveFile.exists()) {
src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallOrderService.java
@@ -5,6 +5,7 @@
import cc.mrbird.febs.common.enumerates.FlowTypeEnum;
import cc.mrbird.febs.common.enumerates.MoneyFlowTypeEnum;
import cc.mrbird.febs.common.enumerates.OrderDeliveryStateEnum;
import cc.mrbird.febs.common.enumerates.OrderStatusEnum;
import cc.mrbird.febs.mall.dto.*;
import cc.mrbird.febs.mall.entity.*;
import cc.mrbird.febs.mall.mapper.*;
@@ -117,9 +118,10 @@
        mallExpressInfo.setExpressCom(expressCom);
        mallExpressInfoMapper.insert(mallExpressInfo);
        mallOrderInfo.setStatus(3);
        mallOrderInfo.setDeliveryState(OrderDeliveryStateEnum.DELIVERY_ING.getValue());
        mallOrderInfoMapper.updateById(mallOrderInfo);
        mallOrderInfoMapper.updateOrderStateAndDeliveryState(mallOrderInfo.getId(),
                OrderStatusEnum.WAIT_FINISH.getValue(),
                OrderDeliveryStateEnum.DELIVERY_ING.getValue());
        return new FebsResponse().success();
    }
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
@@ -462,11 +462,11 @@
        OrderDetailVo orderDetailVo = MallOrderInfoConversion.INSTANCE.entityToDetailVo(orderInfo);
//        if (orderInfo.getStatus() == OrderStatusEnum.WAIT_FINISH.getValue()) {
//            MallExpressInfo expressInfo = expressInfoMapper.selectByOrderId(orderInfo.getId());
//            orderDetailVo.setExpressNo(expressInfo.getExpressNo());
//            orderDetailVo.setExpressCom(expressInfo.getExpressCom());
//        }
        if (orderInfo.getStatus() == OrderStatusEnum.WAIT_FINISH.getValue()) {
            MallExpressInfo expressInfo = expressInfoMapper.selectByOrderId(orderInfo.getId());
            orderDetailVo.setExpressNo(expressInfo.getExpressNo());
            orderDetailVo.setExpressCom(expressInfo.getExpressCom());
        }
        if (orderInfo.getStatus() == OrderStatusEnum.REFUNDING.getValue() || orderInfo.getStatus() == OrderStatusEnum.REFUNDED.getValue()) {
            MallOrderRefund orderRefund = mallOrderRefundMapper.selectOrderRefundByOrderId(orderInfo.getId());
src/main/resources/mapper/modules/MallOrderInfoMapper.xml
@@ -419,7 +419,7 @@
        b.amount
        from mall_order_info a
        inner join mall_order_item b on a.id=b.order_id
        where a.del_flag=2 and  a.id = #{orderId} and a.take_unique_code = #{takeUniqueCode}
        where a.del_flag=2 and  a.id = #{orderId}
        order by a.created_time desc
    </select>
src/main/resources/templates/febs/views/modules/order/deliverGoods.html
@@ -49,14 +49,14 @@
        <div class="layui-form-item">
            <label class="layui-form-label febs-form-item-require">物流单号:</label>
            <div class="layui-input-block">
                <input type="text" name="expressNo"
                <input type="text" name="expressNo" lay-verify="required"
                       autocomplete="off" class="layui-input" >
            </div>
        </div>
        <div class="layui-form-item">
            <label class="layui-form-label febs-form-item-require">物流公司:</label>
            <div class="layui-input-block">
                <input type="text" name="expressCom"
                <input type="text" name="expressCom" lay-verify="required"
                       autocomplete="off" class="layui-input" >
            </div>
        </div>
src/main/resources/templates/febs/views/modules/order/orderDetail.html
@@ -42,7 +42,7 @@
        <div class="layui-form-item">
            <label class="layui-form-label">地区:</label>
            <div class="layui-input-block">
                <input type="text" name="addressArea"
                <input type="text" name="address"
                       autocomplete="off" class="layui-input" readonly>
            </div>
        </div>
@@ -81,20 +81,20 @@
                <textarea id="lay_edit" lay-verify="orderItems" name = "orderItems" class="layui-textarea" readonly></textarea>
            </div>
        </div>
<!--        <div class="layui-form-item">-->
<!--            <label class="layui-form-label">物流单号:</label>-->
<!--            <div class="layui-input-block">-->
<!--                <input type="text" name="expressNo"-->
<!--                       autocomplete="off" class="layui-input"  readonly>-->
<!--            </div>-->
<!--        </div>-->
<!--        <div class="layui-form-item">-->
<!--            <label class="layui-form-label">物流公司:</label>-->
<!--            <div class="layui-input-block">-->
<!--                <input type="text" name="expressCom"-->
<!--                       autocomplete="off" class="layui-input" readonly >-->
<!--            </div>-->
<!--        </div>-->
        <div class="layui-form-item">
            <label class="layui-form-label">物流单号:</label>
            <div class="layui-input-block">
                <input type="text" name="expressNo"
                       autocomplete="off" class="layui-input"  readonly>
            </div>
        </div>
        <div class="layui-form-item">
            <label class="layui-form-label">物流公司:</label>
            <div class="layui-input-block">
                <input type="text" name="expressCom"
                       autocomplete="off" class="layui-input" readonly >
            </div>
        </div>
    </form>
</div>
@@ -125,11 +125,11 @@
                "orderItems": orderDetail.orderItems,
                "addressArea": orderDetail.addressArea,
                "addressInfo": orderDetail.addressInfo,
                // "expressNo": orderDetail.expressNo,
                // "expressCom": orderDetail.expressCom,
                "expressNo": orderDetail.expressNo,
                "expressCom": orderDetail.expressCom,
                // "payImage": orderDetail.payImage,
                // "payOrderNo": orderDetail.payOrderNo,
                // "address": orderDetail.address
                "address": orderDetail.address
            });
        }
src/main/resources/templates/febs/views/modules/order/orderList.html
@@ -7,11 +7,13 @@
                        <div class="layui-form-item">
                            <div class="layui-col-md10">
                                <div class="layui-inline">
                                    <label class="layui-form-label">用户名:</label>
                                    <div class="layui-input-inline">
                                        <input type="text" placeholder="用户名" name="name" autocomplete="off" class="layui-input">
                                    </div>
                                </div>
                                <div class="layui-inline">
                                    <label class="layui-form-label">订单编号:</label>
                                    <div class="layui-input-inline">
                                        <input type="text" placeholder="订单编号" name="orderNo" autocomplete="off" class="layui-input">
                                    </div>
@@ -25,30 +27,30 @@
                                            <option value="2">待发货</option>
                                            <option value="3">待收货</option>
                                            <option value="4">已完成</option>
                                            <option value="5">退款中</option>
                                            <option value="6">已退款</option>
<!--                                            <option value="5">退款中</option>-->
<!--                                            <option value="6">已退款</option>-->
                                            <option value="7">已取消</option>
                                        </select>
                                    </div>
                                </div>
                                <div class="layui-inline">
                                    <label class="layui-form-label">团长:</label>
                                    <div class="layui-input-inline">
                                        <select name="uniqueCode" class="order-takeUniqueCode">
                                            <option value="">请选择</option>
                                        </select>
                                    </div>
                                </div>
                                <div class="layui-inline">
                                    <label class="layui-form-label layui-form-label-sm">配送方式</label>
                                    <div class="layui-input-inline">
                                        <select name="isHome">
                                            <option value="">请选择</option>
                                            <option value="1">送货上门</option>
                                            <option value="2">自提</option>
                                        </select>
                                    </div>
                                </div>
<!--                                <div class="layui-inline">-->
<!--                                    <label class="layui-form-label">团长:</label>-->
<!--                                    <div class="layui-input-inline">-->
<!--                                        <select name="uniqueCode" class="order-takeUniqueCode">-->
<!--                                            <option value="">请选择</option>-->
<!--                                        </select>-->
<!--                                    </div>-->
<!--                                </div>-->
<!--                                <div class="layui-inline">-->
<!--                                    <label class="layui-form-label layui-form-label-sm">配送方式</label>-->
<!--                                    <div class="layui-input-inline">-->
<!--                                        <select name="isHome">-->
<!--                                            <option value="">请选择</option>-->
<!--                                            <option value="1">送货上门</option>-->
<!--                                            <option value="2">自提</option>-->
<!--                                        </select>-->
<!--                                    </div>-->
<!--                                </div>-->
                                <div class="layui-inline">
                                    <label class="layui-form-label layui-form-label-sm">支付状态</label>
                                    <div class="layui-input-inline">
@@ -113,13 +115,13 @@
</script>
<script type="text/html" id="tableToolBar">
    <div class="layui-btn-container">
        <button class="layui-btn layui-btn-sm layui-btn-primary febs-button-blue-plain" lay-event="exportDeliverOne">导出待发货订单,系统自动发货</button>
<!--        <button class="layui-btn layui-btn-sm layui-btn-primary febs-button-blue-plain" lay-event="exportDeliverOne">导出待发货订单,系统自动发货</button>-->
        <button class="layui-btn layui-btn-sm layui-btn-primary febs-button-blue-plain" lay-event="confirmOrder">确认到货</button>
        <button class="layui-btn layui-btn-sm layui-btn-primary febs-button-blue-plain" lay-event="printSelect">自定义打印</button>
        <button class="layui-btn layui-btn-sm layui-btn-primary febs-button-blue-plain" lay-event="goodsStatistics">统计商品份数</button>
<!--        <button id="printSelect" type="button" class="layui-btn layui-btn-sm layui-btn-primary febs-button-blue-plain">自定义打印</button>-->
<!--        <button class="layui-btn layui-btn-sm layui-btn-primary febs-button-blue-plain" lay-event="exportDeliverTwo">导出未发货订单(快递)</button>-->
<!--        <button class="layui-btn layui-btn-sm layui-btn-primary febs-button-blue-plain" id="importDeliver" lay-event="importDeliver">导入发货</button>-->
        <button class="layui-btn layui-btn-sm layui-btn-primary febs-button-blue-plain" lay-event="exportDeliverTwo">导出未发货订单(快递)</button>
        <button class="layui-btn layui-btn-sm layui-btn-primary febs-button-blue-plain" id="importDeliver" lay-event="importDeliver">导入发货</button>
    </div>
</script>
<!-- 表格操作栏 end -->
@@ -236,11 +238,11 @@
                // window.location.href = ctx + "admin/order/confirmOrder?takeUniqueCode="+uniqueCodeValue+"&orderIds="+ids;
            }
            if (event == 'exportDeliverOne') {
                let uniqueCodeValue = $searchForm.find("select[name='uniqueCode']").val();
                if(uniqueCodeValue == '' || uniqueCodeValue == null){
                    febs.alert.warn('请选择团长');
                    return;
                }
                // let uniqueCodeValue = $searchForm.find("select[name='uniqueCode']").val();
                // if(uniqueCodeValue == '' || uniqueCodeValue == null){
                //     febs.alert.warn('请选择团长');
                //     return;
                // }
                var data = checkStatus.data;
                let ids = "";
                for(let i = 0;i < data.length;i++){
@@ -260,8 +262,8 @@
                    febs.alert.warn('请选择待发货的订单');
                    return;
                }
                window.location.href = ctx + "admin/order/exportOrderListOne?orderType=1&status=2&deliveryType=1&takeUniqueCode="+uniqueCodeValue+'&orderIds='+ids;
                febs.get(ctx + 'admin/order/deliverOrder?takeUniqueCode='+uniqueCodeValue+'&orderIds='+ids, null, function () {
                window.location.href = ctx + "admin/order/exportOrderListOne?orderType=1&status=2&deliveryType=1&orderIds="+ids;
                febs.get(ctx + 'admin/order/deliverOrder?&orderIds='+ids, null, function () {
                    febs.alert.success('操作成功');
                    $query.click();
@@ -269,7 +271,26 @@
            }
            if (event == 'exportDeliverTwo') {
                window.location.href = ctx + "admin/order/exportOrderList?orderType=1&status=2&deliveryType=2";
                var data = checkStatus.data;
                let ids = "";
                for(let i = 0;i < data.length;i++){
                    if(data[i].status != 2){
                        febs.alert.warn('请选择待发货的订单');
                        return;
                    }else if(data[i].deliveryState != 1){
                        febs.alert.warn('请选择待配送的订单');
                        return;
                    }else{
                        ids = ids + data[i].id+",";
                    }
                }
                // layer.alert(layui.util.escape(JSON.stringify(data)));
                console.log(ids);
                if(ids == null || ids == ""){
                    febs.alert.warn('请选择待发货的订单');
                    return;
                }
                window.location.href = ctx + "admin/order/exportOrderList?orderType=1&status=2&deliveryType=2&orderIds="+ids;
            }
        });
@@ -362,19 +383,19 @@
                        {field: 'memberPhone', title: '联系方式', minWidth: 120,align:'left'},
                        // {field: 'memberBindPhone', title: '联系方式', minWidth: 120,align:'left'},
                        {field: 'goodsName', title: '商品', minWidth: 160,align:'left'},
                        {field: 'amount', title: '订单金额', minWidth: 80,align:'left'},
                        {field: 'leaderName', title: '团长', minWidth: 120,align:'left'},
                        {field: 'amount', title: '订单金额', minWidth: 160,align:'left'},
                        // {field: 'leaderName', title: '团长', minWidth: 120,align:'left'},
                        {field: 'orderTime', title: '下单时间', minWidth: 200,align:'left'},
                        {field: 'isHome', title: '配送方式',
                            templet: function (d) {
                                if (d.isHome === 2) {
                                    return '<span style="color:dodgerblue;">自提</span>'
                                } else if (d.isHome === 1) {
                                    return '<span style="color:forestgreen;">送货上门</span>'
                                }else{
                                    return ''
                                }
                            }, minWidth: 100,align:'center'},
                        // {field: 'isHome', title: '配送方式',
                        //     templet: function (d) {
                        //         if (d.isHome === 2) {
                        //             return '<span style="color:dodgerblue;">自提</span>'
                        //         } else if (d.isHome === 1) {
                        //             return '<span style="color:forestgreen;">送货上门</span>'
                        //         }else{
                        //             return ''
                        //         }
                        //     }, minWidth: 100,align:'center'},
                        {field: 'status', title: '状态',
                            templet: function (d) {
                                if (d.status === 1) {
@@ -409,10 +430,16 @@
                        }, minWidth: 80,align:'center'},
                        {field: 'payMethod', title: '支付方式', minWidth: 100,align:'left'},
                        {field: 'payTime', title: '支付时间', minWidth: 120,align:'left'},
                        {field: 'wxOrderNo', title: '支付订单号', minWidth: 120,align:'left'},
                        // {field: 'wxOrderNo', title: '支付订单号', minWidth: 120,align:'left'},
                        {title: '操作',
                            templet: function (d) {
                                        return '<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="seeOrder" shiro:hasPermission="user:update">详情</button>'
                                if(d.status === 2){
                                    return '<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="seeOrder" shiro:hasPermission="user:update">详情</button>'
                                    +'<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="deliverGoods" shiro:hasPermission="user:update">发货</button>'
                                }else{
                                    return '<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="seeOrder" shiro:hasPermission="user:update">详情</button>'
                                }
                            },minWidth: 200,align:'center', fixed:'right'}
                ]]
            });