Pārlūkot izejas kodu

Merge branch 'zx_saas_2023_03' of http://git.dayaedu.com/yonge/mec into master_saas

 Conflicts:
	mec-web/pom.xml
zouxuan 2 gadi atpakaļ
vecāks
revīzija
d3dd0a08d8
19 mainītis faili ar 287 papildinājumiem un 39 dzēšanām
  1. 23 0
      audio-analysis/src/main/java/com/yonge/netty/dto/EvaluationCriteriaEnum.java
  2. 11 1
      audio-analysis/src/main/java/com/yonge/netty/entity/MusicXmlBasicInfo.java
  3. 2 2
      audio-analysis/src/main/java/com/yonge/netty/server/service/AudioCompareHandler.java
  4. 1 1
      mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/core/filter/UsernameAuthenticationFilter.java
  5. 74 0
      mec-biz/src/main/java/com/mec/redisson/RedissonTopicListener.java
  6. 56 0
      mec-biz/src/main/java/com/ym/mec/biz/redisson/RedissonMessageService.java
  7. 2 0
      mec-biz/src/main/java/com/ym/mec/biz/service/ImLiveBroadcastRoomService.java
  8. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/SysMusicCompareRecordService.java
  9. 88 22
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImLiveBroadcastRoomServiceImpl.java
  10. 2 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImLiveRoomReservationServiceImpl.java
  11. 1 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupPaymentCalenderDetailServiceImpl.java
  12. 0 4
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentPaymentOrderDetailServiceImpl.java
  13. 11 4
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysMusicCompareRecordServiceImpl.java
  14. 1 1
      mec-biz/src/main/resources/config/mybatis/ImLiveBroadcastRoomMemberMapper.xml
  15. 2 0
      mec-im/src/main/java/com/ym/SealClassApplication.java
  16. 9 0
      mec-im/src/main/java/com/ym/controller/UserController.java
  17. 1 1
      mec-student/src/main/java/com/ym/mec/student/StudentApplication.java
  18. 1 1
      mec-teacher/src/main/java/com/ym/mec/teacher/TeacherApplication.java
  19. 1 1
      mec-web/src/main/java/com/ym/mec/web/WebApplication.java

+ 23 - 0
audio-analysis/src/main/java/com/yonge/netty/dto/EvaluationCriteriaEnum.java

@@ -0,0 +1,23 @@
+package com.yonge.netty.dto;
+
+import com.ym.mec.common.enums.BaseEnum;
+
+public enum EvaluationCriteriaEnum implements BaseEnum<String, EvaluationCriteriaEnum> {
+
+	AMPLITUDE("振幅"),FREQUENCY("频率"),DECIBELS("分贝");
+	
+	private String desc;
+	
+	EvaluationCriteriaEnum(String desc){
+		this.desc = desc;
+	}
+
+	@Override
+	public String getCode() {
+		return this.name();
+	}
+
+	public String getDesc() {
+		return desc;
+	}
+}

+ 11 - 1
audio-analysis/src/main/java/com/yonge/netty/entity/MusicXmlBasicInfo.java

@@ -18,6 +18,8 @@ public class MusicXmlBasicInfo {
     private Integer campId;
     private Integer campId;
 	
 	
 	private String clientId;
 	private String clientId;
+	
+	private String evaluationCriteria;
 
 
 	private Integer detailId;
 	private Integer detailId;
 
 
@@ -84,6 +86,14 @@ public class MusicXmlBasicInfo {
 		this.clientId = clientId;
 		this.clientId = clientId;
 	}
 	}
 
 
+	public String getEvaluationCriteria() {
+		return evaluationCriteria;
+	}
+
+	public void setEvaluationCriteria(String evaluationCriteria) {
+		this.evaluationCriteria = evaluationCriteria;
+	}
+
 	public Integer getDetailId() {
 	public Integer getDetailId() {
 		return detailId;
 		return detailId;
 	}
 	}
@@ -160,7 +170,7 @@ public class MusicXmlBasicInfo {
 		return beatLength;
 		return beatLength;
 	}
 	}
 
 
-	public void setBeatLength(int beatLength) {
+	public void setBeatLength(float beatLength) {
 		this.beatLength = beatLength;
 		this.beatLength = beatLength;
 	}
 	}
 
 

+ 2 - 2
audio-analysis/src/main/java/com/yonge/netty/server/service/AudioCompareHandler.java

@@ -159,7 +159,7 @@ public class AudioCompareHandler implements MessageHandler {
 				
 				
 				MusicXmlNote musicXmlNote = musicXmlBasicInfo.getMusicXmlInfos().stream().max(Comparator.comparing(MusicXmlNote::getTimeStamp)).get();
 				MusicXmlNote musicXmlNote = musicXmlBasicInfo.getMusicXmlInfos().stream().max(Comparator.comparing(MusicXmlNote::getTimeStamp)).get();
 				sysMusicCompareRecord.setSourceTime((float) ((musicXmlNote.getTimeStamp()+musicXmlNote.getDuration())/1000));
 				sysMusicCompareRecord.setSourceTime((float) ((musicXmlNote.getTimeStamp()+musicXmlNote.getDuration())/1000));
-				sysMusicCompareRecordService.insert(sysMusicCompareRecord,musicXmlBasicInfo.getCampId());
+				sysMusicCompareRecordService.insert(sysMusicCompareRecord, null);
 				channelContext.setRecordId(sysMusicCompareRecord.getId());
 				channelContext.setRecordId(sysMusicCompareRecord.getId());
 			}
 			}
 			break;
 			break;
