fanzherong_v 3 kuukautta sitten
vanhempi
commit
65f2f013f0

+ 1 - 1
snowy-admin-web/src/views/biz/member/consumption.vue

@@ -66,7 +66,7 @@
 			formData.value.userId = formData.value.id
 			formData.value.id = ''
 			formData.value.consumptionOperate = '3'
-			formData.value.phoneNumber = formData.value.account
+			formData.value.phoneNumber = formData.value.phone
 		}
 	}
 	// 关闭抽屉

+ 41 - 1
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/consumptionrecord/service/impl/ConsumptionRecordServiceImpl.java

@@ -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不能为空!");
         }