فهرست منبع

Merge branch 'dev_20230222_live' into master_saas

liujunchi 2 سال پیش
والد
کامیت
bc86eb8d29

+ 28 - 5
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImLiveBroadcastRoomServiceImpl.java

@@ -16,6 +16,7 @@ import com.microsvc.toolkit.middleware.live.message.LiveRoomMessage;
 import com.microsvc.toolkit.middleware.live.message.LiveRoomUser;
 import com.microsvc.toolkit.middleware.live.message.RTCRequest;
 import com.microsvc.toolkit.middleware.live.message.RTCRoom;
+import com.microsvc.toolkit.middleware.live.message.TencentRequest;
 import com.microsvc.toolkit.middleware.live.message.TencentWrapper;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
@@ -1151,6 +1152,9 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
                 .eq(ImLiveBroadcastRoom::getSpeakerId, Integer.parseInt(userid))
                 .update(room);
 
+        // 设置直播群组自定义数据
+        setGroupDefinedData(roomVo,false);
+
         return true;
     }
 
@@ -1195,9 +1199,29 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
                 .set(ImLiveBroadcastRoom::getSpeakerStatus, 1)
                 .update();
 
+        // 设置直播群组自定义数据
+        setGroupDefinedData(roomVo,true);
+
         return roomVo;
     }
 
