From 16b9e8b2690e8cc2b7f2262d1fa2ec65ee5dc590 Mon Sep 17 00:00:00 2001 From: xiaoyong931011 <15274802129@163.com> Date: Mon, 17 Apr 2023 16:27:34 +0800 Subject: [PATCH] 只针对一星会员做修改: 按购买业绩(不按权益积分)每天静态释0.6%~1.2% --- src/main/java/cc/mrbird/febs/common/enumerates/GreenScoreEnum.java | 4 + src/main/java/cc/mrbird/febs/mall/controller/AdminSystemController.java | 20 ++++++ src/main/resources/templates/febs/views/modules/system/hlmAchieveSet.html | 68 ++++++++++++++++++++++ src/main/resources/mapper/modules/MallAchieveRecordMapper.xml | 6 ++ src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java | 45 +++++++++++++++ src/main/java/cc/mrbird/febs/mall/controller/ViewSystemController.java | 20 ++++++ src/main/java/cc/mrbird/febs/mall/mapper/MallMemberMapper.java | 2 src/main/java/cc/mrbird/febs/mall/mapper/MallAchieveRecordMapper.java | 2 src/main/java/cc/mrbird/febs/mall/dto/HlmVoucherButtonDto.java | 2 src/main/resources/mapper/modules/MallMemberMapper.xml | 5 + src/main/java/cc/mrbird/febs/mall/service/IAgentService.java | 6 ++ 11 files changed, 180 insertions(+), 0 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/common/enumerates/GreenScoreEnum.java b/src/main/java/cc/mrbird/febs/common/enumerates/GreenScoreEnum.java index 5ce7247..10e9fa0 100644 --- a/src/main/java/cc/mrbird/febs/common/enumerates/GreenScoreEnum.java +++ b/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"), 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 053e4d1..c005101 100644 --- a/src/main/java/cc/mrbird/febs/mall/controller/AdminSystemController.java +++ b/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(); + } } 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 fa0d6bb..50115fe 100644 --- a/src/main/java/cc/mrbird/febs/mall/controller/ViewSystemController.java +++ b/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"); + } } diff --git a/src/main/java/cc/mrbird/febs/mall/dto/HlmVoucherButtonDto.java b/src/main/java/cc/mrbird/febs/mall/dto/HlmVoucherButtonDto.java index 5de70cf..c8734c3 100644 --- a/src/main/java/cc/mrbird/febs/mall/dto/HlmVoucherButtonDto.java +++ b/src/main/java/cc/mrbird/febs/mall/dto/HlmVoucherButtonDto.java @@ -19,4 +19,6 @@ * 余额提现需要绿色凭证比例 */ private String voucherPercent; + + private String jobAchieveReleasePercent; } diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/MallAchieveRecordMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/MallAchieveRecordMapper.java index f2a20f3..d374a96 100644 --- a/src/main/java/cc/mrbird/febs/mall/mapper/MallAchieveRecordMapper.java +++ b/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); } diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/MallMemberMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/MallMemberMapper.java index 60f30cd..8318cac 100644 --- a/src/main/java/cc/mrbird/febs/mall/mapper/MallMemberMapper.java +++ b/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); } diff --git a/src/main/java/cc/mrbird/febs/mall/service/IAgentService.java b/src/main/java/cc/mrbird/febs/mall/service/IAgentService.java index aadf0cc..53c62d4 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/IAgentService.java +++ b/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(); } diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java index b61b090..9190cce 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java +++ b/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()); + } + } + } + } + } + } diff --git a/src/main/resources/mapper/modules/MallAchieveRecordMapper.xml b/src/main/resources/mapper/modules/MallAchieveRecordMapper.xml index 116720c..d123506 100644 --- a/src/main/resources/mapper/modules/MallAchieveRecordMapper.xml +++ b/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> \ No newline at end of file diff --git a/src/main/resources/mapper/modules/MallMemberMapper.xml b/src/main/resources/mapper/modules/MallMemberMapper.xml index f0ab081..9a6e4ed 100644 --- a/src/main/resources/mapper/modules/MallMemberMapper.xml +++ b/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> \ No newline at end of file diff --git a/src/main/resources/templates/febs/views/modules/system/hlmAchieveSet.html b/src/main/resources/templates/febs/views/modules/system/hlmAchieveSet.html new file mode 100644 index 0000000..6af0adc --- /dev/null +++ b/src/main/resources/templates/febs/views/modules/system/hlmAchieveSet.html @@ -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> \ No newline at end of file -- Gitblit v1.9.1