From 48dcbb226d4d33c6ff02b7e68c1c591bcd88270e Mon Sep 17 00:00:00 2001 From: xiaoyong931011 <15274802129@163.com> Date: Fri, 24 Feb 2023 16:30:41 +0800 Subject: [PATCH] 后台订单显示修改 --- src/main/java/cc/mrbird/febs/mall/vo/AdminMallAgentRecordVo.java | 30 +++ src/main/java/cc/mrbird/febs/mall/controller/ViewMallMemberController.java | 9 + src/main/resources/mapper/modules/MallSalesmanMapper.xml | 76 +++++++++ src/main/java/cc/mrbird/febs/mall/mapper/MallSalesmanMapper.java | 7 src/main/java/cc/mrbird/febs/mall/controller/AdminMallMemberController.java | 31 +++ src/main/java/cc/mrbird/febs/mall/entity/MallAgentRecord.java | 12 + src/main/resources/templates/febs/views/modules/order/orderList.html | 8 src/main/java/cc/mrbird/febs/mall/service/IAdminMallMemberService.java | 4 src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallMemberServiceImpl.java | 20 ++ src/main/resources/templates/febs/views/modules/mallMember/agentAchieveList.html | 220 +++++++++++++++++++++++++++ src/main/resources/templates/febs/views/modules/mallMember/mallMemberList.html | 22 +- 11 files changed, 424 insertions(+), 15 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 10cf072..08fb713 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,9 @@ import cc.mrbird.febs.mall.service.IAdminMallMemberService; import cc.mrbird.febs.mall.service.IApiMallMemberService; import cc.mrbird.febs.mall.vo.*; +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.StrUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.ibatis.annotations.Param; @@ -493,4 +496,32 @@ return mallMemberService.getSalesmanAchieveTree(); } + /** + * 合伙人业绩 + */ + @GetMapping("agentAchieveList") + public FebsResponse agentAchieveList(MallAgentRecord mallAgentRecord, QueryRequest request) { + String startTime = mallAgentRecord.getStartTime(); + String endTime = mallAgentRecord.getEndTime(); + if(StrUtil.isNotBlank(startTime) && StrUtil.isNotBlank(endTime)){ + DateTime dateStartTime= DateUtil.parseDate(startTime); + DateTime dateEndTime = DateUtil.parseDate(endTime); + int compare = DateUtil.compare(dateStartTime, dateEndTime); + if(compare >= 0){ + return new FebsResponse().fail().message("请输入正确的开始时间和结束时间"); + } + } + Map<String, Object> data = getDataTable(mallMemberService.getAgentAchieveList(mallAgentRecord, request)); + return new FebsResponse().success().data(data); + } + + /** + * 合伙人业绩-省 + */ + @GetMapping("agentAddress/tree") + @ControllerEndpoint(exceptionMessage = "合伙人业绩-省") + public List<AdminMallAgentRecordVo> agentAddress(){ + return mallMemberService.agentAddress(); + } + } 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 ce589b0..970fe4e 100644 --- a/src/main/java/cc/mrbird/febs/mall/controller/ViewMallMemberController.java +++ b/src/main/java/cc/mrbird/febs/mall/controller/ViewMallMemberController.java @@ -337,5 +337,14 @@ return FebsUtil.view("modules/mallMember/salesmanAchieveList"); } + /** + * 合伙人业绩列表 + */ + @GetMapping("agentAchieveList") + @RequiresPermissions("agentAchieveList:view") + public String agentAchieveList() { + return FebsUtil.view("modules/mallMember/agentAchieveList"); + } + } diff --git a/src/main/java/cc/mrbird/febs/mall/entity/MallAgentRecord.java b/src/main/java/cc/mrbird/febs/mall/entity/MallAgentRecord.java index 5556174..e061e25 100644 --- a/src/main/java/cc/mrbird/febs/mall/entity/MallAgentRecord.java +++ b/src/main/java/cc/mrbird/febs/mall/entity/MallAgentRecord.java @@ -36,5 +36,17 @@ @TableField(exist = false) private String memberName; + //下单时间 + @TableField(exist = false) + private String orderTime; + + @TableField(exist = false) + private String startTime; + + @TableField(exist = false) + private String endTime; + + @TableField(exist = false) + private String nickname; } 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 d45b04b..981a0cc 100644 --- a/src/main/java/cc/mrbird/febs/mall/mapper/MallSalesmanMapper.java +++ b/src/main/java/cc/mrbird/febs/mall/mapper/MallSalesmanMapper.java @@ -1,6 +1,7 @@ package cc.mrbird.febs.mall.mapper; import cc.mrbird.febs.mall.entity.MallAddressInfo; +import cc.mrbird.febs.mall.entity.MallAgentRecord; import cc.mrbird.febs.mall.entity.MallSalesman; import cc.mrbird.febs.mall.vo.*; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -32,4 +33,10 @@ List<AdminSalesmanAchieveVo> selectSalesmanAchieveProvince(); List<AdminMemberOrderVo> selectAdminMemberOrderVoBySalesmanId(@Param("salesmanId")Long salesmanId); + + IPage<AdminMallAgentRecordVo> selectAgentAchieveListInPage(Page<AdminMallAgentRecordVo> page, @Param("record")MallAgentRecord mallAgentRecord); + + List<AdminMallAgentRecordVo> selectAgentAddressProvince(); + + List<String> selectAgentAddressCity(@Param("province")String province); } 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 1654fc0..9e2153f 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/IAdminMallMemberService.java +++ b/src/main/java/cc/mrbird/febs/mall/service/IAdminMallMemberService.java @@ -118,4 +118,8 @@ IPage<AdminSalesmanAchieveVo> getSalesmanAchieveList(MallSalesman mallSalesman, QueryRequest request); List<AdminSalesmanAchieveVo> getSalesmanAchieveTree(); + + IPage<AdminMallAgentRecordVo> getAgentAchieveList(MallAgentRecord mallAgentRecord, QueryRequest request); + + List<AdminMallAgentRecordVo> agentAddress(); } 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 1c9fa79..f3fc8bf 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 @@ -753,6 +753,26 @@ return mallSalesmanMapper.selectSalesmanAchieveProvince(); } + @Override + public IPage<AdminMallAgentRecordVo> getAgentAchieveList(MallAgentRecord mallAgentRecord, QueryRequest request) { + Page<AdminMallAgentRecordVo> page = new Page<>(request.getPageNum(), request.getPageSize()); + IPage<AdminMallAgentRecordVo> adminMallAgentRecordVos = mallSalesmanMapper.selectAgentAchieveListInPage(page, mallAgentRecord); + return adminMallAgentRecordVos; + } + + @Override + public List<AdminMallAgentRecordVo> agentAddress() { + List<AdminMallAgentRecordVo> adminMallAgentRecordVos = mallSalesmanMapper.selectAgentAddressProvince(); + if(CollUtil.isNotEmpty(adminMallAgentRecordVos)){ + for(AdminMallAgentRecordVo adminMallAgentRecordVo : adminMallAgentRecordVos){ + String province = adminMallAgentRecordVo.getProvince(); + List<String> cityList = mallSalesmanMapper.selectAgentAddressCity(province); + adminMallAgentRecordVo.setCityList(cityList); + } + } + return adminMallAgentRecordVos; + } + private String refererIds(String parentId) { boolean flag = false; if (StrUtil.isBlank(parentId)) { diff --git a/src/main/java/cc/mrbird/febs/mall/vo/AdminMallAgentRecordVo.java b/src/main/java/cc/mrbird/febs/mall/vo/AdminMallAgentRecordVo.java new file mode 100644 index 0000000..8581d57 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/vo/AdminMallAgentRecordVo.java @@ -0,0 +1,30 @@ +package cc.mrbird.febs.mall.vo; + +import io.swagger.annotations.ApiModel; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +@Data +@ApiModel(value = "AdminMallAddressInfoVo", description = "返回参数类") +public class AdminMallAgentRecordVo { + + //省 + private String province; + //市 + private String city; + //用户昵称 + private String nickname; + //合伙人 + private String name; + //电话 + private String phone; + //下单总数 + private Integer orderCnt; + //金额 + private BigDecimal orderAmount; + + private List<String> cityList; + +} diff --git a/src/main/resources/mapper/modules/MallSalesmanMapper.xml b/src/main/resources/mapper/modules/MallSalesmanMapper.xml index c9c0038..67a3b9f 100644 --- a/src/main/resources/mapper/modules/MallSalesmanMapper.xml +++ b/src/main/resources/mapper/modules/MallSalesmanMapper.xml @@ -153,4 +153,80 @@ ) </select> + <select id="selectAgentAchieveListInPage" resultType="cc.mrbird.febs.mall.vo.AdminMallAgentRecordVo"> + SELECT + a.province, + a.city, + a.name, + a.phone, + d.name nickname, + ( + select count(b.id) + from mall_order_info b + <where> + b.member_id = a.member_id + and (b.status = 4) + <if test="record != null" > + <if test="record.startTime != null and record.startTime != ''"> + and b.order_time >= #{record.startTime} + </if> + <if test="record.endTime != null and record.endTime != ''"> + and b.order_time <= #{record.endTime} + </if> + </if> + </where> + ) orderCnt, + ( + select ifnull(sum(c.amount),0) + from mall_order_info c + + <where> + c.member_id = a.member_id + and (c.status = 4) + <if test="record != null" > + <if test="record.startTime != null and record.startTime != ''"> + and c.order_time >= #{record.startTime} + </if> + <if test="record.endTime != null and record.endTime != ''"> + and c.order_time <= #{record.endTime} + </if> + </if> + </where> + ) orderAmount + FROM mall_agent_record a + inner join mall_member d on a.member_id = d.id + <where> + <if test="record != null" > + <if test="record.province != null and record.province != ''"> + and a.province = #{record.province} + </if> + <if test="record.city != null and record.city != ''"> + and a.city = #{record.city} + </if> + <if test="record.name != null and record.name != ''"> + and a.name like concat('%', #{record.name},'%') + </if> + <if test="record.nickname != null and record.nickname != ''"> + and d.name like concat('%', #{record.nickname},'%') + </if> + </if> + </where> + ORDER BY orderAmount desc + </select> + + <select id="selectAgentAddressProvince" resultType="cc.mrbird.febs.mall.vo.AdminMallAgentRecordVo"> + SELECT + a.province + FROM mall_agent_record a + group by a.province + </select> + + <select id="selectAgentAddressCity" resultType="java.lang.String"> + SELECT + a.city + FROM mall_agent_record a + where a.province = #{province} + group by a.city + </select> + </mapper> \ No newline at end of file diff --git a/src/main/resources/templates/febs/views/modules/mallMember/agentAchieveList.html b/src/main/resources/templates/febs/views/modules/mallMember/agentAchieveList.html new file mode 100644 index 0000000..066fd31 --- /dev/null +++ b/src/main/resources/templates/febs/views/modules/mallMember/agentAchieveList.html @@ -0,0 +1,220 @@ +<div class="layui-fluid layui-anim febs-anim" id="febs-agent-achieve-list" lay-title="合伙人业绩"> + <div class="layui-row febs-container"> + <div class="layui-col-md12"> + <div class="layui-card"> + <div class="layui-card-body febs-table-full"> + <form class="layui-form layui-table-form" lay-filter="agent-achieve-table-form"> + <div class="layui-row"> + <div class="layui-col-md10"> + <div class="layui-inline"> + <label class="layui-form-label">省:</label> + <div class="layui-input-inline"> + <select name="province" class="province-select-category" id="provinceSelect" lay-filter="provinceChange"> + <option value="">请选择</option> + </select> + </div> + </div> + <div class="layui-inline"> + <label class="layui-form-label">市:</label> + <div class="layui-input-inline"> + <select name="city" class="city-select-category" id="citySelect"> + <option value="">请选择</option> + </select> + </div> + </div> + + <div class="layui-inline"> + <label class="layui-form-label">用户昵称:</label> + <div class="layui-input-inline"> + <input type="text" placeholder="用户昵称" name="nickname" autocomplete="off" class="layui-input"> + </div> + </div> + + <div class="layui-inline"> + <label class="layui-form-label">合伙人:</label> + <div class="layui-input-inline"> + <input type="text" placeholder="合伙人" name="name" autocomplete="off" class="layui-input"> + </div> + </div> + + <div class="layui-inline"> + <label class="layui-form-label layui-form-label-sm">开始时间</label> + <div class="layui-input-inline"> + <input type="text" name="startTime" id="febs-agent-achieve-list-start" lay-verify="date" + placeholder="yyyy-MM-dd" autocomplete="off" class="layui-input"> + </div> + </div> + + <div class="layui-inline"> + <label class="layui-form-label layui-form-label-sm">结束时间</label> + <div class="layui-input-inline"> + <input type="text" name="endTime" id="febs-agent-achieve-list-end" lay-verify="date" + placeholder="yyyy-MM-dd" autocomplete="off" class="layui-input"> + </div> + </div> + + </div> + <div class="layui-col-md2 layui-col-sm12 layui-col-xs12 table-action-area"> + <div class="layui-btn layui-btn-sm layui-btn-primary febs-button-blue-plain table-action" id="query"> + <i class="layui-icon"></i> + </div> + <div class="layui-btn layui-btn-sm layui-btn-primary febs-button-green-plain table-action" id="reset"> + <i class="layui-icon"></i> + </div> + </div> + </div> + </form> + <table lay-filter="agentAchieveTable" lay-data="{id: 'agentAchieveTable'}"></table> + <style type="text/css"> + ::-webkit-scrollbar { + height: 20px !important; + background-color: #f4f4f4; + } + </style> + </div> + </div> + </div> + </div> +</div> +<!-- 表格操作栏 start --> +<script type="text/html" id="user-option"> + <span shiro:lacksPermission="user:view,user:update,user:delete"> + <span class="layui-badge-dot febs-bg-orange"></span> 无权限 + </span> + <a lay-event="edit" shiro:hasPermission="user:update"><i + class="layui-icon febs-edit-area febs-blue"></i></a> +</script> +<style> + .layui-form-onswitch { + background-color: #5FB878 !important; + } +</style> +<script data-th-inline="none" type="text/javascript"> + // 引入组件并初始化 + layui.use([ 'jquery', 'form', 'table', 'febs','laydate'], function () { + var $ = layui.jquery, + febs = layui.febs, + form = layui.form, + table = layui.table, + $view = $('#febs-agent-achieve-list'), + $query = $view.find('#query'), + $reset = $view.find('#reset'), + $searchForm = $view.find('form'), + sortObject = {field: 'orderAmount', type: null}, + laydate = layui.laydate, + tableIns; + + //日期范围 + laydate.render({ + elem: '#febs-agent-achieve-list-start' + }); + + laydate.render({ + elem: '#febs-agent-achieve-list-end' + }); + + //(下拉框) + $.get(ctx + 'admin/mallMember/agentAddress/tree', function (data) { + for (var k in data) + { + $(".province-select-category").append("<option value='" + data[k].province + "'>" + data[k].province + "</option>"); + for (var kCity in data[k].cityList) + { + $(".city-select-category").append("<option value='" + data[k].cityList[kCity] + "'>" + data[k].cityList[kCity] + "</option>"); + } + } + layui.use('form', function () { + var form = layui.form; + form.render(); + }); + }); + //监听下拉事件 + form.on('select(provinceChange)', function (data) { + let provinceStr = data.value + alert(provinceStr); + $.get(ctx + 'admin/mallMember/agentAddress/tree', function (data) { + for (var k in data) + { + if(provinceStr == data[k].province){ + //先清空 + $("#citySelect").empty(); + $(".city-select-category").append("<option value=''>请选择</option>"); + for (var kCity in data[k].cityList) + { + $(".city-select-category").append("<option value='" + data[k].cityList[kCity] + "'>" + data[k].cityList[kCity] + "</option>"); + } + } + } + layui.use('form', function () { + var form = layui.form; + form.render(); + }); + }); + + + }); + + form.render(); + + // 表格初始化 + initTable(); + + // 初始化表格操作栏各个按钮功能 + table.on('tool(agentAchieveTable)', function (obj) { + var data = obj.data, + layEvent = obj.event; + }); + + // 查询按钮 + $query.on('click', function () { + var params = $.extend(getQueryParams(), {field: sortObject.field, order: sortObject.type}); + tableIns.reload({where: params, page: {curr: 1}}); + }); + + // 刷新按钮 + $reset.on('click', function () { + $searchForm[0].reset(); + $("#citySelect").empty(); + sortObject.type = 'null'; + tableIns.reload({where: getQueryParams(), page: {curr: 1}, initSort: sortObject}); + }); + + function initTable() { + tableIns = febs.table.init({ + elem: $view.find('table'), + id: 'agentAchieveTable', + url: ctx + 'admin/mallMember/agentAchieveList', + totalRow : true, + toolbar: '#tableToolBar', + cols: [[ + {field: 'province', title: '省', minWidth: 100,align:'left',totalRowText:"合计"}, + {field: 'city', title: '市', minWidth: 100,align:'left'}, + {field: 'nickname', title: '用户昵称', minWidth: 100,align:'left'}, + {field: 'name', title: '合伙人', minWidth: 100,align:'left'}, + {field: 'phone', title: '电话', minWidth: 100,align:'left'}, + {field: 'orderCnt', title: '订单数量', minWidth: 100,align:'left', totalRow:true}, + {field: 'orderAmount', title: '金额', minWidth: 100,align:'left', totalRow:true} + ]] + }); + } + + // 获取查询参数 + function getQueryParams() { + let startTimestr = $searchForm.find('input[name="startTime"]').val().trim(); + let endTimeStr = $searchForm.find('input[name="endTime"]').val().trim(); + if(startTimestr != '' && endTimeStr != '' && startTimestr >= endTimeStr){ + febs.alert.warn('开始时间需要小于结束时间'); + return{}; + } + return { + startTime: $searchForm.find('input[name="startTime"]').val().trim(), + endTime: $searchForm.find('input[name="endTime"]').val().trim(), + province: $searchForm.find("select[name='province']").val(), + city: $searchForm.find("select[name='city']").val(), + name: $searchForm.find('input[name="name"]').val().trim(), + nickname: $searchForm.find('input[name="nickname"]').val().trim(), + }; + } + + }) +</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 d6ab55d..668ab7c 100644 --- a/src/main/resources/templates/febs/views/modules/mallMember/mallMemberList.html +++ b/src/main/resources/templates/febs/views/modules/mallMember/mallMemberList.html @@ -19,16 +19,16 @@ <input type="text" placeholder="手机号码" name="account" autocomplete="off" class="layui-input"> </div> </div> -<!-- <div class="layui-inline">--> -<!-- <label class="layui-form-label layui-form-label-sm">账户状态</label>--> -<!-- <div class="layui-input-inline">--> -<!-- <select name="accountStatus">--> -<!-- <option value="">请选择</option>--> -<!-- <option value="1">正常</option>--> -<!-- <option value="2">禁用</option>--> -<!-- </select>--> -<!-- </div>--> -<!-- </div>--> + <div class="layui-inline"> + <label class="layui-form-label layui-form-label-sm">会员类型</label> + <div class="layui-input-inline"> + <select name="level"> + <option value="">请选择</option> + <option value="ZERO_LEVEL">普通用户</option> + <option value="FIRST_LEVEL">城市合伙人</option> + </select> + </div> + </div> <!-- <div class="layui-inline">--> <!-- <label class="layui-form-label layui-form-label-sm">会员类型</label>--> <!-- <div class="layui-input-inline">--> @@ -401,7 +401,7 @@ return { name: $searchForm.find('input[name="name"]').val().trim(), account: $searchForm.find('input[name="account"]').val().trim(), - accountStatus: $searchForm.find("select[name='accountStatus']").val(), + level: $searchForm.find("select[name='level']").val(), // level: $searchForm.find("select[name='level']").val(), }; } diff --git a/src/main/resources/templates/febs/views/modules/order/orderList.html b/src/main/resources/templates/febs/views/modules/order/orderList.html index 1053b54..919521b 100644 --- a/src/main/resources/templates/febs/views/modules/order/orderList.html +++ b/src/main/resources/templates/febs/views/modules/order/orderList.html @@ -65,14 +65,14 @@ <label class="layui-form-label layui-form-label-sm">开始时间</label> <div class="layui-input-inline"> <input type="text" name="startTime" id="febs-form-group-date-start" lay-verify="date" - placeholder="yyyy-MM-dd" autocomplete="off" class="layui-input"> + placeholder="yyyy-MM-dd HH:mm:ss" autocomplete="off" class="layui-input"> </div> </div> <div class="layui-inline"> <label class="layui-form-label layui-form-label-sm">结束时间</label> <div class="layui-input-inline"> <input type="text" name="endTime" id="febs-form-group-date-end" lay-verify="date" - placeholder="yyyy-MM-dd" autocomplete="off" class="layui-input"> + placeholder="yyyy-MM-dd HH:mm:ss" autocomplete="off" class="layui-input"> </div> </div> </div> @@ -153,11 +153,11 @@ currPageOrder = $view.find(".layui-laypage-em").next().html(); //日期范围 laydate.render({ - elem: '#febs-form-group-date-start' + elem: '#febs-form-group-date-start',type: 'datetime' }); laydate.render({ - elem: '#febs-form-group-date-end' + elem: '#febs-form-group-date-end',type: 'datetime' }); -- Gitblit v1.9.1