Sfoglia il codice sorgente

Merge remote-tracking branch 'origin/test_saas_hgw' into test_saas_hgw

zouxuan 3 anni fa
parent
commit
850a0c74dc

+ 22 - 21
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/config/ResourceServerConfig.java

@@ -1,5 +1,7 @@
 package com.ym.mec.auth.config;
 
+import com.ym.mec.common.security.BaseAccessDeniedHandler;
+import com.ym.mec.common.security.BaseAuthenticationEntryPoint;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.security.config.annotation.web.builders.HttpSecurity;
@@ -7,9 +9,6 @@ import org.springframework.security.oauth2.config.annotation.web.configuration.E
 import org.springframework.security.oauth2.config.annotation.web.configuration.ResourceServerConfigurerAdapter;
 import org.springframework.security.oauth2.config.annotation.web.configurers.ResourceServerSecurityConfigurer;
 
-import com.ym.mec.common.security.BaseAccessDeniedHandler;
-import com.ym.mec.common.security.BaseAuthenticationEntryPoint;
-
 /**
  * 资源服务器配置
  */
@@ -17,23 +16,25 @@ import com.ym.mec.common.security.BaseAuthenticationEntryPoint;
 @EnableResourceServer
 public class ResourceServerConfig extends ResourceServerConfigurerAdapter {
 
-	@Autowired
-	private BaseAccessDeniedHandler baseAccessDeniedHandler;
-
-	@Autowired
-	private BaseAuthenticationEntryPoint baseAuthenticationEntryPoint;
-
-	@Override
-	public void configure(HttpSecurity http) throws Exception {
-		http.csrf().disable().exceptionHandling().accessDeniedHandler(baseAccessDeniedHandler).authenticationEntryPoint(baseAuthenticationEntryPoint).and()
-				.authorizeRequests().antMatchers("/task/**", "/user/updatePassword", "/user/noAuth/queryUserByPhone",
-				"/user/queryUserByPhone", "/user/add", "/user/queryUserById/*","/queryUserInfo").hasIpAddress("0.0.0.0/0")
-				.anyRequest().authenticated().and().httpBasic();
-	}
-
-	@Override
-	public void configure(ResourceServerSecurityConfigurer resources) throws Exception {
-		resources.authenticationEntryPoint(baseAuthenticationEntryPoint).accessDeniedHandler(baseAccessDeniedHandler);
-	}
+    @Autowired
+    private BaseAccessDeniedHandler baseAccessDeniedHandler;
+
+    @Autowired
+    private BaseAuthenticationEntryPoint baseAuthenticationEntryPoint;
+
+    @Override
+    public void configure(HttpSecurity http) throws Exception {
+        http.csrf().disable().exceptionHandling().accessDeniedHandler(baseAccessDeniedHandler).authenticationEntryPoint(baseAuthenticationEntryPoint).and()
+                .authorizeRequests().antMatchers(
+                        "/task/**", "/user/updatePassword", "/user/noAuth/queryUserByPhone",
+                        "/user/queryUserByPhone", "/user/queryClient", "/user/add", "/user/queryUserById/*",
+                        "/queryUserInfo").hasIpAddress("0.0.0.0/0")
+                .anyRequest().authenticated().and().httpBasic();
+    }
+
+    @Override
+    public void configure(ResourceServerSecurityConfigurer resources) throws Exception {
+        resources.authenticationEntryPoint(baseAuthenticationEntryPoint).accessDeniedHandler(baseAccessDeniedHandler);
+    }
 
 }

+ 2 - 0
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/service/SysUserService.java

@@ -121,4 +121,6 @@ public interface SysUserService extends BaseService<Integer, SysUser> {
     Integer getLesseeOrganId();
 
     List<SysUser> queryLikeByPhoneOrName(String search);
+
+    String queryClientByPhone(String phone);
 }

+ 9 - 0
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/service/impl/SysUserServiceImpl.java

