Bladeren bron

新增退款完成后去更新海博的订单状态

zhangxin 3 dagen geleden
bovenliggende
commit
c057073824

+ 2 - 0
yami-shop-service/src/main/java/com/yami/shop/service/OrderService.java

@@ -217,4 +217,6 @@ public interface OrderService extends IService<Order> {
     void deleteTempSubOrder(String subOrderNumber);
 
     String addSMOrder(SMOrderPo orderPo);
+
+    void returnRefundCheck(String orderNumber);
 }

+ 111 - 80
yami-shop-service/src/main/java/com/yami/shop/service/impl/OrderRefundServiceImpl.java

@@ -59,6 +59,7 @@ import org.springframework.context.ApplicationContext;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
+
 import java.io.BufferedOutputStream;
 import java.io.File;
 import java.io.FileOutputStream;
@@ -118,6 +119,7 @@ public class OrderRefundServiceImpl extends ServiceImpl<OrderRefundMapper, Order
                     .setDaemon(true)
                     .build()
     );
+
     /**
      * 获取分页对象
      */
@@ -1108,25 +1110,26 @@ public class OrderRefundServiceImpl extends ServiceImpl<OrderRefundMapper, Order
             if (orderRefund.getReturnMoneySts().equals(70)) {
                 //推送商家审核状态后 同步退款单状态
                 changeStatus(orderRefund.getRefundSn(), orderRefund.getReturnMoneySts());
-                if (ChannelType.SMQJH.value().equals(orderRefund.getChannelType())){
+                if (ChannelType.SMQJH.value().equals(orderRefund.getChannelType())) {
                     //当属于市民请集合的订单的时候,直接回推市民请集合进行退款逻辑处理;
-                    log.info("【详情】推送市民请集合积分处理:,{}",orderRefund.getRefundSn());
+                    log.info("【详情】推送市民请集合积分处理:,{}", orderRefund.getRefundSn());
                     try {
+                        orderService.returnRefundCheck(orderRefund.getOrderNumber());
                         String s = HttpUtil.get(smqjhUtil.getOmsBaseUrl() + SmqjhUtil.omsSmqjhRefundPointsHandleUrl + orderRefund.getRefundSn());
-                        log.info("【详情】推送市民请集合积分处理返回:,{}",s);
-                        if (StringUtils.isNotEmpty(s)){
+                        log.info("【详情】推送市民请集合积分处理返回:,{}", s);
+                        if (StringUtils.isNotEmpty(s)) {
                             Result result = JSONObject.parseObject(s, Result.class);
-                            if (result==null){
+                            if (result == null) {
                                 log.error("【详情】推送市民请集合积分处理返回失败1:");
                             }
-                            if (!SMQJHResultCode.SUCCESS.getCode().equals(result.getCode())){
-                                log.error("【详情】推送市民请集合积分处理返回失败2:"+result.getMsg());
+                            if (!SMQJHResultCode.SUCCESS.getCode().equals(result.getCode())) {
+                                log.error("【详情】推送市民请集合积分处理返回失败2:" + result.getMsg());
                             }
                         }
                     } catch (Exception e) {
-                        log.error("【详情】推送市民请集合积分报错:"+e.getMessage()+"{}",e);
+                        log.error("【详情】推送市民请集合积分报错:" + e.getMessage() + "{}", e);
                     }
-                }else {
+                } else {
                     orderService.returnRefund(orderRefund.getOrderNumber());
                 }
             }
@@ -1191,9 +1194,9 @@ public class OrderRefundServiceImpl extends ServiceImpl<OrderRefundMapper, Order
             }
 
             if (applyDeal == 1) {
-                if (ChannelType.SMQJH.value().equals(orderRefund.getChannelType())){
+                if (ChannelType.SMQJH.value().equals(orderRefund.getChannelType())) {
 
-                }else {
+                } else {
                     //订单退款金额或者积分处理
                     orderService.returnRefund(orderRefund.getOrderNumber());
                 }
@@ -1202,17 +1205,18 @@ public class OrderRefundServiceImpl extends ServiceImpl<OrderRefundMapper, Order
             //推送商家审核状态后 同步退款单状态
             changeStatus(orderRefund.getRefundSn(), orderRefund.getReturnMoneySts());
             try {
-                if (ChannelType.SMQJH.value().equals(orderRefund.getChannelType())){
+                if (ChannelType.SMQJH.value().equals(orderRefund.getChannelType())) {
+                    orderService.returnRefundCheck(orderRefund.getOrderNumber());
                     R<String> stringR = xsbPushRefundOrderService.pushRefundStatus(orderRefund);
-                    if (!stringR.isSuccess()){
-                        log.error("推送市民请集合审核状态失败,{},{}",stringR.getMsg(),JSONObject.toJSON(stringR));
-                    }else {
+                    if (!stringR.isSuccess()) {
+                        log.error("推送市民请集合审核状态失败,{},{}", stringR.getMsg(), JSONObject.toJSON(stringR));
+                    } else {
                         log.info("推送市民请集合审核状态成功");
                     }
                 }
 
             } catch (Exception e) {
-                log.error("推送市民请集合审核状态报错,{}",e);
+                log.error("推送市民请集合审核状态报错,{}", e);
             }
         } catch (Exception e) {
             log.error("海博退款订单查询异常:{}", e);
@@ -1246,25 +1250,27 @@ public class OrderRefundServiceImpl extends ServiceImpl<OrderRefundMapper, Order
                 orderRefund.setReturnMoneySts(ReturnMoneyStsType.SUCCESS.value());
             }
             orderRefundMapper.updateById(orderRefund);
-
-            try {
-                if (ChannelType.SMQJH.value().equals(orderRefund.getChannelType())){
+            if (ChannelType.SMQJH.value().equals(orderRefund.getChannelType())) {
+                try {
+                    orderService.returnRefundCheck(orderRefund.getOrderNumber());
                     //当属于市民请集合的订单的时候,直接回推市民请集合进行退款逻辑处理;
                     R<String> stringR = xsbPushRefundOrderService.pushRefundStatus(orderRefund);
-                    if (!stringR.isSuccess()){
-                        log.error("推送市民请集合收货状态失败,{},{}",stringR.getMsg(),JSONObject.toJSON(stringR));
+                    if (!stringR.isSuccess()) {
+                        log.error("推送市民请集合收货状态失败,{},{}", stringR.getMsg(), JSONObject.toJSON(stringR));
                     }
                     log.info("推送市民请集合收货状态成功");
+
+                } catch (Exception e) {
+                    log.error("推送市民请集合收货状态报错,{}", e);
                 }
-            } catch (Exception e) {
-                log.error("推送市民请集合收货状态报错,{}",e);
-            }
-            //订单退款金额或者积分处理
-            orderService.returnRefund(orderRefund.getOrderNumber());
 
+            }else {
+                //订单退款金额或者积分处理
+                orderService.returnRefund(orderRefund.getOrderNumber());
+            }
             //推送商家审核状态后 同步退款单状态
             changeStatus(orderRefund.getRefundSn(), orderRefund.getReturnMoneySts());
-          } catch (Exception e) {
+        } catch (Exception e) {
             log.error("海博退款订单查询异常:{}", e);
             return HBR.error("未知异常");
         }
@@ -1383,19 +1389,21 @@ public class OrderRefundServiceImpl extends ServiceImpl<OrderRefundMapper, Order
     public OrderRefundVo selectInfoById(Long refundId) {
         return orderRefundMapper.selectInfoById(refundId);
     }
+
     /**
      * 导出售后订单
+     *
      * @param orderRefund
      * @param userId
      */
     @Override
-    public R<String> export(OrderRefundStaisticsParam orderRefund,Long userId) {
+    public R<String> export(OrderRefundStaisticsParam orderRefund, Long userId) {
 
-        List<OrderRefundVo> orderRefundList= orderRefundMapper.findOrderRefund(orderRefund);
+        List<OrderRefundVo> orderRefundList = orderRefundMapper.findOrderRefund(orderRefund);
         for (OrderRefundVo record : orderRefundList) {
             record.setOrderRefundSkuList(orderRefundskuMapper.selectByRefundId(record.getRefundId()));
         }
-        if (orderRefundList.isEmpty()){
+        if (orderRefundList.isEmpty()) {
             throw new GlobalException("该次导出未查询到数据,不允许导出");
         }
         String taskId = UUID.randomUUID().toString();
@@ -1413,19 +1421,19 @@ public class OrderRefundServiceImpl extends ServiceImpl<OrderRefundMapper, Order
         CompletableFuture<Void> future = CompletableFuture.runAsync(() -> {
             Thread currentThread = Thread.currentThread();
             ExportContext context = new ExportContext(null, currentThread, false, 0);
-            exportTaskService.putTaskId(taskId,context);
+            exportTaskService.putTaskId(taskId, context);
             try {
                 // 记录任务开始
                 log.info("开始执行导出任务,用户ID: {}", userId);
-                exportNormalOrders(orderRefundList,exportTask,"refundOrder",context);
+                exportNormalOrders(orderRefundList, exportTask, "refundOrder", context);
                 // 记录任务完成
                 log.info("导出任务完成,用户ID: {}", userId);
             } catch (Exception e) {
                 log.error("导出任务异常,用户ID: {}", userId, e);
                 exportTask.setExportStatus(2);
-                exportTask.setExportMsg("导出失败,"+e.getMessage());
+                exportTask.setExportMsg("导出失败," + e.getMessage());
                 exportTaskService.updateById(exportTask);
-            }finally {
+            } finally {
                 exportTaskService.removeTaskId(taskId);
             }
         }, exportExecutor);
@@ -1469,19 +1477,19 @@ public class OrderRefundServiceImpl extends ServiceImpl<OrderRefundMapper, Order
 
 
             String[] headers = {
-                    "序号","订单编号", "退款编号", "申请时间", "申请方式", "售后状态",
-                    "订单类型", "退款商品名称", "规格", "购买单价(元)","退款数量", "小计(元)",
-                    "退款商品总数量", "退款总金额(元)", "退还现金(元)", "退还积分(元)","退还积分中过期积分(分)",
+                    "序号", "订单编号", "退款编号", "申请时间", "申请方式", "售后状态",
+                    "订单类型", "退款商品名称", "规格", "购买单价(元)", "退款数量", "小计(元)",
+                    "退款商品总数量", "退款总金额(元)", "退还现金(元)", "退还积分(元)", "退还积分中过期积分(分)",
                     "所属企业", "买家姓名", "买家电话"
             };
             // 创建合并单元格的表头
-            ExportUtils.createMergedHeader(sheet, headerStyle,"售后订单",19);
+            ExportUtils.createMergedHeader(sheet, headerStyle, "售后订单", 19);
 
             // 创建列标题行
-            ExportUtils.createColumnHeaders(sheet, headerStyle,headers);
+            ExportUtils.createColumnHeaders(sheet, headerStyle, headers);
 
             // 填充数据
-            fillOrderData(sheet, orderList, dataStyle, numberStyle, dateStyle,context);
+            fillOrderData(sheet, orderList, dataStyle, numberStyle, dateStyle, context);
             // 写入文件
             try (FileOutputStream fos = new FileOutputStream(file);
                  BufferedOutputStream bos = new BufferedOutputStream(fos)) {
@@ -1545,11 +1553,11 @@ public class OrderRefundServiceImpl extends ServiceImpl<OrderRefundMapper, Order
      * 填充订单数据
      */
     private void fillOrderData(Sheet sheet, List<OrderRefundVo> orderList,
-                               CellStyle dataStyle, CellStyle numberStyle, CellStyle dateStyle,ExportContext context) throws InterruptedException{
+                               CellStyle dataStyle, CellStyle numberStyle, CellStyle dateStyle, ExportContext context) throws InterruptedException {
         int batchSize = 100; // 每批处理1000条
         int totalRows = orderList.size();
         int rowNum = 2; // 从第3行开始(0-based索引)
-        int indexNum= 1; //序号
+        int indexNum = 1; //序号
 
         for (int i = 0; i < totalRows; i += batchSize) {
             int end = Math.min(i + batchSize, totalRows);
@@ -1564,9 +1572,9 @@ public class OrderRefundServiceImpl extends ServiceImpl<OrderRefundMapper, Order
                 Row row = sheet.createRow(rowNum++);
                 row.setHeightInPoints(18);
                 // 序号
-                ExportUtils.createCell(sheet,row, 0,orderRefundVo.getOrderRefundSkuList().size(),rowNum, indexNum, dataStyle);
-                fillOrderRowData(sheet,rowNum,row, orderRefundVo, dataStyle, numberStyle, dateStyle);
-                rowNum+=orderRefundVo.getOrderRefundSkuList().size()-1;
+                ExportUtils.createCell(sheet, row, 0, orderRefundVo.getOrderRefundSkuList().size(), rowNum, indexNum, dataStyle);
+                fillOrderRowData(sheet, rowNum, row, orderRefundVo, dataStyle, numberStyle, dateStyle);
+                rowNum += orderRefundVo.getOrderRefundSkuList().size() - 1;
                 indexNum++;
             }
 
@@ -1585,52 +1593,53 @@ public class OrderRefundServiceImpl extends ServiceImpl<OrderRefundMapper, Order
     /**
      * 填充单行订单数据
      */
-    private void fillOrderRowData(Sheet sheet,int rowNum,Row row, OrderRefundVo orderRefundVo,
+    private void fillOrderRowData(Sheet sheet, int rowNum, Row row, OrderRefundVo orderRefundVo,
                                   CellStyle dataStyle, CellStyle numberStyle, CellStyle dateStyle) {
 
         // 订单编号
-        ExportUtils.createCell(sheet,row, 1,orderRefundVo.getOrderRefundSkuList().size(),rowNum, orderRefundVo.getOrderNumber(), dataStyle);
+        ExportUtils.createCell(sheet, row, 1, orderRefundVo.getOrderRefundSkuList().size(), rowNum, orderRefundVo.getOrderNumber(), dataStyle);
 
         // 退款编号
-        ExportUtils.createCell(sheet,row, 2,orderRefundVo.getOrderRefundSkuList().size(),rowNum,  orderRefundVo.getRefundSn(), dateStyle);
+        ExportUtils.createCell(sheet, row, 2, orderRefundVo.getOrderRefundSkuList().size(), rowNum, orderRefundVo.getRefundSn(), dateStyle);
 
         // 申请时间
-        ExportUtils.createCell(sheet,row, 3,orderRefundVo.getOrderRefundSkuList().size(),rowNum,  ExportUtils.formatDate(orderRefundVo.getApplyTime()), dateStyle);
+        ExportUtils.createCell(sheet, row, 3, orderRefundVo.getOrderRefundSkuList().size(), rowNum, ExportUtils.formatDate(orderRefundVo.getApplyTime()), dateStyle);
 
         // 申请方式
-        ExportUtils.createCell(sheet,row, 4,orderRefundVo.getOrderRefundSkuList().size(),rowNum,getApplyType(orderRefundVo.getApplyType()), dataStyle);
+        ExportUtils.createCell(sheet, row, 4, orderRefundVo.getOrderRefundSkuList().size(), rowNum, getApplyType(orderRefundVo.getApplyType()), dataStyle);
 
         // 售后状态
-        ExportUtils.createCell(sheet,row, 5,orderRefundVo.getOrderRefundSkuList().size(),rowNum, getReturnMoneySts(orderRefundVo.getReturnMoneySts()), dataStyle);
+        ExportUtils.createCell(sheet, row, 5, orderRefundVo.getOrderRefundSkuList().size(), rowNum, getReturnMoneySts(orderRefundVo.getReturnMoneySts()), dataStyle);
         // 订单类型
-        ExportUtils.createCell(sheet,row, 6,orderRefundVo.getOrderRefundSkuList().size(),rowNum, getDvyType(orderRefundVo.getDvyType()), dataStyle);
+        ExportUtils.createCell(sheet, row, 6, orderRefundVo.getOrderRefundSkuList().size(), rowNum, getDvyType(orderRefundVo.getDvyType()), dataStyle);
         // 商品明细行(每个订单项一行)
         fillOrderItems(sheet, rowNum, row, orderRefundVo, dataStyle, numberStyle);
 
         // 退款商品总数量
-        ExportUtils.createCell(sheet,row, 12,orderRefundVo.getOrderRefundSkuList().size(),rowNum, orderRefundVo.getGoodsNum(), numberStyle);
+        ExportUtils.createCell(sheet, row, 12, orderRefundVo.getOrderRefundSkuList().size(), rowNum, orderRefundVo.getGoodsNum(), numberStyle);
 
         // 退款总金额(元)
-        ExportUtils.createCell(sheet,row, 13,orderRefundVo.getOrderRefundSkuList().size(),rowNum, orderRefundVo.getRefundTotalMoney(), numberStyle);
+        ExportUtils.createCell(sheet, row, 13, orderRefundVo.getOrderRefundSkuList().size(), rowNum, orderRefundVo.getRefundTotalMoney(), numberStyle);
 
         // 退还现金(元)
-        ExportUtils.createCell(sheet,row, 14,orderRefundVo.getOrderRefundSkuList().size(),rowNum, orderRefundVo.getRefundAmount(), numberStyle);
+        ExportUtils.createCell(sheet, row, 14, orderRefundVo.getOrderRefundSkuList().size(), rowNum, orderRefundVo.getRefundAmount(), numberStyle);
 
         // 退还积分(元)
-        ExportUtils.createCell(sheet,row,15,orderRefundVo.getOrderRefundSkuList().size(),rowNum,"-"+(orderRefundVo.getOffsetPoints()==null?0:Arith.div(Double.valueOf(orderRefundVo.getOffsetPoints()), 100)), numberStyle);
+        ExportUtils.createCell(sheet, row, 15, orderRefundVo.getOrderRefundSkuList().size(), rowNum, "-" + (orderRefundVo.getOffsetPoints() == null ? 0 : Arith.div(Double.valueOf(orderRefundVo.getOffsetPoints()), 100)), numberStyle);
 
         // 退还积分中过期积分(分)
-        ExportUtils.createCell(sheet,row, 16,orderRefundVo.getOrderRefundSkuList().size(),rowNum, (orderRefundVo.getRefundExpiredScore()==null?0:orderRefundVo.getRefundExpiredScore()), numberStyle);
+        ExportUtils.createCell(sheet, row, 16, orderRefundVo.getOrderRefundSkuList().size(), rowNum, (orderRefundVo.getRefundExpiredScore() == null ? 0 : orderRefundVo.getRefundExpiredScore()), numberStyle);
 
         // 所属企业
-        ExportUtils.createCell(sheet,row, 17,orderRefundVo.getOrderRefundSkuList().size(),rowNum, orderRefundVo.getChannelName(), dataStyle);
+        ExportUtils.createCell(sheet, row, 17, orderRefundVo.getOrderRefundSkuList().size(), rowNum, orderRefundVo.getChannelName(), dataStyle);
 
         // 买家姓名
-        ExportUtils.createCell(sheet,row, 18,orderRefundVo.getOrderRefundSkuList().size(),rowNum, orderRefundVo.getReceiver(), dataStyle);
+        ExportUtils.createCell(sheet, row, 18, orderRefundVo.getOrderRefundSkuList().size(), rowNum, orderRefundVo.getReceiver(), dataStyle);
 
         // 买家电话
-        ExportUtils.createCell(sheet,row, 19,orderRefundVo.getOrderRefundSkuList().size(),rowNum, orderRefundVo.getBuyerMobile(), dataStyle);
+        ExportUtils.createCell(sheet, row, 19, orderRefundVo.getOrderRefundSkuList().size(), rowNum, orderRefundVo.getBuyerMobile(), dataStyle);
     }
+
     /**
      * 填充订单项明细
      */
@@ -1639,7 +1648,7 @@ public class OrderRefundServiceImpl extends ServiceImpl<OrderRefundMapper, Order
         int itemSize = orderRefundVo.getOrderRefundSkuList().size();
 
         for (int i = 0; i < itemSize; i++) {
-            Row currentRow = (i < 1) ? row : sheet.createRow(rowNum + (i-1));
+            Row currentRow = (i < 1) ? row : sheet.createRow(rowNum + (i - 1));
             OrderRefundSkuVo orderRefundSkuVo = orderRefundVo.getOrderRefundSkuList().get(i);
             // 退款商品名称
             ExportUtils.createCell(sheet, currentRow, 7, 0, rowNum, orderRefundSkuVo.getProdName(), dataStyle);
@@ -1654,52 +1663,73 @@ public class OrderRefundServiceImpl extends ServiceImpl<OrderRefundMapper, Order
             ExportUtils.createCell(sheet, currentRow, 10, 0, rowNum, orderRefundSkuVo.getProductCount(), dataStyle);
 
             // 小计(元)
-            ExportUtils.createCell(sheet, currentRow, 11, 0, rowNum,(Arith.multiply(orderRefundSkuVo.getProductCount(),orderRefundSkuVo.getSkuPrice(),2)), numberStyle);
+            ExportUtils.createCell(sheet, currentRow, 11, 0, rowNum, (Arith.multiply(orderRefundSkuVo.getProductCount(), orderRefundSkuVo.getSkuPrice(), 2)), numberStyle);
 
         }
     }
 
     /**
-     *海博订单状态
+     * 海博订单状态
+     *
      * @param status
      * @return
      */
     private String getReturnMoneySts(Integer status) {
         switch (status) {
-            case 10: return "待审核";
-            case 20: return "处理中";
-            case 30: return "驳回退款";
-            case 40: return "撤销退款";
-            case 60: return "待退货(一审同意)";
-            case 65: return "待确认收货(二审待审核)";
-            case 70: return "退款完成";
-            default: return "未知状态";
+            case 10:
+                return "待审核";
+            case 20:
+                return "处理中";
+            case 30:
+                return "驳回退款";
+            case 40:
+                return "撤销退款";
+            case 60:
+                return "待退货(一审同意)";
+            case 65:
+                return "待确认收货(二审待审核)";
+            case 70:
+                return "退款完成";
+            default:
+                return "未知状态";
         }
     }
+
     /**
      * 订单类型
+     *
      * @param dvyType
      * @return
      */
     private String getDvyType(Integer dvyType) {
         switch (dvyType) {
-            case 1: return "快递";
-            case 2: return "自提";
-            case 3: return "及时配送";
-            default: return "未知类型";
+            case 1:
+                return "快递";
+            case 2:
+                return "自提";
+            case 3:
+                return "及时配送";
+            default:
+                return "未知类型";
         }
     }
+
     /**
      * 订单类型
+     *
      * @param applyType
      * @return
      */
     private String getApplyType(Integer applyType) {
         switch (applyType) {
-            case 1: return "仅退款";
-            case 2: return "退货退款";
-            case 5: return "差价退款";
-            default: return "未知类型";
+            case 1:
+                return "仅退款";
+            case 2:
+                return "退货退款";
+            case 5:
+                return "差价退款";
+            default:
+                return "未知类型";
         }
     }
 
@@ -1710,13 +1740,14 @@ public class OrderRefundServiceImpl extends ServiceImpl<OrderRefundMapper, Order
 
     /**
      * 根据订单号查询退款类型的金额
+     *
      * @param orderId
      * @param value
      * @return
      */
     @Override
     public BigDecimal countRefundMoney(Long orderId, Integer value) {
-        return orderRefundMapper.countRefundMoney(orderId,value);
+        return orderRefundMapper.countRefundMoney(orderId, value);
     }
 
 

+ 22 - 0
yami-shop-service/src/main/java/com/yami/shop/service/impl/OrderServiceImpl.java

@@ -1788,6 +1788,28 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
         }
     }
 
+    /**
+     * 校验同步状态
+     */
+    @Override
+    public void returnRefundCheck(String orderNumber) {
+        log.info("====================市民请集合校验同步状态orderNumber:{}====================", orderNumber);
+        OrderRefund orderRefund = orderRefundMapper.selectOne(new LambdaQueryWrapper<OrderRefund>()
+                .eq(OrderRefund::getOrderNumber, orderNumber)
+                .eq(OrderRefund::getReturnMoneySts, 70)
+                .eq(OrderRefund::getHandler, Boolean.FALSE)
+        );
+        if (ObjectUtils.isNotEmpty(orderRefund)) {
+            Order order = orderMapper.selectById(orderRefund.getOrderId());
+
+            //生成待商家审核记录
+            addOrderRefundRecord(orderRefund.getRefundId(), 25, 6, "平台已退款到微信账户中");
+            addOrderRefundRecord(orderRefund.getRefundId(), 30, 10, "商家已同意收货,正在为你处理退款。");
+            //如果是分次退款最后一个商品需要改变订单状态
+            updateOrderStatus(order);
+        }
+    }
+
     /**
      * 退款成功后,修改订单状态
      *