Parcourir la source

feat(business): 增加盲注结构在比赛中的使用校验

- 在修改和删除盲注结构前,检查其是否已被比赛使用
- 若盲注结构已被使用,则禁止修改和删除操作
- 新增 TournamentBlindStructuresMapper 接口方法和对应的 XML 文件查询语句
fugui001 il y a 4 mois
Parent
commit
6588f2c6ac

+ 4 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/business/mapper/TournamentBlindStructuresMapper.java

@@ -24,4 +24,8 @@ public interface TournamentBlindStructuresMapper extends BaseMapperPlus<Tourname
     @InterceptorIgnore(tenantLine = "true")
     TournamentBlindStructuresVo selectTournamentBlindStructureByTournamentId(Long tournamentId);
 
+    @InterceptorIgnore(tenantLine = "true")
+    TournamentBlindStructuresVo selectTournamentBlindStructureByBlindStructureId(Long blindStructureId);
+
+
 }

+ 19 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/business/service/impl/BlindStructuresServiceImpl.java

@@ -5,6 +5,8 @@ import cn.idev.excel.event.AnalysisEventListener;
 import org.apache.commons.collections4.CollectionUtils;
 import org.dromara.business.domain.bo.BlindLevelsBo;
 import org.dromara.business.domain.vo.BlindLevelsImportVo;
+import org.dromara.business.domain.vo.TournamentBlindStructuresVo;
+import org.dromara.business.mapper.TournamentBlindStructuresMapper;
 import org.dromara.business.service.IBlindLevelsService;
 import org.dromara.business.utils.BlindLevelsValidatorUtils;
 import org.dromara.common.core.domain.R;
@@ -50,6 +52,9 @@ public class BlindStructuresServiceImpl implements IBlindStructuresService {
     private final IBlindLevelsService blindLevelsService;
 
     private final UserService userService;
+
+    private final TournamentBlindStructuresMapper tournamentBlindStructuresMapper;
+
     /**
      * 查询【请填写功能名称】
      *
@@ -201,6 +206,13 @@ public class BlindStructuresServiceImpl implements IBlindStructuresService {
     //@Transactional(rollbackFor = Exception.class) // 开启事务
     public R<Boolean> updateByBo(BlindStructuresBo bo, MultipartFile file) {
         try {
+
+            TournamentBlindStructuresVo tournamentBlindStructuresVo = tournamentBlindStructuresMapper.selectTournamentBlindStructureByBlindStructureId(bo.getId());
+            //TODO已经在比赛中使用的盲注禁止删除和修改
+            if(tournamentBlindStructuresVo!=null){
+                return R.fail("该盲注正在使用中,请勿修改");
+            }
+
             // 1. 转换 BO -> PO
             BlindStructures update = MapstructUtils.convert(bo, BlindStructures.class);
             validEntityBeforeSave(update);
@@ -282,6 +294,13 @@ public class BlindStructuresServiceImpl implements IBlindStructuresService {
         if(isValid){
             //TODO 做一些业务上的校验,判断是否需要校验
         }
+        for (Long id : ids) {
+            TournamentBlindStructuresVo tournamentBlindStructuresVo = tournamentBlindStructuresMapper.selectTournamentBlindStructureByBlindStructureId(id);
+            //TODO已经在比赛中使用的盲注禁止删除和修改
+            if(tournamentBlindStructuresVo!=null){
+                return false;
+            }
+        }
         return baseMapper.deleteBlindStructuresByIds(ids) > 0;
     }
 

+ 7 - 0
ruoyi-modules/ruoyi-system/src/main/resources/mapper/business/TournamentBlindStructuresMapper.xml

@@ -23,4 +23,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         WHERE a.tournament_id = #{tournamentId}
     </select>
 
+
+    <select id="selectTournamentBlindStructureByBlindStructureId" resultType="org.dromara.business.domain.vo.TournamentBlindStructuresVo">
+        SELECT  a.tournament_id,a.blind_structure_id,b.name as blindStructuresName
+        FROM tournament_blind_structures a left join blind_structures b on a.blind_structure_id=b.id
+        WHERE a.blind_structure_id = #{blindStructureId}
+    </select>
+
 </mapper>