@@ -229,7 +229,7 @@ public class AudioCompareHandler implements MessageHandler {
 					
 					
 					sysMusicCompareRecord.setHeardLevel(HeardLevelEnum.valueOf(channelContext.getHardLevel().name()));
 					sysMusicCompareRecord.setHeardLevel(HeardLevelEnum.valueOf(channelContext.getHardLevel().name()));
 					
 					
-					sysMusicCompareRecordService.saveMusicCompareData(sysMusicCompareRecord);
+					sysMusicCompareRecordService.saveMusicCompareData(sysMusicCompareRecord, musicXmlBasicInfo.getCampId());
 				}
 				}
 				
 				
 				int totalPlayTimeOfCurrentDate = sysMusicCompareRecordService.queryCurrentDatePlayTimeByUserId(sysMusicCompareRecord.getUserId());
 				int totalPlayTimeOfCurrentDate = sysMusicCompareRecordService.queryCurrentDatePlayTimeByUserId(sysMusicCompareRecord.getUserId());

+ 1 - 1
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/core/filter/UsernameAuthenticationFilter.java

@@ -78,7 +78,7 @@ public class UsernameAuthenticationFilter extends AbstractAuthenticationProcessi
 				clientId = "SYSTEM";
 				clientId = "SYSTEM";
 			}
 			}
 			if (!userInfo.getSysUser().getUserType().contains(clientId)) {
 			if (!userInfo.getSysUser().getUserType().contains(clientId)) {
-				throw new LockedException("用户不存在,请联系乐团主管");
+				throw new LockedException("用户不存在");
 			}
 			}
 		}
 		}
 		
 		

+ 74 - 0
mec-biz/src/main/java/com/mec/redisson/RedissonTopicListener.java

@@ -0,0 +1,74 @@
+package com.mec.redisson;
+
+import com.ym.mec.biz.dal.vo.ImLiveBroadcastRoomVo;
+import com.ym.mec.biz.redisson.RedissonMessageService;
+import com.ym.mec.biz.service.ImLiveBroadcastRoomService;
+import lombok.extern.slf4j.Slf4j;
+import org.redisson.api.RBucket;
+import org.redisson.api.RedissonClient;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.ApplicationArguments;
+import org.springframework.boot.ApplicationRunner;
+import org.springframework.core.Ordered;
+import org.springframework.stereotype.Service;
+
+import java.util.Objects;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Redisson消息发布订阅服务监听
+ */
+@Slf4j
+@Service
+public class RedissonTopicListener implements ApplicationRunner, Ordered {
+ 
+    @Autowired
+    private RedissonMessageService redissonMessageService;
+    @Autowired
+    private RedissonClient redissonClient;
+
+    @Autowired
+    private ImLiveBroadcastRoomService imLiveBroadcastRoomService;
+ 
+    @Override
+    public void run(ApplicationArguments args) {
+
+        if (Objects.nonNull(redissonMessageService)) {
+
+            redissonMessageService.subscribe(RedissonMessageService.TOPIC_MESSAGE, (message) -> {
+                log.info("RedissonMessageService subscribe message={}", message);
+                try {
+                    TimeUnit.SECONDS.sleep(1);
+                } catch (InterruptedException e) {
+                    log.error("RedissonMessageService subscribe sleep error", e);
+                }
+
+                // 缓存JoinRoom用户信息到redis
+                RBucket<Object> bucket = redissonClient.getBucket(RedissonMessageService.LIVE_ROOM_MEMBER + message);
+                if (!bucket.isExists()) {
+                   return;
+                }
+                bucket.delete();
+
+                ImLiveBroadcastRoomVo imLiveBroadcastRoomVo = imLiveBroadcastRoomService.queryRoomInfo(message);
+                if (Objects.isNull(imLiveBroadcastRoomVo)) {
+                    return;
+                }
+                try {
+                    imLiveBroadcastRoomService.setGroupMemberDefinedData(imLiveBroadcastRoomVo,imLiveBroadcastRoomVo.getLookNum(),imLiveBroadcastRoomVo.getTotalLookNum());
+                } catch (Exception e) {
+                    log.error("RedissonMessageService subscribe setGroupMemberDefinedData error", e);
+                    bucket.set(message, 30, TimeUnit.MINUTES);
+                }
+                redissonMessageService.publish(RedissonMessageService.TOPIC_MESSAGE, message);
+
+            });
+            log.info("---> RedissonMessageService subscribe success");
+        }
+    }
+
+    @Override
+    public int getOrder() {
+        return 1;
+    }
+}

+ 56 - 0
mec-biz/src/main/java/com/ym/mec/biz/redisson/RedissonMessageService.java

