From d5a96c3122c136d4b0c585d08e61b42e8a123743 Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Mon, 03 Apr 2023 00:26:52 +0800
Subject: [PATCH] 按照商品的来设置补贴额度的系数
---
src/main/java/cc/mrbird/febs/mall/mapper/MallScoreRecordMapper.java | 23
src/main/java/cc/mrbird/febs/mall/controller/ViewSystemController.java | 77 ++
src/test/java/cc/mrbird/febs/ProfitTest.java | 6
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java | 22
src/main/java/cc/mrbird/febs/mall/dto/AdminRoleReleaseDto.java | 11
src/main/java/cc/mrbird/febs/mall/mapper/MallScoreAchieveReleaseMapper.java | 16
src/main/resources/templates/febs/views/modules/mallMember/voucherUpdate.html | 91 ++
src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallMemberServiceImpl.java | 89 ++
src/main/java/cc/mrbird/febs/common/enumerates/MoneyFlowTypeEnum.java | 27
src/main/java/cc/mrbird/febs/mall/controller/AdminSystemController.java | 52 +
src/main/resources/templates/febs/views/modules/mallMember/scoreAchieveReleaseList.html | 55 +
src/main/java/cc/mrbird/febs/mall/mapper/MallAchieveRecordMapper.java | 2
src/main/java/cc/mrbird/febs/mall/service/IAdminMallMemberService.java | 21
src/main/resources/templates/febs/views/modules/system/hlmVoucherSet.html | 142 ++++
src/main/java/cc/mrbird/febs/common/enumerates/GreenScoreEnum.java | 59 +
src/main/resources/templates/febs/views/modules/mallMember/scoreAchieveRelease.html | 107 +++
src/main/resources/mapper/modules/MallAchieveRecordMapper.xml | 7
src/test/java/cc/mrbird/febs/AgentTest.java | 2
src/main/java/cc/mrbird/febs/mall/entity/MallMoneyFlow.java | 7
src/main/java/cc/mrbird/febs/mall/mapper/MallMemberMapper.java | 8
src/main/java/cc/mrbird/febs/mall/mapper/MallMemberWalletMapper.java | 6
src/main/java/cc/mrbird/febs/mall/controller/AdminMallMemberController.java | 60 +
src/main/resources/mapper/modules/MallMemberMapper.xml | 14
src/main/resources/templates/febs/views/modules/mallMember/scoreRoleRelease.html | 123 +++
src/main/java/cc/mrbird/febs/mall/entity/MallMemberWallet.java | 10
src/main/java/cc/mrbird/febs/mall/service/IMemberProfitService.java | 4
src/main/resources/templates/febs/views/modules/mallMember/mallMemberList.html | 60 +
src/main/java/cc/mrbird/febs/mall/entity/MallMember.java | 20
src/main/java/cc/mrbird/febs/mall/controller/ViewMallMemberController.java | 65 ++
src/main/resources/mapper/modules/MallMemberWalletMapper.xml | 17
src/main/java/cc/mrbird/febs/mall/service/impl/MemberProfitServiceImpl.java | 301 +++++++++
src/main/java/cc/mrbird/febs/mall/quartz/ProfitJob.java | 19
src/main/java/cc/mrbird/febs/common/enumerates/FlowTypeEnum.java | 6
src/main/java/cc/mrbird/febs/mall/entity/MallScoreRecord.java | 39 +
src/main/resources/templates/febs/views/modules/system/hlmVoucherButton.html | 74 ++
src/main/java/cc/mrbird/febs/mall/entity/MallScoreAchieveRelease.java | 31 +
src/main/resources/mapper/modules/MallScoreRecordMapper.xml | 44 +
src/main/resources/mapper/modules/MallScoreAchieveReleaseMapper.xml | 24
src/main/resources/templates/febs/views/modules/mallMember/scoreRoleReleaseList.html | 39 +
src/main/java/cc/mrbird/febs/mall/dto/HlmVoucherSetDto.java | 46 +
40 files changed, 1,801 insertions(+), 25 deletions(-)
diff --git a/src/main/java/cc/mrbird/febs/common/enumerates/FlowTypeEnum.java b/src/main/java/cc/mrbird/febs/common/enumerates/FlowTypeEnum.java
index 47c6edc..d3fea93 100644
--- a/src/main/java/cc/mrbird/febs/common/enumerates/FlowTypeEnum.java
+++ b/src/main/java/cc/mrbird/febs/common/enumerates/FlowTypeEnum.java
@@ -33,7 +33,11 @@
/**
* 补贴额度
*/
- TOTAL_SCORE(6);
+ TOTAL_SCORE(6),
+ /**
+ * 凭证数量
+ */
+ VOUCHER_CNT(7);
private final int value;
diff --git a/src/main/java/cc/mrbird/febs/common/enumerates/GreenScoreEnum.java b/src/main/java/cc/mrbird/febs/common/enumerates/GreenScoreEnum.java
new file mode 100644
index 0000000..dd625f3
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/common/enumerates/GreenScoreEnum.java
@@ -0,0 +1,59 @@
+package cc.mrbird.febs.common.enumerates;
+
+import lombok.Getter;
+
+/**
+ * 绿色积分
+ */
+@Getter
+public enum GreenScoreEnum {
+ /**
+ * 绿色凭证价格
+ */
+ SCORE_PRICE("GREEN_SCORE", "SCORE_PRICE"),
+ /**
+ * 业绩产生凭证给星级的比例
+ */
+ LEVEL_ACHIEVE_PERCENT("GREEN_SCORE", "LEVEL_ACHIEVE_PERCENT"),
+ /**
+ * 业绩产生凭证给贡献点的比例
+ */
+ STAR_ACHIEVE_PERCENT("GREEN_SCORE", "STAR_ACHIEVE_PERCENT"),
+ /**
+ * 业绩产生凭证给创世的比例
+ */
+ ROLE_ACHIEVE_PERCENT("GREEN_SCORE", "ROLE_ACHIEVE_PERCENT"),
+ /**
+ * 业绩的最小值
+ */
+ ACHIEVE_MIN("GREEN_SCORE", "ACHIEVE_MIN"),
+ /**
+ * 业绩的最大值
+ */
+ ACHIEVE_MAX("GREEN_SCORE", "ACHIEVE_MAX"),
+ /**
+ * 产生业绩的释放积分比例(万分之几)
+ */
+ ACHIEVE_RELEASE_PERCENT("GREEN_SCORE", "ACHIEVE_RELEASE_PERCENT"),
+ /**
+ * 创始角色的每日释放积分比例(千分之几)
+ */
+ ROLE_RELEASE_PERCENT("GREEN_SCORE", "ROLE_RELEASE_PERCENT"),
+ /**
+ * 绿色积分剩余数量
+ */
+ SURPLUS_CNT("GREEN_SCORE", "SURPLUS_CNT"),
+ /**
+ * 绿色积分总数
+ */
+ TOTAL_CNT("GREEN_SCORE", "TOTAL_CNT");
+
+ private String type;
+
+ private String code;
+
+ GreenScoreEnum(String type, String code) {
+ this.type = type;
+ this.code = code;
+ }
+}
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 48f1881..27d0fdf 100644
--- a/src/main/java/cc/mrbird/febs/common/enumerates/MoneyFlowTypeEnum.java
+++ b/src/main/java/cc/mrbird/febs/common/enumerates/MoneyFlowTypeEnum.java
@@ -153,7 +153,32 @@
/**
* 代理商补贴
*/
- AGENT_PERK(30);
+ AGENT_PERK(30),
+
+ /**
+ * 联创合伙人释放凭证
+ */
+ ROLE_RELEASE_SCORE(31),
+
+ /**
+ * 业绩释放联创凭证
+ */
+ ACHIEVE_RELEASE_SCORE_LC(32),
+
+ /**
+ * 业绩释放合伙人凭证
+ */
+ ACHIEVE_RELEASE_SCORE_HHR(33),
+
+ /**
+ * 业绩释放贡献点凭证
+ */
+ ACHIEVE_RELEASE_SCORE_GXD(34),
+
+ /**
+ * 业绩释放星级凭证
+ */
+ ACHIEVE_RELEASE_SCORE_XJ(35);
private final int value;
diff --git a/src/main/java/cc/mrbird/febs/mall/controller/AdminMallMemberController.java b/src/main/java/cc/mrbird/febs/mall/controller/AdminMallMemberController.java
index a683d78..dbd1b5e 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/AdminMallMemberController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/AdminMallMemberController.java
@@ -117,6 +117,16 @@
}
/**
+ * 会员列表-系统拨付绿色凭证
+ */
+ @PostMapping("updateVoucher")
+ @ControllerEndpoint(operation = "会员列表-系统拨付绿色凭证", exceptionMessage = "操作失败")
+ public FebsResponse updateVoucher(@Valid MallSystemPayDto mallSystemPayDto) {
+// return mallMemberService.updateSystemPay(mallSystemPayDto);
+ return mallMemberService.updateVoucher(mallSystemPayDto);
+ }
+
+ /**
* 会员列表-详情更新
*/
@PostMapping("updateMemberInfo")
@@ -374,4 +384,54 @@
return new FebsResponse().success();
}
+ /**
+ * 创世释放记录-列表
+ * @param roleReleaseDto
+ * @param request
+ * @return
+ */
+ @GetMapping("gerRoleRelease")
+ public FebsResponse gerRoleRelease(AdminRoleReleaseDto roleReleaseDto, QueryRequest request) {
+ Map<String, Object> data = getDataTable(mallMemberService.gerRoleReleaseList(roleReleaseDto, request));
+ return new FebsResponse().success().data(data);
+ }
+
+ /**
+ * 创世释放记录-全部记录
+ */
+ @GetMapping("/roleReleaseChild")
+ public FebsResponse roleReleaseChild(QueryRequest request, MallScoreRecord mallScoreRecord, Integer parentId) {
+ if (parentId == null) {
+ ViewMallMemberController.idFromScoreRoleRelease = 0;
+ }
+ mallScoreRecord.setId(ViewMallMemberController.idFromScoreRoleRelease);
+ Map<String, Object> dataTable = getDataTable(mallMemberService.roleReleaseChild(request, mallScoreRecord));
+ return new FebsResponse().success().data(dataTable);
+ }
+
+ /**
+ * 业绩释放记录-列表
+ * @param roleReleaseDto
+ * @param request
+ * @return
+ */
+ @GetMapping("gerAchieveRelease")
+ public FebsResponse gerAchieveRelease(AdminRoleReleaseDto roleReleaseDto, QueryRequest request) {
+ Map<String, Object> data = getDataTable(mallMemberService.gerAchieveReleaseList(roleReleaseDto, request));
+ return new FebsResponse().success().data(data);
+ }
+
+ /**
+ * 业绩释放记录-全部记录
+ */
+ @GetMapping("/achieveReleaseChild")
+ public FebsResponse achieveReleaseChild(QueryRequest request, MallScoreAchieveRelease mallScoreAchieveRelease, Integer parentId) {
+ if (parentId == null) {
+ ViewMallMemberController.idFromScoreAchieveRelease = 0;
+ }
+ mallScoreAchieveRelease.setId(ViewMallMemberController.idFromScoreAchieveRelease);
+ Map<String, Object> dataTable = getDataTable(mallMemberService.achieveReleaseChild(request, mallScoreAchieveRelease));
+ return new FebsResponse().success().data(dataTable);
+ }
+
}
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 92a3cb7..2b18daa 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/AdminSystemController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/AdminSystemController.java
@@ -2,10 +2,8 @@
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.HlmBasicPerkDto;
-import cc.mrbird.febs.mall.dto.HlmScoreSetDto;
-import cc.mrbird.febs.mall.dto.ScorePoorDto;
+import cc.mrbird.febs.common.enumerates.GreenScoreEnum;
+import cc.mrbird.febs.mall.dto.*;
import cc.mrbird.febs.mall.service.ICommonService;
import cc.mrbird.febs.mall.service.ISystemService;
import lombok.RequiredArgsConstructor;
@@ -17,6 +15,7 @@
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
+import java.math.BigDecimal;
import java.util.Map;
@Slf4j
@@ -102,4 +101,49 @@
hlmBasicPerkDto.getAgentPerk());
return new FebsResponse().success();
}
+
+ @PostMapping(value = "/hlmVoucherSet")
+ public FebsResponse hlmVoucherSet(HlmVoucherSetDto hlmVoucherSetDto) {
+ BigDecimal roleReleasePercent = new BigDecimal(hlmVoucherSetDto.getRoleReleasePercent());
+ if(roleReleasePercent.compareTo(BigDecimal.ZERO) <= 0
+ || roleReleasePercent.compareTo(new BigDecimal(1000)) >= 0){
+ return new FebsResponse().fail().message("请输入合理的比例");
+ }
+
+ commonService.updateDataDic(
+ GreenScoreEnum.ROLE_RELEASE_PERCENT.getType(),
+ GreenScoreEnum.ROLE_RELEASE_PERCENT.getCode(),
+ hlmVoucherSetDto.getRoleReleasePercent());
+
+ commonService.updateDataDic(
+ GreenScoreEnum.ACHIEVE_RELEASE_PERCENT.getType(),
+ GreenScoreEnum.ACHIEVE_RELEASE_PERCENT.getCode(),
+ hlmVoucherSetDto.getAchieveReleasePercent());
+
+ commonService.updateDataDic(
+ GreenScoreEnum.ACHIEVE_MAX.getType(),
+ GreenScoreEnum.ACHIEVE_MAX.getCode(),
+ hlmVoucherSetDto.getAchieveMax());
+
+ commonService.updateDataDic(
+ GreenScoreEnum.ACHIEVE_MIN.getType(),
+ GreenScoreEnum.ACHIEVE_MIN.getCode(),
+ hlmVoucherSetDto.getAchieveMin());
+
+ commonService.updateDataDic(
+ GreenScoreEnum.ROLE_ACHIEVE_PERCENT.getType(),
+ GreenScoreEnum.ROLE_ACHIEVE_PERCENT.getCode(),
+ hlmVoucherSetDto.getRoleAchievePercent());
+
+ commonService.updateDataDic(
+ GreenScoreEnum.STAR_ACHIEVE_PERCENT.getType(),
+ GreenScoreEnum.STAR_ACHIEVE_PERCENT.getCode(),
+ hlmVoucherSetDto.getStarAchievePercent());
+
+ commonService.updateDataDic(
+ GreenScoreEnum.LEVEL_ACHIEVE_PERCENT.getType(),
+ GreenScoreEnum.LEVEL_ACHIEVE_PERCENT.getCode(),
+ hlmVoucherSetDto.getLevelAchievePercent());
+ return new FebsResponse().success();
+ }
}
diff --git a/src/main/java/cc/mrbird/febs/mall/controller/ViewMallMemberController.java b/src/main/java/cc/mrbird/febs/mall/controller/ViewMallMemberController.java
index b0e2688..767c777 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/ViewMallMemberController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/ViewMallMemberController.java
@@ -28,6 +28,10 @@
public static long idFromAgentAllMember;
+ public static long idFromScoreRoleRelease;
+
+ public static long idFromScoreAchieveRelease;
+
/**
* 平台账单
* @return
@@ -85,6 +89,21 @@
model.addAttribute("systemPay", data);
model.addAttribute("type", type);
return FebsUtil.view("modules/mallMember/mallSystemPay");
+ }
+
+ /**
+ * 会员列表-系统拨付绿色凭证
+ * @param id
+ * @param model
+ * @return
+ */
+ @GetMapping("voucherUpdate/{type}/{id}")
+ @RequiresPermissions("voucherUpdate:update")
+ public String voucherUpdate(@PathVariable long id, @PathVariable Integer type, Model model) {
+ MallMemberVo data = mallMemberService.getMallMemberInfoById(id);
+ model.addAttribute("systemPay", data);
+ model.addAttribute("type", type);
+ return FebsUtil.view("modules/mallMember/voucherUpdate");
}
/**
@@ -304,6 +323,52 @@
}
+ /**
+ * 创世释放记录-列表
+ * @return
+ */
+ @GetMapping("scoreRoleRelease")
+ @RequiresPermissions("scoreRoleRelease:view")
+ public String scoreRoleRelease() {
+ return FebsUtil.view("modules/mallMember/scoreRoleRelease");
+ }
+
+ /**
+ * 创世释放记录-全部记录
+ * @param id
+ * @param model
+ * @return
+ */
+ @GetMapping("scoreRoleReleaseList/{id}")
+ public String scoreRoleReleaseList(@PathVariable long id, Model model) {
+ idFromScoreRoleRelease = id;
+ return FebsUtil.view("modules/mallMember/scoreRoleReleaseList");
+ }
+
+
+ /**
+ * 业绩释放记录-列表
+ * @return
+ */
+ @GetMapping("scoreAchieveRelease")
+ @RequiresPermissions("scoreAchieveRelease:view")
+ public String scoreAchieveRelease() {
+ return FebsUtil.view("modules/mallMember/scoreAchieveRelease");
+ }
+
+ /**
+ * 业绩释放记录-全部记录
+ * @param id
+ * @param model
+ * @return
+ */
+ @GetMapping("scoreAchieveReleaseList/{id}")
+ public String scoreAchieveReleaseList(@PathVariable long id, Model model) {
+ idFromScoreAchieveRelease = id;
+ return FebsUtil.view("modules/mallMember/scoreAchieveReleaseList");
+ }
+
+
}
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 30abf20..796674d 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/ViewSystemController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/ViewSystemController.java
@@ -3,6 +3,7 @@
import cc.mrbird.febs.common.entity.FebsConstant;
import cc.mrbird.febs.common.enumerates.AgentLevelEnum;
import cc.mrbird.febs.common.enumerates.DataDictionaryEnum;
+import cc.mrbird.febs.common.enumerates.GreenScoreEnum;
import cc.mrbird.febs.common.enumerates.OrderPayMethodEnum;
import cc.mrbird.febs.common.service.ValidateCodeService;
import cc.mrbird.febs.common.utils.FebsUtil;
@@ -217,4 +218,80 @@
model.addAttribute("hlmBasicPerk", hlmBasicPerkDto);
return FebsUtil.view("modules/system/hlmBasicPerk");
}
+
+ /**
+ * 积分凭证设置
+ * @param model
+ * @return
+ */
+ @GetMapping("hlmVoucherSet")
+ @RequiresPermissions("hlmVoucherSet:view")
+ public String hlmVoucherSet(Model model) {
+ HlmVoucherSetDto hlmVoucherSetDto = new HlmVoucherSetDto();
+ DataDictionaryCustom totalCntDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ GreenScoreEnum.TOTAL_CNT.getType(),
+ GreenScoreEnum.TOTAL_CNT.getCode());
+ if (totalCntDic != null) {
+ String totalCnt = ObjectUtil.isEmpty(totalCntDic.getValue()) ? "0" : totalCntDic.getValue();
+ hlmVoucherSetDto.setTotalCnt(totalCnt);
+ }
+ DataDictionaryCustom surplusCntDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ GreenScoreEnum.SURPLUS_CNT.getType(),
+ GreenScoreEnum.SURPLUS_CNT.getCode());
+ if (surplusCntDic != null) {
+ String surplusCnt = ObjectUtil.isEmpty(surplusCntDic.getValue()) ? "0" : surplusCntDic.getValue();
+ hlmVoucherSetDto.setSurplusCnt(surplusCnt);
+ }
+ DataDictionaryCustom roleReleasePercentDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ GreenScoreEnum.ROLE_RELEASE_PERCENT.getType(),
+ GreenScoreEnum.ROLE_RELEASE_PERCENT.getCode());
+ if (roleReleasePercentDic != null) {
+ String roleReleasePercent = ObjectUtil.isEmpty(roleReleasePercentDic.getValue()) ? "0" : roleReleasePercentDic.getValue();
+ hlmVoucherSetDto.setRoleReleasePercent(roleReleasePercent);
+ }
+ DataDictionaryCustom achieveReleasePercentDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ GreenScoreEnum.ACHIEVE_RELEASE_PERCENT.getType(),
+ GreenScoreEnum.ACHIEVE_RELEASE_PERCENT.getCode());
+ if (achieveReleasePercentDic != null) {
+ String achieveReleasePercent = ObjectUtil.isEmpty(achieveReleasePercentDic.getValue()) ? "0" : achieveReleasePercentDic.getValue();
+ hlmVoucherSetDto.setAchieveReleasePercent(achieveReleasePercent);
+ }
+ DataDictionaryCustom achieveMaxDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ GreenScoreEnum.ACHIEVE_MAX.getType(),
+ GreenScoreEnum.ACHIEVE_MAX.getCode());
+ if (achieveMaxDic != null) {
+ String achieveMax = ObjectUtil.isEmpty(achieveMaxDic.getValue()) ? "0" : achieveMaxDic.getValue();
+ hlmVoucherSetDto.setAchieveMax(achieveMax);
+ }
+ DataDictionaryCustom achieveMinDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ GreenScoreEnum.ACHIEVE_MIN.getType(),
+ GreenScoreEnum.ACHIEVE_MIN.getCode());
+ if (achieveMinDic != null) {
+ String achieveMin = ObjectUtil.isEmpty(achieveMinDic.getValue()) ? "0" : achieveMinDic.getValue();
+ hlmVoucherSetDto.setAchieveMin(achieveMin);
+ }
+ DataDictionaryCustom roleAchievePercentDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ GreenScoreEnum.ROLE_ACHIEVE_PERCENT.getType(),
+ GreenScoreEnum.ROLE_ACHIEVE_PERCENT.getCode());
+ if (roleAchievePercentDic != null) {
+ String roleAchievePercent = ObjectUtil.isEmpty(roleAchievePercentDic.getValue()) ? "0" : roleAchievePercentDic.getValue();
+ hlmVoucherSetDto.setRoleAchievePercent(roleAchievePercent);
+ }
+ DataDictionaryCustom starAchievePercentDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ GreenScoreEnum.STAR_ACHIEVE_PERCENT.getType(),
+ GreenScoreEnum.STAR_ACHIEVE_PERCENT.getCode());
+ if (starAchievePercentDic != null) {
+ String starAchievePercent = ObjectUtil.isEmpty(starAchievePercentDic.getValue()) ? "0" : starAchievePercentDic.getValue();
+ hlmVoucherSetDto.setStarAchievePercent(starAchievePercent);
+ }
+ DataDictionaryCustom levelAchievePercentDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ GreenScoreEnum.LEVEL_ACHIEVE_PERCENT.getType(),
+ GreenScoreEnum.LEVEL_ACHIEVE_PERCENT.getCode());
+ if (levelAchievePercentDic != null) {
+ String levelAchievePercent = ObjectUtil.isEmpty(levelAchievePercentDic.getValue()) ? "0" : levelAchievePercentDic.getValue();
+ hlmVoucherSetDto.setLevelAchievePercent(levelAchievePercent);
+ }
+ model.addAttribute("hlmVoucherSetDto", hlmVoucherSetDto);
+ return FebsUtil.view("modules/system/hlmVoucherSet");
+ }
}
diff --git a/src/main/java/cc/mrbird/febs/mall/dto/AdminRoleReleaseDto.java b/src/main/java/cc/mrbird/febs/mall/dto/AdminRoleReleaseDto.java
new file mode 100644
index 0000000..b0d8c66
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/dto/AdminRoleReleaseDto.java
@@ -0,0 +1,11 @@
+package cc.mrbird.febs.mall.dto;
+
+import lombok.Data;
+
+@Data
+public class AdminRoleReleaseDto {
+
+ private String name;
+
+ private String account;
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/dto/HlmVoucherSetDto.java b/src/main/java/cc/mrbird/febs/mall/dto/HlmVoucherSetDto.java
new file mode 100644
index 0000000..45cb50c
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/dto/HlmVoucherSetDto.java
@@ -0,0 +1,46 @@
+package cc.mrbird.febs.mall.dto;
+
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+@Data
+@ApiModel(value = "HlmVoucherSetDto", description = "绿色凭证设置")
+public class HlmVoucherSetDto {
+ /**
+ * 绿色积分总数
+ */
+ private String totalCnt;
+ /**
+ * 绿色积分剩余数量
+ */
+ private String surplusCnt;
+ /**
+ * 创始角色的每日释放积分比例(千分之几)
+ */
+ private String roleReleasePercent;
+ /**
+ * 业绩最大值
+ */
+ private String achieveMax;
+ /**
+ * 业绩最小值
+ */
+ private String achieveMin;
+ /**
+ * 每日总释放积分凭证比例(万分之几)
+ */
+ private String achieveReleasePercent;
+ /**
+ * 业绩积分凭证每日释放联创、合伙人的比例
+ */
+ private String roleAchievePercent;
+ /**
+ * 业绩积分凭证按贡献点比例
+ */
+ private String starAchievePercent;
+ /**
+ * 业绩积分凭证按用户星级比例
+ */
+ private String levelAchievePercent;
+
+}
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 f349c52..3010f79 100644
--- a/src/main/java/cc/mrbird/febs/mall/entity/MallMember.java
+++ b/src/main/java/cc/mrbird/febs/mall/entity/MallMember.java
@@ -138,4 +138,24 @@
*/
private Integer storeMaster;
+ /**
+ * 联创 1-是 2-否
+ */
+ private Integer creater;
+
+ /**
+ * 合伙人 1-是 2-否
+ */
+ private Integer partner;
+ /**
+ * 绿色凭证
+ */
+ @TableField(exist = false)
+ private BigDecimal voucherCnt;
+ /**
+ * 凭证现金
+ */
+ @TableField(exist = false)
+ private BigDecimal voucherAmount;
+
}
diff --git a/src/main/java/cc/mrbird/febs/mall/entity/MallMemberWallet.java b/src/main/java/cc/mrbird/febs/mall/entity/MallMemberWallet.java
index cd46097..bf21ddc 100644
--- a/src/main/java/cc/mrbird/febs/mall/entity/MallMemberWallet.java
+++ b/src/main/java/cc/mrbird/febs/mall/entity/MallMemberWallet.java
@@ -48,4 +48,14 @@
* 贡献点
*/
private Integer star;
+
+ /**
+ * 凭证数量
+ */
+ private BigDecimal voucherCnt;
+
+ /**
+ * 凭证金额
+ */
+ private BigDecimal voucherAmount;
}
diff --git a/src/main/java/cc/mrbird/febs/mall/entity/MallMoneyFlow.java b/src/main/java/cc/mrbird/febs/mall/entity/MallMoneyFlow.java
index 5d43427..5b05c03 100644
--- a/src/main/java/cc/mrbird/febs/mall/entity/MallMoneyFlow.java
+++ b/src/main/java/cc/mrbird/febs/mall/entity/MallMoneyFlow.java
@@ -1,6 +1,7 @@
package cc.mrbird.febs.mall.entity;
import cc.mrbird.febs.common.entity.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
@@ -46,4 +47,10 @@
* 流水类型 1-余额 2-赠送积分 3-竞猜积分 4-佣金
*/
private Integer flowType;
+
+ @TableField(exist = false)
+ private String name;
+
+ @TableField(exist = false)
+ private String phone;
}
diff --git a/src/main/java/cc/mrbird/febs/mall/entity/MallScoreAchieveRelease.java b/src/main/java/cc/mrbird/febs/mall/entity/MallScoreAchieveRelease.java
new file mode 100644
index 0000000..75ba2d7
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/entity/MallScoreAchieveRelease.java
@@ -0,0 +1,31 @@
+package cc.mrbird.febs.mall.entity;
+
+import cc.mrbird.febs.common.entity.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * 业绩释放凭证记录
+ */
+@Data
+@TableName("mall_score_achieve_release")
+public class MallScoreAchieveRelease extends BaseEntity {
+ /**
+ * 编号
+ */
+ private String releaseNo;
+ /**
+ * 业绩总数
+ */
+ private BigDecimal achieve;
+ /**
+ * 预期产生凭证数量
+ */
+ private BigDecimal voucherExpect;
+ /**
+ * 实际产生凭证数量
+ */
+ private BigDecimal voucherReal;
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/entity/MallScoreRecord.java b/src/main/java/cc/mrbird/febs/mall/entity/MallScoreRecord.java
new file mode 100644
index 0000000..73937ee
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/entity/MallScoreRecord.java
@@ -0,0 +1,39 @@
+package cc.mrbird.febs.mall.entity;
+
+import cc.mrbird.febs.common.entity.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * 会员购买绿色凭证(绿色积分)
+ */
+@Data
+@TableName("mall_score_record")
+public class MallScoreRecord extends BaseEntity {
+
+ private Long memberId;
+ /**
+ * 编号
+ */
+ private String scoreNo;
+ /**
+ * 积分数量
+ */
+ private BigDecimal scoreCnt;
+ /**
+ * 剩余数量
+ */
+ private BigDecimal surplusCnt;
+
+ @TableField(exist = false)
+ private String name;
+
+ @TableField(exist = false)
+ private String phone;
+
+ @TableField(exist = false)
+ private String inviteId;
+}
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 86dd69b..f2a20f3 100644
--- a/src/main/java/cc/mrbird/febs/mall/mapper/MallAchieveRecordMapper.java
+++ b/src/main/java/cc/mrbird/febs/mall/mapper/MallAchieveRecordMapper.java
@@ -18,4 +18,6 @@
BigDecimal selectAchieveTotal(@Param("type") String type, @Param("date") Date date);
BigDecimal selectSumAchieveByMemberIds(@Param("list")List<Long> mallMembersOffLinePerkIds, @Param("date") Date date);
+
+ List<MallAchieveRecord> selectListByDate(@Param("date")Date profitDate);
}
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 6e486ac..60f30cd 100644
--- a/src/main/java/cc/mrbird/febs/mall/mapper/MallMemberMapper.java
+++ b/src/main/java/cc/mrbird/febs/mall/mapper/MallMemberMapper.java
@@ -93,4 +93,12 @@
List<MallMember> selectMemberByDirector(@Param("state")Integer state);
List<MallMember> selectMemberByStoreMaster(@Param("state")Integer state);
+
+ /**
+ * 根据type查询对应的角色的集合
+ * @param type 3:联创 4:合伙人
+ * @param state 1:是 2:否
+ * @return
+ */
+ List<MallMember> selectByRole(@Param("type") int type, @Param("state")int state);
}
diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/MallMemberWalletMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/MallMemberWalletMapper.java
index f9f04b1..dcb70c8 100644
--- a/src/main/java/cc/mrbird/febs/mall/mapper/MallMemberWalletMapper.java
+++ b/src/main/java/cc/mrbird/febs/mall/mapper/MallMemberWalletMapper.java
@@ -41,4 +41,10 @@
void addStarByMemberId(@Param("star")Integer starSum, @Param("memberId")Long memberId);
void reduceStarByMemberId(@Param("star")int i, @Param("memberId")Long memberId);
+
+ void addVorCherCntByMemberId(@Param("voucherCnt")BigDecimal voucherCnt, @Param("memberId")Long memberId);
+
+ BigDecimal selectSumStar();
+
+ List<MallMemberWallet> selectStar();
}
diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/MallScoreAchieveReleaseMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/MallScoreAchieveReleaseMapper.java
new file mode 100644
index 0000000..3f5412b
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/mapper/MallScoreAchieveReleaseMapper.java
@@ -0,0 +1,16 @@
+package cc.mrbird.febs.mall.mapper;
+
+import cc.mrbird.febs.mall.dto.AdminRoleReleaseDto;
+import cc.mrbird.febs.mall.entity.MallMoneyFlow;
+import cc.mrbird.febs.mall.entity.MallScoreAchieveRelease;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.ibatis.annotations.Param;
+
+public interface MallScoreAchieveReleaseMapper extends BaseMapper<MallScoreAchieveRelease> {
+
+ IPage<MallScoreAchieveRelease> gerAchieveReleaseListInPage(Page<MallScoreAchieveRelease> page, @Param("record")AdminRoleReleaseDto roleReleaseDto);
+
+ IPage<MallMoneyFlow> gerAchieveReleaseChildInPage(Page<MallMoneyFlow> page, @Param("record")MallScoreAchieveRelease mallScoreAchieve);
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/MallScoreRecordMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/MallScoreRecordMapper.java
new file mode 100644
index 0000000..18c4ba8
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/mapper/MallScoreRecordMapper.java
@@ -0,0 +1,23 @@
+package cc.mrbird.febs.mall.mapper;
+
+import cc.mrbird.febs.mall.dto.AdminRoleReleaseDto;
+import cc.mrbird.febs.mall.entity.MallMoneyFlow;
+import cc.mrbird.febs.mall.entity.MallScoreRecord;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.ibatis.annotations.Param;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+public interface MallScoreRecordMapper extends BaseMapper<MallScoreRecord> {
+
+ BigDecimal selectSumScoreCnt();
+
+ List<MallScoreRecord> selectList();
+
+ IPage<MallScoreRecord> gerRoleReleaseListInPage(Page<MallScoreRecord> page, @Param("record")AdminRoleReleaseDto roleReleaseDto);
+
+ IPage<MallMoneyFlow> gerRoleReleaseChildInPage(Page<MallMoneyFlow> page, @Param("record")MallScoreRecord mallScoreRecord);
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/quartz/ProfitJob.java b/src/main/java/cc/mrbird/febs/mall/quartz/ProfitJob.java
index 63db4b2..62c44f7 100644
--- a/src/main/java/cc/mrbird/febs/mall/quartz/ProfitJob.java
+++ b/src/main/java/cc/mrbird/febs/mall/quartz/ProfitJob.java
@@ -59,7 +59,7 @@
// }
/**
- * 代理商补贴
+ * 代理商补贴 TODO 需要去掉注释
*/
@Scheduled(cron = "0 0 1 * * ?")
public void agentPerkJob() {
@@ -90,6 +90,23 @@
public void mqPerkRetryJob() {
memberProfitService.mqPerkRetryJob();
}
+ /**
+ * 联创、合伙人的每日绿色凭证释放
+ */
+ @Scheduled(cron = "0 0 1 * * ?")
+ public void scoreRecordReleaseJob() {
+ memberProfitService.scoreRecordReleaseJob();
+ }
+
+ /**
+ * 业绩产生凭证
+ */
+ @Scheduled(cron = "0 0 1 * * ?")
+ public void achieveReleaseJob() {
+ memberProfitService.achieveReleaseJob();
+ }
+
+
/**
diff --git a/src/main/java/cc/mrbird/febs/mall/service/IAdminMallMemberService.java b/src/main/java/cc/mrbird/febs/mall/service/IAdminMallMemberService.java
index 09fc113..819fd08 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/IAdminMallMemberService.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/IAdminMallMemberService.java
@@ -3,10 +3,7 @@
import cc.mrbird.febs.common.entity.FebsResponse;
import cc.mrbird.febs.common.entity.QueryRequest;
import cc.mrbird.febs.mall.dto.*;
-import cc.mrbird.febs.mall.entity.AppVersion;
-import cc.mrbird.febs.mall.entity.MallMember;
-import cc.mrbird.febs.mall.entity.MallNewsInfo;
-import cc.mrbird.febs.mall.entity.MallShopApply;
+import cc.mrbird.febs.mall.entity.*;
import cc.mrbird.febs.mall.vo.*;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
@@ -97,4 +94,20 @@
void updateShopApply(MallShopApply apply);
AdminMallMemberPaymentVo getMallBankInfoById(long id);
+
+ FebsResponse updateVoucher(MallSystemPayDto mallSystemPayDto);
+
+ /**
+ * 后台查询会员购买绿色凭证(绿色积分)
+ * @param roleReleaseDto
+ * @param request
+ * @return
+ */
+ IPage<MallScoreRecord> gerRoleReleaseList(AdminRoleReleaseDto roleReleaseDto, QueryRequest request);
+
+ IPage<MallMoneyFlow> roleReleaseChild(QueryRequest request, MallScoreRecord mallScoreRecord);
+
+ IPage<MallScoreAchieveRelease> gerAchieveReleaseList(AdminRoleReleaseDto roleReleaseDto, QueryRequest request);
+
+ IPage<MallMoneyFlow> achieveReleaseChild(QueryRequest request, MallScoreAchieveRelease mallScoreAchieveRelease);
}
diff --git a/src/main/java/cc/mrbird/febs/mall/service/IMemberProfitService.java b/src/main/java/cc/mrbird/febs/mall/service/IMemberProfitService.java
index 4d3e914..0251cd1 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/IMemberProfitService.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/IMemberProfitService.java
@@ -49,4 +49,8 @@
void teamEqualsPerkJob(Date profitDate);
void mqPerkRetryJob();
+
+ void scoreRecordReleaseJob();
+
+ void achieveReleaseJob();
}
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallMemberServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallMemberServiceImpl.java
index e97394b..99cccf7 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallMemberServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallMemberServiceImpl.java
@@ -4,6 +4,7 @@
import cc.mrbird.febs.common.entity.QueryRequest;
import cc.mrbird.febs.common.enumerates.AgentLevelEnum;
import cc.mrbird.febs.common.enumerates.FlowTypeEnum;
+import cc.mrbird.febs.common.enumerates.GreenScoreEnum;
import cc.mrbird.febs.common.enumerates.MoneyFlowTypeEnum;
import cc.mrbird.febs.common.exception.FebsException;
import cc.mrbird.febs.common.utils.LoginUserUtil;
@@ -69,6 +70,8 @@
private final IMallMoneyFlowService mallMoneyFlowService;
private final UnipayService unipayService;
private final MallMemberBankMapper mallMemberBankMapper;
+ private final MallScoreRecordMapper mallScoreRecordMapper;
+ private final MallScoreAchieveReleaseMapper mallScoreAchieveReleaseMapper;
@Override
public IPage<MallMember> getMallMemberList(MallMember mallMember, QueryRequest request) {
@@ -121,6 +124,10 @@
// throw new FebsException("团队存在线下服务中心,账号为【"+phoneList.toString()+"】");
// }
mallMember.setStoreMaster(value);
+ }else if (type == 3){
+ mallMember.setCreater(value);
+ } else if (type == 4){
+ mallMember.setPartner(value);
} else {
throw new FebsException("参数错误");
}
@@ -629,6 +636,88 @@
return adminMallMemberPaymentVo;
}
+ @Override
+ public FebsResponse updateVoucher(MallSystemPayDto mallSystemPayDto) {
+ Long memberId = mallSystemPayDto.getId();
+ MallMember mallMember = mallMemberMapper.selectById(memberId);
+ if(ObjectUtil.isEmpty(mallMember)){
+ return new FebsResponse().fail().message("系统繁忙,请刷新页面重试");
+ }
+
+ BigDecimal addBalance = mallSystemPayDto.getAddBalance();
+ if(addBalance.compareTo(BigDecimal.ZERO) <= 0){
+ return new FebsResponse().fail().message("请输入正确的数量");
+ }
+
+ DataDictionaryCustom totalCntDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ GreenScoreEnum.TOTAL_CNT.getType(),
+ GreenScoreEnum.TOTAL_CNT.getCode()
+ );
+
+ BigDecimal totalCnt = new BigDecimal(totalCntDic.getValue());
+ //凭证占总数的10%
+ BigDecimal roleCnt = totalCnt.multiply(new BigDecimal(0.1));
+ //获取已卖出的凭证数量
+ BigDecimal roleCntSale = mallScoreRecordMapper.selectSumScoreCnt().setScale(2,BigDecimal.ROUND_DOWN);
+ roleCntSale = roleCntSale.add(addBalance);
+
+ if(roleCnt.compareTo(roleCntSale) < 0){
+ return new FebsResponse().fail().message("已拨付:"+roleCntSale);
+ }
+ /**
+ * 增加一条会员购买记录
+ * mall_score_record
+ */
+ MallScoreRecord mallScoreRecord = new MallScoreRecord();
+ mallScoreRecord.setMemberId(memberId);
+ mallScoreRecord.setScoreNo(MallUtils.getOrderNum("MSR"));
+ mallScoreRecord.setScoreCnt(addBalance);
+ mallScoreRecord.setSurplusCnt(addBalance);
+ mallScoreRecordMapper.insert(mallScoreRecord);
+ /**
+ * 减少剩余绿色凭证数量
+ */
+ DataDictionaryCustom surplusCntDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ GreenScoreEnum.SURPLUS_CNT.getType(),
+ GreenScoreEnum.SURPLUS_CNT.getCode()
+ );
+ BigDecimal surplusCnt = new BigDecimal(surplusCntDic.getValue());
+ surplusCnt = surplusCnt.subtract(addBalance);
+ surplusCntDic.setValue(surplusCnt.toString());
+ dataDictionaryCustomMapper.updateById(surplusCntDic);
+ return new FebsResponse().success();
+ }
+
+ @Override
+ public IPage<MallScoreRecord> gerRoleReleaseList(AdminRoleReleaseDto roleReleaseDto, QueryRequest request) {
+ Page<MallScoreRecord> page = new Page<>(request.getPageNum(), request.getPageSize());
+ IPage<MallScoreRecord> mallScoreRecordIPage = mallScoreRecordMapper.gerRoleReleaseListInPage(page, roleReleaseDto);
+ return mallScoreRecordIPage;
+ }
+
+ @Override
+ public IPage<MallMoneyFlow> roleReleaseChild(QueryRequest request, MallScoreRecord mallScoreRecord) {
+ Page<MallMoneyFlow> page = new Page<>(request.getPageNum(), request.getPageSize());
+ MallScoreRecord mallScore = mallScoreRecordMapper.selectById(mallScoreRecord.getId());
+ IPage<MallMoneyFlow> mallMoneyFlowIPage = mallScoreRecordMapper.gerRoleReleaseChildInPage(page, mallScore);
+ return mallMoneyFlowIPage;
+ }
+
+ @Override
+ public IPage<MallScoreAchieveRelease> gerAchieveReleaseList(AdminRoleReleaseDto roleReleaseDto, QueryRequest request) {
+ Page<MallScoreAchieveRelease> page = new Page<>(request.getPageNum(), request.getPageSize());
+ IPage<MallScoreAchieveRelease> MallScoreAchieveReleases = mallScoreAchieveReleaseMapper.gerAchieveReleaseListInPage(page, roleReleaseDto);
+ return MallScoreAchieveReleases;
+ }
+
+ @Override
+ public IPage<MallMoneyFlow> achieveReleaseChild(QueryRequest request, MallScoreAchieveRelease mallScoreAchieveRelease) {
+ Page<MallMoneyFlow> page = new Page<>(request.getPageNum(), request.getPageSize());
+ MallScoreAchieveRelease mallScoreAchieve = mallScoreAchieveReleaseMapper.selectById(mallScoreAchieveRelease.getId());
+ IPage<MallMoneyFlow> mallMoneyFlowIPage = mallScoreAchieveReleaseMapper.gerAchieveReleaseChildInPage(page, mallScoreAchieve);
+ return mallMoneyFlowIPage;
+ }
+
private String refererIds(String parentId) {
boolean flag = false;
if (StrUtil.isBlank(parentId)) {
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
index 1a380ba..c87ca01 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
@@ -448,6 +448,7 @@
* 所有合伙人补贴至消费礼包的三倍额度需要复购一次。
*/
BigDecimal scoreSum = BigDecimal.ZERO;
+ BigDecimal achieveSum = BigDecimal.ZERO;
List<MallOrderItem> orderItems = this.baseMapper.getMallOrderItemByOrderId(orderInfo.getId());
if (CollUtil.isNotEmpty(orderItems)) {
for (MallOrderItem orderItem : orderItems) {
@@ -488,6 +489,11 @@
new BigDecimal(mallGoods.getPresentPrice())
.multiply(new BigDecimal(orderItem.getCnt()))
.multiply(basePercent)
+ .abs()
+ .setScale(2,BigDecimal.ROUND_DOWN));
+ achieveSum = achieveSum.add(
+ new BigDecimal(mallGoods.getPresentPrice())
+ .multiply(new BigDecimal(orderItem.getCnt()))
.abs()
.setScale(2,BigDecimal.ROUND_DOWN));
}
@@ -608,13 +614,15 @@
/**
* 产生一条业绩记录
*/
- MallAchieveRecord mallAchieveRecord = new MallAchieveRecord();
- mallAchieveRecord.setMemberId(memberId);
- mallAchieveRecord.setAchieveTime(new Date());
- mallAchieveRecord.setAmount(orderInfo.getAmount().subtract(orderInfo.getScoreAmount()));
- mallAchieveRecord.setOrderId(orderId);
- mallAchieveRecord.setPayTime(orderInfo.getPayTime());
- mallAchieveRecordMapper.insert(mallAchieveRecord);
+ if(achieveSum.compareTo(BigDecimal.ZERO) > 0){
+ MallAchieveRecord mallAchieveRecord = new MallAchieveRecord();
+ mallAchieveRecord.setMemberId(memberId);
+ mallAchieveRecord.setAchieveTime(new Date());
+ mallAchieveRecord.setAmount(achieveSum.subtract(orderInfo.getScoreAmount()));
+ mallAchieveRecord.setOrderId(orderId);
+ mallAchieveRecord.setPayTime(orderInfo.getPayTime());
+ mallAchieveRecordMapper.insert(mallAchieveRecord);
+ }
}
public static void main(String[] args) {
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 b71bb06..5993c95 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
@@ -1,9 +1,6 @@
package cc.mrbird.febs.mall.service.impl;
-import cc.mrbird.febs.common.enumerates.AgentLevelEnum;
-import cc.mrbird.febs.common.enumerates.DataDictionaryEnum;
-import cc.mrbird.febs.common.enumerates.FlowTypeEnum;
-import cc.mrbird.febs.common.enumerates.MoneyFlowTypeEnum;
+import cc.mrbird.febs.common.enumerates.*;
import cc.mrbird.febs.common.utils.AppContants;
import cc.mrbird.febs.common.utils.MallUtils;
import cc.mrbird.febs.common.utils.RedisUtils;
@@ -59,6 +56,8 @@
private final IMallMoneyFlowService mallMoneyFlowService;
private final MallMqRecordMapper mallMqRecordMapper;
private final AgentProducer agentProducer;
+ private final MallScoreRecordMapper mallScoreRecordMapper;
+ private final MallScoreAchieveReleaseMapper mallScoreAchieveReleaseMapper;
@Override
@Transactional(rollbackFor = Exception.class)
@@ -789,4 +788,298 @@
}
}
+ @Override
+ public void scoreRecordReleaseJob() {
+ /**
+ * 每日按照比例释放记录的百分比到用户的绿色凭证账户
+ */
+ //获取全部剩余数量大于零的记录
+ List<MallScoreRecord> mallScoreRecords = mallScoreRecordMapper.selectList();
+ if(CollUtil.isEmpty(mallScoreRecords)){
+ return;
+ }
+
+ DataDictionaryCustom roleReleasePercentDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ GreenScoreEnum.ROLE_RELEASE_PERCENT.getType(),
+ GreenScoreEnum.ROLE_RELEASE_PERCENT.getCode()
+ );
+ if(ObjectUtil.isEmpty(roleReleasePercentDic)){
+ return;
+ }
+ //释放比例
+ BigDecimal roleReleasePercent = new BigDecimal(roleReleasePercentDic.getValue()).multiply(new BigDecimal(0.001));
+ for(MallScoreRecord mallScoreRecord : mallScoreRecords){
+ Long memberId = mallScoreRecord.getMemberId();
+ //每日释放的绿色凭证数量 = 总数 * 释放比例
+ BigDecimal scoreCnt = mallScoreRecord.getScoreCnt();
+ BigDecimal scoreReleaseCnt = scoreCnt.multiply(roleReleasePercent).setScale(2,BigDecimal.ROUND_DOWN);
+
+ BigDecimal surplusCnt = mallScoreRecord.getSurplusCnt();
+ if(scoreReleaseCnt.compareTo(surplusCnt) >= 0){
+ scoreReleaseCnt = surplusCnt;
+ }
+ if(scoreReleaseCnt.compareTo(BigDecimal.ZERO) > 0){
+ releaseToMemberAndAddFlow(scoreReleaseCnt,memberId,
+ MoneyFlowTypeEnum.ROLE_RELEASE_SCORE.getValue(),mallScoreRecord.getScoreNo());
+
+ //更新凭证记录的剩余数量
+ surplusCnt = surplusCnt.subtract(scoreReleaseCnt);
+ mallScoreRecord.setSurplusCnt(surplusCnt);
+ mallScoreRecordMapper.updateById(mallScoreRecord);
+ }
+ }
+ }
+
+ @Override
+ public void achieveReleaseJob() {
+ /**
+ * 业绩产生凭证
+ * 获取每日最大产生的凭证数量
+ * 获取每日总业绩
+ * 获取业绩产生凭证的最大值和最小值
+ * 每条业绩记录占
+ */
+
+ //获取每日总业绩
+ Date profitDate = DateUtil.offset(new Date(), DateField.DAY_OF_YEAR, -1);
+ BigDecimal achieveTotal = mallAchieveRecordMapper.selectAchieveTotal("D", profitDate);
+
+ DataDictionaryCustom achieveMinDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ GreenScoreEnum.ACHIEVE_MIN.getType(),
+ GreenScoreEnum.ACHIEVE_MIN.getCode()
+ );
+ //业绩的最小值
+ BigDecimal achieveMin = new BigDecimal(achieveMinDic.getValue() == null ? "0" : achieveMinDic.getValue());
+ if(achieveTotal.compareTo(achieveMin) < 0){
+ return;
+ }
+
+ DataDictionaryCustom achieveMaxDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ GreenScoreEnum.ACHIEVE_MAX.getType(),
+ GreenScoreEnum.ACHIEVE_MAX.getCode()
+ );
+ //业绩的最大值
+ BigDecimal achieveMax = new BigDecimal(achieveMaxDic.getValue() == null ? "0" : achieveMaxDic.getValue());
+
+ /**
+ * 获取每日最大产生的凭证数量
+ */
+ BigDecimal achieveDailyRelease = getAchieveDailyRelease();
+
+ if(achieveTotal.compareTo(achieveMax) < 0){
+ BigDecimal divide = achieveTotal.divide(achieveMax, 2, BigDecimal.ROUND_DOWN);
+ achieveDailyRelease = achieveDailyRelease.multiply(divide).setScale(2,BigDecimal.ROUND_DOWN);
+ }
+ /**
+ * 实际每日最大产生的凭证数量
+ */
+ BigDecimal achieveDailyReleaseReal = BigDecimal.ZERO;
+ /**
+ * 业务编号
+ */
+ String scoreNo = MallUtils.getOrderNum("ARSX");
+
+ /**
+ * 20%给合伙人、联创
+ * 5% 给联创
+ * 15% 给合伙人
+ */
+ DataDictionaryCustom roleAchievePercentDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ GreenScoreEnum.ROLE_ACHIEVE_PERCENT.getType(),
+ GreenScoreEnum.ROLE_ACHIEVE_PERCENT.getCode()
+ );
+ //业绩产生凭证给创世的比例
+ BigDecimal roleAchievePercent = new BigDecimal(roleAchievePercentDic.getValue() == null ? "0" : roleAchievePercentDic.getValue())
+ .multiply(new BigDecimal(0.01));
+ //创世的凭证数量
+ BigDecimal roleAchieveRelease = achieveDailyRelease.multiply(roleAchievePercent).setScale(2, BigDecimal.ROUND_DOWN);
+ List<MallMember> roleAchieveReleaseMembers = mallMemberMapper.selectByRole(3,1);
+ if(CollUtil.isNotEmpty(roleAchieveReleaseMembers)){
+ //联创拿走0.25
+ BigDecimal multiply = roleAchieveRelease.multiply(new BigDecimal(0.25));
+ BigDecimal memberAchieveRelease = multiply.divide(new BigDecimal(roleAchieveReleaseMembers.size()), 2, BigDecimal.ROUND_DOWN);
+ if(memberAchieveRelease.compareTo(BigDecimal.ZERO) > 0){
+ for(MallMember mallMember : roleAchieveReleaseMembers){
+
+ releaseToMemberAndAddFlow(memberAchieveRelease,mallMember.getId(),
+ MoneyFlowTypeEnum.ACHIEVE_RELEASE_SCORE_LC.getValue(),scoreNo);
+
+ achieveDailyReleaseReal = achieveDailyReleaseReal.add(memberAchieveRelease);
+ }
+ }
+ }
+ //合伙人拿走0.75
+ List<MallMember> roleAchieveReleaseHHR = mallMemberMapper.selectByRole(4,1);
+ if(CollUtil.isNotEmpty(roleAchieveReleaseHHR)){
+ //合伙人拿走0.75
+ BigDecimal multiply = roleAchieveRelease.multiply(new BigDecimal(0.75));
+ BigDecimal memberAchieveReleaseHHR = multiply.divide(new BigDecimal(roleAchieveReleaseHHR.size()), 2, BigDecimal.ROUND_DOWN);
+ if(memberAchieveReleaseHHR.compareTo(BigDecimal.ZERO) > 0){
+ for(MallMember mallMember : roleAchieveReleaseHHR){
+
+ releaseToMemberAndAddFlow(memberAchieveReleaseHHR,mallMember.getId(),
+ MoneyFlowTypeEnum.ACHIEVE_RELEASE_SCORE_HHR.getValue(),scoreNo);
+
+ achieveDailyReleaseReal = achieveDailyReleaseReal.add(memberAchieveReleaseHHR);
+ }
+ }
+ }
+
+ /**
+ * 30%按贡献点分配给所有人
+ */
+ DataDictionaryCustom starAchievePercentDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ GreenScoreEnum.STAR_ACHIEVE_PERCENT.getType(),
+ GreenScoreEnum.STAR_ACHIEVE_PERCENT.getCode()
+ );
+ //业绩产生凭证给贡献点分配给所有人
+ BigDecimal starAchievePercent = new BigDecimal(starAchievePercentDic.getValue() == null ? "0" : starAchievePercentDic.getValue())
+ .multiply(new BigDecimal(0.01));
+ //贡献点的凭证数量
+ BigDecimal starAchieveRelease = achieveDailyRelease.multiply(starAchievePercent).setScale(2, BigDecimal.ROUND_DOWN);
+ BigDecimal starSumCnt = mallMemberWalletMapper.selectSumStar();
+ if(starSumCnt.compareTo(BigDecimal.ZERO) > 0){
+ //每一个贡献点获取的凭证
+ BigDecimal starAchieveReleaseOne = starAchieveRelease.divide(starSumCnt, 2, BigDecimal.ROUND_DOWN);
+ List<MallMemberWallet> mallMemberWallets = mallMemberWalletMapper.selectStar();
+ if(CollUtil.isNotEmpty(mallMemberWallets) && starAchieveReleaseOne.compareTo(BigDecimal.ZERO) > 0){
+ for(MallMemberWallet mallMemberWallet : mallMemberWallets){
+ //每个人获取的凭证 = 贡献点 * 每一个贡献点值的凭证
+ BigDecimal bigDecimal = starAchieveReleaseOne.multiply(new BigDecimal(mallMemberWallet.getStar())).setScale(2, BigDecimal.ROUND_DOWN);
+
+ releaseToMemberAndAddFlow(bigDecimal,mallMemberWallet.getMemberId(),
+ MoneyFlowTypeEnum.ACHIEVE_RELEASE_SCORE_GXD.getValue(),scoreNo);
+
+ achieveDailyReleaseReal = achieveDailyReleaseReal.add(bigDecimal);
+ }
+ }
+ }
+ /**
+ * 50%按按星级分配给所有人
+ * 二星 30%
+ * 三星 25%
+ * 四星 20%
+ * 五星 15%
+ * 六星 10%
+ */
+ DataDictionaryCustom levelAchievePercentDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ GreenScoreEnum.LEVEL_ACHIEVE_PERCENT.getType(),
+ GreenScoreEnum.LEVEL_ACHIEVE_PERCENT.getCode()
+ );
+ //业绩产生凭证给星级分配给所有人
+ BigDecimal levelAchievePercent = new BigDecimal(levelAchievePercentDic.getValue() == null ? "0" : levelAchievePercentDic.getValue())
+ .multiply(new BigDecimal(0.01));
+ //业绩产生凭证给星级分配给所有人总数
+ BigDecimal levelAchieveRelease = achieveDailyRelease.multiply(levelAchievePercent).setScale(2, BigDecimal.ROUND_DOWN);
+ BigDecimal thirdRelease = releaseByLevel(levelAchieveRelease, AgentLevelEnum.THIRD_LEVEL.getCode(), new BigDecimal(0.3),scoreNo);
+ achieveDailyReleaseReal = achieveDailyReleaseReal.add(thirdRelease);
+
+ BigDecimal fourRelease = releaseByLevel(levelAchieveRelease, AgentLevelEnum.FOUR_LEVEL.getCode(), new BigDecimal(0.25),scoreNo);
+ achieveDailyReleaseReal = achieveDailyReleaseReal.add(fourRelease);
+
+ BigDecimal fiveRelease = releaseByLevel(levelAchieveRelease, AgentLevelEnum.FIFTH_LEVEL.getCode(), new BigDecimal(0.2),scoreNo);
+ achieveDailyReleaseReal = achieveDailyReleaseReal.add(fiveRelease);
+
+ BigDecimal sixRelease = releaseByLevel(levelAchieveRelease, AgentLevelEnum.SIX_LEVEL.getCode(), new BigDecimal(0.15),scoreNo);
+ achieveDailyReleaseReal = achieveDailyReleaseReal.add(sixRelease);
+
+ BigDecimal sevenRelease = releaseByLevel(levelAchieveRelease, AgentLevelEnum.SEVEN_LEVEL.getCode(), new BigDecimal(0.1),scoreNo);
+ achieveDailyReleaseReal = achieveDailyReleaseReal.add(sevenRelease);
+
+ if(achieveDailyReleaseReal.compareTo(BigDecimal.ZERO) > 0){
+ DataDictionaryCustom surplusCntDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ GreenScoreEnum.SURPLUS_CNT.getType(),
+ GreenScoreEnum.SURPLUS_CNT.getCode()
+ );
+ //绿色积分剩余数量
+ BigDecimal surplusCnt = new BigDecimal(surplusCntDic.getValue() == null ? "0" : surplusCntDic.getValue());
+ BigDecimal subtract = surplusCnt.subtract(achieveDailyReleaseReal).setScale(2,BigDecimal.ROUND_DOWN);
+ surplusCntDic.setValue(subtract.toString());
+ dataDictionaryCustomMapper.updateById(surplusCntDic);
+ }
+
+ log.info("昨日实际业绩:{},昨日凭证总共:{},实际产生凭证:{}",
+ achieveTotal,achieveDailyRelease,achieveDailyReleaseReal);
+ MallScoreAchieveRelease mallScoreAchieveRelease = new MallScoreAchieveRelease();
+ mallScoreAchieveRelease.setAchieve(achieveTotal);
+ mallScoreAchieveRelease.setReleaseNo(scoreNo);
+ mallScoreAchieveRelease.setVoucherExpect(achieveDailyRelease);
+ mallScoreAchieveRelease.setVoucherReal(achieveDailyReleaseReal);
+ mallScoreAchieveReleaseMapper.updateById(mallScoreAchieveRelease);
+
+ }
+
+ /**
+ * 给用户的增加凭证数据,并且增加流水
+ * @param memberAchieveRelease 释放数量
+ * @param memberId 用户ID
+ * @param Type 流水类型
+ * @param flowNo 流水编号
+ */
+ private void releaseToMemberAndAddFlow(BigDecimal memberAchieveRelease,Long memberId,int Type,String flowNo){
+ //释放到用户的账户
+ mallMemberWalletMapper.addVorCherCntByMemberId(memberAchieveRelease,memberId);
+ //产生一条流水记录 TODO 需要去掉注释
+ mallMoneyFlowService.addMoneyFlow(
+ memberId,
+ memberAchieveRelease,
+ Type,
+ flowNo,
+ FlowTypeEnum.VOUCHER_CNT.getValue());
+ }
+
+ /**
+ * 根据星级等级和占比,给该星级的用户释放凭证
+ * @param levelAchieveRelease
+ * @param level
+ * @param percent
+ * @return
+ */
+ private BigDecimal releaseByLevel(BigDecimal levelAchieveRelease,String level,BigDecimal percent,String scoreNo){
+ //实际支付的凭证数量
+ BigDecimal levelReleaseReal = BigDecimal.ZERO;
+ //当前星级的人数
+ List<MallMember> levelMembers = mallMemberMapper.selectMemberWithLevel(level);
+ if(CollUtil.isNotEmpty(levelMembers)){
+ //这个星级该获得的凭证数量 = 总数 * 比例
+ BigDecimal levelReleaseCnt = levelAchieveRelease.multiply(percent).setScale(2, BigDecimal.ROUND_DOWN);
+ if(levelReleaseCnt.compareTo(BigDecimal.ZERO) > 0){
+ //每个人获得的数量
+ BigDecimal levelRelease = levelReleaseCnt.divide(new BigDecimal(levelMembers.size()), 2, BigDecimal.ROUND_DOWN);
+ if(levelRelease.compareTo(BigDecimal.ZERO) > 0){
+ for(MallMember mallMember : levelMembers){
+ releaseToMemberAndAddFlow(levelRelease,mallMember.getId(),MoneyFlowTypeEnum.ACHIEVE_RELEASE_SCORE_XJ.getValue(),scoreNo);
+ levelReleaseReal.add(levelRelease);
+ }
+ }
+ }
+ }
+ return levelReleaseReal;
+ }
+
+ /**
+ * 获取每日最大产生的凭证数量
+ * @return
+ */
+ private BigDecimal getAchieveDailyRelease(){
+ DataDictionaryCustom achieveReleasePercentDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ GreenScoreEnum.ACHIEVE_RELEASE_PERCENT.getType(),
+ GreenScoreEnum.ACHIEVE_RELEASE_PERCENT.getCode()
+ );
+ BigDecimal achieveReleasePercent = new BigDecimal(achieveReleasePercentDic.getValue() == null ? "0" : achieveReleasePercentDic.getValue())
+ .multiply(new BigDecimal(0.0001));
+
+
+ DataDictionaryCustom totalCntDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ GreenScoreEnum.TOTAL_CNT.getType(),
+ GreenScoreEnum.TOTAL_CNT.getCode()
+ );
+ //总凭证数量
+ BigDecimal totalCnt = new BigDecimal(totalCntDic.getValue() == null ? "0" : totalCntDic.getValue()).multiply(new BigDecimal(0.9));
+
+ //获取每日最大产生的凭证数量
+ BigDecimal achieveRelease = totalCnt.multiply(achieveReleasePercent);
+ return achieveRelease;
+ }
+
}
diff --git a/src/main/resources/mapper/modules/MallAchieveRecordMapper.xml b/src/main/resources/mapper/modules/MallAchieveRecordMapper.xml
index 0825990..116720c 100644
--- a/src/main/resources/mapper/modules/MallAchieveRecordMapper.xml
+++ b/src/main/resources/mapper/modules/MallAchieveRecordMapper.xml
@@ -13,7 +13,7 @@
</if>
</select>
- <select id="selectSumAchieveByMemberIds" resultType="cc.mrbird.febs.mall.entity.MallAchieveRecord">
+ <select id="selectSumAchieveByMemberIds" resultType="java.math.BigDecimal">
select IFNULL(sum(IFNULL(amount,0)),0)
from mall_achieve_record
where member_id IN
@@ -23,4 +23,9 @@
and date_format(achieve_time, '%Y-%m-%d') = date_format(#{date}, '%Y-%m-%d');
</select>
+ <select id="selectListByDate" resultType="cc.mrbird.febs.mall.entity.MallAchieveRecord">
+ select * from mall_achieve_record
+ where date_format(achieve_time, '%Y-%m-%d') = date_format(#{date}, '%Y-%m-%d');
+ </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 287c83c..f0ab081 100644
--- a/src/main/resources/mapper/modules/MallMemberMapper.xml
+++ b/src/main/resources/mapper/modules/MallMemberMapper.xml
@@ -12,6 +12,8 @@
IFNULL(c.commission,0) commission,
IFNULL(c.star,0) star,
IFNULL(c.total_score,0) totalScore,
+ IFNULL(c.voucher_cnt,0) voucherCnt,
+ IFNULL(c.voucher_amount,0) voucherAmount,
d.description levelName
FROM mall_member m
left join mall_member a on m.referrer_id = a.invite_id
@@ -431,4 +433,16 @@
from mall_member
where store_master = #{state}
</select>
+
+ <select id="selectByRole" resultType="cc.mrbird.febs.mall.entity.MallMember">
+ select * from mall_member
+ <where>
+ <if test="type == 3">
+ and creater = #{state}
+ </if>
+ <if test="type == 4">
+ and partner = #{state}
+ </if>
+ </where>
+ </select>
</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/modules/MallMemberWalletMapper.xml b/src/main/resources/mapper/modules/MallMemberWalletMapper.xml
index ac0aa70..09beb31 100644
--- a/src/main/resources/mapper/modules/MallMemberWalletMapper.xml
+++ b/src/main/resources/mapper/modules/MallMemberWalletMapper.xml
@@ -127,5 +127,22 @@
WHERE member_id = #{memberId}
</update>
+ <update id="addVorCherCntByMemberId">
+ update mall_member_wallet
+ <set>
+ voucher_cnt = voucher_cnt + #{voucherCnt},
+ </set>
+ WHERE member_id = #{memberId}
+ </update>
+
+ <select id="selectSumStar" resultType="java.math.BigDecimal">
+ select ifnull(sum(star),0) total from mall_member_wallet
+ </select>
+
+ <select id="selectStar" resultType="cc.mrbird.febs.mall.entity.MallMemberWallet">
+ select * from mall_member_wallet
+ where star > 0
+ </select>
+
</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/modules/MallScoreAchieveReleaseMapper.xml b/src/main/resources/mapper/modules/MallScoreAchieveReleaseMapper.xml
new file mode 100644
index 0000000..dcbc73b
--- /dev/null
+++ b/src/main/resources/mapper/modules/MallScoreAchieveReleaseMapper.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="cc.mrbird.febs.mall.mapper.MallScoreAchieveReleaseMapper">
+
+ <select id="gerAchieveReleaseListInPage" resultType="cc.mrbird.febs.mall.entity.MallScoreAchieveRelease">
+ select
+ a.*
+ from mall_score_achieve_release a
+ order by a.created_time desc
+ </select>
+
+ <select id="gerAchieveReleaseChildInPage" resultType="cc.mrbird.febs.mall.entity.MallMoneyFlow">
+ select
+ a.*,
+ b.name name,
+ b.phone phone
+ from mall_money_flow a
+ left join mall_member b on b.id = a.member_id
+ where
+ a.order_no = #{record.releaseNo}
+ order by a.created_time desc
+ </select>
+
+</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/modules/MallScoreRecordMapper.xml b/src/main/resources/mapper/modules/MallScoreRecordMapper.xml
new file mode 100644
index 0000000..df062e9
--- /dev/null
+++ b/src/main/resources/mapper/modules/MallScoreRecordMapper.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="cc.mrbird.febs.mall.mapper.MallScoreRecordMapper">
+
+ <select id="selectSumScoreCnt" resultType="java.math.BigDecimal">
+ select IFNULL(sum(IFNULL(score_cnt,0)),0) from mall_score_record
+ </select>
+
+ <select id="selectList" resultType="cc.mrbird.febs.mall.entity.MallScoreRecord">
+ select * from mall_score_record where surplus_cnt > 0
+ </select>
+
+ <select id="gerRoleReleaseListInPage" resultType="cc.mrbird.febs.mall.entity.MallScoreRecord">
+ select
+ a.*,
+ b.name name,
+ b.phone phone,
+ b.invite_id inviteId
+ from mall_score_record a
+ left join mall_member b on a.member_id = b.id
+ <where>
+ <if test="record != null">
+ <if test="record.name != null and record.name != ''">
+ and b.name like CONCAT('%', CONCAT(#{record.name}, '%'))
+ </if>
+ <if test="record.account != null and record.account != ''">
+ and (b.phone like CONCAT('%', CONCAT(#{record.account}, '%'))
+ or b.invite_id like CONCAT('%', CONCAT(#{record.account}, '%')))
+ </if>
+ </if>
+ </where>
+ order by a.created_time desc
+ </select>
+
+ <select id="gerRoleReleaseChildInPage" resultType="cc.mrbird.febs.mall.entity.MallMoneyFlow">
+ select
+ a.*
+ from mall_money_flow a
+ where
+ a.order_no = #{record.scoreNo}
+ order by a.created_time desc
+ </select>
+
+</mapper>
\ No newline at end of file
diff --git a/src/main/resources/templates/febs/views/modules/mallMember/mallMemberList.html b/src/main/resources/templates/febs/views/modules/mallMember/mallMemberList.html
index 5334e89..1fcd344 100644
--- a/src/main/resources/templates/febs/views/modules/mallMember/mallMemberList.html
+++ b/src/main/resources/templates/febs/views/modules/mallMember/mallMemberList.html
@@ -89,6 +89,20 @@
<input type="checkbox" value={{d.id}} lay-text="是|否" lay-skin="switch" lay-filter="switchDirector">
{{# } }}
</script>
+<script type="text/html" id="switchCreate">
+ {{# if(d.creater === 1) { }}
+ <input type="checkbox" value={{d.id}} lay-text="是|否" checked lay-skin="switch" lay-filter="switchCreate">
+ {{# } else { }}
+ <input type="checkbox" value={{d.id}} lay-text="是|否" lay-skin="switch" lay-filter="switchCreate">
+ {{# } }}
+</script>
+<script type="text/html" id="switchPartner">
+ {{# if(d.partner === 1) { }}
+ <input type="checkbox" value={{d.id}} lay-text="是|否" checked lay-skin="switch" lay-filter="switchPartner">
+ {{# } else { }}
+ <input type="checkbox" value={{d.id}} lay-text="是|否" lay-skin="switch" lay-filter="switchPartner">
+ {{# } }}
+</script>
<style>
.layui-form-onswitch {
background-color: #5FB878 !important;
@@ -103,6 +117,7 @@
<button class="layui-btn layui-btn-normal layui-btn-sm" type="button" shiro:hasPermission="resetPwd:update" lay-event="resetPwd">重置登录密码</button>
<button class="layui-btn layui-btn-normal layui-btn-sm" type="button" shiro:hasPermission="resetPwd:update" lay-event="resetPayPwd">重置支付密码</button>
<button class="layui-btn layui-btn-normal layui-btn-sm" type="button" shiro:hasPermission="agentLevelSet:update" lay-event="agentLevel">设置代理等级</button>
+ <button class="layui-btn layui-btn-normal layui-btn-sm" type="button" shiro:hasPermission="voucherUpdate:update" lay-event="voucherUpdate">拨付绿色凭证</button>
</div>
</script>
<!-- 表格操作栏 end -->
@@ -241,10 +256,14 @@
{field: 'prizeScore', title: '现金积分', minWidth: 100,align:'left',totalRow: '{{= parseInt(d.prizeScore) }}'},
{field: 'star', title: '贡献点', minWidth: 100,align:'left',totalRow: '{{= parseInt(d.star) }}'},
{field: 'totalScore', title: '补贴额度', minWidth: 100,align:'left',totalRow: '{{= parseInt(d.totalScore) }}'},
+ {field: 'voucherCnt', title: '绿色凭证', minWidth: 100,align:'left',totalRow: '{{= parseInt(d.voucherCnt) }}'},
+ {field: 'voucherAmount', title: '凭证现金', minWidth: 100,align:'left',totalRow: '{{= parseInt(d.voucherAmount) }}'},
{field: 'referrerName', title: '推荐人', minWidth: 100,align:'left'},
{field: 'levelName', title: '会员类型', minWidth: 100,align:'left'},
{field: 'storeMaster', title: '线下服务中心', templet:'#switchStoreMaster', minWidth: 120,align:'left'},
{field: 'director', title: '代理商', templet:'#switchDirector', minWidth: 120,align:'left' },
+ {field: 'creater', title: '联创', templet:'#switchCreate', minWidth: 120,align:'left' },
+ {field: 'partner', title: '合伙人', templet:'#switchPartner', minWidth: 120,align:'left' },
{field: 'accountType', title: '账号类型',
templet: function (d) {
if (d.accountType === 2) {
@@ -338,6 +357,19 @@
systemPay("修改余额", checkData[0].id, 1);
}
+ if (layEvent === 'voucherUpdate') {
+ var checkData = table.checkStatus('userTable').data;
+ if (checkData.length <= 0) {
+ febs.alert.warn('请选择需要的用户');
+ return;
+ }
+ if (checkData.length > 1) {
+ febs.alert.warn('请选择一个用户');
+ return;
+ }
+ voucherUpdate("拨付绿色凭证", checkData[0].id, 1);
+ }
+
if (layEvent === 'score') {
var checkData = table.checkStatus('userTable').data;
if (checkData.length <= 0) {
@@ -386,6 +418,18 @@
}
});
+ function voucherUpdate(text, id, type) {
+ febs.modal.open(text, 'modules/mallMember/voucherUpdate/' + type +'/'+ id, {
+ btn: ['提交', '取消'],
+ yes: function (index, layero) {
+ $('#voucher-update').find('#submit').trigger('click');
+ },
+ btn2: function () {
+ layer.closeAll();
+ }
+ });
+ }
+
function systemPay(text, id, type) {
febs.modal.open('text', 'modules/mallMember/mallSystemPay/' + type +'/'+ id, {
btn: ['提交', '取消'],
@@ -431,5 +475,21 @@
changeIdentityNo(1, data.value);
}
})
+
+ form.on('switch(switchCreate)', function (data) {
+ if (data.elem.checked) {
+ changeIdentityYes(3, data.value);
+ } else {
+ changeIdentityNo(3, data.value);
+ }
+ })
+
+ form.on('switch(switchPartner)', function (data) {
+ if (data.elem.checked) {
+ changeIdentityYes(4, data.value);
+ } else {
+ changeIdentityNo(4, data.value);
+ }
+ })
})
</script>
\ No newline at end of file
diff --git a/src/main/resources/templates/febs/views/modules/mallMember/scoreAchieveRelease.html b/src/main/resources/templates/febs/views/modules/mallMember/scoreAchieveRelease.html
new file mode 100644
index 0000000..6c995a7
--- /dev/null
+++ b/src/main/resources/templates/febs/views/modules/mallMember/scoreAchieveRelease.html
@@ -0,0 +1,107 @@
+<div class="layui-fluid layui-anim febs-anim" id="febs-achieve-release" lay-title="业绩释放记录">
+ <div class="layui-row febs-container">
+ <div class="layui-col-md12">
+ <div class="layui-card">
+ <div class="layui-card-body febs-table-full">
+ <form class="layui-form layui-table-form" lay-filter="user-table-form">
+ <div class="layui-row">
+ <div class="layui-col-md10">
+ <div class="layui-form-item">
+ </div>
+ </div>
+ <div class="layui-col-md2 layui-col-sm12 layui-col-xs12 table-action-area">
+ <div class="layui-btn layui-btn-sm layui-btn-primary febs-button-blue-plain table-action" id="query">
+ <i class="layui-icon"></i>
+ </div>
+ <div class="layui-btn layui-btn-sm layui-btn-primary febs-button-green-plain table-action" id="reset">
+ <i class="layui-icon"></i>
+ </div>
+ </div>
+ </div>
+ </form>
+ <table lay-filter="achieveReleaseTable" lay-data="{id: 'achieveReleaseTable'}"></table>
+ </div>
+ </div>
+ </div>
+ </div>
+</div>
+<!-- 表格操作栏 start -->
+<script type="text/html" id="user-option">
+ <span shiro:lacksPermission="user:view,user:update,user:delete">
+ <span class="layui-badge-dot febs-bg-orange"></span> 无权限
+ </span>
+ <a lay-event="edit" shiro:hasPermission="user:update"><i
+ class="layui-icon febs-edit-area febs-blue"></i></a>
+</script>
+<!-- 表格操作栏 end -->
+<script data-th-inline="none" type="text/javascript">
+ // 引入组件并初始化
+ layui.use([ 'jquery', 'form', 'table', 'febs'], function () {
+ var $ = layui.jquery,
+ febs = layui.febs,
+ form = layui.form,
+ table = layui.table,
+ $view = $('#febs-achieve-release'),
+ $query = $view.find('#query'),
+ $reset = $view.find('#reset'),
+ $searchForm = $view.find('form'),
+ sortObject = {field: '', type: null},
+ tableIns;
+
+ form.render();
+
+ // 表格初始化
+ initTable();
+
+ // 初始化表格操作栏各个按钮功能
+ table.on('tool(scoreAchieveReleaseList)', function (obj) {
+ var data = obj.data,
+ layEvent = obj.event;
+ if (layEvent === 'scoreAchieveReleaseList') {
+ febs.modal.open( '全部记录', 'modules/mallMember/scoreAchieveReleaseList/' + data.id, {
+ maxmin: true,
+ });
+ }
+ });
+
+ // 查询按钮
+ $query.on('click', function () {
+ var params = $.extend(getQueryParams(), {field: sortObject.field, order: sortObject.type});
+ tableIns.reload({where: params, page: {curr: 1}});
+ });
+
+ // 刷新按钮
+ $reset.on('click', function () {
+ $searchForm[0].reset();
+ sortObject.type = 'null';
+ tableIns.reload({where: getQueryParams(), page: {curr: 1}, initSort: sortObject});
+ });
+
+ function initTable() {
+ tableIns = febs.table.init({
+ elem: $view.find('table'),
+ id: 'achieveReleaseTable',
+ url: ctx + 'admin/mallMember/gerAchieveRelease',
+ totalRow: true ,// 开启合计行
+ cols: [[
+ {field: 'releaseNo', title: '编号', minWidth: 150,align:'center', totalRowText: '合计:'},
+ {field: 'achieve', title: '业绩总数', minWidth: 100,align:'center'},
+ {field: 'voucherExpect', title: '预期凭证数量', minWidth: 100,align:'center',totalRow: '{{= parseInt(d.voucherExpect) }}'},
+ {field: 'voucherReal', title: '实际凭证数量', minWidth: 100,align:'center',totalRow: '{{= parseInt(d.voucherReal) }}'},
+ {field: 'createdTime', title: '释放时间', minWidth: 150,align:'center'},
+ {title: '操作',
+ templet: function (d) {
+ return '<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="scoreAchieveReleaseList" shiro:hasPermission="user:update">全部记录</button>'
+ },minWidth: 200,align:'center'}
+ ]]
+ });
+ }
+
+ // 获取查询参数
+ function getQueryParams() {
+ return {
+ };
+ }
+
+ })
+</script>
\ No newline at end of file
diff --git a/src/main/resources/templates/febs/views/modules/mallMember/scoreAchieveReleaseList.html b/src/main/resources/templates/febs/views/modules/mallMember/scoreAchieveReleaseList.html
new file mode 100644
index 0000000..c61ab35
--- /dev/null
+++ b/src/main/resources/templates/febs/views/modules/mallMember/scoreAchieveReleaseList.html
@@ -0,0 +1,55 @@
+<div class="layui-fluid layui-anim febs-anim" id="febs-achieve-release-child" lay-title="全部记录">
+ <div class="layui-row febs-container">
+ <div class="layui-col-md12">
+ <div class="layui-card">
+ <div class="layui-card-body febs-table-full">
+ <table lay-filter="achieveReleaseChild" lay-data="{id: 'achieveReleaseChild'}"></table>
+ </div>
+ </div>
+ </div>
+ </div>
+</div>
+<script data-th-inline="none" type="text/javascript">
+ layui.use([ 'jquery', 'form', 'table', 'febs'], function () {
+ var $ = layui.jquery,
+ febs = layui.febs,
+ form = layui.form,
+ table = layui.table,
+ $view = $('#febs-achieve-release-child'),
+ tableIns;
+
+ form.render();
+
+ initTable();
+
+ function initTable() {
+ tableIns = febs.table.init({
+ elem: $view.find('table'),
+ id: 'achieveReleaseChild',
+ url: ctx + 'admin/mallMember/roleReleaseChild?parentId=1',
+ totalRow: true ,// 开启合计行
+ cols: [[
+ {field: 'name', title: '名称', minWidth: 150,align:'center', totalRowText: '合计:'},
+ {field: 'phone', title: '电话', minWidth: 150,align:'center'},
+ {field: 'createdTime', title: '释放时间', minWidth: 150,align:'center'},
+ {field: 'type', title: '类型',
+ templet: function (d) {
+ if (d.type === 32) {
+ return '<span>联创</span>'
+ } else if (d.type === 33) {
+ return '<span>合伙人</span>'
+ } else if (d.type === 34) {
+ return '<span>贡献点</span>'
+ } else if (d.type === 35) {
+ return '<span>星级</span>'
+ }else{
+ return ''
+ }
+ }, minWidth: 80,align:'center'},
+ {field: 'amount', title: '数量', minWidth: 150,align:'center',totalRow: '{{= parseInt(d.amount) }}'},
+ ]]
+ });
+ }
+
+ })
+</script>
\ No newline at end of file
diff --git a/src/main/resources/templates/febs/views/modules/mallMember/scoreRoleRelease.html b/src/main/resources/templates/febs/views/modules/mallMember/scoreRoleRelease.html
new file mode 100644
index 0000000..be3bcd0
--- /dev/null
+++ b/src/main/resources/templates/febs/views/modules/mallMember/scoreRoleRelease.html
@@ -0,0 +1,123 @@
+<div class="layui-fluid layui-anim febs-anim" id="febs-role-release" lay-title="创世释放记录">
+ <div class="layui-row febs-container">
+ <div class="layui-col-md12">
+ <div class="layui-card">
+ <div class="layui-card-body febs-table-full">
+ <form class="layui-form layui-table-form" lay-filter="user-table-form">
+ <div class="layui-row">
+ <div class="layui-col-md10">
+ <div class="layui-form-item">
+ <div class="layui-inline">
+ <label class="layui-form-label">名称:</label>
+ <div class="layui-input-inline">
+ <input type="text" placeholder="名称" name="name" autocomplete="off" class="layui-input">
+ </div>
+ </div>
+ <div class="layui-inline">
+ <label class="layui-form-label">账号:</label>
+ <div class="layui-input-inline">
+ <input type="text" placeholder="账号/邀请码" name="account" autocomplete="off" class="layui-input">
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="layui-col-md2 layui-col-sm12 layui-col-xs12 table-action-area">
+ <div class="layui-btn layui-btn-sm layui-btn-primary febs-button-blue-plain table-action" id="query">
+ <i class="layui-icon"></i>
+ </div>
+ <div class="layui-btn layui-btn-sm layui-btn-primary febs-button-green-plain table-action" id="reset">
+ <i class="layui-icon"></i>
+ </div>
+ </div>
+ </div>
+ </form>
+ <table lay-filter="roleReleaseTable" lay-data="{id: 'roleReleaseTable'}"></table>
+ </div>
+ </div>
+ </div>
+ </div>
+</div>
+<!-- 表格操作栏 start -->
+<script type="text/html" id="user-option">
+ <span shiro:lacksPermission="user:view,user:update,user:delete">
+ <span class="layui-badge-dot febs-bg-orange"></span> 无权限
+ </span>
+ <a lay-event="edit" shiro:hasPermission="user:update"><i
+ class="layui-icon febs-edit-area febs-blue"></i></a>
+</script>
+<!-- 表格操作栏 end -->
+<script data-th-inline="none" type="text/javascript">
+ // 引入组件并初始化
+ layui.use([ 'jquery', 'form', 'table', 'febs'], function () {
+ var $ = layui.jquery,
+ febs = layui.febs,
+ form = layui.form,
+ table = layui.table,
+ $view = $('#febs-role-release'),
+ $query = $view.find('#query'),
+ $reset = $view.find('#reset'),
+ $searchForm = $view.find('form'),
+ sortObject = {field: 'phone', type: null},
+ tableIns;
+
+ form.render();
+
+ // 表格初始化
+ initTable();
+
+ // 初始化表格操作栏各个按钮功能
+ table.on('tool(roleReleaseTable)', function (obj) {
+ var data = obj.data,
+ layEvent = obj.event;
+ if (layEvent === 'scoreRoleReleaseList') {
+ febs.modal.open( '全部记录', 'modules/mallMember/scoreRoleReleaseList/' + data.id, {
+ maxmin: true,
+ });
+ }
+ });
+
+ // 查询按钮
+ $query.on('click', function () {
+ var params = $.extend(getQueryParams(), {field: sortObject.field, order: sortObject.type});
+ tableIns.reload({where: params, page: {curr: 1}});
+ });
+
+ // 刷新按钮
+ $reset.on('click', function () {
+ $searchForm[0].reset();
+ sortObject.type = 'null';
+ tableIns.reload({where: getQueryParams(), page: {curr: 1}, initSort: sortObject});
+ });
+
+ function initTable() {
+ tableIns = febs.table.init({
+ elem: $view.find('table'),
+ id: 'roleReleaseTable',
+ url: ctx + 'admin/mallMember/gerRoleRelease',
+ totalRow: true ,// 开启合计行
+ cols: [[
+ {field: 'phone', title: '账号', minWidth: 150,align:'center', totalRowText: '合计:'},
+ {field: 'name', title: '名称', minWidth: 100,align:'center'},
+ {field: 'inviteId', title: '邀请码', minWidth: 100,align:'center'},
+ {field: 'scoreNo', title: '编号', minWidth: 100,align:'center'},
+ {field: 'scoreCnt', title: '总量', minWidth: 100,align:'center',totalRow: '{{= parseInt(d.scoreCnt) }}'},
+ {field: 'surplusCnt', title: '剩余', minWidth: 100,align:'center',totalRow: '{{= parseInt(d.surplusCnt) }}'},
+ {field: 'createdTime', title: '购买时间', minWidth: 150,align:'center'},
+ {title: '操作',
+ templet: function (d) {
+ return '<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="scoreRoleReleaseList" shiro:hasPermission="user:update">全部记录</button>'
+ },minWidth: 200,align:'center'}
+ ]]
+ });
+ }
+
+ // 获取查询参数
+ function getQueryParams() {
+ return {
+ name: $searchForm.find('input[name="name"]').val().trim(),
+ account: $searchForm.find('input[name="account"]').val().trim(),
+ };
+ }
+
+ })
+</script>
\ No newline at end of file
diff --git a/src/main/resources/templates/febs/views/modules/mallMember/scoreRoleReleaseList.html b/src/main/resources/templates/febs/views/modules/mallMember/scoreRoleReleaseList.html
new file mode 100644
index 0000000..22f2bea
--- /dev/null
+++ b/src/main/resources/templates/febs/views/modules/mallMember/scoreRoleReleaseList.html
@@ -0,0 +1,39 @@
+<div class="layui-fluid layui-anim febs-anim" id="febs-role-release-child" lay-title="全部记录">
+ <div class="layui-row febs-container">
+ <div class="layui-col-md12">
+ <div class="layui-card">
+ <div class="layui-card-body febs-table-full">
+ <table lay-filter="roleReleaseChild" lay-data="{id: 'roleReleaseChild'}"></table>
+ </div>
+ </div>
+ </div>
+ </div>
+</div>
+<script data-th-inline="none" type="text/javascript">
+ layui.use([ 'jquery', 'form', 'table', 'febs'], function () {
+ var $ = layui.jquery,
+ febs = layui.febs,
+ form = layui.form,
+ table = layui.table,
+ $view = $('#febs-role-release-child'),
+ tableIns;
+
+ form.render();
+
+ initTable();
+
+ function initTable() {
+ tableIns = febs.table.init({
+ elem: $view.find('table'),
+ id: 'roleReleaseChild',
+ url: ctx + 'admin/mallMember/roleReleaseChild?parentId=1',
+ totalRow: true ,// 开启合计行
+ cols: [[
+ {field: 'createdTime', title: '释放时间', minWidth: 150,align:'center', totalRowText: '合计:'},
+ {field: 'amount', title: '数量', minWidth: 150,align:'center',totalRow: '{{= parseInt(d.amount) }}'},
+ ]]
+ });
+ }
+
+ })
+</script>
\ No newline at end of file
diff --git a/src/main/resources/templates/febs/views/modules/mallMember/voucherUpdate.html b/src/main/resources/templates/febs/views/modules/mallMember/voucherUpdate.html
new file mode 100644
index 0000000..d4cf0d2
--- /dev/null
+++ b/src/main/resources/templates/febs/views/modules/mallMember/voucherUpdate.html
@@ -0,0 +1,91 @@
+<style>
+ #voucher-update {
+ padding: 20px 25px 25px 0;
+ }
+
+ #voucher-update .layui-treeSelect .ztree li a, .ztree li span {
+ margin: 0 0 2px 3px !important;
+ }
+ #voucher-update #data-permission-tree-block {
+ border: 1px solid #eee;
+ border-radius: 2px;
+ padding: 3px 0;
+ }
+ #voucher-update .layui-treeSelect .ztree li span.button.switch {
+ top: 1px;
+ left: 3px;
+ }
+ #voucher-update img{
+ max-width:100px
+ }
+
+</style>
+<div class="layui-fluid" id="voucher-update">
+ <form class="layui-form" action="" lay-filter="voucher-update-form">
+ <div class="layui-form-item febs-hide">
+ <label class="layui-form-label febs-form-item-require">id:</label>
+ <div class="layui-input-block">
+ <input type="text" name="id">
+ </div>
+ </div>
+<!-- <div class="layui-form-item">-->
+<!-- <label class="layui-form-label febs-form-item-require">当前余额:</label>-->
+<!-- <div class="layui-input-block">-->
+<!-- <input type="number" name="balance" lay-verify="required" autocomplete="off" class="layui-input" readonly>-->
+<!-- </div>-->
+<!-- </div>-->
+ <div class="layui-form-item">
+ <label class="layui-form-label febs-form-item-require">拨付数目:</label>
+ <div class="layui-input-block">
+ <input type="number" name="addBalance" lay-verify="required" autocomplete="off" class="layui-input">
+ <div class="layui-word-aux">拨付数目会按照设定的比例,每日拨付到用户账户</div>
+ </div>
+ </div>
+ <div class="layui-form-item febs-hide">
+ <button class="layui-btn" lay-submit="" lay-filter="voucher-update-form-submit" id="submit"></button>
+ </div>
+ </form>
+</div>
+
+<script data-th-inline="javascript">
+ layui.use(['febs', 'form', 'formSelects', 'validate', 'treeSelect', 'eleTree', 'laydate'], function () {
+ var $ = layui.$,
+ febs = layui.febs,
+ layer = layui.layer,
+ formSelects = layui.formSelects,
+ treeSelect = layui.treeSelect,
+ form = layui.form,
+ laydate = layui.laydate,
+ eleTree = layui.eleTree,
+ systemPay = [[${systemPay}]],
+ type = [[${type}]],
+ $view = $('#voucher-update'),
+ validate = layui.validate;
+
+ form.render();
+ laydate.render({
+ elem: '#febs-form-group-date'
+ });
+
+ formSelects.render();
+
+
+ initUserValue();
+
+ function initUserValue() {
+ form.val("voucher-update-form", {
+ "id": systemPay.id,
+ });
+ }
+
+ form.on('submit(voucher-update-form-submit)', function (data) {
+ data.field.type = type;
+ febs.post(ctx + 'admin/mallMember/updateVoucher', data.field, function () {
+ layer.closeAll();
+ febs.alert.success('操作成功');
+ $('#febs-member-list').find('#reset').click();
+ });
+ return false;
+ });
+ });
+</script>
\ No newline at end of file
diff --git a/src/main/resources/templates/febs/views/modules/system/hlmVoucherButton.html b/src/main/resources/templates/febs/views/modules/system/hlmVoucherButton.html
new file mode 100644
index 0000000..d47f681
--- /dev/null
+++ b/src/main/resources/templates/febs/views/modules/system/hlmVoucherButton.html
@@ -0,0 +1,74 @@
+<div class="layui-fluid layui-anim febs-anim" id="hlm-voucher-button" lay-title="一键卖出">
+ <div class="layui-row layui-col-space8 febs-container">
+ <form class="layui-form" action="" lay-filter="hlm-voucher-button-form">
+ <div class="layui-card">
+ <div class="layui-card-body">
+ <blockquote class="layui-elem-quote blue-border">绿色积分凭证</blockquote>
+ <div class="layui-form-item">
+ <div class="layui-inline">
+ <label class="layui-form-label febs-form-item-require">价格:</label>
+ <div class="layui-form-mid layui-word-aux">当前价格:</div>
+ <div class="layui-input-inline">
+ <input type="text" name="scorePrice" lay-verify="required|integer" placeholder="请输入数字" autocomplete="off" class="layui-input" readonly>
+ </div>
+ <div class="layui-form-mid layui-word-aux">剩余:</div>
+ </div>
+ </div>
+ <div class="layui-card-footer">
+ <button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="hlm-voucher-button-submit" id="submit">保存</button>
+ </div>
+ <div class="layui-card-footer">
+ <button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="hlm-voucher-button-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,
+ hlmVoucherSet = [[${hlmVoucherSetDto}]],
+ $view = $('#hlm-voucher-button');
+
+ form.verify({
+ integer: [
+ /^[1-9]\d*$/
+ , '只能输入正整数'
+ ]
+ });
+
+ initHlmVoucherSetValue();
+
+ form.render();
+
+ function initHlmVoucherSetValue() {
+ form.val("hlm-voucher-button-form", {
+ "roleReleasePercent": hlmVoucherSet.roleReleasePercent
+ });
+ }
+
+ form.on('submit(hlm-voucher-button-submit)', function (data) {
+ febs.post(ctx + 'admin/system/hlmVoucherSet', data.field, function (res) {
+ febs.alert.success('设置成功');
+ return ;
+ });
+ return false;
+ });
+ });
+</script>
\ No newline at end of file
diff --git a/src/main/resources/templates/febs/views/modules/system/hlmVoucherSet.html b/src/main/resources/templates/febs/views/modules/system/hlmVoucherSet.html
new file mode 100644
index 0000000..024e2e0
--- /dev/null
+++ b/src/main/resources/templates/febs/views/modules/system/hlmVoucherSet.html
@@ -0,0 +1,142 @@
+<div class="layui-fluid layui-anim febs-anim" id="hlm-voucher-set" lay-title="绿色积分凭证">
+ <div class="layui-row layui-col-space8 febs-container">
+ <form class="layui-form" action="" lay-filter="hlm-voucher-set-form">
+ <div class="layui-card">
+ <div class="layui-card-body">
+ <blockquote class="layui-elem-quote blue-border">绿色积分凭证</blockquote>
+ <div class="layui-form-item">
+ <div class="layui-inline">
+ <label class="layui-form-label febs-form-item-require">详情:</label>
+ <div class="layui-form-mid layui-word-aux">总数:</div>
+ <div class="layui-input-inline">
+ <input type="text" name="totalCnt" lay-verify="required|integer" placeholder="请输入数字" autocomplete="off" class="layui-input" readonly>
+ </div>
+ <div class="layui-form-mid layui-word-aux">剩余:</div>
+ <div class="layui-input-inline">
+ <input type="text" name="surplusCnt" lay-verify="required|integer" placeholder="请输入数字" autocomplete="off" class="layui-input" readonly>
+ </div>
+ </div>
+ </div>
+
+ <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="roleReleasePercent" lay-verify="required" placeholder="请输入数字" autocomplete="off" class="layui-input" >
+ <div class="layui-word-aux">设置1,每日拨付千分之1</div>
+ </div>
+ </div>
+
+ <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-form-mid layui-word-aux">每日总释放积分凭证比例(万分之几):</div>
+ <div class="layui-input-inline">
+ <input type="text" name="achieveReleasePercent" lay-verify="required" placeholder="请输入数字" autocomplete="off" class="layui-input" >
+ </div>
+ <div class="layui-form-mid layui-word-aux">例如:1,则表示总凭证数3000000*0.9*0.0001</div>
+ </div>
+ <div class="layui-form-item">
+ <label class="layui-form-label febs-form-item-require">规则一:</label>
+ <div class="layui-form-mid layui-word-aux">业绩大于最小值:</div>
+ <div class="layui-input-inline">
+ <input type="text" name="achieveMin" lay-verify="required|integer" placeholder="请输入数字" autocomplete="off" class="layui-input">
+ </div>
+ <div class="layui-form-mid layui-word-aux">才释放积分凭证。</div>
+ </div>
+ <div class="layui-form-item">
+ <label class="layui-form-label febs-form-item-require">规则二:</label>
+ <div class="layui-form-mid layui-word-aux">业绩大于、等于最大值:</div>
+ <div class="layui-input-inline">
+ <input type="text" name="achieveMax" lay-verify="required|integer" placeholder="请输入数字" autocomplete="off" class="layui-input">
+ </div>
+ <div class="layui-form-mid layui-word-aux">释放今日的全额积分凭证。</div>
+ </div>
+ <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-form-mid layui-word-aux">业绩积分凭证每日释放联创、合伙人的比例:</div>
+ <div class="layui-input-inline">
+ <input type="text" name="roleAchievePercent" lay-verify="required" placeholder="请输入数字" autocomplete="off" class="layui-input" >
+ </div>
+ <div class="layui-form-mid layui-word-aux">设置20,则表示比例为20%</div>
+ </div>
+ <div class="layui-form-item">
+ <label class="layui-form-label febs-form-item-require">比例二:</label>
+ <div class="layui-form-mid layui-word-aux">业绩积分凭证按贡献点比例:</div>
+ <div class="layui-input-inline">
+ <input type="text" name="starAchievePercent" lay-verify="required" placeholder="请输入数字" autocomplete="off" class="layui-input" >
+ </div>
+ <div class="layui-form-mid layui-word-aux">设置20,则表示比例为20%</div>
+ </div>
+ <div class="layui-form-item">
+ <label class="layui-form-label febs-form-item-require">比例三:</label>
+ <div class="layui-form-mid layui-word-aux">业绩积分凭证按用户星级比例:</div>
+ <div class="layui-input-inline">
+ <input type="text" name="levelAchievePercent" lay-verify="required" placeholder="请输入数字" autocomplete="off" class="layui-input" >
+ </div>
+ <div class="layui-form-mid layui-word-aux">。设置20,则表示比例为20%</div>
+ </div>
+ <div class="layui-card-footer">
+ <button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="hlm-voucher-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,
+ hlmVoucherSet = [[${hlmVoucherSetDto}]],
+ $view = $('#hlm-voucher-set');
+
+ form.verify({
+ integer: [
+ /^[1-9]\d*$/
+ , '只能输入正整数'
+ ]
+ });
+
+ initHlmVoucherSetValue();
+
+ form.render();
+
+ function initHlmVoucherSetValue() {
+ form.val("hlm-voucher-set-form", {
+ "levelAchievePercent": hlmVoucherSet.levelAchievePercent,
+ "starAchievePercent": hlmVoucherSet.starAchievePercent,
+ "roleAchievePercent": hlmVoucherSet.roleAchievePercent,
+ "achieveReleasePercent": hlmVoucherSet.achieveReleasePercent,
+ "achieveMin": hlmVoucherSet.achieveMin,
+ "achieveMax": hlmVoucherSet.achieveMax,
+ "totalCnt": hlmVoucherSet.totalCnt,
+ "surplusCnt": hlmVoucherSet.surplusCnt,
+ "roleReleasePercent": hlmVoucherSet.roleReleasePercent
+ });
+ }
+
+ form.on('submit(hlm-voucher-set-submit)', function (data) {
+ febs.post(ctx + 'admin/system/hlmVoucherSet', data.field, function (res) {
+ febs.alert.success('设置成功');
+ return ;
+ });
+ return false;
+ });
+ });
+</script>
\ No newline at end of file
diff --git a/src/test/java/cc/mrbird/febs/AgentTest.java b/src/test/java/cc/mrbird/febs/AgentTest.java
index 4fd5721..d3195e9 100644
--- a/src/test/java/cc/mrbird/febs/AgentTest.java
+++ b/src/test/java/cc/mrbird/febs/AgentTest.java
@@ -623,6 +623,6 @@
@Test
public void orderReturnTest() {
- agentConsumer.orderReturnMoney("7");
+// agentConsumer.orderReturnMoney("7");
}
}
diff --git a/src/test/java/cc/mrbird/febs/ProfitTest.java b/src/test/java/cc/mrbird/febs/ProfitTest.java
index 0581b77..0ad3247 100644
--- a/src/test/java/cc/mrbird/febs/ProfitTest.java
+++ b/src/test/java/cc/mrbird/febs/ProfitTest.java
@@ -55,7 +55,11 @@
@Test
public void dynamicProfit() {
- agentProducer.sendPerkMoneyMsg(679L);
+ agentService.perkMoneyConsumer(Long.parseLong("712"));
+// memberProfitService.dynamicProfit(Long.parseLong("709"));
+// memberProfitService.scoreRecordReleaseJob();
+// memberProfitService.achieveReleaseJob();
+// agentProducer.sendPerkMoneyMsg(679L);
// agentService.perkMoneyConsumer(665L);
// memberProfitService.teamEqualsPerkJob(null);
// List<MallMember> mallMemberTeamPerk = new ArrayList<>();
--
Gitblit v1.9.1