Selaa lähdekoodia

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

zouxuan 3 vuotta sitten
vanhempi
commit
9609101630
18 muutettua tiedostoa jossa 565 lisäystä ja 9 poistoa
  1. 3 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ImLiveBroadcastRoomDao.java
  2. 26 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ImLiveRoomReservationDao.java
  3. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/TempLittleArtistTrainingCampDto.java
  4. 86 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ImLiveRoomReservation.java
  5. 21 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/TempLittleArtistTrainingCamp.java
  6. 19 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/vo/ImLiveBroadcastRoomVo.java
  7. 7 0
      mec-biz/src/main/java/com/ym/mec/biz/service/ImLiveBroadcastRoomService.java
  8. 36 0
      mec-biz/src/main/java/com/ym/mec/biz/service/ImLiveRoomReservationService.java
  9. 17 4
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImLiveBroadcastRoomServiceImpl.java
  10. 96 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImLiveRoomReservationServiceImpl.java
  11. 9 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/TempLittleArtistTrainingCampServiceImpl.java
  12. 8 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/TempLittleArtistTrainingCampUserRelationServiceImpl.java
  13. 13 0
      mec-biz/src/main/resources/config/mybatis/ImLiveBroadcastRoomMapper.xml
  14. 61 0
      mec-biz/src/main/resources/config/mybatis/ImLiveRoomReservationMapper.xml
  15. 4 3
      mec-biz/src/main/resources/config/mybatis/TempLittleArtistTrainingCampMapper.xml
  16. 71 0
      mec-student/src/main/java/com/ym/mec/student/controller/ImLiveRoomReservationController.java
  17. 7 1
      mec-web/src/main/java/com/ym/mec/web/controller/ImLiveBroadcastRoomController.java
  18. 70 0
      mec-web/src/main/java/com/ym/mec/web/controller/ImLiveRoomReservationController.java

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

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ym.mec.biz.dal.entity.ImLiveBroadcastRoom;
+import com.ym.mec.biz.dal.vo.BaseRoomUserVo;
 import com.ym.mec.biz.dal.vo.ImLiveBroadcastRoomVo;
 import org.apache.ibatis.annotations.Param;
 
@@ -26,5 +27,7 @@ public interface ImLiveBroadcastRoomDao extends BaseMapper<ImLiveBroadcastRoom>
 
     IPage<Map<Integer,Object>> queryUserPageByTenantId(Page<Map<Integer,Object>> page);
 
+    List<BaseRoomUserVo> queryBaseUserInfo(@Param("list") List<Integer> list);
+
 }
 

+ 26 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ImLiveRoomReservationDao.java

@@ -0,0 +1,26 @@
+package com.ym.mec.biz.dal.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ym.mec.biz.dal.entity.ImLiveRoomReservation;
+import com.ym.mec.biz.dal.vo.ImLiveBroadcastRoomVo;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 直播预约记录(ImLiveRoomReservation)表数据库访问层
+ *
+ * @author hgw
+ * @since 2022-05-24 14:54:05
+ */
+public interface ImLiveRoomReservationDao extends BaseMapper<ImLiveRoomReservation> {
+
+    int insertBatch(@Param("entities") List<ImLiveRoomReservation> entities);
+
+    IPage<ImLiveBroadcastRoomVo> queryPageStudent(Page<ImLiveBroadcastRoomVo> page, @Param("param") Map<String, Object> param);
+
+}
+

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/TempLittleArtistTrainingCampDto.java

