From 647356cdc1e7fd2121d6274f933c1c7c2ac823bd Mon Sep 17 00:00:00 2001 From: Administrator <1923636941@qq.com> Date: Fri, 31 Mar 2023 10:29:46 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=89=E6=B1=9F=E7=BB=9F=E4=B8=80=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E5=A4=8D=E5=88=B6bug=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/zhgd/sjmq/service/SjMqService.java | 89 +++++++++++++++++-- .../modules/basicdata/entity/SystemUser.java | 7 +- 2 files changed, 86 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/zhgd/sjmq/service/SjMqService.java b/src/main/java/com/zhgd/sjmq/service/SjMqService.java index 74169687b..c3ed3be30 100644 --- a/src/main/java/com/zhgd/sjmq/service/SjMqService.java +++ b/src/main/java/com/zhgd/sjmq/service/SjMqService.java @@ -19,6 +19,8 @@ import org.springframework.stereotype.Component; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; +import java.util.stream.Stream; @Component @Slf4j @@ -121,9 +123,9 @@ public class SjMqService { } - public void onUserOrgChanged(UserOrgChangeMessage userOrgChangeMessage) { + public void onUserOrgChanged(UserOrgChangeMessage message) { /* - 复制用户?: + 复制用户: { "category": "2-2", "id": "wnibicyw0TTVSymhmKmWW1ZA", @@ -235,17 +237,87 @@ public class SjMqService { } } */ - UserOrgChangeType type = userOrgChangeMessage.getType(); - if (type.equals(UserOrgChangeType.COPY) || type.equals(UserOrgChangeType.ADD)) { - //复制 新增用户 - SystemUser systemUser = convertToSystemUser(userOrgChangeMessage); + /* + 复制用户: + { + "category": "2-2", + "id": "m790mhblRqOGkAoAGmib8icA", + "orgId": "1IS459dhSkaOTdQJSshYVw", + "timestamp": 1680226673408, + "type": "COPY", + "user": { + "creator": "Z4K0Un08TibykTF5tiauD15Q", + "$opType": "copy", + "jp": "csfz123", + "sex": "2", + "jobs": "", + "createAt": 1680226655000, + "categoryOrgId": "2-2", + "orgInstanceId": "2-2-zhY43eia0SS2Xiap2vGf5DHA", + "$orgAttrs": [ + { + "org": { + "orgName": "测试123", + "orgId": "zhY43eia0SS2Xiap2vGf5DHA" + }, + "attrs": { + "orgInstanceId": "2-2-zhY43eia0SS2Xiap2vGf5DHA", + "sn": 0 + } + } + ], + "name": "测试复制123", + "id": "m790mhblRqOGkAoAGmib8icA", + "lastModified": 1680226655242, + "state": "1", + "sn": 0, + "certificateNum": "34030420230316931X", + "authLevel": "0", + "certificateType": "idcard", + "qp": "ceshifuzhi123" + } + } + */ + UserOrgChangeType type = message.getType(); + if (type.equals(UserOrgChangeType.ADD)) { + //新增用户 + SystemUser systemUser = convertToSystemUser(message); systemUserMapper.insert(systemUser); insertBaseModuleUser(systemUser); } else if (type.equals(UserOrgChangeType.MOVE)) { - //移动用户,什么不用做 + //移动用户 + SystemUser systemUser = systemUserMapper.selectOne(new LambdaQueryWrapper().eq(SystemUser::getSjUnifiedAuthenticationUserId, message.getId())); + String dbOrgIds = systemUser.getSjUnifiedAuthenticationOrgIds(); + if (StringUtils.isNotBlank(dbOrgIds)) { + List list = Stream.of(dbOrgIds.split(",")).collect(Collectors.toList()); + list.remove(message.getOldOrgId()); + list.add(message.getOrgId()); + systemUser.setSjUnifiedAuthenticationOrgIds(StringUtils.join(list.toArray(), ",")); + } + systemUserMapper.updateById(systemUser); } else if (type.equals(UserOrgChangeType.DELETE)) { //删除用户 - systemUserMapper.delete(new LambdaQueryWrapper().eq(SystemUser::getSjUnifiedAuthenticationUserId, userOrgChangeMessage.getId())); + SystemUser systemUser = systemUserMapper.selectOne(new LambdaQueryWrapper().eq(SystemUser::getSjUnifiedAuthenticationUserId, message.getId())); + String dbOrgIds = systemUser.getSjUnifiedAuthenticationOrgIds(); + if (StringUtils.isBlank(dbOrgIds) || dbOrgIds.equals(message.getOrgId())) { + systemUserMapper.delete(new LambdaQueryWrapper().eq(SystemUser::getSjUnifiedAuthenticationUserId, message.getId())); + } else { + //一个账号有多份的情况,从组织ids里面去除一个 + List list = Stream.of(dbOrgIds.split(",")).collect(Collectors.toList()); + list.remove(message.getOrgId()); + systemUser.setSjUnifiedAuthenticationOrgIds(StringUtils.join(list.toArray(), ",")); + systemUserMapper.updateById(systemUser); + } + } else if (type.equals(UserOrgChangeType.COPY)) { + //复制用户 + SystemUser systemUser = systemUserMapper.selectOne(new LambdaQueryWrapper().eq(SystemUser::getSjUnifiedAuthenticationUserId, message.getId())); + String dbOrgIds = systemUser.getSjUnifiedAuthenticationOrgIds(); + if (StringUtils.isNotBlank(dbOrgIds)) { + List list = Stream.of(dbOrgIds.split(",")).collect(Collectors.toList()); + list.add(message.getOrgId()); + systemUser.setSjUnifiedAuthenticationOrgIds(StringUtils.join(list.toArray(), ",")); + } + systemUserMapper.updateById(systemUser); } } @@ -280,6 +352,7 @@ public class SjMqService { systemUser.setSn("B386480F85E84592B8E102224D090794"); systemUser.setAccountType(7); systemUser.setSjUnifiedAuthenticationUserId(userOrgChangeMessage.getId()); + systemUser.setSjUnifiedAuthenticationOrgIds(userOrgChangeMessage.getOrgId()); return systemUser; } diff --git a/src/main/java/com/zhgd/xmgl/modules/basicdata/entity/SystemUser.java b/src/main/java/com/zhgd/xmgl/modules/basicdata/entity/SystemUser.java index a03f91f1b..6158f97f7 100644 --- a/src/main/java/com/zhgd/xmgl/modules/basicdata/entity/SystemUser.java +++ b/src/main/java/com/zhgd/xmgl/modules/basicdata/entity/SystemUser.java @@ -4,8 +4,6 @@ import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -121,4 +119,9 @@ public class SystemUser implements Serializable { * 三江统一登录的用户id */ private String sjUnifiedAuthenticationUserId; + + /** + * 三江统一登录的组织ids + */ + private String sjUnifiedAuthenticationOrgIds; }