From 13e710cac7ce8ac3438aee3123d964cfe0ad4055 Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Thu, 06 Apr 2023 17:11:40 +0800
Subject: [PATCH] 测试环境
---
src/main/java/cc/mrbird/febs/common/enumerates/MoneyFlowTypeEnum.java | 12 +
src/main/java/cc/mrbird/febs/mall/entity/MallMember.java | 9 +
src/main/java/cc/mrbird/febs/common/enumerates/PerkEnum.java | 4
src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java | 179 +++++++++++++++++--------
src/main/java/cc/mrbird/febs/mall/mapper/MallMemberMapper.java | 5
src/main/resources/mapper/modules/MallMemberMapper.xml | 3
src/main/java/cc/mrbird/febs/common/enumerates/MemberLevelEnum.java | 101 ++++++++++++++
src/main/resources/templates/febs/views/modules/system/perkSet.html | 75 ++++++++++
8 files changed, 325 insertions(+), 63 deletions(-)
diff --git a/src/main/java/cc/mrbird/febs/common/enumerates/MemberLevelEnum.java b/src/main/java/cc/mrbird/febs/common/enumerates/MemberLevelEnum.java
new file mode 100644
index 0000000..767691e
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/common/enumerates/MemberLevelEnum.java
@@ -0,0 +1,101 @@
+package cc.mrbird.febs.common.enumerates;
+
+import lombok.Getter;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Getter
+public enum MemberLevelEnum {
+ /**
+ * 合伙人
+ */
+ V_PARTNER("V_PARTNER",8),
+ /**
+ * 董事
+ */
+ V_DIRECTOR("V_DIRECTOR",7),
+ /**
+ * v1-v6
+ */
+ V6("V6",6),
+ V5("V5",5),
+ V4("V4",4),
+ V3("V3",3),
+ V2("V2",2),
+ V1("V1",1),
+ //普通用户
+ NORMAL("NORMAL",0);
+
+
+ private String type;
+
+ private Integer code;
+
+ MemberLevelEnum(String type, Integer code) {
+ this.type = type;
+ this.code = code;
+ }
+
+ public List<String> getLevelType(){
+ List<String> strs = new ArrayList<>();
+ for (MemberLevelEnum value : MemberLevelEnum.values()) {
+ strs.add(value.type);
+ }
+ return strs;
+ }
+
+ public int getLevelCode(String Level){
+ int codeOne = 0;
+ for (MemberLevelEnum value : MemberLevelEnum.values()) {
+ if(value.type.equals(Level)){
+ codeOne = value.code;
+ }
+ }
+ return codeOne;
+ }
+
+ public String getNextLevel(String Level){
+ String levelNext = Level;
+ int codeOne = 0;
+ for (MemberLevelEnum value : MemberLevelEnum.values()) {
+ if(value.type.equals(Level)){
+ codeOne = value.code;
+ break;
+ }
+ }
+ codeOne = codeOne + 1;
+ for (MemberLevelEnum value : MemberLevelEnum.values()) {
+ if(value.code == (codeOne)){
+ levelNext = value.type;
+ break;
+ }
+ }
+ return levelNext;
+ }
+
+// public static void main(String[] args) {
+// String zero_level = MemberLevelEnum.SECOND_LEVEL.getNextLevel("SIX_LEVEL");
+// System.out.println(zero_level);
+// }
+
+ /**
+ * 比较两个级别的大小,levelOne大于levelTwo返回1,否则返回0
+ */
+ public int compareLevel(String levelOne ,String levelTwo) {
+ int codeOne = 0;
+ int codeTwo = 0;
+ for (MemberLevelEnum value : MemberLevelEnum.values()) {
+ if(value.type.equals(levelOne)){
+ codeOne = value.code;
+ }
+ if(value.type.equals(levelTwo)){
+ codeTwo = value.code;
+ }
+ }
+ if(codeOne > codeTwo){
+ return 1;
+ }
+ return 0;
+ }
+}
diff --git a/src/main/java/cc/mrbird/febs/common/enumerates/MoneyFlowTypeEnum.java b/src/main/java/cc/mrbird/febs/common/enumerates/MoneyFlowTypeEnum.java
index 3729d8f..6df75e1 100644
--- a/src/main/java/cc/mrbird/febs/common/enumerates/MoneyFlowTypeEnum.java
+++ b/src/main/java/cc/mrbird/febs/common/enumerates/MoneyFlowTypeEnum.java
@@ -108,7 +108,17 @@
/**
* 直推积分补贴
*/
- DIRECT_SCORE_PERK(21);
+ DIRECT_SCORE_PERK(21),
+
+ /**
+ * 董事现金补贴
+ */
+ DIRECTOR_CASH_PERK(22),
+
+ /**
+ * 董事现金补贴
+ */
+ PARTNER_CASH_PERK(23);
private final int value;
diff --git a/src/main/java/cc/mrbird/febs/common/enumerates/PerkEnum.java b/src/main/java/cc/mrbird/febs/common/enumerates/PerkEnum.java
index deb0c89..7f0e8e3 100644
--- a/src/main/java/cc/mrbird/febs/common/enumerates/PerkEnum.java
+++ b/src/main/java/cc/mrbird/febs/common/enumerates/PerkEnum.java
@@ -8,6 +8,10 @@
@Getter
public enum PerkEnum {
/**
+ * 合伙人享全公司入单分红5%加权(现金)
+ */
+ PARTNER_CASH_PERK_PERCENT("PERK_SET", "PARTNER_CASH_PERK_PERCENT"),
+ /**
* 董事享受全公司入单分红2%加权(现金)
*/
DIRECTOR_CASH_PERK_PERCENT("PERK_SET", "DIRECTOR_CASH_PERK_PERCENT"),
diff --git a/src/main/java/cc/mrbird/febs/mall/entity/MallMember.java b/src/main/java/cc/mrbird/febs/mall/entity/MallMember.java
index 61a5590..4de7ccb 100644
--- a/src/main/java/cc/mrbird/febs/mall/entity/MallMember.java
+++ b/src/main/java/cc/mrbird/febs/mall/entity/MallMember.java
@@ -125,13 +125,18 @@
private String levelName;
/**
- * 董事
+ * 董事1:是 2:否
*/
private Integer director;
/**
- * 店长
+ * 店长1:是 2:否
*/
private Integer storeMaster;
+ /**
+ * 是否是合伙人 1:是 2:否
+ */
+ private Integer partner;
+
}
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 5c4787a..0e75d37 100644
--- a/src/main/java/cc/mrbird/febs/mall/mapper/MallMemberMapper.java
+++ b/src/main/java/cc/mrbird/febs/mall/mapper/MallMemberMapper.java
@@ -82,6 +82,11 @@
List<MallMember> selectMemberDirectForHasLevel(@Param("inviteId") String inviteId);
+ /**
+ * 根据type获取用户集合
+ * @param type 1:董事 2:店主 3:合伙人
+ * @return
+ */
List<MallMember> selectDirectorsOrStoreMaster(@Param("type") Integer type);
List<MallMember> selectMemberWithLevel(String level);
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 d6c09a6..7d568b7 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,9 +1,6 @@
package cc.mrbird.febs.mall.service.impl;
-import cc.mrbird.febs.common.enumerates.AgentLevelEnum;
-import cc.mrbird.febs.common.enumerates.FlowTypeEnum;
-import cc.mrbird.febs.common.enumerates.MoneyFlowTypeEnum;
-import cc.mrbird.febs.common.enumerates.PerkEnum;
+import cc.mrbird.febs.common.enumerates.*;
import cc.mrbird.febs.common.utils.AppContants;
import cc.mrbird.febs.mall.entity.*;
import cc.mrbird.febs.mall.mapper.*;
@@ -184,85 +181,147 @@
String orderNo = mallOrderInfo.getOrderNo();
//购买人
Long memberId = mallOrderInfo.getMemberId();
- MallMember mallMember = mallMemberMapper.selectById(memberId);
/**
* 1、购买人获得固定比例的积分
* = amountTC * 固定比例
*/
- DataDictionaryCustom buySetMealPerkPercentDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
- PerkEnum.BUY_SET_MEAL_PERK_PERCENT.getType(),
- PerkEnum.BUY_SET_MEAL_PERK_PERCENT.getCode());
- if(ObjectUtil.isNotEmpty(buySetMealPerkPercentDic)){
- BigDecimal buySetMealPerkPercent = new BigDecimal(buySetMealPerkPercentDic.getValue() == null ? "0" : buySetMealPerkPercentDic.getValue());
- //购买人获得的积分数量
- BigDecimal buySetMealPerk = buySetMealPerkPercent.multiply(AppContants.PERCENTAGE).multiply(amountTC).setScale(2, BigDecimal.ROUND_DOWN);
- //增加积分
- iApiMallMemberWalletService.add(buySetMealPerk,memberId,"score");
- //增加一个获得积分的流水记录
- mallMoneyFlowService.addMoneyFlow(
- memberId,
- buySetMealPerk,
- MoneyFlowTypeEnum.BUY_SET_MEAL_PERK.getValue(),
- orderNo,
- FlowTypeEnum.SCORE.getValue(),
- AppContants.IS_RETURN_YES);
- }
+ perkMember(memberId,
+ PerkEnum.BUY_SET_MEAL_PERK_PERCENT,
+ amountTC,
+ "score",
+ MoneyFlowTypeEnum.BUY_SET_MEAL_PERK.getValue(),
+ FlowTypeEnum.SCORE.getValue(),
+ orderNo);
/**
* 2、直推获取8%的现金->余额,4%的积分->积分
*/
+ MallMember mallMember = mallMemberMapper.selectById(memberId);
if(ObjectUtil.isNotEmpty(mallMember.getReferrerId())){
String referrerId = mallMember.getReferrerId();
MallMember mallMemberDirect = mallMemberMapper.selectInfoByInviteId(referrerId);
Long directMemberId = mallMemberDirect.getId();
- DataDictionaryCustom directCashPerkPercentDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
- PerkEnum.DIRECT_CASH_PERK_PERCENT.getType(),
- PerkEnum.DIRECT_CASH_PERK_PERCENT.getCode());
- if(ObjectUtil.isNotEmpty(directCashPerkPercentDic)){
- BigDecimal directCashPerkPercent = new BigDecimal(directCashPerkPercentDic.getValue() == null ? "0" : directCashPerkPercentDic.getValue());
- //获得的现金数量
- BigDecimal directCashPerk = directCashPerkPercent.multiply(AppContants.PERCENTAGE).multiply(amountTC).setScale(2, BigDecimal.ROUND_DOWN);
- //增加余额
- iApiMallMemberWalletService.add(directCashPerk,directMemberId,"balance");
- //增加一个获得现金的流水记录
- mallMoneyFlowService.addMoneyFlow(
- directMemberId,
- directCashPerk,
- MoneyFlowTypeEnum.DIRECT_CASH_PERK.getValue(),
- orderNo,
- FlowTypeEnum.BALANCE.getValue(),
- AppContants.IS_RETURN_YES);
- }
- DataDictionaryCustom directScorePerkPercentDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
- PerkEnum.DIRECT_SCORE_PERK_PERCENT.getType(),
- PerkEnum.DIRECT_SCORE_PERK_PERCENT.getCode());
- if(ObjectUtil.isNotEmpty(directScorePerkPercentDic)){
- BigDecimal directScorePerkPercent = new BigDecimal(directScorePerkPercentDic.getValue() == null ? "0" : directScorePerkPercentDic.getValue());
- //获得的积分数量
- BigDecimal directScorePerk = directScorePerkPercent.multiply(AppContants.PERCENTAGE).multiply(amountTC).setScale(2, BigDecimal.ROUND_DOWN);
- //增加余额
- iApiMallMemberWalletService.add(directScorePerk,directMemberId,"score");
- //增加一个获得积分的流水记录
- mallMoneyFlowService.addMoneyFlow(
- directMemberId,
- directScorePerk,
- MoneyFlowTypeEnum.DIRECT_SCORE_PERK.getValue(),
- orderNo,
- FlowTypeEnum.SCORE.getValue(),
- AppContants.IS_RETURN_YES);
- }
+
+ perkMember(directMemberId,
+ PerkEnum.DIRECT_CASH_PERK_PERCENT,
+ amountTC,
+ "balance",
+ MoneyFlowTypeEnum.DIRECT_CASH_PERK.getValue(),
+ FlowTypeEnum.BALANCE.getValue(),
+ orderNo);
+
+ perkMember(directMemberId,
+ PerkEnum.DIRECT_SCORE_PERK_PERCENT,
+ amountTC,
+ "score",
+ MoneyFlowTypeEnum.DIRECT_SCORE_PERK.getValue(),
+ FlowTypeEnum.SCORE.getValue(),
+ orderNo);
}
/**
* 4、董事享受全公司入单分红2%加权(现金)
*/
-// mallMemberMapper.selectMemberWithLevel()
+ List<MallMember> mallMembersDirectors = mallMemberMapper.selectDirectorsOrStoreMaster(1);
+ if(CollUtil.isNotEmpty(mallMembersDirectors)){
+ perkMembersLevel(mallMembersDirectors,
+ PerkEnum.DIRECTOR_CASH_PERK_PERCENT,
+ amountTC,
+ "balance",
+ MoneyFlowTypeEnum.DIRECTOR_CASH_PERK.getValue(),
+ FlowTypeEnum.BALANCE.getValue(),
+ orderNo);
+ }
+ /**
+ * 5、合伙人享全公司入单分红5%加权(现金)
+ */
+ List<MallMember> mallMemberPartners = mallMemberMapper.selectDirectorsOrStoreMaster(3);
+ if(CollUtil.isNotEmpty(mallMemberPartners)){
+ perkMembersLevel(mallMemberPartners,
+ PerkEnum.PARTNER_CASH_PERK_PERCENT,
+ amountTC,
+ "balance",
+ MoneyFlowTypeEnum.PARTNER_CASH_PERK.getValue(),
+ FlowTypeEnum.BALANCE.getValue(),
+ orderNo);
+ }
+
+ /**
+ *
+ */
}
+ /**
+ * 给某一个用户根据订单金额去加权平分
+ * @param memberId 用户ID
+ * @param perkEnum 比例的枚举值
+ * @param amountTC 总金额
+ * @param walletField 类型:score:积分 balance:余额
+ * @param type 流水类型
+ * @param flowType 流水分类
+ * @param orderNo 订单编号
+ */
+ private void perkMember(Long memberId,PerkEnum perkEnum,BigDecimal amountTC,String walletField,int type,int flowType,String orderNo){
+ DataDictionaryCustom perkEnumDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ perkEnum.getType(),
+ perkEnum.getCode());
+ if(ObjectUtil.isNotEmpty(perkEnumDic)){
+ BigDecimal perkEnumDicPercent = new BigDecimal(perkEnumDic.getValue() == null ? "0" : perkEnumDic.getValue());
+ //获得数量
+ BigDecimal perkEnumDicPercentPerk = perkEnumDicPercent.multiply(AppContants.PERCENTAGE).multiply(amountTC).setScale(2, BigDecimal.ROUND_DOWN);
+ //增加
+ iApiMallMemberWalletService.add(perkEnumDicPercentPerk,memberId,walletField);
+ //增加一个流水记录
+ mallMoneyFlowService.addMoneyFlow(
+ memberId,
+ perkEnumDicPercentPerk,
+ type,
+ orderNo,
+ flowType,
+ AppContants.IS_RETURN_YES);
+ }
+ }
+ /**
+ * 按照级别,根据订单金额去加权平分
+ * @param mallMembers 用户
+ * @param perkEnum 比例的枚举值
+ * @param amountTC 总金额
+ * @param walletField 类型:score:积分 balance:余额
+ * @param type 流水类型
+ * @param flowType 流水分类
+ * @param orderNo 订单编号
+ */
+ private void perkMembersLevel(List<MallMember> mallMembers,PerkEnum perkEnum,BigDecimal amountTC,String walletField,int type,int flowType,String orderNo){
+ DataDictionaryCustom perkEnumDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ perkEnum.getType(),
+ perkEnum.getCode());
+ if(ObjectUtil.isNotEmpty(perkEnumDic)){
+ BigDecimal perkEnumDicPercent = new BigDecimal(perkEnumDic.getValue() == null ? "0" : perkEnumDic.getValue());
+ //获得的现金
+ BigDecimal perkEnumDicPercentPerkSum = perkEnumDicPercent.multiply(AppContants.PERCENTAGE).multiply(amountTC).setScale(2, BigDecimal.ROUND_DOWN);
+ //然后董事平分
+ BigDecimal perkEnumDicPercentPerk = perkEnumDicPercentPerkSum.divide(new BigDecimal(mallMembers.size()), 2, BigDecimal.ROUND_DOWN);
+ if(perkEnumDicPercentPerk.compareTo(BigDecimal.ZERO) > 0){
+ for(MallMember mallMember : mallMembers){
+ Long memberId = mallMember.getId();
+ //增加余额
+ iApiMallMemberWalletService.add(perkEnumDicPercentPerk,memberId,walletField);
+ //增加一个获得现金的流水记录
+ mallMoneyFlowService.addMoneyFlow(
+ memberId,
+ perkEnumDicPercentPerk,
+ type,
+ orderNo,
+ flowType,
+ AppContants.IS_RETURN_YES);
+ }
+ }
+ }
+ }
@Override
public void rankReturnMoney(Long orderId) {
diff --git a/src/main/resources/mapper/modules/MallMemberMapper.xml b/src/main/resources/mapper/modules/MallMemberMapper.xml
index 060eb78..c8b88e2 100644
--- a/src/main/resources/mapper/modules/MallMemberMapper.xml
+++ b/src/main/resources/mapper/modules/MallMemberMapper.xml
@@ -393,6 +393,9 @@
<if test="type == 2">
and store_master = 1
</if>
+ <if test="type == 3">
+ and partner = 1
+ </if>
</where>
</select>
diff --git a/src/main/resources/templates/febs/views/modules/system/perkSet.html b/src/main/resources/templates/febs/views/modules/system/perkSet.html
new file mode 100644
index 0000000..a5a8f86
--- /dev/null
+++ b/src/main/resources/templates/febs/views/modules/system/perkSet.html
@@ -0,0 +1,75 @@
+<div class="layui-fluid layui-anim febs-anim" id="perk-set" lay-title="补贴设置">
+ <div class="layui-row layui-col-space8 febs-container">
+ <form class="layui-form" action="" lay-filter="perk-set-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="perk-set-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 = $('#perk-set');
+
+ form.verify(validate);
+
+ initCashoutValue();
+
+ form.render();
+
+ function initCashoutValue() {
+ form.val("perk-set-form", {
+ "everydayRatio": scorePoor.everydayRatio,
+ "dividEquallyRatio": scorePoor.dividEquallyRatio
+ });
+ }
+
+ form.on('submit(perk-set-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