From ec97abaae5a0d93e9b4d5f3f82de7b97f2b586b0 Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Sat, 11 Jun 2022 20:22:15 +0800
Subject: [PATCH] fix some problem and add update referer and add member

---
 src/main/resources/templates/febs/views/modules/mallMember/mallSystemPay.html   |   16 +
 src/main/java/cc/mrbird/febs/mall/dto/MallSystemPayDto.java                     |    2 
 src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java |   15 
 src/main/java/cc/mrbird/febs/mall/controller/AdminMallMemberController.java     |   28 ++
 src/main/resources/mapper/modules/MallMemberMapper.xml                          |    5 
 src/main/resources/templates/febs/views/modules/mallMember/moneyFlow.html       |   52 +++-
 src/main/resources/templates/febs/views/modules/mallMember/agentList.html       |    9 
 src/main/java/cc/mrbird/febs/mall/dto/RegisterDto.java                          |    3 
 src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallMemberServiceImpl.java  |  102 ++++++++
 src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java    |   10 
 src/main/resources/templates/febs/views/modules/mallMember/mallMemberList.html  |  155 +++++++++++--
 src/main/resources/templates/febs/views/modules/system/profitSetting.html       |    3 
 src/main/resources/templates/febs/views/modules/mallMember/updateRefererId.html |   93 ++++++++
 src/main/java/cc/mrbird/febs/mall/entity/MallMember.java                        |    7 
 src/main/resources/templates/febs/views/modules/mallMember/agentLevelSet.html   |    2 
 src/main/java/cc/mrbird/febs/mall/controller/ViewMallMemberController.java      |   18 +
 src/main/java/cc/mrbird/febs/mall/service/impl/MemberProfitServiceImpl.java     |   14 
 src/main/resources/templates/febs/views/modules/mallMember/addMember.html       |   74 ++++++
 src/main/java/cc/mrbird/febs/mall/vo/AdminMallMoneyFlowVo.java                  |    1 
 src/main/resources/application.yml                                              |    2 
 src/main/java/cc/mrbird/febs/mall/service/IAdminMallMemberService.java          |    7 
 21 files changed, 539 insertions(+), 79 deletions(-)

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 25cd8b7..9c3f041 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/AdminMallMemberController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/AdminMallMemberController.java
@@ -10,6 +10,7 @@
 import cc.mrbird.febs.mall.entity.MallNewsInfo;
 import cc.mrbird.febs.mall.entity.MallShopApply;
 import cc.mrbird.febs.mall.service.IAdminMallMemberService;
