浏览代码

Merge remote-tracking branch 'origin/feature/0803-im' into feature/0803-im

# Conflicts:
#	cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/im/impl/ImGroupCoreServiceImpl.java
yuanliang 1 年之前
父节点
当前提交
5f2ad4ef83

+ 35 - 34
cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/core/handler/BaseAuthenticationSuccessEventHandler.java

@@ -1,20 +1,16 @@
 package com.yonge.cooleshow.auth.core.handler;
 package com.yonge.cooleshow.auth.core.handler;
 
 
-import java.io.IOException;
-import java.util.Base64;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Map;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import com.yonge.cooleshow.auth.config.RongCloudConfig;
-import com.yonge.cooleshow.common.entity.ImResult;
-import com.yonge.cooleshow.common.entity.ImUserModel;
-import com.yonge.toolset.base.exception.BizException;
-import io.rong.models.response.TokenResult;
-import io.rong.models.user.UserModel;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.yonge.cooleshow.api.feign.AdminFeignService;
+import com.yonge.cooleshow.api.feign.dto.ImUserInfo;
+import com.yonge.cooleshow.auth.api.entity.SysUser;
+import com.yonge.cooleshow.auth.api.entity.SysUserLogin;
+import com.yonge.cooleshow.auth.api.entity.SysUserLoginLog;
+import com.yonge.cooleshow.auth.service.SysUserLoginLogService;
+import com.yonge.cooleshow.auth.service.SysUserLoginService;
+import com.yonge.cooleshow.auth.service.SysUserService;
+import com.yonge.cooleshow.common.entity.HttpResponseResult;
+import com.yonge.cooleshow.common.security.SecurityConstants;
 import org.apache.commons.collections.MapUtils;
 import org.apache.commons.collections.MapUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.Logger;
@@ -36,15 +32,13 @@ import org.springframework.security.oauth2.provider.token.AuthorizationServerTok
 import org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler;
 import org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler;
 import org.springframework.stereotype.Component;
 import org.springframework.stereotype.Component;
 
 
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.yonge.cooleshow.auth.api.entity.SysUser;
-import com.yonge.cooleshow.auth.api.entity.SysUserLogin;
-import com.yonge.cooleshow.auth.api.entity.SysUserLoginLog;
-import com.yonge.cooleshow.auth.service.SysUserLoginLogService;
-import com.yonge.cooleshow.auth.service.SysUserLoginService;
-import com.yonge.cooleshow.auth.service.SysUserService;
-import com.yonge.cooleshow.common.entity.HttpResponseResult;
-import com.yonge.cooleshow.common.security.SecurityConstants;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.util.Base64;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
 
 
 @Component
 @Component
 public class BaseAuthenticationSuccessEventHandler extends SavedRequestAwareAuthenticationSuccessHandler {
 public class BaseAuthenticationSuccessEventHandler extends SavedRequestAwareAuthenticationSuccessHandler {
@@ -59,6 +53,8 @@ public class BaseAuthenticationSuccessEventHandler extends SavedRequestAwareAuth
 	private ObjectMapper objectMapper;
 	private ObjectMapper objectMapper;
 	@Autowired
 	@Autowired
 	private ClientDetailsService clientDetailsService;
 	private ClientDetailsService clientDetailsService;
+	@Autowired
+	private AdminFeignService adminFeignService;
 
 
 	@Autowired
 	@Autowired
 	private AuthorizationServerTokenServices defaultAuthorizationServerTokenServices;
 	private AuthorizationServerTokenServices defaultAuthorizationServerTokenServices;
@@ -83,22 +79,27 @@ public class BaseAuthenticationSuccessEventHandler extends SavedRequestAwareAuth
 		}else {
 		}else {
 			sysUser = sysUserService.queryLockByPhone(username.split(":")[1]);
 			sysUser = sysUserService.queryLockByPhone(username.split(":")[1]);
 		}
 		}
