feat: 整理项目结构

This commit is contained in:
bunny 2025-04-30 13:45:27 +08:00
parent c81783ba55
commit c7e4b32674
428 changed files with 1517 additions and 1440 deletions

43
auh-api/pom.xml Normal file
View File

@ -0,0 +1,43 @@
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>cn.bunny</groupId>
<artifactId>auth-server</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>auh-api</artifactId>
<packaging>jar</packaging>
<name>auh-api</name>
<url>https://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>cn.bunny</groupId>
<artifactId>service</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
</plugins>
</build>
</project>

View File

@ -1,9 +1,9 @@
package cn.bunny.services.aop; package cn.bunny.services.aop;
import cn.bunny.domain.constant.LocalDateTimeConstant; import cn.bunny.services.domain.common.constant.LocalDateTimeConstant;
import cn.bunny.domain.enums.JobEnums; import cn.bunny.services.domain.common.enums.JobEnums;
import cn.bunny.domain.log.entity.ScheduleExecuteLog; import cn.bunny.services.domain.system.log.entity.ScheduleExecuteLog;
import cn.bunny.domain.model.quartz.ScheduleExecuteLogJson; import cn.bunny.services.domain.common.model.quartz.ScheduleExecuteLogJson;
import cn.bunny.services.mapper.log.ScheduleExecuteLogMapper; import cn.bunny.services.mapper.log.ScheduleExecuteLogMapper;
import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSON;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;

View File

@ -1,9 +1,9 @@
package cn.bunny.services.controller.configuration; package cn.bunny.services.controller.configuration;
import cn.bunny.domain.configuration.dto.WebConfigurationDto; import cn.bunny.services.domain.system.configuration.dto.WebConfigurationDto;
import cn.bunny.domain.configuration.entity.WebConfiguration; import cn.bunny.services.domain.system.configuration.entity.WebConfiguration;
import cn.bunny.domain.vo.result.Result; import cn.bunny.services.domain.common.vo.result.Result;
import cn.bunny.domain.vo.result.ResultCodeEnum; import cn.bunny.services.domain.common.vo.result.ResultCodeEnum;
import cn.bunny.services.service.configuration.ConfigurationService; import cn.bunny.services.service.configuration.ConfigurationService;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;

View File

@ -1,13 +1,13 @@
package cn.bunny.services.controller.configuration; package cn.bunny.services.controller.configuration;
import cn.bunny.domain.email.dto.EmailTemplateAddDto; import cn.bunny.services.domain.system.email.dto.EmailTemplateAddDto;
import cn.bunny.domain.email.dto.EmailTemplateDto; import cn.bunny.services.domain.system.email.dto.EmailTemplateDto;
import cn.bunny.domain.email.dto.EmailTemplateUpdateDto; import cn.bunny.services.domain.system.email.dto.EmailTemplateUpdateDto;
import cn.bunny.domain.email.entity.EmailTemplate; import cn.bunny.services.domain.system.email.entity.EmailTemplate;
import cn.bunny.domain.email.vo.EmailTemplateVo; import cn.bunny.services.domain.system.email.vo.EmailTemplateVo;
import cn.bunny.domain.vo.result.PageResult; import cn.bunny.services.domain.common.vo.result.PageResult;
import cn.bunny.domain.vo.result.Result; import cn.bunny.services.domain.common.vo.result.Result;
import cn.bunny.domain.vo.result.ResultCodeEnum; import cn.bunny.services.domain.common.vo.result.ResultCodeEnum;
import cn.bunny.services.service.configuration.EmailTemplateService; import cn.bunny.services.service.configuration.EmailTemplateService;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;

View File

@ -1,13 +1,13 @@
package cn.bunny.services.controller.configuration; package cn.bunny.services.controller.configuration;
import cn.bunny.domain.email.dto.EmailUsersAddDto; import cn.bunny.services.domain.system.email.dto.EmailUsersAddDto;
import cn.bunny.domain.email.dto.EmailUsersDto; import cn.bunny.services.domain.system.email.dto.EmailUsersDto;
import cn.bunny.domain.email.dto.EmailUsersUpdateDto; import cn.bunny.services.domain.system.email.dto.EmailUsersUpdateDto;
import cn.bunny.domain.email.entity.EmailUsers; import cn.bunny.services.domain.system.email.entity.EmailUsers;
import cn.bunny.domain.email.vo.EmailUsersVo; import cn.bunny.services.domain.system.email.vo.EmailUsersVo;
import cn.bunny.domain.vo.result.PageResult; import cn.bunny.services.domain.common.vo.result.PageResult;
import cn.bunny.domain.vo.result.Result; import cn.bunny.services.domain.common.vo.result.Result;
import cn.bunny.domain.vo.result.ResultCodeEnum; import cn.bunny.services.domain.common.vo.result.ResultCodeEnum;
import cn.bunny.services.service.configuration.EmailUsersService; import cn.bunny.services.service.configuration.EmailUsersService;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;

View File

@ -1,14 +1,14 @@
package cn.bunny.services.controller.configuration; package cn.bunny.services.controller.configuration;
import cn.bunny.domain.i18n.dto.I18nAddDto; import cn.bunny.services.domain.system.i18n.dto.I18nAddDto;
import cn.bunny.domain.i18n.dto.I18nDto; import cn.bunny.services.domain.system.i18n.dto.I18nDto;
import cn.bunny.domain.i18n.dto.I18nUpdateByFileDto; import cn.bunny.services.domain.system.i18n.dto.I18nUpdateByFileDto;
import cn.bunny.domain.i18n.dto.I18nUpdateDto; import cn.bunny.services.domain.system.i18n.dto.I18nUpdateDto;
import cn.bunny.domain.i18n.entity.I18n; import cn.bunny.services.domain.system.i18n.entity.I18n;
import cn.bunny.domain.i18n.vo.I18nVo; import cn.bunny.services.domain.system.i18n.vo.I18nVo;
import cn.bunny.domain.vo.result.PageResult; import cn.bunny.services.domain.common.vo.result.PageResult;
import cn.bunny.domain.vo.result.Result; import cn.bunny.services.domain.common.vo.result.Result;
import cn.bunny.domain.vo.result.ResultCodeEnum; import cn.bunny.services.domain.common.vo.result.ResultCodeEnum;
import cn.bunny.services.service.configuration.I18nService; import cn.bunny.services.service.configuration.I18nService;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;

View File

@ -1,11 +1,11 @@
package cn.bunny.services.controller.configuration; package cn.bunny.services.controller.configuration;
import cn.bunny.domain.i18n.dto.I18nTypeAddDto; import cn.bunny.services.domain.system.i18n.dto.I18nTypeAddDto;
import cn.bunny.domain.i18n.dto.I18nTypeDto; import cn.bunny.services.domain.system.i18n.dto.I18nTypeDto;
import cn.bunny.domain.i18n.dto.I18nTypeUpdateDto; import cn.bunny.services.domain.system.i18n.dto.I18nTypeUpdateDto;
import cn.bunny.domain.i18n.vo.I18nTypeVo; import cn.bunny.services.domain.system.i18n.vo.I18nTypeVo;
import cn.bunny.domain.vo.result.Result; import cn.bunny.services.domain.common.vo.result.Result;
import cn.bunny.domain.vo.result.ResultCodeEnum; import cn.bunny.services.domain.common.vo.result.ResultCodeEnum;
import cn.bunny.services.service.configuration.I18nTypeService; import cn.bunny.services.service.configuration.I18nTypeService;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;

