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;
import cn.bunny.domain.constant.LocalDateTimeConstant;
import cn.bunny.domain.enums.JobEnums;
import cn.bunny.domain.log.entity.ScheduleExecuteLog;
import cn.bunny.domain.model.quartz.ScheduleExecuteLogJson;
import cn.bunny.services.domain.common.constant.LocalDateTimeConstant;
import cn.bunny.services.domain.common.enums.JobEnums;
import cn.bunny.services.domain.system.log.entity.ScheduleExecuteLog;
import cn.bunny.services.domain.common.model.quartz.ScheduleExecuteLogJson;
import cn.bunny.services.mapper.log.ScheduleExecuteLogMapper;
import com.alibaba.fastjson2.JSON;
import jakarta.annotation.Resource;

View File

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

View File

@ -1,13 +1,13 @@
package cn.bunny.services.controller.configuration;
import cn.bunny.domain.email.dto.EmailTemplateAddDto;
import cn.bunny.domain.email.dto.EmailTemplateDto;
import cn.bunny.domain.email.dto.EmailTemplateUpdateDto;
import cn.bunny.domain.email.entity.EmailTemplate;
import cn.bunny.domain.email.vo.EmailTemplateVo;
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.domain.system.email.dto.EmailTemplateAddDto;
import cn.bunny.services.domain.system.email.dto.EmailTemplateDto;
import cn.bunny.services.domain.system.email.dto.EmailTemplateUpdateDto;
import cn.bunny.services.domain.system.email.entity.EmailTemplate;
import cn.bunny.services.domain.system.email.vo.EmailTemplateVo;
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.service.configuration.EmailTemplateService;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.v3.oas.annotations.Operation;

View File

@ -1,13 +1,13 @@
package cn.bunny.services.controller.configuration;
import cn.bunny.domain.email.dto.EmailUsersAddDto;
import cn.bunny.domain.email.dto.EmailUsersDto;
import cn.bunny.domain.email.dto.EmailUsersUpdateDto;
import cn.bunny.domain.email.entity.EmailUsers;
import cn.bunny.domain.email.vo.EmailUsersVo;
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.domain.system.email.dto.EmailUsersAddDto;
import cn.bunny.services.domain.system.email.dto.EmailUsersDto;
import cn.bunny.services.domain.system.email.dto.EmailUsersUpdateDto;
import cn.bunny.services.domain.system.email.entity.EmailUsers;
import cn.bunny.services.domain.system.email.vo.EmailUsersVo;
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.service.configuration.EmailUsersService;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.v3.oas.annotations.Operation;

View File

@ -1,14 +1,14 @@
package cn.bunny.services.controller.configuration;
import cn.bunny.domain.i18n.dto.I18nAddDto;
import cn.bunny.domain.i18n.dto.I18nDto;
import cn.bunny.domain.i18n.dto.I18nUpdateByFileDto;
import cn.bunny.domain.i18n.dto.I18nUpdateDto;
import cn.bunny.domain.i18n.entity.I18n;
import cn.bunny.domain.i18n.vo.I18nVo;
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.domain.system.i18n.dto.I18nAddDto;
import cn.bunny.services.domain.system.i18n.dto.I18nDto;
import cn.bunny.services.domain.system.i18n.dto.I18nUpdateByFileDto;
import cn.bunny.services.domain.system.i18n.dto.I18nUpdateDto;
import cn.bunny.services.domain.system.i18n.entity.I18n;
import cn.bunny.services.domain.system.i18n.vo.I18nVo;
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.service.configuration.I18nService;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.v3.oas.annotations.Operation;

View File

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

View File

@ -1,13 +1,13 @@
package cn.bunny.services.controller.configuration;
import cn.bunny.domain.menuIcon.dto.MenuIconAddDto;
import cn.bunny.domain.menuIcon.dto.MenuIconDto;
import cn.bunny.domain.menuIcon.dto.MenuIconUpdateDto;
import cn.bunny.domain.menuIcon.entity.MenuIcon;
import cn.bunny.domain.menuIcon.vo.MenuIconVo;
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.domain.system.menuIcon.dto.MenuIconAddDto;
import cn.bunny.services.domain.system.menuIcon.dto.MenuIconDto;
import cn.bunny.services.domain.system.menuIcon.dto.MenuIconUpdateDto;
import cn.bunny.services.domain.system.menuIcon.entity.MenuIcon;
import cn.bunny.services.domain.system.menuIcon.vo.MenuIconVo;
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.service.configuration.MenuIconService;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.v3.oas.annotations.Operation;

