Browse Source

fix(客服封禁状态更新定时任务,客服列表增加所在群查询功能,群成员列表查看)

LeoN 5 năm trước cách đây
mục cha
commit
ba96f3aefc

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

@@ -1,8 +1,10 @@
 package com.mokamrp.privates.controller;
 
 import com.mokamrp.privates.entity.IndexHandle;
+import com.mokamrp.privates.entity.PostBasePageHandle;
 import com.mokamrp.privates.help.AjaxResult;
 import com.mokamrp.privates.mapper.pojo.WorkContactRoom;
+import com.mokamrp.privates.mapper.pojo.WorkRoom;
 import com.mokamrp.privates.service.WorkContactRoomService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.BindingResult;
@@ -11,6 +13,7 @@ import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -33,5 +36,11 @@ public class WorkContactRoomController extends BaseController<WorkContactRoom> {
         Map<String, Object> resMap = workContactRoomService.getPageList(indexHandle, bindingResult);
         return AjaxResult.success(resMap);
     }
+
+    @PostMapping("/getRoomByEmployeeId")
+    public Object getRoomByEmployeeId(@RequestBody PostBasePageHandle pageHandle){
+        Map<String,Object> res = workContactRoomService.getRoomByEmployeeId(pageHandle);
+        return AjaxResult.success(res);
+    }
 }
 

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

