xiaoyong931011
2023-03-13 9dfb2a22680a768400fdef99a16acffca87ace8c
贡献点设置
8 files modified
132 ■■■■ changed files
src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java 4 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/controller/AdminSystemController.java 4 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/controller/ApiMallOrderController.java 3 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/controller/ViewSystemController.java 7 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/dto/HlmScoreSetDto.java 4 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/IApiMallOrderInfoService.java 2 ●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java 82 ●●●● patch | view | raw | blame | history
src/main/resources/templates/febs/views/modules/system/hlmScoreSet.html 26 ●●●● patch | view | raw | blame | history
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,