Explorar o código

Merge branch 'feature/0803-im'

zouxuan %!s(int64=2) %!d(string=hai) anos
pai
achega
5c7e1eae65

+ 8 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/ImNetworkHereWhite.java

@@ -7,6 +7,8 @@ import com.baomidou.mybatisplus.annotation.TableId;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
+import lombok.Getter;
+import lombok.Setter;
 
 import java.io.Serializable;
 import java.util.Date;
@@ -72,6 +74,12 @@ public class ImNetworkHereWhite implements Serializable {
     @ApiModelProperty(value = "${column.comment}")
     private Date createdAt;
 
+    @TableField("random_numeric22_")
+    private String randomNumeric22;
+
+    @TableField("random_numeric20_")
+    private String randomNumeric20;
+
 
 }
 

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

@@ -3,6 +3,7 @@ package com.yonge.cooleshow.biz.dal.service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.microsvc.toolkit.middleware.im.message.GroupMemberWrapper;
+import com.microsvc.toolkit.middleware.rtc.RTCRoomPluginService;
 import com.yonge.cooleshow.biz.dal.dao.ImGroupDao;
 import com.yonge.cooleshow.biz.dal.dto.BasicUserInfo;
 import com.yonge.cooleshow.biz.dal.dto.ImGroupResultDto;
@@ -197,5 +198,6 @@ public interface ImGroupService extends IService<ImGroup> {
      */
     void updateStatus(List<ImHistoryMessage> info);
 
+    RTCRoomPluginService getRTCRoomPluginService(String serviceProvider);
 }
 

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

@@ -1277,6 +1277,11 @@ public class ImGroupServiceImpl extends ServiceImpl<ImGroupDao, ImGroup> impleme
         getDao().updateStatus(info);
     }
 
+    @Override
+    public RTCRoomPluginService getRTCRoomPluginService(String serviceProvider) {
+        return rtcRoomPluginContext.getPluginService(serviceProvider);
+    }
+
 
     private void groupTransfer(List<ImGroup> records) {
         String fansIcon = sysConfigService.findConfigValue(SysConfigConstant.ICON_FANS_GROUP_DEFAULT);

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

@@ -7,6 +7,7 @@ import com.yonge.cooleshow.biz.dal.entity.ImNetworkHereWhite;
 import com.yonge.cooleshow.biz.dal.service.ImNetworkHereWhiteService;
 import com.yonge.toolset.base.exception.BizException;
 import com.yonge.toolset.utils.http.HttpUtil;
+import org.apache.commons.lang3.RandomStringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Value;
@@ -66,6 +67,8 @@ public class ImNetworkHereWhiteServiceImpl extends ServiceImpl<ImNetworkHereWhit
                 imNetworkHereWhite.setRoomToken(jsonObject.getJSONObject("msg").getString("roomToken"));
                 imNetworkHereWhite.setUpdatedAt(date);
                 imNetworkHereWhite.setCreatedAt(date);
+                imNetworkHereWhite.setRandomNumeric22(RandomStringUtils.randomAlphanumeric(22));
+                imNetworkHereWhite.setRandomNumeric20(RandomStringUtils.randomAlphanumeric(20));
                 baseMapper.insert(imNetworkHereWhite);
             }
             return imNetworkHereWhite;

+ 32 - 11
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/ImNetworkRoomServiceImpl.java

@@ -4,7 +4,9 @@ import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.serializer.SerializerFeature;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.google.common.collect.Lists;
 import com.microsvc.toolkit.middleware.rtc.RTCRoomPluginService;
+import com.microsvc.toolkit.middleware.rtc.message.TencentRequest;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.dao.ImNetworkRoomDao;
 import com.yonge.cooleshow.biz.dal.dao.SysConfigDao;
@@ -464,19 +466,12 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
                                     .set(CourseSchedule::getMuteAll,!deviceControl.getEnable())
                                     .set(CourseSchedule::getCancelMuteFlag,deviceControl.getCancelMuteFlag())
                             .update();
