xiaoyong931011
2023-04-17 16b9e8b2690e8cc2b7f2262d1fa2ec65ee5dc590
只针对一星会员做修改:
按购买业绩(不按权益积分)每天静态释0.6%~1.2%
10 files modified
1 files added
180 ■■■■■ changed files
src/main/java/cc/mrbird/febs/common/enumerates/GreenScoreEnum.java 4 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/controller/AdminSystemController.java 20 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/controller/ViewSystemController.java 20 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/dto/HlmVoucherButtonDto.java 2 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/mapper/MallAchieveRecordMapper.java 2 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/mapper/MallMemberMapper.java 2 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/IAgentService.java 6 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java 45 ●●●●● patch | view | raw | blame | history
src/main/resources/mapper/modules/MallAchieveRecordMapper.xml 6 ●●●●● patch | view | raw | blame | history
src/main/resources/mapper/modules/MallMemberMapper.xml 5 ●●●●● patch | view | raw | blame | history
src/main/resources/templates/febs/views/modules/system/hlmAchieveSet.html 68 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/common/enumerates/GreenScoreEnum.java
@@ -8,6 +8,10 @@
@Getter
public enum GreenScoreEnum {
    /**
     * 一星每日业绩每日释放业绩到余额的千分比
     */
    JOB_ACHIEVE_RELEASE_PERCENT("GREEN_SCORE", "JOB_ACHIEVE_RELEASE_PERCENT"),
    /**
     * 每日业绩固定释放凭证数量
     */
    ACHIEVE_RELEASE("GREEN_SCORE", "ACHIEVE_RELEASE"),
src/main/java/cc/mrbird/febs/mall/controller/AdminSystemController.java
@@ -6,10 +6,12 @@
import cc.mrbird.febs.mall.dto.*;
import cc.mrbird.febs.mall.entity.DataDictionaryCustom;
import cc.mrbird.febs.mall.mapper.DataDictionaryCustomMapper;
import cc.mrbird.febs.mall.service.IAgentService;
import cc.mrbird.febs.mall.service.ICommonService;
import cc.mrbird.febs.mall.service.IMemberProfitService;
import cc.mrbird.febs.mall.service.ISystemService;
import cc.mrbird.febs.rabbit.producter.AgentProducer;
import cn.hutool.core.util.ObjectUtil;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
@@ -40,6 +42,9 @@
    private final AgentProducer agentProducer;
    private final DataDictionaryCustomMapper dataDictionaryCustomMapper;
    @Autowired
    private IAgentService agentService;
    @PostMapping(value = "/bonusSystemSetting")
    public FebsResponse bonusSystemSetting(@RequestBody Map<String, Object> map) {
@@ -200,4 +205,19 @@
        agentProducer.sendForceVoucherSaleMsg(scorePriceDic.getValue());
        return new FebsResponse().success();
    }
    @PostMapping(value = "/hlmAchieveSet")
    public FebsResponse hlmAchieveSet(HlmVoucherButtonDto hlmVoucherButtonDto) {
        BigDecimal jobAchieveReleasePercent = new BigDecimal(hlmVoucherButtonDto.getJobAchieveReleasePercent());
        if(jobAchieveReleasePercent.compareTo(BigDecimal.ZERO) <= 0){
            return new FebsResponse().fail().message("请输入合理的数字");
        }
        commonService.updateDataDic(
                GreenScoreEnum.JOB_ACHIEVE_RELEASE_PERCENT.getType(),
                GreenScoreEnum.JOB_ACHIEVE_RELEASE_PERCENT.getCode(),
                hlmVoucherButtonDto.getJobAchieveReleasePercent());
        agentService.achieveReleasePercent();
        return new FebsResponse().success();
    }
}
src/main/java/cc/mrbird/febs/mall/controller/ViewSystemController.java
@@ -342,4 +342,24 @@
        model.addAttribute("hlmVoucherButtonDto", hlmVoucherButtonDto);
        return FebsUtil.view("modules/system/hlmVoucherButton");
    }
    /**
     * 一键释放业绩
     * @param model
     * @return
     */
    @GetMapping("hlmAchieveSetButton")
    @RequiresPermissions("hlmAchieveSetButton:view")
    public String hlmAchieveSetButton(Model model) {
        HlmVoucherButtonDto hlmVoucherButtonDto = new HlmVoucherButtonDto();
        DataDictionaryCustom jobAchieveReleasePercentDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
                GreenScoreEnum.JOB_ACHIEVE_RELEASE_PERCENT.getType(),
                GreenScoreEnum.JOB_ACHIEVE_RELEASE_PERCENT.getCode());
        if (jobAchieveReleasePercentDic != null) {
            String jobAchieveReleasePercent = ObjectUtil.isEmpty(jobAchieveReleasePercentDic.getValue()) ? "0" : jobAchieveReleasePercentDic.getValue();
            hlmVoucherButtonDto.setJobAchieveReleasePercent(jobAchieveReleasePercent);
        }
        model.addAttribute("hlmAchieveSet", hlmVoucherButtonDto);
        return FebsUtil.view("modules/system/hlmAchieveSet");
    }
}
src/main/java/cc/mrbird/febs/mall/dto/HlmVoucherButtonDto.java
@@ -19,4 +19,6 @@
     * 余额提现需要绿色凭证比例
     */
    private String voucherPercent;
    private String jobAchieveReleasePercent;
}
src/main/java/cc/mrbird/febs/mall/mapper/MallAchieveRecordMapper.java
@@ -20,4 +20,6 @@
    BigDecimal selectSumAchieveByMemberIds(@Param("list")List<Long> mallMembersOffLinePerkIds, @Param("date") Date date);
    List<MallAchieveRecord> selectListByDate(@Param("date")Date profitDate);
    BigDecimal selectSumAchieveByMemberId(@Param("memberId")Long id);
}
src/main/java/cc/mrbird/febs/mall/mapper/MallMemberMapper.java
@@ -101,4 +101,6 @@
     * @return
     */
    List<MallMember> selectByRole(@Param("type") int type, @Param("state")int state);
    List<MallMember> selectByLevel( @Param("level")String type);
}
src/main/java/cc/mrbird/febs/mall/service/IAgentService.java
@@ -31,4 +31,10 @@
     * @param totalScore 补贴额度
     */
    void reduceStar(Long memberId,BigDecimal totalScore);
    /**
     * 只针对一星会员做修改:
     * 按购买业绩(不按权益积分)每天静态释0.6%~1.2%
     */
    void achieveReleasePercent();
}
src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java
@@ -1,6 +1,7 @@
package cc.mrbird.febs.mall.service.impl;
import cc.mrbird.febs.common.enumerates.*;
import cc.mrbird.febs.common.utils.AppContants;
import cc.mrbird.febs.common.utils.MallUtils;
import cc.mrbird.febs.mall.entity.*;
import cc.mrbird.febs.mall.mapper.*;
@@ -9,6 +10,7 @@
import cc.mrbird.febs.mall.vo.AdminTeamEqualsPerkVo;
import cc.mrbird.febs.system.mapper.UserMapper;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.math.MathUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
@@ -39,6 +41,7 @@
    private final DataDictionaryCustomMapper dataDictionaryCustomMapper;
    private final MallMemberMapper memberMapper;
    private final MallAchieveRecordMapper mallAchieveRecordMapper;
    private final MallOrderInfoMapper mallOrderInfoMapper;
    private final IApiMallMemberWalletService iApiMallMemberWalletService;