@@ -0,0 +1,56 @@
+package com.ym.mec.biz.redisson;
+
+import lombok.extern.slf4j.Slf4j;
+import org.redisson.api.RTopic;
+import org.redisson.api.RedissonClient;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * Redisson消息发布订阅服务
+ */
+@Slf4j
+@Service
+public class RedissonMessageService {
+
+    // 订阅消息通知
+    public static final String TOPIC_MESSAGE = "topic:message";
+    // 直播在线人数
+    public static final String LIVE_ROOM_MEMBER = "delayQueue:liveRoomMember:";
+
+    private final RedissonClient redissonClient;
+
+    @Autowired
+    public RedissonMessageService(RedissonClient redissonClient) {
+
+        this.redissonClient = redissonClient;
+    }
+
+    /**
+     * 订阅消息
+     * @param topic 消息主题
+     * @param listener MessageListener
+     */
+    public void subscribe(String topic, MessageListener listener) {
+        RTopic messageTopic = redissonClient.getTopic(topic);
+        messageTopic.addListener(String.class, (channel, msg) -> listener.onMessage(msg));
+    }
+
+    /**
+     * 发布消息
+     * @param topic 消息主题
+     * @param message 消息内容
+     */
+    public void publish(String topic, String message) {
+        RTopic messageTopic = redissonClient.getTopic(topic);
+        messageTopic.publish(message);
+    }
+
+    /**
+     * 消息监听
+     */
+    public interface MessageListener {
+        void onMessage(String message);
+    }
+
+}

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

@@ -72,6 +72,8 @@ public interface ImLiveBroadcastRoomService extends IService<ImLiveBroadcastRoom
 
 
     ImLiveBroadcastRoomVo speakerJoinRoom(String roomUid, String os);
     ImLiveBroadcastRoomVo speakerJoinRoom(String roomUid, String os);
 
 
+    void setGroupMemberDefinedData(ImLiveBroadcastRoomVo roomVo, Integer onlineUser, Integer totalUser);
+
     void joinRoom(String roomUid, Integer userId);
     void joinRoom(String roomUid, Integer userId);
 
 
     void startLive(String roomUid, Integer userId,String videoResolution);
     void startLive(String roomUid, Integer userId,String videoResolution);

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/SysMusicCompareRecordService.java

@@ -33,7 +33,7 @@ public interface SysMusicCompareRecordService extends BaseService<Long, SysMusic
      * @param sysMusicCompareRecord
      * @param sysMusicCompareRecord
      * @return void
      * @return void
      */
      */
