From 959fa08ebd5b24cbb82503c4f01f3c90648ed863 Mon Sep 17 00:00:00 2001
From: Hentua <wangdoubleone@gmail.com>
Date: Fri, 21 Apr 2023 17:03:53 +0800
Subject: [PATCH] fix
---
src/main/java/cc/mrbird/febs/rabbit/consumer/AgentConsumer.java | 2
src/main/java/cc/mrbird/febs/mall/service/impl/MemberProfitServiceImpl.java | 648 -----------------------------------------------------
src/main/java/cc/mrbird/febs/mall/quartz/ProfitJob.java | 7
src/main/java/cc/mrbird/febs/mall/service/IMemberProfitService.java | 29 --
4 files changed, 10 insertions(+), 676 deletions(-)
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 f77deb7..9c61526 100644
--- a/src/main/java/cc/mrbird/febs/mall/quartz/ProfitJob.java
+++ b/src/main/java/cc/mrbird/febs/mall/quartz/ProfitJob.java
@@ -45,4 +45,11 @@
memberProfitService.agentProfit(null);
}
+ /**
+ * 全网分红
+ */
+ @Scheduled(cron = "0 10 0 * * ?")
+ public void allInternetProfitJob() {
+
+ }
}
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 aa3f520..8c98896 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/IMemberProfitService.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/IMemberProfitService.java
@@ -25,36 +25,9 @@
/**
* 代理分红
*/
- void agentProfit(Date date);
-
- /**
- * 排名分红
- */
- void rankProfit();
-
- /**
- * 感恩奖
- */
- void thankfulProfit(Date profitDate);
-
- /**
- * 店补/董事
- */
- void storeAndDirectorProfit(Date profitDate);
+ void agentProfit();
void scorePool();
-
- void agentPerkJob(Date profitDate);
-
- void offLinePerkJob(Date profitDate);
-
- void teamEqualsPerkJob(Date profitDate);
-
- void mqPerkRetryJob();
-
- void scoreRecordReleaseJob();
-
- void achieveReleaseJob();
void selaHalfVoucher(String price);
}
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 df1062a..b3fe593 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
@@ -380,47 +380,9 @@
@Override
@Transactional(rollbackFor = Exception.class)
- public void agentProfit(Date profitDate) {
+ public void agentProfit() {
log.info("#####==代理分红==start==#####");
- BigDecimal totalIncome = mallAchieveRecordMapper.selectAchieveTotal("D", profitDate);
-
- DataDictionaryCustom dic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.AGENT_BONUS.getType(), DataDictionaryEnum.AGENT_BONUS.getCode());
- BigDecimal profit = totalIncome.multiply(new BigDecimal(dic.getValue()).divide(new BigDecimal("100"), 2, RoundingMode.HALF_UP));
-
- List<MallMember> agentMembers = mallMemberMapper.selectByIdAndNoLevel(null, AgentLevelEnum.SECOND_LEVEL.name());
- if (CollUtil.isEmpty(agentMembers)) {
- return;
- }
-
- List<DataDictionaryCustom> dics = dataDictionaryCustomMapper.selectDicByType(AppContants.AGENT_LEVEL_REQUIRE);
- for (DataDictionaryCustom agentDic : dics) {
- JSONObject jsonObject = JSONObject.parseObject(agentDic.getValue());
- BigDecimal profitProp = jsonObject.getBigDecimal("profitProp").divide(new BigDecimal("100"), 2, RoundingMode.HALF_UP);
-
- List<MallMember> agentMemberList = mallMemberMapper.selectMemberWithLevel(agentDic.getCode());
- if (CollUtil.isEmpty(agentMemberList)) {
- continue;
- }
-
- BigDecimal income = profit.multiply(profitProp).divide(BigDecimal.valueOf(agentMemberList.size()), 2, RoundingMode.HALF_UP);
- if (income.compareTo(BigDecimal.ZERO) < 1) {
- continue;
- }
-
- for (MallMember agentMember : agentMemberList) {
-// int reduce = walletService.reduce(income, agentMember.getId(), "score");
-// if (reduce == 2) {
-// continue;
-// }
-//
-// walletService.add(income, agentMember.getId(), "commission");
-//
-// moneyFlowService.addMoneyFlow(agentMember.getId(), income, MoneyFlowTypeEnum.AGENT_BONUS.getValue(), null, FlowTypeEnum.COMMISSION.getValue());
-// moneyFlowService.addMoneyFlow(agentMember.getId(), income.negate(), MoneyFlowTypeEnum.AGENT_BONUS.getValue(), null, FlowTypeEnum.SCORE.getValue());
- changeScoreAndCommission(agentMember.getId(), income, MoneyFlowTypeEnum.AGENT_BONUS.getValue(), null);
- }
- }
log.info("#####==代理分红==end==#####");
}
@@ -438,167 +400,6 @@
moneyFlowService.addMoneyFlow(memberId, income, type, orderNo, FlowTypeEnum.COMMISSION.getValue());
moneyFlowService.addMoneyFlow(memberId, income.negate(), type, orderNo, FlowTypeEnum.SCORE.getValue());
return income;
- }
-
- @Override
- public void rankProfit() {
- log.info("######==排名分红==####");
- Page<MallMember> page = new Page<>(1, 5);
- MallMember query = new MallMember();
- query.setQuery("2");
-
- Date profitDate = DateUtil.offset(new Date(), DateField.DAY_OF_YEAR, -1);
- query.setCreatedTime(profitDate);
- IPage<MallMember> rankListInPage = mallMemberMapper.selectRankListInPage(page, query);
-
- List<MallMember> rankList = rankListInPage.getRecords();
- if (CollUtil.isEmpty(rankList)) {
- return;
- }
-
- // 套餐业绩
-// BigDecimal tcIncome = mallOrderInfoMapper.selectTotalAmountUnCostForDate(profitDate, null, "M", 2);
- // 普通商品业绩
-// BigDecimal normalIncome = mallOrderInfoMapper.selectTotalAmountUnCostForDate(profitDate, null, "M", 1);
- BigDecimal totalIncome = mallAchieveRecordMapper.selectAchieveTotal("M", profitDate);
-
- List<DataDictionaryCustom> rankAward = dataDictionaryCustomMapper.selectDicByType("RANK_AWARD");
- DataDictionaryCustom dic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.RANK_BONUS.getType(), DataDictionaryEnum.RANK_BONUS.getCode());
-
-
- BigDecimal rankBonusTotal = totalIncome.multiply(new BigDecimal(dic.getValue()).divide(new BigDecimal("100"), 2, RoundingMode.HALF_UP));
- BigDecimal preBonus = rankBonusTotal.divide(BigDecimal.valueOf(100), 2, RoundingMode.HALF_UP);
-
- int i = 0;
- for (MallMember member : rankList) {
- DataDictionaryCustom rank = rankAward.get(i);
- i++;
- BigDecimal bonus = preBonus.multiply(new BigDecimal(rank.getValue()));
-// int reduce = walletService.reduce(bonus, member.getId(), "score");
-// if (reduce == 2) {
-// continue;
-// }
-// walletService.add(bonus, member.getId(), "commission");
-// moneyFlowService.addMoneyFlow(member.getId(), bonus, MoneyFlowTypeEnum.RANK_BONUS.getValue(), null, FlowTypeEnum.COMMISSION.getValue());
-// moneyFlowService.addMoneyFlow(member.getId(), bonus.negate(), MoneyFlowTypeEnum.RANK_BONUS.getValue(), null, FlowTypeEnum.SCORE.getValue());
-
- changeScoreAndCommission(member.getId(), bonus, MoneyFlowTypeEnum.RANK_BONUS.getValue(), null);
- }
- }
-
- /**
- * 拿推荐人的收益(代理,直推,排名)的10%加权平分给下面直推
- */
- @Override
- public void thankfulProfit(Date date) {
- log.info("######==感恩奖==start==####");
- List<MallMember> mallMembers = mallMemberMapper.selectMemberListHasChild();
- if (CollUtil.isEmpty(mallMembers)) {
- return;
- }
- if (date == null) {
- date = DateUtil.offset(new Date(), DateField.DAY_OF_YEAR, -1);
- }
-
- DataDictionaryCustom dic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.THANKFUL_BONUS.getType(), DataDictionaryEnum.THANKFUL_BONUS.getCode());
- // 感恩奖比例
- BigDecimal prop = new BigDecimal(dic.getValue()).divide(BigDecimal.valueOf(100), 2, RoundingMode.HALF_UP);
-
- for (MallMember mallMember : mallMembers) {
- BigDecimal income = mallMoneyFlowMapper.selectThankfulCommission(date, mallMember.getId());
- List<MallMember> children = mallMemberMapper.selectMemberDirectForHasLevel(mallMember.getInviteId());
- if (CollUtil.isEmpty(children)) {
- continue;
- }
-
- BigDecimal reduceProfit = income.multiply(prop);
- if (reduceProfit.compareTo(BigDecimal.ZERO) < 1) {
- continue;
- }
-
- int reduce = walletService.reduce(reduceProfit, mallMember.getId(), "commission");
- if (reduce == 2) {
- continue;
- }
- moneyFlowService.addMoneyFlow(mallMember.getId(), reduceProfit.negate(), MoneyFlowTypeEnum.THANKFUL.getValue(), null, FlowTypeEnum.COMMISSION.getValue());
-
- for (MallMember child : children) {
- BigDecimal preProfit = income.multiply(prop).divide(BigDecimal.valueOf(children.size()), 2, RoundingMode.HALF_DOWN);
- if (preProfit.compareTo(BigDecimal.ZERO) < 1) {
- continue;
- }
-
-// int reduce1 = walletService.reduce(preProfit, child.getId(), "score");
-// if (reduce1 == 2) {
-// continue;
-// }
-// walletService.add(preProfit, child.getId(), "commission");
-// moneyFlowService.addMoneyFlow(child.getId(), preProfit, MoneyFlowTypeEnum.THANKFUL.getValue(), null, mallMember.getId(), FlowTypeEnum.COMMISSION.getValue());
-// moneyFlowService.addMoneyFlow(child.getId(), preProfit.negate(), MoneyFlowTypeEnum.THANKFUL.getValue(), null, mallMember.getId(), FlowTypeEnum.SCORE.getValue());
- changeScoreAndCommission(child.getId(), preProfit, MoneyFlowTypeEnum.THANKFUL.getValue(), null);
- }
- }
- log.info("######==感恩奖==end==####");
- }
-
- @Override
- public void storeAndDirectorProfit(Date profitDate) {
- log.info("#####==店补/董事==start==######");
- if (profitDate == null) {
- profitDate = DateUtil.offset(new Date(), DateField.DAY_OF_YEAR, -1);
- }
- // 套餐业绩
-// BigDecimal tcIncome = mallOrderInfoMapper.selectTotalAmountUnCostForDate(profitDate, null, "D", 2);
- // 普通商品业绩
-// BigDecimal normalIncome = mallOrderInfoMapper.selectTotalAmountUnCostForDate(profitDate, null, "D", 1);
- BigDecimal totalIncome = mallAchieveRecordMapper.selectAchieveTotal("D", profitDate);
-
- // 董事
- DataDictionaryCustom dic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.DIRECTOR_BONUS.getType(), DataDictionaryEnum.DIRECTOR_BONUS.getCode());
- List<MallMember> directors = mallMemberMapper.selectDirectorsOrStoreMaster(1);
- if (CollUtil.isNotEmpty(directors)) {
- BigDecimal total = totalIncome.multiply(new BigDecimal(dic.getValue()).divide(new BigDecimal("100"), 2, RoundingMode.HALF_UP));
- BigDecimal pre = total.divide(new BigDecimal(directors.size()), 2, RoundingMode.HALF_UP);
-
- for (MallMember director : directors) {
- if (pre.compareTo(BigDecimal.ZERO) < 1) {
- continue;
- }
-
-// int reduce = walletService.reduce(pre, director.getId(), "score");
-// if (reduce == 2) {
-// continue;
-// }
-// walletService.add(pre, director.getId(), "commission");
-// moneyFlowService.addMoneyFlow(director.getId(), pre, MoneyFlowTypeEnum.DIRECTOR_BONUS.getValue(), null, FlowTypeEnum.COMMISSION.getValue());
-// moneyFlowService.addMoneyFlow(director.getId(), pre.negate(), MoneyFlowTypeEnum.DIRECTOR_BONUS.getValue(), null, FlowTypeEnum.SCORE.getValue());
- changeScoreAndCommission(director.getId(), pre, MoneyFlowTypeEnum.DIRECTOR_BONUS.getValue(), null);
- }
- }
-
- // 店补
- dic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.COMMUNITY_BONUS.getType(), DataDictionaryEnum.COMMUNITY_BONUS.getCode());
- List<MallMember> storeMasters = mallMemberMapper.selectDirectorsOrStoreMaster(2);
- if (CollUtil.isNotEmpty(storeMasters)) {
- BigDecimal total = totalIncome.multiply(new BigDecimal(dic.getValue()).divide(new BigDecimal("100"), 2, RoundingMode.HALF_UP));
- BigDecimal pre = total.divide(new BigDecimal(storeMasters.size()), 2, RoundingMode.HALF_UP);
-
- for (MallMember storeMaster : storeMasters) {
- if (pre.compareTo(BigDecimal.ZERO) < 1) {
- continue;
- }
-
-// int reduce = walletService.reduce(pre, storeMaster.getId(), "score");
-// if (reduce == 2) {
-// continue;
-// }
-// walletService.add(pre, storeMaster.getId(), "commission");
-// moneyFlowService.addMoneyFlow(storeMaster.getId(), pre, MoneyFlowTypeEnum.COMMUNITY_BONUS.getValue(), null, FlowTypeEnum.COMMISSION.getValue());
-// moneyFlowService.addMoneyFlow(storeMaster.getId(), pre.negate(), MoneyFlowTypeEnum.COMMUNITY_BONUS.getValue(), null, FlowTypeEnum.SCORE.getValue());
- changeScoreAndCommission(storeMaster.getId(), pre, MoneyFlowTypeEnum.COMMUNITY_BONUS.getValue(), null);
- }
- }
- log.info("#####==店补/董事==end==######");
}
@Override
@@ -676,453 +477,6 @@
"今日新增积分:" + multiplyTotalAmount.setScale(2, RoundingMode.HALF_UP)
+";平分积分数量:"+scorePoolToDay.setScale(2, RoundingMode.HALF_UP)
+";人数:"+cnt);
- }
-
- @Override
- public void agentPerkJob(Date profitDate) {
- /**
- * 代理商补贴
- * 全体代理商
- * 前一天全部业绩的百分比用来平分
- */
- log.info("######==代理商补贴==start==####");
-
- List<MallMember> mallMembersAgentPerkList = mallMemberMapper.selectMemberByDirector(1);
- if (CollUtil.isEmpty(mallMembersAgentPerkList)) {
- return;
- }
- if (profitDate == null) {
- profitDate = DateUtil.offset(new Date(), DateField.DAY_OF_YEAR, -1);
- }
- //前一天的总业绩
- BigDecimal agentPerkAmountSum = mallAchieveRecordMapper.selectAchieveTotal("D", profitDate);
- //补贴百分比
- DataDictionaryCustom agentPerkDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
- DataDictionaryEnum.AGENT_PERK.getType(),
- DataDictionaryEnum.AGENT_PERK.getCode()
- );
- if(ObjectUtil.isEmpty(agentPerkDic)){
- return;
- }
- BigDecimal agentPerk = new BigDecimal(agentPerkDic.getValue()).multiply(new BigDecimal("0.01"));
- agentPerkAmountSum = agentPerkAmountSum.multiply(agentPerk);
-
- BigDecimal agentPerkAmount = agentPerkAmountSum.divide(new BigDecimal(mallMembersAgentPerkList.size()), BigDecimal.ROUND_DOWN).setScale(2, BigDecimal.ROUND_DOWN);
- List<Long> mallMembersAgentPerkIds = mallMembersAgentPerkList.stream().map(MallMember::getId).collect(Collectors.toList());
- List<MallMemberWallet> mallMemberWallets = mallMemberWalletMapper.selectMemberWalletsByIds(mallMembersAgentPerkIds);
- iAgentService.flowTotalScoreBalance(
- mallMemberWallets,
- agentPerkAmount,
- MoneyFlowTypeEnum.AGENT_PERK.getValue(),
- MallUtils.getOrderNum("AP"),
- 1L
- );
-
- log.info("#####==代理商补贴==end==######" +
- "今日总补贴###" + agentPerkAmountSum.setScale(2, RoundingMode.HALF_UP)
- +"###人均###"+agentPerkAmount.setScale(2, RoundingMode.HALF_UP)
- +"###人数###"+mallMemberWallets.size());
-
-
- }
-
- @Override
- public void offLinePerkJob(Date profitDate) {
- /**
- * 线下服务中心补贴
- * 全体线下服务商
- * 前一天团队业绩的百分比用来平分
- */
- log.info("######==线下服务中心补贴==start==####");
-
- List<MallMember> mallMembersOffLinePerkList = mallMemberMapper.selectMemberByStoreMaster(1);
- if (CollUtil.isEmpty(mallMembersOffLinePerkList)) {
- return;
- }
-
- //补贴百分比
- DataDictionaryCustom offLinePerkDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
- DataDictionaryEnum.OFFLINE_PERK.getType(),
- DataDictionaryEnum.OFFLINE_PERK.getCode()
- );
- if(ObjectUtil.isEmpty(offLinePerkDic)){
- return;
- }
- BigDecimal offLinePerk = new BigDecimal(offLinePerkDic.getValue()).multiply(new BigDecimal("0.01"));
-
- if (profitDate == null) {
- profitDate = DateUtil.offset(new Date(), DateField.DAY_OF_YEAR, -1);
- }
- for(MallMember mallMembersOffLinePerk : mallMembersOffLinePerkList){
- String inviteId = mallMembersOffLinePerk.getInviteId();
- //获取团队下所有成员
- List<MallMember> allMallMemberList = mallMemberMapper.selectAllChildAgentListByInviteId(inviteId);
- //子团队中是否有线下服务商
- List<MallMember> storeMasterMallMemberList = mallMemberMapper.selectAllChildAgentListByInviteIdAndStoreMaster(inviteId, 1);
- if(CollUtil.isNotEmpty(storeMasterMallMemberList)){
- //如果有,该子团队成员不算业绩
- List<MallMember> storeMasterMallMembers = new ArrayList<>();
- for(MallMember storeMasterMallMember : storeMasterMallMemberList){
- List<MallMember> storeMasterList = mallMemberMapper.selectAllChildAgentListByInviteId(storeMasterMallMember.getInviteId());
- storeMasterMallMembers.addAll(storeMasterList);
- }
- allMallMemberList.removeAll(storeMasterMallMembers);
- }
-
- //团队下所有人的业绩
- List<Long> mallMembersOffLinePerkIds = allMallMemberList.stream().map(MallMember::getId).collect(Collectors.toList());
-
- BigDecimal offLinePerkAmountSum = mallAchieveRecordMapper.selectSumAchieveByMemberIds(mallMembersOffLinePerkIds,profitDate);
- //该团队产生的业绩金额
- offLinePerkAmountSum = offLinePerkAmountSum.multiply(offLinePerk).setScale(2,BigDecimal.ROUND_DOWN);
-
- //所有合伙人补贴至消费礼包的三倍额度需要复购一次。
- MallMemberWallet mallMemberWallet = mallMemberWalletMapper.selectWalletByMemberId(mallMembersOffLinePerk.getId());
- BigDecimal totalScore = mallMemberWallet.getTotalScore();
- if(totalScore.compareTo(offLinePerkAmountSum) < 0){
- offLinePerkAmountSum = totalScore;
- }
- if(BigDecimal.ZERO.compareTo(offLinePerkAmountSum) < 0){
- //减少补贴额度
- mallMemberWalletMapper.reduceTotalScoreById(offLinePerkAmountSum, mallMemberWallet.getId());
-
- iAgentService.reduceStar(mallMemberWallet.getMemberId(),offLinePerkAmountSum);
-
- mallMemberWalletMapper.addBalanceById(offLinePerkAmountSum, mallMemberWallet.getId());
-
- mallMoneyFlowService.addMoneyFlow(
- mallMembersOffLinePerk.getId(),
- offLinePerkAmountSum,
- MoneyFlowTypeEnum.OFFLINE_PERK.getValue(),
- MallUtils.getOrderNum("OLP"),
- FlowTypeEnum.BALANCE.getValue());
- }
- }
- }
-
- @Override
- public void teamEqualsPerkJob(Date profitDate) {
- /**
- * 全体用户
- * 对象:产生了收益的用户的直属上级
- * 条件:等级和用户等级一样
- * 补贴:每日补贴的10%,例如用户当日的补贴总额为100,直属上级拿100*10%=10,
- * 限制:直推收益除外。
- */
- if (profitDate == null) {
- profitDate = DateUtil.offset(new Date(), DateField.DAY_OF_YEAR, -1);
- }
- //平级补贴百分比
- DataDictionaryCustom teamEqualsPerkDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
- DataDictionaryEnum.TEAM_EQUALS_PERK.getType(),
- DataDictionaryEnum.TEAM_EQUALS_PERK.getCode());
- BigDecimal teamEqualsPerkPercent = new BigDecimal(teamEqualsPerkDic.getValue()).abs().multiply(BigDecimal.valueOf(0.01));
-
- //产生了收益的用户和直属上级
- List<AdminTeamEqualsPerkVo> adminTeamEqualsPerkVos = mallMoneyFlowMapper.selectTeamEqualsMemberByDate(profitDate);
- if(CollUtil.isNotEmpty(adminTeamEqualsPerkVos)){
- for(AdminTeamEqualsPerkVo adminTeamEqualsPerkVo : adminTeamEqualsPerkVos){
- BigDecimal sumAmount = adminTeamEqualsPerkVo.getSumAmount();
- //平级补贴
- BigDecimal teamEqualsPerkAmount = teamEqualsPerkPercent.multiply(sumAmount).setScale(2, BigDecimal.ROUND_DOWN);
-
- MallMemberWallet mallMemberWallet = mallMemberWalletMapper.selectWalletByMemberId(adminTeamEqualsPerkVo.getRtMemberId());
- BigDecimal totalScore = mallMemberWallet.getTotalScore();
- if(totalScore.compareTo(teamEqualsPerkAmount) < 0){
- teamEqualsPerkAmount = totalScore;
- }
- if(BigDecimal.ZERO.compareTo(teamEqualsPerkAmount) < 0){
- //减少补贴额度
- mallMemberWalletMapper.reduceTotalScoreById(teamEqualsPerkAmount, mallMemberWallet.getId());
-
- iAgentService.reduceStar(mallMemberWallet.getMemberId(),teamEqualsPerkAmount);
-
- mallMemberWalletMapper.addBalanceById(teamEqualsPerkAmount, mallMemberWallet.getId());
-//
-// mallMoneyFlowService.addMoneyFlow(
-// adminTeamEqualsPerkVo.getRtMemberId(),
-// teamEqualsPerkAmount,
-// MoneyFlowTypeEnum.TEAM_EQUALS_PERK.getValue(),
-// MallUtils.getOrderNum("TEP"),
-// FlowTypeEnum.BALANCE.getValue());
-
- mallMoneyFlowService.addMoneyFlow(
- adminTeamEqualsPerkVo.getRtMemberId(),
- teamEqualsPerkAmount,
- MoneyFlowTypeEnum.TEAM_EQUALS_PERK.getValue(),
- MallUtils.getOrderNum("TEP"),
- "平级奖励补贴",
- "补贴额度:"+mallMemberWallet.getTotalScore(),
- adminTeamEqualsPerkVo.getMemberId(),
- 2,
- FlowTypeEnum.BALANCE.getValue(),
- 1);
- }
- }
- }
- }
-
-
- @Override
- public void mqPerkRetryJob() {
- /**
- * 每次拿重试次数大于零
- * 按ID asc排序的十条数据
- */
-// List<MallMqRecord> mallMqRecords = mallMqRecordMapper.selectByStateLimitTen(2);
-// if(CollUtil.isEmpty(mallMqRecords)){
-// return;
-// }
-// DateTime dateTime = DateUtil.offsetMinute(new Date(), -5);
-// for(MallMqRecord mallMqRecord : mallMqRecords){
-// if(DateUtil.compare(dateTime,mallMqRecord.getCreateTime()) <= 0){
-// continue;
-// }
-// Integer retryTimes = mallMqRecord.getRetryTimes();
-// if(retryTimes <= 0){
-// continue;
-// }
-// retryTimes = retryTimes - 1;
-// mallMqRecord.setRetryTimes(retryTimes);
-// mallMqRecordMapper.updateById(mallMqRecord);
-//
-// Long orderId = mallMqRecord.getOrderId();
-// if(mallMqRecord.getState() == 2){
-// agentProducer.sendPerkMoneyMsg(orderId);
-// }
-// }
- }
-
- @Override
- @Transactional(rollbackFor = Exception.class)
- 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
- @Transactional(rollbackFor = Exception.class)
- 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();
- DataDictionaryCustom achieveReleaseDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
- GreenScoreEnum.ACHIEVE_RELEASE.getType(),
- GreenScoreEnum.ACHIEVE_RELEASE.getCode()
- );
- BigDecimal achieveDailyRelease = new BigDecimal(achieveReleaseDic.getValue() == null ? "0" : achieveReleaseDic.getValue());
- if(achieveDailyRelease.compareTo(BigDecimal.ZERO) <= 0){
- return;
- }
-
- 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.insert(mallScoreAchieveRelease);
-
}
@Override
diff --git a/src/main/java/cc/mrbird/febs/rabbit/consumer/AgentConsumer.java b/src/main/java/cc/mrbird/febs/rabbit/consumer/AgentConsumer.java
index ff65693..36f5491 100644
--- a/src/main/java/cc/mrbird/febs/rabbit/consumer/AgentConsumer.java
+++ b/src/main/java/cc/mrbird/febs/rabbit/consumer/AgentConsumer.java
@@ -67,7 +67,7 @@
public void orderReturnMoney(String orderId) {
log.info("收到订单返利消息:{}", orderId);
try {
- memberProfitService.dynamicProfit(Long.parseLong(orderId));
+ memberProfitService.directProfit(Long.parseLong(orderId));
} catch (Exception e) {
log.error("订单返利异常:", e);
}
--
Gitblit v1.9.1