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>