@@ -580,5 +583,47 @@
        }
    }
    @Override
    public void achieveReleasePercent() {
        DataDictionaryCustom jobAchieveReleasePercentDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
                GreenScoreEnum.JOB_ACHIEVE_RELEASE_PERCENT.getType(),
                GreenScoreEnum.JOB_ACHIEVE_RELEASE_PERCENT.getCode()
        );
        List<MallMember> mallMembers = memberMapper.selectByLevel(MemberLevelEnum.SECOND_LEVEL.getType());
        if(CollUtil.isNotEmpty(mallMembers)){
            for(MallMember mallMember : mallMembers){
                //总业绩
                BigDecimal sumAchieve = mallAchieveRecordMapper.selectSumAchieveByMemberId(mallMember.getId());
                BigDecimal jobAchieveReleasePercent = new BigDecimal(jobAchieveReleasePercentDic.getValue())
                        .multiply(new BigDecimal(0.001));
                //每个人的补贴额度
                BigDecimal multiply = sumAchieve.multiply(jobAchieveReleasePercent);
                if(multiply.compareTo(new BigDecimal(50)) < 0){
                    MallMemberWallet mallMemberWallet = mallMemberWalletMapper.selectWalletByMemberId(mallMember.getId());
                    BigDecimal totalScore = mallMemberWallet.getTotalScore();
                    if(BigDecimal.ZERO.compareTo(totalScore) < 0){
                        if(totalScore.compareTo(multiply) < 0){
                            multiply = totalScore;
                        }
                        //减少补贴额度
                        mallMemberWalletMapper.reduceTotalScoreById(multiply, mallMemberWallet.getId());
                        reduceStar(mallMember.getId(),multiply);
                        mallMemberWalletMapper.addBalanceById(multiply, mallMemberWallet.getId());
                        mallMoneyFlowService.addMoneyFlow(
                                mallMember.getId(),
                                multiply,
                                MoneyFlowTypeEnum.STATIC_BONUS.getValue(),
                                MallUtils.getOrderNum(),
                                FlowTypeEnum.BALANCE.getValue());
                    }
                }
            }
        }
    }
}
src/main/resources/mapper/modules/MallAchieveRecordMapper.xml
@@ -28,4 +28,10 @@
        where date_format(achieve_time, '%Y-%m-%d') = date_format(#{date}, '%Y-%m-%d');
    </select>
    <select id="selectSumAchieveByMemberId" resultType="java.math.BigDecimal">
        select IFNULL(sum(IFNULL(amount,0)),0)
        from mall_achieve_record
        where  member_id = #{memberId};
    </select>
</mapper>
src/main/resources/mapper/modules/MallMemberMapper.xml
@@ -445,4 +445,9 @@
            </if>
        </where>
    </select>
    <select id="selectByLevel" resultType="cc.mrbird.febs.mall.entity.MallMember">
        select * from mall_member
        where level = #{level}
    </select>
</mapper>
src/main/resources/templates/febs/views/modules/system/hlmAchieveSet.html
New file
@@ -0,0 +1,68 @@
<div class="layui-fluid layui-anim febs-anim" id="hlm-achieve-set" lay-title="一星释放">
    <div class="layui-row layui-col-space8 febs-container">
        <form class="layui-form" action="" lay-filter="hlm-achieve-set-form">
            <div class="layui-card">
                <div class="layui-card-body">
                    <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="jobAchieveReleasePercent" lay-verify="required" placeholder="请输入数字" autocomplete="off" class="layui-input" >
                            <div class="layui-word-aux">设置1,则一星用户释放千分之一的业绩到余额。</div>
                        </div>
                    </div>
                    <div class="layui-card-footer">
                        <button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="hlm-achieve-set-submit" id="submit">保存</button>
                    </div>
                </div>
            </div>
        </form>
    </div>
</div>
<style>
    .layui-form-label {
        width: 120px;
    }
    .layui-form-item .layui-input-block {
        margin-left: 150px;
    }
    .layui-table-form .layui-form-item {
        margin-bottom: 20px !important;
    }
</style>
<script data-th-inline="javascript" type="text/javascript">
    layui.use(['dropdown', 'jquery', 'febs', 'form', 'eleTree'], function () {
        var $ = layui.jquery,
            febs = layui.febs,
            form = layui.form,
            hlmAchieveSet = [[${hlmAchieveSet}]],
            $view = $('#hlm-achieve-set');
        form.verify({
            integer: [
                /^[1-9]\d*$/
                , '只能输入正整数'
            ]
        });
        initHlmAchieveSetValue();
        form.render();
        function initHlmAchieveSetValue() {
            form.val("hlm-achieve-set-form", {
                "jobAchieveReleasePercent": hlmAchieveSet.jobAchieveReleasePercent
            });
        }
        form.on('submit(hlm-achieve-set-submit)', function (data) {
            febs.post(ctx + 'admin/system/hlmAchieveSet', data.field, function (res) {
                febs.alert.success('设置成功');
                return ;
            });
            return false;
        });
    });
</script>