refactor: 优化字典管理相关 API

1.合并 DictResp 及 DictDetailResp
2.合并 DictItemResp 及 DictItemDetailResp
3.字典项增加状态 status 字段
This commit is contained in:
Charles7c 2024-04-11 20:48:14 +08:00
parent f7b5a4ff8d
commit 9ec594509f
20 changed files with 100 additions and 282 deletions

View File

@ -56,11 +56,6 @@ public class CacheConstants {
*/ */
public static final String MENU_KEY_PREFIX = "MENU" + DELIMITER; public static final String MENU_KEY_PREFIX = "MENU" + DELIMITER;
/**
* 字典缓存键前缀
*/
public static final String DICT_KEY_PREFIX = "DICT" + DELIMITER;
/** /**
* 参数缓存键前缀 * 参数缓存键前缀
*/ */

View File

@ -16,14 +16,13 @@
package top.charles7c.continew.admin.system.model.entity; package top.charles7c.continew.admin.system.model.entity;
import java.io.Serial;
import lombok.Data;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import top.charles7c.continew.admin.common.enums.DisEnableStatusEnum;
import top.charles7c.continew.starter.extension.crud.model.entity.BaseDO; import top.charles7c.continew.starter.extension.crud.model.entity.BaseDO;
import java.io.Serial;
/** /**
* 字典项实体 * 字典项实体
* *
@ -62,6 +61,11 @@ public class DictItemDO extends BaseDO {
*/ */
private String description; private String description;
/**
* 状态
*/
private DisEnableStatusEnum status;
/** /**
* 字典ID * 字典ID
*/ */

View File

@ -18,6 +18,8 @@ package top.charles7c.continew.admin.system.model.query;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
import top.charles7c.continew.starter.data.core.annotation.Query;
import top.charles7c.continew.starter.data.core.enums.QueryType;
import java.io.Serial; import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
@ -35,6 +37,19 @@ public class DictItemQuery implements Serializable {
@Serial @Serial
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/**
* 关键词
*/
@Schema(description = "关键词")
@Query(columns = {"label", "description"}, type = QueryType.LIKE)
private String description;
/**
* 状态
*/
@Schema(description = "状态1启用2禁用", example = "1")
private Integer status;
/** /**
* 字典 ID * 字典 ID
*/ */

View File

@ -38,10 +38,9 @@ public class DictQuery implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/** /**
* 名称 * 关键词
*/ */
@Schema(description = "名称") @Schema(description = "关键词")
@Query(columns = {"name", "code", "description"}, type = QueryType.LIKE) @Query(columns = {"name", "code", "description"}, type = QueryType.LIKE)
private String name; private String description;
} }

View File

@ -16,18 +16,17 @@
package top.charles7c.continew.admin.system.model.req; package top.charles7c.continew.admin.system.model.req;
import java.io.Serial;
import jakarta.validation.constraints.*;
import lombok.Data;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.Min;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import org.hibernate.validator.constraints.Length; import org.hibernate.validator.constraints.Length;
import top.charles7c.continew.admin.common.enums.DisEnableStatusEnum;
import top.charles7c.continew.starter.extension.crud.model.req.BaseReq; import top.charles7c.continew.starter.extension.crud.model.req.BaseReq;
import java.io.Serial;
/** /**
* 创建或修改字典项信息 * 创建或修改字典项信息
* *
@ -78,6 +77,12 @@ public class DictItemReq extends BaseReq {
@Length(max = 200, message = "描述长度不能超过 {max} 个字符") @Length(max = 200, message = "描述长度不能超过 {max} 个字符")
private String description; private String description;
/**
* 状态
*/
@Schema(description = "状态1启用2禁用", type = "Integer", allowableValues = {"1", "2"}, example = "1")
private DisEnableStatusEnum status;
/** /**
* 所属字典 * 所属字典
*/ */

View File

