Jelajahi Sumber

创建员工

liujc 2 tahun lalu
induk
melakukan
aad619b11b
26 mengubah file dengan 592 tambahan dan 278 penghapusan
  1. 5 0
      mec-biz/pom.xml
  2. 4 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ImGroupDao.java
  3. 4 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ImGroupMemberDao.java
  4. 7 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ImUserFriendDao.java
  5. 11 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/SysMessageDto.java
  6. 13 3
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ImGroup.java
  7. 11 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/SysMessage.java
  8. 2 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/mapper/SchoolStaffMapper.java
  9. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/SchoolActivityDetailWrapper.java
  10. 2 2
      mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/SchoolActivityWrapper.java
  11. 26 0
      mec-biz/src/main/java/com/ym/mec/biz/service/ImGroupService.java
  12. 3 3
      mec-biz/src/main/java/com/ym/mec/biz/service/SchoolActivityService.java
  13. 6 0
      mec-biz/src/main/java/com/ym/mec/biz/service/SchoolStaffService.java
  14. 2 0
      mec-biz/src/main/java/com/ym/mec/biz/service/SysConfigService.java
  15. 317 190
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImGroupServiceImpl.java
  16. 11 15
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/SchoolActivityServiceImpl.java
  17. 57 5
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/SchoolStaffServiceImpl.java
  18. 64 43
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysMessageServiceImpl.java
  19. 13 2
      mec-biz/src/main/resources/config/mybatis/ImGroupMapper.xml
  20. 10 0
      mec-biz/src/main/resources/config/mybatis/ImGroupMemberMapper.xml
  21. 4 0
      mec-biz/src/main/resources/config/mybatis/ImUserFriendMapper.xml
  22. 5 0
      mec-biz/src/main/resources/config/mybatis/SchoolStaffMapper.xml
  23. 5 3
      mec-biz/src/main/resources/config/mybatis/SysMessageMapper.xml
  24. 3 2
      mec-web/src/main/java/com/ym/mec/web/controller/SchoolMessageController.java
  25. 4 5
      mec-web/src/main/java/com/ym/mec/web/controller/school/SchoolActivityController.java
  26. 2 2
      mec-web/src/main/java/com/ym/mec/web/controller/school/SchoolStaffController.java

+ 5 - 0
mec-biz/pom.xml

@@ -73,6 +73,11 @@
             <artifactId>microsvc-config-validator</artifactId>
             <version>1.0.0</version>
         </dependency>
+        <dependency>
+            <groupId>com.microsvc.toolkit.middleware</groupId>
+            <artifactId>microsvc-middleware-im</artifactId>
+            <version>1.0.0</version>
+        </dependency>
 
     </dependencies>
 </project>

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

@@ -42,4 +42,8 @@ public interface ImGroupDao extends BaseDAO<String, ImGroup> {
     List<ImGroup> queryByUserIdV2(@Param("userId") Integer userId, @Param("search") String search, @Param("groupType") String groupType, @Param("musicGroupId") String musicGroupId, @Param("classType") String classType);
 
     List<ImGroupMemberDto> queryMemberByIdV2(@Param("imGroupId") String imGroupId, @Param("search") String search, @Param("subjectId") Integer subjectId, @Param("vipFlag") Boolean vipFlag);
+
+    ImGroup queryBySchoolId(@Param("schoolId") Long schoolId);
+
+    List<ImGroup> getByIds(@Param("musicGroupIds") List<String> musicGroupIds);
 }

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

@@ -35,4 +35,8 @@ public interface ImGroupMemberDao extends BaseDAO<Long, ImGroupMember> {
     int countGroupMember(Map<String, Object> params);
 
 	List<ImGroupMemberDto> queryGroupMemberPage(Map<String, Object> params);
+
+    List<ImGroupMember> queryMembersByUserId(@Param("userId") Long userId);
+
+    void deleteByUserId(Long userId);
 }

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

@@ -43,4 +43,11 @@ public interface ImUserFriendDao extends BaseDAO<Long, ImUserFriend> {
     List<NameDto> queryNameByIds(@Param("ids") String ids, @Param("userId") Integer userId);
 
     List<ImUserFriendDto> queryFriendListByUserIdV2(@Param("userId") Integer userId, @Param("search") String search, @Param("musicGroupId") String musicGroupId, @Param("subjectId") Integer subjectId, @Param("vipFlag") Boolean vipFlag);
+
+    /**
+     *  删除好友关系
+     *
+     * @param userId 用户id
+     */
+    void deleteByUserIdAndFriendId(Long userId);
 }

+ 11 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/SysMessageDto.java