@@ -43,6 +43,9 @@ public class TempLittleArtistTrainingCampDto implements Serializable {
     @ApiModelProperty(value = "训练结束日期")
     private Date trainEndDate;
 
+    @ApiModelProperty(value = "图片")
+    private String picUrl;
+
     public Integer getId() {
         return id;
     }
@@ -90,4 +93,12 @@ public class TempLittleArtistTrainingCampDto implements Serializable {
     public void setTrainEndDate(Date trainEndDate) {
         this.trainEndDate = trainEndDate;
     }
+
+    public String getPicUrl() {
+        return picUrl;
+    }
+
+    public void setPicUrl(String picUrl) {
+        this.picUrl = picUrl;
+    }
 }

+ 86 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ImLiveRoomReservation.java

@@ -0,0 +1,86 @@
+package com.ym.mec.biz.dal.entity;
+
+
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.baomidou.mybatisplus.annotation.TableId;
+
+import java.io.Serializable;
+
+/**
+ * 直播预约记录(ImLiveRoomReservation)表实体类
+ *
+ * @author hgw
+ * @since 2022-05-24 14:54:05
+ */
+@ApiModel(value = "im_live_room_reservation-直播预约记录")
+public class ImLiveRoomReservation implements Serializable {
+    @TableId(value = "id_", type = IdType.AUTO)
+    @ApiModelProperty(value = "主键")
+    private Integer id;
+
+    @TableField("room_uid_")
+    @ApiModelProperty(value = "直播间uid")
+    private String roomUid;
+
+    @TableField("user_id_")
+    @ApiModelProperty(value = "预约的用户id")
+    private Integer userId;
+
+    @TableField("push_state_")
+    @ApiModelProperty(value = "未推送-1 推送状态 0推送完成 1推送失败")
+    private Integer pushState;
+
+    @TableField("create_time_")
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+
+    private static final long serialVersionUID = 1L;
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public String getRoomUid() {
+        return roomUid;
+    }
+
+    public void setRoomUid(String roomUid) {
+        this.roomUid = roomUid;
+    }
+
+    public Integer getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Integer userId) {
+        this.userId = userId;
+    }
+
+    public Integer getPushState() {
+        return pushState;
+    }
+
+    public void setPushState(Integer pushState) {
+        this.pushState = pushState;
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+
+}
+

+ 21 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/TempLittleArtistTrainingCamp.java

@@ -66,6 +66,10 @@ public class TempLittleArtistTrainingCamp implements Serializable {
     @ApiModelProperty(value = "聊天群组id多个用逗号隔开")
     private String imGroupIds;
 
+    @TableField("pic_url_")
+    @ApiModelProperty(value = "图片")
+    private String picUrl;
+
     @TableField("del_flag_")
     @ApiModelProperty(value = "删除标识 0未删除 1已删除' ")
     private Integer delFlag;
@@ -86,6 +90,8 @@ public class TempLittleArtistTrainingCamp implements Serializable {
     @ApiModelProperty(value = "修改时间")
     private Date updateTime;
 
+    @TableField(exist = false)
+    private Integer userCount;
 
     public Integer getId() {
         return id;
@@ -165,6 +171,14 @@ public class TempLittleArtistTrainingCamp implements Serializable {
         this.imGroupIds = imGroupIds;
     }
 
+    public String getPicUrl() {
+        return picUrl;
+    }
+
+    public void setPicUrl(String picUrl) {
+        this.picUrl = picUrl;
+    }
+
     public Integer getDelFlag() {
         return delFlag;
     }
@@ -205,5 +219,12 @@ public class TempLittleArtistTrainingCamp implements Serializable {
         this.updateTime = updateTime;
     }
 
+    public Integer getUserCount() {
+        return userCount;
+    }
+
+    public void setUserCount(Integer userCount) {
+        this.userCount = userCount;
+    }
 }
 

+ 19 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/vo/ImLiveBroadcastRoomVo.java

@@ -74,6 +74,11 @@ public class ImLiveBroadcastRoomVo implements Serializable {
     @ApiModelProperty(value = "是否在首页推广 0否 1是 - 每个机构只能有一个直播间在首页推广")
     private Integer popularize;
 
+    /**
+     * 是否预约过该直播间 0否 1是
+     */
+    private Integer reserve;
+
     @ApiModelProperty(value = "点赞数")
     private Integer likeNum;
     @ApiModelProperty(value = "当前观看人数")
@@ -256,5 +261,19 @@ public class ImLiveBroadcastRoomVo implements Serializable {
     public void setPopularize(Integer popularize) {
         this.popularize = popularize;
     }
+
+    /**
+     * 是否预约过该直播间 0否 1是
+     */
+    public Integer getReserve() {
+        return reserve;
+    }
+
+    /**
+     * 是否预约过该直播间 0否 1是
+     */
+    public void setReserve(Integer reserve) {
+        this.reserve = reserve;
+    }
 }
 

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

@@ -78,5 +78,12 @@ public interface ImLiveBroadcastRoomService extends IService<ImLiveBroadcastRoom
 
     List<BaseRoomUserVo> queryRoomLimitOnlineUserInfo(String roomUid);
 
+    /**
+     * 根据传入的用户id查询用户信息
+     *
+     * @param userIdList 用户id集合
+     */
+    List<BaseRoomUserVo> queryBaseUserInfo(List<Integer> userIdList);
+
 }
 

+ 36 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/ImLiveRoomReservationService.java

@@ -0,0 +1,36 @@
+package com.ym.mec.biz.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ym.mec.biz.dal.entity.ImLiveRoomReservation;
+import com.ym.mec.biz.dal.vo.ImLiveBroadcastRoomVo;
+import com.ym.mec.common.page.PageInfo;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Map;
+
+/**
+ * 直播预约记录(ImLiveRoomReservation)表服务接口
+ *
+ * @author hgw
+ * @since 2022-05-24 14:54:05
+ */
+public interface ImLiveRoomReservationService extends IService<ImLiveRoomReservation> {
+
+    /**
+     * 添加直播预约
+     */
+    void add(ImLiveRoomReservation entity);
+
+    /**
+     * 取消预约
+     */
+    void cancel(ImLiveRoomReservation entity);
+
+    /**
+     * 分页查询直播间
+     * @param param
+     * <p> liveState 直播状态 0未开始 1开始 2结束
+     */
+    PageInfo<ImLiveBroadcastRoomVo> queryPageStudent(Map<String, Object> param);
+}
+

+ 17 - 4
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImLiveBroadcastRoomServiceImpl.java

@@ -638,7 +638,7 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
         //发送消息
         try {
             imFeignService.publishRoomMsg(message);
-            log.info(" sendOnlineUserCount>>>> message: {}", JSONObject.toJSONString(message));
+            log.info("sendOnlineUserCount>>>> message: {}", JSONObject.toJSONString(message));
         } catch (Exception e) {
             log.error("sendOnlineUserCount>>>> error {}", e.getMessage());
             log.error("sendOnlineUserCount>>>> sendMessage {} :", JSONObject.toJSONString(message));
@@ -742,6 +742,7 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
         onlineUserInfo.fastPut(userId, JSONObject.toJSONString(userInfo));
         //向直播间发送当前在线人数消息
         this.sendOnlineUserCount(roomUid, userId, onlineUserInfo.size());
+        log.info("join sendOnlineUserCount>>>> param is null   roomUid: {}  fromUserId:{}  count:{}", roomUid, userId, onlineUserInfo.size());
         log.info("joinRoom>>>> userInfo: {}", JSONObject.toJSONString(userInfo));
     }
 
@@ -1070,9 +1071,9 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
     public List<BaseRoomUserVo> queryRoomLimitOnlineUserInfo(String roomUid) {
         RMap<Integer, String> onlineUserCache = getOnlineUserCache(roomUid);
         return onlineUserCache.values().parallelStream()
-                        .map(a -> JSONObject.toJavaObject(JSONObject.parseObject(a), BaseRoomUserVo.class))
-                        .limit(200)
-                        .collect(Collectors.toList());
+                .map(a -> JSONObject.toJavaObject(JSONObject.parseObject(a), BaseRoomUserVo.class))
+                .limit(200)
+                .collect(Collectors.toList());
     }
 
     /**
@@ -1089,6 +1090,18 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
     }
 
     /**
+     * 根据传入的用户id查询用户信息
+     *
+     * @param userIdList 用户id集合
+     */
+    public List<BaseRoomUserVo> queryBaseUserInfo(List<Integer> userIdList) {
+        return Optional.ofNullable(userIdList)
+                .filter(CollectionUtils::isNotEmpty)
+                .map(baseMapper::queryBaseUserInfo)
+                .orElseThrow(() -> new BizException("用户id集合不能为空"));
+    }
+
+    /**
      * 查询直播间所有用户信息
      *
      * @param roomUid 直播间uid

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

@@ -0,0 +1,96 @@
+package com.ym.mec.biz.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.dao.ImLiveRoomReservationDao;
+import com.ym.mec.biz.dal.dao.SysConfigDao;
+import com.ym.mec.biz.dal.entity.ImLiveRoomReservation;
+import com.ym.mec.biz.dal.enums.MessageTypeEnum;
+import com.ym.mec.biz.dal.vo.ImLiveBroadcastRoomVo;
+import com.ym.mec.biz.service.ImLiveRoomReservationService;
+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.tenant.TenantContextHolder;
+import com.ym.mec.thirdparty.message.MessageSenderPluginContext;
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.*;
+
+/**
+ * 直播预约记录(ImLiveRoomReservation)表服务实现类
+ *
+ * @author hgw
+ * @since 2022-05-24 14:54:13
+ */
+@Service("imLiveRoomReservationService")
+public class ImLiveRoomReservationServiceImpl extends ServiceImpl<ImLiveRoomReservationDao, ImLiveRoomReservation> implements ImLiveRoomReservationService {
+
+    private final static Logger logger = LoggerFactory.getLogger(ImLiveRoomReservationServiceImpl.class);
+
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+    @Autowired
+    private SysConfigDao sysConfigDao;
+    @Autowired
+    private SysMessageService sysMessageService;
+
+    /**
+     * 预约直播
+     */
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void add(ImLiveRoomReservation entity) {
+        Optional<ImLiveRoomReservation> optional = Optional.ofNullable(entity);
+        optional.filter(a -> StringUtils.isNotBlank(a.getRoomUid())).orElseThrow(() -> new BizException("房间Uid不能为空"));
+        optional.filter(a -> Objects.nonNull(a.getUserId())).orElseThrow(() -> new BizException("学员id不能为空"));
+        entity.setPushState(-1);
+        entity.setCreateTime(new Date());
+        this.baseMapper.insert(entity);
+    }
+
+    /**
+     * 取消预约
+     */
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void cancel(ImLiveRoomReservation entity) {
+        this.remove(Wrappers.<ImLiveRoomReservation>lambdaUpdate()
+                .eq(ImLiveRoomReservation::getRoomUid, entity.getRoomUid())
+                .eq(ImLiveRoomReservation::getUserId, entity.getUserId()));
+    }
+
+    /**
+     * 分页查询直播间
+     *
+     * @param param 参数
+     *              <p> liveState 直播状态 0未开始 1开始 2结束
+     */
+    @Override
+    public PageInfo<ImLiveBroadcastRoomVo> queryPageStudent(Map<String, Object> param) {
+        param.put("userId", getUser().getId());
+        Page<ImLiveBroadcastRoomVo> pageInfo = PageUtil.getPageInfo(param);
+        pageInfo.setDesc("a.created_time_");
+        param.put("tenantId", TenantContextHolder.getTenantId());
+        IPage<ImLiveBroadcastRoomVo> page = baseMapper.queryPageStudent(pageInfo, param);
+        return PageUtil.pageInfo(page);
+    }
+
+    private SysUser getUser() {
+        return Optional.ofNullable(sysUserFeignService.queryUserInfo())
+                .orElseThrow(() -> new BizException("用户信息获取失败,请刷新页面或者重新登录!"));
+    }
+
+}
+

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

@@ -100,7 +100,7 @@ public class TempLittleArtistTrainingCampServiceImpl extends ServiceImpl<TempLit
         entity.setApplyEndDate(dto.getApplyEndDate());
         entity.setTrainStartDate(dto.getTrainStartDate());
         entity.setTrainEndDate(dto.getTrainEndDate());
-        entity.setState(TempLittleArtistTrainingCamp.READY);
+        entity.setPicUrl(dto.getPicUrl());
         entity.setUpdateBy(user.getId());
         entity.setUpdateTime(new Date());
         this.updateById(entity);
@@ -282,6 +282,14 @@ public class TempLittleArtistTrainingCampServiceImpl extends ServiceImpl<TempLit
         if (CollectionUtils.isNotEmpty(campList)) {
             campList.sort(Comparator.comparing(TempLittleArtistTrainingCamp::getApplyStartDate));
         }
+        if(CollectionUtils.isNotEmpty(campList)){
+            campList.forEach(a -> {
+                int count = tempLittleArtistTrainingCampUserRelationService.count(Wrappers.<TempLittleArtistTrainingCampUserRelation>lambdaQuery()
+                        .eq(TempLittleArtistTrainingCampUserRelation::getActivityId, a.getId())
+                );
+                a.setUserCount(count);
+            });
+        }
         result.put("campList", campList);
         return result;
     }

+ 8 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TempLittleArtistTrainingCampUserRelationServiceImpl.java

@@ -16,6 +16,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.Objects;
 import java.util.Optional;
@@ -46,8 +47,15 @@ public class TempLittleArtistTrainingCampUserRelationServiceImpl extends Service
      *
      * @param campId 训练营id
      */
+    @Transactional(rollbackFor = Exception.class)
+    @Override
     public void add(Integer campId) {
         SysUser user = getUser();
+        int count = this.count(Wrappers.<TempLittleArtistTrainingCampUserRelation>lambdaUpdate()
+                .set(TempLittleArtistTrainingCampUserRelation::getActivityId, campId));
+        if(count > 2000) {
+            throw new BizException("人数已报满!");
+        }
         this.update(Wrappers.<TempLittleArtistTrainingCampUserRelation>lambdaUpdate()
                 .set(TempLittleArtistTrainingCampUserRelation::getActivityId, campId)
                 .set(TempLittleArtistTrainingCampUserRelation::getState, TempLittleArtistTrainingCampUserRelation.APPLY)

+ 13 - 0
mec-biz/src/main/resources/config/mybatis/ImLiveBroadcastRoomMapper.xml

@@ -100,4 +100,17 @@
         and username_ is not null and username_ != ''
     </select>
 
+    <select id="queryBaseUserInfo" resultType="com.ym.mec.biz.dal.vo.BaseRoomUserVo">
+    select
+        id_ AS userId,
+        username_ AS userName
+    from sys_user
+        <where>
+            id_ IN
+            <foreach collection="list" item="id" open="(" separator="," close=")">
+                #{id}
+            </foreach>
+        </where>
+    </select>
+
 </mapper>

+ 61 - 0
mec-biz/src/main/resources/config/mybatis/ImLiveRoomReservationMapper.xml

@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ym.mec.biz.dal.dao.ImLiveRoomReservationDao">
+    <resultMap id="BaseResultMap" type="com.ym.mec.biz.dal.entity.ImLiveRoomReservation">
+        <id column="id_" jdbcType="INTEGER" property="id"/>
+        <result column="room_uid_" jdbcType="VARCHAR" property="roomUid"/>
+        <result column="user_id_" jdbcType="INTEGER" property="userId"/>
+        <result column="push_state_" jdbcType="INTEGER" property="pushState"/>
+        <result column="create_time_" jdbcType="TIMESTAMP" property="createTime"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        id_
+        , room_uid_, user_id_, push_state_, create_time_
+    </sql>
+
+    <insert id="insertBatch" keyColumn="id_" keyProperty="id" useGeneratedKeys="true"
+            parameterType="com.ym.mec.biz.dal.entity.ImLiveRoomReservation">
+        insert into im_live_room_reservation(room_uid_, user_id_, push_state_, create_time_)
+        values
+        <foreach collection="entities" item="entity" separator=",">
+            (#{entity.roomUid}, #{entity.userId}, #{entity.pushState}, #{entity.createTime})
+        </foreach>
+    </insert>
+
+    <select id="queryPageStudent" resultType="com.ym.mec.biz.dal.vo.ImLiveBroadcastRoomVo">
+        select a.id_ AS id,
+        a.tenant_id_ AS tenantId,
+        t.name_ AS tenantName,
+        t.logo_ AS tenantLogo,
+        a.room_uid_ AS roomUid,
+        a.room_title_ AS roomTitle,
+        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,
+        a.room_state_ AS roomState,
+        c.real_name_ AS createdByName,
+        a.pre_template_ AS preTemplate,
+        a.room_config_ AS roomConfig,
+        a.popularize_ AS popularize,
+        case when  d.user_id_ is null then 0 else 1 end as reserve
+        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_ = c.id_
+        left join im_live_room_reservation as d on a.room_uid_ = d.room_uid_ and d.user_id_ = #{param.userId}
+        <where>
+        a.room_state_ in(0, 2)
+            <if test="param.tenantId != null ">
+                AND a.tenant_id_ = #{param.tenantId}
+            </if>
+            <if test="param.liveState != null">
+                and a.live_state_ = #{param.liveState}
+            </if>
+        </where>
+    </select>
+</mapper>

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

@@ -11,6 +11,7 @@
         <result column="train_end_date_" jdbcType="TIMESTAMP" property="trainEndDate"/>
         <result column="state_" jdbcType="VARCHAR" property="state"/>
         <result column="im_group_ids_" jdbcType="VARCHAR" property="imGroupIds"/>
+        <result column="pic_url_" jdbcType="VARCHAR" property="picUrl"/>
         <result column="del_flag_" jdbcType="INTEGER" property="delFlag"/>
         <result column="create_by_" jdbcType="INTEGER" property="createBy"/>
         <result column="create_time_" jdbcType="TIMESTAMP" property="createTime"/>
@@ -20,17 +21,17 @@
 
     <sql id="Base_Column_List">
         id_
-        , name_, num_, apply_start_date_, apply_end_date_, train_start_date_, train_end_date_, state_, im_group_ids_, create_by_, create_time_, update_by_, update_time_
+        , name_, num_, apply_start_date_, apply_end_date_, train_start_date_, train_end_date_, state_,pic_url_, im_group_ids_, create_by_, create_time_, update_by_, update_time_
     </sql>
 
     <insert id="insertBatch" keyColumn="id_" keyProperty="id" useGeneratedKeys="true"
             parameterType="com.ym.mec.biz.dal.entity.TempLittleArtistTrainingCamp">
         insert into temp_little_artist_training_camp(name_, num_, apply_start_date_, apply_end_date_, train_start_date_,
-        train_end_date_, state_, im_group_ids_, del_flag_,create_by_, create_time_, update_by_, update_time_)
+        train_end_date_, state_, im_group_ids_,pic_url_, del_flag_,create_by_, create_time_, update_by_, update_time_)
         values
         <foreach collection="entities" item="entity" separator=",">
             (#{entity.name}, #{entity.num}, #{entity.applyStartDate}, #{entity.applyEndDate}, #{entity.trainStartDate},
-            #{entity.trainEndDate}, #{entity.state}, #{entity.imGroupIds}, #{entity.delFlag},#{entity.createBy}, #{entity.createTime},
+            #{entity.trainEndDate}, #{entity.state}, #{entity.imGroupIds}, #{entity.delFlag},#{entity.picUrl},#{entity.createBy}, #{entity.createTime},
             #{entity.updateBy}, #{entity.updateTime})
         </foreach>
     </insert>

+ 71 - 0
mec-student/src/main/java/com/ym/mec/student/controller/ImLiveRoomReservationController.java

@@ -0,0 +1,71 @@
+package com.ym.mec.student.controller;
+
+import com.ym.mec.biz.dal.entity.ImLiveRoomReservation;
+import com.ym.mec.biz.dal.vo.ImLiveBroadcastRoomVo;
+import com.ym.mec.biz.service.ImLiveRoomReservationService;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
+import com.ym.mec.common.page.PageInfo;
+import com.ym.mec.common.page.WrapperUtil;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import java.util.Map;
+
+/**
+ * 直播预约记录(ImLiveRoomReservation)表控制层
+ *
+ * @author hgw
+ * @since 2022-05-24 14:54:04
+ */
+@RestController
+@RequestMapping("/imLiveRoomReservation")
+public class ImLiveRoomReservationController extends BaseController {
+    /**
+     * 服务对象
+     */
+    @Resource
+    private ImLiveRoomReservationService imLiveRoomReservationService;
+
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "userId", dataType = "Integer", value = "用户id"),
+            @ApiImplicitParam(name = "roomUid", dataType = "String", value = "房间uid"),
+            @ApiImplicitParam(name = "ops", dataType = "Integer", value = "1 预约  2取消预约")
+    })
+    @ApiOperation("预约/取消预约")
+    @PostMapping("/opsReserve")
+    public HttpResponseResult<Object> opsReserve(@RequestBody Map<String, Object> param) {
+        Integer ops = WrapperUtil.toInt(param, "ops", "请传入操作类型");
+        ImLiveRoomReservation entity = new ImLiveRoomReservation();
+        entity.setRoomUid(WrapperUtil.toStr(param, "roomUid", "请传入房间uid"));
+        entity.setUserId(WrapperUtil.toInt(param, "userId", "用户id不能为空"));
+        //1 预约  2取消预约
+        if (ops == 1) {
+            imLiveRoomReservationService.add(entity);
+        } else if (ops == 2) {
+            imLiveRoomReservationService.cancel(entity);
+        } else {
+            return failed("请传入正确的操作类型");
+        }
+        return succeed();
+    }
+
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "liveState", dataType = "Integer", value = "直播状态 0未开始 1开始 2结束"),
+            @ApiImplicitParam(name = "page", dataType = "Integer", value = "页数"),
+            @ApiImplicitParam(name = "rows", dataType = "Integer", value = "每页数量"),
+    })
+    @ApiOperation("分页查询直播间列表")
+    @PostMapping("/queryPageStudent")
+    public HttpResponseResult<PageInfo<ImLiveBroadcastRoomVo>> queryPageStudent(@RequestBody Map<String, Object> param) {
+        return succeed(imLiveRoomReservationService.queryPageStudent(param));
+    }
+
+}
+

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

