Ver Fonte

Merge remote-tracking branch 'origin/point_dev' into point_dev

jinshihui há 3 dias atrás
pai
commit
389ef47c90

+ 7 - 0
nightFragrance-admin/src/main/java/com/ylx/web/controller/massage/AfterSaleOrderController.java

@@ -59,4 +59,11 @@ public class AfterSaleOrderController {
         return R.ok();
     }
 
+    @ApiOperation("公众号-修改售后物流单号")
+    @Log(title = "公众号修改售后物流单号", businessType = BusinessType.UPDATE)
+    @PutMapping("/wx")
+    public R wxUpdateLogisticsNo(@Validated @RequestBody AfterSaleOrderUpdateDTO dto) {
+        this.afterSaleOrderService.editByWechat(dto);
+        return R.ok();
+    }
 }

+ 6 - 3
nightFragrance-massage/src/main/java/com/ylx/massage/domain/dto/AfterSaleOrderUpdateDTO.java

@@ -4,17 +4,20 @@ import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
-import javax.validation.constraints.NotNull;
+import javax.validation.constraints.NotBlank;
 
 @Data
 @ApiModel(description = "售后修改dto")
 public class AfterSaleOrderUpdateDTO {
 
-    @NotNull(message = "售后单ID不能为空")
     @ApiModelProperty(value = "售后单ID", required = true)
     private Long afterSaleOrderId;
 
-    @ApiModelProperty(value = "物流单号")
+    @NotBlank(message = "物流单号不能为空")
+    @ApiModelProperty(value = "物流单号", required = true)
     private String logisticsNo;
 
+    @ApiModelProperty(value = "订单ID", required = true)
+    private Long orderId;
+
 }

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

