From 3481396e593b9a57da55479e4ce0584f10c7f50e Mon Sep 17 00:00:00 2001 From: "Ray.Hao" <1490493387@qq.com> Date: Fri, 18 Oct 2024 22:22:27 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E6=89=80=E6=9C=89=E5=AD=97=E5=85=B8=E5=92=8C=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/controller/DictController.java | 5 +- .../boot/system/mapper/DictDataMapper.java | 1 - .../youlai/boot/system/mapper/DictMapper.java | 11 +++++ .../youlai/boot/system/model/entity/Dict.java | 4 +- .../boot/system/model/entity/DictData.java | 6 +-- .../system/model/query/DictDataPageQuery.java | 2 +- .../system/model/query/DictPageQuery.java | 2 +- .../youlai/boot/system/model/vo/DictVO.java | 46 +++++++++++++++++++ .../boot/system/service/DictService.java | 16 ++----- .../system/service/impl/DictServiceImpl.java | 40 ++-------------- .../mapper/system/DictDataMapper.xml | 18 +++++++- .../resources/mapper/system/DictMapper.xml | 22 +++++++++ 12 files changed, 113 insertions(+), 60 deletions(-) create mode 100644 src/main/java/com/youlai/boot/system/model/vo/DictVO.java diff --git a/src/main/java/com/youlai/boot/system/controller/DictController.java b/src/main/java/com/youlai/boot/system/controller/DictController.java index c2225c2d..e8edad4d 100644 --- a/src/main/java/com/youlai/boot/system/controller/DictController.java +++ b/src/main/java/com/youlai/boot/system/controller/DictController.java @@ -10,6 +10,7 @@ import com.youlai.boot.system.model.vo.DictPageVO; import com.youlai.boot.common.annotation.RepeatSubmit; import com.youlai.boot.system.model.form.DictForm; import com.youlai.boot.common.annotation.Log; +import com.youlai.boot.system.model.vo.DictVO; import com.youlai.boot.system.service.DictService; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; @@ -47,8 +48,8 @@ public class DictController { @Operation(summary = "字典列表") @GetMapping("/list") - public Result>> getDictList() { - List> list = dictService.getDictList(); + public Result> getAllDictWithData() { + List list = dictService.getAllDictWithData(); return Result.success(list); } diff --git a/src/main/java/com/youlai/boot/system/mapper/DictDataMapper.java b/src/main/java/com/youlai/boot/system/mapper/DictDataMapper.java index 5f8c74b8..0f292dfd 100644 --- a/src/main/java/com/youlai/boot/system/mapper/DictDataMapper.java +++ b/src/main/java/com/youlai/boot/system/mapper/DictDataMapper.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.youlai.boot.common.model.Option; import com.youlai.boot.system.model.entity.DictData; import com.youlai.boot.system.model.query.DictDataPageQuery; -import com.youlai.boot.system.model.query.DictPageQuery; import com.youlai.boot.system.model.vo.DictDataPageVO; import org.apache.ibatis.annotations.Mapper; diff --git a/src/main/java/com/youlai/boot/system/mapper/DictMapper.java b/src/main/java/com/youlai/boot/system/mapper/DictMapper.java index 6fff142f..3188d823 100644 --- a/src/main/java/com/youlai/boot/system/mapper/DictMapper.java +++ b/src/main/java/com/youlai/boot/system/mapper/DictMapper.java @@ -2,11 +2,15 @@ package com.youlai.boot.system.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.youlai.boot.common.model.Option; import com.youlai.boot.system.model.entity.Dict; import com.youlai.boot.system.model.query.DictPageQuery; import com.youlai.boot.system.model.vo.DictPageVO; +import com.youlai.boot.system.model.vo.DictVO; import org.apache.ibatis.annotations.Mapper; +import java.util.List; + /** * 字典 访问层 * @@ -24,6 +28,13 @@ public interface DictMapper extends BaseMapper { * @return */ Page getDictPage(Page page, DictPageQuery queryParams); + + /** + * 获取所有字典和字典数据 + * + * @return + */ + List getAllDictWithData(); } diff --git a/src/main/java/com/youlai/boot/system/model/entity/Dict.java b/src/main/java/com/youlai/boot/system/model/entity/Dict.java index ee9daf4d..adaeab48 100644 --- a/src/main/java/com/youlai/boot/system/model/entity/Dict.java +++ b/src/main/java/com/youlai/boot/system/model/entity/Dict.java @@ -11,9 +11,9 @@ import lombok.EqualsAndHashCode; * @author haoxr * @since 2022/12/17 */ -@Data +@EqualsAndHashCode(callSuper = false) @TableName("sys_dict") -@EqualsAndHashCode(callSuper = true) +@Data public class Dict extends BaseEntity { /** diff --git a/src/main/java/com/youlai/boot/system/model/entity/DictData.java b/src/main/java/com/youlai/boot/system/model/entity/DictData.java index eb144ee7..0538cabb 100644 --- a/src/main/java/com/youlai/boot/system/model/entity/DictData.java +++ b/src/main/java/com/youlai/boot/system/model/entity/DictData.java @@ -3,18 +3,18 @@ package com.youlai.boot.system.model.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; -import java.io.Serializable; - import com.baomidou.mybatisplus.annotation.TableName; import com.youlai.boot.common.base.BaseEntity; import lombok.Data; +import lombok.EqualsAndHashCode; /** - * 字典数据表 + * 字典数据实体对象 * * @author haoxr * @since 2022/12/17 */ +@EqualsAndHashCode(callSuper = false) @TableName("sys_dict_data") @Data public class DictData extends BaseEntity { diff --git a/src/main/java/com/youlai/boot/system/model/query/DictDataPageQuery.java b/src/main/java/com/youlai/boot/system/model/query/DictDataPageQuery.java index 762e8d82..00944a3e 100644 --- a/src/main/java/com/youlai/boot/system/model/query/DictDataPageQuery.java +++ b/src/main/java/com/youlai/boot/system/model/query/DictDataPageQuery.java @@ -7,7 +7,7 @@ import lombok.Data; import lombok.EqualsAndHashCode; @Data -@EqualsAndHashCode(callSuper = true) +@EqualsAndHashCode(callSuper = false) @Schema(description ="字典数据分页查询对象") public class DictDataPageQuery extends BasePageQuery { diff --git a/src/main/java/com/youlai/boot/system/model/query/DictPageQuery.java b/src/main/java/com/youlai/boot/system/model/query/DictPageQuery.java index 91b464d5..d432be2e 100644 --- a/src/main/java/com/youlai/boot/system/model/query/DictPageQuery.java +++ b/src/main/java/com/youlai/boot/system/model/query/DictPageQuery.java @@ -7,7 +7,7 @@ import lombok.Data; import lombok.EqualsAndHashCode; @Data -@EqualsAndHashCode(callSuper = true) +@EqualsAndHashCode(callSuper = false) @Schema(description ="字典数据项分页查询对象") public class DictPageQuery extends BasePageQuery { diff --git a/src/main/java/com/youlai/boot/system/model/vo/DictVO.java b/src/main/java/com/youlai/boot/system/model/vo/DictVO.java new file mode 100644 index 00000000..f0fdf5e9 --- /dev/null +++ b/src/main/java/com/youlai/boot/system/model/vo/DictVO.java @@ -0,0 +1,46 @@ +package com.youlai.boot.system.model.vo; + + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + + +/** + * 字典数据项分页VO + * + * @author Ray + * @since 0.0.1 + */ +@Schema(description = "字典数据分页对象") +@Getter +@Setter +public class DictVO { + + @Schema(description = "字典名称") + private String name; + + @Schema(description = "字典编码") + private String dictCode; + + @Schema(description = "字典数据集合") + private List dictDataList; + + @Schema(description = "字典数据") + @Getter + @Setter + public static class DictData { + + @Schema(description = "字典数据值") + private String value; + + @Schema(description = "字典数据标签") + private String label; + + @Schema(description = "标签类型") + private String tagType; + } + +} diff --git a/src/main/java/com/youlai/boot/system/service/DictService.java b/src/main/java/com/youlai/boot/system/service/DictService.java index 1cf6c6a9..121c549a 100644 --- a/src/main/java/com/youlai/boot/system/service/DictService.java +++ b/src/main/java/com/youlai/boot/system/service/DictService.java @@ -7,11 +7,12 @@ import com.youlai.boot.system.model.entity.Dict; import com.youlai.boot.system.model.form.DictForm; import com.youlai.boot.system.model.query.DictPageQuery; import com.youlai.boot.system.model.vo.DictPageVO; +import com.youlai.boot.system.model.vo.DictVO; import java.util.List; /** - * 数据字典业务接口 + * 字典业务接口 * * @author haoxr * @since 2022/10/12 @@ -48,7 +49,7 @@ public interface DictService extends IService { /** * 修改字典 * - * @param id + * @param id 字典ID * @param dictForm 字典表单 * @return */ @@ -63,19 +64,10 @@ public interface DictService extends IService { void deleteDictByIds(String idsStr); - /** - * 获取字典的数据项 - * - * @param code 字典编码 - * @return - */ - List> listDictItemsByCode(String code); - - /** * 获取字典列表 * * @return */ - List> getDictList(); + List getAllDictWithData(); } diff --git a/src/main/java/com/youlai/boot/system/service/impl/DictServiceImpl.java b/src/main/java/com/youlai/boot/system/service/impl/DictServiceImpl.java index f7e4294f..996b2ab4 100644 --- a/src/main/java/com/youlai/boot/system/service/impl/DictServiceImpl.java +++ b/src/main/java/com/youlai/boot/system/service/impl/DictServiceImpl.java @@ -16,6 +16,7 @@ import com.youlai.boot.system.model.form.DictForm; import com.youlai.boot.system.model.query.DictPageQuery; import com.youlai.boot.system.model.vo.DictPageVO; import com.youlai.boot.common.model.Option; +import com.youlai.boot.system.model.vo.DictVO; import com.youlai.boot.system.service.DictDataService; import com.youlai.boot.system.service.DictService; import lombok.RequiredArgsConstructor; @@ -145,44 +146,11 @@ public class DictServiceImpl extends ServiceImpl implements Di } /** - * 获取字典的数据项 - * - * @param code 字典编码 + * 获取所有字典和字典数据 */ @Override - public List> listDictItemsByCode(String code) { - // 根据字典编码获取字典ID - Dict dict = this.getOne(new LambdaQueryWrapper() - .eq(Dict::getDictCode, code) - .select(Dict::getId) - .last("limit 1") - ); - // 如果字典不存在,则返回空集合 - if (dict == null) { - return CollectionUtil.newArrayList(); - } - - // 获取字典项 - List dictData = dictDataService.list( - new LambdaQueryWrapper() - .eq(DictData::getDictCode, dict.getDictCode()) - ); - - // 转换为 Option - return dictDataConverter.toOption(dictData); - } - - /** - * 获取字典列表 - */ - @Override - public List> getDictList() { - return this.list(new LambdaQueryWrapper() - .eq(Dict::getStatus, 1) - .select(Dict::getName, Dict::getDictCode) - ).stream() - .map(dict -> new Option<>(dict.getDictCode(), dict.getName())) - .toList(); + public List getAllDictWithData() { + return this.baseMapper.getAllDictWithData(); } } diff --git a/src/main/resources/mapper/system/DictDataMapper.xml b/src/main/resources/mapper/system/DictDataMapper.xml index e61c7225..141cd2fa 100644 --- a/src/main/resources/mapper/system/DictDataMapper.xml +++ b/src/main/resources/mapper/system/DictDataMapper.xml @@ -35,12 +35,26 @@ value, label FROM - sys_dict_data + sys_dict_data dict_code = #{dictCode} ORDER BY - sort ASC + sort ASC + + + + diff --git a/src/main/resources/mapper/system/DictMapper.xml b/src/main/resources/mapper/system/DictMapper.xml index 670694b4..4f717cb4 100644 --- a/src/main/resources/mapper/system/DictMapper.xml +++ b/src/main/resources/mapper/system/DictMapper.xml @@ -25,4 +25,26 @@ ORDER BY t1.create_time DESC + + + + + + + + + +