-    void saveMusicCompareData(SysMusicCompareRecord sysMusicCompareRecord);
+    void saveMusicCompareData(SysMusicCompareRecord sysMusicCompareRecord,Integer campId);
 
 
     /**
     /**
      * @describe 用户最后一次评测数据
      * @describe 用户最后一次评测数据

+ 88 - 22
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImLiveBroadcastRoomServiceImpl.java

@@ -41,6 +41,7 @@ import com.ym.mec.biz.dal.enums.EOnOffStatus;
 import com.ym.mec.biz.dal.enums.MessageTypeEnum;
 import com.ym.mec.biz.dal.enums.MessageTypeEnum;
 import com.ym.mec.biz.dal.page.LiveRoomGoodsOrderQueryInfo;
 import com.ym.mec.biz.dal.page.LiveRoomGoodsOrderQueryInfo;
 import com.ym.mec.biz.dal.vo.*;
 import com.ym.mec.biz.dal.vo.*;
+import com.ym.mec.biz.redisson.RedissonMessageService;
 import com.ym.mec.biz.service.*;
 import com.ym.mec.biz.service.*;
 import com.ym.mec.common.entity.ImRoomMessage;
 import com.ym.mec.common.entity.ImRoomMessage;
 import com.ym.mec.common.entity.ImUserState;
 import com.ym.mec.common.entity.ImUserState;
@@ -118,6 +119,8 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
     private ImLiveRoomVideoService imLiveRoomVideoService;
     private ImLiveRoomVideoService imLiveRoomVideoService;
     @Autowired
     @Autowired
     private LivePluginContext livePluginContext;
     private LivePluginContext livePluginContext;
+    @Autowired
+    private RedissonMessageService redissonMessageService;
 
 
     @Autowired
     @Autowired
     private ImFeignService imFeignService;
     private ImFeignService imFeignService;
@@ -351,6 +354,11 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
         if (now.getTime() > dto.getLiveStartTime().getTime()) {
         if (now.getTime() > dto.getLiveStartTime().getTime()) {
             throw new BizException("设置的直播开始时间不能小于当前时间");
             throw new BizException("设置的直播开始时间不能小于当前时间");
         }
         }
+        if (StringUtils.isBlank(dto.getServiceProvider())) {
+            //查询房间过期时间
+            String liveClient = sysConfigDao.findConfigValue("live_client");
+            dto.setServiceProvider(liveClient);
+        }
         ImLiveBroadcastRoom obj = new ImLiveBroadcastRoom();
         ImLiveBroadcastRoom obj = new ImLiveBroadcastRoom();
         BeanUtils.copyProperties(dto, obj);
         BeanUtils.copyProperties(dto, obj);
         String roomUid = "LIVE-" + sysUser.getId() + "-" + now.getTime();
         String roomUid = "LIVE-" + sysUser.getId() + "-" + now.getTime();
@@ -705,6 +713,15 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
             //销毁直播间
             //销毁直播间
             pluginService.chatRoomDestroy(roomUid);
             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
             // 录制任务Id
             if (room.getServiceProvider().equals(TencentCloudLivePlugin.PLUGIN_NAME)) {
             if (room.getServiceProvider().equals(TencentCloudLivePlugin.PLUGIN_NAME)) {
 
 
@@ -894,11 +911,14 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
                 // 用户进入直播间,发送统计数据
                 // 用户进入直播间,发送统计数据
                 // sendLiveRoomStatMessage(userid, roomVo);
                 // sendLiveRoomStatMessage(userid, roomVo);
 
 
-                // 直播间统计数据
-                getRoomData(roomVo);
-                // 设置群组属性
-                setGroupDefinedData(roomVo,EGroupDefinedDataType.MEMBER_ONLINE,roomVo.getLookNum().toString());
-                setGroupDefinedData(roomVo,EGroupDefinedDataType.MEMBER_TOTAL,roomVo.getTotalLookNum().toString());
+                // 缓存JoinRoom用户信息到redis
+                RBucket<Object> bucket = redissonClient.getBucket(RedissonMessageService.LIVE_ROOM_MEMBER + roomUid);
+                if (!bucket.isExists()) {
+                    bucket.set(roomUid, 30, TimeUnit.MINUTES);
+                    // 发布删除缓存消息
+                    redissonMessageService.publish(RedissonMessageService.TOPIC_MESSAGE, roomUid);
+                }
+
                 log.debug("opsRoom>>>> user enter room, userState: {}", JSON.toJSONString(userState));
                 log.debug("opsRoom>>>> user enter room, userState: {}", JSON.toJSONString(userState));
                 return;
                 return;
             }
             }
@@ -971,6 +991,7 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
      */
      */
     private void sendLiveRoomStatMessage(String userid, ImLiveBroadcastRoomVo roomVo) {
     private void sendLiveRoomStatMessage(String userid, ImLiveBroadcastRoomVo roomVo) {
 
 
+        userid = setFromUserId(userid,roomVo);
         // 消息发送用户
         // 消息发送用户
         LiveRoomMessage.MessageUser messageUser = null;
         LiveRoomMessage.MessageUser messageUser = null;
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         SysUser sysUser = sysUserFeignService.queryUserInfo();
@@ -995,7 +1016,7 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
         LiveRoomMessage message = LiveRoomMessage.builder()
         LiveRoomMessage message = LiveRoomMessage.builder()
                 .isIncludeSender(1)
                 .isIncludeSender(1)
                 .objectName(LiveRoomMessage.STAT_SYNC)
                 .objectName(LiveRoomMessage.STAT_SYNC)
-                .fromUserId(roomVo.getSpeakerId().toString())
+                .fromUserId(userid)
                 .toChatRoomId(roomVo.getRoomUid())
                 .toChatRoomId(roomVo.getRoomUid())
                 .content(messageContent)
                 .content(messageContent)
                 .build();
                 .build();
@@ -1011,6 +1032,13 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
 
 
     }
     }
 
 
