Browse Source

update:IM改造

yonge 4 years ago
parent
commit
e726c5d464
47 changed files with 2219 additions and 436 deletions
  1. 31 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ImGroupDao.java
  2. 21 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ImGroupMemberDao.java
  3. 14 6
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ImGroupNoticeDao.java
  4. 24 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ImUserFriendDao.java
  5. 17 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/ImGroupMemberDto.java
  6. 17 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/ImGroupNoticeDto.java
  7. 18 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/ImUserFriendDto.java
  8. 123 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ImGroup.java
  9. 102 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ImGroupMember.java
  10. 91 86
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ImGroupNotice.java
  11. 101 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ImUserFriend.java
  12. 0 26
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/GroupNoticeQueryInfo.java
  13. 16 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/ImGroupNoticeQueryInfo.java
  14. 61 0
      mec-biz/src/main/java/com/ym/mec/biz/service/ImGroupMemberService.java
  15. 12 2
      mec-biz/src/main/java/com/ym/mec/biz/service/ImGroupNoticeService.java
  16. 54 0
      mec-biz/src/main/java/com/ym/mec/biz/service/ImGroupService.java
  17. 53 0
      mec-biz/src/main/java/com/ym/mec/biz/service/ImUserFriendService.java
  18. 19 21
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java
  19. 12 18
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupStudentMapperServiceImpl.java
  20. 30 21
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupTeacherMapperServiceImpl.java
  21. 5 7
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java
  22. 11 9
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CoursesGroupServiceImpl.java
  23. 0 16
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/EduPracticeGroupServiceImpl.java
  24. 204 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImGroupMemberServiceImpl.java
  25. 36 5
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImGroupNoticeServiceImpl.java
  26. 122 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImGroupServiceImpl.java
  27. 84 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImUserFriendServiceImpl.java
  28. 15 15
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java
  29. 10 9
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/OnlineMusicGroupServiceImpl.java
  30. 0 19
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/PracticeGroupServiceImpl.java
  31. 4 2
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRegistrationServiceImpl.java
  32. 29 40
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java
  33. 127 0
      mec-biz/src/main/resources/config/mybatis/ImGroupMapper.xml
  34. 139 0
      mec-biz/src/main/resources/config/mybatis/ImGroupMemberMapper.xml
  35. 98 79
      mec-biz/src/main/resources/config/mybatis/ImGroupNoticeMapper.xml
  36. 108 0
      mec-biz/src/main/resources/config/mybatis/ImUserFriendMapper.xml
  37. 17 13
      mec-client-api/src/main/java/com/ym/mec/im/ImFeignService.java
  38. 47 0
      mec-client-api/src/main/java/com/ym/mec/im/entity/GroupMember.java
  39. 71 0
      mec-client-api/src/main/java/com/ym/mec/im/entity/GroupModel.java
  40. 16 12
      mec-client-api/src/main/java/com/ym/mec/im/fallback/ImFeignServiceFallback.java
  41. 1 1
      mec-common/common-core/src/main/java/com/ym/mec/common/entity/ImGroupModel.java
  42. 12 13
      mec-student/src/main/java/com/ym/mec/student/controller/CourseController.java
  43. 98 0
      mec-student/src/main/java/com/ym/mec/student/controller/ImGroupController.java
  44. 3 3
      mec-teacher/src/main/java/com/ym/mec/teacher/controller/ClassGroupController.java
  45. 119 0
      mec-teacher/src/main/java/com/ym/mec/teacher/controller/ImGroupController.java
  46. 15 0
      mec-web/src/main/java/com/ym/mec/web/controller/ImGroupController.java
  47. 12 13
      mec-web/src/main/java/com/ym/mec/web/controller/education/ImGroupNoticeController.java

+ 31 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ImGroupDao.java

@@ -0,0 +1,31 @@
+package com.ym.mec.biz.dal.dao;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+
+import com.ym.mec.biz.dal.dto.ImGroupMemberDto;
+import com.ym.mec.biz.dal.entity.ImGroup;
+import com.ym.mec.common.dal.BaseDAO;
+
+public interface ImGroupDao extends BaseDAO<Long, ImGroup> {
+
+	ImGroup getLocked(Long imGroupId);
+
+	/**
+	 * 查询用户所在的群列表
+	 * @param userId
+	 * @param search
+	 * @return
+	 */
+	List<ImGroup> queryByUserId(@Param("userId") Integer userId, @Param("search") String search);
+
+	/**
+	 * 查询群成员列表
+	 * @param imGroupId
+	 * @return
+	 */
+	List<ImGroupMemberDto> queryMemberById(Long imGroupId);
+
+	ImGroupMemberDto queryMember(@Param("imGroupId") Long imGroupId, @Param("userId") Integer userId);
+}

+ 21 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ImGroupMemberDao.java

@@ -0,0 +1,21 @@
+package com.ym.mec.biz.dal.dao;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+
+import com.ym.mec.biz.dal.entity.ImGroupMember;
+import com.ym.mec.common.dal.BaseDAO;
+
+public interface ImGroupMemberDao extends BaseDAO<Long, ImGroupMember> {
+
+	int deleteByImGroupId(Long imGroupId);
+
+	int batchDelete(List<ImGroupMember> imGroupMemberList);
+
+	List<ImGroupMember> queryByImGroupIdAndUserId(@Param("imGroupIdList") String imGroupIdList, @Param("userIdList") String userIdList);
+	
+	int batchUpdate(List<ImGroupMember> imGroupMemberList);
+	
+	int batchInsert(List<ImGroupMember> imGroupMemberList);
+}

+ 14 - 6
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ImGroupNoticeDao.java

@@ -1,14 +1,22 @@
 package com.ym.mec.biz.dal.dao;
 
+import java.util.List;
+import java.util.Map;
+
+import com.ym.mec.biz.dal.dto.ImGroupNoticeDto;
 import com.ym.mec.biz.dal.entity.ImGroupNotice;
 import com.ym.mec.common.dal.BaseDAO;
 
 public interface ImGroupNoticeDao extends BaseDAO<Long, ImGroupNotice> {
 
-
-    /**
-     * 获取最新一条群公告
-     * @return
-     */
-    ImGroupNotice getNewNotice(Long groupId);
+	/**
+	 * 查询最新的群公告
+	 * @param imGroupId
+	 * @return
+	 */
+	ImGroupNoticeDto queryLatestNotice(Long imGroupId);
+	
+	List<ImGroupNoticeDto> queryForPage(Map<String, Object> params);
+	
+	int deleteByImGroupId(Long imGroupId);
 }

+ 24 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ImUserFriendDao.java

@@ -0,0 +1,24 @@
+package com.ym.mec.biz.dal.dao;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+
+import com.ym.mec.biz.dal.dto.ImUserFriendDto;
+import com.ym.mec.biz.dal.entity.ImUserFriend;
+import com.ym.mec.common.dal.BaseDAO;
+
+public interface ImUserFriendDao extends BaseDAO<Long, ImUserFriend> {
+
+	ImUserFriend query(@Param("userId") Integer userId, @Param("friendId") Integer friendId);
+
+	/**
+	 * 根据条件查询指定用户的好友列表
+	 * @param userId 指定用户的编号
+	 * @param search 搜索条件
+	 * @return
+	 */
+	List<ImUserFriendDto> queryFriendListByUserId(@Param("userId") Integer userId, @Param("search") String search);
+
+	ImUserFriendDto queryFriendDetail(@Param("userId") Integer userId, @Param("friendUserId") Integer friendUserId);
+}

+ 17 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/ImGroupMemberDto.java

@@ -0,0 +1,17 @@
+package com.ym.mec.biz.dal.dto;
+
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.entity.ImGroupMember;
+
+public class ImGroupMemberDto extends ImGroupMember {
+
+	private SysUser user = new SysUser();
+
+	public SysUser getUser() {
+		return user;
+	}
+
+	public void setUser(SysUser user) {
+		this.user = user;
+	}
+}

+ 17 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/ImGroupNoticeDto.java

@@ -0,0 +1,17 @@
+package com.ym.mec.biz.dal.dto;
+
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.entity.ImGroupNotice;
+
+public class ImGroupNoticeDto extends ImGroupNotice {
+
+	private SysUser user = new SysUser();
+
+	public SysUser getUser() {
+		return user;
+	}
+
+	public void setUser(SysUser user) {
+		this.user = user;
+	}
+}

+ 18 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/ImUserFriendDto.java

@@ -0,0 +1,18 @@
+package com.ym.mec.biz.dal.dto;
+
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.entity.ImUserFriend;
+
+public class ImUserFriendDto extends ImUserFriend {
+
+	private SysUser friend = new SysUser();
+
+	public SysUser getFriend() {
+		return friend;
+	}
+
+	public void setFriend(SysUser friend) {
+		this.friend = friend;
+	}
+
+}

+ 123 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ImGroup.java

@@ -0,0 +1,123 @@
+package com.ym.mec.biz.dal.entity;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+
+/**
+ * 对应数据库表(im_group):
+ */
+public class ImGroup {
+
+	/**  */
+	private Long id;
+	
+	/** 群名称 */
+	private String name;
+	
+	/** 群介绍 */
+	private String introduce;
+	
+	/** 群成员数 */
+	private Integer memberNum;
+	
+	/** 群备注 */
+	private String memo;
+	
+	/** 群标签 */
+	private String tags;
+	
+	private String img;
+	
+	private String type;
+	
+	/**  */
+	private java.util.Date createTime;
+	
+	/**  */
+	private java.util.Date updateTime;
+	
+	public void setId(Long id){
+		this.id = id;
+	}
+	
+	public Long getId(){
+		return this.id;
+	}
+			
+	public void setName(String name){
+		this.name = name;
+	}
+	
+	public String getName(){
+		return this.name;
+	}
+			
+	public void setIntroduce(String introduce){
+		this.introduce = introduce;
+	}
+	
+	public String getIntroduce(){
+		return this.introduce;
+	}
+			
+	public void setMemberNum(Integer memberNum){
+		this.memberNum = memberNum;
+	}
+	
+	public Integer getMemberNum(){
+		return this.memberNum;
+	}
+			
+	public void setMemo(String memo){
+		this.memo = memo;
+	}
+	
+	public String getMemo(){
+		return this.memo;
+	}
+			
+	public void setTags(String tags){
+		this.tags = tags;
+	}
+	
+	public String getTags(){
+		return this.tags;
+	}
+			
+	public String getImg() {
+		return img;
+	}
+
+	public void setImg(String img) {
+		this.img = img;
+	}
+
+	public String getType() {
+		return type;
+	}
+
+	public void setType(String type) {
+		this.type = type;
+	}
+
+	public void setCreateTime(java.util.Date createTime){
+		this.createTime = createTime;
+	}
+	
+	public java.util.Date getCreateTime(){
+		return this.createTime;
+	}
+			
+	public void setUpdateTime(java.util.Date updateTime){
+		this.updateTime = updateTime;
+	}
+	
+	public java.util.Date getUpdateTime(){
+		return this.updateTime;
+	}
+			
+	@Override
+	public String toString() {
+		return ToStringBuilder.reflectionToString(this);
+	}
+
+}

+ 102 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ImGroupMember.java

@@ -0,0 +1,102 @@
+package com.ym.mec.biz.dal.entity;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+
+/**
+ * 对应数据库表(im_group_member):
+ */
+public class ImGroupMember {
+
+	/**  */
+	private Long id;
+	
+	/**  */
+	private Long imGroupId;
+	
+	/**  */
+	private Integer userId;
+	
+	private String nickname;
+	
+	/** 是否是管理员 */
+	private boolean isAdmin;
+	
+	/** 群角色 */
+	private String roleType;
+	
+	/**  */
+	private java.util.Date createTime;
+	
+	/**  */
+	private java.util.Date updateTime;
+	
+	public void setId(Long id){
+		this.id = id;
+	}
+	
+	public Long getId(){
+		return this.id;
+	}
+			
+	public void setImGroupId(Long imGroupId){
+		this.imGroupId = imGroupId;
+	}
+	
+	public Long getImGroupId(){
+		return this.imGroupId;
+	}
+			
+	public void setUserId(Integer userId){
+		this.userId = userId;
+	}
+	
+	public Integer getUserId(){
+		return this.userId;
+	}
+			
+	public String getNickname() {
+		return nickname;
+	}
+
+	public void setNickname(String nickname) {
+		this.nickname = nickname;
+	}
+
+	public void setIsAdmin(boolean isAdmin){
+		this.isAdmin = isAdmin;
+	}
+	
+	public boolean getIsAdmin(){
+		return this.isAdmin;
+	}
+			
+	public void setRoleType(String roleType){
+		this.roleType = roleType;
+	}
+	
+	public String getRoleType(){
+		return this.roleType;
+	}
+			
+	public void setCreateTime(java.util.Date createTime){
+		this.createTime = createTime;
+	}
+	
+	public java.util.Date getCreateTime(){
+		return this.createTime;
+	}
+			
+	public void setUpdateTime(java.util.Date updateTime){
+		this.updateTime = updateTime;
+	}
+	
+	public java.util.Date getUpdateTime(){
+		return this.updateTime;
+	}
+			
+	@Override
+	public String toString() {
+		return ToStringBuilder.reflectionToString(this);
+	}
+
+}

+ 91 - 86
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ImGroupNotice.java

@@ -1,120 +1,125 @@
 package com.ym.mec.biz.dal.entity;
 
