From 9dfb2a22680a768400fdef99a16acffca87ace8c Mon Sep 17 00:00:00 2001 From: xiaoyong931011 <15274802129@163.com> Date: Mon, 13 Mar 2023 16:10:00 +0800 Subject: [PATCH] 贡献点设置 --- src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java | 82 ++++++++++++++++++++++++++++++++--------- 1 files changed, 64 insertions(+), 18 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java index 7004685..7b2941a 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java @@ -465,13 +465,40 @@ * 增加贡献值,增加流水 */ if (starSum.compareTo(BigDecimal.ZERO) > 0) { - mallMemberWalletMapper.addStarByMemberId(starSum.intValue(), memberId); - mallMoneyFlowService.addMoneyFlow( - memberId, - starSum, - MoneyFlowTypeEnum.STAR.getValue(), - orderInfo.getOrderNo(), - FlowTypeEnum.STAR.getValue()); + //系统设置的个人贡献点最大值 + DataDictionaryCustom starGetDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( + DataDictionaryEnum.STAR_GET.getType(), + DataDictionaryEnum.STAR_GET.getCode()); + if(ObjectUtil.isNotEmpty(starGetDic)){ + String starGetStr = StrUtil.isEmpty(starGetDic.getValue()) ? "0" : starGetDic.getValue(); + BigDecimal starGet = new BigDecimal(starGetStr); + + MallMemberWallet mallMemberWallet = mallMemberWalletMapper.selectWalletByMemberId(memberId); + BigDecimal star = new BigDecimal(mallMemberWallet.getStar()); + if(starGet.compareTo(star.add(starSum)) < 0){ + if(starGet.compareTo(star) > 0){ + BigDecimal subtract = starGet.subtract(star); + if(subtract.compareTo(starSum) < 0){ + starSum = subtract; + } + mallMemberWalletMapper.addStarByMemberId(starSum.intValue(), memberId); + mallMoneyFlowService.addMoneyFlow( + memberId, + starSum, + MoneyFlowTypeEnum.STAR.getValue(), + orderInfo.getOrderNo(), + FlowTypeEnum.STAR.getValue()); + } + }else{ + mallMemberWalletMapper.addStarByMemberId(starSum.intValue(), memberId); + mallMoneyFlowService.addMoneyFlow( + memberId, + starSum, + MoneyFlowTypeEnum.STAR.getValue(), + orderInfo.getOrderNo(), + FlowTypeEnum.STAR.getValue()); + } + } } /** * 增加补贴额度 @@ -806,18 +833,41 @@ } @Override - public boolean judgeCreateOrder(AddOrderDto addOrderDto) { - boolean flag = false; - + public FebsResponse judgeCreateOrder(AddOrderDto addOrderDto) { + Long memberId = LoginUserUtil.getLoginUser().getId(); if (CollUtil.isEmpty(addOrderDto.getItems())) { - return false; + throw new FebsException("请选择购买商品"); } + boolean hasTc = false; BigDecimal total = BigDecimal.ZERO; for (AddOrderItemDto item : addOrderDto.getItems()) { MallGoodsSku sku = mallGoodsSkuMapper.selectSkuInfoById(item.getSkuId()); + MallGoods mallGoods = mallGoodsMapper.selectById(sku.getGoodsId()); + /** + * 贡献点判断 + */ + if (mallGoods.getIsNormal() == 2) { + hasTc = true; + } BigDecimal amount = sku.getPresentPrice().multiply(BigDecimal.valueOf(item.getCnt())); total = total.add(amount); + } + if(hasTc){ + //系统设置的个人贡献点最大值 + DataDictionaryCustom starGetDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( + DataDictionaryEnum.STAR_GET.getType(), + DataDictionaryEnum.STAR_GET.getCode()); + if(ObjectUtil.isNotEmpty(starGetDic)){ + String starGetStr = StrUtil.isEmpty(starGetDic.getValue()) ? "0" : starGetDic.getValue(); + BigDecimal starGet = new BigDecimal(starGetStr); + + MallMemberWallet mallMemberWallet = mallMemberWalletMapper.selectWalletByMemberId(memberId); + BigDecimal star = new BigDecimal(mallMemberWallet.getStar()); + if(starGet.compareTo(star) <= 0){ + throw new FebsException("无法购买套餐"); + } + } } /** * 使用积分折扣现金 @@ -840,16 +890,12 @@ if(ObjectUtil.isNotEmpty(scoreChangeDic)){ scoreChange = new BigDecimal(scoreChangeDic.getValue()).abs().setScale(2,BigDecimal.ROUND_DOWN); } - scorePercentMaxAmount = scorePercentMaxAmount.multiply(scoreChange); + scorePercentMaxAmount = scorePercentMaxAmount.multiply(scoreChange).setScale(2,BigDecimal.ROUND_DOWN); if(scorePercentMaxAmount.compareTo(score) < 0){ - flag = false; - }else{ - flag = true; + throw new FebsException("最多可使用"+scorePercentMaxAmount+"积分"); } - }else{ - flag = true; } - return flag; + return new FebsResponse().success(); } @Override -- Gitblit v1.9.1