Просмотр исходного кода

Merge branch 'master' of http://git.mokasz.com/marketing/moka-private

MOKASZ\wzk12044 5 лет назад
Родитель
Сommit
d4d8d8d8a9
31 измененных файлов с 2520 добавлено и 1 удалено
  1. 51 0
      src/main/java/com/mokamrp/privates/Result/ReturnT.java
  2. 20 0
      src/main/java/com/mokamrp/privates/controller/TagController.java
  3. 61 0
      src/main/java/com/mokamrp/privates/controller/WorkContactEmployeeController.java
  4. 38 0
      src/main/java/com/mokamrp/privates/controller/WorkContactRoomController.java
  5. 52 0
      src/main/java/com/mokamrp/privates/controller/WorkRoomController.java
  6. 16 0
      src/main/java/com/mokamrp/privates/mapper/TagMapper.java
  7. 25 0
      src/main/java/com/mokamrp/privates/mapper/TagMapper.xml
  8. 24 0
      src/main/java/com/mokamrp/privates/mapper/WorkContactEmployeeMapper.java
  9. 71 0
      src/main/java/com/mokamrp/privates/mapper/WorkContactEmployeeMapper.xml
  10. 25 0
      src/main/java/com/mokamrp/privates/mapper/WorkContactRoomMapper.java
  11. 76 0
      src/main/java/com/mokamrp/privates/mapper/WorkContactRoomMapper.xml
  12. 25 0
      src/main/java/com/mokamrp/privates/mapper/WorkRoomMapper.java
  13. 70 0
      src/main/java/com/mokamrp/privates/mapper/WorkRoomMapper.xml
  14. 126 0
      src/main/java/com/mokamrp/privates/mapper/pojo/Tag.java
  15. 261 0
      src/main/java/com/mokamrp/privates/mapper/pojo/WorkContactEmployee.java
  16. 210 0
      src/main/java/com/mokamrp/privates/mapper/pojo/WorkContactRoom.java
  17. 195 0
      src/main/java/com/mokamrp/privates/mapper/pojo/WorkRoom.java
  18. 131 0
      src/main/java/com/mokamrp/privates/mapper/vo/WorkContactEmployeeVo.java
  19. 133 0
      src/main/java/com/mokamrp/privates/mapper/vo/WorkContactRoomByRoomIdVo.java
  20. 143 0
      src/main/java/com/mokamrp/privates/mapper/vo/WorkContactRoomData.java
  21. 35 0
      src/main/java/com/mokamrp/privates/mapper/vo/WorkContactRoomGroupDataVo.java
  22. 174 0
      src/main/java/com/mokamrp/privates/mapper/vo/WorkRoomVo.java
  23. 24 0
      src/main/java/com/mokamrp/privates/service/TagService.java
  24. 32 0
      src/main/java/com/mokamrp/privates/service/WorkContactEmployeeService.java
  25. 21 0
      src/main/java/com/mokamrp/privates/service/WorkContactRoomService.java
  26. 24 0
      src/main/java/com/mokamrp/privates/service/WorkRoomService.java
  27. 71 0
      src/main/java/com/mokamrp/privates/service/impl/TagServiceImpl.java
  28. 95 0
      src/main/java/com/mokamrp/privates/service/impl/WorkContactEmployeeServiceImpl.java
  29. 88 0
      src/main/java/com/mokamrp/privates/service/impl/WorkContactRoomServiceImpl.java
  30. 202 0
      src/main/java/com/mokamrp/privates/service/impl/WorkRoomServiceImpl.java
  31. 1 1
      src/main/resources/application.properties

+ 51 - 0
src/main/java/com/mokamrp/privates/Result/ReturnT.java

@@ -0,0 +1,51 @@
+package com.mokamrp.privates.Result;
+
+import java.io.Serializable;
+
+/**
+ * common return
+ *
+ * @author xuxueli 2015-12-4 16:32:31
+ * @param <T>
+ */
+public class ReturnT<T> implements Serializable {
+    public static final long serialVersionUID = 42L;
+
+    public static final int SUCCESS_CODE = 200;
+    public static final int FAIL_CODE = 500;
+    public static final ReturnT<String> SUCCESS = new ReturnT<String>(null);
+    public static final ReturnT<String> FAIL = new ReturnT<String>(FAIL_CODE, null);
+
+    private int code;
+    private String msg;
+    private T data;
+
+    public ReturnT(int code, String msg) {
+        this.code = code;
+        this.msg = msg;
+    }
+    public ReturnT(T data) {
+        this.code = SUCCESS_CODE;
+        this.data = data;
+    }
+
+    public int getCode() {
+        return code;
+    }
+    public void setCode(int code) {
+        this.code = code;
+    }
+    public String getMsg() {
+        return msg;
+    }
+    public void setMsg(String msg) {
+        this.msg = msg;
+    }
+    public T getData() {
+        return data;
+    }
+    public void setData(T data) {
+        this.data = data;
+    }
+
+}

+ 20 - 0
src/main/java/com/mokamrp/privates/controller/TagController.java

@@ -0,0 +1,20 @@
+package com.mokamrp.privates.controller;
+
+import org.springframework.web.bind.annotation.RequestMapping;
+import com.mokamrp.privates.mapper.pojo.Tag;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ * 标签 前端控制器
+ * </p>
+ *
+ * @author gy
+ * @since 2021-04-20
+ */
+@RestController
+@RequestMapping("/tag")
+public class TagController extends BaseController<Tag>{
+
+}
+

+ 61 - 0
src/main/java/com/mokamrp/privates/controller/WorkContactEmployeeController.java

@@ -0,0 +1,61 @@
+package com.mokamrp.privates.controller;
+
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.mokamrp.privates.help.AjaxResult;
+import com.mokamrp.privates.mapper.pojo.WorkContactEmployee;
+import com.mokamrp.privates.mapper.vo.WorkContactEmployeeVo;
+import com.mokamrp.privates.service.WorkContactEmployeeService;
+import io.netty.handler.codec.json.JsonObjectDecoder;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.validation.constraints.Max;
+import java.util.*;
+
+
+/**
+ * <p>
+ * 通讯录 - 客户管理 中间表 前端控制器
+ * </p>
+ *
+ * @author gengyang
+ * @since 2021-04-17
+ */
+@Controller
+@RequestMapping("/workContactEmployee")
+public class WorkContactEmployeeController {
+
+    @Autowired
+    private WorkContactEmployeeService WorkContactEmployeeService;
+
+    @RequestMapping("/index")
+    @ResponseBody
+    public Object getList(
+            Integer gender, Integer status,
+            Integer pagesize, Integer page, String name,
+            Integer start_deleted_at, Integer end_deleted_at,
+            Integer start_created_at, Integer end_created_at,
+            Integer group_id, Integer corp_id,@RequestParam List employee_id, @RequestParam List tag_id , Integer channel_code_id
+    ){
+
+        Map<String, Object> resMap = WorkContactEmployeeService.getPageList(gender, status,
+                pagesize, page, name,
+                start_deleted_at, end_deleted_at,
+                start_created_at, end_created_at,
+                group_id, corp_id, employee_id, tag_id, channel_code_id);//所有
+
+        return AjaxResult.success(resMap);
+
+    }
+
+}

+ 38 - 0
src/main/java/com/mokamrp/privates/controller/WorkContactRoomController.java

@@ -0,0 +1,38 @@
+package com.mokamrp.privates.controller;
+
+import com.mokamrp.privates.entity.IndexHandle;
+import com.mokamrp.privates.help.AjaxResult;
+import com.mokamrp.privates.mapper.pojo.WorkContactRoom;
+import com.mokamrp.privates.service.WorkContactRoomService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import javax.validation.Valid;
+import java.util.Map;
+
+/**
+ * <p>
+ * 客户 - 客户群 关联表 前端控制器
+ * </p>
+ *
+ * @author gy
+ * @since 2021-04-21
+ */
+@RestController
+@RequestMapping("/workContactRoom")
+public class WorkContactRoomController extends BaseController<WorkContactRoom> {
+
+    @Autowired
+    public WorkContactRoomService service;
+
+    @PostMapping("/search")
+    public Object index(@Valid @RequestBody IndexHandle indexHandle, BindingResult bindingResult){
+        Map<String, Object>  resMap = service.getPageList(indexHandle, bindingResult);
+        return  AjaxResult.success(resMap);
+    }
+
+}
+

+ 52 - 0
src/main/java/com/mokamrp/privates/controller/WorkRoomController.java

