Browse Source

add:添加预约人数和人员信息接口

liujunchi 3 years ago
parent
commit
f3ec93468d

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

@@ -3,9 +3,12 @@ package com.ym.mec.biz.dal.dao;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ym.mec.biz.dal.dto.RoomReservationUserSearch;
 import com.ym.mec.biz.dal.entity.ImLiveBroadcastRoom;
 import com.ym.mec.biz.dal.entity.ImLiveBroadcastRoom;
 import com.ym.mec.biz.dal.vo.BaseRoomUserVo;
 import com.ym.mec.biz.dal.vo.BaseRoomUserVo;
 import com.ym.mec.biz.dal.vo.ImLiveBroadcastRoomVo;
 import com.ym.mec.biz.dal.vo.ImLiveBroadcastRoomVo;
+import com.ym.mec.biz.dal.vo.RoomReservationUserVo;
+import com.ym.mec.common.page.PageInfo;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Param;
 
 
 import java.util.List;
 import java.util.List;
@@ -25,9 +28,16 @@ public interface ImLiveBroadcastRoomDao extends BaseMapper<ImLiveBroadcastRoom>
 
 
     int insertBatch(@Param("entities") List<ImLiveBroadcastRoom> entities);
     int insertBatch(@Param("entities") List<ImLiveBroadcastRoom> entities);
 
 
-    IPage<Map<Integer,Object>> queryUserPageByTenantId(Page<Map<Integer,Object>> page);
+    IPage<Map<Integer, Object>> queryUserPageByTenantId(Page<Map<Integer, Object>> page);
 
 
     List<BaseRoomUserVo> queryBaseUserInfo(@Param("list") List<Integer> list);
     List<BaseRoomUserVo> queryBaseUserInfo(@Param("list") List<Integer> list);
 
 
+    /**
+     * 查询直播间预约用户信息
+     *
+     * @return
+     */
+    PageInfo<RoomReservationUserVo> queryRoomUser(@Param("page") IPage<RoomReservationUserVo> page,
+                                                  @Param("query") RoomReservationUserSearch query);
 }
 }
 
 

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

@@ -22,5 +22,12 @@ public interface ImLiveRoomReservationDao extends BaseMapper<ImLiveRoomReservati
 
 
     IPage<ImLiveBroadcastRoomVo> queryPageStudent(Page<ImLiveBroadcastRoomVo> page, @Param("param") Map<String, Object> param);
     IPage<ImLiveBroadcastRoomVo> queryPageStudent(Page<ImLiveBroadcastRoomVo> page, @Param("param") Map<String, Object> param);
 
 
+    /**
+     * 查询房间预约人数
+     *
+     * @param roomIdList 房间id集合
+     * @return
+     */
+    List<ImLiveBroadcastRoomVo> selectCountRoomReservation(@Param("roomIdList") List<String> roomIdList);
 }
 }
 
 

+ 41 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/RoomReservationUserSearch.java

@@ -0,0 +1,41 @@
+package com.ym.mec.biz.dal.dto;
+
+import com.ym.mec.common.page.QueryInfo;
+import io.swagger.annotations.ApiModelProperty;
+
+import javax.validation.constraints.NotBlank;
+
+/**
+ * Description
+ *
+ * @author liujunchi
+ * @date 2022-05-31
+ */
+public class RoomReservationUserSearch extends QueryInfo {
+
+    @NotBlank(message = "房间号不能为空")
+    @ApiModelProperty("直播房间号")
+    private String roomUid;
+
+    @ApiModelProperty("用户编号/用户名/用户手机号")
+    private String search;
+
+
+    public String getRoomUid() {
+        return roomUid;
+    }
+
+    public void setRoomUid(String roomUid) {
+        this.roomUid = roomUid;
+    }
+
+    @Override
+    public String getSearch() {
+        return search;
+    }
+
+    @Override
+    public void setSearch(String search) {
+        this.search = search;
+    }
+}

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

@@ -87,6 +87,9 @@ public class ImLiveBroadcastRoomVo implements Serializable {
     @ApiModelProperty(value = "累计观看人数")
     @ApiModelProperty(value = "累计观看人数")
     private Integer totalLookNum;
     private Integer totalLookNum;
 
 
+    @ApiModelProperty("预约人数")
+    private Integer roomReservationNum;
+
     public Integer getId() {
     public Integer getId() {
         return id;
         return id;
     }
     }
@@ -284,5 +287,13 @@ public class ImLiveBroadcastRoomVo implements Serializable {
     public void setBlacklistFlag(Integer blacklistFlag) {
     public void setBlacklistFlag(Integer blacklistFlag) {
         this.blacklistFlag = blacklistFlag;
         this.blacklistFlag = blacklistFlag;
     }
     }
+
+    public Integer getRoomReservationNum() {
+        return roomReservationNum;
+    }
+
+    public void setRoomReservationNum(Integer roomReservationNum) {
+        this.roomReservationNum = roomReservationNum;
+    }
 }
 }
 
 

