| 
					
				 | 
			
			
				@@ -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; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 |