feat: 手动体现增加次数和金额限制,增加体现类型

This commit is contained in:
张松
2024-12-27 15:35:05 +08:00
parent 57b2253d9d
commit 3a15793bfb
7 changed files with 57 additions and 16 deletions

View File

@@ -21,6 +21,7 @@ import com.sqx.modules.discSpinning.entity.DiscSpinningRecord;
import com.sqx.modules.discSpinning.service.DiscSpinningRecordService; import com.sqx.modules.discSpinning.service.DiscSpinningRecordService;
import com.sqx.modules.discSpinning.service.DiscSpinningService; import com.sqx.modules.discSpinning.service.DiscSpinningService;
import com.sqx.modules.pay.entity.CashOut; import com.sqx.modules.pay.entity.CashOut;
import com.sqx.modules.pay.entity.WithdrawTypeEnum;
import com.sqx.modules.pay.service.CashOutService; import com.sqx.modules.pay.service.CashOutService;
import com.sqx.modules.pay.wuyou.BaseResp; import com.sqx.modules.pay.wuyou.BaseResp;
import com.sqx.modules.pay.wuyou.WuyouPay; import com.sqx.modules.pay.wuyou.WuyouPay;
@@ -120,11 +121,13 @@ public class DiscSpinningServiceImpl extends ServiceImpl<DiscSpinningDao, DiscSp
cashOut.setRate(0.00); cashOut.setRate(0.00);
cashOut.setUserType(1); cashOut.setUserType(1);
cashOut.setCreateAt(DateUtil.now()); cashOut.setCreateAt(DateUtil.now());
cashOut.setWithdrawType(WithdrawTypeEnum.RED_ENVELOPE.getValue());
//最高提现金额 //最高提现金额
CommonInfo one2 = commonRepository.findOne(910); CommonInfo one2 = commonRepository.findOne(910);
if (one2 == null || money <= Double.parseDouble(one2.getValue())) { if (one2 == null || money <= Double.parseDouble(one2.getValue())) {
if (WuyouPay.checkCanCash(userInfo.getUserId())) { if (WuyouPay.checkCanCash(userInfo.getUserId(), WithdrawTypeEnum.RED_ENVELOPE, BigDecimal.valueOf(money))) {
cashOut.setStatus(4);
String outOrderNo = AliPayOrderUtil.createOrderId(); String outOrderNo = AliPayOrderUtil.createOrderId();
cashOut.setOrderNumber(outOrderNo); cashOut.setOrderNumber(outOrderNo);
BaseResp baseResp = WuyouPay.extractOrder(outOrderNo, cashOut.getMoney(), cashOut.getZhifubao(), cashOut.getZhifubaoName()); BaseResp baseResp = WuyouPay.extractOrder(outOrderNo, cashOut.getMoney(), cashOut.getZhifubao(), cashOut.getZhifubaoName());

View File

@@ -5,6 +5,7 @@ import com.sqx.modules.app.service.UserMoneyDetailsService;
import com.sqx.modules.app.service.UserMoneyService; import com.sqx.modules.app.service.UserMoneyService;
import com.sqx.modules.pay.dao.CashOutDao; import com.sqx.modules.pay.dao.CashOutDao;
import com.sqx.modules.pay.entity.CashOut; import com.sqx.modules.pay.entity.CashOut;
import com.sqx.modules.pay.entity.WithdrawTypeEnum;
import com.sqx.modules.pay.wuyou.BaseResp; import com.sqx.modules.pay.wuyou.BaseResp;
import com.sqx.modules.pay.wuyou.WuyouPay; import com.sqx.modules.pay.wuyou.WuyouPay;
import com.sqx.modules.utils.AliPayOrderUtil; import com.sqx.modules.utils.AliPayOrderUtil;
@@ -34,7 +35,8 @@ public class CashOutTask implements ITask {
logger.info("提现开始"); logger.info("提现开始");
List<CashOut> cashOuts = cashOutDao.selectYesterday(); List<CashOut> cashOuts = cashOutDao.selectYesterday();
for (CashOut cashOut : cashOuts) { for (CashOut cashOut : cashOuts) {
if (WuyouPay.checkCanCash(cashOut.getUserId())) { if (WuyouPay.checkCanCash(cashOut.getUserId(), WithdrawTypeEnum.RED_ENVELOPE, new BigDecimal(cashOut.getMoney()))) {
cashOut.setState(4);
String outOrderNo = AliPayOrderUtil.createOrderId(); String outOrderNo = AliPayOrderUtil.createOrderId();
cashOut.setOrderNumber(outOrderNo); cashOut.setOrderNumber(outOrderNo);

View File

@@ -8,6 +8,7 @@ import com.sqx.modules.app.service.UserMoneyService;
import com.sqx.modules.banner.entity.Activity; import com.sqx.modules.banner.entity.Activity;
import com.sqx.modules.pay.dao.CashOutDao; import com.sqx.modules.pay.dao.CashOutDao;
import com.sqx.modules.pay.entity.CashOut; import com.sqx.modules.pay.entity.CashOut;
import com.sqx.modules.pay.entity.WithdrawTypeEnum;
import com.sqx.modules.pay.wuyou.BaseResp; import com.sqx.modules.pay.wuyou.BaseResp;
import com.sqx.modules.pay.wuyou.WuyouPay; import com.sqx.modules.pay.wuyou.WuyouPay;
import com.sqx.modules.utils.AliPayOrderUtil; import com.sqx.modules.utils.AliPayOrderUtil;
@@ -46,7 +47,8 @@ public class CashOutTask2 implements ITask {
.lt("create_at", params + " 23:59:59")); .lt("create_at", params + " 23:59:59"));
System.out.println(cashOuts.size()); System.out.println(cashOuts.size());
for (CashOut cashOut : cashOuts) { for (CashOut cashOut : cashOuts) {
if (WuyouPay.checkCanCash(cashOut.getUserId())) { if (WuyouPay.checkCanCash(cashOut.getUserId(), WithdrawTypeEnum.RED_ENVELOPE, new BigDecimal(cashOut.getMoney()))) {
cashOut.setState(4);
String outOrderNo = AliPayOrderUtil.createOrderId(); String outOrderNo = AliPayOrderUtil.createOrderId();
cashOut.setOrderNumber(outOrderNo); cashOut.setOrderNumber(outOrderNo);
BaseResp baseResp = WuyouPay.extractOrder(outOrderNo, cashOut.getMoney(), cashOut.getZhifubao(), cashOut.getZhifubaoName()); BaseResp baseResp = WuyouPay.extractOrder(outOrderNo, cashOut.getMoney(), cashOut.getZhifubao(), cashOut.getZhifubaoName());

View File

@@ -125,4 +125,6 @@ public class CashOut implements Serializable {
*/ */
@TableField(exist = false) @TableField(exist = false)
private Long count; private Long count;
private Integer withdrawType;
} }

View File

@@ -0,0 +1,15 @@
package com.sqx.modules.pay.entity;
import lombok.Getter;
@Getter
public enum WithdrawTypeEnum {
RED_ENVELOPE(0),
MANUAL(1);
private final Integer value;
WithdrawTypeEnum(Integer value) {
this.value = value;
}
}

View File

@@ -28,6 +28,7 @@ import com.sqx.modules.message.dao.MessageInfoDao;
import com.sqx.modules.message.entity.MessageInfo; import com.sqx.modules.message.entity.MessageInfo;
import com.sqx.modules.pay.dao.CashOutDao; import com.sqx.modules.pay.dao.CashOutDao;
import com.sqx.modules.pay.entity.CashOut; import com.sqx.modules.pay.entity.CashOut;
import com.sqx.modules.pay.entity.WithdrawTypeEnum;
import com.sqx.modules.pay.service.CashOutService; import com.sqx.modules.pay.service.CashOutService;
import com.sqx.modules.pay.wuyou.BaseResp; import com.sqx.modules.pay.wuyou.BaseResp;
import com.sqx.modules.pay.wuyou.WuyouPay; import com.sqx.modules.pay.wuyou.WuyouPay;
@@ -462,6 +463,7 @@ public class CashOutServiceImpl extends ServiceImpl<CashOutDao, CashOut> impleme
cashOut.setRate(0.00); cashOut.setRate(0.00);
cashOut.setUserType(1); cashOut.setUserType(1);
cashOut.setCreateAt(DateUtil.now()); cashOut.setCreateAt(DateUtil.now());
cashOut.setWithdrawType(WithdrawTypeEnum.MANUAL.getValue());
String outOrderNo = AliPayOrderUtil.createOrderId(); String outOrderNo = AliPayOrderUtil.createOrderId();
cashOut.setOrderNumber(outOrderNo); cashOut.setOrderNumber(outOrderNo);
@@ -487,7 +489,8 @@ public class CashOutServiceImpl extends ServiceImpl<CashOutDao, CashOut> impleme
return Result.success("可提现余额不足!"); return Result.success("可提现余额不足!");
} }
if (WuyouPay.checkCanCash(userId)) { if (WuyouPay.checkCanCash(userId, WithdrawTypeEnum.MANUAL, new BigDecimal(money.toString()))) {
cashOut.setStatus(4);
BaseResp baseResp = WuyouPay.extractOrder(outOrderNo, cashOut.getMoney(), cashOut.getZhifubao(), cashOut.getZhifubaoName()); BaseResp baseResp = WuyouPay.extractOrder(outOrderNo, cashOut.getMoney(), cashOut.getZhifubao(), cashOut.getZhifubaoName());
if (baseResp.getStatus() != null && (baseResp.getStatus().equals(2) || baseResp.getStatus().equals(10000))){ if (baseResp.getStatus() != null && (baseResp.getStatus().equals(2) || baseResp.getStatus().equals(10000))){
userMoneyDetails.setContent("成功提现:" + money); userMoneyDetails.setContent("成功提现:" + money);

View File

@@ -8,11 +8,13 @@ import com.sqx.modules.common.dao.CommonInfoDao;
import com.sqx.modules.common.entity.CommonInfo; import com.sqx.modules.common.entity.CommonInfo;
import com.sqx.modules.common.service.CommonInfoService; import com.sqx.modules.common.service.CommonInfoService;
import com.sqx.modules.pay.dao.CashOutDao; import com.sqx.modules.pay.dao.CashOutDao;
import com.sqx.modules.pay.entity.WithdrawTypeEnum;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.math.BigDecimal;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
@@ -82,23 +84,36 @@ public class WuyouPay {
return JSONObject.parseObject(body, BaseResp.class); return JSONObject.parseObject(body, BaseResp.class);
} }
public static boolean checkCanCash(long userId) { public static boolean checkCanCash(long userId, WithdrawTypeEnum type, BigDecimal money) {
// 查询当日体现次数 if (WithdrawTypeEnum.MANUAL.equals(type)) {
Integer successCashCount = cashOutDao.selectTodayCashCount(userId, 1); // 查询当日体现次数
CommonInfo cashLimit = commonInfoService.findOne(922); Integer successCashCount = cashOutDao.selectTodayCashCount(userId, 1);
if (cashLimit == null || StrUtil.isBlank(cashLimit.getValue())) { CommonInfo cashLimit = commonInfoService.findOne(922);
logger.warn("提现必要参数未配置,请联系管理员"); if (cashLimit == null || StrUtil.isBlank(cashLimit.getValue())) {
return false; logger.warn("提现必要参数未配置,请联系管理员");
} return false;
}
if (successCashCount >= Integer.parseInt(cashLimit.getValue())) { if (successCashCount >= Integer.parseInt(cashLimit.getValue())) {
logger.warn("体现次数超限,当前限制{}次, 已经体现{}次", cashLimit.getValue(), successCashCount); logger.warn("体现次数超限,当前限制{}次, 已经体现{}次", cashLimit.getValue(), successCashCount);
return false; return false;
}
return checkCanCashByLimit(money);
} }
return true; return true;
} }
public static boolean checkCanCashByLimit(BigDecimal money) {
CommonInfo info = commonInfoService.findOne(923);
if (info == null || StrUtil.isNotBlank(info.getValue())) {
logger.warn("未配置提现限制,请联系管理员配置");
return false;
}
return money.compareTo(new BigDecimal(info.getValue())) <= 0;
}
/** /**
* 提现 * 提现
* @param account 支付宝账号 * @param account 支付宝账号
@@ -106,7 +121,6 @@ public class WuyouPay {
* @return * @return
*/ */
public static BaseResp extractOrder(String outOrderNo, String amount, String account, String userName) { public static BaseResp extractOrder(String outOrderNo, String amount, String account, String userName) {
Map<String, Object> params = getBaseParams(); Map<String, Object> params = getBaseParams();
params.put("out_trade_no", outOrderNo); params.put("out_trade_no", outOrderNo);