From 31aa8ac3a31d39d4fc2921468d3c49c3d42091c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E4=BB=81=E6=9D=B0?= <2296477237@qq.com> Date: Thu, 1 Sep 2022 12:47:26 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=20feat=20=E6=A8=A1=E5=9D=97=E5=92=8C?= =?UTF-8?q?=E9=94=99=E8=AF=AF=E7=AE=A1=E7=90=86=E6=96=B0=E5=A2=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/application-develop.yml | 10 +++++----- .../java/com/guzi/sherly/model/admin/ErrorCode.java | 6 +----- .../main/java/com/guzi/sherly/model/admin/Module.java | 8 ++------ .../sherly/model/exception/enums/AdminErrorEnum.java | 6 ++++++ 4 files changed, 14 insertions(+), 16 deletions(-) diff --git a/sherly-admin/src/main/resources/application-develop.yml b/sherly-admin/src/main/resources/application-develop.yml index 0ecd690..ef44ce1 100644 --- a/sherly-admin/src/main/resources/application-develop.yml +++ b/sherly-admin/src/main/resources/application-develop.yml @@ -12,9 +12,9 @@ spring: # redis配置 redis: - host: 101.34.169.185 + host: 10.3.74.238 port: 6379 - password: mpw:tNvIJM/7zuhDi3RoOr2KAA== + password: lrj317 database: 0 lettuce: pool: @@ -27,9 +27,9 @@ spring: # mysql配置 datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://101.34.169.185:3306/sherly?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=Asia/Shanghai&allowMultiQueries=true&rewriteBatchedStatements=true - username: mpw:tNvIJM/7zuhDi3RoOr2KAA== - password: mpw:tNvIJM/7zuhDi3RoOr2KAA== + url: jdbc:mysql://10.3.74.238:3306/sherly?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=Asia/Shanghai&allowMultiQueries=true&rewriteBatchedStatements=true + username: lirjj + password: lrj317 hikari: connection-timeout: 60000 validation-timeout: 3000 diff --git a/sherly-common/src/main/java/com/guzi/sherly/model/admin/ErrorCode.java b/sherly-common/src/main/java/com/guzi/sherly/model/admin/ErrorCode.java index 36ff283..f9dc2c4 100644 --- a/sherly-common/src/main/java/com/guzi/sherly/model/admin/ErrorCode.java +++ b/sherly-common/src/main/java/com/guzi/sherly/model/admin/ErrorCode.java @@ -6,10 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import com.guzi.sherly.model.BaseModel; import lombok.Data; -/** - * @author 谷子毅 - * @date 2022/8/22 - */ @Data @TableName("ge_error_code") public class ErrorCode extends BaseModel { @@ -27,7 +23,7 @@ public class ErrorCode extends BaseModel { private String description; /** 模块id */ - private String moduleId; + private Integer moduleId; /** 模块代码 */ private String moduleCode; diff --git a/sherly-common/src/main/java/com/guzi/sherly/model/admin/Module.java b/sherly-common/src/main/java/com/guzi/sherly/model/admin/Module.java index 1a2dcdf..d875d75 100644 --- a/sherly-common/src/main/java/com/guzi/sherly/model/admin/Module.java +++ b/sherly-common/src/main/java/com/guzi/sherly/model/admin/Module.java @@ -6,10 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName; import com.guzi.sherly.model.BaseModel; import lombok.Data; -/** - * @author 谷子毅 - * @date 2022/8/29 - */ @Data @TableName("ge_module") public class Module extends BaseModel { @@ -19,10 +15,10 @@ public class Module extends BaseModel { private Integer moduleId; /** 模块代码 */ - private Integer moduleCode; + private String moduleCode; /** 模块名称 */ - private Integer moduleName; + private String moduleName; /** 排序 */ private Integer sort; diff --git a/sherly-sdk/src/main/java/com/guzi/sherly/model/exception/enums/AdminErrorEnum.java b/sherly-sdk/src/main/java/com/guzi/sherly/model/exception/enums/AdminErrorEnum.java index 2117ad3..6da6f8b 100644 --- a/sherly-sdk/src/main/java/com/guzi/sherly/model/exception/enums/AdminErrorEnum.java +++ b/sherly-sdk/src/main/java/com/guzi/sherly/model/exception/enums/AdminErrorEnum.java @@ -48,6 +48,12 @@ public enum AdminErrorEnum implements IBaseError { NO_EMAIL_CONFIG("000-050-001", "失败,请检查邮箱配置!"), /*============================对象存储=======================*/ NO_OSS_CONFIG("000-051-001", "失败,请检查存储配置!"), + /*============================模块管理=======================*/ + MODULE_REPEAT("000-007-001", "该模块已存在!"), + DELETE_MODULE_ERROR("000-007-002", "该级模块禁止删除!"), + UPDATE_MODULE_ERROR("000-007-003", "该模块禁止修改!"), + /*============================错误管理=======================*/ + ERROR_REPEAT("000-008-001", "该错误已存在!"), ; private final String code; -- Gitee From 37d477f86d1690d20f56a9b227588c5bed161169 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E4=BB=81=E6=9D=B0?= <2296477237@qq.com> Date: Thu, 1 Sep 2022 12:47:49 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=20feat=20=E6=A8=A1=E5=9D=97=E5=92=8C?= =?UTF-8?q?=E9=94=99=E8=AF=AF=E7=AE=A1=E7=90=86=E6=96=B0=E5=A2=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ErrorCodeController.java | 53 ++++++++ .../sherly/controller/ModuleController.java | 52 ++++++++ .../guzi/sherly/service/ErrorCodeService.java | 96 ++++++++++++++ .../guzi/sherly/service/ModuleService.java | 122 ++++++++++++++++++ .../guzi/sherly/manager/ErrorCodeManager.java | 54 ++++++++ .../guzi/sherly/manager/ModuleManager.java | 39 ++++++ .../guzi/sherly/mapper/ErrorCodeMapper.java | 9 ++ .../com/guzi/sherly/mapper/ModuleMapper.java | 9 ++ .../sherly/model/dto/ErrorCodeInsertDTO.java | 29 +++++ .../sherly/model/dto/ErrorCodePageDTO.java | 21 +++ .../sherly/model/dto/ErrorCodeUpdateDTO.java | 33 +++++ .../sherly/model/dto/ModuleInsertDTO.java | 27 ++++ .../sherly/model/dto/ModuleUpdateDTO.java | 30 +++++ .../guzi/sherly/model/vo/ErrorCodePageVO.java | 34 +++++ .../com/guzi/sherly/model/vo/ModuleVO.java | 37 ++++++ 15 files changed, 645 insertions(+) create mode 100644 sherly-admin/src/main/java/com/guzi/sherly/controller/ErrorCodeController.java create mode 100644 sherly-admin/src/main/java/com/guzi/sherly/controller/ModuleController.java create mode 100644 sherly-admin/src/main/java/com/guzi/sherly/service/ErrorCodeService.java create mode 100644 sherly-admin/src/main/java/com/guzi/sherly/service/ModuleService.java create mode 100644 sherly-common/src/main/java/com/guzi/sherly/manager/ErrorCodeManager.java create mode 100644 sherly-common/src/main/java/com/guzi/sherly/manager/ModuleManager.java create mode 100644 sherly-common/src/main/java/com/guzi/sherly/mapper/ErrorCodeMapper.java create mode 100644 sherly-common/src/main/java/com/guzi/sherly/mapper/ModuleMapper.java create mode 100644 sherly-sdk/src/main/java/com/guzi/sherly/model/dto/ErrorCodeInsertDTO.java create mode 100644 sherly-sdk/src/main/java/com/guzi/sherly/model/dto/ErrorCodePageDTO.java create mode 100644 sherly-sdk/src/main/java/com/guzi/sherly/model/dto/ErrorCodeUpdateDTO.java create mode 100644 sherly-sdk/src/main/java/com/guzi/sherly/model/dto/ModuleInsertDTO.java create mode 100644 sherly-sdk/src/main/java/com/guzi/sherly/model/dto/ModuleUpdateDTO.java create mode 100644 sherly-sdk/src/main/java/com/guzi/sherly/model/vo/ErrorCodePageVO.java create mode 100644 sherly-sdk/src/main/java/com/guzi/sherly/model/vo/ModuleVO.java diff --git a/sherly-admin/src/main/java/com/guzi/sherly/controller/ErrorCodeController.java b/sherly-admin/src/main/java/com/guzi/sherly/controller/ErrorCodeController.java new file mode 100644 index 0000000..3692bfd --- /dev/null +++ b/sherly-admin/src/main/java/com/guzi/sherly/controller/ErrorCodeController.java @@ -0,0 +1,53 @@ +package com.guzi.sherly.controller; + +import com.guzi.sherly.model.PageResult; +import com.guzi.sherly.model.Result; +import com.guzi.sherly.model.dto.ErrorCodeInsertDTO; +import com.guzi.sherly.model.dto.ErrorCodePageDTO; +import com.guzi.sherly.model.dto.ErrorCodeUpdateDTO; +import com.guzi.sherly.model.vo.ErrorCodePageVO; +import com.guzi.sherly.service.ErrorCodeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; + +@RestController +@Api(tags = "错误相关") +@RequestMapping("/api/error_code") +@Validated +public class ErrorCodeController { + + @Autowired + private ErrorCodeService errorCodeService; + + @PostMapping("/save_one") + @ApiOperation("错误新增") + public Result saveOne(@RequestBody @Valid ErrorCodeInsertDTO dto) { + errorCodeService.saveOne(dto); + return Result.success(); + } + + @PutMapping("/update_one") + @ApiOperation("错误更新") + public Result updateOne(@RequestBody @Valid ErrorCodeUpdateDTO dto) { + errorCodeService.updateOne(dto); + return Result.success(); + } + + @DeleteMapping("/remove_one") + @ApiOperation("错误删除") + public Result removeOne(@RequestParam Integer errorId) { + errorCodeService.removeOne(errorId); + return Result.success(); + } + + @GetMapping("/list_page") + @ApiOperation("错误分页") + public Result> listPage(ErrorCodePageDTO dto) { + return Result.success(errorCodeService.listPage(dto)); + } +} diff --git a/sherly-admin/src/main/java/com/guzi/sherly/controller/ModuleController.java b/sherly-admin/src/main/java/com/guzi/sherly/controller/ModuleController.java new file mode 100644 index 0000000..0514363 --- /dev/null +++ b/sherly-admin/src/main/java/com/guzi/sherly/controller/ModuleController.java @@ -0,0 +1,52 @@ +package com.guzi.sherly.controller; + +import com.guzi.sherly.model.Result; +import com.guzi.sherly.model.dto.ModuleInsertDTO; +import com.guzi.sherly.model.dto.ModuleUpdateDTO; +import com.guzi.sherly.model.vo.ModuleVO; +import com.guzi.sherly.service.ModuleService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; + +@RestController +@Api(tags = "模块相关") +@RequestMapping("/api/module") +@Validated +public class ModuleController { + + @Autowired + private ModuleService moduleService; + + @GetMapping("/list_tree") + @ApiOperation("查询模块树") + public Result> listTree() { + return Result.success(moduleService.listTree()); + } + + @PostMapping("/save_one") + @ApiOperation("模块新增") + public Result saveOne(@RequestBody @Valid ModuleInsertDTO dto) { + moduleService.saveOne(dto); + return Result.success(); + } + + @PutMapping("/update_one") + @ApiOperation("模块更新") + public Result updateOne(@RequestBody @Valid ModuleUpdateDTO dto) { + moduleService.updateOne(dto); + return Result.success(); + } + + @DeleteMapping("/remove_one") + @ApiOperation("模块删除") + public Result removeOne(@RequestParam Integer moduleId) { + moduleService.removeOne(moduleId); + return Result.success(); + } +} diff --git a/sherly-admin/src/main/java/com/guzi/sherly/service/ErrorCodeService.java b/sherly-admin/src/main/java/com/guzi/sherly/service/ErrorCodeService.java new file mode 100644 index 0000000..5f192a9 --- /dev/null +++ b/sherly-admin/src/main/java/com/guzi/sherly/service/ErrorCodeService.java @@ -0,0 +1,96 @@ +package com.guzi.sherly.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.guzi.sherly.manager.ErrorCodeManager; +import com.guzi.sherly.model.PageResult; +import com.guzi.sherly.model.admin.ErrorCode; +import com.guzi.sherly.model.dto.ErrorCodeInsertDTO; +import com.guzi.sherly.model.dto.ErrorCodePageDTO; +import com.guzi.sherly.model.dto.ErrorCodeUpdateDTO; +import com.guzi.sherly.model.exception.BizException; +import com.guzi.sherly.model.vo.ErrorCodePageVO; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; +import java.util.stream.Collectors; + +import static com.guzi.sherly.model.exception.enums.AdminErrorEnum.ERROR_REPEAT; + + +@Service +public class ErrorCodeService { + + @Autowired + private ErrorCodeManager errorCodeManager; + + /** + * 错误新增 + * @param dto + */ + public void saveOne(ErrorCodeInsertDTO dto) { + ErrorCode errorCode = new ErrorCode(); + // 查重 + ErrorCode one = errorCodeManager.getErrorCode(dto.getErrorCode()); + if (one != null) { + throw new BizException(ERROR_REPEAT); + } + BeanUtils.copyProperties(dto, errorCode); + errorCodeManager.save(errorCode); + } + + /** + * 错误更新 + * @param dto + */ + public void updateOne(ErrorCodeUpdateDTO dto) { + ErrorCode errorCode = new ErrorCode(); + // 查重 + ErrorCode one = errorCodeManager.getErrorCode(dto.getErrorCode()); + if (one != null) { + throw new BizException(ERROR_REPEAT); + } + BeanUtils.copyProperties(dto, errorCode); + errorCodeManager.updateById(errorCode); + } + + /** + * 错误删除 + * @param errorId + */ + public void removeOne(Integer errorId) { + errorCodeManager.removeById(errorId); + } + + /** + * 错误查询 + * @param dto + * @return + */ + public PageResult listPage(ErrorCodePageDTO dto) { + IPage page = errorCodeManager.listPage(dto); + + List result = page.getRecords().stream().map(e -> { + ErrorCodePageVO vo = new ErrorCodePageVO(); + BeanUtils.copyProperties(e, vo); + return vo; + }).collect(Collectors.toList()); + return PageResult.build(result, page.getCurrent(), page.getSize(), page.getTotal()); + } + + /** + * 实时更新模块代码 + * @param moduleId + * @param moduleCode + */ + @Transactional(rollbackFor = Exception.class) + public void updateModuleCode(Integer moduleId, String moduleCode) { + List list = errorCodeManager.getAll(moduleId); + for (ErrorCode e : list) { + e.setModuleCode(moduleCode); + } + errorCodeManager.updateBatchById(list); + } +} diff --git a/sherly-admin/src/main/java/com/guzi/sherly/service/ModuleService.java b/sherly-admin/src/main/java/com/guzi/sherly/service/ModuleService.java new file mode 100644 index 0000000..7f871a9 --- /dev/null +++ b/sherly-admin/src/main/java/com/guzi/sherly/service/ModuleService.java @@ -0,0 +1,122 @@ +package com.guzi.sherly.service; + +import com.guzi.sherly.manager.ErrorCodeManager; +import com.guzi.sherly.manager.ModuleManager; +import com.guzi.sherly.model.admin.Module; +import com.guzi.sherly.model.dto.ModuleInsertDTO; +import com.guzi.sherly.model.dto.ModuleUpdateDTO; +import com.guzi.sherly.model.exception.BizException; +import com.guzi.sherly.model.vo.ModuleVO; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Comparator; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + +import static com.guzi.sherly.model.contants.CommonConstants.ROOT_PARENT_ID; +import static com.guzi.sherly.model.exception.enums.AdminErrorEnum.*; + +@Service +public class ModuleService { + + @Autowired + private ModuleManager moduleManager; + + @Autowired + private ErrorCodeManager errorCodeManager; + + /** + * 查询模块树 + * @return + */ + public List listTree() { + List list = moduleManager.list(); + + //对象转换为vo类型 + List all = list.stream() + .sorted(Comparator.comparing(Module::getSort)) + .map(e -> { + ModuleVO vo = new ModuleVO(); + BeanUtils.copyProperties(e, vo); + return vo; + }).collect(Collectors.toList()); + + //拼装子节点并返回 + return all.stream() + .filter(e -> Objects.equals(e.getParentId(), ROOT_PARENT_ID.intValue())) + .peek(e -> e.setChildren(getChildren(e, all))) + .collect(Collectors.toList()); + } + + /** + * 递归拼装子结点 + * @param parent + * @param all + * @return + */ + private List getChildren(ModuleVO parent, List all) { + return all.stream() + .filter(e -> Objects.equals(e.getParentId(), parent.getModuleId())) + .peek(e -> e.setChildren(getChildren(e, all))) + .collect(Collectors.toList()); + } + + /** + * 模块新增 + * @param dto + */ + public void saveOne(ModuleInsertDTO dto) { + + Module one = moduleManager.getByModuleName(dto.getModuleName(), dto.getModuleCode(),dto.getParentId()); + // 查重 同级禁止新增相同模块 + if (one != null && Objects.equals(dto.getParentId(), one.getParentId())) { + throw new BizException(MODULE_REPEAT); + } + Module module = new Module(); + BeanUtils.copyProperties(dto, module); + moduleManager.save(module); + } + + /** + * 模块更新 + * @param dto + */ + @Transactional(rollbackFor = Exception.class) + public void updateOne(ModuleUpdateDTO dto) { + + Module one = moduleManager.getByModuleName(dto.getModuleName(), dto.getModuleCode(),dto.getParentId()); + + if (one != null) { + List list = moduleManager.getAll(dto.getModuleId()); + //存在子模块的父模块和不为自身的模块禁止修改 + if ((Objects.equals(dto.getParentId(), ROOT_PARENT_ID.intValue()) && list != null) || !Objects.equals(dto.getModuleId(), one.getModuleId())) { + throw new BizException(UPDATE_MODULE_ERROR); + } + //修改子模块同时更新错误列表 + if (!Objects.equals(dto.getParentId(), ROOT_PARENT_ID.intValue()) && Objects.equals(dto.getParentId(), one.getParentId())) { + ErrorCodeService errorCodeService = new ErrorCodeService(); + errorCodeService.updateModuleCode(dto.getModuleId(), dto.getModuleCode()); + } + } + Module module = new Module(); + BeanUtils.copyProperties(dto, module); + moduleManager.updateById(module); + } + + /** + * 模块删除 + * @param moduleId + */ + public void removeOne(Integer moduleId) { + //是否存在子模块 + List list = moduleManager.getAll(moduleId); + if (list.size() > 0) { + throw new BizException(DELETE_MODULE_ERROR); + } + moduleManager.removeById(moduleId); + } +} diff --git a/sherly-common/src/main/java/com/guzi/sherly/manager/ErrorCodeManager.java b/sherly-common/src/main/java/com/guzi/sherly/manager/ErrorCodeManager.java new file mode 100644 index 0000000..6292ec5 --- /dev/null +++ b/sherly-common/src/main/java/com/guzi/sherly/manager/ErrorCodeManager.java @@ -0,0 +1,54 @@ +package com.guzi.sherly.manager; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.guzi.sherly.mapper.ErrorCodeMapper; +import com.guzi.sherly.model.admin.ErrorCode; +import com.guzi.sherly.model.dto.ErrorCodePageDTO; +import com.guzi.sherly.util.SherlyLambdaQueryWrapper; +import org.springframework.stereotype.Service; + +import java.util.List; + + +@Service +public class ErrorCodeManager extends ServiceImpl { + + /** + * 根据错误代码查询错误数据 + * @param errorCode + * @return + */ + public ErrorCode getErrorCode(String errorCode) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(ErrorCode::getErrorCode, errorCode); + return this.getOne(wrapper, false); + } + + /** + * 根据模块id查询错误数据 + * @param moduleId + * @return + */ + public List getAll(Integer moduleId) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(ErrorCode::getModuleId, moduleId); + return this.list(wrapper); + } + + /** + * 错误条件查询 + * @param dto + * @return + */ + public IPage listPage(ErrorCodePageDTO dto) { + SherlyLambdaQueryWrapper wrapper = new SherlyLambdaQueryWrapper<>(); + wrapper + .likeIfExist(ErrorCode::getErrorCode, dto.getErrorCode()) + .likeIfExist(ErrorCode::getMessage, dto.getMessage()) + .eqIfExist(ErrorCode::getErrorCode, dto.getErrorCode()); + return this.page(new Page<>(dto.getCurrent(), dto.getSize()), wrapper); + } +} diff --git a/sherly-common/src/main/java/com/guzi/sherly/manager/ModuleManager.java b/sherly-common/src/main/java/com/guzi/sherly/manager/ModuleManager.java new file mode 100644 index 0000000..a40a503 --- /dev/null +++ b/sherly-common/src/main/java/com/guzi/sherly/manager/ModuleManager.java @@ -0,0 +1,39 @@ +package com.guzi.sherly.manager; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.guzi.sherly.mapper.ModuleMapper; +import com.guzi.sherly.model.admin.Module; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class ModuleManager extends ServiceImpl { + + /** + * 根据模块名称查询模块数据 + * @param moduleName + * @return + */ + public Module getByModuleName(String moduleName,String moduleCode,Integer parentId) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper + .eq(Module::getModuleName, moduleName) + .eq(Module::getParentId,parentId) + .or() + .eq(Module::getModuleCode,moduleCode); + return this.getOne(wrapper, false); + } + + /** + * 根据父模块id查询子模块数据 + * @param moduleId + * @return + */ + public List getAll(Integer moduleId) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(Module::getParentId, moduleId); + return this.list(wrapper); + } +} diff --git a/sherly-common/src/main/java/com/guzi/sherly/mapper/ErrorCodeMapper.java b/sherly-common/src/main/java/com/guzi/sherly/mapper/ErrorCodeMapper.java new file mode 100644 index 0000000..5693c43 --- /dev/null +++ b/sherly-common/src/main/java/com/guzi/sherly/mapper/ErrorCodeMapper.java @@ -0,0 +1,9 @@ +package com.guzi.sherly.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.guzi.sherly.model.admin.ErrorCode; +import org.springframework.stereotype.Repository; + +@Repository +public interface ErrorCodeMapper extends BaseMapper { +} diff --git a/sherly-common/src/main/java/com/guzi/sherly/mapper/ModuleMapper.java b/sherly-common/src/main/java/com/guzi/sherly/mapper/ModuleMapper.java new file mode 100644 index 0000000..2ec676f --- /dev/null +++ b/sherly-common/src/main/java/com/guzi/sherly/mapper/ModuleMapper.java @@ -0,0 +1,9 @@ +package com.guzi.sherly.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.guzi.sherly.model.admin.Module; +import org.springframework.stereotype.Repository; + +@Repository +public interface ModuleMapper extends BaseMapper { +} diff --git a/sherly-sdk/src/main/java/com/guzi/sherly/model/dto/ErrorCodeInsertDTO.java b/sherly-sdk/src/main/java/com/guzi/sherly/model/dto/ErrorCodeInsertDTO.java new file mode 100644 index 0000000..650fea4 --- /dev/null +++ b/sherly-sdk/src/main/java/com/guzi/sherly/model/dto/ErrorCodeInsertDTO.java @@ -0,0 +1,29 @@ +package com.guzi.sherly.model.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +@Data +public class ErrorCodeInsertDTO { + + /** 错误代码 */ + @ApiModelProperty(value = "错误代码", required = true) + @NotBlank + private String errorCode; + + /** 错误信息 */ + @ApiModelProperty(value = "错误信息", required = true) + @NotBlank + private String message; + + /** 错误描述 */ + @ApiModelProperty(value = "错误描述") + private String description; + + /** 模块代码 */ + @ApiModelProperty(value = "模块代码", required = true) + @NotBlank + private String moduleCode; +} diff --git a/sherly-sdk/src/main/java/com/guzi/sherly/model/dto/ErrorCodePageDTO.java b/sherly-sdk/src/main/java/com/guzi/sherly/model/dto/ErrorCodePageDTO.java new file mode 100644 index 0000000..c039f88 --- /dev/null +++ b/sherly-sdk/src/main/java/com/guzi/sherly/model/dto/ErrorCodePageDTO.java @@ -0,0 +1,21 @@ +package com.guzi.sherly.model.dto; + +import com.guzi.sherly.model.PageQuery; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class ErrorCodePageDTO extends PageQuery { + + /** 错误代码 */ + @ApiModelProperty(value = "错误代码") + private String errorCode; + + /** 错误信息 */ + @ApiModelProperty(value = "错误信息") + private String message; + + /** 模块代码 */ + @ApiModelProperty(value = "模块代码") + private String moduleCode; +} diff --git a/sherly-sdk/src/main/java/com/guzi/sherly/model/dto/ErrorCodeUpdateDTO.java b/sherly-sdk/src/main/java/com/guzi/sherly/model/dto/ErrorCodeUpdateDTO.java new file mode 100644 index 0000000..1fb655e --- /dev/null +++ b/sherly-sdk/src/main/java/com/guzi/sherly/model/dto/ErrorCodeUpdateDTO.java @@ -0,0 +1,33 @@ +package com.guzi.sherly.model.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +@Data +public class ErrorCodeUpdateDTO { + + /** 错误id */ + @ApiModelProperty(value = "错误id") + private Integer errorId; + + /** 错误代码 */ + @ApiModelProperty(value = "错误代码", required = true) + @NotBlank + private String errorCode; + + /** 错误信息 */ + @ApiModelProperty(value = "错误信息", required = true) + @NotBlank + private String message; + + /** 错误描述 */ + @ApiModelProperty(value = "错误描述") + private String description; + + /** 模块代码 */ + @ApiModelProperty(value = "模块代码", required = true) + @NotBlank + private String moduleCode; +} diff --git a/sherly-sdk/src/main/java/com/guzi/sherly/model/dto/ModuleInsertDTO.java b/sherly-sdk/src/main/java/com/guzi/sherly/model/dto/ModuleInsertDTO.java new file mode 100644 index 0000000..c441614 --- /dev/null +++ b/sherly-sdk/src/main/java/com/guzi/sherly/model/dto/ModuleInsertDTO.java @@ -0,0 +1,27 @@ +package com.guzi.sherly.model.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + +@Data +public class ModuleInsertDTO { + + @ApiModelProperty(value = "模块名称", required = true) + @NotBlank + private String moduleName; + + @ApiModelProperty(value = "模块代码", required = true) + @NotBlank + private String moduleCode; + + @ApiModelProperty(value = "父模块id", required = true) + @NotNull + private Integer parentId; + + @ApiModelProperty(value = "排序", required = true) + @NotNull + private Integer sort; +} diff --git a/sherly-sdk/src/main/java/com/guzi/sherly/model/dto/ModuleUpdateDTO.java b/sherly-sdk/src/main/java/com/guzi/sherly/model/dto/ModuleUpdateDTO.java new file mode 100644 index 0000000..f8a86a1 --- /dev/null +++ b/sherly-sdk/src/main/java/com/guzi/sherly/model/dto/ModuleUpdateDTO.java @@ -0,0 +1,30 @@ +package com.guzi.sherly.model.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + +@Data +public class ModuleUpdateDTO { + + @ApiModelProperty(value = "模块id") + private Integer moduleId; + + @ApiModelProperty(value = "模块名称", required = true) + @NotBlank + private String moduleName; + + @ApiModelProperty(value = "模块代码", required = true) + @NotBlank + private String moduleCode; + + @ApiModelProperty(value = "父模块id", required = true) + @NotNull + private Integer parentId; + + @ApiModelProperty(value = "排序", required = true) + @NotNull + private Integer sort; +} diff --git a/sherly-sdk/src/main/java/com/guzi/sherly/model/vo/ErrorCodePageVO.java b/sherly-sdk/src/main/java/com/guzi/sherly/model/vo/ErrorCodePageVO.java new file mode 100644 index 0000000..28b86e5 --- /dev/null +++ b/sherly-sdk/src/main/java/com/guzi/sherly/model/vo/ErrorCodePageVO.java @@ -0,0 +1,34 @@ +package com.guzi.sherly.model.vo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +@Data +public class ErrorCodePageVO { + + /** 错误id */ + @ApiModelProperty(value = "错误id") + private Integer errorId; + + /** 错误码 */ + @ApiModelProperty(value = "错误代码") + private String errorCode; + + /** 错误信息 */ + @ApiModelProperty(value = "错误信息") + private String message; + + /** 错误描述 */ + @ApiModelProperty(value = "错误描述") + private String description; + + /** 模块代码 */ + @ApiModelProperty(value = "模块代码") + private String moduleCode; + + /** 创建时间 */ + @ApiModelProperty(value = "创建时间") + private Date createTime; +} diff --git a/sherly-sdk/src/main/java/com/guzi/sherly/model/vo/ModuleVO.java b/sherly-sdk/src/main/java/com/guzi/sherly/model/vo/ModuleVO.java new file mode 100644 index 0000000..849e2ac --- /dev/null +++ b/sherly-sdk/src/main/java/com/guzi/sherly/model/vo/ModuleVO.java @@ -0,0 +1,37 @@ +package com.guzi.sherly.model.vo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; +import java.util.List; + +@Data +public class ModuleVO { + + /** 模块id */ + @ApiModelProperty(value = "模块id") + private Integer moduleId; + + /** 模块名称 */ + @ApiModelProperty(value = "模块名称") + private String moduleName; + + /** 模块代码 */ + @ApiModelProperty(value = "模块代码") + private String moduleCode; + + /** 父模块id */ + @ApiModelProperty(value = "父模块id") + private Integer parentId; + + /** 排序 */ + @ApiModelProperty(value = "排序") + private Integer sort; + + /** 创建时间 */ + @ApiModelProperty(value = "创建时间") + private Date createTime; + + private List children; +} -- Gitee From 847813f858a4600140b5c0577eafd1c4ca57f53e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E4=BB=81=E6=9D=B0?= <2296477237@qq.com> Date: Thu, 1 Sep 2022 15:53:28 +0800 Subject: [PATCH 3/4] . --- .../src/main/resources/application-develop.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/sherly-admin/src/main/resources/application-develop.yml b/sherly-admin/src/main/resources/application-develop.yml index ef44ce1..0ecd690 100644 --- a/sherly-admin/src/main/resources/application-develop.yml +++ b/sherly-admin/src/main/resources/application-develop.yml @@ -12,9 +12,9 @@ spring: # redis配置 redis: - host: 10.3.74.238 + host: 101.34.169.185 port: 6379 - password: lrj317 + password: mpw:tNvIJM/7zuhDi3RoOr2KAA== database: 0 lettuce: pool: @@ -27,9 +27,9 @@ spring: # mysql配置 datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://10.3.74.238:3306/sherly?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=Asia/Shanghai&allowMultiQueries=true&rewriteBatchedStatements=true - username: lirjj - password: lrj317 + url: jdbc:mysql://101.34.169.185:3306/sherly?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=Asia/Shanghai&allowMultiQueries=true&rewriteBatchedStatements=true + username: mpw:tNvIJM/7zuhDi3RoOr2KAA== + password: mpw:tNvIJM/7zuhDi3RoOr2KAA== hikari: connection-timeout: 60000 validation-timeout: 3000 -- Gitee From a0902cce26599af1a3adc7a7a6495e6c47ea29ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E4=BB=81=E6=9D=B0?= <2296477237@qq.com> Date: Fri, 2 Sep 2022 18:58:09 +0800 Subject: [PATCH 4/4] . --- .../sherly/controller/TenantController.java | 8 ++++ .../guzi/sherly/service/TenantService.java | 34 ++++++++++++++- .../com/guzi/sherly/model/eo/TenantEO.java | 42 +++++++++++++++++++ 3 files changed, 82 insertions(+), 2 deletions(-) create mode 100644 sherly-common/src/main/java/com/guzi/sherly/model/eo/TenantEO.java diff --git a/sherly-admin/src/main/java/com/guzi/sherly/controller/TenantController.java b/sherly-admin/src/main/java/com/guzi/sherly/controller/TenantController.java index 6fd143f..4cb2824 100644 --- a/sherly-admin/src/main/java/com/guzi/sherly/controller/TenantController.java +++ b/sherly-admin/src/main/java/com/guzi/sherly/controller/TenantController.java @@ -16,7 +16,9 @@ import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; +import java.io.IOException; import java.util.List; import java.util.Objects; @@ -84,4 +86,10 @@ public class TenantController { public Result> listMenu(@RequestParam Long tenantId) { return Result.success(tenantService.listMenu(tenantId)); } + + @GetMapping("/list_export") + @ApiOperation(value = "租户导出", produces = "application/octet-stream") + public void listExport(HttpServletResponse response) throws IOException { + tenantService.listExport(response); + } } diff --git a/sherly-admin/src/main/java/com/guzi/sherly/service/TenantService.java b/sherly-admin/src/main/java/com/guzi/sherly/service/TenantService.java index d342470..116f65c 100644 --- a/sherly-admin/src/main/java/com/guzi/sherly/service/TenantService.java +++ b/sherly-admin/src/main/java/com/guzi/sherly/service/TenantService.java @@ -2,6 +2,8 @@ package com.guzi.sherly.service; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy; import com.baomidou.mybatisplus.core.metadata.IPage; import com.guzi.sherly.constants.SqlParam; import com.guzi.sherly.constants.SqlStatement; @@ -12,6 +14,7 @@ import com.guzi.sherly.model.dto.TenantInsertDTO; import com.guzi.sherly.model.dto.TenantMenuUpdateDTO; import com.guzi.sherly.model.dto.TenantPageDTO; import com.guzi.sherly.model.dto.TenantUpdateDTO; +import com.guzi.sherly.model.eo.TenantEO; import com.guzi.sherly.model.exception.BizException; import com.guzi.sherly.model.vo.TenantPageVO; import com.guzi.sherly.modules.security.util.SecurityUtil; @@ -23,14 +26,16 @@ import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.net.URLEncoder; import java.util.Collections; import java.util.List; import java.util.Objects; import java.util.Set; import java.util.stream.Collectors; -import static com.guzi.sherly.model.contants.CommonConstants.ENABLE; -import static com.guzi.sherly.model.contants.CommonConstants.ROOT_PARENT_ID; +import static com.guzi.sherly.model.contants.CommonConstants.*; import static com.guzi.sherly.model.exception.enums.AdminErrorEnum.TENANT_REPEAT; @@ -230,4 +235,29 @@ public class TenantService { return list.stream().map(Menu::getMenuId).collect(Collectors.toList()); } + + /** + * 租户导出 + * @param response + */ + public void listExport(HttpServletResponse response) throws IOException { + List list = tenantManager.list(); + + List result = list.stream().map(e -> { + TenantEO tenantEO = new TenantEO(); + BeanUtils.copyProperties(e, tenantEO); + return tenantEO; + }).collect(Collectors.toList()); + + response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("租户列表", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + + EasyExcel.write(response.getOutputStream(), TenantEO.class) + .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()) + .sheet("租户列表") + .doWrite(result); + } + } diff --git a/sherly-common/src/main/java/com/guzi/sherly/model/eo/TenantEO.java b/sherly-common/src/main/java/com/guzi/sherly/model/eo/TenantEO.java new file mode 100644 index 0000000..0db2161 --- /dev/null +++ b/sherly-common/src/main/java/com/guzi/sherly/model/eo/TenantEO.java @@ -0,0 +1,42 @@ +package com.guzi.sherly.model.eo; + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; + +import java.util.Date; + +/** + * @author 李仁杰 + * @date 2022/9/2 + */ +@Data +public class TenantEO { + + /** 租户code */ + @ExcelProperty("租户code") + private String tenantCode; + + /** 租户名称 */ + @ExcelProperty("租户名称") + private String tenantName; + + /** 联系人 */ + @ExcelProperty("联系人") + private String contactUser; + + /** 联系电话 */ + @ExcelProperty("联系电话") + private String contactPhone; + + /** 过期时间 */ + @ExcelProperty(value = "过期时间") + private Date expireTime; + + /** 用户上限 */ + @ExcelProperty("用户上限") + private Long userLimit; + + /** 创建时间 */ + @ExcelProperty(value = "创建时间") + private Date createTime; +} -- Gitee