+ 80 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/vo/RoomReservationUserVo.java

@@ -0,0 +1,80 @@
+package com.ym.mec.biz.dal.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * Description
+ *
+ * @author liujunchi
+ * @date 2022-05-31
+ */
+@ApiModel("预约直播课人员信息")
+public class RoomReservationUserVo {
+
+    @ApiModelProperty("用户id")
+    private Long userId;
+
+    @ApiModelProperty("用户名")
+    private String username;
+
+    @ApiModelProperty("手机号")
+    private String phone;
+
+    @ApiModelProperty("分部id")
+    private Long organId;
+
+    @ApiModelProperty("分部名")
+    private  String organName;
+
+    @ApiModelProperty("声部名")
+    private String subjectName;
+
+    public Long getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Long userId) {
+        this.userId = userId;
+    }
+
+    public String getUsername() {
+        return username;
+    }
+
+    public void setUsername(String username) {
+        this.username = username;
+    }
+
+    public String getPhone() {
+        return phone;
+    }
+
+    public void setPhone(String phone) {
+        this.phone = phone;
+    }
+
+    public Long getOrganId() {
+        return organId;
+    }
+
+    public void setOrganId(Long organId) {
+        this.organId = organId;
+    }
+
+    public String getOrganName() {
+        return organName;
+    }
+
+    public void setOrganName(String organName) {
+        this.organName = organName;
+    }
+
+    public String getSubjectName() {
+        return subjectName;
+    }
+
+    public void setSubjectName(String subjectName) {
+        this.subjectName = subjectName;
+    }
+}

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

@@ -2,9 +2,11 @@ package com.ym.mec.biz.service;
 
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ym.mec.biz.dal.dto.ImLiveBroadcastRoomDto;
 import com.ym.mec.biz.dal.dto.ImLiveBroadcastRoomDto;
+import com.ym.mec.biz.dal.dto.RoomReservationUserSearch;
 import com.ym.mec.biz.dal.entity.ImLiveBroadcastRoom;
 import com.ym.mec.biz.dal.entity.ImLiveBroadcastRoom;
 import com.ym.mec.biz.dal.vo.BaseRoomUserVo;
 import com.ym.mec.biz.dal.vo.BaseRoomUserVo;
 import com.ym.mec.biz.dal.vo.ImLiveBroadcastRoomVo;
 import com.ym.mec.biz.dal.vo.ImLiveBroadcastRoomVo;
+import com.ym.mec.biz.dal.vo.RoomReservationUserVo;
 import com.ym.mec.common.entity.ImUserState;
 import com.ym.mec.common.entity.ImUserState;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.page.PageInfo;
 
 
@@ -85,5 +87,12 @@ public interface ImLiveBroadcastRoomService extends IService<ImLiveBroadcastRoom
      */
      */
     List<BaseRoomUserVo> queryBaseUserInfo(List<Integer> userIdList);
     List<BaseRoomUserVo> queryBaseUserInfo(List<Integer> userIdList);
 
 
+    /**
+     * 获取直播间预约用户信息
+     *
+     * @param query
+     * @return
+     */
+    PageInfo<RoomReservationUserVo> queryRoomUser(RoomReservationUserSearch query);
 }
 }
 
 

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

@@ -7,6 +7,7 @@ import com.ym.mec.biz.dal.vo.ImLiveBroadcastRoomVo;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.page.PageInfo;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.annotation.Transactional;
 
 
+import java.util.List;
 import java.util.Map;
 import java.util.Map;
 
 
 /**
 /**
@@ -38,5 +39,13 @@ public interface ImLiveRoomReservationService extends IService<ImLiveRoomReserva
      * 预约直播间推送极光
      * 预约直播间推送极光
      */
      */
     void push(ImLiveBroadcastRoom room);
     void push(ImLiveBroadcastRoom room);
+
+    /**
+     * 查询直播间预约人数
+     *
+     * @param roomIdList 房间号
+     * @return
+     */
+    List<ImLiveBroadcastRoomVo> countRoomReservation(List<String> roomIdList);
 }
 }
 
 

+ 30 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImLiveBroadcastRoomServiceImpl.java

@@ -15,6 +15,7 @@ import com.ym.mec.biz.dal.dao.ImLiveBroadcastRoomDao;
 import com.ym.mec.biz.dal.dao.LiveGoodsMapperDao;
 import com.ym.mec.biz.dal.dao.LiveGoodsMapperDao;
 import com.ym.mec.biz.dal.dao.SysConfigDao;
 import com.ym.mec.biz.dal.dao.SysConfigDao;
 import com.ym.mec.biz.dal.dto.ImLiveBroadcastRoomDto;
 import com.ym.mec.biz.dal.dto.ImLiveBroadcastRoomDto;
