소스 검색

add:申请入群和入群成功通知

liujunchi 3 년 전
부모
커밋
165b2aa84d

+ 3 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/ImGroupMemberAuditDao.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.yonge.cooleshow.biz.dal.entity.ImGroupMemberAudit;
 import com.yonge.cooleshow.biz.dal.queryInfo.ImGroupMemberAuditQueryInfo;
+import com.yonge.cooleshow.biz.dal.vo.AuditUserInfo;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -29,5 +30,7 @@ public interface ImGroupMemberAuditDao extends BaseMapper<ImGroupMemberAudit> {
     List<ImGroupMemberAudit> findByIds(@Param("auditIds") String auditIds);
 
     void delByGroupId(@Param("groupId") String groupId);
+
+    List<AuditUserInfo> selectAuditUserInfo(@Param("auditIds") String auditIds);
 }
 

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

@@ -8,16 +8,21 @@ import com.yonge.cooleshow.biz.dal.entity.ImGroup;
 import com.yonge.cooleshow.biz.dal.entity.ImGroupMember;
 import com.yonge.cooleshow.biz.dal.entity.ImGroupMemberAudit;
 import com.yonge.cooleshow.biz.dal.enums.AuditStatusEnum;
+import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
+import com.yonge.cooleshow.biz.dal.enums.MessageTypeEnum;
 import com.yonge.cooleshow.biz.dal.queryInfo.ImGroupMemberAuditQueryInfo;
 import com.yonge.cooleshow.biz.dal.service.ImGroupMemberAuditService;
 import com.yonge.cooleshow.biz.dal.service.ImGroupMemberService;
 import com.yonge.cooleshow.biz.dal.service.ImGroupService;
+import com.yonge.cooleshow.biz.dal.vo.AuditUserInfo;
 import com.yonge.toolset.base.exception.BizException;
+import com.yonge.toolset.thirdparty.message.MessageSenderPluginContext;
 import io.rong.models.group.GroupMember;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
 
 import javax.annotation.Resource;
 import java.util.*;
@@ -41,6 +46,9 @@ public class ImGroupMemberAuditServiceImpl extends ServiceImpl<ImGroupMemberAudi
     @Resource
     private ImGroupMemberService imGroupMemberService;
 
+    @Resource
+    private SysMessageServiceImpl sysMessageService;
+
     @Override
     public ImGroupMemberAuditDao getDao() {
         return this.baseMapper;
@@ -84,6 +92,22 @@ public class ImGroupMemberAuditServiceImpl extends ServiceImpl<ImGroupMemberAudi
             imGroupService.syncGroupMemberNum(imGroup.getId());
             //加入融云群
             imGroupMemberService.join(groupMembers,groupId);
+        } else {
+            Map<Long,String> receivers = new HashMap<>();
+
+            // 群创建人
+            SysUser user = sysUserFeignService.queryUserById(imGroup.getCreateBy());
+            // 申请人
+            SysUser auditUser = sysUserFeignService.queryUserById(imGroupMemberAudit.getUserId());
+
+            receivers.put(user.getId(), user.getPhone());
+            try {
+                sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.STUDENT_JOIN_FANSGROUP,
+                           receivers, null, 0, null, ClientEnum.TEACHER.getCode(), auditUser.getUsername(),imGroup.getName());
+            } catch (Exception e) {
+                log.warn("学生入群消息发送失败,{}",e.getMessage());
+            }
+
         }
     }
 
@@ -111,6 +135,33 @@ public class ImGroupMemberAuditServiceImpl extends ServiceImpl<ImGroupMemberAudi
             imGroupService.syncGroupMemberNum(imGroup.getId());
             //加入融云群
             imGroupMemberService.join(groupMembers,imGroup.getId());
+
+            sendMessage(auditIds);
+        }
+    }
+
+    /**
+     * 发送通过消息
+     *
+     * @param auditIds
+     */
+    private void sendMessage(String auditIds) {
+        List<AuditUserInfo> auditUserInfoList = baseMapper.selectAuditUserInfo(auditIds);
+
+        if (CollectionUtils.isEmpty(auditUserInfoList)) {
+            return;
+        }
+        for (AuditUserInfo auditUserInfo : auditUserInfoList) {
+            Map<Long,String> receivers = new HashMap<>();
+
+            receivers.put(auditUserInfo.getAuditUserId(), auditUserInfo.getAuditUserPhone());
+            try {
+                sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.FANSGROUP_APPLY_SUCCESS,
+                        receivers, null, 0, null, ClientEnum.STUDENT.getCode(), auditUserInfo.getGroupUsername(),
+                        auditUserInfo.getGroupName());
+            } catch (Exception e) {
+                log.warn("学生入群申请通过消息发送失败,{}",e.getMessage());
+            }
         }
     }
 

+ 60 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/AuditUserInfo.java

@@ -0,0 +1,60 @@
+package com.yonge.cooleshow.biz.dal.vo;
+
+/**
+ * Description
+ *
+ * @author liujunchi
+ * @date 2022-05-16
+ */
+public class AuditUserInfo {
+
+    private Long auditUserId;
+
+    private String auditUserPhone;
+
+    private String groupName;
+
+    private Long groupUserId;
+
+    private String groupUsername;
+
+    public Long getAuditUserId() {
+        return auditUserId;
+    }
+
+    public void setAuditUserId(Long auditUserId) {
+        this.auditUserId = auditUserId;
+    }
+
+    public String getAuditUserPhone() {
+        return auditUserPhone;
+    }
+
+    public void setAuditUserPhone(String auditUserPhone) {
+        this.auditUserPhone = auditUserPhone;
+    }
+
+    public String getGroupName() {
+        return groupName;
+    }
+
+    public void setGroupName(String groupName) {
+        this.groupName = groupName;
+    }
+
+    public Long getGroupUserId() {
+        return groupUserId;
+    }
+
+    public void setGroupUserId(Long groupUserId) {
+        this.groupUserId = groupUserId;
+    }
+
+    public String getGroupUsername() {
+        return groupUsername;
+    }
+
+    public void setGroupUsername(String groupUsername) {
+        this.groupUsername = groupUsername;
+    }
+}

+ 14 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/ImGroupMemberAuditMapper.xml

@@ -74,4 +74,18 @@
         SELECT <include refid="Base_Column_List"/> FROM im_group_member_audit WHERE FIND_IN_SET(id_,#{auditIds})
     </select>
 
+    <select id="selectAuditUserInfo" resultType="com.yonge.cooleshow.biz.dal.vo.AuditUserInfo">
+        select distinct
+            su.id_ as auditUserId,
+            su.phone_ as auditUserPhone,
+            ig.name_ as groupName,
+            su2.id_ as groupUserId,
+            su2.username_ as groupUsername
+        from im_group_member_audit igma
+        left join im_group ig on ig.id_ = igma.group_id_
+        left join sys_user su on igma.user_id_ = su.id_
+        left join sys_user su2 on ig.create_by_ = su.id_
+
+        where  igma.id_ in ( #{auditIds})
+    </select>
 </mapper>