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