-import com.ym.mec.biz.dal.enums.YesOrNoEnum;
-
-import java.util.Date;
+import org.apache.commons.lang3.builder.ToStringBuilder;
 
 /**
  * 对应数据库表(im_group_notice):
  */
 public class ImGroupNotice {
-	private Long id;
 
+	/**  */
+	private Long id;
+	
+	/**  */
 	private Long imGroupId;
-
-	private Long operatorId;
-
+	
+	/** 标题 */
 	private String title;
-
+	
+	/** 内容 */
 	private String content;
-
-	private String realName;
-
-	private String avatar;
-
-	private Integer isTop;
-
-	private Date createTime;
-
-	private Date updateTime;
-
-	private Integer delFlag = 0;
-
-	public String getRealName() {
-		return realName;
+	
+	/** 是否置顶 */
+	private boolean isTop;
+	
+	/** 是否发送给新人 */
+	private boolean isSentToNewMember;
+	
+	/**  */
+	private java.util.Date createTime;
+	
+	/**  */
+	private java.util.Date updateTime;
+	
+	/**  */
+	private boolean delFlag;
+	
+	/** 操作人 */
+	private Long operatorId;
+	
+	public void setId(Long id){
+		this.id = id;
 	}
-
-	public void setRealName(String realName) {
-		this.realName = realName;
+	
+	public Long getId(){
+		return this.id;
 	}
-
-	public String getAvatar() {
-		return avatar;
+			
+	public void setImGroupId(Long imGroupId){
+		this.imGroupId = imGroupId;
 	}
-
-	public void setAvatar(String avatar) {
-		this.avatar = avatar;
+	
+	public Long getImGroupId(){
+		return this.imGroupId;
 	}
-
-	public Long getOperatorId() {
-		return operatorId;
+			
+	public void setTitle(String title){
+		this.title = title;
 	}
-
-	public void setOperatorId(Long operatorId) {
-		this.operatorId = operatorId;
+	
+	public String getTitle(){
+		return this.title;
 	}
-
-	public Long getId() {
-		return id;
+			
+	public void setContent(String content){
+		this.content = content;
 	}
-
-	public void setId(Long id) {
-		this.id = id;
+	
+	public String getContent(){
+		return this.content;
 	}
-
-	public Long getImGroupId() {
-		return imGroupId;
+			
+	public void setIsTop(boolean isTop){
+		this.isTop = isTop;
 	}
-
-	public void setImGroupId(Long imGroupId) {
-		this.imGroupId = imGroupId;
+	
+	public boolean isIsTop(){
+		return this.isTop;
 	}
-
-	public String getTitle() {
-		return title;
+			
+	public void setIsSentToNewMember(boolean isSentToNewMember){
+		this.isSentToNewMember = isSentToNewMember;
 	}
-
-	public void setTitle(String title) {
-		this.title = title;
+	
+	public boolean isIsSentToNewMember(){
+		return this.isSentToNewMember;
 	}
-
-	public String getContent() {
-		return content;
+			
+	public void setCreateTime(java.util.Date createTime){
+		this.createTime = createTime;
 	}
-
-	public void setContent(String content) {
-		this.content = content;
+	
+	public java.util.Date getCreateTime(){
+		return this.createTime;
 	}
-
-	public Date getCreateTime() {
-		return createTime;
+			
+	public void setUpdateTime(java.util.Date updateTime){
+		this.updateTime = updateTime;
 	}
-
-	public void setCreateTime(Date createTime) {
-		this.createTime = createTime;
+	
+	public java.util.Date getUpdateTime(){
+		return this.updateTime;
 	}
-
-	public Date getUpdateTime() {
-		return updateTime;
+			
+	public void setDelFlag(boolean delFlag){
+		this.delFlag = delFlag;
 	}
-
-	public void setUpdateTime(Date updateTime) {
-		this.updateTime = updateTime;
+	
+	public boolean isDelFlag(){
+		return this.delFlag;
 	}
-
-	public Integer getIsTop() {
-		return isTop;
+			
+	public void setOperatorId(Long operatorId){
+		this.operatorId = operatorId;
 	}
-
-	public void setIsTop(Integer isTop) {
-		this.isTop = isTop;
+	
+	public Long getOperatorId(){
+		return this.operatorId;
 	}
-
-	public Integer getDelFlag() {
-		return delFlag;
+			
+	@Override
+	public String toString() {
+		return ToStringBuilder.reflectionToString(this);
 	}
 
-	public void setDelFlag(Integer delFlag) {
-		this.delFlag = delFlag;
-	}
 }

+ 101 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ImUserFriend.java

@@ -0,0 +1,101 @@
+package com.ym.mec.biz.dal.entity;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+
+/**
+ * 对应数据库表(im_user_friend):
+ */
+public class ImUserFriend {
+
+	/**  */
+	private Long id;
+
+	/** 用户编号 */
+	private Integer userId;
+
+	/** 好友编号 */
+	private Integer friendId;
+
+	/** 好友昵称 */
+	private String friendNickname;
+	
+	private String memo;
+	
+	private String tags;
+
+	/**  */
+	private java.util.Date createTime;
+
+	/**  */
+	private java.util.Date updateTime;
+
+	public void setId(Long id) {
+		this.id = id;
+	}
+
+	public Long getId() {
+		return this.id;
+	}
+
+	public void setUserId(Integer userId) {
+		this.userId = userId;
+	}
+
+	public Integer getUserId() {
+		return this.userId;
+	}
+
+	public void setFriendId(Integer friendId) {
+		this.friendId = friendId;
+	}
+
+	public Integer getFriendId() {
+		return this.friendId;
+	}
+
+	public void setFriendNickname(String friendNickname) {
+		this.friendNickname = friendNickname;
+	}
+
+	public String getFriendNickname() {
+		return this.friendNickname;
+	}
+
+	public String getMemo() {
+		return memo;
+	}
+
+	public void setMemo(String memo) {
+		this.memo = memo;
+	}
+
+	public String getTags() {
+		return tags;
+	}
+
+	public void setTags(String tags) {
+		this.tags = tags;
+	}
+
+	public java.util.Date getCreateTime() {
+		return createTime;
+	}
+
+	public void setCreateTime(java.util.Date createTime) {
+		this.createTime = createTime;
+	}
+
+	public java.util.Date getUpdateTime() {
+		return updateTime;
+	}
+
+	public void setUpdateTime(java.util.Date updateTime) {
+		this.updateTime = updateTime;
+	}
+
+	@Override
+	public String toString() {
+		return ToStringBuilder.reflectionToString(this);
+	}
+
+}

+ 0 - 26
mec-biz/src/main/java/com/ym/mec/biz/dal/page/GroupNoticeQueryInfo.java

@@ -1,26 +0,0 @@
-package com.ym.mec.biz.dal.page;
-
-import com.ym.mec.biz.dal.enums.YesOrNoEnum;
-import com.ym.mec.common.page.QueryInfo;
-
-public class GroupNoticeQueryInfo extends QueryInfo {
-    private Long groupId;
-
-    private YesOrNoEnum isTop;
-
-    public Long getGroupId() {
-        return groupId;
-    }
-
-    public void setGroupId(Long groupId) {
-        this.groupId = groupId;
-    }
-
-    public YesOrNoEnum getIsTop() {
-        return isTop;
-    }
-
-    public void setIsTop(YesOrNoEnum isTop) {
-        this.isTop = isTop;
-    }
-}

+ 16 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/ImGroupNoticeQueryInfo.java

@@ -0,0 +1,16 @@
+package com.ym.mec.biz.dal.page;
+
+import com.ym.mec.common.page.QueryInfo;
+
+public class ImGroupNoticeQueryInfo extends QueryInfo {
+    private Long groupId;
+
+    public Long getGroupId() {
+        return groupId;
+    }
+
+    public void setGroupId(Long groupId) {
+        this.groupId = groupId;
+    }
+
+}

+ 61 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/ImGroupMemberService.java

@@ -0,0 +1,61 @@
+package com.ym.mec.biz.service;
+
+import java.util.List;
+import java.util.Map;
+
+import com.ym.mec.biz.dal.entity.ImGroupMember;
+import com.ym.mec.common.service.BaseService;
+
+public interface ImGroupMemberService extends BaseService<Long, ImGroupMember> {
+
+	/**
+	 * 加入群组
+	 * @param imGroupId 群编号
+	 * @param userId 用户编号
+	 * @param roleType 角色类型
+	 * @param isAdmin 是否是管理员
+	 * @return
+	 */
+	boolean join(Long imGroupId, Integer userId, String roleType, boolean isAdmin);
+
+	/**
+	 * 批量加入群组
+	 * @param imGroupId 群组编号
+	 * @param userRoleMap key-用户编号  value-角色类型
+	 * @return
+	 */
+	boolean join(Long imGroupId, Map<Integer, String> userRoleMap);
+
+	/**
+	 * 指定用户退出群组
+	 * @param imGroupId 群组编号
+	 * @param userId 指定的用户编号
+	 * @return
+	 */
+	boolean quit(Long imGroupId, Integer userId);
+
+	/**
+	 * 退出指定群组
+	 * @param imGroupIdList 群组编号列表
+	 * @param userId 用户编号
+	 * @return
+	 */
+	boolean quit(List<Long> imGroupIdList, Integer userId);
+
+	/**
+	 * 用户批量退出群组
+	 * @param imGroupId 群组编号
+	 * @param userIdList 学生编号
+	 * @return
+	 */
+	boolean quit(Long imGroupId, List<Integer> userIdList);
+
+	/**
+	 * 修改角色类型
+	 * @param imGroupId 群组编号
+	 * @param userId 用户编号
+	 * @param roleType 角色类型
+	 * @return
+	 */
+	boolean updateRoleType(Long imGroupId, Integer userId, String roleType);
+}

+ 12 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/ImGroupNoticeService.java

@@ -1,9 +1,19 @@
 package com.ym.mec.biz.service;
 
+import com.ym.mec.biz.dal.dto.ImGroupNoticeDto;
 import com.ym.mec.biz.dal.entity.ImGroupNotice;
+import com.ym.mec.biz.dal.page.ImGroupNoticeQueryInfo;
+import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.BaseService;
 
 public interface ImGroupNoticeService extends BaseService<Long, ImGroupNotice> {
+	
+	PageInfo<ImGroupNoticeDto> queryPage(ImGroupNoticeQueryInfo queryInfo);
 
-    ImGroupNotice getNewNotice(Long groupId);
-}
+	/**
+	 * 查询最新的群公告
+	 * @param imGroupId
+	 * @return
+	 */
+	ImGroupNoticeDto queryLatestNotice(Long imGroupId);
+}

+ 54 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/ImGroupService.java

@@ -0,0 +1,54 @@
+package com.ym.mec.biz.service;
+
+import java.util.List;
+
+import com.ym.mec.biz.dal.dto.ImGroupMemberDto;
+import com.ym.mec.biz.dal.entity.ImGroup;
+import com.ym.mec.common.service.BaseService;
+
+public interface ImGroupService extends BaseService<Long, ImGroup> {
+
+	/**
+	 * 创建群组
+	 * @param id 群编号
+	 * @param userId 创建人编号
+	 * @param name 群名称
+	 * @param introduce 群介绍
+	 * @param memo 群备注
+	 * @param tags 群标签
+	 * @param img 群图像
+	 * @param type 群类型
+	 * @return
+	 */
+	boolean create(Long id, Integer userId, String name, String introduce, String memo, String tags, String img, String type);
+
+	/**
+	 * 解散群组
+	 * @param imGroupId
+	 * @return
+	 */
+	boolean cancel(Long imGroupId);
+
+	/**
+	 * 查询用户所在的群列表
+	 * @param userId
+	 * @param search
+	 * @return
+	 */
+	List<ImGroup> queryByUserId(Integer userId, String search);
+
+	/**
+	 * 查询群成员列表
+	 * @param imGroupId
+	 * @return
+	 */
+	List<ImGroupMemberDto> queryMemberById(Long imGroupId);
+
+	/**
+	 * 查询指定用户在群众的信息
+	 * @param imGroupId 群编号
+	 * @param userId 指定的用户编号
+	 * @return
+	 */
+	ImGroupMemberDto queryMember(Long imGroupId, Integer userId);
+}

+ 53 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/ImUserFriendService.java

@@ -0,0 +1,53 @@
+package com.ym.mec.biz.service;
+
+import java.util.List;
+
+import com.ym.mec.biz.dal.dto.ImUserFriendDto;
+import com.ym.mec.biz.dal.entity.ImUserFriend;
+import com.ym.mec.common.service.BaseService;
+
+public interface ImUserFriendService extends BaseService<Long, ImUserFriend> {
+
+	/**
+	 * 添加好友
+	 * @param userId 用户编号
+	 * @param friendUserId 好友编号
+	 * @param nickname 昵称
+	 * @param memo 备注
+	 * @return
+	 */
+	boolean addFriend(Integer userId, Integer friendUserId, String nickname, String memo);
+
+	/**
+	 * 删除好友
+	 * @param userId 用户编号
+	 * @param friendUserId 好友编号
+	 * @return
+	 */
+	boolean deleteFriend(Integer userId, Integer friendUserId);
+
+	/**
+	 * 修改好友昵称
+	 * @param userId 用户编号
+	 * @param friendUserId 好友编号
+	 * @param nickname 昵称
+	 * @return
+	 */
+	boolean updateFriendNickname(Integer userId, Integer friendUserId, String nickname);
+
+	/**
+	 * 根据条件查询指定用户的好友列表
+	 * @param userId 指定用户的编号
+	 * @param search 搜索条件
+	 * @return
+	 */
+	List<ImUserFriendDto> queryFriendListByUserId(Integer userId, String search);
+
+	/**
+	 * 查询当前用户的好友详情
+	 * @param userId 当前用户编号
+	 * @param friendUserId 好友编号
+	 * @return
+	 */
+	ImUserFriendDto queryFriendDetail(Integer userId, Integer friendUserId);
+}

+ 19 - 21
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java

@@ -128,7 +128,9 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
     @Autowired
     private StudentRegistrationService studentRegistrationService;
     @Autowired
-    private ImFeignService imFeignService;
+    private ImGroupMemberService imGroupMemberService;
+    @Autowired
+    private ImGroupService imGroupService;
     @Autowired
     private CourseScheduleService courseScheduleService;
     @Autowired
@@ -475,7 +477,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                 for (ClassGroup classGroup : classGroups) {
                     imGroupModelList.add(new ImGroupModel(classGroup.getId().toString(), null, classGroup.getName()));
                 }
-                imFeignService.groupBatchDismiss(imGroupModelList);
+                //imFeignService.groupBatchDismiss(imGroupModelList);
             }
 
             List<CourseSchedule> courseScheduleList = new ArrayList<>();
@@ -574,7 +576,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
             }
 
             // 加入Im群组
-            batchAddImGroup(classGroupImGroupList);
+            //batchAddImGroup(classGroupImGroupList);
             classGroupTeacherMapperService.classGroupTeachersInsert(classGroupTeacherMapperList);
             // 检测新排课冲突
             courseScheduleService.checkNewCourseSchedules(courseScheduleList, false, false);
@@ -1087,8 +1089,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         }
 
         //5、加入班级群组
-        ImGroupMember[] imGroupMembers = new ImGroupMember[]{new ImGroupMember(userId.toString())};
-        imFeignService.groupJoin(new ImGroupModel(classGroup.getId().toString(), imGroupMembers, classGroup.getName()));
+        imGroupMemberService.join(classGroup.getId().longValue(), userId, null, false);
 
         return classGroup;
     }
@@ -1234,8 +1235,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
             }
 
             // 5、加入班级群组
-            ImGroupMember[] imGroupMembers = new ImGroupMember[]{new ImGroupMember(studentId.toString())};
-            imFeignService.groupJoin(new ImGroupModel(classGroup.getId().toString(), imGroupMembers, classGroup.getName()));
+            imGroupMemberService.join(classGroup.getId().longValue(), studentId, null, false);
 
         }
 
@@ -1296,7 +1296,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         //删除班级
         classGroupDao.delete(classGroupId);
         //删除im群组
-        imFeignService.groupQuit(new ImGroupModel(classGroupId.toString(), null, null));
+        imGroupService.cancel(classGroupId.longValue());
     }
 
     @Override
@@ -1318,7 +1318,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         //删除合奏班
         classGroupDao.delete(classGroupId);
         //删除im群组
-        imFeignService.groupQuit(new ImGroupModel(classGroupId.toString(), null, null));
+        imGroupService.cancel(classGroupId.longValue());
     }
 
     @Override
@@ -2209,8 +2209,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         if (byClassGroup != null && byClassGroup.size() > 0) {
             ClassGroupTeacherMapper groupTeacherMapper = byClassGroup.stream().filter(classGroupTeacherMapper -> classGroupTeacherMapper.getTeacherRole() == TeachTypeEnum.BISHOP).findFirst().get();
             if (groupTeacherMapper != null) {
-                ImGroupMember[] imGroupMembers = {new ImGroupMember(groupTeacherMapper.getUserId().toString())};
-                imFeignService.groupQuit(new ImGroupModel(classGroupId.toString(), imGroupMembers, classGroup.getName()));
+                imGroupMemberService.quit(classGroupId.longValue(), groupTeacherMapper.getUserId());
             }
         }
 
@@ -2219,12 +2218,10 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
             //获取之前的班级老师
             Set<Integer> groupTeacher = classGroupDao.findGroupTeacher(classGroupId);
             groupTeacher.forEach(e -> {
-                ImGroupMember[] imGroupMembers = {new ImGroupMember(e.toString())};
-                imFeignService.groupQuit(new ImGroupModel(classGroupId.toString(), imGroupMembers, classGroup.getName()));
+            	imGroupMemberService.quit(classGroupId.longValue(), e);
             });
             newTeacherMapperList.forEach(e -> {
-                ImGroupMember[] imGroupMembers = {new ImGroupMember(e.getUserId().toString())};
-                imFeignService.groupJoin(new ImGroupModel(classGroupId.toString(), imGroupMembers, classGroup.getName()));
+                imGroupMemberService.join(classGroupId.longValue(), e.getUserId(), null, false);
             });
         }
         if (Objects.nonNull(classGroup4MixDtos.get(0).getCourseAddType()) && classGroup4MixDtos.get(0).getCourseAddType().equals("onlyUpdateTeacher")) {
@@ -2930,14 +2927,15 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
             userIdList.addAll(userIds);
         }
 
-        List<ImGroupMember> imGroupMemberList = new ArrayList<>();
+        Map<Integer,String> userRoleMap = new HashMap<Integer, String>();
         for (Integer userId : userIdList) {
             if (userId == null) continue;
-            imGroupMemberList.add(new ImGroupMember(userId.toString()));
+            
+            userRoleMap.put(userId, "");
         }
-        //创建IM群组
-        ImGroupMember[] imGroupMembers = imGroupMemberList.toArray(new ImGroupMember[imGroupMemberList.size()]);
-        imFeignService.groupCreate(new ImGroupModel(classGroup.getId().toString(), imGroupMembers, classGroup.getName()));
+        
+        imGroupService.create(classGroup.getId().longValue(), musicGroup.getTeamTeacherId(), classGroup.getName(), musicGroup.getName(), musicGroup.getName(), musicGroup.getName(), null, "MUSIC");
+        imGroupMemberService.join(classGroup.getId().longValue(), userRoleMap);
         return true;
     }
 
@@ -2975,7 +2973,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
             ImGroupModel imGroupModel = new ImGroupModel(classGroupImGroupDto.getClassGroup().getId().toString(), imGroupMembers, classGroupImGroupDto.getClassGroup().getName());
             imGroupModelList.add(imGroupModel);
         }
-        imFeignService.groupBatchCreate(imGroupModelList);
+        //imFeignService.groupBatchCreate(imGroupModelList);
         return true;
     }
 

+ 12 - 18
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupStudentMapperServiceImpl.java

@@ -5,6 +5,7 @@ import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Date;
+import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
@@ -16,6 +17,7 @@ import java.util.stream.Collectors;
 import com.ym.mec.biz.dal.dao.*;
 import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.*;
+
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Isolation;
@@ -31,6 +33,7 @@ import com.ym.mec.biz.service.ClassGroupTeacherMapperService;
 import com.ym.mec.biz.service.CourseScheduleService;
 import com.ym.mec.biz.service.CourseScheduleStudentPaymentService;
 import com.ym.mec.biz.service.CourseScheduleTeacherSalaryService;
+import com.ym.mec.biz.service.ImGroupMemberService;
 import com.ym.mec.biz.service.StudentRegistrationService;
 import com.ym.mec.biz.service.TeacherDefaultMusicGroupSalaryService;
 import com.ym.mec.common.dal.BaseDAO;
@@ -58,7 +61,7 @@ public class ClassGroupStudentMapperServiceImpl extends BaseServiceImpl<Long, Cl
     @Autowired
     private ClassGroupRelationService classGroupRelationService;
     @Autowired
-    private ImFeignService imFeignService;
+    private ImGroupMemberService imGroupMemberService;
     @Autowired
     private CourseScheduleTeacherSalaryDao courseScheduleTeacherSalaryDao;
     @Autowired
@@ -164,9 +167,7 @@ public class ClassGroupStudentMapperServiceImpl extends BaseServiceImpl<Long, Cl
         }
 
         //5、学生退出班级群组
-        ImGroupMember[] imGroupMembers = {new ImGroupMember(userId.toString())};
-        // 退出群组
-        imFeignService.groupQuit(new ImGroupModel(classGroup.getId().toString(), imGroupMembers, classGroup.getName()));
+        imGroupMemberService.quit(classGroup.getId().longValue(), userId);
         return true;
     }
 
@@ -237,7 +238,7 @@ public class ClassGroupStudentMapperServiceImpl extends BaseServiceImpl<Long, Cl
 
         //1、班级关系添加
         List<ClassGroupStudentMapper> classGroupStudentMappers = new ArrayList<>();
-        List<ImGroupMember> imGroupMemberList = new ArrayList<>();
+        Map<Integer,String> userRoleMap = new HashMap<Integer, String>();
 
         ClassGroupRelation classGroupRelation = classGroupRelationService.findClassGroupRelation(classGroupId);
 
@@ -264,7 +265,7 @@ public class ClassGroupStudentMapperServiceImpl extends BaseServiceImpl<Long, Cl
                 studentRegistration.setClassGroupId(classGroupId);
                 studentRegistrationService.update(studentRegistration);
             }
-            imGroupMemberList.add(new ImGroupMember(userId.toString()));
+            userRoleMap.put(userId, "");
         }
         if (classGroupStudentMappers.size() > 0) {
             classGroupStudentMapperDao.classGroupStudentsInsert(classGroupStudentMappers);
@@ -340,8 +341,7 @@ public class ClassGroupStudentMapperServiceImpl extends BaseServiceImpl<Long, Cl
         }
 
         //5、添加进IM群组
-        ImGroupMember[] imGroupMembers = imGroupMemberList.toArray(new ImGroupMember[imGroupMemberList.size()]);
-        imFeignService.groupJoin(new ImGroupModel(classGroup.getId().toString(), imGroupMembers, classGroup.getName()));
+        imGroupMemberService.join(classGroup.getId().longValue(), userRoleMap);
 
         return true;
     }
@@ -509,24 +509,18 @@ public class ClassGroupStudentMapperServiceImpl extends BaseServiceImpl<Long, Cl
 
         if (!CollectionUtils.isEmpty(removeStudentIds)) {
             courseScheduleDao.deleteMusicGroupCourseSchedulesWithStudents(courseIds, new ArrayList<>(removeStudentIds));
-            List<ImGroupMember> imGroupMemberList = new ArrayList<>();
-            for (Integer addStudentId : addStudentIds) {
-                imGroupMemberList.add(new ImGroupMember(addStudentId.toString()));
-            }
             //5、学生退出班级群组
-            ImGroupMember[] imGroupMembers = imGroupMemberList.toArray(new ImGroupMember[imGroupMemberList.size()]);
-            imFeignService.groupQuit(new ImGroupModel(classGroup.getId().toString(), imGroupMembers, classGroup.getName()));
+            imGroupMemberService.quit(classGroup.getId().longValue(), new ArrayList<Integer>(addStudentIds));
         }
 
         if (!CollectionUtils.isEmpty(addStudentIds)) {
             courseScheduleStudentPaymentService.createForMusicGroup(classGroup.getMusicGroupId(), classGroupNotStartCourse, new ArrayList<>(addStudentIds));
-            List<ImGroupMember> imGroupMemberList = new ArrayList<>();
+            Map<Integer,String> userRoleMap = new HashMap<Integer, String>();
             for (Integer addStudentId : addStudentIds) {
-                imGroupMemberList.add(new ImGroupMember(addStudentId.toString()));
+            	userRoleMap.put(addStudentId, "");
             }
             //5、添加进IM群组
-            ImGroupMember[] imGroupMembers = imGroupMemberList.toArray(new ImGroupMember[imGroupMemberList.size()]);
-            imFeignService.groupJoin(new ImGroupModel(classGroup.getId().toString(), imGroupMembers, classGroup.getName()));
+            imGroupMemberService.join(classGroup.getId().longValue(), userRoleMap);
         }
     }
 }

+ 30 - 21
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupTeacherMapperServiceImpl.java

@@ -15,6 +15,7 @@ import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.im.ImFeignService;
 import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.date.DateUtil;
+
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -41,7 +42,7 @@ public class ClassGroupTeacherMapperServiceImpl extends BaseServiceImpl<Long, Cl
     @Autowired
     private SysConfigDao sysConfigDao;
     @Autowired
-    private ImFeignService imFeignService;
+    private ImGroupMemberService imGroupMemberService;
     @Autowired
     private ClassGroupService classGroupService;
     @Autowired
@@ -66,32 +67,36 @@ public class ClassGroupTeacherMapperServiceImpl extends BaseServiceImpl<Long, Cl
 
         String classGroupIds = classGroupTeacherMapperList.stream().map(classGroupTeacherMapper -> classGroupTeacherMapper.getClassGroupId().toString()).collect(Collectors.joining(","));
         //老师加入群组
-        List<ImGroupMember> imGroupMemberList = new ArrayList<>();
+        List<Integer> userIdList = new ArrayList<>();
         List<ClassGroup> classGroups = classGroupService.findClassGroupByIds(classGroupIds);
 
         List<ClassGroupTeacherMapper> oldClassGroupTeacherMapper = classGroupTeacherMapperDao.getClassGroupTeacherMapper(classGroupTeacherMapperList, GroupType.MUSIC);
 
         for (ClassGroup classGroup : classGroups) {
-            imGroupMemberList.clear();
+            userIdList.clear();
             //原设置的老师删除群组
             for (ClassGroupTeacherMapper classGroupTeacherMapper : oldClassGroupTeacherMapper) {
                 if (!classGroup.getId().equals(classGroupTeacherMapper.getClassGroupId())) continue;
-                imGroupMemberList.add(new ImGroupMember(classGroupTeacherMapper.getUserId().toString()));
+                userIdList.add(classGroupTeacherMapper.getUserId());
             }
-            if (imGroupMemberList.size() > 0) {
-                ImGroupMember[] imGroupMembers = imGroupMemberList.toArray(new ImGroupMember[imGroupMemberList.size()]);
-                imFeignService.groupQuit(new ImGroupModel(classGroup.getId().toString(), imGroupMembers, classGroup.getName()));
+            if (userIdList.size() > 0) {
+                imGroupMemberService.quit(classGroup.getId().longValue(), userIdList);
             }
             // 新设置的老师加入群组
-            imGroupMemberList.clear();
+            userIdList.clear();
             for (ClassGroupTeacherMapper classGroupTeacherMapper : classGroupTeacherMapperList) {
                 if (!classGroup.getId().equals(classGroupTeacherMapper.getClassGroupId())) continue;
                 classGroupTeacherMapper.setMusicGroupId(classGroup.getMusicGroupId());
                 classGroupTeacherMapper.setGroupType(classGroup.getGroupType());
-                imGroupMemberList.add(new ImGroupMember(classGroupTeacherMapper.getUserId().toString()));
+                userIdList.add(classGroupTeacherMapper.getUserId());
+            }
+            if (userIdList.size() > 0) {
+            	Map<Integer, String> userRoleMap = new HashMap<Integer, String>();
+            	for(Integer userId : userIdList){
+            		userRoleMap.put(userId, "");
+            	}
+                imGroupMemberService.join(classGroup.getId().longValue(), userRoleMap);
             }
-            ImGroupMember[] imGroupMembers = imGroupMemberList.toArray(new ImGroupMember[imGroupMemberList.size()]);
-            imFeignService.groupJoin(new ImGroupModel(classGroup.getId().toString(), imGroupMembers, classGroup.getName()));
         }
         classGroupTeacherMapperDao.delMusicGroupTeacherMapper(classGroupTeacherMapperList);
 
@@ -103,7 +108,7 @@ public class ClassGroupTeacherMapperServiceImpl extends BaseServiceImpl<Long, Cl
     public int classGroupTeachersInsert(List<ClassGroupTeacherMapper> classGroupTeacherMapperList, boolean checkCourser) {
         String classGroupIds = classGroupTeacherMapperList.stream().map(classGroupTeacherMapper -> classGroupTeacherMapper.getClassGroupId().toString()).collect(Collectors.joining(","));
         //老师加入群组
-        List<ImGroupMember> imGroupMemberList = new ArrayList<>();
+        List<Integer> userIdList = new ArrayList<Integer>();
         List<ClassGroup> classGroups = classGroupService.findClassGroupByIds(classGroupIds);
 
         List<ClassGroupTeacherMapper> oldClassGroupTeacherMapper = classGroupTeacherMapperDao.getClassGroupTeacherMapper(classGroupTeacherMapperList, GroupType.MUSIC);
@@ -111,28 +116,32 @@ public class ClassGroupTeacherMapperServiceImpl extends BaseServiceImpl<Long, Cl
         Set<String> oldTeacher = new HashSet<>();
         Set<String> newTeacher = new HashSet<>();
         for (ClassGroup classGroup : classGroups) {
-            imGroupMemberList.clear();
+        	userIdList.clear();
             //原设置的老师删除群组
             for (ClassGroupTeacherMapper classGroupTeacherMapper : oldClassGroupTeacherMapper) {
                 if (!classGroup.getId().equals(classGroupTeacherMapper.getClassGroupId())) continue;
-                imGroupMemberList.add(new ImGroupMember(classGroupTeacherMapper.getUserId().toString()));
+                userIdList.add(classGroupTeacherMapper.getUserId());
                 oldTeacher.add(classGroupTeacherMapper.getClassGroupId() + classGroupTeacherMapper.getTeacherRole().getCode() + classGroupTeacherMapper.getUserId());
             }
-            if (imGroupMemberList.size() > 0) {
-                ImGroupMember[] imGroupMembers = imGroupMemberList.toArray(new ImGroupMember[imGroupMemberList.size()]);
-                imFeignService.groupQuit(new ImGroupModel(classGroup.getId().toString(), imGroupMembers, classGroup.getName()));
+            if (userIdList.size() > 0) {
+                imGroupMemberService.quit(classGroup.getId().longValue(), userIdList);
             }
             // 新设置的老师加入群组
-            imGroupMemberList.clear();
+            userIdList.clear();
             for (ClassGroupTeacherMapper classGroupTeacherMapper : classGroupTeacherMapperList) {
                 if (!classGroup.getId().equals(classGroupTeacherMapper.getClassGroupId())) continue;
                 classGroupTeacherMapper.setMusicGroupId(classGroup.getMusicGroupId());
                 classGroupTeacherMapper.setGroupType(classGroup.getGroupType());
-                imGroupMemberList.add(new ImGroupMember(classGroupTeacherMapper.getUserId().toString()));
+                userIdList.add(classGroupTeacherMapper.getUserId());
                 newTeacher.add(classGroupTeacherMapper.getClassGroupId() + classGroupTeacherMapper.getTeacherRole().getCode() + classGroupTeacherMapper.getUserId());
             }
-            ImGroupMember[] imGroupMembers = imGroupMemberList.toArray(new ImGroupMember[imGroupMemberList.size()]);
-            imFeignService.groupJoin(new ImGroupModel(classGroup.getId().toString(), imGroupMembers, classGroup.getName()));
+            if (userIdList.size() > 0) {
+            	Map<Integer, String> userRoleMap = new HashMap<Integer, String>();
+            	for(Integer userId : userIdList){
+            		userRoleMap.put(userId, "");
+            	}
+                imGroupMemberService.join(classGroup.getId().longValue(), userRoleMap);
+            }
         }
         classGroupTeacherMapperDao.delMusicGroupTeacherMapper(classGroupTeacherMapperList);
 

+ 5 - 7
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java

@@ -225,7 +225,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
     @Autowired
     private SchoolDao schoolDao;
     @Autowired
-	private ImFeignService imFeignService;
+	private ImGroupMemberService imGroupMemberService;
     @Autowired
     private CourseHomeworkService courseHomeworkService;
     @Autowired
@@ -4643,13 +4643,11 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 		ClassGroup classGroup = classGroupDao.findByMusicGroupAndType(practiceGroupId, PRACTICE.getCode());
         if(Objects.nonNull(educationalTeacherId)&&!educationalTeacherId.equals(practiceGroup.getEducationalTeacherId())){
 			if(Objects.nonNull(practiceGroup.getEducationalTeacherId())){
-				ImGroupMember[] imGroupMembers = new ImGroupMember[]{new ImGroupMember(practiceGroup.getEducationalTeacherId().toString())};
-				imFeignService.groupQuit(new ImGroupModel(classGroup.getId().toString(), imGroupMembers, classGroup.getName()));
+				imGroupMemberService.quit(classGroup.getId().longValue(), practiceGroup.getEducationalTeacherId());
 			}
 
 			practiceGroup.setEducationalTeacherId(educationalTeacherId);
-			ImGroupMember[] newImGroupMemberList = new ImGroupMember[]{new ImGroupMember(practiceGroup.getEducationalTeacherId().toString())};
-			imFeignService.groupJoin(new ImGroupModel(classGroup.getId().toString(), newImGroupMemberList,classGroup.getName()));
+			imGroupMemberService.join(classGroup.getId().longValue(), educationalTeacherId, "", false);
 		}
 		if(Objects.nonNull(subjectId)&&!subjectId.equals(practiceGroup.getSubjectId())){
 			Subject subject = subjectDao.get(subjectId);
@@ -5024,8 +5022,8 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 			ImGroupMember[] oldImGroupMembers = {new ImGroupMember(oldTeacherId.toString())};
 			ImGroupMember[] imGroupMembers = {new ImGroupMember(newTeacherId.toString())};
 			for (ClassGroup classGroup:classGroupList) {
-				imFeignService.groupQuit(new ImGroupModel(classGroup.getId().toString(), oldImGroupMembers, classGroup.getName()));
-				imFeignService.groupJoin(new ImGroupModel(classGroup.getId().toString(), imGroupMembers, classGroup.getName()));
+				imGroupMemberService.quit(classGroup.getId().longValue(), oldTeacherId);
+				imGroupMemberService.join(classGroup.getId().longValue(), newTeacherId, null, false);
 			}
 		}
 	}

+ 11 - 9
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CoursesGroupServiceImpl.java

@@ -23,6 +23,7 @@ import com.ym.mec.im.ImFeignService;
 import com.ym.mec.thirdparty.message.MessageSenderPluginContext;
 import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.date.DateUtil;
+
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -78,7 +79,9 @@ public class CoursesGroupServiceImpl extends BaseServiceImpl<Long, CoursesGroup>
     @Autowired
     private SysUserCashAccountDetailService sysUserCashAccountDetailService;
     @Autowired
-    private ImFeignService imFeignService;
+    private ImGroupService imGroupService;
+    @Autowired
+    private ImGroupMemberService imGroupMemberService;
     @Autowired
     private CourseScheduleStudentPaymentDao courseScheduleStudentPaymentDao;
     @Autowired
@@ -739,14 +742,13 @@ public class CoursesGroupServiceImpl extends BaseServiceImpl<Long, CoursesGroup>
 
             return BaseController.failed(HttpStatus.FOUND, errMessage);
         }
-
-        List<ImGroupMember> imGroupMemberList = new ArrayList<>();
-        imGroupMemberList.add(new ImGroupMember(coursesGroup.getTeacherId().toString()));
-        imGroupMemberList.add(new ImGroupMember(order.getUserId().toString()));
-        ImGroupMember[] imGroupMembers = imGroupMemberList.toArray(new ImGroupMember[imGroupMemberList.size()]);
-        // 创建群组
-        imFeignService.groupCreate(new ImGroupModel(classGroup.getId().toString(), imGroupMembers, classGroup.getName()));
-
+        
+        Map<Integer,String> userRoleMap = new HashMap<Integer, String>();
+        userRoleMap.put(coursesGroup.getTeacherId(), "");
+        userRoleMap.put(order.getUserId(), "");
+        
+        imGroupService.create(classGroup.getId().longValue(), coursesGroup.getTeacherId(), classGroup.getName(), classGroup.getName(), classGroup.getName(), classGroup.getName(), null, "COMM");
+        imGroupMemberService.join(classGroup.getId().longValue(), userRoleMap);
         return BaseController.succeed();
     }
 

+ 0 - 16
mec-biz/src/main/java/com/ym/mec/biz/service/impl/EduPracticeGroupServiceImpl.java

@@ -617,12 +617,6 @@ public class EduPracticeGroupServiceImpl implements EduPracticeGroupService{
 
         studentDao.updateStudentServiceTag(practiceGroup.getStudentId(),null,YesOrNoEnum.YES.getCode());
 
-        List<ImGroupMember> imGroupMemberList = new ArrayList<>();
-        imGroupMemberList.add(new ImGroupMember(practiceGroup.getUserId().toString()));
-        imGroupMemberList.add(new ImGroupMember(practiceGroup.getStudentId().toString()));
-        ImGroupMember[] imGroupMembers = imGroupMemberList.toArray(new ImGroupMember[imGroupMemberList.size()]);
-        // 创建群组
-        imFeignService.groupCreate(new ImGroupModel(classGroup.getId().toString(), imGroupMembers, classGroup.getName()));
     }
 
     @Override
@@ -1162,16 +1156,6 @@ public class EduPracticeGroupServiceImpl implements EduPracticeGroupService{
 
         studentDao.updateStudentServiceTag(practiceGroupBuyParams.getStudentId(),null,YesOrNoEnum.YES.getCode());
 
-        List<ImGroupMember> imGroupMemberList = new ArrayList<>();
-        if(Objects.nonNull(practiceGroupBuyParams.getEducationalTeacherId())){
-            imGroupMemberList.add(new ImGroupMember(practiceGroupBuyParams.getEducationalTeacherId().toString()));
-        }
-        imGroupMemberList.add(new ImGroupMember(practiceGroupBuyParams.getUserId().toString()));
-        imGroupMemberList.add(new ImGroupMember(practiceGroupBuyParams.getStudentId().toString()));
-        ImGroupMember[] imGroupMembers = imGroupMemberList.toArray(new ImGroupMember[imGroupMemberList.size()]);
-        // 创建群组
-        imFeignService.groupCreate(new ImGroupModel(classGroup.getId().toString(), imGroupMembers, classGroup.getName()));
-
         return BaseController.succeed();
     }
 

+ 204 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImGroupMemberServiceImpl.java

@@ -0,0 +1,204 @@
+package com.ym.mec.biz.service.impl;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import com.ym.mec.biz.dal.dao.ImGroupDao;
+import com.ym.mec.biz.dal.dao.ImGroupMemberDao;
+import com.ym.mec.biz.dal.entity.ImGroup;
+import com.ym.mec.biz.dal.entity.ImGroupMember;
+import com.ym.mec.biz.service.ImGroupMemberService;
+import com.ym.mec.biz.service.ImGroupService;
+import com.ym.mec.common.dal.BaseDAO;
+import com.ym.mec.common.exception.BizException;
+import com.ym.mec.common.service.impl.BaseServiceImpl;
+import com.ym.mec.im.ImFeignService;
+import com.ym.mec.im.entity.GroupMember;
+import com.ym.mec.im.entity.GroupModel;
+
+@Service
+public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMember> implements ImGroupMemberService {
+
+	@Autowired
+	private ImGroupMemberDao imGroupMemberDao;
+
+	@Autowired
+	private ImGroupDao imGroupDao;
+
+	@Autowired
+	private ImFeignService imFeignService;
+
+	@Autowired
+	private ImGroupService imGroupService;
+
+	@Override
+	public BaseDAO<Long, ImGroupMember> getDAO() {
+		return imGroupMemberDao;
+	}
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public boolean join(Long imGroupId, Integer userId, String roleType, boolean isAdmin) {
+		ImGroup imGroup = imGroupDao.getLocked(imGroupId);
+		if (imGroup == null) {
+			throw new BizException("加入群组失败:群组[{}]不存在", imGroupId);
+		}
+		//检查用户是否已存在
+		List<ImGroupMember> imGroupMemberList = imGroupMemberDao.queryByImGroupIdAndUserId(imGroupId.toString(), userId.toString());
+		if(imGroupMemberList != null && imGroupMemberList.size() > 0){
+			return true;
+		}
+		
+		ImGroupMember imGroupMember = new ImGroupMember();
+		Date date = new Date();
+
+		imGroupMember.setCreateTime(date);
+		imGroupMember.setImGroupId(imGroupId);
+		imGroupMember.setIsAdmin(isAdmin);
+		imGroupMember.setRoleType(roleType);
+		imGroupMember.setUpdateTime(date);
+		imGroupMember.setUserId(userId);
+
+		imGroupMemberDao.insert(imGroupMember);
+
+		imGroup.setMemberNum(imGroup.getMemberNum() + 1);
+		imGroup.setUpdateTime(date);
+		imGroupDao.update(imGroup);
+
+		String groupId = imGroup.getId().toString();
+
+		GroupMember groupMember = new GroupMember(userId.toString(), groupId);
+		imFeignService.groupJoin(new GroupModel(groupId, new GroupMember[] { groupMember }, imGroup.getName()));
+
+		return true;
+	}
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public boolean join(Long imGroupId, Map<Integer, String> userRoleMap) {
+		ImGroup imGroup = imGroupDao.getLocked(imGroupId);
+		if (imGroup == null) {
+			throw new BizException("加入群组失败:群组[{}]不存在", imGroupId);
+		}
+		//检查用户是否已存在
+		List<Integer> existUserIdList = imGroupMemberDao.queryByImGroupIdAndUserId(imGroupId.toString(), userRoleMap.keySet().stream().map(Objects::toString)
+		.collect(Collectors.joining(","))).stream().map(e -> e.getUserId()).collect(Collectors.toList());
+
+		Date date = new Date();
+		List<ImGroupMember> imGroupMemberList = new ArrayList<ImGroupMember>();
+		List<GroupMember> groupMemberList = new ArrayList<GroupMember>();
+
+		String groupId = imGroup.getId().toString();
+
+		for (Entry<Integer, String> entry : userRoleMap.entrySet()) {
+			
+			if(existUserIdList.contains(entry.getKey())){
+				continue;
+			}
+
+			ImGroupMember imGroupMember = new ImGroupMember();
+			imGroupMember.setCreateTime(date);
+			imGroupMember.setImGroupId(imGroupId);
+			imGroupMember.setIsAdmin(false);
+			imGroupMember.setRoleType(entry.getValue());
+			imGroupMember.setUpdateTime(date);
+			imGroupMember.setUserId(entry.getKey());
+
+			imGroupMemberList.add(imGroupMember);
+			groupMemberList.add(new GroupMember(imGroupMember.getUserId().toString(), groupId));
+		}
+
+		if (imGroupMemberList.size() > 0) {
+			imGroupMemberDao.batchInsert(imGroupMemberList);
+
+			imGroup.setMemberNum(imGroup.getMemberNum() + imGroupMemberList.size());
+			imGroup.setUpdateTime(date);
+			imGroupDao.update(imGroup);
+
+			imFeignService.groupJoin(new GroupModel(groupId, groupMemberList.stream().toArray(GroupMember[]::new), imGroup.getName()));
+		}
+
+		return true;
+	}
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public boolean quit(Long imGroupId, Integer userId) {
+		List<Integer> userIdList = new ArrayList<Integer>();
+		userIdList.add(userId);
+
+		return quit(imGroupId, userIdList);
+	}
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public boolean quit(List<Long> imGroupIdList, Integer userId) {
+		for (Long imGroupId : imGroupIdList) {
+			quit(imGroupId, userId);
+		}
+		return true;
+	}
+
+	@Override
+	public boolean quit(Long imGroupId, List<Integer> userIdList) {
+
+		ImGroup imGroup = imGroupDao.getLocked(imGroupId);
+		if (imGroup == null) {
+			throw new BizException("退出群组失败:群组[{}]不存在", imGroupId);
+		}
+
+		List<ImGroupMember> imGroupMemberList = imGroupMemberDao.queryByImGroupIdAndUserId(imGroupId.toString(), userIdList.stream().map(Objects::toString)
+				.collect(Collectors.joining(",")));
+
+		if (imGroupMemberList == null || imGroupMemberList.size() == 0) {
+			return true;
+		}
+
+		imGroupMemberDao.batchDelete(imGroupMemberList);
+
+		imGroup.setMemberNum(imGroup.getMemberNum() - 1);
+		imGroup.setUpdateTime(new Date());
+		imGroupDao.update(imGroup);
+
+		String groupId = imGroup.getId().toString();
+
+		List<GroupMember> groupMemberList = new ArrayList<GroupMember>();
+		for (Integer userId : userIdList) {
+			groupMemberList.add(new GroupMember(userId.toString(), groupId));
+		}
+		imFeignService.groupQuit(new GroupModel(groupId, groupMemberList.stream().toArray(GroupMember[]::new), imGroup.getName()));
+
+		return true;
+	}
+
+	@Override
+	public boolean updateRoleType(Long imGroupId, Integer userId, String roleType) {
+		List<Integer> userIdList = new ArrayList<Integer>();
+		userIdList.add(userId);
+		List<ImGroupMember> imGroupMemberList = imGroupMemberDao.queryByImGroupIdAndUserId(imGroupId.toString(), userIdList.stream().map(Objects::toString)
+				.collect(Collectors.joining(",")));
+
+		if (imGroupMemberList == null || imGroupMemberList.size() == 0) {
+			throw new BizException("更新失败:找不到用户信息");
+		}
+
+		Date date = new Date();
+		for (ImGroupMember imGroupMember : imGroupMemberList) {
+			imGroupMember.setRoleType(roleType);
+			imGroupMember.setUpdateTime(date);
+		}
+		imGroupMemberDao.batchUpdate(imGroupMemberList);
+
+		return true;
+	}
+
+}

+ 36 - 5
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImGroupNoticeServiceImpl.java

@@ -1,16 +1,26 @@
 package com.ym.mec.biz.service.impl;
 
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
 import com.ym.mec.biz.dal.dao.ImGroupNoticeDao;
+import com.ym.mec.biz.dal.dto.ImGroupNoticeDto;
 import com.ym.mec.biz.dal.entity.ImGroupNotice;
+import com.ym.mec.biz.dal.page.ImGroupNoticeQueryInfo;
 import com.ym.mec.biz.service.ImGroupNoticeService;
 import com.ym.mec.common.dal.BaseDAO;
+import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
+import com.ym.mec.util.collection.MapUtil;
 
 @Service
 public class ImGroupNoticeServiceImpl extends BaseServiceImpl<Long, ImGroupNotice>  implements ImGroupNoticeService {
-
+	
 	@Autowired
 	private ImGroupNoticeDao imGroupNoticeDao;
 
@@ -20,7 +30,28 @@ public class ImGroupNoticeServiceImpl extends BaseServiceImpl<Long, ImGroupNotic
 	}
 
 	@Override
-	public ImGroupNotice getNewNotice(Long groupId) {
-		return imGroupNoticeDao.getNewNotice(groupId);
+	public PageInfo<ImGroupNoticeDto> queryPage(ImGroupNoticeQueryInfo queryInfo) {
+		PageInfo<ImGroupNoticeDto> pageInfo = new PageInfo<ImGroupNoticeDto>(queryInfo.getPage(), queryInfo.getRows());
+		Map<String, Object> params = new HashMap<String, Object>();
+		MapUtil.populateMap(params, queryInfo);
+		
+		List<ImGroupNoticeDto> dataList = null;
+		int count = this.findCount(params);
+		if (count > 0) {
+			pageInfo.setTotal(count);
+			params.put("offset", pageInfo.getOffset());
+			dataList = imGroupNoticeDao.queryForPage(params);
+		}
+		if (count == 0) {
+			dataList = new ArrayList<ImGroupNoticeDto>();
+		}
+		pageInfo.setRows(dataList);
+		return pageInfo;
+	}
+
+	@Override
+	public ImGroupNoticeDto queryLatestNotice(Long imGroupId) {
+		return imGroupNoticeDao.queryLatestNotice(imGroupId);
 	}
+	
 }

+ 122 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImGroupServiceImpl.java

@@ -0,0 +1,122 @@
+package com.ym.mec.biz.service.impl;
+
+import java.util.Date;
+import java.util.List;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import com.ym.mec.biz.dal.dao.ImGroupDao;
+import com.ym.mec.biz.dal.dao.ImGroupMemberDao;
+import com.ym.mec.biz.dal.dao.ImGroupNoticeDao;
+import com.ym.mec.biz.dal.dto.ImGroupMemberDto;
+import com.ym.mec.biz.dal.entity.ImGroup;
+import com.ym.mec.biz.service.ImGroupMemberService;
+import com.ym.mec.biz.service.ImGroupService;
+import com.ym.mec.common.dal.BaseDAO;
+import com.ym.mec.common.service.impl.BaseServiceImpl;
+import com.ym.mec.im.ImFeignService;
+import com.ym.mec.im.entity.GroupMember;
+import com.ym.mec.im.entity.GroupModel;
+
+@Service
+public class ImGroupServiceImpl extends BaseServiceImpl<Long, ImGroup> implements ImGroupService {
+
+	@Autowired
+	private ImGroupDao imGroupDao;
+
+	@Autowired
+	private ImGroupMemberDao imGroupMemberDao;
+
+	@Autowired
+	private ImGroupNoticeDao imGroupNoticeDao;
+
+	@Autowired
+	private ImGroupMemberService imGroupMemberService;
+
+	@Autowired
+	private ImFeignService imFeignService;
+
+	@Override
+	public BaseDAO<Long, ImGroup> getDAO() {
+		return imGroupDao;
+	}
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public boolean create(Long id, Integer userId, String name, String introduce, String memo, String tags, String img, String type) {
+		ImGroup imGroup = imGroupDao.get(id);
+		if (imGroup != null) {
+			return true;
+		}
+
+		imGroup = new ImGroup();
+
+		Date date = new Date();
+
+		imGroup.setId(id);
+		imGroup.setCreateTime(date);
+		imGroup.setIntroduce(introduce);
+		
+		if(userId != null){
+			imGroup.setMemberNum(1);
+		}else{
+			imGroup.setMemberNum(0);
+		}
+		imGroup.setMemo(memo);
+		imGroup.setName(name);
+		imGroup.setTags(tags);
+		imGroup.setImg(img);
+		imGroup.setType(type);
+		imGroup.setUpdateTime(date);
+		imGroupDao.insert(imGroup);
+
+		String groupId = imGroup.getId().toString();
+		
+		if(userId != null){
+			imGroupMemberService.join(imGroup.getId(), userId, null, true);
+
+			GroupMember groupMember = new GroupMember(userId.toString(), groupId);
+
+			imFeignService.groupCreate(new GroupModel(groupId, new GroupMember[] { groupMember }, name));
+		}else{
+			imFeignService.groupCreate(new GroupModel(groupId, null, name));
+		}
+
+		return true;
+	}
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public boolean cancel(Long imGroupId) {
+
+		// 删除群成员
+		imGroupMemberDao.deleteByImGroupId(imGroupId);
+		// 删除群公告
+		imGroupNoticeDao.deleteByImGroupId(imGroupId);
+		// 删除群信息
+		imGroupDao.delete(imGroupId);
+
+		String groupId = imGroupId.toString();
+		imFeignService.groupDismiss(new GroupModel(groupId, null));
+
+		return true;
+	}
+
+	@Override
+	public List<ImGroup> queryByUserId(Integer userId, String search) {
+		return imGroupDao.queryByUserId(userId, search);
+	}
+
+	@Override
+	public List<ImGroupMemberDto> queryMemberById(Long imGroupId) {
+		return imGroupDao.queryMemberById(imGroupId);
+	}
+
+	@Override
+	public ImGroupMemberDto queryMember(Long imGroupId, Integer userId) {
+		return imGroupDao.queryMember(imGroupId, userId);
+	}
+
+}

+ 84 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImUserFriendServiceImpl.java

@@ -0,0 +1,84 @@
+package com.ym.mec.biz.service.impl;
+
+import java.util.Date;
+import java.util.List;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import com.ym.mec.biz.dal.dao.ImUserFriendDao;
+import com.ym.mec.biz.dal.dto.ImUserFriendDto;
+import com.ym.mec.biz.dal.entity.ImUserFriend;
+import com.ym.mec.biz.service.ImUserFriendService;
+import com.ym.mec.common.dal.BaseDAO;
+import com.ym.mec.common.exception.BizException;
+import com.ym.mec.common.service.impl.BaseServiceImpl;
+
+@Service
+public class ImUserFriendServiceImpl extends BaseServiceImpl<Long, ImUserFriend> implements ImUserFriendService {
+
+	@Autowired
+	private ImUserFriendDao imUserFriendDao;
+
+	@Override
+	public BaseDAO<Long, ImUserFriend> getDAO() {
+		return imUserFriendDao;
+	}
+
+	@Override
+	public boolean addFriend(Integer userId, Integer friendUserId, String nickname, String memo) {
+		// 检查是否已经是好友
+		ImUserFriend userFriend = imUserFriendDao.query(userId, friendUserId);
+		if (userFriend != null) {
+			throw new BizException("好友已存在");
+		}
+
+		Date date = new Date();
+
+		userFriend = new ImUserFriend();
+		userFriend.setFriendId(friendUserId);
+		userFriend.setUserId(friendUserId);
+		userFriend.setFriendNickname(nickname);
+		userFriend.setMemo(memo);
+		userFriend.setCreateTime(date);
+		userFriend.setUpdateTime(date);
+		imUserFriendDao.insert(userFriend);
+
+		return true;
+	}
+
+	@Override
+	public boolean deleteFriend(Integer userId, Integer friendUserId) {
+		ImUserFriend userFriend = imUserFriendDao.query(userId, friendUserId);
+		if (userFriend == null) {
+			throw new BizException("好友不存在");
+		}
+		imUserFriendDao.delete(userFriend.getId());
+		return true;
+	}
+
+	@Override
+	public boolean updateFriendNickname(Integer userId, Integer friendUserId, String nickname) {
+		ImUserFriend userFriend = imUserFriendDao.query(userId, friendUserId);
+		if (userFriend == null) {
+			throw new BizException("好友不存在");
+		}
+		Date date = new Date();
+		userFriend.setFriendNickname(nickname);
+		userFriend.setUpdateTime(date);
+		imUserFriendDao.update(userFriend);
+
+		return true;
+	}
+
+	@Override
+	public List<ImUserFriendDto> queryFriendListByUserId(Integer userId, String search) {
+		return imUserFriendDao.queryFriendListByUserId(userId, search);
+	}
+
+	@Override
+	public ImUserFriendDto queryFriendDetail(Integer userId, Integer friendUserId) {
+		return imUserFriendDao.queryFriendDetail(userId, friendUserId);
+	}
+
+}

+ 15 - 15
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java

@@ -119,6 +119,7 @@ import com.ym.mec.biz.service.ClassGroupService;
 import com.ym.mec.biz.service.ClassGroupStudentMapperService;
 import com.ym.mec.biz.service.CourseScheduleStudentPaymentService;
 import com.ym.mec.biz.service.GoodsService;
+import com.ym.mec.biz.service.ImGroupMemberService;
 import com.ym.mec.biz.service.MusicGroupPaymentCalenderService;
 import com.ym.mec.biz.service.MusicGroupService;
 import com.ym.mec.biz.service.MusicGroupSubjectGoodsGroupService;
@@ -260,7 +261,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
     @Autowired
     private MusicGroupPaymentCalenderDetailDao musicGroupPaymentCalenderDetailDao;
     @Autowired
-    private ImFeignService imFeignService;
+    private ImGroupMemberService imGroupMemberService;
     @Autowired
     private StudentPaymentRouteOrderService studentPaymentRouteOrderService;
     @Autowired
@@ -2311,12 +2312,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         }
         Integer teamTeacherId = newMusicGroup.getTeamTeacherId();
         Integer educationalTeacherId = newMusicGroup.getEducationalTeacherId();
