Ver código fonte

修复可能出现多退钱的bug

houweiyu 4 anos atrás
pai
commit
55cdc8821d

+ 5 - 12
dinner-core/src/main/java/com/fdage/controller/app/AppOrderController.java

@@ -119,9 +119,9 @@ public class AppOrderController extends BaseController {
         if(StringUtils.isBlank(orderId)){
             return Result.failure("订单号不能为空");
         }
-        TmOrder dbOrder = tmOrderService.getById(orderId);
+        TmOrder dbOrder = tmOrderService.getSelectByUpdate(orderId);
         if(null == dbOrder){
-            return Result.failure("订单号不存在");
+            return Result.failure("抢锁失败,请稍后再试");
         }
         //1、检查订单状态
         if(null != dbOrder.getStatus()){
@@ -137,16 +137,9 @@ public class AppOrderController extends BaseController {
             if(OrderPayStatusEnum.REFUND_SUCCESS.getStatus().compareTo(dbOrder.getPayStatus()) == 0){
                 //这里更新订单的状态??? TODO:先去微信支付查询再反转状态?
                 log.warn("订单的支付状态已经为:退款成功");
-                /*dbOrder.setStatus(OrderStatusEnum.ORDER_CANCEL.getStatus());
-                //更新订单状态为已经取消
-                if(tmOrderService.updateWithId(dbOrder) != 1){
-                    throw new CommonBaseException(ResultCodeEnum.D101 , "更新订单状态失败");
-                }
-                return Result.failure("订单号已退款成功");*/
-            }else if(OrderPayStatusEnum.REFUND_FAIL.getStatus().compareTo(dbOrder.getPayStatus()) == 0){
-                //上次退款失败,需要调用查询接口去查询
-                //TODO:
-
+            }else if(OrderPayStatusEnum.REFUND_ING.getStatus().compareTo(dbOrder.getPayStatus()) == 0){
+                //退款中
+                return Result.failure("退款处理中,请勿重复提交退款");
             }
         }
         String refundId = SnowFlakeUUidUtils.generaUUid(null , null , IdPreEnum.WX_REFUND_PRE.getPre());