Compare commits

...

4 Commits

4 changed files with 150 additions and 19 deletions

View File

@@ -0,0 +1,22 @@
package icu.sunway.ai_spring_example.Config;
import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.info.Info;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* OpenAPI配置类
*/
@Configuration
public class OpenApiConfig {
@Bean
public OpenAPI customOpenAPI() {
return new OpenAPI()
.info(new Info()
.title("Swagger API文档")
.version("1.0.0")
.description("查询 API 文档"));
}
}

View File

@@ -11,23 +11,21 @@ import org.springframework.security.web.SecurityFilterChain;
@EnableWebSecurity @EnableWebSecurity
public class SecurityConfig { public class SecurityConfig {
@Bean @Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http http
// 启用跨域配置 // 禁用默认的登录表单和HTTP基本认证
.cors(cors -> cors.configurationSource( .formLogin(form -> form.disable())
request -> new org.springframework.web.cors.CorsConfiguration().applyPermitDefaultValues())) .httpBasic(basic -> basic.disable())
// 禁用默认登录表单和HTTP基本认 // 允许所有请求通过,取消默认登录
.formLogin(form -> form.disable()) .authorizeHttpRequests((authz) -> authz
.httpBasic(basic -> basic.disable()) .anyRequest().permitAll())
// 允许所有请求通过,取消默认登录验证 // 禁用CSRF保护
.authorizeHttpRequests((authz) -> authz .csrf(csrf -> csrf.disable())
.anyRequest().permitAll()) // 设置会话创建策略为无状态
// 禁用CSRF保护 .sessionManagement(session -> session
.csrf(csrf -> csrf.disable()) .sessionCreationPolicy(SessionCreationPolicy.STATELESS));
// 设置会话创建策略为无状态
.sessionManagement(session -> session.sessionCreationPolicy(SessionCreationPolicy.STATELESS));
return http.build(); return http.build();
} }
} }

View File

@@ -1,4 +1,4 @@
package icu.sunway.ai_spring_example.Controllers; package icu.sunway.ai_spring_example.Controller.ExampleEntityController;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;

View File

@@ -0,0 +1,111 @@
package icu.sunway.ai_spring_example.Utils;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* 分页工具类
*/
public class PageUtils {
/**
* 默认页码
*/
public static final Integer DEFAULT_PAGE = 1;
/**
* 默认每页数量
*/
public static final Integer DEFAULT_LIMIT = 10;
/**
* 最大每页数量
*/
public static final Integer MAX_LIMIT = 100;
/**
* 分页结果类
*
* @param <T> 数据类型
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public static class PaginationResult<T> {
private Integer currentPage;
private Integer pageSize;
private Long totalItems;
private Integer totalPages;
private List<T> list;
}
/**
* 验证和调整分页参数
*
* @param page 页码
* @param limit 每页数量
* @return 调整后的分页参数数组 [page, limit]
*/
public static Integer[] validatePageParams(Integer page, Integer limit) {
// 验证页码
if (page == null || page < 1) {
page = DEFAULT_PAGE;
}
// 验证每页数量
if (limit == null || limit < 1 || limit > MAX_LIMIT) {
limit = DEFAULT_LIMIT;
}
return new Integer[] { page, limit };
}
/**
* 创建Page对象
*
* @param page 页码
* @param limit 每页数量
* @return Page对象
*/
public static <T> Page<T> createPage(Integer page, Integer limit) {
Integer[] params = validatePageParams(page, limit);
return new Page<>(params[0], params[1]);
}
/**
* 将MyBatis Plus的Page结果转换为分页结果
*
* @param pageResult MyBatis Plus的Page结果
* @return 分页结果
*/
public static <T> PaginationResult<T> createPaginationResult(IPage<T> pageResult) {
return new PaginationResult<>(
(int) pageResult.getCurrent(),
(int) pageResult.getSize(),
pageResult.getTotal(),
(int) pageResult.getPages(),
pageResult.getRecords());
}
/**
* 创建空的分页结果
*
* @param page 页码
* @param limit 每页数量
* @return 空的分页结果
*/
public static <T> PaginationResult<T> createEmptyPaginationResult(Integer page, Integer limit) {
Integer[] params = validatePageParams(page, limit);
return new PaginationResult<>(
params[0],
params[1],
0L,
0,
List.of());
}
}