-
-        ImGroupMember[] oldImGroupMembers1 = {new ImGroupMember(oldMusicGroup.getTeamTeacherId().toString())};
-        ImGroupMember[] nowImGroupMembers1 = {new ImGroupMember(teamTeacherId.toString())};
-        ImGroupMember[] oldImGroupMembers2 = {new ImGroupMember(oldMusicGroup.getEducationalTeacherId().toString())};
-        ImGroupMember[] nowImGroupMembers2 = {new ImGroupMember(educationalTeacherId.toString())};
-
+        
         Integer oldDirectorUserId = oldMusicGroup.getDirectorUserId();
         if (oldDirectorUserId == null) {
             oldDirectorUserId = teamTeacherId;
@@ -2326,15 +2322,19 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
             directorUserId = teamTeacherId;
         }
 
-        ImGroupMember[] oldImGroupMembers3 = {new ImGroupMember(oldDirectorUserId.toString())};
-        ImGroupMember[] nowImGroupMembers3 = {new ImGroupMember(directorUserId.toString())};
+        List<Integer> quitUserIdList = new ArrayList<Integer>();
+        quitUserIdList.add(oldMusicGroup.getTeamTeacherId());
+        quitUserIdList.add(oldMusicGroup.getEducationalTeacherId());
+        quitUserIdList.add(oldDirectorUserId);
+
+        Map<Integer,String> userRoleMap = new HashMap<Integer, String>();
+        userRoleMap.put(teamTeacherId, null);
+        userRoleMap.put(educationalTeacherId, null);
+        userRoleMap.put(directorUserId, null);
+        
         classGroups.forEach(e -> {
-            imFeignService.groupQuit(new ImGroupModel(e.getId().toString(), oldImGroupMembers3, e.getName()));
-            imFeignService.groupJoin(new ImGroupModel(e.getId().toString(), nowImGroupMembers3, e.getName()));
-            imFeignService.groupQuit(new ImGroupModel(e.getId().toString(), oldImGroupMembers2, e.getName()));
-            imFeignService.groupJoin(new ImGroupModel(e.getId().toString(), nowImGroupMembers2, e.getName()));
-            imFeignService.groupQuit(new ImGroupModel(e.getId().toString(), oldImGroupMembers1, e.getName()));
-            imFeignService.groupJoin(new ImGroupModel(e.getId().toString(), nowImGroupMembers1, e.getName()));
+        	imGroupMemberService.quit(e.getId().longValue(), quitUserIdList);
+        	imGroupMemberService.join(e.getId().longValue(), userRoleMap);
         });
     }
 

