|
@@ -27,6 +27,8 @@ import org.springframework.transaction.annotation.Transactional;
|
|
|
import vip.xiaonuo.auth.core.util.StpLoginUserUtil;
|
|
|
import vip.xiaonuo.biz.modular.user.entity.BizUser;
|
|
|
import vip.xiaonuo.biz.modular.user.service.BizUserService;
|
|
|
+import vip.xiaonuo.biz.modular.userfundchangerecord.entity.BizUserFundChangeRecord;
|
|
|
+import vip.xiaonuo.biz.modular.userfundchangerecord.service.BizUserFundChangeRecordService;
|
|
|
import vip.xiaonuo.common.cache.CommonCacheOperator;
|
|
|
import vip.xiaonuo.common.enums.CommonSortOrderEnum;
|
|
|
import vip.xiaonuo.common.exception.CommonException;
|
|
@@ -58,6 +60,9 @@ public class ConsumptionRecordServiceImpl extends ServiceImpl<ConsumptionRecordM
|
|
|
@Resource
|
|
|
private CommonCacheOperator commonCacheOperator;
|
|
|
|
|
|
+ @Resource
|
|
|
+ private BizUserFundChangeRecordService bizUserFundChangeRecordService;
|
|
|
+
|
|
|
@Override
|
|
|
public Page<ConsumptionRecord> page(ConsumptionRecordPageParam consumptionRecordPageParam) {
|
|
|
QueryWrapper<ConsumptionRecord> queryWrapper = new QueryWrapper<ConsumptionRecord>().checkSqlInjection();
|
|
@@ -81,9 +86,10 @@ public class ConsumptionRecordServiceImpl extends ServiceImpl<ConsumptionRecordM
|
|
|
} else {
|
|
|
queryWrapper.in("cr.user_id", StpLoginUserUtil.getLoginUser().getId());
|
|
|
}
|
|
|
+ queryWrapper.orderByDesc("cr.create_time");
|
|
|
Page<ConsumptionRecord> pageList = this.getBaseMapper().getPageList(CommonPageRequest.defaultPage(), queryWrapper);
|
|
|
for(ConsumptionRecord consumptionRecord : pageList.getRecords()){
|
|
|
- if(StringUtils.equals(consumptionRecord.getConsumptionOperate(),"3")){
|
|
|
+ if(StringUtils.equals(consumptionRecord.getConsumptionOperate(),"3") || StringUtils.equals(consumptionRecord.getConsumptionOperate(),"4")){
|
|
|
//消费结算,设置下说明
|
|
|
if(StringUtils.equals(consumptionRecord.getConsumptionType(),"1")){
|
|
|
consumptionRecord.setConsumptionRemark("代金券消费"+consumptionRecord.getVoucherMoney().stripTrailingZeros().toPlainString()+"元");
|
|
@@ -107,9 +113,15 @@ public class ConsumptionRecordServiceImpl extends ServiceImpl<ConsumptionRecordM
|
|
|
ConsumptionRecord consumptionRecord = BeanUtil.toBean(consumptionRecordAddParam, ConsumptionRecord.class);
|
|
|
//获取用户信息
|
|
|
BizUser bizUser = bizUserService.getById(consumptionRecordAddParam.getUserId());
|
|
|
+ //记录账户变动信息
|
|
|
+ BizUserFundChangeRecord bizUserFundChangeRecord = new BizUserFundChangeRecord();
|
|
|
+ bizUserFundChangeRecord.setOldAccountBalance(bizUser.getAccountBalance());
|
|
|
+ bizUserFundChangeRecord.setOldVoucherBalance(bizUser.getVoucherBalance());
|
|
|
+ //消费记录信息
|
|
|
consumptionRecord.setVoucherBalance(bizUser.getVoucherBalance());
|
|
|
consumptionRecord.setAccountBalance(bizUser.getAccountBalance());
|
|
|
if(StringUtils.equals(consumptionRecordAddParam.getConsumptionOperate(),"1")){
|
|
|
+ bizUserFundChangeRecord.setChangeType("4");
|
|
|
//会员赠送
|
|
|
if(StringUtils.equals(consumptionRecordAddParam.getConsumptionType(),"1")){
|
|
|
//判断当前选择的是代金券还是余额 1:代金券 2:余额
|
|
@@ -122,17 +134,31 @@ public class ConsumptionRecordServiceImpl extends ServiceImpl<ConsumptionRecordM
|
|
|
consumptionRecord.setAccountMoney(consumptionRecordAddParam.getConsumptionMoney());
|
|
|
}
|
|
|
}else if(StringUtils.equals(consumptionRecordAddParam.getConsumptionOperate(),"2")){
|
|
|
+ bizUserFundChangeRecord.setChangeType("5");
|
|
|
+ if(bizUser.getVoucherBalance().compareTo(BigDecimal.ZERO) == 0){
|
|
|
+ throw new CommonException("会员当前代金券余额为0,不可扣减!");
|
|
|
+ }
|
|
|
+ if(bizUser.getAccountBalance().compareTo(BigDecimal.ZERO) == 0){
|
|
|
+ throw new CommonException("会员当前账户余额为0,不可扣减!");
|
|
|
+ }
|
|
|
//会员扣减
|
|
|
if(StringUtils.equals(consumptionRecordAddParam.getConsumptionType(),"1")){
|
|
|
//选择代金券,用户原有代金券金额-本次扣减金额
|
|
|
+ if(consumptionRecord.getConsumptionMoney().compareTo(bizUser.getVoucherBalance()) > 0){
|
|
|
+ throw new CommonException("会员当前代金券余额不足,不可扣减!");
|
|
|
+ }
|
|
|
bizUser.setVoucherBalance(bizUser.getVoucherBalance().subtract(consumptionRecordAddParam.getConsumptionMoney()));
|
|
|
consumptionRecord.setVoucherMoney(consumptionRecordAddParam.getConsumptionMoney());
|
|
|
}else if(StringUtils.equals(consumptionRecordAddParam.getConsumptionType(),"2")){
|
|
|
//选择账户余额,用户原有余额-本次扣减余额
|
|
|
+ if(consumptionRecord.getConsumptionMoney().compareTo(bizUser.getAccountBalance()) > 0){
|
|
|
+ throw new CommonException("会员当前账户余额不足,不可扣减!");
|
|
|
+ }
|
|
|
bizUser.setAccountBalance(bizUser.getAccountBalance().subtract(consumptionRecordAddParam.getConsumptionMoney()));
|
|
|
consumptionRecord.setAccountMoney(consumptionRecordAddParam.getConsumptionMoney());
|
|
|
}
|
|
|
}else{
|
|
|
+ bizUserFundChangeRecord.setChangeType("2");
|
|
|
//正常消费结算
|
|
|
//人工结算需要短信校验,获取手机验证码
|
|
|
if(StringUtils.equals(consumptionRecordAddParam.getConsumptionOperate(),"3")){
|
|
@@ -177,6 +203,11 @@ public class ConsumptionRecordServiceImpl extends ServiceImpl<ConsumptionRecordM
|
|
|
this.save(consumptionRecord);
|
|
|
//修改账户余额
|
|
|
bizUserService.updateById(bizUser);
|
|
|
+ //账户变动信息
|
|
|
+ bizUserFundChangeRecord.setNewAccountBalance(bizUser.getAccountBalance());
|
|
|
+ bizUserFundChangeRecord.setNewVoucherBalance(bizUser.getVoucherBalance());
|
|
|
+ bizUserFundChangeRecord.setUserId(bizUser.getId());
|
|
|
+ bizUserFundChangeRecordService.save(bizUserFundChangeRecord);
|
|
|
}
|
|
|
|
|
|
//会员赠送/扣减
|
|
@@ -200,6 +231,15 @@ public class ConsumptionRecordServiceImpl extends ServiceImpl<ConsumptionRecordM
|
|
|
throw new CommonException("消费方式consumptionType不能为空!");
|
|
|
}
|
|
|
}
|
|
|
+ if(StringUtils.equals(consumptionRecordAddParam.getConsumptionOperate(),"3")){
|
|
|
+ //人工结算,手机号,短信验证码校验
|
|
|
+ if(ObjectUtil.isEmpty(consumptionRecordAddParam.getPhoneNumber())){
|
|
|
+ throw new CommonException("手机号phoneNumber不能为空!");
|
|
|
+ }
|
|
|
+ if(ObjectUtil.isEmpty(consumptionRecordAddParam.getPhoneCode())){
|
|
|
+ throw new CommonException("短信验证码phoneCode不能为空!");
|
|
|
+ }
|
|
|
+ }
|
|
|
if(ObjectUtil.isEmpty(consumptionRecordAddParam.getUserId())){
|
|
|
throw new CommonException("用户userId不能为空!");
|
|
|
}
|