-		if(StringUtils.isEmpty(sysUser.getImToken())){
+		/*if(StringUtils.isEmpty(sysUser.getImToken())){
 			String name = sysUser.getUsername();
 			String name = sysUser.getUsername();
 			if(StringUtils.isEmpty(name)){
 			if(StringUtils.isEmpty(name)){
 				name = sysUser.getRealName();
 				name = sysUser.getRealName();
 			}
 			}
-			try {
-				TokenResult result = RongCloudConfig.rongCloud.user.register(new UserModel(sysUser.getId().toString(), name, sysUser.getAvatar()));
+
+		}*/
+		// 强制更新im_token
+		try {
+				/*TokenResult result = RongCloudConfig.rongCloud.user.register(new UserModel(sysUser.getId().toString(), name, sysUser.getAvatar()));
 				if(!result.code.equals(200)){
 				if(!result.code.equals(200)){
 					logger.error("获取用户token失败:{}",result.errorMessage);
 					logger.error("获取用户token失败:{}",result.errorMessage);
-				}
-				sysUser.setImToken(result.getToken());
-				sysUser.setUpdateTime(new Date());
-				sysUserService.update(sysUser);
-			} catch (Exception e) {
-				e.printStackTrace();
-			}
+				}*/
+
+			ImUserInfo register = adminFeignService.register(sysUser.getId().toString(), clientId.toUpperCase(), sysUser.getUsername(), sysUser.getAvatar());
+
+			sysUser.setImToken(register.getImToken());
+			sysUser.setUpdateTime(new Date());
+			sysUserService.update(sysUser);
+		} catch (Exception e) {
+			logger.error("获取用户im_token失败:{}",e.getMessage());
 		}
 		}
 		Date date = new Date();
 		Date date = new Date();
 		//修改添加登录信息
 		//修改添加登录信息

+ 22 - 8
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/open/ImController.java

@@ -10,6 +10,7 @@ import com.yonge.cooleshow.admin.io.request.course.CourseRelationVo;
 import com.yonge.cooleshow.admin.io.request.im.IMNotifyMessageVO;
 import com.yonge.cooleshow.admin.io.request.im.IMNotifyMessageVO;
 import com.yonge.cooleshow.admin.io.request.im.UserFriendInfoVO;
 import com.yonge.cooleshow.admin.io.request.im.UserFriendInfoVO;
 import com.yonge.cooleshow.api.feign.dto.ImUserInfo;
 import com.yonge.cooleshow.api.feign.dto.ImUserInfo;
+import com.yonge.cooleshow.biz.dal.dto.LiveRoomStatus;
 import com.yonge.cooleshow.biz.dal.dto.TencentData;
 import com.yonge.cooleshow.biz.dal.dto.TencentData;
 import com.yonge.cooleshow.biz.dal.dto.TencentImCallbackResult;
 import com.yonge.cooleshow.biz.dal.dto.TencentImCallbackResult;
 import com.yonge.cooleshow.biz.dal.entity.ImUserStateSync;
 import com.yonge.cooleshow.biz.dal.entity.ImUserStateSync;
