Ver código fonte

Merge branch 'dev_1_2_20220802'

liweifan 3 anos atrás
pai
commit
4049c020b8

+ 14 - 7
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/open/UserOrderClient.java

@@ -2,6 +2,7 @@ package com.yonge.cooleshow.admin.controller.open;
 
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.yonge.cooleshow.biz.dal.entity.UserOrder;
 import com.yonge.cooleshow.biz.dal.entity.UserOrderPayment;
 import com.yonge.cooleshow.biz.dal.entity.UserOrderRefundBill;
 import com.yonge.cooleshow.common.entity.ContractDto;
@@ -134,7 +135,7 @@ public class UserOrderClient extends BaseController {
      */
     @PostMapping("/testCallback")
     public void testCallback(@RequestBody PaymentCallBack data) {
-        if(!debugMode){
+        if (!debugMode) {
             return;
         }
         if (MethodNameEnum.executePayment.equals(data.getMethodName())) {
@@ -152,7 +153,7 @@ public class UserOrderClient extends BaseController {
     @GetMapping("/setSuccessStatus")
     @ApiOperation(value = "完成所有订单(测试用)")
     public HttpResponseResult<Boolean> setSuccessStatus() {
-        if(!debugMode){
+        if (!debugMode) {
             return HttpResponseResult.failed("当前环境不允许调用");
         }
         userOrderService.setSuccessStatus();
@@ -164,18 +165,24 @@ public class UserOrderClient extends BaseController {
     public HttpResponseResult<Boolean> setOrderStatus(
             @RequestParam("orderNo") String orderNo,
             @RequestParam("orderStatus") OrderStatusEnum orderStatus) {
-        if(!debugMode){
+        if (!debugMode) {
             return HttpResponseResult.failed("当前环境不允许调用");
         }
-        userOrderService.setOrderStatus(orderNo, orderStatus);
-        return succeed(true);
+
+        UserOrder param = new UserOrder();
+        param.setOrderNo(orderNo);
+        param.setStatus(orderStatus);
+        Boolean aBoolean = DistributedLock.of(redissonClient)
+                .runIfLockToFunction(CacheNameEnum.LOCK_EXECUTE_ORDER.getRedisKey(orderNo)
+                        , userOrderService::setOrderStatus, param, 10L);
+        return succeed(aBoolean);
     }
 
     @GetMapping("/orderRefound")
     @ApiOperation(value = "退款(测试用)")
     public HttpResponseResult<UserOrderRefundBill> orderRefound(
             @RequestParam("orderNo") String orderNo) {
-        if(!debugMode){
+        if (!debugMode) {
             return HttpResponseResult.failed("当前环境不允许调用");
         }
         return userOrderRefundService.orderRefound(orderNo);
@@ -187,7 +194,7 @@ public class UserOrderClient extends BaseController {
     @PostMapping("/contractRecord")
     @ApiOperation(value = "签协议 商城调用", notes = "签协议 商城调用")
     public HttpResponseResult<Boolean> contractRecord(@RequestBody ContractDto contract) {
-        paymentService.setContractRecord(contract.getType(),contract.getUserId());
+        paymentService.setContractRecord(contract.getType(), contract.getUserId());
         return succeed(true);
     }
 }

+ 1 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/UserOrderService.java

@@ -163,7 +163,7 @@ public interface UserOrderService extends IService<UserOrder> {
      * @param: orderStatus
      * @updateTime 2022/4/29 18:41
      */
-    void setOrderStatus(String orderNo, OrderStatusEnum orderStatus);
+    Boolean setOrderStatus(UserOrder param);
 
     /**
      * 订单完成

+ 20 - 5
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/UserOrderServiceImpl.java

@@ -211,7 +211,9 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
         query.setStatus("WAIT_PAY,PAYING");
         List<UserOrderVo> userOrderVos = selectAllList(query);
          for (UserOrderVo userOrderVo : userOrderVos) {
-            testOrderSuccess(userOrderVo);
+             DistributedLock.of(redissonClient)
+                     .runIfLockCanGet(CacheNameEnum.LOCK_EXECUTE_ORDER.getRedisKey(userOrderVo.getOrderNo())
+                             , () -> testOrderSuccess(userOrderVo.getOrderNo()), 60L, TimeUnit.SECONDS);
         }
     }
 
@@ -227,7 +229,10 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public void setOrderStatus(String orderNo, OrderStatusEnum orderStatus) {
+    public Boolean setOrderStatus(UserOrder param) {
+        String orderNo = param.getOrderNo();
+        OrderStatusEnum orderStatus = param.getStatus();
+
         UserOrderVo detail = detail(orderNo, null);
         if (OrderStatusEnum.WAIT_PAY.equals(detail.getStatus())
                 || OrderStatusEnum.PAYING.equals(detail.getStatus())) {
@@ -239,9 +244,10 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
                 doOrderCancel(detail, orderStatus, "测试接口-订单交易失败");
             }
             if (OrderStatusEnum.PAID.equals(orderStatus)) {
-                testOrderSuccess(detail);
+                testOrderSuccess(detail.getOrderNo());
             }
         }
+        return true;
     }
 
 
@@ -951,10 +957,19 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
     }
 
     @Transactional(rollbackFor = Exception.class)
-    public void testOrderSuccess(UserOrderVo detail) {
-        if (null == detail || StringUtil.isEmpty(detail.getOrderNo())) {
+    public void testOrderSuccess(String orderNo) {
+        if (StringUtil.isEmpty(orderNo)) {
+            return;
+        }
+        UserOrderVo detail = detail(orderNo, null);
+        if (null == detail) {
             return;
         }
+        if (!OrderStatusEnum.WAIT_PAY.equals(detail.getStatus())
+                && !OrderStatusEnum.PAYING.equals(detail.getStatus())) {
+            return;
+        }
+
         //关闭当前正在支付的订单
         orderPaymentService.closePaymentAndReqOpen(detail.getOrderNo(), "交易取消");