@ -1,63 +0,0 @@
/*
* Copyright (c) 2022-present Charles7c Authors. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package top.charles7c.continew.admin.system.model.resp;
import java.io.Serial;
import lombok.Data;
import io.swagger.v3.oas.annotations.media.Schema;
import top.charles7c.continew.starter.extension.crud.model.resp.BaseDetailResp;
/**
* 字典详情信息
*
* @author Charles7c
* @since 2023/9/11 21:29
*/
@Data
@Schema(description = "字典详情信息")
public class DictDetailResp extends BaseDetailResp {
@Serial
private static final long serialVersionUID = 1L;
/**
* 名称
*/
@Schema(description = "名称", example = "公告类型")
private String name;
/**
* 编码
*/
@Schema(description = "编码", example = "announcement_type")
private String code;
/**
* 描述
*/
@Schema(description = "描述", example = "公告类型描述信息")
private String description;
/**
* 是否为系统内置数据
*/
@Schema(description = "是否为系统内置数据", example = "true")
private Boolean isSystem;
}

View File

@ -1,98 +0,0 @@
/*
* Copyright (c) 2022-present Charles7c Authors. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package top.charles7c.continew.admin.system.model.resp;
import java.io.Serial;
import lombok.Data;
import io.swagger.v3.oas.annotations.media.Schema;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import top.charles7c.continew.starter.extension.crud.model.resp.BaseDetailResp;
/**
* 字典项详情信息
*
* @author Charles7c
* @since 2023/9/11 21:29
*/
@Data
@ExcelIgnoreUnannotated
@Schema(description = "字典项详情信息")
public class DictItemDetailResp extends BaseDetailResp {
@Serial
private static final long serialVersionUID = 1L;
/**
* 标签
*/
@Schema(description = "标签", example = "通知")
@ExcelProperty(value = "标签", order = 2)
private String label;
/**
*
*/
@Schema(description = "", example = "1")
@ExcelProperty(value = "", order = 3)
private String value;
/**
* 标签颜色
*/
@Schema(description = "标签颜色", example = "blue")
@ExcelProperty(value = "标签颜色", order = 4)
private String color;
/**
* 排序
*/
@Schema(description = "排序", example = "1")
@ExcelProperty(value = "排序", order = 5)
private Integer sort;
/**
* 描述
*/
@Schema(description = "描述", example = "通知描述信息")
@ExcelProperty(value = "描述", order = 6)
private String description;
/**
* 字典 ID
*/
@Schema(description = "字典 ID", example = "1")
private Long dictId;
/**
* 字典名称
*/
@Schema(hidden = true)
@ExcelProperty(value = "字典名称", order = 7)
private String dictName;
/**
* 字典编码
*/
@Schema(hidden = true)
@ExcelProperty(value = "字典编码", order = 8)
private String dictCode;
}

View File