@@ -40,7 +40,7 @@ public class ImLiveBroadcastRoomController extends BaseController {
             @ApiImplicitParam(name = "liveState", dataType = "Integer", value = "直播状态 0未开始 1开始 2结束"),
             @ApiImplicitParam(name = "startTime", dataType = "String", value = "开始时间"),
             @ApiImplicitParam(name = "endTime", dataType = "String", value = "结束时间"),
-            @ApiImplicitParam(name = "popularize", dataType = "String", value = "结束时间"),
+            @ApiImplicitParam(name = "popularize", dataType = "Integer", value = "是否在首页推广 0否 1是"),
             @ApiImplicitParam(name = "page", dataType = "Integer", value = "页数"),
             @ApiImplicitParam(name = "rows", dataType = "Integer", value = "每页数量"),
     })
@@ -191,5 +191,11 @@ public class ImLiveBroadcastRoomController extends BaseController {
         return succeed(imLiveBroadcastRoomService.queryRoomLimitOnlineUserInfo(roomUid));
     }
 
+    @ApiOperation("根据传入的用户id查询用户信息")
+    @PostMapping("/queryBaseUserInfo")
+    public HttpResponseResult<List<BaseRoomUserVo>> queryBaseUserInfo(@RequestBody List<Integer> userIdList) {
+        return succeed(imLiveBroadcastRoomService.queryBaseUserInfo(userIdList));
+    }
+
 }
 

