zouxuan 3 tahun lalu
induk
melakukan
d834159de1
31 mengubah file dengan 1428 tambahan dan 1 penghapusan
  1. 21 0
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/ImGroupController.java
  2. 29 0
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/ImGroupMemberController.java
  3. 29 0
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/ImGroupNoticeController.java
  4. 29 0
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/ImUserFriendController.java
  5. 24 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/config/RongCloudConfig.java
  6. 20 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/ImGroupDao.java
  7. 22 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/ImGroupMemberDao.java
  8. 20 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/ImGroupNoticeDao.java
  9. 20 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/ImUserFriendDao.java
  10. 9 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/TeacherDao.java
  11. 43 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/BasicUserInfo.java
  12. 27 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/ImGroupDto.java
  13. 167 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/ImGroup.java
  14. 151 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/ImGroupMember.java
  15. 144 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/ImGroupNotice.java
  16. 108 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/ImUserFriend.java
  17. 50 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/ImGroupMemberService.java
  18. 17 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/ImGroupNoticeService.java
  19. 34 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/ImGroupService.java
  20. 17 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/ImUserFriendService.java
  21. 65 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/ImGroupMemberServiceImpl.java
  22. 29 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/ImGroupNoticeServiceImpl.java
  23. 105 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/ImGroupServiceImpl.java
  24. 29 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/ImUserFriendServiceImpl.java
  25. 44 0
      cooleshow-user/user-biz/src/main/resources/config/mybatis/ImGroupMapper.xml
  26. 35 0
      cooleshow-user/user-biz/src/main/resources/config/mybatis/ImGroupMemberMapper.xml
  27. 33 0
      cooleshow-user/user-biz/src/main/resources/config/mybatis/ImGroupNoticeMapper.xml
  28. 29 0
      cooleshow-user/user-biz/src/main/resources/config/mybatis/ImUserFriendMapper.xml
  29. 8 0
      cooleshow-user/user-biz/src/main/resources/config/mybatis/TeacherMapper.xml
  30. 69 0
      cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/ImGroupController.java
  31. 1 1
      toolset/thirdparty-component/src/main/java/com/yonge/toolset/thirdparty/entity/SysEmail.java

+ 21 - 0
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/ImGroupController.java

@@ -0,0 +1,21 @@
+package com.yonge.cooleshow.admin.controller;
+
+
+import com.yonge.cooleshow.common.controller.BaseController;
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * 即时通讯群组(ImGroup)表控制层
+ *
+ * @author zx
+ * @since 2022-03-22 10:45:56
+ */
+@Api(tags = "即时通讯群组")
+@RestController
+@RequestMapping("/imGroup")
+public class ImGroupController extends BaseController {
+
+}
+

+ 29 - 0
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/ImGroupMemberController.java

@@ -0,0 +1,29 @@
+package com.yonge.cooleshow.admin.controller;
+
+
+import com.yonge.cooleshow.biz.dal.service.ImGroupMemberService;
+import com.yonge.cooleshow.common.controller.BaseController;
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+
+/**
+ * 群成员表(ImGroupMember)表控制层
+ *
+ * @author zx
+ * @since 2022-03-22 10:45:57
+ */
+@Api(tags = "群成员表")
+@RestController
+@RequestMapping("/imGroupMember")
+public class ImGroupMemberController extends BaseController {
+    /**
+     * 服务对象
+     */
+    @Resource
+    private ImGroupMemberService imGroupMemberService;
+
+}
+

+ 29 - 0
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/ImGroupNoticeController.java

@@ -0,0 +1,29 @@
+package com.yonge.cooleshow.admin.controller;
+
+
+import com.yonge.cooleshow.biz.dal.service.ImGroupNoticeService;
+import com.yonge.cooleshow.common.controller.BaseController;
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+
+/**
+ * 群公告(ImGroupNotice)表控制层
+ *
+ * @author zx
+ * @since 2022-03-22 10:45:58
+ */
+@Api(tags = "群公告")
+@RestController
+@RequestMapping("/imGroupNotice")
+public class ImGroupNoticeController extends BaseController {
+    /**
+     * 服务对象
+     */
+    @Resource
+    private ImGroupNoticeService imGroupNoticeService;
+
+}
+

+ 29 - 0
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/ImUserFriendController.java

@@ -0,0 +1,29 @@
+package com.yonge.cooleshow.admin.controller;
+
+
+import com.yonge.cooleshow.biz.dal.service.ImUserFriendService;
+import com.yonge.cooleshow.common.controller.BaseController;
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+
+/**
+ * 用户通讯录表(ImUserFriend)表控制层
+ *
+ * @author zx
+ * @since 2022-03-22 10:45:59
+ */
+@Api(tags = "用户通讯录表")
+@RestController
+@RequestMapping("/imUserFriend")
+public class ImUserFriendController extends BaseController {
+    /**
+     * 服务对象
+     */
+    @Resource
+    private ImUserFriendService imUserFriendService;
+
+}
+

+ 24 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/config/RongCloudConfig.java

@@ -0,0 +1,24 @@
+package com.yonge.cooleshow.biz.dal.config;
+
+import io.rong.RongCloud;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Primary;
+
+@Configuration
+public class RongCloudConfig {
+
+    @Value("${cn.rongcloud.im.appkey}")
+    private String appKey;
+    @Value("${cn.rongcloud.im.secret}")
+    private String appSecret;
+
+    public static RongCloud rongCloud;
+
+    @Bean
+    @Primary
+    public void getRongCloud() {
+        rongCloud = RongCloud.getInstance(appKey,appSecret);
+    }
+}

