|  | @@ -0,0 +1,97 @@
 | 
	
		
			
				|  |  | +package com.zanxiang.game.module.manage.service.impl;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 | 
	
		
			
				|  |  | +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 | 
	
		
			
				|  |  | +import com.baomidou.mybatisplus.core.metadata.IPage;
 | 
	
		
			
				|  |  | +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 | 
	
		
			
				|  |  | +import com.zanxiang.game.module.base.pojo.enums.DeleteEnum;
 | 
	
		
			
				|  |  | +import com.zanxiang.game.module.manage.pojo.dto.GameDTO;
 | 
	
		
			
				|  |  | +import com.zanxiang.game.module.manage.pojo.params.GameServerAddUpdateParam;
 | 
	
		
			
				|  |  | +import com.zanxiang.game.module.manage.pojo.params.GameServerListParam;
 | 
	
		
			
				|  |  | +import com.zanxiang.game.module.manage.pojo.vo.GameServerListVO;
 | 
	
		
			
				|  |  | +import com.zanxiang.game.module.manage.service.IGameServerService;
 | 
	
		
			
				|  |  | +import com.zanxiang.game.module.manage.service.IGameService;
 | 
	
		
			
				|  |  | +import com.zanxiang.game.module.mybatis.entity.GameServer;
 | 
	
		
			
				|  |  | +import com.zanxiang.game.module.mybatis.mapper.GameServerMapper;
 | 
	
		
			
				|  |  | +import com.zanxiang.module.util.bean.BeanUtil;
 | 
	
		
			
				|  |  | +import com.zanxiang.module.util.exception.BaseException;
 | 
	
		
			
				|  |  | +import lombok.extern.slf4j.Slf4j;
 | 
	
		
			
				|  |  | +import org.apache.logging.log4j.util.Strings;
 | 
	
		
			
				|  |  | +import org.springframework.beans.factory.annotation.Autowired;
 | 
	
		
			
				|  |  | +import org.springframework.stereotype.Service;
 | 
	
		
			
				|  |  | +import org.springframework.transaction.annotation.Transactional;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +import java.time.LocalDateTime;
 | 
	
		
			
				|  |  | +import java.time.LocalTime;
 | 
	
		
			
				|  |  | +import java.util.Objects;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +/**
 | 
	
		
			
				|  |  | + * @author : lingfeng
 | 
	
		
			
				|  |  | + * @time : 2023-08-07
 | 
	
		
			
				|  |  | + * @description : 游戏区服
 | 
	
		
			
				|  |  | + */
 | 
	
		
			
				|  |  | +@Slf4j
 | 
	
		
			
				|  |  | +@Service
 | 
	
		
			
				|  |  | +public class GameServerServiceImpl extends ServiceImpl<GameServerMapper, GameServer> implements IGameServerService {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @Autowired
 | 
	
		
			
				|  |  | +    private IGameService gameService;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @Override
 | 
	
		
			
				|  |  | +    @Transactional(rollbackFor = Exception.class)
 | 
	
		
			
				|  |  | +    public boolean addOrUpdate(GameServerAddUpdateParam param) {
 | 
	
		
			
				|  |  | +        //判断单游戏内区服id不可重复
 | 
	
		
			
				|  |  | +        if (super.count(new LambdaQueryWrapper<GameServer>()
 | 
	
		
			
				|  |  | +                .eq(GameServer::getGameId, param.getGameId())
 | 
	
		
			
				|  |  | +                .eq(GameServer::getServerId, param.getServerId())
 | 
	
		
			
				|  |  | +                .ne(param.getId() != null, GameServer::getId, param.getId())
 | 
	
		
			
				|  |  | +        ) > 0) {
 | 
	
		
			
				|  |  | +            throw new BaseException("该游戏区服id已存在, 禁止添加或者修改");
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        //添加或者更新
 | 
	
		
			
				|  |  | +        return super.saveOrUpdate(this.transform(param));
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    private GameServer transform(GameServerAddUpdateParam param) {
 | 
	
		
			
				|  |  | +        return GameServer.builder()
 | 
	
		
			
				|  |  | +                .id(param.getId())
 | 
	
		
			
				|  |  | +                .gameId(param.getGameId())
 | 
	
		
			
				|  |  | +                .serverId(param.getServerId())
 | 
	
		
			
				|  |  | +                .serverName(param.getServerName())
 | 
	
		
			
				|  |  | +                .nickName(param.getNickName())
 | 
	
		
			
				|  |  | +                .startTime(param.getStartTime())
 | 
	
		
			
				|  |  | +                .isDelete(DeleteEnum.NO.getCode())
 | 
	
		
			
				|  |  | +                .createTime(param.getId() == null ? null : LocalDateTime.now())
 | 
	
		
			
				|  |  | +                .updateTime(LocalDateTime.now())
 | 
	
		
			
				|  |  | +                .build();
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @Override
 | 
	
		
			
				|  |  | +    public IPage<GameServerListVO> listOfPage(GameServerListParam param) {
 | 
	
		
			
				|  |  | +        return page(param.toPage(), new QueryWrapper<GameServer>().lambda()
 | 
	
		
			
				|  |  | +                .eq(param.getGameId() != null, GameServer::getGameId, param.getGameId())
 | 
	
		
			
				|  |  | +                .eq(param.getServerId() != null, GameServer::getServerId, param.getServerId())
 | 
	
		
			
				|  |  | +                .like(Strings.isNotBlank(param.getServerName()), GameServer::getServerName, param.getServerName())
 | 
	
		
			
				|  |  | +                .like(Strings.isNotBlank(param.getNickName()), GameServer::getNickName, param.getNickName())
 | 
	
		
			
				|  |  | +                .ge(param.getStartTime() != null, GameServer::getStartTime, param.getStartTime() == null ? null : LocalDateTime.of(param.getStartTime(), LocalTime.MIN))
 | 
	
		
			
				|  |  | +                .le(param.getEndTime() != null, GameServer::getStartTime, param.getEndTime() == null ? null : LocalDateTime.of(param.getEndTime(), LocalTime.MAX))
 | 
	
		
			
				|  |  | +                .orderByDesc(GameServer::getUpdateTime)
 | 
	
		
			
				|  |  | +        ).convert(this::toVo);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    private GameServerListVO toVo(GameServer gameServer) {
 | 
	
		
			
				|  |  | +        if (Objects.isNull(gameServer)) {
 | 
	
		
			
				|  |  | +            return null;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        GameServerListVO gameServerListVO = BeanUtil.copy(gameServer, GameServerListVO.class);
 | 
	
		
			
				|  |  | +        GameDTO gameDTO = gameService.getById(gameServer.getGameId());
 | 
	
		
			
				|  |  | +        gameServerListVO.setGameName(gameDTO == null ? null : gameDTO.getName());
 | 
	
		
			
				|  |  | +        return gameServerListVO;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @Override
 | 
	
		
			
				|  |  | +    @Transactional(rollbackFor = Exception.class)
 | 
	
		
			
				|  |  | +    public boolean deleteById(Long id) {
 | 
	
		
			
				|  |  | +        return super.removeById(id);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +}
 |