Procházet zdrojové kódy

取消订单兼容

liujc před 1 rokem
rodič
revize
7c61287616

+ 26 - 12
cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/UserOrderController.java

@@ -18,6 +18,7 @@ import com.yonge.cooleshow.biz.dal.service.UserPaymentCoreService;
 import com.yonge.cooleshow.biz.dal.wrapper.UserPaymentOrderWrapper;
 import com.yonge.cooleshow.common.enums.CacheNameEnum;
 import com.yonge.cooleshow.biz.dal.service.UserOrderService;
+import com.yonge.cooleshow.common.enums.EPaymentVersion;
 import com.yonge.cooleshow.teacher.vo.UserPaymentOrderVo;
 import com.yonge.toolset.payment.util.DistributedLock;
 import com.yonge.toolset.mybatis.support.PageUtil;
@@ -149,21 +150,34 @@ public class UserOrderController extends BaseController {
         }
         payReq.setUserId(user.getId());
 
-        try {
-            HttpResponseResult<Boolean> res = DistributedLock.of(redissonClient)
-                    .runIfLockToFunction(CacheNameEnum.LOCK_EXECUTE_ORDER.getRedisKey(user.getId())
-                            , userOrderService::orderCancel, payReq, 10L);
-            if (null != res) {
-                return res;
-            } else {
+        UserOrder order = userOrderService.getByOrderNo(payReq.getOrderNo());
+        if (null == order) {
+            return failed("订单不存在");
+        }
+        if(order.getPaymentVersion().equals(EPaymentVersion.V2)){
+
+
+            // 用户取消支付
+            userPaymentCoreService.cancelPayment(JwtUserInfo.builder().userId(user.getId().toString()).clientType(ClientEnum.STUDENT.getCode()).build(), payReq.getOrderNo());
+        } else {
+
+            try {
+                HttpResponseResult<Boolean> res = DistributedLock.of(redissonClient)
+                        .runIfLockToFunction(CacheNameEnum.LOCK_EXECUTE_ORDER.getRedisKey(payReq.getOrderNo())
+                                , userOrderService::orderCancel, payReq, 10L);
+                if (null != res) {
+                    return res;
+                } else {
+                    return HttpResponseResult.failed("取消订单失败");
+                }
+            } catch (BizException e) {
+                return HttpResponseResult.failed(e.getMessage());
+            } catch (Exception e) {
+                e.printStackTrace();
                 return HttpResponseResult.failed("取消订单失败");
             }
-        } catch (BizException e) {
-            return HttpResponseResult.failed(e.getMessage());
-        } catch (Exception e) {
-            e.printStackTrace();
-            return HttpResponseResult.failed("取消订单失败");
         }
+        return succeed();
     }
 
     /**

+ 56 - 2
cooleshow-user/user-tenant/src/main/java/com/yonge/cooleshow/tenant/controller/UserOrderController.java

@@ -13,6 +13,7 @@ import com.yonge.cooleshow.biz.dal.entity.TenantStaff;
 import com.yonge.cooleshow.biz.dal.entity.UserOrder;
 import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
 import com.yonge.cooleshow.biz.dal.service.TenantStaffService;
+import com.yonge.cooleshow.biz.dal.service.UserOrderService;
 import com.yonge.cooleshow.biz.dal.service.UserPaymentCoreService;
 import com.yonge.cooleshow.biz.dal.wrapper.UserPaymentOrderWrapper;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
@@ -26,6 +27,7 @@ import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
 import org.apache.commons.lang3.StringUtils;
+import org.redisson.api.RedissonClient;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
 import org.springframework.validation.annotation.Validated;
@@ -36,6 +38,7 @@ import javax.servlet.http.HttpServletRequest;
 import java.util.Objects;
 
 import static com.yonge.cooleshow.common.entity.HttpResponseResult.failed;
+import static com.yonge.cooleshow.common.entity.HttpResponseResult.succeed;
 
 @Validated
 @RestController
@@ -45,6 +48,10 @@ public class UserOrderController {
 
 
     @Autowired
+    private UserOrderService userOrderService;
+    @Autowired
+    private RedissonClient redissonClient;
+    @Autowired
     private SysUserFeignService sysUserFeignService;
 
     @Autowired
@@ -108,8 +115,9 @@ public class UserOrderController {
         return R.from(paymentConfig);
     }
 
+
     @ApiOperation(value = "取消订单")
-    @PostMapping("/orderCancel/v2")
+    @PostMapping("/orderCancel")
     @ApiImplicitParams({
             @ApiImplicitParam(name = "orderNo", value = "订单号", paramType = "query", dataType = "String", required = true),
             @ApiImplicitParam(name = "reason", value = "取消说明", paramType = "query", dataType = "String")
@@ -124,6 +132,52 @@ public class UserOrderController {
         }
         payReq.setUserId(user.getId());
 
+        UserOrder order = userOrderService.getByOrderNo(payReq.getOrderNo());
+        if (null == order) {
+            return failed("订单不存在");
+        }
+        if(order.getPaymentVersion().equals(EPaymentVersion.V2)){
+
+
+            // 用户取消支付
+            userPaymentCoreService.cancelPayment(JwtUserInfo.builder().userId(user.getId().toString()).clientType(ClientEnum.STUDENT.getCode()).build(), payReq.getOrderNo());
+        } else {
+
+            try {
+                HttpResponseResult<Boolean> res = DistributedLock.of(redissonClient)
+                        .runIfLockToFunction(CacheNameEnum.LOCK_EXECUTE_ORDER.getRedisKey(payReq.getOrderNo())
+                                , userOrderService::orderCancel, payReq, 10L);
+                if (null != res) {
+                    return res;
+                } else {
+                    return HttpResponseResult.failed("取消订单失败");
+                }
+            } catch (com.yonge.toolset.base.exception.BizException e) {
+                return HttpResponseResult.failed(e.getMessage());
+            } catch (Exception e) {
+                e.printStackTrace();
+                return HttpResponseResult.failed("取消订单失败");
+            }
+        }
+        return succeed();
+    }
+
+    @ApiOperation(value = "取消订单")
+    @PostMapping("/orderCancel/v2")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "orderNo", value = "订单号", paramType = "query", dataType = "String", required = true),
+            @ApiImplicitParam(name = "reason", value = "取消说明", paramType = "query", dataType = "String")
+    })
+    public HttpResponseResult<Boolean> orderCancelV2(@ApiIgnore @RequestBody OrderPayReq payReq) {
+        SysUser user = sysUserFeignService.queryUserInfo();
+        if (user == null || null == user.getId()) {
+            return failed(HttpStatus.FORBIDDEN, "请登录");
+        }
+        if (StringUtil.isEmpty(payReq.getOrderNo())) {
+            return failed("订单号不能为空");
+        }
+        payReq.setUserId(user.getId());
+
         // 用户取消支付
         userPaymentCoreService.cancelPayment(JwtUserInfo.builder().userId(user.getId().toString()).clientType(ClientEnum.TENANT.getCode()).build(), payReq.getOrderNo());
 
@@ -145,7 +199,7 @@ public class UserOrderController {
         // 用户取消支付
 
 
-        return HttpResponseResult.succeed(userPaymentCoreService.orderPayType(payTypeReq));
+        return succeed(userPaymentCoreService.orderPayType(payTypeReq));
     }