Skip to content

Commit fa18a2b

Browse files
committed
feat: 添加字典管理接口
1 parent 2eabbe2 commit fa18a2b

8 files changed

Lines changed: 356 additions & 0 deletions

File tree

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
package top.cadecode.uniboot.framework.bean.po;
2+
3+
import com.baomidou.mybatisplus.annotation.*;
4+
import lombok.AllArgsConstructor;
5+
import lombok.Builder;
6+
import lombok.Data;
7+
import lombok.NoArgsConstructor;
8+
import top.cadecode.uniboot.common.plugin.mybatis.converter.BoolToIntTypeHandler;
9+
10+
import java.util.Date;
11+
12+
/**
13+
* 系统字典
14+
*
15+
* @author Cade Li
16+
* @date 2023/6/11
17+
*/
18+
@Data
19+
@AllArgsConstructor
20+
@NoArgsConstructor
21+
@Builder
22+
@TableName(autoResultMap = true)
23+
public class SysDict {
24+
25+
@TableId(type = IdType.ASSIGN_ID)
26+
private Long id;
27+
28+
/**
29+
* 字典名称
30+
*/
31+
private String name;
32+
33+
/**
34+
* 字典类型
35+
*/
36+
private String type;
37+
38+
/**
39+
* 字典标签
40+
*/
41+
private String label;
42+
43+
/**
44+
* 字典值
45+
*/
46+
private String value;
47+
48+
/**
49+
* 是否是默认值
50+
*/
51+
@TableField(typeHandler = BoolToIntTypeHandler.class)
52+
private Boolean defaultFlag;
53+
54+
/**
55+
* 描述
56+
*/
57+
private String description;
58+
59+
/**
60+
* 排序
61+
*/
62+
private Integer orderNum;
63+
64+
@TableField(fill = FieldFill.INSERT)
65+
private Date createTime;
66+
67+
@TableField(fill = FieldFill.UPDATE)
68+
private Date updateTime;
69+
70+
@TableField(fill = FieldFill.INSERT_UPDATE)
71+
private String updateUser;
72+
73+
}
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
package top.cadecode.uniboot.framework.bean.vo;
2+
3+
import lombok.Data;
4+
5+
import java.util.Date;
6+
7+
/**
8+
* 系统字典 VO
9+
*
10+
* @author Cade Li
11+
* @date 2023/6/11
12+
*/
13+
public class SysDictVo {
14+
15+
@Data
16+
public static class SysDictPageVo {
17+
private Long id;
18+
private String name;
19+
private String type;
20+
private String label;
21+
private String value;
22+
private Boolean defaultFlag;
23+
private String description;
24+
private Integer orderNum;
25+
private Date createTime;
26+
private Date updateTime;
27+
private String updateUser;
28+
}
29+
30+
@Data
31+
public static class SysDictGetByTypeVo {
32+
private Long id;
33+
private String name;
34+
private String type;
35+
private String label;
36+
private String value;
37+
private String description;
38+
private Integer orderNum;
39+
}
40+
41+
@Data
42+
public static class SysDictSuggestVo {
43+
private String name;
44+
private String type;
45+
}
46+
47+
}
Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
package top.cadecode.uniboot.framework.controller;
2+
3+
import cn.hutool.core.util.ObjectUtil;
4+
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
5+
import io.swagger.annotations.Api;
6+
import io.swagger.annotations.ApiOperation;
7+
import lombok.RequiredArgsConstructor;
8+
import lombok.extern.slf4j.Slf4j;
9+
import org.springframework.validation.annotation.Validated;
10+
import org.springframework.web.bind.annotation.*;
11+
import top.cadecode.uniboot.common.core.web.response.PageResult;
12+
import top.cadecode.uniboot.framework.annotation.ApiFormat;
13+
import top.cadecode.uniboot.framework.bean.po.SysDict;
14+
import top.cadecode.uniboot.framework.bean.vo.SysDictVo.SysDictGetByTypeVo;
15+
import top.cadecode.uniboot.framework.bean.vo.SysDictVo.SysDictPageVo;
16+
import top.cadecode.uniboot.framework.bean.vo.SysDictVo.SysDictSuggestVo;
17+
import top.cadecode.uniboot.framework.convert.SysDictConvert;
18+
import top.cadecode.uniboot.framework.request.SysDictRequest.SysDictAddRequest;
19+
import top.cadecode.uniboot.framework.request.SysDictRequest.SysDictPageRequest;
20+
import top.cadecode.uniboot.framework.request.SysDictRequest.SysDictUpdateRequest;
21+
import top.cadecode.uniboot.framework.service.SysDictService;
22+
23+
import javax.validation.Valid;
24+
import javax.validation.constraints.NotEmpty;
25+
import java.util.Comparator;
26+
import java.util.List;
27+
import java.util.stream.Collectors;
28+
29+
/**
30+
* 日志管理
31+
*
32+
* @author Cade Li
33+
* @since 2023/5/26
34+
*/
35+
@ApiFormat
36+
@Slf4j
37+
@RequiredArgsConstructor
38+
@Api(tags = "字典管理")
39+
@RequestMapping("system/dict")
40+
@RestController
41+
@Validated
42+
public class SysDictController {
43+
44+
private final SysDictService sysDictService;
45+
46+
@ApiOperation("查询列表")
47+
@PostMapping("page")
48+
public PageResult<SysDictPageVo> page(@RequestBody @Valid SysDictPageRequest request) {
49+
Page<SysDict> page = sysDictService.lambdaQuery()
50+
.likeRight(ObjectUtil.isNotEmpty(request.getName()), SysDict::getName, request.getName())
51+
.likeRight(ObjectUtil.isNotEmpty(request.getType()), SysDict::getType, request.getType())
52+
.orderByDesc(SysDict::getCreateTime)
53+
.page(new Page<>(request.getPageNumber(), request.getPageSize()));
54+
List<SysDictPageVo> voList = SysDictConvert.INSTANCE.poToPageVo(page.getRecords());
55+
return new PageResult<>((int) page.getTotal(), voList);
56+
}
57+
58+
@ApiOperation("添加")
59+
@PostMapping("add")
60+
public boolean add(@RequestBody @Valid SysDictAddRequest request) {
61+
SysDict po = SysDictConvert.INSTANCE.requestToPo(request);
62+
return sysDictService.save(po);
63+
}
64+
65+
@ApiOperation("更新")
66+
@PostMapping("update")
67+
public boolean update(@RequestBody @Valid SysDictUpdateRequest request) {
68+
SysDict po = SysDictConvert.INSTANCE.requestToPo(request);
69+
return sysDictService.updateById(po);
70+
}
71+
72+
@ApiOperation("删除")
73+
@PostMapping("delete")
74+
public boolean delete(@RequestBody @NotEmpty List<Long> idList) {
75+
return sysDictService.removeBatchByIds(idList);
76+
}
77+
78+
@ApiOperation("查询 ByType")
79+
@GetMapping("list_by_type")
80+
public List<SysDictGetByTypeVo> listByType(@RequestParam String type) {
81+
List<SysDict> dictList = sysDictService.lambdaQuery().eq(SysDict::getType, type).list();
82+
return SysDictConvert.INSTANCE.poToGetByTypeVo(dictList);
83+
}
84+
85+
@ApiOperation("查询 ByIds")
86+
@PostMapping("list_by_ids")
87+
public List<SysDictPageVo> listByIds(@RequestBody @NotEmpty List<Long> idList) {
88+
List<SysDict> dictList = sysDictService.listByIds(idList);
89+
return SysDictConvert.INSTANCE.poToPageVo(dictList);
90+
}
91+
92+
@ApiOperation("查询字典类型种类")
93+
@PostMapping("list_type")
94+
public List<SysDictSuggestVo> listType() {
95+
List<SysDict> dictList = sysDictService.lambdaQuery().select(SysDict::getName, SysDict::getType).list();
96+
return dictList.stream()
97+
.map(SysDictConvert.INSTANCE::poToSuggestVo)
98+
.sorted(Comparator.comparing(SysDictSuggestVo::getType))
99+
.distinct()
100+
.collect(Collectors.toList());
101+
}
102+
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package top.cadecode.uniboot.framework.convert;
2+
3+
import org.mapstruct.Mapper;
4+
import org.mapstruct.factory.Mappers;
5+
import top.cadecode.uniboot.framework.bean.po.SysDict;
6+
import top.cadecode.uniboot.framework.bean.vo.SysDictVo.SysDictGetByTypeVo;
7+
import top.cadecode.uniboot.framework.bean.vo.SysDictVo.SysDictPageVo;
8+
import top.cadecode.uniboot.framework.bean.vo.SysDictVo.SysDictSuggestVo;
9+
import top.cadecode.uniboot.framework.request.SysDictRequest.SysDictAddRequest;
10+
import top.cadecode.uniboot.framework.request.SysDictRequest.SysDictUpdateRequest;
11+
12+
import java.util.List;
13+
14+
/**
15+
* 系统字典 Bean 转换
16+
*
17+
* @author Cade Li
18+
* @date 2023/6/11
19+
*/
20+
@Mapper
21+
public interface SysDictConvert {
22+
SysDictConvert INSTANCE = Mappers.getMapper(SysDictConvert.class);
23+
24+
List<SysDictPageVo> poToPageVo(List<SysDict> records);
25+
26+
SysDict requestToPo(SysDictAddRequest request);
27+
28+
SysDict requestToPo(SysDictUpdateRequest request);
29+
30+
List<SysDictGetByTypeVo> poToGetByTypeVo(List<SysDict> dictList);
31+
32+
SysDictSuggestVo poToSuggestVo(SysDict po);
33+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package top.cadecode.uniboot.framework.mapper;
2+
3+
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
4+
import org.apache.ibatis.annotations.Mapper;
5+
import top.cadecode.uniboot.framework.bean.po.SysDict;
6+
7+
/**
8+
* 系统字典 DAO
9+
*
10+
* @author Cade Li
11+
* @since 2023/5/26
12+
*/
13+
@Mapper
14+
public interface SysDictMapper extends BaseMapper<SysDict> {
15+
}
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
package top.cadecode.uniboot.framework.request;
2+
3+
import lombok.Data;
4+
import top.cadecode.uniboot.common.core.web.response.PageParams;
5+
6+
import javax.validation.constraints.NotEmpty;
7+
import javax.validation.constraints.NotNull;
8+
9+
/**
10+
* 系统字典 请求
11+
*
12+
* @author Cade Li
13+
* @date 2023/6/11
14+
*/
15+
public class SysDictRequest {
16+
17+
@Data
18+
public static class SysDictPageRequest extends PageParams {
19+
private String name;
20+
private String type;
21+
}
22+
23+
@Data
24+
public static class SysDictAddRequest {
25+
@NotEmpty
26+
private String name;
27+
@NotEmpty
28+
private String type;
29+
private String label;
30+
@NotEmpty
31+
private String value;
32+
@NotNull
33+
private Boolean defaultFlag;
34+
private String description;
35+
@NotNull
36+
private Integer orderNum;
37+
}
38+
39+
@Data
40+
public static class SysDictUpdateRequest {
41+
@NotNull
42+
private Long id;
43+
@NotEmpty
44+
private String name;
45+
@NotEmpty
46+
private String type;
47+
private String label;
48+
@NotEmpty
49+
private String value;
50+
@NotNull
51+
private Boolean defaultFlag;
52+
private String description;
53+
@NotNull
54+
private Integer orderNum;
55+
}
56+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package top.cadecode.uniboot.framework.service;
2+
3+
import com.baomidou.mybatisplus.extension.service.IService;
4+
import top.cadecode.uniboot.framework.bean.po.SysDict;
5+
6+
/**
7+
* 系统字典服务
8+
*
9+
* @author Cade Li
10+
* @since 2023/5/26
11+
*/
12+
public interface SysDictService extends IService<SysDict> {
13+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package top.cadecode.uniboot.framework.serviceimpl;
2+
3+
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
4+
import org.springframework.stereotype.Service;
5+
import top.cadecode.uniboot.framework.bean.po.SysDict;
6+
import top.cadecode.uniboot.framework.mapper.SysDictMapper;
7+
import top.cadecode.uniboot.framework.service.SysDictService;
8+
9+
/**
10+
* 系统字典服务实现
11+
*
12+
* @author Cade Li
13+
* @since 2023/5/26
14+
*/
15+
@Service
16+
public class SysDictServiceImpl extends ServiceImpl<SysDictMapper, SysDict> implements SysDictService {
17+
}

0 commit comments

Comments
 (0)