From ea9c9f47bbd3b722e4b2fd215d38fbd86e8b4969 Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Fri, 12 Jun 2020 18:00:36 +0800
Subject: [PATCH] modify

---
 src/main/resources/templates/febs/views/modules/agent/agent.html                   |   77 +++++++-----------
 src/main/java/com/xcong/excoin/modules/agent/pojo/AgentUser.java                   |    7 +
 src/main/java/com/xcong/excoin/modules/agent/entity/AgentFriendRelationEntity.java |    2 
 src/main/java/com/xcong/excoin/modules/agent/service/IAgentService.java            |    4 +
 src/main/resources/mapper/modules/AgentFriendRelationMapper.xml                    |    4 +
 src/main/resources/mapper/system/UserMapper.xml                                    |   19 ++++
 src/main/java/com/xcong/excoin/modules/agent/mapper/AgentFriendRelationMapper.java |    3 
 src/main/java/com/xcong/excoin/modules/agent/service/impl/AgentServiceImpl.java    |   44 ++++++++++
 src/main/java/com/xcong/excoin/modules/agent/controller/AgentController.java       |   29 ++++++-
 9 files changed, 131 insertions(+), 58 deletions(-)

diff --git a/src/main/java/com/xcong/excoin/modules/agent/controller/AgentController.java b/src/main/java/com/xcong/excoin/modules/agent/controller/AgentController.java
index ddeacb2..62d1c14 100644
--- a/src/main/java/com/xcong/excoin/modules/agent/controller/AgentController.java
+++ b/src/main/java/com/xcong/excoin/modules/agent/controller/AgentController.java
@@ -1,5 +1,7 @@
 package com.xcong.excoin.modules.agent.controller;
 
+import com.baomidou.mybatisplus.core.toolkit.StringPool;
+import com.xcong.excoin.common.annotation.ControllerEndpoint;
 import com.xcong.excoin.common.controller.BaseController;
 import com.xcong.excoin.common.entity.FebsResponse;
 import com.xcong.excoin.common.entity.QueryRequest;
@@ -10,12 +12,11 @@
 import lombok.extern.slf4j.Slf4j;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import javax.validation.Valid;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
 import java.util.Map;
 
 /**
@@ -34,15 +35,35 @@
     @GetMapping("getList")
     @RequiresPermissions("agent:view")
     public FebsResponse getList(AgentUser agentUser, QueryRequest queryRequest) {
+        User user = getCurrentUser();
+        agentUser.setRefererId(user.getInviteId());
         Map<String, Object> map = getDataTable(agentService.findAgentList(agentUser, queryRequest));
         return new FebsResponse().success().data(map);
     }
 
     @PostMapping("add")
     @RequiresPermissions("agent:add")
+    @ControllerEndpoint(operation = "新增代理商", exceptionMessage = "新增代理商失败")
     public FebsResponse add(@Valid AgentUser agentUser) {
         User user = getCurrentUser();
         agentService.addAgent(agentUser, user);
         return new FebsResponse().success();
     }
+
+    @GetMapping("del/{ids}")
+    @RequiresPermissions("agent:del")
+    @ControllerEndpoint(operation = "删除代理商", exceptionMessage = "删除代理商失败")
+    public FebsResponse del(@NotBlank(message = "{required}") @PathVariable("ids") String ids) {
+        String[] idsArr = ids.split(StringPool.COMMA);
+        agentService.delAgent(idsArr);
+        return new FebsResponse().success();
+    }
+
+    @PostMapping("reset/{id}")
+    @RequiresPermissions("agent:password:reset")
+    @ControllerEndpoint(operation = "重置密码", exceptionMessage = "重置密码失败")
+    public FebsResponse reset(@NotNull(message = "{required}") @PathVariable("id") Long id) {
+        agentService.resetPwd(id);
+        return new FebsResponse().success();
+    }
 }
diff --git a/src/main/java/com/xcong/excoin/modules/agent/entity/AgentFriendRelationEntity.java b/src/main/java/com/xcong/excoin/modules/agent/entity/AgentFriendRelationEntity.java
index b690032..2f8f68b 100644
--- a/src/main/java/com/xcong/excoin/modules/agent/entity/AgentFriendRelationEntity.java
+++ b/src/main/java/com/xcong/excoin/modules/agent/entity/AgentFriendRelationEntity.java
@@ -54,7 +54,7 @@
     /**
      * 代理层级
      */
