浏览代码

订单退款问题修改

liweifan 3 年之前
父节点
当前提交
ef825fba79

+ 10 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/req/AuthOperaReq.java

@@ -23,6 +23,8 @@ public class AuthOperaReq {
     @NotBlank(message = "请说明审核理由")
     @ApiModelProperty(value = "审核理由", required = true)
     private String reason;
+    @ApiModelProperty(value = "用户id", hidden = true)
+    private Long userId;
 
     public String getId() {
         return id;
@@ -47,4 +49,12 @@ public class AuthOperaReq {
     public void setReason(String reason) {
         this.reason = reason;
     }
+
+    public Long getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Long userId) {
+        this.userId = userId;
+    }
 }

+ 0 - 8
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/CourseGroupService.java

@@ -156,14 +156,6 @@ public interface CourseGroupService extends IService<CourseGroup> {
     void opsCourseGroup();
 
     /***
-     * 直播课退款单-创建前
-     * @param: refundReq
-     * @updateTime 2022/5/9 15:11
-     * @return: com.yonge.cooleshow.common.entity.HttpResponseResult<com.yonge.cooleshow.biz.dal.vo.res.RefundCreateRes>
-     */
-    HttpResponseResult<RefundCreateRes> refundCreate(OrderRefundReq refundReq);
-
-    /***
      * 直播课退款单-创建后
      * @param: userOrderRefund
      * @updateTime 2022/5/9 15:11

+ 0 - 7
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/CourseGroupServiceImpl.java

@@ -885,13 +885,6 @@ public class CourseGroupServiceImpl extends ServiceImpl<CourseGroupDao, CourseGr
     }
 
     @Override
-    public HttpResponseResult<RefundCreateRes> refundCreate(OrderRefundReq refundReq) {
-        RefundCreateRes refundCreateRes = new RefundCreateRes();
-        refundCreateRes.setActualPrice(BigDecimal.ZERO);
-        return HttpResponseResult.succeed(refundCreateRes);
-    }
-
-    @Override
     public void refundAfter(UserOrderDetailVo userOrderDetailVo) {
 
     }

+ 0 - 3
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/UserOrderRefundServiceImpl.java

@@ -81,9 +81,6 @@ public class UserOrderRefundServiceImpl extends ServiceImpl<UserOrderRefundDao,
     @PostConstruct
     private void init() {
         /**********退费单生成前******************/
-        //直播课退费
-        refundCreate.put(GoodTypeEnum.LIVE, courseGroupService::refundCreate);
-
         refundSuccess.put(GoodTypeEnum.LIVE, courseGroupService::refundSuccess);
     }
 

+ 22 - 11
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/UserWithdrawalServiceImpl.java

@@ -42,7 +42,6 @@ import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
 import java.util.*;
-import java.util.concurrent.TimeUnit;
 
 
 @Service
@@ -213,40 +212,50 @@ public class UserWithdrawalServiceImpl extends ServiceImpl<UserWithdrawalDao, Us
         if (useDecimal.compareTo(totalAmount) < 0) {
             return HttpResponseResult.failed("账户余额不足");
         }
-
+        int successNum = 0;
+        String msg = "执行完成!";
         for (Long id : ids) {
             AuthOperaReq param = new AuthOperaReq();
             param.setId(id.toString());
             param.setReason(authOperaReq.getReason());
             param.setPass(authOperaReq.getPass());
-
+            param.setUserId(sysUser.getId());
             try {
-                DistributedLock.of(redissonClient)
-                        .runIfLockCanGet(CacheNameEnum.LOCK_WITHDRAWAL.getRedisKey(id.toString())
-                                , () -> doAuth(param, sysUser), 60L, TimeUnit.SECONDS);
+                HttpResponseResult<UserWithdrawalVo> res = DistributedLock.of(redissonClient)
+                        .runIfLockToFunction(CacheNameEnum.LOCK_WITHDRAWAL.getRedisKey(id.toString())
+                                , this::doAuth, param, 10L);
+                if (!res.getStatus()) {
+                    msg += successNum + "条成功," + "1条失败," + (ids.size() - successNum - 1) + "条未执行,失败原因:" + res.getMsg();
+                    return HttpResponseResult.failed(msg);
+                } else {
+                    successNum++;
+                }
             } catch (BizException e) {
-                return HttpResponseResult.failed(e.getMessage());
+                msg += successNum + "条成功," + "1条失败," + (ids.size() - successNum - 1) + "条未执行,失败原因:" + e.getMessage();
+                return HttpResponseResult.failed(msg);
             } catch (Exception e) {
                 e.printStackTrace();
-                return HttpResponseResult.failed("结算失败");
+                msg += successNum + "条成功," + "1条失败," + (ids.size() - successNum - 1) + "条未执行,失败原因:结算失败";
+                return HttpResponseResult.failed(msg);
             }
         }
         return HttpResponseResult.succeed();
     }
 
     @Transactional(rollbackFor = Exception.class)
-    public void doAuth(AuthOperaReq authOperaReq, SysUser sysUser) {
+    public HttpResponseResult<UserWithdrawalVo> doAuth(AuthOperaReq authOperaReq) {
         UserWithdrawalVo build = detail(Long.parseLong(authOperaReq.getId()));
         if (null == build || !AuthStatusEnum.DOING.equals(build.getAuthStatus())) {
-            return;
+            return HttpResponseResult.succeed();
         }
         build.setAuthStatus(authOperaReq.getPass() ? AuthStatusEnum.PASS : AuthStatusEnum.UNPASS);
         build.setReason(authOperaReq.getReason());
-        build.setAuthUserId(sysUser.getId());
+        build.setAuthUserId(authOperaReq.getUserId());
         build.setUpdateTime(new Date());
         build.setAuthTime(new Date());
 
         SysUser withdrawalUser = sysUserService.findUserById(build.getUserId());
+        HttpResponseResult res = HttpResponseResult.succeed(build);
         if (authOperaReq.getPass()) {
             //交易流水号生成
             Long transNo = idGeneratorService.generatorId("withdrawNo");
@@ -262,6 +271,7 @@ public class UserWithdrawalServiceImpl extends ServiceImpl<UserWithdrawalDao, Us
                 build.setAuthStatus(AuthStatusEnum.DOING);
                 build.setTradeStatus(TradeStatusEnum.failed);
                 build.setErrorMsg(withdraw.getMsg());
+                res = HttpResponseResult.failed("结算" + authOperaReq.getId() + "失败,失败原因:" + withdraw.getMsg());
             }
         } else {
             //审核不通过,账户解冻
@@ -277,6 +287,7 @@ public class UserWithdrawalServiceImpl extends ServiceImpl<UserWithdrawalDao, Us
             unpassSend(build.getUserId(), build.getPhone(), authOperaReq.getReason());
         }
         updateById(build);
+        return res;
     }
 
     @Override