@@ -0,0 +1,52 @@
+package com.mokamrp.privates.controller;
+
+
+import com.mokamrp.privates.help.AjaxResult;
+import com.mokamrp.privates.mapper.pojo.WorkRoom;
+import com.mokamrp.privates.service.WorkContactEmployeeService;
+import com.mokamrp.privates.service.WorkRoomService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 客户群表 前端控制器
+ * </p>
+ *
+ * @author gy
+ * @since 2021-04-21
+ */
+@RestController
+@RequestMapping("/workRoom")
+public class WorkRoomController extends BaseController<WorkRoom> {
+
+    @Autowired
+    private WorkRoomService workRoomService;
+
+    @RequestMapping("/list")
+    @ResponseBody
+    public Object getList(
+            Integer pagesize, Integer page,
+            String name,  Integer corp_id,
+            String start_create_time, String end_create_time,
+            String wx_chat_id,Integer corp_group_id,
+            @RequestParam List owner_id, @RequestParam List tag_id
+    ){
+
+        Map<String, Object> resMap = workRoomService.getPageList(pagesize, page, name, corp_id,
+                start_create_time, end_create_time,
+                wx_chat_id, corp_group_id,
+                owner_id, tag_id );//所有
+
+        return AjaxResult.success(resMap);
+    }
+
+}
+

+ 16 - 0
src/main/java/com/mokamrp/privates/mapper/TagMapper.java

@@ -0,0 +1,16 @@
+package com.mokamrp.privates.mapper;
+
+import com.mokamrp.privates.mapper.pojo.Tag;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 标签 Mapper 接口
+ * </p>
+ *
+ * @author gy
+ * @since 2021-04-20
+ */
+public interface TagMapper extends BaseMapper<Tag> {
+
+}

+ 25 - 0
src/main/java/com/mokamrp/privates/mapper/TagMapper.xml

@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.mokamrp.privates.mapper.TagMapper">
+
+    <!-- 开启二级缓存 -->
+    <cache type="org.mybatis.caches.ehcache.LoggingEhcache"/>
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.mokamrp.privates.mapper.pojo.Tag">
+        <id column="id" property="id" />
+        <result column="tag_group_id" property="tagGroupId" />
+        <result column="tag_name" property="tagName" />
+        <result column="status" property="status" />
+        <result column="tag_type" property="tagType" />
+        <result column="weight" property="weight" />
+        <result column="createtime" property="createtime" />
+        <result column="updatetime" property="updatetime" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id, tag_group_id, tag_name, status, tag_type, weight, createtime, updatetime
+    </sql>
+
+</mapper>

+ 24 - 0
src/main/java/com/mokamrp/privates/mapper/WorkContactEmployeeMapper.java

@@ -0,0 +1,24 @@
+package com.mokamrp.privates.mapper;
+
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.mokamrp.privates.mapper.pojo.Corp;
+import com.mokamrp.privates.mapper.pojo.WorkContactEmployee;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import com.mokamrp.privates.mapper.vo.WorkContactEmployeeVo;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 通讯录 - 客户 中间表 Mapper 接口
+ * </p>
+ *
+ * @author gengyang
+ * @since 2021-04-17
+ */
+public interface WorkContactEmployeeMapper extends BaseMapper<WorkContactEmployee> {
+    List<WorkContactEmployeeVo> getVoList(Page<WorkContactEmployeeVo> page, @Param("ew") EntityWrapper<WorkContactEmployee> queryWrapper);
+    Integer getVoListTotal(@Param("ew") EntityWrapper<WorkContactEmployee> queryWrapper);
+}

+ 71 - 0
src/main/java/com/mokamrp/privates/mapper/WorkContactEmployeeMapper.xml

@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.mokamrp.privates.mapper.WorkContactEmployeeMapper">
+
+    <!-- 开启二级缓存 -->
+    <cache type="org.mybatis.caches.ehcache.LoggingEhcache"/>
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.mokamrp.privates.mapper.pojo.WorkContactEmployee">
+        <id column="id" property="id" />
+        <result column="employee_id" property="employeeId" />
+        <result column="contact_id" property="contactId" />
+        <result column="remark" property="remark" />
+        <result column="description" property="description" />
+        <result column="remark_corp_name" property="remarkCorpName" />
+        <result column="remark_mobiles" property="remarkMobiles" />
+        <result column="add_way" property="addWay" />
+        <result column="oper_userid" property="operUserid" />
+        <result column="state" property="state" />
+        <result column="corp_id" property="corpId" />
+        <result column="status" property="status" />
+        <result column="create_time" property="createTime" />
+        <result column="created_at" property="createdAt" />
+        <result column="updated_at" property="updatedAt" />
+        <result column="deleted_at" property="deletedAt" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id, employee_id, contact_id, remark, description, remark_corp_name, remark_mobiles, add_way, oper_userid, state, corp_id, status, create_time, created_at, updated_at, deleted_at
+    </sql>
+
+    <select id="getVoList"  resultType="com.mokamrp.privates.mapper.vo.WorkContactEmployeeVo">
+        SELECT
+            a.id,
+            c.`name` AS client_name ,
+            c.gender AS client_gender ,
+            a.`status` AS client_status ,
+            a.channel_code_id as channel_code_id,
+            c.deleted_at AS client_deleted_at ,
+            c.created_at AS client_created_at ,
+            c.unionid AS client_unionid ,
+            e.`name` AS employee_name,
+            p.`name` as company_name,
+            l.`name` as channel_code_name,
+            a.state,
+            a.remark
+        FROM
+            mc_work_contact_employee AS a
+            LEFT JOIN mc_work_employee AS e ON a.employee_id = e.id
+            LEFT JOIN mc_work_contact AS c ON a.contact_id = c.id
+            LEFT JOIN mc_corp AS p ON p.id = a.corp_id
+            LEFT JOIN mc_channel_code AS l ON l.id = a.channel_code_id
+        where 1=1 ${ew.sqlSegment}
+
+    </select>
+
+
+    <select id="getVoListTotal"  resultType="Integer">
+        SELECT
+         count(*)
+        FROM
+            mc_work_contact_employee AS a
+            LEFT JOIN mc_work_employee AS e ON a.employee_id = e.id
+            LEFT JOIN mc_work_contact AS c ON a.contact_id = c.id
+            LEFT JOIN mc_corp AS p ON p.id = a.corp_id
+            LEFT JOIN mc_channel_code AS l ON l.id = a.channel_code_id
+        where 1=1 ${ew.sqlSegment}
+    </select>
+
+</mapper>

+ 25 - 0
src/main/java/com/mokamrp/privates/mapper/WorkContactRoomMapper.java

@@ -0,0 +1,25 @@
+package com.mokamrp.privates.mapper;
+
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.mokamrp.privates.mapper.pojo.WorkContactRoom;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import com.mokamrp.privates.mapper.vo.WorkContactRoomByRoomIdVo;
+import com.mokamrp.privates.mapper.vo.WorkContactRoomGroupDataVo;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 客户 - 客户群 关联表 Mapper 接口
+ * </p>
+ *
+ * @author gy
+ * @since 2021-04-21
+ */
+public interface WorkContactRoomMapper extends BaseMapper<WorkContactRoom> {
+    List<WorkContactRoomGroupDataVo> getNum(@Param("ew") EntityWrapper<WorkContactRoom> queryWrapper);
+    List<WorkContactRoomByRoomIdVo> getListByRoomId(Page<WorkContactRoomByRoomIdVo> page, @Param("ew") EntityWrapper<WorkContactRoomByRoomIdVo> queryWrapper);
+    Integer getListByRoomIdTotal(@Param("ew") EntityWrapper<WorkContactRoomByRoomIdVo> queryWrapper);
+}

+ 76 - 0
src/main/java/com/mokamrp/privates/mapper/WorkContactRoomMapper.xml

@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.mokamrp.privates.mapper.WorkContactRoomMapper">
+
+    <!-- 开启二级缓存 -->
+    <cache type="org.mybatis.caches.ehcache.LoggingEhcache"/>
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.mokamrp.privates.mapper.pojo.WorkContactRoom">
+        <id column="id" property="id" />
+        <result column="wx_user_id" property="wxUserId" />
+        <result column="contact_id" property="contactId" />
+        <result column="employee_id" property="employeeId" />
+        <result column="unionid" property="unionid" />
+        <result column="room_id" property="roomId" />
+        <result column="join_scene" property="joinScene" />
+        <result column="type" property="type" />
+        <result column="status" property="status" />
+        <result column="join_time" property="joinTime" />
+        <result column="out_time" property="outTime" />
+        <result column="created_at" property="createdAt" />
+        <result column="updated_at" property="updatedAt" />
+        <result column="deleted_at" property="deletedAt" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id, wx_user_id, contact_id, employee_id, unionid, room_id, join_scene, type, status, join_time, out_time, created_at, updated_at, deleted_at
+    </sql>
+
+    <select id="getNum"  resultType="com.mokamrp.privates.mapper.vo.WorkContactRoomGroupDataVo">
+        SELECT
+            count(*) as num,room_id
+        FROM
+            mc_work_contact_room
+        <where>
+            ${ew.sqlSegment}
+        </where>
+            group by room_id
+    </select>
+
+    <select id="getListByRoomId"  resultType="com.mokamrp.privates.mapper.vo.WorkContactRoomByRoomIdVo">
+        SELECT
+            a.id,
+            a.wx_user_id,
+            a.contact_id,
+            a.employee_id,
+            a.unionid,
+            a.room_id,
+            a.join_scene,
+            a.type,
+            a.status,
+            a.join_time,
+            a.out_time,
+            b.`name` as nick_name,
+            b.avatar
+        FROM
+            mc_work_contact_room AS a
+        LEFT JOIN mc_work_contact AS b ON b.id = a.contact_id
+        <where>
+            ${ew.sqlSegment}
+        </where>
+    </select>
+
+    <select id="getListByRoomIdTotal"  resultType="Integer">
+        SELECT
+            count(*)
+        FROM
+        mc_work_contact_room AS a
+        LEFT JOIN mc_work_contact AS b ON b.id = a.contact_id
+        <where>
+            ${ew.sqlSegment}
+        </where>
+    </select>
+
+</mapper>