+    private String setFromUserId(String fromUserId, ImLiveBroadcastRoomVo roomVo) {
+        if (roomVo.getServiceProvider().equals(RongCloudLivePlugin.PLUGIN_NAME)) {
+            return fromUserId;
+        }
+        return roomVo.getSpeakerId().toString();
+    }
+
     /**
     /**
      * 直播间用户离开消息
      * 直播间用户离开消息
      * @param userid 用户id
      * @param userid 用户id
@@ -1018,6 +1046,7 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
      */
      */
     private void sendLiveRoomLoginOutMessage(String userid, ImLiveBroadcastRoomVo roomVo) {
     private void sendLiveRoomLoginOutMessage(String userid, ImLiveBroadcastRoomVo roomVo) {
 
 
+        String fromUserId = setFromUserId(userid, roomVo);
         // 消息发送用户
         // 消息发送用户
         LiveRoomMessage.MessageUser messageUser = null;
         LiveRoomMessage.MessageUser messageUser = null;
         SysUser sysUser = sysUserFeignService.queryUserById(Integer.parseInt(userid));
         SysUser sysUser = sysUserFeignService.queryUserById(Integer.parseInt(userid));
@@ -1033,14 +1062,14 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
 
 
         LiveRoomMessage.MessageContent messageContent = LiveRoomMessage.MessageContent
         LiveRoomMessage.MessageContent messageContent = LiveRoomMessage.MessageContent
                 .builder()
                 .builder()
-                .targetId(userid)
+                .targetId(sysUser.getId().toString())
                 .sendUserInfo(messageUser)
                 .sendUserInfo(messageUser)
                 .build();
                 .build();
 
 
         LiveRoomMessage message = LiveRoomMessage.builder()
         LiveRoomMessage message = LiveRoomMessage.builder()
                 .isIncludeSender(1)
                 .isIncludeSender(1)
-                .objectName(LiveRoomMessage.LEAVE)
-                .fromUserId(roomVo.getSpeakerId().toString())
+                .objectName(LiveRoomMessage.LOOKER_LOGIN_OUT)
+                .fromUserId(fromUserId)
                 .toChatRoomId(roomVo.getRoomUid())
                 .toChatRoomId(roomVo.getRoomUid())
                 .content(messageContent)
                 .content(messageContent)
                 .build();
                 .build();
@@ -1079,9 +1108,14 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
         // 直播间统计数据
         // 直播间统计数据
         getRoomData(roomVo);
         getRoomData(roomVo);
 
 
-        // 设置群组属性
-        setGroupDefinedData(roomVo,EGroupDefinedDataType.MEMBER_ONLINE,roomVo.getLookNum().toString());
-        setGroupDefinedData(roomVo,EGroupDefinedDataType.MEMBER_TOTAL,roomVo.getTotalLookNum().toString());
+        String userId = setFromUserId(fromUserId.toString(),roomVo);
+        // 缓存JoinRoom用户信息到redis
+        RBucket<Object> bucket = redissonClient.getBucket(RedissonMessageService.LIVE_ROOM_MEMBER + roomUid);
+        if (!bucket.isExists()) {
+            bucket.set(roomUid, 30, TimeUnit.MINUTES);
+            // 发布删除缓存消息
+            redissonMessageService.publish(RedissonMessageService.TOPIC_MESSAGE, roomUid);
+        }
 
 
         // 消息发送用户
         // 消息发送用户
         LiveRoomMessage.MessageUser messageUser = null;
         LiveRoomMessage.MessageUser messageUser = null;
@@ -1108,7 +1142,7 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
         LiveRoomMessage message = LiveRoomMessage.builder()
         LiveRoomMessage message = LiveRoomMessage.builder()
                 .isIncludeSender(1)
                 .isIncludeSender(1)
                 .objectName(LiveRoomMessage.MEMBER_COUNT)
                 .objectName(LiveRoomMessage.MEMBER_COUNT)
-                .fromUserId(roomVo.getSpeakerId().toString())
+                .fromUserId(userId)
                 .toChatRoomId(roomUid)
                 .toChatRoomId(roomUid)
                 .content(messageContent)
                 .content(messageContent)
                 .build();
                 .build();
@@ -1271,6 +1305,31 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
         return roomVo;
         return roomVo;
     }
     }
 
 
