From 279e2cbedd1741f769f08cf626e1b0188996ac5f Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Wed, 29 Sep 2021 16:45:06 +0800
Subject: [PATCH] 20210928

---
 src/main/resources/templates/febs/views/modules/mallMember/mallSystemPay.html  |   89 ++++++++++++++++++++++
 src/main/java/cc/mrbird/febs/mall/dto/MallSystemPayDto.java                    |   16 ++++
 src/test/java/cc/mrbird/febs/AgentTest.java                                    |    7 +
 src/main/java/cc/mrbird/febs/mall/mapper/MallMemberMapper.java                 |    2 
 src/main/java/cc/mrbird/febs/mall/mapper/MallMemberWalletMapper.java           |    2 
 src/main/java/cc/mrbird/febs/mall/controller/AdminMallMemberController.java    |    9 ++
 src/main/resources/mapper/modules/MallMemberMapper.xml                         |   29 +++++++
 src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallMemberServiceImpl.java |   33 ++++++++
 src/main/resources/templates/febs/views/modules/mallMember/mallMemberList.html |   12 +++
 src/main/java/cc/mrbird/febs/common/enumerates/MoneyFlowTypeEnum.java          |    6 +
 src/main/java/cc/mrbird/febs/mall/controller/ViewMallMemberController.java     |   14 +++
 src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java           |    5 +
 src/main/resources/mapper/modules/MallMemberWalletMapper.xml                   |    7 +
 src/main/resources/templates/febs/views/modules/mallMember/detail.html         |    3 
 src/main/resources/templates/febs/views/modules/mallMember/newsInfoList.html   |    2 
 src/main/java/cc/mrbird/febs/mall/service/IAdminMallMemberService.java         |    2 
 16 files changed, 234 insertions(+), 4 deletions(-)

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 b4a28d6..594e957 100644
--- a/src/main/java/cc/mrbird/febs/common/enumerates/MoneyFlowTypeEnum.java
+++ b/src/main/java/cc/mrbird/febs/common/enumerates/MoneyFlowTypeEnum.java
@@ -40,7 +40,11 @@
     /**
      * 利润分红
      */
-    PARENT_BONUS(8);
+    PARENT_BONUS(8),
+    /**
+     * 系统拨付
+     */
+    SYSTEM_PAY(9);
 
     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 c37f815..34919c2 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/AdminMallMemberController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/AdminMallMemberController.java
