mirror of
				https://github.com/continew-org/continew-admin.git
				synced 2025-10-31 21:00:53 +08:00 
			
		
		
		
	refactor: 重构查询参数及字典接口
This commit is contained in:
		| @@ -1,83 +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.continew.admin.common.model.resp; | ||||
|  | ||||
| import com.fasterxml.jackson.annotation.JsonInclude; | ||||
| import io.swagger.v3.oas.annotations.media.Schema; | ||||
| import lombok.Data; | ||||
| import lombok.NoArgsConstructor; | ||||
|  | ||||
| import java.io.Serial; | ||||
| import java.io.Serializable; | ||||
|  | ||||
| /** | ||||
|  * 键值对信息 | ||||
|  * | ||||
|  * @param <T> | ||||
|  * @author Charles7c | ||||
|  * @since 2023/2/24 22:02 | ||||
|  */ | ||||
| @Data | ||||
| @NoArgsConstructor | ||||
| @Schema(description = "键值对信息") | ||||
| public class LabelValueResp<T> implements Serializable { | ||||
|  | ||||
|     @Serial | ||||
|     private static final long serialVersionUID = 1L; | ||||
|  | ||||
|     /** | ||||
|      * 标签 | ||||
|      */ | ||||
|     @Schema(description = "标签", example = "男") | ||||
|     private String label; | ||||
|  | ||||
|     /** | ||||
|      * 值 | ||||
|      */ | ||||
|     @Schema(description = "值", example = "1") | ||||
|     private T value; | ||||
|  | ||||
|     /** | ||||
|      * 是否禁用 | ||||
|      */ | ||||
|     @Schema(description = "是否禁用", example = "false") | ||||
|     private Boolean disabled; | ||||
|  | ||||
|     /** | ||||
|      * 颜色 | ||||
|      */ | ||||
|     @Schema(description = "颜色", example = "#165DFF") | ||||
|     @JsonInclude(JsonInclude.Include.NON_NULL) | ||||
|     private String color; | ||||
|  | ||||
|     public LabelValueResp(String label, T value) { | ||||
|         this.label = label; | ||||
|         this.value = value; | ||||
|     } | ||||
|  | ||||
|     public LabelValueResp(String label, T value, String color) { | ||||
|         this.label = label; | ||||
|         this.value = value; | ||||
|         this.color = color; | ||||
|     } | ||||
|  | ||||
|     public LabelValueResp(String label, T value, Boolean disabled) { | ||||
|         this.label = label; | ||||
|         this.value = value; | ||||
|         this.disabled = disabled; | ||||
|     } | ||||
| } | ||||
| @@ -17,11 +17,10 @@ | ||||
| package top.continew.admin.system.mapper; | ||||
|  | ||||
| import org.apache.ibatis.annotations.Param; | ||||
| import top.continew.admin.common.model.resp.LabelValueResp; | ||||
| import top.continew.admin.system.model.entity.DictItemDO; | ||||
| import top.continew.starter.data.mybatis.plus.base.BaseMapper; | ||||
| import top.continew.starter.extension.crud.model.resp.LabelValueResp; | ||||
|  | ||||
| import java.io.Serializable; | ||||
| import java.util.List; | ||||
|  | ||||
| /** | ||||
| @@ -38,5 +37,5 @@ public interface DictItemMapper extends BaseMapper<DictItemDO> { | ||||
|      * @param dictCode 字典编码 | ||||
|      * @return 字典项列表 | ||||
|      */ | ||||
|     List<LabelValueResp<Serializable>> listByDictCode(@Param("dictCode") String dictCode); | ||||
|     List<LabelValueResp> listByDictCode(@Param("dictCode") String dictCode); | ||||
| } | ||||
| @@ -16,15 +16,14 @@ | ||||
|  | ||||
| package top.continew.admin.system.service; | ||||
|  | ||||
| import top.continew.admin.common.model.resp.LabelValueResp; | ||||
| import top.continew.admin.system.model.entity.DictItemDO; | ||||
| import top.continew.admin.system.model.query.DictItemQuery; | ||||
| import top.continew.admin.system.model.req.DictItemReq; | ||||
| import top.continew.admin.system.model.resp.DictItemResp; | ||||
| import top.continew.starter.data.mybatis.plus.service.IService; | ||||
| import top.continew.starter.extension.crud.model.resp.LabelValueResp; | ||||
| import top.continew.starter.extension.crud.service.BaseService; | ||||
|  | ||||
| import java.io.Serializable; | ||||
| import java.util.List; | ||||
|  | ||||
| /** | ||||
| @@ -41,7 +40,7 @@ public interface DictItemService extends BaseService<DictItemResp, DictItemResp, | ||||
|      * @param dictCode 字典编码 | ||||
|      * @return 字典项列表 | ||||
|      */ | ||||
|     List<LabelValueResp<Serializable>> listByDictCode(String dictCode); | ||||
|     List<LabelValueResp> listByDictCode(String dictCode); | ||||
|  | ||||
|     /** | ||||
|      * 根据字典 ID 列表删除 | ||||
|   | ||||
| @@ -18,7 +18,6 @@ package top.continew.admin.system.service.impl; | ||||
|  | ||||
| import lombok.RequiredArgsConstructor; | ||||
| import org.springframework.stereotype.Service; | ||||
| import top.continew.admin.common.model.resp.LabelValueResp; | ||||
| import top.continew.admin.system.mapper.DictItemMapper; | ||||
| import top.continew.admin.system.model.entity.DictItemDO; | ||||
| import top.continew.admin.system.model.query.DictItemQuery; | ||||
| @@ -26,9 +25,9 @@ import top.continew.admin.system.model.req.DictItemReq; | ||||
| import top.continew.admin.system.model.resp.DictItemResp; | ||||
| import top.continew.admin.system.service.DictItemService; | ||||
| import top.continew.starter.core.util.validate.CheckUtils; | ||||
| import top.continew.starter.extension.crud.model.resp.LabelValueResp; | ||||
| import top.continew.starter.extension.crud.service.impl.BaseServiceImpl; | ||||
|  | ||||
| import java.io.Serializable; | ||||
| import java.util.List; | ||||
|  | ||||
| /** | ||||
| @@ -54,7 +53,7 @@ public class DictItemServiceImpl extends BaseServiceImpl<DictItemMapper, DictIte | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public List<LabelValueResp<Serializable>> listByDictCode(String dictCode) { | ||||
|     public List<LabelValueResp> listByDictCode(String dictCode) { | ||||
|         return baseMapper.listByDictCode(dictCode); | ||||
|     } | ||||
|  | ||||
|   | ||||
| @@ -58,7 +58,6 @@ public class OptionServiceImpl implements OptionService { | ||||
|     private final OptionMapper baseMapper; | ||||
|  | ||||
|     @Override | ||||
|     @Cached(key = "#query.category", name = CacheConstants.OPTION_KEY_PREFIX) | ||||
|     public List<OptionResp> list(OptionQuery query) { | ||||
|         return BeanUtil.copyToList(baseMapper.selectList(QueryWrapperHelper.build(query)), OptionResp.class); | ||||
|     } | ||||
|   | ||||
| @@ -1,8 +1,8 @@ | ||||
| <?xml version="1.0" encoding="UTF-8" ?> | ||||
| <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > | ||||
| <mapper namespace="top.continew.admin.system.mapper.DictItemMapper"> | ||||
|     <select id="listByDictCode" resultType="top.continew.admin.common.model.resp.LabelValueResp"> | ||||
|         SELECT t1.label, t1.value, t1.color | ||||
|     <select id="listByDictCode" resultType="top.continew.starter.extension.crud.model.resp.LabelValueResp"> | ||||
|         SELECT t1.label, t1.value, t1.color AS extend | ||||
|         FROM sys_dict_item AS t1 | ||||
|         LEFT JOIN sys_dict AS t2 ON t1.dict_id = t2.id | ||||
|         WHERE t1.status = 1 AND t2.code = #{dictCode} | ||||
|   | ||||
| @@ -20,17 +20,19 @@ import cn.dev33.satoken.annotation.SaIgnore; | ||||
| import cn.hutool.core.lang.tree.Tree; | ||||
| import cn.hutool.core.util.ClassUtil; | ||||
| import cn.hutool.core.util.StrUtil; | ||||
| import com.alicp.jetcache.anno.Cached; | ||||
| import io.swagger.v3.oas.annotations.Operation; | ||||
| import io.swagger.v3.oas.annotations.Parameter; | ||||
| import io.swagger.v3.oas.annotations.enums.ParameterIn; | ||||
| import io.swagger.v3.oas.annotations.tags.Tag; | ||||
| import jakarta.validation.constraints.NotBlank; | ||||
| import jakarta.validation.constraints.NotNull; | ||||
| import lombok.RequiredArgsConstructor; | ||||
| import org.dromara.x.file.storage.core.FileInfo; | ||||
| import org.springframework.validation.annotation.Validated; | ||||
| import org.springframework.web.bind.annotation.*; | ||||
| import org.springframework.web.multipart.MultipartFile; | ||||
| import top.continew.admin.common.model.resp.LabelValueResp; | ||||
| import top.continew.admin.common.constant.CacheConstants; | ||||
| import top.continew.admin.system.model.query.DeptQuery; | ||||
| import top.continew.admin.system.model.query.MenuQuery; | ||||
| import top.continew.admin.system.model.query.OptionQuery; | ||||
| @@ -41,10 +43,10 @@ import top.continew.starter.core.autoconfigure.project.ProjectProperties; | ||||
| import top.continew.starter.core.util.validate.ValidationUtils; | ||||
| import top.continew.starter.data.mybatis.plus.base.IBaseEnum; | ||||
| import top.continew.starter.extension.crud.model.query.SortQuery; | ||||
| import top.continew.starter.extension.crud.model.resp.LabelValueResp; | ||||
| import top.continew.starter.log.core.annotation.Log; | ||||
| import top.continew.starter.web.model.R; | ||||
|  | ||||
| import java.io.Serializable; | ||||
| import java.util.Arrays; | ||||
| import java.util.List; | ||||
| import java.util.Optional; | ||||
| @@ -95,8 +97,6 @@ public class CommonController { | ||||
|  | ||||
|     @Operation(summary = "查询角色字典", description = "查询角色字典列表") | ||||
|     @GetMapping("/dict/role") | ||||
|     public R<List<LabelValueResp<Long>>> listRoleDict(RoleQuery query, SortQuery sortQuery) { | ||||
|         return R.ok(roleService.buildDict(roleService.list(query, sortQuery))); | ||||
|     public R<List<LabelValueResp>> listRoleDict(RoleQuery query, SortQuery sortQuery) { | ||||
|         return R.ok(roleService.listDict(query, sortQuery)); | ||||
|     } | ||||
| @@ -104,7 +104,7 @@ public class CommonController { | ||||
|     @Operation(summary = "查询字典", description = "查询字典列表") | ||||
|     @Parameter(name = "code", description = "字典编码", example = "notice_type", in = ParameterIn.PATH) | ||||
|     @GetMapping("/dict/{code}") | ||||
|     public R<List<LabelValueResp<Serializable>>> listDict(@PathVariable String code) { | ||||
|     public R<List<LabelValueResp>> listDict(@PathVariable String code) { | ||||
|         Optional<Class<?>> enumClassOptional = this.getEnumClassByName(code); | ||||
|         return R.ok(enumClassOptional.map(this::listEnumDict).orElseGet(() -> dictItemService.listByDictCode(code))); | ||||
|     } | ||||
| @@ -112,8 +112,11 @@ public class CommonController { | ||||
|     @SaIgnore | ||||
|     @Operation(summary = "查询参数字典", description = "查询参数字典") | ||||
|     @GetMapping("/dict/option") | ||||
|     public R<List<LabelValueResp<String>>> listOptionDict(@Validated OptionQuery query) { | ||||
|         return R.ok(optionService.list(query) | ||||
|     @Cached(key = "#category", name = CacheConstants.OPTION_KEY_PREFIX) | ||||
|     public R<List<LabelValueResp<String>>> listOptionDict(@NotBlank(message = "类别不能为空") @RequestParam String category) { | ||||
|         OptionQuery optionQuery = new OptionQuery(); | ||||
|         optionQuery.setCategory(category); | ||||
|         return R.ok(optionService.list(optionQuery) | ||||
|             .stream() | ||||
|             .map(option -> new LabelValueResp<>(option.getCode(), StrUtil.nullToDefault(option.getValue(), option | ||||
|                 .getDefaultValue()))) | ||||
| @@ -140,11 +143,11 @@ public class CommonController { | ||||
|      * @param enumClass 枚举类型 | ||||
|      * @return 枚举字典 | ||||
|      */ | ||||
|     private List<LabelValueResp<Serializable>> listEnumDict(Class<?> enumClass) { | ||||
|     private List<LabelValueResp> listEnumDict(Class<?> enumClass) { | ||||
|         Object[] enumConstants = enumClass.getEnumConstants(); | ||||
|         return Arrays.stream(enumConstants).map(e -> { | ||||
|             IBaseEnum baseEnum = (IBaseEnum)e; | ||||
|             return new LabelValueResp<>(baseEnum.getDescription(), baseEnum.getValue(), baseEnum.getColor()); | ||||
|             return new LabelValueResp(baseEnum.getDescription(), baseEnum.getValue(), baseEnum.getColor()); | ||||
|         }).toList(); | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -56,7 +56,7 @@ public class OptionController { | ||||
|  | ||||
|     @Operation(summary = "修改参数", description = "修改参数") | ||||
|     @SaCheckPermission("system:config:update") | ||||
|     @PatchMapping | ||||
|     @PutMapping | ||||
|     public R<Void> update(@Valid @RequestBody List<OptionReq> options) { | ||||
|         baseService.update(options); | ||||
|         return R.ok(); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user