+
+    @Override
+    public void setGroupMemberDefinedData(ImLiveBroadcastRoomVo roomVo, Integer onlineUser, Integer totalUser) {
+        List<TencentRequest.ChatRoomGroupDefinedData> appDefinedData = new ArrayList<>();
+        appDefinedData.add(TencentRequest.ChatRoomGroupDefinedData.builder()
+                                                                  .key(EGroupDefinedDataType.MEMBER_ONLINE.getCode())
+                                                                  .value(onlineUser.toString())
+                                                                  .build());
+        appDefinedData.add(TencentRequest.ChatRoomGroupDefinedData.builder()
+                                                                  .key(EGroupDefinedDataType.MEMBER_TOTAL.getCode())
+                                                                  .value(totalUser.toString())
+                                                                  .build());
+        try {
+            livePluginContext.getPluginService(roomVo.getServiceProvider())
+                             .chatRoomGroupDefinedData(TencentRequest.ChatRoomGroup.builder()
+                                                                                   .groupId(roomVo.getRoomUid())
+                                                                                   .appDefinedData(appDefinedData)
+                                                                                   .build());
+            log.info("设置直播群观看人数 roomUid:{}, data {}",roomVo.getRoomUid(), JSONObject.toJSONString(appDefinedData));
+        } catch (Exception e) {
+            log.error("设置直播群观看人数失败", e);
+            throw new BizException("设置直播群观看人数失败");
+        }
+    }
+
     private void setGroupDefinedData(ImLiveBroadcastRoomVo roomVo, EGroupDefinedDataType type, String value) {
     private void setGroupDefinedData(ImLiveBroadcastRoomVo roomVo, EGroupDefinedDataType type, String value) {
         List<TencentRequest.ChatRoomGroupDefinedData> appDefinedData = new ArrayList<>();
         List<TencentRequest.ChatRoomGroupDefinedData> appDefinedData = new ArrayList<>();
         appDefinedData.add(TencentRequest.ChatRoomGroupDefinedData.builder()
         appDefinedData.add(TencentRequest.ChatRoomGroupDefinedData.builder()
@@ -1390,6 +1449,7 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
             return;
             return;
         }
         }
 
 
+        String fromUserid = setFromUserId(userId.toString(),roomVo);
         // 消息发送用户
         // 消息发送用户
         LiveRoomMessage.MessageUser messageUser = null;
         LiveRoomMessage.MessageUser messageUser = null;
         SysUser sysUser = sysUserFeignService.queryUserById(userId);
         SysUser sysUser = sysUserFeignService.queryUserById(userId);
@@ -1412,7 +1472,7 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
         LiveRoomMessage message = LiveRoomMessage.builder()
         LiveRoomMessage message = LiveRoomMessage.builder()
                                                  .isIncludeSender(1)
                                                  .isIncludeSender(1)
                                                  .objectName(LiveRoomMessage.WELCOME)
                                                  .objectName(LiveRoomMessage.WELCOME)
-                                                 .fromUserId(roomVo.getSpeakerId().toString())
+                                                 .fromUserId(fromUserid)
                                                  .toChatRoomId(roomUid)
                                                  .toChatRoomId(roomUid)
                                                  .content(messageContent)
                                                  .content(messageContent)
                                                  .build();
                                                  .build();
@@ -2529,15 +2589,11 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
     @Override
     @Override
     @Transactional
     @Transactional
     public int syncLikeCount(String roomUid) {
     public int syncLikeCount(String roomUid) {
-        ImLiveBroadcastRoom room = getById(roomUid);
+        ImLiveBroadcastRoomVo room = getImLiveBroadcastRoomVo(roomUid);
         if (room == null) {
         if (room == null) {
             return 0;
             return 0;
         }
         }
-        ImLiveBroadcastRoomDetailVo imLiveBroadcastRoomDetailVo = liveBroadcastRoomDataService.getDao()
-                                                                                              .queryByRoomUid(roomUid);
-        if (imLiveBroadcastRoomDetailVo == null) {
-            return 0;
-        }
+
         if (room.getServiceProvider().equals(RongCloudLivePlugin.PLUGIN_NAME)) {
         if (room.getServiceProvider().equals(RongCloudLivePlugin.PLUGIN_NAME)) {
             //点赞数
             //点赞数
             Object like = redissonClient.getBucket(LIVE_ROOM_LIKE.replace(ROOM_UID, roomUid)).get();
             Object like = redissonClient.getBucket(LIVE_ROOM_LIKE.replace(ROOM_UID, roomUid)).get();
@@ -2565,8 +2621,18 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
 
 
         if (first.isPresent()) {
         if (first.isPresent()) {
             int i = Integer.parseInt(first.get().getValue());
             int i = Integer.parseInt(first.get().getValue());
-            imLiveBroadcastRoomDetailVo.setTotalLikeNum(i);
-            updateById(room);
+
+            ImLiveBroadcastRoomData one = liveBroadcastRoomDataService.lambdaQuery()
+                                                                      .eq(ImLiveBroadcastRoomData::getRoomUid, roomUid)
+                                                                      .last("limit 1")
+                                                                      .one();
+            if (one != null) {
+                ImLiveBroadcastRoomData imLiveBroadcastRoomData = new ImLiveBroadcastRoomData();
+                imLiveBroadcastRoomData.setId(one.getId());
+                imLiveBroadcastRoomData.setLikeNum(i);
+                liveBroadcastRoomDataService.updateById(imLiveBroadcastRoomData);
+            }
+
             return i;
             return i;
         }
         }
         return 0;
         return 0;

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

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.service.impl;
 package com.ym.mec.biz.service.impl;
 
 
+import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -103,6 +104,7 @@ public class ImLiveRoomReservationServiceImpl extends ServiceImpl<ImLiveRoomRese
         for (ImLiveRoomReservation obj : list) {
         for (ImLiveRoomReservation obj : list) {
             pushStudentList.put(obj.getUserId(), obj.getUserId().toString());
             pushStudentList.put(obj.getUserId(), obj.getUserId().toString());
         }
         }
+        log.debug("ImLiveRoomReservation push >>> RECEIVES: {}", JSON.toJSONString(pushStudentList));
         //推送状态
         //推送状态
         AtomicInteger pushState = new AtomicInteger(0);
         AtomicInteger pushState = new AtomicInteger(0);
         try {
         try {

+ 1 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupPaymentCalenderDetailServiceImpl.java

@@ -518,6 +518,7 @@ public class MusicGroupPaymentCalenderDetailServiceImpl extends BaseServiceImpl<
             musicGroupPaymentCalenderDetail.setPaymentStatus(PAID_COMPLETED);
             musicGroupPaymentCalenderDetail.setPaymentStatus(PAID_COMPLETED);
             musicGroupPaymentCalenderDetail.setPayTime(date);
             musicGroupPaymentCalenderDetail.setPayTime(date);
             musicGroupPaymentCalenderDetail.setPaymentOrderId(studentPaymentOrder.getId());
             musicGroupPaymentCalenderDetail.setPaymentOrderId(studentPaymentOrder.getId());
+            musicGroupPaymentCalenderDetailDao.update(musicGroupPaymentCalenderDetail);
         }
         }
         //保存、更新云教练缴费项目预收
         //保存、更新云教练缴费项目预收
         operatingReportCloudService.updateSet(musicGroupPaymentCalender,musicGroupPaymentCalenderDetail.getExpectMemberAmount());
         operatingReportCloudService.updateSet(musicGroupPaymentCalender,musicGroupPaymentCalenderDetail.getExpectMemberAmount());

+ 0 - 4
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentPaymentOrderDetailServiceImpl.java

@@ -768,10 +768,6 @@ public class StudentPaymentOrderDetailServiceImpl extends BaseServiceImpl<Long,
                     .reduce(BigDecimal.ZERO, BigDecimal::add);
                     .reduce(BigDecimal.ZERO, BigDecimal::add);
             cloudTeacherOrderService.addOrderDetail2CloudTeacher(studentPaymentOrder, cloudTeacherFee);
             cloudTeacherOrderService.addOrderDetail2CloudTeacher(studentPaymentOrder, cloudTeacherFee);
         }
         }
-//        if(BigDecimal.ZERO.compareTo(paymentCalenderDetail.getActualAmount()) < 0){
-//            musicGroupPaymentCalenderDetailService.update(paymentCalenderDetail);
-//            studentMusicCourseFeeService.addActualPrice(userId,musicGroupId,paymentCalenderDetail.getActualAmount());
-//        }
         studentRegistrationDao.update(studentRegistration);
         studentRegistrationDao.update(studentRegistration);
     }
     }
 
 

+ 11 - 4
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysMusicCompareRecordServiceImpl.java

@@ -143,12 +143,13 @@ public class SysMusicCompareRecordServiceImpl extends BaseServiceImpl<Long, SysM
 
 
 	@Override
 	@Override
 	@Transactional
 	@Transactional
-	public void saveMusicCompareData(SysMusicCompareRecord sysMusicCompareRecord) {
+	public void saveMusicCompareData(SysMusicCompareRecord sysMusicCompareRecord,Integer campId) {
 		
 		
 		Integer userId = sysMusicCompareRecord.getUserId();
 		Integer userId = sysMusicCompareRecord.getUserId();
 		
 		
 		sysMusicCompareRecordDao.update(sysMusicCompareRecord);
 		sysMusicCompareRecordDao.update(sysMusicCompareRecord);
 		studentDao.addStudentCloudStudySequenceDays(userId);
 		studentDao.addStudentCloudStudySequenceDays(userId);
+        updateCampData(sysMusicCompareRecord,campId);
 		sysMusicCompareWeekDataService
 		sysMusicCompareWeekDataService
 				.updateUserWeekTrainData(userId, LocalDate.now().with(DateUtil.weekFields.dayOfWeek(), DayOfWeek.MONDAY.getValue()));
 				.updateUserWeekTrainData(userId, LocalDate.now().with(DateUtil.weekFields.dayOfWeek(), DayOfWeek.MONDAY.getValue()));
 	}
 	}
@@ -511,11 +512,19 @@ public class SysMusicCompareRecordServiceImpl extends BaseServiceImpl<Long, SysM
      * @param campId 训练营id
      * @param campId 训练营id
      */
      */
     @Override
     @Override
+    @Transactional
     public boolean insert(SysMusicCompareRecord record, Integer campId) {
     public boolean insert(SysMusicCompareRecord record, Integer campId) {
         this.insert(record);
         this.insert(record);
 
 
+        updateCampData(record, campId);
+
+        return true;
+    }
+
+    private void updateCampData(SysMusicCompareRecord record, Integer campId) {
+
         if (campId == null) {
         if (campId == null) {
-            return true;
+            return;
         }
         }
         // 保存训练营评测记录
         // 保存训练营评测记录
         int i = userMusicCompareCampDayDataDao.updateCampDayData(record.getUserId(), campId, record.getPlayTime());
         int i = userMusicCompareCampDayDataDao.updateCampDayData(record.getUserId(), campId, record.getPlayTime());
@@ -528,7 +537,5 @@ public class SysMusicCompareRecordServiceImpl extends BaseServiceImpl<Long, SysM
             campDayData.setTrainTime(record.getPlayTime());
             campDayData.setTrainTime(record.getPlayTime());
             userMusicCompareCampDayDataDao.insert(campDayData);
             userMusicCompareCampDayDataDao.insert(campDayData);
         }
         }
-
-        return true;
     }
     }
 }
 }

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

