diff --git a/ballcat-system/ballcat-system-biz/src/main/java/com/hccake/ballcat/system/manager/SysDictManager.java b/ballcat-system/ballcat-system-biz/src/main/java/com/hccake/ballcat/system/manager/SysDictManager.java index 9f3240d7f3074476618fbf926df33086f2ca19fd..f3ec93f1e34cae319b510c13d7b0e671f0b36bf2 100644 --- a/ballcat-system/ballcat-system-biz/src/main/java/com/hccake/ballcat/system/manager/SysDictManager.java +++ b/ballcat-system/ballcat-system-biz/src/main/java/com/hccake/ballcat/system/manager/SysDictManager.java @@ -2,6 +2,10 @@ package com.hccake.ballcat.system.manager; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.IdUtil; +import com.hccake.ballcat.common.core.exception.BusinessException; +import com.hccake.ballcat.common.model.domain.PageParam; +import com.hccake.ballcat.common.model.domain.PageResult; +import com.hccake.ballcat.common.model.result.BaseResultCode; import com.hccake.ballcat.system.converter.SysDictItemConverter; import com.hccake.ballcat.system.event.DictChangeEvent; import com.hccake.ballcat.system.model.entity.SysDict; @@ -13,11 +17,6 @@ import com.hccake.ballcat.system.model.vo.SysDictItemPageVO; import com.hccake.ballcat.system.model.vo.SysDictPageVO; import com.hccake.ballcat.system.service.SysDictItemService; import com.hccake.ballcat.system.service.SysDictService; -import com.hccake.ballcat.common.core.constant.enums.BooleanEnum; -import com.hccake.ballcat.common.core.exception.BusinessException; -import com.hccake.ballcat.common.model.domain.PageParam; -import com.hccake.ballcat.common.model.domain.PageResult; -import com.hccake.ballcat.common.model.result.BaseResultCode; import lombok.RequiredArgsConstructor; import org.springframework.context.ApplicationEventPublisher; import org.springframework.stereotype.Service; @@ -72,9 +71,6 @@ public class SysDictManager { public boolean updateDictById(SysDict sysDict) { // 查询现有数据 SysDict dict = sysDictService.getById(sysDict.getId()); - if (BooleanEnum.TRUE.getValue() != dict.getEditable()) { - throw new BusinessException(BaseResultCode.LOGIC_CHECK_ERROR.getCode(), "该字典项目不能修改"); - } sysDict.setHashCode(IdUtil.fastSimpleUUID()); boolean result = sysDictService.updateById(sysDict); if (result) { @@ -88,13 +84,11 @@ public class SysDictManager { * @param id 字典id * @return 执行是否成功 */ + @Deprecated @Transactional(rollbackFor = Exception.class) public boolean removeDictById(Integer id) { // 查询现有数据 SysDict dict = sysDictService.getById(id); - if (BooleanEnum.TRUE.getValue() != dict.getEditable()) { - throw new BusinessException(BaseResultCode.LOGIC_CHECK_ERROR.getCode(), "该字典项目不能删除"); - } // 需级联删除对应的字典项 if (sysDictService.removeById(id) && sysDictItemService.removeByDictCode(dict.getCode())) { return true; @@ -104,6 +98,19 @@ public class SysDictManager { } } + /** + * 更新状态 + * @param id 字典id + * @return 执行是否成功 + */ + @Transactional(rollbackFor = Exception.class) + public boolean updateDictStatusById(Integer id, Integer status) { + SysDict sysDict = new SysDict(); + sysDict.setStatus(status); + sysDict.setId(id); + return updateDictById(sysDict); + } + /** * 字典项分页 * @param pageParam 分页属性 @@ -143,11 +150,6 @@ public class SysDictManager { public boolean updateDictItemById(SysDictItem sysDictItem) { // 根据ID查询字典 String dictCode = sysDictItem.getDictCode(); - SysDict dict = sysDictService.getByCode(dictCode); - // 校验是否可编辑 - if (BooleanEnum.TRUE.getValue() != dict.getEditable()) { - throw new BusinessException(BaseResultCode.LOGIC_CHECK_ERROR.getCode(), "该字典项目不能修改"); - } // 更新字典项Hash值 if (!sysDictService.updateHashCode(dictCode)) { return false; @@ -169,11 +171,6 @@ public class SysDictManager { // 根据ID查询字典 SysDictItem dictItem = sysDictItemService.getById(id); String dictCode = dictItem.getDictCode(); - SysDict dict = sysDictService.getByCode(dictCode); - // 校验是否系统内置 - if (BooleanEnum.TRUE.getValue() != dict.getEditable()) { - throw new BusinessException(BaseResultCode.LOGIC_CHECK_ERROR.getCode(), "该字典项目不能删除"); - } // 更新字典项Hash值 if (!sysDictService.updateHashCode(dictCode)) { return false; @@ -205,6 +202,7 @@ public class SysDictManager { dictDataVO.setValueType(sysDict.getValueType()); dictDataVO.setDictCode(sysDict.getCode()); dictDataVO.setHashCode(sysDict.getHashCode()); + dictDataVO.setStatus(sysDict.getStatus()); dictDataVO.setDictItems(setDictItems); list.add(dictDataVO); diff --git a/ballcat-system/ballcat-system-controller/src/main/java/com/hccake/ballcat/system/controller/SysDictController.java b/ballcat-system/ballcat-system-controller/src/main/java/com/hccake/ballcat/system/controller/SysDictController.java index 2a532af1fe4cfd0d1e48f99e8a450802adb8bb35..10928b6e37beb3a49ca3cb8d34375f75d32395d3 100644 --- a/ballcat-system/ballcat-system-controller/src/main/java/com/hccake/ballcat/system/controller/SysDictController.java +++ b/ballcat-system/ballcat-system-controller/src/main/java/com/hccake/ballcat/system/controller/SysDictController.java @@ -102,6 +102,7 @@ public class SysDictController { * @param id id * @return R */ + @Deprecated @DeleteOperationLogging(msg = "通过id删除字典表") @DeleteMapping("/{id}") @PreAuthorize("@per.hasPermission('system:dict:del')") @@ -111,6 +112,21 @@ public class SysDictController { : R.failed(BaseResultCode.UPDATE_DATABASE_ERROR, "通过id删除字典表失败"); } + /** + * 通过id修改字典表状态 + * @param id id + * @return R + */ + @UpdateOperationLogging(msg = "通过id修改字典表状态") + @PatchMapping("/{id}/{status}") + @PreAuthorize("@per.hasPermission('system:dict:updateStatus')") + @Operation(summary = "通过id修改字典表状态", description = "通过id修改字典表状态") + public R updateDictStatusById(@PathVariable("id") Integer id, @PathVariable("status") Integer status) { + return sysDictManager.updateDictStatusById(id, status) ? R.ok() + : R.failed(BaseResultCode.UPDATE_DATABASE_ERROR, "通过id修改字典表状态失败"); + } + + /** * 分页查询 * @param pageParam 分页参数 diff --git a/ballcat-system/ballcat-system-model/src/main/java/com/hccake/ballcat/system/model/entity/SysDict.java b/ballcat-system/ballcat-system-model/src/main/java/com/hccake/ballcat/system/model/entity/SysDict.java index 274544e4747472165399da9aa40d5d347dc5c78b..49e76baf0597f04c1ea1a896f6712b6961d65778 100644 --- a/ballcat-system/ballcat-system-model/src/main/java/com/hccake/ballcat/system/model/entity/SysDict.java +++ b/ballcat-system/ballcat-system-model/src/main/java/com/hccake/ballcat/system/model/entity/SysDict.java @@ -48,10 +48,10 @@ public class SysDict extends LogicDeletedBaseEntity { private String hashCode; /** - * 可编辑的 + * 状态 */ - @Schema(title = "1:是 0:否") - private Integer editable; + @Schema(title = "1:启用 0:禁用") + private Integer status; /** * 数据类型 diff --git a/ballcat-system/ballcat-system-model/src/main/java/com/hccake/ballcat/system/model/vo/DictDataVO.java b/ballcat-system/ballcat-system-model/src/main/java/com/hccake/ballcat/system/model/vo/DictDataVO.java index 8140e9e2c20ad08fbc54e40bd0e3792584f74492..bcab1bf23da0e94aa01afb6f817bc8aecae66475 100644 --- a/ballcat-system/ballcat-system-model/src/main/java/com/hccake/ballcat/system/model/vo/DictDataVO.java +++ b/ballcat-system/ballcat-system-model/src/main/java/com/hccake/ballcat/system/model/vo/DictDataVO.java @@ -20,9 +20,18 @@ public class DictDataVO { @Schema(title = "字典标识") private String dictCode; + /** + * 字典值类型 + */ @Schema(title = "字典值类型") private Integer valueType; + /** + * 状态 + */ + @Schema(title = "状态") + private Integer status; + /** * 字典Hash值 */ diff --git a/ballcat-system/ballcat-system-model/src/main/java/com/hccake/ballcat/system/model/vo/SysDictPageVO.java b/ballcat-system/ballcat-system-model/src/main/java/com/hccake/ballcat/system/model/vo/SysDictPageVO.java index 113150b7b4e98811b98c91a0e32ae54eb8655180..0a80d1446b58197889ee73812d2a77620fa47ca7 100644 --- a/ballcat-system/ballcat-system-model/src/main/java/com/hccake/ballcat/system/model/vo/SysDictPageVO.java +++ b/ballcat-system/ballcat-system-model/src/main/java/com/hccake/ballcat/system/model/vo/SysDictPageVO.java @@ -48,10 +48,10 @@ public class SysDictPageVO { private String remarks; /** - * 可编辑的 + * 状态 */ - @Schema(title = "1:是 0:否") - private Integer editable; + @Schema(title = "1:启用 0:禁用") + private Integer status; /** * 数据类型 diff --git a/doc/update_sql/0.6.0.sql b/doc/update_sql/0.6.0.sql new file mode 100644 index 0000000000000000000000000000000000000000..be7484d96422390db8a5ec37d16e58e46390da26 --- /dev/null +++ b/doc/update_sql/0.6.0.sql @@ -0,0 +1,3 @@ +ALTER TABLE `sys_dict` DROP COLUMN `editable`; +ALTER TABLE `sys_dict` ADD COLUMN `status` tinyint(1) NULL DEFAULT 1 COMMENT '状态 1:启用 0:禁用' AFTER `title`; +INSERT INTO `sys_menu` (`id`, `parent_id`, `title`, `icon`, `permission`, `path`, `target_type`, `uri`, `sort`, `keep_alive`, `hidden`, `type`, `remarks`, `deleted`, `create_by`, `update_by`, `create_time`, `update_time`) VALUES (100505, 100500, '字典状态变更', NULL, 'system:dict:updateStatus', NULL, 1, '', 4, 0, 0, 2, NULL, 0, 1, NULL, '2022-01-05 20:41:08', NULL);