@@ -77,6 +77,15 @@
     }
 
     /**
+     * 会员列表-系统拨付
+     */
+    @PostMapping("updateSystemPay")
+    @ControllerEndpoint(operation = "会员列表-系统拨付", exceptionMessage = "操作失败")
+    public FebsResponse updateSystemPay(@Valid MallSystemPayDto mallSystemPayDto) {
+        return mallMemberService.updateSystemPay(mallSystemPayDto);
+    }
+
+    /**
      * 资金流水-列表
      * @param moneyFlowListDto
      * @param request
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 bd04bd0..39cddb8 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/ViewMallMemberController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/ViewMallMemberController.java
@@ -52,6 +52,20 @@
     }
 
     /**
+     * 会员列表-系统拨付
+     * @param id
+     * @param model
+     * @return
+     */
+    @GetMapping("mallSystemPay/{id}")
+    @RequiresPermissions("mallSystemPay:update")
+    public String systemPay(@PathVariable long id, Model model) {
+        MallMemberVo data = mallMemberService.getMallMemberInfoById(id);
+        model.addAttribute("systemPay", data);
+        return FebsUtil.view("modules/mallMember/mallSystemPay");
+    }
+
+    /**
      * 会员列表-资金流水
      * @param id
      * @param model
diff --git a/src/main/java/cc/mrbird/febs/mall/dto/MallSystemPayDto.java b/src/main/java/cc/mrbird/febs/mall/dto/MallSystemPayDto.java
new file mode 100644
index 0000000..c39c806
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/dto/MallSystemPayDto.java
@@ -0,0 +1,16 @@
+package cc.mrbird.febs.mall.dto;
+
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+@ApiModel(value = "MallOrderRefundDto", description = "参数接收类")
+public class MallSystemPayDto {
+    private Long id;
+
+    private BigDecimal balance;
+
+    private BigDecimal addBalance;
+}
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 90d483c..06f211f 100644
--- a/src/main/java/cc/mrbird/febs/mall/mapper/MallMemberMapper.java
+++ b/src/main/java/cc/mrbird/febs/mall/mapper/MallMemberMapper.java
@@ -63,4 +63,6 @@
     IPage<AppVersion> getAppVersionListInPage(Page<AppVersion> page, AppVersion appVersion);
 
     List<MallMember> selectByIdAndNoLevel(@Param("refererId") String refererId, @Param("level") String level);
+
+    List<MallMember> selectMallMemberByInviteIdAndLevel(@Param("inviteId")String inviteId, @Param("level")String level);
 }
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 8fdc1a0..ab6deeb 100644
--- a/src/main/java/cc/mrbird/febs/mall/mapper/MallMemberWalletMapper.java
+++ b/src/main/java/cc/mrbird/febs/mall/mapper/MallMemberWalletMapper.java
@@ -9,4 +9,6 @@
     MallMemberWallet selectWalletByMemberId(@Param("memberId") Long memberId);
 
     int updateBalanceWithVersion(@Param("record") MallMemberWallet wallet);
+
+    void updateBalanceWithId(@Param("record")MallMemberWallet mallMemberWallet);
 }
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 3bc7182..0b604df 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/IAdminMallMemberService.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/IAdminMallMemberService.java
@@ -74,4 +74,6 @@
     FebsResponse delNewsInfo(Long id);
 
     FebsResponse updateNewsInfo(MallNewsInfoDto mallNewsInfoDto);
+
+    FebsResponse updateSystemPay(MallSystemPayDto mallSystemPayDto);
 }
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 9270c40..d2efbaf 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
@@ -3,6 +3,7 @@
 import cc.mrbird.febs.common.entity.FebsResponse;
 import cc.mrbird.febs.common.entity.QueryRequest;
 import cc.mrbird.febs.common.enumerates.AgentLevelEnum;
+import cc.mrbird.febs.common.enumerates.MoneyFlowTypeEnum;
 import cc.mrbird.febs.mall.dto.*;
 import cc.mrbird.febs.mall.entity.*;
 import cc.mrbird.febs.mall.entity.MallNewsInfo;
@@ -37,6 +38,8 @@
 public class AdminMallMemberServiceImpl extends ServiceImpl<MallMemberMapper, MallMember> implements IAdminMallMemberService {
 
     private final MallMemberMapper mallMemberMapper;
+
+    private final MallMemberWalletMapper mallMemberWalletMapper;
 
     private final MallMoneyFlowMapper mallMoneyFlowMapper;
 
@@ -378,4 +381,34 @@
         return new FebsResponse().success();
     }
 
+    @Override
+    public FebsResponse updateSystemPay(MallSystemPayDto mallSystemPayDto) {
+        Long memberId = mallSystemPayDto.getId();
+        MallMember mallMember = mallMemberMapper.selectById(memberId);
+        if(ObjectUtil.isEmpty(mallMember)){
+            return new FebsResponse().fail().message("系统繁忙,请刷新页面重试");
+        }
+
+        BigDecimal bigDecimal = mallSystemPayDto.getAddBalance();
+        if(bigDecimal.compareTo(BigDecimal.ZERO) <= 0){
+            return new FebsResponse().fail().message("拨付数目需要大于0");
+        }
+
+        MallMemberWallet mallMemberWallet = mallMemberWalletMapper.selectWalletByMemberId(memberId);
+        mallMemberWallet.setBalance(mallMemberWallet.getBalance().add(bigDecimal));
+        mallMemberWalletMapper.updateBalanceWithId(mallMemberWallet);
+
+//        MallMoneyFlow flow = new MallMoneyFlow();
+//        flow.setMemberId(memberId);
+//        flow.setAmount(bigDecimal);
+//        flow.setType(MoneyFlowTypeEnum.SYSTEM_PAY.getValue());
+//        flow.setOrderNo(orderNo);
+//        flow.setDescription(description);
+//        flow.setRemark(remark);
+//        flow.setRtMemberId(rtMemberId);
+//        flow.setStatus(status);
+//        mallMoneyFlowMapper.insert(flow);
+        return null;
+    }
+
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java
index 5de459d..61bcc1e 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java
@@ -191,6 +191,11 @@
         for (MallMember mallMember : agentList) {
             String level = mallMember.getLevel();
 
+            List<MallMember> bigLevel = memberMapper.selectMallMemberByInviteIdAndLevel(mallMember.getInviteId(),level);
+            if(CollUtil.isNotEmpty(bigLevel)){
+                continue;
+            }
+
             Map<Long, BigDecimal> amount = needReturn.get(level);
 
             // 按照代理关系,返到第二级,平级奖
diff --git a/src/main/resources/mapper/modules/MallMemberMapper.xml b/src/main/resources/mapper/modules/MallMemberMapper.xml
index c53f2b6..63ca177 100644
--- a/src/main/resources/mapper/modules/MallMemberMapper.xml
+++ b/src/main/resources/mapper/modules/MallMemberMapper.xml
@@ -37,12 +37,15 @@
                a.level,
                a.account_status,
                a.CREATED_TIME,
-               c.balance,
+               IFNULL(c.balance,0) balance,
+               d.description levelName,
                b.name
                FROM mall_member a
             LEFT JOIN mall_member b on a.referrer_id = b.invite_id
             LEFT JOIN mall_member_wallet c on c.member_id = a.id
+            LEFT JOIN data_dictionary_custom d on d.code = a.level
             where a.id = #{id}
+            GROUP BY a.id
     </select>
 
     <select id="selectInfoByAccount" resultType="cc.mrbird.febs.mall.entity.MallMember">
@@ -212,4 +215,28 @@
     <select id="selectByIdAndNoLevel" resultType="cc.mrbird.febs.mall.entity.MallMember">
         select * from mall_member where referrer_id=#{refererId} and level != #{level}
     </select>
+
+    <select id="selectMallMemberByInviteIdAndLevel" resultType="cc.mrbird.febs.mall.entity.MallMember">
+        SELECT
+            m.*, b.
+            VALUE
+
+        FROM
+            mall_member m
+                LEFT JOIN data_dictionary_custom b ON m. LEVEL = b. CODE
+        WHERE
+            find_in_set(#{inviteId}, m.referrer_ids)
+          AND b.type = 'AGENT_LEVEL'
+          AND b.VALUE > (
+            SELECT
+                VALUE
+            FROM
+                data_dictionary_custom a
+            WHERE
+                a. CODE = #{level}
+              AND a.type = 'AGENT_LEVEL'
+        )
+        GROUP BY
+            m.id
+    </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 fb94670..cc3b0b8 100644
--- a/src/main/resources/mapper/modules/MallMemberWalletMapper.xml
+++ b/src/main/resources/mapper/modules/MallMemberWalletMapper.xml
@@ -12,4 +12,11 @@
             balance = #{record.balance}
         where id=#{record.id} and revision=#{record.revision}
     </update>
+
+    <update id="updateBalanceWithId">
+        update mall_member_wallet
+        set revision = revision + 1,
+            balance = #{record.balance}
+        where id=#{record.id}
+    </update>
 </mapper>
\ No newline at end of file
diff --git a/src/main/resources/templates/febs/views/modules/mallMember/detail.html b/src/main/resources/templates/febs/views/modules/mallMember/detail.html
index 7f8229e..59e88c3 100644
--- a/src/main/resources/templates/febs/views/modules/mallMember/detail.html
+++ b/src/main/resources/templates/febs/views/modules/mallMember/detail.html
@@ -42,7 +42,7 @@
         <div class="layui-form-item">
             <label class="layui-form-label febs-form-item-require">代理层级:</label>
             <div class="layui-input-block">
-                <input type="text" name="level" data-th-id="${member.level}"
+                <input type="text" name="levelName" data-th-id="${member.levelName}"
                        autocomplete="off" class="layui-input" readonly>
             </div>
         </div>
@@ -127,6 +127,7 @@
                 "inviteId": member.inviteId,
                 "referrerName": member.referrerName,
                 "level": member.level,
+                "levelName": member.levelName,
                 "createdTime": member.createdTime,
                 "accountStatus": member.accountStatus
             });
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 b74872a..9a5fa05 100644
--- a/src/main/resources/templates/febs/views/modules/mallMember/mallMemberList.html
+++ b/src/main/resources/templates/febs/views/modules/mallMember/mallMemberList.html
@@ -97,6 +97,17 @@
                     maxmin: true,
                 });
             }
+            if (layEvent === 'systemPay') {
+                febs.modal.open('系统拨付', 'modules/mallMember/mallSystemPay/' + data.id, {
+                    btn: ['提交', '取消'],
+                    yes: function (index, layero) {
+                        $('#systemPay-update').find('#submit').trigger('click');
+                    },
+                    btn2: function () {
+                        layer.closeAll();
+                    }
+                });
+            }
         });
         function closeAccount(id) {
             febs.get(ctx + 'admin/mallMember/closeAccount/' + id, null, function () {
@@ -163,6 +174,7 @@
                             if (d.accountStatus === 1) {
                                 return '<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="see" shiro:hasPermission="user:update">详情</button>'
                                         +'<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="close" shiro:hasPermission="user:update">禁用</button>'
+                                        +'<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="systemPay" shiro:hasPermission="user:update">积分拨付</button>'
                                         +'<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="moneyFlow" shiro:hasPermission="user:update">资金流水</button>'
 
                             }else{
diff --git a/src/main/resources/templates/febs/views/modules/mallMember/mallSystemPay.html b/src/main/resources/templates/febs/views/modules/mallMember/mallSystemPay.html
new file mode 100644
index 0000000..6a279a7
--- /dev/null
+++ b/src/main/resources/templates/febs/views/modules/mallMember/mallSystemPay.html
@@ -0,0 +1,89 @@
+<style>
+    #systemPay-update {
+        padding: 20px 25px 25px 0;
+    }
+
+    #systemPay-update .layui-treeSelect .ztree li a, .ztree li span {
+        margin: 0 0 2px 3px !important;
+    }
+    #systemPay-update #data-permission-tree-block {
+        border: 1px solid #eee;
+        border-radius: 2px;
+        padding: 3px 0;
+    }
+    #systemPay-update .layui-treeSelect .ztree li span.button.switch {
+        top: 1px;
+        left: 3px;
+    }
+    #systemPay-update img{
+        max-width:100px
+    }
+
+</style>
+<div class="layui-fluid" id="systemPay-update">
+    <form class="layui-form" action="" lay-filter="systemPay-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" data-th-value="${systemPay.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>
+        </div>
+        <div class="layui-form-item febs-hide">
+            <button class="layui-btn" lay-submit="" lay-filter="systemPay-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}]],
+            $view = $('#systemPay-update'),
+            validate = layui.validate;
+
+        form.render();
+        laydate.render({
+            elem: '#febs-form-group-date'
+        });
+
+        formSelects.render();
+
+
+        initUserValue();
+
+        function initUserValue() {
+            form.val("systemPay-update-form", {
+                "id": systemPay.id,
+                "balance": systemPay.balance,
+            });
+        }
+
+        form.on('submit(systemPay-update-form-submit)', function (data) {
+            febs.post(ctx + 'admin/mallMember/updateSystemPay', data.field, function () {
+                layer.closeAll();
+                febs.alert.success('操作成功');
+                $('#febs-newInfo').find('#reset').click();
+            });
+            return false;
+        });
+    });
+</script>
\ No newline at end of file
diff --git a/src/main/resources/templates/febs/views/modules/mallMember/newsInfoList.html b/src/main/resources/templates/febs/views/modules/mallMember/newsInfoList.html
index 37ca6b7..1bc98a9 100644
--- a/src/main/resources/templates/febs/views/modules/mallMember/newsInfoList.html
+++ b/src/main/resources/templates/febs/views/modules/mallMember/newsInfoList.html
@@ -61,7 +61,7 @@
                 febs.modal.open('编辑', 'modules/mallMember/newsInfoUpdate/' + data.id, {
                     btn: ['提交', '取消'],
                     yes: function (index, layero) {
-                        $('#newsInfo-update').find('#submit').trigger('click');
+                        $('#systemPay-update').find('#submit').trigger('click');
                     },
                     btn2: function () {
                         layer.closeAll();
diff --git a/src/test/java/cc/mrbird/febs/AgentTest.java b/src/test/java/cc/mrbird/febs/AgentTest.java
index 3431bfb..6f4bc41 100644
--- a/src/test/java/cc/mrbird/febs/AgentTest.java
+++ b/src/test/java/cc/mrbird/febs/AgentTest.java
@@ -106,6 +106,13 @@
     }
 
     @Test
+    public void returnMoney() {
+        // agentService.autoUpAgentLevel(3L);
+//        agentProducer.sendAutoLevelUpMsg(5L);
+        agentService.returnMoneyToAgent(32L);
+    }
+
+    @Test
     public void bigdecimalTest() {
         BigDecimal aa = new BigDecimal("1.345");
 

--
Gitblit v1.9.1