@@ -130,7 +131,8 @@ public class ImController extends BaseController {
 
 
     @ApiOperation("腾讯im 回调接口")
     @ApiOperation("腾讯im 回调接口")
     @PostMapping(value = "/tencentImCallback")
     @PostMapping(value = "/tencentImCallback")
-    public TencentImCallbackResult tencentImCallback(@RequestBody String body, HttpServletRequest request) {
+    public TencentImCallbackResult tencentImCallback(@RequestBody Object obj, HttpServletRequest request) {
+        String body = JSON.toJSONString(obj);
         log.info("tencentImCallback body:{}", body);
         log.info("tencentImCallback body:{}", body);
 
 
         LivePluginService pluginService = livePluginContext.getPluginService(TencentCloudLivePlugin.PLUGIN_NAME);
         LivePluginService pluginService = livePluginContext.getPluginService(TencentCloudLivePlugin.PLUGIN_NAME);
@@ -209,8 +211,8 @@ public class ImController extends BaseController {
 
 
     @ApiOperation("腾讯云直播-推流 回调接口")
     @ApiOperation("腾讯云直播-推流 回调接口")
     @PostMapping(value = "/tencentStreamEventCallback")
     @PostMapping(value = "/tencentStreamEventCallback")
-    public TencentData.StreamEventCallbackResult tencentStreamEventCallback(@RequestBody String body) {
-
+    public TencentData.StreamEventCallbackResult tencentStreamEventCallback(@RequestBody Object obj) {
+        String body = JSON.toJSONString(obj);
         log.info("tencentStreamEventCallback body:{}", body);
         log.info("tencentStreamEventCallback body:{}", body);
 
 
         TencentData.CallbackStreamStateEvent event = TencentData.CallbackStreamStateEvent.from(body);
         TencentData.CallbackStreamStateEvent event = TencentData.CallbackStreamStateEvent.from(body);
@@ -240,8 +242,20 @@ public class ImController extends BaseController {
 
 
         // 推流事件通知
         // 推流事件通知
         if (event.getEventType() == 1) {
         if (event.getEventType() == 1) {
+            // 房间uid
+            String roomUid = getRoomUid(event.getStreamId());
+
+            LiveRoomStatus roomStatus = new LiveRoomStatus();
+            // 房间ID
+            roomStatus.setRoomUid(roomUid);
+            // 主播状态
+            roomStatus.setSpeakerStatus(1);
+            // 推流状态
+            roomStatus.setPushStatus(1);
+            // 更新直播间状态
+            liveRoomService.updateRoomStatus(roomStatus);
             // 自动开启录制
             // 自动开启录制
-            liveRoomService.startLive(getRoomUid(event.getStreamId()), getSpeakerId(event.getStreamId()),event.getSequence());
+            liveRoomService.startLive(roomUid, getSpeakerId(event.getStreamId()), event.getSequence());
 
 
             imUserState.setStatus("0");
             imUserState.setStatus("0");
         }
         }
@@ -266,8 +280,8 @@ public class ImController extends BaseController {
 
 
     @ApiOperation("腾讯云直播-录制 回调接口")
     @ApiOperation("腾讯云直播-录制 回调接口")
     @PostMapping(value = "/tencentStreamRecordCallback")
     @PostMapping(value = "/tencentStreamRecordCallback")
-    public TencentData.StreamEventCallbackResult tencentStreamRecordCallback(@RequestBody String body) {
-
+    public TencentData.StreamEventCallbackResult tencentStreamRecordCallback(@RequestBody Object obj) {
+        String body = JSON.toJSONString(obj);
         log.info("tencentStreamRecordCallback body:{}", body);
         log.info("tencentStreamRecordCallback body:{}", body);
 
 
         TencentData.CallbackSteamRecordEvent event = TencentData.CallbackSteamRecordEvent.from(body);
         TencentData.CallbackSteamRecordEvent event = TencentData.CallbackSteamRecordEvent.from(body);
@@ -291,8 +305,8 @@ public class ImController extends BaseController {
 
 
     @ApiOperation("腾讯云直播-推流异常 回调接口")
     @ApiOperation("腾讯云直播-推流异常 回调接口")
     @PostMapping(value = "/tencentStreamExceptionCallback")
     @PostMapping(value = "/tencentStreamExceptionCallback")
-    public TencentData.StreamEventCallbackResult tencentStreamExceptionCallback(@RequestBody String body) {
-
+    public TencentData.StreamEventCallbackResult tencentStreamExceptionCallback(@RequestBody Object obj) {
+        String body = JSON.toJSONString(obj);
         log.info("tencentStreamExceptionCallback body:{}", body);
         log.info("tencentStreamExceptionCallback body:{}", body);
 
 
         return TencentData.StreamEventCallbackResult.builder().code(0).build();
         return TencentData.StreamEventCallbackResult.builder().code(0).build();

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

@@ -192,5 +192,7 @@ public interface ImGroupService extends IService<ImGroup> {
     void updateStatus(List<ImHistoryMessage> info);
     void updateStatus(List<ImHistoryMessage> info);
 
 
     RTCRoomPluginService getRTCRoomPluginService(String serviceProvider);
     RTCRoomPluginService getRTCRoomPluginService(String serviceProvider);
+
+    Boolean updateImGroup(ImGroup imGroup);
 }
 }
 
 

+ 1 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/im/impl/ImGroupCoreServiceImpl.java

@@ -396,7 +396,7 @@ public class ImGroupCoreServiceImpl implements ImGroupCoreService {
                 .clientType(clientType)
                 .clientType(clientType)
                 .build();
                 .build();
         // 退出群聊
         // 退出群聊
-        groupQuit(groupMember, imGroup.getId(),quit);
+        groupQuit(groupMember, imGroup.getId());
     }
     }
 
 
     /**
     /**

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

@@ -1182,6 +1182,18 @@ public class ImGroupServiceImpl extends ServiceImpl<ImGroupDao, ImGroup> impleme
         return rtcRoomPluginContext.getPluginService(serviceProvider);
         return rtcRoomPluginContext.getPluginService(serviceProvider);
     }
     }
 
 
+    @Override
+    public Boolean updateImGroup(ImGroup imGroup) {
+
+        this.updateById(imGroup);
+        try {
+            imGroupCoreService.modifyGroupInfo(imGroup.getId(),imGroup.getName(),imGroup.getImg());
+        } catch (Exception e) {
+            log.error("修改群组信息失败",e);
+        }
+        return true;
+    }
+
 
 
     private void groupTransfer(List<ImGroup> records) {
     private void groupTransfer(List<ImGroup> records) {
         String fansIcon = sysConfigService.findConfigValue(SysConfigConstant.ICON_FANS_GROUP_DEFAULT);
         String fansIcon = sysConfigService.findConfigValue(SysConfigConstant.ICON_FANS_GROUP_DEFAULT);

+ 78 - 7
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/LiveRoomServiceImpl.java

@@ -481,8 +481,7 @@ public class LiveRoomServiceImpl extends ServiceImpl<LiveRoomDao, LiveRoom> impl
                 DateTime now = DateTime.now();
                 DateTime now = DateTime.now();
 
 
                 RTCRequest.RecordStart recordStart = RTCRequest.RecordStart.builder()
                 RTCRequest.RecordStart recordStart = RTCRequest.RecordStart.builder()
-                        .streamName(MessageFormat.format("{0}_{1}", room.getRoomUid(),
-                                imGroupService.getImUserId(room.getSpeakerId().toString(),ClientEnum.TEACHER.getCode())))
+                        .streamName(getStreamId(room.getRoomUid(),room.getSpeakerId()))
                         .extra("")
                         .extra("")
                         .startTime(now.toDateTime().getMillis())
                         .startTime(now.toDateTime().getMillis())
                         .endTime(now.plusDays(1).toDateTime().getMillis())
                         .endTime(now.plusDays(1).toDateTime().getMillis())
@@ -757,7 +756,37 @@ public class LiveRoomServiceImpl extends ServiceImpl<LiveRoomDao, LiveRoom> impl
         CompletableFuture.runAsync(() -> insertAndCleanLiveData(room.getRoomUid(), room.getSpeakerId()));
         CompletableFuture.runAsync(() -> insertAndCleanLiveData(room.getRoomUid(), room.getSpeakerId()));
         log.info("roomDestroy>>>> insertAndCleanLiveData {}", JSONObject.toJSONString(room));
         log.info("roomDestroy>>>> insertAndCleanLiveData {}", JSONObject.toJSONString(room));
 
 
-        tryDestroyLiveRoom(room);
+        try {
+            LivePluginService pluginService = livePluginContext.getPluginService(room.getServiceProvider());
+
+            //销毁直播间
+            pluginService.chatRoomDestroy(roomUid);
+
+            TencentWrapper.LiveStreamState liveStreamState = pluginService.liveStreamState(
+                    getStreamId(room.getRoomUid(), room.getSpeakerId()));
+            if (liveStreamState == null) {
+                log.error("查询直播间流失败,返回结果为空");
+            } else if ("active".equals(liveStreamState.getStreamState())) {
+                pluginService.liveStreamStop(getStreamId(room.getRoomUid(), room.getSpeakerId()));
+            }
+
+            // 录制任务Id
+            if (room.getServiceProvider().equals(TencentCloudLivePlugin.PLUGIN_NAME)) {
+
+                List<String> collect = liveRoomService.lambdaQuery()
+                        .eq(LiveRoom::getRoomUid, roomUid).list().stream()
+                        .map(LiveRoom::getVideoRecord)
+                        .filter(StringUtils::isNotEmpty)
+                        .distinct().collect(Collectors.toList());
+
+                for (String taskId : collect) {
+                    // 删除录制任务
+                    pluginService.rtcRoomRecordStop(taskId);
+                }
+            }
+        } catch (Exception e) {
+            log.error("roomDestroy>>>> errorMsg{}", e.getMessage(), e.getCause());
+        }
     }
     }
 
 
     /**
     /**
@@ -1083,7 +1112,7 @@ public class LiveRoomServiceImpl extends ServiceImpl<LiveRoomDao, LiveRoom> impl
 
 
         appDefinedData.add(TencentRequest.ChatRoomGroupDefinedData.builder()
         appDefinedData.add(TencentRequest.ChatRoomGroupDefinedData.builder()
                 .key(EGroupDefinedDataType.UPDATE_INFO.getCode())
                 .key(EGroupDefinedDataType.UPDATE_INFO.getCode())
-                .value(StringUtils.join(EGroupDefinedDataType.MEMBER_ONLINE.getCode(),EGroupDefinedDataType.MEMBER_TOTAL.getCode(),","))
+                .value(StringUtils.join(EGroupDefinedDataType.MEMBER_ONLINE.getCode(),",",EGroupDefinedDataType.MEMBER_TOTAL.getCode()))
                 .build());
                 .build());
         try {
         try {
             livePluginContext.getPluginService(roomVo.getServiceProvider())
             livePluginContext.getPluginService(roomVo.getServiceProvider())
@@ -1714,8 +1743,9 @@ public class LiveRoomServiceImpl extends ServiceImpl<LiveRoomDao, LiveRoom> impl
                 }
                 }
                 log.info("查询直播间流状态:{},roomUid:{}", JSON.toJSONString(liveStreamState), liveRoom.getRoomUid());
                 log.info("查询直播间流状态:{},roomUid:{}", JSON.toJSONString(liveStreamState), liveRoom.getRoomUid());
                 if (!"active".equals(liveStreamState.getStreamState())) {
                 if (!"active".equals(liveStreamState.getStreamState())) {
-                    pluginService.liveStreamStop(getStreamId(liveRoom.getRoomUid(), liveRoom.getSpeakerId()));
+                    destroyLiveRoom(liveRoom);
                 }
                 }
+
             } else if (pluginService.pluginName().equals(RongCloudLivePlugin.PLUGIN_NAME)) {
             } else if (pluginService.pluginName().equals(RongCloudLivePlugin.PLUGIN_NAME)) {
                 // 融云走原有逻辑 融云自动销毁
                 // 融云走原有逻辑 融云自动销毁
                 // 销毁状态改为2
                 // 销毁状态改为2
@@ -1733,7 +1763,7 @@ public class LiveRoomServiceImpl extends ServiceImpl<LiveRoomDao, LiveRoom> impl
     }
     }
 
 
     private String getStreamId(String roomUid, Long speakerId) {
     private String getStreamId(String roomUid, Long speakerId) {
-        return roomUid + "_" + speakerId;
+        return roomUid + "_" + imGroupService.getImUserId(speakerId,ClientEnum.TEACHER);
     }
     }
 
 
 
 
@@ -1958,6 +1988,16 @@ public class LiveRoomServiceImpl extends ServiceImpl<LiveRoomDao, LiveRoom> impl
                 .map(this::getSysUser)
                 .map(this::getSysUser)
                 .orElseGet(this::getSysUser);
                 .orElseGet(this::getSysUser);
 
 
+
+        // 如果是直播课程,判断是否已经结束
+        Integer count = courseScheduleService.lambdaQuery()
+                .eq(CourseSchedule::getRoomUid, roomUid)
+                .eq(CourseSchedule::getStatus, "COMPLETE")
+                .count();
+        if (count >0 ) {
+            throw new BizException("直播课已结束");
+        }
+
         // 默认学生端查询
         // 默认学生端查询
         osType = Optional.ofNullable(osType).orElse(1);
         osType = Optional.ofNullable(osType).orElse(1);
         ClientEnum clientEnum = ClientEnum.TEACHER;
         ClientEnum clientEnum = ClientEnum.TEACHER;
@@ -2202,6 +2242,15 @@ public class LiveRoomServiceImpl extends ServiceImpl<LiveRoomDao, LiveRoom> impl
         Optional.ofNullable(roomUid).orElseThrow(() -> new BizException("房间编号不能为空!"));
         Optional.ofNullable(roomUid).orElseThrow(() -> new BizException("房间编号不能为空!"));
         Optional.ofNullable(userId).orElseThrow(() -> new BizException("人员编号不能为空!"));
         Optional.ofNullable(userId).orElseThrow(() -> new BizException("人员编号不能为空!"));
 
 
+        // 如果是直播课程,判断是否已经结束
+        Integer count = courseScheduleService.lambdaQuery()
+                .eq(CourseSchedule::getRoomUid, roomUid)
+                .eq(CourseSchedule::getStatus, "COMPLETE")
+                .count();
+        if (count >0 ) {
+            throw new BizException("直播课已结束");
+        }
+
         // 设置进入时间
         // 设置进入时间
         RBucket<Long> userStateTimeCache = redissonClient.getBucket(LIVE_USER_LAST_TIME.replace(USER_ID, userId.toString()));
         RBucket<Long> userStateTimeCache = redissonClient.getBucket(LIVE_USER_LAST_TIME.replace(USER_ID, userId.toString()));
         long time = DateTime.now().plusSeconds(1).getMillis();
         long time = DateTime.now().plusSeconds(1).getMillis();
@@ -2311,9 +2360,31 @@ public class LiveRoomServiceImpl extends ServiceImpl<LiveRoomDao, LiveRoom> impl
             return;
             return;
         }
         }
         RoomSpeakerInfo roomSpeakerInfo = speakerCache.get();
         RoomSpeakerInfo roomSpeakerInfo = speakerCache.get();
+        // 设置推流状态房间信息
+        // 查询房间信息
+        LiveRoom imLiveBroadcastRoomVo = getByRoomUid(roomSpeakerInfo.getRoomUid());
 
 
+        if (imLiveBroadcastRoomVo == null) {
+            log.warn("closeLive imLiveBroadcastRoomVo is null");
+            return;
+        }
         //关闭直播
         //关闭直播
-        if (StringUtils.isNotBlank(sequence) && sequence.equals(roomSpeakerInfo.getSequence())) {
+        LivePluginService pluginService = livePluginContext.getPluginService(imLiveBroadcastRoomVo.getServiceProvider());
+        if (StringUtils.isBlank(sequence)) {
+            try {
+                TencentWrapper.LiveStreamState liveStreamState = pluginService.liveStreamState(getStreamId(imLiveBroadcastRoomVo.getRoomUid(), imLiveBroadcastRoomVo.getSpeakerId()));
+                if (liveStreamState == null) {
+                    log.error("查询直播间流失败,返回结果为空");
+                } else {
+                    log.info("查询直播间流状态:{},roomUid:{}", JSON.toJSONString(liveStreamState), imLiveBroadcastRoomVo.getRoomUid());
+                    if (!"active".equals(liveStreamState.getStreamState())) {
+                        setPushStatus(roomSpeakerInfo.getRoomUid(), 0);
+                    }
+                }
+            } catch (Exception e) {
+                log.error("查询直播间流失败,roomUid:{}", imLiveBroadcastRoomVo.getRoomUid(), e);
+            }
+        } else if (sequence.equals(roomSpeakerInfo.getSequence())) {
             setPushStatus(roomSpeakerInfo.getRoomUid(), 0);
             setPushStatus(roomSpeakerInfo.getRoomUid(), 0);
         }
         }
 
 

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

@@ -335,7 +335,7 @@
         <collection property="background" ofType="com.yonge.cooleshow.biz.dal.entity.MusicSheetAccompaniment">
         <collection property="background" ofType="com.yonge.cooleshow.biz.dal.entity.MusicSheetAccompaniment">
             <id column="accompanimentId" jdbcType="BIGINT" property="id"/>
             <id column="accompanimentId" jdbcType="BIGINT" property="id"/>
             <result column="accompanimentMusicSheetId" jdbcType="BIGINT" property="musicSheetId"/>
             <result column="accompanimentMusicSheetId" jdbcType="BIGINT" property="musicSheetId"/>
-            <result column="accompanimentMusicSubject" jdbcType="VARCHAR" property="musicSubject"/>
+            <result column="accompanimentMusicSubject" jdbcType="VARCHAR" property="musicSubjectId"/>
             <result column="accompanimentAudioFileUrl" jdbcType="VARCHAR" property="audioFileUrl"/>
             <result column="accompanimentAudioFileUrl" jdbcType="VARCHAR" property="audioFileUrl"/>
             <result column="accompanimentSortNumber" jdbcType="TINYINT" property="sortNumber"/>
             <result column="accompanimentSortNumber" jdbcType="TINYINT" property="sortNumber"/>
             <result column="accompanimentCreateTime" jdbcType="TIMESTAMP" property="createTime"/>
             <result column="accompanimentCreateTime" jdbcType="TIMESTAMP" property="createTime"/>

+ 1 - 1
cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/ImGroupController.java

@@ -100,7 +100,7 @@ public class ImGroupController extends BaseController {
     @ApiOperation("修改群信息")
     @ApiOperation("修改群信息")
     @PostMapping(value = "/update")
     @PostMapping(value = "/update")
     public HttpResponseResult<Boolean> update(@Valid @RequestBody ImGroup imGroup) throws Exception {
     public HttpResponseResult<Boolean> update(@Valid @RequestBody ImGroup imGroup) throws Exception {
-        return succeed(imGroupService.updateById(imGroup));
+        return succeed(imGroupService.updateImGroup(imGroup));
     }
     }
 
 
     @ApiOperation("获取指定用户的群列表")
     @ApiOperation("获取指定用户的群列表")