peng
2 天以前 fa27fd4a21e04352a97988c153b7709ebecc4e89
framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderServiceImpl.java
@@ -35,6 +35,7 @@
import cn.lili.modules.lmk.mapper.LmkOrderSelectMapper;
import cn.lili.modules.lmk.service.CouponVirtualService;
import cn.lili.modules.member.entity.dto.MemberAddressDTO;
import cn.lili.modules.member.entity.dto.UpdateTracesDTO;
import cn.lili.modules.member.mapper.MemberMapper;
import cn.lili.modules.order.cart.entity.dto.TradeDTO;
import cn.lili.modules.order.cart.entity.enums.DeliveryMethodEnum;
@@ -350,6 +351,23 @@
        return page;
    }
    @Override
    public IPage<OrderSimpleVO> queryShareMineOrder(OrderSearchParams orderSearchParams,Boolean needHide) {
        QueryWrapper queryWrapper = orderSearchParams.queryWrapper();
        queryWrapper.groupBy("o.id");
        queryWrapper.orderByDesc("o.id");
        IPage<OrderSimpleVO> page =  this.baseMapper.queryByShareParams(PageUtil.initPage(orderSearchParams), queryWrapper);
        if (needHide){
            if (!adminUserService.havePermissionRole(AdminRoleEnum.ORDER_INFO_PERMISSION)){
                for (OrderSimpleVO vo : page.getRecords()){
                    vo.setConsigneeName(CommonUtil.maskName(vo.getConsigneeName()));
                    vo.setConsigneeMobile(CommonUtil.maskMobile(vo.getConsigneeMobile()));
                }
            }
        }
        return page;
    }
    @Override
    public IPage<OrderSimpleXcxVO> queryByXcxParams(OrderSearchXcxParams orderSearchParams) {
        QueryWrapper queryWrapper = orderSearchParams.queryWrapper();
        queryWrapper.groupBy("o.id");
@@ -490,6 +508,35 @@
    @Override
    public void queryExportOrder(HttpServletResponse response, OrderSearchParams orderSearchParams) {
        List<OrderExportDTO> orderExportDTOS = this.baseMapper.queryExportOrder(orderSearchParams.queryWrapper());
        if (!adminUserService.havePermissionRole(AdminRoleEnum.ORDER_INFO_PERMISSION)){
            for (OrderExportDTO vo : orderExportDTOS){
                vo.setConsigneeName(CommonUtil.maskName(vo.getConsigneeName()));
                vo.setConsigneeMobile(CommonUtil.maskMobile(vo.getConsigneeMobile()));
            }
        }
        XSSFWorkbook workbook = initOrderExportData(orderExportDTOS);
        try {
            // 设置响应头
            String fileName = URLEncoder.encode("订单列表", "UTF-8");
            response.setContentType("application/vnd.ms-excel;charset=UTF-8");
            response.setHeader("Content-Disposition", "attachment;filename=" + fileName + ".xlsx");
            ServletOutputStream out = response.getOutputStream();
            workbook.write(out);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                workbook.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
    @Override
    public void queryShareExportOrder(HttpServletResponse response, OrderSearchParams orderSearchParams) {
        List<OrderExportDTO> orderExportDTOS = this.baseMapper.queryShareExportOrder(orderSearchParams.queryWrapper());
        if (!adminUserService.havePermissionRole(AdminRoleEnum.ORDER_INFO_PERMISSION)){
            for (OrderExportDTO vo : orderExportDTOS){
@@ -813,6 +860,26 @@
    }
    @Override
    public void updateTraces(UpdateTracesDTO updateTracesDTO) {
        LambdaQueryWrapper<OrderPackage> eq = Wrappers.<OrderPackage>lambdaQuery()
                .eq(OrderPackage::getOrderSn, updateTracesDTO.getOrderSn())
                .eq(OrderPackage::getPackageNo, updateTracesDTO.getPackageNo());
        OrderPackage one = orderPackageService.getOne(eq);
        if (one == null) {
            throw new ServiceException("当前包裹不存在");
        }
        String logisticsId = updateTracesDTO.getLogisticsId();
        if (StringUtils.isNotBlank(logisticsId)) {
            Logistics logic = logisticsService.getById(logisticsId);
            one.setLogisticsNo(updateTracesDTO.getLogisticsNo());
            one.setLogisticsCode(logic.getCode());
            one.setLogisticsName(logic.getName());
            orderPackageService.updateById(one);
        }
    }
    @Override
    public Traces getMapTraces(String orderSn) {
        //获取订单信息
        Order order = this.getBySn(orderSn);
@@ -1108,7 +1175,31 @@
        checkBatchDeliver(orderBatchDeliverDTOList);
        //订单批量发货
        for (OrderBatchDeliverDTO orderBatchDeliverDTO : orderBatchDeliverDTOList) {
            this.delivery(orderBatchDeliverDTO.getOrderSn(), orderBatchDeliverDTO.getLogisticsNo(), orderBatchDeliverDTO.getLogisticsId());
            String logisticsNo = orderBatchDeliverDTO.getLogisticsNo();
            String[] split = logisticsNo.split(",");
            //如果物流单号包含多个,则进行拆单
            if (split.length > 1) {
                for (int i = 0; i < split.length; i++) {
                    PartDeliveryParamsDTO partDeliveryParamsDTO = new PartDeliveryParamsDTO();
                    partDeliveryParamsDTO.setOrderSn(orderBatchDeliverDTO.getOrderSn());
                    partDeliveryParamsDTO.setLogisticsNo(split[i]);
                    partDeliveryParamsDTO.setLogisticsId(orderBatchDeliverDTO.getLogisticsId());
                    ArrayList<PartDeliveryDTO> partDeliveryDTOList = new ArrayList<>();
                    partDeliveryParamsDTO.setPartDeliveryDTOList(partDeliveryDTOList);
                    if (i == split.length - 1){
                        List<OrderItem> orderItemList = orderItemService.getByOrderSn(orderBatchDeliverDTO.getOrderSn());
                        for (OrderItem orderItem : orderItemList) {
                            if (RefundStatusEnum.NO_REFUND.name().equals(orderItem.getIsRefund())) {
                                PartDeliveryDTO partDeliveryDTO = new PartDeliveryDTO();
                                partDeliveryDTO.setDeliveryNum(orderItem.getNum());
                                partDeliveryDTO.setOrderItemId(orderItem.getId());
                                partDeliveryDTOList.add(partDeliveryDTO);
                            }
                        }
                    }
                    this.partDelivery(partDeliveryParamsDTO);
                }
            }
        }
    }
@@ -1754,7 +1845,10 @@
            // 提取商品名(注意:键是resultMap中定义的property值"goodsName")
            if (Objects.nonNull(map.get("goodsName"))) {
                String goodsName = map.get("goodsName").toString();
                goodsData.add(goodsName);
                String buyerCount = map.get("buyerCount").toString();
                String repurchaseBuyerCount = map.get("repurchaseBuyerCount").toString();
                String format = String.format("%s:购买人数 %s 复购人数%s", goodsName, buyerCount, repurchaseBuyerCount);
                goodsData.add(format);
            }
            // 提取复购率(复购率通常是数字类型,这里用BigDecimal接收)