Jelajahi Sumber

提现导出修改

liweifan 3 tahun lalu
induk
melakukan
f758329e46

+ 43 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/convert/AuthStatusConvert.java

@@ -0,0 +1,43 @@
+package com.yonge.cooleshow.biz.dal.convert;
+
+import com.alibaba.excel.converters.Converter;
+import com.alibaba.excel.enums.CellDataTypeEnum;
+import com.alibaba.excel.metadata.CellData;
+import com.alibaba.excel.metadata.GlobalConfiguration;
+import com.alibaba.excel.metadata.property.ExcelContentProperty;
+import com.yonge.cooleshow.biz.dal.enums.AuthStatusEnum;
+import com.yonge.toolset.payment.base.enums.TradeStatusEnum;
+
+/**
+ * @Author: liweifan
+ * @Data: 2022/4/15 15:36
+ */
+public class AuthStatusConvert implements Converter<AuthStatusEnum> {
+
+    @Override
+    public Class supportJavaTypeKey() {
+        return CellDataTypeEnum.class;
+    }
+
+    @Override
+    public CellDataTypeEnum supportExcelTypeKey() {
+        return CellDataTypeEnum.STRING;
+    }
+
+    @Override
+    public AuthStatusEnum convertToJavaData(CellData cellData, ExcelContentProperty excelContentProperty, GlobalConfiguration globalConfiguration) throws Exception {
+        try {
+            return AuthStatusEnum.valueOf(cellData.getStringValue().trim());
+        } catch (Exception e) {
+            return null;
+        }
+    }
+
+    @Override
+    public CellData convertToExcelData(AuthStatusEnum statusEnum, ExcelContentProperty excelContentProperty, GlobalConfiguration globalConfiguration) throws Exception {
+        if (null != statusEnum) {
+            return new CellData(statusEnum.getName());
+        }
+        return new CellData("异常数据");
+    }
+}

+ 1 - 2
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/convert/WithdrawalStatusConvert.java → cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/convert/TradeStatusConvert.java

@@ -5,14 +5,13 @@ import com.alibaba.excel.enums.CellDataTypeEnum;
 import com.alibaba.excel.metadata.CellData;
 import com.alibaba.excel.metadata.GlobalConfiguration;
 import com.alibaba.excel.metadata.property.ExcelContentProperty;
-import com.yonge.cooleshow.biz.dal.enums.AuthStatusEnum;
 import com.yonge.toolset.payment.base.enums.TradeStatusEnum;
 
 /**
  * @Author: liweifan
  * @Data: 2022/4/15 15:36
  */