+ 20 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/ImGroupDao.java

@@ -0,0 +1,20 @@
+package com.yonge.cooleshow.biz.dal.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.yonge.cooleshow.biz.dal.entity.ImGroup;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * 即时通讯群组(ImGroup)表数据库访问层
+ *
+ * @author zx
+ * @since 2022-03-22 10:45:56
+ */
+public interface ImGroupDao extends BaseMapper<ImGroup> {
+
+    int insertBatch(@Param("entities") List<ImGroup> entities);
+
+}
+

+ 22 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/ImGroupMemberDao.java

@@ -0,0 +1,22 @@
+package com.yonge.cooleshow.biz.dal.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.yonge.cooleshow.biz.dal.entity.ImGroupMember;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Set;
+
+/**
+ * 群成员表(ImGroupMember)表数据库访问层
+ *
+ * @author zx
+ * @since 2022-03-22 10:45:57
+ */
+public interface ImGroupMemberDao extends BaseMapper<ImGroupMember> {
+
+    int insertBatch(@Param("entities") List<ImGroupMember> entities);
+
+    void delByGroupId(@Param("groupId") Long groupId);
+}
+

+ 20 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/ImGroupNoticeDao.java

@@ -0,0 +1,20 @@
+package com.yonge.cooleshow.biz.dal.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.yonge.cooleshow.biz.dal.entity.ImGroupNotice;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * 群公告(ImGroupNotice)表数据库访问层
+ *
+ * @author zx
+ * @since 2022-03-22 10:45:59
+ */
+public interface ImGroupNoticeDao extends BaseMapper<ImGroupNotice> {
+
+    int insertBatch(@Param("entities") List<ImGroupNotice> entities);
+
+}
+

+ 20 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/ImUserFriendDao.java

@@ -0,0 +1,20 @@
+package com.yonge.cooleshow.biz.dal.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.yonge.cooleshow.biz.dal.entity.ImUserFriend;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * 用户通讯录表(ImUserFriend)表数据库访问层
+ *
+ * @author zx
+ * @since 2022-03-22 10:45:59
+ */
+public interface ImUserFriendDao extends BaseMapper<ImUserFriend> {
+
+    int insertBatch(@Param("entities") List<ImUserFriend> entities);
+
+}
+

+ 9 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/TeacherDao.java

@@ -4,6 +4,7 @@ import java.util.List;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.yonge.cooleshow.biz.dal.dto.BasicUserInfo;
 import com.yonge.cooleshow.biz.dal.entity.Teacher;
 import org.apache.ibatis.annotations.Param;
 
@@ -16,4 +17,12 @@ public interface TeacherDao extends BaseMapper<Teacher> {
 
     Teacher detail1(@Param("userId") Long userId);
 
+    /**
+    * @description: 获取用户基本信息
+     * @param userId
+    * @return com.yonge.cooleshow.biz.dal.dto.BasicUserInfo
+    * @author zx
+    * @date 2022/3/22 13:52
+    */
+    BasicUserInfo getBasicUserInfo(@Param("userId") Long userId);
 }

+ 43 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/BasicUserInfo.java

@@ -0,0 +1,43 @@
+package com.yonge.cooleshow.biz.dal.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+* @description: 用户基本信息
+* @author zx
+* @date 2022/3/22 13:51
+*/
+public class BasicUserInfo {
+    @ApiModelProperty(value = "用户编号", required = true)
+    private Long userId;
+
+    @ApiModelProperty(value = "sys_user表username_", required = true)
+    private String username;
+
+    @ApiModelProperty(value = "sys_user表real_name_", required = true)
+    private String realName;
+
+    public Long getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Long userId) {
+        this.userId = userId;
+    }
+
+    public String getUsername() {
+        return username;
+    }
+
+    public void setUsername(String username) {
+        this.username = username;
+    }
+
+    public String getRealName() {
+        return realName;
+    }
+
+    public void setRealName(String realName) {
+        this.realName = realName;
+    }
+}

+ 27 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/ImGroupDto.java

@@ -0,0 +1,27 @@
+package com.yonge.cooleshow.biz.dal.dto;
+
+
+import com.yonge.cooleshow.biz.dal.entity.ImGroup;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.util.Set;
+
+/**
+ *
+ * @author zx
+ * @since 2022-03-22 10:45:57
+ */
+public class ImGroupDto extends ImGroup {
+
+    @ApiModelProperty(value = "群成员列表")
+    private Set<Long> groupMemberList;
+
+    public Set<Long> getGroupMemberList() {
+        return groupMemberList;
+    }
+
+    public void setGroupMemberList(Set<Long> groupMemberList) {
+        this.groupMemberList = groupMemberList;
+    }
+}
+

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

