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"></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"></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"></i></a> - <a lay-event="edit" shiro:hasPermission="agent:edit"><i - class="layui-icon febs-edit-area febs-blue"></i></a> - <a lay-event="del" shiro:hasPermission="agent:del"><i class="layui-icon febs-edit-area febs-red"></i></a> + <a lay-event="reset" title="重置密码" shiro:hasPermission="agent:password:reset"><i class="layui-icon febs-edit-area febs-blue"></i></a> + <a lay-event="edit" title="编辑" shiro:hasPermission="agent:edit"><i class="layui-icon febs-edit-area febs-blue"></i></a> + <a lay-event="del" title="删除" shiro:hasPermission="agent:del"><i class="layui-icon febs-edit-area febs-red"></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