View File

@ -1,11 +1,11 @@
package cn.bunny.services.controller.log;
import cn.bunny.domain.log.dto.ScheduleExecuteLogDto;
import cn.bunny.domain.log.entity.ScheduleExecuteLog;
import cn.bunny.domain.log.vo.ScheduleExecuteLogVo;
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.domain.system.log.dto.ScheduleExecuteLogDto;
import cn.bunny.services.domain.system.log.entity.ScheduleExecuteLog;
import cn.bunny.services.domain.system.log.vo.ScheduleExecuteLogVo;
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.service.log.ScheduleExecuteLogService;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.v3.oas.annotations.Operation;

View File

@ -1,12 +1,12 @@
package cn.bunny.services.controller.log;
import cn.bunny.domain.log.dto.UserLoginLogDto;
import cn.bunny.domain.log.entity.UserLoginLog;
import cn.bunny.domain.log.vo.UserLoginLogLocalVo;
import cn.bunny.domain.log.vo.UserLoginLogVo;
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.domain.system.log.dto.UserLoginLogDto;
import cn.bunny.services.domain.system.log.entity.UserLoginLog;
import cn.bunny.services.domain.system.log.vo.UserLoginLogLocalVo;
import cn.bunny.services.domain.system.log.vo.UserLoginLogVo;
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.service.log.UserLoginLogService;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.v3.oas.annotations.Operation;

View File

@ -1,15 +1,15 @@
package cn.bunny.services.controller.message;
import cn.bunny.domain.message.dto.MessageAddDto;
import cn.bunny.domain.message.dto.MessageDto;
import cn.bunny.domain.message.dto.MessageUpdateDto;
import cn.bunny.domain.message.entity.Message;
import cn.bunny.domain.message.vo.MessageDetailVo;
import cn.bunny.domain.message.vo.MessageReceivedWithUserVo;
import cn.bunny.domain.message.vo.MessageVo;
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.domain.system.message.dto.MessageAddDto;
import cn.bunny.services.domain.system.message.dto.MessageDto;
import cn.bunny.services.domain.system.message.dto.MessageUpdateDto;
import cn.bunny.services.domain.system.message.entity.Message;
import cn.bunny.services.domain.system.message.vo.MessageDetailVo;
import cn.bunny.services.domain.system.message.vo.MessageReceivedWithUserVo;
import cn.bunny.services.domain.system.message.vo.MessageVo;
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.service.message.MessageService;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.v3.oas.annotations.Operation;

View File

@ -1,14 +1,14 @@
package cn.bunny.services.controller.message;
import cn.bunny.domain.message.dto.MessageReceivedDto;
import cn.bunny.domain.message.dto.MessageReceivedUpdateDto;
import cn.bunny.domain.message.dto.MessageUserDto;
import cn.bunny.domain.message.entity.Message;
import cn.bunny.domain.message.vo.MessageReceivedWithMessageVo;
import cn.bunny.domain.message.vo.MessageUserVo;
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.domain.system.message.dto.MessageReceivedDto;
import cn.bunny.services.domain.system.message.dto.MessageReceivedUpdateDto;
import cn.bunny.services.domain.system.message.dto.MessageUserDto;
import cn.bunny.services.domain.system.message.entity.Message;
import cn.bunny.services.domain.system.message.vo.MessageReceivedWithMessageVo;
import cn.bunny.services.domain.system.message.vo.MessageUserVo;
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.service.message.MessageReceivedService;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.v3.oas.annotations.Operation;

View File

@ -1,13 +1,13 @@
package cn.bunny.services.controller.message;
import cn.bunny.domain.message.dto.MessageTypeAddDto;
import cn.bunny.domain.message.dto.MessageTypeDto;
import cn.bunny.domain.message.dto.MessageTypeUpdateDto;
import cn.bunny.domain.message.entity.MessageType;
import cn.bunny.domain.message.vo.MessageTypeVo;
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.domain.system.message.dto.MessageTypeAddDto;
import cn.bunny.services.domain.system.message.dto.MessageTypeDto;
import cn.bunny.services.domain.system.message.dto.MessageTypeUpdateDto;
import cn.bunny.services.domain.system.message.entity.MessageType;
import cn.bunny.services.domain.system.message.vo.MessageTypeVo;
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.service.message.MessageTypeService;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.v3.oas.annotations.Operation;