+ 25 - 0
src/main/java/com/mokamrp/privates/mapper/WorkRoomMapper.java

@@ -0,0 +1,25 @@
+package com.mokamrp.privates.mapper;
+
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.mokamrp.privates.mapper.pojo.WorkContactEmployee;
+import com.mokamrp.privates.mapper.pojo.WorkRoom;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import com.mokamrp.privates.mapper.vo.WorkContactEmployeeVo;
+import com.mokamrp.privates.mapper.vo.WorkRoomVo;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 客户群表 Mapper 接口
+ * </p>
+ *
+ * @author gy
+ * @since 2021-04-21
+ */
+public interface WorkRoomMapper extends BaseMapper<WorkRoom> {
+    List<WorkRoomVo> getVoList(Page<WorkRoom> page, @Param("ew") EntityWrapper<WorkRoom> queryWrapper);
+    Integer getVoListTotal(@Param("ew") EntityWrapper<WorkRoom> queryWrapper);
+}

+ 70 - 0
src/main/java/com/mokamrp/privates/mapper/WorkRoomMapper.xml

@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.mokamrp.privates.mapper.WorkRoomMapper">
+
+    <!-- 开启二级缓存 -->
+    <cache type="org.mybatis.caches.ehcache.LoggingEhcache"/>
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.mokamrp.privates.mapper.pojo.WorkRoom">
+        <id column="id" property="id" />
+        <result column="corp_id" property="corpId" />
+        <result column="wx_chat_id" property="wxChatId" />
+        <result column="name" property="name" />
+        <result column="owner_id" property="ownerId" />
+        <result column="notice" property="notice" />
+        <result column="status" property="status" />
+        <result column="create_time" property="createTime" />
+        <result column="room_max" property="roomMax" />
+        <result column="room_group_id" property="roomGroupId" />
+        <result column="created_at" property="createdAt" />
+        <result column="updated_at" property="updatedAt" />
+        <result column="deleted_at" property="deletedAt" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id, corp_id, wx_chat_id, name, owner_id, notice, status, create_time, room_max, room_group_id, created_at, updated_at, deleted_at
+    </sql>
+
+    <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
+        FROM
+        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
+        <where>
+            ${ew.sqlSegment}
+        </where>
+        GROUP BY a.id
+    </select>
+
+    <select id="getVoListTotal"  resultType="Integer">
+        SELECT
+        count(distinct (a.id))
+        FROM
+        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
+        <where>
+            ${ew.sqlSegment}
+        </where>
+    </select>
+
+
+
+</mapper>

+ 126 - 0
src/main/java/com/mokamrp/privates/mapper/pojo/Tag.java

@@ -0,0 +1,126 @@
+package com.mokamrp.privates.mapper.pojo;
+
+import com.baomidou.mybatisplus.enums.IdType;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.enums.IdType;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 标签
+ * </p>
+ *
+ * @author gy
+ * @since 2021-04-20
+ */
+@TableName("private_tag")
+public class Tag extends Model<Tag> {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+    private Integer tagGroupId;
+    /**
+     * 标签名称
+     */
+    private String tagName;
+    private Integer status;
+    private String tagType;
+    private Integer weight;
+    /**
+     * 创建时间
+     */
+    private Integer createtime;
+    /**
+     * 更新时间
+     */
+    private Integer updatetime;
+
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public Integer getTagGroupId() {
+        return tagGroupId;
+    }
+
+    public void setTagGroupId(Integer tagGroupId) {
+        this.tagGroupId = tagGroupId;
+    }
+
+    public String getTagName() {
+        return tagName;
+    }
+
+    public void setTagName(String tagName) {
+        this.tagName = tagName;
+    }
+
+    public Integer getStatus() {
+        return status;
+    }
+
+    public void setStatus(Integer status) {
+        this.status = status;
+    }
+
+    public String getTagType() {
+        return tagType;
+    }
+
+    public void setTagType(String tagType) {
+        this.tagType = tagType;
+    }
+
+    public Integer getWeight() {
+        return weight;
+    }
+
+    public void setWeight(Integer weight) {
+        this.weight = weight;
+    }
+
+    public Integer getCreatetime() {
+        return createtime;
+    }
+
+    public void setCreatetime(Integer createtime) {
+        this.createtime = createtime;
+    }
+
+    public Integer getUpdatetime() {
+        return updatetime;
+    }
+
+    public void setUpdatetime(Integer updatetime) {
+        this.updatetime = updatetime;
+    }
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+    @Override
+    public String toString() {
+        return "Tag{" +
+        ", id=" + id +
+        ", tagGroupId=" + tagGroupId +
+        ", tagName=" + tagName +
+        ", status=" + status +
+        ", tagType=" + tagType +
+        ", weight=" + weight +
+        ", createtime=" + createtime +
+        ", updatetime=" + updatetime +
+        "}";
+    }
+}

+ 261 - 0
src/main/java/com/mokamrp/privates/mapper/pojo/WorkContactEmployee.java