+import cc.mrbird.febs.mall.service.IApiMallMemberService;
 import cc.mrbird.febs.mall.vo.AdminAgentLevelOptionTreeVo;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -29,6 +30,7 @@
 public class AdminMallMemberController extends BaseController {
 
     private final IAdminMallMemberService mallMemberService;
+    private final IApiMallMemberService apiMallMemberService;
 
     /**
      * 平台账单
@@ -296,6 +298,13 @@
         return mallMemberService.resetPwd(id);
     }
 
+    @PostMapping(value = "resetPwdNew/{type}/{ids}")
+    @ControllerEndpoint(operation = "重置密码", exceptionMessage = "重置密码失败")
+    public FebsResponse resetPwd(@PathVariable("ids") String ids, @PathVariable("type") Integer type) {
+        mallMemberService.resetPwd(ids, type);
+        return new FebsResponse().success().message("重置成功");
+    }
+
     @GetMapping("shopApplyList")
     @ControllerEndpoint(operation = "申请通道列表", exceptionMessage = "获取失败")
     public FebsResponse shopApplyList(MallShopApply mallShopApply, QueryRequest request) {
@@ -314,4 +323,23 @@
         return new FebsResponse().success().message("操作成功");
     }
 
+    @PostMapping("/refererIdUpdate")
+    @ControllerEndpoint(operation = "修改推荐人", exceptionMessage = "修改失败")
+    public FebsResponse refererIdUpdate(MallMember member) {
+        mallMemberService.modifyReferer(member);
+        return new FebsResponse().success();
+    }
+
+    @PostMapping("/memberAdd")
+    public FebsResponse memberAdd(MallMember member) {
+        RegisterDto registerDto = new RegisterDto();
+        registerDto.setAccount(member.getAccount());
+        registerDto.setRegistType("admin");
+        registerDto.setPassword("a123456");
+        registerDto.setInviteId(member.getInviteId());
+        registerDto.setName(member.getName());
+        apiMallMemberService.register(registerDto);
+        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 057d595..ef7b482 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/ViewMallMemberController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/ViewMallMemberController.java
@@ -68,11 +68,12 @@
      * @param model
      * @return
      */
-    @GetMapping("mallSystemPay/{id}")
+    @GetMapping("mallSystemPay/{type}/{id}")
     @RequiresPermissions("mallSystemPay:update")
-    public String systemPay(@PathVariable long id, Model model) {
+    public String systemPay(@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/mallSystemPay");
     }
 
@@ -253,6 +254,19 @@
         return FebsUtil.view("modules/mallMember/shopApplyInfo");
     }
 
+    @GetMapping("updateReferer/{id}")
+    public String updateReferer(@PathVariable("id") Long id, Model model) {
+        MallMember member = mallMemberService.getById(id);
+        model.addAttribute("referer", mallMemberService.findByInviteId(member.getReferrerId()));
+        model.addAttribute("id", id);
+        return FebsUtil.view("modules/mallMember/updateRefererId");
+    }
+
+    @GetMapping("addMember")
+    public String addMember() {
+        return FebsUtil.view("modules/mallMember/addMember");
+    }
+
 
 
 
diff --git a/src/main/java/cc/mrbird/febs/mall/dto/MallSystemPayDto.java b/src/main/java/cc/mrbird/febs/mall/dto/MallSystemPayDto.java
index c39c806..889e950 100644
--- a/src/main/java/cc/mrbird/febs/mall/dto/MallSystemPayDto.java
+++ b/src/main/java/cc/mrbird/febs/mall/dto/MallSystemPayDto.java
@@ -13,4 +13,6 @@
     private BigDecimal balance;
 
     private BigDecimal addBalance;
+
+    private Integer type;
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/dto/RegisterDto.java b/src/main/java/cc/mrbird/febs/mall/dto/RegisterDto.java
index 6ac2eab..c873610 100644
--- a/src/main/java/cc/mrbird/febs/mall/dto/RegisterDto.java
+++ b/src/main/java/cc/mrbird/febs/mall/dto/RegisterDto.java
@@ -37,4 +37,7 @@
     @ApiModelProperty(value = "邀请码")
     private String inviteId;
 
+    @ApiModelProperty(hidden = true)
+    private String registType;
+
 }
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 5618bf6..33d1d25 100644
--- a/src/main/java/cc/mrbird/febs/mall/entity/MallMember.java
+++ b/src/main/java/cc/mrbird/febs/mall/entity/MallMember.java
@@ -108,6 +108,10 @@
 
     @TableField(exist = false)
     private BigDecimal balance;
+    @TableField(exist = false)
+    private BigDecimal score;
+    @TableField(exist = false)
+    private BigDecimal prizeScore;
 
     @TableField(exist = false)
     private BigDecimal amount;
@@ -115,4 +119,7 @@
     @TableField(exist = false)
     private String query;
 
+    @TableField(exist = false)
+    private String levelName;
+
 }
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 6514b34..35c6b67 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/IAdminMallMemberService.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/IAdminMallMemberService.java
@@ -74,6 +74,9 @@
 
     FebsResponse resetPwd(Long id);
 
+
+    void resetPwd(String ids, Integer type);
+
     IPage<MallDataVo> getMallDataList(MallMember mallMember, QueryRequest request);
 
     IPage<MallShopApply> findShopApplyListInPage(MallShopApply mallShopApply, QueryRequest request);
@@ -84,4 +87,8 @@
     void applyCheckDisAgree(Long id);
 
     FebsResponse updateMemberInfo(MallUpdateMemberInfoDto mallUpdateMemberInfoDto);
+
+    MallMember findByInviteId(String inviteId);
+
+    void modifyReferer(MallMember member);
 }
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 b4b8d81..7dc3136 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
@@ -326,11 +326,20 @@
             return new FebsResponse().fail().message("拨付数目需要大于0");
         }
 
-        MallMemberWallet mallMemberWallet = mallMemberWalletMapper.selectWalletByMemberId(memberId);
-        mallMemberWallet.setBalance(mallMemberWallet.getBalance().add(bigDecimal));
-        mallMemberWalletMapper.updateBalanceWithId(mallMemberWallet);
+        Integer type = mallSystemPayDto.getType();
+        String filedType = "";
+        if (type == 1) {
+            filedType = "balance";
+        } else if (type == 2) {
+            filedType = "score";
+        } else if (type == 3) {
+            filedType = "prizeScore";
+        } else {
+            throw new FebsException("参数错误");
+        }
 
-        mallMoneyFlowService.addMoneyFlow(memberId, bigDecimal, MoneyFlowTypeEnum.SYSTEM.getValue(), null, FlowTypeEnum.BALANCE.getValue());
+        iApiMallMemberWalletService.add(mallSystemPayDto.getAddBalance(), mallSystemPayDto.getId(), filedType);
+        mallMoneyFlowService.addMoneyFlow(memberId, bigDecimal, MoneyFlowTypeEnum.SYSTEM.getValue(), null, type);
         return new FebsResponse().success();
     }
 