@@ -93,7 +93,7 @@
     <select id="queryMemberNum" resultType="com.ym.mec.biz.dal.dto.RoomMemberNumDto">
     <select id="queryMemberNum" resultType="com.ym.mec.biz.dal.dto.RoomMemberNumDto">
         select room_uid_ as roomUid,
         select room_uid_ as roomUid,
         count(1) as totalNum ,
         count(1) as totalNum ,
-        count(if(online_status_ = 1 and live_room_status_ = 1,1,0)) as onlineNum
+        sum(if(online_status_ = 1 and live_room_status_ = 1,1,0)) as onlineNum
         from im_live_broadcast_room_member
         from im_live_broadcast_room_member
         where room_uid_ = #{roomUid}
         where room_uid_ = #{roomUid}
         group by room_uid_
         group by room_uid_

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

@@ -8,6 +8,7 @@ import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
 import org.springframework.cloud.client.loadbalancer.LoadBalanced;
 import org.springframework.cloud.client.loadbalancer.LoadBalanced;
 import org.springframework.cloud.openfeign.EnableFeignClients;
 import org.springframework.cloud.openfeign.EnableFeignClients;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.ComponentScan;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.context.annotation.EnableAspectJAutoProxy;
 import org.springframework.context.annotation.EnableAspectJAutoProxy;
 import org.springframework.scheduling.annotation.EnableAsync;
 import org.springframework.scheduling.annotation.EnableAsync;