@@ -0,0 +1,261 @@
+package com.mokamrp.privates.mapper.pojo;
+
+import com.baomidou.mybatisplus.enums.IdType;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.enums.IdType;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 通讯录 - 客户 中间表
+ * </p>
+ *
+ * @author gengyang
+ * @since 2021-04-17
+ */
+@TableName("mc_work_contact_employee")
+public class WorkContactEmployee extends Model<WorkContactEmployee> {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+    /**
+     * 通讯录表ID(work_employee.id)
+     */
+    private Integer employeeId;
+    /**
+     * 客户表ID(work_contact.id)
+     */
+    private Integer contactId;
+    /**
+     * 员工对此外部联系人的备注
+     */
+    private String remark;
+    /**
+     * 员工对此外部联系人的描述
+     */
+    private String description;
+    /**
+     * 员工对此客户备注的企业名称
+     */
+    private String remarkCorpName;
+    /**
+     * 员工对此客户备注的手机号码
+     */
+    private String remarkMobiles;
+    /**
+     * 表示添加客户的来源
+0
+未知来源
+1
+扫描二维码
+2
+搜索手机号
+3
+名片分享
+4
+群聊
+5
+手机通讯录
+6
+微信联系人
+7
+来自微信的添加好友申请
+8
+安装第三方应用时自动添加的客服人员
+9
+搜索邮箱
+201
+内部成员共享
+202
+管理员/负责人分配
+
+     */
+    private Integer addWay;
+    /**
+     * 发起添加的userid,如果成员主动添加,为成员的userid;如果是客户主动添加,则为客户的外部联系人userid;如果是内部成员共享/管理员分配,则为对应的成员/管理员userid
+
+     */
+    private String operUserid;
+    /**
+     * 企业自定义的state参数,用于区分客户具体是通过哪个「联系我」添加,由企业通过创建「联系我」方式指定
+
+     */
+    private String state;
+    /**
+     * 企业表ID(corp.id)
+     */
+    private Integer corpId;
+    /**
+     * 1.正常 2.删除 3.拉黑
+     */
+    private Integer status;
+    /**
+     * 员工添加此外部联系人的时间
+     */
+    private Date createTime;
+    private Date createdAt;
+    private Date updatedAt;
+    private Date deletedAt;
+
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public Integer getEmployeeId() {
+        return employeeId;
+    }
+
+    public void setEmployeeId(Integer employeeId) {
+        this.employeeId = employeeId;
+    }
+
+    public Integer getContactId() {
+        return contactId;
+    }
+
+    public void setContactId(Integer contactId) {
+        this.contactId = contactId;
+    }
+
+    public String getRemark() {
+        return remark;
+    }
+
+    public void setRemark(String remark) {
+        this.remark = remark;
+    }
+
+    public String getDescription() {
+        return description;
+    }
+
+    public void setDescription(String description) {
+        this.description = description;
+    }
+
+    public String getRemarkCorpName() {
+        return remarkCorpName;
+    }
+
+    public void setRemarkCorpName(String remarkCorpName) {
+        this.remarkCorpName = remarkCorpName;
+    }
+
+    public String getRemarkMobiles() {
+        return remarkMobiles;
+    }
+
+    public void setRemarkMobiles(String remarkMobiles) {
+        this.remarkMobiles = remarkMobiles;
+    }
+
+    public Integer getAddWay() {
+        return addWay;
+    }
+
+    public void setAddWay(Integer addWay) {
+        this.addWay = addWay;
+    }
+
+    public String getOperUserid() {
+        return operUserid;
+    }
+
+    public void setOperUserid(String operUserid) {
+        this.operUserid = operUserid;
+    }
+
+    public String getState() {
+        return state;
+    }
+
+    public void setState(String state) {
+        this.state = state;
+    }
+
+    public Integer getCorpId() {
+        return corpId;
+    }
+
+    public void setCorpId(Integer corpId) {
+        this.corpId = corpId;
+    }
+
+    public Integer getStatus() {
+        return status;
+    }
+
+    public void setStatus(Integer status) {
+        this.status = status;
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    public Date getCreatedAt() {
+        return createdAt;
+    }
+
+    public void setCreatedAt(Date createdAt) {
+        this.createdAt = createdAt;
+    }
+
+    public Date getUpdatedAt() {
+        return updatedAt;
+    }
+
+    public void setUpdatedAt(Date updatedAt) {
+        this.updatedAt = updatedAt;
+    }
+
+    public Date getDeletedAt() {
+        return deletedAt;
+    }
+
+    public void setDeletedAt(Date deletedAt) {
+        this.deletedAt = deletedAt;
+    }
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+    @Override
+    public String toString() {
+        return "WorkContactEmployee{" +
+        ", id=" + id +
+        ", employeeId=" + employeeId +
+        ", contactId=" + contactId +
+        ", remark=" + remark +
+        ", description=" + description +
+        ", remarkCorpName=" + remarkCorpName +
+        ", remarkMobiles=" + remarkMobiles +
+        ", addWay=" + addWay +
+        ", operUserid=" + operUserid +
+        ", state=" + state +
+        ", corpId=" + corpId +
+        ", status=" + status +
+        ", createTime=" + createTime +
+        ", createdAt=" + createdAt +
+        ", updatedAt=" + updatedAt +
+        ", deletedAt=" + deletedAt +
+        "}";
+    }
+}

+ 210 - 0
src/main/java/com/mokamrp/privates/mapper/pojo/WorkContactRoom.java

@@ -0,0 +1,210 @@
+package com.mokamrp.privates.mapper.pojo;
+
+import com.baomidou.mybatisplus.enums.IdType;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.enums.IdType;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 客户 - 客户群 关联表
+ * </p>
+ *
+ * @author gy
+ * @since 2021-04-21
+ */
+@TableName("mc_work_contact_room")
+public class WorkContactRoom extends Model<WorkContactRoom> {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+    private String wxUserId;
+    /**
+     * 客户表id(work_contact.id)
+     */
+    private Integer contactId;
+    /**
+     * 员工ID (work_employee.id)
+     */
+    private Integer employeeId;
+    /**
+     * 仅当群成员类型是微信用户(包括企业成员未添加好友),且企业或第三方服务商绑定了微信开发者ID有此字段
+     */
+    private String unionid;
+    /**
+     * 客户群表id(work_room.id)
+     */
+    private Integer roomId;
+    /**
+     * 入群方式1 - 由成员邀请入群(直接邀请入群)2 - 由成员邀请入群(通过邀请链接入群)3 - 通过扫描群二维码入群
+1 - 由成员邀请入群(直接邀请入群)
+2 - 由成员邀请入群(通过邀请链接入群)
+3 - 通过扫描群二维码入群
+     */
+    private Integer joinScene;
+    /**
+     * 成员类型(1 - 企业成员 2 - 外部联系人)
+1 - 企业成员
+2 - 外部联系人
+     */
+    private Integer type;
+    /**
+     * 成员状态。1 - 正常2 -退群
+     */
+    private Integer status;
+    /**
+     * 入群时间
+     */
+    private Date joinTime;
+    /**
+     * 退群时间
+     */
+    private String outTime;
+    private Date createdAt;
+    private Date updatedAt;
+    private Date deletedAt;
+
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public String getWxUserId() {
+        return wxUserId;
+    }
+
+    public void setWxUserId(String wxUserId) {
+        this.wxUserId = wxUserId;
+    }
+
+    public Integer getContactId() {
+        return contactId;
+    }
+
+    public void setContactId(Integer contactId) {
+        this.contactId = contactId;
+    }
+
+    public Integer getEmployeeId() {
+        return employeeId;
+    }
+
+    public void setEmployeeId(Integer employeeId) {
+        this.employeeId = employeeId;
+    }
+
+    public String getUnionid() {
+        return unionid;
+    }
+
+    public void setUnionid(String unionid) {
+        this.unionid = unionid;
+    }
+
+    public Integer getRoomId() {
+        return roomId;
+    }
+
+    public void setRoomId(Integer roomId) {
+        this.roomId = roomId;
+    }
+
+    public Integer getJoinScene() {
+        return joinScene;
+    }
+
+    public void setJoinScene(Integer joinScene) {
+        this.joinScene = joinScene;
+    }
+
+    public Integer getType() {
+        return type;
+    }
+
+    public void setType(Integer type) {
+        this.type = type;
+    }
+
+    public Integer getStatus() {
+        return status;
+    }
+
+    public void setStatus(Integer status) {
+        this.status = status;
+    }
+
+    public Date getJoinTime() {
+        return joinTime;
+    }
+
+    public void setJoinTime(Date joinTime) {
+        this.joinTime = joinTime;
+    }
+
+    public String getOutTime() {
+        return outTime;
+    }
+
+    public void setOutTime(String outTime) {
+        this.outTime = outTime;
+    }
+
+    public Date getCreatedAt() {
+        return createdAt;
+    }
+
+    public void setCreatedAt(Date createdAt) {
+        this.createdAt = createdAt;
+    }
+
+    public Date getUpdatedAt() {
+        return updatedAt;
+    }
+
+    public void setUpdatedAt(Date updatedAt) {
+        this.updatedAt = updatedAt;
+    }
+
+    public Date getDeletedAt() {
+        return deletedAt;
+    }
+
+    public void setDeletedAt(Date deletedAt) {
+        this.deletedAt = deletedAt;
+    }
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+    @Override
+    public String toString() {
+        return "WorkContactRoom{" +
+        ", id=" + id +
+        ", wxUserId=" + wxUserId +
+        ", contactId=" + contactId +
+        ", employeeId=" + employeeId +
+        ", unionid=" + unionid +
+        ", roomId=" + roomId +
+        ", joinScene=" + joinScene +
+        ", type=" + type +
+        ", status=" + status +
+        ", joinTime=" + joinTime +
+        ", outTime=" + outTime +
+        ", createdAt=" + createdAt +
+        ", updatedAt=" + updatedAt +
+        ", deletedAt=" + deletedAt +
+        "}";
+    }
+}

+ 195 - 0
src/main/java/com/mokamrp/privates/mapper/pojo/WorkRoom.java

@@ -0,0 +1,195 @@
+package com.mokamrp.privates.mapper.pojo;
+
+import com.baomidou.mybatisplus.enums.IdType;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.enums.IdType;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 客户群表
+ * </p>
+ *
+ * @author gy
+ * @since 2021-04-21
+ */
+@TableName("mc_work_room")
+public class WorkRoom extends Model<WorkRoom> {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+    /**
+     * 企业表ID(mc_corp.id)
+     */
+    private Integer corpId;
+    /**
+     * 客户群ID
+     */
+    private String wxChatId;
+    /**
+     * 客户群名称
+     */
+    private String name;
+    /**
+     * 群主ID(work_employee.id)
+     */
+    private Integer ownerId;
+    /**
+     * 群公告
+     */
+    private String notice;
+    /**
+     * 客户群状态(0 - 正常 1 - 跟进人离职 2 - 离职继承中 3 - 离职继承完成)
+     */
+    private Integer status;
+    /**
+     * 群创建时间
+     */
+    private Date createTime;
+    /**
+     * 群成员上限
+     */
+    private Integer roomMax;
+    /**
+     * 分组id(work_room_group.id)
+     */
+    private Integer roomGroupId;
+    private Date createdAt;
+    private Date updatedAt;
+    private Date deletedAt;
+
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public Integer getCorpId() {
+        return corpId;
+    }
+
+    public void setCorpId(Integer corpId) {
+        this.corpId = corpId;
+    }
+
+    public String getWxChatId() {
+        return wxChatId;
+    }
+
+    public void setWxChatId(String wxChatId) {
+        this.wxChatId = wxChatId;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public Integer getOwnerId() {
+        return ownerId;
+    }
+
+    public void setOwnerId(Integer ownerId) {
+        this.ownerId = ownerId;
+    }
+
+    public String getNotice() {
+        return notice;
+    }
+
+    public void setNotice(String notice) {
+        this.notice = notice;
+    }
+
+    public Integer getStatus() {
+        return status;
+    }
+
+    public void setStatus(Integer status) {
+        this.status = status;
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    public Integer getRoomMax() {
+        return roomMax;
+    }
+
+    public void setRoomMax(Integer roomMax) {
+        this.roomMax = roomMax;
+    }
+
+    public Integer getRoomGroupId() {
+        return roomGroupId;
+    }
+
+    public void setRoomGroupId(Integer roomGroupId) {
+        this.roomGroupId = roomGroupId;
+    }
+
+    public Date getCreatedAt() {
+        return createdAt;
+    }
+
+    public void setCreatedAt(Date createdAt) {
+        this.createdAt = createdAt;
+    }
+
+    public Date getUpdatedAt() {
+        return updatedAt;
+    }
+
+    public void setUpdatedAt(Date updatedAt) {
+        this.updatedAt = updatedAt;
+    }
+
+    public Date getDeletedAt() {
+        return deletedAt;
+    }
+
+    public void setDeletedAt(Date deletedAt) {
+        this.deletedAt = deletedAt;
+    }
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+    @Override
+    public String toString() {
+        return "WorkRoom{" +
+        ", id=" + id +
+        ", corpId=" + corpId +
+        ", wxChatId=" + wxChatId +
+        ", name=" + name +
+        ", ownerId=" + ownerId +
+        ", notice=" + notice +
+        ", status=" + status +
+        ", createTime=" + createTime +
+        ", roomMax=" + roomMax +
+        ", roomGroupId=" + roomGroupId +
+        ", createdAt=" + createdAt +
+        ", updatedAt=" + updatedAt +
+        ", deletedAt=" + deletedAt +
+        "}";
+    }
+}

+ 131 - 0
src/main/java/com/mokamrp/privates/mapper/vo/WorkContactEmployeeVo.java

@@ -0,0 +1,131 @@
+package com.mokamrp.privates.mapper.vo;
+
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableName;
+import com.baomidou.mybatisplus.enums.IdType;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 通讯录 - 客户 中间表
+ * </p>
+ *
+ * @author gengyang
+ * @since 2021-04-17
+ */
+public class WorkContactEmployeeVo{
+
+    private Integer id;
+    private String client_name;
+    private Integer client_status;
+    private Integer channel_code_id;
+    private Date client_deleted_at;
+    private Date client_created_at;
+    private Integer client_unionid;
+    private String employee_name;
+    private String company_name;
+    private String channel_code_name;
+    private String state;
+    private String remark;
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public String getClient_name() {
+        return client_name;
+    }
+
+    public void setClient_name(String client_name) {
+        this.client_name = client_name;
+    }
+
+    public Integer getClient_status() {
+        return client_status;
+    }
+
+    public void setClient_status(Integer client_status) {
+        this.client_status = client_status;
+    }
+
+    public Integer getChannel_code_id() {
+        return channel_code_id;
+    }
+
+    public void setChannel_code_id(Integer channel_code_id) {
+        this.channel_code_id = channel_code_id;
+    }
+
+    public Date getClient_deleted_at() {
+        return client_deleted_at;
+    }
+
+    public void setClient_deleted_at(Date client_deleted_at) {
+        this.client_deleted_at = client_deleted_at;
+    }
+
+    public Date getClient_created_at() {
+        return client_created_at;
+    }
+
+    public void setClient_created_at(Date client_created_at) {
+        this.client_created_at = client_created_at;
+    }
+
+    public Integer getClient_unionid() {
+        return client_unionid;
+    }
+
+    public void setClient_unionid(Integer client_unionid) {
+        this.client_unionid = client_unionid;
+    }
+
+    public String getEmployee_name() {
+        return employee_name;
+    }
+
+    public void setEmployee_name(String employee_name) {
+        this.employee_name = employee_name;
+    }
+
+    public String getCompany_name() {
+        return company_name;
+    }
+
+    public void setCompany_name(String company_name) {
+        this.company_name = company_name;
+    }
+
+    public String getChannel_code_name() {
+        return channel_code_name;
+    }
+
+    public void setChannel_code_name(String channel_code_name) {
+        this.channel_code_name = channel_code_name;
+    }
+
+    public String getState() {
+        return state;
+    }
+
+    public void setState(String state) {
+        this.state = state;
+    }
+
+    public String getRemark() {
+        return remark;
+    }
+
+    public void setRemark(String remark) {
+        this.remark = remark;
+    }
+
+
+}

+ 133 - 0
src/main/java/com/mokamrp/privates/mapper/vo/WorkContactRoomByRoomIdVo.java

@@ -0,0 +1,133 @@
+package com.mokamrp.privates.mapper.vo;
+
+/**
+ * <p>
+ * 通讯录 - 客户 中间表
+ * </p>
+ *
+ * @author gengyang
+ * @since 2021-04-17
+ */
+public class WorkContactRoomByRoomIdVo {
+
+    private Integer id;
+    private String wx_user_id;
+    private Integer contact_id;
+    private Integer employee_id;
+    private String unionid;
+    private Integer room_id;
+    private Integer join_scene;
+    private Integer type;
+    private Integer status;
+    private String join_time;
+    private String out_time;
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public String getWx_user_id() {
+        return wx_user_id;
+    }
+
+    public void setWx_user_id(String wx_user_id) {
+        this.wx_user_id = wx_user_id;
+    }
+
+    public Integer getContact_id() {
+        return contact_id;
+    }
+
+    public void setContact_id(Integer contact_id) {
+        this.contact_id = contact_id;
+    }
+
+    public Integer getEmployee_id() {
+        return employee_id;
+    }
+
+    public void setEmployee_id(Integer employee_id) {
+        this.employee_id = employee_id;
+    }
+
+    public String getUnionid() {
+        return unionid;
+    }
+
+    public void setUnionid(String unionid) {
+        this.unionid = unionid;
+    }
+
+    public Integer getRoom_id() {
+        return room_id;
+    }
+
+    public void setRoom_id(Integer room_id) {
+        this.room_id = room_id;
+    }
+
+    public Integer getJoin_scene() {
+        return join_scene;
+    }
+
+    public void setJoin_scene(Integer join_scene) {
+        this.join_scene = join_scene;
+    }
+
+    public Integer getType() {
+        return type;
+    }
+
+    public void setType(Integer type) {
+        this.type = type;
+    }
+
+    public Integer getStatus() {
+        return status;
+    }
+
+    public void setStatus(Integer status) {
+        this.status = status;
+    }
+
+    public String getJoin_time() {
+        return join_time;
+    }
+
+    public void setJoin_time(String join_time) {
+        this.join_time = join_time;
+    }
+
+    public String getOut_time() {
+        return out_time;
+    }
+
+    public void setOut_time(String out_time) {
+        this.out_time = out_time;
+    }
+
+    public String getNick_name() {
+        return nick_name;
+    }
+
+    public void setNick_name(String nick_name) {
+        this.nick_name = nick_name;
+    }
+
+    public String getAvatar() {
+        return avatar;
+    }
+
+    public void setAvatar(String avatar) {
+        this.avatar = avatar;
+    }
+
+    private String nick_name;
+    private String avatar;
+
+
+}

+ 143 - 0
src/main/java/com/mokamrp/privates/mapper/vo/WorkContactRoomData.java

@@ -0,0 +1,143 @@
+package com.mokamrp.privates.mapper.vo;
+
+import java.util.Date;
+
+/**
+ * <p>
+ * 通讯录 - 客户 中间表
+ * </p>
+ *
+ * @author gengyang
+ * @since 2021-04-17
+ */
+public class WorkContactRoomData {
+
+    private Integer id;
+    private Integer corp_id;
+    private String wx_chat_id;
+    private String name;
+    private Integer owner_id;
+    private String notice;
+    private Integer status;
+    private Date create_time;
+    private Integer room_max;
+    private Date deleted_at;
+    private Integer company_group_id;
+    private String corp_name;
+    private String employee_name;
+
+    public String getTag_names() {
+        return tag_names;
+    }
+
+    public void setTag_names(String tag_names) {
+        this.tag_names = tag_names;
+    }
+
+    private String tag_names;
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public Integer getCorp_id() {
+        return corp_id;
+    }
+
+    public void setCorp_id(Integer corp_id) {
+        this.corp_id = corp_id;
+    }
+
+    public String getWx_chat_id() {
+        return wx_chat_id;
+    }
+
+    public void setWx_chat_id(String wx_chat_id) {
+        this.wx_chat_id = wx_chat_id;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public Integer getOwner_id() {
+        return owner_id;
+    }
+
+    public void setOwner_id(Integer owner_id) {
+        this.owner_id = owner_id;
+    }
+
+    public String getNotice() {
+        return notice;
+    }
+
+    public void setNotice(String notice) {
+        this.notice = notice;
+    }
+
+    public Integer getStatus() {
+        return status;
+    }
+
+    public void setStatus(Integer status) {
+        this.status = status;
+    }
+
+    public Date getCreate_time() {
+        return create_time;
+    }
+
+    public void setCreate_time(Date create_time) {
+        this.create_time = create_time;
+    }
+
+    public Integer getRoom_max() {
+        return room_max;
+    }
+
+    public void setRoom_max(Integer room_max) {
+        this.room_max = room_max;
+    }
+
+    public Date getDeleted_at() {
+        return deleted_at;
+    }
+
+    public void setDeleted_at(Date deleted_at) {
+        this.deleted_at = deleted_at;
+    }
+
+    public Integer getCompany_group_id() {
+        return company_group_id;
+    }
+
+    public void setCompany_group_id(Integer company_group_id) {
+        this.company_group_id = company_group_id;
+    }
+
+    public String getCorp_name() {
+        return corp_name;
+    }
+
+    public void setCorp_name(String corp_name) {
+        this.corp_name = corp_name;
+    }
+
+    public String getEmployee_name() {
+        return employee_name;
+    }
+
+    public void setEmployee_name(String employee_name) {
+        this.employee_name = employee_name;
+    }
+
+}

+ 35 - 0
src/main/java/com/mokamrp/privates/mapper/vo/WorkContactRoomGroupDataVo.java

@@ -0,0 +1,35 @@
+package com.mokamrp.privates.mapper.vo;
+
+import java.util.Date;
+
+/**
+ * <p>
+ * 通讯录 - 客户 中间表
+ * </p>
+ *
+ * @author gengyang
+ * @since 2021-04-17
+ */
+public class WorkContactRoomGroupDataVo{
+
+    private Integer num;
+    private Integer room_id;
+
+    public Integer getNum() {
+        return num;
+    }
+
+    public void setNum(Integer num) {
+        this.num = num;
+    }
+
+    public Integer getRoom_id() {
+        return room_id;
+    }
+
+    public void setRoom_id(Integer room_id) {
+        this.room_id = room_id;
+    }
+
+
+}

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

@@ -0,0 +1,174 @@
+package com.mokamrp.privates.mapper.vo;
+
+import java.util.Date;
+
+/**
+ * <p>
+ * 通讯录 - 客户 中间表
+ * </p>
+ *
+ * @author gengyang
+ * @since 2021-04-17
+ */
+public class WorkRoomVo {
+
+    private Integer id;
+    private Integer corp_id;
+    private String wx_chat_id;
+    private String name;
+    private Integer owner_id;
+    private String notice;
+    private Integer status;
+    private Date create_time;
+    private Integer room_max;
+    private Date deleted_at;
+
+    public Integer getTotal_num() {
+        return total_num;
+    }
+
+    public void setTotal_num(Integer total_num) {
+        this.total_num = total_num;
+    }
+
+    public Integer getAdd_num() {
+        return add_num;
+    }
+
+    public void setAdd_num(Integer add_num) {
+        this.add_num = add_num;
+    }
+
+    public Integer getLeft_num() {
+        return left_num;
+    }
+
+    public void setLeft_num(Integer delete_num) {
+        this.left_num = delete_num;
+    }
+
+    private Integer company_group_id;
+    private String corp_name;
+
+    private String employee_name;
+    private Integer total_num;
+    private Integer add_num;
+    private Integer left_num;
+
+    public String getTag_names() {
+        return tag_names;
+    }
+
+    public void setTag_names(String tag_names) {
+        this.tag_names = tag_names;
+    }
+
+    private String tag_names;
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public Integer getCorp_id() {
+        return corp_id;
+    }
+
+    public void setCorp_id(Integer corp_id) {
+        this.corp_id = corp_id;
+    }
+
+    public String getWx_chat_id() {
+        return wx_chat_id;
+    }
+
+    public void setWx_chat_id(String wx_chat_id) {
+        this.wx_chat_id = wx_chat_id;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public Integer getOwner_id() {
+        return owner_id;
+    }
+
+    public void setOwner_id(Integer owner_id) {
+        this.owner_id = owner_id;
+    }
+
+    public String getNotice() {
+        return notice;
+    }
+
+    public void setNotice(String notice) {
+        this.notice = notice;
+    }
+
+    public Integer getStatus() {
+        return status;
+    }
+
+    public void setStatus(Integer status) {
+        this.status = status;
+    }
+
+    public Date getCreate_time() {
+        return create_time;
+    }
+
+    public void setCreate_time(Date create_time) {
+        this.create_time = create_time;
+    }
+
+    public Integer getRoom_max() {
+        return room_max;
+    }
+
+    public void setRoom_max(Integer room_max) {
+        this.room_max = room_max;
+    }
+
+    public Date getDeleted_at() {
+        return deleted_at;
+    }
+
+    public void setDeleted_at(Date deleted_at) {
+        this.deleted_at = deleted_at;
+    }
+
+    public Integer getCompany_group_id() {
+        return company_group_id;
+    }
+
+    public void setCompany_group_id(Integer company_group_id) {
+        this.company_group_id = company_group_id;
+    }
+
+    public String getCorp_name() {
+        return corp_name;
+    }
+
+    public void setCorp_name(String corp_name) {
+        this.corp_name = corp_name;
+    }
+
+    public String getEmployee_name() {
+        return employee_name;
+    }
+
+    public void setEmployee_name(String employee_name) {
+        this.employee_name = employee_name;
+    }
+
+
+
+}

+ 24 - 0
src/main/java/com/mokamrp/privates/service/TagService.java

@@ -0,0 +1,24 @@
+package com.mokamrp.privates.service;
+
+import com.mokamrp.privates.mapper.pojo.Tag;
+import com.baomidou.mybatisplus.service.IService;
+import com.mokamrp.privates.entity.IndexHandle;
+import com.mokamrp.privates.mapper.pojo.IndexBaseRes;
+import java.util.List;
+
+/**
+ * <p>
+ * 标签 服务类
+ * </p>
+ *
+ * @author gy
+ * @since 2021-04-20
+ */
+public interface TagService extends IService<Tag> {
+    /**
+     * 基础sql操作方法
+     * @author leon 支持分页offset,limit;简单条件like,=,<>;排序order,sort
+     * @since 1949-10-01
+     */
+    public IndexBaseRes<Tag> base(IndexHandle indexhandle);
+}

+ 32 - 0
src/main/java/com/mokamrp/privates/service/WorkContactEmployeeService.java

@@ -0,0 +1,32 @@
+package com.mokamrp.privates.service;
+
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.mokamrp.privates.mapper.pojo.WorkContactEmployee;
+import com.baomidou.mybatisplus.service.IService;
+import com.mokamrp.privates.mapper.vo.WorkContactEmployeeVo;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 通讯录 - 客户 中间表 服务类
+ * </p>
+ *
+ * @author gengyang
+ * @since 2021-04-17
+ */
+public interface WorkContactEmployeeService extends IService<WorkContactEmployee> {
+
+
+    Map<String, Object> getPageList(Integer gender, Integer status,
+                                    Integer pagesize, Integer page, String name,
+                                    Integer start_deleted_at, Integer end_deleted_at,
+                                    Integer start_created_at, Integer end_created_at,
+                                    Integer group_id,
+                                    Integer corp_id, List employee_id,List tag_id , Integer channel_code_id);
+
+}

+ 21 - 0
src/main/java/com/mokamrp/privates/service/WorkContactRoomService.java

@@ -0,0 +1,21 @@
+package com.mokamrp.privates.service;
+
+import com.mokamrp.privates.entity.IndexHandle;
+import com.mokamrp.privates.mapper.pojo.WorkContactRoom;
+import com.baomidou.mybatisplus.service.IService;
+import org.springframework.validation.BindingResult;
+import java.util.Map;
+
+/**
+ * <p>
+ * 客户 - 客户群 关联表 服务类
+ * </p>
+ *
+ * @author gy
+ * @since 2021-04-21
+ */
+public interface WorkContactRoomService extends IService<WorkContactRoom> {
+
+    public Map<String, Object> getPageList(IndexHandle indexHandle, BindingResult bindingResult);
+
+}

+ 24 - 0
src/main/java/com/mokamrp/privates/service/WorkRoomService.java

@@ -0,0 +1,24 @@
+package com.mokamrp.privates.service;
+
+import com.mokamrp.privates.mapper.pojo.WorkRoom;
+import com.baomidou.mybatisplus.service.IService;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 客户群表 服务类
+ * </p>
+ *
+ * @author gy
+ * @since 2021-04-21
+ */
+public interface WorkRoomService extends IService<WorkRoom> {
+   public Map<String, Object> getPageList(Integer pagesize, Integer page,
+                                          String name, Integer corp_id,
+                                          String start_create_time, String end_create_time,
+                                          String wx_chat_id, Integer corp_group_id,
+                                          List owner_id, List tag_id );
+
+}

+ 71 - 0
src/main/java/com/mokamrp/privates/service/impl/TagServiceImpl.java

@@ -0,0 +1,71 @@
+package com.mokamrp.privates.service.impl;
+
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.mapper.Wrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.mokamrp.privates.mapper.pojo.Tag;
+import com.mokamrp.privates.mapper.TagMapper;
+import com.mokamrp.privates.service.TagService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+import com.mokamrp.privates.entity.IndexHandle;
+import com.mokamrp.privates.mapper.pojo.IndexBaseRes;
+
+import java.util.Iterator;
+import java.util.Map;
+
+/**
+ * <p>
+ * 标签 服务实现类
+ * </p>
+ *
+ * @author gy
+ * @since 2021-04-20
+ */
+@Service
+public class TagServiceImpl extends ServiceImpl<TagMapper, Tag> implements TagService {
+    /**
+     * 基础sql操作方法
+     * @author leon 支持分页offset,limit;简单条件like,=,<>;排序order,sort
+     * @since 1949-10-01
+     */
+    public IndexBaseRes<Tag> base(IndexHandle indexhandle){
+        Integer total = this.selectCount(new EntityWrapper<Tag>());
+        Iterator fileterIt = indexhandle.getFilter().entrySet().iterator();
+        Wrapper<Tag> warpper = new EntityWrapper<Tag>();
+        //.@leon where like,=,<>
+        while (fileterIt.hasNext()){
+            Map.Entry entray = (Map.Entry) fileterIt.next();
+            Object key = entray.getKey();
+            Object value = entray.getValue();
+            Map<String,String> op = indexhandle.getOp();
+            if(op.get(key) == null || op.get(key).isEmpty() || op.get(key).toString().equals("=")){
+                warpper = warpper.eq(key.toString(),value.toString());
+            }else if (op.get(key).toString().equals("like")){
+                warpper = warpper.like(key.toString(),"%"+value.toString()+"%");
+            }else if (op.get(key).toString().equals("<>")){
+                warpper = warpper.ne(key.toString(),value.toString());
+            }
+        }
+        //.@leon order
+        if (indexhandle.getOrder() != null && indexhandle.getSort() != null){
+            String order = indexhandle.getOrder();
+            String sort = indexhandle.getSort();
+            if (!order.isEmpty() && !sort.isEmpty()){
+                if (order.equals("asc")){
+                    warpper = warpper.orderBy(sort,true);
+                }else if(order.equals("desc")){
+                    warpper = warpper.orderBy(sort,false);
+                }
+            }
+        }
+        //.@leon offset limit
+        Page<Tag> page = this.selectPage(
+            new Page<Tag>(indexhandle.getOffset(),indexhandle.getLimit()),warpper
+        );
+        IndexBaseRes<Tag> result = new IndexBaseRes<Tag>();
+        result.setList(page.getRecords());
+        result.setTotal(total);
+        return result;
+    }
+}

+ 95 - 0
src/main/java/com/mokamrp/privates/service/impl/WorkContactEmployeeServiceImpl.java

@@ -0,0 +1,95 @@
+package com.mokamrp.privates.service.impl;
+
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.mokamrp.privates.mapper.CorpMapper;
+import com.mokamrp.privates.mapper.pojo.WorkContactEmployee;
+import com.mokamrp.privates.mapper.WorkContactEmployeeMapper;
+import com.mokamrp.privates.mapper.vo.WorkContactEmployeeVo;
+import com.mokamrp.privates.service.WorkContactEmployeeService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 通讯录 - 客户 中间表 服务实现类
+ * </p>
+ *
+ * @author gengyang
+ * @since 2021-04-17
+ */
+@Service
+public class WorkContactEmployeeServiceImpl extends ServiceImpl<WorkContactEmployeeMapper, WorkContactEmployee> implements WorkContactEmployeeService {
+
+
+    @Autowired
+    private WorkContactEmployeeMapper mapperObj  ;
+
+    @Override
+    public Map<String, Object> getPageList(Integer gender, Integer status,
+                                    Integer pagesize, Integer page, String name,
+                                    Integer start_deleted_at, Integer end_deleted_at,
+                                    Integer start_created_at, Integer end_created_at,
+                                    Integer group_id,
+                                    Integer corp_id, List employee_id, List tag_id , Integer channel_code_id){
+
+        Page<WorkContactEmployeeVo> pageObj = new Page<>(page, pagesize);
+        EntityWrapper<WorkContactEmployee> obj = new EntityWrapper<WorkContactEmployee>();
+
+        if(name != ""){
+            obj.like("c.name",name);
+        }
+
+        if(gender != null){
+            obj.eq("c.gender",gender);
+        }
+
+        if(status != null) {
+            obj.eq("a.`status`", status);
+        }
+
+        if(channel_code_id != null) {
+            obj.eq("a.channel_code_id", channel_code_id);
+        }
+
+        if(start_deleted_at != null) {
+            obj.ge("c.deleted_at", start_deleted_at);
+        }
+
+        if(end_created_at != null) {
+            obj.le("c.deleted_at", end_deleted_at);
+        }
+
+        if(start_created_at != null) {
+            obj.ge("c.created_at", start_created_at);
+        }
+
+        if(end_created_at != null) {
+            obj.le("c.created_at", end_created_at);
+        }
+        if(corp_id != null) {
+            obj.eq("a.corp_id", corp_id);
+        }
+        if(employee_id !=null) {
+            obj.in("a.employee_id", employee_id);
+        }
+
+        List<WorkContactEmployeeVo> list = mapperObj.getVoList(pageObj,obj);
+
+        Integer total = mapperObj.getVoListTotal(obj);
+
+        Map<String, Object> resMap = new HashMap<String,Object>();
+
+        resMap.put("list",list);
+        resMap.put("total",total);
+
+        return resMap;
+    }
+
+}

+ 88 - 0
src/main/java/com/mokamrp/privates/service/impl/WorkContactRoomServiceImpl.java

@@ -0,0 +1,88 @@
+package com.mokamrp.privates.service.impl;
+
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.mokamrp.privates.constant.HttpStatus;
+import com.mokamrp.privates.entity.IndexHandle;
+import com.mokamrp.privates.help.AjaxResult;
+import com.mokamrp.privates.mapper.pojo.WorkContactRoom;
+import com.mokamrp.privates.mapper.WorkContactRoomMapper;
+import com.mokamrp.privates.mapper.vo.WorkContactRoomByRoomIdVo;
+import com.mokamrp.privates.service.WorkContactRoomService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.mokamrp.privates.utils.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.validation.BindingResult;
+
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 客户 - 客户群 关联表 服务实现类
+ * </p>
+ *
+ * @author gy
+ * @since 2021-04-21
+ */
+@Service
+public class WorkContactRoomServiceImpl extends ServiceImpl<WorkContactRoomMapper, WorkContactRoom> implements WorkContactRoomService {
+
+    @Autowired
+    private WorkContactRoomMapper mapperObj;
+
+    @Override
+    public Map<String, Object> getPageList(IndexHandle indexHandle, BindingResult bindingResult){
+
+        if(bindingResult.hasErrors()){
+            return AjaxResult.error(HttpStatus.ERROR,bindingResult.getFieldError().getDefaultMessage());
+        }
+
+        Iterator fileterIt = indexHandle.getFilter().entrySet().iterator();
+        EntityWrapper<WorkContactRoomByRoomIdVo> warpper = new EntityWrapper<WorkContactRoomByRoomIdVo>();
+        //.@leon where like,=,<>
+        while (fileterIt.hasNext()){
+            Map.Entry entray = (Map.Entry) fileterIt.next();
+            Object key = entray.getKey();
+            Object value = entray.getValue();
+            Map<String,String> op = indexHandle.getOp();
+            //.这里sql字段需要驼峰转下划线
+            if(op.get(key) == null || op.get(key).isEmpty() || op.get(key).toString().equals("=")){
+                warpper.eq(StringUtils.humpToLine2(key.toString()),value.toString());
+            }else if (op.get(key).toString().equals("like")){
+                warpper.like(StringUtils.humpToLine2(key.toString()),"%"+value.toString()+"%");
+            }else if (op.get(key).toString().equals("<>")){
+                warpper.ne(StringUtils.humpToLine2(key.toString()),value.toString());
+            }
+        }
+
+        //.统计数量
+        Integer total = mapperObj.getListByRoomIdTotal(warpper);
+        if (indexHandle.getOrder() != null && indexHandle.getSort() != null){
+            String order = indexHandle.getOrder();
+            String sort = indexHandle.getSort();
+            if (!order.isEmpty() && !sort.isEmpty()){
+                if (order.equals("asc")){
+                    warpper.orderBy(sort,true);
+                }else if(order.equals("desc")){
+                    warpper.orderBy(sort,false);
+                }
+            }
+        }
+
+        List<WorkContactRoomByRoomIdVo> page = mapperObj.getListByRoomId(
+                new Page<WorkContactRoomByRoomIdVo>(indexHandle.getOffset(),indexHandle.getLimit()),warpper
+        );
+
+        Map<String, Object> resMap = new HashMap<String,Object>();
+        resMap.put("list",page);
+        resMap.put("total",total);
+
+        return resMap;
+    }
+
+
+}

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

@@ -0,0 +1,202 @@
+package com.mokamrp.privates.service.impl;
+
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.mokamrp.privates.mapper.WorkContactRoomMapper;
+import com.mokamrp.privates.mapper.pojo.WorkContactRoom;
+import com.mokamrp.privates.mapper.pojo.WorkRoom;
+import com.mokamrp.privates.mapper.WorkRoomMapper;
+import com.mokamrp.privates.mapper.vo.WorkContactRoomGroupDataVo;
+import com.mokamrp.privates.mapper.vo.WorkRoomVo;
+import com.mokamrp.privates.service.WorkRoomService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * <p>
+ * 客户群表 服务实现类
+ * </p>
+ *
+ * @author gy
+ * @since 2021-04-21
+ */
+@Service
+public class WorkRoomServiceImpl extends ServiceImpl<WorkRoomMapper, WorkRoom> implements WorkRoomService {
+
+    @Autowired
+    private WorkRoomMapper mapperObj;
+
+    @Autowired
+    private WorkContactRoomMapper contanctMapperObj;
+
+    @Override
+    public Map<String, Object> getPageList(Integer pagesize, Integer page,
+                                           String name, Integer corp_id,
+                                           String start_create_time, String end_create_time,
+                                           String wx_chat_id, Integer corp_group_id,
+                                           List owner_id, List tag_id ){
+
+
+
+        Page<WorkRoom> pageObj = new Page<>(page, pagesize);
+        EntityWrapper<WorkRoom> obj = new EntityWrapper<WorkRoom>();
+
+        if(name != null && !"".equals(name)){
+            obj.like("a.name",name);
+        }
+
+        if(corp_id != null){
+            obj.eq("a.corp_id",corp_id);
+        }
+
+        if(start_create_time != null && !"".equals(start_create_time)) {
+            obj.ge("a.create_time", start_create_time);
+        }
+
+        if(end_create_time != null && !"".equals(end_create_time)) {
+            obj.le("a.create_time", end_create_time);
+        }
+
+        if(owner_id !=null) {
+            obj.in("a.owner_id", owner_id);
+        }
+
+        if(tag_id !=null) {
+            obj.in("f.tag_id", tag_id);
+        }
+
+        if(corp_id != null){
+            obj.eq("a.corp_id",owner_id);
+        }
+
+        if(corp_group_id != null){
+            obj.eq("c.group_id",corp_group_id);
+        }
+
+        if(wx_chat_id != null && !"".equals(wx_chat_id)){
+            obj.eq("a.wx_chat_id",wx_chat_id);
+        }
+
+        List<WorkRoomVo> list = mapperObj.getVoList(pageObj,obj);
+        Integer total = mapperObj.getVoListTotal(obj);
+        System.out.println("数据总数");
+        System.out.println(total);
+
+        if(list.size() > 0 ) {
+
+
+            List<Integer> ids = list.stream().map(WorkRoomVo -> WorkRoomVo.getId()).collect(Collectors.toList());
+            HashMap<Integer ,HashMap<String,Integer >> dataById  = getDataById(ids);
+
+
+            System.out.println(dataById);
+            if(dataById.size() > 0){
+                list=list.stream().map(WorkRwoomVo -> {
+                    WorkRoomVo detail = new WorkRoomVo();
+                    BeanUtils.copyProperties(WorkRwoomVo, detail);
+                    if(dataById.get(detail.getId()) != null){
+                        ;
+                        detail.setTotal_num((dataById.get(detail.getId()).get("total")));
+                        detail.setAdd_num(dataById.get(detail.getId()).get("add_num"));
+                        detail.setLeft_num(dataById.get(detail.getId()).get("left_num"));
+
+                    }
+
+                    return detail;
+                }).collect(Collectors.toList());
+            }
+        }
+
+
+        Map<String, Object> resMap = new HashMap<String,Object>();
+
+        resMap.put("list",list);
+        resMap.put("total",total);
+
+        return resMap;
+    }
+
+    private HashMap<Integer ,HashMap<String,Integer >> getDataById(List<Integer> ids){
+
+        String todayStartDate = (new SimpleDateFormat("yyyy-MM-dd 00:00:00")).format(new Date());
+        String todayEndDate = (new SimpleDateFormat("yyyy-MM-dd 23:59:59")).format(new Date());
+
+        //获取数据 群人数 ,当日新增,当日离开
+        EntityWrapper<WorkContactRoom> contactRoomEntityWrapperTotal = new EntityWrapper<WorkContactRoom>();
+        EntityWrapper<WorkContactRoom> contactRoomEntityWrapperTodayAdd = new EntityWrapper<WorkContactRoom>();
+        EntityWrapper<WorkContactRoom> contactRoomEntityWrapperTodayLeft = new EntityWrapper<WorkContactRoom>();
+        contactRoomEntityWrapperTotal.in("room_id", ids);
+        contactRoomEntityWrapperTotal.eq("status", 1);
+
+        contactRoomEntityWrapperTodayAdd.in("room_id", ids);
+        contactRoomEntityWrapperTodayAdd.eq("status", 1);
+        contactRoomEntityWrapperTodayAdd.le("join_time", todayEndDate);
+        contactRoomEntityWrapperTodayAdd.ge("join_time", todayStartDate);//大于
+
+
+        contactRoomEntityWrapperTodayLeft.in("room_id", ids);
+        contactRoomEntityWrapperTodayLeft.eq("status", 2);
+        contactRoomEntityWrapperTodayLeft.le("out_time", todayEndDate);
+        contactRoomEntityWrapperTodayLeft.ge("out_time", todayStartDate);//大于
+
+        List<WorkContactRoomGroupDataVo> todayLefts= contanctMapperObj.getNum(contactRoomEntityWrapperTodayLeft);
+        List<WorkContactRoomGroupDataVo> todayAdds= contanctMapperObj.getNum(contactRoomEntityWrapperTodayAdd);
+        List<WorkContactRoomGroupDataVo> totals= contanctMapperObj.getNum(contactRoomEntityWrapperTotal);
+
+
+        HashMap<Integer ,HashMap<String,Integer >> dataById =
+                new HashMap<Integer, HashMap<String, Integer>>();
+
+        HashMap<String, Integer> temp = new HashMap<String, Integer>();
+        for (WorkContactRoomGroupDataVo o : totals) {
+            temp.put("total",o.getNum());
+            temp.put("add_num",0);
+            temp.put("left_num",0);
+            dataById.put(o.getRoom_id(),temp);
+        }
+
+        HashMap<String, Integer> tempSetLeft = new HashMap<String, Integer>();
+        System.out.println("查看类型");
+        System.out.println(todayLefts);
+        System.out.println(todayAdds);
+        for (WorkContactRoomGroupDataVo o : todayLefts) {
+            if(dataById.get(o.getRoom_id())==null){//不存在
+                temp.put("total",0);
+                temp.put("left_num",o.getNum());
+                temp.put("add_num",0);
+                dataById.put(o.getRoom_id(),temp);
+            }else{
+                tempSetLeft = dataById.get(o.getRoom_id());
+                tempSetLeft.put("left_num",o.getNum());
+                dataById.put(o.getRoom_id(),tempSetLeft);
+            }
+
+        }
+
+        HashMap<String, Integer> tempSetAdd = new HashMap<String, Integer>();
+        for (WorkContactRoomGroupDataVo o : todayAdds) {
+            if(dataById.get(o.getRoom_id())==null){//不存在
+                temp.put("total",0);
+                temp.put("add_num",o.getNum());
+                temp.put("left_num",0);
+                dataById.put(o.getRoom_id(),temp);
+            }else{
+                tempSetAdd =  dataById.get(o.getRoom_id());
+                tempSetAdd.put("add_num",o.getNum());
+                dataById.put(o.getRoom_id(),tempSetAdd);
+            }
+        }
+        return dataById;
+
+    }
+
+
+}

+ 1 - 1
src/main/resources/application.properties

@@ -3,7 +3,7 @@ server.port=8085
 
 
 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
-spring.datasource.url=jdbc:mysql://rm-uf618jc32u2o80g558o.mysql.rds.aliyuncs.com:3306/mochat
+spring.datasource.url=jdbc:mysql://rm-uf618jc32u2o80g55oo.mysql.rds.aliyuncs.com:3306/mochat
 spring.datasource.username=typer
 spring.datasource.password=jch9sh_shl
 spring.datasource.max-idle=10