Browse Source

Merge remote-tracking branch 'origin/feature/0427-school' into feature/0427-school

zouxuan 1 year ago
parent
commit
05da0aa693

+ 12 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ImGroupMember.java

@@ -19,6 +19,9 @@ public class ImGroupMember extends BaseEntity {
 	private Integer userId;
 	
 	private String nickname;
+
+	/** 群昵称 */
+	private String groupNickname;
 	
 	/** 是否是管理员 */
 	private boolean isAdmin;
@@ -125,7 +128,15 @@ public class ImGroupMember extends BaseEntity {
 	public java.util.Date getUpdateTime(){
 		return this.updateTime;
 	}
-			
+
+	public String getGroupNickname() {
+		return groupNickname;
+	}
+
+	public void setGroupNickname(String groupNickname) {
+		this.groupNickname = groupNickname;
+	}
+
 	@Override
 	public String toString() {
 		return ToStringBuilder.reflectionToString(this);

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

@@ -2,6 +2,8 @@ package com.ym.mec.biz.service;
 
 public interface SmsCodeService {
 
+	String DEFAULT_SMS_CODE = "666666";
+
 	/**
 	 * 校验验证码
 	 * @param mobile

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

@@ -358,6 +358,8 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
 
         // 注册主播用户信息到三方平台
         imPluginService.register(userId.toString(), name, avatar);
+
+        // 群组不存在,先创建群组
         if (Objects.isNull(imGroup)) {
             CooperationOrgan cooperationOrgan = cooperationOrganService.get(schoolId.intValue());
             imGroup = new ImGroup();
@@ -412,7 +414,7 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
             imGroupMember.setIsAdmin(false);
             imGroupMemberDao.update(imGroupMember);
         }
-        imPluginService.changeGroupOwner(imGroupId, userId.toString(),adminId.toString());
+        imPluginService.changeGroupOwner(imGroupId, userId.toString(), adminId.toString());
 
         imGroupMemberDao.updateAdmin(imGroupId, userId);
         return true;
@@ -423,7 +425,7 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
      *
      * @param imGroupIds    群组ID
      * @param user          用户信息
-     * @param userType      用户类型
+     * @param roleType      用户类型
      */
     @Override
     @Transactional(rollbackFor = Exception.class)

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

@@ -132,7 +132,7 @@ public class ImUserFriendServiceImpl extends BaseServiceImpl<Long, ImUserFriend>
     @Override
     public void batchInsert(List<ImUserFriend> imUserFriends) {
         for (ImUserFriend imUserFriend : imUserFriends) {
-            if(imUserFriend.getUserId() == imUserFriend.getFriendId()){
+            if(Objects.equals(imUserFriend.getUserId(), imUserFriend.getFriendId())){
                 continue;
             }
             // 检查是否已经是好友
@@ -208,29 +208,29 @@ public class ImUserFriendServiceImpl extends BaseServiceImpl<Long, ImUserFriend>
 //                imGroupIds.add(musicGroupId);
                 if (CollectionUtils.isNotEmpty(classGroups)) {
                     imGroupIds.addAll(classGroups.stream().map(o -> o.getId().toString()).collect(Collectors.toList()));
-                }
-                // 获取乐团群的人员列表
-                List<ImGroupMember> memberList = imGroupMemberDao.getByGroupId(imGroupIds);
-                if (CollectionUtils.isNotEmpty(memberList)) {
-                    Long staffUserId = schoolStaff.getUserId();
-                    // 设置角色
-                    memberList = memberList.stream().map(o -> {
-                        if (StringUtils.isBlank(o.getRoleType())) {
-                            o.setRoleType(EFriendRoleType.STUDENT.name());
-                        } else {
-                            o.setRoleType(EFriendRoleType.getByName(o.getRoleType()).name());
-                        }
-                        return o;
-                    }).collect(Collectors.toList());
-
-                    // ID toMap roleType
-                    Map<Integer, String> roleTypeMap = memberList.stream().collect(Collectors.toMap(ImGroupMember::getUserId, ImGroupMember::getRoleType,(k1,k2) -> k2));
-
-
-
-                    Set<Integer> userIds = memberList.stream().map(ImGroupMember::getUserId)
-                            .collect(Collectors.toSet());
-                    userFriends(imUserFriends, musicGroup, staffUserId, userIds,roleTypeMap);
+
+                    // 获取乐团群的人员列表
+                    List<ImGroupMember> memberList = imGroupMemberDao.getByGroupId(imGroupIds);
+                    if (CollectionUtils.isNotEmpty(memberList)) {
+                        Long staffUserId = schoolStaff.getUserId();
+                        // 设置角色
+                        memberList = memberList.stream().map(o -> {
+                            if (StringUtils.isBlank(o.getRoleType())) {
+                                o.setRoleType(EFriendRoleType.STUDENT.name());
+                            } else {
+                                o.setRoleType(EFriendRoleType.getByName(o.getRoleType()).name());
+                            }
+                            return o;
+                        }).collect(Collectors.toList());
+
+                        // ID toMap roleType
+                        Map<Integer, String> roleTypeMap = memberList.stream().collect(Collectors.toMap(ImGroupMember::getUserId, ImGroupMember::getRoleType, (k1, k2) -> k2));
+
+
+                        Set<Integer> userIds = memberList.stream().map(ImGroupMember::getUserId)
+                                .collect(Collectors.toSet());
+                        userFriends(imUserFriends, musicGroup, staffUserId, userIds, roleTypeMap);
+                    }
                 }
             }
             // 更新学校端好友列表

+ 23 - 19
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SchoolStaffServiceImpl.java

@@ -18,6 +18,7 @@ import com.ym.mec.biz.dal.wrapper.SchoolStaffWrapper;
 import com.ym.mec.biz.dal.wrapper.StatGroupWrapper;
 import com.ym.mec.biz.service.*;
 import com.ym.mec.common.exception.BizException;
+import com.ym.mec.common.tenant.TenantContextHolder;
 import com.ym.mec.thirdparty.message.MessageSenderPluginContext;
 import com.ym.mec.thirdparty.user.realname.RealnameAuthenticationPluginContext;
 import com.ym.mec.thirdparty.user.realname.provider.LinkfaceRealnameAuthenticationPlugin;
@@ -36,8 +37,6 @@ import org.springframework.transaction.annotation.Transactional;
 import java.text.MessageFormat;
 import java.util.*;
 import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
 import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
 
@@ -141,7 +140,7 @@ public class SchoolStaffServiceImpl extends ServiceImpl<SchoolStaffMapper, Schoo
                     .map(Integer::parseInt)
                     .map(organizationMap::get)
                     .filter(Objects::nonNull)
-                    .map(o -> o.getName())
+                    .map(Organization::getName)
                     .collect(Collectors.joining(","));
             schoolStaff.setOrganName(collect);
         }
@@ -166,18 +165,20 @@ public class SchoolStaffServiceImpl extends ServiceImpl<SchoolStaffMapper, Schoo
         }
 
         // 验证码合法性校验
-        if (schoolStaff.getCheckSmsCode() == null || schoolStaff.getCheckSmsCode()) {
-            if(smsCodeService.verifyValidCode(schoolStaff.getMobile(), schoolStaff.getSmsCode())
-                    && !debugMode ) {
+        if (Optional.ofNullable(schoolStaff.getCheckSmsCode()).orElse(true)) {
 
-                throw new BizException("验证码错误");
+            if (Optional.of(debugMode).orElse(false)) {
+                // 调试模式,验证码不匹配
+                if (!Objects.equals(schoolStaff.getSmsCode(), SmsCodeService.DEFAULT_SMS_CODE)) {
+                    throw new BizException("验证码错误");
+                }
+            } else {
+                // 非调试模式,验证码合法性校验
+                if (!smsCodeService.verifyValidCode(schoolStaff.getMobile(), schoolStaff.getSmsCode())) {
+                    throw new BizException("验证码错误");
+                }
             }
         }
-        if(smsCodeService.verifyValidCode(schoolStaff.getMobile(), schoolStaff.getSmsCode())
-                && !debugMode ) {
-
-            throw new BizException("验证码错误");
-        }
 
         // 合作单位编号
         CooperationOrgan cooperation = cooperationOrganService.get(schoolStaff.getSchoolId().intValue());
@@ -242,16 +243,21 @@ public class SchoolStaffServiceImpl extends ServiceImpl<SchoolStaffMapper, Schoo
 
         // 自动创建学校管理IM群 自动添加员工到学校乐团群
         try {
+            // 重置当前合作单位机构ID
+            TenantContextHolder.setTenantId(cooperation.getTenantId());
+
+            // 创建学校im群
             imGroupService.addSchoolStaffGroup(schoolStaff.getSchoolId(), user.getId(),user.getUsername(),user.getAvatar(),schoolStaff.getUserType());
         } catch (Exception e) {
             log.error("加入群组失败 ",e);
             throw new BizException("加入群组失败");
         }
 
-         CompletableFuture.runAsync( () -> {
+        // 创建学校员工IM好友
+        imUserFriendService.refreshSchoolStaffFriend(schoolStaff.getSchoolId().intValue());
 
-             // 创建学校im好友
-             imUserFriendService.refreshSchoolStaffFriend(schoolStaff.getSchoolId().intValue());
+        // 异步添加乐团领队到其他乐团群
+         CompletableFuture.runAsync(() -> {
 
              if (schoolStaff.getUserType().equals(ESchoolStaffType.ORCHESTRA_LEADER)) {
                  addMusicGroup(schoolStaff, user);
@@ -262,9 +268,6 @@ public class SchoolStaffServiceImpl extends ServiceImpl<SchoolStaffMapper, Schoo
         redissonClient.getBucket(submitLockKey).delete();
 
         // 消息推送
-
-        // 推送给自己
-
         Map<Integer, String> userMap = new HashMap<>();
         userMap.put(user.getId(), user.getId().toString());
         sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.JIGUANG_SCHOOL_ACCOUNT_REGISTER_NOTICE,
@@ -299,6 +302,7 @@ public class SchoolStaffServiceImpl extends ServiceImpl<SchoolStaffMapper, Schoo
         sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS, MessageTypeEnum.SMS_SCHOOL_ACCOUNT_REGISTER,
                 selfMap, null, 0, null,
                 "SCHOOL",cooperation.getName(),schoolStaff.getUserType().getDescribe(),url);
+
         return true;
     }
 
@@ -552,7 +556,7 @@ public class SchoolStaffServiceImpl extends ServiceImpl<SchoolStaffMapper, Schoo
         return SchoolStaffWrapper.SchoolStaffStat.builder()
                 .schoolmasterNums(collect.getOrDefault(ESchoolStaffType.SCHOOLMASTER.getCode(), 0))
                 .schoolLeaderNums(collect.getOrDefault(ESchoolStaffType.SCHOOL_LEADER.getCode(), 0))
-                .orchestraNums(collect.getOrDefault(ESchoolStaffType.ORCHESTRA_LEADER.getCode(), 0))
+                .orchestraLeaderNums(collect.getOrDefault(ESchoolStaffType.ORCHESTRA_LEADER.getCode(), 0))
                 .teacherNums(collect.getOrDefault(ESchoolStaffType.TEACHER.getCode(), 0))
                 .orchestraNums(0)
                 .studentNums(0)

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

@@ -36,6 +36,7 @@
 		<result column="username_" property="user.username" />
 		<result column="avatar_" property="user.avatar" />
 		<result column="phone_" property="user.phone" />
+		<result column="group_nickname_" property="groupNickname" />
 	</resultMap>
 	
 	<!-- 根据主键查询一条记录 -->
@@ -160,8 +161,12 @@
 	</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_,
-		st.member_rank_setting_id_,s.name_ subject_name_,st.subject_id_list_ subject_id_
+		SELECT igm.*
+		     , u.avatar_
+		     , CASE WHEN find_in_set('STUDENT',u.user_type_) THEN u.username_ ELSE u.real_name_ END username_
+		     , IFNULL(NULLIF(u.username_, ''), u.real_name_) AS group_nickname_
+		     , u.real_name_
+		     , st.member_rank_setting_id_,s.name_ subject_name_,st.subject_id_list_ subject_id_
 		FROM im_group_member igm
 		LEFT JOIN sys_user u ON igm.user_id_ = u.id_
 		LEFT JOIN student st ON st.user_id_ = u.id_

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

@@ -55,7 +55,7 @@
 	<!--学校员工身份数统计-->
 	<select id="selectUserTypeNumsStat" resultType="com.ym.mec.biz.dal.wrapper.StatGroupWrapper">
 		SELECT t1.user_type_ AS gid, COUNT(t1.user_id_) AS total
-		FROM school_staff t1 WHERE t1.school_id_ = #{schoolId} GROUP BY t1.user_type_
+		FROM school_staff t1 WHERE t1.school_id_ = #{schoolId} AND t1.status_ = 1 GROUP BY t1.user_type_
 	</select>
 
     <update id="updateStatusAndRecoveryStatus">

+ 16 - 5
mec-web/src/main/java/com/ym/mec/web/controller/ImGroupController.java

@@ -12,7 +12,9 @@ import com.ym.mec.biz.dal.wrapper.ImGroupWrapper;
 import com.ym.mec.biz.service.*;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
+import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.page.PageInfo;
+import com.ym.mec.web.vo.ImGroupVo;
 import com.yonge.log.model.AuditLogAnnotation;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
@@ -25,6 +27,7 @@ import org.springframework.web.bind.annotation.*;
 import java.util.Arrays;
 import java.util.Date;
 import java.util.List;
+import java.util.Objects;
 import java.util.stream.Collectors;
 
 @RequestMapping("imGroup")
@@ -162,12 +165,20 @@ public class ImGroupController extends BaseController {
 	}
 
     @ApiOperation(" 移交群主")
-    @PostMapping(value = "/groupChangeOwner")
     @AuditLogAnnotation(operateName = "移交群主",interfaceURL = "imGroup/groupChangeOwner")
-    @ApiImplicitParams({ @ApiImplicitParam(name = "imGroupId", value = "群编号", required = true, dataType = "String"),
-            @ApiImplicitParam(name = "userId", value = "用户编号", required = true, dataType = "integer")})
-    public Object groupChangeOwner(String imGroupId, Integer userId) throws Exception {
-        return succeed(imGroupService.groupChangeOwner(userId,imGroupId));
+    /*@ApiImplicitParams({
+			@ApiImplicitParam(name = "imGroupId", value = "群编号", required = true, dataType = "String"),
+            @ApiImplicitParam(name = "userId", value = "用户编号", required = true, dataType = "integer")
+	})*/
+    @PostMapping(value = "/groupChangeOwner")
+    public Object groupChangeOwner(@RequestBody ImGroupVo.GroupChangeOwner info) throws Exception {
+
+		// 校验参数合法性
+		if (StringUtils.isBlank(info.getImGroupId()) || Objects.isNull(info.getUserId())) {
+			throw new BizException("请求参数错误");
+		}
+
+        return succeed(imGroupService.groupChangeOwner(info.getUserId(), info.getImGroupId()));
     }
 
 	@ApiOperation("解散群")

+ 30 - 0
mec-web/src/main/java/com/ym/mec/web/vo/ImGroupVo.java

@@ -0,0 +1,30 @@
+package com.ym.mec.web.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+/**
+ * IM群组请求
+ * Created by Eric.Shang on 2023/5/24.
+ */
+@ApiModel(value = "ImGroupVo对象", description = "IM群组对象")
+public class ImGroupVo implements Serializable {
+
+    @Data
+    @NoArgsConstructor
+    @AllArgsConstructor
+    @ApiModel("GroupChangeOwner-群主转移")
+    public static class GroupChangeOwner implements Serializable {
+
+        @ApiModelProperty("群组编号")
+        private String imGroupId;
+
+        @ApiModelProperty("用户编号")
+        private Integer userId;
+    }
+}