+ 10 - 9
mec-biz/src/main/java/com/ym/mec/biz/service/impl/OnlineMusicGroupServiceImpl.java

@@ -18,6 +18,7 @@ import com.ym.mec.common.exception.BizException;
 import com.ym.mec.im.ImFeignService;
 import com.ym.mec.thirdparty.message.MessageSenderPluginContext;
 import com.ym.mec.util.date.DateUtil;
+
 import org.apache.commons.lang3.StringUtils;
 import org.apache.poi.util.StringUtil;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -76,7 +77,9 @@ public class OnlineMusicGroupServiceImpl implements OnlineMusicGroupService {
     @Autowired
     private PracticeGroupService practiceGroupService;
     @Autowired
-    private ImFeignService imFeignService;
+    private ImGroupService imGroupService;
+    @Autowired
+    private ImGroupMemberService imGroupMemberService;
     @Autowired
     private SysMessageService sysMessageService;
 
@@ -286,15 +289,13 @@ public class OnlineMusicGroupServiceImpl implements OnlineMusicGroupService {
 
         studentDao.updateStudentServiceTag(onlineMusicGroupCourseInfo.getStudentId(),null,YesOrNoEnum.YES.getCode());
 
-        List<ImGroupMember> imGroupMemberList = new ArrayList<>();
-        if(Objects.nonNull(musicGroup.getEducationalTeacherId())){
-            imGroupMemberList.add(new ImGroupMember(musicGroup.getEducationalTeacherId().toString()));
-        }
-        imGroupMemberList.add(new ImGroupMember(onlineMusicGroupCourseInfo.getStudentId().toString()));
-        imGroupMemberList.add(new ImGroupMember(onlineMusicGroupCourseInfo.getTeacherId().toString()));
-        ImGroupMember[] imGroupMembers = imGroupMemberList.toArray(new ImGroupMember[imGroupMemberList.size()]);
+        Map<Integer,String> userRoleMap = new HashMap<Integer, String>();
+        userRoleMap.put(onlineMusicGroupCourseInfo.getStudentId(), null);
+        userRoleMap.put(onlineMusicGroupCourseInfo.getTeacherId(), null);
+        
         // 创建群组
-        imFeignService.groupCreate(new ImGroupModel(classGroup.getId().toString(), imGroupMembers, classGroup.getName()));
+        imGroupService.create(classGroup.getId().longValue(), musicGroup.getEducationalTeacherId(), classGroup.getName(), classGroup.getName(), classGroup.getName(), classGroup.getName(), null, "MUSIC");
+        imGroupMemberService.join(classGroup.getId().longValue(), userRoleMap);
 
         List<String> courseTimes = courses.stream().map(c -> DateUtil.dateToString(c.getStartClassTime(), "yyyy-MM-dd HH:mm")).collect(Collectors.toList());
 

+ 0 - 19
mec-biz/src/main/java/com/ym/mec/biz/service/impl/PracticeGroupServiceImpl.java

@@ -2125,16 +2125,6 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
 
         studentDao.updateStudentServiceTag(practiceGroup.getStudentId(), null, YesOrNoEnum.YES.getCode());
 
-        List<ImGroupMember> imGroupMemberList = new ArrayList<>();
-        if (Objects.nonNull(practiceGroup.getEducationalTeacherId())) {
-            imGroupMemberList.add(new ImGroupMember(practiceGroup.getEducationalTeacherId().toString()));
-        }
-        imGroupMemberList.add(new ImGroupMember(practiceGroup.getUserId().toString()));
-        imGroupMemberList.add(new ImGroupMember(practiceGroup.getStudentId().toString()));
-        ImGroupMember[] imGroupMembers = imGroupMemberList.toArray(new ImGroupMember[imGroupMemberList.size()]);
-        // 创建群组
-        imFeignService.groupCreate(new ImGroupModel(classGroup.getId().toString(), imGroupMembers, classGroup.getName()));
-
         result.put("teacherName", teacher.getRealName());
         result.put("enableApply", applyTimes < 1 ? 1 : 0);
         result.put("status", "SUCCESS");
@@ -3313,15 +3303,6 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
 
         studentDao.updateStudentServiceTag(practiceGroup.getStudentId(), null, YesOrNoEnum.YES.getCode());
 
-        List<ImGroupMember> imGroupMemberList = new ArrayList<>();
-        if (Objects.nonNull(practiceGroup.getEducationalTeacherId())) {
-            imGroupMemberList.add(new ImGroupMember(practiceGroup.getEducationalTeacherId().toString()));
-        }
-        imGroupMemberList.add(new ImGroupMember(practiceGroup.getUserId().toString()));
-        imGroupMemberList.add(new ImGroupMember(practiceGroup.getStudentId().toString()));
-        ImGroupMember[] imGroupMembers = imGroupMemberList.toArray(new ImGroupMember[imGroupMemberList.size()]);
-        // 创建群组
-        imFeignService.groupCreate(new ImGroupModel(classGroup.getId().toString(), imGroupMembers, classGroup.getName()));
     }
 
     @Override

+ 4 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRegistrationServiceImpl.java

@@ -96,6 +96,7 @@ import com.ym.mec.biz.service.ClassGroupStudentMapperService;
 import com.ym.mec.biz.service.ContractService;
 import com.ym.mec.biz.service.CourseScheduleService;
 import com.ym.mec.biz.service.CourseScheduleStudentPaymentService;
+import com.ym.mec.biz.service.ImGroupMemberService;
 import com.ym.mec.biz.service.MusicGroupPaymentCalenderService;
 import com.ym.mec.biz.service.MusicGroupSubjectPlanService;
 import com.ym.mec.biz.service.SellOrderService;
@@ -159,6 +160,8 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
     @Autowired
     private ImFeignService imFeignService;
     @Autowired
+    private ImGroupMemberService imGroupMemberService;
+    @Autowired
     private MusicGroupSubjectPlanService musicGroupSubjectPlanService;
     @Autowired
     private MusicGroupPaymentCalenderService musicGroupPaymentCalenderService;
@@ -847,8 +850,7 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
             classGroupStudentMapper.setGroupType(GroupType.MUSIC);
             classGroupStudentMapperDao.insert(classGroupStudentMapper);
         }
