Przeglądaj źródła

提交代码,修复agreeRefund方法,兼容不收到货退款

wangzhijun 5 dni temu
rodzic
commit
b929fa8abe

+ 17 - 0
nightFragrance-massage/src/main/java/com/ylx/massage/enums/AfterSaleStatusEnum.java

@@ -30,6 +30,23 @@ public enum AfterSaleStatusEnum {
         this.desc = desc;
     }
 
+    /**
+     * 根据code获取枚举值
+     * @param code 代码
+     * @return 枚举值
+     */
+    public static AfterSaleStatusEnum valueOf(Integer code) {
+        if (code == null) {
+            return null;
+        }
+        for (AfterSaleStatusEnum value : AfterSaleStatusEnum.values()) {
+            if (value.getCode().equals(code)) {
+                return value;
+            }
+        }
+        return null;
+    }
+
     public static String getDescByCode(Integer code) {
         if (code == null) {
             return "";

+ 16 - 0
nightFragrance-massage/src/main/java/com/ylx/massage/enums/AfterSaleTypeEnum.java

@@ -22,4 +22,20 @@ public enum AfterSaleTypeEnum {
         this.info = info;
     }
 
+    /**
+     * 根据code获取枚举值
+     * @param code 代码
+     * @return 枚举值
+     */
+    public static AfterSaleTypeEnum valueOf(Integer code) {
+        if (code == null) {
+            return null;
+        }
+        for (AfterSaleTypeEnum value : AfterSaleTypeEnum.values()) {
+            if (value.getCode().equals(code)) {
+                return value;
+            }
+        }
+        return null;
+    }
 }

+ 26 - 2
nightFragrance-massage/src/main/java/com/ylx/massage/service/impl/AfterSaleOrderServiceImpl.java

@@ -293,11 +293,33 @@ public class AfterSaleOrderServiceImpl extends ServiceImpl<AfterSaleOrderMapper,
         // 3. 获取等待商家收货的售后单
         LambdaQueryWrapper<AfterSaleOrder> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.eq(AfterSaleOrder::getOrderId, orderId)
-                .eq(AfterSaleOrder::getAfterSaleStatus, AfterSaleStatusEnum.WAITING_MERCHANT_RECEIVE.getCode());
+                .in(AfterSaleOrder::getAfterSaleStatus,
+                        AfterSaleStatusEnum.WAIT_AUDIT.getCode(),
+                        AfterSaleStatusEnum.WAITING_MERCHANT_RECEIVE.getCode());
 
         AfterSaleOrder afterSaleOrder = this.afterSaleOrderMapper.selectOne(queryWrapper);
         if (ObjectUtil.isNull(afterSaleOrder)) {
-            throw new ServiceException("未找到等待商家收货的售后单");
+            throw new ServiceException("未找到可审核的售后单");
+        }
+
+        AfterSaleTypeEnum typeEnum = AfterSaleTypeEnum.valueOf(afterSaleOrder.getAfterSaleType());
+        AfterSaleStatusEnum statusEnum = AfterSaleStatusEnum.valueOf(afterSaleOrder.getAfterSaleStatus());
+
+        switch (typeEnum) {
+            case NOT_RECEIVED:
+                // ====================== 未收到货 → 仅退款 ======================
+                if (statusEnum != AfterSaleStatusEnum.WAIT_AUDIT) {
+                    throw new ServiceException("仅退款单状态异常,无法审核");
+                }
+                break;
+            case RETURN_GOODS:
+                // ====================== 已收到货 → 退货退款 ======================
+                if (statusEnum != AfterSaleStatusEnum.WAITING_MERCHANT_RECEIVE) {
+                    throw new ServiceException("退货单需用户寄回、商家收货后才能审核退款");
+                }
+                break;
+            default:
+                throw new ServiceException("不支持的售后类型");
         }
 
         // 4. 判断售后单的售后类型
@@ -314,6 +336,8 @@ public class AfterSaleOrderServiceImpl extends ServiceImpl<AfterSaleOrderMapper,
             throw new ServiceException("更新售后单失败");
         }
 
+        // TODO 7.更新库存信息
+
     }
 
     @Override