View File

@ -1,13 +1,14 @@
package cn.bunny.services.controller.schedule;
import cn.bunny.domain.quartz.dto.SchedulersAddDto;
import cn.bunny.domain.quartz.dto.SchedulersDto;
import cn.bunny.domain.quartz.dto.SchedulersUpdateDto;
import cn.bunny.domain.quartz.entity.Schedulers;
import cn.bunny.domain.quartz.vo.SchedulersVo;
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.aop.scanner.QuartzSchedulersScanner;
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.quartz.dto.SchedulersAddDto;
import cn.bunny.services.domain.system.quartz.dto.SchedulersDto;
import cn.bunny.services.domain.system.quartz.dto.SchedulersUpdateDto;
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 com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.v3.oas.annotations.Operation;
@ -87,7 +88,7 @@ public class SchedulersController {
@Operation(summary = "获取所有可用调度任务", description = "获取所有可用调度任务", tags = "schedulers::query")
@GetMapping("private")
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);
}
}

View File

@ -1,13 +1,13 @@
package cn.bunny.services.controller.schedule;
import cn.bunny.domain.quartz.dto.SchedulersGroupAddDto;
import cn.bunny.domain.quartz.dto.SchedulersGroupDto;
import cn.bunny.domain.quartz.dto.SchedulersGroupUpdateDto;
import cn.bunny.domain.quartz.entity.SchedulersGroup;
import cn.bunny.domain.quartz.vo.SchedulersGroupVo;
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.domain.system.quartz.dto.SchedulersGroupAddDto;
import cn.bunny.services.domain.system.quartz.dto.SchedulersGroupDto;
import cn.bunny.services.domain.system.quartz.dto.SchedulersGroupUpdateDto;
import cn.bunny.services.domain.system.quartz.entity.SchedulersGroup;
import cn.bunny.services.domain.system.quartz.vo.SchedulersGroupVo;
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.service.schedule.SchedulersGroupService;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.v3.oas.annotations.Operation;

View File

@ -1,13 +1,13 @@
package cn.bunny.services.controller.system;
import cn.bunny.domain.system.dto.dept.DeptAddDto;
import cn.bunny.domain.system.dto.dept.DeptDto;
import cn.bunny.domain.system.dto.dept.DeptUpdateDto;
import cn.bunny.domain.system.entity.Dept;
import cn.bunny.domain.system.vo.DeptVo;
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.domain.system.system.dto.dept.DeptAddDto;
import cn.bunny.services.domain.system.system.dto.dept.DeptDto;
import cn.bunny.services.domain.system.system.dto.dept.DeptUpdateDto;
import cn.bunny.services.domain.system.system.entity.Dept;
import cn.bunny.services.domain.system.system.vo.DeptVo;
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.service.system.DeptService;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.v3.oas.annotations.Operation;

View File

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

View File

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

View File

@ -1,13 +1,13 @@
package cn.bunny.services.controller.system;
import cn.bunny.domain.system.dto.role.RoleAddDto;
import cn.bunny.domain.system.dto.role.RoleDto;
import cn.bunny.domain.system.dto.role.RoleUpdateDto;
import cn.bunny.domain.system.entity.Role;
import cn.bunny.domain.system.vo.RoleVo;
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.domain.system.system.dto.role.RoleAddDto;
import cn.bunny.services.domain.system.system.dto.role.RoleDto;
import cn.bunny.services.domain.system.system.dto.role.RoleUpdateDto;
import cn.bunny.services.domain.system.system.entity.Role;
import cn.bunny.services.domain.system.system.vo.RoleVo;
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.service.system.RoleService;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.v3.oas.annotations.Operation;

View File

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

View File

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

View File

@ -1,6 +1,6 @@
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 io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;

View File