@@ -180,4 +180,13 @@ public class SysUserServiceImpl extends BaseServiceImpl<Integer, SysUser> implem
         return sysUserDao.queryLikeByPhoneOrName(search);
     }
 
+    @Override
+    public String queryClientByPhone(String phone){
+        SysUser sysUser = queryByPhone(phone);
+        if (sysUser == null) {
+            return null;
+        }
+        return sysUser.getUserType();
+    }
+
 }

+ 5 - 0
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/web/controller/UserController.java

@@ -364,4 +364,9 @@ public class UserController extends BaseController {
         return succeed(sysUserService.queryLikeByPhoneOrName(search));
     }
 
+    @ApiOperation(value = "通过手机号查询client")
+    @GetMapping(value = "/queryClient")
+    public Object queryClientByPhone(String phone) {
+        return succeed(sysUserService.queryClientByPhone(phone));
+    }
 }

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

@@ -18,7 +18,7 @@ import java.util.Map;
  */
 public interface ImLiveBroadcastRoomDao extends BaseMapper<ImLiveBroadcastRoom> {
 
-    <T> IPage<T> queryPage(Page<T> page, @Param("param") Map<String, Object> param);
+    IPage<ImLiveBroadcastRoomVo> queryPage(Page<ImLiveBroadcastRoomVo> page, @Param("param") Map<String, Object> param);
 
     List<ImLiveBroadcastRoomVo> queryPage(@Param("param") Map<String, Object> param);
 

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ImLiveBroadcastRoom.java

@@ -64,7 +64,7 @@ public class ImLiveBroadcastRoom implements Serializable {
     private Integer liveState;
 
     @TableField("room_state_")
-    @ApiModelProperty(value = "房间状态 0正常 1已删除")
+    @ApiModelProperty(value = "房间状态 0正常 1已删除 2销毁")
     private Integer roomState;
 
     @TableField("created_by_")

+ 64 - 11
mec-biz/src/main/java/com/ym/mec/biz/dal/vo/ImLiveBroadcastRoomVo.java

@@ -57,7 +57,7 @@ public class ImLiveBroadcastRoomVo implements Serializable {
     private Integer roomState;
 
     @ApiModelProperty(value = "创建人")
-    private Integer createdByName;
+    private String createdByName;
 
     @ApiModelProperty(value = "预热模版")
     private String preTemplate;
@@ -65,6 +65,19 @@ public class ImLiveBroadcastRoomVo implements Serializable {
     @ApiModelProperty(value = "房间配置json格式-是否允许点赞-是否允许聊天互动-是否允许保存直播回放")
     private String roomConfig;
 
+    @ApiModelProperty(value = "imToken")
+    private String imToken;
+
+    @ApiModelProperty(value = "播出端")
+    private String os = "pc";
+
+    @ApiModelProperty(value = "点赞数")
+    private Integer likeNum;
+    @ApiModelProperty(value = "当前观看人数")
+    private Integer lookNum;
+    @ApiModelProperty(value = "累计观看人数")
+    private Integer totalLookNum;
+
     public Integer getId() {
         return id;
     }
@@ -89,6 +102,14 @@ public class ImLiveBroadcastRoomVo implements Serializable {
         this.tenantName = tenantName;
     }
 
+    public String getTenantLogo() {
+        return tenantLogo;
+    }
+
+    public void setTenantLogo(String tenantLogo) {
+        this.tenantLogo = tenantLogo;
+    }
+
     public String getRoomUid() {
         return roomUid;
     }
@@ -129,6 +150,14 @@ public class ImLiveBroadcastRoomVo implements Serializable {
         this.speakerName = speakerName;
     }
 
+    public String getSpeakerPic() {
+        return speakerPic;
+    }
+
+    public void setSpeakerPic(String speakerPic) {
+        this.speakerPic = speakerPic;
+    }
+
     public Date getLiveStartTime() {
         return liveStartTime;
     }
@@ -153,11 +182,11 @@ public class ImLiveBroadcastRoomVo implements Serializable {
         this.roomState = roomState;
     }
 
-    public Integer getCreatedByName() {
+    public String getCreatedByName() {
         return createdByName;
     }
 
-    public void setCreatedByName(Integer createdByName) {
+    public void setCreatedByName(String createdByName) {
         this.createdByName = createdByName;
     }
 
@@ -177,20 +206,44 @@ public class ImLiveBroadcastRoomVo implements Serializable {
         this.roomConfig = roomConfig;
     }
 
-    public String getTenantLogo() {
-        return tenantLogo;
+    public String getImToken() {
+        return imToken;
     }
 
-    public void setTenantLogo(String tenantLogo) {
-        this.tenantLogo = tenantLogo;
+    public void setImToken(String imToken) {
+        this.imToken = imToken;
     }
 
-    public String getSpeakerPic() {
-        return speakerPic;
+    public String getOs() {
+        return os;
     }
 
-    public void setSpeakerPic(String speakerPic) {
-        this.speakerPic = speakerPic;
+    public void setOs(String os) {
+        this.os = os;
+    }
+
+    public Integer getLikeNum() {
+        return likeNum;
+    }
+
+    public void setLikeNum(Integer likeNum) {
+        this.likeNum = likeNum;
+    }
+
+    public Integer getLookNum() {
+        return lookNum;
+    }
+
+    public void setLookNum(Integer lookNum) {
+        this.lookNum = lookNum;
+    }
+
+    public Integer getTotalLookNum() {
+        return totalLookNum;
+    }
+
+    public void setTotalLookNum(Integer totalLookNum) {
+        this.totalLookNum = totalLookNum;
     }
 }
 

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

@@ -20,14 +20,20 @@ public interface ImLiveBroadcastRoomService extends IService<ImLiveBroadcastRoom
 
     ImLiveBroadcastRoomVo queryRoom(String roomUid, Integer userId);
 
+    ImLiveBroadcastRoomVo queryRoomInfo(String roomUid);
+
     void add(ImLiveBroadcastRoomDto dto);
 
     void update(ImLiveBroadcastRoomDto dto);
 
+    void roomDestroy(Integer id);
+
     void delete(Integer id);
 
     void syncLike(String roomUid, Integer likeNum);
 
+    void joinRoom(String roomUid, Integer userId);
+
     void test();
 
     /**

+ 183 - 12
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImLiveBroadcastRoomServiceImpl.java

@@ -9,19 +9,21 @@ import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.ImLiveBroadcastRoomDao;
 import com.ym.mec.biz.dal.dto.ImLiveBroadcastRoomDto;
 import com.ym.mec.biz.dal.entity.ImLiveBroadcastRoom;
-import com.ym.mec.biz.dal.enums.ImSendTypeEnum;
 import com.ym.mec.biz.dal.enums.MessageTypeEnum;
 import com.ym.mec.biz.dal.vo.ImLiveBroadcastRoomVo;
 import com.ym.mec.biz.service.ImLiveBroadcastRoomService;
-import com.ym.mec.biz.service.SysConfigService;
 import com.ym.mec.biz.service.SysMessageService;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.page.PageUtil;
+import com.ym.mec.common.page.WrapperUtil;
 import com.ym.mec.common.tenant.TenantContextHolder;
 import com.ym.mec.im.ImFeignService;
 import com.ym.mec.util.date.DateUtil;
 import com.ym.mec.util.http.HttpUtil;
+import org.apache.commons.lang3.StringUtils;
+import org.redisson.api.RBucket;
+import org.redisson.api.RList;
 import org.redisson.api.RedissonClient;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -30,6 +32,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 
+import java.io.Serializable;
 import java.util.*;
 
 /**
@@ -52,12 +55,33 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
     @Autowired
     private SysMessageService sysMessageService;
 
+    public static final String USER_ID = "${userId}";
+    public static final String ROOM_UID = "${roomUid}";
+
+    //直播间用户列表
+    public static final String LIVE_ROOM_USER_LIST = "IM:LIVE_ROOM_USER_LIST:" + ROOM_UID;
+    //用户对应的直播间Uid
+    public static final String LIVE_USER_ROOM = "IM:LIVE_ROOM_USER:" + USER_ID;
+    //用户进入房间时间
+    public static final String LIVE_ROOM_USER_JOIN_TIME = "IM:LIVE_ROOM_USER_JOIN_TIME:" + USER_ID;
+    //用户退出房间时间
+    public static final String LIVE_ROOM_USER_QUIT_TIME = "IM:LIVE_ROOM_USER_QUIT_TIME:" + USER_ID;
+    //房间信息
+    public static final String LIVE_ROOM_INFO = "IM:LIVE_ROOM_INFO:" + ROOM_UID;
+    //房间当前人数
+    public static final String LIVE_ROOM_LOOK = "IM:LIVE_ROOM_LOOK:" + ROOM_UID;
+    //房间累计人数
+    public static final String LIVE_ROOM_TOTAL_LOOK = "IM:LIVE_ROOM_TOTAL_LOOK:" + ROOM_UID;
+    //房间点赞数
+    public static final String LIVE_ROOM_LIKE = "IM:LIVE_ROOM_LIKE:" + ROOM_UID;
+
     /**
      * 进入直播间检查数据
      *
      * @param roomUid 房间uid
      * @param userId  用户id
      */
+    @Override
     public ImLiveBroadcastRoomVo queryRoom(String roomUid, Integer userId) {
         SysUser sysUser;
         if (Objects.isNull(userId)) {
@@ -73,7 +97,7 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
                 .orElseThrow(() -> new BizException("您不是该直播机构学员,不可观看!"));
         optional.filter(r -> r.getRoomState() != 1).orElseThrow(() -> new BizException("直播间不存在"));
         ImLiveBroadcastRoomVo room = optional.get();
-        if (room.getLiveState() == 0 || room.getLiveStartTime().getTime() < new Date().getTime()) {
+        if (room.getLiveState() == 0) {
             throw new BizException("直播未开始,直播开启的时间是 "
                     + DateUtil.format(room.getLiveStartTime(), DateUtil.EXPANDED_DATE_TIME_FORMAT));
         }
@@ -88,7 +112,8 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
      *
      * @param roomUid 直播间uid
      */
-    private ImLiveBroadcastRoomVo queryRoomInfo(String roomUid) {
+    @Override
+    public ImLiveBroadcastRoomVo queryRoomInfo(String roomUid) {
         List<ImLiveBroadcastRoomVo> list = baseMapper.queryPage(new HashMap<String, Object>() {{
             put("roomUid", roomUid);
         }});
@@ -146,6 +171,39 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
     }
 
     /**
+     * 关闭房间
+     *
+     * @param id 直播房间表id
+     */
+    @Override
+    public void roomDestroy(Integer id) {
+        ImLiveBroadcastRoom room = this.getById(id);
+        if (Objects.isNull(room)) {
+            return;
+        }
+        if (room.getLiveState() == 0) {
+            throw new BizException("直播未开始");
+        }
+        try {
+            imFeignService.destroyLiveRoom(room.getRoomUid());
+        } catch (Exception e) {
+            log.error(e.getMessage(), e.getCause());
+            throw new BizException(e.getMessage());
+        }
+        //todo 向聊天室发自定义消息提出所有学生
+
+        //todo 将房间redis的数据写入数据库后在删除缓存
+
+        //将房间状态改为已销毁
+        Date date = new Date();
+        room.setRoomState(2);
+        room.setUpdatedBy(getSysUser().getId());
+        room.setUpdatedTime(date);
+        room.setLiveEndTime(date);
+        this.updateById(room);
+    }
+
+    /**
      * 删除直播间
      *
      * @param id 直播间id
@@ -153,6 +211,9 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
     @Override
     public void delete(Integer id) {
         ImLiveBroadcastRoom obj = new ImLiveBroadcastRoom();
+        if (obj.getLiveState() == 1) {
+            throw new BizException("直播已经开始,无法删除");
+        }
         obj.setId(id);
         obj.setRoomState(1);
         this.updateById(obj);
@@ -165,16 +226,118 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
      * @param likeNum 点赞数
      */
     public void syncLike(String roomUid, Integer likeNum) {
+        redissonClient.getBucket(LIVE_ROOM_LIKE.replace(ROOM_UID, roomUid)).set(likeNum);
+    }
+
+    /**
+     * 进入房间-修改用户对应的房间号信息
+     *
+     * @param roomUid 房间uid
+     * @param userId  用户id
+     */
+    public void joinRoom(String roomUid, Integer userId) {
+        //用户对应的直播间信息
+        RBucket<String> roomUserCache = redissonClient.getBucket(LIVE_USER_ROOM.replace(USER_ID, userId.toString()));
+        //获取原有房间信息
+        if (roomUserCache.isExists()) {
+            //原有的房间uid
+            String lodRoomUid = roomUserCache.get();
+            //如果房间相同直接返回
+            if (roomUid.equals(lodRoomUid)) {
+                return;
+            } else {
+                //如果不同就把原房间的当前人员数量-1
+                redissonClient.getAtomicLong(LIVE_ROOM_LOOK.replace(ROOM_UID, lodRoomUid)).decrementAndGet();
+                //将用户数据从老直播间用户列表删除
+                RList<UserInfo> list = redissonClient.getList(LIVE_ROOM_USER_LIST.replace(ROOM_UID, lodRoomUid));
+                UserInfo userInfo = getUserInfo(userId);
+                list.remove(userInfo);
+            }
+        }
+        //写入用户房间uid
+        roomUserCache.set(roomUid);
+        //写入用户进入房间时间缓存
+        redissonClient.getBucket(LIVE_ROOM_USER_JOIN_TIME.replace(USER_ID, userId.toString())).set(new Date());
+        //添加房间中用户数量
+        redissonClient.getAtomicLong(LIVE_ROOM_LOOK.replace(ROOM_UID, roomUid)).incrementAndGet();
+        //添加房间中累计总用户数量
+        redissonClient.getAtomicLong(LIVE_ROOM_TOTAL_LOOK.replace(ROOM_UID, roomUid)).incrementAndGet();
+        //将用户数据写入直播间
+        RList<UserInfo> list = redissonClient.getList(LIVE_ROOM_USER_LIST.replace(ROOM_UID, roomUid));
+        UserInfo userInfo = getUserInfo(userId);
+        list.add(userInfo);
+    }
+
+    private UserInfo getUserInfo(Integer userId) {
+        UserInfo userInfo = new UserInfo();
+        userInfo.setUserId(userId);
+        SysUser sysUser = sysUserFeignService.queryUserById(userId);
+        String name = userId.toString();
+        if (Objects.nonNull(sysUser)) {
+            if (StringUtils.isNotBlank(sysUser.getRealName())) {
+                name = sysUser.getRealName();
+            } else {
+                name = sysUser.getPhone();
+            }
+        }
+        userInfo.setUserName(name);
+        return userInfo;
+    }
+
+    static class UserInfo implements Serializable {
+        private Integer userId;
+        private String userName;
+
+        public Integer getUserId() {
+            return userId;
+        }
+
+        public void setUserId(Integer userId) {
+            this.userId = userId;
+        }
 
+        public String getUserName() {
+            return userName;
+        }
+
+        public void setUserName(String userName) {
+            this.userName = userName;
+        }
     }
 
     /**
      * 定时任务,每分钟执行
      * 提前30分钟主动去融云注册并创建房间
      */
-    public void createRoom() {
-        List<ImLiveBroadcastRoomVo> imLiveBroadcastRoomVos = baseMapper.queryPage(new HashMap<>());
-        imFeignService.createLiveRoom("", "");
+    public void createLiveRoom() {
+        Date now = new Date();
+        Date startTime = DateUtil.addMinutes(now, 29);
+        Date endTime = DateUtil.addMinutes(now, 31);
+        List<ImLiveBroadcastRoom> list = this.list(new WrapperUtil<ImLiveBroadcastRoom>()
+                .hasEq("live_state_", 0)
+                .hasEq("room_state_", 0)
+                .hasGe("live_start_time_", startTime)
+                .hasLe("live_start_time_", endTime)
+                .queryWrapper());
+        if (CollectionUtils.isEmpty(list)) {
+            return;
+        }
+        list.forEach(this::createLiveRoom);
+    }
+
+    /**
+     * 去融云创建房间
+     */
+    private void createLiveRoom(ImLiveBroadcastRoom room) {
+        try {
+            //去融云创建房间
+            Object liveRoom = imFeignService.createLiveRoom(room.getRoomUid(), room.getRoomTitle());
+        } catch (Exception e) {
+
+        }
+        //初始化房间数据  点赞 人数 等 为0
+        //修改房间状态
+
     }
 
     private SysUser getSysUser(Integer userId) {
@@ -193,19 +356,27 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
      * 分享直播间
      */
     public void test() {
-
+        //将用户数据写入直播间
+        RList<UserInfo> list = redissonClient.getList(LIVE_ROOM_USER_LIST.replace(ROOM_UID, "roomUid"));
+        UserInfo userInfo = new UserInfo();
+        userInfo.setUserId(1);
+        userInfo.setUserName("1");
+        boolean contains = list.contains(userInfo);
+        if (!contains) {
+            list.add(userInfo);
+        }
     }
 
     @Override
-    public void shareGroup(String roomUid,String groupIds) {
+    public void shareGroup(String roomUid, String groupIds) {
         ImLiveBroadcastRoomVo imLiveBroadcastRoomVo = queryRoomInfo(roomUid);
         if (imLiveBroadcastRoomVo == null) {
             throw new BizException("直播间信息异常!");
         }
         SysUser sysUser = sysUserFeignService.queryUserInfo();
-        sysMessageService.batchSendImMessage(MessageTypeEnum.IM_SHARE_LIVE_URL,sysUser.getId().toString(),null,groupIds.split(","),null,
-                imLiveBroadcastRoomVo.getTenantName(),imLiveBroadcastRoomVo.getRoomTitle(),imLiveBroadcastRoomVo.getSpeakerName(),
-                DateUtil.format(imLiveBroadcastRoomVo.getLiveStartTime(),DateUtil.CHINESE_DATA_FORMAT_1),
+        sysMessageService.batchSendImMessage(MessageTypeEnum.IM_SHARE_LIVE_URL, sysUser.getId().toString(), null, groupIds.split(","), null,
+                imLiveBroadcastRoomVo.getTenantName(), imLiveBroadcastRoomVo.getRoomTitle(), imLiveBroadcastRoomVo.getSpeakerName(),
+                DateUtil.format(imLiveBroadcastRoomVo.getLiveStartTime(), DateUtil.CHINESE_DATA_FORMAT_1),
                 imLiveBroadcastRoomVo.getLiveRemark(), HttpUtil.getSortUrl("https://test.dayaedu.com/"));
     }
 }

+ 4 - 3
mec-biz/src/main/resources/config/mybatis/ImLiveBroadcastRoomMapper.xml

@@ -49,6 +49,7 @@
         a.live_remark_ AS liveRemark,
         a.speaker_id_ AS speakerId,
         b.real_name_ AS speakerName,
+        b.im_token_ as imToken,
         b.avatar_ AS speakerPic,
         a.live_start_time_ AS liveStartTime,
         a.live_state_ AS liveState,
@@ -59,8 +60,9 @@
         from im_live_broadcast_room as a
         left join tenant_info AS t on a.tenant_id_ = t.id_
         left join sys_user AS b on a.speaker_id_ = b.id_
-        left join sys_user AS c on a.created_by_ = b.id_
+        left join sys_user AS c on a.created_by_ = c.id_
         <where>
+            a.room_state_ = 0
             <if test="param.search != null ">
                 AND (
                 a.`room_uid_` LIKE CONCAT('%', #{param.search},'%')
@@ -68,7 +70,7 @@
                 )
             </if>
             <if test="param.roomUid != null">
-                and  a.room_uid_ = #{param.roomUid}
+                and a.room_uid_ = #{param.roomUid}
             </if>
             <if test="param.liveState != null">
                 and a.live_state_ = #{param.liveState}
@@ -82,7 +84,6 @@
 
         </where>
 
-
     </select>
 
 </mapper>

+ 1 - 1
mec-im/src/main/java/com/ym/pojo/ImUserState.java

@@ -12,7 +12,7 @@ public class ImUserState implements Serializable {
      */
     private String userid;
     /**
-     * 状态:0:online 上线、1:offline 离线、2:logout 登出
+     * 状态:0:online 上线、1:offline 离线、2:logout 登出  3:退出直播间
      */
     private String status;
     /**

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

@@ -39,7 +39,7 @@ public class ResourceServerConfig extends ResourceServerConfigurerAdapter {
                         "/oaContracts/*", "/eduStudent/organStudentOverView", "/activity/countCloudTeacherActive",
                         "/activity/organDoubleEleven2021Statis", "/activity/doubleEleven2021Statis", "/questionnaireTopic/getDetail", "/questionnaireUserResult/add",
                         "/tenantInfo/info/*", "/tenantInfo/checkInfo/*", "/tenantInfo/pay/*","/tenantInfo/testCheck", "/tenantInfo/getContract/*",
-                        "/tenantPreJoin/add"
+                        "/tenantPreJoin/add","/imLiveBroadcastRoom/queryRoomInfo"
                 )
                 .permitAll().anyRequest().authenticated().and().httpBasic();
     }

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

@@ -52,6 +52,12 @@ public class ImLiveBroadcastRoomController extends BaseController {
         return succeed(imLiveBroadcastRoomService.queryRoom(roomUid, userId));
     }
 
+    @ApiOperation("查询房间信息")
+    @GetMapping("/queryRoomInfo")
+    public HttpResponseResult<ImLiveBroadcastRoomVo> queryRoomInfo(@ApiParam(value = "房间uid", required = true) String roomUid) {
+        return succeed(imLiveBroadcastRoomService.queryRoomInfo(roomUid));
+    }
+
     @ApiOperation("创建直播间")
     @PostMapping("/add")
 //    @PreAuthorize("@pcs.hasPermissions('imLiveBroadcastRoom/add')")
@@ -68,6 +74,19 @@ public class ImLiveBroadcastRoomController extends BaseController {
         return succeed();
     }
 
+    /**
+     * 关闭直播间
+     *
+     * @param id 房间表id
+     */
+    @ApiOperation("关闭直播间")
+    @GetMapping(value = "/roomDestroy/{id}")
+//    @PreAuthorize("@pcs.hasPermissions('imLiveBroadcastRoom/roomDestroy')")
+    public HttpResponseResult roomDestroy(@ApiParam(value = "房间表id", required = true) @PathVariable("id") Integer id) {
+        imLiveBroadcastRoomService.roomDestroy(id);
+        return succeed();
+    }
+
     @ApiImplicitParams({
             @ApiImplicitParam(name = "id", dataType = "Integer", value = "房间id"),
     })
@@ -88,7 +107,13 @@ public class ImLiveBroadcastRoomController extends BaseController {
         return succeed();
     }
 
-    @GetMapping("/shareRoom")
+    @ApiOperation("进入房间")
+    @GetMapping("/joinRoom")
+    public void joinRoom(String roomUid, Integer userId) {
+        imLiveBroadcastRoomService.joinRoom(roomUid, userId);
+    }
+
+    @GetMapping("/test")
     public HttpResponseResult test() {
         imLiveBroadcastRoomService.test();
         return succeed();