@@ -363,6 +372,32 @@
         mallMember.setPassword(pwd);
         this.baseMapper.updateById(mallMember);
         return new FebsResponse().success().message("重置成功");
+    }
+
+    @Override
+    public void resetPwd(String ids, Integer type) {
+        if (StrUtil.isEmpty(ids)) {
+            throw new FebsException("参数错误");
+        }
+        List<String> idList = StrUtil.split(ids, ',');
+
+        for (String s : idList) {
+            Long id = Long.parseLong(s);
+            MallMember member = new MallMember();
+            member.setId(id);
+            member.setCreatedTime(null);
+
+            // 重置交易密码
+            if (type == 1) {
+                String payPwd = SecureUtil.md5("654321");
+                member.setTradePassword(payPwd);
+                // 重置登录密码
+            } else {
+                String pwd = SecureUtil.md5("a123456");
+                member.setPassword(pwd);
+            }
+            this.baseMapper.updateById(member);
+        }
     }
 
     @Override
@@ -458,4 +493,63 @@
         mallMemberWalletMapper.updateById(mallMemberWallet);
         return new FebsResponse().success();
     }
+
+    @Override
+    public MallMember findByInviteId(String inviteId) {
+
+        return this.baseMapper.selectInfoByInviteId(inviteId);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void modifyReferer(MallMember member) {
+        MallMember referer = this.baseMapper.selectInfoByInviteId(member.getReferrerId());
+        if (referer == null) {
+            throw new FebsException("推荐人不存在");
+        }
+        String refererId = member.getReferrerId();
+
+        member = this.baseMapper.selectById(member.getId());
+
+        String beforeReferer = member.getReferrerId();
+        member.setReferrerId(refererId);
+        String refererIds = refererIds(refererId);
+        member.setReferrerIds(refererIds);
+        this.baseMapper.updateById(member);
+
+        List<MallMember> childs = this.baseMapper.selectByRefererId(member.getInviteId());
+        if (CollUtil.isEmpty(childs)) {
+            return;
+        }
+
+        for (MallMember child : childs) {
+            child.setReferrerIds(member.getInviteId() + "," + refererIds);
+            this.baseMapper.updateById(child);
+        }
+    }
+
+    private String refererIds(String parentId) {
+        boolean flag = false;
+        if (StrUtil.isBlank(parentId)) {
+            flag = true;
+        }
+        String ids = "";
+        while (!flag) {
+            if (StrUtil.isBlank(ids)) {
+                ids += parentId;
+            } else {
+                ids += ("," + parentId);
+            }
+            MallMember parentMember = this.baseMapper.selectInfoByInviteId(parentId);
+            if (parentMember == null) {
+                break;
+            }
+            parentId = parentMember.getReferrerId();
+            if (StrUtil.isBlank(parentMember.getReferrerId())) {
+                flag = true;
+            }
+        }
+
+        return ids;
+    }
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java
index a736675..2125d43 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java
@@ -80,10 +80,12 @@
         }
 
         String account = registerDto.getAccount();
-        String code = registerDto.getCode();
-        boolean flags = commonService.verifyCode(account, code);
-        if(!flags) {
-            throw new FebsException("验证码错误");
+        if (!"admin".equals(registerDto.getRegistType())) {
+            String code = registerDto.getCode();
+            boolean flags = commonService.verifyCode(account, code);
+            if (!flags) {
+                throw new FebsException("验证码错误");
+            }
         }
 
         mallMember = new MallMember();
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 ce182fe..820a193 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
@@ -243,15 +243,20 @@
                 if (CollUtil.isNotEmpty(orderItems)) {
                     for (MallOrderItem orderItem : orderItems) {
                         MallGoods mallGoods = mallGoodsMapper.selectById(orderItem.getGoodsId());
-
+                        BigDecimal score;
+                        MallGoodsSku sku = mallGoodsSkuMapper.selectById(orderItem.getSkuId());
                         if (mallGoods.getIsNormal() == 2) {
                             hasTc = true;
-                            MallGoodsSku sku = mallGoodsSkuMapper.selectById(orderItem.getSkuId());
-                            BigDecimal score = sku.getPresentPrice().multiply(mallGoods.getStaticMulti());
+                            score = sku.getPresentPrice().multiply(mallGoods.getStaticMulti());
 
-                            memberWalletService.add(score, member.getId(), "score");
-                            mallMoneyFlowService.addMoneyFlow(member.getId(), score, MoneyFlowTypeEnum.STATIC_BONUS.getValue(), orderInfo.getOrderNo(), FlowTypeEnum.SCORE.getValue());
+                            // 普通商品1:1 返还积分
+                        } else {
+                            score = sku.getPresentPrice();
                         }
+
+                        memberWalletService.add(score, member.getId(), "score");
+                        mallMoneyFlowService.addMoneyFlow(member.getId(), score, MoneyFlowTypeEnum.STATIC_BONUS.getValue(), orderInfo.getOrderNo(), FlowTypeEnum.SCORE.getValue());
+
                     }
                 }
 
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 b2e2e65..80e5a8b 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
@@ -308,17 +308,19 @@
                 continue;
             }
 