+import com.ym.mec.biz.dal.dto.RoomReservationUserSearch;
 import com.ym.mec.biz.dal.entity.ImLiveBroadcastRoom;
 import com.ym.mec.biz.dal.entity.ImLiveBroadcastRoom;
 import com.ym.mec.biz.dal.entity.ImLiveBroadcastRoomData;
 import com.ym.mec.biz.dal.entity.ImLiveBroadcastRoomData;
 import com.ym.mec.biz.dal.entity.ImLiveBroadcastRoomMember;
 import com.ym.mec.biz.dal.entity.ImLiveBroadcastRoomMember;
@@ -22,6 +23,7 @@ import com.ym.mec.biz.dal.entity.ImLiveRoomBlack;
 import com.ym.mec.biz.dal.enums.MessageTypeEnum;
 import com.ym.mec.biz.dal.enums.MessageTypeEnum;
 import com.ym.mec.biz.dal.vo.BaseRoomUserVo;
 import com.ym.mec.biz.dal.vo.BaseRoomUserVo;
 import com.ym.mec.biz.dal.vo.ImLiveBroadcastRoomVo;
 import com.ym.mec.biz.dal.vo.ImLiveBroadcastRoomVo;
+import com.ym.mec.biz.dal.vo.RoomReservationUserVo;
 import com.ym.mec.biz.dal.vo.RoomUserInfoVo;
 import com.ym.mec.biz.dal.vo.RoomUserInfoVo;
 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;
@@ -201,6 +203,26 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
         addTimeCons.accept("startTime", "00:00:00");
         addTimeCons.accept("startTime", "00:00:00");
         addTimeCons.accept("endTime", "23:59:59");
         addTimeCons.accept("endTime", "23:59:59");
         IPage<ImLiveBroadcastRoomVo> page = baseMapper.queryPage(pageInfo, param);
         IPage<ImLiveBroadcastRoomVo> page = baseMapper.queryPage(pageInfo, param);
+
+        // 查询预约人数
+        List<ImLiveBroadcastRoomVo> records = page.getRecords();
+        if (CollectionUtils.isEmpty(records)) {
+            return PageUtil.pageInfo(page);
+        }
+
+        List<String> roomIdList = records.stream().map(ImLiveBroadcastRoomVo::getRoomUid).collect(Collectors.toList());
+
+        List<ImLiveBroadcastRoomVo> countRoomReservationList = imLiveRoomReservationService.countRoomReservation(roomIdList);
+        Map<String, List<ImLiveBroadcastRoomVo>> collect = countRoomReservationList.stream()
+                                               .collect(Collectors.groupingBy(ImLiveBroadcastRoomVo::getRoomUid));
+        for (ImLiveBroadcastRoomVo record : records) {
+            List<ImLiveBroadcastRoomVo> imLiveBroadcastRoomVos = collect.get(record.getRoomUid());
+            if (CollectionUtils.isEmpty(imLiveBroadcastRoomVos)) {
+                continue;
+            }
+            record.setRoomReservationNum(imLiveBroadcastRoomVos.get(0).getRoomReservationNum());
+        }
+
         return PageUtil.pageInfo(page);
         return PageUtil.pageInfo(page);
     }
     }
 
 
@@ -1148,6 +1170,14 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
                 .orElseThrow(() -> new BizException("用户id集合不能为空"));
                 .orElseThrow(() -> new BizException("用户id集合不能为空"));
     }
     }
 
 
