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