-        ImGroupMember[] imGroupMembers = {new ImGroupMember(userId.toString())};
-        imFeignService.groupJoin(new ImGroupModel(classGroupId.toString(), imGroupMembers, classGroup.getName()));
+        imGroupMemberService.join(classGroupId.longValue(), userId, null, false);
         //2、班级人数调整
 //        classGroupDao.updateClassStudentNum(classGroupId.longValue(), 1);
         //3、学生加入新班级未开始课程

+ 29 - 40
mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java

@@ -89,7 +89,10 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
     @Autowired
 	private CourseScheduleTeacherSalaryDao courseScheduleTeacherSalaryDao;
     @Autowired
-	private ImFeignService imFeignService;
+	private ImGroupMemberService imGroupMemberService;
+    
+    @Autowired
+    private ImGroupService imGroupService;
     @Autowired
 	private SubjectDao subjectDao;
     @Autowired
@@ -1399,11 +1402,11 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 
 		List<ClassGroupStudentMapper> classGroupStudents = classGroupStudentMapperDao.findByClassGroup(classGroup.getId());
 
-		List<ImGroupMember> imGroupMemberList = new ArrayList<>();
+		Map<Integer,String> userRoleMap = new HashMap<Integer, String>();
 		if(Objects.nonNull(vipGroupApplyBaseInfoDto.getEducationalTeacherId())){
-            imGroupMemberList.add(new ImGroupMember(vipGroupApplyBaseInfoDto.getEducationalTeacherId().toString()));
+            userRoleMap.put(vipGroupApplyBaseInfoDto.getEducationalTeacherId(),null);
         }
-		imGroupMemberList.add(new ImGroupMember(vipGroupApplyBaseInfoDto.getUserId().toString()));
+		userRoleMap.put(vipGroupApplyBaseInfoDto.getUserId(),null);
 		//生成学生单课缴费信息
 		for (ClassGroupStudentMapper classGroupStudent : classGroupStudents) {
 			courseScheduleStudentPaymentService.createCourseScheduleStudentPaymentForVipGroup(vipGroupId,classGroupStudent.getUserId());
@@ -1414,16 +1417,14 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 			} catch (Exception e) {
 				e.printStackTrace();
 			}
-			imGroupMemberList.add(new ImGroupMember(classGroupStudent.getUserId().toString()));
+			userRoleMap.put(classGroupStudent.getUserId(),null);
 			studentDao.updateStudentServiceTag(classGroupStudent.getUserId(), null, YesOrNoEnum.YES.getCode());
 		}
 
 		courseScheduleService.checkNewCourseSchedules(courseSchedules, false,false);
 
 		try {
-			ImGroupMember[] imGroupMembers = imGroupMemberList.toArray(new ImGroupMember[imGroupMemberList.size()]);
-			// 创建群组
-			imFeignService.groupCreate(new ImGroupModel(classGroup.getId().toString(), imGroupMembers, classGroup.getName()));
+			imGroupMemberService.join(classGroup.getId().longValue(), userRoleMap);
 
 			//发送推送短信
 			Map<Integer,String> map = new HashMap<>(1);
@@ -1870,8 +1871,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
         classGroupDao.update(classGroup);
 
 		//学员退出班级群
-		ImGroupMember[] imGroupMembers = new ImGroupMember[]{new ImGroupMember(studentId.toString())};
-		imFeignService.groupQuit(new ImGroupModel(classGroup.getId().toString(), imGroupMembers, null));
+		imGroupMemberService.quit(classGroup.getId().longValue(), studentId);
 	}
 
 	@Override
@@ -2008,12 +2008,10 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 		Integer oldTeacherId=vipGroup.getUserId();
 		if(Objects.nonNull(studentRecoverInfo.getTeacherId())&&!studentRecoverInfo.getTeacherId().equals(vipGroup.getUserId())){
 			vipGroup.setUserId(studentRecoverInfo.getTeacherId());
+			
+			imGroupMemberService.quit(classGroup.getId().longValue(), oldTeacherId);
 
-			ImGroupMember[] imGroupMembers = new ImGroupMember[]{new ImGroupMember(oldTeacherId.toString())};
-			imFeignService.groupQuit(new ImGroupModel(classGroup.getId().toString(), imGroupMembers, classGroup.getName()));
-
-			ImGroupMember[] newImGroupMemberList = new ImGroupMember[]{new ImGroupMember(vipGroup.getUserId().toString())};
-			imFeignService.groupJoin(new ImGroupModel(classGroup.getId().toString(), newImGroupMemberList,classGroup.getName()));
+			imGroupMemberService.join(classGroup.getId().longValue(), vipGroup.getUserId(), null, false);
 		}
 
 		ClassGroupStudentMapper classStudentMapperByUserIdAndClassGroupId = classGroupStudentMapperDao.query(classGroup.getId(),
@@ -2335,8 +2333,8 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 				courseScheduleTeacherSalaryService.updateVipGroupCourseTeacherSalary(Integer.parseInt(studentPaymentOrder.getMusicGroupId()), null);
 
 				//学员退出班级群
-				ImGroupMember[] imGroupMembers = new ImGroupMember[]{new ImGroupMember(studentApplyRefunds.getUserId().toString())};
-				imFeignService.groupJoin(new ImGroupModel(studentPaymentOrder.getClassGroupId().toString(), imGroupMembers, null));
+				imGroupMemberService.quit(studentPaymentOrder.getClassGroupId().longValue(), studentApplyRefunds.getUserId());
+
 				break;
 			case REJECT:
 
@@ -2659,14 +2657,14 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 		if(Objects.nonNull(vipGroupApplyBaseInfo.getEducationalTeacherId())&&!vipGroupApplyBaseInfo.getEducationalTeacherId().equals(oldVipGroupInfo.getEducationalTeacherId())){
 			ClassGroup classGroup = classGroupDao.findByMusicGroupAndType(oldVipGroupInfo.getId().toString(), GroupType.VIP.getCode());
 			if(Objects.nonNull(oldVipGroupInfo.getEducationalTeacherId())){
-				ImGroupMember[] imGroupMembers = new ImGroupMember[]{new ImGroupMember(oldVipGroupInfo.getEducationalTeacherId().toString())};
-				imFeignService.groupQuit(new ImGroupModel(classGroup.getId().toString(), imGroupMembers, classGroup.getName()));
+				
+				imGroupMemberService.quit(classGroup.getId().longValue(), oldVipGroupInfo.getEducationalTeacherId());
 			}
 
 			oldVipGroupInfo.setEducationalTeacherId(vipGroupApplyBaseInfo.getEducationalTeacherId());
 			isChange=true;
-			ImGroupMember[] newImGroupMemberList = new ImGroupMember[]{new ImGroupMember(oldVipGroupInfo.getEducationalTeacherId().toString())};
-			imFeignService.groupJoin(new ImGroupModel(classGroup.getId().toString(), newImGroupMemberList,classGroup.getName()));
+			
+			imGroupMemberService.join(classGroup.getId().longValue(), oldVipGroupInfo.getEducationalTeacherId(), null, false);
 		}
 		if(Objects.nonNull(vipGroupApplyBaseInfo.getOrganId())&&!vipGroupApplyBaseInfo.getOrganId().equals(oldVipGroupInfo.getOrganId())){
 			isChange=true;
@@ -2770,7 +2768,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 
 		List<ClassGroupStudentMapper> classGroupStudents = classGroupStudentMapperDao.findByClassGroup(classGroup.getId());
 
-		List<ImGroupMember> imGroupMemberList = new ArrayList<>();
+		Map<Integer,String> userRoleMap = new HashMap<Integer, String>();
 		//生成学生单课缴费信息
 		for (ClassGroupStudentMapper classGroupStudent : classGroupStudents) {
 			SysUserCashAccount sysUserCashAccount = sysUserCashAccountService.get(classGroupStudent.getUserId());
@@ -2800,16 +2798,14 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 			sysUserCashAccountService.updateCourseBalance(classGroupStudent.getUserId(),sysUserCashAccount.getCourseBalance().subtract(surplusCourseTotalPrice),PlatformCashAccountDetailTypeEnum.PAY_FEE,surplusCourseTotalPrice.negate(),"后台加课扣除课程余额");
 
 			courseScheduleStudentPaymentDao.batchInsert(courseScheduleStudentPayments);
-			imGroupMemberList.add(new ImGroupMember(classGroupStudent.getUserId().toString()));
+			userRoleMap.put(classGroupStudent.getUserId(), null);
 		}
 
 		classGroupService.updateClassGroupInfo(classGroup.getId());
 
 //		courseScheduleStudentPaymentService.updateVipGiveCourse(vipGroup.getId());
 
-		ImGroupMember[] imGroupMembers = imGroupMemberList.toArray(new ImGroupMember[imGroupMemberList.size()]);
-		imFeignService.groupJoin(new ImGroupModel(classGroup.getId().toString(),
-				imGroupMembers, classGroup.getName()));
+		imGroupMemberService.join(classGroup.getId().longValue(), userRoleMap);
 	}
 
 	@Override
@@ -2857,7 +2853,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 		}
 
 		Date now=new Date();
