|
@@ -1,13 +1,38 @@
|
|
|
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.core.toolkit.CollectionUtils;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import com.zanxiang.erp.base.ErpServer;
|
|
|
+import com.zanxiang.erp.base.rpc.ISysUserRpc;
|
|
|
+import com.zanxiang.erp.security.util.SecurityUtil;
|
|
|
+import com.zanxiang.game.module.base.pojo.enums.DeleteEnum;
|
|
|
+import com.zanxiang.game.module.base.pojo.enums.ShellControlEnum;
|
|
|
+import com.zanxiang.game.module.base.pojo.enums.StatusEnum;
|
|
|
+import com.zanxiang.game.module.manage.pojo.dto.GameDTO;
|
|
|
+import com.zanxiang.game.module.manage.pojo.params.GameAppletShellAddUpdateParam;
|
|
|
+import com.zanxiang.game.module.manage.pojo.params.GameAppletShellListParam;
|
|
|
+import com.zanxiang.game.module.manage.pojo.vo.GameAppletShellListVO;
|
|
|
import com.zanxiang.game.module.manage.service.IGameAppletShellService;
|
|
|
+import com.zanxiang.game.module.manage.service.IGameService;
|
|
|
import com.zanxiang.game.module.mybatis.entity.GameAppletShell;
|
|
|
import com.zanxiang.game.module.mybatis.mapper.GameAppletShellMapper;
|
|
|
+import com.zanxiang.module.util.bean.BeanUtil;
|
|
|
+import com.zanxiang.module.util.exception.BaseException;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.apache.dubbo.config.annotation.DubboReference;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.context.annotation.Lazy;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import java.time.LocalDateTime;
|
|
|
+import java.util.Arrays;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.Objects;
|
|
|
|
|
|
/**
|
|
|
* @author : lingfeng
|
|
@@ -17,4 +42,100 @@ import java.time.LocalDateTime;
|
|
|
@Slf4j
|
|
|
@Service
|
|
|
public class GameAppletShellServiceImpl extends ServiceImpl<GameAppletShellMapper, GameAppletShell> implements IGameAppletShellService {
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private IGameService gameService;
|
|
|
+
|
|
|
+ @Lazy
|
|
|
+ @DubboReference(providedBy = ErpServer.SERVER_DUBBO_NAME)
|
|
|
+ private ISysUserRpc sysUserRpc;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public Boolean addOrUpdate(GameAppletShellAddUpdateParam param) {
|
|
|
+ //参数判断
|
|
|
+ if (Objects.equals(ShellControlEnum.SHELL_CONTROL_LOW_LEVEL_OPEN.getShellControl(), param.getProControlType())
|
|
|
+ && param.getProControlLevel() == null) {
|
|
|
+ throw new BaseException("参数错误, 控制低等级开启壳, 等级限制不可为空");
|
|
|
+ }
|
|
|
+ //非申诉中, 类型限制
|
|
|
+ if (!param.getIsAppeal() && !ShellControlEnum.SHELL_CONTROL_CLOSE.getShellControl().equals(param.getProControlType())
|
|
|
+ && !ShellControlEnum.SHELL_CONTROL_OPEN.getShellControl().equals(param.getProControlType())) {
|
|
|
+ throw new BaseException("参数错误, 非申诉中状态, 控制类型只能选开启/关闭");
|
|
|
+ }
|
|
|
+ Long id = param.getId();
|
|
|
+ //创建
|
|
|
+ if (id == null) {
|
|
|
+ GameAppletShell gameAppletShell = super.getOne(new LambdaQueryWrapper<GameAppletShell>()
|
|
|
+ .eq(GameAppletShell::getGameId, param.getGameId()));
|
|
|
+ if (gameAppletShell != null) {
|
|
|
+ throw new BaseException("该游戏已经存在壳包配置, 禁止重复添加");
|
|
|
+ }
|
|
|
+ return super.save(this.transform(param));
|
|
|
+ }
|
|
|
+ //更新
|
|
|
+ GameAppletShell gameAppletShell = super.getById(id);
|
|
|
+ if (gameAppletShell == null) {
|
|
|
+ throw new BaseException("参数错误, 游戏壳包配置信息不存在");
|
|
|
+ }
|
|
|
+ gameAppletShell.setIsAppeal(param.getIsAppeal());
|
|
|
+ gameAppletShell.setProVersion(param.getProVersion());
|
|
|
+ gameAppletShell.setArraignVersion(param.getArraignVersion());
|
|
|
+ gameAppletShell.setProControlType(param.getProControlType());
|
|
|
+ gameAppletShell.setProControlLevel(param.getProControlLevel());
|
|
|
+ gameAppletShell.setIsSkipSwitch(param.getIsSkipSwitch());
|
|
|
+ gameAppletShell.setUpdateBy(SecurityUtil.getUserId());
|
|
|
+ gameAppletShell.setUpdateTime(LocalDateTime.now());
|
|
|
+ return super.updateById(gameAppletShell);
|
|
|
+ }
|
|
|
+
|
|
|
+ private GameAppletShell transform(GameAppletShellAddUpdateParam param) {
|
|
|
+ return GameAppletShell.builder()
|
|
|
+ .gameId(param.getGameId())
|
|
|
+ .isAppeal(param.getIsAppeal())
|
|
|
+ .proVersion(param.getProVersion())
|
|
|
+ .arraignVersion(param.getArraignVersion())
|
|
|
+ .proControlType(param.getProControlType())
|
|
|
+ .proControlLevel(param.getProControlLevel())
|
|
|
+ .isSkipSwitch(param.getIsSkipSwitch())
|
|
|
+ .status(StatusEnum.YES.getCode())
|
|
|
+ .isDelete(DeleteEnum.NO.getCode())
|
|
|
+ .createBy(SecurityUtil.getUserId())
|
|
|
+ .createTime(LocalDateTime.now())
|
|
|
+ .createBy(SecurityUtil.getUserId())
|
|
|
+ .updateTime(LocalDateTime.now())
|
|
|
+ .build();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public IPage<GameAppletShellListVO> listOfPage(GameAppletShellListParam param) {
|
|
|
+ return super.page(param.toPage(), new QueryWrapper<GameAppletShell>().lambda()
|
|
|
+ .eq(param.getGameId() != null, GameAppletShell::getGameId, param.getGameId())
|
|
|
+ .orderByDesc(GameAppletShell::getCreateTime)
|
|
|
+ ).convert(this::toVO);
|
|
|
+ }
|
|
|
+
|
|
|
+ private GameAppletShellListVO toVO(GameAppletShell gameAppletShell) {
|
|
|
+ if (gameAppletShell == null) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ GameAppletShellListVO gameAppletShellListVO = BeanUtil.copy(gameAppletShell, GameAppletShellListVO.class);
|
|
|
+ GameDTO gameDTO = gameService.getById(gameAppletShellListVO.getGameId());
|
|
|
+ if (gameDTO != null) {
|
|
|
+ gameAppletShellListVO.setGameName(gameDTO.getName());
|
|
|
+ }
|
|
|
+ Map<Long, String> userNameMap = null;
|
|
|
+ List<Long> userIds = Arrays.asList(gameAppletShellListVO.getCreateBy(), gameAppletShellListVO.getUpdateBy());
|
|
|
+ try {
|
|
|
+ userNameMap = sysUserRpc.getUserNameByIds(userIds).getData();
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("获取投手名字信息异常, userIds : {}, e : {}", userIds, e.getMessage());
|
|
|
+ }
|
|
|
+ if (CollectionUtils.isNotEmpty(userNameMap)) {
|
|
|
+ gameAppletShellListVO.setCreateByName(userNameMap.get(gameAppletShellListVO.getCreateBy()));
|
|
|
+ gameAppletShellListVO.setUpdateByName(userNameMap.get(gameAppletShellListVO.getUpdateBy()));
|
|
|
+ }
|
|
|
+ return gameAppletShellListVO;
|
|
|
+ }
|
|
|
+
|
|
|
}
|