|
@@ -0,0 +1,139 @@
|
|
|
+package com.zanxiang.game.module.manage.service.impl;
|
|
|
+
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
+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.manage.pojo.params.GamePolicyConfigAddOrUpdateParam;
|
|
|
+import com.zanxiang.game.module.manage.pojo.params.GamePolicyConfigListParam;
|
|
|
+import com.zanxiang.game.module.manage.pojo.vo.GamePolicyConfigInnerObjVO;
|
|
|
+import com.zanxiang.game.module.manage.pojo.vo.GamePolicyConfigListVO;
|
|
|
+import com.zanxiang.game.module.manage.service.IGamePolicyConfigService;
|
|
|
+import com.zanxiang.game.module.manage.service.IGameSupperService;
|
|
|
+import com.zanxiang.game.module.mybatis.entity.GamePolicyConfig;
|
|
|
+import com.zanxiang.game.module.mybatis.entity.GameSupper;
|
|
|
+import com.zanxiang.game.module.mybatis.mapper.GamePolicyConfigMapper;
|
|
|
+import com.zanxiang.module.util.JsonUtil;
|
|
|
+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.stereotype.Service;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
+
|
|
|
+import java.time.LocalDateTime;
|
|
|
+import java.util.Map;
|
|
|
+
|
|
|
+/**
|
|
|
+ * @author tianhua
|
|
|
+ * @version 1.0
|
|
|
+ * @description: TODO
|
|
|
+ * @date 2023/11/29 14:25
|
|
|
+ */
|
|
|
+@Service
|
|
|
+@Slf4j
|
|
|
+public class GamePolicyConfigServiceImpl extends ServiceImpl<GamePolicyConfigMapper, GamePolicyConfig> implements IGamePolicyConfigService {
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private IGameSupperService gameSupperService;
|
|
|
+
|
|
|
+ @DubboReference(providedBy = ErpServer.SERVER_DUBBO_NAME)
|
|
|
+ private ISysUserRpc sysUserRpc;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public boolean addOrUpdate(GamePolicyConfigAddOrUpdateParam param) {
|
|
|
+ if (param.getAmount() == null && param.getTime() == null) {
|
|
|
+ throw new BaseException("策略配置的金额和时间不能同时为空,请重新输入。");
|
|
|
+ }
|
|
|
+ //当前操作人员
|
|
|
+ //Long sysUserId = SecurityUtil.getUserId();
|
|
|
+ //当前操作时间
|
|
|
+ LocalDateTime now = LocalDateTime.now();
|
|
|
+
|
|
|
+ //生成配置json字符串
|
|
|
+ String configParam = JsonUtil.toString(GamePolicyConfigInnerObjVO.builder()
|
|
|
+ .amount(param.getAmount())
|
|
|
+ .time(param.getTime())
|
|
|
+ .build());
|
|
|
+
|
|
|
+ int count = this.count(new LambdaQueryWrapper<GamePolicyConfig>()
|
|
|
+ .ne(param.getId() != null, GamePolicyConfig::getId, param.getId())
|
|
|
+ .eq(GamePolicyConfig::getSuperGameId, param.getSuperGameId())
|
|
|
+ .eq(GamePolicyConfig::getType, param.getType())
|
|
|
+ .eq(GamePolicyConfig::getConfigParam, configParam)
|
|
|
+ .eq(GamePolicyConfig::getEnabled, true));
|
|
|
+
|
|
|
+ if (count > 0) {
|
|
|
+ throw new BaseException("该游戏策略配置已经设置过,请勿重复设置");
|
|
|
+ }
|
|
|
+
|
|
|
+ GamePolicyConfig gamePolicyConfig = GamePolicyConfig.builder()
|
|
|
+ .superGameId(param.getSuperGameId())
|
|
|
+ .type(param.getType())
|
|
|
+ .configParam(configParam)
|
|
|
+ .updateBy(2L) // 测试用2
|
|
|
+ .updateTime(now)
|
|
|
+ .build();
|
|
|
+
|
|
|
+ if (param.getId() != null) {
|
|
|
+ //id不为空,表示修改配置
|
|
|
+ gamePolicyConfig.setId(param.getId());
|
|
|
+ return updateById(gamePolicyConfig);
|
|
|
+ }
|
|
|
+
|
|
|
+ //id为空,表示新增配置
|
|
|
+ gamePolicyConfig.setCreateBy(1L); //测试用1
|
|
|
+ gamePolicyConfig.setCreateTime(now);
|
|
|
+ return save(gamePolicyConfig);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public boolean deleteById(Long id) {
|
|
|
+ //当前操作人员
|
|
|
+ //Long sysUserId = SecurityUtil.getUserId();
|
|
|
+ return update(new LambdaUpdateWrapper<GamePolicyConfig>()
|
|
|
+ .set(GamePolicyConfig::getEnabled, false)
|
|
|
+ .set(GamePolicyConfig::getUpdateBy, 3L) //测试用3
|
|
|
+ .set(GamePolicyConfig::getUpdateTime, LocalDateTime.now())
|
|
|
+ .eq(GamePolicyConfig::getId, id));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public IPage<GamePolicyConfigListVO> listOfPage(GamePolicyConfigListParam param) {
|
|
|
+ return page(param.toPage(), new LambdaQueryWrapper<GamePolicyConfig>()
|
|
|
+ .eq(param.getSuperGameId() != null, GamePolicyConfig::getSuperGameId, param.getSuperGameId())
|
|
|
+ .eq(param.getType() != null , GamePolicyConfig::getType, param.getType())
|
|
|
+ .eq(GamePolicyConfig::getEnabled, true))
|
|
|
+ .convert(this::toVO);
|
|
|
+ }
|
|
|
+
|
|
|
+ private GamePolicyConfigListVO toVO(GamePolicyConfig vo) {
|
|
|
+ //得到配置参数map
|
|
|
+ Map<String, String> configParam = JsonUtil.toMap(vo.getConfigParam(), Map.class, String.class);
|
|
|
+ String amount = configParam.get("amount");
|
|
|
+ String time = configParam.get("time");
|
|
|
+ GameSupper gameSupper = gameSupperService.getById(vo.getSuperGameId());
|
|
|
+ return GamePolicyConfigListVO.builder()
|
|
|
+ .id(vo.getId())
|
|
|
+ .superGameId(vo.getSuperGameId())
|
|
|
+ .superGameName(null == gameSupper ? null : gameSupper.getName())
|
|
|
+ .type(vo.getType())
|
|
|
+ .amount(amount == null ? null : Long.valueOf(amount))
|
|
|
+ .time(time == null ? null : Long.valueOf(time))
|
|
|
+ .createBy(vo.getCreateBy())
|
|
|
+ .createName("创建者")
|
|
|
+ .createTime(vo.getCreateTime())
|
|
|
+ .updateBy(vo.getUpdateBy())
|
|
|
+ .updateName("修改者")
|
|
|
+ .updateTime(vo.getUpdateTime())
|
|
|
+ .build();
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+}
|