-    private Integer leverId;
+    private Integer levelId;
 
     /**
      * 手续费是否设置自己
diff --git a/src/main/java/com/xcong/excoin/modules/agent/mapper/AgentFriendRelationMapper.java b/src/main/java/com/xcong/excoin/modules/agent/mapper/AgentFriendRelationMapper.java
index 38b4369..6e2bb7c 100644
--- a/src/main/java/com/xcong/excoin/modules/agent/mapper/AgentFriendRelationMapper.java
+++ b/src/main/java/com/xcong/excoin/modules/agent/mapper/AgentFriendRelationMapper.java
@@ -3,9 +3,12 @@
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.xcong.excoin.modules.agent.entity.AgentFriendRelationEntity;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * @author helius
  */
 public interface AgentFriendRelationMapper extends BaseMapper<AgentFriendRelationEntity> {
+
+    AgentFriendRelationEntity selectAgentFriendRelationByUserId(@Param("userId") Long userId);
 }
diff --git a/src/main/java/com/xcong/excoin/modules/agent/pojo/AgentUser.java b/src/main/java/com/xcong/excoin/modules/agent/pojo/AgentUser.java
index cc6d289..adc0765 100644
--- a/src/main/java/com/xcong/excoin/modules/agent/pojo/AgentUser.java
+++ b/src/main/java/com/xcong/excoin/modules/agent/pojo/AgentUser.java
@@ -51,7 +51,7 @@
     /**
      * 上级邀请码
      */
-    private String referId;
+    private String refererId;
 
     /**
      * 发展代理数
@@ -89,4 +89,9 @@
      */
     private Date createTime;
 
+    /**
+     * 实名状态
+     */
+    private Integer certifyStatus;
+
 }
diff --git a/src/main/java/com/xcong/excoin/modules/agent/service/IAgentService.java b/src/main/java/com/xcong/excoin/modules/agent/service/IAgentService.java
index 330391d..0e92366 100644
--- a/src/main/java/com/xcong/excoin/modules/agent/service/IAgentService.java
+++ b/src/main/java/com/xcong/excoin/modules/agent/service/IAgentService.java
@@ -13,4 +13,8 @@
     IPage<AgentUser> findAgentList(AgentUser agentUser, QueryRequest request);
 
     void addAgent(AgentUser agentUser, User user);
+
+    void delAgent(String[] ids);
+
+    void resetPwd(Long id);
 }
diff --git a/src/main/java/com/xcong/excoin/modules/agent/service/impl/AgentServiceImpl.java b/src/main/java/com/xcong/excoin/modules/agent/service/impl/AgentServiceImpl.java
index c54e672..7dfc27a 100644
--- a/src/main/java/com/xcong/excoin/modules/agent/service/impl/AgentServiceImpl.java
+++ b/src/main/java/com/xcong/excoin/modules/agent/service/impl/AgentServiceImpl.java
@@ -1,5 +1,6 @@
 package com.xcong.excoin.modules.agent.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.xcong.excoin.common.entity.FebsConstant;
@@ -13,12 +14,17 @@
 import com.xcong.excoin.modules.agent.pojo.AgentUser;
 import com.xcong.excoin.modules.agent.service.IAgentService;
 import com.xcong.excoin.system.entity.User;
+import com.xcong.excoin.system.entity.UserRole;
 import com.xcong.excoin.system.mapper.UserMapper;
+import com.xcong.excoin.system.mapper.UserRoleMapper;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
+import java.util.Arrays;
 import java.util.Date;