-                }
-                /*CourseSchedule courseSchedule = courseScheduleService.getById(deviceControl.getRoomId());
-                // 修改网管课群自定义属性
-                RTCRoomPluginService pluginService = rtcRoomPluginContext.getPluginService(courseSchedule.getServiceProvider());
-                if (Objects.nonNull(pluginService) && Objects.nonNull(newCourseSchedule)) {
-                    // 更新群自定义字段
-                    updateChatRoomGroupData(data.getRoomId(), newCourseSchedule, pluginService);
+                    CourseSchedule courseSchedule = courseScheduleService.getById(deviceControl.getRoomId());
+                    // 修改网管课群自定义属性
+                    RTCRoomPluginService pluginService = imGroupService.getRTCRoomPluginService(courseSchedule.getServiceProvider());
+                    updateChatRoomGroupData(deviceControl.getRoomId(), courseSchedule, pluginService);
                 }
 
-                // 取消网络课群静音
-                if (Objects.isNull(data.getMicrophoneOn())) {
-                    return true;
-                }*/
                 if (!CollectionUtils.isEmpty(roomMembers)) {
                     for (ImNetworkRoomMember roomMember : roomMembers) {
                         deviceControl.setUserId(roomMember.getUserId());
@@ -487,6 +482,32 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
         }
     }
 
+    private void updateChatRoomGroupData(String roomId, CourseSchedule courseSchedule, RTCRoomPluginService pluginService) {
+        // 生成群组自定义字段
+        List<TencentRequest.ChatRoomGroupDefinedData> definedDataList = Lists.newArrayList();
+
+        // 全员静音
+        definedDataList.add(TencentRequest.ChatRoomGroupDefinedData.builder()
+                .key("isMuteAll").value(courseSchedule.getMuteAll().toString())
+                .build());
+        // 取消静音
+        definedDataList.add(TencentRequest.ChatRoomGroupDefinedData.builder()
+                .key("cancelMuteFlag").value(courseSchedule.getCancelMuteFlag().toString())
+                .build());
+
+        if (org.apache.commons.collections.CollectionUtils.isNotEmpty(definedDataList)) {
+
+            try {
+                pluginService.chatRoomGroupDefinedData(TencentRequest.ChatRoomGroup.builder()
+                        .groupId(roomId)
+                        .appDefinedData(definedDataList)
+                        .build());
+            } catch (Exception e) {
+                log.error("直播网管课自定义字段设置失败: roomId={}", roomId, e);
+            }
+        }
+    }
+
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void controlDevice(ImNetworkDeviceControlDto deviceControl) throws Exception {

+ 4 - 1
cooleshow-user/user-biz/src/main/resources/config/mybatis/ImNetworkHereWhiteDao.xml

@@ -15,10 +15,13 @@
         <result column="uuid_" jdbcType="VARCHAR" property="uuid"/>
         <result column="updated_at_" jdbcType="TIMESTAMP" property="updatedAt"/>
         <result column="created_at_" jdbcType="TIMESTAMP" property="createdAt"/>
+        <result column="random_numeric20_" jdbcType="TIMESTAMP" property="randomNumeric20"/>
+        <result column="random_numeric22_" jdbcType="TIMESTAMP" property="randomNumeric22"/>
     </resultMap>
 
     <sql id="Base_Column_List">
-        id_ , course_schedule_id_, name_, limit_, team_id_, admin_id_, mode_, template_, region_, room_token_, uuid_, updated_at_, created_at_
+        id_ , course_schedule_id_, name_, limit_, team_id_, admin_id_, mode_,
+            template_, region_, room_token_, uuid_, updated_at_, created_at_,random_numeric20_,random_numeric22_
     </sql>
     <select id="findByCourseScheduleId" resultMap="BaseResultMap">
         SELECT * FROM im_network_here_white WHERE course_schedule_id_ = #{courseScheduleId} LIMIT 1