-            BigDecimal preProfit = income.multiply(prop).divide(BigDecimal.valueOf(children.size()), 2, RoundingMode.HALF_DOWN);
-
-
-            int reduce = walletService.reduce(preProfit.negate(), mallMember.getId(), "commission");
+            BigDecimal reduceProfit = income.multiply(prop);
+            int reduce = walletService.reduce(reduceProfit.negate(), mallMember.getId(), "commission");
             if (reduce == 2) {
                 continue;
             }
 
-            moneyFlowService.addMoneyFlow(mallMember.getId(), income.negate(), MoneyFlowTypeEnum.THANKFUL.getValue(), null, FlowTypeEnum.COMMISSION.getValue());
-
+            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.negate(), child.getId(), "score");
                 if (reduce1 == 2) {
                     continue;
diff --git a/src/main/java/cc/mrbird/febs/mall/vo/AdminMallMoneyFlowVo.java b/src/main/java/cc/mrbird/febs/mall/vo/AdminMallMoneyFlowVo.java
index 56dcbb7..6b8270b 100644
--- a/src/main/java/cc/mrbird/febs/mall/vo/AdminMallMoneyFlowVo.java
+++ b/src/main/java/cc/mrbird/febs/mall/vo/AdminMallMoneyFlowVo.java
@@ -17,6 +17,7 @@
     private BigDecimal amount;
 
     private Integer type;
+    private Integer flowType;
 
     private String orderNo;
 
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 7230ba1..e290bc5 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -1,5 +1,5 @@
 server:
-  port: 8080
+  port: 8083
   tomcat:
     uri-encoding: utf-8
 
diff --git a/src/main/resources/mapper/modules/MallMemberMapper.xml b/src/main/resources/mapper/modules/MallMemberMapper.xml
index 73f4c11..104fa59 100644
--- a/src/main/resources/mapper/modules/MallMemberMapper.xml
+++ b/src/main/resources/mapper/modules/MallMemberMapper.xml
@@ -3,9 +3,12 @@
 <mapper namespace="cc.mrbird.febs.mall.mapper.MallMemberMapper">
 
     <select id="selectMallMemberListInPage" resultType="cc.mrbird.febs.mall.entity.MallMember">
-        SELECT m.*,a.name referrerName,IFNULL(c.balance,0) balance  FROM mall_member m
+        SELECT m.*,a.name referrerName,IFNULL(c.balance,0) balance,IFNULL(c.score,0) score,IFNULL(c.prize_score,0) prizeScore
+        ,d.description levelName
+        FROM mall_member m
         left join mall_member a on m.referrer_id = a.invite_id
         LEFT JOIN mall_member_wallet c on c.member_id = m.id
+        LEFT JOIN data_dictionary_custom d on d.code = m.level and type='AGENT_LEVEL'
         <where>
             <if test="record != null" >
                 <if test="record.name!=null and record.name!=''">
diff --git a/src/main/resources/templates/febs/views/modules/mallMember/addMember.html b/src/main/resources/templates/febs/views/modules/mallMember/addMember.html
new file mode 100644
index 0000000..55344f8
--- /dev/null
+++ b/src/main/resources/templates/febs/views/modules/mallMember/addMember.html
@@ -0,0 +1,74 @@
+<style>
+    #member-add {
+        padding: 20px 25px 25px 0;
+    }
+
+    #member-add .layui-treeSelect .ztree li a, .ztree li span {
+        margin: 0 0 2px 3px !important;
+    }
+    #member-add #data-permission-tree-block {
+        border: 1px solid #eee;
+        border-radius: 2px;
+        padding: 3px 0;
+    }
+    #member-add .layui-treeSelect .ztree li span.button.switch {
+        top: 1px;
+        left: 3px;
+    }
+    #member-add img{
+        max-width:100px
+    }
+
+</style>
+<div class="layui-fluid" id="member-add">
+    <form class="layui-form" action="" lay-filter="member-add-form">
+        <div class="layui-form-item">
+            <label class="layui-form-label febs-form-item-require">账号:</label>
+            <div class="layui-input-block">
+                <input type="text" name="account" lay-verify="required|phone" autocomplete="off" class="layui-input">
+            </div>
+        </div>
+        <div class="layui-form-item">
+            <label class="layui-form-label febs-form-item-require">姓名:</label>
+            <div class="layui-input-block">
+                <input type="text" name="name" lay-verify="required" autocomplete="off" class="layui-input">
+            </div>
+        </div>
+        <div class="layui-form-item">
+            <label class="layui-form-label febs-form-item-require">推荐人:</label>
+            <div class="layui-input-block">
+                <input type="text" name="inviteId" 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="member-add-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,
+            $view = $('#member-add'),
+            validate = layui.validate;
+
+        form.render();
+        formSelects.render();
+
+        form.on('submit(member-add-form-submit)', function (data) {
+            febs.post(ctx + 'admin/mallMember/memberAdd', 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/mallMember/agentLevelSet.html b/src/main/resources/templates/febs/views/modules/mallMember/agentLevelSet.html
index d1aa6ed..0f7f3c3 100644
--- a/src/main/resources/templates/febs/views/modules/mallMember/agentLevelSet.html
+++ b/src/main/resources/templates/febs/views/modules/mallMember/agentLevelSet.html
@@ -83,7 +83,7 @@
             febs.post(ctx + 'admin/mallMember/agentLevelSetUpdate', data.field, function () {
                 layer.closeAll();
                 febs.alert.success('操作成功');
-                $('#febs-user-agent').find('#reset').click();
+                $('#febs-member-list').find('#reset').click();
             });
             return false;
         });
diff --git a/src/main/resources/templates/febs/views/modules/mallMember/agentList.html b/src/main/resources/templates/febs/views/modules/mallMember/agentList.html
index f704b1f..65b8799 100644
--- a/src/main/resources/templates/febs/views/modules/mallMember/agentList.html
+++ b/src/main/resources/templates/febs/views/modules/mallMember/agentList.html
@@ -139,14 +139,7 @@
                     {field: 'amount', title: '团队业绩', minWidth: 100,align:'left'},
                     {title: '操作',
                         templet: function (d) {
-                            if (d.level === 'ZERO_LEVEL'){
-                                return '<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="activate" shiro:hasPermission="user:update">激活</button>'
-                                    + '<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="agentLevelSet" shiro:hasPermission="user:update">设置代理等级</button>'
-                                    + '<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="agentAllMember" shiro:hasPermission="user:update">全部成员</button>'
-                            }else{
-                                return '<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="agentLevelSet" shiro:hasPermission="user:update">设置代理等级</button>'
-                                    + '<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="agentAllMember" shiro:hasPermission="user:update">全部成员</button>'
-                            }
+                            return '<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="agentAllMember" shiro:hasPermission="user:update">全部成员</button>'
                         },minWidth: 300,align:'center'}
                 ]]
             });
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 71847bb..305289e 100644
--- a/src/main/resources/templates/febs/views/modules/mallMember/mallMemberList.html
+++ b/src/main/resources/templates/febs/views/modules/mallMember/mallMemberList.html
@@ -1,4 +1,4 @@
-<div class="layui-fluid layui-anim febs-anim" id="febs-user" lay-title="会员列表">
+<div class="layui-fluid layui-anim febs-anim" id="febs-member-list" lay-title="会员列表">
     <div class="layui-row febs-container">
         <div class="layui-col-md12">
             <div class="layui-card">
