Bläddra i källkod

fix 员工支持客服身份

Eric 11 månader sedan
förälder
incheckning
cfc8474a0c

+ 10 - 0
cooleshow-api/src/main/java/com/yonge/cooleshow/api/feign/AdminFeignService.java

@@ -217,4 +217,14 @@ public interface AdminFeignService {
 
     @PostMapping("/sysUser/logoffQuitImGroup")
     HttpResponseResult<Boolean> logoffQuitImGroup(@RequestParam(value = "phone") String phone);
+
+    /**
+     * 清除客服绑定关系
+     * @param userId 用户ID
+     * @param sysUserType 用户类型
+     *
+     * @return HttpResponseResult<Boolean>
+     */
+    @GetMapping("/employee/clearCustomerService")
+    HttpResponseResult<Boolean> clearCustomerService(Long userId, String sysUserType);
 }

+ 13 - 0
cooleshow-api/src/main/java/com/yonge/cooleshow/api/feign/fallback/AdminFeignServiceFallback.java

@@ -215,4 +215,17 @@ public class AdminFeignServiceFallback implements AdminFeignService {
     public HttpResponseResult<Boolean> logoffQuitImGroup(String phone) {
         return null;
     }
+
+    /**
+     * 清除客服绑定关系
+     *
+     * @param userId      用户ID
+     * @param sysUserType 用户类型
+     *
+     * @return HttpResponseResult<Boolean>
+     */
+    @Override
+    public HttpResponseResult<Boolean> clearCustomerService(Long userId, String sysUserType) {
+        return null;
+    }
 }

+ 8 - 0
cooleshow-app/src/main/java/com/yonge/cooleshow/admin/controller/EmployeeController.java

@@ -34,6 +34,7 @@ import org.springframework.web.bind.annotation.PathVariable;
 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.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.validation.Valid;
@@ -163,4 +164,11 @@ public class EmployeeController extends BaseController {
         return failed("获取用户信息失败");
     }
 
+    @ApiOperation(value = "员工客服绑定关系清除")
+    @GetMapping("/clearCustomerService")
+    public HttpResponseResult<Boolean> clearCustomerService(@RequestParam("userId") Long userId,
+                                                            @RequestParam("sysUserType") String sysUserType) {
+        // 清除客服绑定关系
+        return succeed(employeeService.clearCustomerService(userId, sysUserType));
+    }
 }

+ 8 - 0
cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/service/impl/SysUserServiceImpl.java

@@ -22,6 +22,7 @@ import com.yonge.cooleshow.common.entity.ImUserModel;
 import com.yonge.cooleshow.common.enums.CacheNameEnum;
 import com.yonge.cooleshow.common.enums.SysUserType;
 import com.yonge.cooleshow.common.enums.UserFirstTimeTypeEnum;
+import com.yonge.cooleshow.common.enums.YesOrNoEnum;
 import com.yonge.toolset.base.exception.BizException;
 import com.yonge.toolset.mybatis.dal.BaseDAO;
 import com.yonge.toolset.mybatis.service.impl.BaseServiceImpl;
@@ -349,9 +350,16 @@ public class SysUserServiceImpl extends BaseServiceImpl<Long, SysUser> implement
         sysUserDao.logoffById(id, maxVersion);
     }
 
+    @Transactional(rollbackFor = Exception.class)
     @Override
     public void updateLockStatus(Long userId, Integer lockFlag, String sysUserType) {
         sysUserDao.updateLockStatus(userId, lockFlag, sysUserType);
+
+        // 系统员工锁定,清除客服绑定关系
+        if (lockFlag == YesOrNoEnum.YES.getCode().intValue() && SysUserType.SYSTEM.getCode().equals(sysUserType)) {
+            // 清除客服绑定关系
+            adminFeignService.clearCustomerService(userId, sysUserType);
+        }
     }
 
     /**

+ 7 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/EmployeeService.java

@@ -58,4 +58,11 @@ public interface EmployeeService extends BaseService<Long, Employee> {
 
     int insertSysRole(SysRole sysRole);
 
+    /**
+     * 清除客服绑定关系
+     * @param userId 用户ID
+     * @param sysUserType 用户类型
+     * @return Boolean
+     */
+    Boolean clearCustomerService(Long userId, String sysUserType);
 }

+ 31 - 16
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/EmployeeServiceImpl.java

@@ -149,22 +149,8 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Long, Employee> impleme
                 || sysUser.getLockFlag().equals(YesOrNoEnum.YES.getCode())
                 || employee.getLockFlag() == UserLockFlag.LOCKED) {
 
-                String imCustomerServiceId = imGroupCoreService.getImUserId(String.valueOf(param.getUserId()),
-                    ClientEnum.SYSTEM.getCode());
-
-                // 更新老师表的客服ID
-                teacherService.lambdaUpdate()
-                    .eq(Teacher::getImCustomerId, imCustomerServiceId)
-                    .set(Teacher::getCustomerId, null)
-                    .set(Teacher::getImCustomerId, "")
-                    .update();
-
-                // 更新学生表的客服ID
-                studentService.lambdaUpdate()
-                    .eq(Student::getImCustomerId, imCustomerServiceId)
-                    .set(Student::getCustomerId, null)
-                    .set(Student::getImCustomerId, "")
-                    .update();
+                // 清除客服绑定关系
+                clearCustomerService(param.getUserId(), SysUserType.SYSTEM.getCode());
             }
         }
         return HttpResponseResult.succeed(param);
@@ -202,4 +188,33 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Long, Employee> impleme
         return employeeDao.insertSysRole(sysRole);
     }
 
+    /**
+     * 清除客服绑定关系
+     *
+     * @param userId      用户ID
+     * @param sysUserType 用户类型
+     * @return Boolean
+     */
+    @Override
+    public Boolean clearCustomerService(Long userId, String sysUserType) {
+        // 清除客服绑定关系
+        String imCustomerServiceId = imGroupCoreService.getImUserId(String.valueOf(userId), sysUserType);
+
+        // 更新老师表的客服ID
+        teacherService.lambdaUpdate()
+            .eq(Teacher::getImCustomerId, imCustomerServiceId)
+            .set(Teacher::getCustomerId, null)
+            .set(Teacher::getImCustomerId, "")
+            .update();
+
+        // 更新学生表的客服ID
+        studentService.lambdaUpdate()
+            .eq(Student::getImCustomerId, imCustomerServiceId)
+            .set(Student::getCustomerId, null)
+            .set(Student::getImCustomerId, "")
+            .update();
+
+        return true;
+    }
+
 }

+ 4 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TeacherServiceImpl.java

@@ -250,6 +250,10 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
 
         // 系统客服数量
         detail.setCustomerServiceNum(baseMapper.selectCustomerServiceV2().size());
+        if (Optional.ofNullable(detail.getCustomerService()).orElse(false)) {
+            // 老师本身是客服,不显示客服入口;重置客服数量为0
+            detail.setCustomerServiceNum(0);
+        }
 
         return detail;
     }