Eric 1 vuosi sitten
vanhempi
commit
d2652ff34e

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleDao.java

@@ -2019,7 +2019,7 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
      * @param courseScheduleId 课程ID
      * @param muteAll 全员静音状态
      */
-    void updateGroupMuteAllStatus(@Param("courseScheduleId") Long courseScheduleId, @Param("muteAll") Boolean muteAll);
+    void updateGroupMuteAllStatus(@Param("courseScheduleId") Long courseScheduleId, @Param("muteAll") Boolean muteAll, @Param("cancelMute") Boolean cancelMute);
 
     void updateTeachingPointByClassGroupId(@Param("classGroupId") Integer classGroupId, @Param("teachingPoint") String teachingPoint);
 

+ 9 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/CourseSchedule.java

@@ -9,6 +9,7 @@ import com.ym.mec.common.enums.BaseEnum;
 
 import io.swagger.annotations.ApiModelProperty;
 
+import lombok.Getter;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 
@@ -218,6 +219,10 @@ public class CourseSchedule  extends BaseEntity{
 	@ApiModelProperty("全员静音")
 	private Boolean muteAll;
 
+	@Getter
+	@ApiModelProperty("取消静音")
+	private Boolean cancelMuteFlag;
+
     @ApiModelProperty("教学点")
     private String teachingPoint;
 
@@ -765,6 +770,10 @@ public class CourseSchedule  extends BaseEntity{
 		this.shareMode = shareMode;
 	}
 
+	public void setCancelMuteFlag(Boolean cancelMuteFlag) {
+		this.cancelMuteFlag = cancelMuteFlag;
+	}
+
 	@Override
 	public String toString() {
 		return ToStringBuilder.reflectionToString(this);

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

@@ -46,6 +46,7 @@
         <result column="settlement_report_flag_" property="settlementReportFlag"/>
         <result column="service_provider_" property="serviceProvider"/>
         <result column="mute_all_" property="muteAll"/>
+        <result column="cancel_mute_flag_" property="cancelMuteFlag"/>
         <result column="live_remind_" property="liveRemind"/>
         <result column="live_room_id_" property="liveRoomId" />
         <result column="continuous_course_" property="continuousCourse" />
@@ -189,6 +190,7 @@
         cs.evaluate_flag_,
         cs.service_provider_,
         cs.mute_all_,
+        cs.cancel_mute_flag_,
         cs.live_room_id_,
         cs.continuous_course_,
         cs.share_mode_
@@ -4285,8 +4287,15 @@
     <!--更新全员静音状态-->
     <update id="updateGroupMuteAllStatus">
         UPDATE course_schedule
-        SET mute_all_ = #{muteAll},
+        <set>
+            <if test="muteAll != null">
+                mute_all_ = #{muteAll},
+            </if>
+            <if test="cancelMute != null">
+                cancel_mute_flag_ = #{cancelMute},
+            </if>
             update_time_ = NOW()
+        </set>
         WHERE id_ = #{courseScheduleId}
     </update>
     <!--更新全员静音状态-->

+ 2 - 0
mec-im/src/main/java/com/ym/pojo/ReqDeviceControlData.java

@@ -27,6 +27,8 @@ public class ReqDeviceControlData {
 	private Integer soundVolume = 100;
 	// 服务提供方
 	private String serviceProvider;
+	// 取消静音
+	private Boolean cancelMuteFlag;
 	// 发送用户信息
 	private String sendUserId;
 	private String sendUserName;

+ 47 - 3
mec-im/src/main/java/com/ym/service/Impl/RoomServiceImpl.java

@@ -12,6 +12,7 @@ import com.microsvc.toolkit.middleware.rtc.impl.RongCloudRTCPlugin;
 import com.microsvc.toolkit.middleware.rtc.impl.TencentCloudRTCPlugin;
 import com.microsvc.toolkit.middleware.rtc.message.ImGroupMemberWrapper;
 import com.microsvc.toolkit.middleware.rtc.message.RTCRoomMessage;
+import com.microsvc.toolkit.middleware.rtc.message.TencentRequest;
 import com.ym.common.ApiException;
 import com.ym.common.BaseResponse;
 import com.ym.common.DisplayEnum;
@@ -683,6 +684,9 @@ public class RoomServiceImpl implements RoomService {
                     // 生成群组
                     pluginService.chatRoomCreate(roomId, courseSchedule.getName(), courseSchedule.getTeacherId().toString());
 
+                    // 更新群自定义字段
+                    updateChatRoomGroupData(roomId, courseSchedule, pluginService);
+
                     // 群组老师信息
                     List<ImGroupMemberWrapper.ImGroupMember> groupMembers = Lists.newArrayList(ImGroupMemberWrapper.ImGroupMember
                             .builder()
@@ -723,6 +727,39 @@ public class RoomServiceImpl implements RoomService {
 
         }
     }
+
+    /**
+     * 更新群自定义字段
+     * @param roomId 群ID
+     * @param courseSchedule CourseSchedule
+     * @param pluginService RTCRoomPluginService
+     */
+    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 (CollectionUtils.isNotEmpty(definedDataList)) {
+
+            try {
+                pluginService.chatRoomGroupDefinedData(TencentRequest.ChatRoomGroup.builder()
+                        .groupId(roomId)
+                        .appDefinedData(definedDataList)
+                        .build());
+            } catch (Exception e) {
+                log.error("直播网管课自定义字段设置失败: roomId={}", roomId, e);
+            }
+        }
+    }
+
     private void dismissImGroup(String userId,String roomId, String serviceProvider) throws Exception {
         log.info("dismissImGroup: roomId = {}, userId = {}", roomId, userId);
         String joinImGroupKey = "joinImGroup:" + roomId;
@@ -1805,9 +1842,16 @@ public class RoomServiceImpl implements RoomService {
         }
         data.setServiceProvider(courseSchedule.getServiceProvider());
 
-        // 同步全员静音状态
-        if (Objects.nonNull(data.getMicrophoneOn())) {
-            courseScheduleDao.updateGroupMuteAllStatus(courseScheduleId, !data.getMicrophoneOn());
+        // 同步全员静音状态, 取消静音
+        if (Objects.nonNull(data.getMicrophoneOn()) || Objects.nonNull(data.getCancelMuteFlag())) {
+            courseScheduleDao.updateGroupMuteAllStatus(courseScheduleId, !data.getMicrophoneOn(), data.getCancelMuteFlag());
+
+            // 修改网管课群自定义属性
+            RTCRoomPluginService pluginService = rtcRoomPluginContext.getPluginService(courseSchedule.getServiceProvider());
+            if (Objects.nonNull(pluginService)) {
+                // 更新群自定义字段
+                updateChatRoomGroupData(data.getRoomId(), courseSchedule, pluginService);
+            }
         }
 
         // 课程老师信息