@@ -65,6 +65,17 @@
         background-color: #5FB878 !important;
     }
 </style>
+<script type="text/html" id="toolbar">
+    <div class="layui-btn-container">
+        <button class="layui-btn layui-btn-normal layui-btn-sm" type="button" lay-event="registMember">添加会员</button>
+        <button class="layui-btn layui-btn-normal layui-btn-sm" type="button" lay-event="balance">拨付余额</button>
+        <button class="layui-btn layui-btn-normal layui-btn-sm" type="button" lay-event="score">拨付赠送积分</button>
+        <button class="layui-btn layui-btn-normal layui-btn-sm" type="button" lay-event="prizeScore">拨付竞猜积分</button>
+        <button class="layui-btn layui-btn-normal layui-btn-sm" type="button" lay-event="resetPwd">重置登录密码</button>
+        <button class="layui-btn layui-btn-normal layui-btn-sm" type="button" lay-event="resetPayPwd">重置支付密码</button>
+        <button class="layui-btn layui-btn-normal layui-btn-sm" type="button" lay-event="agentLevel">设置代理等级</button>
+    </div>
+</script>
 <!-- 表格操作栏 end -->
 <script data-th-inline="none" type="text/javascript">
     // 引入组件并初始化
@@ -73,7 +84,7 @@
             febs = layui.febs,
             form = layui.form,
             table = layui.table,