View File

@ -1,13 +1,13 @@
package cn.bunny.services.controller.configuration; package cn.bunny.services.controller.configuration;
import cn.bunny.domain.menuIcon.dto.MenuIconAddDto; import cn.bunny.services.domain.system.menuIcon.dto.MenuIconAddDto;
import cn.bunny.domain.menuIcon.dto.MenuIconDto; import cn.bunny.services.domain.system.menuIcon.dto.MenuIconDto;
import cn.bunny.domain.menuIcon.dto.MenuIconUpdateDto; import cn.bunny.services.domain.system.menuIcon.dto.MenuIconUpdateDto;
import cn.bunny.domain.menuIcon.entity.MenuIcon; import cn.bunny.services.domain.system.menuIcon.entity.MenuIcon;
import cn.bunny.domain.menuIcon.vo.MenuIconVo; import cn.bunny.services.domain.system.menuIcon.vo.MenuIconVo;
import cn.bunny.domain.vo.result.PageResult; import cn.bunny.services.domain.common.vo.result.PageResult;
import cn.bunny.domain.vo.result.Result; import cn.bunny.services.domain.common.vo.result.Result;
import cn.bunny.domain.vo.result.ResultCodeEnum; import cn.bunny.services.domain.common.vo.result.ResultCodeEnum;
import cn.bunny.services.service.configuration.MenuIconService; import cn.bunny.services.service.configuration.MenuIconService;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;

View File

@ -1,11 +1,11 @@
package cn.bunny.services.controller.log; package cn.bunny.services.controller.log;
import cn.bunny.domain.log.dto.ScheduleExecuteLogDto; import cn.bunny.services.domain.system.log.dto.ScheduleExecuteLogDto;
import cn.bunny.domain.log.entity.ScheduleExecuteLog; import cn.bunny.services.domain.system.log.entity.ScheduleExecuteLog;
import cn.bunny.domain.log.vo.ScheduleExecuteLogVo; import cn.bunny.services.domain.system.log.vo.ScheduleExecuteLogVo;
import cn.bunny.domain.vo.result.PageResult; import cn.bunny.services.domain.common.vo.result.PageResult;
import cn.bunny.domain.vo.result.Result; import cn.bunny.services.domain.common.vo.result.Result;
import cn.bunny.domain.vo.result.ResultCodeEnum; import cn.bunny.services.domain.common.vo.result.ResultCodeEnum;
import cn.bunny.services.service.log.ScheduleExecuteLogService; import cn.bunny.services.service.log.ScheduleExecuteLogService;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;

View File

@ -1,12 +1,12 @@
package cn.bunny.services.controller.log; package cn.bunny.services.controller.log;
import cn.bunny.domain.log.dto.UserLoginLogDto; import cn.bunny.services.domain.system.log.dto.UserLoginLogDto;
import cn.bunny.domain.log.entity.UserLoginLog; import cn.bunny.services.domain.system.log.entity.UserLoginLog;
import cn.bunny.domain.log.vo.UserLoginLogLocalVo; import cn.bunny.services.domain.system.log.vo.UserLoginLogLocalVo;
import cn.bunny.domain.log.vo.UserLoginLogVo; import cn.bunny.services.domain.system.log.vo.UserLoginLogVo;
import cn.bunny.domain.vo.result.PageResult; import cn.bunny.services.domain.common.vo.result.PageResult;
import cn.bunny.domain.vo.result.Result; import cn.bunny.services.domain.common.vo.result.Result;
import cn.bunny.domain.vo.result.ResultCodeEnum; import cn.bunny.services.domain.common.vo.result.ResultCodeEnum;
import cn.bunny.services.service.log.UserLoginLogService; import cn.bunny.services.service.log.UserLoginLogService;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;

View File

@ -1,15 +1,15 @@
package cn.bunny.services.controller.message; package cn.bunny.services.controller.message;
import cn.bunny.domain.message.dto.MessageAddDto; import cn.bunny.services.domain.system.message.dto.MessageAddDto;
import cn.bunny.domain.message.dto.MessageDto; import cn.bunny.services.domain.system.message.dto.MessageDto;
import cn.bunny.domain.message.dto.MessageUpdateDto; import cn.bunny.services.domain.system.message.dto.MessageUpdateDto;
import cn.bunny.domain.message.entity.Message; import cn.bunny.services.domain.system.message.entity.Message;
import cn.bunny.domain.message.vo.MessageDetailVo; import cn.bunny.services.domain.system.message.vo.MessageDetailVo;
import cn.bunny.domain.message.vo.MessageReceivedWithUserVo; import cn.bunny.services.domain.system.message.vo.MessageReceivedWithUserVo;
import cn.bunny.domain.message.vo.MessageVo; import cn.bunny.services.domain.system.message.vo.MessageVo;
import cn.bunny.domain.vo.result.PageResult; import cn.bunny.services.domain.common.vo.result.PageResult;
import cn.bunny.domain.vo.result.Result; import cn.bunny.services.domain.common.vo.result.Result;
import cn.bunny.domain.vo.result.ResultCodeEnum; import cn.bunny.services.domain.common.vo.result.ResultCodeEnum;
import cn.bunny.services.service.message.MessageService; import cn.bunny.services.service.message.MessageService;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;

View File

@ -1,14 +1,14 @@
package cn.bunny.services.controller.message; package cn.bunny.services.controller.message;
import cn.bunny.domain.message.dto.MessageReceivedDto; import cn.bunny.services.domain.system.message.dto.MessageReceivedDto;
import cn.bunny.domain.message.dto.MessageReceivedUpdateDto; import cn.bunny.services.domain.system.message.dto.MessageReceivedUpdateDto;
import cn.bunny.domain.message.dto.MessageUserDto; import cn.bunny.services.domain.system.message.dto.MessageUserDto;
import cn.bunny.domain.message.entity.Message; import cn.bunny.services.domain.system.message.entity.Message;
import cn.bunny.domain.message.vo.MessageReceivedWithMessageVo; import cn.bunny.services.domain.system.message.vo.MessageReceivedWithMessageVo;
import cn.bunny.domain.message.vo.MessageUserVo; import cn.bunny.services.domain.system.message.vo.MessageUserVo;
import cn.bunny.domain.vo.result.PageResult; import cn.bunny.services.domain.common.vo.result.PageResult;
import cn.bunny.domain.vo.result.Result; import cn.bunny.services.domain.common.vo.result.Result;
import cn.bunny.domain.vo.result.ResultCodeEnum; import cn.bunny.services.domain.common.vo.result.ResultCodeEnum;
import cn.bunny.services.service.message.MessageReceivedService; import cn.bunny.services.service.message.MessageReceivedService;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;