-public class WithdrawalStatusConvert implements Converter<TradeStatusEnum> {
+public class TradeStatusConvert implements Converter<TradeStatusEnum> {
 
     @Override
     public Class supportJavaTypeKey() {

+ 55 - 65
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/excel/UserWithdrawalExport.java

@@ -1,14 +1,11 @@
 package com.yonge.cooleshow.biz.dal.dto.excel;
 
 import com.alibaba.excel.annotation.ExcelProperty;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.yonge.cooleshow.biz.dal.convert.WithdrawalStatusConvert;
+import com.yonge.cooleshow.biz.dal.convert.AuthStatusConvert;
+import com.yonge.cooleshow.biz.dal.convert.TradeStatusConvert;
 import com.yonge.cooleshow.biz.dal.enums.AuthStatusEnum;
 import com.yonge.toolset.payment.base.enums.TradeStatusEnum;
-import io.swagger.annotations.ApiModelProperty;
 
-import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.NotNull;
 import java.math.BigDecimal;
 import java.util.Date;
 
@@ -17,37 +14,30 @@ import java.util.Date;
  * @Data: 2022/4/15 18:01
  */
 public class UserWithdrawalExport {
-    @NotNull(message = "结算编号不能为空")
     @ExcelProperty(value = "结算编号", index = 0)
     private Long id;
     @ExcelProperty(value = "结算人", index = 1)
     private String	withdrawaUser;
-    @ExcelProperty(value = "结算人编号", index = 2)
-    @NotNull(message = "结算人编号不能为空")
-    private Long userId;
-    @ExcelProperty(value = "开户行", index = 3)
+    @ExcelProperty(value = "结算金额", index = 2)
+    private BigDecimal amount;
+    @ExcelProperty(value = "发起时间", index = 3)
+    private Date createTime;
+    @ExcelProperty(value = "开户行", index = 4)
     private String bankName;
-    @ExcelProperty(value = "银行卡号", index = 4)
+    @ExcelProperty(value = "银行卡号", index = 5)
     private String bankCard;
-    @NotNull(message = "结算金额不能为空")
-    @ExcelProperty(value = "结算金额", index = 5)
-    private BigDecimal amount;
-    @NotNull(message = "平台服务费不能为空")
-    @ExcelProperty(value = "平台服务费", index = 6)
-    private BigDecimal plantformFee;
-    @ExcelProperty(value = "转账金额", index = 7)
+    @ExcelProperty(value = "转账金额(元)", index = 6)
     private BigDecimal actualAmount;
-
-    @NotNull(message = "结算状态不能为空")
-    @ExcelProperty(value = "结算状态 审核中/通过/不通过", index = 8,converter = WithdrawalStatusConvert.class)
-    private TradeStatusEnum status;
-    /*@ExcelProperty(value = "审核原因", index = 9)
-    private String verifyReason;*/
-    @ExcelProperty(value = "银行流水号", index = 9)
-    private String bankFlowNo;
-    /*@NotBlank(message = "签名不能为空")
-    @ExcelProperty(value = "签名", index = 11)
-    private String sign;*/
+    @ExcelProperty(value = "银行流水号", index = 7)
+    private String tradeNo;
+    @ExcelProperty(value = "审核状态", index = 8,converter = AuthStatusConvert.class)
+    private AuthStatusEnum authStatus;
+    @ExcelProperty(value = "转账状态", index = 9,converter = TradeStatusConvert.class)
+    private TradeStatusEnum tradeStatus;
+    @ExcelProperty(value = "审核时间", index = 10)
+    private Date authTime;
+    @ExcelProperty(value = "审核人", index = 11)
+    private String verifyUser;
 
     public Long getId() {
         return id;
@@ -65,12 +55,20 @@ public class UserWithdrawalExport {
         this.withdrawaUser = withdrawaUser;
     }
 
-    public Long getUserId() {
-        return userId;
+    public BigDecimal getAmount() {
+        return amount;
     }
 
-    public void setUserId(Long userId) {
-        this.userId = userId;
+    public void setAmount(BigDecimal amount) {
+        this.amount = amount;
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
     }
 
     public String getBankName() {
@@ -89,59 +87,51 @@ public class UserWithdrawalExport {
         this.bankCard = bankCard;
     }
 
-    public BigDecimal getAmount() {
-        return amount;
-    }
-
-    public void setAmount(BigDecimal amount) {
-        this.amount = amount;
+    public BigDecimal getActualAmount() {
+        return actualAmount;
     }
 
-    public BigDecimal getPlantformFee() {
-        return plantformFee;
+    public void setActualAmount(BigDecimal actualAmount) {
+        this.actualAmount = actualAmount;
     }
 
-    public void setPlantformFee(BigDecimal plantformFee) {
-        this.plantformFee = plantformFee;
+    public String getTradeNo() {
+        return tradeNo;
     }
 
-    public BigDecimal getActualAmount() {
-        return actualAmount;
+    public void setTradeNo(String tradeNo) {
+        this.tradeNo = tradeNo;
     }
 
-    public void setActualAmount(BigDecimal actualAmount) {
-        this.actualAmount = actualAmount;
+    public AuthStatusEnum getAuthStatus() {
+        return authStatus;
     }
 
-    public String getBankFlowNo() {
-        return bankFlowNo;
+    public void setAuthStatus(AuthStatusEnum authStatus) {
+        this.authStatus = authStatus;
     }
 
-    public void setBankFlowNo(String bankFlowNo) {
-        this.bankFlowNo = bankFlowNo;
+    public TradeStatusEnum getTradeStatus() {
+        return tradeStatus;
     }
 
-    public TradeStatusEnum getStatus() {
-        return status;
+    public void setTradeStatus(TradeStatusEnum tradeStatus) {
+        this.tradeStatus = tradeStatus;
     }
 
-    public void setStatus(TradeStatusEnum status) {
-        this.status = status;
+    public Date getAuthTime() {
+        return authTime;
     }
 
-    /*public String getVerifyReason() {
-        return verifyReason;
+    public void setAuthTime(Date authTime) {
+        this.authTime = authTime;
     }
 
-    public void setVerifyReason(String verifyReason) {
-        this.verifyReason = verifyReason;
+    public String getVerifyUser() {
+        return verifyUser;
     }
 
-    public String getSign() {
-        return sign;
+    public void setVerifyUser(String verifyUser) {
+        this.verifyUser = verifyUser;
     }
-
-    public void setSign(String sign) {
-        this.sign = sign;
-    }*/
 }

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

@@ -1859,6 +1859,12 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
             log.error("琴房课程组id:{},创建群聊失败:{}", courseGroup.getId(), e);
             e.printStackTrace();
         }
+
+        //清除统计缓存
+        for (Long studentId : studentIds) {
+            redissonClient.getBucket(CacheNameEnum.STUDENT_TOTAL.getRedisKey(studentId)).delete();
+        }
+        redissonClient.getBucket(CacheNameEnum.TEACHER_TOTAL.getRedisKey(teacherId)).delete();
     }
 
     /**

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

@@ -668,13 +668,13 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
             //清除商家统计缓存
             Long merchId = orderDetailVo.getMerchId();
             if (merchId != null && merchId != 0) {
-                redissonClient.getBucket(CacheNameEnum.TEACHER_SUBJECT_ITEM.getRedisKey(merchId)).delete();
+                //redissonClient.getBucket(CacheNameEnum.TEACHER_SUBJECT_ITEM.getRedisKey(merchId)).delete();
                 redissonClient.getBucket(CacheNameEnum.TEACHER_TOTAL.getRedisKey(merchId)).delete();
             }
         }
         //清除买家统计缓存
         if (ClientEnum.STUDENT.getCode().equals(detail.getPaymentClient())) {
-            redissonClient.getBucket(CacheNameEnum.STUDENT_SUBJECT_ITEM.getRedisKey(detail.getUserId())).delete();
+            //redissonClient.getBucket(CacheNameEnum.STUDENT_SUBJECT_ITEM.getRedisKey(detail.getUserId())).delete();
             redissonClient.getBucket(CacheNameEnum.STUDENT_TOTAL.getRedisKey(detail.getUserId())).delete();
         } else if (ClientEnum.TEACHER.getCode().equals(detail.getPaymentClient())) {
             redissonClient.getBucket(CacheNameEnum.TEACHER_TOTAL.getRedisKey(detail.getUserId())).delete();

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

@@ -2,6 +2,7 @@ package com.yonge.cooleshow.biz.dal.service.impl;
 
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.dao.SysUserContractRecordDao;
@@ -83,11 +84,11 @@ public class UserWithdrawalServiceImpl extends ServiceImpl<UserWithdrawalDao, Us
     public IPage<UserWithdrawalVo> selectPage(IPage<UserWithdrawalVo> page, TeacherWithdrawalSearch query) {
         List<UserWithdrawalVo> withdrawalVoList = baseMapper.selectPage(page, query);
         withdrawalVoList.forEach(o -> {
-            if(AuthStatusEnum.DOING.equals(o.getAuthStatus()) || TradeStatusEnum.pending.equals(o.getTradeStatus())){
+            if (AuthStatusEnum.DOING.equals(o.getAuthStatus()) || TradeStatusEnum.pending.equals(o.getTradeStatus())) {
                 o.setWithdrawStatus("DOING");
-            }else if(TradeStatusEnum.succeeded.equals(o.getTradeStatus())){
+            } else if (TradeStatusEnum.succeeded.equals(o.getTradeStatus())) {
                 o.setWithdrawStatus("SUCCESS");
-            }else{
+            } else {
                 o.setWithdrawStatus("FAILED");
             }
             o.setBankCard(ValueUtil.fuzzyBankCard(o.getBankCard()));
@@ -196,6 +197,19 @@ public class UserWithdrawalServiceImpl extends ServiceImpl<UserWithdrawalDao, Us
     @Transactional(rollbackFor = Exception.class)
     public HttpResponseResult<Boolean> batchAuth(AuthOperaReq authOperaReq, SysUser sysUser) {
         Long[] ids = StringUtil.toLongArray(StringPool.COMMA, authOperaReq.getId());
+        //todo 先判断三方余额是否充足,不足直接抛异常
+        List<UserWithdrawal> userWithdrawals = baseMapper.selectList(Wrappers.<UserWithdrawal>lambdaQuery()
+                .in(UserWithdrawal::getId, ids)
+                .ne(UserWithdrawal::getAuthStatus, AuthStatusEnum.DOING));
+        //总提现金额
+        BigDecimal totalAmount = BigDecimal.ZERO;
+        for (UserWithdrawal withdrawal : userWithdrawals) {
+            if(null != withdrawal.getActualAmount()
+                    && BigDecimal.ZERO.compareTo(withdrawal.getActualAmount())<=0){
+                totalAmount = totalAmount.add(withdrawal.getActualAmount());
+            }
+        }
+
         for (Long id : ids) {
             AuthOperaReq param = new AuthOperaReq();
             param.setId(id.toString());
@@ -228,10 +242,8 @@ public class UserWithdrawalServiceImpl extends ServiceImpl<UserWithdrawalDao, Us
         build.setUpdateTime(new Date());
         build.setAuthTime(new Date());
 
-        //请求三方
         SysUser withdrawalUser = sysUserService.findUserById(build.getUserId());
         if (authOperaReq.getPass()) {
-            //请求三方接口
             //交易流水号生成
             Long transNo = idGeneratorService.generatorId("withdrawNo");
 
@@ -350,7 +362,7 @@ public class UserWithdrawalServiceImpl extends ServiceImpl<UserWithdrawalDao, Us
             userAccountService.accountChange(accountRecordDto);
 
             //发生结算失败通知
-            unpassSend(detail.getUserId(), detail.getPhone(), "结算失败,请重新提交。");
+            unpassSend(detail.getUserId(), detail.getPhone(), callback.getErrorMsg());
         } else {
             return;
         }