123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149 |
- package com.fdkankan.tk.service.impl;
- import java.util.Date;
- import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
- import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
- import com.fdkankan.redis.util.RedisUtil;
- import com.fdkankan.tk.common.ResultCode;
- import com.fdkankan.tk.common.util.RoomUtil;
- import com.fdkankan.tk.entity.Room;
- import com.fdkankan.tk.entity.RoomUser;
- import com.fdkankan.tk.exception.BusinessException;
- import com.fdkankan.tk.httpClient.FdKKService;
- import com.fdkankan.tk.mapper.IRoomUserMapper;
- import com.fdkankan.tk.response.RoomAddUserParam;
- import com.fdkankan.tk.service.IRoomDanmakuService;
- import com.fdkankan.tk.service.IRoomUserService;
- import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
- import com.fdkankan.tk.service.IRoomVisitLogService;
- import org.apache.commons.lang3.StringUtils;
- import org.springframework.beans.BeanUtils;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Set;
- import java.util.stream.Collectors;
- /**
- * <p>
- * 服务实现类
- * </p>
- *
- * @author
- * @since 2023-02-28
- */
- @Service
- public class RoomUserServiceImpl extends ServiceImpl<IRoomUserMapper, RoomUser> implements IRoomUserService {
- @Autowired
- FdKKService fdKKService;
- @Autowired
- IRoomVisitLogService roomVisitLogService;
- @Autowired
- IRoomDanmakuService roomDanmakuService;
- @Autowired
- RedisUtil redisUtil;
- @Override
- public void updateByUserObjList(List<RoomUser> userObjList, Room room) {
- if(userObjList == null || userObjList.size() <=0){
- this.delByRoomId(room.getRoomId());
- return;
- }
- HashMap<String,RoomUser> roomUserHashMap = this.getMapByRoomId(room.getRoomId());
- if(roomUserHashMap.size() >0){ //删除数据库中多余的userName
- Set<String> dbUserName = roomUserHashMap.keySet();
- Set<String> userNameSet = userObjList.stream().map(RoomUser::getUserName).collect(Collectors.toSet());
- if(userNameSet.size() <=0){
- this.delByRoomId(room.getRoomId());
- return;
- }
- List<String> delUserName = new ArrayList<>();
- for (String userName : dbUserName) {
- if(!userNameSet.contains(userName)){
- delUserName.add(userName);
- }
- }
- this.delByUserNameList(delUserName,room.getRoomId());
- }
- List<RoomUser> roomUserList = new ArrayList<>();
- for (RoomUser roomUser : userObjList) {
- roomUser.setRoomId(room.getRoomId());
- RoomUser dbRoomUser = roomUserHashMap.get(roomUser.getUserName());
- if(dbRoomUser != null){
- roomUser.setRoomUserId(dbRoomUser.getRoomUserId());
- roomUser.setRoomStatus(dbRoomUser.getRoomStatus());
- }
- roomUserList.add(roomUser);
- }
- this.saveOrUpdateBatch(roomUserList);
- }
- @Override
- public void delByRoomId(String roomId) {
- LambdaQueryWrapper<RoomUser> wrapper = new LambdaQueryWrapper<>();
- wrapper.eq(RoomUser::getRoomId,roomId);
- this.remove(wrapper);
- }
- @Override
- public List<RoomUser> getByRoomId(String roomId) {
- LambdaQueryWrapper<RoomUser> wrapper = new LambdaQueryWrapper<>();
- wrapper.eq(RoomUser::getRoomId,roomId);
- return this.list(wrapper);
- }
- @Override
- public HashMap<String, RoomUser> getMapByRoomId(String roomId) {
- HashMap<String,RoomUser> map = new HashMap<>();
- List<RoomUser> list = this.getByRoomId(roomId);
- list.forEach(entity -> map.put(entity.getUserName(),entity));
- return map;
- }
- @Override
- public void delByUserNameList(List<String> delUserName,String roomId) {
- if(delUserName.size() >0){
- LambdaQueryWrapper<RoomUser> wrapper = new LambdaQueryWrapper<>();
- wrapper.eq(RoomUser::getRoomId,roomId);
- wrapper.in(RoomUser::getUserName,delUserName);
- this.remove(wrapper);
- }
- }
- @Override
- public void stopRoom(RoomUser roomUser) {
- LambdaUpdateWrapper<RoomUser> wrapper = new LambdaUpdateWrapper<>();
- wrapper.eq(RoomUser::getRoomUserId,roomUser.getRoomUserId());
- wrapper.set(RoomUser::getRoomStatus,2);
- wrapper.set(RoomUser::getHostStatus,0);
- wrapper.set(RoomUser::getLastLookTime,new Date());
- this.update(wrapper);
- roomVisitLogService.stopRoom(roomUser.getRoomId(),roomUser.getRoomUserId());
- roomDanmakuService.saveDanMaku(roomUser.getRoomId(),roomUser.getRoomUserId());
- }
- @Override
- public List<RoomUser> getRunningRoom() {
- LambdaQueryWrapper<RoomUser> wrapper = new LambdaQueryWrapper<>();
- wrapper.eq(RoomUser::getRoomStatus,1);
- return list(wrapper);
- }
- @Override
- public RoomUser getByUserName(String roomId,String phoneNumber) {
- LambdaQueryWrapper<RoomUser> wrapper = new LambdaQueryWrapper<>();
- wrapper.eq(RoomUser::getUserName,phoneNumber);
- wrapper.eq(RoomUser::getRoomId,roomId);
- return this.getOne(wrapper);
- }
- }
|