yuanliang 10 ay önce
ebeveyn
işleme
86e5869693

+ 12 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/ImGroup.java

@@ -71,6 +71,10 @@ public class ImGroup implements Serializable {
     @ApiModelProperty(value = "课程组id")
     private Long courseGroupId;
 
+    @TableField("config_json_")
+    @ApiModelProperty(value = "群聊配置")
+    private String configJson;
+
     public Long getCourseGroupId() {
         return courseGroupId;
     }
@@ -166,5 +170,13 @@ public class ImGroup implements Serializable {
     public void setType(ImGroupType type) {
         this.type = type;
     }
+
+    public String getConfigJson() {
+        return configJson;
+    }
+
+    public void setConfigJson(String configJson) {
+        this.configJson = configJson;
+    }
 }
 

+ 25 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/ImGroupMember.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.yonge.cooleshow.biz.dal.enums.ImGroupMemberRoleType;
+import com.yonge.cooleshow.biz.dal.enums.im.EImGroupMemberRoleType;
 import com.yonge.toolset.base.enums.BaseEnum;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -56,6 +57,14 @@ public class ImGroupMember implements Serializable {
     @ApiModelProperty(value = "修改时间;")
     private Date updateTime;
 
+    @TableField("group_role_type_")
+    @ApiModelProperty(value = "群角色")
+    private EImGroupMemberRoleType groupRoleType;
+
+    @TableField("group_mute_")
+    @ApiModelProperty(value = "禁言")
+    private Boolean groupMute;
+
     @TableField(exist = false)
     @ApiModelProperty(value = "IM用户ID")
     private String imUserId;
@@ -153,5 +162,21 @@ public class ImGroupMember implements Serializable {
     public void setImUserId(String imUserId) {
         this.imUserId = imUserId;
     }
+
+    public EImGroupMemberRoleType getGroupRoleType() {
+        return groupRoleType;
+    }
+
+    public void setGroupRoleType(EImGroupMemberRoleType groupRoleType) {
+        this.groupRoleType = groupRoleType;
+    }
+
+    public Boolean getGroupMute() {
+        return groupMute;
+    }
+
+    public void setGroupMute(Boolean groupMute) {
+        this.groupMute = groupMute;
+    }
 }
 

+ 28 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/im/EImGroupMemberRoleType.java

@@ -0,0 +1,28 @@
+package com.yonge.cooleshow.biz.dal.enums.im;
+
+import com.baomidou.mybatisplus.annotation.EnumValue;
+import com.yonge.toolset.base.enums.BaseEnum;
+import lombok.Getter;
+
+/**
+ * 群成员角色
+ */
+@Getter
+public enum EImGroupMemberRoleType implements BaseEnum<String, EImGroupMemberRoleType> {
+
+    Owner("群主"),
+    Admin("管理员"),
+    Member("普通成员"),
+    ;
+
+    @EnumValue
+    private final String code;
+
+    private final String msg;
+
+    EImGroupMemberRoleType(String msg) {
+        this.msg = msg;
+
+        this.code = this.name();
+    }
+}

+ 6 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/im/impl/ImGroupCoreServiceImpl.java

@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.dayaedu.cbs.common.enums.EClientType;
 import com.google.common.collect.Lists;
 import com.microsvc.toolkit.common.tools.ThreadPool;
 import com.microsvc.toolkit.middleware.im.ImPluginContext;
@@ -14,11 +15,14 @@ import com.yonge.cooleshow.biz.dal.entity.ImGroupMember;
 import com.yonge.cooleshow.biz.dal.entity.ImGroupMemberAudit;
 import com.yonge.cooleshow.biz.dal.enums.AuditStatusEnum;
 import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
+import com.yonge.cooleshow.biz.dal.enums.ImGroupMemberRoleType;
 import com.yonge.cooleshow.biz.dal.enums.RoleEnum;
+import com.yonge.cooleshow.biz.dal.enums.im.EImGroupMemberRoleType;
 import com.yonge.cooleshow.biz.dal.service.ImGroupMemberAuditService;
 import com.yonge.cooleshow.biz.dal.service.ImGroupMemberService;
 import com.yonge.cooleshow.biz.dal.service.ImGroupService;
 import com.yonge.cooleshow.biz.dal.service.im.ImGroupCoreService;
+import com.yonge.cooleshow.biz.dal.wrapper.TenantActivationCodeWrapper;
 import com.yonge.cooleshow.biz.dal.wrapper.im.ImGroupMemberAuditWrapper;
 import com.yonge.cooleshow.biz.dal.wrapper.im.ImGroupMemberWrapper;
 import com.yonge.cooleshow.biz.dal.wrapper.im.ImGroupWrapper;
@@ -179,6 +183,8 @@ public class ImGroupCoreServiceImpl implements ImGroupCoreService {
 
         ImGroup group = JSON.parseObject(imGroup.jsonString(), ImGroup.class);
         group.setId(imGroup.getGroupId());
+        // 创建群默认全员禁言
+        group.setConfigJson(ImGroupWrapper.ImGroupConfigJson.builder().mute(true).build().toJson());
         // 保存群组信息
         imGroupService.saveOrUpdate(group);
 

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

@@ -15,6 +15,7 @@ import com.yonge.cooleshow.biz.dal.entity.ImGroup;
 import com.yonge.cooleshow.biz.dal.entity.ImGroupMember;
 import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
 import com.yonge.cooleshow.biz.dal.enums.ImGroupMemberRoleType;
+import com.yonge.cooleshow.biz.dal.enums.im.EImGroupMemberRoleType;
 import com.yonge.cooleshow.biz.dal.service.ImGroupMemberService;
 import com.yonge.cooleshow.biz.dal.service.ImGroupService;
 import com.yonge.cooleshow.biz.dal.service.im.ImGroupCoreService;
@@ -70,6 +71,14 @@ public class ImGroupMemberServiceImpl extends ServiceImpl<ImGroupMemberDao, ImGr
         if(CollectionUtils.isEmpty(imGroupMembers)){
             throw new BizException("群成员列表不可为空");
         }
+        for (ImGroupMember imGroupMember : imGroupMembers) {
+            imGroupMember.setGroupMute(false);
+            if (Boolean.TRUE.equals(imGroupMember.getIsAdmin())) {
+                imGroupMember.setGroupRoleType(EImGroupMemberRoleType.Owner);
+            } else {
+                imGroupMember.setGroupRoleType(ImGroupMemberRoleType.TEACHER.equals(imGroupMember.getRoleType()) ? EImGroupMemberRoleType.Admin : EImGroupMemberRoleType.Member);
+            }
+        }
         this.baseMapper.insertBatch(imGroupMembers);
     }
 
@@ -82,6 +91,12 @@ public class ImGroupMemberServiceImpl extends ServiceImpl<ImGroupMemberDao, ImGr
         Date date = new Date();
         imGroupMember.setCreateTime(date);
         imGroupMember.setUpdateTime(date);
+        imGroupMember.setGroupMute(false);
+        if (Boolean.TRUE.equals(isAdmin)) {
+            imGroupMember.setGroupRoleType(EImGroupMemberRoleType.Owner);
+        } else {
+            imGroupMember.setGroupRoleType(ImGroupMemberRoleType.TEACHER.equals(roleType) ? EImGroupMemberRoleType.Admin : EImGroupMemberRoleType.Member);
+        }
         this.baseMapper.insert(imGroupMember);
         //加入融云群
         List<ImGroupMember> groupMemberList = new ArrayList<>();
@@ -103,6 +118,13 @@ public class ImGroupMemberServiceImpl extends ServiceImpl<ImGroupMemberDao, ImGr
                 item.setRoleType(roleType);
                 // 管理员村识
                 item.setIsAdmin(ImGroupMemberRoleType.TEACHER == roleType);
+                // 默认不禁言
+                item.setGroupMute(false);
+                if (Boolean.TRUE.equals(item.getIsAdmin())) {
+                    item.setGroupRoleType(EImGroupMemberRoleType.Owner);
+                } else {
+                    item.setGroupRoleType(ImGroupMemberRoleType.TEACHER.equals(roleType) ? EImGroupMemberRoleType.Admin : EImGroupMemberRoleType.Member);
+                }
             }
             baseMapper.insertBatch(imGroupMembers);
 
@@ -136,6 +158,9 @@ public class ImGroupMemberServiceImpl extends ServiceImpl<ImGroupMemberDao, ImGr
                     .isAdmin(groupMember.getIsAdmin())
                     .imUserId(imGroupCoreService.getImUserId(groupMember.getUserId().toString(), groupMember.getRoleType().getCode()))
                     .roleType(groupMember.getRoleType().getCode())
+                    .groupMute(groupMember.getGroupMute())
+                    .groupRoleType(groupMember.getIsAdmin()?EImGroupMemberRoleType.Owner:
+                            (ImGroupMemberRoleType.TEACHER.equals(groupMember.getRoleType())?EImGroupMemberRoleType.Admin:EImGroupMemberRoleType.Member))
                     .build());
         }
         // 添加群成员到当前群组