+ 70 - 0
mec-web/src/main/java/com/ym/mec/web/controller/ImLiveRoomReservationController.java

@@ -0,0 +1,70 @@
+package com.ym.mec.web.controller;
+
+
+import com.ym.mec.biz.dal.entity.ImLiveRoomReservation;
+import com.ym.mec.biz.dal.vo.ImLiveBroadcastRoomVo;
+import com.ym.mec.biz.service.ImLiveRoomReservationService;
+import com.ym.mec.common.entity.HttpResponseResult;
+import com.ym.mec.common.page.PageInfo;
+import com.ym.mec.common.page.WrapperUtil;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.*;
+import com.ym.mec.common.controller.BaseController;
+
+import javax.annotation.Resource;
+import java.util.Map;
+
+/**
+ * 直播预约记录(ImLiveRoomReservation)表控制层
+ *
+ * @author hgw
+ * @since 2022-05-24 14:54:04
+ */
+@RestController
+@RequestMapping("/imLiveRoomReservation")
+public class ImLiveRoomReservationController extends BaseController {
+    /**
+     * 服务对象
+     */
+    @Resource
+    private ImLiveRoomReservationService imLiveRoomReservationService;
+
+
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "userId", dataType = "Integer", value = "用户id"),
+            @ApiImplicitParam(name = "roomUid", dataType = "String", value = "房间uid"),
+            @ApiImplicitParam(name = "ops", dataType = "Integer", value = "1 预约  2取消预约")
+    })
+    @PostMapping("/opsReserve")
+    public HttpResponseResult<Object> opsReserve(@RequestBody Map<String, Object> param) {
+        Integer ops = WrapperUtil.toInt(param, "ops", "请传入操作类型");
+        ImLiveRoomReservation entity = new ImLiveRoomReservation();
+        entity.setRoomUid(WrapperUtil.toStr(param, "roomUid", "请传入房间uid"));
+        entity.setUserId(WrapperUtil.toInt(param, "userId", "用户id不能为空"));
+        //1 预约  2取消预约
+        if (ops == 1) {
+            imLiveRoomReservationService.add(entity);
+        } else if (ops == 2) {
+            imLiveRoomReservationService.cancel(entity);
+        } else {
+            return failed("请传入正确的操作类型");
+        }
+        return succeed();
+    }
+
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "liveState", dataType = "Integer", value = "直播状态 0未开始 1开始 2结束"),
+            @ApiImplicitParam(name = "page", dataType = "Integer", value = "页数"),
+            @ApiImplicitParam(name = "rows", dataType = "Integer", value = "每页数量"),
+    })
+    @ApiOperation("分页查询直播间列表")
+    @PostMapping("/queryPageStudent")
+    public HttpResponseResult<PageInfo<ImLiveBroadcastRoomVo>> queryPageStudent(@RequestBody Map<String, Object> param) {
+        return succeed(imLiveRoomReservationService.queryPageStudent(param));
+    }
+
+
+}
+