|
@@ -23,15 +23,24 @@ import com.fdkankan.tk.common.util.RedisKeyUtil;
|
|
|
import com.fdkankan.tk.common.util.RoomUtil;
|
|
|
import com.fdkankan.tk.common.util.UploadToOssUtil;
|
|
|
import com.fdkankan.tk.entity.Room;
|
|
|
+import com.fdkankan.tk.entity.RoomLive;
|
|
|
+import com.fdkankan.tk.entity.RoomUser;
|
|
|
import com.fdkankan.tk.entity.WxUser;
|
|
|
import com.fdkankan.tk.exception.BusinessException;
|
|
|
+import com.fdkankan.tk.httpClient.FdKKService;
|
|
|
+import com.fdkankan.tk.httpClient.client.FdKKClient;
|
|
|
+import com.fdkankan.tk.httpClient.request.FdkkLoginRequest;
|
|
|
+import com.fdkankan.tk.httpClient.response.FdkkResponse;
|
|
|
import com.fdkankan.tk.mapper.IRoomMapper;
|
|
|
+import com.fdkankan.tk.mapper.IRoomUserMapper;
|
|
|
import com.fdkankan.tk.request.RoomAddParam;
|
|
|
import com.fdkankan.tk.request.RoomListParam;
|
|
|
+import com.fdkankan.tk.response.RoomAddUserParam;
|
|
|
import com.fdkankan.tk.response.RoomVo;
|
|
|
import com.fdkankan.tk.response.SceneVo;
|
|
|
import com.fdkankan.tk.service.*;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
import org.springframework.beans.BeanUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
@@ -47,6 +56,7 @@ import org.springframework.stereotype.Service;
|
|
|
* @since 2022-09-19
|
|
|
*/
|
|
|
@Service
|
|
|
+@Slf4j
|
|
|
public class RoomServiceImpl extends ServiceImpl<IRoomMapper, Room> implements IRoomService {
|
|
|
|
|
|
@Autowired
|
|
@@ -63,9 +73,39 @@ public class RoomServiceImpl extends ServiceImpl<IRoomMapper, Room> implements I
|
|
|
RedisUtil redisUtil;
|
|
|
@Autowired
|
|
|
IWxUserService wxUserService;
|
|
|
+ @Autowired
|
|
|
+ RoomUtil roomUtil;
|
|
|
+ @Autowired
|
|
|
+ FdKKService fdKKService;
|
|
|
+ @Autowired
|
|
|
+ IRoomUserService roomUserService;
|
|
|
+ @Autowired
|
|
|
+ IRoomLiveService roomLiveService;
|
|
|
+ @Autowired
|
|
|
+ IRoomVisitLogService roomVisitLogService;
|
|
|
|
|
|
@Override
|
|
|
public PageInfo pageList(RoomListParam param, String token,String wxToken) {
|
|
|
+ if(StringUtils.isBlank(token) && StringUtils.isBlank(wxToken) ){
|
|
|
+ Page<Room> page = new Page<>(param.getPageNum(),param.getPageSize());
|
|
|
+ return PageInfo.PageInfo(page);
|
|
|
+ }
|
|
|
+
|
|
|
+ if(StringUtils.isNotBlank(wxToken) ){ //微信小程序调用,返回协作者房间
|
|
|
+ String wxUserId = JwtUtil.getUserName(wxToken);
|
|
|
+ WxUser wxUser = wxUserService.getById(wxUserId);
|
|
|
+ if(wxUser != null){
|
|
|
+ param.setUserName(wxUser.getPhoneNumber());
|
|
|
+ }
|
|
|
+ Page<Room> page = this.getBaseMapper().pageList(new Page<>(param.getPageNum(),param.getPageSize()),param);
|
|
|
+ for (Room record : page.getRecords()) {
|
|
|
+ if(record.getRoomUserId() != null){
|
|
|
+ record.setRoomId(record.getRoomId() + "_"+ record.getRoomUserId());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return PageInfo.PageInfo(page);
|
|
|
+ }
|
|
|
+
|
|
|
LambdaQueryWrapper<Room> wrapper = new LambdaQueryWrapper<>();
|
|
|
if(StringUtils.isNotBlank(token)){
|
|
|
String fdToken = String.format(RedisKey.TOKEN_V3,token);
|
|
@@ -76,18 +116,6 @@ public class RoomServiceImpl extends ServiceImpl<IRoomMapper, Room> implements I
|
|
|
String userName = JwtUtil.getUserName(token);
|
|
|
wrapper.eq(Room::getRoomUserName,userName);
|
|
|
}
|
|
|
- if(StringUtils.isNotBlank(wxToken) ){
|
|
|
- String wxUserId = JwtUtil.getUserName(wxToken);
|
|
|
- WxUser wxUser = wxUserService.getById(wxUserId);
|
|
|
- if(wxUser != null){
|
|
|
- wrapper.eq(Room::getRoomUserName,wxUser.getPhoneNumber());
|
|
|
- }
|
|
|
- }
|
|
|
- if(StringUtils.isBlank(token) && StringUtils.isBlank(wxToken) ){
|
|
|
- Page<Room> page = new Page<>(param.getPageNum(),param.getPageSize());
|
|
|
- return PageInfo.PageInfo(page);
|
|
|
- }
|
|
|
-
|
|
|
|
|
|
if (StringUtils.isNotBlank(param.getRoomTitle()) ) {
|
|
|
wrapper.like(Room::getRoomTitle,param.getRoomTitle());
|
|
@@ -119,8 +147,9 @@ public class RoomServiceImpl extends ServiceImpl<IRoomMapper, Room> implements I
|
|
|
throw new BusinessException(ResultCode.ROOM_ING);
|
|
|
}
|
|
|
}else {
|
|
|
- room.setRoomId(RoomUtil.genRoomId());
|
|
|
+ room.setRoomId(roomUtil.genRoomId());
|
|
|
}
|
|
|
+
|
|
|
if(param.getNumList().size() >0){
|
|
|
List<SceneVo> list = sceneService.getListByNumList(param.getNumList());
|
|
|
if(list.size() >0){
|
|
@@ -129,6 +158,7 @@ public class RoomServiceImpl extends ServiceImpl<IRoomMapper, Room> implements I
|
|
|
}
|
|
|
|
|
|
this.saveOrUpdate(room);
|
|
|
+ roomUserService.updateByUserObjList(param.getUserObjList(),room);
|
|
|
roomNumService.addBatch(room.getRoomId(),param.getNumList());
|
|
|
param.setRoomId(room.getRoomId());
|
|
|
return param;
|
|
@@ -144,6 +174,7 @@ public class RoomServiceImpl extends ServiceImpl<IRoomMapper, Room> implements I
|
|
|
throw new BusinessException(ResultCode.DEL_ROOM_ING);
|
|
|
}
|
|
|
roomNumService.deleteByRoomId(roomId);
|
|
|
+ roomUserService.delByRoomId(roomId);
|
|
|
if(StringUtils.isNotBlank(room.getRoomShareUrl())){
|
|
|
uploadToOssUtil.delete(room.getRoomShareUrl());
|
|
|
}
|
|
@@ -172,6 +203,8 @@ public class RoomServiceImpl extends ServiceImpl<IRoomMapper, Room> implements I
|
|
|
}
|
|
|
|
|
|
roomVo.setSceneData(list);
|
|
|
+ List<RoomUser> roomUserList = roomUserService.getByRoomId(roomId);
|
|
|
+ roomVo.setRoomUserList(roomUserList);
|
|
|
return roomVo;
|
|
|
}
|
|
|
|
|
@@ -237,27 +270,107 @@ public class RoomServiceImpl extends ServiceImpl<IRoomMapper, Room> implements I
|
|
|
return queryPath + ossPath +"?"+System.currentTimeMillis();
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 加入房间,开启带看,退出房间
|
|
|
+ * type 0 加入房间,1退出房间
|
|
|
+ * role follower leader
|
|
|
+ */
|
|
|
@Override
|
|
|
- public void inOrOutRoom(String roomId, String role, Integer type) {
|
|
|
+ public void inOrOutRoom(String roomId, String role, Integer type,String userId) {
|
|
|
if(roomId == null || StringUtils.isBlank(role)
|
|
|
- || ( !role.equals("leader") && !role.equals("follower"))){
|
|
|
+ || ( !role.equals("leader") && !role.equals("follower")) ){
|
|
|
throw new BusinessException(ResultCode.PARAM_MISS);
|
|
|
}
|
|
|
+ String wxRoomId = roomId;
|
|
|
+ String roomUserId = null;
|
|
|
+ if(roomId.contains("_")){
|
|
|
+ roomId = roomId.split("_")[0];
|
|
|
+ roomUserId = roomId.split("_")[1];
|
|
|
+ }
|
|
|
Room room = this.getById(roomId);
|
|
|
if(room == null){
|
|
|
throw new BusinessException(ResultCode.ROOM_MISS);
|
|
|
}
|
|
|
+
|
|
|
+ Date date = com.fdkankan.tk.util.DateUtil.parseTime(room.getUseEndTime());
|
|
|
+ if(date != null && date.getTime() <= new Date().getTime()){
|
|
|
+ throw new BusinessException(ResultCode.ROOM_END_EX);
|
|
|
+ }
|
|
|
+
|
|
|
if(role.equals("follower")){
|
|
|
+ if(type == 0 ){
|
|
|
+ this.roomAddView(roomId);
|
|
|
+ }
|
|
|
+ String liveId = redisUtil.get(RoomUtil.redisKey+"live:"+wxRoomId);
|
|
|
+ if(StringUtils.isNotBlank(liveId)){
|
|
|
+ roomVisitLogService.addLog(Integer.parseInt(liveId),roomId,userId,type);
|
|
|
+ }
|
|
|
return;
|
|
|
}
|
|
|
- if(type == 0 ){
|
|
|
+
|
|
|
+ if(roomUserId != null){ //协作带看
|
|
|
+ RoomUser roomuser = roomUserService.getById(roomUserId);
|
|
|
+ date = com.fdkankan.tk.util.DateUtil.parseTime(roomuser.getUseEndTime());
|
|
|
+ if(date != null && date.getTime() <= new Date().getTime()){
|
|
|
+ throw new BusinessException(ResultCode.ROOM_END_EX);
|
|
|
+ }
|
|
|
+
|
|
|
+ if(type == 0 ){ //加入房间,开启带看
|
|
|
+ roomuser.setRoomStatus(1);
|
|
|
+ }
|
|
|
+ if(type == 1 ){ //离开房间
|
|
|
+ roomuser.setRoomStatus(2);
|
|
|
+ }
|
|
|
+ roomuser.setUpdateTime(null);
|
|
|
+ roomUserService.updateById(roomuser);
|
|
|
+ }
|
|
|
+
|
|
|
+ if(type == 0 ){ //加入房间,开启带看
|
|
|
+ this.roomAddView(roomId);
|
|
|
room.setRoomStatus(1);
|
|
|
+ RoomLive roomLive = roomLiveService.addLiveByRoomId(roomId,roomUserId);
|
|
|
+ roomVisitLogService.addLog(roomLive.getLiveId(),roomId,userId,type);
|
|
|
}
|
|
|
- if(type == 1 ){
|
|
|
+ if(type == 1 ){ //离开房间
|
|
|
room.setRoomStatus(2);
|
|
|
+ String liveId = redisUtil.get(RoomUtil.redisKey+"live:"+wxRoomId);
|
|
|
+ if(StringUtils.isNotBlank(liveId)){
|
|
|
+ roomLiveService.stopByLiveId(liveId);
|
|
|
+ roomVisitLogService.addLog(Integer.parseInt(liveId),roomId,userId,type);
|
|
|
+ }
|
|
|
+ redisUtil.del(RoomUtil.redisKey+"live:"+wxRoomId);
|
|
|
+ }
|
|
|
+
|
|
|
+ if(roomUserId == null){
|
|
|
+ room.setLastLookTime(DateUtil.formatDateTime(new Date()));
|
|
|
+ room.setUpdateTime(null);
|
|
|
+ this.updateById(room);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Long getCountAndTbStatus() {
|
|
|
+ return this.getBaseMapper().getCountAndTbStatus();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<Room> getRunningRoom() {
|
|
|
+ LambdaQueryWrapper<Room> wrapper = new LambdaQueryWrapper<>();
|
|
|
+ wrapper.eq(Room::getRoomStatus,1);
|
|
|
+ return this.list(wrapper);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void stopRoom(Room room) {
|
|
|
+ LambdaUpdateWrapper<Room> wrapper = new LambdaUpdateWrapper<>();
|
|
|
+ wrapper.eq(Room::getRoomId,room.getRoomId());
|
|
|
+ wrapper.set(Room::getRoomStatus,2);
|
|
|
+ this.update(wrapper);
|
|
|
+ List<RoomUser> byRoomId = roomUserService.getByRoomId(room.getRoomId());
|
|
|
+ for (RoomUser roomUser : byRoomId) {
|
|
|
+ roomUserService.stopRoom(roomUser);
|
|
|
}
|
|
|
- room.setLastLookTime(DateUtil.formatDateTime(new Date()));
|
|
|
- room.setUpdateTime(null);
|
|
|
- this.updateById(room);
|
|
|
}
|
|
|
}
|