+    @Override
+    public PageInfo<RoomReservationUserVo> queryRoomUser(RoomReservationUserSearch query) {
+
+
+        IPage<RoomReservationUserVo> page = new Page<>(query.getPage(),query.getRows());
+        return  baseMapper.queryRoomUser(page,query);
+    }
+
     /**
     /**
      * 查询直播间所有用户信息
      * 查询直播间所有用户信息
      *
      *

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

@@ -130,6 +130,13 @@ public class ImLiveRoomReservationServiceImpl extends ServiceImpl<ImLiveRoomRese
                 .eq(ImLiveRoomReservation::getRoomUid, room.getRoomUid()));
                 .eq(ImLiveRoomReservation::getRoomUid, room.getRoomUid()));
     }
     }
 
 
+    @Override
+    public List<ImLiveBroadcastRoomVo> countRoomReservation(List<String> roomIdList) {
+
+        return  baseMapper.selectCountRoomReservation(roomIdList);
+
+    }
+
     private SysUser getUser() {
     private SysUser getUser() {
         return Optional.ofNullable(sysUserFeignService.queryUserInfo())
         return Optional.ofNullable(sysUserFeignService.queryUserInfo())
                 .orElseThrow(() -> new BizException("用户信息获取失败,请刷新页面或者重新登录!"));
                 .orElseThrow(() -> new BizException("用户信息获取失败,请刷新页面或者重新登录!"));

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

@@ -113,4 +113,26 @@
         </where>
         </where>
     </select>
     </select>
 
 
+    <select id="queryRoomUser" resultType="com.ym.mec.biz.dal.vo.RoomReservationUserVo">
+
+        select
+            su.id_ as userId
+            ,su.username_ as username
+            ,su.phone_ as phone
+            ,su.organ_id_ as organId
+            ,o.name_ as organName
+            ,(select group_concat(sub.name_) from subject sub
+                where find_in_set(sub.id_,s.subject_id_list_) and sub.del_flag_ = 0 ) as subjectName
+        from im_live_room_reservation ilrr
+        left join sys_user su on su.id_ = ilrr.user_id_
+        left join organization o on o.id_ = su.organ_id_
+        left join student s on s.user_id_ = su.id_
+        where ilrr.room_uid_ = #{query.roomUid}
+            <if test="query.search != null and query.search != ''">
+                and (su.id_ like concat('%',#{query.search},'%')
+                    or su.phone_ like concat('%',#{query.search},'%')
+                    or su.username_ like concat('%',#{query.search},'%'))
+            </if>
+
+    </select>
 </mapper>
 </mapper>

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

@@ -64,4 +64,21 @@
             </if>
             </if>
         </where>
         </where>
     </select>
     </select>
+
+    <select id="selectCountRoomReservation" resultType="com.ym.mec.biz.dal.vo.ImLiveBroadcastRoomVo">
+        select
+        lbr.room_uid_,
+        count(1)
+        from im_live_room_reservation lbr
+
+        <where>
+            <if test="roomIdList != null and roomIdList.size() != 0">
+                and lbr.room_uid_ in
+                <foreach collection="roomIdList" separator="," close=")" open="(" item="item" >
+                    #{item}
+                </foreach>
+            </if>
+        </where>
+        group by lbr.room_uid_
+    </select>
 </mapper>
 </mapper>

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

@@ -2,13 +2,16 @@ package com.ym.mec.web.controller;
 
 
 
 
 import com.ym.mec.biz.dal.dto.ImLiveBroadcastRoomDto;
 import com.ym.mec.biz.dal.dto.ImLiveBroadcastRoomDto;
+import com.ym.mec.biz.dal.dto.RoomReservationUserSearch;
 import com.ym.mec.biz.dal.vo.BaseRoomUserVo;
 import com.ym.mec.biz.dal.vo.BaseRoomUserVo;
 import com.ym.mec.biz.dal.vo.ImLiveBroadcastRoomVo;
 import com.ym.mec.biz.dal.vo.ImLiveBroadcastRoomVo;
+import com.ym.mec.biz.dal.vo.RoomReservationUserVo;
 import com.ym.mec.biz.service.ImLiveBroadcastRoomService;
 import com.ym.mec.biz.service.ImLiveBroadcastRoomService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.common.entity.ImUserState;
 import com.ym.mec.common.entity.ImUserState;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.page.PageInfo;
+import com.ym.mec.common.page.QueryInfo;
 import com.ym.mec.common.page.WrapperUtil;
 import com.ym.mec.common.page.WrapperUtil;
 import io.swagger.annotations.*;
 import io.swagger.annotations.*;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.security.access.prepost.PreAuthorize;
@@ -51,6 +54,13 @@ public class ImLiveBroadcastRoomController extends BaseController {
         return succeed(imLiveBroadcastRoomService.queryPage(param));
         return succeed(imLiveBroadcastRoomService.queryPage(param));
     }
     }
 
 
+
+    @ApiOperation("直播间预约人员信息")
+    @PostMapping("/query/roomUser")
+    public HttpResponseResult<PageInfo<RoomReservationUserVo>> queryRoomUser(@RequestBody @Valid RoomReservationUserSearch query) {
+        return succeed(imLiveBroadcastRoomService.queryRoomUser(query));
+    }
+
     @ApiOperation("查询房间信息并校验房间是否合规")
     @ApiOperation("查询房间信息并校验房间是否合规")
     @GetMapping("/queryRoom")
     @GetMapping("/queryRoom")
     public HttpResponseResult<ImLiveBroadcastRoomVo> queryRoomAndCheck(@ApiParam(value = "房间uid", required = true) String roomUid,
     public HttpResponseResult<ImLiveBroadcastRoomVo> queryRoomAndCheck(@ApiParam(value = "房间uid", required = true) String roomUid,