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 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(); } 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 = "创建订单") 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"); } 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; 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(); } 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 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,