+ 9 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/wrapper/im/ImGroupMemberWrapper.java

@@ -1,7 +1,9 @@
 package com.yonge.cooleshow.biz.dal.wrapper.im;
 
 import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.microsvc.toolkit.common.response.paging.QueryInfo;
+import com.yonge.cooleshow.biz.dal.enums.im.EImGroupMemberRoleType;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.AllArgsConstructor;
@@ -97,6 +99,13 @@ public class ImGroupMemberWrapper {
         @ApiModelProperty("IM用户ID")
         private String imUserId;
 
+        @ApiModelProperty(value = "群角色")
+        private EImGroupMemberRoleType groupRoleType;
+
+        @ApiModelProperty(value = "禁言")
+        private Boolean groupMute;
+
+
         @ApiModelProperty("加入群组标识")
         private Boolean groupJoin;
 

+ 22 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/wrapper/im/ImGroupWrapper.java

@@ -120,6 +120,9 @@ public class ImGroupWrapper {
         @ApiModelProperty("创建时间")
         private Date createTime;
 
+        @ApiModelProperty("群聊配置")
+        private String configJson;
+
         private Set<Long> studentIdList = new HashSet<>();
 
         private Set<String> imUserIdList = new HashSet<>();
@@ -167,4 +170,23 @@ public class ImGroupWrapper {
             return this;
         }
     }
+
+    /**
+     * 群配置
+     */
+    @Data
+    @Builder
+    @NoArgsConstructor
+    @AllArgsConstructor
+    public static class ImGroupConfigJson {
+
+        // 群禁言
+        private Boolean mute;
+
+        public String toJson() {
+            return JSON.toJSONString(this);
+        }
+
+    }
+
 }

