|
@@ -1,8 +1,10 @@
|
|
package org.dromara.system.service.impl;
|
|
package org.dromara.system.service.impl;
|
|
|
|
|
|
-import org.dromara.common.core.domain.R;
|
|
|
|
|
|
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
|
|
|
+import jakarta.annotation.PostConstruct;
|
|
import org.dromara.common.core.utils.MapstructUtils;
|
|
import org.dromara.common.core.utils.MapstructUtils;
|
|
import org.dromara.common.core.utils.StringUtils;
|
|
import org.dromara.common.core.utils.StringUtils;
|
|
|
|
+import org.dromara.common.json.utils.JsonUtils;
|
|
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
|
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
|
import org.dromara.common.mybatis.core.page.PageQuery;
|
|
import org.dromara.common.mybatis.core.page.PageQuery;
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
@@ -10,12 +12,15 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
import lombok.RequiredArgsConstructor;
|
|
import lombok.RequiredArgsConstructor;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
+import org.dromara.common.redis.utils.RedisUtils;
|
|
|
|
+import org.dromara.system.domain.constant.GameEventConstant;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
import org.dromara.system.domain.bo.GameEventBo;
|
|
import org.dromara.system.domain.bo.GameEventBo;
|
|
import org.dromara.system.domain.vo.GameEventVo;
|
|
import org.dromara.system.domain.vo.GameEventVo;
|
|
import org.dromara.system.domain.GameEvent;
|
|
import org.dromara.system.domain.GameEvent;
|
|
import org.dromara.system.mapper.GameEventMapper;
|
|
import org.dromara.system.mapper.GameEventMapper;
|
|
import org.dromara.system.service.IGameEventService;
|
|
import org.dromara.system.service.IGameEventService;
|
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import java.util.List;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
import java.util.Map;
|
|
@@ -93,14 +98,14 @@ public class GameEventServiceImpl implements IGameEventService {
|
|
* @return 是否新增成功
|
|
* @return 是否新增成功
|
|
*/
|
|
*/
|
|
@Override
|
|
@Override
|
|
- public Boolean insertByBo(GameEventBo bo) {
|
|
|
|
|
|
+ public Long insertByBo(GameEventBo bo) {
|
|
GameEvent add = MapstructUtils.convert(bo, GameEvent.class);
|
|
GameEvent add = MapstructUtils.convert(bo, GameEvent.class);
|
|
validEntityBeforeSave(add);
|
|
validEntityBeforeSave(add);
|
|
boolean flag = baseMapper.insert(add) > 0;
|
|
boolean flag = baseMapper.insert(add) > 0;
|
|
if (flag) {
|
|
if (flag) {
|
|
- bo.setEventId(add.getEventId());
|
|
|
|
|
|
+ return add.getEventId();
|
|
}
|
|
}
|
|
- return flag;
|
|
|
|
|
|
+ return null;
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -113,7 +118,12 @@ public class GameEventServiceImpl implements IGameEventService {
|
|
public Boolean updateByBo(GameEventBo bo) {
|
|
public Boolean updateByBo(GameEventBo bo) {
|
|
GameEvent update = MapstructUtils.convert(bo, GameEvent.class);
|
|
GameEvent update = MapstructUtils.convert(bo, GameEvent.class);
|
|
validEntityBeforeSave(update);
|
|
validEntityBeforeSave(update);
|
|
- return baseMapper.updateById(update) > 0;
|
|
|
|
|
|
+ boolean result = baseMapper.updateById(update) > 0;
|
|
|
|
+ // 如果修改的是默认赛事,更新缓存
|
|
|
|
+ if ("0".equals(bo.getIsDefault())) {
|
|
|
|
+ RedisUtils.setCacheObject(GameEventConstant.DEFAULT_EVENT_KEY, JsonUtils.toJsonString(update));
|
|
|
|
+ }
|
|
|
|
+ return result;
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -135,6 +145,18 @@ public class GameEventServiceImpl implements IGameEventService {
|
|
if (isValid) {
|
|
if (isValid) {
|
|
//TODO 做一些业务上的校验,判断是否需要校验
|
|
//TODO 做一些业务上的校验,判断是否需要校验
|
|
}
|
|
}
|
|
|
|
+ // 检查删除的赛事中是否包含默认赛事
|
|
|
|
+ LambdaQueryWrapper<GameEvent> lqw = Wrappers.lambdaQuery();
|
|
|
|
+ lqw.in(GameEvent::getEventId, ids);
|
|
|
|
+ lqw.eq(GameEvent::getIsDefault, "0");
|
|
|
|
+ GameEvent defaultEvent = baseMapper.selectOne(lqw);
|
|
|
|
+
|
|
|
|
+ boolean result = baseMapper.deleteByIds(ids) > 0;
|
|
|
|
+
|
|
|
|
+ // 如果删除了默认赛事,清除缓存
|
|
|
|
+ if (defaultEvent != null) {
|
|
|
|
+ RedisUtils.deleteObject(GameEventConstant.DEFAULT_EVENT_KEY);
|
|
|
|
+ }
|
|
return baseMapper.deleteByIds(ids) > 0;
|
|
return baseMapper.deleteByIds(ids) > 0;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -153,4 +175,72 @@ public class GameEventServiceImpl implements IGameEventService {
|
|
.collect(Collectors.toMap(GameEvent::getEventName, GameEvent::getEventId));
|
|
.collect(Collectors.toMap(GameEvent::getEventName, GameEvent::getEventId));
|
|
return idNameMap;
|
|
return idNameMap;
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 初始化默认赛事缓存
|
|
|
|
+ */
|
|
|
|
+ @Override
|
|
|
|
+ public void init() {
|
|
|
|
+ LambdaQueryWrapper<GameEvent> lqw = Wrappers.lambdaQuery();
|
|
|
|
+ lqw.eq(GameEvent::getIsDefault, "0");
|
|
|
|
+ GameEvent defaultEvent = baseMapper.selectOne(lqw);
|
|
|
|
+ if (defaultEvent != null) {
|
|
|
|
+ RedisUtils.setCacheObject(GameEventConstant.DEFAULT_EVENT_KEY, JsonUtils.toJsonString(defaultEvent));
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @PostConstruct
|
|
|
|
+ public void initCache(){
|
|
|
|
+ init();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 获取默认赛事信息
|
|
|
|
+ *
|
|
|
|
+ * @return 默认赛事信息
|
|
|
|
+ */
|
|
|
|
+ @Override
|
|
|
|
+ public GameEventVo getDefaultEvent() {
|
|
|
|
+ String defaultEventJson = RedisUtils.getCacheObject(GameEventConstant.DEFAULT_EVENT_KEY);
|
|
|
|
+ if (StringUtils.isNotEmpty(defaultEventJson)) {
|
|
|
|
+ return JsonUtils.parseObject(defaultEventJson, GameEventVo.class);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 缓存未命中,从数据库查询
|
|
|
|
+ LambdaQueryWrapper<GameEvent> lqw = Wrappers.lambdaQuery();
|
|
|
|
+ lqw.eq(GameEvent::getIsDefault, "0");
|
|
|
|
+ GameEvent defaultEvent = baseMapper.selectOne(lqw);
|
|
|
|
+
|
|
|
|
+ if (defaultEvent != null) {
|
|
|
|
+ // 放入缓存
|
|
|
|
+ RedisUtils.setCacheObject(GameEventConstant.DEFAULT_EVENT_KEY, JsonUtils.toJsonString(defaultEvent));
|
|
|
|
+ return baseMapper.selectVoById(defaultEvent.getEventId());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return null;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 设置默认赛事
|
|
|
|
+ *
|
|
|
|
+ * @param bo 赛事信息
|
|
|
|
+ * @return 更新记录数
|
|
|
|
+ */
|
|
|
|
+ @Override
|
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
|
+ public int updateEventDefault(GameEventBo bo) {
|
|
|
|
+ GameEvent event = MapstructUtils.convert(bo, GameEvent.class);
|
|
|
|
+ // 先将所有赛事设置为非默认
|
|
|
|
+ int row = baseMapper.update(null, new LambdaUpdateWrapper<GameEvent>()
|
|
|
|
+ .set(GameEvent::getIsDefault, "1"));
|
|
|
|
+ // 再将指定赛事设置为默认
|
|
|
|
+ row += baseMapper.updateById(event);
|
|
|
|
+ if (row > 0) {
|
|
|
|
+ // 更新缓存中的默认赛事信息
|
|
|
|
+ GameEvent updatedEvent = baseMapper.selectById(event.getEventId());
|
|
|
|
+ RedisUtils.setCacheObject(GameEventConstant.DEFAULT_EVENT_KEY, JsonUtils.toJsonString(updatedEvent));
|
|
|
|
+ }
|
|
|
|
+ return row;
|
|
|
|
+ }
|
|
}
|
|
}
|