refactor: 更新查询对象类,调整基础查询类继承关系并优化代码结构

This commit is contained in:
Ray.Hao
2026-01-09 00:06:33 +08:00
parent d94b8207a0
commit 7ac74e1657
61 changed files with 304 additions and 477 deletions

View File

10
pom.xml
View File

@@ -62,6 +62,8 @@
<!-- 阿里 TransmittableThreadLocal (支持异步场景的ThreadLocal传递) --> <!-- 阿里 TransmittableThreadLocal (支持异步场景的ThreadLocal传递) -->
<transmittable-thread-local.version>2.14.5</transmittable-thread-local.version> <transmittable-thread-local.version>2.14.5</transmittable-thread-local.version>
<spring-ai-openai.version>1.1.2</spring-ai-openai.version>
</properties> </properties>
<dependencies> <dependencies>
@@ -281,13 +283,7 @@
<dependency> <dependency>
<groupId>org.springframework.ai</groupId> <groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-starter-model-openai</artifactId> <artifactId>spring-ai-starter-model-openai</artifactId>
<version>1.1.2</version> <version>${spring-ai-openai.version}</version>
</dependency>
<dependency>
<groupId>com.dameng</groupId>
<artifactId>DmJdbcDriver8</artifactId>
<version>8.1.4.181</version>
</dependency> </dependency>
</dependencies> </dependencies>

View File

@@ -2,7 +2,6 @@ package com.youlai.boot;
import org.springframework.boot.SpringApplication; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.properties.ConfigurationPropertiesScan;
/** /**
* 应用启动类 * 应用启动类

View File

@@ -1,29 +0,0 @@
package com.youlai.boot.common.base;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
/**
* 基础分页请求对象
*
* @author haoxr
* @since 2021/2/28
*/
@Data
@Schema
public class BasePageQuery implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
@Schema(description = "页码", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
private int pageNum = 1;
@Schema(description = "每页记录数", requiredMode = Schema.RequiredMode.REQUIRED, example = "10")
private int pageSize = 10;
}

View File

@@ -0,0 +1,33 @@
package com.youlai.boot.common.base;
import com.youlai.boot.common.annotation.ValidField;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
@Data
@Schema
public class BaseQuery implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
@Schema(description = "页码", requiredMode = Schema.RequiredMode.NOT_REQUIRED, example = "1")
private Integer pageNum = 1;
@Schema(description = "每页记录数", requiredMode = Schema.RequiredMode.NOT_REQUIRED, example = "10")
private Integer pageSize = 10;
@Schema(description = "排序字段", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
@ValidField(allowedValues = {"create_time", "update_time"})
private String sortBy;
@Schema(description = "排序方式(正序:ASC反序:DESC", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
private String order;
public boolean isPaged() {
return pageNum != null && pageSize != null && pageSize > 0;
}
}

View File

@@ -1,15 +1,17 @@
package com.youlai.boot.core.web; package com.youlai.boot.core.web;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.Data; import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
import java.util.Collections;
import java.util.List; import java.util.List;
/** /**
* 分页响应结构体 * 分页响应结构体
* *
* @author Ray * @author Ray.Hao
* @since 2022/2/18 * @since 2022/2/18
*/ */
@Data @Data
@@ -17,30 +19,63 @@ public class PageResult<T> implements Serializable {
private String code; private String code;
private Data<T> data;
private String msg; private String msg;
private List<T> data;
/**
* 分页元信息;非分页接口不显示此字段
*/
@JsonInclude(JsonInclude.Include.NON_NULL)
private Page page;
/**
* 构建分页结果MyBatis-Plus {@link IPage})。
*
* <p>data 为当前页记录列表page 提供分页元信息。</p>
*/
public static <T> PageResult<T> success(IPage<T> page) { public static <T> PageResult<T> success(IPage<T> page) {
PageResult<T> result = new PageResult<>(); PageResult<T> result = new PageResult<>();
result.setCode(ResultCode.SUCCESS.getCode()); result.setCode(ResultCode.SUCCESS.getCode());
Data<T> data = new Data<>();
data.setList(page.getRecords());
data.setTotal(page.getTotal());
result.setData(data);
result.setMsg(ResultCode.SUCCESS.getMsg()); result.setMsg(ResultCode.SUCCESS.getMsg());
List<T> records =
(page == null || page.getRecords() == null)
? Collections.emptyList()
: page.getRecords();
result.setData(records);
Page pageMeta = new Page();
pageMeta.setPageNum(page != null ? page.getCurrent() : 1L);
pageMeta.setPageSize(page != null ? page.getSize() : 0L);
pageMeta.setTotal(page != null ? page.getTotal() : 0L);
result.setPage(pageMeta);
return result; return result;
} }
@lombok.Data /**
public static class Data<T> { * 构建列表结果(无分页)。
*
* <p>page 置为 null用于与分页返回区分。</p>
*/
public static <T> PageResult<T> success(List<T> list) {
PageResult<T> result = new PageResult<>();
result.setCode(ResultCode.SUCCESS.getCode());
result.setMsg(ResultCode.SUCCESS.getMsg());
result.setData(list != null ? list : Collections.emptyList());
result.setPage(null);
return result;
}
private List<T> list; @Data
public static class Page {
private long pageNum;
private long pageSize;
private long total; private long total;
} }
} }

View File

@@ -8,7 +8,7 @@ import java.io.Serializable;
/** /**
* 统一响应结构体 * 统一响应结构体
* *
* @author Ray * @author Ray.Hao
* @since 2022/1/30 * @since 2022/1/30
**/ **/
@Data @Data
@@ -76,7 +76,4 @@ public class Result<T> implements Serializable {
return result; return result;
} }
public static boolean isSuccess(Result<?> result) {
return result != null && ResultCode.SUCCESS.getCode().equals(result.getCode());
}
} }

View File

@@ -6,7 +6,7 @@ import com.youlai.boot.core.web.Result;
import com.youlai.boot.platform.ai.model.dto.AiExecuteRequestDTO; import com.youlai.boot.platform.ai.model.dto.AiExecuteRequestDTO;
import com.youlai.boot.platform.ai.model.dto.AiParseRequestDTO; import com.youlai.boot.platform.ai.model.dto.AiParseRequestDTO;
import com.youlai.boot.platform.ai.model.dto.AiParseResponseDTO; import com.youlai.boot.platform.ai.model.dto.AiParseResponseDTO;
import com.youlai.boot.platform.ai.model.query.AiAssistantPageQuery; import com.youlai.boot.platform.ai.model.query.AiAssistantQuery;
import com.youlai.boot.platform.ai.model.vo.AiAssistantRecordVO; import com.youlai.boot.platform.ai.model.vo.AiAssistantRecordVO;
import com.youlai.boot.platform.ai.service.AiAssistantRecordService; import com.youlai.boot.platform.ai.service.AiAssistantRecordService;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
@@ -76,7 +76,7 @@ public class AiAssistantController {
@Operation(summary = "获取 AI 命令记录分页列表") @Operation(summary = "获取 AI 命令记录分页列表")
@GetMapping("/records") @GetMapping("/records")
public PageResult<AiAssistantRecordVO> getRecordPage(AiAssistantPageQuery queryParams) { public PageResult<AiAssistantRecordVO> getRecordPage(AiAssistantQuery queryParams) {
IPage<AiAssistantRecordVO> page = aiAssistantRecordService.getRecordPage(queryParams); IPage<AiAssistantRecordVO> page = aiAssistantRecordService.getRecordPage(queryParams);
return PageResult.success(page); return PageResult.success(page);
} }

View File

@@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.youlai.boot.platform.ai.model.entity.AiAssistantRecord; import com.youlai.boot.platform.ai.model.entity.AiAssistantRecord;
import com.youlai.boot.platform.ai.model.query.AiAssistantPageQuery; import com.youlai.boot.platform.ai.model.query.AiAssistantQuery;
import com.youlai.boot.platform.ai.model.vo.AiAssistantRecordVO; import com.youlai.boot.platform.ai.model.vo.AiAssistantRecordVO;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
@@ -18,5 +18,5 @@ public interface AiAssistantRecordMapper extends BaseMapper<AiAssistantRecord> {
* @param queryParams 查询参数 * @param queryParams 查询参数
* @return 分页结果 * @return 分页结果
*/ */
IPage<AiAssistantRecordVO> getRecordPage(Page<AiAssistantRecordVO> page, AiAssistantPageQuery queryParams); IPage<AiAssistantRecordVO> getRecordPage(Page<AiAssistantRecordVO> page, AiAssistantQuery queryParams);
} }

View File