View File

@ -1,13 +1,13 @@
package cn.bunny.services.controller.message; package cn.bunny.services.controller.message;
import cn.bunny.domain.message.dto.MessageTypeAddDto; import cn.bunny.services.domain.system.message.dto.MessageTypeAddDto;
import cn.bunny.domain.message.dto.MessageTypeDto; import cn.bunny.services.domain.system.message.dto.MessageTypeDto;
import cn.bunny.domain.message.dto.MessageTypeUpdateDto; import cn.bunny.services.domain.system.message.dto.MessageTypeUpdateDto;
import cn.bunny.domain.message.entity.MessageType; import cn.bunny.services.domain.system.message.entity.MessageType;
import cn.bunny.domain.message.vo.MessageTypeVo; import cn.bunny.services.domain.system.message.vo.MessageTypeVo;
import cn.bunny.domain.vo.result.PageResult; import cn.bunny.services.domain.common.vo.result.PageResult;
import cn.bunny.domain.vo.result.Result; import cn.bunny.services.domain.common.vo.result.Result;
import cn.bunny.domain.vo.result.ResultCodeEnum; import cn.bunny.services.domain.common.vo.result.ResultCodeEnum;
import cn.bunny.services.service.message.MessageTypeService; import cn.bunny.services.service.message.MessageTypeService;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;

View File

@ -1,13 +1,14 @@
package cn.bunny.services.controller.schedule; package cn.bunny.services.controller.schedule;
import cn.bunny.domain.quartz.dto.SchedulersAddDto; import cn.bunny.services.aop.scanner.QuartzSchedulersScanner;
import cn.bunny.domain.quartz.dto.SchedulersDto; import cn.bunny.services.domain.common.vo.result.PageResult;
import cn.bunny.domain.quartz.dto.SchedulersUpdateDto; import cn.bunny.services.domain.common.vo.result.Result;
import cn.bunny.domain.quartz.entity.Schedulers; import cn.bunny.services.domain.common.vo.result.ResultCodeEnum;
import cn.bunny.domain.quartz.vo.SchedulersVo; import cn.bunny.services.domain.system.quartz.dto.SchedulersAddDto;
import cn.bunny.domain.vo.result.PageResult; import cn.bunny.services.domain.system.quartz.dto.SchedulersDto;
import cn.bunny.domain.vo.result.Result; import cn.bunny.services.domain.system.quartz.dto.SchedulersUpdateDto;
import cn.bunny.domain.vo.result.ResultCodeEnum; import cn.bunny.services.domain.system.quartz.entity.Schedulers;
import cn.bunny.services.domain.system.quartz.vo.SchedulersVo;
import cn.bunny.services.service.schedule.SchedulersService; import cn.bunny.services.service.schedule.SchedulersService;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
@ -87,7 +88,7 @@ public class SchedulersController {
@Operation(summary = "获取所有可用调度任务", description = "获取所有可用调度任务", tags = "schedulers::query") @Operation(summary = "获取所有可用调度任务", description = "获取所有可用调度任务", tags = "schedulers::query")
@GetMapping("private") @GetMapping("private")
public Result<List<Map<String, String>>> getScheduleJobList() { public Result<List<Map<String, String>>> getScheduleJobList() {
List<Map<String, String>> mapList = schedulersService.getScheduleJobList(); List<Map<String, String>> mapList = QuartzSchedulersScanner.getScheduleJobList();
return Result.success(mapList); return Result.success(mapList);
} }
} }

View File

@ -1,13 +1,13 @@
package cn.bunny.services.controller.schedule; package cn.bunny.services.controller.schedule;
import cn.bunny.domain.quartz.dto.SchedulersGroupAddDto; import cn.bunny.services.domain.system.quartz.dto.SchedulersGroupAddDto;
import cn.bunny.domain.quartz.dto.SchedulersGroupDto; import cn.bunny.services.domain.system.quartz.dto.SchedulersGroupDto;
import cn.bunny.domain.quartz.dto.SchedulersGroupUpdateDto; import cn.bunny.services.domain.system.quartz.dto.SchedulersGroupUpdateDto;
import cn.bunny.domain.quartz.entity.SchedulersGroup; import cn.bunny.services.domain.system.quartz.entity.SchedulersGroup;
import cn.bunny.domain.quartz.vo.SchedulersGroupVo; import cn.bunny.services.domain.system.quartz.vo.SchedulersGroupVo;
import cn.bunny.domain.vo.result.PageResult; import cn.bunny.services.domain.common.vo.result.PageResult;
import cn.bunny.domain.vo.result.Result; import cn.bunny.services.domain.common.vo.result.Result;
import cn.bunny.domain.vo.result.ResultCodeEnum; import cn.bunny.services.domain.common.vo.result.ResultCodeEnum;
import cn.bunny.services.service.schedule.SchedulersGroupService; import cn.bunny.services.service.schedule.SchedulersGroupService;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;

View File

@ -1,13 +1,13 @@
package cn.bunny.services.controller.system; package cn.bunny.services.controller.system;
import cn.bunny.domain.system.dto.dept.DeptAddDto; import cn.bunny.services.domain.system.system.dto.dept.DeptAddDto;
import cn.bunny.domain.system.dto.dept.DeptDto; import cn.bunny.services.domain.system.system.dto.dept.DeptDto;
import cn.bunny.domain.system.dto.dept.DeptUpdateDto; import cn.bunny.services.domain.system.system.dto.dept.DeptUpdateDto;
import cn.bunny.domain.system.entity.Dept; import cn.bunny.services.domain.system.system.entity.Dept;
import cn.bunny.domain.system.vo.DeptVo; import cn.bunny.services.domain.system.system.vo.DeptVo;
import cn.bunny.domain.vo.result.PageResult; import cn.bunny.services.domain.common.vo.result.PageResult;
import cn.bunny.domain.vo.result.Result; import cn.bunny.services.domain.common.vo.result.Result;
import cn.bunny.domain.vo.result.ResultCodeEnum; import cn.bunny.services.domain.common.vo.result.ResultCodeEnum;
import cn.bunny.services.service.system.DeptService; import cn.bunny.services.service.system.DeptService;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;

View File

@ -1,16 +1,16 @@
package cn.bunny.services.controller.system; package cn.bunny.services.controller.system;
import cn.bunny.domain.constant.MinioConstant; import cn.bunny.services.domain.common.constant.MinioConstant;
import cn.bunny.domain.files.dto.FileUploadDto; import cn.bunny.services.domain.system.files.dto.FileUploadDto;
import cn.bunny.domain.files.dto.FilesAddDto; import cn.bunny.services.domain.system.files.dto.FilesAddDto;
import cn.bunny.domain.files.dto.FilesDto; import cn.bunny.services.domain.system.files.dto.FilesDto;
import cn.bunny.domain.files.dto.FilesUpdateDto; import cn.bunny.services.domain.system.files.dto.FilesUpdateDto;
import cn.bunny.domain.files.entity.Files; import cn.bunny.services.domain.system.files.entity.Files;
import cn.bunny.domain.files.vo.FileInfoVo; import cn.bunny.services.domain.system.files.vo.FileInfoVo;
import cn.bunny.domain.files.vo.FilesVo; import cn.bunny.services.domain.system.files.vo.FilesVo;
import cn.bunny.domain.vo.result.PageResult; import cn.bunny.services.domain.common.vo.result.PageResult;
import cn.bunny.domain.vo.result.Result; import cn.bunny.services.domain.common.vo.result.Result;
import cn.bunny.domain.vo.result.ResultCodeEnum; import cn.bunny.services.domain.common.vo.result.ResultCodeEnum;
import cn.bunny.services.service.system.FilesService; import cn.bunny.services.service.system.FilesService;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;

