package com.fdkankan.tk.service.impl;
import java.util.Date;
import java.util.List;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.fdkankan.tk.entity.RoomVisitLog;
import com.fdkankan.tk.mapper.IRoomVisitLogMapper;
import com.fdkankan.tk.response.DataCount;
import com.fdkankan.tk.service.IRoomVisitLogService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
*
* 服务实现类
*
*
* @author
* @since 2023-02-28
*/
@Service
public class RoomVisitLogServiceImpl extends ServiceImpl implements IRoomVisitLogService {
@Override
public void addLog(String roomId,Integer roomUserId, String userId,Integer type,Integer isHost) {
RoomVisitLog roomVisitLog = this.getByLiveIdAndUserId(roomId,roomUserId,userId,type);
if(roomVisitLog == null){
roomVisitLog = new RoomVisitLog();
roomVisitLog.setRoomId(roomId);
roomVisitLog.setRoomUserId(roomUserId);
roomVisitLog.setVisitUserId(userId);
roomVisitLog.setIsHost(isHost);
roomVisitLog.setInRoomTime(new Date());
}
if(type == 1){
roomVisitLog.setUpdateTime(null);
roomVisitLog.setOutRoomTime(new Date());
}
this.saveOrUpdate(roomVisitLog);
}
@Override
public void stopRoom(String roomId,Integer roomUserId) {
LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>();
wrapper.eq(RoomVisitLog::getRoomId,roomId);
if(roomUserId !=null){
wrapper.eq(RoomVisitLog::getRoomUserId,roomUserId);
}else {
wrapper.isNull(RoomVisitLog::getRoomUserId);
}
wrapper.isNull(RoomVisitLog::getOutRoomTime);
wrapper.set(RoomVisitLog::getOutRoomTime,new Date());
this.update(wrapper);
}
private RoomVisitLog getByLiveIdAndUserId(String roomId,Integer roomUserId, String userId,Integer type) {
LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>();
wrapper.eq(RoomVisitLog::getRoomId,roomId);
if(roomUserId !=null){
wrapper.eq(RoomVisitLog::getRoomUserId,roomUserId);
}else {
wrapper.isNull(RoomVisitLog::getRoomUserId);
}
wrapper.eq(RoomVisitLog::getVisitUserId,userId);
if(type == 0){
wrapper.isNull(RoomVisitLog::getInRoomTime);
wrapper.orderByDesc(RoomVisitLog::getInRoomTime);
}
if(type == 1){
wrapper.isNull(RoomVisitLog::getOutRoomTime);
wrapper.orderByDesc(RoomVisitLog::getOutRoomTime);
}
List list = this.list(wrapper);
if(list != null && list.size() >0){
return list.get(0);
}
return null;
}
@Override
public Long manCount(List roomIds) {
return this.getBaseMapper().manCount(roomIds);
}
@Override
public Long getCountByTime(Integer key,List roomIds) {
return this.getBaseMapper().getCountByTime(key,roomIds);
}
@Override
public List getByGroupRoomId(String tb,List roomIds, String startTime, String endTime) {
return this.getBaseMapper().getByGroupRoomId(tb,roomIds,startTime,endTime);
}
@Override
public List getByDGroupRoomId(String tb,List roomIds, String startTime, String endTime) {
return this.getBaseMapper().getByDGroupRoomId(tb,roomIds,startTime,endTime);
}
@Override
public List getGroupByRoomId() {
return this.getBaseMapper().getGroupByRoomId();
}
@Override
public List getByRoomId(String roomId) {
LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>();
wrapper.eq(RoomVisitLog::getRoomId,roomId);
wrapper.eq(RoomVisitLog::getIsHost,1);
wrapper.isNotNull(RoomVisitLog::getOutRoomTime);
return this.list(wrapper);
}
@Override
public List getDataCountTop5(List roomIds) {
return this.getBaseMapper().getDataCountTop5(roomIds);
}
}