Просмотр исходного кода

fix(items): 修复道具删除功能并优化验证消息

- 修复删除道具时的数据库约束异常处理,避免直接抛出原始异常
- 添加 Service 异常处理机制,提供更友好的错误提示
- 更新道具类型验证消息,从"道具类型不能为空"改为"类型不能为空"
- 新增主类型必填验证,确保 giftTypeParentId 字段不为空
- 优化删除操作的日志记录和异常捕获逻辑
fugui001 1 неделя назад
Родитель
Сommit
b0b2821f0c

+ 2 - 1
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/business/domain/bo/ItemsBo.java

@@ -38,7 +38,7 @@ public class ItemsBo extends BaseEntity {
     /**
      * 道具类型
      */
-    @NotNull(message = "道具类型不能为空", groups = { AddGroup.class, EditGroup.class })
+    @NotNull(message = "类型不能为空", groups = { AddGroup.class, EditGroup.class })
     private Long itemType;
 
     /**
@@ -76,6 +76,7 @@ public class ItemsBo extends BaseEntity {
 
     private Long effectiveDay;
 
+    @NotNull(message = "主类型不能为空", groups = { AddGroup.class, EditGroup.class })
     private Long giftTypeParentId;
 
     private Long giftTypeChildId;

+ 13 - 1
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/business/service/impl/ItemsServiceImpl.java

@@ -14,6 +14,7 @@ import org.dromara.business.mapper.ItemsMapper;
 import org.dromara.business.service.IItemsService;
 import org.dromara.business.utils.RedisKeys;
 import org.dromara.business.utils.RedisUtil;
+import org.dromara.common.core.exception.ServiceException;
 import org.dromara.common.core.utils.MapstructUtils;
 import org.dromara.common.core.utils.StringUtils;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
@@ -295,7 +296,18 @@ public class ItemsServiceImpl implements IItemsService {
         if(isValid){
             //TODO 做一些业务上的校验,判断是否需要校验
         }
-        return baseMapper.deleteByItemsById(ids) > 0;
+
+        try {
+            int deletedRows = baseMapper.deleteByItemsById(ids);
+            return deletedRows > 0;
+        } catch (Exception e) {
+            // 捕获数据库约束异常
+            if (e.getMessage().contains("constraint") || e.getMessage().contains("foreign key")) {
+                throw new ServiceException("存在关联数据,无法删除该道具!");
+            }
+            log.error("删除道具失败", e);
+            throw new ServiceException("删除失败:" + e.getMessage());
+        }
     }
 
     @Override