From 3d51d141bc43d68a738cd15183254f1b980bcb92 Mon Sep 17 00:00:00 2001 From: Helius <wangdoubleone@gmail.com> Date: Fri, 27 May 2022 16:21:59 +0800 Subject: [PATCH] fix --- src/main/resources/templates/febs/views/modules/mallMember/moneyFlowList.html | 90 ++++++++++++----- src/test/java/cc/mrbird/febs/AgentTest.java | 2 src/main/java/cc/mrbird/febs/mall/service/impl/MemberProfitServiceImpl.java | 79 ++++++++------- src/main/java/cc/mrbird/febs/mall/quartz/ProfitJob.java | 70 ++++--------- src/main/java/cc/mrbird/febs/mall/vo/AdminMoneyFlowListVo.java | 2 5 files changed, 131 insertions(+), 112 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 87984f8..7b18035 100644 --- a/src/main/java/cc/mrbird/febs/mall/quartz/ProfitJob.java +++ b/src/main/java/cc/mrbird/febs/mall/quartz/ProfitJob.java @@ -9,6 +9,7 @@ import cc.mrbird.febs.mall.mapper.MallMoneyFlowMapper; import cc.mrbird.febs.mall.service.IApiMallMemberService; import cc.mrbird.febs.mall.service.IApiMallMemberWalletService; +import cc.mrbird.febs.mall.service.IMemberProfitService; import cc.mrbird.febs.mall.service.impl.CommonService; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateTime; @@ -34,54 +35,29 @@ public class ProfitJob { @Autowired - private MallMoneyFlowMapper moneyFlowMapper; + private IMemberProfitService memberProfitService; - @Autowired - private MallMemberMapper memberMapper; - - @Autowired - private IApiMallMemberWalletService memberWalletService; - - @Autowired - private IApiMallMemberService memberService; - - @Scheduled(cron = "0 1 0 * * ?") - @Transactional(rollbackFor = Exception.class) + /** + * 代理分红 + */ + @Scheduled(cron = "0 0 1 * * ?") public void profitJob() { - log.info("推荐人返利执行"); -// DateTime yesterday = DateUtil.yesterday(); -// List<MallMoneyFlow> flows = moneyFlowMapper.selectMoneyFlowProfitByDate(yesterday); -// -// if (CollUtil.isEmpty(flows)) { -// return; -// } -// -// for (MallMoneyFlow flow : flows) { -// MallMember member = memberMapper.selectById(flow.getMemberId()); -// -// List<MallMember> child = memberMapper.selectByIdAndNoLevel(member.getInviteId(), AgentLevelEnum.ZERO_LEVEL.name()); -// if (CollUtil.isEmpty(child)) { -// continue; -// } -// int size = child.size(); -// BigDecimal needReturn = flow.getAmount().multiply(BigDecimal.valueOf(0.1)); -// -// String orderNo = MallUtils.getOrderNum("R"); -// String remarkFormat = "{}, 用户:{}, 利润分红: {}"; -// -// BigDecimal returnMoney = needReturn.divide(BigDecimal.valueOf(size), 2, RoundingMode.DOWN); -// for (MallMember mallMember : child) { -// memberWalletService.addBalance(returnMoney, mallMember.getId()); -// -// String remark = StrUtil.format(remarkFormat, DateUtil.format(yesterday, "yyyy-MM-dd"), member.getName(), returnMoney); -// memberService.addMoneyFlow(mallMember.getId(), returnMoney, MoneyFlowTypeEnum.PARENT_BONUS.getValue(), orderNo, null, remark, member.getId(), null); -// } -// -// String remark = StrUtil.format(remarkFormat, DateUtil.format(yesterday, "yyyy-MM-dd"), member.getName(), needReturn); -// memberService.addMoneyFlow(member.getId(), needReturn.negate(), MoneyFlowTypeEnum.PARENT_BONUS.getValue(), orderNo, null, remark, null, null); -// memberWalletService.reduceBalance(needReturn, member.getId()); -// -// moneyFlowMapper.updateIsReturnByMemberId(MallMoneyFlow.IS_RETURN_Y, flow.getMemberId()); -// } + memberProfitService.agentProfit(null); + } + + /** + * 感恩奖 + */ + @Scheduled(cron = "0 0 2 * * ?") + public void thankfulJob() { + memberProfitService.thankfulProfit(); + } + + /** + * 排名奖 每月1号 + */ + @Scheduled(cron = "0 0 3 1 * ?") + public void rankJob() { + memberProfitService.rankProfit(); } } 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 2392be0..728fa15 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 @@ -111,7 +111,6 @@ DataDictionaryCustom dic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.DYNAMIC_BONUS.getType(), DataDictionaryEnum.DYNAMIC_BONUS.getCode()); // 隔代字典 DataDictionaryCustom indrectDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.INDRECT_BONUS.getType(), DataDictionaryEnum.INDRECT_BONUS.getCode()); - // 直接父级 MallMember parent = mallMemberMapper.selectInfoByInviteId(member.getReferrerId()); @@ -120,44 +119,9 @@ // 减去成本后算收益 BigDecimal amount = item.getPrice().subtract(item.getCostPrice()).multiply(BigDecimal.valueOf(item.getCnt())); + // =======直推返利== start ===== // 直接奖励收益 BigDecimal dynamicProfit = amount.divide(new BigDecimal(dic.getValue()), 2, RoundingMode.HALF_UP); - - if (StrUtil.isBlank(parent.getReferrerId())) { - continue; - } - - List<String> parents = StrUtil.split(parent.getReferrerIds(), ','); - List<MallMember> members = mallMemberMapper.selectByInviteIds(parents); - if (CollUtil.isEmpty(members)) { - return; - } - - // 隔代比例 - BigDecimal indrectDicProp = new BigDecimal(indrectDic.getValue()); - - // 隔代推荐奖 收益 - BigDecimal direct = dynamicProfit.divide(indrectDicProp, 2, RoundingMode.HALF_UP); - for (MallMember parentMember : members) { - if (parent.getInviteId().equals(parentMember.getInviteId())) { - continue; - } - - if (direct.compareTo(BigDecimal.ONE) < 1) { - break; - } - - int reduce = walletService.reduce(direct, parentMember.getId(), "score"); - if (reduce == 2) { - continue; - } - - walletService.add(direct, parentMember.getId(), "commission"); - moneyFlowService.addMoneyFlow(parentMember.getId(), direct, MoneyFlowTypeEnum.RECOMMEND_BONUS.getValue(), orderInfo.getOrderNo(), FlowTypeEnum.COMMISSION.getValue()); - moneyFlowService.addMoneyFlow(parentMember.getId(), direct.negate(), MoneyFlowTypeEnum.RECOMMEND_BONUS.getValue(), orderInfo.getOrderNo(), FlowTypeEnum.SCORE.getValue()); - - direct = direct.divide(indrectDicProp, 2, RoundingMode.HALF_UP); - } if (dynamicProfit.compareTo(BigDecimal.ZERO) < 1) { continue; @@ -172,10 +136,51 @@ moneyFlowService.addMoneyFlow(parent.getId(), dynamicProfit, MoneyFlowTypeEnum.DYNAMIC_ACHIEVE.getValue(), orderInfo.getOrderNo(), FlowTypeEnum.COMMISSION.getValue()); moneyFlowService.addMoneyFlow(parent.getId(), dynamicProfit.negate(), MoneyFlowTypeEnum.DYNAMIC_ACHIEVE.getValue(), orderInfo.getOrderNo(), FlowTypeEnum.SCORE.getValue()); + // =======直推返利== end ===== + + // =======隔代奖== start ===== + if (StrUtil.isBlank(parent.getReferrerId())) { + continue; + } + + List<String> parents = StrUtil.split(parent.getReferrerIds(), ','); + List<MallMember> members = mallMemberMapper.selectByInviteIds(parents); + if (CollUtil.isEmpty(members)) { + return; + } + // 隔代比例 + BigDecimal indrectDicProp = new BigDecimal(indrectDic.getValue()); + + // 隔代推荐奖 收益 + BigDecimal direct = dynamicProfit.divide(indrectDicProp, 2, RoundingMode.HALF_UP); + + // direct 收益小于1,则跳出 + if (direct.compareTo(BigDecimal.ONE) < 1) { + continue; + } + + for (MallMember parentMember : members) { + if (parent.getInviteId().equals(parentMember.getInviteId())) { + continue; + } + + int reduceResult = walletService.reduce(direct, parentMember.getId(), "score"); + if (reduceResult == 2) { + continue; + } + + walletService.add(direct, parentMember.getId(), "commission"); + moneyFlowService.addMoneyFlow(parentMember.getId(), direct, MoneyFlowTypeEnum.RECOMMEND_BONUS.getValue(), orderInfo.getOrderNo(), FlowTypeEnum.COMMISSION.getValue()); + moneyFlowService.addMoneyFlow(parentMember.getId(), direct.negate(), MoneyFlowTypeEnum.RECOMMEND_BONUS.getValue(), orderInfo.getOrderNo(), FlowTypeEnum.SCORE.getValue()); + + direct = direct.divide(indrectDicProp, 2, RoundingMode.HALF_UP); + } + // =======隔代奖== end ===== } } @Override + @Transactional(rollbackFor = Exception.class) public void agentProfit(Date profitDate) { log.info("#####==代理分红==start==#####"); if (profitDate == null) { diff --git a/src/main/java/cc/mrbird/febs/mall/vo/AdminMoneyFlowListVo.java b/src/main/java/cc/mrbird/febs/mall/vo/AdminMoneyFlowListVo.java index d70b1a9..8d055bd 100644 --- a/src/main/java/cc/mrbird/febs/mall/vo/AdminMoneyFlowListVo.java +++ b/src/main/java/cc/mrbird/febs/mall/vo/AdminMoneyFlowListVo.java @@ -36,4 +36,6 @@ private String bindPhone; + private Integer flowType; + } diff --git a/src/main/resources/templates/febs/views/modules/mallMember/moneyFlowList.html b/src/main/resources/templates/febs/views/modules/mallMember/moneyFlowList.html index ce8cf2a..f18c7ab 100644 --- a/src/main/resources/templates/febs/views/modules/mallMember/moneyFlowList.html +++ b/src/main/resources/templates/febs/views/modules/mallMember/moneyFlowList.html @@ -18,19 +18,38 @@ </div> </div> <div class="layui-inline"> - <label class="layui-form-label layui-form-label-sm">账户状态</label> + <label class="layui-form-label layui-form-label-sm">流水类型</label> <div class="layui-input-inline"> <select name="type"> <option value="">请选择</option> - <option value="1">直推奖励</option> - <option value="2">团队奖励</option> - <option value="3">订单支付</option> - <option value="4">退款</option> - <option value="5">转账</option> - <option value="6">提现</option> - <option value="7">排名奖励</option> - <option value="8">利润分红</option> - <option value="9">系统拨付</option> + <option value="1">静态收益</option> + <option value="2">动态收益</option> + <option value="3">代理收益</option> + <option value="4">排名收益</option> + <option value="5">董事收益</option> + <option value="6">社区店补</option> + <option value="7">推荐人收益</option> + <option value="8">提现</option> + <option value="9">转账</option> + <option value="10">支付</option> + <option value="11">退款</option> + <option value="12">佣金转竞猜积分</option> + <option value="13">佣金转余额</option> + <option value="14">竞猜积分签到</option> + <option value="15">感恩奖</option> + <option value="16">系统拨付</option> + </select> + </div> + </div> + <div class="layui-inline"> + <label class="layui-form-label layui-form-label-sm">资金类型</label> + <div class="layui-input-inline"> + <select name="flowType"> + <option value="">请选择</option> + <option value="1">余额</option> + <option value="2">赠送积分</option> + <option value="3">竞猜积分</option> + <option value="4">佣金</option> </select> </div> </div> @@ -104,37 +123,53 @@ {field: 'type', title: '流水类型', templet: function (d) { if (d.type === 1) { - return '<span>直推奖励</span>' + return '<span>静态收益</span>' } else if (d.type === 2) { - return '<span>团队奖励</span>' + return '<span>动态收益</span>' } else if (d.type === 3) { - return '<span>订单支付</span>' + return '<span>代理收益</span>' } else if (d.type === 4) { - return '<span>退款</span>' + return '<span>排名收益</span>' }else if (d.type === 5) { - return '<span>转账</span>' + return '<span>董事收益</span>' }else if (d.type === 6) { - return '<span>提现</span>' + return '<span>社区店补</span>' }else if (d.type === 7) { - return '<span>排名奖励</span>' + return '<span>推荐人收益</span>' }else if (d.type === 8) { - return '<span>利润分红</span>' + return '<span>提现</span>' }else if (d.type === 9) { + return '<span>转账</span>' + }else if (d.type === 10) { + return '<span>支付</span>' + }else if (d.type === 11) { + return '<span>退款</span>' + }else if (d.type === 12) { + return '<span>佣金转竞猜积分</span>' + }else if (d.type === 13) { + return '<span>佣金转余额</span>' + }else if (d.type === 14) { + return '<span>竞猜积分签到</span>' + }else if (d.type === 15) { + return '<span>感恩奖</span>' + }else if (d.type === 16) { return '<span>系统拨付</span>' }else{ return '' } }, minWidth: 80,align:'center'}, - {field: 'type', title: '支付方式', + {field: 'flowType', title: '资金类型', templet: function (d) { - if (d.type === 3) { - if(d.payMethod === null || d.payMethod ===''){ - return '' - }else{ - return '<span>'+d.payMethod+'</span>' - } - } else{ - return '' + if (d.flowType === 1) { + return '余额'; + } else if(d.flowType === 2) { + return '赠送积分' + } else if(d.flowType === 3) { + return '竞猜积分' + } else if(d.flowType === 4) { + return '佣金' + } else { + return '-'; } }, minWidth: 80,align:'center'}, {field: 'orderNo', title: '订单编号', minWidth: 150,align:'left'}, @@ -149,6 +184,7 @@ name: $searchForm.find('input[name="name"]').val().trim(), phone: $searchForm.find('input[name="phone"]').val().trim(), type: $searchForm.find("select[name='type']").val(), + flowType: $searchForm.find("select[name='flowType']").val(), }; } diff --git a/src/test/java/cc/mrbird/febs/AgentTest.java b/src/test/java/cc/mrbird/febs/AgentTest.java index c1bface..12b948b 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("1"); + agentConsumer.orderReturnMoney("7"); } } -- Gitblit v1.9.1