|
@@ -2,6 +2,7 @@ package com.ym.mec.biz.service.impl;
|
|
|
|
|
|
import com.alibaba.fastjson.JSON;
|
|
import com.alibaba.fastjson.JSON;
|
|
import com.alibaba.fastjson.JSONObject;
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
@@ -86,6 +87,8 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
|
|
private ImLiveRoomBlackService imLiveRoomBlackService;
|
|
private ImLiveRoomBlackService imLiveRoomBlackService;
|
|
@Autowired
|
|
@Autowired
|
|
private EmployeeService employeeService;
|
|
private EmployeeService employeeService;
|
|
|
|
+ @Autowired
|
|
|
|
+ private ImLiveRoomPurviewService imLiveRoomPurviewService;
|
|
|
|
|
|
//待替换的变量
|
|
//待替换的变量
|
|
public static final String USER_ID = "${userId}";
|
|
public static final String USER_ID = "${userId}";
|
|
@@ -227,6 +230,7 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+ param.put("userId", sysUser.getId());
|
|
IPage<ImLiveBroadcastRoomVo> page = baseMapper.queryPage(pageInfo, param);
|
|
IPage<ImLiveBroadcastRoomVo> page = baseMapper.queryPage(pageInfo, param);
|
|
|
|
|
|
// 查询预约人数
|
|
// 查询预约人数
|
|
@@ -258,7 +262,7 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
|
|
*/
|
|
*/
|
|
@Override
|
|
@Override
|
|
@Transactional(rollbackFor = Exception.class)
|
|
@Transactional(rollbackFor = Exception.class)
|
|
- public void add(ImLiveBroadcastRoomDto dto) {
|
|
|
|
|
|
+ public ImLiveBroadcastRoomVo add(ImLiveBroadcastRoomDto dto) {
|
|
SysUser sysUser = getSysUser(dto.getSpeakerId());
|
|
SysUser sysUser = getSysUser(dto.getSpeakerId());
|
|
Date now = new Date();
|
|
Date now = new Date();
|
|
if (now.getTime() > dto.getLiveStartTime().getTime()) {
|
|
if (now.getTime() > dto.getLiveStartTime().getTime()) {
|
|
@@ -275,6 +279,7 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
|
|
obj.setCreatedBy(getSysUser().getId());
|
|
obj.setCreatedBy(getSysUser().getId());
|
|
obj.setCreatedTime(now);
|
|
obj.setCreatedTime(now);
|
|
this.save(obj);
|
|
this.save(obj);
|
|
|
|
+ return getImLiveBroadcastRoomVo(roomUid);
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -284,42 +289,104 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
|
|
*/
|
|
*/
|
|
@Override
|
|
@Override
|
|
@Transactional(rollbackFor = Exception.class)
|
|
@Transactional(rollbackFor = Exception.class)
|
|
- public void update(ImLiveBroadcastRoomDto dto) {
|
|
|
|
|
|
+ public ImLiveBroadcastRoomVo update(ImLiveBroadcastRoomDto dto) {
|
|
Date now = new Date();
|
|
Date now = new Date();
|
|
Integer userId = getSysUser().getId();
|
|
Integer userId = getSysUser().getId();
|
|
ImLiveBroadcastRoom obj = this.getById(dto.getId());
|
|
ImLiveBroadcastRoom obj = this.getById(dto.getId());
|
|
obj.setUpdatedBy(userId);
|
|
obj.setUpdatedBy(userId);
|
|
obj.setUpdatedTime(now);
|
|
obj.setUpdatedTime(now);
|
|
- //如果直播已经则只能修改是否全员禁麦 和聊天功能
|
|
|
|
|
|
+ //如果直播已经开始则只能修改是否全员禁麦 和聊天功能
|
|
if (obj.getLiveState() == 1) {
|
|
if (obj.getLiveState() == 1) {
|
|
obj.setRoomConfig(JSONObject.toJSONString(dto.getRoomConfig()));
|
|
obj.setRoomConfig(JSONObject.toJSONString(dto.getRoomConfig()));
|
|
this.updateById(obj);
|
|
this.updateById(obj);
|
|
- return;
|
|
|
|
|
|
+ return getImLiveBroadcastRoomVo(obj.getRoomUid());
|
|
}
|
|
}
|
|
if (now.getTime() > dto.getLiveStartTime().getTime()) {
|
|
if (now.getTime() > dto.getLiveStartTime().getTime()) {
|
|
throw new BizException("设置的直播开始时间不能小于当前时间");
|
|
throw new BizException("设置的直播开始时间不能小于当前时间");
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+ //本次修改后的类型
|
|
String popularizeType = dto.getPopularizeType();
|
|
String popularizeType = dto.getPopularizeType();
|
|
|
|
+ BeanUtils.copyProperties(dto, obj);
|
|
|
|
+ //修改-删除直播可见权限部分数据
|
|
|
|
+ deleteRoomPurview(obj, popularizeType);
|
|
|
|
+ //添加直播间可见权限-只处理了群组和学生可是权限-其他的走原来的方式
|
|
|
|
+ insertGroupStudentPurview(dto, userId, obj.getRoomUid());
|
|
|
|
+
|
|
|
|
+ obj.setRoomConfig(JSONObject.toJSONString(dto.getRoomConfig()));
|
|
|
|
+ log.info("update room >>> :{}", JSONObject.toJSONString(obj));
|
|
|
|
+ this.updateById(obj);
|
|
|
|
+ return getImLiveBroadcastRoomVo(obj.getRoomUid());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ //添加直播间可见权限-只处理了群组和学生可是权限
|
|
|
|
+ private void insertGroupStudentPurview(ImLiveBroadcastRoomDto dto, Integer userId, String roomUid) {
|
|
|
|
+ Date now = new Date();
|
|
|
|
+ if (WrapperUtil.checkStr(dto.getPopularizeType(), ImLiveBroadcastRoom.GROUP, ImLiveBroadcastRoom.STUDENT)) {
|
|
|
|
+ List<String> bizIdList = new ArrayList<>();
|
|
|
|
+ if (ImLiveBroadcastRoom.GROUP.equals(dto.getPopularizeType())) {
|
|
|
|
+ bizIdList = WrapperUtil.toList(dto.getPopularizeGroupIds());
|
|
|
|
+ }
|
|
|
|
+ if (ImLiveBroadcastRoom.STUDENT.equals(dto.getPopularizeType())) {
|
|
|
|
+ bizIdList = WrapperUtil.toList(dto.getPopularizeStudentIds());
|
|
|
|
+ }
|
|
|
|
+ if (CollectionUtils.isEmpty(bizIdList)) {
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ List<ImLiveRoomPurview> collect = bizIdList.stream().map((id) -> {
|
|
|
|
+ ImLiveRoomPurview imLiveRoomPurview = new ImLiveRoomPurview();
|
|
|
|
+ imLiveRoomPurview.setRoomUid(roomUid);
|
|
|
|
+ imLiveRoomPurview.setBizId(id);
|
|
|
|
+ imLiveRoomPurview.setType(dto.getPopularizeType());
|
|
|
|
+ imLiveRoomPurview.setCreatedBy(userId);
|
|
|
|
+ imLiveRoomPurview.setCreatedTime(now);
|
|
|
|
+ return imLiveRoomPurview;
|
|
|
|
+ }).collect(Collectors.toList());
|
|
|
|
+ Lists.partition(collect, 50).forEach(list -> imLiveRoomPurviewService.saveBatch(list));
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void deleteRoomPurview(ImLiveBroadcastRoom obj, String popularizeType) {
|
|
|
|
+ LambdaQueryWrapper<ImLiveRoomPurview> queryWrapper = null;
|
|
switch (popularizeType) {
|
|
switch (popularizeType) {
|
|
case ImLiveBroadcastRoom.ALL:
|
|
case ImLiveBroadcastRoom.ALL:
|
|
- dto.setPopularizeOrgIds(null);
|
|
|
|
- dto.setPopularizeSchoolIds(null);
|
|
|
|
- dto.setPopularizeTeamIds(null);
|
|
|
|
|
|
+ obj.setPopularizeOrgIds(null);
|
|
|
|
+ obj.setPopularizeSchoolIds(null);
|
|
|
|
+ obj.setPopularizeTeamIds(null);
|
|
|
|
+ //删除purview表的数据
|
|
|
|
+ queryWrapper = Wrappers.lambdaQuery();
|
|
break;
|
|
break;
|
|
case ImLiveBroadcastRoom.ORGAN:
|
|
case ImLiveBroadcastRoom.ORGAN:
|
|
- dto.setPopularizeSchoolIds(null);
|
|
|
|
- dto.setPopularizeTeamIds(null);
|
|
|
|
|
|
+ obj.setPopularizeSchoolIds(null);
|
|
|
|
+ obj.setPopularizeTeamIds(null);
|
|
|
|
+ //删除purview表中不等于分部的数据
|
|
|
|
+ queryWrapper = Wrappers.<ImLiveRoomPurview>lambdaQuery()
|
|
|
|
+ .ne(ImLiveRoomPurview::getType, ImLiveBroadcastRoom.ORGAN);
|
|
break;
|
|
break;
|
|
case ImLiveBroadcastRoom.SCHOOL:
|
|
case ImLiveBroadcastRoom.SCHOOL:
|
|
- dto.setPopularizeTeamIds(null);
|
|
|
|
|
|
+ obj.setPopularizeTeamIds(null);
|
|
|
|
+ //删除purview表中对应的数据
|
|
|
|
+ queryWrapper = Wrappers.<ImLiveRoomPurview>lambdaQuery()
|
|
|
|
+ .in(ImLiveRoomPurview::getType, ImLiveBroadcastRoom.TEAM, ImLiveBroadcastRoom.GROUP,
|
|
|
|
+ ImLiveBroadcastRoom.STUDENT);
|
|
|
|
+ break;
|
|
|
|
+ case ImLiveBroadcastRoom.TEAM:
|
|
|
|
+ queryWrapper = Wrappers.<ImLiveRoomPurview>lambdaQuery()
|
|
|
|
+ .in(ImLiveRoomPurview::getType, ImLiveBroadcastRoom.SCHOOL, ImLiveBroadcastRoom.GROUP,
|
|
|
|
+ ImLiveBroadcastRoom.STUDENT);
|
|
|
|
+ break;
|
|
|
|
+ case ImLiveBroadcastRoom.GROUP:
|
|
|
|
+ queryWrapper = Wrappers.<ImLiveRoomPurview>lambdaQuery()
|
|
|
|
+ .ne(ImLiveRoomPurview::getType, ImLiveBroadcastRoom.GROUP);
|
|
|
|
+ break;
|
|
|
|
+ case ImLiveBroadcastRoom.STUDENT:
|
|
|
|
+ queryWrapper = Wrappers.<ImLiveRoomPurview>lambdaQuery()
|
|
|
|
+ .ne(ImLiveRoomPurview::getType, ImLiveBroadcastRoom.STUDENT);
|
|
|
|
+ default:
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
-
|
|
|
|
- BeanUtils.copyProperties(dto, obj);
|
|
|
|
- obj.setRoomConfig(JSONObject.toJSONString(dto.getRoomConfig()));
|
|
|
|
- log.info("update room >>> :{}", JSONObject.toJSONString(obj));
|
|
|
|
- this.updateById(obj);
|
|
|
|
|
|
+ if (Objects.nonNull(queryWrapper)) {
|
|
|
|
+ imLiveRoomPurviewService.remove(queryWrapper.eq(ImLiveRoomPurview::getRoomUid, obj.getRoomUid()));
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|