|
|
@@ -1,5 +1,11 @@
|
|
|
package org.dromara.physical.service.impl;
|
|
|
|
|
|
+import org.dromara.business.domain.bo.UserBo;
|
|
|
+import org.dromara.business.domain.vo.PhysicalCardVo;
|
|
|
+import org.dromara.business.domain.vo.UserVo;
|
|
|
+import org.dromara.business.mapper.PlayerItemsMapper;
|
|
|
+import org.dromara.business.mapper.UserMapper;
|
|
|
+import org.dromara.business.service.IUserService;
|
|
|
import org.dromara.common.core.utils.MapstructUtils;
|
|
|
import org.dromara.common.core.utils.StringUtils;
|
|
|
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
|
|
@@ -9,13 +15,21 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.dromara.physical.domain.PhysicalLeagueTournament;
|
|
|
+import org.dromara.physical.domain.PhysicalPlayerItemActivation;
|
|
|
import org.dromara.physical.domain.PhysicalTournamentMenu;
|
|
|
+import org.dromara.physical.domain.PhysicalTournamentsRegistration;
|
|
|
import org.dromara.physical.domain.bo.PhysicalTournamentMenuBo;
|
|
|
+import org.dromara.physical.domain.vo.PhysicalLeagueTournamentVo;
|
|
|
import org.dromara.physical.domain.vo.PhysicalTournamentMenuVo;
|
|
|
+import org.dromara.physical.mapper.PhysicalLeagueTournamentMapper;
|
|
|
+import org.dromara.physical.mapper.PhysicalPlayerItemActivationMapper;
|
|
|
import org.dromara.physical.mapper.PhysicalTournamentMenuMapper;
|
|
|
+import org.dromara.physical.mapper.PhysicalTournamentsRegistrationMapper;
|
|
|
import org.dromara.physical.service.IPhysicalTournamentMenuService;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
+import java.util.Date;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
import java.util.Collection;
|
|
|
@@ -33,6 +47,16 @@ public class PhysicalTournamentMenuServiceImpl implements IPhysicalTournamentMen
|
|
|
|
|
|
private final PhysicalTournamentMenuMapper baseMapper;
|
|
|
|
|
|
+ private final PhysicalPlayerItemActivationMapper itemActivationMapper;
|
|
|
+
|
|
|
+ private final IUserService userService;
|
|
|
+
|
|
|
+ private final PlayerItemsMapper playerItemsMapper;
|
|
|
+
|
|
|
+ private final PhysicalLeagueTournamentMapper physicalLeagueTournamentMapper;
|
|
|
+
|
|
|
+ private final PhysicalTournamentsRegistrationMapper physicalTournamentsRegistrationMapper;
|
|
|
+
|
|
|
/**
|
|
|
* 查询锦标赛功能菜单配置
|
|
|
*
|
|
|
@@ -151,4 +175,64 @@ public class PhysicalTournamentMenuServiceImpl implements IPhysicalTournamentMen
|
|
|
}
|
|
|
return baseMapper.deleteTournamentMenuById(ids) > 0;
|
|
|
}
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Boolean auditTournamentMenu(PhysicalTournamentMenuBo bo) {
|
|
|
+ PhysicalTournamentMenu update = MapstructUtils.convert(bo, PhysicalTournamentMenu.class);
|
|
|
+ validEntityBeforeSave(update);
|
|
|
+ long currentTimeMillis = System.currentTimeMillis();
|
|
|
+ update.setUpdatedAt(currentTimeMillis);
|
|
|
+ //校验相关key 是否已存在
|
|
|
+ PhysicalTournamentMenuVo physicalTournamentMenuVo = baseMapper.selectTournamentMenuKeyExit(bo.getMenuKey(),bo.getId());
|
|
|
+ if (physicalTournamentMenuVo != null) {
|
|
|
+ throw new RuntimeException("唯一标识key已存在");
|
|
|
+ }
|
|
|
+ //联赛未开启 不能打开 会不会有用户在时间到了的时候再获得一次 也就是在开启菜单的时候
|
|
|
+ List<PhysicalLeagueTournamentVo> physicalLeagueTournamentVoList = physicalLeagueTournamentMapper.selectPhysicalLeagueTournamentSelList();
|
|
|
+ if(physicalLeagueTournamentVoList==null){
|
|
|
+ throw new RuntimeException("联赛未开启");
|
|
|
+ }
|
|
|
+
|
|
|
+ int counts=baseMapper.updateTournamentMenuById(update);
|
|
|
+ if(counts>0){
|
|
|
+ if(bo.getMenuKey().equals("pre_registration_type") && bo.getStatus()==1L){
|
|
|
+ //激活之后 插入预报名记录里面
|
|
|
+
|
|
|
+ //如果是预报名的 查看所有用户是不是有主赛卡,有的话默认激活一张
|
|
|
+ UserBo userBo=new UserBo();
|
|
|
+ List<UserVo> userVoList = userService.queryUserList(userBo);
|
|
|
+ for (UserVo userVo : userVoList) {
|
|
|
+ List<PhysicalCardVo> cardVoUserList = playerItemsMapper.findCardTypeByUserList(userVo.getId(),"main_tournament","");
|
|
|
+ if(!cardVoUserList.isEmpty()){
|
|
|
+ // 随机选择一张用户的主赛卡进行激活
|
|
|
+ int randomIndex = (int) (Math.random() * cardVoUserList.size());
|
|
|
+ PhysicalCardVo selectedCard = cardVoUserList.get(randomIndex);
|
|
|
+ PhysicalPlayerItemActivation physicalPlayerItemActivation = new PhysicalPlayerItemActivation();
|
|
|
+ physicalPlayerItemActivation.setPlayerId(userVo.getId());
|
|
|
+ physicalPlayerItemActivation.setOriginalItemId(selectedCard.getItemId());
|
|
|
+ physicalPlayerItemActivation.setOriginalItemName(selectedCard.getItemName());
|
|
|
+ physicalPlayerItemActivation.setActivationTime(new Date());
|
|
|
+ physicalPlayerItemActivation.setActiveStatus("active");
|
|
|
+ physicalPlayerItemActivation.setOperatorType("admin");
|
|
|
+ physicalPlayerItemActivation.setBusinessType("web_action");
|
|
|
+ physicalPlayerItemActivation.setCreatedAt(new Date());
|
|
|
+ physicalPlayerItemActivation.setReason("预赛报名随机激活主赛相关道具");
|
|
|
+ physicalPlayerItemActivation.setLeagueTournamentId(physicalLeagueTournamentVoList.get(0).getId());
|
|
|
+ physicalPlayerItemActivation.setUpdatedAt(new Date());
|
|
|
+ itemActivationMapper.insertPlayerItemActivation(physicalPlayerItemActivation);
|
|
|
+
|
|
|
+ PhysicalTournamentsRegistration physicalTournamentsRegistration=new PhysicalTournamentsRegistration();
|
|
|
+ physicalTournamentsRegistration.setLeagueTournamentId(physicalLeagueTournamentVoList.get(0).getId());
|
|
|
+ physicalTournamentsRegistration.setCreatedAt(new Date());
|
|
|
+ physicalTournamentsRegistration.setUserId(userVo.getId());
|
|
|
+ physicalTournamentsRegistration.setAutoStatus(1);
|
|
|
+ physicalTournamentsRegistration.setStatus("approved");
|
|
|
+ physicalTournamentsRegistrationMapper.insertPhysicalTournamentsRegistration(physicalTournamentsRegistration);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return counts > 0;
|
|
|
+ }
|
|
|
+
|
|
|
}
|