-            $view = $('#febs-user'),
+            $view = $('#febs-member-list'),
             $query = $view.find('#query'),
             $reset = $view.find('#reset'),
             $searchForm = $view.find('form'),
@@ -101,12 +112,6 @@
                 });
             }
 
-            if (layEvent === 'reset') {
-                febs.modal.confirm('重置密码', '是否重置该账号密码?', function () {
-                    resetPwd(data.id);
-                });
-            }
-
             if (layEvent === 'see') {
                 febs.modal.open( '个人信息', 'modules/mallMember/detail/' + data.id, {
                     btn: ['提交', '取消'],
@@ -123,17 +128,19 @@
                     maxmin: true,
                 });
             }
-            if (layEvent === 'systemPay') {
-                febs.modal.open('系统拨付', 'modules/mallMember/mallSystemPay/' + data.id, {
+
+            if (layEvent == 'updateReferer') {
+                febs.modal.open( '修改推荐人', 'modules/mallMember/updateReferer/' + data.id, {
                     btn: ['提交', '取消'],
                     yes: function (index, layero) {
-                        $('#systemPay-update').find('#submit').trigger('click');
+                        $('#referer-update').find('#submit').trigger('click');
                     },
                     btn2: function () {
                         layer.closeAll();
                     }
                 });
             }
+
         });
         function closeAccount(id) {
             febs.get(ctx + 'admin/mallMember/closeAccount/' + id, null, function () {
@@ -148,8 +155,8 @@
             });
         }
 
-        function resetPwd(id) {
-            febs.post(ctx + 'admin/mallMember/resetPwd/' + id, null, function () {
+        function resetPwd(id, type) {
+            febs.post(ctx + 'admin/mallMember/resetPwdNew/' + type + "/"+ id, null, function () {
                 febs.alert.success('重置成功');
                 $query.click();
             });
@@ -174,15 +181,19 @@
                 elem: $view.find('table'),
                 id: 'userTable',
                 url: ctx + 'admin/mallMember/getMallMemberList',
+                toolbar:"#toolbar",
+                defaultToolbar:[],
                 cols: [[
+                    {type: 'checkbox'},
                     {field: 'phone', title: '账号', minWidth: 150,align:'left'},
                     {field: 'bindPhone', title: '手机号', minWidth: 150,align:'left'},
-                    // {field: 'email', title: '邮箱', minWidth: 150,align:'left'},
                     {field: 'name', title: '名称', minWidth: 100,align:'left'},
                     {field: 'balance', title: '余额', minWidth: 100,align:'left'},
+                    {field: 'score', title: '赠送积分', minWidth: 100,align:'left'},
+                    {field: 'prizeScore', title: '竞猜积分', minWidth: 100,align:'left'},
                     {field: 'inviteId', title: '邀请码', minWidth: 100,align:'left'},
-                    // {field: 'referrerId', title: '推荐人邀请码', minWidth: 100,align:'left'},
                     {field: 'referrerName', title: '推荐人', minWidth: 100,align:'left'},
+                    {field: 'levelName', title: '会员类型', minWidth: 100,align:'left'},
                     {field: 'accountType', title: '账号类型',
                         templet: function (d) {
                             if (d.accountType === 2) {
@@ -192,30 +203,110 @@
                             }else{
                                 return ''
                             }
-                        }, minWidth: 80,align:'center'},
-                    {field: 'accountStatus', title: '账号状态', templet: '#switchStatus', minWidth: 80,align:'center'},
+                        }, minWidth: 100,align:'center'},
+                    {field: 'accountStatus', title: '账号状态', templet: '#switchStatus', minWidth: 100,align:'center'},
                     {field: 'createdTime', title: '注册时间', minWidth: 180,align:'center'},
                     {title: '操作',
                         templet: function (d) {
-                            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="reset" 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{
-                                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="open" shiro:hasPermission="user:update">启用</button>'
-                                        +'<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="reset" shiro:hasPermission="user:update">重置密码</button>'
-                                        +'<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="moneyFlow" shiro:hasPermission="user:update">资金流水</button>'
-
-                            }
-                        },minWidth: 300,align:'center'}
+                        // '<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="see" shiro:hasPermission="user:update">详情</button>'
+                            return '<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="moneyFlow" shiro:hasPermission="user:update">资金流水</button>'
+                             + '<button class="layui-btn layui-btn-normal layui-btn-xs" type="button" lay-event="updateReferer">修改推荐人</button>'
+                        },minWidth: 200,align:'center', fixed:"right"}
                 ]]
             });
         }
 