@ -16,13 +16,14 @@
package top.charles7c.continew.admin.system.model.resp; package top.charles7c.continew.admin.system.model.resp;
import java.io.Serial; import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import top.charles7c.continew.admin.common.enums.DisEnableStatusEnum;
import top.charles7c.continew.starter.extension.crud.converter.ExcelBaseEnumConverter;
import top.charles7c.continew.starter.extension.crud.model.resp.BaseDetailResp;
import top.charles7c.continew.starter.extension.crud.model.resp.BaseResp; import java.io.Serial;
/** /**
* 字典项信息 * 字典项信息
@ -32,7 +33,7 @@ import top.charles7c.continew.starter.extension.crud.model.resp.BaseResp;
*/ */
@Data @Data
@Schema(description = "字典项信息") @Schema(description = "字典项信息")
public class DictItemResp extends BaseResp { public class DictItemResp extends BaseDetailResp {
@Serial @Serial
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
@ -56,14 +57,27 @@ public class DictItemResp extends BaseResp {
private String color; private String color;
/** /**
* 描述 * 状态
*/ */
@Schema(description = "描述", example = "通知描述信息") @Schema(description = "状态1启用2禁用", type = "Integer", allowableValues = {"1", "2"}, example = "1")
private String description; @ExcelProperty(value = "状态", converter = ExcelBaseEnumConverter.class)
private DisEnableStatusEnum status;
/** /**
* 排序 * 排序
*/ */
@Schema(description = "排序", example = "1") @Schema(description = "排序", example = "1")
private Integer sort; private Integer sort;
/**
* 描述
*/
@Schema(description = "描述", example = "通知描述信息")
private String description;
/**
* 字典 ID
*/
@Schema(description = "字典 ID", example = "1")
private Long dictId;
} }

View File

@ -16,13 +16,11 @@
package top.charles7c.continew.admin.system.model.resp; package top.charles7c.continew.admin.system.model.resp;
import java.io.Serial;
import lombok.Data;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import top.charles7c.continew.starter.extension.crud.model.resp.BaseDetailResp;
import top.charles7c.continew.starter.extension.crud.model.resp.BaseResp; import java.io.Serial;
/** /**
* 字典信息 * 字典信息
@ -32,7 +30,7 @@ import top.charles7c.continew.starter.extension.crud.model.resp.BaseResp;
*/ */
@Data @Data
@Schema(description = "字典信息") @Schema(description = "字典信息")
public class DictResp extends BaseResp { public class DictResp extends BaseDetailResp {
@Serial @Serial
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;

View File

@ -20,10 +20,9 @@ import top.charles7c.continew.admin.common.model.resp.LabelValueResp;
import top.charles7c.continew.admin.system.model.entity.DictItemDO; import top.charles7c.continew.admin.system.model.entity.DictItemDO;
import top.charles7c.continew.admin.system.model.query.DictItemQuery; import top.charles7c.continew.admin.system.model.query.DictItemQuery;
import top.charles7c.continew.admin.system.model.req.DictItemReq; import top.charles7c.continew.admin.system.model.req.DictItemReq;
import top.charles7c.continew.admin.system.model.resp.DictItemDetailResp;
import top.charles7c.continew.admin.system.model.resp.DictItemResp; import top.charles7c.continew.admin.system.model.resp.DictItemResp;
import top.charles7c.continew.starter.extension.crud.service.BaseService;
import top.charles7c.continew.starter.data.mybatis.plus.service.IService; import top.charles7c.continew.starter.data.mybatis.plus.service.IService;
import top.charles7c.continew.starter.extension.crud.service.BaseService;
import java.io.Serializable; import java.io.Serializable;
import java.util.List; import java.util.List;
@ -34,15 +33,7 @@ import java.util.List;
* @author Charles7c * @author Charles7c
* @since 2023/9/11 21:29 * @since 2023/9/11 21:29
*/ */
public interface DictItemService extends BaseService<DictItemResp, DictItemDetailResp, DictItemQuery, DictItemReq>, IService<DictItemDO> { public interface DictItemService extends BaseService<DictItemResp, DictItemResp, DictItemQuery, DictItemReq>, IService<DictItemDO> {
/**
* 根据字典 ID 查询
*
* @param dictId 字典 ID
* @return 字典项列表
*/
List<DictItemDetailResp> listByDictId(Long dictId);
/** /**
* 根据字典编码查询 * 根据字典编码查询

View File

@ -19,10 +19,9 @@ package top.charles7c.continew.admin.system.service;
import top.charles7c.continew.admin.system.model.entity.DictDO; import top.charles7c.continew.admin.system.model.entity.DictDO;
import top.charles7c.continew.admin.system.model.query.DictQuery; import top.charles7c.continew.admin.system.model.query.DictQuery;
import top.charles7c.continew.admin.system.model.req.DictReq; import top.charles7c.continew.admin.system.model.req.DictReq;
import top.charles7c.continew.admin.system.model.resp.DictDetailResp;
import top.charles7c.continew.admin.system.model.resp.DictResp; import top.charles7c.continew.admin.system.model.resp.DictResp;
import top.charles7c.continew.starter.extension.crud.service.BaseService;
import top.charles7c.continew.starter.data.mybatis.plus.service.IService; import top.charles7c.continew.starter.data.mybatis.plus.service.IService;
import top.charles7c.continew.starter.extension.crud.service.BaseService;
/** /**
* 字典业务接口 * 字典业务接口
@ -30,4 +29,4 @@ import top.charles7c.continew.starter.data.mybatis.plus.service.IService;
* @author Charles7c * @author Charles7c
* @since 2023/9/11 21:29 * @since 2023/9/11 21:29
*/ */
public interface DictService extends BaseService<DictResp, DictDetailResp, DictQuery, DictReq>, IService<DictDO> {} public interface DictService extends BaseService<DictResp, DictResp, DictQuery, DictReq>, IService<DictDO> {}

View File

@ -23,12 +23,10 @@ import top.charles7c.continew.admin.system.mapper.DictItemMapper;
import top.charles7c.continew.admin.system.model.entity.DictItemDO; import top.charles7c.continew.admin.system.model.entity.DictItemDO;
import top.charles7c.continew.admin.system.model.query.DictItemQuery; import top.charles7c.continew.admin.system.model.query.DictItemQuery;
import top.charles7c.continew.admin.system.model.req.DictItemReq; import top.charles7c.continew.admin.system.model.req.DictItemReq;
import top.charles7c.continew.admin.system.model.resp.DictItemDetailResp;
import top.charles7c.continew.admin.system.model.resp.DictItemResp; import top.charles7c.continew.admin.system.model.resp.DictItemResp;
import top.charles7c.continew.admin.system.service.DictItemService; import top.charles7c.continew.admin.system.service.DictItemService;
import top.charles7c.continew.starter.core.util.validate.CheckUtils; import top.charles7c.continew.starter.core.util.validate.CheckUtils;
import top.charles7c.continew.starter.extension.crud.service.impl.BaseServiceImpl; import top.charles7c.continew.starter.extension.crud.service.impl.BaseServiceImpl;
import top.charles7c.continew.starter.extension.crud.model.query.SortQuery;
import java.io.Serializable; import java.io.Serializable;
import java.util.List; import java.util.List;
@ -41,7 +39,7 @@ import java.util.List;
*/ */
@Service @Service
@RequiredArgsConstructor @RequiredArgsConstructor
public class DictItemServiceImpl extends BaseServiceImpl<DictItemMapper, DictItemDO, DictItemResp, DictItemDetailResp, DictItemQuery, DictItemReq> implements DictItemService { public class DictItemServiceImpl extends BaseServiceImpl<DictItemMapper, DictItemDO, DictItemResp, DictItemResp, DictItemQuery, DictItemReq> implements DictItemService {
@Override @Override
protected void beforeAdd(DictItemReq req) { protected void beforeAdd(DictItemReq req) {
@ -55,17 +53,6 @@ public class DictItemServiceImpl extends BaseServiceImpl<DictItemMapper, DictIte
CheckUtils.throwIf(this.isValueExists(value, id, req.getDictId()), "修改失败,字典值 [{}] 已存在", value); CheckUtils.throwIf(this.isValueExists(value, id, req.getDictId()), "修改失败,字典值 [{}] 已存在", value);
} }
@Override
public List<DictItemDetailResp> listByDictId(Long dictId) {
DictItemQuery dictItemQuery = new DictItemQuery();
dictItemQuery.setDictId(dictId);
SortQuery sortQuery = new SortQuery();
sortQuery.setSort(new String[] {"sort,asc"});
List<DictItemDetailResp> detailList = super.list(dictItemQuery, sortQuery, DictItemDetailResp.class);
detailList.forEach(super::fill);
return detailList;
}
@Override @Override
public List<LabelValueResp<Serializable>> listByDictCode(String dictCode) { public List<LabelValueResp<Serializable>> listByDictCode(String dictCode) {
return baseMapper.listByDictCode(dictCode); return baseMapper.listByDictCode(dictCode);

View File

@ -16,24 +16,18 @@
package top.charles7c.continew.admin.system.service.impl; package top.charles7c.continew.admin.system.service.impl;
import jakarta.servlet.http.HttpServletResponse;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import top.charles7c.continew.admin.system.mapper.DictMapper; import top.charles7c.continew.admin.system.mapper.DictMapper;
import top.charles7c.continew.admin.system.model.entity.DictDO; import top.charles7c.continew.admin.system.model.entity.DictDO;
import top.charles7c.continew.admin.system.model.query.DictQuery; import top.charles7c.continew.admin.system.model.query.DictQuery;
import top.charles7c.continew.admin.system.model.req.DictReq; import top.charles7c.continew.admin.system.model.req.DictReq;
import top.charles7c.continew.admin.system.model.resp.DictDetailResp;
import top.charles7c.continew.admin.system.model.resp.DictItemDetailResp;
import top.charles7c.continew.admin.system.model.resp.DictResp; import top.charles7c.continew.admin.system.model.resp.DictResp;
import top.charles7c.continew.admin.system.service.DictItemService; import top.charles7c.continew.admin.system.service.DictItemService;
import top.charles7c.continew.admin.system.service.DictService; import top.charles7c.continew.admin.system.service.DictService;
import top.charles7c.continew.starter.core.util.validate.CheckUtils; import top.charles7c.continew.starter.core.util.validate.CheckUtils;
import top.charles7c.continew.starter.extension.crud.service.impl.BaseServiceImpl; import top.charles7c.continew.starter.extension.crud.service.impl.BaseServiceImpl;
import top.charles7c.continew.starter.extension.crud.model.query.SortQuery;
import top.charles7c.continew.starter.file.excel.util.ExcelUtils;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Optional; import java.util.Optional;
@ -45,7 +39,7 @@ import java.util.Optional;
*/ */
@Service @Service
@RequiredArgsConstructor @RequiredArgsConstructor
public class DictServiceImpl extends BaseServiceImpl<DictMapper, DictDO, DictResp, DictDetailResp, DictQuery, DictReq> implements DictService { public class DictServiceImpl extends BaseServiceImpl<DictMapper, DictDO, DictResp, DictResp, DictQuery, DictReq> implements DictService {
private final DictItemService dictItemService; private final DictItemService dictItemService;
@ -64,7 +58,7 @@ public class DictServiceImpl extends BaseServiceImpl<DictMapper, DictDO, DictRes
String code = req.getCode(); String code = req.getCode();
CheckUtils.throwIf(this.isCodeExists(code, id), "修改失败,[{}] 已存在", code); CheckUtils.throwIf(this.isCodeExists(code, id), "修改失败,[{}] 已存在", code);
DictDO oldDict = super.getById(id); DictDO oldDict = super.getById(id);
if (oldDict.getIsSystem()) { if (Boolean.TRUE.equals(oldDict.getIsSystem())) {
CheckUtils.throwIfNotEqual(req.getCode(), oldDict.getCode(), "[{}] 是系统内置字典,不允许修改字典编码", oldDict.getName()); CheckUtils.throwIfNotEqual(req.getCode(), oldDict.getCode(), "[{}] 是系统内置字典,不允许修改字典编码", oldDict.getName());
} }
} }
@ -81,21 +75,6 @@ public class DictServiceImpl extends BaseServiceImpl<DictMapper, DictDO, DictRes
dictItemService.deleteByDictIds(ids); dictItemService.deleteByDictIds(ids);
} }
@Override
public void export(DictQuery query, SortQuery sortQuery, HttpServletResponse response) {
List<DictResp> dictList = this.list(query, sortQuery);
List<DictItemDetailResp> dictItemList = new ArrayList<>();
for (DictResp dict : dictList) {
List<DictItemDetailResp> tempDictItemList = dictItemService.listByDictId(dict.getId());
for (DictItemDetailResp dictItem : tempDictItemList) {
dictItem.setDictName(dict.getName());
dictItem.setDictCode(dict.getCode());
dictItemList.add(dictItem);
}
}
ExcelUtils.export(dictItemList, "导出数据", DictItemDetailResp.class, response);
}
/** /**
* 名称是否存在 * 名称是否存在
* *

View File

@ -20,8 +20,6 @@ import cn.dev33.satoken.annotation.SaIgnore;
import cn.hutool.core.lang.tree.Tree; import cn.hutool.core.lang.tree.Tree;
import cn.hutool.core.util.ClassUtil; import cn.hutool.core.util.ClassUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.alicp.jetcache.anno.CachePenetrationProtect;
import com.alicp.jetcache.anno.CacheRefresh;
import com.alicp.jetcache.anno.Cached; import com.alicp.jetcache.anno.Cached;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Parameter;
@ -106,9 +104,6 @@ public class CommonController {
@Operation(summary = "查询字典", description = "查询字典列表") @Operation(summary = "查询字典", description = "查询字典列表")
@Parameter(name = "code", description = "字典编码", example = "announcement_type", in = ParameterIn.PATH) @Parameter(name = "code", description = "字典编码", example = "announcement_type", in = ParameterIn.PATH)
@GetMapping("/dict/{code}") @GetMapping("/dict/{code}")
@CachePenetrationProtect
@CacheRefresh(refresh = 3600, stopRefreshAfterLastAccess = 7200)
@Cached(key = "#code", name = CacheConstants.DICT_KEY_PREFIX)
public R<List<LabelValueResp<Serializable>>> listDict(@PathVariable String code) { public R<List<LabelValueResp<Serializable>>> listDict(@PathVariable String code) {
Optional<Class<?>> enumClassOptional = this.getEnumClassByName(code); Optional<Class<?>> enumClassOptional = this.getEnumClassByName(code);
return R.ok(enumClassOptional.map(this::listEnumDict).orElseGet(() -> dictItemService.listByDictCode(code))); return R.ok(enumClassOptional.map(this::listEnumDict).orElseGet(() -> dictItemService.listByDictCode(code)));

View File

@ -17,16 +17,14 @@
package top.charles7c.continew.admin.webapi.system; package top.charles7c.continew.admin.webapi.system;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import top.charles7c.continew.admin.system.model.query.DictQuery; import top.charles7c.continew.admin.system.model.query.DictQuery;
import top.charles7c.continew.admin.system.model.req.DictReq; import top.charles7c.continew.admin.system.model.req.DictReq;
import top.charles7c.continew.admin.system.model.resp.DictDetailResp;
import top.charles7c.continew.admin.system.model.resp.DictResp; import top.charles7c.continew.admin.system.model.resp.DictResp;
import top.charles7c.continew.admin.system.service.DictService; import top.charles7c.continew.admin.system.service.DictService;
import top.charles7c.continew.starter.extension.crud.annotation.CrudRequestMapping; import top.charles7c.continew.starter.extension.crud.annotation.CrudRequestMapping;
import top.charles7c.continew.starter.extension.crud.controller.BaseController; import top.charles7c.continew.starter.extension.crud.controller.BaseController;
import top.charles7c.continew.starter.extension.crud.enums.Api;
/** /**
* 字典管理 API * 字典管理 API
@ -36,5 +34,5 @@ import top.charles7c.continew.starter.extension.crud.controller.BaseController;
*/ */
@Tag(name = "字典管理 API") @Tag(name = "字典管理 API")
@RestController @RestController
@CrudRequestMapping("/system/dict") @CrudRequestMapping(value = "/system/dict", api = {Api.PAGE, Api.GET, Api.ADD, Api.UPDATE, Api.DELETE})
public class DictController extends BaseController<DictService, DictResp, DictDetailResp, DictQuery, DictReq> {} public class DictController extends BaseController<DictService, DictResp, DictResp, DictQuery, DictReq> {}

View File

@ -17,12 +17,9 @@
package top.charles7c.continew.admin.webapi.system; package top.charles7c.continew.admin.webapi.system;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import top.charles7c.continew.admin.system.model.query.DictItemQuery; import top.charles7c.continew.admin.system.model.query.DictItemQuery;
import top.charles7c.continew.admin.system.model.req.DictItemReq; import top.charles7c.continew.admin.system.model.req.DictItemReq;
import top.charles7c.continew.admin.system.model.resp.DictItemDetailResp;
import top.charles7c.continew.admin.system.model.resp.DictItemResp; import top.charles7c.continew.admin.system.model.resp.DictItemResp;
import top.charles7c.continew.admin.system.service.DictItemService; import top.charles7c.continew.admin.system.service.DictItemService;
import top.charles7c.continew.starter.extension.crud.annotation.CrudRequestMapping; import top.charles7c.continew.starter.extension.crud.annotation.CrudRequestMapping;
@ -38,4 +35,4 @@ import top.charles7c.continew.starter.extension.crud.enums.Api;
@Tag(name = "字典项管理 API") @Tag(name = "字典项管理 API")
@RestController @RestController
@CrudRequestMapping(value = "/system/dict/item", api = {Api.PAGE, Api.GET, Api.ADD, Api.UPDATE, Api.DELETE}) @CrudRequestMapping(value = "/system/dict/item", api = {Api.PAGE, Api.GET, Api.ADD, Api.UPDATE, Api.DELETE})
public class DictItemController extends BaseController<DictItemService, DictItemResp, DictItemDetailResp, DictItemQuery, DictItemReq> {} public class DictItemController extends BaseController<DictItemService, DictItemResp, DictItemResp, DictItemQuery, DictItemReq> {}

View File

@ -124,10 +124,10 @@ VALUES
(547889614262632491, '公告类型', 'announcement_type', NULL, b'1', 1, NOW(), NULL, NULL); (547889614262632491, '公告类型', 'announcement_type', NULL, b'1', 1, NOW(), NULL, NULL);
INSERT INTO `sys_dict_item` INSERT INTO `sys_dict_item`
(`id`, `label`, `value`, `color`, `sort`, `description`, `dict_id`, `create_user`, `create_time`, `update_user`, `update_time`) (`id`, `label`, `value`, `color`, `sort`, `description`, `status`, `dict_id`, `create_user`, `create_time`, `update_user`, `update_time`)
VALUES VALUES
(547889649658363951, '通知', '1', 'blue', 1, NULL, 547889614262632491, 1, NOW(), NULL, NULL), (547889649658363951, '通知', '1', 'blue', 1, NULL, 1, 547889614262632491, 1, NOW(), NULL, NULL),
(547890124537462835, '活动', '2', 'orangered', 2, NULL, 547889614262632491, 1, NOW(), NULL, NULL); (547890124537462835, '活动', '2', 'orangered', 2, NULL, 1, 547889614262632491, 1, NOW(), NULL, NULL);
-- 初始化默认用户和角色关联数据 -- 初始化默认用户和角色关联数据
INSERT INTO `sys_user_role` INSERT INTO `sys_user_role`

View File

@ -151,17 +151,18 @@ CREATE TABLE IF NOT EXISTS `sys_dict` (
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='字典表'; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='字典表';
CREATE TABLE IF NOT EXISTS `sys_dict_item` ( CREATE TABLE IF NOT EXISTS `sys_dict_item` (
`id` bigint(20) NOT NULL COMMENT 'ID', `id` bigint(20) NOT NULL COMMENT 'ID',
`label` varchar(30) NOT NULL COMMENT '标签', `label` varchar(30) NOT NULL COMMENT '标签',
`value` varchar(30) NOT NULL COMMENT '', `value` varchar(30) NOT NULL COMMENT '',
`color` varchar(30) DEFAULT NULL COMMENT '标签颜色', `color` varchar(30) DEFAULT NULL COMMENT '标签颜色',
`sort` int NOT NULL DEFAULT 999 COMMENT '排序', `sort` int NOT NULL DEFAULT 999 COMMENT '排序',
`description` varchar(200) DEFAULT NULL COMMENT '描述', `description` varchar(200) DEFAULT NULL COMMENT '描述',
`dict_id` bigint(20) NOT NULL COMMENT '字典ID', `status` tinyint(1) UNSIGNED NOT NULL DEFAULT 1 COMMENT '状态1启用2禁用',
`create_user` bigint(20) NOT NULL COMMENT '创建人', `dict_id` bigint(20) NOT NULL COMMENT '字典ID',
`create_time` datetime NOT NULL COMMENT '创建时间', `create_user` bigint(20) NOT NULL COMMENT '创建人',
`update_user` bigint(20) DEFAULT NULL COMMENT '修改人', `create_time` datetime NOT NULL COMMENT '创建时间',
`update_time` datetime DEFAULT NULL COMMENT '修改时间', `update_user` bigint(20) DEFAULT NULL COMMENT '修改人',
`update_time` datetime DEFAULT NULL COMMENT '修改时间',
PRIMARY KEY (`id`) USING BTREE, PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `uk_value_dict_id`(`value`, `dict_id`) USING BTREE, UNIQUE INDEX `uk_value_dict_id`(`value`, `dict_id`) USING BTREE,
INDEX `idx_dict_id`(`dict_id`) USING BTREE, INDEX `idx_dict_id`(`dict_id`) USING BTREE,

View File

@ -124,10 +124,10 @@ VALUES
(547889614262632491, '公告类型', 'announcement_type', NULL, true, 1, NOW(), NULL, NULL); (547889614262632491, '公告类型', 'announcement_type', NULL, true, 1, NOW(), NULL, NULL);
INSERT INTO "sys_dict_item" INSERT INTO "sys_dict_item"
("id", "label", "value", "color", "sort", "description", "dict_id", "create_user", "create_time", "update_user", "update_time") ("id", "label", "value", "color", "sort", "description", "status", "dict_id", "create_user", "create_time", "update_user", "update_time")
VALUES VALUES
(547889649658363951, '通知', '1', 'blue', 1, NULL, 547889614262632491, 1, NOW(), NULL, NULL), (547889649658363951, '通知', '1', 'blue', 1, NULL, 547889614262632491, 1, 1, NOW(), NULL, NULL),
(547890124537462835, '活动', '2', 'orangered', 2, NULL, 547889614262632491, 1, NOW(), NULL, NULL); (547890124537462835, '活动', '2', 'orangered', 2, NULL, 547889614262632491, 1, 1, NOW(), NULL, NULL);
-- 初始化默认用户和角色关联数据 -- 初始化默认用户和角色关联数据
INSERT INTO "sys_user_role" INSERT INTO "sys_user_role"

View File

@ -256,6 +256,7 @@ CREATE TABLE IF NOT EXISTS "sys_dict_item" (
"color" varchar(30) DEFAULT NULL, "color" varchar(30) DEFAULT NULL,
"sort" int4 NOT NULL DEFAULT 999, "sort" int4 NOT NULL DEFAULT 999,
"description" varchar(200) DEFAULT NULL, "description" varchar(200) DEFAULT NULL,
"status" int2 NOT NULL DEFAULT 1,
"dict_id" int8 NOT NULL, "dict_id" int8 NOT NULL,
"create_user" int8 NOT NULL, "create_user" int8 NOT NULL,
"create_time" timestamp NOT NULL, "create_time" timestamp NOT NULL,
@ -273,6 +274,7 @@ COMMENT ON COLUMN "sys_dict_item"."value" IS '值';
COMMENT ON COLUMN "sys_dict_item"."color" IS '标签颜色'; COMMENT ON COLUMN "sys_dict_item"."color" IS '标签颜色';
COMMENT ON COLUMN "sys_dict_item"."sort" IS '排序'; COMMENT ON COLUMN "sys_dict_item"."sort" IS '排序';
COMMENT ON COLUMN "sys_dict_item"."description" IS '描述'; COMMENT ON COLUMN "sys_dict_item"."description" IS '描述';
COMMENT ON COLUMN "sys_dict_item"."status" IS '状态1启用2禁用';
COMMENT ON COLUMN "sys_dict_item"."dict_id" IS '字典ID'; COMMENT ON COLUMN "sys_dict_item"."dict_id" IS '字典ID';
COMMENT ON COLUMN "sys_dict_item"."create_user" IS '创建人'; COMMENT ON COLUMN "sys_dict_item"."create_user" IS '创建人';
COMMENT ON COLUMN "sys_dict_item"."create_time" IS '创建时间'; COMMENT ON COLUMN "sys_dict_item"."create_time" IS '创建时间';