Browse Source

fix(粉丝表增加标签搜索以及展示)

gengyang 5 years ago
parent
commit
10a1965e4e

+ 6 - 4
src/main/java/com/mokamrp/privates/mapper/WorkContactEmployeeMapper.java

@@ -7,9 +7,11 @@ import com.mokamrp.privates.mapper.pojo.Corp;
 import com.mokamrp.privates.mapper.pojo.WorkContactEmployee;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.mokamrp.privates.mapper.vo.WorkContactEmployeeVo;
+import com.mokamrp.privates.mapper.vo.WorkRoomVo;
 import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Component;
 
+import java.util.HashMap;
 import java.util.List;
 
 /**
@@ -23,8 +25,8 @@ import java.util.List;
 @Component
 public interface WorkContactEmployeeMapper extends BaseMapper<WorkContactEmployee> {
 
-    List<WorkContactEmployeeVo> getVoList(Page<WorkContactEmployeeVo> page, @Param("ew") QueryWrapper<WorkContactEmployee> queryWrapper);
-    List<WorkContactEmployeeVo> getAllVoList(@Param("ew") QueryWrapper<WorkContactEmployee> queryWrapper);
-    Integer getVoListTotal(@Param("ew") QueryWrapper<WorkContactEmployee> queryWrapper);
-
+    List<WorkContactEmployeeVo> getVoList(Page<WorkContactEmployeeVo> page, @Param("ew") QueryWrapper<WorkContactEmployeeVo> queryWrapper);
+    List<WorkContactEmployeeVo> getAllVoList(@Param("ew") QueryWrapper<WorkContactEmployeeVo> queryWrapper);
+    Integer getVoListTotal(@Param("ew") QueryWrapper<WorkContactEmployeeVo> queryWrapper);
+    List<HashMap<String, Object>> getContactTagList(@Param("ew") QueryWrapper<WorkContactEmployeeVo> queryWrapper);
 }

+ 32 - 28
src/main/java/com/mokamrp/privates/mapper/WorkContactEmployeeMapper.xml

@@ -31,6 +31,7 @@
     <select id="getVoList" resultType="com.mokamrp.privates.mapper.vo.WorkContactEmployeeVo">
         SELECT a.id,
                c.`name`          AS client_name,
+               a.`employee_id`   AS employee_id,
                c.gender          AS client_gender,
                a.`status`        AS client_status,
                a.channel_code_id as channel_code_id,
@@ -40,47 +41,50 @@
                e.`name`          AS employee_name,
                p.`name`          as company_name,
                l.`name`          as channel_code_name,
+               a.contact_id,
                a.state,
-               a.remark
+               a.remark,
+               h.group_name,
+			   g.group_id
         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
+                 LEFT JOIN private_group_corp AS g ON a.id = g.corp_id
+				 LEFT JOIN private_group AS h ON h.id = g.group_id
+				 LEFT JOIN mc_work_contact_tag_pivot AS k ON a.contact_id = a.contact_id
         where 1 = 1 AND ${ew.sqlSegment}
+        group by a.id
     </select>
 
-
     <select id="getVoListTotal" resultType="Integer">
-        SELECT count(*)
+        SELECT
+            count(distinct (a.id))
         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
+             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
+             LEFT JOIN private_group_corp AS g ON a.id = g.corp_id
+             LEFT JOIN mc_work_contact_tag_pivot AS k ON a.contact_id = a.contact_id
         where 1 = 1 AND ${ew.sqlSegment}
     </select>
 
-    <select id="getAllVoList" 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 AND ${ew.sqlSegment}
+    <select id="getContactTagList" resultType="Map">
+        SELECT
+            a.id,
+            a.contact_id,
+            a.contact_tag_id,
+            a.employee_id,
+            GROUP_CONCAT( DISTINCT b.`name` ) AS tag_names,
+            GROUP_CONCAT( DISTINCT a.contact_tag_id ) AS tag_ids
+        FROM
+            mc_work_contact_tag_pivot AS a
+        LEFT JOIN mc_work_contact_tag AS b ON a.contact_tag_id = b.id
+        <where>
+            ${ew.sqlSegment}
+        </where>
+        GROUP BY a.contact_id,a.employee_id;
     </select>
-
 </mapper>

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

@@ -26,6 +26,60 @@ public class WorkContactEmployeeVo {
     private String channelCodeName;
     private String tate;
     private String remark;
+    private String groupName;
+    private String groupId;
+    private Integer contactId;
+    private String tagNames;
+    private String tagIds;
+    private Integer employeeId;
+
+    public Integer getEmployeeId() {
+        return employeeId;
+    }
+
+    public void setEmployeeId(Integer employeeId) {
+        this.employeeId = employeeId;
+    }
+
+    public String getTagNames() {
+        return tagNames;
+    }
+
+    public void setTagNames(String tagNames) {
+        this.tagNames = tagNames;
+    }
+
+    public String getTagIds() {
+        return tagIds;
+    }
+
+    public void setTagIds(String tagIds) {
+        this.tagIds = tagIds;
+    }
+
+    public Integer getContactId() {
+        return contactId;
+    }
+
+    public void setContactId(Integer contactId) {
+        this.contactId = contactId;
+    }
+
+    public String getGroupName() {
+        return groupName;
+    }
+
+    public void setGroupName(String groupName) {
+        this.groupName = groupName;
+    }
+
+    public String getGroupId() {
+        return groupId;
+    }
+
+    public void setGroupId(String groupId) {
+        this.groupId = groupId;
+    }
 
     public String getClientName() {
         return clientName;

+ 45 - 9
src/main/java/com/mokamrp/privates/service/impl/WorkContactEmployeeServiceImpl.java

@@ -12,6 +12,7 @@ import com.mokamrp.privates.mapper.pojo.Downfile;
 import com.mokamrp.privates.mapper.pojo.WorkContactEmployee;
 import com.mokamrp.privates.mapper.WorkContactEmployeeMapper;
 import com.mokamrp.privates.mapper.vo.WorkContactEmployeeVo;
+import com.mokamrp.privates.mapper.vo.WorkRoomVo;
 import com.mokamrp.privates.service.WorkContactEmployeeService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.mokamrp.privates.utils.OssFile;
@@ -24,6 +25,7 @@ import org.springframework.stereotype.Service;
 import java.io.ByteArrayInputStream;
 import java.text.SimpleDateFormat;
 import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -54,10 +56,8 @@ public class WorkContactEmployeeServiceImpl extends ServiceImpl<WorkContactEmplo
     public Map<String, Object> getPageList(GetWorkContactEmployeeHandle handle) {
 
         Page<WorkContactEmployeeVo> pageObj = new Page<>(handle.getPage(), handle.getPagesize());
-        QueryWrapper<WorkContactEmployee> obj = getWrapper(handle);
-
-
-        List<WorkContactEmployeeVo> list = mapperObj.getVoList(pageObj, obj);
+        QueryWrapper<WorkContactEmployeeVo> obj = getWrapper(handle);
+        List<WorkContactEmployeeVo> list = getCommonList(pageObj, obj);
 
         Integer total = mapperObj.getVoListTotal(obj);
 
@@ -73,8 +73,10 @@ public class WorkContactEmployeeServiceImpl extends ServiceImpl<WorkContactEmplo
     public void export(Downfile downFile, GetWorkContactEmployeeHandle handle) {
 
         List<Object> tempObj;
-        QueryWrapper<WorkContactEmployee> obj = getWrapper(handle);
-        List<WorkContactEmployeeVo> list = mapperObj.getAllVoList(obj);
+        QueryWrapper<WorkContactEmployeeVo> obj = getWrapper(handle);
+        Integer total = mapperObj.getVoListTotal(obj);
+        Page<WorkContactEmployeeVo> pageObj = new Page<>(1, total);
+        List<WorkContactEmployeeVo> list = getCommonList(pageObj, obj);
 
         //实现下载
         List<List<Object>> resList = new ArrayList<List<Object>>();
@@ -120,9 +122,35 @@ public class WorkContactEmployeeServiceImpl extends ServiceImpl<WorkContactEmplo
         return;
     }
 
-    private QueryWrapper<WorkContactEmployee> getWrapper(GetWorkContactEmployeeHandle handle) {
+    private List<WorkContactEmployeeVo> getCommonList(Page<WorkContactEmployeeVo> pageObj, QueryWrapper<WorkContactEmployeeVo> obj) {
+        List<WorkContactEmployeeVo> list = mapperObj.getVoList(pageObj, obj);
+
+        if (list.size() > 0) {
+            List<Integer> ids = list.stream().map(WorkContactEmployeeVo::getContactId).collect(Collectors.toList());
+            QueryWrapper<WorkContactEmployeeVo> tagObj = new QueryWrapper<WorkContactEmployeeVo>();
+            tagObj.in("a.contact_id", ids);
+            List<HashMap<String, Object>> tagMapData = mapperObj.getContactTagList(tagObj);
+            int j = list.size();
+
+            for (int i = 0; i < j; i++) {
+                list.get(i).setTagNames("");
+                list.get(i).setTagIds("");
+                for (Map<String, Object> tag : tagMapData) {
+                    if (tag.get("employee_id").toString().equals(list.get(i).getEmployeeId().toString())
+                            && tag.get("contact_id").toString().equals(list.get(i).getContactId().toString()) ) {
+                        list.get(i).setTagNames(tag.get("tag_names").toString());
+                        list.get(i).setTagIds(tag.get("tag_ids").toString());
+                    }
+                }
+            }
+        }
+
+        return list;
+    }
+
+    private QueryWrapper<WorkContactEmployeeVo> getWrapper(GetWorkContactEmployeeHandle handle) {
 
-        QueryWrapper<WorkContactEmployee> obj = new QueryWrapper<WorkContactEmployee>();
+        QueryWrapper<WorkContactEmployeeVo> obj = new QueryWrapper<WorkContactEmployeeVo>();
 
         Integer gender = handle.getGender();
         Integer status = handle.getStatus();
@@ -173,10 +201,18 @@ public class WorkContactEmployeeServiceImpl extends ServiceImpl<WorkContactEmplo
             obj.eq("a.corp_id", corpId);
         }
 
-        if (employeeId != null && employeeId.size() >=1) {
+        if (employeeId != null && employeeId.size() >= 1) {
             obj.in("a.employee_id", employeeId);
         }
 
+        if (tagId != null && tagId.size() >= 1) {
+            obj.in("k.contact_tag_id", tagId);
+        }
+
+        if (group_id != null) {
+            obj.eq("g.group_id", group_id);
+        }
+
         obj.in("a.corp_id", authCorpIds);
 
         return obj;