@@ -0,0 +1,167 @@
+package com.yonge.cooleshow.biz.dal.entity;
+
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.yonge.cooleshow.common.enums.BaseEnum;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 即时通讯群组(ImGroup)表实体类
+ *
+ * @author zx
+ * @since 2022-03-22 10:45:57
+ */
+@ApiModel(value = "im_group-即时通讯群组")
+public class ImGroup implements Serializable {
+    @TableId(value = "id_", type = IdType.AUTO)
+    @NotNull(message = "群编号不可为空")
+    @ApiModelProperty(value = "主键;")
+    private Long id;
+
+    @NotBlank(message = "群名称不能为空")
+    @TableField("name_")
+    @ApiModelProperty(value = "群名称")
+    private String name;
+
+    @TableField("introduce_")
+    @ApiModelProperty(value = "群简介")
+    private String introduce;
+
+    @TableField("member_num_")
+    @ApiModelProperty(value = "群成员数")
+    private Integer memberNum;
+
+    @TableField("memo_")
+    @ApiModelProperty(value = "群备注")
+    private String memo;
+
+    @TableField("img_")
+    @ApiModelProperty(value = "群头像")
+    private String img;
+
+    @TableField("type_")
+    @ApiModelProperty(value = "群类型:FAN粉丝群、COURSE课程群;")
+    private ImGroupType type;
+
+    @TableField("create_by_")
+    @ApiModelProperty(value = "创建人")
+    private Long createBy;
+
+    @TableField("create_time_")
+    @ApiModelProperty(value = "创建时间;")
+    private Date createTime;
+
+    @TableField("update_time_")
+    @ApiModelProperty(value = "修改时间;")
+    private Date updateTime;
+
+    public enum ImGroupType implements BaseEnum<String, ImGroupType> {
+        FAN("粉丝群"),
+        COURSE("课程群");
+
+        private String msg;
+
+        ImGroupType(String msg) {
+            this.msg = msg;
+        }
+
+        public String getMsg() {
+            return msg;
+        }
+
+        @Override
+        public String getCode() {
+            return super.name();
+        }
+    }
+
+    public Long getCreateBy() {
+        return createBy;
+    }
+
+    public void setCreateBy(Long createBy) {
+        this.createBy = createBy;
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getIntroduce() {
+        return introduce;
+    }
+
+    public void setIntroduce(String introduce) {
+        this.introduce = introduce;
+    }
+
+    public Integer getMemberNum() {
+        return memberNum;
+    }
+
+    public void setMemberNum(Integer memberNum) {
+        this.memberNum = memberNum;
+    }
+
+    public String getMemo() {
+        return memo;
+    }
+
+    public void setMemo(String memo) {
+        this.memo = memo;
+    }
+
+    public String getImg() {
+        return img;
+    }
+
+    public void setImg(String img) {
+        this.img = img;
+    }
+
+    public ImGroupType getType() {
+        return type;
+    }
+
+    public void setType(ImGroupType type) {
+        this.type = type;
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    public Date getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Date updateTime) {
+        this.updateTime = updateTime;
+    }
+
+}
+

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

@@ -0,0 +1,151 @@
+package com.yonge.cooleshow.biz.dal.entity;
+
+
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.yonge.cooleshow.common.enums.BaseEnum;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.baomidou.mybatisplus.annotation.TableId;
+
+import java.io.Serializable;
+
+/**
+ * 群成员表(ImGroupMember)表实体类
+ *
+ * @author zx
+ * @since 2022-03-22 10:45:58
+ */
+@ApiModel(value = "im_group_member-群成员表")
+public class ImGroupMember implements Serializable {
+    @TableId(value = "id_", type = IdType.AUTO)
+    @ApiModelProperty(value = "主键;")
+    private Long id;
+
+    @TableField("im_group_id_")
+    @ApiModelProperty(value = "群编号;")
+    private Long imGroupId;
+
+    @TableField("user_id_")
+    @ApiModelProperty(value = "用户编号;")
+    private Long userId;
+
+    @TableField("nickname_")
+    @ApiModelProperty(value = "昵称;")
+    private String nickname;
+
+    @TableField("is_admin_")
+    @ApiModelProperty(value = "是否是管理员")
+    private Boolean isAdmin;
+
+    @TableField("role_type_")
+    @ApiModelProperty(value = "群角色TEACHER老师、STUDENT学生")
+    private ImGroupMemberRoleType roleType;
+
+    @TableField("create_time_")
+    @ApiModelProperty(value = "创建时间;")
+    private Date createTime;
+
+    @TableField("update_time_")
+    @ApiModelProperty(value = "修改时间;")
+    private Date updateTime;
+
+    public ImGroupMember() {
+    }
+
+    public ImGroupMember(Long imGroupId, Long userId, String nickname, Boolean isAdmin, ImGroupMemberRoleType roleType) {
+        this.imGroupId = imGroupId;
+        this.userId = userId;
+        this.nickname = nickname;
+        this.isAdmin = isAdmin;
+        this.roleType = roleType;
+    }
+
+    public enum ImGroupMemberRoleType implements BaseEnum<String, ImGroupMember.ImGroupMemberRoleType> {
+        TEACHER("老师"),
+        STUDENT("学生");
+
+        private String msg;
+
+        ImGroupMemberRoleType(String msg) {
+            this.msg = msg;
+        }
+
+        public String getMsg() {
+            return msg;
+        }
+
+        @Override
+        public String getCode() {
+            return super.name();
+        }
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getImGroupId() {
+        return imGroupId;
+    }
+
+    public void setImGroupId(Long imGroupId) {
+        this.imGroupId = imGroupId;
+    }
+
+    public Long getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Long userId) {
+        this.userId = userId;
+    }
+
+    public String getNickname() {
+        return nickname;
+    }
+
+    public void setNickname(String nickname) {
+        this.nickname = nickname;
+    }
+
+    public Boolean getIsAdmin() {
+        return isAdmin;
+    }
+
+    public void setIsAdmin(Boolean isAdmin) {
+        this.isAdmin = isAdmin;
+    }
+
+    public ImGroupMemberRoleType getRoleType() {
+        return roleType;
+    }
+
+    public void setRoleType(ImGroupMemberRoleType roleType) {
+        this.roleType = roleType;
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    public Date getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Date updateTime) {
+        this.updateTime = updateTime;
+    }
+
+}
+

+ 144 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/ImGroupNotice.java

@@ -0,0 +1,144 @@
+package com.yonge.cooleshow.biz.dal.entity;
+
+
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.baomidou.mybatisplus.annotation.TableId;
+
+import java.io.Serializable;
+
+/**
+ * 群公告(ImGroupNotice)表实体类
+ *
+ * @author zx
+ * @since 2022-03-22 10:45:59
+ */
+@ApiModel(value = "im_group_notice-群公告")
+public class ImGroupNotice implements Serializable {
+    @TableId(value = "id_", type = IdType.AUTO)
+    @ApiModelProperty(value = "主键;")
+    private Long id;
+
+    @TableField("im_group_id_")
+    @ApiModelProperty(value = "群编号;")
+    private Long imGroupId;
+
+    @TableField("title_")
+    @ApiModelProperty(value = "标题")
+    private String title;
+
+    @TableField("content_")
+    @ApiModelProperty(value = "内容")
+    private String content;
+
+    @TableField("is_top_")
+    @ApiModelProperty(value = "是否置顶")
+    private Object isTop;
+
+    @TableField("is_sent_to_new_member_")
+    @ApiModelProperty(value = "是否发送给新人")
+    private Object isSentToNewMember;
+
+    @TableField("del_flag_")
+    @ApiModelProperty(value = "是否删除1是0否;")
+    private Object delFlag;
+
+    @TableField("operator_id_")
+    @ApiModelProperty(value = "操作人")
+    private Long operatorId;
+
+    @TableField("create_time_")
+    @ApiModelProperty(value = "创建时间;")
+    private Date createTime;
+
+    @TableField("update_time_")
+    @ApiModelProperty(value = "修改时间;")
+    private Date updateTime;
+
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getImGroupId() {
+        return imGroupId;
+    }
+
+    public void setImGroupId(Long imGroupId) {
+        this.imGroupId = imGroupId;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public String getContent() {
+        return content;
+    }
+
+    public void setContent(String content) {
+        this.content = content;
+    }
+
+    public Object getIsTop() {
+        return isTop;
+    }
+
+    public void setIsTop(Object isTop) {
+        this.isTop = isTop;
+    }
+
+    public Object getIsSentToNewMember() {
+        return isSentToNewMember;
+    }
+
+    public void setIsSentToNewMember(Object isSentToNewMember) {
+        this.isSentToNewMember = isSentToNewMember;
+    }
+
+    public Object getDelFlag() {
+        return delFlag;
+    }
+
+    public void setDelFlag(Object delFlag) {
+        this.delFlag = delFlag;
+    }
+
+    public Long getOperatorId() {
+        return operatorId;
+    }
+
+    public void setOperatorId(Long operatorId) {
+        this.operatorId = operatorId;
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    public Date getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Date updateTime) {
+        this.updateTime = updateTime;
+    }
+
+}
+

+ 108 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/ImUserFriend.java

@@ -0,0 +1,108 @@
+package com.yonge.cooleshow.biz.dal.entity;
+
+
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.baomidou.mybatisplus.annotation.TableId;
+
+import java.io.Serializable;
+
+/**
+ * 用户通讯录表(ImUserFriend)表实体类
+ *
+ * @author zx
+ * @since 2022-03-22 10:46:00
+ */
+@ApiModel(value = "im_user_friend-用户通讯录表")
+public class ImUserFriend implements Serializable {
+    @TableId(value = "id_", type = IdType.AUTO)
+    @ApiModelProperty(value = "主键;")
+    private Long id;
+
+    @TableField("user_id_")
+    @ApiModelProperty(value = "当前用户编号")
+    private Long userId;
+
+    @TableField("friend_id_")
+    @ApiModelProperty(value = "好友编号")
+    private Long friendId;
+
+    @TableField("friend_nickname_")
+    @ApiModelProperty(value = "好友昵称")
+    private String friendNickname;
+
+    @TableField("memo_")
+    @ApiModelProperty(value = "备注")
+    private String memo;
+
+    @TableField("create_time_")
+    @ApiModelProperty(value = "创建时间;")
+    private Date createTime;
+
+    @TableField("update_time_")
+    @ApiModelProperty(value = "修改时间;")
+    private Date updateTime;
+
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Long userId) {
+        this.userId = userId;
+    }
+
+    public Long getFriendId() {
+        return friendId;
+    }
+
+    public void setFriendId(Long friendId) {
+        this.friendId = friendId;
+    }
+
+    public String getFriendNickname() {
+        return friendNickname;
+    }
+
+    public void setFriendNickname(String friendNickname) {
+        this.friendNickname = friendNickname;
+    }
+
+    public String getMemo() {
+        return memo;
+    }
+
+    public void setMemo(String memo) {
+        this.memo = memo;
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    public Date getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Date updateTime) {
+        this.updateTime = updateTime;
+    }
+
+}
+

+ 50 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/ImGroupMemberService.java

@@ -0,0 +1,50 @@
+package com.yonge.cooleshow.biz.dal.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.yonge.cooleshow.biz.dal.dao.ImGroupMemberDao;
+import com.yonge.cooleshow.biz.dal.entity.ImGroupMember;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+/**
+ * 群成员表(ImGroupMember)表服务接口
+ *
+ * @author zx
+ * @since 2022-03-22 10:45:58
+ */
+public interface ImGroupMemberService extends IService<ImGroupMember> {
+
+    ImGroupMemberDao getDao();
+
+    /**
+    * @description: 添加群成员
+     * @param imGroupMembers
+    * @return void
+    * @author zx
+    * @date 2022/3/22 14:02
+    */
+    void insertBatch(List<ImGroupMember> imGroupMembers);
+
+    /**
+    * @description: 添加群成员
+     * @param imGroupId
+     * @param userId
+     * @param isAdmin
+     * @param roleType
+    * @return void
+    * @author zx
+    * @date 2022/3/22 15:59
+    */
+    void addGroupMember(Long imGroupId, Long userId, Boolean isAdmin, ImGroupMember.ImGroupMemberRoleType roleType);
+
+    /**
+    * @description: 删除群成员
+     * @param groupId
+    * @return void
+    * @author zx
+    * @date 2022/3/22 16:21
+    */
+    void delByGroupId(Long groupId);
+}
+

+ 17 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/ImGroupNoticeService.java

@@ -0,0 +1,17 @@
+package com.yonge.cooleshow.biz.dal.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.yonge.cooleshow.biz.dal.dao.ImGroupNoticeDao;
+import com.yonge.cooleshow.biz.dal.entity.ImGroupNotice;
+
+/**
+ * 群公告(ImGroupNotice)表服务接口
+ *
+ * @author zx
+ * @since 2022-03-22 10:45:59
+ */
+public interface ImGroupNoticeService extends IService<ImGroupNotice> {
+
+    ImGroupNoticeDao getDao();
+}
+

+ 34 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/ImGroupService.java

@@ -0,0 +1,34 @@
+package com.yonge.cooleshow.biz.dal.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.yonge.cooleshow.biz.dal.dao.ImGroupDao;
+import com.yonge.cooleshow.biz.dal.dto.ImGroupDto;
+import com.yonge.cooleshow.biz.dal.entity.ImGroup;
+
+/**
+ * 即时通讯群组(ImGroup)表服务接口
+ *
+ * @author zx
+ * @since 2022-03-22 10:45:57
+ */
+public interface ImGroupService extends IService<ImGroup> {
+
+    ImGroupDao getDao();
+
+    /**
+    * @description: 创建群聊
+     * @param imGroup
+    * @author zx
+    * @date 2022/3/22 11:17
+    */
+    void create(ImGroupDto imGroup) throws Exception;
+
+    /**
+    * @description: 关闭群聊、解散
+     * @param groupId
+    * @author zx
+    * @date 2022/3/22 11:17
+    */
+    void dismiss(Long groupId) throws Exception;
+}
+

+ 17 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/ImUserFriendService.java

@@ -0,0 +1,17 @@
+package com.yonge.cooleshow.biz.dal.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.yonge.cooleshow.biz.dal.dao.ImUserFriendDao;
+import com.yonge.cooleshow.biz.dal.entity.ImUserFriend;
+
+/**
+ * 用户通讯录表(ImUserFriend)表服务接口
+ *
+ * @author zx
+ * @since 2022-03-22 10:46:00
+ */
+public interface ImUserFriendService extends IService<ImUserFriend> {
+
+    ImUserFriendDao getDao();
+}
+

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

@@ -0,0 +1,65 @@
+package com.yonge.cooleshow.biz.dal.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yonge.cooleshow.biz.dal.dao.ImGroupMemberDao;
+import com.yonge.cooleshow.biz.dal.dao.TeacherDao;
+import com.yonge.cooleshow.biz.dal.dto.BasicUserInfo;
+import com.yonge.cooleshow.biz.dal.entity.ImGroupMember;
+import com.yonge.cooleshow.biz.dal.service.ImGroupMemberService;
+import com.yonge.cooleshow.common.exception.BizException;
+import org.apache.commons.collections.CollectionUtils;
+import org.springframework.stereotype.Service;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+
+/**
+ * 群成员表(ImGroupMember)表服务实现类
+ *
+ * @author zx
+ * @since 2022-03-22 10:45:58
+ */
+@Service("imGroupMemberService")
+public class ImGroupMemberServiceImpl extends ServiceImpl<ImGroupMemberDao, ImGroupMember> implements ImGroupMemberService {
+
+    private final static Logger log = LoggerFactory.getLogger(ImGroupMemberServiceImpl.class);
+
+    @Resource
+    private TeacherDao teacherDao;
+
+    @Override
+    public ImGroupMemberDao getDao() {
+        return this.baseMapper;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void insertBatch(List<ImGroupMember> imGroupMembers) {
+        if(CollectionUtils.isEmpty(imGroupMembers)){
+            throw new BizException("群成员列表不可为空");
+        }
+        this.baseMapper.insertBatch(imGroupMembers);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void addGroupMember(Long imGroupId, Long userId, Boolean isAdmin, ImGroupMember.ImGroupMemberRoleType roleType){
+        List<ImGroupMember> imGroupMembers = new ArrayList<>();
+        BasicUserInfo basicUserInfo = teacherDao.getBasicUserInfo(userId);
+        imGroupMembers.add(new ImGroupMember(imGroupId,userId,basicUserInfo.getRealName(),isAdmin,roleType));
+        this.baseMapper.insertBatch(imGroupMembers);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void delByGroupId(Long groupId) {
+        this.baseMapper.delByGroupId(groupId);
+    }
+}
+

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

@@ -0,0 +1,29 @@
+package com.yonge.cooleshow.biz.dal.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yonge.cooleshow.biz.dal.dao.ImGroupNoticeDao;
+import com.yonge.cooleshow.biz.dal.entity.ImGroupNotice;
+import com.yonge.cooleshow.biz.dal.service.ImGroupNoticeService;
+import org.springframework.stereotype.Service;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * 群公告(ImGroupNotice)表服务实现类
+ *
+ * @author zx
+ * @since 2022-03-22 10:45:59
+ */
+@Service("imGroupNoticeService")
+public class ImGroupNoticeServiceImpl extends ServiceImpl<ImGroupNoticeDao, ImGroupNotice> implements ImGroupNoticeService {
+
+    private final static Logger log = LoggerFactory.getLogger(ImGroupNoticeServiceImpl.class);
+
+    @Override
+    public ImGroupNoticeDao getDao() {
+        return this.baseMapper;
+    }
+
+}
+

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

@@ -0,0 +1,105 @@
+package com.yonge.cooleshow.biz.dal.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yonge.cooleshow.biz.dal.config.RongCloudConfig;
+import com.yonge.cooleshow.biz.dal.dao.ImGroupDao;
+import com.yonge.cooleshow.biz.dal.dto.ImGroupDto;
+import com.yonge.cooleshow.biz.dal.entity.ImGroup;
+import com.yonge.cooleshow.biz.dal.entity.ImGroupMember;
+import com.yonge.cooleshow.biz.dal.service.ImGroupMemberService;
+import com.yonge.cooleshow.biz.dal.service.ImGroupService;
+import com.yonge.cooleshow.common.exception.BizException;
+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.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.util.*;
+
+/**
+ * 即时通讯群组(ImGroup)表服务实现类
+ *
+ * @author zx
+ * @since 2022-03-22 10:45:57
+ */
+@Service("imGroupService")
+public class ImGroupServiceImpl extends ServiceImpl<ImGroupDao, ImGroup> implements ImGroupService {
+
+    private final static Logger log = LoggerFactory.getLogger(ImGroupServiceImpl.class);
+
+    @Resource
+    private ImGroupMemberService imGroupMemberService;
+
+    @Override
+    public ImGroupDao getDao() {
+        return this.baseMapper;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void create(ImGroupDto imGroup) throws Exception {
+        Set<Long> groupMemberIdList = imGroup.getGroupMemberList();
+        if(CollectionUtils.isNotEmpty(groupMemberIdList)){
+            groupMemberIdList.removeAll(Collections.singleton(null));
+        }
+        if (CollectionUtils.isEmpty(groupMemberIdList)){
+            throw new BizException("群成员不可为空");
+        }
+        //创建本地群聊
+        Date now = new Date();
+        imGroup.setType(ImGroup.ImGroupType.FAN);
+        imGroup.setMemberNum(1);
+        imGroup.setCreateTime(now);
+        imGroup.setUpdateTime(now);
+        this.baseMapper.insert(imGroup);
+        Long imGroupId = imGroup.getId();
+        //创建融云群
+        this.rtcCreate(groupMemberIdList,imGroupId,imGroup.getName());
+        //创建成功,添加群成员
+        imGroupMemberService.addGroupMember(imGroupId,imGroup.getCreateBy(),true,ImGroupMember.ImGroupMemberRoleType.TEACHER);
+    }
+
+    //创建融云群
+    private void rtcCreate(Set<Long> groupMemberIdList,Long imGroupId,String imGroupName) throws Exception {
+        List<GroupMember> groupMemberList = new ArrayList<>();
+        for (Long userId : groupMemberIdList) {
+            groupMemberList.add(new GroupMember(userId.toString(),imGroupId.toString(),null));
+        }
+        //创建融云群
+        GroupMember[] groupMembers = groupMemberList.toArray(new GroupMember[groupMemberList.size()]);
+        GroupModel groupModel = new GroupModel(imGroupId.toString(),0);
+        groupModel.setMembers(groupMembers);
+        groupModel.setName(imGroupName);
+        Result result = RongCloudConfig.rongCloud.group.create(groupModel);
+        if(!result.code.equals(200)){
+            log.error("创建群聊失败:{}",result.errorMessage);
+            throw new BizException("创建群聊失败,请联系管理员");
+        }
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void dismiss(Long groupId) throws Exception {
+        ImGroup imGroup = this.baseMapper.selectById(groupId);
+        if(Objects.isNull(imGroup)){
+            throw new BizException("操作失败:群组不存在");
+        }
+        //解散融云群
+        GroupModel groupModel = new GroupModel(groupId.toString(),0);
+        Result result = RongCloudConfig.rongCloud.group.dismiss(groupModel);
+        if(!result.code.equals(200)){
+            log.error("解散群聊失败:{}",result.errorMessage);
+            throw new BizException("解散群聊失败,请联系管理员");
+        }
+        //销毁成功,删除群
+        this.baseMapper.deleteById(groupId);
+        //删除群成员
+        imGroupMemberService.delByGroupId(groupId);
+    }
+}
+

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

@@ -0,0 +1,29 @@
+package com.yonge.cooleshow.biz.dal.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yonge.cooleshow.biz.dal.dao.ImUserFriendDao;
+import com.yonge.cooleshow.biz.dal.entity.ImUserFriend;
+import com.yonge.cooleshow.biz.dal.service.ImUserFriendService;
+import org.springframework.stereotype.Service;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * 用户通讯录表(ImUserFriend)表服务实现类
+ *
+ * @author zx
+ * @since 2022-03-22 10:46:00
+ */
+@Service("imUserFriendService")
+public class ImUserFriendServiceImpl extends ServiceImpl<ImUserFriendDao, ImUserFriend> implements ImUserFriendService {
+
+    private final static Logger log = LoggerFactory.getLogger(ImUserFriendServiceImpl.class);
+
+    @Override
+    public ImUserFriendDao getDao() {
+        return this.baseMapper;
+    }
+
+}
+

+ 44 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/ImGroupMapper.xml

@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.yonge.cooleshow.biz.dal.dao.ImGroupDao">
+    <resultMap id="BaseResultMap" type="com.yonge.cooleshow.biz.dal.entity.ImGroup">
+        <id column="id_" jdbcType="INTEGER" property="id"/>
+        <result column="name_" jdbcType="VARCHAR" property="name"/>
+        <result column="introduce_" jdbcType="VARCHAR" property="introduce"/>
+        <result column="member_num_" jdbcType="INTEGER" property="memberNum"/>
+        <result column="memo_" jdbcType="VARCHAR" property="memo"/>
+        <result column="img_" jdbcType="VARCHAR" property="img"/>
+        <result column="type_" jdbcType="VARCHAR" property="type" typeHandler="com.yonge.cooleshow.common.dal.CustomEnumTypeHandler"/>
+        <result column="create_by_" property="createBy"/>
+        <result column="create_time_" jdbcType="TIMESTAMP" property="createTime"/>
+        <result column="update_time_" jdbcType="TIMESTAMP" property="updateTime"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        id_, name_, introduce_, member_num_, memo_, img_, type_,create_by_, create_time_, update_time_
+    </sql>
+
+    <update id="updateById" parameterType="com.yonge.cooleshow.biz.dal.entity.ImGroup">
+        update im_group
+        <set>
+            <if test="et.name != null">
+                name_ = #{et.name},
+            </if>
+            introduce_ = #{et.introduce},
+            memo_ = #{et.memo},
+            update_time_ = NOW()
+        </set>
+        where id_ = #{et.id}
+    </update>
+
+    <insert id="insertBatch" keyColumn="id_" keyProperty="id" useGeneratedKeys="true"
+            parameterType="com.yonge.cooleshow.biz.dal.entity.ImGroup">
+        INSERT INTO im_group(name_, introduce_, member_num_, memo_, img_, type_,create_by_, create_time_, update_time_)
+        VALUES
+        <foreach collection="entities" item="entity" separator=",">
+            (#{entity.name}, #{entity.introduce}, #{entity.memberNum}, #{entity.memo}, #{entity.img},
+             #{entity.type,typeHandler=com.yonge.cooleshow.common.dal.CustomEnumTypeHandler},#{createBy}, NOW(), NOW())
+        </foreach>
+    </insert>
+
+</mapper>

+ 35 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/ImGroupMemberMapper.xml

@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.yonge.cooleshow.biz.dal.dao.ImGroupMemberDao">
+    <resultMap id="BaseResultMap" type="com.yonge.cooleshow.biz.dal.entity.ImGroupMember">
+        <id column="id_" jdbcType="INTEGER" property="id"/>
+        <result column="im_group_id_" jdbcType="INTEGER" property="imGroupId"/>
+        <result column="user_id_" jdbcType="INTEGER" property="userId"/>
+        <result column="nickname_" jdbcType="VARCHAR" property="nickname"/>
+        <result column="is_admin_" jdbcType="VARCHAR" property="isAdmin"/>
+        <result column="role_type_" jdbcType="VARCHAR" property="roleType"/>
+        <result column="create_time_" jdbcType="TIMESTAMP" property="createTime"/>
+        <result column="update_time_" jdbcType="TIMESTAMP" property="updateTime"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        id_ , im_group_id_, user_id_, nickname_, is_admin_, role_type_, create_time_, update_time_
+    </sql>
+
+    <insert id="insertBatch" keyColumn="id_" keyProperty="id" useGeneratedKeys="true"
+            parameterType="com.yonge.cooleshow.biz.dal.entity.ImGroupMember">
+        insert into im_group_member(im_group_id_, user_id_, nickname_, is_admin_, role_type_, create_time_,
+        update_time_)
+        values
+        <foreach collection="entities" item="entity" separator=",">
+            (#{entity.imGroupId}, #{entity.userId}, #{entity.nickname}, #{entity.isAdmin}, #{entity.roleType},NOW(), NOW())
+        </foreach>
+        ON DUPLICATE KEY UPDATE
+        user_id_ = VALUES(user_id_),
+        nickname_ = VALUES(nickname_),
+        role_type_ = VALUES(role_type_)
+    </insert>
+    <delete id="delByGroupId">
+        DELETE FROM im_group_member WHERE im_group_id_ = #{groupId}
+    </delete>
+</mapper>

+ 33 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/ImGroupNoticeMapper.xml

@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.yonge.cooleshow.biz.dal.dao.ImGroupNoticeDao">
+    <resultMap id="BaseResultMap" type="com.yonge.cooleshow.biz.dal.entity.ImGroupNotice">
+        <id column="id_" jdbcType="INTEGER" property="id"/>
+        <result column="im_group_id_" jdbcType="INTEGER" property="imGroupId"/>
+        <result column="title_" jdbcType="VARCHAR" property="title"/>
+        <result column="content_" jdbcType="VARCHAR" property="content"/>
+        <result column="is_top_" jdbcType="VARCHAR" property="isTop"/>
+        <result column="is_sent_to_new_member_" jdbcType="VARCHAR" property="isSentToNewMember"/>
+        <result column="del_flag_" jdbcType="VARCHAR" property="delFlag"/>
+        <result column="operator_id_" jdbcType="INTEGER" property="operatorId"/>
+        <result column="create_time_" jdbcType="TIMESTAMP" property="createTime"/>
+        <result column="update_time_" jdbcType="TIMESTAMP" property="updateTime"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        id_
+        , im_group_id_, title_, content_, is_top_, is_sent_to_new_member_, del_flag_, operator_id_, create_time_, update_time_
+    </sql>
+
+    <insert id="insertBatch" keyColumn="id_" keyProperty="id" useGeneratedKeys="true"
+            parameterType="com.yonge.cooleshow.biz.dal.entity.ImGroupNotice">
+        insert into im_group_notice(im_group_id_, title_, content_, is_top_, is_sent_to_new_member_, del_flag_,
+        operator_id_, create_time_, update_time_)
+        values
+        <foreach collection="entities" item="entity" separator=",">
+            (#{entity.imGroupId}, #{entity.title}, #{entity.content}, #{entity.isTop}, #{entity.isSentToNewMember},
+            #{entity.delFlag}, #{entity.operatorId}, #{entity.createTime}, #{entity.updateTime})
+        </foreach>
+    </insert>
+
+</mapper>

+ 29 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/ImUserFriendMapper.xml

@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.yonge.cooleshow.biz.dal.dao.ImUserFriendDao">
+    <resultMap id="BaseResultMap" type="com.yonge.cooleshow.biz.dal.entity.ImUserFriend">
+        <id column="id_" jdbcType="INTEGER" property="id"/>
+        <result column="user_id_" jdbcType="INTEGER" property="userId"/>
+        <result column="friend_id_" jdbcType="INTEGER" property="friendId"/>
+        <result column="friend_nickname_" jdbcType="VARCHAR" property="friendNickname"/>
+        <result column="memo_" jdbcType="VARCHAR" property="memo"/>
+        <result column="create_time_" jdbcType="TIMESTAMP" property="createTime"/>
+        <result column="update_time_" jdbcType="TIMESTAMP" property="updateTime"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        id_
+        , user_id_, friend_id_, friend_nickname_, memo_, create_time_, update_time_
+    </sql>
+
+    <insert id="insertBatch" keyColumn="id_" keyProperty="id" useGeneratedKeys="true"
+            parameterType="com.yonge.cooleshow.biz.dal.entity.ImUserFriend">
+        insert into im_user_friend(user_id_, friend_id_, friend_nickname_, memo_, create_time_, update_time_)
+        values
+        <foreach collection="entities" item="entity" separator=",">
+            (#{entity.userId}, #{entity.friendId}, #{entity.friendNickname}, #{entity.memo}, #{entity.createTime},
+            #{entity.updateTime})
+        </foreach>
+    </insert>
+
+</mapper>

+ 8 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/TeacherMapper.xml

@@ -55,4 +55,12 @@
 		<include refid="baseColumns" />
 		FROM teacher t where  t.user_id_ = #{userId}
 	</select>
+	<resultMap id="BasicUserInfo" type="com.yonge.cooleshow.biz.dal.dto.BasicUserInfo">
+		<result property="userId" column="user_id_"/>
+		<result property="username" column="username_"/>
+		<result property="realName" column="real_name_"/>
+	</resultMap>
+	<select id="getBasicUserInfo" resultMap="BasicUserInfo">
+		SELECT id_ user_id_,username_,real_name_ FROM sys_user WHERE id_ = #{userId} LIMIT 1
+	</select>
 </mapper>

+ 69 - 0
cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/ImGroupController.java

@@ -0,0 +1,69 @@
+package com.yonge.cooleshow.teacher.controller;
+
+
+import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
+import com.yonge.cooleshow.auth.api.entity.SysUser;
+import com.yonge.cooleshow.biz.dal.dto.ImGroupDto;
+import com.yonge.cooleshow.biz.dal.entity.ImGroup;
+import com.yonge.cooleshow.biz.dal.service.ImGroupService;
+import com.yonge.cooleshow.common.controller.BaseController;
+import com.yonge.cooleshow.common.entity.HttpResponseResult;
+import com.yonge.toolset.utils.validator.ValidationKit;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import javax.validation.Valid;
+import java.util.HashSet;
+import java.util.Set;
+
+/**
+ * 即时通讯群组(ImGroup)表控制层
+ *
+ * @author zx
+ * @since 2022-03-22 10:45:56
+ */
+@Api(tags = "即时通讯群组")
+@RestController
+@RequestMapping("/imGroup")
+public class ImGroupController extends BaseController {
+    /**
+     * 服务对象
+     */
+    @Resource
+    private ImGroupService imGroupService;
+    @Resource
+    private SysUserFeignService sysUserFeignService;
+
+    @ApiOperation("创建群聊")
+    @PostMapping(value = "/create")
+    public HttpResponseResult create(@Valid @RequestBody ImGroupDto imGroup, BindingResult bindingResult) throws Exception {
+        ValidationKit.ignoreFields(bindingResult,"id");
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        Set<Long> set = new HashSet<>();
+        set.add(sysUser.getId());
+        imGroup.setGroupMemberList(set);
+        imGroup.setCreateBy(sysUser.getId());
+        imGroupService.create(imGroup);
+        return succeed();
+    }
+
+    @ApiOperation("解散群聊")
+    @PostMapping(value = "/dismiss")
+    public HttpResponseResult dismiss(@RequestBody Long groupId) throws Exception {
+        imGroupService.dismiss(groupId);
+        return succeed();
+    }
+
+    @ApiOperation("修改群信息")
+    @PostMapping(value = "/update")
+    public HttpResponseResult<Boolean> update(@Valid @RequestBody ImGroup imGroup) throws Exception {
+        return succeed(imGroupService.updateById(imGroup));
+    }
+}
+

+ 1 - 1
toolset/thirdparty-component/src/main/java/com/yonge/toolset/thirdparty/entity/SysEmail.java

@@ -5,7 +5,7 @@ import java.io.Serializable;
 /**
  * (SysEmail)表实体类
  *
- * @author makejava
+ * @author zx
  * @since 2022-01-04 17:07:43
  */
 public class SysEmail implements Serializable {