首绑支付宝发放现金红包奖励

This commit is contained in:
谭凯凯
2024-12-20 14:02:50 +08:00
committed by Tankaikai
parent 8123d0223e
commit 0584ef6566
5 changed files with 270 additions and 189 deletions

View File

@@ -16,6 +16,11 @@ public interface DiscSpinningService extends IService<DiscSpinning> {
//提现
void withdraw(UserEntity userInfo, Double money);
//提现
void withdraw(UserEntity userInfo, Double money, String title);
//提现
void withdrawAsync(UserEntity userInfo, Double money, String title);
}

View File

@@ -17,10 +17,8 @@ import com.sqx.modules.discSpinning.dao.DiscSpinningDao;
import com.sqx.modules.discSpinning.entity.DiscSpinning;
import com.sqx.modules.discSpinning.entity.DiscSpinningAmount;
import com.sqx.modules.discSpinning.entity.DiscSpinningRecord;
import com.sqx.modules.discSpinning.service.DiscSpinningAmountService;
import com.sqx.modules.discSpinning.service.DiscSpinningRecordService;
import com.sqx.modules.discSpinning.service.DiscSpinningService;
import com.sqx.modules.orders.service.OrdersService;
import com.sqx.modules.pay.entity.CashOut;
import com.sqx.modules.pay.service.CashOutService;
import com.sqx.modules.pay.wuyou.BaseResp;
@@ -30,7 +28,10 @@ import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.TransactionStatus;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.support.DefaultTransactionDefinition;
import java.math.BigDecimal;
import java.math.RoundingMode;
@@ -48,6 +49,9 @@ public class DiscSpinningServiceImpl extends ServiceImpl<DiscSpinningDao, DiscSp
private final CashOutService cashOutService;
private final RedisUtils redisUtils;
@Autowired
private PlatformTransactionManager transactionManager;
@Autowired
public DiscSpinningServiceImpl(CommonInfoService commonRepository,
@@ -94,6 +98,12 @@ public class DiscSpinningServiceImpl extends ServiceImpl<DiscSpinningDao, DiscSp
@Override
@Transactional
public void withdraw(UserEntity userInfo, Double money) {
withdraw(userInfo, money, "[现金大转盘]");
}
@Override
@Transactional
public void withdraw(UserEntity userInfo, Double money, String title) {
CashOut cashOut = new CashOut();
cashOut.setIsOut(false);
cashOut.setMoney(money.toString());
@@ -113,7 +123,7 @@ public class DiscSpinningServiceImpl extends ServiceImpl<DiscSpinningDao, DiscSp
BaseResp baseResp = WuyouPay.extractOrder(outOrderNo, cashOut.getMoney(), cashOut.getZhifubao(), cashOut.getZhifubaoName());
if (baseResp.getStatus() != null && (baseResp.getStatus().equals(2) || baseResp.getStatus().equals(10000))) {
UserMoneyDetails userMoneyDetails = new UserMoneyDetails(
userInfo.getUserId(), null, null, "[现金大转盘]", 4, 2, 1,
userInfo.getUserId(), null, null, title, 4, 2, 1,
new BigDecimal(money), "现金红包自动提现" + money + "", 1);
userMoneyDetailsService.save(userMoneyDetails);
//减去余额 钱
@@ -127,13 +137,13 @@ public class DiscSpinningServiceImpl extends ServiceImpl<DiscSpinningDao, DiscSp
} else {
cashOut.setRefund(baseResp.getErrorMsg());
}
}else if (StringUtils.isNotBlank(baseResp.getMsg())) {
} else if (StringUtils.isNotBlank(baseResp.getMsg())) {
cashOut.setState(2);
cashOut.setRefund("提现失败,请检查支付宝账号与收款人姓名后,重试。");
}
} else {
UserMoneyDetails userMoneyDetails = new UserMoneyDetails(
userInfo.getUserId(), null, null, "[现金大转盘]", 4, 2, 1,
userInfo.getUserId(), null, null, title, 4, 2, 1,
new BigDecimal(money), "现金红包自动提现" + money + "", 1);
userMoneyDetailsService.save(userMoneyDetails);
//减去余额 钱
@@ -143,6 +153,18 @@ public class DiscSpinningServiceImpl extends ServiceImpl<DiscSpinningDao, DiscSp
log.info("领取奖励执行完毕");
}
@Override
public void withdrawAsync(UserEntity userInfo, Double money, String title) {
TransactionStatus transactionStatus = transactionManager.getTransaction(new DefaultTransactionDefinition());
try {
withdraw(userInfo, money, title);
transactionManager.commit(transactionStatus);
}catch (Exception e){
transactionManager.rollback(transactionStatus);
throw e;
}
}
@Override
@Transactional
public DiscSpinningRecord draws(int drawCount, double orderAmount, Long orderId, Long userId, String source) {