+        table.on('toolbar(userTable)', function(obj){
+            var data = obj.data,
+                layEvent = obj.event;
+
+            if (layEvent === 'registMember') {
+                febs.modal.open( '添加会员', 'modules/mallMember/addMember', {
+                    btn: ['提交', '取消'],
+                    yes: function (index, layero) {
+                        $('#member-add').find('#submit').trigger('click');
+                    },
+                    btn2: function () {
+                        layer.closeAll();
+                    }
+                });
+
+                return;
+            }
+
+            var checkData = table.checkStatus('userTable').data;
+            if (checkData.length <= 0) {
+                febs.alert.warn('请选择需要的用户');
+                return;
+            }
+
+            if (layEvent === 'resetPwd') {
+                febs.modal.confirm('重置登录密码', '是否重置选中账号登录密码?', function () {
+                    var ids = [];
+                    layui.each(checkData, function (key, item) {
+                        ids.push(item.id)
+                    });
+                    resetPwd(ids.join(','), 2);
+                });
+            }
+
+            if (layEvent === 'resetPayPwd') {
+                febs.modal.confirm('重置交易密码', '是否重置选中账号交易密码?', function () {
+                    var ids = [];
+                    layui.each(checkData, function (key, item) {
+                        ids.push(item.id)
+                    });
+
+                    resetPwd(ids.join(','), 1);
+                });
+            }
+
+            if (layEvent === 'balance') {
+                if (checkData.length > 1) {
+                    febs.alert.warn('请选择一个用户');
+                }
+                systemPay("修改余额", checkData[0].id, 1);
+            }
+
+            if (layEvent === 'score') {
+                if (checkData.length > 1) {
+                    febs.alert.warn('请选择一个用户');
+                }
+                systemPay("修改赠送积分", checkData[0].id, 2);
+            }
+
+            if (layEvent === 'prizeScore') {
+                if (checkData.length > 1) {
+                    febs.alert.warn('请选择一个用户');
+                }
+                systemPay("修改竞猜积分", checkData[0].id, 3);
+            }
+
+            if (layEvent === 'agentLevel') {
+                febs.modal.open('设置代理级别', 'modules/mallMember/agentLevelSet/' + checkData[0].id, {
+                    btn: ['确认', '取消'],
+                    yes: function (index, layero) {
+                        $('#agent-level-set').find('#submit').trigger('click');
+                    },
+                    btn2: function () {
+                        layer.closeAll();
+                    }
+                });
+            }
+        });
+
+        function systemPay(text, id, type) {
+            febs.modal.open('text', 'modules/mallMember/mallSystemPay/' + type +'/'+ id, {
+                btn: ['提交', '取消'],
+                yes: function (index, layero) {
+                    $('#systemPay-update').find('#submit').trigger('click');
+                },
+                btn2: function () {
+                    layer.closeAll();
+                }
+            });
+        }
+
         // 获取查询参数
         function getQueryParams() {
             return {
diff --git a/src/main/resources/templates/febs/views/modules/mallMember/mallSystemPay.html b/src/main/resources/templates/febs/views/modules/mallMember/mallSystemPay.html
index 5f4e47b..4ace921 100644
--- a/src/main/resources/templates/febs/views/modules/mallMember/mallSystemPay.html
+++ b/src/main/resources/templates/febs/views/modules/mallMember/mallSystemPay.html
@@ -57,6 +57,7 @@
             laydate = layui.laydate,
             eleTree = layui.eleTree,
             systemPay = [[${systemPay}]],
+            type = [[${type}]],
             $view = $('#systemPay-update'),
             validate = layui.validate;
 
@@ -71,17 +72,28 @@
         initUserValue();
 
         function initUserValue() {
+            var balance;
+            if (type == 1) {
+                balance = systemPay.balance
+            } else if (type == 2) {
+                balance = systemPay.score
+            } else if (type ==3) {
+                balance = systemPay.prizeScore
+            } else {
+
+            }
             form.val("systemPay-update-form", {
                 "id": systemPay.id,
-                "balance": systemPay.balance,
+                "balance": balance,
             });
         }
 
         form.on('submit(systemPay-update-form-submit)', function (data) {
+            data.field.type = type;
             febs.post(ctx + 'admin/mallMember/updateSystemPay', data.field, function () {
                 layer.closeAll();
                 febs.alert.success('操作成功');
-                $('#febs-newInfo').find('#reset').click();
+                $('#febs-member-list').find('#reset').click();
             });
             return false;
         });
diff --git a/src/main/resources/templates/febs/views/modules/mallMember/moneyFlow.html b/src/main/resources/templates/febs/views/modules/mallMember/moneyFlow.html
index 1c59020..0a9664f 100644
--- a/src/main/resources/templates/febs/views/modules/mallMember/moneyFlow.html
+++ b/src/main/resources/templates/febs/views/modules/mallMember/moneyFlow.html
@@ -43,35 +43,61 @@
                 id: 'moneyFlowChild',
                 url: ctx + 'admin/mallMember/moneyFlow?parentId=1',
                 cols: [[
-                    {field: 'orderNo', title: '订单编号', minWidth: 150,align:'center'},
+                    {field: 'amount', title: '金额', minWidth: 80,align:'center'},
                     {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: 'amount', title: '金额', minWidth: 80,align:'center'},
-                    {field: 'createdTime', title: '时间', minWidth: 150,align:'left'},
-                    {field: 'description', title: '描述', minWidth: 150,align:'left'},
-                    {field: 'remark', title: '备注', minWidth: 150,align:'left'},
+                    {field: 'flowType', title: '资金类型',
+                        templet: function (d) {
+                            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:'center'},
+                    {field: 'createdTime', title: '时间', minWidth: 150,align:'left'}
                 ]]
             });
         }
