送礼-钱包-扣钻-合并逻辑代码
This commit is contained in:
@@ -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));
|
||||
|
||||
|
@@ -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")
|
||||
|
Reference in New Issue
Block a user