|
@@ -57,46 +57,28 @@ public class CloseReqHandler extends AbstractCmdHandler
|
|
|
ImSessionContext imSessionContext = (ImSessionContext)channelContext.getAttribute();
|
|
|
Client client = imSessionContext.getClient();
|
|
|
if( null != client){
|
|
|
- User user = client.getUser();
|
|
|
- if( null != user ){
|
|
|
- String visitType = user.getVisitType();
|
|
|
- String[] userIdArray = {user.getId()};
|
|
|
- if( VisitTypeEnum.SERVICEACCOUNT.getKey().equals(visitType) ){
|
|
|
-
|
|
|
- String serviceAccountContainerKey
|
|
|
- = user.getExtras().getString("companyId") + ImConst.SEPARATOR
|
|
|
- + user.getExtras().getString("departmentId") + ImConst.SEPARATOR
|
|
|
- + VisitTypeEnum.SERVICEACCOUNT.getKey() ;
|
|
|
- jedisTemplate.hashDel(serviceAccountContainerKey,userIdArray);
|
|
|
-
|
|
|
- if( Boolean.valueOf(user.getExtras().getString("hasViewAllServiceAccount")) ){
|
|
|
- String adminContainerKey = user.getExtras().getString("companyId")
|
|
|
- + ImConst.SEPARATOR + user.getExtras().getString("departmentId")
|
|
|
- + ImConst.SEPARATOR + ImConst.ADMIN ;
|
|
|
- jedisTemplate.listRemove(adminContainerKey,0,user.getId());
|
|
|
- }
|
|
|
- List<ChatGroup> chatGroups = ChatGroup.dao.find(this.createSelectGroupSql(user));
|
|
|
- if( CollectionUtils.isNotEmpty(chatGroups) ){
|
|
|
- for (ChatGroup chatGroup : chatGroups) {
|
|
|
-
|
|
|
- chatGroup.set("service_account_type", ServiceAccountOfflineTypeEnum.OFF_LINE.getKey()).update();
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- if( VisitTypeEnum.VISITOR.getKey().equals(visitType) ){
|
|
|
-
|
|
|
- VisitorDepartmentMiddle.dao.findById(user.getId()).set("online",1).update();
|
|
|
- }
|
|
|
- jedisTemplate.hashDel(CURRENT_SYSTEM_ALL_USER_ID,userIdArray);
|
|
|
- }
|
|
|
+ disposeUserData(client.getUser());
|
|
|
}
|
|
|
ImAio.remove(channelContext, "收到关闭请求");
|
|
|
}else{
|
|
|
String userId = closeReqBody.getUserid();
|
|
|
- User user = ImAio.getUser(userId);
|
|
|
-
|
|
|
+ disposeUserData(ImAio.getUser(userId));
|
|
|
+ ImAio.remove(userId, "收到关闭请求!");
|
|
|
+ }
|
|
|
+ return ImKit.ConvertRespPacket(new RespBody(Command.COMMAND_CLOSE_REQ, ImStatus.C10021), channelContext);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ * 处理用户离线后的数据操作
|
|
|
+ * @param user
|
|
|
+ * @return {@link }
|
|
|
+ * @author Darren
|
|
|
+ * @date 2020/2/16 10:52
|
|
|
+ */
|
|
|
+ private void disposeUserData(User user){
|
|
|
+ if( null != user ){
|
|
|
String visitType = user.getVisitType();
|
|
|
- String[] userIdArray = {userId};
|
|
|
+ String[] userIdArray = {user.getId()};
|
|
|
if( VisitTypeEnum.SERVICEACCOUNT.getKey().equals(visitType) ){
|
|
|
|
|
|
String serviceAccountContainerKey
|
|
@@ -104,12 +86,12 @@ public class CloseReqHandler extends AbstractCmdHandler
|
|
|
+ user.getExtras().getString("departmentId") + ImConst.SEPARATOR
|
|
|
+ VisitTypeEnum.SERVICEACCOUNT.getKey() ;
|
|
|
jedisTemplate.hashDel(serviceAccountContainerKey,userIdArray);
|
|
|
-
|
|
|
+
|
|
|
if( Boolean.valueOf(user.getExtras().getString("hasViewAllServiceAccount")) ){
|
|
|
String adminContainerKey = user.getExtras().getString("companyId")
|
|
|
+ ImConst.SEPARATOR + user.getExtras().getString("departmentId")
|
|
|
+ ImConst.SEPARATOR + ImConst.ADMIN ;
|
|
|
- jedisTemplate.listRemove(adminContainerKey,0,userId);
|
|
|
+ jedisTemplate.listRemove(adminContainerKey,0,user.getId());
|
|
|
}
|
|
|
List<ChatGroup> chatGroups = ChatGroup.dao.find(this.createSelectGroupSql(user));
|
|
|
if( CollectionUtils.isNotEmpty(chatGroups) ){
|
|
@@ -124,9 +106,7 @@ public class CloseReqHandler extends AbstractCmdHandler
|
|
|
VisitorDepartmentMiddle.dao.findById(user.getId()).set("online",1).update();
|
|
|
}
|
|
|
jedisTemplate.hashDel(CURRENT_SYSTEM_ALL_USER_ID,userIdArray);
|
|
|
- ImAio.remove(userId, "收到关闭请求!");
|
|
|
}
|
|
|
- return ImKit.ConvertRespPacket(new RespBody(Command.COMMAND_CLOSE_REQ, ImStatus.C10021), channelContext);
|
|
|
}
|
|
|
|
|
|
private String createSelectGroupSql(User user){
|