@@ -1,6 +1,6 @@
package com.youlai.boot.platform.ai.model.query; package com.youlai.boot.platform.ai.model.query;
import com.youlai.boot.common.base.BasePageQuery; import com.youlai.boot.common.base.BaseQuery;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
@@ -16,7 +16,7 @@ import java.util.List;
@Schema(description = "AI 助手行为记录分页查询对象") @Schema(description = "AI 助手行为记录分页查询对象")
@Getter @Getter
@Setter @Setter
public class AiAssistantPageQuery extends BasePageQuery { public class AiAssistantPageQuery extends BaseQuery {
@Schema(description = "关键字(原始命令/函数名称/用户名)") @Schema(description = "关键字(原始命令/函数名称/用户名)")
private String keywords; private String keywords;

View File

@@ -0,0 +1,44 @@
package com.youlai.boot.platform.ai.model.query;
import com.youlai.boot.common.base.BaseQuery;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter;
import lombok.Setter;
import java.util.List;
/**
* AI 助手行为记录查询对象
*
* @author Ray.Hao
* @since 3.0.0
*/
@Schema(description = "AI 助手行为记录查询对象")
@Getter
@Setter
public class AiAssistantQuery extends BaseQuery {
@Schema(description = "关键字(原始命令/函数名称/用户名)")
private String keywords;
@Schema(description = "执行状态(0-待执行, 1-成功, -1-失败)")
private Integer executeStatus;
@Schema(description = "用户ID")
private Long userId;
@Schema(description = "解析状态(0-失败, 1-成功)")
private Integer parseStatus;
@Schema(description = "创建时间范围")
private List<String> createTime;
@Schema(description = "函数名称")
private String functionName;
@Schema(description = "AI供应商")
private String aiProvider;
@Schema(description = "AI模型")
private String aiModel;
}

View File

@@ -6,7 +6,7 @@ import com.youlai.boot.platform.ai.model.dto.AiExecuteRequestDTO;
import com.youlai.boot.platform.ai.model.dto.AiParseRequestDTO; import com.youlai.boot.platform.ai.model.dto.AiParseRequestDTO;
import com.youlai.boot.platform.ai.model.dto.AiParseResponseDTO; import com.youlai.boot.platform.ai.model.dto.AiParseResponseDTO;
import com.youlai.boot.platform.ai.model.entity.AiAssistantRecord; import com.youlai.boot.platform.ai.model.entity.AiAssistantRecord;
import com.youlai.boot.platform.ai.model.query.AiAssistantPageQuery; import com.youlai.boot.platform.ai.model.query.AiAssistantQuery;
import com.youlai.boot.platform.ai.model.vo.AiAssistantRecordVO; import com.youlai.boot.platform.ai.model.vo.AiAssistantRecordVO;
import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
@@ -47,7 +47,7 @@ public interface AiAssistantRecordService extends IService<AiAssistantRecord> {
* @param queryParams 查询参数 * @param queryParams 查询参数
* @return 分页列表 * @return 分页列表
*/ */
IPage<AiAssistantRecordVO> getRecordPage(AiAssistantPageQuery queryParams); IPage<AiAssistantRecordVO> getRecordPage(AiAssistantQuery queryParams);
/** /**
* 删除 AI 助手行为记录。 * 删除 AI 助手行为记录。

View File

@@ -15,7 +15,7 @@ import com.youlai.boot.platform.ai.model.dto.AiFunctionCallDTO;
import com.youlai.boot.platform.ai.model.dto.AiParseRequestDTO; import com.youlai.boot.platform.ai.model.dto.AiParseRequestDTO;
import com.youlai.boot.platform.ai.model.dto.AiParseResponseDTO; import com.youlai.boot.platform.ai.model.dto.AiParseResponseDTO;
import com.youlai.boot.platform.ai.model.entity.AiAssistantRecord; import com.youlai.boot.platform.ai.model.entity.AiAssistantRecord;
import com.youlai.boot.platform.ai.model.query.AiAssistantPageQuery; import com.youlai.boot.platform.ai.model.query.AiAssistantQuery;
import com.youlai.boot.platform.ai.model.vo.AiAssistantRecordVO; import com.youlai.boot.platform.ai.model.vo.AiAssistantRecordVO;
import com.youlai.boot.platform.ai.service.AiAssistantRecordService; import com.youlai.boot.platform.ai.service.AiAssistantRecordService;
import com.youlai.boot.platform.ai.tools.UserTools; import com.youlai.boot.platform.ai.tools.UserTools;
@@ -294,13 +294,16 @@ public class AiAssistantRecordServiceImpl
} }
@Override @Override
public IPage<AiAssistantRecordVO> getRecordPage(AiAssistantPageQuery queryParams) { public IPage<AiAssistantRecordVO> getRecordPage(AiAssistantQuery queryParams) {
Page<AiAssistantRecordVO> page = new Page<>(queryParams.getPageNum(), queryParams.getPageSize()); Page<AiAssistantRecordVO> page = new Page<>(queryParams.getPageNum(), queryParams.getPageSize());
return this.baseMapper.getRecordPage(page, queryParams); return this.baseMapper.getRecordPage(page, queryParams);
} }
@Override @Override
public boolean deleteRecords(List<Long> ids) { public boolean deleteRecords(List<Long> ids) {
if (ids == null || ids.isEmpty()) {
return true;
}
return this.removeByIds(ids); return this.removeByIds(ids);
} }

View File

@@ -7,7 +7,7 @@ import com.youlai.boot.config.property.CodegenProperties;
import com.youlai.boot.common.enums.LogModuleEnum; import com.youlai.boot.common.enums.LogModuleEnum;
import com.youlai.boot.platform.codegen.service.CodegenService; import com.youlai.boot.platform.codegen.service.CodegenService;
import com.youlai.boot.platform.codegen.model.form.GenConfigForm; import com.youlai.boot.platform.codegen.model.form.GenConfigForm;
import com.youlai.boot.platform.codegen.model.query.TablePageQuery; import com.youlai.boot.platform.codegen.model.query.TableQuery;
import com.youlai.boot.platform.codegen.model.vo.CodegenPreviewVO; import com.youlai.boot.platform.codegen.model.vo.CodegenPreviewVO;
import com.youlai.boot.platform.codegen.model.vo.TablePageVO; import com.youlai.boot.platform.codegen.model.vo.TablePageVO;
import com.youlai.boot.common.annotation.Log; import com.youlai.boot.common.annotation.Log;
@@ -44,10 +44,10 @@ public class CodegenController {
private final CodegenProperties codegenProperties; private final CodegenProperties codegenProperties;
@Operation(summary = "获取数据表分页列表") @Operation(summary = "获取数据表分页列表")
@GetMapping("/table/page") @GetMapping("/table")
@Log(value = "代码生成分页列表", module = LogModuleEnum.OTHER) @Log(value = "代码生成分页列表", module = LogModuleEnum.OTHER)
public PageResult<TablePageVO> getTablePage( public PageResult<TablePageVO> getTablePage(
TablePageQuery queryParams TableQuery queryParams
) { ) {
Page<TablePageVO> result = codegenService.getTablePage(queryParams); Page<TablePageVO> result = codegenService.getTablePage(queryParams);
return PageResult.success(result); return PageResult.success(result);

View File

@@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.youlai.boot.platform.codegen.model.bo.ColumnMetaData; import com.youlai.boot.platform.codegen.model.bo.ColumnMetaData;
import com.youlai.boot.platform.codegen.model.bo.TableMetaData; import com.youlai.boot.platform.codegen.model.bo.TableMetaData;
import com.youlai.boot.platform.codegen.model.query.TablePageQuery; import com.youlai.boot.platform.codegen.model.query.TableQuery;
import com.youlai.boot.platform.codegen.model.vo.TablePageVO; import com.youlai.boot.platform.codegen.model.vo.TablePageVO;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
@@ -27,7 +27,7 @@ public interface DatabaseMapper extends BaseMapper {
* @param queryParams * @param queryParams
* @return * @return
*/ */
Page<TablePageVO> getTablePage(Page<TablePageVO> page, TablePageQuery queryParams); Page<TablePageVO> getTablePage(Page<TablePageVO> page, TableQuery queryParams);
/** /**
* 获取表字段列表 * 获取表字段列表

View File

@@ -1,7 +1,7 @@
package com.youlai.boot.platform.codegen.model.query; package com.youlai.boot.platform.codegen.model.query;
import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnore;
import com.youlai.boot.common.base.BasePageQuery; import com.youlai.boot.common.base.BaseQuery;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
@@ -17,7 +17,7 @@ import java.util.List;
@Schema(description = "数据表分页查询对象") @Schema(description = "数据表分页查询对象")
@Getter @Getter
@Setter @Setter
public class TablePageQuery extends BasePageQuery { public class TablePageQuery extends BaseQuery {
@Schema(description="关键字(表名)") @Schema(description="关键字(表名)")
private String keywords; private String keywords;

View File

@@ -0,0 +1,31 @@
package com.youlai.boot.platform.codegen.model.query;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.youlai.boot.common.base.BaseQuery;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter;
import lombok.Setter;
import java.util.List;
/**
* 数据表查询对象
*
* @author Ray
* @since 2.10.0
*/
@Schema(description = "数据表查询对象")
@Getter
@Setter
public class TableQuery extends BaseQuery {
@Schema(description="关键字(表名)")
private String keywords;
/**
* 排除的表名
*/
@JsonIgnore
private List<String> excludeTables;
}

View File

@@ -1,7 +1,7 @@
package com.youlai.boot.platform.codegen.service; package com.youlai.boot.platform.codegen.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.youlai.boot.platform.codegen.model.query.TablePageQuery; import com.youlai.boot.platform.codegen.model.query.TableQuery;
import com.youlai.boot.platform.codegen.model.vo.CodegenPreviewVO; import com.youlai.boot.platform.codegen.model.vo.CodegenPreviewVO;
import com.youlai.boot.platform.codegen.model.vo.TablePageVO; import com.youlai.boot.platform.codegen.model.vo.TablePageVO;
@@ -21,7 +21,7 @@ public interface CodegenService {
* @param queryParams 查询参数 * @param queryParams 查询参数
* @return * @return
*/ */
Page<TablePageVO> getTablePage(TablePageQuery queryParams); Page<TablePageVO> getTablePage(TableQuery queryParams);
/** /**
* 获取预览生成代码 * 获取预览生成代码

View File

@@ -20,7 +20,7 @@ import com.youlai.boot.core.exception.BusinessException;
import com.youlai.boot.platform.codegen.mapper.DatabaseMapper; import com.youlai.boot.platform.codegen.mapper.DatabaseMapper;
import com.youlai.boot.platform.codegen.model.entity.GenTable; import com.youlai.boot.platform.codegen.model.entity.GenTable;
import com.youlai.boot.platform.codegen.model.entity.GenTableColumn; import com.youlai.boot.platform.codegen.model.entity.GenTableColumn;
import com.youlai.boot.platform.codegen.model.query.TablePageQuery; import com.youlai.boot.platform.codegen.model.query.TableQuery;
import com.youlai.boot.platform.codegen.model.vo.CodegenPreviewVO; import com.youlai.boot.platform.codegen.model.vo.CodegenPreviewVO;
import com.youlai.boot.platform.codegen.model.vo.TablePageVO; import com.youlai.boot.platform.codegen.model.vo.TablePageVO;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
@@ -61,7 +61,7 @@ public class CodegenServiceImpl implements CodegenService {
* @param queryParams 查询参数 * @param queryParams 查询参数
* @return 分页结果 * @return 分页结果
*/ */
public Page<TablePageVO> getTablePage(TablePageQuery queryParams) { public Page<TablePageVO> getTablePage(TableQuery queryParams) {
Page<TablePageVO> page = new Page<>(queryParams.getPageNum(), queryParams.getPageSize()); Page<TablePageVO> page = new Page<>(queryParams.getPageNum(), queryParams.getPageSize());
// 设置排除的表 // 设置排除的表
List<String> excludeTables = codegenProperties.getExcludeTables(); List<String> excludeTables = codegenProperties.getExcludeTables();

View File

@@ -6,7 +6,7 @@ import com.youlai.boot.core.web.PageResult;
import com.youlai.boot.core.web.Result; import com.youlai.boot.core.web.Result;
import com.youlai.boot.common.annotation.Log; import com.youlai.boot.common.annotation.Log;
import com.youlai.boot.system.model.form.ConfigForm; import com.youlai.boot.system.model.form.ConfigForm;
import com.youlai.boot.system.model.query.ConfigPageQuery; import com.youlai.boot.system.model.query.ConfigQuery;
import com.youlai.boot.system.model.vo.ConfigVO; import com.youlai.boot.system.model.vo.ConfigVO;
import com.youlai.boot.system.service.ConfigService; import com.youlai.boot.system.service.ConfigService;
import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Parameter;
@@ -35,11 +35,11 @@ public class ConfigController {
private final ConfigService configService; private final ConfigService configService;
@Operation(summary = "系统配置分页列表") @Operation(summary = "系统配置分页列表")
@GetMapping("/page") @GetMapping
@PreAuthorize("@ss.hasPerm('sys:config:list')") @PreAuthorize("@ss.hasPerm('sys:config:list')")
@Log( value = "系统配置分页列表",module = LogModuleEnum.SETTING) @Log( value = "系统配置分页列表",module = LogModuleEnum.SETTING)
public PageResult<ConfigVO> page(@ParameterObject ConfigPageQuery configPageQuery) { public PageResult<ConfigVO> page(@ParameterObject ConfigQuery queryParams) {
IPage<ConfigVO> result = configService.page(configPageQuery); IPage<ConfigVO> result = configService.page(queryParams);
return PageResult.success(result); return PageResult.success(result);
} }

View File

@@ -6,8 +6,8 @@ import com.youlai.boot.core.web.PageResult;
import com.youlai.boot.core.web.Result; import com.youlai.boot.core.web.Result;
import com.youlai.boot.common.enums.LogModuleEnum; import com.youlai.boot.common.enums.LogModuleEnum;
import com.youlai.boot.system.model.form.DictItemForm; import com.youlai.boot.system.model.form.DictItemForm;
import com.youlai.boot.system.model.query.DictItemPageQuery; import com.youlai.boot.system.model.query.DictItemQuery;
import com.youlai.boot.system.model.query.DictPageQuery; import com.youlai.boot.system.model.query.DictQuery;
import com.youlai.boot.system.model.vo.DictItemOptionVO; import com.youlai.boot.system.model.vo.DictItemOptionVO;
import com.youlai.boot.system.model.vo.DictItemPageVO; import com.youlai.boot.system.model.vo.DictItemPageVO;
import com.youlai.boot.system.model.vo.DictPageVO; import com.youlai.boot.system.model.vo.DictPageVO;
@@ -48,10 +48,10 @@ public class DictController {
// 字典相关接口 // 字典相关接口
//--------------------------------------------------- //---------------------------------------------------
@Operation(summary = "字典分页列表") @Operation(summary = "字典分页列表")
@GetMapping("/page") @GetMapping
@Log( value = "字典分页列表",module = LogModuleEnum.DICT) @Log( value = "字典分页列表",module = LogModuleEnum.DICT)
public PageResult<DictPageVO> getDictPage( public PageResult<DictPageVO> getDictPage(
DictPageQuery queryParams DictQuery queryParams
) { ) {
Page<DictPageVO> result = dictService.getDictPage(queryParams); Page<DictPageVO> result = dictService.getDictPage(queryParams);
return PageResult.success(result); return PageResult.success(result);
@@ -59,7 +59,7 @@ public class DictController {
@Operation(summary = "字典列表") @Operation(summary = "字典列表")
@GetMapping @GetMapping("/options")
public Result<List<Option<String>>> getDictList() { public Result<List<Option<String>>> getDictList() {
List<Option<String>> list = dictService.getDictList(); List<Option<String>> list = dictService.getDictList();
return Result.success(list); return Result.success(list);
@@ -126,10 +126,10 @@ public class DictController {
// 字典项相关接口 // 字典项相关接口
//--------------------------------------------------- //---------------------------------------------------
@Operation(summary = "字典项分页列表") @Operation(summary = "字典项分页列表")
@GetMapping("/{dictCode}/items/page") @GetMapping("/{dictCode}/items")
public PageResult<DictItemPageVO> getDictItemPage( public PageResult<DictItemPageVO> getDictItemPage(
@PathVariable String dictCode, @PathVariable String dictCode,
DictItemPageQuery queryParams DictItemQuery queryParams
) { ) {
queryParams.setDictCode(dictCode); queryParams.setDictCode(dictCode);
Page<DictItemPageVO> result = dictItemService.getDictItemPage(queryParams); Page<DictItemPageVO> result = dictItemService.getDictItemPage(queryParams);
@@ -137,7 +137,7 @@ public class DictController {
} }
@Operation(summary = "字典项列表") @Operation(summary = "字典项列表")
@GetMapping("/{dictCode}/items") @GetMapping("/{dictCode}/items/options")
public Result<List<DictItemOptionVO>> getDictItems( public Result<List<DictItemOptionVO>> getDictItems(
@Parameter(description = "字典编码") @PathVariable String dictCode @Parameter(description = "字典编码") @PathVariable String dictCode
) { ) {

View File

@@ -2,7 +2,7 @@ package com.youlai.boot.system.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.youlai.boot.core.web.PageResult; import com.youlai.boot.core.web.PageResult;
import com.youlai.boot.system.model.query.LogPageQuery; import com.youlai.boot.system.model.query.LogQuery;
import com.youlai.boot.system.model.vo.LogPageVO; import com.youlai.boot.system.model.vo.LogPageVO;
import com.youlai.boot.system.service.LogService; import com.youlai.boot.system.service.LogService;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
@@ -25,9 +25,9 @@ public class LogController {
private final LogService logService; private final LogService logService;
@Operation(summary = "日志分页列表") @Operation(summary = "日志分页列表")
@GetMapping("/page") @GetMapping
public PageResult<LogPageVO> getLogPage( public PageResult<LogPageVO> getLogPage(
LogPageQuery queryParams LogQuery queryParams
) { ) {
Page<LogPageVO> result = logService.getLogPage(queryParams); Page<LogPageVO> result = logService.getLogPage(queryParams);
return PageResult.success(result); return PageResult.success(result);

View File

@@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.youlai.boot.core.web.PageResult; import com.youlai.boot.core.web.PageResult;
import com.youlai.boot.core.web.Result; import com.youlai.boot.core.web.Result;
import com.youlai.boot.system.model.form.NoticeForm; import com.youlai.boot.system.model.form.NoticeForm;
import com.youlai.boot.system.model.query.NoticePageQuery; import com.youlai.boot.system.model.query.NoticeQuery;
import com.youlai.boot.system.model.vo.NoticeDetailVO; import com.youlai.boot.system.model.vo.NoticeDetailVO;
import com.youlai.boot.system.model.vo.NoticePageVO; import com.youlai.boot.system.model.vo.NoticePageVO;
import com.youlai.boot.system.model.vo.UserNoticePageVO; import com.youlai.boot.system.model.vo.UserNoticePageVO;
@@ -36,9 +36,9 @@ public class NoticeController {
private final UserNoticeService userNoticeService; private final UserNoticeService userNoticeService;
@Operation(summary = "通知公告分页列表") @Operation(summary = "通知公告分页列表")
@GetMapping("/page") @GetMapping
@PreAuthorize("@ss.hasPerm('sys:notice:list')") @PreAuthorize("@ss.hasPerm('sys:notice:list')")
public PageResult<NoticePageVO> getNoticePage(NoticePageQuery queryParams) { public PageResult<NoticePageVO> getNoticePage(NoticeQuery queryParams) {
IPage<NoticePageVO> result = noticeService.getNoticePage(queryParams); IPage<NoticePageVO> result = noticeService.getNoticePage(queryParams);
return PageResult.success(result); return PageResult.success(result);
} }
@@ -121,7 +121,7 @@ public class NoticeController {
@Operation(summary = "获取我的通知公告分页列表") @Operation(summary = "获取我的通知公告分页列表")
@GetMapping("/my") @GetMapping("/my")
public PageResult<UserNoticePageVO> getMyNoticePage( public PageResult<UserNoticePageVO> getMyNoticePage(
NoticePageQuery queryParams NoticeQuery queryParams
) { ) {
IPage<UserNoticePageVO> result = noticeService.getMyNoticePage(queryParams); IPage<UserNoticePageVO> result = noticeService.getMyNoticePage(queryParams);
return PageResult.success(result); return PageResult.success(result);

View File

@@ -7,7 +7,7 @@ import com.youlai.boot.common.model.Option;
import com.youlai.boot.core.web.PageResult; import com.youlai.boot.core.web.PageResult;
import com.youlai.boot.core.web.Result; import com.youlai.boot.core.web.Result;
import com.youlai.boot.system.model.form.RoleForm; import com.youlai.boot.system.model.form.RoleForm;
import com.youlai.boot.system.model.query.RolePageQuery; import com.youlai.boot.system.model.query.RoleQuery;
import com.youlai.boot.system.model.vo.RolePageVO; import com.youlai.boot.system.model.vo.RolePageVO;
import com.youlai.boot.common.annotation.Log; import com.youlai.boot.common.annotation.Log;
import com.youlai.boot.system.service.RoleService; import com.youlai.boot.system.service.RoleService;
@@ -37,10 +37,10 @@ public class RoleController {
private final RoleService roleService; private final RoleService roleService;
@Operation(summary = "角色分页列表") @Operation(summary = "角色分页列表")
@GetMapping("/page") @GetMapping
@Log(value = "角色分页列表", module = LogModuleEnum.ROLE) @Log(value = "角色分页列表", module = LogModuleEnum.ROLE)
public PageResult<RolePageVO> getRolePage( public PageResult<RolePageVO> getRolePage(
RolePageQuery queryParams RoleQuery queryParams
) { ) {
Page<RolePageVO> result = roleService.getRolePage(queryParams); Page<RolePageVO> result = roleService.getRolePage(queryParams);
return PageResult.success(result); return PageResult.success(result);

View File

@@ -20,7 +20,7 @@ import java.time.LocalDate;
*/ */
@Tag(name = "11.统计分析") @Tag(name = "11.统计分析")
@RestController @RestController
@RequestMapping("/api/v1/statistics") @RequestMapping("/statistics")
@RequiredArgsConstructor @RequiredArgsConstructor
public class StatisticsController { public class StatisticsController {

View File

@@ -3,7 +3,6 @@ package com.youlai.boot.system.controller;
import cn.idev.excel.EasyExcel; import cn.idev.excel.EasyExcel;
import cn.idev.excel.ExcelWriter; import cn.idev.excel.ExcelWriter;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.youlai.boot.common.annotation.Log; import com.youlai.boot.common.annotation.Log;
import com.youlai.boot.common.annotation.RepeatSubmit; import com.youlai.boot.common.annotation.RepeatSubmit;
import com.youlai.boot.common.enums.LogModuleEnum; import com.youlai.boot.common.enums.LogModuleEnum;
@@ -18,7 +17,7 @@ import com.youlai.boot.system.model.dto.UserExportDTO;
import com.youlai.boot.system.model.dto.UserImportDTO; import com.youlai.boot.system.model.dto.UserImportDTO;
import com.youlai.boot.system.model.entity.User; import com.youlai.boot.system.model.entity.User;
import com.youlai.boot.system.model.form.*; import com.youlai.boot.system.model.form.*;
import com.youlai.boot.system.model.query.UserPageQuery; import com.youlai.boot.system.model.query.UserQuery;
import com.youlai.boot.system.model.dto.CurrentUserDTO; import com.youlai.boot.system.model.dto.CurrentUserDTO;
import com.youlai.boot.system.model.vo.UserPageVO; import com.youlai.boot.system.model.vo.UserPageVO;
import com.youlai.boot.system.model.vo.UserProfileVO; import com.youlai.boot.system.model.vo.UserProfileVO;
@@ -56,14 +55,13 @@ public class UserController {
private final UserService userService; private final UserService userService;
@Operation(summary = "用户分页列表") @Operation(summary = "用户列表")
@GetMapping("/page") @GetMapping
@Log(value = "用户分页列表", module = LogModuleEnum.USER) @Log(value = "用户列表", module = LogModuleEnum.USER)
public PageResult<UserPageVO> getUserPage( public PageResult<UserPageVO> getUserList(
@Valid UserPageQuery queryParams @Valid UserQuery queryParams
) { ) {
IPage<UserPageVO> result = userService.getUserPage(queryParams); return PageResult.success(userService.getUserPage(queryParams));
return PageResult.success(result);
} }
@Operation(summary = "新增用户") @Operation(summary = "新增用户")
@@ -168,7 +166,7 @@ public class UserController {
@GetMapping("/export") @GetMapping("/export")
@PreAuthorize("@ss.hasPerm('sys:user:export')") @PreAuthorize("@ss.hasPerm('sys:user:export')")
@Log(value = "导出用户", module = LogModuleEnum.USER) @Log(value = "导出用户", module = LogModuleEnum.USER)
public void exportUsers(UserPageQuery queryParams, HttpServletResponse response) throws IOException { public void exportUsers(UserQuery queryParams, HttpServletResponse response) throws IOException {
String fileName = "用户列表.xlsx"; String fileName = "用户列表.xlsx";
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode(fileName, StandardCharsets.UTF_8)); response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode(fileName, StandardCharsets.UTF_8));

View File

@@ -30,6 +30,8 @@ public interface UserConverter {
Page<UserPageVO> toPageVo(Page<UserBO> bo); Page<UserPageVO> toPageVo(Page<UserBO> bo);
List<UserPageVO> toPageVo(List<UserBO> bo);
UserForm toForm(User entity); UserForm toForm(User entity);
@InheritInverseConfiguration(name = "toForm") @InheritInverseConfiguration(name = "toForm")

View File

@@ -3,7 +3,7 @@ package com.youlai.boot.system.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.youlai.boot.system.model.entity.DictItem; import com.youlai.boot.system.model.entity.DictItem;
import com.youlai.boot.system.model.query.DictItemPageQuery; import com.youlai.boot.system.model.query.DictItemQuery;
import com.youlai.boot.system.model.vo.DictItemPageVO; import com.youlai.boot.system.model.vo.DictItemPageVO;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
@@ -19,7 +19,7 @@ public interface DictItemMapper extends BaseMapper<DictItem> {
/** /**
* 字典项分页列表 * 字典项分页列表
*/ */
Page<DictItemPageVO> getDictItemPage(Page<DictItemPageVO> page, DictItemPageQuery queryParams); Page<DictItemPageVO> getDictItemPage(Page<DictItemPageVO> page, DictItemQuery queryParams);
} }

View File

@@ -3,7 +3,7 @@ package com.youlai.boot.system.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.youlai.boot.system.model.entity.Dict; import com.youlai.boot.system.model.entity.Dict;
import com.youlai.boot.system.model.query.DictPageQuery; import com.youlai.boot.system.model.query.DictQuery;
import com.youlai.boot.system.model.vo.DictPageVO; import com.youlai.boot.system.model.vo.DictPageVO;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
@@ -23,7 +23,7 @@ public interface DictMapper extends BaseMapper<Dict> {
* @param queryParams 查询参数 * @param queryParams 查询参数
* @return 字典分页列表 * @return 字典分页列表
*/ */
Page<DictPageVO> getDictPage(Page<DictPageVO> page, DictPageQuery queryParams); Page<DictPageVO> getDictPage(Page<DictPageVO> page, DictQuery queryParams);
} }

View File

@@ -5,7 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.youlai.boot.system.model.bo.VisitCountBO; import com.youlai.boot.system.model.bo.VisitCountBO;
import com.youlai.boot.system.model.bo.VisitStatsBO; import com.youlai.boot.system.model.bo.VisitStatsBO;
import com.youlai.boot.system.model.entity.Log; import com.youlai.boot.system.model.entity.Log;
import com.youlai.boot.system.model.query.LogPageQuery; import com.youlai.boot.system.model.query.LogQuery;
import com.youlai.boot.system.model.vo.LogPageVO; import com.youlai.boot.system.model.vo.LogPageVO;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
@@ -24,7 +24,7 @@ public interface LogMapper extends BaseMapper<Log> {
/** /**
* 获取日志分页列表 * 获取日志分页列表
*/ */
Page<LogPageVO> getLogPage(Page<LogPageVO> page, LogPageQuery queryParams); Page<LogPageVO> getLogPage(Page<LogPageVO> page, LogQuery queryParams);
/** /**
* 统计浏览数(PV) * 统计浏览数(PV)

View File

@@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.youlai.boot.system.model.bo.NoticeBO; import com.youlai.boot.system.model.bo.NoticeBO;
import com.youlai.boot.system.model.entity.Notice; import com.youlai.boot.system.model.entity.Notice;
import com.youlai.boot.system.model.query.NoticePageQuery; import com.youlai.boot.system.model.query.NoticeQuery;
import com.youlai.boot.system.model.vo.NoticePageVO; import com.youlai.boot.system.model.vo.NoticePageVO;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
@@ -25,7 +25,7 @@ public interface NoticeMapper extends BaseMapper<Notice> {
* @param queryParams 查询参数 * @param queryParams 查询参数
* @return 通知公告分页数据 * @return 通知公告分页数据
*/ */
Page<NoticeBO> getNoticePage(Page<NoticePageVO> page, NoticePageQuery queryParams); Page<NoticeBO> getNoticePage(Page<NoticePageVO> page, NoticeQuery queryParams);
/** /**
* 获取阅读时通知公告详情 * 获取阅读时通知公告详情

View File

@@ -4,12 +4,13 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.youlai.boot.system.model.bo.UserBO; import com.youlai.boot.system.model.bo.UserBO;
import com.youlai.boot.system.model.entity.User; import com.youlai.boot.system.model.entity.User;
import com.youlai.boot.system.model.query.UserPageQuery; import com.youlai.boot.system.model.query.UserQuery;
import com.youlai.boot.system.model.form.UserForm; import com.youlai.boot.system.model.form.UserForm;
import com.youlai.boot.common.annotation.DataPermission; import com.youlai.boot.common.annotation.DataPermission;
import com.youlai.boot.security.model.UserAuthInfo; import com.youlai.boot.security.model.UserAuthInfo;
import com.youlai.boot.system.model.dto.UserExportDTO; import com.youlai.boot.system.model.dto.UserExportDTO;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List; import java.util.List;
@@ -30,7 +31,7 @@ public interface UserMapper extends BaseMapper<User> {
* @return 用户分页列表 * @return 用户分页列表
*/ */
@DataPermission(deptAlias = "u", userAlias = "u") @DataPermission(deptAlias = "u", userAlias = "u")
Page<UserBO> getUserPage(Page<UserBO> page, UserPageQuery queryParams); Page<UserBO> getUserPage(Page<UserBO> page, @Param("queryParams") UserQuery queryParams);
/** /**
* 获取用户表单详情 * 获取用户表单详情
@@ -83,7 +84,7 @@ public interface UserMapper extends BaseMapper<User> {
* @return 导出用户列表 * @return 导出用户列表
*/ */
@DataPermission(deptAlias = "u", userAlias = "u") @DataPermission(deptAlias = "u", userAlias = "u")
List<UserExportDTO> listExportUsers(UserPageQuery queryParams); List<UserExportDTO> listExportUsers(UserQuery queryParams);
/** /**
* 获取用户个人中心信息 * 获取用户个人中心信息

View File

@@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.youlai.boot.system.model.entity.UserNotice; import com.youlai.boot.system.model.entity.UserNotice;
import com.youlai.boot.system.model.query.NoticePageQuery; import com.youlai.boot.system.model.query.NoticeQuery;
import com.youlai.boot.system.model.vo.NoticePageVO; import com.youlai.boot.system.model.vo.NoticePageVO;
import com.youlai.boot.system.model.vo.UserNoticePageVO; import com.youlai.boot.system.model.vo.UserNoticePageVO;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
@@ -25,5 +25,5 @@ public interface UserNoticeMapper extends BaseMapper<UserNotice> {
* @param queryParams 查询参数 * @param queryParams 查询参数
* @return 通知公告分页列表 * @return 通知公告分页列表
*/ */
IPage<UserNoticePageVO> getMyNoticePage(Page<NoticePageVO> page, @Param("queryParams") NoticePageQuery queryParams); IPage<UserNoticePageVO> getMyNoticePage(Page<NoticePageVO> page, @Param("queryParams") NoticeQuery queryParams);
} }

View File

@@ -1,6 +1,6 @@
package com.youlai.boot.system.model.query; package com.youlai.boot.system.model.query;
import com.youlai.boot.common.base.BasePageQuery; import com.youlai.boot.common.base.BaseQuery;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
@@ -13,8 +13,8 @@ import lombok.Setter;
*/ */
@Getter @Getter
@Setter @Setter
@Schema(description = "系统配置分页查询") @Schema(description = "系统配置查询")
public class ConfigPageQuery extends BasePageQuery { public class ConfigQuery extends BaseQuery {
@Schema(description="关键字(配置项名称/配置项值)") @Schema(description="关键字(配置项名称/配置项值)")
private String keywords; private String keywords;

View File

@@ -1,15 +1,14 @@
package com.youlai.boot.system.model.query; package com.youlai.boot.system.model.query;
import com.youlai.boot.common.base.BaseQuery;
import com.youlai.boot.common.base.BasePageQuery;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
@Data @Data
@EqualsAndHashCode(callSuper = false) @EqualsAndHashCode(callSuper = false)
@Schema(description ="字典项分页查询对象") @Schema(description ="字典项查询对象")
public class DictItemPageQuery extends BasePageQuery { public class DictItemQuery extends BaseQuery {
@Schema(description="关键字(字典项值/字典项名称)") @Schema(description="关键字(字典项值/字典项名称)")
private String keywords; private String keywords;

View File

@@ -1,14 +1,14 @@
package com.youlai.boot.system.model.query; package com.youlai.boot.system.model.query;
import com.youlai.boot.common.base.BasePageQuery; import com.youlai.boot.common.base.BaseQuery;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
@Data @Data
@EqualsAndHashCode(callSuper = false) @EqualsAndHashCode(callSuper = false)
@Schema(description ="字典分页查询对象") @Schema(description ="字典查询对象")
public class DictPageQuery extends BasePageQuery { public class DictQuery extends BaseQuery {
@Schema(description="关键字(字典名称)") @Schema(description="关键字(字典名称)")
private String keywords; private String keywords;

View File

@@ -1,21 +1,22 @@
package com.youlai.boot.system.model.query; package com.youlai.boot.system.model.query;
import com.youlai.boot.common.base.BasePageQuery; import com.youlai.boot.common.base.BaseQuery;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import java.util.List; import java.util.List;
/** /**
* 日志分页查询对象 * 日志查询对象
* *
* @author Ray * @author Ray
* @since 2.10.0 * @since 2.10.0
*/ */
@Schema(description = "日志分页查询对象") @Schema(description = "日志查询对象")
@Getter @Getter
@Setter @Setter
public class LogPageQuery extends BasePageQuery { public class LogQuery extends BaseQuery {
@Schema(description="关键字(日志内容/请求路径/请求方法/地区/浏览器/终端系统)") @Schema(description="关键字(日志内容/请求路径/请求方法/地区/浏览器/终端系统)")
private String keywords; private String keywords;

View File

@@ -1,6 +1,6 @@
package com.youlai.boot.system.model.query; package com.youlai.boot.system.model.query;
import com.youlai.boot.common.base.BasePageQuery; import com.youlai.boot.common.base.BaseQuery;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
@@ -8,7 +8,7 @@ import lombok.EqualsAndHashCode;
import java.util.List; import java.util.List;
/** /**
* 通知公告分页查询对象 * 通知公告查询对象
* *
* @author youlaitech * @author youlaitech
* @since 2024-08-27 10:31 * @since 2024-08-27 10:31
@@ -16,7 +16,7 @@ import java.util.List;
@Data @Data
@EqualsAndHashCode(callSuper = false) @EqualsAndHashCode(callSuper = false)
@Schema(description ="通知公告查询对象") @Schema(description ="通知公告查询对象")
public class NoticePageQuery extends BasePageQuery { public class NoticeQuery extends BaseQuery {
@Schema(description = "通知标题") @Schema(description = "通知标题")
private String title; private String title;

View File

@@ -1,7 +1,7 @@
package com.youlai.boot.system.model.query; package com.youlai.boot.system.model.query;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import com.youlai.boot.common.base.BasePageQuery; import com.youlai.boot.common.base.BaseQuery;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
@@ -9,15 +9,15 @@ import lombok.Setter;
import java.time.LocalDateTime; import java.time.LocalDateTime;
/** /**
* 角色分页查询对象 * 角色查询对象
* *
* @author Ray * @author Ray
* @since 2022/6/3 * @since 2022/6/3
*/ */
@Schema(description = "角色分页查询对象") @Schema(description = "角色查询对象")
@Getter @Getter
@Setter @Setter
public class RolePageQuery extends BasePageQuery { public class RoleQuery extends BaseQuery {
@Schema(description="关键字(角色名称/角色编码)") @Schema(description="关键字(角色名称/角色编码)")
private String keywords; private String keywords;

View File

@@ -1,25 +1,17 @@
package com.youlai.boot.system.model.query; package com.youlai.boot.system.model.query;
import cn.hutool.db.sql.Direction;
import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnore;
import com.youlai.boot.common.base.BasePageQuery; import com.youlai.boot.common.base.BaseQuery;
import com.youlai.boot.common.annotation.ValidField;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import java.util.List; import java.util.List;
/**
* 用户分页查询对象
*
* @author haoxr
* @since 2022/1/14
*/
@Data @Data
@EqualsAndHashCode(callSuper = false) @EqualsAndHashCode(callSuper = false)
@Schema(description = "用户分页查询对象") @Schema(description = "用户查询对象")
public class UserPageQuery extends BasePageQuery { public class UserQuery extends BaseQuery {
@Schema(description = "关键字(用户名/昵称/手机号)") @Schema(description = "关键字(用户名/昵称/手机号)")
private String keywords; private String keywords;
@@ -36,18 +28,7 @@ public class UserPageQuery extends BasePageQuery {
@Schema(description = "创建时间范围") @Schema(description = "创建时间范围")
private List<String> createTime; private List<String> createTime;
@Schema(description = "排序的字段")
@ValidField(allowedValues = {"create_time", "update_time"})
private String field;
@Schema(description = "排序方式(正序:ASC反序:DESC")
private Direction direction;
/**
* 是否超级管理员
*/
@JsonIgnore @JsonIgnore
@Schema(hidden = true) @Schema(hidden = true)
private Boolean isRoot; private Boolean isRoot;
} }

View File

@@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.youlai.boot.system.model.entity.Config; import com.youlai.boot.system.model.entity.Config;
import com.youlai.boot.system.model.form.ConfigForm; import com.youlai.boot.system.model.form.ConfigForm;
import com.youlai.boot.system.model.query.ConfigPageQuery; import com.youlai.boot.system.model.query.ConfigQuery;
import com.youlai.boot.system.model.vo.ConfigVO; import com.youlai.boot.system.model.vo.ConfigVO;
/** /**
@@ -20,7 +20,7 @@ public interface ConfigService extends IService<Config> {
* @param sysConfigPageQuery 查询参数 * @param sysConfigPageQuery 查询参数
* @return 系统配置分页列表 * @return 系统配置分页列表
*/ */
IPage<ConfigVO> page(ConfigPageQuery sysConfigPageQuery); IPage<ConfigVO> page(ConfigQuery sysConfigPageQuery);
/** /**
* 保存系统配置 * 保存系统配置

View File

@@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.youlai.boot.system.model.entity.DictItem; import com.youlai.boot.system.model.entity.DictItem;
import com.youlai.boot.system.model.form.DictItemForm; import com.youlai.boot.system.model.form.DictItemForm;
import com.youlai.boot.system.model.query.DictItemPageQuery; import com.youlai.boot.system.model.query.DictItemQuery;
import com.youlai.boot.system.model.vo.DictItemOptionVO; import com.youlai.boot.system.model.vo.DictItemOptionVO;
import com.youlai.boot.system.model.vo.DictItemPageVO; import com.youlai.boot.system.model.vo.DictItemPageVO;
@@ -24,7 +24,7 @@ public interface DictItemService extends IService<DictItem> {
* @param queryParams 查询参数 * @param queryParams 查询参数
* @return 字典项分页列表 * @return 字典项分页列表
*/ */
Page<DictItemPageVO> getDictItemPage(DictItemPageQuery queryParams); Page<DictItemPageVO> getDictItemPage(DictItemQuery queryParams);
/** /**
* 获取字典项列表 * 获取字典项列表

View File

@@ -5,7 +5,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
import com.youlai.boot.common.model.Option; import com.youlai.boot.common.model.Option;
import com.youlai.boot.system.model.entity.Dict; import com.youlai.boot.system.model.entity.Dict;
import com.youlai.boot.system.model.form.DictForm; import com.youlai.boot.system.model.form.DictForm;
import com.youlai.boot.system.model.query.DictPageQuery; import com.youlai.boot.system.model.query.DictQuery;
import com.youlai.boot.system.model.vo.DictItemOptionVO; import com.youlai.boot.system.model.vo.DictItemOptionVO;
import com.youlai.boot.system.model.vo.DictPageVO; import com.youlai.boot.system.model.vo.DictPageVO;
@@ -25,7 +25,7 @@ public interface DictService extends IService<Dict> {
* @param queryParams 分页查询对象 * @param queryParams 分页查询对象
* @return 字典分页列表 * @return 字典分页列表
*/ */
Page<DictPageVO> getDictPage(DictPageQuery queryParams); Page<DictPageVO> getDictPage(DictQuery queryParams);
/** /**
* 获取字典列表 * 获取字典列表

View File

@@ -3,7 +3,7 @@ package com.youlai.boot.system.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.youlai.boot.system.model.entity.Log; import com.youlai.boot.system.model.entity.Log;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.youlai.boot.system.model.query.LogPageQuery; import com.youlai.boot.system.model.query.LogQuery;
import com.youlai.boot.system.model.vo.LogPageVO; import com.youlai.boot.system.model.vo.LogPageVO;
import com.youlai.boot.system.model.vo.VisitStatsVO; import com.youlai.boot.system.model.vo.VisitStatsVO;
import com.youlai.boot.system.model.vo.VisitTrendVO; import com.youlai.boot.system.model.vo.VisitTrendVO;
@@ -22,7 +22,7 @@ public interface LogService extends IService<Log> {
/** /**
* 获取日志分页列表 * 获取日志分页列表
*/ */
Page<LogPageVO> getLogPage(LogPageQuery queryParams); Page<LogPageVO> getLogPage(LogQuery queryParams);
/** /**

View File

@@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.youlai.boot.system.model.entity.Notice; import com.youlai.boot.system.model.entity.Notice;
import com.youlai.boot.system.model.form.NoticeForm; import com.youlai.boot.system.model.form.NoticeForm;
import com.youlai.boot.system.model.query.NoticePageQuery; import com.youlai.boot.system.model.query.NoticeQuery;
import com.youlai.boot.system.model.vo.NoticePageVO; import com.youlai.boot.system.model.vo.NoticePageVO;
import com.youlai.boot.system.model.vo.UserNoticePageVO; import com.youlai.boot.system.model.vo.UserNoticePageVO;
import com.youlai.boot.system.model.vo.NoticeDetailVO; import com.youlai.boot.system.model.vo.NoticeDetailVO;
@@ -22,7 +22,7 @@ public interface NoticeService extends IService<Notice> {
* *
* @return 通知公告分页列表 * @return 通知公告分页列表
*/ */
IPage<NoticePageVO> getNoticePage(NoticePageQuery queryParams); IPage<NoticePageVO> getNoticePage(NoticeQuery queryParams);
/** /**
* 获取通知公告表单数据 * 获取通知公告表单数据
@@ -87,5 +87,5 @@ public interface NoticeService extends IService<Notice> {
* @param queryParams 查询参数 * @param queryParams 查询参数
* @return 通知公告分页列表 * @return 通知公告分页列表
*/ */
IPage<UserNoticePageVO> getMyNoticePage(NoticePageQuery queryParams); IPage<UserNoticePageVO> getMyNoticePage(NoticeQuery queryParams);
} }

View File

@@ -6,7 +6,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
import com.youlai.boot.system.model.entity.Role; import com.youlai.boot.system.model.entity.Role;
import com.youlai.boot.common.model.Option; import com.youlai.boot.common.model.Option;
import com.youlai.boot.system.model.form.RoleForm; import com.youlai.boot.system.model.form.RoleForm;
import com.youlai.boot.system.model.query.RolePageQuery; import com.youlai.boot.system.model.query.RoleQuery;
import com.youlai.boot.system.model.vo.RolePageVO; import com.youlai.boot.system.model.vo.RolePageVO;
import java.util.List; import java.util.List;
@@ -26,7 +26,7 @@ public interface RoleService extends IService<Role> {
* @param queryParams * @param queryParams
* @return * @return
*/ */
Page<RolePageVO> getRolePage(RolePageQuery queryParams); Page<RolePageVO> getRolePage(RoleQuery queryParams);
/** /**

View File

@@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.youlai.boot.system.model.entity.UserNotice; import com.youlai.boot.system.model.entity.UserNotice;
import com.youlai.boot.system.model.query.NoticePageQuery; import com.youlai.boot.system.model.query.NoticeQuery;
import com.youlai.boot.system.model.vo.UserNoticePageVO; import com.youlai.boot.system.model.vo.UserNoticePageVO;
import com.youlai.boot.system.model.vo.NoticePageVO; import com.youlai.boot.system.model.vo.NoticePageVO;
@@ -31,5 +31,5 @@ public interface UserNoticeService extends IService<UserNotice> {
* @param queryParams 查询参数 * @param queryParams 查询参数
* @return 我的通知公告分页列表 * @return 我的通知公告分页列表
*/ */
IPage<UserNoticePageVO> getMyNoticePage(Page<NoticePageVO> page, NoticePageQuery queryParams); IPage<UserNoticePageVO> getMyNoticePage(Page<NoticePageVO> page, NoticeQuery queryParams);
} }

View File

@@ -7,7 +7,7 @@ import com.youlai.boot.security.model.UserAuthInfo;
import com.youlai.boot.system.model.dto.CurrentUserDTO; import com.youlai.boot.system.model.dto.CurrentUserDTO;
import com.youlai.boot.system.model.dto.UserExportDTO; import com.youlai.boot.system.model.dto.UserExportDTO;
import com.youlai.boot.system.model.entity.User; import com.youlai.boot.system.model.entity.User;
import com.youlai.boot.system.model.query.UserPageQuery; import com.youlai.boot.system.model.query.UserQuery;
import com.youlai.boot.system.model.vo.UserPageVO; import com.youlai.boot.system.model.vo.UserPageVO;
import com.youlai.boot.system.model.vo.UserProfileVO; import com.youlai.boot.system.model.vo.UserProfileVO;
import com.youlai.boot.system.model.form.*; import com.youlai.boot.system.model.form.*;
@@ -27,7 +27,7 @@ public interface UserService extends IService<User> {
* *
* @return {@link IPage<UserPageVo>} 用户分页列表 * @return {@link IPage<UserPageVo>} 用户分页列表
*/ */
IPage<UserPageVO> getUserPage(UserPageQuery queryParams); IPage<UserPageVO> getUserPage(UserQuery queryParams);
/** /**
* 获取用户表单数据 * 获取用户表单数据
@@ -84,7 +84,7 @@ public interface UserService extends IService<User> {
* @param queryParams 查询参数 * @param queryParams 查询参数
* @return {@link List<UserExportDto>} 导出用户列表 * @return {@link List<UserExportDto>} 导出用户列表
*/ */
List<UserExportDTO> listExportUsers(UserPageQuery queryParams); List<UserExportDTO> listExportUsers(UserQuery queryParams);
/** /**

View File

@@ -10,7 +10,7 @@ import com.youlai.boot.system.converter.ConfigConverter;
import com.youlai.boot.system.mapper.ConfigMapper; import com.youlai.boot.system.mapper.ConfigMapper;
import com.youlai.boot.system.model.entity.Config; import com.youlai.boot.system.model.entity.Config;
import com.youlai.boot.system.model.form.ConfigForm; import com.youlai.boot.system.model.form.ConfigForm;
import com.youlai.boot.system.model.query.ConfigPageQuery; import com.youlai.boot.system.model.query.ConfigQuery;
import com.youlai.boot.system.model.vo.ConfigVO; import com.youlai.boot.system.model.vo.ConfigVO;
import com.youlai.boot.system.service.ConfigService; import com.youlai.boot.system.service.ConfigService;
import com.youlai.boot.security.util.SecurityUtils; import com.youlai.boot.security.util.SecurityUtils;
@@ -50,13 +50,13 @@ public class ConfigServiceImpl extends ServiceImpl<ConfigMapper, Config> impleme
/** /**
* 分页查询系统配置 * 分页查询系统配置
* *
* @param configPageQuery 查询参数 * @param queryParams 查询参数
* @return 系统配置分页列表 * @return 系统配置分页列表
*/ */
@Override @Override
public IPage<ConfigVO> page(ConfigPageQuery configPageQuery) { public IPage<ConfigVO> page(ConfigQuery queryParams) {
Page<Config> page = new Page<>(configPageQuery.getPageNum(), configPageQuery.getPageSize()); Page<Config> page = new Page<>(queryParams.getPageNum(), queryParams.getPageSize());
String keywords = configPageQuery.getKeywords(); String keywords = queryParams.getKeywords();
LambdaQueryWrapper<Config> query = new LambdaQueryWrapper<Config>() LambdaQueryWrapper<Config> query = new LambdaQueryWrapper<Config>()
.and(StringUtils.isNotBlank(keywords), .and(StringUtils.isNotBlank(keywords),
q -> q.like(Config::getConfigKey, keywords) q -> q.like(Config::getConfigKey, keywords)

View File

@@ -7,7 +7,7 @@ import com.youlai.boot.system.converter.DictItemConverter;
import com.youlai.boot.system.mapper.DictItemMapper; import com.youlai.boot.system.mapper.DictItemMapper;
import com.youlai.boot.system.model.entity.DictItem; import com.youlai.boot.system.model.entity.DictItem;
import com.youlai.boot.system.model.form.DictItemForm; import com.youlai.boot.system.model.form.DictItemForm;
import com.youlai.boot.system.model.query.DictItemPageQuery; import com.youlai.boot.system.model.query.DictItemQuery;
import com.youlai.boot.system.model.vo.DictItemOptionVO; import com.youlai.boot.system.model.vo.DictItemOptionVO;
import com.youlai.boot.system.model.vo.DictItemPageVO; import com.youlai.boot.system.model.vo.DictItemPageVO;
import com.youlai.boot.system.service.DictItemService; import com.youlai.boot.system.service.DictItemService;
@@ -36,7 +36,7 @@ public class DictItemServiceImpl extends ServiceImpl<DictItemMapper, DictItem> i
* @return 字典项分页列表 * @return 字典项分页列表
*/ */
@Override @Override
public Page<DictItemPageVO> getDictItemPage(DictItemPageQuery queryParams) { public Page<DictItemPageVO> getDictItemPage(DictItemQuery queryParams) {
int pageNum = queryParams.getPageNum(); int pageNum = queryParams.getPageNum();
int pageSize = queryParams.getPageSize(); int pageSize = queryParams.getPageSize();
Page<DictItemPageVO> page = new Page<>(pageNum, pageSize); Page<DictItemPageVO> page = new Page<>(pageNum, pageSize);

View File

@@ -11,7 +11,7 @@ import com.youlai.boot.system.mapper.DictMapper;
import com.youlai.boot.system.model.entity.Dict; import com.youlai.boot.system.model.entity.Dict;
import com.youlai.boot.system.model.entity.DictItem; import com.youlai.boot.system.model.entity.DictItem;
import com.youlai.boot.system.model.form.DictForm; import com.youlai.boot.system.model.form.DictForm;
import com.youlai.boot.system.model.query.DictPageQuery; import com.youlai.boot.system.model.query.DictQuery;
import com.youlai.boot.system.model.vo.DictPageVO; import com.youlai.boot.system.model.vo.DictPageVO;
import com.youlai.boot.system.service.DictItemService; import com.youlai.boot.system.service.DictItemService;
import com.youlai.boot.system.service.DictService; import com.youlai.boot.system.service.DictService;
@@ -40,7 +40,7 @@ public class DictServiceImpl extends ServiceImpl<DictMapper, Dict> implements Di
* @param queryParams 分页查询对象 * @param queryParams 分页查询对象
*/ */
@Override @Override
public Page<DictPageVO> getDictPage(DictPageQuery queryParams) { public Page<DictPageVO> getDictPage(DictQuery queryParams) {
// 查询参数 // 查询参数
int pageNum = queryParams.getPageNum(); int pageNum = queryParams.getPageNum();
int pageSize = queryParams.getPageSize(); int pageSize = queryParams.getPageSize();

View File

@@ -6,7 +6,7 @@ import com.youlai.boot.system.mapper.LogMapper;
import com.youlai.boot.system.model.bo.VisitCountBO; import com.youlai.boot.system.model.bo.VisitCountBO;
import com.youlai.boot.system.model.bo.VisitStatsBO; import com.youlai.boot.system.model.bo.VisitStatsBO;
import com.youlai.boot.system.model.entity.Log; import com.youlai.boot.system.model.entity.Log;
import com.youlai.boot.system.model.query.LogPageQuery; import com.youlai.boot.system.model.query.LogQuery;
import com.youlai.boot.system.model.vo.LogPageVO; import com.youlai.boot.system.model.vo.LogPageVO;
import com.youlai.boot.system.model.vo.VisitStatsVO; import com.youlai.boot.system.model.vo.VisitStatsVO;
import com.youlai.boot.system.model.vo.VisitTrendVO; import com.youlai.boot.system.model.vo.VisitTrendVO;
@@ -36,7 +36,7 @@ public class LogServiceImpl extends ServiceImpl<LogMapper, Log>
* @return 日志分页列表 * @return 日志分页列表
*/ */
@Override @Override
public Page<LogPageVO> getLogPage(LogPageQuery queryParams) { public Page<LogPageVO> getLogPage(LogQuery queryParams) {
return this.baseMapper.getLogPage(new Page<>(queryParams.getPageNum(), queryParams.getPageSize()), return this.baseMapper.getLogPage(new Page<>(queryParams.getPageNum(), queryParams.getPageSize()),
queryParams); queryParams);
} }

View File

@@ -19,7 +19,7 @@ import com.youlai.boot.system.model.entity.Notice;
import com.youlai.boot.system.model.entity.UserNotice; import com.youlai.boot.system.model.entity.UserNotice;
import com.youlai.boot.system.model.entity.User; import com.youlai.boot.system.model.entity.User;
import com.youlai.boot.system.model.form.NoticeForm; import com.youlai.boot.system.model.form.NoticeForm;
import com.youlai.boot.system.model.query.NoticePageQuery; import com.youlai.boot.system.model.query.NoticeQuery;
import com.youlai.boot.system.model.vo.NoticePageVO; import com.youlai.boot.system.model.vo.NoticePageVO;
import com.youlai.boot.system.model.vo.UserNoticePageVO; import com.youlai.boot.system.model.vo.UserNoticePageVO;
import com.youlai.boot.system.model.vo.NoticeDetailVO; import com.youlai.boot.system.model.vo.NoticeDetailVO;
@@ -63,7 +63,7 @@ public class NoticeServiceImpl extends ServiceImpl<NoticeMapper, Notice> impleme
* @return {@link IPage< NoticePageVo >} 通知公告分页列表 * @return {@link IPage< NoticePageVo >} 通知公告分页列表
*/ */
@Override @Override
public IPage<NoticePageVO> getNoticePage(NoticePageQuery queryParams) { public IPage<NoticePageVO> getNoticePage(NoticeQuery queryParams) {
Page<NoticeBO> noticePage = this.baseMapper.getNoticePage( Page<NoticeBO> noticePage = this.baseMapper.getNoticePage(
new Page<>(queryParams.getPageNum(), queryParams.getPageSize()), new Page<>(queryParams.getPageNum(), queryParams.getPageSize()),
queryParams queryParams
@@ -291,8 +291,11 @@ public class NoticeServiceImpl extends ServiceImpl<NoticeMapper, Notice> impleme
* @return 通知公告分页列表 * @return 通知公告分页列表
*/ */
@Override @Override
public IPage<UserNoticePageVO> getMyNoticePage(NoticePageQuery queryParams) { public IPage<UserNoticePageVO> getMyNoticePage(
queryParams.setUserId(SecurityUtils.getUserId()); NoticeQuery queryParams
) {
Long userId = SecurityUtils.getUserId();
queryParams.setUserId(userId);
return userNoticeService.getMyNoticePage( return userNoticeService.getMyNoticePage(
new Page<>(queryParams.getPageNum(), queryParams.getPageSize()), new Page<>(queryParams.getPageNum(), queryParams.getPageSize()),
queryParams queryParams

View File

@@ -13,7 +13,7 @@ import com.youlai.boot.system.mapper.RoleMapper;
import com.youlai.boot.system.model.entity.Role; import com.youlai.boot.system.model.entity.Role;
import com.youlai.boot.system.model.entity.RoleMenu; import com.youlai.boot.system.model.entity.RoleMenu;
import com.youlai.boot.system.model.form.RoleForm; import com.youlai.boot.system.model.form.RoleForm;
import com.youlai.boot.system.model.query.RolePageQuery; import com.youlai.boot.system.model.query.RoleQuery;
import com.youlai.boot.system.model.vo.RolePageVO; import com.youlai.boot.system.model.vo.RolePageVO;
import com.youlai.boot.common.constant.SystemConstants; import com.youlai.boot.common.constant.SystemConstants;
import com.youlai.boot.common.model.Option; import com.youlai.boot.common.model.Option;
@@ -51,7 +51,7 @@ public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements Ro
* @return {@link Page< RolePageVo >} 角色分页列表 * @return {@link Page< RolePageVo >} 角色分页列表
*/ */
@Override @Override
public Page<RolePageVO> getRolePage(RolePageQuery queryParams) { public Page<RolePageVO> getRolePage(RoleQuery queryParams) {
// 查询参数 // 查询参数
int pageNum = queryParams.getPageNum(); int pageNum = queryParams.getPageNum();
int pageSize = queryParams.getPageSize(); int pageSize = queryParams.getPageSize();

View File

@@ -7,7 +7,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.youlai.boot.security.util.SecurityUtils; import com.youlai.boot.security.util.SecurityUtils;
import com.youlai.boot.system.mapper.UserNoticeMapper; import com.youlai.boot.system.mapper.UserNoticeMapper;
import com.youlai.boot.system.model.entity.UserNotice; import com.youlai.boot.system.model.entity.UserNotice;
import com.youlai.boot.system.model.query.NoticePageQuery; import com.youlai.boot.system.model.query.NoticeQuery;
import com.youlai.boot.system.model.vo.NoticePageVO; import com.youlai.boot.system.model.vo.NoticePageVO;
import com.youlai.boot.system.model.vo.UserNoticePageVO; import com.youlai.boot.system.model.vo.UserNoticePageVO;
import com.youlai.boot.system.service.UserNoticeService; import com.youlai.boot.system.service.UserNoticeService;
@@ -51,7 +51,7 @@ public class UserNoticeServiceImpl extends ServiceImpl<UserNoticeMapper, UserNot
* @return 通知公告分页列表 * @return 通知公告分页列表
*/ */
@Override @Override
public IPage<UserNoticePageVO> getMyNoticePage(Page<NoticePageVO> page, NoticePageQuery queryParams) { public IPage<UserNoticePageVO> getMyNoticePage(Page<NoticePageVO> page, NoticeQuery queryParams) {
return this.getBaseMapper().getMyNoticePage( return this.getBaseMapper().getMyNoticePage(
new Page<>(queryParams.getPageNum(), queryParams.getPageSize()), new Page<>(queryParams.getPageNum(), queryParams.getPageSize()),
queryParams queryParams

View File

@@ -12,13 +12,13 @@ import com.youlai.boot.common.constant.RedisConstants;
import com.youlai.boot.common.constant.SystemConstants; import com.youlai.boot.common.constant.SystemConstants;
import com.youlai.boot.core.exception.BusinessException; import com.youlai.boot.core.exception.BusinessException;
import com.youlai.boot.common.model.Option; import com.youlai.boot.common.model.Option;
import com.youlai.boot.platform.mail.service.MailService;
import com.youlai.boot.platform.sms.enums.SmsTypeEnum; import com.youlai.boot.platform.sms.enums.SmsTypeEnum;
import com.youlai.boot.platform.sms.service.SmsService; import com.youlai.boot.platform.sms.service.SmsService;
import com.youlai.boot.security.model.UserAuthInfo; import com.youlai.boot.security.model.UserAuthInfo;
import com.youlai.boot.security.service.PermissionService; import com.youlai.boot.security.service.PermissionService;
import com.youlai.boot.security.token.TokenManager; import com.youlai.boot.security.token.TokenManager;
import com.youlai.boot.security.util.SecurityUtils; import com.youlai.boot.security.util.SecurityUtils;
import com.youlai.boot.platform.mail.service.MailService;
import com.youlai.boot.system.converter.UserConverter; import com.youlai.boot.system.converter.UserConverter;
import com.youlai.boot.system.enums.DictCodeEnum; import com.youlai.boot.system.enums.DictCodeEnum;
import com.youlai.boot.system.mapper.UserMapper; import com.youlai.boot.system.mapper.UserMapper;
@@ -29,7 +29,7 @@ import com.youlai.boot.system.model.entity.DictItem;
import com.youlai.boot.system.model.entity.User; import com.youlai.boot.system.model.entity.User;
import com.youlai.boot.system.model.entity.UserRole; import com.youlai.boot.system.model.entity.UserRole;
import com.youlai.boot.system.model.form.*; import com.youlai.boot.system.model.form.*;
import com.youlai.boot.system.model.query.UserPageQuery; import com.youlai.boot.system.model.query.UserQuery;
import com.youlai.boot.system.model.vo.UserPageVO; import com.youlai.boot.system.model.vo.UserPageVO;
import com.youlai.boot.system.model.vo.UserProfileVO; import com.youlai.boot.system.model.vo.UserProfileVO;
import com.youlai.boot.system.service.*; import com.youlai.boot.system.service.*;
@@ -84,7 +84,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
* @return {@link IPage<UserPageVo>} 用户分页列表 * @return {@link IPage<UserPageVo>} 用户分页列表
*/ */
@Override @Override
public IPage<UserPageVO> getUserPage(UserPageQuery queryParams) { public IPage<UserPageVO> getUserPage(UserQuery queryParams) {
// 参数构建 // 参数构建
int pageNum = queryParams.getPageNum(); int pageNum = queryParams.getPageNum();
@@ -403,7 +403,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
* @return {@link List<UserExportDto>} 导出用户列表 * @return {@link List<UserExportDto>} 导出用户列表
*/ */
@Override @Override
public List<UserExportDTO> listExportUsers(UserPageQuery queryParams) { public List<UserExportDTO> listExportUsers(UserQuery queryParams) {
boolean isRoot = SecurityUtils.isRoot(); boolean isRoot = SecurityUtils.isRoot();
queryParams.setIsRoot(isRoot); queryParams.setIsRoot(isRoot);

View File

@@ -1,5 +1,5 @@
server: server:
port: 8989 port: 8000
spring: spring:
datasource: datasource:
@@ -318,4 +318,3 @@ ai:
rate-limit: rate-limit:
max-executions-per-minute: 10 max-executions-per-minute: 10
max-executions-per-day: 100 max-executions-per-day: 100

View File

@@ -33,35 +33,6 @@
ORDER BY ORDER BY
CREATE_TIME DESC CREATE_TIME DESC
</select> </select>
<!-- 查询数据库表分页 dm版本-->
<select id="getTablePage" resultType="com.youlai.boot.platform.codegen.model.vo.TablePageVO" databaseId="dm">
SELECT
t1.TABLE_NAME ,
c.COMMENTS AS TABLE_COMMENT ,
NULL AS TABLE_COLLATION,
'DM' AS ENGINE,
o.CREATED AS CREATE_TIME,
CASE WHEN t2.id IS NOT NULL THEN 1 ELSE 0 END AS isConfigured
FROM
ALL_TABLES t1
LEFT JOIN ALL_TAB_COMMENTS c ON t1.TABLE_NAME = c.TABLE_NAME AND t1.OWNER = c.OWNER
LEFT JOIN ALL_OBJECTS o ON t1.TABLE_NAME = o.OBJECT_NAME AND t1.OWNER = o.OWNER AND o.OBJECT_TYPE = 'TABLE'
LEFT JOIN gen_table t2 ON t1.TABLE_NAME = t2.table_name
WHERE
t1.OWNER = 'YOULAI_BOOT'
<if test="queryParams.keywords != null and queryParams.keywords.trim() neq ''">
AND t1.TABLE_NAME LIKE '%' || #{queryParams.keywords} || '%'
</if>
<!-- 排除的表 -->
<if test="queryParams.excludeTables != null and queryParams.excludeTables.size() > 0">
AND t1.TABLE_NAME NOT IN
<foreach collection="queryParams.excludeTables" item="excludeTable" open="(" close=")" separator=",">
#{excludeTable}
</foreach>
</if>
ORDER BY
o.CREATED DESC
</select>
<!-- 查询数据库表元数据 mysql版本--> <!-- 查询数据库表元数据 mysql版本-->
<select id="getTableMetadata" resultType="com.youlai.boot.platform.codegen.model.bo.TableMetaData" databaseId="mysql"> <select id="getTableMetadata" resultType="com.youlai.boot.platform.codegen.model.bo.TableMetaData" databaseId="mysql">
@@ -77,22 +48,6 @@
TABLE_SCHEMA = (SELECT DATABASE()) TABLE_SCHEMA = (SELECT DATABASE())
AND TABLE_NAME = #{tableName} AND TABLE_NAME = #{tableName}
</select> </select>
<!-- 获取数据库表元数据 dm版本-->
<select id="getTableMetadata" resultType="com.youlai.boot.platform.codegen.model.bo.TableMetaData" databaseId="dm">
SELECT
t1.TABLE_NAME ,
c.COMMENTS AS TABLE_COMMENT ,
NULL AS TABLE_COLLATION,
'DM' AS ENGINE,
o.CREATED AS CREATE_TIME
FROM
ALL_TABLES t1
LEFT JOIN ALL_TAB_COMMENTS c ON t1.TABLE_NAME = c.TABLE_NAME AND t1.OWNER = c.OWNER
LEFT JOIN ALL_OBJECTS o ON t1.TABLE_NAME = o.OBJECT_NAME AND t1.OWNER = o.OWNER AND o.OBJECT_TYPE = 'TABLE'
WHERE
t1.OWNER = 'YOULAI_BOOT'
AND t1.TABLE_NAME = #{tableName}
</select>
<!-- 获取数据库表字段元数据 mysql版本--> <!-- 获取数据库表字段元数据 mysql版本-->
<select id="getTableColumns" resultType="com.youlai.boot.platform.codegen.model.bo.ColumnMetaData" databaseId="mysql"> <select id="getTableColumns" resultType="com.youlai.boot.platform.codegen.model.bo.ColumnMetaData" databaseId="mysql">
@@ -112,32 +67,5 @@
AND TABLE_NAME = #{tableName} AND TABLE_NAME = #{tableName}
ORDER BY ORDINAL_POSITION ASC ORDER BY ORDINAL_POSITION ASC
</select> </select>
<!-- 获取数据库表字段元数据 dm版本-->
<select id="getTableColumns" resultType="com.youlai.boot.platform.codegen.model.bo.ColumnMetaData" databaseId="dm">
SELECT
t1.COLUMN_NAME,
t1.DATA_TYPE,
c.COMMENTS AS COLUMN_COMMENT,
CASE WHEN con.CONSTRAINT_TYPE = 'P' THEN 1 ELSE 0 END AS isPrimaryKey,
CASE WHEN t1.NULLABLE = 'Y' THEN 'YES' ELSE 'NO' END AS IS_NULLABLE,
t1.DATA_LENGTH AS CHARACTER_MAXIMUM_LENGTH,
NULL AS CHARACTER_SET_NAME,
NULL AS COLLATION_NAME
FROM
ALL_TAB_COLUMNS t1
LEFT JOIN ALL_COL_COMMENTS c ON t1.TABLE_NAME = c.TABLE_NAME
AND t1.COLUMN_NAME = c.COLUMN_NAME
AND t1.OWNER = c.OWNER
LEFT JOIN ALL_CONS_COLUMNS cc ON t1.TABLE_NAME = cc.TABLE_NAME
AND t1.COLUMN_NAME = cc.COLUMN_NAME
AND t1.OWNER = cc.OWNER
LEFT JOIN ALL_CONSTRAINTS con ON cc.CONSTRAINT_NAME = con.CONSTRAINT_NAME
AND cc.OWNER = con.OWNER
AND con.CONSTRAINT_TYPE = 'P'
WHERE
t1.OWNER = 'YOULAI_BOOT'
AND t1.TABLE_NAME = #{tableName}
ORDER BY t1.COLUMN_ID ASC
</select>
</mapper> </mapper>

View File

@@ -23,7 +23,6 @@
sys_log t1 sys_log t1
LEFT JOIN sys_user t2 ON t1.create_by = t2.id LEFT JOIN sys_user t2 ON t1.create_by = t2.id
<where> <where>
t1.is_deleted = 0
<if test="queryParams.keywords != null and queryParams.keywords != ''"> <if test="queryParams.keywords != null and queryParams.keywords != ''">
AND ( AND (
t1.content LIKE concat('%',#{queryParams.keywords},'%') t1.content LIKE concat('%',#{queryParams.keywords},'%')
@@ -47,48 +46,6 @@
ORDER BY ORDER BY
t1.create_time DESC t1.create_time DESC
</select> </select>
<!-- 日志分页列表 dm版本 -->
<select id="getLogPage" resultType="com.youlai.boot.system.model.vo.LogPageVO" databaseId="dm">
SELECT
t1.id,
t1.module,
t1.content,
t1.request_uri,
t1.ip,
t1.province || ' ' || t1.city AS region,
t1.execution_time,
t1.browser || ' ' || t1.browser_version AS browser,
t1.os,
t1.create_time,
t2.nickname AS operator
FROM
sys_log t1
LEFT JOIN sys_user t2 ON t1.create_by = t2.id
<where>
t1.is_deleted = 0
<if test="queryParams.keywords != null and queryParams.keywords != ''">
AND (
t1.content LIKE concat('%',#{queryParams.keywords},'%')
OR
t1.ip LIKE concat('%',#{queryParams.keywords},'%')
OR
t2.nickname LIKE concat('%',#{queryParams.keywords},'%')
)
</if>
<if test="queryParams.createTime != null and queryParams.createTime.size > 0">
<if test="queryParams.createTime[0] != null and queryParams.createTime[0] != ''">
<bind name="startDate" value="queryParams.createTime[0].length() == 10 ? queryParams.createTime[0] + ' 00:00:00' : queryParams.createTime[0]"/>
AND t1.create_time &gt;= #{startDate}
</if>
<if test="queryParams.createTime[1] != null and queryParams.createTime[1] != ''">
<bind name="endDate" value="queryParams.createTime[1].length() == 10 ? queryParams.createTime[1] + ' 23:59:59' : queryParams.createTime[1]"/>
AND t1.create_time &lt;= #{endDate}
</if>
</if>
</where>
ORDER BY
t1.create_time DESC
</select>
<!-- 获取访问量日统计列表 --> <!-- 获取访问量日统计列表 -->
<select id="getPvCounts" resultType="com.youlai.boot.system.model.bo.VisitCountBO"> <select id="getPvCounts" resultType="com.youlai.boot.system.model.bo.VisitCountBO">
@@ -99,7 +56,6 @@
sys_log sys_log
WHERE WHERE
create_time BETWEEN #{startDate} AND #{endDate} create_time BETWEEN #{startDate} AND #{endDate}
AND is_deleted = 0
GROUP BY GROUP BY
DATE_FORMAT(create_time, '%Y-%m-%d') DATE_FORMAT(create_time, '%Y-%m-%d')
</select> </select>
@@ -113,7 +69,6 @@
sys_log sys_log
WHERE WHERE
create_time BETWEEN #{startDate} AND #{endDate} create_time BETWEEN #{startDate} AND #{endDate}
AND is_deleted = 0
GROUP BY GROUP BY
DATE_FORMAT(create_time, '%Y-%m-%d') DATE_FORMAT(create_time, '%Y-%m-%d')
</select> </select>
@@ -134,30 +89,6 @@
2) AS growthRate 2) AS growthRate
FROM FROM
sys_log sys_log
WHERE
is_deleted = 0
</select>
<!-- 获取访问量(PV)统计数据 dm-->
<select id="getPvStats" resultType="com.youlai.boot.system.model.bo.VisitStatsBO" databaseId="dm">
SELECT
COUNT(CASE WHEN TRUNC(create_time) = TRUNC(SYSDATE) THEN 1 END) AS todayCount,
COUNT(*) AS totalCount,
ROUND(
CASE
WHEN COUNT(CASE WHEN TRUNC(create_time) = TRUNC(SYSDATE) - 1
AND TO_CHAR(create_time, 'HH24:MI:SS') &lt;= TO_CHAR(SYSDATE, 'HH24:MI:SS') THEN 1 END) = 0 THEN 0
ELSE
(COUNT(CASE WHEN TRUNC(create_time) = TRUNC(SYSDATE) THEN 1 END) -
COUNT(CASE WHEN TRUNC(create_time) = TRUNC(SYSDATE) - 1
AND TO_CHAR(create_time, 'HH24:MI:SS') &lt;= TO_CHAR(SYSDATE, 'HH24:MI:SS') THEN 1 END)) /
COUNT(CASE WHEN TRUNC(create_time) = TRUNC(SYSDATE) - 1
AND TO_CHAR(create_time, 'HH24:MI:SS') &lt;= TO_CHAR(SYSDATE, 'HH24:MI:SS') THEN 1 END)
END,
2) AS growthRate
FROM
sys_log
WHERE
is_deleted = 0
</select> </select>
<!-- 获取IP统计数据 mysql版本--> <!-- 获取IP统计数据 mysql版本-->
@@ -176,33 +107,6 @@
2) AS growthRate 2) AS growthRate
FROM FROM
sys_log sys_log
WHERE
is_deleted = 0
</select>
<!-- 获取IP统计数据 dm版本-->
<select id="getUvStats" resultType="com.youlai.boot.system.model.bo.VisitStatsBO" databaseId="dm">
SELECT COUNT(DISTINCT CASE WHEN TRUNC(create_time) = TRUNC(SYSDATE) THEN ip END) AS todayCount,
COUNT(DISTINCT ip) AS totalCount,
ROUND(
CASE
WHEN COUNT(DISTINCT CASE
WHEN TRUNC(create_time) = TRUNC(SYSDATE - 1)
THEN ip END) = 0
THEN 0
ELSE
(COUNT(DISTINCT CASE
WHEN TRUNC(create_time) = TRUNC(SYSDATE)
THEN ip END) -
COUNT(DISTINCT CASE
WHEN TRUNC(create_time) = TRUNC(SYSDATE - 1)
THEN ip END)) * 1.0 /
COUNT(DISTINCT CASE
WHEN TRUNC(create_time) = TRUNC(SYSDATE - 1)
THEN ip END)
END,
2) AS growthRate
FROM sys_log
WHERE is_deleted = 0
</select> </select>
</mapper> </mapper>

View File

@@ -72,84 +72,8 @@
u.id u.id
<choose> <choose>
<!-- 如果排序参数都传入 --> <!-- 如果排序参数都传入 -->
<when test="queryParams.field != null and queryParams.field != '' and queryParams.direction != null"> <when test="queryParams.sortBy != null and queryParams.sortBy != '' and queryParams.order != null">
ORDER BY u.${queryParams.field} ${queryParams.direction} ORDER BY u.${queryParams.sortBy} ${queryParams.order}
</when>
<!-- 默认排序 -->
<otherwise>
ORDER BY u.update_time DESC, u.create_time DESC
</otherwise>
</choose>
</select>
<!-- 用户分页列表 dm版本-->
<select id="getUserPage" resultType="com.youlai.boot.system.model.bo.UserBO" databaseId="dm">
SELECT
u.id,
u.username,
u.nickname,
u.mobile,
u.gender,
u.avatar,
u.STATUS,
u.email,
d.NAME AS dept_name,
LISTAGG(r.name, ',') WITHIN GROUP (ORDER BY r.name) AS roleNames,
u.create_time
FROM
sys_user u
LEFT JOIN sys_dept d ON u.dept_id = d.id
LEFT JOIN sys_user_role sur ON u.id = sur.user_id
LEFT JOIN sys_role r ON sur.role_id = r.id
<where>
u.is_deleted = 0
<!-- 非超级管理员用户限制查看超级管理员 -->
<if test="!queryParams.isRoot">
AND NOT EXISTS (
SELECT
1
FROM sys_user_role sur
INNER JOIN sys_role r ON sur.role_id = r.id
WHERE
sur.user_id = u.id
AND r.code = '${@com.youlai.boot.common.constant.SystemConstants@ROOT_ROLE_CODE}'
)
</if>
<if test='queryParams.keywords!=null and queryParams.keywords.trim() neq ""'>
AND (
u.username LIKE CONCAT('%',#{queryParams.keywords},'%')
OR u.nickname LIKE CONCAT('%',#{queryParams.keywords},'%')
OR u.mobile LIKE CONCAT('%',#{queryParams.keywords},'%')
)
</if>
<if test='queryParams.status!=null'>
AND u.status = #{queryParams.status}
</if>
<if test='queryParams.deptId!=null'>
AND concat(',',concat(d.tree_path,',',d.id),',') like concat('%,',#{queryParams.deptId},',%')
</if>
<if test="queryParams.createTime != null and queryParams.createTime.size > 0">
<if test="queryParams.createTime[0] != null and queryParams.createTime[0] != ''">
<bind name="startDate" value="queryParams.createTime[0].length() == 10 ? queryParams.createTime[0] + ' 00:00:00' : queryParams.createTime[0]"/>
AND u.create_time &gt;= #{startDate}
</if>
<if test="queryParams.createTime[1] != null and queryParams.createTime[1] != ''">
<bind name="endDate" value="queryParams.createTime[1].length() == 10 ? queryParams.createTime[1] + ' 23:59:59' : queryParams.createTime[1]"/>
AND u.create_time &lt;= #{endDate}
</if>
</if>
<if test="queryParams.roleIds != null and queryParams.roleIds.size() > 0">
AND sur.role_id IN
<foreach item="roleId" collection="queryParams.roleIds" open="(" separator="," close=")">
#{roleId}
</foreach>
</if>
</where>
GROUP BY
u.id
<choose>
<!-- 如果排序参数都传入 -->
<when test="queryParams.field != null and queryParams.field != '' and queryParams.direction != null">
ORDER BY u.${queryParams.field} ${queryParams.direction}
</when> </when>
<!-- 默认排序 --> <!-- 默认排序 -->
<otherwise> <otherwise>
@@ -323,27 +247,5 @@
WHERE WHERE
u.id = #{userId} AND u.is_deleted = 0 u.id = #{userId} AND u.is_deleted = 0
</select> </select>
<!-- 根据用户ID获取用户详情 dm版本-->
<select id="getUserProfile" resultType="com.youlai.boot.system.model.bo.UserBO" databaseId="dm">
SELECT
u.id,
u.username,
u.nickname,
u.mobile,
u.gender,
u.avatar,
u.STATUS,
u.email,
d.NAME AS deptName,
LISTAGG(r.name, ',') WITHIN GROUP (ORDER BY r.name) AS roleNames,
u.create_time
FROM
sys_user u
LEFT JOIN sys_dept d ON u.dept_id = d.id
LEFT JOIN sys_user_role sur ON u.id = sur.user_id
LEFT JOIN sys_role r ON sur.role_id = r.id
WHERE
u.id = #{userId} AND u.is_deleted = 0
</select>
</mapper> </mapper>

View File

@@ -1,6 +1,6 @@
package ${packageName}.${moduleName}.${subpackageName}; package ${packageName}.${moduleName}.${subpackageName};
import ${packageName}.common.base.BasePageQuery; import ${packageName}.common.base.BaseQuery;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
@@ -21,7 +21,7 @@ import java.math.BigDecimal;
@Schema(description ="$!{businessName}查询对象") @Schema(description ="$!{businessName}查询对象")
@Getter @Getter
@Setter @Setter
public class ${entityName}Query extends BasePageQuery { public class ${entityName}Query extends BaseQuery {
#if($fieldConfigs) #if($fieldConfigs)
#foreach($fieldConfig in ${fieldConfigs}) #foreach($fieldConfig in ${fieldConfigs})