diff --git a/src/main/resources/templates/febs/views/modules/mallMember/updateRefererId.html b/src/main/resources/templates/febs/views/modules/mallMember/updateRefererId.html
new file mode 100644
index 0000000..b656380
--- /dev/null
+++ b/src/main/resources/templates/febs/views/modules/mallMember/updateRefererId.html
@@ -0,0 +1,93 @@
+<style>
+    #referer-update {
+        padding: 20px 25px 25px 0;
+    }
+
+    #referer-update .layui-treeSelect .ztree li a, .ztree li span {
+        margin: 0 0 2px 3px !important;
+    }
+    #referer-update #data-permission-tree-block {
+        border: 1px solid #eee;
+        border-radius: 2px;
+        padding: 3px 0;
+    }
+    #referer-update .layui-treeSelect .ztree li span.button.switch {
+        top: 1px;
+        left: 3px;
+    }
+    #referer-update img{
+        max-width:100px
+    }
+
+</style>
+<div class="layui-fluid" id="referer-update">
+    <form class="layui-form" action="" lay-filter="referer-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="text" name="name" 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">推荐人ID:</label>
+            <div class="layui-input-block">
+                <input type="text" name="inviteId" 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">修改推荐人ID:</label>
+            <div class="layui-input-block">
+                <input type="text" name="referrerId" 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="referer-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,
+            referer = [[${referer}]],
+            id = [[${id}]],
+            $view = $('#referer-update'),
+            validate = layui.validate;
+
+        form.render();
+        formSelects.render();
+
+
+        initUserValue();
+
+        function initUserValue() {
+            form.val("referer-update-form", {
+                "id": id,
+                "name": referer.name,
+                "inviteId": referer.inviteId,
+            });
+        }
+
+        form.on('submit(referer-update-form-submit)', function (data) {
+            febs.post(ctx + 'admin/mallMember/refererIdUpdate', 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/profitSetting.html b/src/main/resources/templates/febs/views/modules/system/profitSetting.html
index efae5f9..f6b28f1 100644
--- a/src/main/resources/templates/febs/views/modules/system/profitSetting.html
+++ b/src/main/resources/templates/febs/views/modules/system/profitSetting.html
@@ -99,6 +99,7 @@
                 ,{field: 'prop', title: '返利比例(%)', edit:'text'}
                 ,{field: 'achieve', title: '团队业绩(万元)', edit:'text'}
                 ,{field: 'direct', title: '直推(个)', edit:'text'}
+                ,{field: 'lastAgentCnt', title: '上一级代理(个)', edit:'text'}
                 ,{field: 'type', title: '比例', edit:'text', hide:'true'}
                 ,{field: 'code', title: '比例', edit:'text', hide:'true'}
             ]]
@@ -115,6 +116,7 @@
                     valueData.teamIncome = data.achieve;
                     valueData.profitProp = data.prop;
                     valueData.directCnt = data.direct;
+                    valueData.lastAgentCnt = data.lastAgentCnt;
                     agentBonusArr[i].value = JSON.stringify(valueData);
                 }
             }
@@ -189,6 +191,7 @@
                             data[i].prop = JSON.parse(data[i].value).profitProp;
                             data[i].achieve = JSON.parse(data[i].value).teamIncome;
                             data[i].direct = JSON.parse(data[i].value).directCnt;
+                            data[i].lastAgentCnt = JSON.parse(data[i].value).lastAgentCnt;
                         }
                         agentBonusArr = data;
                         table.reload('agentBonus', {

--
Gitblit v1.9.1