Ver Fonte

feat(增加账号总览)

gengyang há 5 anos atrás
pai
commit
0d4f773cfb

+ 22 - 3
src/main/java/com/mokamrp/privates/controller/GroupController.java

@@ -1,13 +1,16 @@
 package com.mokamrp.privates.controller;
 
 
+import com.mokamrp.privates.constant.HttpStatus;
+import com.mokamrp.privates.entity.GetWorkRoomHandle;
+import com.mokamrp.privates.entity.PostBasePageHandle;
+import com.mokamrp.privates.help.AjaxResult;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
 import com.mokamrp.privates.service.GroupService;
 import com.mokamrp.privates.mapper.pojo.Group;
 
-import org.springframework.web.bind.annotation.RestController;
-
 import javax.validation.Valid;
 import java.util.List;
 
@@ -32,6 +35,22 @@ public class GroupController extends BaseController<Group> {
      * 如果需要定制化,需要将BaseController中对应的方法复制到当前控制器,然后进行修改
      */
 
+    /**
+     * 账号总揽
+     * @return
+     */
+    @PostMapping("/list")
+    @ResponseBody
+    public Object list(@Valid @RequestBody PostBasePageHandle handle, BindingResult bindingResult){
+
+        if (bindingResult.hasErrors()) {
+            return AjaxResult.error(HttpStatus.ERROR, bindingResult.getFieldError().getDefaultMessage());
+        }
+
+        Object res = groupService.selectGroupData(handle);
+
+        return AjaxResult.success("success", res);
+    }
 
 }
 

+ 11 - 0
src/main/java/com/mokamrp/privates/controller/UserController.java

@@ -2,9 +2,12 @@ package com.mokamrp.privates.controller;
 
 
 import com.mokamrp.privates.constant.HttpStatus;
+import com.mokamrp.privates.entity.GetWorkRoomHandle;
 import com.mokamrp.privates.entity.LoginHandle;
 import com.mokamrp.privates.help.AjaxResult;
+import com.mokamrp.privates.interceptor.AuthUser;
 import com.mokamrp.privates.mapper.pojo.User;
+import com.mokamrp.privates.service.UserCorpService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.BindingResult;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -12,8 +15,10 @@ import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 
 import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.ResponseBody;
 
 import javax.validation.Valid;
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -27,5 +32,11 @@ import java.util.Map;
 @Controller
 @RequestMapping("/user")
 public class UserController extends BaseController<User>{
+
+    @PostMapping("/info")
+    @ResponseBody
+    public Object info(@AuthUser User authUser) {
+        return AjaxResult.success(authUser);
+    }
 }
 

+ 9 - 0
src/main/java/com/mokamrp/privates/entity/PostBasePageHandle.java

@@ -0,0 +1,9 @@
+package com.mokamrp.privates.entity;
+
+import lombok.Data;
+
+@Data
+public class PostBasePageHandle {
+    private Integer page;
+    private Integer pagesize;
+}

+ 18 - 0
src/main/java/com/mokamrp/privates/mapper/GroupMapper.java

@@ -1,7 +1,14 @@
 package com.mokamrp.privates.mapper;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.mokamrp.privates.mapper.pojo.Group;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.mokamrp.privates.mapper.vo.WorkEmployeeVo;
+import com.mokamrp.privates.mapper.vo.WorkGroupDataVo;
+import com.mokamrp.privates.mapper.vo.WorkRoomVo;
+import org.apache.ibatis.annotations.MapKey;
+import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Component;
 
 import java.util.List;
@@ -18,4 +25,15 @@ import java.util.Map;
 @Component
 public interface GroupMapper extends BaseMapper<Group> {
     public List<Map<String, Object>> selectCorpAndWorkEmployeeList(String corpIds);
+    Integer getBaseJoinListTotal();
+    List<WorkGroupDataVo> getBaseJoinList(IPage<WorkGroupDataVo> page);
+
+    @MapKey("group_id")
+    Map<String,Map<String, Object>> getRoomData(@Param("ew") QueryWrapper<WorkGroupDataVo> queryWrapper);
+
+    @MapKey("group_id")
+    Map<String,Map<String, Object>> getFanData(@Param("ew") QueryWrapper<WorkGroupDataVo> queryWrapper);
+
+    List<Map<String, Object>> getEmployeeDataList(@Param("ew") QueryWrapper<WorkGroupDataVo> queryWrapper);
+
 }