+ 5 - 3
cooleshow-user/user-biz/src/main/resources/config/mybatis/ImGroupMemberMapper.xml

@@ -13,7 +13,7 @@
     </resultMap>
 
     <sql id="Base_Column_List">
-        id_ , group_id_, user_id_, nickname_, is_admin_, role_type_, create_time_, update_time_
+        id_ , group_id_, user_id_, nickname_, is_admin_, role_type_, create_time_, update_time_,group_role_type_,group_mute_
     </sql>
 
     <insert id="insertBatch" keyColumn="id_" keyProperty="id" useGeneratedKeys="true"
@@ -60,8 +60,10 @@
         <result property="nickname" column="nick_name_"/>
         <result property="avatar" column="avatar_"/>
         <result property="roleType" column="role_type_"/>
-        <result property="createTime" column="now_"/>
-        <result property="updateTime" column="now_"/>
+        <result property="createTime" column="create_time_"/>
+        <result property="updateTime" column="update_time_"/>
+        <result property="groupRoleType" column="group_role_type_"/>
+        <result property="groupMute" column="group_mute_"/>
     </resultMap>
     <select id="initImGroupMember" resultMap="ImGroupMember">
         SELECT #{imGroupId} group_id_,su.id_ user_id_, 0 is_admin_,su.username_ nick_name_,