+    private void setGroupDefinedData( ImLiveBroadcastRoomVo roomVo,Boolean onlineStatus) {
+        List<TencentRequest.ChatRoomGroupDefinedData> appDefinedData = new ArrayList<>();
+        appDefinedData.add(TencentRequest.ChatRoomGroupDefinedData.builder()
+                                                                  .key("ANCHOR_STATUS")
+                                                                  .value(onlineStatus?"ONLINE":"OFFLINE")
+                                                                  .build());
+        try {
+            livePluginContext.getPluginService(roomVo.getServiceProvider())
+                             .chatRoomGroupDefinedData(TencentRequest.ChatRoomGroup.builder()
+                                                                                   .groupId(roomVo.getRoomUid())
+                                                                                   .appDefinedData(appDefinedData)
+                                                                                   .build());
+        } catch (Exception e) {
+            log.error("设置直播群配置失败", e);
+        }
+    }
+
     /**
      * 进入房间-修改用户对应的房间号信息
      *
@@ -1814,8 +1838,6 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
     /**
      * 导出直播间预约用户信息
      *
-     * @param query
-     * @param response
      */
     public void exportReservationRoomUser(RoomReservationUserSearch query, HttpServletResponse response) throws IOException {
         //训练营详情-查询条件时间设置
@@ -1850,7 +1872,7 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
     @Override
     public PageInfo<LiveRoomGoodsOrderVo> queryLiveRoomGoodsOrderList(LiveRoomGoodsOrderQueryInfo queryInfo) {
         PageInfo<LiveRoomGoodsOrderVo> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
-        Map<String, Object> params = new HashMap<String, Object>();
+        Map<String, Object> params = new HashMap<>();
         MapUtil.populateMap(params, queryInfo);
 
         List<LiveRoomGoodsOrderVo> dataList = null;
@@ -1912,7 +1934,6 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
     /**
      * 直播群成员在线状态回调处理
      *
-     * @param callbackOnMemberStateChange
      */
     @Override
     @Transactional
@@ -1922,7 +1943,7 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
             return;
         }
 
-        Integer onlineStatus = callbackOnMemberStateChange.getEventType().equals("Online")?1:0;
+        int onlineStatus = callbackOnMemberStateChange.getEventType().equals("Online")?1:0;
 
         // 用户id
         if (CollectionUtils.isEmpty(callbackOnMemberStateChange.getMemberList())) {
@@ -1962,6 +1983,7 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
     }
 
     @Override
+    @Transactional
     public void callbackAfterMemberExit(TencentData.CallbackAfterMemberExit callbackAfterMemberExit) {
         if (callbackAfterMemberExit == null) {
             return;
@@ -1994,6 +2016,7 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
     }
 
     @Override
+    @Transactional
     public void callbackAfterNewMemberJoin(TencentData.CallbackAfterNewMemberJoin callbackAfterNewMemberJoin) {
         if (callbackAfterNewMemberJoin == null) {
             return;

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

@@ -101,7 +101,7 @@ public class ImLiveRoomBlackServiceImpl extends ServiceImpl<ImLiveRoomBlackDao,
             //调用融云方法加入禁言
             LivePluginService pluginService = livePluginContext.getPluginService(roomVo.getServiceProvider());
             try {
-                pluginService.chatRoomUserGagCreate(userIdStr, roomUid, -1);
+                pluginService.chatRoomUserGagCreate(userIdStr, roomUid, -1L);
             } catch (Exception e) {
                 throw new RuntimeException(e);
             }

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

@@ -55,7 +55,7 @@
             )
         </if>
         <if test="param.onlineStatus != null">
-            AND a.online_status_ = #{param.onlineStatus}
+            AND (a.online_status_ = #{param.onlineStatus} and a.live_room_status_ = 1)
         </if>
         <if test="param.whetherMicStatus != null">
             and a.whether_mic_status_ = #{param.whetherMicStatus}

+ 21 - 2
mec-im/src/main/java/com/ym/controller/UserController.java

@@ -2,6 +2,9 @@ package com.ym.controller;
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
+import com.microsvc.toolkit.middleware.live.LivePluginContext;
+import com.microsvc.toolkit.middleware.live.LivePluginService;
+import com.microsvc.toolkit.middleware.live.impl.TencentCloudLivePlugin;
 import com.ym.common.BaseResponse;
 import com.ym.mec.biz.dal.dto.TencentData;
 import com.ym.mec.biz.dal.dto.TencentImCallbackResult;
@@ -31,6 +34,8 @@ public class UserController {
     private ImLiveBroadcastRoomService imLiveBroadcastRoomService;
     @Autowired
     private LiveRoomService liveRoomService;
+  @Autowired
+  private LivePluginContext livePluginContext;
 
     @RequestMapping(value = "/register", method = RequestMethod.POST)
     public Object register(@RequestBody UserModel userModel) throws Exception {
@@ -60,9 +65,23 @@ public class UserController {
     public TencentImCallbackResult tencentImCallback(@RequestBody String body, HttpServletRequest request) {
         log.info("tencentImCallback body:{}", body);
 
-        log.info("tencentImCallback request param:{}", JSON.toJSONString(request.getParameterMap()));
+      LivePluginService pluginService = livePluginContext.getPluginService(TencentCloudLivePlugin.PLUGIN_NAME);
+      String appKey = pluginService.getLiveRoomConfig().getAppKey();
 
-        String clientIP = request.getParameter("ClientIP");
+      log.info("tencentImCallback request param:{}", JSON.toJSONString(request.getParameterMap()));
+
+      String sdkAppid = request.getParameter("SdkAppid");
+      List<String> sdkList = JSON.parseArray(sdkAppid, String.class);
+      if (sdkList == null || sdkList.size() == 0) {
+        log.error("tencentImCallback sdkAppid is null");
+        return new TencentImCallbackResult();
+      }
+      if (!sdkList.contains(appKey)) {
+        log.error("tencentImCallback sdkAppid is not match");
+        return new TencentImCallbackResult();
+      }
+
+      String clientIP = request.getParameter("ClientIP");
         String optPlatform = request.getParameter("OptPlatform");
 
 

+ 10 - 0
mec-teacher/src/main/java/com/ym/mec/teacher/controller/TeacherImLiveBroadcastRoomController.java

@@ -59,6 +59,8 @@ public class TeacherImLiveBroadcastRoomController extends BaseController {
             @ApiImplicitParam(name = "endTime", dataType = "String", value = "结束时间"),
             @ApiImplicitParam(name = "popularize", dataType = "Integer", value = "是否在首页推广 0否 1是"),
             @ApiImplicitParam(name = "speakerId", dataType = "Integer", value = "老师ID"),
+            @ApiImplicitParam(name = "clientType", dataType = "String", value = "用户类型 TEACHER 老师 EDUCATION 教务端"),
+            @ApiImplicitParam(name = "sort", dataType = "String", value = "不传是默认web端排序  1:直播中--未开始--已结束(状态相同时,根据直播时间倒序)"),
             @ApiImplicitParam(name = "page", dataType = "Integer", value = "页数"),
             @ApiImplicitParam(name = "rows", dataType = "Integer", value = "每页数量"),
     })
@@ -178,6 +180,14 @@ public class TeacherImLiveBroadcastRoomController extends BaseController {
     }
 
     @ApiOperation("分页查询直播间人员列表")
+    @ApiImplicitParams({
+      @ApiImplicitParam(name = "search", dataType = "String", value = "模糊搜索 学员编号姓名"),
+      @ApiImplicitParam(name = "roomUid", dataType = "String", value = "房间uid"),
+      @ApiImplicitParam(name = "onlineStatus", dataType = "String ", value = "0:离线 1:在线  不传是全部"),
+      @ApiImplicitParam(name = "whetherMicStatus", dataType = "String", value = "连麦状态 0:未申请1:申请连麦中2:连麦中"),
+      @ApiImplicitParam(name = "page", dataType = "Integer", value = "页数"),
+      @ApiImplicitParam(name = "rows", dataType = "Integer", value = "每页数量"),
+    })
     @PostMapping("/queryRoomMember")
     public HttpResponseResult<PageInfo<ImLiveBroadcastRoomMemberVo>> queryRoomMember(@RequestBody Map<String, Object> param) {
         return succeed(imLiveBroadcastRoomMemberService.queryRoomMember(param));

+ 2 - 0
mec-teacher/src/main/java/com/ym/mec/teacher/controller/TeacherImLiveBroadcastRoomMemberController.java

@@ -46,6 +46,8 @@ public class TeacherImLiveBroadcastRoomMemberController extends BaseController {
     @ApiImplicitParams({
             @ApiImplicitParam(name = "search", dataType = "String", value = "模糊搜索 学员编号姓名"),
             @ApiImplicitParam(name = "roomUid", dataType = "String", value = "房间uid"),
+            @ApiImplicitParam(name = "onlineStatus", dataType = "String ", value = "0:离线 1:在线  不传是全部"),
+            @ApiImplicitParam(name = "whetherMicStatus", dataType = "String", value = "连麦状态 0:未申请1:申请连麦中2:连麦中"),
             @ApiImplicitParam(name = "page", dataType = "Integer", value = "页数"),
             @ApiImplicitParam(name = "rows", dataType = "Integer", value = "每页数量"),
     })

+ 2 - 2
mec-web/src/main/java/com/ym/mec/web/controller/ImLiveBroadcastRoomController.java

@@ -59,8 +59,8 @@ public class ImLiveBroadcastRoomController extends BaseController {
             @ApiImplicitParam(name = "startTime", dataType = "String", value = "开始时间"),
             @ApiImplicitParam(name = "endTime", dataType = "String", value = "结束时间"),
             @ApiImplicitParam(name = "popularize", dataType = "Integer", value = "是否在首页推广 0否 1是"),
-            @ApiImplicitParam(name = "sort", dataType = "String", value = "用户类型 TEACHER 老师 EDUCATION 教务端"),
-            @ApiImplicitParam(name = "sortType", dataType = "String", value = "不传是默认web端排序  1:直播中--未开始--已结束(状态相同时,根据直播时间倒序)"),
+            @ApiImplicitParam(name = "clientType", dataType = "String", value = "用户类型 TEACHER 老师 EDUCATION 教务端"),
+            @ApiImplicitParam(name = "sort", dataType = "String", value = "不传是默认web端排序  1:直播中--未开始--已结束(状态相同时,根据直播时间倒序)"),
             @ApiImplicitParam(name = "page", dataType = "Integer", value = "页数"),
             @ApiImplicitParam(name = "rows", dataType = "Integer", value = "每页数量"),
     })