View File

@ -1,17 +1,17 @@
package cn.bunny.services.controller.system; package cn.bunny.services.controller.system;
import cn.bunny.domain.system.dto.power.PermissionAddDto; import cn.bunny.services.aop.scanner.ControllerApiPermissionScanner;
import cn.bunny.domain.system.dto.power.PermissionDto; import cn.bunny.services.domain.common.vo.result.PageResult;
import cn.bunny.domain.system.dto.power.PermissionUpdateBatchByParentIdDto; import cn.bunny.services.domain.common.vo.result.Result;
import cn.bunny.domain.system.dto.power.PermissionUpdateDto; import cn.bunny.services.domain.common.vo.result.ResultCodeEnum;
import cn.bunny.domain.system.entity.Permission; import cn.bunny.services.domain.common.scanner.ScannerControllerInfoVo;
import cn.bunny.domain.system.vo.PermissionVo; import cn.bunny.services.domain.system.system.dto.power.PermissionAddDto;
import cn.bunny.domain.vo.result.PageResult; import cn.bunny.services.domain.system.system.dto.power.PermissionDto;
import cn.bunny.domain.vo.result.Result; import cn.bunny.services.domain.system.system.dto.power.PermissionUpdateBatchByParentIdDto;
import cn.bunny.domain.vo.result.ResultCodeEnum; import cn.bunny.services.domain.system.system.dto.power.PermissionUpdateDto;
import cn.bunny.services.aop.scanner.controller.ScannerControllerInfoVo; import cn.bunny.services.domain.system.system.entity.Permission;
import cn.bunny.services.domain.system.system.vo.PermissionVo;
import cn.bunny.services.service.system.PermissionService; import cn.bunny.services.service.system.PermissionService;
import cn.bunny.services.utils.system.PermissionUtil;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Parameter;
@ -97,7 +97,7 @@ public class PermissionController {
@Operation(summary = "获取系统API信息列表", description = "系统接口API信息列表", tags = "permission::query") @Operation(summary = "获取系统API信息列表", description = "系统接口API信息列表", tags = "permission::query")
@GetMapping("private/getSystemApiInfoList") @GetMapping("private/getSystemApiInfoList")
public Result<List<ScannerControllerInfoVo>> getSystemApiInfoList() { public Result<List<ScannerControllerInfoVo>> getSystemApiInfoList() {
List<ScannerControllerInfoVo> list = PermissionUtil.getSystemApiInfoList(); List<ScannerControllerInfoVo> list = ControllerApiPermissionScanner.getSystemApiInfoList();
return Result.success(list); return Result.success(list);
} }

View File

@ -1,13 +1,13 @@
package cn.bunny.services.controller.system; package cn.bunny.services.controller.system;
import cn.bunny.domain.system.dto.role.RoleAddDto; import cn.bunny.services.domain.system.system.dto.role.RoleAddDto;
import cn.bunny.domain.system.dto.role.RoleDto; import cn.bunny.services.domain.system.system.dto.role.RoleDto;
import cn.bunny.domain.system.dto.role.RoleUpdateDto; import cn.bunny.services.domain.system.system.dto.role.RoleUpdateDto;
import cn.bunny.domain.system.entity.Role; import cn.bunny.services.domain.system.system.entity.Role;
import cn.bunny.domain.system.vo.RoleVo; import cn.bunny.services.domain.system.system.vo.RoleVo;
import cn.bunny.domain.vo.result.PageResult; import cn.bunny.services.domain.common.vo.result.PageResult;
import cn.bunny.domain.vo.result.Result; import cn.bunny.services.domain.common.vo.result.Result;
import cn.bunny.domain.vo.result.ResultCodeEnum; import cn.bunny.services.domain.common.vo.result.ResultCodeEnum;
import cn.bunny.services.service.system.RoleService; import cn.bunny.services.service.system.RoleService;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;

View File

@ -1,7 +1,7 @@
package cn.bunny.services.controller.system; package cn.bunny.services.controller.system;
import cn.bunny.domain.system.dto.AssignPowersToRoleDto; import cn.bunny.services.domain.system.system.dto.AssignPowersToRoleDto;
import cn.bunny.domain.vo.result.Result; import cn.bunny.services.domain.common.vo.result.Result;
import cn.bunny.services.service.system.RolePermissionService; import cn.bunny.services.service.system.RolePermissionService;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;

View File

@ -1,11 +1,11 @@
package cn.bunny.services.controller.system; package cn.bunny.services.controller.system;
import cn.bunny.domain.system.dto.router.RouterAddDto; import cn.bunny.services.domain.system.system.dto.router.RouterAddDto;
import cn.bunny.domain.system.dto.router.RouterUpdateDto; import cn.bunny.services.domain.system.system.dto.router.RouterUpdateDto;
import cn.bunny.domain.system.vo.router.RouterManageVo; import cn.bunny.services.domain.system.system.vo.router.RouterManageVo;
import cn.bunny.domain.system.vo.router.WebUserRouterVo; import cn.bunny.services.domain.system.system.vo.router.WebUserRouterVo;
import cn.bunny.domain.vo.result.Result; import cn.bunny.services.domain.common.vo.result.Result;
import cn.bunny.domain.vo.result.ResultCodeEnum; import cn.bunny.services.domain.common.vo.result.ResultCodeEnum;
import cn.bunny.services.service.system.RouterService; import cn.bunny.services.service.system.RouterService;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;

View File

@ -1,6 +1,6 @@
package cn.bunny.services.controller.system; package cn.bunny.services.controller.system;
import cn.bunny.domain.vo.result.Result; import cn.bunny.services.domain.common.vo.result.Result;
import cn.bunny.services.service.system.RouterRoleService; import cn.bunny.services.service.system.RouterRoleService;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;

View File

@ -1,15 +1,16 @@
package cn.bunny.services.controller.system; package cn.bunny.services.controller.system;
import cn.bunny.domain.system.dto.user.*;
import cn.bunny.domain.system.entity.AdminUser;
import cn.bunny.domain.system.vo.user.AdminUserVo;
import cn.bunny.domain.system.vo.user.RefreshTokenVo;
import cn.bunny.domain.system.vo.user.UserVo;
import cn.bunny.domain.vo.LoginVo;
import cn.bunny.domain.vo.result.PageResult;
import cn.bunny.domain.vo.result.Result;
import cn.bunny.domain.vo.result.ResultCodeEnum;
import cn.bunny.services.context.BaseContext; import cn.bunny.services.context.BaseContext;
import cn.bunny.services.domain.common.vo.LoginVo;
import cn.bunny.services.domain.common.vo.result.PageResult;
import cn.bunny.services.domain.common.vo.result.Result;
import cn.bunny.services.domain.common.vo.result.ResultCodeEnum;
import cn.bunny.services.domain.system.system.dto.user.*;
import cn.bunny.services.domain.system.system.entity.AdminUser;
import cn.bunny.services.domain.system.system.vo.user.AdminUserVo;
import cn.bunny.services.domain.system.system.vo.user.RefreshTokenVo;
import cn.bunny.services.domain.system.system.vo.user.UserVo;
import cn.bunny.services.exception.AuthCustomerException;
import cn.bunny.services.service.system.UserService; import cn.bunny.services.service.system.UserService;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
@ -17,6 +18,7 @@ import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import jakarta.validation.Valid; import jakarta.validation.Valid;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
@ -44,6 +46,8 @@ public class UserController {
@Operation(summary = "登录发送邮件验证码", description = "登录发送邮件验证码") @Operation(summary = "登录发送邮件验证码", description = "登录发送邮件验证码")
@PostMapping("public/sendLoginEmail") @PostMapping("public/sendLoginEmail")
public Result<String> sendLoginEmail(String email) { public Result<String> sendLoginEmail(String email) {
if (!StringUtils.hasText(email)) throw new AuthCustomerException(ResultCodeEnum.REQUEST_IS_EMPTY);
userService.sendLoginEmail(email); userService.sendLoginEmail(email);
return Result.success(ResultCodeEnum.EMAIL_CODE_SEND_SUCCESS); return Result.success(ResultCodeEnum.EMAIL_CODE_SEND_SUCCESS);
} }

View File

@ -1,7 +1,7 @@
package cn.bunny.services.controller.system; package cn.bunny.services.controller.system;
import cn.bunny.domain.system.dto.user.AssignRolesToUsersDto; import cn.bunny.services.domain.system.system.dto.user.AssignRolesToUsersDto;
import cn.bunny.domain.vo.result.Result; import cn.bunny.services.domain.common.vo.result.Result;
import cn.bunny.services.service.system.UserRoleService; import cn.bunny.services.service.system.UserRoleService;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;

View File

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 17 KiB

View File

@ -1,9 +1,9 @@
package cn.bunny.services.controller; package cn.bunny.services.controller;
import cn.bunny.domain.system.entity.Permission; import cn.bunny.services.aop.scanner.ControllerApiPermissionScanner;
import cn.bunny.services.aop.scanner.controller.ScannerControllerInfoVo; import cn.bunny.services.domain.common.scanner.ScannerControllerInfoVo;
import cn.bunny.services.domain.system.system.entity.Permission;
import cn.bunny.services.service.system.PermissionService; import cn.bunny.services.service.system.PermissionService;
import cn.bunny.services.utils.system.PermissionUtil;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.context.SpringBootTest;
@ -18,7 +18,7 @@ class TestControllerTest {
@Test @Test
void test1() { void test1() {
List<ScannerControllerInfoVo> list = PermissionUtil.getSystemApiInfoList(); List<ScannerControllerInfoVo> list = ControllerApiPermissionScanner.getSystemApiInfoList();
list.forEach(parent -> { list.forEach(parent -> {
String parentPath = parent.getPath(); String parentPath = parent.getPath();
String powerCode = parentPath.replace("/api/", "").replace("/**", ""); String powerCode = parentPath.replace("/api/", "").replace("/**", "");

View File

@ -1,8 +1,8 @@
package cn.bunny.services.controller.configuration; package cn.bunny.services.controller.configuration;
import cn.bunny.domain.configuration.dto.WebConfigurationDto; import cn.bunny.services.domain.system.configuration.dto.WebConfigurationDto;
import cn.bunny.domain.configuration.entity.WebConfiguration; import cn.bunny.services.domain.system.configuration.entity.WebConfiguration;
import cn.bunny.domain.vo.result.Result; import cn.bunny.services.domain.common.vo.result.Result;
import cn.bunny.services.utils.TokenUtilsTest; import cn.bunny.services.utils.TokenUtilsTest;
import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.TypeReference; import com.alibaba.fastjson2.TypeReference;

View File

@ -1,11 +1,11 @@
package cn.bunny.services.controller.configuration; package cn.bunny.services.controller.configuration;
import cn.bunny.domain.email.dto.EmailTemplateAddDto; import cn.bunny.services.domain.system.email.dto.EmailTemplateAddDto;
import cn.bunny.domain.email.dto.EmailTemplateUpdateDto; import cn.bunny.services.domain.system.email.dto.EmailTemplateUpdateDto;
import cn.bunny.domain.email.vo.EmailTemplateVo; import cn.bunny.services.domain.system.email.vo.EmailTemplateVo;
import cn.bunny.domain.enums.EmailTemplateEnums; import cn.bunny.services.domain.common.enums.EmailTemplateEnums;
import cn.bunny.domain.vo.result.PageResult; import cn.bunny.services.domain.common.vo.result.PageResult;
import cn.bunny.domain.vo.result.Result; import cn.bunny.services.domain.common.vo.result.Result;
import cn.bunny.services.utils.TokenUtilsTest; import cn.bunny.services.utils.TokenUtilsTest;
import cn.hutool.crypto.digest.MD5; import cn.hutool.crypto.digest.MD5;
import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSON;

View File

@ -1,11 +1,11 @@
package cn.bunny.services.controller.log; package cn.bunny.services.controller.log;
import cn.bunny.domain.log.dto.UserLoginLogDto; import cn.bunny.services.domain.system.log.dto.UserLoginLogDto;
import cn.bunny.domain.log.entity.UserLoginLog; import cn.bunny.services.domain.system.log.entity.UserLoginLog;
import cn.bunny.domain.log.vo.UserLoginLogLocalVo; import cn.bunny.services.domain.system.log.vo.UserLoginLogLocalVo;
import cn.bunny.domain.log.vo.UserLoginLogVo; import cn.bunny.services.domain.system.log.vo.UserLoginLogVo;
import cn.bunny.domain.vo.result.PageResult; import cn.bunny.services.domain.common.vo.result.PageResult;
import cn.bunny.domain.vo.result.Result; import cn.bunny.services.domain.common.vo.result.Result;
import cn.bunny.services.service.log.UserLoginLogService; import cn.bunny.services.service.log.UserLoginLogService;
import cn.bunny.services.utils.TokenUtilsTest; import cn.bunny.services.utils.TokenUtilsTest;
import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSON;

View File

@ -1,7 +1,7 @@
package cn.bunny.services.utils; package cn.bunny.services.utils;
import cn.bunny.domain.system.entity.AdminUser; import cn.bunny.services.domain.system.system.entity.AdminUser;
import cn.bunny.domain.vo.LoginVo; import cn.bunny.services.domain.common.vo.LoginVo;
import cn.bunny.services.mapper.system.UserMapper; import cn.bunny.services.mapper.system.UserMapper;
import cn.bunny.services.utils.system.UserUtil; import cn.bunny.services.utils.system.UserUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;

View File

@ -1,7 +1,7 @@
package impl; package impl;
import cn.bunny.domain.i18n.entity.I18n; import cn.bunny.services.domain.common.excel.I18nExcel;
import cn.bunny.services.excel.entity.I18nExcel; import cn.bunny.services.domain.system.i18n.entity.I18n;
import cn.bunny.services.mapper.configuration.I18nMapper; import cn.bunny.services.mapper.configuration.I18nMapper;
import cn.bunny.services.utils.i8n.I18nUtil; import cn.bunny.services.utils.i8n.I18nUtil;
import com.alibaba.excel.EasyExcel; import com.alibaba.excel.EasyExcel;

View File

@ -1,137 +0,0 @@
package cn.bunny.services.aop.scanner.controller.utils;
import cn.bunny.services.aop.scanner.AnnotationScanner;
import cn.bunny.services.aop.scanner.controller.ControllerInfo;
import cn.bunny.services.aop.scanner.controller.MethodInfo;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.web.bind.annotation.*;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Set;
/**
* 控制器扫描工具类
*/
public class ControllerScannerUtil {
/**
* 获取所有带有@Tag注解的控制器类信息
*
* @return 包含控制器类信息和接口方法的列表
*/
public static List<ControllerInfo> scanControllerInfo() {
Set<Class<?>> controllerClasses = AnnotationScanner.getClassesWithAnnotation(RestController.class);
List<ControllerInfo> controllerInfos = new ArrayList<>();
for (Class<?> clazz : controllerClasses) {
ControllerInfo controllerInfo = new ControllerInfo();
// 获取类上的Tag注解
Tag tag = clazz.getAnnotation(Tag.class);
if (tag != null) {
controllerInfo.setTagName(tag.name());
controllerInfo.setTagDescription(tag.description());
}
// 获取类上的RequestMapping注解
RequestMapping requestMapping = clazz.getAnnotation(RequestMapping.class);
if (requestMapping != null && requestMapping.value().length > 0) {
controllerInfo.setBasePath(requestMapping.value()[0]);
}
// 获取方法上的注解信息
List<MethodInfo> methodInfos = new ArrayList<>();
for (Method method : clazz.getDeclaredMethods()) {
MethodInfo methodInfo = new MethodInfo();
// 获取Operation注解
Operation operation = method.getAnnotation(Operation.class);
if (operation != null) {
methodInfo.setSummary(operation.summary());
methodInfo.setDescription(operation.description());
methodInfo.setTags(Arrays.stream(operation.tags()).toList());
}
// 获取请求路径和方法的组合路径
String methodPath = getMethodPath(method);
if (methodPath != null) {
methodInfo.setPath(methodPath);
}
// 获取请求方法类型
String httpMethod = getHttpMethod(method);
if (httpMethod != null) {
methodInfo.setHttpMethod(httpMethod);
}
if (operation != null || methodPath != null) {
methodInfos.add(methodInfo);
}
}
controllerInfo.setMethods(methodInfos);
controllerInfos.add(controllerInfo);
}
return controllerInfos;
}
/**
* 获取HTTP方法类型
*/
private static String getHttpMethod(Method method) {
if (method.getAnnotation(GetMapping.class) != null) return "GET";
if (method.getAnnotation(PostMapping.class) != null) return "POST";
if (method.getAnnotation(PutMapping.class) != null) return "PUT";
if (method.getAnnotation(DeleteMapping.class) != null) return "DELETE";
if (method.getAnnotation(PatchMapping.class) != null) return "PATCH";
RequestMapping requestMapping = method.getAnnotation(RequestMapping.class);
if (requestMapping != null && requestMapping.method().length > 0) {
return requestMapping.method()[0].name();
}
return null;
}
/**
* 获取方法上的路径注解值
*/
private static String getMethodPath(Method method) {
// 检查所有可能的路径注解
GetMapping getMapping = method.getAnnotation(GetMapping.class);
if (getMapping != null && getMapping.value().length > 0) {
return getMapping.value()[0];
}
PostMapping postMapping = method.getAnnotation(PostMapping.class);
if (postMapping != null && postMapping.value().length > 0) {
return postMapping.value()[0];
}
PutMapping putMapping = method.getAnnotation(PutMapping.class);
if (putMapping != null && putMapping.value().length > 0) {
return putMapping.value()[0];
}
DeleteMapping deleteMapping = method.getAnnotation(DeleteMapping.class);
if (deleteMapping != null && deleteMapping.value().length > 0) {
return deleteMapping.value()[0];
}
PatchMapping patchMapping = method.getAnnotation(PatchMapping.class);
if (patchMapping != null && patchMapping.value().length > 0) {
return patchMapping.value()[0];
}
RequestMapping requestMapping = method.getAnnotation(RequestMapping.class);
if (requestMapping != null && requestMapping.value().length > 0) {
return requestMapping.value()[0];
}
return null;
}
}

View File

@ -1,222 +0,0 @@
package cn.bunny.services.utils.system;
import cn.bunny.services.aop.scanner.controller.ControllerInfo;
import cn.bunny.services.aop.scanner.controller.MethodInfo;
import cn.bunny.services.aop.scanner.controller.ScannerControllerInfoVo;
import cn.bunny.services.aop.scanner.controller.utils.ControllerScannerUtil;
import cn.bunny.services.excel.entity.PermissionExcel;
import cn.bunny.services.security.config.WebSecurityConfig;
import com.alibaba.excel.EasyExcel;
import com.alibaba.fastjson2.JSON;
import org.springframework.util.AntPathMatcher;
import org.springframework.util.StringUtils;
import java.io.ByteArrayOutputStream;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
public class PermissionUtil {
private static final AntPathMatcher PATH_MATCHER = new AntPathMatcher();
/**
* 构建属性结构
*
* @param list 要构建的列表
* @return 构建完成的列表
*/
public static List<PermissionExcel> buildTree(List<PermissionExcel> list) {
List<PermissionExcel> permissionExcels = list.stream()
.filter(permissionExcel -> permissionExcel.getParentId() == null || permissionExcel.getParentId() == 0)
.toList();
for (PermissionExcel permission : permissionExcels) {
setChildren(permission, list);
}
return permissionExcels;
}
/**
* 设置子集
*
* @param parent 父级节点
* @param list 要构建的列表
*/
private static void setChildren(PermissionExcel parent, List<PermissionExcel> list) {
List<PermissionExcel> children = list.stream()
.filter(p -> parent.getId().equals(p.getParentId()))
.toList();
if (!children.isEmpty()) {
parent.setChildren(children);
for (PermissionExcel child : children) {
setChildren(child, list);
}
}
}
/**
* 写入JSON
*
* @param list 写入的列表
* @param zipOutputStream zip输出流
* @param zipName zip文件名
*/
public static void writeJson(List<PermissionExcel> list, ZipOutputStream zipOutputStream, String zipName) {
try {
ZipEntry zipEntry = new ZipEntry(zipName);
zipOutputStream.putNextEntry(zipEntry);
zipOutputStream.write(JSON.toJSONString(list).getBytes(StandardCharsets.UTF_8));
zipOutputStream.closeEntry();
} catch (Exception e) {
throw new RuntimeException(e);
}
}
/**
* 写入JSON
*
* @param list 写入的列表
* @param zipOutputStream zip输出流
* @param zipName zip文件名
*/
public static void writExcel(List<PermissionExcel> list, ZipOutputStream zipOutputStream, String zipName) {
try {
ByteArrayOutputStream excelOutputStream = new ByteArrayOutputStream();
EasyExcel.write(excelOutputStream, PermissionExcel.class).sheet("permission").doWrite(list);
// 将Excel写入到Zip中
ZipEntry zipEntry = new ZipEntry(zipName);
zipOutputStream.putNextEntry(zipEntry);
zipOutputStream.write(excelOutputStream.toByteArray());
zipOutputStream.closeEntry();
} catch (Exception e) {
throw new RuntimeException(e);
}
}
/**
* 将属性结构扁平化
*
* @param list 属性结构
* @return 扁平化数组
*/
public static List<PermissionExcel> flattenTree(List<PermissionExcel> list) {
List<PermissionExcel> result = new ArrayList<>();
for (PermissionExcel node : list) {
result.add(node);
if (node.getChildren() != null && !node.getChildren().isEmpty()) {
result.addAll(flattenTree(node.getChildren()));
}
}
return result;
}
/**
* 当前路径是否有权限被添加
*
* @param path 请求路径
* @return boolean
*/
public static boolean isPathAuthorized(String path) {
if (!StringUtils.hasText(path)) {
return true;
}
// 需要登录的路径模式检查
if (path.equals("login")) {
return false;
}
// 需要登录之后才访问的不需要添加到要被监视的权限中
for (String userAuth : WebSecurityConfig.userAuths) {
if (path.contains(userAuth)) {
return false;
}
}
// WebSecurityConfig 默认配置的不需要权限的路径不添加
for (String annotation : WebSecurityConfig.annotations) {
if (PATH_MATCHER.match(annotation, path) || PATH_MATCHER.match(annotation, "/" + path)) {
return false;
}
}
return true;
}
/**
* 得到所有控制器下的接口路径
* 其中已经被过滤掉不需要验证的 WebSecurityConfig 配置的 annotations
* 其中已经过滤掉不需要验证的 WebSecurityConfig userAuths
* WebSecurityConfig配置的不会被添加权限中
*
* @return 扫描到且可以被验证的权限
*/
public static List<ScannerControllerInfoVo> getSystemApiInfoList() {
// 路径中包含 {xxx} 替换成 *
String regex = "\\{[^}]*\\}"; // 匹配 {xxx} 格式
String replacement = "*"; // 替换为 *
// 控制器中所有的方法路径等
List<ControllerInfo> controllerInfos = ControllerScannerUtil.scanControllerInfo();
List<ScannerControllerInfoVo> resultList = new ArrayList<>();
List<ControllerInfo> controllerInfoList1 = controllerInfos.stream()
.filter(controllerInfo -> isPathAuthorized(controllerInfo.getBasePath()))
.toList();
// 父级RequestMapping中的内容
for (ControllerInfo controllerInfo : controllerInfoList1) {
// 处理RequestMapping上开头路径
String basePath = controllerInfo.getBasePath();
// 在请求方法前加 /
if (!basePath.startsWith("/")) basePath = "/" + basePath;
// 在请求方法路径后加 /
if (basePath.endsWith("/")) {
basePath = basePath.substring(1);
}
ScannerControllerInfoVo parentVo = ScannerControllerInfoVo.builder()
.path(basePath + "/**")
.summary(controllerInfo.getTagName())
.description(controllerInfo.getTagDescription())
.build();
// 子级 控制器下请求方法
List<MethodInfo> methods = controllerInfo.getMethods();
final String finalBasePath = basePath;
List<ScannerControllerInfoVo> children = methods.stream()
.filter(methodInfo -> isPathAuthorized(methodInfo.getPath()))
.map(methodInfo -> {
String methodInfoPath = methodInfo.getPath();
// 为路径添加 /
if (StringUtils.hasText(methodInfoPath) && !methodInfoPath.startsWith("/")) {
methodInfoPath = finalBasePath + "/" + methodInfoPath;
// 路径包含 {xxx} 替换成 *
methodInfoPath = methodInfoPath.replaceAll(regex, replacement);
} else {
methodInfoPath = finalBasePath;
}
return ScannerControllerInfoVo.builder()
.path(methodInfoPath)
.httpMethod(methodInfo.getHttpMethod())
.summary(methodInfo.getSummary())
.description(methodInfo.getDescription())
.powerCodes(methodInfo.getTags())
.build();
}).toList();
parentVo.setChildren(children);
resultList.add(parentVo);
}
return resultList;
}
}

View File

@ -3,32 +3,52 @@
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<parent> <parent>
<groupId>cn.bunny</groupId> <groupId>cn.bunny</groupId>
<artifactId>domain</artifactId> <artifactId>auth-server</artifactId>
<version>0.0.1-SNAPSHOT</version> <version>0.0.1-SNAPSHOT</version>
</parent> </parent>
<artifactId>domain-common</artifactId> <artifactId>auth-core</artifactId>
<packaging>jar</packaging> <packaging>jar</packaging>
<name>common-domain</name> <name>auth-core</name>
<url>https://maven.apache.org</url>
<properties> <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties> </properties>
<dependencies> <dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- spring-security --> <!-- spring-security -->
<dependency> <dependency>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId> <artifactId>spring-boot-starter-security</artifactId>
</dependency> </dependency>
<!-- lombok --> <!-- 表单验证 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
<!-- 邮箱 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<!-- lombok hutool-->
<dependency> <dependency>
<groupId>org.projectlombok</groupId> <groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId> <artifactId>lombok</artifactId>
</dependency> </dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
</dependency>
<!-- knife4j --> <!-- knife4j -->
<dependency> <dependency>
@ -63,6 +83,30 @@
<groupId>com.alibaba</groupId> <groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId> <artifactId>easyexcel</artifactId>
</dependency> </dependency>
</dependencies>
<!-- redis -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!-- minio -->
<dependency>
<groupId>io.minio</groupId>
<artifactId>minio</artifactId>
</dependency>
<!-- JWT -->
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
</dependency>
<!-- 查询ip地址 -->
<dependency>
<groupId>org.lionsoul</groupId>
<artifactId>ip2region</artifactId>
<version>2.6.5</version>
</dependency>
</dependencies>
</project> </project>

View File

@ -1,7 +1,7 @@
package cn.bunny.services.utils.mail; package cn.bunny.services.config.mail;
import cn.bunny.domain.model.email.EmailSend; import cn.bunny.services.domain.common.model.email.EmailSend;
import cn.bunny.domain.model.email.EmailSendInit; import cn.bunny.services.domain.common.model.email.EmailSendInit;
import jakarta.mail.MessagingException; import jakarta.mail.MessagingException;
import jakarta.mail.internet.MimeMessage; import jakarta.mail.internet.MimeMessage;
import org.springframework.mail.javamail.JavaMailSenderImpl; import org.springframework.mail.javamail.JavaMailSenderImpl;
@ -14,8 +14,8 @@ import java.util.Properties;
/** /**
* 邮件发送工具 * 邮件发送工具
*/ */
public class MailSenderUtil { public class MailSenderConfiguration {
private MailSenderUtil() { private MailSenderConfiguration() {
// 私有化构造器 // 私有化构造器
} }

View File

@ -1,4 +1,4 @@
package cn.bunny.services.utils.minio; package cn.bunny.services.config.minio;
import io.minio.BucketExistsArgs; import io.minio.BucketExistsArgs;
import io.minio.MakeBucketArgs; import io.minio.MakeBucketArgs;

View File

@ -1,8 +1,8 @@
package cn.bunny.services.utils.minio; package cn.bunny.services.config.minio;
import cn.bunny.domain.constant.MinioConstant; import cn.bunny.services.domain.common.vo.result.ResultCodeEnum;
import cn.bunny.domain.model.file.MinioFilePath; import cn.bunny.services.domain.common.constant.MinioConstant;
import cn.bunny.domain.vo.result.ResultCodeEnum; import cn.bunny.services.domain.common.model.file.MinioFilePath;
import cn.bunny.services.exception.AuthCustomerException; import cn.bunny.services.exception.AuthCustomerException;
import io.minio.*; import io.minio.*;
import io.minio.messages.DeleteError; import io.minio.messages.DeleteError;

View File

@ -1,7 +1,7 @@
package cn.bunny.services.context; package cn.bunny.services.context;
import cn.bunny.domain.vo.LoginVo; import cn.bunny.services.domain.common.vo.LoginVo;
public class BaseContext { public class BaseContext {
private static final ThreadLocal<Long> userId = new ThreadLocal<>(); private static final ThreadLocal<Long> userId = new ThreadLocal<>();

View File

@ -1,4 +1,4 @@
package cn.bunny.domain.constant; package cn.bunny.services.domain.common.constant;
public class FileType { public class FileType {
public static final String JPG = "jpg"; public static final String JPG = "jpg";

View File

@ -1,4 +1,4 @@
package cn.bunny.domain.constant; package cn.bunny.services.domain.common.constant;
import lombok.Data; import lombok.Data;

View File

@ -1,4 +1,4 @@
package cn.bunny.domain.constant; package cn.bunny.services.domain.common.constant;
import lombok.Data; import lombok.Data;

View File

@ -1,4 +1,4 @@
package cn.bunny.domain.constant; package cn.bunny.services.domain.common.constant;
import lombok.Data; import lombok.Data;

View File

@ -1,4 +1,4 @@
package cn.bunny.domain.constant; package cn.bunny.services.domain.common.constant;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;

View File

@ -1,4 +1,4 @@
package cn.bunny.domain.constant; package cn.bunny.services.domain.common.constant;
import lombok.Data; import lombok.Data;

View File

@ -1,4 +1,4 @@
package cn.bunny.domain.entity; package cn.bunny.services.domain.common.entity;
import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;

View File

@ -1,4 +1,4 @@
package cn.bunny.domain.entity; package cn.bunny.services.domain.common.entity;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;

View File

@ -1,4 +1,4 @@
package cn.bunny.domain.enums; package cn.bunny.services.domain.common.enums;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter; import lombok.Getter;

View File

@ -1,4 +1,4 @@
package cn.bunny.domain.enums; package cn.bunny.services.domain.common.enums;
import lombok.Getter; import lombok.Getter;

View File

@ -1,4 +1,4 @@
package cn.bunny.domain.enums; package cn.bunny.services.domain.common.enums;
import lombok.Getter; import lombok.Getter;

View File

@ -1,4 +1,4 @@
package cn.bunny.services.excel.entity; package cn.bunny.services.domain.common.excel;
import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.*; import com.alibaba.excel.annotation.write.style.*;

View File

@ -1,4 +1,4 @@
package cn.bunny.services.excel.entity; package cn.bunny.services.domain.common.excel;
import com.alibaba.excel.annotation.ExcelIgnore; import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.ExcelProperty;

View File

@ -1,4 +1,4 @@
package cn.bunny.services.excel.entity; package cn.bunny.services.domain.common.excel;
import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.*; import com.alibaba.excel.annotation.write.style.*;

View File

@ -1,4 +1,4 @@
package cn.bunny.services.utils.ip; package cn.bunny.services.domain.common.ip;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;

View File

@ -1,4 +1,4 @@
package cn.bunny.domain.model.email; package cn.bunny.services.domain.common.model.email;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotBlank;

View File

@ -1,4 +1,4 @@
package cn.bunny.domain.model.email; package cn.bunny.services.domain.common.model.email;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotBlank;

View File

@ -1,4 +1,4 @@
package cn.bunny.domain.model.file; package cn.bunny.services.domain.common.model.file;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;

View File

@ -1,4 +1,4 @@
package cn.bunny.domain.model.quartz; package cn.bunny.services.domain.common.model.quartz;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;

View File

@ -1,4 +1,4 @@
package cn.bunny.services.aop.scanner.controller; package cn.bunny.services.domain.common.scanner;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;

View File

@ -1,4 +1,4 @@
package cn.bunny.services.aop.scanner.controller; package cn.bunny.services.domain.common.scanner;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;

View File

@ -1,4 +1,4 @@
package cn.bunny.services.aop.scanner.controller; package cn.bunny.services.domain.common.scanner;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;

View File

@ -1,4 +1,4 @@
package cn.bunny.domain.vo; package cn.bunny.services.domain.common.vo;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;

View File

@ -1,4 +1,4 @@
package cn.bunny.domain.vo; package cn.bunny.services.domain.common.vo;
import com.alibaba.fastjson2.annotation.JSONField; import com.alibaba.fastjson2.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;

View File

@ -1,4 +1,4 @@
package cn.bunny.domain.vo; package cn.bunny.services.domain.common.vo;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*; import lombok.*;

View File

@ -1,4 +1,4 @@
package cn.bunny.domain.vo.result; package cn.bunny.services.domain.common.vo.result;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;

View File

@ -1,4 +1,4 @@
package cn.bunny.domain.vo.result; package cn.bunny.services.domain.common.vo.result;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;

View File

@ -1,4 +1,4 @@
package cn.bunny.domain.vo.result; package cn.bunny.services.domain.common.vo.result;
import lombok.Getter; import lombok.Getter;

View File

@ -1,4 +1,4 @@
package cn.bunny.domain.configuration.dto; package cn.bunny.services.domain.system.configuration.dto;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.Min; import jakarta.validation.constraints.Min;

Some files were not shown because too many files have changed in this diff Show More