@@ -10,17 +10,17 @@ public enum AfterSaleStatusEnum {
      */
     WAIT_AUDIT(0, "待审核"),
 
-    AUDIT_PASS(1, "审核通过"),
+    AGREE_RETURN(1, "同意退货/换货"),
 
-    AUDIT_REJECT(2, "审核拒绝"),
+    REFUND_COMPLETED(2, "退款完成"),
 
-    WAIT_BUYER_RETURN(3, "待买家退货"),
+    WAITING_USER_RETURN(3, "等待用户寄回"),
 
-    WAIT_MERCHANT_RECEIVE(4, "待商家收货"),
+    WAITING_MERCHANT_RECEIVE(4, "待商家收货"),
 
-    REFUND_PROCESSING(5, "退款处理中"),
+    WAITING_MERCHANT_SHIP(5, "等待商家寄出"),
 
-    COMPLETE(6, "售后完成"),
+    COMPLETED(6, "订单完成"),
 
     CANCELLED(7, "售后取消");
 

+ 2 - 0
nightFragrance-massage/src/main/java/com/ylx/massage/service/IAfterSaleOrderService.java

@@ -15,4 +15,6 @@ public interface IAfterSaleOrderService extends IService<AfterSaleOrder> {
     void edit(AfterSaleOrderUpdateDTO dto);
 
     void cancel(Long orderId);
+
+    void editByWechat(AfterSaleOrderUpdateDTO dto);
 }

+ 68 - 9
nightFragrance-massage/src/main/java/com/ylx/massage/service/impl/AfterSaleOrderServiceImpl.java

@@ -79,14 +79,33 @@ public class AfterSaleOrderServiceImpl extends ServiceImpl<AfterSaleOrderMapper,
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void edit(AfterSaleOrderUpdateDTO dto) {
-        AfterSaleOrder afterSaleOrder = this.afterSaleOrderMapper.selectById(dto.getAfterSaleOrderId());
+
+        // 1. 校验参数
+        Long id = dto.getAfterSaleOrderId();
+        if (ObjectUtil.isNull(id)) {
+            throw new IllegalArgumentException("售后单ID不能为空");
+        }
+
+        // 2. 获取“同意退货/换货”的售后单
+        LambdaQueryWrapper<AfterSaleOrder> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(AfterSaleOrder::getId, id)
+                .eq(AfterSaleOrder::getAfterSaleStatus, AfterSaleStatusEnum.AGREE_RETURN.getCode());
+
+        AfterSaleOrder afterSaleOrder = this.afterSaleOrderMapper.selectOne(queryWrapper);
         if (ObjectUtil.isNull(afterSaleOrder)) {
-            throw new ServiceException("售后订单不存在");
+            throw new ServiceException("同意退货/换货的售后单不存在");
         }
 
-        afterSaleOrder.setLogisticsNo(dto.getLogisticsNo());
-        afterSaleOrder.setUpdateTime(LocalDateTime.now());
-        this.afterSaleOrderMapper.updateById(afterSaleOrder);
+        AfterSaleOrder updateInfo = new AfterSaleOrder();
+        updateInfo.setId(id);
+        updateInfo.setLogisticsNo(dto.getLogisticsNo());
+        updateInfo.setUpdateTime(LocalDateTime.now());
+        updateInfo.setAfterSaleStatus(AfterSaleStatusEnum.WAITING_USER_RETURN.getCode());
+
+        boolean updateResult = this.updateById(updateInfo);
+        if (!updateResult) {
+            throw new ServiceException("取消售后单填写物流单号失败");
+        }
     }
 
     @Override
@@ -118,8 +137,8 @@ public class AfterSaleOrderServiceImpl extends ServiceImpl<AfterSaleOrderMapper,
         // 更新售后订单状态为已取消
         afterSaleOrder.setAfterSaleStatus(AfterSaleStatusEnum.CANCELLED.getCode());
         afterSaleOrder.setUpdateTime(LocalDateTime.now());
-        boolean afterSaleUpdateResult  = this.updateById(afterSaleOrder);
-        if (!afterSaleUpdateResult ) {
+        boolean afterSaleUpdateResult = this.updateById(afterSaleOrder);
+        if (!afterSaleUpdateResult) {
             throw new ServiceException("取消售后订单失败");
         }
 
@@ -129,12 +148,52 @@ public class AfterSaleOrderServiceImpl extends ServiceImpl<AfterSaleOrderMapper,
         updateInfo.setOrderStatus(ProductOrderStatusEnum.WAIT_RECEIVE.getCode());
         updateInfo.setUpdateTime(LocalDateTime.now());
 
-        boolean orderUpdateResult  = this.productOrderInfoService.updateById(updateInfo);
-        if (!orderUpdateResult ) {
+        boolean orderUpdateResult = this.productOrderInfoService.updateById(updateInfo);
+        if (!orderUpdateResult) {
             throw new ServiceException("订单状态已变更,请刷新后重试");
         }
     }
 
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void editByWechat(AfterSaleOrderUpdateDTO dto) {
+
+        Long orderId = dto.getOrderId();
+
+        if (ObjectUtil.isNull(orderId)) {
+            throw new IllegalArgumentException("订单ID不能为空");
+        }
+
+        // 1. 获取当前登录用户(公共方法提取)
+        WxLoginUser loginUser = getCurrentWxLoginUser();
+
+        // 2. 查询并校验订单(公共方法提取)
+        this.productOrderInfoService.getAndCheckOrder(orderId, loginUser.getCOpenid());
+
+        // 3. 获取“同意退货/换货”的售后单
+        LambdaQueryWrapper<AfterSaleOrder> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(AfterSaleOrder::getOrderId, orderId)
+                .eq(AfterSaleOrder::getOpenId, loginUser.getCOpenid())
+                .eq(AfterSaleOrder::getAfterSaleStatus, AfterSaleStatusEnum.AGREE_RETURN.getCode());
+
+        AfterSaleOrder afterSaleOrder = this.afterSaleOrderMapper.selectOne(queryWrapper);
+        if (ObjectUtil.isNull(afterSaleOrder)) {
+            throw new ServiceException("同意退货/换货的售后单不存在");
+        }
+
+        // 4. 更新售后单信息
+        AfterSaleOrder updateInfo = new AfterSaleOrder();
+        updateInfo.setId(afterSaleOrder.getId());
+        updateInfo.setLogisticsNo(dto.getLogisticsNo());
+        updateInfo.setUpdateTime(LocalDateTime.now());
+        updateInfo.setAfterSaleStatus(AfterSaleStatusEnum.WAITING_USER_RETURN.getCode());
+
+        boolean updateResult = this.updateById(updateInfo);
+        if (!updateResult) {
+            throw new ServiceException("取消售后单填写物流单号失败");
+        }
+    }
+
     private WxLoginUser getCurrentWxLoginUser() {
         WxLoginUser loginUser = SecurityUtils.getWxLoginUser();
         if (ObjectUtil.isNull(loginUser)) {