From 71d625c8375a7871a842695bce4d2dee36aabe4f Mon Sep 17 00:00:00 2001 From: ailanyin Date: Wed, 31 May 2023 17:42:38 +0800 Subject: [PATCH] add --- .../qiaoba/api/system/entity/SysDictData.java | 46 ++++++++++ .../qiaoba/api/system/entity/SysDictType.java | 37 ++++++++ .../system/entity/param/SysDictTypeParam.java | 27 ++++++ .../api/system/service/SysDictApiService.java | 23 +++++ .../controller/SysDictTypeController.java | 67 ++++++++++++++ .../system/mapper/SysDictTypeMapper.java | 33 +++++++ .../system/service/SysDictDataService.java | 66 ++++++++++++++ .../system/service/SysDictTypeService.java | 68 ++++++++++++++ .../service/impl/SysDictTypeServiceImpl.java | 91 +++++++++++++++++++ .../resources/mapper/SysDictTypeMapper.xml | 25 +++++ 10 files changed, 483 insertions(+) create mode 100644 qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/entity/SysDictData.java create mode 100644 qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/entity/SysDictType.java create mode 100644 qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/entity/param/SysDictTypeParam.java create mode 100644 qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/service/SysDictApiService.java create mode 100644 qiaoba-modules/qiaoba-module-system/src/main/java/com/qiaoba/module/system/controller/SysDictTypeController.java create mode 100644 qiaoba-modules/qiaoba-module-system/src/main/java/com/qiaoba/module/system/mapper/SysDictTypeMapper.java create mode 100644 qiaoba-modules/qiaoba-module-system/src/main/java/com/qiaoba/module/system/service/SysDictDataService.java create mode 100644 qiaoba-modules/qiaoba-module-system/src/main/java/com/qiaoba/module/system/service/SysDictTypeService.java create mode 100644 qiaoba-modules/qiaoba-module-system/src/main/java/com/qiaoba/module/system/service/impl/SysDictTypeServiceImpl.java create mode 100644 qiaoba-modules/qiaoba-module-system/src/main/resources/mapper/SysDictTypeMapper.xml diff --git a/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/entity/SysDictData.java b/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/entity/SysDictData.java new file mode 100644 index 0000000..1c666fa --- /dev/null +++ b/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/entity/SysDictData.java @@ -0,0 +1,46 @@ +package com.qiaoba.api.system.entity; + +import cn.afterturn.easypoi.excel.annotation.Excel; +import com.qiaoba.common.base.entity.BaseEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 字典数据 sys_dict_data + * + * @author ailanyin + * @version 1.0 + * @since 2022-09-22 04:20:28 + */ +@Data +@EqualsAndHashCode(callSuper = false) +public class SysDictData extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @Excel(name = "字典编码" , width = 20) + private Long dictCode; + + @Excel(name = "字典排序" , width = 20) + private Long dictSort; + + @Excel(name = "字典标签" , width = 20) + private String dictLabel; + + @Excel(name = "字典键值" , width = 20) + private String dictValue; + + @Excel(name = "字典类型" , width = 20) + private String dictType; + + private String cssClass; + + private String listClass; + + @Excel(name = "是否默认" , width = 20, replace = {"是_Y" , "否_N"}) + private String isDefault; + + @Excel(name = "状态" , width = 20, replace = {"正常_0" , "停用_1"}) + private String status; + +} diff --git a/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/entity/SysDictType.java b/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/entity/SysDictType.java new file mode 100644 index 0000000..ce3e05b --- /dev/null +++ b/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/entity/SysDictType.java @@ -0,0 +1,37 @@ +package com.qiaoba.api.system.entity; + +import cn.afterturn.easypoi.excel.annotation.Excel; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.qiaoba.common.base.entity.BaseEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 字典类型 sys_dict_type + * + * @author ailanyin + * @version 1.0 + * @since 2022-09-22 04:20:28 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@TableName("sys_dict_type") +public class SysDictType extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @Excel(name = "字典主键", width = 20) + @TableId + private String dictId; + + @Excel(name = "字典名称", width = 20) + private String dictName; + + @Excel(name = "字典类型", width = 20) + private String dictType; + + @Excel(name = "状态", width = 20, replace = {"正常_1", "停用_0"}) + private String status; + +} diff --git a/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/entity/param/SysDictTypeParam.java b/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/entity/param/SysDictTypeParam.java new file mode 100644 index 0000000..d53389e --- /dev/null +++ b/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/entity/param/SysDictTypeParam.java @@ -0,0 +1,27 @@ +package com.qiaoba.api.system.entity.param; + +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; + +/** + * 字典类型 查询参数 + * + * @author ailanyin + * @version 1.0 + * @since 2023/5/31 10:52 + */ +@Getter +@Setter +public class SysDictTypeParam implements Serializable { + + private static final long serialVersionUID = 1L; + + private String dictName; + + private String dictType; + + private String status; + +} diff --git a/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/service/SysDictApiService.java b/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/service/SysDictApiService.java new file mode 100644 index 0000000..75f0780 --- /dev/null +++ b/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/service/SysDictApiService.java @@ -0,0 +1,23 @@ +package com.qiaoba.api.system.service; + +import com.qiaoba.api.system.entity.SysDictData; + +import java.util.List; + +/** + * 字典 对外暴露接口 + * + * @author ailanyin + * @version 1.0 + * @since 2023/5/31 9:44 + */ +public interface SysDictApiService { + + /** + * 根据字典类型查询字典数据 + * + * @param dictType 字典类型 + * @return 字典数据集合信息 + */ + List selectDictDataByType(String dictType); +} diff --git a/qiaoba-modules/qiaoba-module-system/src/main/java/com/qiaoba/module/system/controller/SysDictTypeController.java b/qiaoba-modules/qiaoba-module-system/src/main/java/com/qiaoba/module/system/controller/SysDictTypeController.java new file mode 100644 index 0000000..57a0485 --- /dev/null +++ b/qiaoba-modules/qiaoba-module-system/src/main/java/com/qiaoba/module/system/controller/SysDictTypeController.java @@ -0,0 +1,67 @@ +package com.qiaoba.module.system.controller; + +import com.qiaoba.api.system.entity.SysDictType; +import com.qiaoba.api.system.entity.param.SysDictTypeParam; +import com.qiaoba.common.base.result.AjaxResult; +import com.qiaoba.common.database.entity.PageQuery; +import com.qiaoba.common.database.entity.TableDataInfo; +import com.qiaoba.common.poi.utils.ExcelUtil; +import com.qiaoba.module.system.service.SysDictTypeService; +import lombok.RequiredArgsConstructor; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.util.List; + +/** + * 字典类型管理 Web层 + * + * @author ailanyin + * @version 1.0 + * @since 2022-09-22 04:20:28 + */ +@RestController +@RequestMapping("/system/dict/type") +@RequiredArgsConstructor +public class SysDictTypeController { + + private final SysDictTypeService sysDictTypeService; + + @PreAuthorize("hasAuthority('system:dict:list')") + @GetMapping("/list") + public TableDataInfo list(SysDictTypeParam param, PageQuery pageQuery) { + return sysDictTypeService.selectPageList(param, pageQuery); + } + + @PreAuthorize("hasAuthority('system:dict:export')") + @PostMapping("/export") + public void export(HttpServletResponse response, SysDictTypeParam param) throws Exception { + List list = sysDictTypeService.selectList(param); + ExcelUtil.exportExcel(list, SysDictType.class, "字典类型" , response); + } + + @PreAuthorize("hasAuthority('system:dict:query')") + @GetMapping(value = "/{dictId}") + public AjaxResult getInfo(@PathVariable String dictId) { + return AjaxResult.success(sysDictTypeService.selectById(dictId)); + } + + @PreAuthorize("hasAuthority('system:dict:add')") + @PostMapping + public AjaxResult add(@RequestBody SysDictType sysDictType) { + return AjaxResult.toAjax(sysDictTypeService.insert(sysDictType)); + } + + @PreAuthorize("hasAuthority('system:dict:edit')") + @PutMapping + public AjaxResult edit(@RequestBody SysDictType sysDictType) { + return AjaxResult.toAjax(sysDictTypeService.update(sysDictType)); + } + + @PreAuthorize("hasAuthority('system:dict:remove')") + @DeleteMapping("/{ids}") + public AjaxResult remove(@PathVariable List ids) { + return AjaxResult.toAjax(sysDictTypeService.deleteByIds(ids)); + } +} diff --git a/qiaoba-modules/qiaoba-module-system/src/main/java/com/qiaoba/module/system/mapper/SysDictTypeMapper.java b/qiaoba-modules/qiaoba-module-system/src/main/java/com/qiaoba/module/system/mapper/SysDictTypeMapper.java new file mode 100644 index 0000000..0cd6872 --- /dev/null +++ b/qiaoba-modules/qiaoba-module-system/src/main/java/com/qiaoba/module/system/mapper/SysDictTypeMapper.java @@ -0,0 +1,33 @@ +package com.qiaoba.module.system.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.qiaoba.api.system.entity.SysDictType; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 字典类型管理 数据层 + * + * @author ailanyin + * @version 1.0 + * @since 2022-09-22 04:20:28 + */ +public interface SysDictTypeMapper extends BaseMapper { + + /** + * 校验字典类型是否唯一 + * + * @param dict 字典类型 + * @return dictType + */ + String checkDictTypeUnique(SysDictType dict); + + /** + * 校验是否允许删除 + * + * @param ids ids + * @return typeName + */ + String checkAllowDelete(@Param("list") List ids); +} diff --git a/qiaoba-modules/qiaoba-module-system/src/main/java/com/qiaoba/module/system/service/SysDictDataService.java b/qiaoba-modules/qiaoba-module-system/src/main/java/com/qiaoba/module/system/service/SysDictDataService.java new file mode 100644 index 0000000..a804587 --- /dev/null +++ b/qiaoba-modules/qiaoba-module-system/src/main/java/com/qiaoba/module/system/service/SysDictDataService.java @@ -0,0 +1,66 @@ +package com.qiaoba.module.system.service; + + +import com.qiaoba.api.system.entity.SysDictData; +import com.qiaoba.api.system.service.SysDictApiService; + +import java.util.List; + +/** + * 字典类型数据管理 服务层 + * + * @author ailanyin + * @version 1.0 + * @since 2022-09-22 04:20:28 + */ +public interface SysDictDataService extends SysDictApiService { + + /** + * 根据条件分页查询字典数据 + * + * @param dictData 字典数据信息 + * @return 字典数据集合信息 + */ + List selectDictDataList(SysDictData dictData); + + /** + * 根据字典类型和字典键值查询字典数据信息 + * + * @param dictType 字典类型 + * @param dictValue 字典键值 + * @return 字典标签 + */ + String selectDictLabel(String dictType, String dictValue); + + /** + * 根据字典数据ID查询信息 + * + * @param dictCode 字典数据ID + * @return 字典数据 + */ + SysDictData selectDictDataById(Long dictCode); + + /** + * 批量删除字典数据信息 + * + * @param dictCodes 需要删除的字典数据ID + */ + void deleteDictDataByIds(Long[] dictCodes); + + /** + * 新增保存字典数据信息 + * + * @param dictData 字典数据信息 + * @return 结果 + */ + int insertDictData(SysDictData dictData); + + /** + * 修改保存字典数据信息 + * + * @param dictData 字典数据信息 + * @return 结果 + */ + int updateDictData(SysDictData dictData); + +} diff --git a/qiaoba-modules/qiaoba-module-system/src/main/java/com/qiaoba/module/system/service/SysDictTypeService.java b/qiaoba-modules/qiaoba-module-system/src/main/java/com/qiaoba/module/system/service/SysDictTypeService.java new file mode 100644 index 0000000..96a1404 --- /dev/null +++ b/qiaoba-modules/qiaoba-module-system/src/main/java/com/qiaoba/module/system/service/SysDictTypeService.java @@ -0,0 +1,68 @@ +package com.qiaoba.module.system.service; + + +import com.qiaoba.api.system.entity.SysDictType; +import com.qiaoba.api.system.entity.param.SysDictTypeParam; +import com.qiaoba.common.database.entity.PageQuery; +import com.qiaoba.common.database.entity.TableDataInfo; + +import java.util.List; + +/** + * 字典类型管理 服务层 + * + * @author ailanyin + * @version 1.0 + * @since 2022-09-22 04:20:28 + */ +public interface SysDictTypeService { + + /** + * 新增 + * + * @param sysDictType sysDictType + * @return 结果 + */ + int insert(SysDictType sysDictType); + + /** + * 修改 + * + * @param sysDictType sysDictType + * @return 结果 + */ + int update(SysDictType sysDictType); + + /** + * 批量删除 + * + * @param ids ids + * @return 结果 + */ + int deleteByIds(List ids); + + /** + * 通过ID查询 + * + * @param dictId dictId + * @return SysDictType + */ + SysDictType selectById(String dictId); + + /** + * 分页查询 + * + * @param param param + * @param pageQuery pageQuery + * @return list + */ + TableDataInfo selectPageList(SysDictTypeParam param, PageQuery pageQuery); + + /** + * 参数查询列表 + * + * @param param param + * @return list + */ + List selectList(SysDictTypeParam param); +} diff --git a/qiaoba-modules/qiaoba-module-system/src/main/java/com/qiaoba/module/system/service/impl/SysDictTypeServiceImpl.java b/qiaoba-modules/qiaoba-module-system/src/main/java/com/qiaoba/module/system/service/impl/SysDictTypeServiceImpl.java new file mode 100644 index 0000000..45cefc1 --- /dev/null +++ b/qiaoba-modules/qiaoba-module-system/src/main/java/com/qiaoba/module/system/service/impl/SysDictTypeServiceImpl.java @@ -0,0 +1,91 @@ +package com.qiaoba.module.system.service.impl; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.qiaoba.api.system.entity.SysDictType; +import com.qiaoba.api.system.entity.param.SysDictTypeParam; +import com.qiaoba.auth.utils.SecurityUtil; +import com.qiaoba.common.base.exceptions.ServiceException; +import com.qiaoba.common.database.entity.PageQuery; +import com.qiaoba.common.database.entity.TableDataInfo; +import com.qiaoba.module.system.mapper.SysDictTypeMapper; +import com.qiaoba.module.system.service.SysDictTypeService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.Date; +import java.util.List; + +/** + * 字典类型管理 服务层实现 + * + * @author ailanyin + * @version 1.0 + * @since 2023/5/31 10:31 + */ +@Service +@RequiredArgsConstructor +public class SysDictTypeServiceImpl implements SysDictTypeService { + + private final SysDictTypeMapper sysDictTypeMapper; + + @Override + public int insert(SysDictType sysDictType) { + checkAllowInsertOrUpdate(sysDictType); + sysDictType.setCreateTime(new Date()); + sysDictType.setCreateUser(SecurityUtil.getLoginUsername()); + return sysDictTypeMapper.insert(sysDictType); + } + + @Override + public int update(SysDictType sysDictType) { + checkAllowInsertOrUpdate(sysDictType); + sysDictType.setUpdateTime(new Date()); + sysDictType.setUpdateUser(SecurityUtil.getLoginUsername()); + return sysDictTypeMapper.updateById(sysDictType); + } + + @Override + public int deleteByIds(List ids) { + checkAllowDelete(ids); + return sysDictTypeMapper.deleteBatchIds(ids); + } + + @Override + public SysDictType selectById(String dictId) { + return sysDictTypeMapper.selectById(dictId); + } + + @Override + public TableDataInfo selectPageList(SysDictTypeParam param, PageQuery pageQuery) { + return TableDataInfo.build(sysDictTypeMapper.selectPage(pageQuery.build(), param2Wrapper(param))); + } + + @Override + public List selectList(SysDictTypeParam param) { + return sysDictTypeMapper.selectList(param2Wrapper(param)); + } + + private void checkAllowInsertOrUpdate(SysDictType sysDictType) { + String dictType = sysDictTypeMapper.checkDictTypeUnique(sysDictType); + if (StrUtil.isNotBlank(dictType)) { + throw new ServiceException(StrUtil.format("类型[{}]已存在, 不允许新增或修改", dictType)); + } + } + + private void checkAllowDelete(List ids) { + String typeName = sysDictTypeMapper.checkAllowDelete(ids); + if (StrUtil.isNotBlank(typeName)) { + throw new ServiceException(StrUtil.format("字典[{}]已绑定数据, 请解绑后删除", typeName)); + } + } + + private QueryWrapper param2Wrapper(SysDictTypeParam param) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.lambda() + .like(StrUtil.isNotBlank(param.getDictName()), SysDictType::getDictName, param.getDictName()) + .like(StrUtil.isNotBlank(param.getDictType()), SysDictType::getDictType, param.getDictType()) + .eq(StrUtil.isNotBlank(param.getStatus()), SysDictType::getStatus, param.getStatus()); + return wrapper; + } +} diff --git a/qiaoba-modules/qiaoba-module-system/src/main/resources/mapper/SysDictTypeMapper.xml b/qiaoba-modules/qiaoba-module-system/src/main/resources/mapper/SysDictTypeMapper.xml new file mode 100644 index 0000000..a72834a --- /dev/null +++ b/qiaoba-modules/qiaoba-module-system/src/main/resources/mapper/SysDictTypeMapper.xml @@ -0,0 +1,25 @@ + + + + + + + +