From 63ecf171fadcdedb7d9188f13477129766177a2b Mon Sep 17 00:00:00 2001 From: lijiaqi Date: Wed, 1 Feb 2023 15:58:58 +0800 Subject: [PATCH] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=AD=97=E5=85=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ydool/common/constant/UrlConstant.java | 7 +- .../java/com/ydool/common/gen/Generator.java | 8 +- .../system/controller/DictDataController.java | 156 +++++++++++++ .../system/controller/DictTypeController.java | 137 ++++++++++++ .../system/controller/RoleController.java | 4 +- .../com/ydool/system/entity/DictData.java | 44 ++++ .../com/ydool/system/entity/DictType.java | 41 ++++ .../ydool/system/mapper/DictDataMapper.java | 18 ++ .../ydool/system/mapper/DictTypeMapper.java | 18 ++ .../ydool/system/request/DictDataRequest.java | 33 +++ .../ydool/system/request/DictTypeRequest.java | 31 +++ .../system/service/IDictDataService.java | 77 +++++++ .../system/service/IDictTypeService.java | 67 ++++++ .../service/impl/DictDataServiceImpl.java | 209 ++++++++++++++++++ .../service/impl/DictTypeServiceImpl.java | 159 +++++++++++++ 15 files changed, 1002 insertions(+), 7 deletions(-) create mode 100644 src/main/java/com/ydool/system/controller/DictDataController.java create mode 100644 src/main/java/com/ydool/system/controller/DictTypeController.java create mode 100644 src/main/java/com/ydool/system/entity/DictData.java create mode 100644 src/main/java/com/ydool/system/entity/DictType.java create mode 100644 src/main/java/com/ydool/system/mapper/DictDataMapper.java create mode 100644 src/main/java/com/ydool/system/mapper/DictTypeMapper.java create mode 100644 src/main/java/com/ydool/system/request/DictDataRequest.java create mode 100644 src/main/java/com/ydool/system/request/DictTypeRequest.java create mode 100644 src/main/java/com/ydool/system/service/IDictDataService.java create mode 100644 src/main/java/com/ydool/system/service/IDictTypeService.java create mode 100644 src/main/java/com/ydool/system/service/impl/DictDataServiceImpl.java create mode 100644 src/main/java/com/ydool/system/service/impl/DictTypeServiceImpl.java diff --git a/src/main/java/com/ydool/common/constant/UrlConstant.java b/src/main/java/com/ydool/common/constant/UrlConstant.java index 2f7a213..a7b59ba 100644 --- a/src/main/java/com/ydool/common/constant/UrlConstant.java +++ b/src/main/java/com/ydool/common/constant/UrlConstant.java @@ -14,14 +14,19 @@ public interface UrlConstant { String DEPT = API + "/dept"; + String ROLE = API + "/role"; + String DICT_TYPE = API + "/dict_type"; + + String DICT_DATA = API + "/dict_data"; + String PERSON = API + "/person"; - String COMPANY = API + "/company"; + /** * 重要说明:该值为项目生成后的缺省密钥 * 在实际的应用中,一定要为不同的项目或服务,自行生成公钥和私钥,并将 PRIVATE_KEY 的引用改为服务的配置项。 diff --git a/src/main/java/com/ydool/common/gen/Generator.java b/src/main/java/com/ydool/common/gen/Generator.java index 9bda7e5..d1aae59 100644 --- a/src/main/java/com/ydool/common/gen/Generator.java +++ b/src/main/java/com/ydool/common/gen/Generator.java @@ -27,11 +27,11 @@ public class Generator { public static void main(String[] args) { //表名 - String tableName = "t_lc_personnel"; + String tableName = "t_sys_dict_data"; //表前缀 - String tablePrefix = "t_lc_"; + String tablePrefix = "t_sys_"; //作者— - String author = "msf"; + String author = "ljq"; generate(tableName, tablePrefix, author); } @@ -66,7 +66,7 @@ public class Generator { //包配置 PackageConfig pc = new PackageConfig(); - pc.setParent("com.ydool.staff"); + pc.setParent("com.ydool.system"); pc.setEntity("entity"); pc.setServiceImpl("service"); pc.setServiceImpl("service.impl"); diff --git a/src/main/java/com/ydool/system/controller/DictDataController.java b/src/main/java/com/ydool/system/controller/DictDataController.java new file mode 100644 index 0000000..491291a --- /dev/null +++ b/src/main/java/com/ydool/system/controller/DictDataController.java @@ -0,0 +1,156 @@ +package com.ydool.system.controller; + +import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; +import com.github.xiaoymin.knife4j.annotations.ApiSupport; +import com.github.xiaoymin.knife4j.annotations.DynamicParameter; +import com.github.xiaoymin.knife4j.annotations.DynamicResponseParameters; +import com.ydool.common.base.BaseController; +import com.ydool.common.constant.UrlConstant; +import com.ydool.common.data.dto.AjaxResult; +import com.ydool.system.entity.DictData; +import com.ydool.system.request.DictDataRequest; +import com.ydool.system.request.IdsRequest; +import com.ydool.system.service.IDictDataService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +@RestController +@RequestMapping(UrlConstant.DICT_DATA) +@Api(tags = "字典数据", value = "字典数据") +@ApiSupport(order = 7) +public class DictDataController extends BaseController { + + @Autowired + private IDictDataService dictDataService; + + /** + * 字典数据列表 + * + * @param value + * @param column + * @param orderBy + * @param status + * @return + */ + @GetMapping(value = "list") + @ApiOperation(value = "字典数据列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "current", value = "当前页", dataType = "Integer"), + @ApiImplicitParam(name = "size", value = "每页条数", dataType = "Integer"), + @ApiImplicitParam(name = "value", value = "搜索框中的内容(只支持字符串类型)"), + @ApiImplicitParam(name = "column", value = "排序字段 字段名"), + @ApiImplicitParam(name = "orderBy", value = "排序顺序 降序:desc,升序:asc"), + @ApiImplicitParam(name = "status", value = "启用状态", dataType = "Boolean"), + @ApiImplicitParam(name = "dataType", value = "字典类型编码"), + }) + @ApiOperationSupport( + responses = @DynamicResponseParameters(properties = { + @DynamicParameter(name = "data", dataTypeClass = DictData.class) + }), + order = 1 + ) + public AjaxResult dictDataList(String value, + String column, + String orderBy, + Boolean status, + String dataType + ) { + return dictDataService.dictDataList(getPage(), value, column, orderBy, status,dataType); + } + + /** + * 字典数据详情 + * + * @param id + * @return + */ + @GetMapping(value = "detail") + @ApiOperation(value = "字典数据详情") + @ApiOperationSupport( + responses = @DynamicResponseParameters(properties = { + @DynamicParameter(name = "data", dataTypeClass = DictData.class) + }), order = 2 + ) + @ApiImplicitParam(name = "id", value = "字典类型Id") + public AjaxResult dictDataDetail(String id) { + return dictDataService.dictDataDetail(id); + } + + /** + * 保存字典数据 + * @param dictDataRequest + * @return + */ + @PostMapping(value = "save") + @ApiOperation(value = "保存字典数据") + @ApiOperationSupport(order = 3) + public AjaxResult saveDictData(@RequestBody @Validated DictDataRequest dictDataRequest) { + return dictDataService.saveDictData(dictDataRequest); + } + + /** + * 编辑字典数据 + * @param id + * @param dictDataRequest + * @return + */ + @PutMapping(value = "edit") + @ApiOperation(value = "编辑字典数据") + @ApiImplicitParam(name = "id", value = "字典数据Id") + @ApiOperationSupport(order = 4) + public AjaxResult editDictData(String id, @RequestBody @Validated DictDataRequest dictDataRequest) { + return dictDataService.editDictData(id, dictDataRequest); + } + + /** + * 单个删除字典数据 + * + * @param id + * @return + */ + @DeleteMapping(value = "remove") + @ApiOperation(value = "删除字典数据") + @ApiImplicitParam(name = "id", value = "字典数据Id") + @ApiOperationSupport(order = 5) + public AjaxResult removeDictData(String id) { + return dictDataService.removeDictData(id); + } + + /** + * 批量删除字典数据 + * + * @param ids + * @return + */ + @PostMapping(value = "removeBatch") + @ApiOperation(value = "批量删除字典数据") + @ApiOperationSupport(order = 6) + public AjaxResult removeDictDatas(@RequestBody @Validated IdsRequest ids) { + return dictDataService.removeDictDatas(ids); + } + + + /** + * 根据数据类型获取数据字典 + * + * @param dataType + * @return + */ + @GetMapping(value = "dictDataByDictType") + @ApiOperation(value = "根据数据类型获取数据字典") + @ApiOperationSupport( + responses = @DynamicResponseParameters(properties = { + @DynamicParameter(name = "data", dataTypeClass = DictData.class) + }), order = 7 + ) + @ApiImplicitParam(name = "id", value = "字典类型Id") + public AjaxResult dictDataByDictType(String dataType){ + return dictDataService.dictDataByDictType(dataType); + } + +} diff --git a/src/main/java/com/ydool/system/controller/DictTypeController.java b/src/main/java/com/ydool/system/controller/DictTypeController.java new file mode 100644 index 0000000..d449896 --- /dev/null +++ b/src/main/java/com/ydool/system/controller/DictTypeController.java @@ -0,0 +1,137 @@ +package com.ydool.system.controller; + +import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; +import com.github.xiaoymin.knife4j.annotations.ApiSupport; +import com.github.xiaoymin.knife4j.annotations.DynamicParameter; +import com.github.xiaoymin.knife4j.annotations.DynamicResponseParameters; +import com.ydool.common.base.BaseController; +import com.ydool.common.constant.UrlConstant; +import com.ydool.common.data.dto.AjaxResult; +import com.ydool.system.entity.Config; +import com.ydool.system.entity.DictType; +import com.ydool.system.entity.Role; +import com.ydool.system.request.DictTypeRequest; +import com.ydool.system.request.IdsRequest; +import com.ydool.system.request.RoleRequest; +import com.ydool.system.service.IDictTypeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +@RestController +@RequestMapping(UrlConstant.DICT_TYPE) +@Api(tags = "字典类型", value = "字典类型") +@ApiSupport(order = 6) +public class DictTypeController extends BaseController { + + @Autowired + private IDictTypeService dictTypeService; + + /** + * 字典类型列表 + * + * @param value + * @param column + * @param orderBy + * @param status + * @return + */ + @GetMapping(value = "list") + @ApiOperation(value = "字典类型列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "current", value = "当前页", dataType = "Integer"), + @ApiImplicitParam(name = "size", value = "每页条数", dataType = "Integer"), + @ApiImplicitParam(name = "value", value = "搜索框中的内容(只支持字符串类型)"), + @ApiImplicitParam(name = "column", value = "排序字段 字段名"), + @ApiImplicitParam(name = "orderBy", value = "排序顺序 降序:desc,升序:asc"), + @ApiImplicitParam(name = "status", value = "启用状态", dataType = "Boolean"), + }) + @ApiOperationSupport( + responses = @DynamicResponseParameters(properties = { + @DynamicParameter(name = "data", dataTypeClass = DictType.class) + }), + order = 1 + ) + public AjaxResult dictTypeList(String value, + String column, + String orderBy, + Boolean status + ) { + return dictTypeService.dictTypeList(getPage(), value, column, orderBy, status); + } + + /** + * 字典类型详情 + * + * @param id + * @return + */ + @GetMapping(value = "detail") + @ApiOperation(value = "字典类型详情") + @ApiOperationSupport( + responses = @DynamicResponseParameters(properties = { + @DynamicParameter(name = "data", dataTypeClass = DictType.class) + }), order = 2 + ) + @ApiImplicitParam(name = "id", value = "字典类型Id") + public AjaxResult dictTypeDetail(String id) { + return dictTypeService.dictTypeDetail(id); + } + + /** + * 保存字典类型 + * @param dictTypeRequest + * @return + */ + @PostMapping(value = "save") + @ApiOperation(value = "保存字典类型") + @ApiOperationSupport(order = 3) + public AjaxResult saveDictType(@RequestBody @Validated DictTypeRequest dictTypeRequest) { + return dictTypeService.saveDictType(dictTypeRequest); + } + + /** + * 编辑字典类型 + * @param id + * @param dictTypeRequest + * @return + */ + @PutMapping(value = "edit") + @ApiOperation(value = "编辑字典类型") + @ApiImplicitParam(name = "id", value = "字典类型Id") + @ApiOperationSupport(order = 4) + public AjaxResult editDictType(String id, @RequestBody @Validated DictTypeRequest dictTypeRequest) { + return dictTypeService.editDictType(id, dictTypeRequest); + } + + /** + * 单个删除字典类型 + * + * @param id + * @return + */ + @DeleteMapping(value = "remove") + @ApiOperation(value = "删除字典类型") + @ApiImplicitParam(name = "id", value = "字典类型Id") + @ApiOperationSupport(order = 5) + public AjaxResult removeDictType(String id) { + return dictTypeService.removeDictType(id); + } + + /** + * 批量删除字典类型 + * + * @param ids + * @return + */ + @PostMapping(value = "removeBatch") + @ApiOperation(value = "批量删除字典类型") + @ApiOperationSupport(order = 6) + public AjaxResult removeDictTypes(@RequestBody @Validated IdsRequest ids) { + return dictTypeService.removeDictTypes(ids); + } +} diff --git a/src/main/java/com/ydool/system/controller/RoleController.java b/src/main/java/com/ydool/system/controller/RoleController.java index 35ff105..e6a8806 100644 --- a/src/main/java/com/ydool/system/controller/RoleController.java +++ b/src/main/java/com/ydool/system/controller/RoleController.java @@ -50,7 +50,7 @@ public class RoleController extends BaseController { }) @ApiOperationSupport( responses = @DynamicResponseParameters(properties = { - @DynamicParameter(name = "data", dataTypeClass = Config.class) + @DynamicParameter(name = "data", dataTypeClass = Role.class) }), order = 1 ) @@ -111,7 +111,7 @@ public class RoleController extends BaseController { /** * 单个删除角色 * - * @param id 参数Id + * @param id 角色Id * @return */ @DeleteMapping(value = "remove") diff --git a/src/main/java/com/ydool/system/entity/DictData.java b/src/main/java/com/ydool/system/entity/DictData.java new file mode 100644 index 0000000..4518b54 --- /dev/null +++ b/src/main/java/com/ydool/system/entity/DictData.java @@ -0,0 +1,44 @@ +package com.ydool.system.entity; +import com.baomidou.mybatisplus.annotation.TableName; +import com.ydool.common.base.BaseEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +/** + *

+ * 字典数据表 + *

+ * + * @author ljq + * @since 2023-02-01 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@TableName("t_sys_dict_data") +@ApiModel(value="DictData对象", description="字典数据表") +public class DictData extends BaseEntity{ + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "字典编码") + private String dataType; + + @ApiModelProperty(value = "字典标签") + private String label; + + @ApiModelProperty(value = "字典键值") + private String value; + + @ApiModelProperty(value = "字典排序") + private Integer sortNo; + + @ApiModelProperty(value = "启用状态") + private Boolean status; + + @ApiModelProperty(value = "备注") + private String remarks; + +} diff --git a/src/main/java/com/ydool/system/entity/DictType.java b/src/main/java/com/ydool/system/entity/DictType.java new file mode 100644 index 0000000..de88f43 --- /dev/null +++ b/src/main/java/com/ydool/system/entity/DictType.java @@ -0,0 +1,41 @@ +package com.ydool.system.entity; +import com.baomidou.mybatisplus.annotation.TableName; +import com.ydool.common.base.BaseEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +/** + *

+ * 字典类型表 + *

+ * + * @author ljq + * @since 2023-02-01 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@TableName("t_sys_dict_type") +@ApiModel(value="DictType对象", description="字典类型表") +public class DictType extends BaseEntity{ + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "字典类型编码") + private String code; + + @ApiModelProperty(value = "字典类型名称") + private String name; + + @ApiModelProperty(value = "字典类型排序") + private Integer sortNo; + + @ApiModelProperty(value = "启用状态") + private Boolean status; + + @ApiModelProperty(value = "备注") + private String remarks; + +} diff --git a/src/main/java/com/ydool/system/mapper/DictDataMapper.java b/src/main/java/com/ydool/system/mapper/DictDataMapper.java new file mode 100644 index 0000000..4cb9f5c --- /dev/null +++ b/src/main/java/com/ydool/system/mapper/DictDataMapper.java @@ -0,0 +1,18 @@ +package com.ydool.system.mapper; + +import com.ydool.system.entity.DictData; +import com.github.yulichang.base.MPJBaseMapper; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 字典数据表 Mapper 接口 + *

+ * + * @author ljq + * @since 2023-02-01 + */ +@Mapper +public interface DictDataMapper extends MPJBaseMapper { + +} diff --git a/src/main/java/com/ydool/system/mapper/DictTypeMapper.java b/src/main/java/com/ydool/system/mapper/DictTypeMapper.java new file mode 100644 index 0000000..34aa865 --- /dev/null +++ b/src/main/java/com/ydool/system/mapper/DictTypeMapper.java @@ -0,0 +1,18 @@ +package com.ydool.system.mapper; + +import com.ydool.system.entity.DictType; +import com.github.yulichang.base.MPJBaseMapper; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 字典类型表 Mapper 接口 + *

+ * + * @author ljq + * @since 2023-02-01 + */ +@Mapper +public interface DictTypeMapper extends MPJBaseMapper { + +} diff --git a/src/main/java/com/ydool/system/request/DictDataRequest.java b/src/main/java/com/ydool/system/request/DictDataRequest.java new file mode 100644 index 0000000..9723b53 --- /dev/null +++ b/src/main/java/com/ydool/system/request/DictDataRequest.java @@ -0,0 +1,33 @@ +package com.ydool.system.request; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + +@Data +public class DictDataRequest { + @ApiModelProperty(value = "字典类型编码") + @NotBlank(message = "字典类型编码不能为空") + private String dataType; + + @ApiModelProperty(value = "字典标签") + @NotBlank(message = "字典标签不能为空") + private String label; + + @ApiModelProperty(value = "字典键值") + @NotBlank(message = "字典键值不能为空") + private String value; + + @ApiModelProperty(value = "字典排序") + @NotNull(message = "字典排序不能为空") + private Integer sortNo; + + @ApiModelProperty(value = "启用状态") + @NotNull(message = "启用状态不能为空") + private Boolean status; + + @ApiModelProperty(value = "备注") + private String remarks; +} diff --git a/src/main/java/com/ydool/system/request/DictTypeRequest.java b/src/main/java/com/ydool/system/request/DictTypeRequest.java new file mode 100644 index 0000000..a3d8074 --- /dev/null +++ b/src/main/java/com/ydool/system/request/DictTypeRequest.java @@ -0,0 +1,31 @@ +package com.ydool.system.request; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; + +@Data +public class DictTypeRequest { + + @ApiModelProperty(value = "字典类型编码") + @NotBlank(message = "字典类型编码不能为空") + private String code; + + @ApiModelProperty(value = "字典类型名称") + @NotBlank(message = "字典类型名称不能为空") + private String name; + + @ApiModelProperty(value = "字典类型排序") + @NotNull(message = "字典排序不能为空") + private Integer sortNo; + + @ApiModelProperty(value = "启用状态") + @NotNull(message = "启用状态不能为空") + private Boolean status; + + @ApiModelProperty(value = "备注") + private String remarks; +} diff --git a/src/main/java/com/ydool/system/service/IDictDataService.java b/src/main/java/com/ydool/system/service/IDictDataService.java new file mode 100644 index 0000000..5e9389b --- /dev/null +++ b/src/main/java/com/ydool/system/service/IDictDataService.java @@ -0,0 +1,77 @@ +package com.ydool.system.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ydool.common.data.dto.AjaxResult; +import com.ydool.system.request.DictDataRequest; +import com.ydool.system.request.IdsRequest; +import org.aspectj.weaver.loadtime.Aj; + +/** + *

+ * 字典数据表 服务类 + *

+ * + * @author ljq + * @since 2023-02-01 + */ +public interface IDictDataService { + /** + * 保存字典数据 + * @param dictDataRequest + * @return + */ + AjaxResult saveDictData(DictDataRequest dictDataRequest); + + /** + * 编辑字典数据 + * @param id + * @param dictDataRequest + * @return + */ + AjaxResult editDictData(String id,DictDataRequest dictDataRequest); + + /** + * 删除字典数据 + * @param id + * @return + */ + AjaxResult removeDictData(String id); + + + /** + * 批量删除字典数据 + * @param ids + * @return + */ + AjaxResult removeDictDatas(IdsRequest ids); + + + + /** + * 字典数据详情 + * @param id + * @return + */ + AjaxResult dictDataDetail(String id); + + /** + * 字典数据列表 + * @param page + * @param value + * @param column + * @param orderBy + * @param status + * @param dataType + * @return + */ + AjaxResult dictDataList(Page page, String value, String column, String orderBy, Boolean status,String dataType); + + /** + * 根据数据类型获取数据字典 + * @param dataType + * @return + */ + AjaxResult dictDataByDictType(String dataType); + +} + diff --git a/src/main/java/com/ydool/system/service/IDictTypeService.java b/src/main/java/com/ydool/system/service/IDictTypeService.java new file mode 100644 index 0000000..0b782ed --- /dev/null +++ b/src/main/java/com/ydool/system/service/IDictTypeService.java @@ -0,0 +1,67 @@ +package com.ydool.system.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ydool.common.data.dto.AjaxResult; +import com.ydool.system.request.DictTypeRequest; +import com.ydool.system.request.IdsRequest; + +/** + *

+ * 字典类型表 服务类 + *

+ * + * @author ljq + * @since 2023-02-01 + */ +public interface IDictTypeService { + + /** + * 保存字典类型 + * @param dictTypeRequest + * @return + */ + AjaxResult saveDictType(DictTypeRequest dictTypeRequest); + + + /** + * 编辑字典类型 + * @param id + * @param dictTypeRequest + * @return + */ + AjaxResult editDictType(String id,DictTypeRequest dictTypeRequest); + + /** + * 删除字典类型 + * + * @param id + * @return + */ + AjaxResult removeDictType(String id); + + /** + * 批量删除字典类型 + * @param ids + * @return + */ + AjaxResult removeDictTypes(IdsRequest ids); + + /** + * 字典类型详情 + * @param id + * @return + */ + AjaxResult dictTypeDetail(String id); + + /** + * 字典类型列表 + * @param page + * @param value + * @param column + * @param orderBy + * @param status + * @return + */ + AjaxResult dictTypeList(Page page, String value, String column, String orderBy, Boolean status); +} + diff --git a/src/main/java/com/ydool/system/service/impl/DictDataServiceImpl.java b/src/main/java/com/ydool/system/service/impl/DictDataServiceImpl.java new file mode 100644 index 0000000..ee8e6ae --- /dev/null +++ b/src/main/java/com/ydool/system/service/impl/DictDataServiceImpl.java @@ -0,0 +1,209 @@ +package com.ydool.system.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ArrayUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ydool.common.base.BaseService; +import com.ydool.common.data.dto.AjaxResult; +import com.ydool.system.entity.DictData; +import com.ydool.system.entity.DictType; +import com.ydool.system.mapper.DictDataMapper; +import com.ydool.system.request.DictDataRequest; +import com.ydool.system.request.IdsRequest; +import com.ydool.system.service.IDictDataService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.Arrays; +import java.util.List; + +/** + *

+ * 字典数据表 服务类 + *

+ * + * @author ljq + * @since 2023-02-01 + */ +@Service +public class DictDataServiceImpl extends BaseService implements IDictDataService { + + @Autowired + private DictTypeServiceImpl dictTypeService; + + /** + * 保存字典数据 + * + * @param dictDataRequest + * @return + */ + @Override + public AjaxResult saveDictData(DictDataRequest dictDataRequest) { + String message = checkDictData("", dictDataRequest); + if (StrUtil.isNotBlank(message)) return AjaxResult.fail(message); + DictData dictData = BeanUtil.copyProperties(dictDataRequest, DictData.class); + boolean flag = save(dictData); + return flag ? AjaxResult.ok().msg("保存成功") : AjaxResult.fail("保存失败"); + } + + /** + * 编辑字典数据 + * + * @param id + * @param dictDataRequest + * @return + */ + @Override + public AjaxResult editDictData(String id, DictDataRequest dictDataRequest) { + if (StrUtil.isBlank(id)) return AjaxResult.fail("id不能为空"); + String message = checkDictData("", dictDataRequest); + if (StrUtil.isNotBlank(message)) return AjaxResult.fail(message); + DictData dictData = getById(id); + if (ObjectUtil.isNull(dictData)) return AjaxResult.fail("该字典数据不存在"); + BeanUtil.copyProperties(dictDataRequest, dictData); + boolean flag = updateById(dictData); + return flag ? AjaxResult.ok().msg("编辑成功") : AjaxResult.fail("编辑失败"); + } + + /** + * 删除字典数据 + * + * @param id + * @return + */ + @Override + public AjaxResult removeDictData(String id) { + if (StrUtil.isBlank(id)) return AjaxResult.fail("id不能为空"); + DictData dictData = getById(id); + if (ObjectUtil.isNull(dictData)) return AjaxResult.fail("该字典数据不存在"); + return removeById(id) ? AjaxResult.ok().msg("删除成功") : AjaxResult.fail("删除失败"); + } + + + /** + * 批量删除字典数据 + * + * @param ids + * @return + */ + @Override + public AjaxResult removeDictDatas(IdsRequest ids) { + String[] idList = ids.getIds(); + if (ArrayUtil.isEmpty(idList)) return AjaxResult.fail("字典数据集合不能为空"); + List dictDataList = listByIds(Arrays.asList(idList)); + if (CollUtil.isEmpty(dictDataList)) return AjaxResult.fail("该字典数据集合全部不存在"); + return removeByIds(Arrays.asList(idList)) ? AjaxResult.ok().msg("批量删除成功") : AjaxResult.fail("批量删除失败"); + } + + /** + * 字典数据详情 + * + * @param id + * @return + */ + @Override + public AjaxResult dictDataDetail(String id) { + if (StrUtil.isBlank(id)) return AjaxResult.fail("id不能为空"); + DictData dictData = getById(id); + if (ObjectUtil.isNull(dictData)) return AjaxResult.fail("该字典数据不存在"); + return AjaxResult.ok().data(dictData); + } + + /** + * 字典数据列表 + * + * @param page + * @param value + * @param column + * @param orderBy + * @param status + * @param dataType + * @return + */ + @Override + public AjaxResult dictDataList(Page page, String value, String column, String orderBy, Boolean status, + String dataType) { + DictType dictType = dictTypeService.getOne(new QueryWrapper().lambda() + .eq(DictType::getCode, dataType) + .last("limit 1") + ); + if (ObjectUtil.isNull(dictType)) return AjaxResult.fail("字典类型编码不存在"); + + + QueryWrapper qw = new QueryWrapper(); + + if (StrUtil.isNotBlank(value)) { + qw.lambda().like(DictData::getLabel, value) + .or().like(DictData::getRemarks, value) + .or().like(DictData::getValue, value); + } + + qw.lambda().eq(ObjectUtil.isNotNull(status), DictData::getStatus, status) + .eq(DictData::getDataType, dataType); + + if ("desc".equals(orderBy) && StrUtil.isNotBlank(column)) { + qw.orderByDesc(StrUtil.toUnderlineCase(column)); + } + + if ("asc".equals(orderBy) && StrUtil.isNotBlank(column)) { + qw.orderByAsc(StrUtil.toUnderlineCase(column)); + } + + Page pageList = page(page, qw); + + return AjaxResult.ok().data(pageList); + } + + /** + * 根据数据类型获取数据字典 + * + * @param dataType + * @return + */ + @Override + public AjaxResult dictDataByDictType(String dataType) { + DictType dictType = dictTypeService.getOne(new QueryWrapper().lambda() + .eq(DictType::getCode, dataType) + .eq(DictType::getStatus, true) + .last("limit 1") + ); + if (ObjectUtil.isNull(dictType)) return AjaxResult.fail("字典类型编码不存在或禁用"); + + QueryWrapper qw = new QueryWrapper(); + qw.lambda().eq(DictData::getStatus, true) + .eq(DictData::getDataType, dataType) + .orderByAsc(DictData::getSortNo); + + List dictDataList = list(qw); + + return AjaxResult.ok().data(dictDataList); + } + + /** + * 校验字典数据 + * + * @param id + * @param dictDataRequest + * @return + */ + private String checkDictData(String id, DictDataRequest dictDataRequest) { + DictType dictType = dictTypeService.getOne(new QueryWrapper().lambda() + .eq(DictType::getCode, dictDataRequest.getDataType()) + .last("limit 1") + ); + if (ObjectUtil.isNull(dictType)) return "字典类型编码不存在"; + + DictData dictData = getOne(new QueryWrapper().lambda() + .eq(DictData::getLabel, dictDataRequest.getLabel()) + .eq(DictData::getDataType, dictDataRequest.getDataType()) + .ne(StrUtil.isNotBlank(id), DictData::getId, id) + ); + if (ObjectUtil.isNotNull(dictData)) return "字典标签不允许重复"; + return null; + } +} + diff --git a/src/main/java/com/ydool/system/service/impl/DictTypeServiceImpl.java b/src/main/java/com/ydool/system/service/impl/DictTypeServiceImpl.java new file mode 100644 index 0000000..64dee66 --- /dev/null +++ b/src/main/java/com/ydool/system/service/impl/DictTypeServiceImpl.java @@ -0,0 +1,159 @@ +package com.ydool.system.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ArrayUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ydool.common.data.dto.AjaxResult; +import com.ydool.system.entity.DictType; +import com.ydool.common.base.BaseService; +import com.ydool.system.entity.Role; +import com.ydool.system.mapper.DictTypeMapper; +import com.ydool.system.request.DictTypeRequest; +import com.ydool.system.request.IdsRequest; +import com.ydool.system.service.IDictTypeService; +import org.springframework.context.annotation.Bean; +import org.springframework.stereotype.Service; + +import java.util.Arrays; +import java.util.List; + +/** + *

+ * 字典类型表 服务类 + *

+ * + * @author ljq + * @since 2023-02-01 + */ +@Service +public class DictTypeServiceImpl extends BaseService implements IDictTypeService { + + /** + * 保存字典类型 + * @param dictTypeRequest + * @return + */ + @Override + public AjaxResult saveDictType(DictTypeRequest dictTypeRequest) { + String message = checkDictType("", dictTypeRequest); + if (StrUtil.isNotBlank(message)) return AjaxResult.fail(message); + DictType dictType = BeanUtil.copyProperties(dictTypeRequest, DictType.class); + boolean flag = save(dictType); + return flag ? AjaxResult.ok().msg("保存成功") : AjaxResult.fail("保存失败"); + } + + /** + * 编辑字典类型 + * @param id + * @param dictTypeRequest + * @return + */ + @Override + public AjaxResult editDictType(String id, DictTypeRequest dictTypeRequest) { + if (StrUtil.isBlank(id)) return AjaxResult.fail("id不能为空"); + String message = checkDictType("", dictTypeRequest); + if (StrUtil.isNotBlank(message)) return AjaxResult.fail(message); + DictType dictType = getById(id); + if (ObjectUtil.isNull(dictType)) return AjaxResult.fail("该字典类型不存在"); + BeanUtil.copyProperties(dictTypeRequest, dictType); + boolean flag = updateById(dictType); + return flag ? AjaxResult.ok().msg("编辑成功") : AjaxResult.fail("编辑失败"); + } + + /** + * 删除字典类型 + * + * @param id + * @return + */ + @Override + public AjaxResult removeDictType(String id) { + if (StrUtil.isBlank(id)) return AjaxResult.fail("id不能为空"); + DictType dictType = getById(id); + if (ObjectUtil.isNull(dictType)) return AjaxResult.fail("该字典类型不存在"); + return removeById(id) ? AjaxResult.ok().msg("删除成功") : AjaxResult.fail("删除失败"); + } + + /** + * 批量删除字典类型 + * @param ids + * @return + */ + @Override + public AjaxResult removeDictTypes(IdsRequest ids) { + String[] idList = ids.getIds(); + if (ArrayUtil.isEmpty(idList)) return AjaxResult.fail("字典类型集合不能为空"); + List dictTypeList = listByIds(Arrays.asList(idList)); + if (CollUtil.isEmpty(dictTypeList)) return AjaxResult.fail("该字典类型集合全部不存在"); + return removeByIds(Arrays.asList(idList)) ? AjaxResult.ok().msg("批量删除成功") : AjaxResult.fail("批量删除失败"); + } + + /** + * 字典类型详情 + * @param id + * @return + */ + @Override + public AjaxResult dictTypeDetail(String id) { + if (StrUtil.isBlank(id)) return AjaxResult.fail("id不能为空"); + DictType dictType = getById(id); + if (ObjectUtil.isNull(dictType)) return AjaxResult.fail("该字典类型不存在"); + return AjaxResult.ok().data(dictType); + } + + /** + * 字典类型列表 + * @param page + * @param value + * @param column + * @param orderBy + * @param status + * @return + */ + @Override + public AjaxResult dictTypeList(Page page, String value, String column, String orderBy, Boolean status) { + QueryWrapper qw = new QueryWrapper(); + + if (StrUtil.isNotBlank(value)) { + qw.lambda().like(DictType::getName, value) + .or().like(DictType::getRemarks, value) + .or().like(DictType::getCode, value); + } + + qw.lambda().eq(ObjectUtil.isNotNull(status), DictType::getStatus, status); + + if ("desc".equals(orderBy) && StrUtil.isNotBlank(column)) { + qw.orderByDesc(StrUtil.toUnderlineCase(column)); + } + + if ("asc".equals(orderBy) && StrUtil.isNotBlank(column)) { + qw.orderByAsc(StrUtil.toUnderlineCase(column)); + } + + Page pageList = page(page, qw); + + return AjaxResult.ok().data(pageList); + } + + + /** + * 校验字典类型 + * @param id + * @param dictTypeRequest + * @return + */ + private String checkDictType(String id,DictTypeRequest dictTypeRequest) { + DictType dictType = getOne(new QueryWrapper().lambda() + .eq(DictType::getCode, dictTypeRequest.getCode()) + .ne(StrUtil.isNotBlank(id), DictType::getId, id) + .last("limit 1") + ); + if (ObjectUtil.isNotNull(dictType)) return "字典类型编码不能重复"; + return null; + } +} +