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/dto/HlmScoreSetDto.java | 4 + src/main/java/cc/mrbird/febs/mall/controller/AdminSystemController.java | 4 + src/main/java/cc/mrbird/febs/mall/controller/ApiMallOrderController.java | 3 src/main/resources/templates/febs/views/modules/system/hlmScoreSet.html | 26 ++++---- src/main/java/cc/mrbird/febs/mall/service/IApiMallOrderInfoService.java | 2 src/main/java/cc/mrbird/febs/mall/controller/ViewSystemController.java | 7 ++ src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java | 4 + src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java | 82 +++++++++++++++++++++------ 8 files changed, 98 insertions(+), 34 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java b/src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java index 2ceea29..f0cafc8 100644 --- a/src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java +++ b/src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java @@ -6,6 +6,10 @@ @Getter public enum DataDictionaryEnum { /** + * 贡献点设置-购买商品获得 + */ + STAR_GET("PERK_SET","STAR_GET"), + /** * 商城每天新增业绩×本级别占比÷级别的总贡献值×个人贡献值数量=个人每天补贴 * 举例:假如您购买了礼包六1万元的产品(20个贡献值),身份是三星合伙人,同级别总共有50个贡献值,今天全网新增业绩50万, * 当天补贴:500000×6%=30000÷50=600×20=12000 diff --git a/src/main/java/cc/mrbird/febs/mall/controller/AdminSystemController.java b/src/main/java/cc/mrbird/febs/mall/controller/AdminSystemController.java index a8e9d18..92a3cb7 100644 --- a/src/main/java/cc/mrbird/febs/mall/controller/AdminSystemController.java +++ b/src/main/java/cc/mrbird/febs/mall/controller/AdminSystemController.java @@ -71,6 +71,10 @@ DataDictionaryEnum.SCORE_CHANGE.getType(), DataDictionaryEnum.SCORE_CHANGE.getCode(), hlmScoreSetDto.getScoreChange()); + commonService.updateDataDic( + DataDictionaryEnum.STAR_GET.getType(), + DataDictionaryEnum.STAR_GET.getCode(), + hlmScoreSetDto.getStarGet()); return new FebsResponse().success(); } diff --git a/src/main/java/cc/mrbird/febs/mall/controller/ApiMallOrderController.java b/src/main/java/cc/mrbird/febs/mall/controller/ApiMallOrderController.java index f3145df..69dda1d 100644 --- a/src/main/java/cc/mrbird/febs/mall/controller/ApiMallOrderController.java +++ b/src/main/java/cc/mrbird/febs/mall/controller/ApiMallOrderController.java @@ -46,9 +46,8 @@ @ApiOperation(value = "判断是否允许创建订单", notes = "判断是否允许创建订单") @PostMapping(value = "/judgeCreateOrder") public FebsResponse judgeCreateOrder(@RequestBody AddOrderDto addOrderDto) { - boolean result = mallOrderInfoService.judgeCreateOrder(addOrderDto); - return new FebsResponse().success().data(result); + return mallOrderInfoService.judgeCreateOrder(addOrderDto); } @ApiOperation(value = "创建订单", notes = "创建订单") diff --git a/src/main/java/cc/mrbird/febs/mall/controller/ViewSystemController.java b/src/main/java/cc/mrbird/febs/mall/controller/ViewSystemController.java index 35ad3da..30abf20 100644 --- a/src/main/java/cc/mrbird/febs/mall/controller/ViewSystemController.java +++ b/src/main/java/cc/mrbird/febs/mall/controller/ViewSystemController.java @@ -90,6 +90,13 @@ String scoreChange = ObjectUtil.isEmpty(scoreChangeDic.getValue()) ? "0" : scoreChangeDic.getValue(); hlmScoreSetDto.setScoreChange(scoreChange); } + DataDictionaryCustom starGetDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( + DataDictionaryEnum.STAR_GET.getType(), + DataDictionaryEnum.STAR_GET.getCode()); + if (starGetDic != null) { + String starGet = ObjectUtil.isEmpty(starGetDic.getValue()) ? "0" : starGetDic.getValue(); + hlmScoreSetDto.setStarGet(starGet); + } model.addAttribute("hlmScoreSet", hlmScoreSetDto); return FebsUtil.view("modules/system/hlmScoreSet"); } diff --git a/src/main/java/cc/mrbird/febs/mall/dto/HlmScoreSetDto.java b/src/main/java/cc/mrbird/febs/mall/dto/HlmScoreSetDto.java index 1845ae3..7b75920 100644 --- a/src/main/java/cc/mrbird/febs/mall/dto/HlmScoreSetDto.java +++ b/src/main/java/cc/mrbird/febs/mall/dto/HlmScoreSetDto.java @@ -10,6 +10,10 @@ @ApiModel(value = "HlmScoreSetDto", description = "积分设置") public class HlmScoreSetDto { /** + * 贡献点设置-购买商品获得 + */ + private String starGet; + /** * 签到设置-签到积分 */ private String signScore; diff --git a/src/main/java/cc/mrbird/febs/mall/service/IApiMallOrderInfoService.java b/src/main/java/cc/mrbird/febs/mall/service/IApiMallOrderInfoService.java index a4e5b90..00d995d 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/IApiMallOrderInfoService.java +++ b/src/main/java/cc/mrbird/febs/mall/service/IApiMallOrderInfoService.java @@ -37,7 +37,7 @@ FebsResponse bangCardSign(BangCardSignDto bangCardSignDto); - boolean judgeCreateOrder(AddOrderDto addOrderDto); + FebsResponse judgeCreateOrder(AddOrderDto addOrderDto); ApiScoreSetVo myScoreSet(); } 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 diff --git a/src/main/resources/templates/febs/views/modules/system/hlmScoreSet.html b/src/main/resources/templates/febs/views/modules/system/hlmScoreSet.html index b1c44b2..38e532f 100644 --- a/src/main/resources/templates/febs/views/modules/system/hlmScoreSet.html +++ b/src/main/resources/templates/febs/views/modules/system/hlmScoreSet.html @@ -3,7 +3,6 @@ <form class="layui-form" action="" lay-filter="hlm-score-set-form"> <div class="layui-card"> <div class="layui-card-body"> - <blockquote class="layui-elem-quote blue-border">签到</blockquote> <div class="layui-form-item"> <div class="layui-inline"> @@ -25,14 +24,6 @@ </div> </div> -<!-- <blockquote class="layui-elem-quote blue-border">签到</blockquote>--> -<!-- <div class="layui-form-item">--> -<!-- <label class="layui-form-label febs-form-item-require">签到积分:</label>--> -<!-- <div class="layui-input-block">--> -<!-- <input type="text" name="signScore" lay-verify="required|integer" placeholder="请输入数字" autocomplete="off" class="layui-input" >--> -<!-- <div class="layui-word-aux">每次签到赠送积分数量,填写整数,如【35】</div>--> -<!-- </div>--> -<!-- </div>--> <blockquote class="layui-elem-quote blue-border">积分与现金</blockquote> <div class="layui-form-item"> <label class="layui-form-label febs-form-item-require">抵扣现金(%):</label> @@ -47,12 +38,20 @@ <input type="text" name="scoreChange" lay-verify="required" placeholder="请输入数字" autocomplete="off" class="layui-input" > <div class="layui-word-aux">设置1,则1积分等于1元,设置2,则2积分等于1元,填写整数,如【1】</div> </div> - </div> - </div> - <div class="layui-card-footer"> - <button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="hlm-score-set-submit" id="submit">保存</button> + <blockquote class="layui-elem-quote blue-border">贡献点</blockquote> + <div class="layui-form-item"> + <label class="layui-form-label febs-form-item-require">个人最大值:</label> + <div class="layui-input-block"> + <input type="text" name="starGet" lay-verify="required" placeholder="请输入数字" autocomplete="off" class="layui-input" > + <div class="layui-word-aux">设置50,则购买商品,则赠送贡献点,超过50,则不再增加,设置为0,则没有限制,填写整数,如【50】</div> + </div> + </div> + <div class="layui-card-footer"> + <button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="hlm-score-set-submit" id="submit">保存</button> + </div> + </div> </div> </div> </form> @@ -92,6 +91,7 @@ function initHlmScoreSetValue() { form.val("hlm-score-set-form", { + "starGet": hlmScoreSet.starGet, "signScore": hlmScoreSet.signScore, "signScoreDays": hlmScoreSet.signScoreDays, "signScoreCnt": hlmScoreSet.signScoreCnt, -- Gitblit v1.9.1