-        List<ImGroupMember> imGroupMemberList = new ArrayList<>();
+        Map<Integer,String> userRoleMap = new HashMap<Integer, String>();
 
 		if(vipGroup.getStatus().equals(VipGroupStatusEnum.APPLYING)||vipGroup.getStatus().equals(VipGroupStatusEnum.NOT_START)){
 			List<CourseSchedule> courseSchedules = JSON.parseArray(vipGroup.getCourseSchedulesJson(),CourseSchedule.class);
@@ -2873,7 +2869,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 						salaryMap.get("onlineTeacherSalary"),
 						salaryMap.get("offlineTeacherSalary"));
 			}
-            imGroupMemberList.add(new ImGroupMember(vipGroup.getUserId().toString()));
+            userRoleMap.put(vipGroup.getUserId(), null);
 		}
 
 		List<CourseSchedule> surplusCourses = courseScheduleDao.findByClassGroupAndStatus(classGroup.getId(), CourseStatusEnum.NOT_START.getCode());
@@ -2904,7 +2900,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 					classGroupStudentMappers.add(classGroupStudentMapper);
 				}
 
-				imGroupMemberList.add(new ImGroupMember(studentId.toString()));
+				userRoleMap.put(studentId, null);
 			}
 
 			if(!CollectionUtils.isEmpty(classGroupStudentMappers)){
@@ -2923,9 +2919,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 			classGroupDao.update(classGroup);
 
 			try {
-				ImGroupMember[] imGroupMembers = imGroupMemberList.toArray(new ImGroupMember[imGroupMemberList.size()]);
-				// 创建群组
-				imFeignService.groupCreate(new ImGroupModel(classGroup.getId().toString(), imGroupMembers, classGroup.getName()));
+				imGroupMemberService.join(classGroup.getId().longValue(), userRoleMap);
 			} catch (Exception e) {
 				e.printStackTrace();
 			}
@@ -3070,7 +3064,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 				classGroupStudentMappers.add(classGroupStudentMapper);
 			}
 