@@ -6,7 +6,7 @@ import lombok.Data;
 public class PostBasePageHandle {
     private Integer page;
     private Integer pagesize;
-
+    private Integer id;
     public Integer getPage() {
         return page;
     }

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

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.mokamrp.privates.mapper.pojo.WorkContactRoom;
+import com.mokamrp.privates.mapper.pojo.WorkRoom;
 import com.mokamrp.privates.mapper.vo.WorkContactRoomByRoomIdVo;
 import com.mokamrp.privates.mapper.vo.WorkContactRoomGroupDataVo;
 import org.apache.ibatis.annotations.Param;
@@ -25,4 +26,6 @@ public interface WorkContactRoomMapper extends BaseMapper<WorkContactRoom> {
     List<WorkContactRoomByRoomIdVo> getListByRoomId(Page<WorkContactRoomByRoomIdVo> page, @Param("ew") QueryWrapper<WorkContactRoomByRoomIdVo> queryWrapper);
 
     Integer getListByRoomIdTotal(@Param("ew") QueryWrapper<WorkContactRoomByRoomIdVo> queryWrapper);
+
+    List<WorkRoom> getRoomByEmployeeId(Page<WorkRoom> page, @Param("employeeId") Integer employeeId);
 }

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

@@ -72,5 +72,13 @@
         WHERE
             ${ew.sqlSegment}
     </select>
+    <select id="getRoomByEmployeeId" resultType="com.mokamrp.privates.mapper.pojo.WorkRoom">
+        SELECT B.*,C.name as corp_name,D.name AS owner_name,E.member_cnt FROM mc_work_contact_room AS A
+          LEFT JOIN mc_work_room AS B ON A.room_id = B.id
+          LEFT JOIN mc_corp AS C ON B.corp_id = C.id
+          LEFT JOIN mc_work_employee AS D ON B.owner_id = D.id
+          LEFT JOIN (SELECT COUNT(room_id) AS member_cnt,room_id FROM mc_work_contact_room GROUP BY room_id) AS E ON B.id = E.room_id
+        WHERE A.employee_id = #{employeeId}
+    </select>
 
 </mapper>

+ 39 - 32
src/main/java/com/mokamrp/privates/mapper/WorkEmployeeMapper.xml

@@ -27,6 +27,11 @@
         <result column="main_department_id" property="mainDepartmentId"/>
         <result column="log_user_id" property="logUserId"/>
         <result column="contact_auth" property="contactAuth"/>
+        <result column="private_switch_status" property="privateSwitchStatus"/>
+        <result column="private_forbidden_status" property="privateForbiddenStatus"/>
+        <result column="private_tag_id" property="privateTagId"/>
+        <result column="private_phone_code" property="privatePhoneCode"/>
+        <result column="private_user_id" property="privateUserId"/>
         <result column="prohibit_start_at" property="prohibitStartAt"/>
         <result column="prohibit_end_at" property="prohibitEndAt"/>
         <result column="created_at" property="createdAt"/>
@@ -36,53 +41,55 @@
 
     <!-- 通用查询结果列 -->
     <sql id="Base_Column_List">
-        id
-        , wx_user_id, corp_id, name, mobile, position, gender, email, avatar, thumb_avatar, telephone, alias, extattr, status, qr_code, external_profile, external_position, address, open_user_id, wx_main_department_id, main_department_id, log_user_id, contact_auth,prohibit_start_at,prohibit_end_at,created_at, updated_at, deleted_at
+        id, wx_user_id, corp_id, name, mobile, position, gender, email, avatar, thumb_avatar,
+        telephone, alias, extattr, status, qr_code, external_profile, external_position, address,
+        open_user_id, wx_main_department_id, main_department_id, log_user_id, contact_auth,
+        private_switch_status, private_forbidden_status, private_tag_id, private_phone_code, private_user_id,prohibit_start_at,prohibit_end_at,created_at, updated_at, deleted_at
     </sql>
 
     <select id="getVoList" resultType="com.mokamrp.privates.mapper.vo.WorkEmployeeVo">
         SELECT
-            A.id,
-            A.thumb_avatar,
-            B.group_name,
-            A.`name`,
-            A.gender,
-            A.avatar,
-            A.qr_code,
-            A.mobile,
-            A.private_switch_status,
-            A.private_tag_id,
-            A.private_phone_code,
-            A.private_forbidden_status,
-            A.private_user_id,
-            A.cust_cnt,
-            A.group_cnt,
-            A.in_group_cnt,
-            A.wx_user_id,
-            C.`name` AS companyName,
-            D.group_id,
-            E.tag_name,
-            A.prohibit_start_at,
-            A.prohibit_end_at
+        A.id,
+        A.thumb_avatar,
+        B.group_name,
+        A.`name`,
+        A.gender,
+        A.avatar,
+        A.qr_code,
+        A.mobile,
+        A.private_switch_status,
+        A.private_tag_id,
+        A.private_phone_code,
+        A.private_forbidden_status,
+        A.private_user_id,
+        A.cust_cnt,
+        A.group_cnt,
+        A.in_group_cnt,
+        A.wx_user_id,
+        C.`name` AS companyName,
+        D.group_id,
+        E.tag_name,
+        A.prohibit_start_at,
+        A.prohibit_end_at
         FROM
-            mc_work_employee AS A
-            LEFT JOIN private_group_corp AS D ON A.corp_id = D.corp_id
-            LEFT JOIN private_group AS B ON D.group_id = B.id
-            LEFT JOIN mc_corp AS C ON A.corp_id = C.id
-            LEFT JOIN private_tag AS E ON E.id = A.private_tag_id
+        mc_work_employee AS A
+        LEFT JOIN private_group_corp AS D ON A.corp_id = D.corp_id
+        LEFT JOIN private_group AS B ON D.group_id = B.id
+        LEFT JOIN mc_corp AS C ON A.corp_id = C.id
+        LEFT JOIN private_tag AS E ON E.id = A.private_tag_id
         <where>
             ${ew.sqlSegment}
         </where>
         group by a.id
-  </select>
+    </select>
 
 
     <select id="getVoListTotal" resultType="Integer">
 
         SELECT
-            count(distinct(a.id))
+        count(distinct(a.id))
         FROM
-            mc_work_employee AS A
+        mc_work_employee AS A
         LEFT JOIN private_group_corp AS D ON A.corp_id = D.corp_id
         LEFT JOIN private_group AS B ON D.group_id = B.id
         LEFT JOIN mc_corp AS C ON A.corp_id = C.id

+ 5 - 3
src/main/java/com/mokamrp/privates/mapper/pojo/WorkEmployee.java

@@ -109,9 +109,11 @@ public class WorkEmployee extends Model<WorkEmployee> {
      * 子账户ID(mc_user.id)
      */
     private Integer logUserId;
-    /**
-     * 是否配置外部联系人权限(1.是 2.否)
-     */
+
+    private Integer privateSwitchStatus;
+
+    private Integer privateForbiddenStatus; //.1正常 2封禁中 3永封 4解封待确认
+
     /**
      * 小前台标签ID
      */

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

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
 
 import java.io.Serializable;
 import java.util.Date;
@@ -16,6 +17,7 @@ import java.util.Date;
  * @author gy
  * @since 2021-04-21
  */
+@Data
 @TableName("mc_work_room")
 public class WorkRoom extends Model<WorkRoom> {
 
@@ -59,6 +61,9 @@ public class WorkRoom extends Model<WorkRoom> {
      * 分组id(work_room_group.id)
      */
     private Integer roomGroupId;
+    private String corpName;
+    private String ownerName;
+    private Integer memberCnt = 0;
     private Date createdAt;
     private Date updatedAt;
     private Date deletedAt;

+ 1 - 1
src/main/java/com/mokamrp/privates/mapper/vo/WorkEmployeeVo.java

@@ -25,7 +25,7 @@ public class WorkEmployeeVo {
     private Integer privateSwitchStatus;
     private Integer privateTagId;
     private String privatePhoneCode;
-    private Integer privateForbiddenStatus;
+    private Integer privateForbiddenStatus; //.1正常 2封禁中 3永封 4解封待确认
     private Integer privateUserId;
     private Integer custCnt;
     private Integer groupCnt;

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

@@ -2,9 +2,12 @@ package com.mokamrp.privates.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.mokamrp.privates.entity.IndexHandle;
+import com.mokamrp.privates.entity.PostBasePageHandle;
 import com.mokamrp.privates.mapper.pojo.WorkContactRoom;
+import com.mokamrp.privates.mapper.pojo.WorkRoom;
 import org.springframework.validation.BindingResult;
 
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -19,4 +22,5 @@ public interface WorkContactRoomService extends IService<WorkContactRoom> {
 
     public Map<String, Object> getPageList(IndexHandle indexHandle, BindingResult bindingResult);
 
+    public Map<String,Object> getRoomByEmployeeId(PostBasePageHandle pageHandle);
 }

+ 2 - 0
src/main/java/com/mokamrp/privates/service/WorkEmployeeService.java

@@ -22,6 +22,8 @@ public interface WorkEmployeeService extends IService<WorkEmployee> {
 
     public Map<String, Object> getPageList(PostWorkEmployee handle);
 
+    public Boolean updateForbiddenStatus();
+
     public void export(Downfile downFile, PostWorkEmployee handle);
 
     public boolean setTag(Integer tagId,List<Integer> employeeIds);

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

@@ -5,9 +5,12 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.mokamrp.privates.constant.HttpStatus;
 import com.mokamrp.privates.entity.IndexHandle;
+import com.mokamrp.privates.entity.PostBasePageHandle;
 import com.mokamrp.privates.help.AjaxResult;
 import com.mokamrp.privates.mapper.WorkContactRoomMapper;
+import com.mokamrp.privates.mapper.pojo.Corp;
 import com.mokamrp.privates.mapper.pojo.WorkContactRoom;
+import com.mokamrp.privates.mapper.pojo.WorkRoom;
 import com.mokamrp.privates.mapper.vo.WorkContactRoomByRoomIdVo;
 import com.mokamrp.privates.service.WorkContactRoomService;
 import com.mokamrp.privates.utils.StringUtils;
@@ -82,5 +85,16 @@ public class WorkContactRoomServiceImpl extends ServiceImpl<WorkContactRoomMappe
         return resMap;
     }
 
+    public Map<String,Object> getRoomByEmployeeId(PostBasePageHandle pageHandle){
+        Integer page = pageHandle.getPage();
+        Integer pagesize = pageHandle.getPagesize();
+        Page<WorkRoom> pageObj = new Page<WorkRoom>(page, pagesize);
+        List<WorkRoom> list = mapperObj.getRoomByEmployeeId(pageObj,pageHandle.getId());
+        Map<String,Object> res = new HashMap<>();
+        res.put("list",list);
+        res.put("total",pageObj.getTotal());
+        return res;
+    }
+
 
 }

+ 36 - 0
src/main/java/com/mokamrp/privates/service/impl/WorkEmployeeServiceImpl.java

@@ -73,7 +73,43 @@ public class WorkEmployeeServiceImpl extends ServiceImpl<WorkEmployeeMapper, Wor
         return res;
     }
 
+    /**
+     * 定时任务 更新客服封禁状态
+     *
+     * @return
+     */
+    public Boolean updateForbiddenStatus() {
+        List<WorkEmployee> workEmployeeList = this.list();
+        long nowTime = new Date().getTime();
+        for (WorkEmployee workEmployee : workEmployeeList) {
+            if (workEmployee.getPrivateForbiddenStatus() != 2) {
+                continue;
+            }
+            if (workEmployee.getProhibitStartAt() == null || workEmployee.getProhibitEndAt() == null) {
+                continue;
+            }
+            long prohibitStartTime = workEmployee.getProhibitStartAt().getTime();
+            long prohibitEndTime = workEmployee.getProhibitEndAt().getTime();
+            if (nowTime >= prohibitStartTime && nowTime <= prohibitEndTime) {
+                //.封禁中
+            } else {
+                //.正常状态
+                if (workEmployee.getPrivateForbiddenStatus() == 2) {
+                    WorkEmployee workEmployeeSave = new WorkEmployee();
+                    workEmployeeSave.setPrivateForbiddenStatus(4);
+                    this.update(workEmployeeSave, new UpdateWrapper<WorkEmployee>().in("id", workEmployee.getId()));
+                }
+            }
+        }
+        return true;
+    }
 
+    /**
+     * 企业客服列表
+     *
+     * @param handle
+     * @return
+     */
     @Override
     public Map<String, Object> getPageList(PostWorkEmployee handle) {
 

+ 20 - 0
src/main/java/com/mokamrp/privates/tast/WorkEmployeeForbiddenTask.java

@@ -0,0 +1,20 @@
+package com.mokamrp.privates.tast;
+
+import com.mokamrp.privates.service.WorkContactEmployeeService;
+import com.mokamrp.privates.service.WorkEmployeeService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+@Component
+public class WorkEmployeeForbiddenTask {
+
+    @Autowired
+    private WorkEmployeeService workEmployeeService;
+
+    @Scheduled(fixedDelay = 1800 * 1000) //.间隔 半小时
+    public void execute() {
+        System.out.println("[cronjob]:客服封禁状态更新任务开始执行");
+        workEmployeeService.updateForbiddenStatus();
+    }
+}

+ 2 - 2
src/main/resources/application-local.properties

@@ -33,8 +33,8 @@ spring.servlet.multipart.max-file-size=10MB
 
 xxl.sso.server=http://test.sso.mokamrp.com/sso
 xxl.sso.logout.path=/logout
-xxl-sso.excluded.paths=
-xxl.sso.redis.address=redis://xxl-sso:Jch9shshl@r-uf633f3f27aa2174pd.redis.rds.aliyuncs.com:6379/0
+xxl-sso.excluded.paths=/healthy
+xxl.sso.redis.address=redis://xxl-sso:MokaSapce666$%25_RediS@r-uf6727zrr24ioihy72pd.redis.rds.aliyuncs.com:23563/0
 
 menu.host=http://test.space-server.mokamrp.com/space/menu/getMenuInterface?sysCode=1006&userId=