From 3afcc72b898f91d808ba81f9620730e4665d6890 Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Thu, 11 Aug 2022 14:16:12 +0800
Subject: [PATCH] 20220810
---
src/main/java/cc/mrbird/febs/mall/dto/ScorePoorDto.java | 19 ++++++
src/main/java/cc/mrbird/febs/mall/controller/AdminSystemController.java | 7 ++
src/main/resources/templates/febs/views/modules/system/scorePoorSetting.html | 75 +++++++++++++++++++++++++
src/main/java/cc/mrbird/febs/mall/controller/ViewSystemController.java | 11 +++
src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java | 3 +
src/main/java/cc/mrbird/febs/mall/service/impl/MemberProfitServiceImpl.java | 25 +++++++-
6 files changed, 137 insertions(+), 3 deletions(-)
diff --git a/src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java b/src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java
index ae23dd7..2c105ef 100644
--- a/src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java
+++ b/src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java
@@ -6,6 +6,9 @@
@Getter
public enum DataDictionaryEnum {
+ //积分池设置{"everydayRatio":10,"dividEquallyRatio":1}每日订单的百分之几,增加到积分池;每日平分百分比
+ SCORE_POOR_RADIO("SCORE_POOR", "SCORE_POOR_RADIO"),
+
SCORE_SIGN_SETTING("SCORE_SETTING", "SCORE_SIGN_SETTING"),
STATIC_BONUS("BONUS_TYPE", "STATIC_BONUS"),
DYNAMIC_BONUS("BONUS_TYPE", "DYNAMIC_BONUS"),
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 03153f4..61acaa9 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/AdminSystemController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/AdminSystemController.java
@@ -3,6 +3,7 @@
import cc.mrbird.febs.common.entity.FebsResponse;
import cc.mrbird.febs.common.enumerates.DataDictionaryEnum;
import cc.mrbird.febs.mall.dto.CashOutSettingDto;
+import cc.mrbird.febs.mall.dto.ScorePoorDto;
import cc.mrbird.febs.mall.service.ICommonService;
import cc.mrbird.febs.mall.service.ISystemService;
import lombok.RequiredArgsConstructor;
@@ -39,4 +40,10 @@
commonService.addDataDic(DataDictionaryEnum.CASHOUT_SETTING.getType(), DataDictionaryEnum.CASHOUT_SETTING.getCode(), cashOutSettingDto, "提现设置");
return new FebsResponse().success();
}
+
+ @PostMapping(value = "/scorePoor")
+ public FebsResponse scorePoor(ScorePoorDto scorePoorDto) {
+ commonService.addDataDic(DataDictionaryEnum.SCORE_POOR_RADIO.getType(), DataDictionaryEnum.SCORE_POOR_RADIO.getCode(), scorePoorDto, "积分池设置");
+ 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 aee528c..37732cd 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/ViewSystemController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/ViewSystemController.java
@@ -4,6 +4,7 @@
import cc.mrbird.febs.common.enumerates.DataDictionaryEnum;
import cc.mrbird.febs.common.utils.FebsUtil;
import cc.mrbird.febs.mall.dto.CashOutSettingDto;
+import cc.mrbird.febs.mall.dto.ScorePoorDto;
import cc.mrbird.febs.mall.dto.ScoreSettingDto;
import cc.mrbird.febs.mall.entity.DataDictionaryCustom;
import cc.mrbird.febs.mall.mapper.DataDictionaryCustomMapper;
@@ -37,4 +38,14 @@
}
return FebsUtil.view("modules/system/cashOutSetting");
}
+
+ @GetMapping("scorePoorSetting")
+ @RequiresPermissions("scorePoorSetting:update")
+ public String scorePoor(Model model) {
+ DataDictionaryCustom dic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.SCORE_POOR_RADIO.getType(), DataDictionaryEnum.SCORE_POOR_RADIO.getCode());
+ if (dic != null) {
+ model.addAttribute("scorePoor", JSONObject.parseObject(dic.getValue(), ScorePoorDto.class));
+ }
+ return FebsUtil.view("modules/system/scorePoorSetting");
+ }
}
diff --git a/src/main/java/cc/mrbird/febs/mall/dto/ScorePoorDto.java b/src/main/java/cc/mrbird/febs/mall/dto/ScorePoorDto.java
new file mode 100644
index 0000000..3e17b62
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/dto/ScorePoorDto.java
@@ -0,0 +1,19 @@
+package cc.mrbird.febs.mall.dto;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ *积分池设置{"everydayRatio":10,"dividEquallyRatio":1}每日订单的百分之几,增加到积分池;每日平分百分比
+ */
+@Data
+public class ScorePoorDto {
+
+ //每日订单的百分之几,增加到积分池
+ private BigDecimal everydayRatio;
+
+ //每日平分百分比
+ private BigDecimal dividEquallyRatio;
+
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/MemberProfitServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/MemberProfitServiceImpl.java
index 525a3fc..3b7de3a 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/MemberProfitServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/MemberProfitServiceImpl.java
@@ -6,6 +6,7 @@
import cc.mrbird.febs.common.enumerates.MoneyFlowTypeEnum;
import cc.mrbird.febs.common.utils.AppContants;
import cc.mrbird.febs.common.utils.RedisUtils;
+import cc.mrbird.febs.mall.dto.ScorePoorDto;
import cc.mrbird.febs.mall.entity.*;
import cc.mrbird.febs.mall.mapper.*;
import cc.mrbird.febs.mall.service.IApiMallMemberWalletService;
@@ -17,7 +18,9 @@
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUnit;
import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
+import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -503,9 +506,17 @@
* 每天释放1%,给全体用户
*/
//前一天的所有消费的10%
+ DataDictionaryCustom dic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.SCORE_POOR_RADIO.getType(), DataDictionaryEnum.SCORE_POOR_RADIO.getCode());
+ if(ObjectUtil.isEmpty(dic)){
+ return;
+ }
+ ScorePoorDto scorePoorDto = JSONUtil.toBean(dic.getValue(), ScorePoorDto.class);
+ BigDecimal everydayRatio = scorePoorDto.getEverydayRatio().multiply(new BigDecimal(0.01));
+ BigDecimal dividEquallyRatio = scorePoorDto.getDividEquallyRatio().multiply(new BigDecimal(0.01));
+
Date date = DateUtil.offsetDay(new Date(), -1);
BigDecimal totalAmount = mallOrderInfoMapper.selectTotalAmountByPayDoneAndDataString(1, date);
- BigDecimal multiplyTotalAmount = totalAmount.multiply(new BigDecimal(0.1));
+ BigDecimal multiplyTotalAmount = totalAmount.multiply(everydayRatio);
String redisKey = "scorePool";
String scorePoolRedis = redisUtils.getString(redisKey);
@@ -517,13 +528,14 @@
BigDecimal scorePoolNew = scorePoolOld.add(multiplyTotalAmount);
//每天释放1%给全体用户
- BigDecimal scorePoolToDay = scorePoolNew.multiply(new BigDecimal(0.01));
+ BigDecimal scorePoolToDay = scorePoolNew.multiply(dividEquallyRatio);
redisUtils.set(redisKey,scorePoolNew.subtract(scorePoolToDay).intValue(),0L);
QueryWrapper<MallMember> formalMember = new QueryWrapper<>();
formalMember.ne("level", AgentLevelEnum.ZERO_LEVEL.name());
List<MallMember> mallMembers = mallMemberMapper.selectList(formalMember);
+ int cnt = 0;
if(CollUtil.isNotEmpty(mallMembers)){
BigDecimal income = new BigDecimal(scorePoolToDay.divide(new BigDecimal(mallMembers.size()), 2, RoundingMode.HALF_UP).intValue());
if(income.compareTo(BigDecimal.ZERO) < 1){
@@ -536,6 +548,9 @@
*/
BigDecimal outCome = BigDecimal.ZERO;
MallMemberWallet mallMemberWallet = mallMemberWalletMapper.selectWalletByMemberId(mallMember.getId());
+ if(mallMemberWallet.getScore().compareTo(BigDecimal.ZERO) < 1){
+ continue;
+ }
if(mallMemberWallet.getScore().compareTo(income) < 0){
outCome = new BigDecimal(mallMemberWallet.getScore().intValue());
}else{
@@ -545,9 +560,13 @@
walletService.reduce(outCome, mallMember.getId(), "score");
moneyFlowService.addMoneyFlow(mallMember.getId(), outCome, MoneyFlowTypeEnum.SCORE_POOL.getValue(), null, FlowTypeEnum.COMMISSION.getValue());
moneyFlowService.addMoneyFlow(mallMember.getId(), outCome.negate(), MoneyFlowTypeEnum.SCORE_POOL.getValue(), null, FlowTypeEnum.SCORE.getValue());
+ cnt ++;
}
}
- log.info("#####==积分池==end==######");
+ log.info("#####==积分池==end==######;" +
+ "今日新增积分:" + multiplyTotalAmount.setScale(2, RoundingMode.HALF_UP)
+ +";平分积分数量:"+scorePoolToDay.setScale(2, RoundingMode.HALF_UP)
+ +";人数:"+cnt);
}
}
diff --git a/src/main/resources/templates/febs/views/modules/system/scorePoorSetting.html b/src/main/resources/templates/febs/views/modules/system/scorePoorSetting.html
new file mode 100644
index 0000000..6948c6a
--- /dev/null
+++ b/src/main/resources/templates/febs/views/modules/system/scorePoorSetting.html
@@ -0,0 +1,75 @@
+<div class="layui-fluid layui-anim febs-anim" id="scorePoor-setting" lay-title="积分池设置">
+ <div class="layui-row layui-col-space8 febs-container">
+ <form class="layui-form" action="" lay-filter="scorePoor-setting-form">
+ <div class="layui-card">
+ <div class="layui-card-body">
+ <div class="layui-form-item">
+ <label class="layui-form-label ">增加到积分池比例:</label>
+ <div class="layui-input-block">
+ <input type="text" name="everydayRatio" data-th-id="${scorePoor.everydayRatio}"
+ lay-verify="number" autocomplete="off" class="layui-input" >
+ </div>
+ <div class="layui-word-aux" style="margin-left: 150px;">【填写整数】每日订单金额的百分之几,增加到积分池:直接输入百分比,例如25%,直接输入25</div>
+ </div>
+ <div class="layui-form-item">
+ <label class="layui-form-label ">每日平分百分比:</label>
+ <div class="layui-input-block">
+ <input type="text" name="dividEquallyRatio" data-th-id="${scorePoor.dividEquallyRatio}"
+ lay-verify="number" autocomplete="off" class="layui-input" >
+ </div>
+ <div class="layui-word-aux" style="margin-left: 150px;">【填写整数】积分池每日平分百分比:直接输入百分比,例如25%,直接输入25</div>
+ </div>
+ </div>
+
+ <div class="layui-card-footer">
+ <button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="scorePoor-setting-form-submit" id="submit">保存</button>
+ </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', 'validate', 'febs', 'form', 'eleTree'], function () {
+ var $ = layui.jquery,
+ febs = layui.febs,
+ form = layui.form,
+ scorePoor = [[${scorePoor}]],
+ validate = layui.validate,
+ $view = $('#scorePoor-setting');
+
+ form.verify(validate);
+
+ initCashoutValue();
+
+ form.render();
+
+ function initCashoutValue() {
+ form.val("scorePoor-setting-form", {
+ "everydayRatio": scorePoor.everydayRatio,
+ "dividEquallyRatio": scorePoor.dividEquallyRatio
+ });
+ }
+
+ form.on('submit(scorePoor-setting-form-submit)', function (data) {
+ console.log(data);
+ febs.post(ctx + 'admin/system/scorePoor', data.field, function (res) {
+ febs.alert.success('设置成功');
+ });
+ window.location.reload();
+ return false;
+ });
+ });
+</script>
\ No newline at end of file
--
Gitblit v1.9.1