feat: 添加获取所有字典和数据接口
This commit is contained in:
@@ -10,6 +10,7 @@ import com.youlai.boot.system.model.vo.DictPageVO;
|
|||||||
import com.youlai.boot.common.annotation.RepeatSubmit;
|
import com.youlai.boot.common.annotation.RepeatSubmit;
|
||||||
import com.youlai.boot.system.model.form.DictForm;
|
import com.youlai.boot.system.model.form.DictForm;
|
||||||
import com.youlai.boot.common.annotation.Log;
|
import com.youlai.boot.common.annotation.Log;
|
||||||
|
import com.youlai.boot.system.model.vo.DictVO;
|
||||||
import com.youlai.boot.system.service.DictService;
|
import com.youlai.boot.system.service.DictService;
|
||||||
import io.swagger.v3.oas.annotations.Parameter;
|
import io.swagger.v3.oas.annotations.Parameter;
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
@@ -47,8 +48,8 @@ public class DictController {
|
|||||||
|
|
||||||
@Operation(summary = "字典列表")
|
@Operation(summary = "字典列表")
|
||||||
@GetMapping("/list")
|
@GetMapping("/list")
|
||||||
public Result<List<Option<String>>> getDictList() {
|
public Result<List<DictVO>> getAllDictWithData() {
|
||||||
List<Option<String>> list = dictService.getDictList();
|
List<DictVO> list = dictService.getAllDictWithData();
|
||||||
return Result.success(list);
|
return Result.success(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|||||||
import com.youlai.boot.common.model.Option;
|
import com.youlai.boot.common.model.Option;
|
||||||
import com.youlai.boot.system.model.entity.DictData;
|
import com.youlai.boot.system.model.entity.DictData;
|
||||||
import com.youlai.boot.system.model.query.DictDataPageQuery;
|
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 com.youlai.boot.system.model.vo.DictDataPageVO;
|
||||||
import org.apache.ibatis.annotations.Mapper;
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
|
|||||||
@@ -2,11 +2,15 @@ package com.youlai.boot.system.mapper;
|
|||||||
|
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
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.entity.Dict;
|
||||||
import com.youlai.boot.system.model.query.DictPageQuery;
|
import com.youlai.boot.system.model.query.DictPageQuery;
|
||||||
import com.youlai.boot.system.model.vo.DictPageVO;
|
import com.youlai.boot.system.model.vo.DictPageVO;
|
||||||
|
import com.youlai.boot.system.model.vo.DictVO;
|
||||||
import org.apache.ibatis.annotations.Mapper;
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 字典 访问层
|
* 字典 访问层
|
||||||
*
|
*
|
||||||
@@ -24,6 +28,13 @@ public interface DictMapper extends BaseMapper<Dict> {
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
Page<DictPageVO> getDictPage(Page<DictPageVO> page, DictPageQuery queryParams);
|
Page<DictPageVO> getDictPage(Page<DictPageVO> page, DictPageQuery queryParams);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取所有字典和字典数据
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<DictVO> getAllDictWithData();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -11,9 +11,9 @@ import lombok.EqualsAndHashCode;
|
|||||||
* @author haoxr
|
* @author haoxr
|
||||||
* @since 2022/12/17
|
* @since 2022/12/17
|
||||||
*/
|
*/
|
||||||
@Data
|
@EqualsAndHashCode(callSuper = false)
|
||||||
@TableName("sys_dict")
|
@TableName("sys_dict")
|
||||||
@EqualsAndHashCode(callSuper = true)
|
@Data
|
||||||
public class Dict extends BaseEntity {
|
public class Dict extends BaseEntity {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -3,18 +3,18 @@ package com.youlai.boot.system.model.entity;
|
|||||||
import com.baomidou.mybatisplus.annotation.IdType;
|
import com.baomidou.mybatisplus.annotation.IdType;
|
||||||
import com.baomidou.mybatisplus.annotation.TableId;
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
|
||||||
import java.io.Serializable;
|
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.annotation.TableName;
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
import com.youlai.boot.common.base.BaseEntity;
|
import com.youlai.boot.common.base.BaseEntity;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 字典数据表
|
* 字典数据实体对象
|
||||||
*
|
*
|
||||||
* @author haoxr
|
* @author haoxr
|
||||||
* @since 2022/12/17
|
* @since 2022/12/17
|
||||||
*/
|
*/
|
||||||
|
@EqualsAndHashCode(callSuper = false)
|
||||||
@TableName("sys_dict_data")
|
@TableName("sys_dict_data")
|
||||||
@Data
|
@Data
|
||||||
public class DictData extends BaseEntity {
|
public class DictData extends BaseEntity {
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import lombok.Data;
|
|||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@EqualsAndHashCode(callSuper = true)
|
@EqualsAndHashCode(callSuper = false)
|
||||||
@Schema(description ="字典数据分页查询对象")
|
@Schema(description ="字典数据分页查询对象")
|
||||||
public class DictDataPageQuery extends BasePageQuery {
|
public class DictDataPageQuery extends BasePageQuery {
|
||||||
|
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import lombok.Data;
|
|||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@EqualsAndHashCode(callSuper = true)
|
@EqualsAndHashCode(callSuper = false)
|
||||||
@Schema(description ="字典数据项分页查询对象")
|
@Schema(description ="字典数据项分页查询对象")
|
||||||
public class DictPageQuery extends BasePageQuery {
|
public class DictPageQuery extends BasePageQuery {
|
||||||
|
|
||||||
|
|||||||
46
src/main/java/com/youlai/boot/system/model/vo/DictVO.java
Normal file
46
src/main/java/com/youlai/boot/system/model/vo/DictVO.java
Normal file
@@ -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<DictData> dictDataList;
|
||||||
|
|
||||||
|
@Schema(description = "字典数据")
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
public static class DictData {
|
||||||
|
|
||||||
|
@Schema(description = "字典数据值")
|
||||||
|
private String value;
|
||||||
|
|
||||||
|
@Schema(description = "字典数据标签")
|
||||||
|
private String label;
|
||||||
|
|
||||||
|
@Schema(description = "标签类型")
|
||||||
|
private String tagType;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -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.form.DictForm;
|
||||||
import com.youlai.boot.system.model.query.DictPageQuery;
|
import com.youlai.boot.system.model.query.DictPageQuery;
|
||||||
import com.youlai.boot.system.model.vo.DictPageVO;
|
import com.youlai.boot.system.model.vo.DictPageVO;
|
||||||
|
import com.youlai.boot.system.model.vo.DictVO;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 数据字典业务接口
|
* 字典业务接口
|
||||||
*
|
*
|
||||||
* @author haoxr
|
* @author haoxr
|
||||||
* @since 2022/10/12
|
* @since 2022/10/12
|
||||||
@@ -48,7 +49,7 @@ public interface DictService extends IService<Dict> {
|
|||||||
/**
|
/**
|
||||||
* 修改字典
|
* 修改字典
|
||||||
*
|
*
|
||||||
* @param id
|
* @param id 字典ID
|
||||||
* @param dictForm 字典表单
|
* @param dictForm 字典表单
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@@ -63,19 +64,10 @@ public interface DictService extends IService<Dict> {
|
|||||||
void deleteDictByIds(String idsStr);
|
void deleteDictByIds(String idsStr);
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取字典的数据项
|
|
||||||
*
|
|
||||||
* @param code 字典编码
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
List<Option<Long>> listDictItemsByCode(String code);
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取字典列表
|
* 获取字典列表
|
||||||
*
|
*
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
List<Option<String>> getDictList();
|
List<DictVO> getAllDictWithData();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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.query.DictPageQuery;
|
||||||
import com.youlai.boot.system.model.vo.DictPageVO;
|
import com.youlai.boot.system.model.vo.DictPageVO;
|
||||||
import com.youlai.boot.common.model.Option;
|
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.DictDataService;
|
||||||
import com.youlai.boot.system.service.DictService;
|
import com.youlai.boot.system.service.DictService;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
@@ -145,44 +146,11 @@ public class DictServiceImpl extends ServiceImpl<DictMapper, Dict> implements Di
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取字典的数据项
|
* 获取所有字典和字典数据
|
||||||
*
|
|
||||||
* @param code 字典编码
|
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public List<Option<Long>> listDictItemsByCode(String code) {
|
public List<DictVO> getAllDictWithData() {
|
||||||
// 根据字典编码获取字典ID
|
return this.baseMapper.getAllDictWithData();
|
||||||
Dict dict = this.getOne(new LambdaQueryWrapper<Dict>()
|
|
||||||
.eq(Dict::getDictCode, code)
|
|
||||||
.select(Dict::getId)
|
|
||||||
.last("limit 1")
|
|
||||||
);
|
|
||||||
// 如果字典不存在,则返回空集合
|
|
||||||
if (dict == null) {
|
|
||||||
return CollectionUtil.newArrayList();
|
|
||||||
}
|
|
||||||
|
|
||||||
// 获取字典项
|
|
||||||
List<DictData> dictData = dictDataService.list(
|
|
||||||
new LambdaQueryWrapper<DictData>()
|
|
||||||
.eq(DictData::getDictCode, dict.getDictCode())
|
|
||||||
);
|
|
||||||
|
|
||||||
// 转换为 Option
|
|
||||||
return dictDataConverter.toOption(dictData);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取字典列表
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public List<Option<String>> getDictList() {
|
|
||||||
return this.list(new LambdaQueryWrapper<Dict>()
|
|
||||||
.eq(Dict::getStatus, 1)
|
|
||||||
.select(Dict::getName, Dict::getDictCode)
|
|
||||||
).stream()
|
|
||||||
.map(dict -> new Option<>(dict.getDictCode(), dict.getName()))
|
|
||||||
.toList();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -43,4 +43,18 @@
|
|||||||
sort ASC
|
sort ASC
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<!-- 根据字典编码获取字典数据列表 -->
|
||||||
|
<select id="getDictDataList" resultType="com.youlai.boot.system.model.vo.DictVO$DictData">
|
||||||
|
SELECT
|
||||||
|
value,
|
||||||
|
label,
|
||||||
|
tag_type
|
||||||
|
FROM
|
||||||
|
sys_dict_data
|
||||||
|
WHERE
|
||||||
|
status = 1 AND dict_code = #{dictCode}
|
||||||
|
ORDER BY
|
||||||
|
sort ASC
|
||||||
|
</select>
|
||||||
|
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|||||||
@@ -25,4 +25,26 @@
|
|||||||
ORDER BY
|
ORDER BY
|
||||||
t1.create_time DESC
|
t1.create_time DESC
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<resultMap id="DictWithDataMap" type="com.youlai.boot.system.model.vo.DictVO">
|
||||||
|
<result column="name" property="name"/>
|
||||||
|
<result column="dict_code" property="dictCode"/>
|
||||||
|
<collection property="dictDataList"
|
||||||
|
column="{dictCode=dict_code}"
|
||||||
|
select="com.youlai.boot.system.mapper.DictDataMapper.getDictDataList">
|
||||||
|
</collection>
|
||||||
|
</resultMap>
|
||||||
|
|
||||||
|
<!-- 获取所有字典和字典数据 -->
|
||||||
|
<select id="getAllDictWithData" resultMap="DictWithDataMap">
|
||||||
|
SELECT
|
||||||
|
t1.name,
|
||||||
|
t1.dict_code
|
||||||
|
FROM
|
||||||
|
sys_dict t1
|
||||||
|
WHERE
|
||||||
|
t1.is_deleted = 0 AND t1.status = 1
|
||||||
|
ORDER BY
|
||||||
|
t1.create_time DESC
|
||||||
|
</select>
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|||||||
Reference in New Issue
Block a user