feat: 整理项目结构
This commit is contained in:
parent
c81783ba55
commit
c7e4b32674
|
@ -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>
|
|
@ -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;
|
|
@ -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;
|
|
@ -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;
|
|
@ -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;
|
|
@ -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;
|
|
@ -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;
|
|
@ -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;
|
|
@ -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;
|
|
@ -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;
|
|
@ -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;
|
|
@ -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;
|
|
@ -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;
|
|
@ -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);
|
||||
}
|
||||
}
|
|
@ -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;
|
|
@ -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;
|
|
@ -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;
|
|
@ -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);
|
||||
}
|
||||
|
|
@ -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;
|
|
@ -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;
|
|
@ -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;
|
|
@ -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;
|
|
@ -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);
|
||||
}
|
|
@ -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;
|
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 17 KiB |
|
@ -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("/**", "");
|
|
@ -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;
|
|
@ -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;
|
|
@ -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;
|
|
@ -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;
|
|
@ -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;
|
|
@ -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;
|
||||
}
|
||||
}
|
|
@ -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;
|
||||
}
|
||||
}
|
|
@ -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>
|
|
@ -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() {
|
||||
// 私有化构造器
|
||||
}
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package cn.bunny.services.utils.minio;
|
||||
package cn.bunny.services.config.minio;
|
||||
|
||||
import io.minio.BucketExistsArgs;
|
||||
import io.minio.MakeBucketArgs;
|
|
@ -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;
|
|
@ -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<>();
|
|
@ -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";
|
|
@ -1,4 +1,4 @@
|
|||
package cn.bunny.domain.constant;
|
||||
package cn.bunny.services.domain.common.constant;
|
||||
|
||||
import lombok.Data;
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package cn.bunny.domain.constant;
|
||||
package cn.bunny.services.domain.common.constant;
|
||||
|
||||
import lombok.Data;
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package cn.bunny.domain.constant;
|
||||
package cn.bunny.services.domain.common.constant;
|
||||
|
||||
import lombok.Data;
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package cn.bunny.domain.constant;
|
||||
package cn.bunny.services.domain.common.constant;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
|
@ -1,4 +1,4 @@
|
|||
package cn.bunny.domain.constant;
|
||||
package cn.bunny.services.domain.common.constant;
|
||||
|
||||
import lombok.Data;
|
||||
|
|
@ -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;
|
|
@ -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;
|
|
@ -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;
|
|
@ -1,4 +1,4 @@
|
|||
package cn.bunny.domain.enums;
|
||||
package cn.bunny.services.domain.common.enums;
|
||||
|
||||
import lombok.Getter;
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package cn.bunny.domain.enums;
|
||||
package cn.bunny.services.domain.common.enums;
|
||||
|
||||
|
||||
import lombok.Getter;
|
|
@ -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.*;
|
|
@ -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;
|
|
@ -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.*;
|
|
@ -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;
|
|
@ -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;
|
|
@ -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;
|
|
@ -1,4 +1,4 @@
|
|||
package cn.bunny.domain.model.file;
|
||||
package cn.bunny.services.domain.common.model.file;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
|
@ -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;
|
|
@ -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;
|
|
@ -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;
|
|
@ -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;
|
|
@ -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;
|
|
@ -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;
|
|
@ -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.*;
|
|
@ -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;
|
|
@ -1,4 +1,4 @@
|
|||
package cn.bunny.domain.vo.result;
|
||||
package cn.bunny.services.domain.common.vo.result;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
|
@ -1,4 +1,4 @@
|
|||
package cn.bunny.domain.vo.result;
|
||||
package cn.bunny.services.domain.common.vo.result;
|
||||
|
||||
import lombok.Getter;
|
||||
|
|
@ -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
Loading…
Reference in New Issue