Эх сурвалжийг харах

现金购买的支持取消订单

cup 2 жил өмнө
parent
commit
4f9a440709

+ 3 - 2
mp-admin/src/main/java/com/qs/mp/web/controller/api/user/UserDeliverOrderController.java

@@ -28,6 +28,7 @@ import com.qs.mp.system.domain.SysUser;
 import com.qs.mp.system.service.ISysUserService;
 import com.qs.mp.user.domain.*;
 import com.qs.mp.user.domain.param.DeliverOrderParam;
+import com.qs.mp.user.domain.param.UserDeliverOrderCancelParam;
 import com.qs.mp.user.domain.vo.DeliverOrderSettleVO;
 import com.qs.mp.user.domain.vo.DeliverOrderVO;
 import com.qs.mp.user.service.IUserAddrService;
@@ -293,8 +294,8 @@ public class UserDeliverOrderController extends BaseApiController {
    */
   @PostMapping("/order/cancel")
   @ApiOperation(value = "取消订单" , notes = "在订单列表页面取消")
-  public AjaxResult cancel(@RequestBody ChannelOrder order) {
-    userDeliverOrderService.cancelOrder(order.getOrderId());
+  public AjaxResult cancel(@RequestBody UserDeliverOrderCancelParam param) {
+    userDeliverOrderService.cancelOrder(param);
     return AjaxResult.success("取消成功");
   }
 

+ 25 - 0
mp-service/src/main/java/com/qs/mp/user/domain/param/UserDeliverOrderCancelParam.java

@@ -0,0 +1,25 @@
+package com.qs.mp.user.domain.param;
+
+import com.qs.mp.common.enums.DeliverOrderResourceEnum;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+
+/**
+ * 提货订单取消入参类
+ * @author Cup
+ * @date 2022/5/25
+ */
+@ApiModel("提货订单取消入参类")
+@Data
+public class UserDeliverOrderCancelParam {
+
+    @NotBlank(message = "订单号不能为空")
+    @ApiModelProperty("订单号")
+    private String orderId;
+
+    @ApiModelProperty("订单来源:1提货订单,2现金购买")
+    private DeliverOrderResourceEnum resource;
+}

+ 2 - 1
mp-service/src/main/java/com/qs/mp/user/service/IUserDeliverOrderService.java

@@ -7,6 +7,7 @@ import com.qs.mp.user.domain.UserDeliverOrderItem;
 
 import java.util.List;
 
+import com.qs.mp.user.domain.param.UserDeliverOrderCancelParam;
 import org.apache.ibatis.annotations.Param;
 
 import com.baomidou.mybatisplus.core.conditions.Wrapper;
@@ -40,7 +41,7 @@ public interface IUserDeliverOrderService extends IService<UserDeliverOrder> {
 	 * @param orderId
 	 * @return
 	 */
-	boolean cancelOrder(String orderId);
+	boolean cancelOrder(UserDeliverOrderCancelParam param);
 
 	/**
 	 * 支付成功回调

+ 17 - 11
mp-service/src/main/java/com/qs/mp/user/service/impl/UserDeliverOrderServiceImpl.java

@@ -18,6 +18,7 @@ import com.qs.mp.user.domain.UserDeliverOrder;
 import com.qs.mp.user.domain.UserDeliverOrderItem;
 import com.qs.mp.user.domain.UserPrizeStorage;
 import com.qs.mp.user.domain.UserTicketOrder;
+import com.qs.mp.user.domain.param.UserDeliverOrderCancelParam;
 import com.qs.mp.user.domain.vo.DeliverOrderSettleVO;
 import com.qs.mp.user.domain.vo.UserDeliverOrderVO;
 import com.qs.mp.user.mapper.UserDeliverOrderMapper;
@@ -119,27 +120,32 @@ public class UserDeliverOrderServiceImpl extends ServiceImpl<UserDeliverOrderMap
   }
 
   @Override
-  @Transactional
-  public boolean cancelOrder(String orderId) {
+  @Transactional(rollbackFor = Exception.class)
+  public boolean cancelOrder(UserDeliverOrderCancelParam param) {
+      String orderId = param.getOrderId();
     UserDeliverOrder userDeliverOrder = getById(orderId);
     if (userDeliverOrder.getStatus() != DeliverOrderStatusEnum.NOT_PAY) {
       LogUtil.warn(logger, "取消提货订单时,订单状态不是待支付,忽略。orderId:{0}, status:{1}",
           orderId, userDeliverOrder.getStatus());
       return false;
     }
-    // 恢复奖品库状态
-    List<UserDeliverOrderItem> orderItemList = userDeliverOrderItemService.list(new LambdaQueryWrapper<UserDeliverOrderItem>()
-        .eq(UserDeliverOrderItem::getOrderId, userDeliverOrder.getOrderId()));
-    for (UserDeliverOrderItem orderItem : orderItemList) {
-      boolean rtn = userPrizeStorageService.update(new LambdaUpdateWrapper<UserPrizeStorage>()
-          .set(UserPrizeStorage::getStatus, PrizeStorageStatusEnum.NOT_DISTRIBUTED)
-          .eq(UserPrizeStorage::getStorageId, orderItem.getStorageId())
-          .eq(UserPrizeStorage::getStatus, PrizeStorageStatusEnum.HAS_DISTRIBUTED));
-      Assert.isTrue(rtn, "取消提货订单时,更新奖品库里奖品状态失败。orderItem:" + JSONObject.toJSONString(orderItem));
+    if (!DeliverOrderResourceEnum.PAYMENT.equals(param.getResource())) {
+        // 恢复奖品库状态
+        List<UserDeliverOrderItem> orderItemList = userDeliverOrderItemService.list(new LambdaQueryWrapper<UserDeliverOrderItem>()
+                .eq(UserDeliverOrderItem::getOrderId, userDeliverOrder.getOrderId()));
+        for (UserDeliverOrderItem orderItem : orderItemList) {
+            boolean rtn = userPrizeStorageService.update(new LambdaUpdateWrapper<UserPrizeStorage>()
+                    .set(UserPrizeStorage::getStatus, PrizeStorageStatusEnum.NOT_DISTRIBUTED)
+                    .eq(UserPrizeStorage::getStorageId, orderItem.getStorageId())
+                    .eq(UserPrizeStorage::getStatus, PrizeStorageStatusEnum.HAS_DISTRIBUTED));
+            Assert.isTrue(rtn, "取消提货订单时,更新奖品库里奖品状态失败。orderItem:" + JSONObject.toJSONString(orderItem));
+        }
     }
     userDeliverOrder.setStatus(DeliverOrderStatusEnum.CANCELED);
     boolean updateRst = updateById(userDeliverOrder);
     Assert.isTrue(updateRst, "取消提货订单时,更新提货订单状态失败。userDeliverOrder:" + JSONObject.toJSONString(userDeliverOrder));
+
+
     return true;
   }