@ -1,15 +1,16 @@
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.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 com.baomidou.mybatisplus.extension.plugins.pagination.Page;
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 jakarta.annotation.Resource;
import jakarta.validation.Valid;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
@ -44,6 +46,8 @@ public class UserController {
@Operation(summary = "登录发送邮件验证码", description = "登录发送邮件验证码")
@PostMapping("public/sendLoginEmail")
public Result<String> sendLoginEmail(String email) {
if (!StringUtils.hasText(email)) throw new AuthCustomerException(ResultCodeEnum.REQUEST_IS_EMPTY);
userService.sendLoginEmail(email);
return Result.success(ResultCodeEnum.EMAIL_CODE_SEND_SUCCESS);
}

View File

@ -1,7 +1,7 @@
package cn.bunny.services.controller.system;
import cn.bunny.domain.system.dto.user.AssignRolesToUsersDto;
import cn.bunny.domain.vo.result.Result;
import cn.bunny.services.domain.system.system.dto.user.AssignRolesToUsersDto;
import cn.bunny.services.domain.common.vo.result.Result;
import cn.bunny.services.service.system.UserRoleService;
import io.swagger.v3.oas.annotations.Operation;
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;
import cn.bunny.domain.system.entity.Permission;
import cn.bunny.services.aop.scanner.controller.ScannerControllerInfoVo;
import cn.bunny.services.aop.scanner.ControllerApiPermissionScanner;
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.utils.system.PermissionUtil;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
@ -18,7 +18,7 @@ class TestControllerTest {
@Test
void test1() {
List<ScannerControllerInfoVo> list = PermissionUtil.getSystemApiInfoList();
List<ScannerControllerInfoVo> list = ControllerApiPermissionScanner.getSystemApiInfoList();
list.forEach(parent -> {
String parentPath = parent.getPath();
String powerCode = parentPath.replace("/api/", "").replace("/**", "");

View File

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

View File

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

View File

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

View File

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

View File

@ -1,7 +1,7 @@
package impl;
import cn.bunny.domain.i18n.entity.I18n;
import cn.bunny.services.excel.entity.I18nExcel;
import cn.bunny.services.domain.common.excel.I18nExcel;
import cn.bunny.services.domain.system.i18n.entity.I18n;
import cn.bunny.services.mapper.configuration.I18nMapper;
import cn.bunny.services.utils.i8n.I18nUtil;
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>
<parent>
<groupId>cn.bunny</groupId>
<artifactId>domain</artifactId>
<artifactId>auth-server</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>domain-common</artifactId>
<artifactId>auth-core</artifactId>
<packaging>jar</packaging>
<name>common-domain</name>
<url>https://maven.apache.org</url>
<name>auth-core</name>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- spring-security -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</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>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
</dependency>
<!-- knife4j -->
<dependency>
@ -63,6 +83,30 @@
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
</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>

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.domain.model.email.EmailSendInit;
import cn.bunny.services.domain.common.model.email.EmailSend;
import cn.bunny.services.domain.common.model.email.EmailSendInit;
import jakarta.mail.MessagingException;
import jakarta.mail.internet.MimeMessage;
import org.springframework.mail.javamail.JavaMailSenderImpl;
@ -14,8 +14,8 @@ import java.util.Properties;
/**
* 邮件发送工具
*/
public class MailSenderUtil {
private MailSenderUtil() {
public class MailSenderConfiguration {
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.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.domain.model.file.MinioFilePath;
import cn.bunny.domain.vo.result.ResultCodeEnum;
import cn.bunny.services.domain.common.vo.result.ResultCodeEnum;
import cn.bunny.services.domain.common.constant.MinioConstant;
import cn.bunny.services.domain.common.model.file.MinioFilePath;
import cn.bunny.services.exception.AuthCustomerException;
import io.minio.*;
import io.minio.messages.DeleteError;

View File

@ -1,7 +1,7 @@
package cn.bunny.services.context;
import cn.bunny.domain.vo.LoginVo;
import cn.bunny.services.domain.common.vo.LoginVo;
public class BaseContext {
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 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;

View File

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

View File

@ -1,4 +1,4 @@
package cn.bunny.domain.constant;
package cn.bunny.services.domain.common.constant;
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.List;

View File

@ -1,4 +1,4 @@
package cn.bunny.domain.constant;
package cn.bunny.services.domain.common.constant;
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.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 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 lombok.Getter;

View File

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

View File

@ -1,4 +1,4 @@
package cn.bunny.domain.enums;
package cn.bunny.services.domain.common.enums;
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.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.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.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.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 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 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.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 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 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 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 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 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.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 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 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.Data;

View File

@ -1,4 +1,4 @@
package cn.bunny.domain.vo.result;
package cn.bunny.services.domain.common.vo.result;
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 jakarta.validation.constraints.Min;

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