Browse Source

feat(business): 新增资讯分类编码唯一性校验

- 在 NewsCategoryMapper 中添加 checkCategoryCodeUnique 方法,用于检查分类编码是否唯一
- 在 NewsCategoryServiceImpl 中,在插入和更新分类时增加编码唯一性校验
- 如果分类编码已存在,抛出 RuntimeException异常
fugui001 3 months ago
parent
commit
1f466c4e8b

+ 8 - 1
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/business/mapper/NewsCategoryMapper.java

@@ -40,6 +40,13 @@ public interface NewsCategoryMapper extends BaseMapperPlus<NewsCategory, NewsCat
     @InterceptorIgnore(tenantLine = "true")
     List<NewsCategoryVo> selectCategoryList(@Param("ew") Wrapper<NewsCategory> wrapper);
 
-
+    /**
+     * 检查分类编码是否唯一
+     * @param code 分类编码
+     * @param id 分类ID(更新时传入,新增时不传)
+     * @return 0表示唯一,大于0表示已存在
+     */
+    @InterceptorIgnore(tenantLine = "true")
+    int checkCategoryCodeUnique(@Param("code") String code, @Param("id") Long id);
 
 }

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

@@ -93,6 +93,10 @@ public class NewsCategoryServiceImpl implements INewsCategoryService {
     public Boolean insertByBo(NewsCategoryBo bo) {
         NewsCategory add = MapstructUtils.convert(bo, NewsCategory.class);
         validEntityBeforeSave(add);
+        //校验对应code唯一
+        if (baseMapper.checkCategoryCodeUnique(add.getCode(),bo.getId()) >0) {
+            throw new RuntimeException("唯一编码已存在");
+        }
         boolean flag = baseMapper.insertCategory(add) > 0;
         if (flag) {
             bo.setId(add.getId());
@@ -110,6 +114,10 @@ public class NewsCategoryServiceImpl implements INewsCategoryService {
     public Boolean updateByBo(NewsCategoryBo bo) {
         NewsCategory update = MapstructUtils.convert(bo, NewsCategory.class);
         validEntityBeforeSave(update);
+        //校验对应code唯一
+        if (baseMapper.checkCategoryCodeUnique(bo.getCode(),bo.getId()) >0) {
+            throw new RuntimeException("唯一编码已存在");
+        }
         return baseMapper.updateCategoryById(update) > 0;
     }
 

+ 9 - 0
ruoyi-modules/ruoyi-system/src/main/resources/mapper/business/NewsCategoryMapper.xml

@@ -93,5 +93,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         </where>
     </delete>
 
+    <!-- 检查分类编码是否唯一 -->
+    <select id="checkCategoryCodeUnique" parameterType="map" resultType="int">
+        SELECT COUNT(*)
+        FROM news_category
+        WHERE code = #{code}
+        <if test="id != null and id != ''">
+            AND id != #{id}
+        </if>
+    </select>
 
 </mapper>