|
|
@@ -4,16 +4,19 @@ import cn.hutool.core.util.NumberUtil;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.kxs.common.core.constant.enums.KindTypeEnum;
|
|
|
+import com.kxs.common.core.constant.enums.UserAdvanceStatusEnum;
|
|
|
import com.kxs.common.core.util.R;
|
|
|
import com.kxs.common.core.util.SysUtils;
|
|
|
import com.kxs.common.mybatis.handler.MonthTableNameHandler;
|
|
|
import com.kxs.common.security.util.SecurityUtils;
|
|
|
import com.kxs.user.api.dto.kxsapp.userAccount.PayRequestDTO;
|
|
|
+import com.kxs.user.api.model.KxsUserAdvance;
|
|
|
import com.kxs.user.api.model.KxsUserAmount;
|
|
|
import com.kxs.user.api.model.KxsUserAmountLog;
|
|
|
import com.kxs.user.api.model.KxsUserYuepay;
|
|
|
import com.kxs.user.api.vo.kxsapp.userAccount.MyAccountVO;
|
|
|
import com.kxs.user.biz.constant.enums.YuePayStatusEnum;
|
|
|
+import com.kxs.user.biz.mapper.KxsUserAdvanceMapper;
|
|
|
import com.kxs.user.biz.mapper.KxsUserAmountMapper;
|
|
|
import com.kxs.user.biz.service.KxsUserAmountLogService;
|
|
|
import com.kxs.user.biz.service.KxsUserAmountService;
|
|
|
@@ -42,6 +45,8 @@ public class KxsUserAmountServiceImpl extends ServiceImpl<KxsUserAmountMapper, K
|
|
|
|
|
|
private final KxsUserYuepayService kxsUserYuepayService;
|
|
|
|
|
|
+ private final KxsUserAdvanceMapper kxsUserAdvanceMapper;
|
|
|
+
|
|
|
@Override
|
|
|
public MyAccountVO myAccount() {
|
|
|
|
|
|
@@ -51,8 +56,15 @@ public class KxsUserAmountServiceImpl extends ServiceImpl<KxsUserAmountMapper, K
|
|
|
MyAccountVO myAccountVO = new MyAccountVO();
|
|
|
BeanUtils.copyProperties(userAmount, myAccountVO);
|
|
|
|
|
|
- //余额减去预扣款金额
|
|
|
- myAccountVO.setUseAmount(NumberUtil.sub(userAmount.getAmount(), userAmount.getAdvanceAmount()));
|
|
|
+ //预扣款
|
|
|
+ KxsUserAdvance advance = kxsUserAdvanceMapper.selectOne(Wrappers.<KxsUserAdvance>query()
|
|
|
+ .select("IFNULL(SUM(amount), 0) as amount")
|
|
|
+ .eq("user_id", SecurityUtils.getUser().getId())
|
|
|
+ .eq("status", UserAdvanceStatusEnum.ADVANCE_NOT_CHARGED.getType()));
|
|
|
+ if(advance != null){
|
|
|
+ //余额减去预扣款金额
|
|
|
+ myAccountVO.setUseAmount(NumberUtil.sub(userAmount.getAmount(), advance.getAmount()));
|
|
|
+ }
|
|
|
|
|
|
return myAccountVO;
|
|
|
}
|
|
|
@@ -68,7 +80,7 @@ public class KxsUserAmountServiceImpl extends ServiceImpl<KxsUserAmountMapper, K
|
|
|
//增加余额
|
|
|
if (Objects.equals(userAmountLog.getKind(), KindTypeEnum.ADD.getType())) {
|
|
|
afterAmount = NumberUtil.add(userAmount.getAmount(), userAmountLog.getAmount());
|
|
|
- }else{
|
|
|
+ } else {
|
|
|
afterAmount = NumberUtil.sub(userAmount.getAmount(), userAmountLog.getAmount());
|
|
|
}
|
|
|
userAmountLog.setAfterAmount(afterAmount);
|
|
|
@@ -91,11 +103,11 @@ public class KxsUserAmountServiceImpl extends ServiceImpl<KxsUserAmountMapper, K
|
|
|
Long userId = SecurityUtils.getUser().getId();
|
|
|
KxsUserAmount userAmount = this.getOne(Wrappers.<KxsUserAmount>lambdaQuery()
|
|
|
.eq(KxsUserAmount::getUserId, userId));
|
|
|
- if(BigDecimal.valueOf(payReq.getTotalAmount()).compareTo(userAmount.getAmount()) > 0){
|
|
|
+ if (BigDecimal.valueOf(payReq.getTotalAmount()).compareTo(userAmount.getAmount()) > 0) {
|
|
|
return R.failed("余额不足");
|
|
|
}
|
|
|
long count = kxsUserYuepayService.count(Wrappers.<KxsUserYuepay>lambdaQuery().eq(KxsUserYuepay::getOutTradeNo, payReq.getOutTradeNo()));
|
|
|
- if(count > 1){
|
|
|
+ if (count > 1) {
|
|
|
return R.failed("该订单号已支付");
|
|
|
}
|
|
|
|
|
|
@@ -107,7 +119,7 @@ public class KxsUserAmountServiceImpl extends ServiceImpl<KxsUserAmountMapper, K
|
|
|
kxsUserAmountLog.setRemark("购买" + payReq.getSubject());
|
|
|
kxsUserAmountLog.setKind(KindTypeEnum.SUB.getType());
|
|
|
Boolean b = this.userAmountChange(kxsUserAmountLog);
|
|
|
- if(!b){
|
|
|
+ if (!b) {
|
|
|
return R.failed("扣款失败");
|
|
|
}
|
|
|
//余额支付账单
|