diff --git a/im-center-server/src/main/java/cn/axzo/im/entity/AccountRegister.java b/im-center-server/src/main/java/cn/axzo/im/entity/AccountRegister.java index 0162a72..ab7fd63 100644 --- a/im-center-server/src/main/java/cn/axzo/im/entity/AccountRegister.java +++ b/im-center-server/src/main/java/cn/axzo/im/entity/AccountRegister.java @@ -58,6 +58,13 @@ public class AccountRegister extends BaseEntity implements Ser */ @TableField("app_key") private String appKey; + + /** + * channel 服务提供商 + */ + @TableField("channel_provider") + private String channelProvider; + /** * 账户类型:机器人、普通用户 */ diff --git a/im-center-server/src/main/java/cn/axzo/im/service/AccountService.java b/im-center-server/src/main/java/cn/axzo/im/service/AccountService.java index 1543013..76f0c97 100644 --- a/im-center-server/src/main/java/cn/axzo/im/service/AccountService.java +++ b/im-center-server/src/main/java/cn/axzo/im/service/AccountService.java @@ -60,9 +60,8 @@ public class AccountService { } String userIdWrapper = userAccountReq.getUserId() + "_" + appTypeEnum.getCode(); //后续AppKey可能会更换,普通用户通过userId、appType、appKey维度来保证唯一性 - UserAccountResp userAccountResp = createAccountRegister(userAccountReq.getUserId(), - userIdWrapper, appType, AccountTypeEnum.USER.getCode(), - userAccountReq.getHeadImageUrl(), userAccountReq.getNickName()); + UserAccountResp userAccountResp = createAccountRegister(userAccountReq.getUserId(), userIdWrapper, appType, + AccountTypeEnum.USER.getCode(), userAccountReq.getHeadImageUrl(), userAccountReq.getNickName()); return userAccountResp; } @@ -82,23 +81,25 @@ public class AccountService { public UserAccountResp createAccountRegister(String userId, String userIdWrapper, String appType, String accountType, String headImageUrl, String nickName) { //1.检查账户是否已经创建 + String appKey = imChannelProvider.getProviderAppKey(); AccountRegister accountRegister = accountRegisterDao.lambdaQuery().eq(AccountRegister::getIsDelete, 0) .eq(AccountRegister::getAccountWrapper, userIdWrapper) - .eq(AccountRegister::getAppKey, imChannelProvider.getProviderAppKey()).one(); + .eq(AccountRegister::getAppKey, appKey).one(); if (accountRegister == null) { accountRegister = new AccountRegister(); } if (StringUtils.isBlank(accountRegister.getImAccount())) { //2.重新注册账户,如果已注册,就查询该账户信息 - UserAccountResp accountResp = createNimAccount(userIdWrapper, headImageUrl, nickName, imChannelProvider.getProviderAppKey()); + UserAccountResp accountResp = createNimAccount(userIdWrapper, headImageUrl, nickName, appKey); if (accountResp != null && StringUtils.isNotBlank(accountResp.getImAccount())) { accountRegister.setImAccount(accountResp.getImAccount()); accountRegister.setToken(accountResp.getToken()); - accountRegister.setAppKey(imChannelProvider.getProviderAppKey()); + accountRegister.setAppKey(appKey); accountRegister.setAccountId(userId); accountRegister.setAccountWrapper(userIdWrapper); accountRegister.setAccountType(accountType); accountRegister.setAppType(appType); + accountRegister.setChannelProvider(imChannelProvider.getProviderAppKey()); accountRegister.setCreateAt(new Date()); accountRegister.setUpdateAt(new Date()); accountRegisterDao.saveOrUpdate(accountRegister); diff --git a/sql/init.sql b/sql/init.sql index cee7f52..2119209 100644 --- a/sql/init.sql +++ b/sql/init.sql @@ -38,17 +38,18 @@ create index idx_im_robot_id CREATE TABLE IF NOT EXISTS im_account_register ( - id bigint auto_increment comment '主键', - account_id varchar(100) not null comment '用户账户:机器人robotId、普通用户userId', - account_wrapper varchar(100) not null comment '普通用户账户,通过appType包装', - app_key varchar(100) not null comment '网易云信app_key', - im_account varchar(100) default '' not null comment '已生成IM账号', - account_type varchar(20) default '' not null comment '账户类型:机器人、普通用户', - app_type varchar(20) default '' not null comment 'App终端类型:WORKER、ENTERPRISE、SYSTEM', - token varchar(100) default '' not null comment '网易云信静态token', - is_delete tinyint default 0 not null comment '未删除0,删除id', - create_at datetime default CURRENT_TIMESTAMP not null comment '创建时间', - update_at datetime default CURRENT_TIMESTAMP not null comment '更新时间', + id bigint auto_increment comment '主键', + account_id varchar(100) not null comment '用户账户:机器人robotId、普通用户userId', + account_wrapper varchar(100) not null comment '普通用户账户,通过appType包装', + app_key varchar(100) not null comment '网易云信app_key', + channel_provider varchar(20) not null comment 'IM服务提供商', + im_account varchar(100) default '' not null comment '已生成IM账号', + account_type varchar(20) default '' not null comment '账户类型:机器人、普通用户', + app_type varchar(20) default '' not null comment 'App终端类型:WORKER、ENTERPRISE、SYSTEM', + token varchar(100) default '' not null comment '网易云信静态token', + is_delete tinyint default 0 not null comment '未删除0,删除id', + create_at datetime default CURRENT_TIMESTAMP not null comment '创建时间', + update_at datetime default CURRENT_TIMESTAMP not null comment '更新时间', PRIMARY KEY (`id`) ) ENGINE = InnoDB DEFAULT CHARSET = utf8 comment 'IM注册账户表';