|
@@ -2,6 +2,8 @@ package com.yonge.cooleshow.biz.dal.service.impl;
|
|
|
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.google.common.collect.Lists;
|
|
|
+import com.microsvc.toolkit.middleware.im.ImPluginContext;
|
|
|
+import com.microsvc.toolkit.middleware.im.properties.ImConfigProperties;
|
|
|
import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
|
|
|
import com.yonge.cooleshow.auth.api.entity.SysUser;
|
|
|
import com.yonge.cooleshow.auth.config.AppGlobalServiceConfig;
|
|
@@ -31,12 +33,14 @@ import com.yonge.cooleshow.biz.dal.service.ImUserFriendService;
|
|
|
import com.yonge.cooleshow.biz.dal.service.StudentStarService;
|
|
|
import com.yonge.cooleshow.biz.dal.service.SysUserService;
|
|
|
import com.yonge.cooleshow.biz.dal.service.TeacherService;
|
|
|
+import com.yonge.cooleshow.biz.dal.wrapper.im.ImGroupWrapper;
|
|
|
import com.yonge.toolset.base.exception.BizException;
|
|
|
import com.yonge.toolset.base.util.ThreadPool;
|
|
|
import io.rong.models.Result;
|
|
|
import io.rong.models.group.GroupMember;
|
|
|
import io.rong.models.group.GroupModel;
|
|
|
import org.apache.commons.collections.CollectionUtils;
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
|
import org.redisson.api.RBucket;
|
|
|
import org.redisson.api.RedissonClient;
|
|
|
import org.slf4j.Logger;
|
|
@@ -95,11 +99,79 @@ public class ImGroupServiceImpl extends ServiceImpl<ImGroupDao, ImGroup> impleme
|
|
|
@Autowired
|
|
|
private StudentStarService studentStarService;
|
|
|
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private ImPluginContext imPluginContext;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private ImConfigProperties imConfig;
|
|
|
+
|
|
|
@Override
|
|
|
public ImGroupDao getDao() {
|
|
|
return this.baseMapper;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+
|
|
|
+ * IM 用户注册
|
|
|
+ *
|
|
|
+ * @param userId 用户ID
|
|
|
+ * @param username 用户名
|
|
|
+ * @param avatar 用户头象
|
|
|
+ * @return IM聊天Token
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public ImGroupWrapper.ImUserInfo register(String userId, String username, String avatar) throws Exception {
|
|
|
+
|
|
|
+ ImGroupWrapper.ImUserInfo userInfo = ImGroupWrapper.ImUserInfo.builder()
|
|
|
+ .imUserId("").imToken("").build();
|
|
|
+
|
|
|
+ try {
|
|
|
+
|
|
|
+
|
|
|
+ String imUserId = getImUserId(userId);
|
|
|
+
|
|
|
+
|
|
|
+ userInfo.imUserId(imUserId)
|
|
|
+ .setImToken(imPluginContext.getPluginService().register(imUserId, username, avatar));
|
|
|
+
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("register ImToken EX, userId={}, username={}", userId, username, e);
|
|
|
+ }
|
|
|
+ return userInfo;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ * IM 用户注册
|
|
|
+ *
|
|
|
+ * @param userId 用户Id
|
|
|
+ * @return String
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public String getImUserId(String userId) {
|
|
|
+ String imUserId = userId;
|
|
|
+ if (StringUtils.isNotBlank(imConfig.getAppPrefix()) && !userId.startsWith(imConfig.getAppPrefix())) {
|
|
|
+ imUserId = MessageFormat.format("{0}:{1}", imConfig.getAppPrefix(), userId);
|
|
|
+ }
|
|
|
+ return imUserId;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ * 解析IM用户规则
|
|
|
+ *
|
|
|
+ * @param imUserId IM用户Id
|
|
|
+ * @return String
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public String analysisImUserId(String imUserId) {
|
|
|
+ if (StringUtils.isNotBlank(imConfig.getAppPrefix())) {
|
|
|
+ return imUserId.replace(imConfig.getAppPrefix() + ":", "");
|
|
|
+ }
|
|
|
+ return imUserId;
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public void create(ImGroup imGroup) throws Exception {
|