perf(payment): 优化支付宝提现流程并缓存佣金比例

master
yang 2025-03-29 18:01:37 +08:00
parent ef36122845
commit 43f11e5db2
5 changed files with 29 additions and 37 deletions

View File

@ -215,7 +215,7 @@ public class AliPayController extends BaseController {
return R.fail(HttpStatus.SHOW_ERROR_MSG,"提现金额最小为0.1");
}
return aliPayService.fetch(amount.toString());
return aliPayService.fetch(amount);
}

View File

@ -1,31 +0,0 @@
package com.mcwl.common.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
/**
* @AuthorChenYan
* @ProjectMcWl
* @Packagecom.mcwl.pay.domain
* @FilenamePaymentStatus
* @Description TODO
* @Date2025/1/3 17:24
*/
@Getter
@AllArgsConstructor
@NoArgsConstructor
public enum CommissionRationEnum {
/**
*
*/
COMMISSION_RATION_INVITER_USER("CommissionRationInviterUser"),
/**
*
*/
COMMISSION_RATION_MERCHANT("CommissionRationMerchant");
private String name;
}

View File

@ -2,11 +2,13 @@ package com.mcwl.myInvitation.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.mcwl.common.core.redis.RedisCache;
import com.mcwl.myInvitation.domain.CommissionRatio;
import com.mcwl.myInvitation.domain.vo.CommissionRatioVo;
import com.mcwl.myInvitation.mapper.CommissionRatioMapper;
import com.mcwl.myInvitation.service.CommissionRatioService;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
@ -20,6 +22,8 @@ import java.util.Objects;
public class CommissionRatioServiceImpl extends ServiceImpl<CommissionRatioMapper, CommissionRatio> implements CommissionRatioService {
private final RedisCache redisCache;
@Override
public List<CommissionRatioVo> ratioList() {
List<CommissionRatio> list = baseMapper.selectList(null);
@ -41,7 +45,10 @@ public class CommissionRatioServiceImpl extends ServiceImpl<CommissionRatioMappe
return null;
}
commissionRatio.setRatio(ratio);
baseMapper.insert(commissionRatio);
baseMapper.updateById(commissionRatio);
redisCache.deleteObject("CommissionRationInviterUser");
redisCache.deleteObject("CommissionRationMerchant");
return this.getCommissionRatioVo(commissionRatio);
}

View File

@ -127,13 +127,13 @@ public class AliPayServiceImpl implements AliPayService {
Long productId = orderTradeDto.getProductId();
if (!Optional.ofNullable(productId).isPresent()) {
throw new ServiceException("memberLevelId不能为空");
throw new ServiceException("memberLevelId不能为空", HttpStatus.SHOW_ERROR_MSG);
}
MemberLevel memberLevel = memberLevelService.getById(productId);
if (!Optional.ofNullable(memberLevel).isPresent()) {
throw new ServiceException("memberLevel不存在");
throw new ServiceException("memberLevel不存在", HttpStatus.SHOW_ERROR_MSG);
}
// 设置orderTrade信息
@ -349,10 +349,10 @@ public class AliPayServiceImpl implements AliPayService {
String content = String.format("账户余额不足:用户%s提现%s", sysUser.getNickName(), amount);
MailUtil.send(tos, "魔创未来", content, false);
throw new ServiceException("网络连接出错,请稍后再试");
throw new ServiceException("网络连接出错,请稍后再试", HttpStatus.SHOW_ERROR_MSG);
}
System.out.println("用户" + SecurityUtils.getLoginUser().getUser().getNickName() + "提现失败:" + response.getSubMsg());
throw new ServiceException("提现失败");
throw new ServiceException("提现失败", HttpStatus.SHOW_ERROR_MSG);
}
@Override

View File

@ -51,6 +51,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.PostConstruct;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.LocalDate;
@ -114,6 +115,19 @@ public class OrderTradeServiceImpl extends ServiceImpl<OrderTradeMapper, OrderTr
.expireAfterAccess(3, TimeUnit.MINUTES)
.build();
@PostConstruct
public void init() {
CommissionRatio commissionRatio1 = commissionRatioService.lambdaQuery()
.eq(CommissionRatio::getType, 0)
.one();
CommissionRatio commissionRatio2 = commissionRatioService.lambdaQuery()
.eq(CommissionRatio::getType, 1)
.one();
redisCache.setCacheObject(CommissionRationEnum.COMMISSION_RATION_INVITER_USER.getName(), commissionRatio1);
redisCache.setCacheObject(CommissionRationEnum.COMMISSION_RATION_MERCHANT.getName(), commissionRatio2);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void productHandler(ProductRes productRes) {
@ -676,6 +690,7 @@ public class OrderTradeServiceImpl extends ServiceImpl<OrderTradeMapper, OrderTr
.eq(CommissionRatio::getType, 1)
.one();
CommissionRationMerchant = commissionRatio.getRatio().toString();
redisCache.setCacheObject(CommissionRationEnum.COMMISSION_RATION_MERCHANT.getName(), CommissionRationMerchant);
}
// 佣金配给邀请者用户比例
@ -685,6 +700,7 @@ public class OrderTradeServiceImpl extends ServiceImpl<OrderTradeMapper, OrderTr
.eq(CommissionRatio::getType, 0)
.one();
commissionRationInviterUser = commissionRatio.getRatio().toString();
redisCache.setCacheObject(CommissionRationEnum.COMMISSION_RATION_INVITER_USER.getName(), commissionRationInviterUser);
}
Double rationMerchant = redisCache.getCacheObject(CommissionRationMerchant);