+ 65 - 2
src/main/java/com/mokamrp/privates/mapper/GroupMapper.xml

@@ -2,8 +2,6 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.mokamrp.privates.mapper.GroupMapper">
 
-    <!-- 开启二级缓存 -->
-    <cache type="org.mybatis.caches.ehcache.LoggingEhcache"/>
 
     <!-- 通用查询映射结果 -->
     <resultMap id="BaseResultMap" type="com.mokamrp.privates.mapper.pojo.Group">
@@ -45,4 +43,69 @@
         WHERE A.corp_id IN (#{corpIds})
     </select>
 
+    <select id="getBaseJoinList" resultType="com.mokamrp.privates.mapper.vo.WorkGroupDataVo">
+        SELECT
+            a.*,count(*) as companyNum
+        FROM
+            private_group AS a
+            LEFT JOIN private_group_corp AS b ON b.group_id = a.id
+            LEFT JOIN mc_corp AS c ON b.corp_id = c.id
+        WHERE
+            group_type =1
+        GROUP BY a.id
+    </select>
+
+    <select id="getBaseJoinListTotal" resultType="Integer">
+        SELECT
+            count(*)
+        FROM
+            private_group
+        WHERE
+            group_type =1
+    </select>
+
+    <select id="getRoomData" resultType="map">
+        SELECT
+            c.group_id,a.corp_id,count(*) as num
+        FROM
+            mc_work_room AS a
+            LEFT JOIN mc_corp AS b ON b.id = a.corp_id
+            LEFT JOIN private_group_corp AS c ON b.id = c.corp_id
+        <where>
+            ${ew.sqlSegment}
+        </where>
+        group by c.group_id;
+    </select>
+
+    <select id="getFanData" resultType="map">
+        SELECT
+            c.group_id,a.corp_id,count(*) as num
+        FROM
+            mc_work_contact_employee AS a
+            LEFT JOIN mc_corp AS b ON b.id = a.corp_id
+            LEFT JOIN private_group_corp AS c ON b.id = c.corp_id
+        <where>
+            ${ew.sqlSegment}
+        </where>
+        group by c.group_id;
+    </select>
+
+    <select id="getEmployeeDataList" resultType="map">
+        SELECT
+            c.group_id,
+            a.private_tag_id,
+            d.tag_name,
+            concat(c.group_id,"_",a.private_tag_id) as kk,
+            count(*) as num
+        FROM
+            mc_work_employee AS a
+        LEFT JOIN mc_corp AS b ON b.id = a.corp_id
+        LEFT JOIN private_group_corp AS c ON b.id = c.corp_id
+        LEFT JOIN private_tag AS D ON a.private_tag_id = d.id
+        where d.tag_name != '' AND ${ew.sqlSegment}
+        GROUP BY
+            c.group_id,
+            a.private_tag_id
+    </select>
+
 </mapper>

+ 9 - 7
src/main/java/com/mokamrp/privates/mapper/WorkRoomMapper.xml

@@ -27,20 +27,22 @@
 
     <select id="getVoList" resultType="com.mokamrp.privates.mapper.vo.WorkRoomVo">
         SELECT
-        a.*,
-        c.group_id AS company_group_id,
-        b.`name` AS corp_name,
-        e.`name` AS employee_name,
-        c.group_id,
-        GROUP_CONCAT(g.tag_name) as tag_names
+            a.*,
+            c.group_id AS company_group_id,
+            b.`name` AS corp_name,
+            e.`name` AS employee_name,
+            c.group_id,
+            h.group_name,
+            GROUP_CONCAT(g.tag_name) as tag_names
         FROM
-        mc_work_room AS a
+            mc_work_room AS a
         LEFT JOIN mc_corp AS b ON a.corp_id = b.id
         LEFT JOIN private_group_corp AS c ON a.corp_id = c.corp_id
         LEFT JOIN mc_corp AS d ON a.corp_id = d.id
         LEFT JOIN mc_work_employee AS e ON a.owner_id = e.id
         LEFT JOIN private_room_tag AS f ON a.id = f.room_id
         LEFT JOIN private_tag AS g ON g.id = f.tag_id
+        LEFT JOIN private_group AS h ON h.id = c.group_id
         <where>
             ${ew.sqlSegment}
         </where>

+ 71 - 0
src/main/java/com/mokamrp/privates/mapper/vo/WorkGroupDataVo.java

@@ -0,0 +1,71 @@
+package com.mokamrp.privates.mapper.vo;
+
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 通讯录 - 客户 中间表
+ * </p>
+ *
+ * @author gengyang
+ * @since 2021-04-17
+ */
+public class WorkGroupDataVo {
+
+    private Integer id;
+    private String groupName;
+    private String companyNum;
+    private Integer totalFanNum;
+    private Integer totalRoomNum;
+    private List<Map<String,Object>> employeeList;
+
+    public List<Map<String, Object>> getEmployeeList() {
+        return employeeList;
+    }
+
+    public void setEmployeeList(List<Map<String, Object>> employeeList) {
+        this.employeeList = employeeList;
+    }
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public String getGroupName() {
+        return groupName;
+    }
+
+    public void setGroupName(String groupName) {
+        this.groupName = groupName;
+    }
+
+    public String getCompanyNum() {
+        return companyNum;
+    }
+
+    public void setCompanyNum(String companyNum) {
+        this.companyNum = companyNum;
+    }
+
+    public Integer getTotalFanNum() {
+        return totalFanNum;
+    }
+
+    public void setTotalFanNum(Integer totalFanNum) {
+        this.totalFanNum = totalFanNum;
+    }
+
+    public Integer getTotalRoomNum() {
+        return totalRoomNum;
+    }
+
+    public void setTotalRoomNum(Integer totalRoomNum) {
+        this.totalRoomNum = totalRoomNum;
+    }
+}

+ 9 - 0
src/main/java/com/mokamrp/privates/mapper/vo/WorkRoomVo.java

@@ -29,6 +29,15 @@ public class WorkRoomVo {
     private Integer addNum;
     private Integer leftNum;
     private String tagNames;
+    private String groupName;
+
+    public String getGroupName() {
+        return groupName;
+    }
+
+    public void setGroupName(String groupName) {
+        this.groupName = groupName;
+    }
 
     public Integer getCorpId() {
         return corpId;

+ 5 - 1
src/main/java/com/mokamrp/privates/service/GroupService.java

@@ -1,8 +1,12 @@
 package com.mokamrp.privates.service;
 
+import com.mokamrp.privates.entity.PostBasePageHandle;
 import com.mokamrp.privates.mapper.pojo.Group;
 import com.baomidou.mybatisplus.extension.service.IService;
 
+import java.util.List;
+import java.util.Map;
+
 /**
  * <p>
  * 分组信息表 服务类
@@ -12,5 +16,5 @@ import com.baomidou.mybatisplus.extension.service.IService;
  * @since 2021-04-20
  */
 public interface GroupService extends IService<Group> {
-
+    public Map<String, Object> selectGroupData(PostBasePageHandle handle);
 }

+ 80 - 0
src/main/java/com/mokamrp/privates/service/impl/GroupServiceImpl.java

@@ -1,10 +1,21 @@
 package com.mokamrp.privates.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.mokamrp.privates.entity.PostBasePageHandle;
+import com.mokamrp.privates.mapper.WorkRoomMapper;
 import com.mokamrp.privates.mapper.pojo.Group;
 import com.mokamrp.privates.mapper.GroupMapper;
+import com.mokamrp.privates.mapper.vo.WorkGroupDataVo;
 import com.mokamrp.privates.service.GroupService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -17,4 +28,73 @@ import org.springframework.stereotype.Service;
 @Service
 public class GroupServiceImpl extends ServiceImpl<GroupMapper, Group> implements GroupService {
 
+    @Autowired
+    public GroupMapper groupMapper;
+
+    @Autowired
+    public WorkRoomMapper workRoomMapper;
+
+    @Override
+    public Map<String, Object> selectGroupData(PostBasePageHandle handle) {
+
+        Page<WorkGroupDataVo> pageObj = new Page<>(handle.getPage(), handle.getPagesize());
+        Integer total = 0;
+        List<WorkGroupDataVo> list;
+        Map<String, Object> resMap = new HashMap<String, Object>();
+        resMap.put("list", null);
+
+        list = groupMapper.getBaseJoinList(pageObj);
+        total = groupMapper.getBaseJoinListTotal();
+        int len = list.size();
+        if (len > 0) {
+            List<Integer> ids = list.stream().map(WorkGroupDataVo -> WorkGroupDataVo.getId()).collect(Collectors.toList());
+
+            QueryWrapper<WorkGroupDataVo> groupobj = new QueryWrapper<WorkGroupDataVo>();
+            groupobj.in("c.group_id", ids);
+            Map<String, Map<String, Object>> llist = groupMapper.getFanData(groupobj);
+            Map<String, Map<String, Object>> blist = groupMapper.getRoomData(groupobj);
+            List<Map<String, Object>> clist = groupMapper.getEmployeeDataList(groupobj);
+
+            int employeeLen = clist.size();
+
+            /**获取标签下客服数据**/
+            Integer tempGroupId;
+            int k;
+
+            for (int i = 0; i < len; i++){
+                List<Map<String,Object>> tempTagEmployeeDataList = new ArrayList<>();
+                Map<String,Object> tempTagEmployeeData = new HashMap<String, Object>();
+                WorkGroupDataVo detail =  list.get(i);
+
+                detail.setTotalFanNum(0);
+                detail.setTotalRoomNum(0);
+                if(llist.get(detail.getId()) != null){
+                    detail.setTotalFanNum(Integer.parseInt(llist.get(detail.getId()).get("num").toString()));
+                }
+
+                if(blist.get(detail.getId()) != null){
+                    detail.setTotalRoomNum(Integer.parseInt(blist.get(detail.getId()).get("num").toString()));
+                }
+
+                for (k = 0; k < employeeLen; k++) {
+                    tempGroupId= Integer.parseInt(clist.get(k).get("group_id").toString());
+
+                    if(detail.getId().equals(tempGroupId)){
+                        tempTagEmployeeData.put("privateTagId",clist.get(k).get("private_tag_id"));
+                        tempTagEmployeeData.put("tagName",clist.get(k).get("tag_name"));
+                        tempTagEmployeeData.put("num",clist.get(k).get("num"));
+                        tempTagEmployeeDataList.add(tempTagEmployeeData);
+                    }
+                }
+                detail.setEmployeeList(tempTagEmployeeDataList);
+            }
+
+        }
+
+        resMap.put("list", list);
+        resMap.put("total", total);
+
+        return resMap;
+    }
+
 }

+ 3 - 0
src/main/java/com/mokamrp/privates/service/impl/WorkRoomServiceImpl.java

@@ -155,6 +155,9 @@ public class WorkRoomServiceImpl extends ServiceImpl<WorkRoomMapper, WorkRoom> i
                 list = list.stream().map(WorkRwoomVo -> {
                     WorkRoomVo detail = new WorkRoomVo();
                     BeanUtils.copyProperties(WorkRwoomVo, detail);
+                    detail.setTotalNum(0);
+                    detail.setAddNum(0);
+                    detail.setLeftNum(0);
                     if (dataById.get(detail.getId()) != null) {
                         detail.setTotalNum((dataById.get(detail.getId()).get("total")));
                         detail.setAddNum(dataById.get(detail.getId()).get("add_num"));