From c10bc3cd81782fb7b21756580b9b0f0bb4eb0faa Mon Sep 17 00:00:00 2001 From: xiaoyong931011 <15274802129@163.com> Date: Mon, 13 Feb 2023 11:03:10 +0800 Subject: [PATCH] 会员列表选择推销员 --- src/main/java/cc/mrbird/febs/mall/entity/MallMember.java | 6 + src/main/resources/templates/febs/views/modules/mallMember/mallSalesManList.html | 32 ++++ src/main/java/cc/mrbird/febs/mall/controller/ViewMallMemberController.java | 14 ++ src/main/resources/mapper/modules/MallSalesmanMapper.xml | 17 ++ src/main/java/cc/mrbird/febs/mall/mapper/MallSalesmanMapper.java | 9 + src/main/java/cc/mrbird/febs/mall/vo/AdminAgentSelectVo.java | 13 ++ src/main/java/cc/mrbird/febs/mall/controller/AdminMallMemberController.java | 33 +++++ src/main/java/cc/mrbird/febs/mall/vo/AdminMallSalesmansTreeVo.java | 15 ++ src/main/resources/templates/febs/views/modules/mallMember/agentSelect.html | 99 ++++++++++++++++ src/main/java/cc/mrbird/febs/mall/service/IAdminMallMemberService.java | 6 + src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallMemberServiceImpl.java | 41 ++++++ src/main/resources/templates/febs/views/modules/mallMember/mallMemberList.html | 75 ++++++------ 12 files changed, 314 insertions(+), 46 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 2e446c9..35c9f12 100644 --- a/src/main/java/cc/mrbird/febs/mall/controller/AdminMallMemberController.java +++ b/src/main/java/cc/mrbird/febs/mall/controller/AdminMallMemberController.java @@ -9,6 +9,8 @@ import cc.mrbird.febs.mall.service.IAdminMallMemberService; import cc.mrbird.febs.mall.service.IApiMallMemberService; import cc.mrbird.febs.mall.vo.AdminAgentLevelOptionTreeVo; +import cc.mrbird.febs.mall.vo.AdminMallGoodsCategoryTreeVo; +import cc.mrbird.febs.mall.vo.AdminMallSalesmansTreeVo; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.ibatis.annotations.Param; @@ -413,12 +415,21 @@ } /** - * 推销员列表-删除 + * 推销员列表-禁用 */ @GetMapping("salesmanDel/{id}") - @ControllerEndpoint(operation = "推销员列表-删除", exceptionMessage = "操作失败") + @ControllerEndpoint(operation = "推销员列表-禁用", exceptionMessage = "操作失败") public FebsResponse salesmanDel(@NotNull(message = "{required}") @PathVariable Long id) { return mallMemberService.salesmanDel(id); + } + + /** + * 推销员列表-启用 + */ + @GetMapping("salesmanUse/{id}") + @ControllerEndpoint(operation = "推销员列表-启用", exceptionMessage = "操作失败") + public FebsResponse salesmanUse(@NotNull(message = "{required}") @PathVariable Long id) { + return mallMemberService.salesmanUse(id); } /** @@ -430,4 +441,22 @@ return mallMemberService.salesmanUpdate(mallSalesman); } + /** + * 推销员列表-选择 + */ + @GetMapping("salesmans/tree") + @ControllerEndpoint(exceptionMessage = "推销员列表失败") + public List<AdminMallSalesmansTreeVo> getSalesmansTree(){ + return mallMemberService.getSalesmansTree(); + } + + /** + * 会员列表-推销员列表-更新 + */ + @PostMapping("memberUpdateSalesman") + @ControllerEndpoint(operation = "会员列表-推销员列表-更新", exceptionMessage = "操作失败") + public FebsResponse memberUpdateSalesman(@Valid MallMember mallmember) { + return mallMemberService.memberUpdateSalesman(mallmember); + } + } 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 2de3e48..9050560 100644 --- a/src/main/java/cc/mrbird/febs/mall/controller/ViewMallMemberController.java +++ b/src/main/java/cc/mrbird/febs/mall/controller/ViewMallMemberController.java @@ -305,5 +305,19 @@ return FebsUtil.view("modules/mallMember/salesmanUpdate"); } + /** + * 推销员列表-选择 + * @param id + * @param model + * @return + */ + @GetMapping("agentSelect/{id}") + @RequiresPermissions("agentSelect:update") + public String agentSelect(@PathVariable long id, Model model) { + AdminAgentSelectVo data = mallSalesmanMapper.agentSelect(id); + model.addAttribute("adminAgentSelectVo", data); + return FebsUtil.view("modules/mallMember/agentSelect"); + } + } 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 a5c5710..0963c19 100644 --- a/src/main/java/cc/mrbird/febs/mall/entity/MallMember.java +++ b/src/main/java/cc/mrbird/febs/mall/entity/MallMember.java @@ -148,4 +148,10 @@ @TableField(exist = false) private Integer leaderState; + private Long salesmansId; + + //推销员姓名 + @TableField(exist = false) + private String salesmansName; + } diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/MallSalesmanMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/MallSalesmanMapper.java index 97d296f..8f59d8c 100644 --- a/src/main/java/cc/mrbird/febs/mall/mapper/MallSalesmanMapper.java +++ b/src/main/java/cc/mrbird/febs/mall/mapper/MallSalesmanMapper.java @@ -1,11 +1,20 @@ package cc.mrbird.febs.mall.mapper; import cc.mrbird.febs.mall.entity.MallSalesman; +import cc.mrbird.febs.mall.vo.AdminAgentSelectVo; +import cc.mrbird.febs.mall.vo.AdminMallSalesmansTreeVo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Param; + +import java.util.List; public interface MallSalesmanMapper extends BaseMapper<MallSalesman> { IPage<MallSalesman> selectMallSalesmanListInPage(Page<MallSalesman> page, MallSalesman mallSalesman); + + List<AdminMallSalesmansTreeVo> selectTreeByState( @Param("state") int i); + + AdminAgentSelectVo agentSelect(@Param("memberId")long id); } 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 182d412..3f689c5 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/IAdminMallMemberService.java +++ b/src/main/java/cc/mrbird/febs/mall/service/IAdminMallMemberService.java @@ -104,4 +104,10 @@ FebsResponse salesmanDel(Long id); FebsResponse salesmanUpdate(MallSalesman mallSalesman); + + FebsResponse salesmanUse(Long id); + + List<AdminMallSalesmansTreeVo> getSalesmansTree(); + + FebsResponse memberUpdateSalesman(MallMember mallmember); } 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 d98a241..6238b3a 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 @@ -77,10 +77,15 @@ IPage<MallMember> mallMembers = this.baseMapper.selectMallMemberListInPage(page, mallMember); if(CollUtil.isNotEmpty(mallMembers.getRecords())){ for(MallMember mallMemberTeam : mallMembers.getRecords()){ - String inviteId = mallMemberTeam.getInviteId(); - MallTeamLeader mallTeamLeader = mallTeamLeaderMapper.selectLeaderByUniqueCodeAndOrderBycreateTime(inviteId); - if(ObjectUtil.isNotEmpty(mallTeamLeader)){ - mallMemberTeam.setLeaderState(mallTeamLeader.getState() == null ? 0 : mallTeamLeader.getState()); + Long salesmansId = mallMemberTeam.getSalesmansId(); + MallSalesman mallSalesman = mallSalesmanMapper.selectById(salesmansId); + if(ObjectUtil.isNotEmpty(mallSalesman)){ + StringBuffer salesmanName = new StringBuffer(); + salesmanName.append(mallSalesman.getName()); + if(2 == mallSalesman.getState()){ + salesmanName.append("(禁用)"); + } + mallMemberTeam.setSalesmansName(salesmanName.toString()); } } } @@ -675,6 +680,34 @@ return new FebsResponse().success(); } + @Override + public FebsResponse salesmanUse(Long id) { + MallSalesman mallSalesman = mallSalesmanMapper.selectById(id); + if(ObjectUtil.isEmpty(mallSalesman)){ + return new FebsResponse().fail().message("推销员不存在"); + } + mallSalesman.setState(1); + mallSalesmanMapper.updateById(mallSalesman); + return new FebsResponse().success(); + } + + @Override + public List<AdminMallSalesmansTreeVo> getSalesmansTree() { + List<AdminMallSalesmansTreeVo> adminMallSalesmansTreeVos = mallSalesmanMapper.selectTreeByState(1); + return adminMallSalesmansTreeVos; + } + + @Override + public FebsResponse memberUpdateSalesman(MallMember mallmember) { + MallMember mallMemberNow = mallMemberMapper.selectById(mallmember.getId()); + if(ObjectUtil.isEmpty(mallMemberNow)){ + return new FebsResponse().fail().message("用户不存在"); + } + mallMemberNow.setSalesmansId(mallmember.getSalesmansId()); + mallMemberMapper.updateById(mallMemberNow); + return new FebsResponse().success(); + } + private String refererIds(String parentId) { boolean flag = false; if (StrUtil.isBlank(parentId)) { diff --git a/src/main/java/cc/mrbird/febs/mall/vo/AdminAgentSelectVo.java b/src/main/java/cc/mrbird/febs/mall/vo/AdminAgentSelectVo.java new file mode 100644 index 0000000..35648d5 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/vo/AdminAgentSelectVo.java @@ -0,0 +1,13 @@ +package cc.mrbird.febs.mall.vo; + +import io.swagger.annotations.ApiModel; +import lombok.Data; + +@Data +@ApiModel(value = "AdminAgentSelectVo", description = "信息返回类") +public class AdminAgentSelectVo { + + private Long id; + + private long salesmansId; +} diff --git a/src/main/java/cc/mrbird/febs/mall/vo/AdminMallSalesmansTreeVo.java b/src/main/java/cc/mrbird/febs/mall/vo/AdminMallSalesmansTreeVo.java new file mode 100644 index 0000000..46559a6 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/vo/AdminMallSalesmansTreeVo.java @@ -0,0 +1,15 @@ +package cc.mrbird.febs.mall.vo; + +import io.swagger.annotations.ApiModel; +import lombok.Data; + +@Data +@ApiModel(value = "AdminMallSalesmansTreeVo", description = "信息返回类") +public class AdminMallSalesmansTreeVo { + + private Long id; + + private String name; + + private Long memberId; +} diff --git a/src/main/resources/mapper/modules/MallSalesmanMapper.xml b/src/main/resources/mapper/modules/MallSalesmanMapper.xml index 202cbfc..dbe601e 100644 --- a/src/main/resources/mapper/modules/MallSalesmanMapper.xml +++ b/src/main/resources/mapper/modules/MallSalesmanMapper.xml @@ -9,4 +9,21 @@ GROUP BY a.id order by a.CREATED_TIME desc </select> + <select id="selectTreeByState" resultType="cc.mrbird.febs.mall.vo.AdminMallSalesmansTreeVo"> + SELECT + a.id, + a.name + FROM mall_salesman a + where a.state = #{state} + GROUP BY a.id order by a.CREATED_TIME desc + </select> + + <select id="agentSelect" resultType="cc.mrbird.febs.mall.vo.AdminAgentSelectVo"> + SELECT + a.id, + a.salesmans_id salesmansId + FROM mall_member a + where a.id = #{memberId} + </select> + </mapper> \ No newline at end of file diff --git a/src/main/resources/templates/febs/views/modules/mallMember/agentSelect.html b/src/main/resources/templates/febs/views/modules/mallMember/agentSelect.html new file mode 100644 index 0000000..c77d795 --- /dev/null +++ b/src/main/resources/templates/febs/views/modules/mallMember/agentSelect.html @@ -0,0 +1,99 @@ +<style> + #agent-select { + padding: 20px 25px 25px 0; + } + + #agent-select .layui-treeSelect .ztree li a, .ztree li span { + margin: 0 0 2px 3px !important; + } + #agent-select #data-permission-tree-block { + border: 1px solid #eee; + border-radius: 2px; + padding: 3px 0; + } + #agent-select .layui-treeSelect .ztree li span.button.switch { + top: 1px; + left: 3px; + } + #agent-select img{ + max-width:100px + } + +</style> +<div class="layui-fluid" id="agent-select"> + <form class="layui-form" action="" lay-filter="agent-select-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="${adminAgentSelectVo.id}"> + </div> + </div> + + <div class="layui-form-item"> + <label class="layui-form-label">代理人:</label> + <div class="layui-input-inline"> + <select name="salesmansId" class="agent-select-category" id="categarySelect"> + <option value="">请选择</option> + </select> + </div> + </div> + + <div class="layui-form-item febs-hide"> + <button class="layui-btn" lay-submit="" lay-filter="agent-select-form-submit" id="submit"></button> + </div> + </form> +</div> + +<script data-th-inline="javascript"> + layui.use(['febs', 'form', 'formSelects', 'validate', 'treeSelect', 'eleTree', 'laydate','upload'], function () { + var $ = layui.$, + febs = layui.febs, + layer = layui.layer, + formSelects = layui.formSelects, + treeSelect = layui.treeSelect, + form = layui.form, + laydate = layui.laydate, + eleTree = layui.eleTree, + adminAgentSelectVo = [[${adminAgentSelectVo}]], + $view = $('#agent-select'), + upload = layui.upload, + validate = layui.validate; + + form.render(); + laydate.render({ + elem: '#febs-form-group-date' + }); + + formSelects.render(); + + //(下拉框) + $.get(ctx + 'admin/mallMember/salesmans/tree', function (data) { + for (var k in data) + { + $(".agent-select-category").append("<option value='" + data[k].id + "'>" + data[k].name + "</option>"); + } + layui.use('form', function () { + var form = layui.form; + $("#categarySelect").val(adminAgentSelectVo.salesmansId) + form.render(); + }); + }); + initUserValue(); + + function initUserValue() { + form.val("agent-select-form", { + "id": adminAgentSelectVo.id, + "salesmansId": adminAgentSelectVo.salesmansId + }); + } + + form.on('submit(agent-select-form-submit)', function (data) { + febs.post(ctx + 'admin/mallMember/memberUpdateSalesman', 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/mallMemberList.html b/src/main/resources/templates/febs/views/modules/mallMember/mallMemberList.html index cc358f2..b05ae51 100644 --- a/src/main/resources/templates/febs/views/modules/mallMember/mallMemberList.html +++ b/src/main/resources/templates/febs/views/modules/mallMember/mallMemberList.html @@ -162,6 +162,19 @@ } }); } + + if (layEvent === 'agentSelect') { + febs.modal.open('代理人设置', 'modules/mallMember/agentSelect/' + data.id, { + btn: ['提交', '取消'], + yes: function (index, layero) { + $('#agent-select').find('#submit').trigger('click'); + }, + btn2: function () { + layer.closeAll(); + } + }); + } + if (layEvent === 'moneyFlow') { febs.modal.open( '用户资金流水', 'modules/mallMember/moneyFlow/' + data.id, { maxmin: true, @@ -245,49 +258,39 @@ // {field: 'prizeScore', title: '竞猜积分', minWidth: 100,align:'left'}, // {field: 'commission', title: '佣金', minWidth: 100,align:'left'}, // {field: 'referrerName', title: '推荐人', minWidth: 100,align:'left'}, - // {field: 'levelName', title: '会员类型', minWidth: 100,align:'left'}, + {field: 'levelName', title: '会员类型', minWidth: 100,align:'left'}, + {field: 'salesmansName', title: '推销员', minWidth: 100,align:'left'}, // {field: 'storeMaster', title: '店长', templet:'#switchStoreMaster', minWidth: 100}, // {field: 'director', title: '总监', templet:'#switchDirector', minWidth: 100}, - {field: 'accountType', title: '账号类型', - templet: function (d) { - if (d.accountType === 2) { - return '<span style="color:red;">测试账号</span>' - } else if (d.accountType === 1) { - return '<span style="color:green;">正常账号</span>' - }else{ - return '' - } - }, minWidth: 100,align:'center'}, - {field: 'leaderState', title: '是否是团长', - templet: function (d) { - if (d.leaderState === 1) { - return '<span style="color:green;">团长</span>' - }else if (d.leaderState === 3) { - return '<span">申请中</span>' - }else if (d.leaderState === 4) { - return '<span">普通用户(取消团长资格)</span>' - }else{ - return '<span">普通用户</span>' - } - }, minWidth: 100,align:'center'}, + // {field: 'accountType', title: '账号类型', + // templet: function (d) { + // if (d.accountType === 2) { + // return '<span style="color:red;">测试账号</span>' + // } else if (d.accountType === 1) { + // return '<span style="color:green;">正常账号</span>' + // }else{ + // return '' + // } + // }, minWidth: 100,align:'center'}, + // {field: 'leaderState', title: '是否是团长', + // templet: function (d) { + // if (d.leaderState === 1) { + // return '<span style="color:green;">团长</span>' + // }else if (d.leaderState === 3) { + // return '<span">申请中</span>' + // }else if (d.leaderState === 4) { + // return '<span">普通用户(取消团长资格)</span>' + // }else{ + // return '<span">普通用户</span>' + // } + // }, 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.leaderState === 1 ){ - return '<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="moneyFlow" shiro:hasPermission="user:update">资金流水</button>' - }else if(d.leaderState === 2){ - 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" lay-event="addLeader" shiro:hasPermission="user:update">设置为团长</button>' - }else if(d.leaderState === 3){ - return '<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="moneyFlow" shiro:hasPermission="user:update">资金流水</button>' - }else if(d.leaderState === 4){ - return '<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="moneyFlow" shiro:hasPermission="user:update">资金流水</button>' + return '<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="agentSelect" shiro:hasPermission="user:update">代理人设置</button>' + // '<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" lay-event="addLeader" shiro:hasPermission="user:update">设置为团长</button>' - }else{ - 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" lay-event="addLeader" shiro:hasPermission="user:update">设置为团长</button>' - } },minWidth: 200,align:'center', fixed:"right"} ]] diff --git a/src/main/resources/templates/febs/views/modules/mallMember/mallSalesManList.html b/src/main/resources/templates/febs/views/modules/mallMember/mallSalesManList.html index 8016d66..4fb8f4d 100644 --- a/src/main/resources/templates/febs/views/modules/mallMember/mallSalesManList.html +++ b/src/main/resources/templates/febs/views/modules/mallMember/mallSalesManList.html @@ -76,8 +76,14 @@ layEvent = obj.event; if (layEvent === 'salesmanDel') { - febs.modal.confirm('删除', '确认删除['+data.name+']推荐员?', function () { + febs.modal.confirm('设置', '确认禁用['+data.name+']推荐员?', function () { salesmanDel(data.id); + }); + } + + if (layEvent === 'salesmanUse') { + febs.modal.confirm('设置', '确认启用['+data.name+']推荐员?', function () { + salesmanUse(data.id); }); } if (layEvent === 'salesmanUpdate') { @@ -96,7 +102,13 @@ }); function salesmanDel(id) { febs.get(ctx + 'admin/mallMember/salesmanDel/' + id, null, function () { - febs.alert.success('删除成功'); + febs.alert.success('操作成功'); + $query.click(); + }); + } + function salesmanUse(id) { + febs.get(ctx + 'admin/mallMember/salesmanUse/' + id, null, function () { + febs.alert.success('操作成功'); $query.click(); }); } @@ -135,11 +147,23 @@ {field: 'id', title: '序号', minWidth: 100,align:'left'}, {field: 'name', title: '姓名', minWidth: 100,align:'left'}, {field: 'remark', title: '备注', minWidth: 140,align:'left'}, + {field: 'state', title: '状态', + templet: function (d) { + if (d.state === 2) { + return '<span style="color:red;">禁用</span>' + } else{ + return '<span style="color:green;">启用</span>' + } + }, minWidth: 100,align:'center'}, {title: '操作', templet: function (d) { + if(d.state === 2){ return '<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="salesmanUpdate" shiro:hasPermission="user:update">编辑</button>' - + '<button class="layui-btn layui-btn-normal layui-btn-xs febs-bg-red" lay-event="salesmanDel" shiro:hasPermission="user:update">删除</button>' - + + '<button class="layui-btn layui-btn-normal layui-btn-xs febs-bg-green" lay-event="salesmanUse" shiro:hasPermission="user:update">启用</button>' + }else{ + return '<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="salesmanUpdate" shiro:hasPermission="user:update">编辑</button>' + + '<button class="layui-btn layui-btn-normal layui-btn-xs febs-bg-red" lay-event="salesmanDel" shiro:hasPermission="user:update">禁用</button>' + } },minWidth: 160,align:'center'} ]] }); -- Gitblit v1.9.1