@@ -7,7 +7,17 @@ public class SysMessageDto extends SysMessage {
 
 	private SysUser user = new SysUser();
 
-	public SysUser getUser() {
+    private String icon;
+
+    public String getIcon() {
+        return icon;
+    }
+
+    public void setIcon(String icon) {
+        this.icon = icon;
+    }
+
+    public SysUser getUser() {
 		return user;
 	}
 

+ 13 - 3
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ImGroup.java

@@ -11,6 +11,8 @@ public class ImGroup extends BaseEntity {
 
 	/**  */
 	private String id;
+
+    private Long schoolId;
 	
 	/** 群名称 */
 	private String name;
@@ -37,7 +39,7 @@ public class ImGroup extends BaseEntity {
 		VIP("VIP", "vip课"), DEMO("DEMO", "试听课"), PRACTICE("PRACTICE", "网管课"),
 		SNAP("SNAP","临时班级"), COMM("COMM", "对外课程"), HIGH_ONLINE("HIGH_ONLINE", "线上基础技能课"),
 		MUSIC_NETWORK("MUSIC_NETWORK","乐团网管课"),PARENT_MEETING("PARENT_MEETING","家长会"),
-		TRAINING("TRAINING","训练营"),REPERTOIRE_PLAY("REPERTOIRE_PLAY","曲目演奏课");
+		TRAINING("TRAINING","训练营"),REPERTOIRE_PLAY("REPERTOIRE_PLAY","曲目演奏课"),SHOOL("SCHOOL","学校衔接群");
 
 		private String code;
 
@@ -82,8 +84,16 @@ public class ImGroup extends BaseEntity {
 	
 	/**  */
 	private java.util.Date updateTime;
-	
-	public void setId(String id){
+
+    public Long getSchoolId() {
+        return schoolId;
+    }
+
+    public void setSchoolId(Long schoolId) {
+        this.schoolId = schoolId;
+    }
+
+    public void setId(String id){
 		this.id = id;
 	}
 	

+ 11 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/SysMessage.java

@@ -15,6 +15,8 @@ public class SysMessage extends BaseEntity {
 
 	/** 主键 */
 	private Long id;
+
+    private Integer messageConfigId;
 	
 	/** 标题 */
 	@ApiModelProperty(value = "标题",required = false)
@@ -72,7 +74,15 @@ public class SysMessage extends BaseEntity {
 		return jpushType;
 	}
 
-	public void setJpushType(String jpushType) {
+    public Integer getMessageConfigId() {
+        return messageConfigId;
+    }
+
+    public void setMessageConfigId(Integer messageConfigId) {
+        this.messageConfigId = messageConfigId;
+    }
+
+    public void setJpushType(String jpushType) {
 		this.jpushType = jpushType;
 	}
 

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/mapper/SchoolStaffMapper.java

@@ -39,4 +39,6 @@ public interface SchoolStaffMapper extends BaseMapper<SchoolStaff> {
      * @param cooperationOrganId 合作单位ID
      */
     void updateStatusAndRecoveryStatus(@Param("status") Boolean status, @Param("cooperationOrganId") Integer cooperationOrganId);
+
+    void delUser(@Param("userId") Long userId);
 }

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/SchoolActivityDetailWrapper.java

@@ -61,7 +61,7 @@ public class SchoolActivityDetailWrapper {
     }  
 
     @Data
-	@ApiModel(" SchoolActivityDetail-活动详情")
+	@ApiModel(" SchoolActivityDetail-活动详情列表")
     public static class SchoolActivityDetail {
 
         @ApiModelProperty("活动详情编号")

+ 2 - 2
mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/SchoolActivityWrapper.java

@@ -110,8 +110,8 @@ public class SchoolActivityWrapper {
 
 
     @Data
-    @ApiModel(" SchoolActivityDetail-学校活动详情")
-    public static class SchoolActivityDetail {
+    @ApiModel(" SchoolActivityInfo-学校活动详情")
+    public static class SchoolActivityInfo {
 
         @ApiModelProperty("活动编号")
         @NotNull(message = "活动编号不能为空",groups = {ValidGroups.Update.class})

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

@@ -1,9 +1,11 @@
 package com.ym.mec.biz.service;
 
+import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dto.ImGroupDto;
 import com.ym.mec.biz.dal.dto.ImGroupMemberDto;
 import com.ym.mec.biz.dal.dto.NameDto;
 import com.ym.mec.biz.dal.entity.ImGroup;
+import com.ym.mec.biz.dal.enums.school.ESchoolStaffType;
 import com.ym.mec.common.service.BaseService;
 
 import java.util.Arrays;
@@ -96,4 +98,28 @@ public interface ImGroupService extends BaseService<String, ImGroup> {
     List<ImGroup> queryByUserIdV2(Integer userId, String search, String groupType, String musicGroupId, String classType);
 
     List<ImGroupMemberDto> queryMemberByIdV2(String imGroupId,String search,Integer subjectId,Boolean vipFlag);
+
+    /**
+     * 用户退出所有群
+     *
+     * @param userId 用户id
+     */
+    void quit(Long userId);
+
+    /**
+     * 用户加入群
+     *
+     * @param schoolId 学校id
+     * @param userId 用户id
+     * @param leader 是否是群主
+     */
+    void addSchoolStaffGroup(Long schoolId, Integer userId, ESchoolStaffType leader) throws Exception;
+
+    /**
+     * 加群
+     *
+     * @param musicGroupIds 群组ID
+     * @param user 用户信息
+     */
+    void addImGroup(List<String> musicGroupIds, SysUser user);
 }

+ 3 - 3
mec-biz/src/main/java/com/ym/mec/biz/service/SchoolActivityService.java

@@ -18,7 +18,7 @@ public interface SchoolActivityService extends IService<SchoolActivity>  {
      * @param id 详情ID
      * @return SchoolActivity
      */
-    SchoolActivityWrapper.SchoolActivityDetail detail(Long id);
+    SchoolActivityWrapper.SchoolActivityInfo detail(Long id);
 
     /**
      * 分页查询
@@ -33,14 +33,14 @@ public interface SchoolActivityService extends IService<SchoolActivity>  {
      * @param schoolActivity SchoolActivityWrapper.SchoolActivity
      * @return Boolean
      */
-     Boolean add(SchoolActivityWrapper.SchoolActivityDetail schoolActivity);
+     Boolean add(SchoolActivityWrapper.SchoolActivityInfo schoolActivity);
 
     /**
      * 更新
      * @param schoolActivity SchoolActivityWrapper.SchoolActivity
      * @return Boolean
      */
-     Boolean update(SchoolActivityWrapper.SchoolActivityDetail schoolActivity);
+     Boolean update(SchoolActivityWrapper.SchoolActivityInfo schoolActivity);
 
     /**
      * 获取学生列表

+ 6 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/SchoolStaffService.java

@@ -68,4 +68,10 @@ public interface SchoolStaffService extends IService<SchoolStaff>  {
      * @param info SchoolStaffWrapper.Cooperation
      */
     void updateCooperation(SchoolStaffWrapper.Cooperation info);
+
+    /**
+     * 删除用户
+     * @param id 用户ID
+     */
+    Boolean del(Long id);
 }

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/SysConfigService.java

@@ -399,6 +399,8 @@ public interface SysConfigService extends BaseService<Long, SysConfig> {
     String TENANT_CLOUD_ROOM_BALANCE_NOTICE = "tenant_cloud_room_balance_notice_";
     // 学校端默认用户头象
     String USER_DEFAULT_AVATAR = "user_default_avatar";
+    // IM服务方案(rongCloud,tencentCloud
+    String IM_SERVICE_PROVIDER = "im_service_provider";
 
     static void checkActivityDate(String startTimeStr, String endTimeStr) {
         if(StringUtils.isEmpty(startTimeStr) || StringUtils.isEmpty(startTimeStr)){

+ 317 - 190
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImGroupServiceImpl.java

@@ -1,5 +1,9 @@
 package com.ym.mec.biz.service.impl;
 
+import com.baomidou.mybatisplus.core.toolkit.IdWorker;
+import com.microsvc.toolkit.middleware.im.ImPluginContext;
+import com.microsvc.toolkit.middleware.im.ImPluginService;
+import com.microsvc.toolkit.middleware.im.message.ImGroupMemberWrapper;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.ImGroupDao;
@@ -11,8 +15,10 @@ import com.ym.mec.biz.dal.dto.ImGroupMemberDto;
 import com.ym.mec.biz.dal.dto.NameDto;
 import com.ym.mec.biz.dal.entity.ImGroup;
 import com.ym.mec.biz.dal.entity.ImGroupMember;
+import com.ym.mec.biz.dal.enums.school.ESchoolStaffType;
 import com.ym.mec.biz.service.ImGroupMemberService;
 import com.ym.mec.biz.service.ImGroupService;
+import com.ym.mec.biz.service.SysConfigService;
 import com.ym.mec.biz.service.SysUserService;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.entity.ImUserModel;
@@ -22,6 +28,7 @@ import com.ym.mec.common.tenant.TenantContextHolder;
 import com.ym.mec.im.ImFeignService;
 import com.ym.mec.im.entity.GroupMember;
 import com.ym.mec.im.entity.GroupModel;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -33,216 +40,222 @@ import java.util.function.Function;
 import java.util.stream.Collectors;
 
 @Service
+@Slf4j
 public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> implements ImGroupService {
 
-	@Autowired
-	private ImGroupDao imGroupDao;
-
-	@Autowired
-	private ImGroupMemberDao imGroupMemberDao;
-
-	@Autowired
-	private ImGroupNoticeDao imGroupNoticeDao;
-
-	@Autowired
-	private ImGroupMemberService imGroupMemberService;
-
-	@Autowired
-	private ImFeignService imFeignService;
-
-	@Autowired
-	private SysUserService sysUserService;
-
-	@Autowired
-	private ImUserFriendDao imUserFriendDao;
-
-	@Override
-	public BaseDAO<String, ImGroup> getDAO() {
-		return imGroupDao;
-	}
-
-	@Override
-	@Transactional(rollbackFor = Exception.class)
-	public ImGroup create(String id, Integer userId, String name, String introduce, String memo, String tags, String img, String type, ImGroup.GroupTypeEnum groupType) {
-		ImGroup imGroup = imGroupDao.get(id);
-		if (imGroup != null) {
-			return imGroup;
-		}
-
-		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.setGroupType(groupType);
-		imGroup.setUpdateTime(date);
-		imGroupDao.insert(imGroup);
-
-		String groupId = imGroup.getId();
-		
-		if(userId != null){
-			imGroupMemberService.join(id, 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 imGroup;
-	}
-
-	@Override
-	@Transactional(rollbackFor = Exception.class)
-	public String createGroup(ImGroupDto imGroupDto){
-		List<String> userIdList = imGroupDto.getUserIdList();
-		Integer currentUserId = null;
-		if (CollectionUtils.isEmpty(userIdList)){
-			userIdList.add(sysUserService.getUserId().toString());
-		}
-		String groupName = imGroupDto.getGroupName();
-		String type = imGroupDto.getType();
-		Optional.ofNullable(groupName).filter(StringUtils::isNotBlank).orElseThrow(() -> new BizException("群名称不能为空"));
-		Optional.ofNullable(type).filter(StringUtils::isNotBlank).orElseThrow(() -> new BizException("群类型不能为空"));
-		Date date = new Date();
-		ImGroup imGroup = new ImGroup();
-		String groupId = UUID.randomUUID().toString();
-		imGroup.setId(groupId);
-		imGroup.setCreateTime(date);
-		imGroup.setIntroduce(groupName);
-		imGroup.setMemo(groupName);
-		imGroup.setMemberNum(userIdList.size());
-		imGroup.setName(groupName);
-		imGroup.setType(type);
-		imGroup.setGroupType(imGroupDto.getGroupType());
-		imGroup.setUpdateTime(date);
-		imGroupDao.insert(imGroup);
-		List<ImGroupMember> groupMemberList = imGroupMemberDao.queryMembers(groupId, userIdList, TenantContextHolder.getTenantId());
-		if(currentUserId != null){
-			groupMemberList.get(0).setRoleType("乐团主管");
-		}
-		imGroupMemberDao.batchInsert(groupMemberList);
+    @Autowired
+    private ImGroupDao imGroupDao;
+
+    @Autowired
+    private ImGroupMemberDao imGroupMemberDao;
+
+    @Autowired
+    private ImGroupNoticeDao imGroupNoticeDao;
+
+    @Autowired
+    private ImGroupMemberService imGroupMemberService;
+
+    @Autowired
+    private ImFeignService imFeignService;
+
+    @Autowired
+    private SysUserService sysUserService;
+
+    @Autowired
+    private ImUserFriendDao imUserFriendDao;
+
+    @Autowired
+    private SysConfigService sysConfigService;
+    @Autowired
+    private ImPluginContext imPluginContext;
+
+    @Override
+    public BaseDAO<String, ImGroup> getDAO() {
+        return imGroupDao;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public ImGroup create(String id, Integer userId, String name, String introduce, String memo, String tags, String img, String type, ImGroup.GroupTypeEnum groupType) {
+        ImGroup imGroup = imGroupDao.get(id);
+        if (imGroup != null) {
+            return imGroup;
+        }
+
+        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.setGroupType(groupType);
+        imGroup.setUpdateTime(date);
+        imGroupDao.insert(imGroup);
+
+        String groupId = imGroup.getId();
+
+        if(userId != null){
+            imGroupMemberService.join(id, 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 imGroup;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public String createGroup(ImGroupDto imGroupDto){
+        List<String> userIdList = imGroupDto.getUserIdList();
+        Integer currentUserId = null;
+        if (CollectionUtils.isEmpty(userIdList)){
+            userIdList.add(sysUserService.getUserId().toString());
+        }
+        String groupName = imGroupDto.getGroupName();
+        String type = imGroupDto.getType();
+        Optional.ofNullable(groupName).filter(StringUtils::isNotBlank).orElseThrow(() -> new BizException("群名称不能为空"));
+        Optional.ofNullable(type).filter(StringUtils::isNotBlank).orElseThrow(() -> new BizException("群类型不能为空"));
+        Date date = new Date();
+        ImGroup imGroup = new ImGroup();
+        String groupId = UUID.randomUUID().toString();
+        imGroup.setId(groupId);
+        imGroup.setCreateTime(date);
+        imGroup.setIntroduce(groupName);
+        imGroup.setMemo(groupName);
+        imGroup.setMemberNum(userIdList.size());
+        imGroup.setName(groupName);
+        imGroup.setType(type);
+        imGroup.setGroupType(imGroupDto.getGroupType());
+        imGroup.setUpdateTime(date);
+        imGroupDao.insert(imGroup);
+        List<ImGroupMember> groupMemberList = imGroupMemberDao.queryMembers(groupId, userIdList, TenantContextHolder.getTenantId());
+        if(currentUserId != null){
+            groupMemberList.get(0).setRoleType("乐团主管");
+        }
+        imGroupMemberDao.batchInsert(groupMemberList);
         Function<String,GroupMember> newGroup = userId ->new GroupMember(userId, groupId);
-		List<GroupMember> groupMembers =  userIdList.stream().map(newGroup).collect(Collectors.toList());
-		GroupMember[] members = new GroupMember[groupMembers.size()];
-		groupMembers.toArray(members);
-		imFeignService.groupCreate(new GroupModel(groupId,members,groupName));
+        List<GroupMember> groupMembers =  userIdList.stream().map(newGroup).collect(Collectors.toList());
+        GroupMember[] members = new GroupMember[groupMembers.size()];
+        groupMembers.toArray(members);
+        imFeignService.groupCreate(new GroupModel(groupId,members,groupName));
         return groupId;
-	}
+    }
 
-	@Override
-	@Transactional(rollbackFor = Exception.class)
-	public boolean cancel(String imGroupId) {
-		// 删除群成员
-		imGroupMemberDao.deleteByImGroupId(imGroupId);
-		// 删除群公告
-		imGroupNoticeDao.deleteByImGroupId(imGroupId);
-		// 删除群信息
-		imGroupDao.delete(imGroupId);
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public boolean cancel(String imGroupId) {
+        // 删除群成员
+        imGroupMemberDao.deleteByImGroupId(imGroupId);
+        // 删除群公告
+        imGroupNoticeDao.deleteByImGroupId(imGroupId);
+        // 删除群信息
+        imGroupDao.delete(imGroupId);
+
+        imFeignService.groupDismiss(new GroupModel(imGroupId, null));
+
+        return true;
+    }
 
-		imFeignService.groupDismiss(new GroupModel(imGroupId, null));
+    @Override
+    public List<ImGroup> queryByUserId(Integer userId, String search,String groupType) {
+        return imGroupDao.queryByUserId(userId, search,groupType);
+    }
 
-		return true;
-	}
+    @Override
+    public List<ImGroupMemberDto> queryMemberById(String imGroupId) {
+        return imGroupDao.queryMemberById(imGroupId);
+    }
 
     @Override
-    public List<ImGroup> queryByUserId(Integer userId, String search,String groupType) {
-		return imGroupDao.queryByUserId(userId, search,groupType);
+    public ImGroupMemberDto queryMember(String imGroupId, Integer userId) {
+        ImGroupMemberDto imGroupMemberDto = imGroupDao.queryMember(imGroupId, userId);
+        if(Objects.isNull(imGroupMemberDto)){
+            imGroupMemberDto = imGroupDao.queryMember(null, userId);
+            if (Objects.nonNull(imGroupMemberDto)){
+                imGroupMemberDto.setRoleType(null);
+            }
+        }
+        return imGroupMemberDto;
     }
 
     @Override
-	public List<ImGroupMemberDto> queryMemberById(String imGroupId) {
-		return imGroupDao.queryMemberById(imGroupId);
-	}
-
-	@Override
-	public ImGroupMemberDto queryMember(String imGroupId, Integer userId) {
-		ImGroupMemberDto imGroupMemberDto = imGroupDao.queryMember(imGroupId, userId);
-		if(Objects.isNull(imGroupMemberDto)){
-			imGroupMemberDto = imGroupDao.queryMember(null, userId);
-			if (Objects.nonNull(imGroupMemberDto)){
-				imGroupMemberDto.setRoleType(null);
-			}
-		}
-		return imGroupMemberDto;
-	}
-
-	@Override
-	@Transactional(rollbackFor = Exception.class)
-	public int updateNickName(Integer userId, String nickName) {
-		//修改群成员备注
-		int i = imGroupDao.updateNickname(userId, nickName);
-		imGroupDao.updateUserFriendNickname(userId, nickName);
-		return i;
-	}
-
-	@Override
-	@Transactional(rollbackFor = Exception.class)
-	public void updateNickName1(Integer userId, String nickName) {
-		//修改群成员备注
-		imGroupDao.updateNickname(userId, nickName);
-		imGroupDao.updateUserFriendNickname(userId, nickName);
-		//修改sysUser名称,如果包含学员的角色,那么修改userName。否则修改realName
-		SysUser sysUser = sysUserService.queryUserById(userId);
-		if(sysUser.getUserType().contains("STUDENT")){
-			sysUser.setUsername(nickName);
-		}else {
-			sysUser.setRealName(nickName);
-		}
-		sysUserService.updateSysUser(sysUser);
-		//同步融云基本信息
-		imFeignService.update(new ImUserModel(sysUser.getId().toString(),nickName,sysUser.getAvatar()));
-	}
+    @Transactional(rollbackFor = Exception.class)
+    public int updateNickName(Integer userId, String nickName) {
+        //修改群成员备注
+        int i = imGroupDao.updateNickname(userId, nickName);
+        imGroupDao.updateUserFriendNickname(userId, nickName);
+        return i;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void updateNickName1(Integer userId, String nickName) {
+        //修改群成员备注
+        imGroupDao.updateNickname(userId, nickName);
+        imGroupDao.updateUserFriendNickname(userId, nickName);
+        //修改sysUser名称,如果包含学员的角色,那么修改userName。否则修改realName
+        SysUser sysUser = sysUserService.queryUserById(userId);
+        if(sysUser.getUserType().contains("STUDENT")){
+            sysUser.setUsername(nickName);
+        }else {
+            sysUser.setRealName(nickName);
+        }
+        sysUserService.updateSysUser(sysUser);
+        //同步融云基本信息
+        imFeignService.update(new ImUserModel(sysUser.getId().toString(),nickName,sysUser.getAvatar()));
+    }
 
     @Override
-	@Transactional(rollbackFor = Exception.class)
+    @Transactional(rollbackFor = Exception.class)
     public void updateImGroup(ImGroup imGroup) {
-		imGroup.setMemberNum(null);
-		imGroupDao.update(imGroup);
-		imFeignService.groupUpdate(new GroupModel(imGroup.getId(),null,imGroup.getName()));
+        imGroup.setMemberNum(null);
+        imGroupDao.update(imGroup);
+        imFeignService.groupUpdate(new GroupModel(imGroup.getId(),null,imGroup.getName()));
     }
 
-	@Override
-	@Transactional(rollbackFor = Exception.class)
-	public void dismissGroup(String imGroupId) {
-		imFeignService.groupDismiss(new GroupModel(imGroupId, null));
-		imGroupDao.delete(imGroupId);
-		imGroupMemberDao.deleteByImGroupId(imGroupId);
-		imGroupNoticeDao.deleteByImGroupId(imGroupId);
-	}
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void dismissGroup(String imGroupId) {
+        imFeignService.groupDismiss(new GroupModel(imGroupId, null));
+        imGroupDao.delete(imGroupId);
+        imGroupMemberDao.deleteByImGroupId(imGroupId);
+        imGroupNoticeDao.deleteByImGroupId(imGroupId);
+    }
 
     @Override
     public List<NameDto> queryDetail(List<NameDto> nameDto) {
-		List<NameDto> dtos = new ArrayList<>();
-		if(CollectionUtils.isNotEmpty(nameDto)){
-			Map<Integer, List<NameDto>> collect = nameDto.stream().collect(Collectors.groupingBy(NameDto::getType));
-			for (Integer integer : collect.keySet()) {
-				List<NameDto> nameDtos = collect.get(integer);
-				if(CollectionUtils.isNotEmpty(nameDtos)){
-					String idList = nameDtos.stream().map(e -> e.getId()).collect(Collectors.joining(","));
-					if(integer.equals(3)){
-						dtos.addAll(imGroupDao.queryNameByIds(idList));
-					}else if (integer.equals(1)){
-						Integer userId = sysUserService.getUserId();
-						dtos.addAll(imUserFriendDao.queryNameByIds(idList,userId));
-					}
-				}
-			}
-		}
+        List<NameDto> dtos = new ArrayList<>();
+        if(CollectionUtils.isNotEmpty(nameDto)){
+            Map<Integer, List<NameDto>> collect = nameDto.stream().collect(Collectors.groupingBy(NameDto::getType));
+            for (Integer integer : collect.keySet()) {
+                List<NameDto> nameDtos = collect.get(integer);
+                if(CollectionUtils.isNotEmpty(nameDtos)){
+                    String idList = nameDtos.stream().map(e -> e.getId()).collect(Collectors.joining(","));
+                    if(integer.equals(3)){
+                        dtos.addAll(imGroupDao.queryNameByIds(idList));
+                    }else if (integer.equals(1)){
+                        Integer userId = sysUserService.getUserId();
+                        dtos.addAll(imUserFriendDao.queryNameByIds(idList,userId));
+                    }
+                }
+            }
+        }
         return dtos;
     }
 
@@ -255,4 +268,118 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
     public List<ImGroupMemberDto> queryMemberByIdV2(String imGroupId, String search, Integer subjectId, Boolean vipFlag) {
         return imGroupDao.queryMemberByIdV2(imGroupId,search,subjectId,vipFlag);
     }
+
+    /**
+     * 用户退出所有群
+     *
+     * @param userId 用户id
+     */
+    @Override
+    public void quit(Long userId) {
+
+        // 退出群组
+        // 查询用户默认头象
+        String serviceProvider = sysConfigService.findByParamName(SysConfigService.IM_SERVICE_PROVIDER).getParanValue();
+
+        ImPluginService imPluginService =imPluginContext.getPluginService(serviceProvider);
+
+        List<ImGroupMember> imGroupMembers = imGroupMemberDao.queryMembersByUserId(userId);
+        if (CollectionUtils.isNotEmpty(imGroupMembers)) {
+            for (ImGroupMember imGroupMember : imGroupMembers) {
+                try {
+                    imPluginService.groupQuit(imGroupMember.getImGroupId(), ImGroupMemberWrapper.ImGroupMember.builder().userId(userId).build());
+                } catch (Exception e) {
+                    log.error("用户退出群失败{},{}", userId, imGroupMember.getImGroupId(), e);
+                }
+            }
+        }
+        imGroupMemberDao.deleteByUserId(userId);
+    }
+
+    /**
+     * 用户加入群
+     *
+     * @param schoolId 学校id
+     * @param userId   用户id
+     * @param leader   是否是群主
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void addSchoolStaffGroup(Long schoolId, Integer userId, ESchoolStaffType schoolStaffType) throws Exception {
+
+        // 查询群是否存在
+        ImGroup imGroup = imGroupDao.queryBySchoolId(schoolId);
+
+        String serviceProvider = sysConfigService.findByParamName(SysConfigService.IM_SERVICE_PROVIDER).getParanValue();
+
+        ImPluginService imPluginService =imPluginContext.getPluginService(serviceProvider);
+
+        if (Objects.isNull(imGroup)) {
+            imGroup = new ImGroup();
+            imGroup.setSchoolId(schoolId);
+            imGroup.setId(IdWorker.getIdStr());
+            imGroup.setName("教学团队衔接群");
+            imGroup.setIntroduce(imGroup.getName());
+            imGroup.setMemberNum(1);
+            imGroup.setType(ImGroup.GroupTypeEnum.SHOOL.getCode());
+            imGroup.setGroupType(ImGroup.GroupTypeEnum.SHOOL);
+            imGroup.setCreateTime(new Date());
+            imGroup.setUpdateTime(new Date());
+            imGroup.setTenantId(TenantContextHolder.getTenantId());
+            imGroupDao.insert(imGroup);
+            imPluginService.groupCreate(imGroup.getId(), imGroup.getName(), userId.toString());
+        } else {
+
+            if (!schoolStaffType.equals(ESchoolStaffType.ORCHESTRA_LEADER)) {
+                imPluginService.groupJoin(imGroup.getId(), imGroup.getName(), ImGroupMemberWrapper.ImGroupMember.builder().userId(userId.longValue()).build());
+            } else {
+
+            }
+        }
+        ImGroupMember imGroupMember = new ImGroupMember();
+        imGroupMember.setImGroupId(imGroup.getId());
+        imGroupMember.setUserId(userId);
+        imGroupMember.setIsAdmin(schoolStaffType.equals(ESchoolStaffType.ORCHESTRA_LEADER));
+        imGroupMember.setRoleType(schoolStaffType.getDescribe());
+        imGroupMember.setTenantId(imGroup.getTenantId());
+        imGroupMemberDao.insert(imGroupMember);
+
+
+    }
+
+    /**
+     * 加群
+     *
+     * @param musicGroupIds 群组ID
+     * @param user          用户信息
+     */
+    @Override
+    public void addImGroup(List<String> musicGroupIds, SysUser user) {
+        if (CollectionUtils.isEmpty(musicGroupIds)) {
+            return;
+        }
+
+        String serviceProvider = sysConfigService.findByParamName(SysConfigService.IM_SERVICE_PROVIDER).getParanValue();
+
+        ImPluginService imPluginService =imPluginContext.getPluginService(serviceProvider);
+
+        List<ImGroup> groupList = imGroupDao.getByIds(musicGroupIds);
+
+        // id 分组
+        Map<String, ImGroup> map = groupList.stream().collect(Collectors.toMap(o -> o.getId(), Function.identity()));
+
+
+        for (String musicGroupId : musicGroupIds) {
+            ImGroup imGroup = map.get(musicGroupId);
+            if (imGroup == null) {
+                continue;
+            }
+            try {
+                imPluginService.groupJoin(imGroup.getId(), imGroup.getName(), ImGroupMemberWrapper.ImGroupMember.builder().userId(user.getId().longValue()).build());
+            } catch (Exception e) {
+                log.error("加入群聊失败",e);
+            }
+
+        }
+    }
 }

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

@@ -3,16 +3,12 @@ package com.ym.mec.biz.service.impl;
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.google.common.collect.Lists;
 import com.ym.mec.biz.dal.entity.SchoolActivityDetail;
-import com.ym.mec.biz.dal.entity.Student;
-import com.ym.mec.biz.dal.entity.Subject;
 import com.ym.mec.biz.dal.enums.ESchoolActivityStatus;
 import com.ym.mec.biz.dal.wrapper.SchoolActivityDetailWrapper;
 import com.ym.mec.biz.service.*;
 import com.ym.mec.common.exception.BizException;
 import org.apache.commons.collections.CollectionUtils;
-import org.jetbrains.annotations.NotNull;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.beans.BeanUtils;
@@ -50,27 +46,27 @@ public class SchoolActivityServiceImpl extends ServiceImpl<SchoolActivityMapper,
      * @return SchoolActivity
      */
     @Override
-    public SchoolActivityWrapper.SchoolActivityDetail detail(Long id) {
+    public SchoolActivityWrapper.SchoolActivityInfo detail(Long id) {
         SchoolActivity schoolActivity = getById(id);
         if(schoolActivity == null)
             return null;
-        SchoolActivityWrapper.SchoolActivityDetail schoolActivityDetail = new SchoolActivityWrapper.SchoolActivityDetail();
-        BeanUtils.copyProperties(schoolActivity, schoolActivityDetail);
+        SchoolActivityWrapper.SchoolActivityInfo schoolActivityInfo = new SchoolActivityWrapper.SchoolActivityInfo();
+        BeanUtils.copyProperties(schoolActivity, schoolActivityInfo);
         Date now = new Date();
         if (schoolActivity.getStartTime().after(now)) {
-            schoolActivityDetail.setStatus(ESchoolActivityStatus.NOT_START);
+            schoolActivityInfo.setStatus(ESchoolActivityStatus.NOT_START);
         } else if (schoolActivity.getEndTime().before(now)) {
-            schoolActivityDetail.setStatus(ESchoolActivityStatus.END);
+            schoolActivityInfo.setStatus(ESchoolActivityStatus.END);
         } else {
-            schoolActivityDetail.setStatus(ESchoolActivityStatus.PROCESSING);
+            schoolActivityInfo.setStatus(ESchoolActivityStatus.PROCESSING);
         }
 
         // 设置节目信息
         List<SchoolActivityDetailWrapper.SchoolActivityDetail> schoolActivityDetails = schoolActivityDetailService.selectListByActivityId(id);
 
-        schoolActivityDetail.setDetail(schoolActivityDetails);
+        schoolActivityInfo.setDetail(schoolActivityDetails);
 
-        return schoolActivityDetail;
+        return schoolActivityInfo;
     }
     
     /**
@@ -106,14 +102,14 @@ public class SchoolActivityServiceImpl extends ServiceImpl<SchoolActivityMapper,
      */
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public Boolean add(SchoolActivityWrapper.SchoolActivityDetail schoolActivity) {
+    public Boolean add(SchoolActivityWrapper.SchoolActivityInfo schoolActivity) {
 
         saveOrUpdate(schoolActivity,true);
 
         return true;
     }
 
-    private void saveOrUpdate(SchoolActivityWrapper.SchoolActivityDetail schoolActivity,Boolean create) {
+    private void saveOrUpdate(SchoolActivityWrapper.SchoolActivityInfo schoolActivity, Boolean create) {
         Date now = new Date();
         // 保存活动
         SchoolActivity activity = JSON.parseObject(JSON.toJSONString(schoolActivity), SchoolActivity.class);
@@ -171,7 +167,7 @@ public class SchoolActivityServiceImpl extends ServiceImpl<SchoolActivityMapper,
      */
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public Boolean update(SchoolActivityWrapper.SchoolActivityDetail schoolActivity){
+    public Boolean update(SchoolActivityWrapper.SchoolActivityInfo schoolActivity){
 
         SchoolActivity activity = getById(schoolActivity.getId());
         if(activity == null){

+ 57 - 5
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SchoolStaffServiceImpl.java

@@ -6,12 +6,12 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.google.common.collect.Lists;
 import com.microsvc.toolkit.common.response.paging.QueryInfo;
+import com.microsvc.toolkit.middleware.im.ImPluginContext;
+import com.microsvc.toolkit.middleware.im.ImPluginService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.auth.api.enums.SysUserType;
 import com.ym.mec.auth.api.enums.YesOrNoEnum;
-import com.ym.mec.biz.dal.dao.SysMessageConfigDao;
-import com.ym.mec.biz.dal.dao.CooperationOrganDao;
-import com.ym.mec.biz.dal.dao.TeacherDao;
+import com.ym.mec.biz.dal.dao.*;
 import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.MessageTypeEnum;
 import com.ym.mec.biz.dal.enums.school.ESchoolStaffType;
@@ -60,6 +60,10 @@ public class SchoolStaffServiceImpl extends ServiceImpl<SchoolStaffMapper, Schoo
     @Autowired
     private SmsCodeService smsCodeService;
 
+    @Autowired
+    private ImUserFriendDao imUserFriendDao;
+
+
 
     @Value("${message.debugMode:false}")
     private boolean debugMode;
@@ -76,6 +80,9 @@ public class SchoolStaffServiceImpl extends ServiceImpl<SchoolStaffMapper, Schoo
     @Autowired
     private OrganizationService organizationService;
 
+    @Autowired
+    private ImGroupService imGroupService;
+
     /**
      * 查询详情
      * @param id 详情ID
@@ -204,8 +211,22 @@ public class SchoolStaffServiceImpl extends ServiceImpl<SchoolStaffMapper, Schoo
         // 添加学校员工信息
         this.save(JSON.parseObject(schoolStaff.jsonString(), SchoolStaff.class));
 
-        // 自动创建学校管理IM群
-        // 自动添加员工到学校乐团群
+
+        // 自动创建学校管理IM群 自动添加员工到学校乐团群
+        try {
+            imGroupService.addSchoolStaffGroup(schoolStaff.getSchoolId(), user.getId(),ESchoolStaffType.ORCHESTRA_LEADER);
+        } catch (Exception e) {
+            log.error("加入群组失败 {}",e);
+            throw new BizException("加入群组失败");
+        }
+
+        // 乐团领队添加到所有乐团群
+        List<MusicGroup> musicGroups = cooperationOrganService.musicGroupPage(schoolStaff.getSchoolId().intValue());
+
+        // id 集合
+        List<String> musicGroupIds = musicGroups.stream().map(o -> o.getId()).collect(Collectors.toList());
+        imGroupService.addImGroup(musicGroupIds,user);
+
 
         // 删除缓存锁
         redissonClient.getBucket(submitLockKey).delete();
@@ -451,5 +472,36 @@ public class SchoolStaffServiceImpl extends ServiceImpl<SchoolStaffMapper, Schoo
         cooperationOrganDao.update(JSON.parseObject(info.jsonString(), CooperationOrgan.class));
     }
 
+    /**
+     * 删除用户
+     *
+     * @param id 用户ID
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean del(Long id) {
+        // 删除用户信息
+        SchoolStaff schoolStaff = schoolStaffService.getById(id);
+        if (schoolStaff == null) {
+            throw new BizException("用户信息不存在");
+        }
+        schoolStaff.setStatus("-1");
+        this.updateById(schoolStaff);
+
+        // sys_user 删除
+        baseMapper.delUser(schoolStaff.getUserId());
+
+
+        // 解除im好友关联
+        imUserFriendDao.deleteByUserIdAndFriendId(schoolStaff.getUserId());
+
+
+        imGroupService.quit(schoolStaff.getUserId());
+
+
+        return true;
+
+    }
+
 
 }

+ 64 - 43
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysMessageServiceImpl.java

@@ -133,47 +133,68 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
 	 */
 	private int addMessage(Integer receiverTenantId, Map<Integer, String> receivers, String subject, String content, Date triggerTime, MessageSendMode mode, SendStatusEnum status,
 			String errorMsg, Integer readStatus, String memo, String group,String jpushType) {
-		SysMessage message = null;
-		Date date = new Date();
-
-		List<SysMessage> messages = new ArrayList<>();
-
-		Integer userId = null;
-		String receiver;
-		for (Entry<Integer, String> entry : receivers.entrySet()) {
-			userId = entry.getKey();
-			receiver = entry.getValue();
-
-			message = new SysMessage();
-			if (userId == null) {
-				SysUser user = sysUserFeignService.queryUserByMobile(receiver);
-				if (user != null) {
-					userId = user.getId();
-				}
-			}
-			message.setTenantId(receiverTenantId);
-			message.setUserId(userId);
-			message.setContent(content);
-			message.setCreateOn(date);
-			message.setModifyOn(date);
-			message.setReceiver(receiver);
-			if (triggerTime == null) {
-				triggerTime = date;
-			}
-			message.setSendTime(triggerTime);
-			message.setTitle(subject);
-			message.setStatus(status);
-			message.setType(mode);
-			message.setErrorMsg(errorMsg);
-			message.setReadStatus(readStatus);
-			message.setMemo(memo);
-			message.setGroup(group);
-			message.setJpushType(jpushType);
-			messages.add(message);
-		}
-
-		return sysMessageDao.batchInsert(messages);
-	}
+		return addMessage(receiverTenantId,receivers,subject,content,triggerTime,mode,status,errorMsg,readStatus,memo,group,jpushType,null);
+	}
+
+
+    /**
+     * 添加消息
+     * @param subject 消息主题
+     * @param content 消息内容
+     * @param receivers 接收人,多个人用逗号分开
+     * @param triggerTime 触发时间
+     * @param mode 消息的发送模式
+     * @param status 消息的当前状态
+     * @param errorMsg 错误消息
+     * @param readStatus 阅读状态
+     * @param memo 备注
+     * @param group 消息组
+     * @return
+     */
+    private int addMessage(Integer receiverTenantId, Map<Integer, String> receivers, String subject, String content, Date triggerTime, MessageSendMode mode, SendStatusEnum status,
+                           String errorMsg, Integer readStatus, String memo, String group,String jpushType,Integer messageConfigId) {
+        SysMessage message = null;
+        Date date = new Date();
+
+        List<SysMessage> messages = new ArrayList<>();
+
+        Integer userId = null;
+        String receiver;
+        for (Entry<Integer, String> entry : receivers.entrySet()) {
+            userId = entry.getKey();
+            receiver = entry.getValue();
+
+            message = new SysMessage();
+            if (userId == null) {
+                SysUser user = sysUserFeignService.queryUserByMobile(receiver);
+                if (user != null) {
+                    userId = user.getId();
+                }
+            }
+            message.setTenantId(receiverTenantId);
+            message.setUserId(userId);
+            message.setContent(content);
+            message.setCreateOn(date);
+            message.setModifyOn(date);
+            message.setReceiver(receiver);
+            if (triggerTime == null) {
+                triggerTime = date;
+            }
+            message.setMessageConfigId(messageConfigId);
+            message.setSendTime(triggerTime);
+            message.setTitle(subject);
+            message.setStatus(status);
+            message.setType(mode);
+            message.setErrorMsg(errorMsg);
+            message.setReadStatus(readStatus);
+            message.setMemo(memo);
+            message.setGroup(group);
+            message.setJpushType(jpushType);
+            messages.add(message);
+        }
+
+        return sysMessageDao.batchInsert(messages);
+    }
 
 	@Override
 	public int updateMessage(SysMessage message) {
@@ -481,10 +502,10 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
 			return;
 		}
 		addMessage(receiverTenantId, receivers, messageConfig.getDescription(), MessageFormatter.arrayFormat(messageConfig.getContent(), args), triggerTime, mode, status, errorMsg, readStatus,
-				url, messageConfig.getGroup(),jpushType);
+				url, messageConfig.getGroup(),jpushType,messageConfig.getId());
 	}
 
-	@Override
+    @Override
 	public void batchSendMessage(MessageSender messageSender, MessageTypeEnum type, Map<Integer, String> receivers, Date triggerTime, Integer readStatus,
 			String url,String jpushType, Object... args) {
 		batchSendMessage(TenantContextHolder.getTenantId(), messageSender, type, receivers, triggerTime, readStatus, url, jpushType, args);

+ 13 - 2
mec-biz/src/main/resources/config/mybatis/ImGroupMapper.xml

@@ -54,8 +54,8 @@
 	
 	<!-- 向数据库增加一条记录 -->
 	<insert id="insert" parameterType="com.ym.mec.biz.dal.entity.ImGroup" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
-		INSERT INTO im_group (id_,name_,introduce_,member_num_,memo_,tags_,img_,type_,create_time_,update_time_,tenant_id_,group_type_)
-		VALUES(#{id},#{name},#{introduce},#{memberNum},#{memo},#{tags},#{img},#{type},#{createTime},#{updateTime},#{tenantId},#{groupType})
+		INSERT INTO im_group (id_,name_,introduce_,member_num_,memo_,tags_,img_,type_,create_time_,update_time_,tenant_id_,group_type_,school_id_)
+		VALUES(#{id},#{name},#{introduce},#{memberNum},#{memo},#{tags},#{img},#{type},#{createTime},#{updateTime},#{tenantId},#{groupType},#{schoolId})
 	</insert>
 	
 	<!-- 根据主键查询一条记录 -->
@@ -238,4 +238,15 @@
         </if>
 
     </select>
+
+	<select id="queryBySchoolId" resultMap="ImGroup">
+        SELECT ig.* FROM im_group ig where school_id_ = #{schoolId} limit 1
+    </select>
+
+	<select id="getByIds" resultMap="ImGroup">
+        select ig.* FROM im_group ig where ig.id_ in
+        <foreach collection="musicGroupIds" separator="," item="item" open="(" close=")">
+            #{item}
+        </foreach>
+    </select>
 </mapper>

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

@@ -172,4 +172,14 @@
 		LEFT JOIN sys_user u ON igm.user_id_ = u.id_
 		<include refid="queryGroupMemberPageSql"/>
 	</select>
+
+	<select id="queryMembersByUserId" resultMap="ImGroupMember">
+        SELECT igm.*
+        FROM im_group_member igm
+        WHERE igm.user_id_ = #{userId}
+    </select>
+
+	<delete id="deleteByUserId">
+        DELETE FROM im_group_member WHERE user_id_ = #{userId}
+    </delete>
 </mapper>

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

@@ -158,4 +158,8 @@
             </if>
         </if>
     </select>
+
+	<delete id="deleteByUserIdAndFriendId">
+        DELETE FROM im_user_friend WHERE user_id_ = #{userId} or friend_id_ = #{userId}
+    </delete>
 </mapper>

+ 5 - 0
mec-biz/src/main/resources/config/mybatis/SchoolStaffMapper.xml

@@ -20,6 +20,7 @@
                  JOIN sys_user t2 ON (t1.user_id_ = t2.id_)
                  left join cooperation_organ co on t1.school_id_ = co.id_
         <where>
+            t1.status_ != -1
             <if test="param.schoolId != null">
                 AND t1.school_id_ = #{param.schoolId}
             </if>
@@ -65,6 +66,10 @@
             and (ss.status_ = 0  or ss.status_ is null)
         </if>
     </update>
+
+    <delete id="delUser">
+        update sys_user set user_type_ = '' ,del_flag_ = 1 where id_ = #{userId}
+    </delete>
     <!--学校员工身份数统计-->
 
 </mapper>

+ 5 - 3
mec-biz/src/main/resources/config/mybatis/SysMessageMapper.xml

@@ -92,7 +92,7 @@
 		title_, content_,
 		type_, status_, receiver_,
 		send_time_, error_msg_,read_status_,memo_, create_on_,
-		modify_on_,group_,jpush_type_,tenant_id_)
+		modify_on_,group_,jpush_type_,tenant_id_,message_config_id_)
 		values
 		<foreach collection="list" item="item" index="index"
 			separator=",">
@@ -103,7 +103,7 @@
 			#{item.status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}, #{item.receiver,jdbcType=VARCHAR},
 			#{item.sendTime},#{item.errorMsg,jdbcType=VARCHAR},#{item.readStatus},#{item.memo},
 			#{item.createOn},
-			#{item.modifyOn},#{item.group},#{item.jpushType},#{item.tenantId}
+			#{item.modifyOn},#{item.group},#{item.jpushType},#{item.tenantId},#{item.messageConfigId}
 			)
 		</foreach>
 	</insert>
@@ -177,7 +177,9 @@
 	</select>
 
 	<select id="queryListPage" parameterType="map" resultMap="messageDto">
-		select m.*,u.username_ from sys_message m left join sys_user u on m.user_id_ = u.id_
+		select m.*,u.username_,mg.icon_ from sys_message m
+        left join sys_message_config mg on mg.id_ = m.message_config_id_
+        left join sys_user u on m.user_id_ = u.id_
 		<include refid="queryCondition" />
 		order by m.read_status_,m.create_on_ desc
 		<include refid="global.limit" />

+ 3 - 2
mec-web/src/main/java/com/ym/mec/web/controller/SchoolMessageController.java

@@ -13,6 +13,7 @@ import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.page.PageInfo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
@@ -37,7 +38,7 @@ public class SchoolMessageController extends BaseController {
 
     @ApiOperation("获取所有消息列表")
     @GetMapping(value = "list")
-    public Object list(SysMessageQueryInfo queryInfo){
+    public Object list(@ApiParam SysMessageQueryInfo queryInfo){
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         if (sysUser == null) {
             return failed(HttpStatus.FORBIDDEN, "请登录");
@@ -72,7 +73,7 @@ public class SchoolMessageController extends BaseController {
     }
     @ApiOperation("设置已读")
     @PostMapping("setRead")
-    public Object setRead(Long id) {
+    public Object setRead(@ApiParam("id") Long id) {
         int status = 1;
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         if (sysUser == null) {

+ 4 - 5
mec-web/src/main/java/com/ym/mec/web/controller/school/SchoolActivityController.java

@@ -1,6 +1,5 @@
 package com.ym.mec.web.controller.school;
 
-import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.microsvc.toolkit.common.response.paging.QueryInfo;
 import com.microsvc.toolkit.config.validator.group.ValidGroups;
@@ -31,9 +30,9 @@ public class SchoolActivityController extends BaseController {
 
 	@ApiOperation(value = "详情", notes = "学校活动-根据详情ID查询单条, 传入id")
     @GetMapping("/detail/{id}")
-    public HttpResponseResult<SchoolActivityWrapper.SchoolActivityDetail> detail(@PathVariable("id") Long id) {
+    public HttpResponseResult<SchoolActivityWrapper.SchoolActivityInfo> detail(@PathVariable("id") Long id) {
 
-        SchoolActivityWrapper.SchoolActivityDetail wrapper = schoolActivityService.detail(id);
+        SchoolActivityWrapper.SchoolActivityInfo wrapper = schoolActivityService.detail(id);
         
         return succeed(wrapper);
 	}
@@ -61,7 +60,7 @@ public class SchoolActivityController extends BaseController {
     
     @ApiOperation(value = "新增", notes = "学校活动- 传入 SchoolActivityWrapper.SchoolActivity")
 	@PostMapping("/save")
-	public HttpResponseResult<Boolean> add(@Validated @RequestBody SchoolActivityWrapper.SchoolActivityDetail schoolActivity, @RequestHeader Integer coopId) {
+	public HttpResponseResult<Boolean> add(@Validated @RequestBody SchoolActivityWrapper.SchoolActivityInfo schoolActivity, @RequestHeader Integer coopId) {
         if (coopId == null) {
             return succeed();
         }
@@ -72,7 +71,7 @@ public class SchoolActivityController extends BaseController {
     
     @ApiOperation(value = "修改", notes = "学校活动- 传入 SchoolActivityWrapper.SchoolActivity")
 	@PostMapping("/update")
-	public HttpResponseResult<Boolean> update(@Validated(value = ValidGroups.Update.class) @RequestBody SchoolActivityWrapper.SchoolActivityDetail schoolActivity, @RequestHeader Integer coopId) {
+	public HttpResponseResult<Boolean> update(@Validated(value = ValidGroups.Update.class) @RequestBody SchoolActivityWrapper.SchoolActivityInfo schoolActivity, @RequestHeader Integer coopId) {
         if (coopId == null) {
             return succeed();
         }

+ 2 - 2
mec-web/src/main/java/com/ym/mec/web/controller/school/SchoolStaffController.java

@@ -71,7 +71,7 @@ public class SchoolStaffController extends BaseController {
     public HttpResponseResult<PageInfo<SchoolStaffWrapper.SchoolStaff>> page(@RequestBody SchoolStaffWrapper.SchoolStaffQuery query) {
         query.setOrganId(organizationService.getEmployeeOrgan(query.getOrganId()));
         query.setTenantId(TenantContextHolder.getTenantId());
-        query.setCoopStatus(true);
+//        query.setCoopStatus(true);
 
         IPage<SchoolStaffWrapper.SchoolStaff> pages = schoolStaffService.selectPage(QueryInfo.getPage(query), query);
         
@@ -120,7 +120,7 @@ public class SchoolStaffController extends BaseController {
 	@PostMapping("/remove")    
 	public HttpResponseResult<Boolean> remove(@RequestParam Long id) {
     
-		return succeed(schoolStaffService.removeById(id));
+		return succeed(schoolStaffService.del(id));
 	}
 
     @ApiOperation(value = "查询学校员工信息")