@@ -19,6 +20,7 @@ import org.springframework.web.client.RestTemplate;
 @SpringBootApplication
 @SpringBootApplication
 @EnableFeignClients("com.ym.mec")
 @EnableFeignClients("com.ym.mec")
 @MapperScan("com.ym.mec.biz.dal.dao")
 @MapperScan("com.ym.mec.biz.dal.dao")
+@ComponentScan(basePackages = {"com.ym", "com.mec.redisson"})
 @EnableScheduling
 @EnableScheduling
 @EnableDiscoveryClient
 @EnableDiscoveryClient
 @Configuration
 @Configuration

+ 9 - 0
mec-im/src/main/java/com/ym/controller/UserController.java

@@ -81,6 +81,15 @@ public class UserController {
         return succeed();
         return succeed();
     }
     }
 
 
+
+
+    @PostMapping(value = "/syncLikeCount")
+    public Object syncLikeCount(String roomUid) {
+        log.info("statusImUser >>>>> : {}", JSONObject.toJSONString(roomUid));
+        imLiveBroadcastRoomService.syncLikeCount(roomUid);
+        return succeed();
+    }
+
     @ApiOperation("腾讯im 回调接口")
     @ApiOperation("腾讯im 回调接口")
     @PostMapping(value = "/tencentImCallback")
     @PostMapping(value = "/tencentImCallback")
     public TencentImCallbackResult tencentImCallback(@RequestBody String body, HttpServletRequest request) {
     public TencentImCallbackResult tencentImCallback(@RequestBody String body, HttpServletRequest request) {

+ 1 - 1
mec-student/src/main/java/com/ym/mec/student/StudentApplication.java

@@ -22,7 +22,7 @@ import com.ym.mec.common.filters.EmojiEncodingFilter;
 @EnableDiscoveryClient
 @EnableDiscoveryClient
 @EnableFeignClients("com.ym.mec")
 @EnableFeignClients("com.ym.mec")
 @MapperScan(basePackages = {"com.ym.mec.biz.**.dao", "com.yonge.datasource.dao"})
 @MapperScan(basePackages = {"com.ym.mec.biz.**.dao", "com.yonge.datasource.dao"})
-@ComponentScan(basePackages = {"com.ym.mec", "com.yonge.log", "com.yonge.datasource"})
+@ComponentScan(basePackages = {"com.ym.mec", "com.yonge.log", "com.mec.redisson", "com.yonge.datasource"})
 @Configuration
 @Configuration
 @EnableSwagger2Doc
 @EnableSwagger2Doc
 @EnableAsync
 @EnableAsync

+ 1 - 1
mec-teacher/src/main/java/com/ym/mec/teacher/TeacherApplication.java

@@ -22,7 +22,7 @@ import com.ym.mec.common.filters.EmojiEncodingFilter;
 @EnableDiscoveryClient
 @EnableDiscoveryClient
 @EnableFeignClients("com.ym.mec")
 @EnableFeignClients("com.ym.mec")
 @MapperScan(basePackages = {"com.ym.mec.biz.**.dao", "com.yonge.datasource.dao"})
 @MapperScan(basePackages = {"com.ym.mec.biz.**.dao", "com.yonge.datasource.dao"})
-@ComponentScan(basePackages = { "com.ym.mec", "org.snaker.engine", "com.yonge.log", "com.yonge.datasource"})
+@ComponentScan(basePackages = { "com.ym.mec", "org.snaker.engine", "com.yonge.log", "com.mec.redisson", "com.yonge.datasource"})
 @Configuration
 @Configuration
 @EnableSwagger2Doc
 @EnableSwagger2Doc
 @EnableAsync
 @EnableAsync

+ 1 - 1
mec-web/src/main/java/com/ym/mec/web/WebApplication.java

@@ -22,7 +22,7 @@ import com.ym.mec.common.filters.EmojiEncodingFilter;
 @EnableDiscoveryClient
 @EnableDiscoveryClient
 @EnableFeignClients("com.ym.mec")
 @EnableFeignClients("com.ym.mec")
 @MapperScan(basePackages = {"com.ym.mec.biz.**.dao", "com.yonge.datasource.dao"})
 @MapperScan(basePackages = {"com.ym.mec.biz.**.dao", "com.yonge.datasource.dao"})
-@ComponentScan(basePackages = {"com.ym.mec", "com.yonge.log"})
+@ComponentScan(basePackages = {"com.ym.mec", "com.yonge.log", "com.mec.redisson"})
 @Configuration
 @Configuration
 @EnableSwagger2Doc
 @EnableSwagger2Doc
 @EnableAsync
 @EnableAsync