+import java.util.List;
 
 /**
  * @author wzy
@@ -33,6 +39,8 @@
 
     private final MemberMapper memberMapper;
 
+    private final UserRoleMapper userRoleMapper;
+
     private final AgentFriendRelationMapper agentFriendRelationMapper;
 
     @Override
@@ -41,14 +49,22 @@
         return userMapper.selectAgentUserList(page, agentUser);
     }
 
+    @Transactional(rollbackFor = Exception.class)
     @Override
     public void addAgent(AgentUser agentUser, User user) {
         AgentFriendRelationEntity agentFriendRelation = new AgentFriendRelationEntity();
         String refererId = "";
+        int level = 0;
         if (FebsConstant.USER_TYPE_ADMIN.equals(user.getType())) {
             refererId = FebsConstant.DEFAULT_REFERER_ID;
+            level = 1;
         } else {
             refererId = user.getInviteId();
+            AgentFriendRelationEntity friendRelationEntity = agentFriendRelationMapper.selectAgentFriendRelationByUserId(user.getUserId());
+            if (agentUser.getReturnRatio().compareTo(friendRelationEntity.getReturnRatio()) > 0) {
+                throw new FebsException("返佣比例需小于自己的返佣比例");
+            }
+            level++;
         }
         MemberEntity memberEntity = memberMapper.selectMemberByInviteIdAndRefererId(agentUser.getInviteId(), refererId);
         if (memberEntity == null) {
@@ -71,19 +87,41 @@
         addUser.setCreateTime(new Date());
         addUser.setInviteId(agentUser.getInviteId());
         addUser.setAgentName(agentUser.getName());
-        addUser.setPassword(Md5Util.encrypt(user.getUsername(), User.DEFAULT_PASSWORD));
-        userMapper.insert(user);
+        addUser.setPassword(Md5Util.encrypt(addUser.getUsername(), User.DEFAULT_PASSWORD));
+        userMapper.insert(addUser);
+
+        UserRole userRole = new UserRole();
+        userRole.setUserId(addUser.getUserId());
+        userRole.setRoleId(83L);
+        userRoleMapper.insert(userRole);
 
         agentFriendRelation.setInviteId(agentUser.getInviteId());
         agentFriendRelation.setRefererId(refererId);
         agentFriendRelation.setRefererIds(memberEntity.getRefererIds());
         agentFriendRelation.setMemberId(memberEntity.getId());
         agentFriendRelation.setReturnRatio(agentUser.getReturnRatio());
-        agentFriendRelation.setUserId(user.getUserId());
+        agentFriendRelation.setUserId(addUser.getUserId());
         agentFriendRelation.setCreateBy(user.getUsername());
         agentFriendRelation.setCreateTime(new Date());
         agentFriendRelation.setUpdateBy(user.getUsername());
         agentFriendRelation.setUpdateTime(new Date());
+        agentFriendRelation.setLevelId(level);
+        agentFriendRelation.setFeeIsSelf(2);
         agentFriendRelationMapper.insert(agentFriendRelation);
     }
+
+    @Override
+    public void delAgent(String[] ids) {
+        List<String> list = Arrays.asList(ids);
+        userMapper.deleteBatchIds(list);
+        agentFriendRelationMapper.delete(new QueryWrapper<AgentFriendRelationEntity>().lambda().in(AgentFriendRelationEntity::getUserId, list));
+        userRoleMapper.delete(new QueryWrapper<UserRole>().lambda().in(UserRole::getUserId, list));
+    }
+
+    @Override
+    public void resetPwd(Long id) {
+        User user = userMapper.selectById(id);
+        user.setPassword(Md5Util.encrypt(user.getUsername(), User.DEFAULT_PASSWORD));
+        userMapper.updateById(user);
+    }
 }
diff --git a/src/main/resources/mapper/modules/AgentFriendRelationMapper.xml b/src/main/resources/mapper/modules/AgentFriendRelationMapper.xml
index a86b18c..68a1891 100644
--- a/src/main/resources/mapper/modules/AgentFriendRelationMapper.xml
+++ b/src/main/resources/mapper/modules/AgentFriendRelationMapper.xml
@@ -2,4 +2,8 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.xcong.excoin.modules.agent.mapper.AgentFriendRelationMapper">
 
+    <select id="selectAgentFriendRelationByUserId" resultType="com.xcong.excoin.modules.agent.entity.AgentFriendRelationEntity">
+        select * from agent_friend_relation
+        where user_id=#{userId}
+    </select>
 </mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/system/UserMapper.xml b/src/main/resources/mapper/system/UserMapper.xml
index 363a17d..96e72c1 100644
--- a/src/main/resources/mapper/system/UserMapper.xml
+++ b/src/main/resources/mapper/system/UserMapper.xml
@@ -94,7 +94,7 @@
             u.invite_id,
             u.system,
             u.type,
-            u.agent_name,
+            u.agent_name
     </sql>
 
     <select id="countUserDetail" parameterType="user" resultType="long">
@@ -167,13 +167,26 @@
     </select>
 
     <select id="selectAgentUserList" resultType="com.xcong.excoin.modules.agent.pojo.AgentUser">
-        select *
+        select
+            a.user_id id,
+            a.username account,
+            a.agent_name name,
+            a.invite_id,
+            a.create_time,
+            a.status,
+            b.return_ratio,
+            c.phone telphone,
+            c.email,
+            c.referer_id refererId,
+            c.certify_status
         from t_user a
         inner join agent_friend_relation b on a.user_id = b.user_id
         inner join member c on b.member_id = c.id
         <if test="record != null">
             <where>
-
+                <if test="record.refererId!=null and record.refererId!=''">
+                    find_in_set(#{record.refererId}, b.referer_ids)
+                </if>
             </where>
         </if>
     </select>
diff --git a/src/main/resources/templates/febs/views/modules/agent/agent.html b/src/main/resources/templates/febs/views/modules/agent/agent.html
index db21149..ab44fdd 100644
--- a/src/main/resources/templates/febs/views/modules/agent/agent.html
+++ b/src/main/resources/templates/febs/views/modules/agent/agent.html
@@ -60,7 +60,7 @@
                                     <i class="layui-icon">&#xe79b;</i>
                                 </div>
                                 <div class="layui-btn layui-btn-sm layui-btn-primary table-action action-more"
-                                     shiro:hasAnyPermissions="user:add,user:update,user:password:reset,user:export">
+                                     shiro:hasAnyPermissions="agent:add,agent:edit">
                                     <i class="layui-icon">&#xe875;</i>
                                 </div>
                             </div>
@@ -76,10 +76,10 @@
 <script type="text/html" id="certify-status">
     {{#
     var certifyStatus = {
-    0: {title: '未通过', color: 'red'},
-    1: {title: '审核中', color: 'blue'},
+    0: {title: '未实名', color: 'blue'},
+    1: {title: '未实名', color: 'blue'},
     2: {title: '审核通过', color: 'green'},
-    3: {title: '未实名', color: 'cyan'}
+    3: {title: '未实名', color: 'blue'}
     }[d.certifyStatus];
     }}
     <span class="layui-badge febs-tag-{{certifyStatus.color}}">{{ certifyStatus.title }}</span>
@@ -97,14 +97,12 @@
 
 <!-- 表格操作栏 start -->
 <script type="text/html" id="user-option">
-    <span shiro:lacksPermission="agent:view,agent:edit,agent:del">
+    <span shiro:lacksPermission="agent:edit,agent:del">
         <span class="layui-badge-dot febs-bg-orange"></span> 无权限
     </span>
-    <a lay-event="detail" shiro:hasPermission="agent:view"><i
-            class="layui-icon febs-edit-area febs-green">&#xe7a5;</i></a>
-    <a lay-event="edit" shiro:hasPermission="agent:edit"><i
-            class="layui-icon febs-edit-area febs-blue">&#xe7a4;</i></a>
-    <a lay-event="del" shiro:hasPermission="agent:del"><i class="layui-icon febs-edit-area febs-red">&#xe7f9;</i></a>
+    <a lay-event="reset" title="重置密码" shiro:hasPermission="agent:password:reset"><i class="layui-icon febs-edit-area febs-blue">&#xe79b;</i></a>
+    <a lay-event="edit" title="编辑" shiro:hasPermission="agent:edit"><i class="layui-icon febs-edit-area febs-blue">&#xe7a4;</i></a>
+    <a lay-event="del" title="删除" shiro:hasPermission="agent:del"><i class="layui-icon febs-edit-area febs-red">&#xe7f9;</i></a>
 </script>
 <!-- 表格操作栏 end -->
 <script data-th-inline="none" type="text/javascript">
@@ -115,7 +113,6 @@
             febs = layui.febs,
             form = layui.form,
             table = layui.table,
-            treeSelect = layui.treeSelect,
             dropdown = layui.dropdown,
             $view = $('#febs-user'),
             $query = $view.find('#query'),
@@ -170,19 +167,19 @@
                         });
                     }
                 }
-                if (name === 'reset') {
-                    if (!checkStatus.data.length) {
-                        febs.alert.warn('请选择需要重置密码的用户');
-                    } else {
-                        var usernames = [];
-                        layui.each(checkStatus.data, function (key, item) {
-                            usernames.push(item.username)
-                        });
-                        febs.post(ctx + 'user/password/reset/' + usernames.join(','), null, function () {
-                            febs.alert.success('所选用户密码已重置为1234qwer');
-                        });
-                    }
-                }
+                // if (name === 'reset') {
+                //     if (!checkStatus.data.length) {
+                //         febs.alert.warn('请选择需要重置密码的用户');
+                //     } else {
+                //         var usernames = [];
+                //         layui.each(checkStatus.data, function (key, item) {
+                //             usernames.push(item.username)
+                //         });
+                //         febs.post(ctx + 'user/password/reset/' + usernames.join(','), null, function () {
+                //             febs.alert.success('所选用户密码已重置为1234qwer');
+                //         });
+                //     }
+                // }
             },
             options: [{
                 name: 'add',
@@ -192,34 +189,23 @@
                 name: 'delete',
                 title: '删除代理商',
                 perms: 'agent:del'
-            }, {
-                name: 'reset',
-                title: '密码重置',
-                perms: 'agent:password:reset'
             }]
-        });
-
-        // 下拉框选择器
-        treeSelect.render({
-            elem: $view.find('#dept'),
-            type: 'get',
-            data: ctx + 'dept/select/tree',
-            placeholder: '请选择',
-            search: false
         });
 
         // 初始化表格操作栏各个按钮功能
         table.on('tool(userTable)', function (obj) {
             var data = obj.data,
                 layEvent = obj.event;
-            if (layEvent === 'detail') {
-                febs.modal.view('用户信息', 'system/user/detail/' + data.username, {
-                    area: $(window).width() <= 750 ? '95%' : '660px'
+            if (layEvent === 'reset') {
+                febs.modal.confirm('重置密码', '确定重置该用户密码?', function () {
+                    febs.post(ctx + 'agent/reset/' + data.id, null, function () {
+                        febs.alert.success('所选用户密码已重置为1234qwer');
+                    });
                 });
             }
             if (layEvent === 'del') {
                 febs.modal.confirm('删除用户', '确定删除该用户?', function () {
-                    deleteUsers(data.userId);
+                    deleteUsers(data.id);
                 });
             }
             if (layEvent === 'edit') {
@@ -246,7 +232,6 @@
         // 刷新按钮
         $reset.on('click', function () {
             $searchForm[0].reset();
-            treeSelect.revokeNode('dept');
             sortObject.type = 'null';
             createTimeTo = null;
             createTimeFrom = null;
@@ -263,9 +248,9 @@
                     {field: 'name', title: '代理姓名', minWidth: 100, align: 'center'},
                     {field: 'account', title: '代理账号', minWidth: 100, align: 'center'},
                     {field: 'inviteId', title: '代理UID', minWidth: 100, align: 'center'},
-                    {field: 'phone', title: '手机号', minWidth: 100, align: 'center'},
-                    {field: 'email', title: '邮箱', minWidth: 100, align: 'center'},
-                    {field: 'referId', title: '上级UID', minWidth: 100, align: 'center'},
+                    {field: 'phone', title: '手机号', minWidth: 130, align: 'center'},
+                    {field: 'email', title: '邮箱', minWidth: 180, align: 'center'},
+                    {field: 'refererId', title: '上级UID', minWidth: 100, align: 'center'},
                     {title: '是否实名', templet: '#certify-status', minWidth: 100, align: 'center'},
                     {field: 'childCnt', title: '发展代理数', minWidth: 100, align: 'center'},
                     {field: 'chargeTotal', title: '充值总额', minWidth: 100, align: 'center'},
@@ -303,7 +288,7 @@
                 febs.alert.warn('所选用户包含当前登录用户,无法删除');
                 return;
             }
-            febs.get(ctx + 'user/delete/' + userIds, null, function () {
+            febs.get(ctx + 'agent/del/' + userIds, null, function () {
                 febs.alert.success('删除用户成功');
                 $query.click();
             });

--
Gitblit v1.9.1