送礼-钱包-扣钻-合并逻辑代码

This commit is contained in:
khalil
2025-01-11 02:17:38 +08:00
parent 3a4a98d78d
commit 5e27b81a35
2 changed files with 5 additions and 54 deletions

View File

@@ -70,7 +70,7 @@ public class SuperLuckyIncomeAllotService {
public void send(long senderUid, Long receiverUid, Long roomUid, BigDecimal income, BillObjTypeEnum billObjTypeEnum,
int giftId, int everyGiftNum, long giftTotalGoldNum, Date sendGiftTime) {
userPurseService.addGoldWithTx(receiverUid, income.doubleValue(), billObjTypeEnum,
userPurseService.addGoldWithoutTx(receiverUid, income.doubleValue(), billObjTypeEnum,
(userPurse)-> billRecordService.insertGiftSendBillRecord(receiverUid, senderUid, roomUid, null, billObjTypeEnum, income.doubleValue(),
giftId, everyGiftNum, giftTotalGoldNum, sendGiftTime, userPurse));

View File

@@ -147,37 +147,10 @@ public class UserPurseService extends ServiceImpl<UserPurseMapper,UserPurse> {
return SpringContextHolder.getBean(UserPurseService.class).subDiamond(uid, diamondNum, objTypeEnum, BusiStatus.PURSEMONEYNOTENOUGH, billConsumer);
}
//@Frozen
@Frozen
//@Transactional(rollbackFor = Exception.class, transactionManager = "mybatisplusTransactionManager")
public UserPurse subDiamondWithoutTx(Long uid, Double diamondNum, BillObjTypeEnum objTypeEnum, BusiStatus busiStatus, Consumer<UserPurse> billConsumer) {
if (diamondNum <= 0d) {
throw new ServiceException(BusiStatus.AMOUNT_PARAM_ERROR);
}
String desc = objTypeEnum.getDesc();
UserPurse after = withLock(uid, RedisKey.lock_user_diamond, userPurse-> {
double restDiamond = DoubleUtil.sub(userPurse.getDiamonds(), diamondNum);
if (restDiamond < 0d){
throw new ServiceException(busiStatus);
}
log.info("subDiamond 操作前,buss:{},userPurse:{}", desc, gson.toJson(userPurse));
int ret = baseMapper.updateMinusDiamonds(uid,diamondNum);
boolean result = SqlHelper.retBool(ret);
if(!result) {
throw new ServiceException(BusiStatus.SERVERBUSY);
}
userPurse.setDiamonds(DoubleUtil.sub(userPurse.getDiamonds(), diamondNum));
log.info("subDiamond 操作后,buss:{},userPurse:{}", desc, gson.toJson(userPurse));
return userPurse;
});
if (null != billConsumer) {
billConsumer.accept(after);
} else {
billRecordService.insertGeneralBillRecord(uid, objTypeEnum, diamondNum, after);
}
return after;
return subDiamond(uid, diamondNum, objTypeEnum, busiStatus, billConsumer);
}
@Frozen
@@ -295,30 +268,8 @@ public class UserPurseService extends ServiceImpl<UserPurseMapper,UserPurse> {
}
//@Transactional(rollbackFor = Exception.class, transactionManager = "mybatisplusTransactionManager")
public UserPurse addGoldWithTx(Long uid, Double goldNum, BillObjTypeEnum objTypeEnum, Consumer<UserPurse> billConsumer) {
if (goldNum <= 0d) {
throw new ServiceException(BusiStatus.AMOUNT_PARAM_ERROR);
}
String desc = objTypeEnum.getDesc();
UserPurse after = withLock(uid, RedisKey.lock_user_gold, userPurse -> {
log.info("addGold 操作前,buss:{},userPurse:{}", desc, gson.toJson(userPurse));
int ret = baseMapper.updateAddGolds(uid,goldNum);
boolean result = SqlHelper.retBool(ret);
if(!result) {
throw new ServiceException(BusiStatus.SERVERBUSY);
}
userPurse.setGolds(DoubleUtil.add(goldNum, userPurse.getGolds()));
log.info("addGold 操作后,buss:{},userPurse:{}", desc, gson.toJson(userPurse));
return userPurse;
});
if (null != billConsumer) {
billConsumer.accept(after);
} else {
billRecordService.insertGeneralBillRecord(uid, objTypeEnum, goldNum, after);
}
return after;
public UserPurse addGoldWithoutTx(Long uid, Double goldNum, BillObjTypeEnum objTypeEnum, Consumer<UserPurse> billConsumer) {
return addGold(uid, goldNum, objTypeEnum, billConsumer);
}
//@Transactional(rollbackFor = Exception.class, transactionManager = "mybatisplusTransactionManager")