-			imGroupMemberList.add(new ImGroupMember(studentId.toString()));
+			userRoleMap.put(studentId, null);
 
 			if(vipGroup.getOnlineClassesNum()>0){
 				try {
@@ -3106,9 +3100,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 		studentDao.updateStudentServiceTag(null, studentIds, YesOrNoEnum.YES.getCode());
 
 		try {
-			ImGroupMember[] imGroupMembers = imGroupMemberList.toArray(new ImGroupMember[imGroupMemberList.size()]);
-			// 创建群组
-			imFeignService.groupCreate(new ImGroupModel(classGroup.getId().toString(), imGroupMembers, classGroup.getName()));
+			imGroupMemberService.join(classGroup.getId().longValue(), userRoleMap);
 		} catch (Exception e) {
 			e.printStackTrace();
 		}
@@ -3180,12 +3172,9 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 			Set<Long> collect = vipGroupList.stream().map(e -> e.getId()).collect(Collectors.toSet());
 			Set<Integer> classGroupIds = classGroupDao.queryClassGroupIds(collect);
 			//解散群
-			List<ImGroupModel> imGroupModels = new ArrayList<>();
-			ImGroupMember[] imGroupMember = {new ImGroupMember("")};
 			for (Integer classGroupId : classGroupIds) {
-				imGroupModels.add(new ImGroupModel(classGroupId + "", imGroupMember, ""));
+				imGroupService.cancel(classGroupId.longValue());
 			}
-			imFeignService.groupBatchDismiss(imGroupModels);
 		}
 		List<VipGroup> normalVipGroupList = vipGroupDao.queryNormalStatusList();
 		if (!CollectionUtils.isEmpty(normalVipGroupList)){

+ 127 - 0
mec-biz/src/main/resources/config/mybatis/ImGroupMapper.xml

@@ -0,0 +1,127 @@
+<?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.ym.mec.biz.dal.dao.ImGroupDao">
+	
+	<resultMap type="com.ym.mec.biz.dal.entity.ImGroup" id="ImGroup">
+		<result column="id_" property="id" />
+		<result column="name_" property="name" />
+		<result column="introduce_" property="introduce" />
+		<result column="member_num_" property="memberNum" />
+		<result column="memo_" property="memo" />
+		<result column="tags_" property="tags" />
+		<result column="img_" property="img" />
+		<result column="type_" property="type" />
+		<result column="create_time_" property="createTime" />
+		<result column="update_time_" property="updateTime" />
+	</resultMap>
+	
+	<resultMap type="com.ym.mec.biz.dal.dto.ImGroupMemberDto" id="ImGroupMemberDto">
+		<result column="id_" property="id" />
+		<result column="im_group_id_" property="imGroupId" />
+		<result column="user_id_" property="userId" />
+		<result column="nickname_" property="nickname" />
+		<result column="is_admin_" property="isAdmin" />
+		<result column="role_type_" property="roleType" />
+		<result column="create_time_" property="createTime" />
+		<result column="update_time_" property="updateTime" />
+		<result column="username_" property="user.username" />
+		<result column="avatar_" property="user.avatar" />
+	</resultMap>
+	
+	<!-- 根据主键查询一条记录 -->
+	<select id="get" resultMap="ImGroup" >
+		SELECT * FROM im_group WHERE id_ = #{id} 
+	</select>
+	
+	<select id="getLocked" resultMap="ImGroup" >
+		SELECT * FROM im_group WHERE id_ = #{id} for update
+	</select>
+	
+	<!-- 全查询 -->
+	<select id="findAll" resultMap="ImGroup">
+		SELECT * FROM im_group ORDER BY id_
+	</select>
+	
+	<!-- 向数据库增加一条记录 -->
+	<insert id="insert" parameterType="com.ym.mec.biz.dal.entity.ImGroup" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
+		<!--
+		<selectKey resultClass="int" keyProperty="id" > 
+		SELECT SEQ_WSDEFINITION_ID.nextval AS ID FROM DUAL 
+		</selectKey>
+		-->
+		INSERT INTO im_group (id_,name_,introduce_,member_num_,memo_,tags_,img_,type_create_time_,update_time_) VALUES(#{id},#{name},#{introduce},#{memberNum},#{memo},#{tags},#{img},#{type},#{createTime},#{updateTime})
+	</insert>
+	
+	<!-- 根据主键查询一条记录 -->
+	<update id="update" parameterType="com.ym.mec.biz.dal.entity.ImGroup">
+		UPDATE im_group <set>
+		<if test="memberNum != null">
+		member_num_ = #{memberNum},
+		</if>
+		<if test="id != null">
+		id_ = #{id},
+		</if>
+		<if test="tags != null">
+		tags_ = #{tags},
+		</if>
+		<if test="introduce != null">
+		introduce_ = #{introduce},
+		</if>
+		<if test="updateTime != null">
+		update_time_ = #{updateTime},
+		</if>
+		<if test="memo != null">
+		memo_ = #{memo},
+		</if>
+		<if test="name != null">
+		name_ = #{name},
+		</if>
+		<if test="img != null">
+		img_ = #{img},
+		</if>
+		<if test="type != null">
+		type_ = #{type},
+		</if>
+		<if test="createTime != null">
+		create_time_ = #{createTime},
+		</if>
+		</set> WHERE id_ = #{id} 
+	</update>
+	
+	<!-- 根据主键删除一条记录 -->
+	<delete id="delete" >
+		DELETE FROM im_group WHERE id_ = #{id} 
+	</delete>
+	
+	<!-- 分页查询 -->
+	<select id="queryPage" resultMap="ImGroup" parameterType="map">
+		SELECT * FROM im_group ORDER BY id_ <include refid="global.limit"/>
+	</select>
+	
+	<!-- 查询当前表的总记录数 -->
+	<select id="queryCount" resultType="int">
+		SELECT COUNT(*) FROM im_group
+	</select>
+	
+	<select id="queryByUserId" resultMap="ImGroup" parameterType="map">
+		SELECT ig.* FROM im_group_member igm left join im_group ig on igm.im_group_id_ = ig.id_
+		where igm.user_id_ = #{userId}
+		<if test="search != null">
+			and (ig.name_ like concat('%',#{search},'%') or ig.tags_ like concat('%',#{search},'%'))
+		</if>
+	</select>
+	
+	<select id="queryMemberById" resultMap="ImGroupMemberDto">
+		SELECT igm.*,u.avatar_,case when find_in_set('STUDENT',u.user_type_) then u.username_ else u.real_name_ end username_ FROM im_group_member igm left join sys_user u on igm.user_id_ = u.id_
+		where igm.im_group_id_ = #{imGroupId}
+	</select>
+	
+	<select id="queryMember" resultMap="ImGroupMemberDto" parameterType="map">
+		SELECT igm.*,u.avatar_,case when find_in_set('STUDENT',u.user_type_) then u.username_ else u.real_name_ end username_ FROM im_group_member igm left join sys_user u on igm.user_id_ = u.id_
+		where igm.im_group_id_ = #{imGroupId} and igm.user_id_ = #{userId}
+	</select>
+</mapper>

+ 139 - 0
mec-biz/src/main/resources/config/mybatis/ImGroupMemberMapper.xml

@@ -0,0 +1,139 @@
+<?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.ym.mec.biz.dal.dao.ImGroupMemberDao">
+	
+	<resultMap type="com.ym.mec.biz.dal.entity.ImGroupMember" id="ImGroupMember">
+		<result column="id_" property="id" />
+		<result column="im_group_id_" property="imGroupId" />
+		<result column="user_id_" property="userId" />
+		<result column="nickname_" property="nickname" />
+		<result column="is_admin_" property="isAdmin" />
+		<result column="role_type_" property="roleType" />
+		<result column="create_time_" property="createTime" />
+		<result column="update_time_" property="updateTime" />
+	</resultMap>
+	
+	<!-- 根据主键查询一条记录 -->
+	<select id="get" resultMap="ImGroupMember" >
+		SELECT * FROM im_group_member WHERE id_ = #{id} 
+	</select>
+	
+	<!-- 全查询 -->
+	<select id="findAll" resultMap="ImGroupMember">
+		SELECT * FROM im_group_member ORDER BY id_
+	</select>
+	
+	<!-- 向数据库增加一条记录 -->
+	<insert id="insert" parameterType="com.ym.mec.biz.dal.entity.ImGroupMember" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
+		<!--
+		<selectKey resultClass="int" keyProperty="id" > 
+		SELECT SEQ_WSDEFINITION_ID.nextval AS ID FROM DUAL 
+		</selectKey>
+		-->
+		INSERT INTO im_group_member (id_,im_group_id_,user_id_,nickname_,is_admin_,role_type_,create_time_,update_time_) VALUES(#{id},#{imGroupId},#{userId},#{nickname},#{isAdmin},#{roleType},#{createTime},#{updateTime})
+	</insert>
+	
+	<insert id="batchInsert" parameterType="com.ym.mec.biz.dal.entity.ImGroupMember" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
+		INSERT INTO im_group_member (id_,im_group_id_,user_id_,nickname_,is_admin_,role_type_,create_time_,update_time_) VALUES
+		 <foreach collection="list" item="item" separator=";">
+		(#{item.id},#{item.imGroupId},#{item.userId},#{item.nickname},#{item.isAdmin},#{item.roleType},#{item.createTime},#{item.updateTime})
+		</foreach>
+	</insert>
+	
+	<!-- 根据主键查询一条记录 -->
+	<update id="update" parameterType="com.ym.mec.biz.dal.entity.ImGroupMember">
+		UPDATE im_group_member <set>
+		<if test="roleType != null">
+		role_type_ = #{roleType},
+		</if>
+		<if test="userId != null">
+		user_id_ = #{userId},
+		</if>
+		<if test="nickname != null">
+		nickname_ = #{nickname},
+		</if>
+		<if test="id != null">
+		id_ = #{id},
+		</if>
+		<if test="isAdmin != null">
+		is_admin_ = #{isAdmin},
+		</if>
+		<if test="imGroupId != null">
+		im_group_id_ = #{imGroupId},
+		</if>
+		<if test="updateTime != null">
+		update_time_ = #{updateTime},
+		</if>
+		<if test="createTime != null">
+		create_time_ = #{createTime},
+		</if>
+		</set> WHERE id_ = #{id} 
+	</update>
+	
+	<update id="batchUpdate" parameterType="com.ym.mec.biz.dal.entity.ImGroupMember">
+		<foreach collection="list" item="item" index="index" open="" close="" separator=";">
+			UPDATE im_group_member 
+			<set>
+				<if test="item。roleType != null">
+				role_type_ = #{item。roleType},
+				</if>
+				<if test="item。userId != null">
+				user_id_ = #{item。userId},
+				</if>
+				<if test="item.nickname != null">
+				nickname_ = #{item.nickname},
+				</if>
+				<if test="item。id != null">
+				id_ = #{item。id},
+				</if>
+				<if test="item。isAdmin != null">
+				is_admin_ = #{item。isAdmin},
+				</if>
+				<if test="item。imGroupId != null">
+				im_group_id_ = #{item。imGroupId},
+				</if>
+				<if test="item。updateTime != null">
+				update_time_ = #{item。updateTime},
+				</if>
+				<if test="item。createTime != null">
+				create_time_ = #{item。createTime},
+				</if>
+			</set> 
+			WHERE id_ = #{item。id}
+		</foreach> 
+	</update>
+	
+	<!-- 根据主键删除一条记录 -->
+	<delete id="delete" >
+		DELETE FROM im_group_member WHERE id_ = #{id} 
+	</delete>
+	
+	<!-- 分页查询 -->
+	<select id="queryPage" resultMap="ImGroupMember" parameterType="map">
+		SELECT * FROM im_group_member ORDER BY id_ <include refid="global.limit"/>
+	</select>
+	
+	<!-- 查询当前表的总记录数 -->
+	<select id="queryCount" resultType="int">
+		SELECT COUNT(*) FROM im_group_member
+	</select>
+	
+	<delete id="deleteByImGroupId" >
+		DELETE FROM im_group_member WHERE im_group_id_ = #{imGroupId}
+	</delete>
+	
+	<delete id="batchDelete" >
+		DELETE FROM im_group_member WHERE id_ in
+		<foreach collection="list" item="item" open="(" separator="," close=")">
+            #{item.id}
+        </foreach>
+	</delete>
+	
+	<select id="queryByImGroupIdAndUserId" resultMap="ImGroupMember" parameterType="map">
+		SELECT * FROM im_group_member where find_in_set(im_group_id_,#{imGroupIdList}) and find_in_set(user_id_,#{userId})
+	</select>
+</mapper>

+ 98 - 79
mec-biz/src/main/resources/config/mybatis/ImGroupNoticeMapper.xml

@@ -5,98 +5,117 @@
 不要修改此文件。所有改动将在下次重新自动生成时丢失。
 -->
 <mapper namespace="com.ym.mec.biz.dal.dao.ImGroupNoticeDao">
-
-    <resultMap type="com.ym.mec.biz.dal.entity.ImGroupNotice" id="ImGroupNotice">
-        <result column="id_" property="id"/>
-        <result column="im_group_id_" property="imGroupId"/>
-        <result column="title_" property="title"/>
-        <result column="content_" property="content"/>
-        <result column="real_name_" property="realName"/>
-        <result column="avatar_" property="avatar"/>
-        <result column="is_top_" property="isTop"/>
-        <result column="del_flag_" property="delFlag"/>
-        <result column="create_time_" property="createTime"/>
-        <result column="operator_id_" property="operatorId"/>
-        <result column="update_time_" property="updateTime"/>
-    </resultMap>
-
-    <!-- 根据主键查询一条记录 -->
-    <select id="get" resultMap="ImGroupNotice">
-		SELECT * FROM im_group_notice WHERE id_ = #{id}
+	
+	<resultMap type="com.ym.mec.biz.dal.entity.ImGroupNotice" id="ImGroupNotice">
+		<result column="id_" property="id" />
+		<result column="im_group_id_" property="imGroupId" />
+		<result column="title_" property="title" />
+		<result column="content_" property="content" />
+		<result column="is_top_" property="isTop" />
+		<result column="is_sent_to_new_member_" property="isSentToNewMember" />
+		<result column="create_time_" property="createTime" />
+		<result column="update_time_" property="updateTime" />
+		<result column="del_flag_" property="delFlag" />
+		<result column="operator_id_" property="operatorId" />
+	</resultMap>
+	
+	<resultMap type="com.ym.mec.biz.dal.dto.ImGroupNoticeDto" id="ImGroupNoticeDto" extends="ImGroupNotice">
+		<result column="real_name_" property="user.realName"/>
+        <result column="avatar_" property="user.avatar"/>
+	</resultMap>
+	
+	<!-- 根据主键查询一条记录 -->
+	<select id="get" resultMap="ImGroupNotice" >
+		SELECT * FROM im_group_notice WHERE id_ = #{id} 
 	</select>
-
-    <!-- 全查询 -->
-    <select id="findAll" resultMap="ImGroupNotice">
+	
+	<!-- 全查询 -->
+	<select id="findAll" resultMap="ImGroupNotice">
 		SELECT * FROM im_group_notice ORDER BY id_
 	</select>
-
-    <!-- 向数据库增加一条记录 -->
-    <insert id="insert" parameterType="com.ym.mec.biz.dal.entity.ImGroupNotice" useGeneratedKeys="true" keyColumn="id"
-            keyProperty="id">
-        INSERT INTO im_group_notice (im_group_id_,title_,content_,is_top_,
-        del_flag_,create_time_,update_time_,operator_id_)
-        VALUES(#{imGroupId},#{title},#{content},#{isTop},
-        #{delFlag},now(),now(),#{operatorId})
-    </insert>
-
-    <!-- 根据主键查询一条记录 -->
-    <update id="update" parameterType="com.ym.mec.biz.dal.entity.ImGroupNotice">
-        UPDATE im_group_notice
-        <set>
-            <if test="delFlag != null">
-                del_flag_ = #{delFlag},
-            </if>
-            <if test="title != null">
-                title_ = #{title},
-            </if>
-            <if test="content != null">
-                content_ = #{content},
-            </if>
-            <if test="isTop != null">
-                is_top_ = #{isTop},
-            </if>
-            <if test="updateTime != null">
-                update_time_ = NOW(),
-            </if>
-            <if test="operatorId != null">
-                operator_id_ = #{operatorId}
-            </if>
-        </set>
-        WHERE id_ = #{id}
-    </update>
-
-    <!-- 根据主键删除一条记录 -->
-    <update id="delete">
-		UPDATE im_group_notice SET del_flag_ = 1 WHERE id_ = #{id}
+	
+	<!-- 向数据库增加一条记录 -->
+	<insert id="insert" parameterType="com.ym.mec.biz.dal.entity.ImGroupNotice" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
+		<!--
+		<selectKey resultClass="int" keyProperty="id" > 
+		SELECT SEQ_WSDEFINITION_ID.nextval AS ID FROM DUAL 
+		</selectKey>
+		-->
+		INSERT INTO im_group_notice (id_,im_group_id_,title_,content_,is_top_,is_sent_to_new_member_,create_time_,update_time_,del_flag_,operator_id_) VALUES(#{id},#{imGroupId},#{title},#{content},#{isTop},#{isSentToNewMember},#{createTime},#{updateTime},#{delFlag},#{operatorId})
+	</insert>
+	
+	<!-- 根据主键查询一条记录 -->
+	<update id="update" parameterType="com.ym.mec.biz.dal.entity.ImGroupNotice">
+		UPDATE im_group_notice <set>
+		<if test="delFlag != null">
+		del_flag_ = #{delFlag},
+		</if>
+		<if test="operatorId != null">
+		operator_id_ = #{operatorId},
+		</if>
+		<if test="isTop != null">
+		is_top_ = #{isTop},
+		</if>
+		<if test="isSentToNewMember != null">
+		is_sent_to_new_member_ = #{isSentToNewMember},
+		</if>
+		<if test="id != null">
+		id_ = #{id},
+		</if>
+		<if test="imGroupId != null">
+		im_group_id_ = #{imGroupId},
+		</if>
+		<if test="title != null">
+		title_ = #{title},
+		</if>
+		<if test="updateTime != null">
+		update_time_ = #{updateTime},
+		</if>
+		<if test="content != null">
+		content_ = #{content},
+		</if>
+		<if test="createTime != null">
+		create_time_ = #{createTime},
+		</if>
+		</set> WHERE id_ = #{id} 
 	</update>
-
-    <!-- 分页查询 -->
-    <select id="queryPage" resultMap="ImGroupNotice" parameterType="map">
-        SELECT ign.*,su.real_name_,su.avatar_ FROM im_group_notice ign
-        LEFT JOIN sys_user su ON su.id_ = ign.operator_id_
-        <where>
+	
+	<!-- 根据主键删除一条记录 -->
+	<delete id="delete" >
+		DELETE FROM im_group_notice WHERE id_ = #{id} 
+	</delete>
+	
+	<!-- 分页查询 -->
+	<select id="queryForPage" resultMap="ImGroupNoticeDto" parameterType="map">
+		SELECT ign.*,u.real_name_,u.avatar_ FROM im_group_notice ign left join sys_user u on ign.operator_id_ = u.id_
+		<where>
             ign.del_flag_ = 0
             <if test="groupId != null">
                 AND ign.im_group_id_ = #{groupId}
             </if>
         </where>
         ORDER BY ign.is_top_ DESC,ign.update_time_ DESC
-        <include refid="global.limit"/>
-    </select>
-
-    <!-- 查询当前表的总记录数 -->
-    <select id="queryCount" resultType="int">
-		SELECT COUNT(*) FROM im_group_notice
-        <where>
-            del_flag_ = 0
+		<include refid="global.limit"/>
+	</select>
+	
+	<!-- 查询当前表的总记录数 -->
+	<select id="queryCount" resultType="int">
+		SELECT COUNT(ign.id_) FROM im_group_notice ign
+		<where>
+            ign.del_flag_ = 0
             <if test="groupId != null">
-                AND im_group_id_ = #{groupId}
+                AND ign.im_group_id_ = #{groupId}
             </if>
         </where>
 	</select>
-    <select id="getNewNotice" resultMap="ImGroupNotice">
-        SELECT * FROM im_group_notice ign
-        WHERE ign.im_group_id_ = #{groupId} AND ign.del_flag_ = 0
+	
+	<select id="queryLatestNotice" resultMap="ImGroupNoticeDto">
+		SELECT * FROM im_group_notice ign
+        WHERE ign.im_group_id_ = #{imGroupId} AND ign.del_flag_ = 0
         ORDER BY ign.is_top_ DESC,ign.update_time_ DESC LIMIT 1
-    </select>
+	</select>
+	
+	<delete id="deleteByImGroupId" >
+		DELETE FROM im_group_notice WHERE im_group_id_ = #{imGroupId}
+	</delete>
 </mapper>

+ 108 - 0
mec-biz/src/main/resources/config/mybatis/ImUserFriendMapper.xml

@@ -0,0 +1,108 @@
+<?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.ym.mec.biz.dal.dao.ImUserFriendDao">
+	
+	<resultMap type="com.ym.mec.biz.dal.entity.ImUserFriend" id="ImUserFriend">
+		<result column="id_" property="id" />
+		<result column="user_id_" property="userId" />
+		<result column="friend_id_" property="friendId" />
+		<result column="friend_nickname_" property="friendNickname" />
+		<result column="memo_" property="memo" />
+		<result column="tags_" property="tags" />
+		<result column="create_time_" property="createTime" />
+		<result column="update_time_" property="updateTime" />
+	</resultMap>
+	
+	<resultMap type="com.ym.mec.biz.dal.dto.ImUserFriendDto" id="ImUserFriendDto" extends="ImUserFriend">
+		<result column="real_name_" property="friend.realName" />
+		<result column="avatar_" property="friend.avatar" />
+		<result column="user_type_" property="friend.userType" />
+		<result column="phone_" property="friend.phone" />
+	</resultMap>
+	
+	<!-- 根据主键查询一条记录 -->
+	<select id="get" resultMap="ImUserFriend" >
+		SELECT * FROM im_user_friend WHERE id_ = #{id} 
+	</select>
+	
+	<!-- 全查询 -->
+	<select id="findAll" resultMap="ImUserFriend">
+		SELECT * FROM im_user_friend ORDER BY id_
+	</select>
+	
+	<!-- 向数据库增加一条记录 -->
+	<insert id="insert" parameterType="com.ym.mec.biz.dal.entity.ImUserFriend" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
+		<!--
+		<selectKey resultClass="int" keyProperty="id" > 
+		SELECT SEQ_WSDEFINITION_ID.nextval AS ID FROM DUAL 
+		</selectKey>
+		-->
+		INSERT INTO im_user_friend (id_,user_id_,friend_id_,friend_nickname_,memo_,tags_,create_time_,update_time_) VALUES(#{id},#{userId},#{friendId},#{friendNickname},#{memo},#{tags},#{createTime},#{updateTime})
+	</insert>
+	
+	<!-- 根据主键查询一条记录 -->
+	<update id="update" parameterType="com.ym.mec.biz.dal.entity.ImUserFriend">
+		UPDATE im_user_friend <set>
+		<if test="userId != null">
+		user_id_ = #{userId},
+		</if>
+		<if test="friendId != null">
+		friend_id_ = #{friendId},
+		</if>
+		<if test="id != null">
+		id_ = #{id},
+		</if>
+		<if test="friendNickname != null">
+		friend_nickname_ = #{friendNickname},
+		</if>
+		<if test="memo != null">
+		memo_ = #{memo},
+		</if>
+		<if test="tags != null">
+		tags_ = #{tags},
+		</if>
+		<if test="updateTime != null">
+		update_time_ = #{updateTime},
+		</if>
+		<if test="createTime != null">
+		create_time_ = #{createTime},
+		</if>
+		</set> WHERE id_ = #{id} 
+	</update>
+	
+	<!-- 根据主键删除一条记录 -->
+	<delete id="delete" >
+		DELETE FROM im_user_friend WHERE id_ = #{id} 
+	</delete>
+	
+	<!-- 分页查询 -->
+	<select id="queryPage" resultMap="ImUserFriend" parameterType="map">
+		SELECT * FROM im_user_friend ORDER BY id_ <include refid="global.limit"/>
+	</select>
+	
+	<!-- 查询当前表的总记录数 -->
+	<select id="queryCount" resultType="int">
+		SELECT COUNT(*) FROM im_user_friend
+	</select>
+	
+	<select id="query" resultMap="ImUserFriend" parameterType="map">
+		SELECT * FROM im_user_friend where user_id_ = #{userId} and friend_id_ = #{friendId}
+	</select>
+	
+	<select id="queryFriendListByUserId" resultMap="ImUserFriendDto" parameterType="map">
+		SELECT iuf.*,u.real_name_,u.avatar_,u.phone_,u.user_type_ FROM im_user_friend iuf left join sys_user u on iuf.friend_id_ = u.id_
+		where iuf.user_id_ = #{userId}
+		<if test="search != null">
+			and (u.real_name_ like concat('%',#{search},'%') or iuf.friend_nickname_ like concat('%',#{search},'%'))
+		</if>
+	</select>
+	
+	<select id="queryFriendDetail" resultMap="ImUserFriendDto" parameterType="map">
+		SELECT iuf.*,u.real_name_,u.avatar_,u.phone_,u.user_type_ FROM im_user_friend iuf left join sys_user u on iuf.friend_id_ = u.id_
+		where iuf.user_id_ = #{userId} and iuf.friend_id_ = #{friendUserId}
+	</select>
+</mapper>

+ 17 - 13
mec-client-api/src/main/java/com/ym/mec/im/ImFeignService.java

@@ -1,17 +1,21 @@
 package com.ym.mec.im;
 
-import com.ym.mec.common.entity.*;
-import org.apache.commons.lang3.StringUtils;
+import java.util.List;
+
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.http.MediaType;
-import org.springframework.scheduling.annotation.Async;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
 
 import com.ym.mec.common.config.FeignConfiguration;
+import com.ym.mec.common.entity.ImGroupMessage;
+import com.ym.mec.common.entity.ImGroupModel;
+import com.ym.mec.common.entity.ImPrivateMessage;
+import com.ym.mec.common.entity.ImResult;
+import com.ym.mec.common.entity.ImUserModel;
+import com.ym.mec.im.entity.GroupModel;
 import com.ym.mec.im.fallback.ImFeignServiceFallback;
 
-import java.util.List;
-
 @FeignClient(name = "im-server", configuration = FeignConfiguration.class, fallback = ImFeignServiceFallback.class)
 public interface ImFeignService {
 
@@ -37,7 +41,7 @@ public interface ImFeignService {
 	 * @return
 	 */
 	@PostMapping(value = "group/create")
-	Object groupCreate(@RequestBody ImGroupModel groupModel);
+	Object groupCreate(@RequestBody GroupModel groupModel);
 
 	/**
 	 * 批量创建群组
@@ -45,7 +49,7 @@ public interface ImFeignService {
 	 * @return
 	 */
 	@PostMapping(value = "group/batchCreate")
-	void groupBatchCreate(@RequestBody List<ImGroupModel> groupModels);
+	void groupBatchCreate(@RequestBody List<GroupModel> groupModels);
 
 	/**
 	 * 加入群组
@@ -53,7 +57,7 @@ public interface ImFeignService {
 	 * @return
 	 */
 	@PostMapping(value = "group/join")
-	Object groupJoin(@RequestBody ImGroupModel groupModel);
+	Object groupJoin(@RequestBody GroupModel groupModel);
 
 	/**
 	 * 批量加入群组
@@ -61,7 +65,7 @@ public interface ImFeignService {
 	 * @return
 	 */
 	@PostMapping(value = "group/batchJoin")
-	Object groupBatchJoin(@RequestBody List<ImGroupModel> groupModels);
+	Object groupBatchJoin(@RequestBody List<GroupModel> groupModels);
 
 	/**
 	 * 退出群组
@@ -69,7 +73,7 @@ public interface ImFeignService {
 	 * @return
 	 */
 	@PostMapping(value = "group/quit")
-	Object groupQuit(@RequestBody ImGroupModel groupModel);
+	Object groupQuit(@RequestBody GroupModel groupModel);
 
 	/**
 	 * 解散群组
@@ -77,7 +81,7 @@ public interface ImFeignService {
 	 * @return
 	 */
 	@PostMapping(value = "group/dismiss")
-	Object groupDismiss(@RequestBody ImGroupModel groupModel);
+	Object groupDismiss(@RequestBody GroupModel groupModel);
 
 	/**
 	 * 批量解散群组
@@ -93,7 +97,7 @@ public interface ImFeignService {
 	 * @return
 	 */
 	@PostMapping(value = "group/batchQuit")
-	Object groupBatchQuit(@RequestBody List<ImGroupModel> groupModels);
+	Object groupBatchQuit(@RequestBody List<GroupModel> groupModels);
 
 	/**
 	 * 发送私聊消息

+ 47 - 0
mec-client-api/src/main/java/com/ym/mec/im/entity/GroupMember.java

@@ -0,0 +1,47 @@
+package com.ym.mec.im.entity;
+
+public class GroupMember {
+
+	public String id;
+	public String groupId;
+	public Integer munite;//禁言分钟数
+
+	public GroupMember() {
+	}
+
+	public GroupMember(String id, String groupId, Integer munite) {
+		this.id = id;
+		this.groupId = groupId;
+		this.munite = munite;
+	}
+
+	public GroupMember(String id, String groupId) {
+		this.id = id;
+		this.groupId = groupId;
+	}
+
+	public GroupMember setId(String id) {
+		this.id = id;
+		return this;
+	}
+
+	public String getId() {
+		return this.id;
+	}
+
+	public String getGroupId() {
+		return this.groupId;
+	}
+
+	public void setGroupId(String groupId) {
+		this.groupId = groupId;
+	}
+
+	public Integer getMunite() {
+		return this.munite;
+	}
+
+	public void setMunite(Integer munite) {
+		this.munite = munite;
+	}
+}

+ 71 - 0
mec-client-api/src/main/java/com/ym/mec/im/entity/GroupModel.java

@@ -0,0 +1,71 @@
+package com.ym.mec.im.entity;
+
+public class GroupModel {
+
+	private String id;
+	private GroupMember[] members;
+	private String name;
+	private Integer minute;//禁言分钟数
+	private Integer status;
+
+	public GroupModel() {
+	}
+
+	public GroupModel(String id, GroupMember[] members, String name, Integer minute) {
+		this.id = id;
+		this.members = members;
+		this.name = name;
+		this.minute = minute;
+	}
+
+	public GroupModel(String id, GroupMember[] members, String name) {
+		this.id = id;
+		this.members = members;
+		this.name = name;
+	}
+
+	public GroupModel(String id, Integer status) {
+		this.id = id;
+		this.status = status;
+	}
+
+	public String getId() {
+		return this.id;
+	}
+
+	public GroupModel setId(String id) {
+		this.id = id;
+		return this;
+	}
+
+	public GroupMember[] getMembers() {
+		return this.members;
+	}
+
+	public GroupModel setMembers(GroupMember[] members) {
+		this.members = members;
+		return this;
+	}
+
+	public String getName() {
+		return this.name;
+	}
+
+	public GroupModel setName(String name) {
+		this.name = name;
+		return this;
+	}
+
+	public Integer getMinute() {
+		return this.minute;
+	}
+
+	public GroupModel setMinute(Integer minute) {
+		this.minute = minute;
+		return this;
+	}
+
+	public Integer getStatus() {
+		return this.status;
+	}
+}

+ 16 - 12
mec-client-api/src/main/java/com/ym/mec/im/fallback/ImFeignServiceFallback.java

@@ -1,12 +1,16 @@
 package com.ym.mec.im.fallback;
 
-import com.ym.mec.common.entity.*;
-import com.ym.mec.im.ImFeignService;
-import org.springframework.scheduling.annotation.Async;
+import java.util.List;
+
 import org.springframework.stereotype.Component;
 
-import javax.xml.ws.Action;
-import java.util.List;
+import com.ym.mec.common.entity.ImGroupMessage;
+import com.ym.mec.common.entity.ImGroupModel;
+import com.ym.mec.common.entity.ImPrivateMessage;
+import com.ym.mec.common.entity.ImResult;
+import com.ym.mec.common.entity.ImUserModel;
+import com.ym.mec.im.ImFeignService;
+import com.ym.mec.im.entity.GroupModel;
 
 @Component
 public class ImFeignServiceFallback implements ImFeignService {
@@ -23,32 +27,32 @@ public class ImFeignServiceFallback implements ImFeignService {
     }
 
     @Override
-    public Object groupCreate(ImGroupModel groupModel) {
+    public Object groupCreate(GroupModel groupModel) {
         return null;
     }
 
     @Override
-    public void groupBatchCreate(List<ImGroupModel> groupModels) {
+    public void groupBatchCreate(List<GroupModel> groupModels) {
 
     }
 
     @Override
-    public Object groupJoin(ImGroupModel groupModel) {
+    public Object groupJoin(GroupModel groupModel) {
         return null;
     }
 
     @Override
-    public Object groupBatchJoin(List<ImGroupModel> groupModels) {
+    public Object groupBatchJoin(List<GroupModel> groupModels) {
         return null;
     }
 
     @Override
-    public Object groupQuit(ImGroupModel groupModel) {
+    public Object groupQuit(GroupModel groupModel) {
         return null;
     }
 
     @Override
-    public Object groupDismiss(ImGroupModel groupModel) {
+    public Object groupDismiss(GroupModel groupModel) {
         return null;
     }
 
@@ -58,7 +62,7 @@ public class ImFeignServiceFallback implements ImFeignService {
     }
 
     @Override
-    public Object groupBatchQuit(List<ImGroupModel> groupModels) {
+    public Object groupBatchQuit(List<GroupModel> groupModels) {
         return null;
     }
 

+ 1 - 1
mec-common/common-core/src/main/java/com/ym/mec/common/entity/ImGroupModel.java

@@ -1,6 +1,6 @@
 package com.ym.mec.common.entity;
 
-public class ImGroupModel {
+public class ImGroupModel  {
     //群组编号
     private String id;
     //用户列表

+ 12 - 13
mec-student/src/main/java/com/ym/mec/student/controller/CourseController.java

@@ -1,28 +1,27 @@
 package com.ym.mec.student.controller;
 
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+
 import java.util.List;
 
-import com.timevale.tgtext.text.pdf.PdfStructTreeController.returnType;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.CourseScheduleDao;
 import com.ym.mec.biz.dal.dto.StudentCourseInfoDto;
 import com.ym.mec.biz.dal.dto.UserMusicGroupQueryInfo;
-import com.ym.mec.biz.dal.page.GroupNoticeQueryInfo;
+import com.ym.mec.biz.dal.page.ImGroupNoticeQueryInfo;
 import com.ym.mec.biz.dal.page.StudentPayLogQueryInfo;
 import com.ym.mec.biz.service.ClassGroupService;
 import com.ym.mec.biz.service.ImGroupNoticeService;
 import com.ym.mec.common.controller.BaseController;
 
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
 @RequestMapping("course")
 @Api(tags = "课程服务")
 @RestController
@@ -75,12 +74,12 @@ public class CourseController extends BaseController {
     @ApiOperation(value = "获取最新一条群公告")
     @RequestMapping("/getNewNotice")
     public Object getNewNotice(Long groupId) {
-        return succeed(imGroupNoticeService.getNewNotice(groupId));
+        return succeed(imGroupNoticeService.queryLatestNotice(groupId));
     }
 
     @ApiOperation(value = "获取群公告列表")
     @RequestMapping("/queryNoticePage")
-    public Object queryPage(GroupNoticeQueryInfo queryInfo) {
+    public Object queryPage(ImGroupNoticeQueryInfo queryInfo) {
         return succeed(imGroupNoticeService.queryPage(queryInfo));
     }
 

+ 98 - 0
mec-student/src/main/java/com/ym/mec/student/controller/ImGroupController.java

@@ -0,0 +1,98 @@
+package com.ym.mec.student.controller;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+
+import java.util.Objects;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.page.ImGroupNoticeQueryInfo;
+import com.ym.mec.biz.service.ImGroupNoticeService;
+import com.ym.mec.biz.service.ImGroupService;
+import com.ym.mec.biz.service.ImUserFriendService;
+import com.ym.mec.common.controller.BaseController;
+
+@RequestMapping("imGroup")
+@Api(tags = "IM群服务")
+@RestController
+public class ImGroupController extends BaseController {
+
+	@Autowired
+	private ImGroupService imGroupService;
+
+	@Autowired
+	private ImUserFriendService imUserFriendService;
+
+	@Autowired
+	private ImGroupNoticeService imGroupNoticeService;
+
+	@Autowired
+	private SysUserFeignService sysUserFeignService;
+
+	@ApiOperation("查询群列表")
+	@GetMapping(value = "/queryGroupList")
+	public Object queryGroupList(String search) {
+		SysUser sysUser = sysUserFeignService.queryUserInfo();
+		if (Objects.isNull(sysUser)) {
+			return failed(HttpStatus.FORBIDDEN, "请登录");
+		}
+
+		return succeed(imGroupService.queryByUserId(sysUser.getId(), search));
+	}
+
+	@ApiOperation("查询群详情")
+	@GetMapping(value = "/queryGroupDetail")
+	public Object queryGroupList(Long imGroupId) {
+
+		return succeed(imGroupService.get(imGroupId));
+	}
+
+	@ApiOperation("查询群成员列表")
+	@GetMapping(value = "/queryGroupMemberList")
+	public Object queryGroupMemberList(Long imGroupId) {
+
+		return succeed(imGroupService.queryMemberById(imGroupId));
+	}
+
+	@ApiOperation("查询群成员详情")
+	@GetMapping(value = "/queryGroupMemberDetail")
+	public Object queryGroupMemberDetail(Long imGroupId, Integer userId) {
+
+		return succeed(imGroupService.queryMember(imGroupId, userId));
+	}
+
+	@ApiOperation("查询好友详情")
+	@GetMapping(value = "/queryFriendDetail")
+	public Object queryFriendDetail(Integer userId) {
+		SysUser sysUser = sysUserFeignService.queryUserInfo();
+		if (Objects.isNull(sysUser)) {
+			return failed(HttpStatus.FORBIDDEN, "请登录");
+		}
+
+		return succeed(imUserFriendService.queryFriendDetail(sysUser.getId(), userId));
+	}
+
+	@ApiOperation("查询好友列表")
+	@GetMapping(value = "/queryFriendList")
+	public Object queryFriendList(String search) {
+		SysUser sysUser = sysUserFeignService.queryUserInfo();
+		if (Objects.isNull(sysUser)) {
+			return failed(HttpStatus.FORBIDDEN, "请登录");
+		}
+
+		return succeed(imUserFriendService.queryFriendListByUserId(sysUser.getId(), search));
+	}
+
+	@ApiOperation("查询群公告列表")
+	@GetMapping(value = "/queryNoticeList")
+	public Object queryNoticeList(ImGroupNoticeQueryInfo queryInfo) {
+		return succeed(imGroupNoticeService.queryPage(queryInfo));
+	}
+}

+ 3 - 3
mec-teacher/src/main/java/com/ym/mec/teacher/controller/ClassGroupController.java

@@ -18,7 +18,7 @@ import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.entity.CourseScheduleEvaluate;
 import com.ym.mec.biz.dal.page.CourseScheduleQueryInfo;
-import com.ym.mec.biz.dal.page.GroupNoticeQueryInfo;
+import com.ym.mec.biz.dal.page.ImGroupNoticeQueryInfo;
 import com.ym.mec.biz.service.ClassGroupService;
 import com.ym.mec.biz.service.CourseScheduleEvaluateService;
 import com.ym.mec.biz.service.ImGroupNoticeService;
@@ -90,12 +90,12 @@ public class ClassGroupController extends BaseController {
     @ApiOperation(value = "获取最新一条群公告")
     @RequestMapping("/getNewNotice")
     public Object getNewNotice(Long groupId) {
-        return succeed(imGroupNoticeService.getNewNotice(groupId));
+        return succeed(imGroupNoticeService.queryLatestNotice(groupId));
     }
 
     @ApiOperation(value = "获取群公告列表")
     @RequestMapping("/queryNoticePage")
-    public Object queryPage(GroupNoticeQueryInfo queryInfo) {
+    public Object queryPage(ImGroupNoticeQueryInfo queryInfo) {
         return succeed(imGroupNoticeService.queryPage(queryInfo));
     }
 

+ 119 - 0
mec-teacher/src/main/java/com/ym/mec/teacher/controller/ImGroupController.java

@@ -0,0 +1,119 @@
+package com.ym.mec.teacher.controller;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+
+import java.util.Objects;
+import java.util.stream.Collectors;
+
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.page.ImGroupNoticeQueryInfo;
+import com.ym.mec.biz.service.ImGroupNoticeService;
+import com.ym.mec.biz.service.ImGroupService;
+import com.ym.mec.biz.service.ImUserFriendService;
+import com.ym.mec.common.controller.BaseController;
+
+@RequestMapping("imGroup")
+@Api(tags = "IM群服务")
+@RestController
+public class ImGroupController extends BaseController {
+
+	@Autowired
+	private ImGroupService imGroupService;
+
+	@Autowired
+	private ImUserFriendService imUserFriendService;
+
+	@Autowired
+	private ImGroupNoticeService imGroupNoticeService;
+
+	@Autowired
+	private SysUserFeignService sysUserFeignService;
+
+	@ApiOperation("查询群列表")
+	@GetMapping(value = "/queryGroupList")
+	public Object queryGroupList(String search) {
+		SysUser sysUser = sysUserFeignService.queryUserInfo();
+		if (Objects.isNull(sysUser)) {
+			return failed(HttpStatus.FORBIDDEN, "请登录");
+		}
+
+		return succeed(imGroupService.queryByUserId(sysUser.getId(), search));
+	}
+
+	@ApiOperation("查询群详情")
+	@GetMapping(value = "/queryGroupDetail")
+	public Object queryGroupList(Long imGroupId) {
+
+		return succeed(imGroupService.get(imGroupId));
+	}
+
+	@ApiOperation("查询群成员列表")
+	@GetMapping(value = "/queryGroupMemberList")
+	public Object queryGroupMemberList(Long imGroupId) {
+
+		return succeed(imGroupService.queryMemberById(imGroupId));
+	}
+
+	@ApiOperation("查询群学生列表")
+	@GetMapping(value = "/queryGroupStudentList")
+	public Object queryGroupStudentList(Long imGroupId) {
+
+		return succeed(imGroupService.queryMemberById(imGroupId).stream().filter(e -> StringUtils.isBlank(e.getRoleType())).collect(Collectors.toList()));
+	}
+
+	@ApiOperation("查询群成员详情")
+	@GetMapping(value = "/queryGroupMemberDetail")
+	public Object queryGroupMemberDetail(Long imGroupId, Integer userId) {
+
+		return succeed(imGroupService.queryMember(imGroupId, userId));
+	}
+
+	@ApiOperation("查询好友详情")
+	@GetMapping(value = "/queryFriendDetail")
+	public Object queryFriendDetail(Integer userId) {
+		SysUser sysUser = sysUserFeignService.queryUserInfo();
+		if (Objects.isNull(sysUser)) {
+			return failed(HttpStatus.FORBIDDEN, "请登录");
+		}
+
+		return succeed(imUserFriendService.queryFriendDetail(sysUser.getId(), userId));
+	}
+
+	@ApiOperation("查询好友列表")
+	@GetMapping(value = "/queryFriendList")
+	public Object queryFriendList(String search) {
+		SysUser sysUser = sysUserFeignService.queryUserInfo();
+		if (Objects.isNull(sysUser)) {
+			return failed(HttpStatus.FORBIDDEN, "请登录");
+		}
+
+		return succeed(imUserFriendService.queryFriendListByUserId(sysUser.getId(), search));
+	}
+
+	@ApiOperation("查询好友中的学生列表")
+	@GetMapping(value = "/queryFriendStudentList")
+	public Object queryFriendStudentList(String search) {
+		SysUser sysUser = sysUserFeignService.queryUserInfo();
+		if (Objects.isNull(sysUser)) {
+			return failed(HttpStatus.FORBIDDEN, "请登录");
+		}
+
+		return succeed(imUserFriendService.queryFriendListByUserId(sysUser.getId(), search).stream().filter(e -> StringUtils.isBlank(e.getTags()))
+				.collect(Collectors.toList()));
+	}
+
+	@ApiOperation("查询群公告列表")
+	@GetMapping(value = "/queryNoticeList")
+	public Object queryNoticeList(ImGroupNoticeQueryInfo queryInfo) {
+		return succeed(imGroupNoticeService.queryPage(queryInfo));
+	}
+}

+ 15 - 0
mec-web/src/main/java/com/ym/mec/web/controller/ImGroupController.java

@@ -0,0 +1,15 @@
+package com.ym.mec.web.controller;
+
+import io.swagger.annotations.Api;
+
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.ym.mec.common.controller.BaseController;
+
+@RequestMapping("imGroup")
+@Api(tags = "IM群服务")
+@RestController
+public class ImGroupController extends BaseController {
+
+}

+ 12 - 13
mec-web/src/main/java/com/ym/mec/web/controller/education/ImGroupNoticeController.java

@@ -1,23 +1,22 @@
 package com.ym.mec.web.controller.education;
 
-import com.ym.mec.auth.api.client.SysUserFeignService;
-import com.ym.mec.auth.api.entity.SysUser;
-import com.ym.mec.biz.dal.entity.ImGroupNotice;
-import com.ym.mec.biz.dal.page.GroupNoticeQueryInfo;
-import com.ym.mec.biz.service.ImGroupNoticeService;
-import com.ym.mec.common.controller.BaseController;
-import com.ym.mec.common.page.QueryInfo;
-import com.ym.mec.im.ImFeignService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+
+import java.util.Date;
+
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
-import java.util.Date;
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.entity.ImGroupNotice;
+import com.ym.mec.biz.dal.page.ImGroupNoticeQueryInfo;
+import com.ym.mec.biz.service.ImGroupNoticeService;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.im.ImFeignService;
 
 /**
  * @Author Joburgess
@@ -65,13 +64,13 @@ public class ImGroupNoticeController extends BaseController {
     @RequestMapping("/getNewNotice")
     @PreAuthorize("@pcs.hasPermissions('imGroupNotice/getNewNotice','system')")
     public Object getNewNotice(Long groupId) {
-        return succeed(imGroupNoticeService.getNewNotice(groupId));
+        return succeed(imGroupNoticeService.queryLatestNotice(groupId));
     }
 
     @ApiOperation(value = "获取群公告列表")
     @RequestMapping("/queryNoticePage")
     @PreAuthorize("@pcs.hasPermissions('imGroupNotice/queryNoticePage','system')")
-    public Object queryPage(GroupNoticeQueryInfo queryInfo) {
+    public Object queryPage(ImGroupNoticeQueryInfo queryInfo) {
         return succeed(imGroupNoticeService.queryPage(queryInfo));
     }