Merge branch 'develop' of https://gitee.com/youlaiorg/youlai-boot into develop
This commit is contained in:
@@ -1,8 +1,8 @@
|
||||
package com.youlai.boot.auth.controller;
|
||||
|
||||
import com.youlai.boot.auth.model.dto.WxMiniAppCodeLoginDto;
|
||||
import com.youlai.boot.auth.model.dto.WxMiniAppPhoneLoginDto;
|
||||
import com.youlai.boot.auth.model.vo.CaptchaVo;
|
||||
import com.youlai.boot.auth.model.dto.WxMiniAppCodeLoginDTO;
|
||||
import com.youlai.boot.auth.model.dto.WxMiniAppPhoneLoginDTO;
|
||||
import com.youlai.boot.auth.model.vo.CaptchaVO;
|
||||
import com.youlai.boot.auth.model.dto.LoginRequest;
|
||||
import com.youlai.boot.common.enums.LogModuleEnum;
|
||||
import com.youlai.boot.core.web.Result;
|
||||
@@ -34,8 +34,8 @@ public class AuthController {
|
||||
|
||||
@Operation(summary = "获取验证码")
|
||||
@GetMapping("/captcha")
|
||||
public Result<CaptchaVo> getCaptcha() {
|
||||
CaptchaVo captcha = authService.getCaptcha();
|
||||
public Result<CaptchaVO> getCaptcha() {
|
||||
CaptchaVO captcha = authService.getCaptcha();
|
||||
return Result.success(captcha);
|
||||
}
|
||||
|
||||
@@ -81,14 +81,14 @@ public class AuthController {
|
||||
|
||||
@Operation(summary = "微信小程序登录(Code)")
|
||||
@PostMapping("/wx/miniapp/code-login")
|
||||
public Result<AuthenticationToken> loginByWxMiniAppCode(@RequestBody @Valid WxMiniAppCodeLoginDto loginDto) {
|
||||
public Result<AuthenticationToken> loginByWxMiniAppCode(@RequestBody @Valid WxMiniAppCodeLoginDTO loginDto) {
|
||||
AuthenticationToken token = authService.loginByWxMiniAppCode(loginDto);
|
||||
return Result.success(token);
|
||||
}
|
||||
|
||||
@Operation(summary = "微信小程序登录(手机号)")
|
||||
@PostMapping("/wx/miniapp/phone-login")
|
||||
public Result<AuthenticationToken> loginByWxMiniAppPhone(@RequestBody @Valid WxMiniAppPhoneLoginDto loginDto) {
|
||||
public Result<AuthenticationToken> loginByWxMiniAppPhone(@RequestBody @Valid WxMiniAppPhoneLoginDTO loginDto) {
|
||||
AuthenticationToken token = authService.loginByWxMiniAppPhone(loginDto);
|
||||
return Result.success(token);
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@ import jakarta.validation.constraints.NotBlank;
|
||||
*/
|
||||
@Schema(description = "微信小程序Code登录请求参数")
|
||||
@Data
|
||||
public class WxMiniAppCodeLoginDto {
|
||||
public class WxMiniAppCodeLoginDTO {
|
||||
|
||||
@Schema(description = "微信小程序登录时获取的code", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotBlank(message = "code不能为空")
|
||||
|
||||
@@ -10,7 +10,7 @@ import jakarta.validation.constraints.NotBlank;
|
||||
*/
|
||||
@Schema(description = "微信小程序手机号登录请求参数")
|
||||
@Data
|
||||
public class WxMiniAppPhoneLoginDto {
|
||||
public class WxMiniAppPhoneLoginDTO {
|
||||
|
||||
@Schema(description = "微信小程序登录时获取的code", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotBlank(message = "code不能为空")
|
||||
|
||||
@@ -13,7 +13,7 @@ import lombok.Data;
|
||||
@Schema(description = "验证码信息")
|
||||
@Data
|
||||
@Builder
|
||||
public class CaptchaVo {
|
||||
public class CaptchaVO {
|
||||
|
||||
@Schema(description = "验证码缓存 ID")
|
||||
private String captchaId;
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
package com.youlai.boot.auth.service;
|
||||
|
||||
import com.youlai.boot.auth.model.vo.CaptchaVo;
|
||||
import com.youlai.boot.auth.model.dto.WxMiniAppPhoneLoginDto;
|
||||
import com.youlai.boot.auth.model.vo.CaptchaVO;
|
||||
import com.youlai.boot.auth.model.dto.WxMiniAppPhoneLoginDTO;
|
||||
import com.youlai.boot.security.model.AuthenticationToken;
|
||||
import com.youlai.boot.auth.model.dto.WxMiniAppCodeLoginDto;
|
||||
import com.youlai.boot.auth.model.dto.WxMiniAppCodeLoginDTO;
|
||||
|
||||
/**
|
||||
* 认证服务接口
|
||||
@@ -32,7 +32,7 @@ public interface AuthService {
|
||||
*
|
||||
* @return 验证码
|
||||
*/
|
||||
CaptchaVo getCaptcha();
|
||||
CaptchaVO getCaptcha();
|
||||
|
||||
/**
|
||||
* 刷新令牌
|
||||
@@ -56,7 +56,7 @@ public interface AuthService {
|
||||
* @param loginDto 登录参数
|
||||
* @return 访问令牌
|
||||
*/
|
||||
AuthenticationToken loginByWxMiniAppCode(WxMiniAppCodeLoginDto loginDto);
|
||||
AuthenticationToken loginByWxMiniAppCode(WxMiniAppCodeLoginDTO loginDto);
|
||||
|
||||
/**
|
||||
* 微信小程序手机号登录
|
||||
@@ -64,7 +64,7 @@ public interface AuthService {
|
||||
* @param loginDto 登录参数
|
||||
* @return 访问令牌
|
||||
*/
|
||||
AuthenticationToken loginByWxMiniAppPhone(WxMiniAppPhoneLoginDto loginDto);
|
||||
AuthenticationToken loginByWxMiniAppPhone(WxMiniAppPhoneLoginDTO loginDto);
|
||||
|
||||
/**
|
||||
* 发送短信验证码
|
||||
|
||||
@@ -5,9 +5,9 @@ import cn.hutool.captcha.CaptchaUtil;
|
||||
import cn.hutool.captcha.generator.CodeGenerator;
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.youlai.boot.auth.model.dto.WxMiniAppCodeLoginDto;
|
||||
import com.youlai.boot.auth.model.dto.WxMiniAppPhoneLoginDto;
|
||||
import com.youlai.boot.auth.model.vo.CaptchaVo;
|
||||
import com.youlai.boot.auth.model.dto.WxMiniAppCodeLoginDTO;
|
||||
import com.youlai.boot.auth.model.dto.WxMiniAppPhoneLoginDTO;
|
||||
import com.youlai.boot.auth.model.vo.CaptchaVO;
|
||||
import com.youlai.boot.auth.service.AuthService;
|
||||
import com.youlai.boot.common.constant.RedisConstants;
|
||||
import com.youlai.boot.common.constant.SecurityConstants;
|
||||
@@ -171,7 +171,7 @@ public class AuthServiceImpl implements AuthService {
|
||||
* @return 验证码
|
||||
*/
|
||||
@Override
|
||||
public CaptchaVo getCaptcha() {
|
||||
public CaptchaVO getCaptcha() {
|
||||
|
||||
String captchaType = captchaProperties.getType();
|
||||
int width = captchaProperties.getWidth();
|
||||
@@ -207,7 +207,7 @@ public class AuthServiceImpl implements AuthService {
|
||||
TimeUnit.SECONDS
|
||||
);
|
||||
|
||||
return CaptchaVo.builder()
|
||||
return CaptchaVO.builder()
|
||||
.captchaId(captchaId)
|
||||
.captchaBase64(imageBase64Data)
|
||||
.build();
|
||||
@@ -231,7 +231,7 @@ public class AuthServiceImpl implements AuthService {
|
||||
* @return 访问令牌
|
||||
*/
|
||||
@Override
|
||||
public AuthenticationToken loginByWxMiniAppCode(WxMiniAppCodeLoginDto loginDto) {
|
||||
public AuthenticationToken loginByWxMiniAppCode(WxMiniAppCodeLoginDTO loginDto) {
|
||||
// 1. 创建微信小程序认证令牌(未认证)
|
||||
WxMiniAppCodeAuthenticationToken authenticationToken = new WxMiniAppCodeAuthenticationToken(loginDto.getCode());
|
||||
|
||||
@@ -252,7 +252,7 @@ public class AuthServiceImpl implements AuthService {
|
||||
* @return 访问令牌
|
||||
*/
|
||||
@Override
|
||||
public AuthenticationToken loginByWxMiniAppPhone(WxMiniAppPhoneLoginDto loginDto) {
|
||||
public AuthenticationToken loginByWxMiniAppPhone(WxMiniAppPhoneLoginDTO loginDto) {
|
||||
// 创建微信小程序手机号认证Token
|
||||
WxMiniAppPhoneAuthenticationToken authenticationToken = new WxMiniAppPhoneAuthenticationToken(
|
||||
loginDto.getCode(),
|
||||
|
||||
@@ -3,11 +3,11 @@ package com.youlai.boot.platform.ai.controller;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.youlai.boot.core.web.PageResult;
|
||||
import com.youlai.boot.core.web.Result;
|
||||
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.AiParseResponseDto;
|
||||
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.AiParseResponseDTO;
|
||||
import com.youlai.boot.platform.ai.model.query.AiAssistantPageQuery;
|
||||
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 io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
@@ -41,17 +41,17 @@ public class AiAssistantController {
|
||||
|
||||
@Operation(summary = "解析自然语言命令")
|
||||
@PostMapping("/parse")
|
||||
public Result<AiParseResponseDto> parseCommand(
|
||||
@RequestBody AiParseRequestDto request,
|
||||
public Result<AiParseResponseDTO> parseCommand(
|
||||
@RequestBody AiParseRequestDTO request,
|
||||
HttpServletRequest httpRequest
|
||||
) {
|
||||
log.info("收到 AI 命令解析请求: {}", request.getCommand());
|
||||
try {
|
||||
AiParseResponseDto response = aiAssistantRecordService.parseCommand(request, httpRequest);
|
||||
AiParseResponseDTO response = aiAssistantRecordService.parseCommand(request, httpRequest);
|
||||
return Result.success(response);
|
||||
} catch (Exception e) {
|
||||
log.error("命令解析失败", e);
|
||||
return Result.success(AiParseResponseDto.builder()
|
||||
return Result.success(AiParseResponseDTO.builder()
|
||||
.success(false)
|
||||
.error(e.getMessage())
|
||||
.build());
|
||||
@@ -61,7 +61,7 @@ public class AiAssistantController {
|
||||
@Operation(summary = "执行已解析的命令")
|
||||
@PostMapping("/execute")
|
||||
public Result<Object> executeCommand(
|
||||
@RequestBody AiExecuteRequestDto request,
|
||||
@RequestBody AiExecuteRequestDTO request,
|
||||
HttpServletRequest httpRequest
|
||||
) {
|
||||
log.info("收到 AI 命令执行请求: {}", request.getFunctionCall().getName());
|
||||
@@ -76,8 +76,8 @@ public class AiAssistantController {
|
||||
|
||||
@Operation(summary = "获取 AI 命令记录分页列表")
|
||||
@GetMapping("/records")
|
||||
public PageResult<AiAssistantRecordVo> getRecordPage(AiAssistantPageQuery queryParams) {
|
||||
IPage<AiAssistantRecordVo> page = aiAssistantRecordService.getRecordPage(queryParams);
|
||||
public PageResult<AiAssistantRecordVO> getRecordPage(AiAssistantPageQuery queryParams) {
|
||||
IPage<AiAssistantRecordVO> page = aiAssistantRecordService.getRecordPage(queryParams);
|
||||
return PageResult.success(page);
|
||||
}
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
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.vo.AiAssistantRecordVo;
|
||||
import com.youlai.boot.platform.ai.model.vo.AiAssistantRecordVO;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
@Mapper
|
||||
@@ -18,5 +18,5 @@ public interface AiAssistantRecordMapper extends BaseMapper<AiAssistantRecord> {
|
||||
* @param queryParams 查询参数
|
||||
* @return 分页结果
|
||||
*/
|
||||
IPage<AiAssistantRecordVo> getRecordPage(Page<AiAssistantRecordVo> page, AiAssistantPageQuery queryParams);
|
||||
IPage<AiAssistantRecordVO> getRecordPage(Page<AiAssistantRecordVO> page, AiAssistantPageQuery queryParams);
|
||||
}
|
||||
|
||||
@@ -9,7 +9,7 @@ import lombok.Data;
|
||||
* @since 3.0.0
|
||||
*/
|
||||
@Data
|
||||
public class AiExecuteRequestDto {
|
||||
public class AiExecuteRequestDTO {
|
||||
|
||||
/**
|
||||
* 关联的解析日志ID
|
||||
@@ -24,7 +24,7 @@ public class AiExecuteRequestDto {
|
||||
/**
|
||||
* 要执行的函数调用
|
||||
*/
|
||||
private AiFunctionCallDto functionCall;
|
||||
private AiFunctionCallDTO functionCall;
|
||||
|
||||
/**
|
||||
* 确认模式:auto=自动执行, manual=需要用户确认
|
||||
|
||||
@@ -15,7 +15,7 @@ import lombok.NoArgsConstructor;
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class AiExecuteResponseDto {
|
||||
public class AiExecuteResponseDTO {
|
||||
|
||||
/**
|
||||
* 是否执行成功
|
||||
|
||||
@@ -16,7 +16,7 @@ import java.util.Map;
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class AiFunctionCallDto {
|
||||
public class AiFunctionCallDTO {
|
||||
|
||||
/**
|
||||
* 函数名称
|
||||
|
||||
@@ -10,7 +10,7 @@ import java.util.Map;
|
||||
* @since 3.0.0
|
||||
*/
|
||||
@Data
|
||||
public class AiParseRequestDto {
|
||||
public class AiParseRequestDTO {
|
||||
|
||||
/**
|
||||
* 用户输入的自然语言命令
|
||||
|
||||
@@ -16,7 +16,7 @@ import java.util.List;
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class AiParseResponseDto {
|
||||
public class AiParseResponseDTO {
|
||||
|
||||
/**
|
||||
* 解析日志ID(用于关联执行记录)
|
||||
@@ -31,7 +31,7 @@ public class AiParseResponseDto {
|
||||
/**
|
||||
* 解析后的函数调用列表
|
||||
*/
|
||||
private List<AiFunctionCallDto> functionCalls;
|
||||
private List<AiFunctionCallDTO> functionCalls;
|
||||
|
||||
/**
|
||||
* AI 的理解和说明
|
||||
|
||||
@@ -16,7 +16,7 @@ import java.time.LocalDateTime;
|
||||
*/
|
||||
@Data
|
||||
@Schema(description = "AI 助手行为记录Vo")
|
||||
public class AiAssistantRecordVo implements Serializable {
|
||||
public class AiAssistantRecordVO implements Serializable {
|
||||
|
||||
@Schema(description = "主键ID")
|
||||
private String id;
|
||||
|
||||
@@ -2,12 +2,12 @@ package com.youlai.boot.platform.ai.service;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
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.AiParseResponseDto;
|
||||
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.AiParseResponseDTO;
|
||||
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.vo.AiAssistantRecordVo;
|
||||
import com.youlai.boot.platform.ai.model.vo.AiAssistantRecordVO;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
|
||||
import java.util.List;
|
||||
@@ -29,7 +29,7 @@ public interface AiAssistantRecordService extends IService<AiAssistantRecord> {
|
||||
* @param httpRequest HTTP 请求(用于获取 IP 等上下文)
|
||||
* @return 解析结果(包含 functionCalls 等信息)
|
||||
*/
|
||||
AiParseResponseDto parseCommand(AiParseRequestDto request, HttpServletRequest httpRequest);
|
||||
AiParseResponseDTO parseCommand(AiParseRequestDTO request, HttpServletRequest httpRequest);
|
||||
|
||||
/**
|
||||
* 执行已解析的命令。
|
||||
@@ -39,7 +39,7 @@ public interface AiAssistantRecordService extends IService<AiAssistantRecord> {
|
||||
* @return 执行结果
|
||||
* @throws Exception 执行异常
|
||||
*/
|
||||
Object executeCommand(AiExecuteRequestDto request, HttpServletRequest httpRequest) throws Exception;
|
||||
Object executeCommand(AiExecuteRequestDTO request, HttpServletRequest httpRequest) throws Exception;
|
||||
|
||||
/**
|
||||
* 获取 AI 助手行为记录分页列表
|
||||
@@ -47,7 +47,7 @@ public interface AiAssistantRecordService extends IService<AiAssistantRecord> {
|
||||
* @param queryParams 查询参数
|
||||
* @return 分页列表
|
||||
*/
|
||||
IPage<AiAssistantRecordVo> getRecordPage(AiAssistantPageQuery queryParams);
|
||||
IPage<AiAssistantRecordVO> getRecordPage(AiAssistantPageQuery queryParams);
|
||||
|
||||
/**
|
||||
* 删除 AI 助手行为记录。
|
||||
|
||||
@@ -10,13 +10,13 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.youlai.boot.platform.ai.mapper.AiAssistantRecordMapper;
|
||||
import com.youlai.boot.platform.ai.model.dto.AiExecuteRequestDto;
|
||||
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.AiParseResponseDto;
|
||||
import com.youlai.boot.platform.ai.model.dto.AiExecuteRequestDTO;
|
||||
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.AiParseResponseDTO;
|
||||
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.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.tools.UserTools;
|
||||
import com.youlai.boot.security.util.SecurityUtils;
|
||||
@@ -64,12 +64,12 @@ public class AiAssistantRecordServiceImpl
|
||||
private final ChatClient chatClient;
|
||||
|
||||
@Override
|
||||
public AiParseResponseDto parseCommand(AiParseRequestDto request, HttpServletRequest httpRequest) {
|
||||
public AiParseResponseDTO parseCommand(AiParseRequestDTO request, HttpServletRequest httpRequest) {
|
||||
long startTime = System.currentTimeMillis();
|
||||
String command = Optional.ofNullable(request.getCommand()).orElse("").trim();
|
||||
|
||||
if (StrUtil.isBlank(command)) {
|
||||
return AiParseResponseDto.builder()
|
||||
return AiParseResponseDTO.builder()
|
||||
.success(false)
|
||||
.error("命令不能为空")
|
||||
.functionCalls(Collections.emptyList())
|
||||
@@ -116,7 +116,7 @@ public class AiAssistantRecordServiceImpl
|
||||
|
||||
this.save(commandRecord);
|
||||
|
||||
return AiParseResponseDto.builder()
|
||||
return AiParseResponseDTO.builder()
|
||||
.parseLogId(commandRecord.getId())
|
||||
.success(parseResult.success())
|
||||
.functionCalls(parseResult.functionCalls())
|
||||
@@ -142,7 +142,7 @@ public class AiAssistantRecordServiceImpl
|
||||
return SYSTEM_PROMPT;
|
||||
}
|
||||
|
||||
private String buildUserPrompt(AiParseRequestDto request) {
|
||||
private String buildUserPrompt(AiParseRequestDTO request) {
|
||||
JSONObject payload = JSONUtil.createObj()
|
||||
.set("command", request.getCommand())
|
||||
.set("currentRoute", request.getCurrentRoute())
|
||||
@@ -180,7 +180,7 @@ public class AiAssistantRecordServiceImpl
|
||||
String provider = jsonObject.getStr("provider");
|
||||
String model = jsonObject.getStr("model");
|
||||
|
||||
List<AiFunctionCallDto> functionCalls = toFunctionCallList(jsonObject.getJSONArray("functionCalls"));
|
||||
List<AiFunctionCallDTO> functionCalls = toFunctionCallList(jsonObject.getJSONArray("functionCalls"));
|
||||
|
||||
return new ParseResult(success, explanation, confidence, error, provider, model, functionCalls);
|
||||
} catch (Exception ex) {
|
||||
@@ -188,12 +188,12 @@ public class AiAssistantRecordServiceImpl
|
||||
}
|
||||
}
|
||||
|
||||
private List<AiFunctionCallDto> toFunctionCallList(JSONArray array) {
|
||||
private List<AiFunctionCallDTO> toFunctionCallList(JSONArray array) {
|
||||
if (array == null || array.isEmpty()) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
List<AiFunctionCallDto> result = new ArrayList<>();
|
||||
List<AiFunctionCallDTO> result = new ArrayList<>();
|
||||
for (Object element : array) {
|
||||
JSONObject functionJson = JSONUtil.parseObj(element);
|
||||
Map<String, Object> arguments = Optional.ofNullable(functionJson.getJSONObject("arguments"))
|
||||
@@ -201,7 +201,7 @@ public class AiAssistantRecordServiceImpl
|
||||
}))
|
||||
.orElse(Collections.emptyMap());
|
||||
|
||||
result.add(AiFunctionCallDto.builder()
|
||||
result.add(AiFunctionCallDTO.builder()
|
||||
.name(functionJson.getStr("name"))
|
||||
.description(functionJson.getStr("description"))
|
||||
.arguments(arguments)
|
||||
@@ -217,17 +217,17 @@ public class AiAssistantRecordServiceImpl
|
||||
String error,
|
||||
String provider,
|
||||
String model,
|
||||
List<AiFunctionCallDto> functionCalls
|
||||
List<AiFunctionCallDTO> functionCalls
|
||||
) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object executeCommand(AiExecuteRequestDto request, HttpServletRequest httpRequest) throws Exception {
|
||||
public Object executeCommand(AiExecuteRequestDTO request, HttpServletRequest httpRequest) throws Exception {
|
||||
Long userId = SecurityUtils.getUserId();
|
||||
String username = SecurityUtils.getUsername();
|
||||
String ipAddress = JakartaServletUtil.getClientIP(httpRequest);
|
||||
|
||||
AiFunctionCallDto functionCall = request.getFunctionCall();
|
||||
AiFunctionCallDTO functionCall = request.getFunctionCall();
|
||||
|
||||
AiAssistantRecord commandRecord;
|
||||
if (StrUtil.isNotBlank(request.getParseLogId())) {
|
||||
@@ -264,7 +264,7 @@ public class AiAssistantRecordServiceImpl
|
||||
}
|
||||
}
|
||||
|
||||
private Object executeFunctionCall(AiFunctionCallDto functionCall) {
|
||||
private Object executeFunctionCall(AiFunctionCallDTO functionCall) {
|
||||
String functionName = functionCall.getName();
|
||||
Map<String, Object> arguments = functionCall.getArguments();
|
||||
|
||||
@@ -294,8 +294,8 @@ public class AiAssistantRecordServiceImpl
|
||||
}
|
||||
|
||||
@Override
|
||||
public IPage<AiAssistantRecordVo> getRecordPage(AiAssistantPageQuery queryParams) {
|
||||
Page<AiAssistantRecordVo> page = new Page<>(queryParams.getPageNum(), queryParams.getPageSize());
|
||||
public IPage<AiAssistantRecordVO> getRecordPage(AiAssistantPageQuery queryParams) {
|
||||
Page<AiAssistantRecordVO> page = new Page<>(queryParams.getPageNum(), queryParams.getPageSize());
|
||||
return this.baseMapper.getRecordPage(page, queryParams);
|
||||
}
|
||||
|
||||
|
||||
@@ -8,8 +8,8 @@ import com.youlai.boot.common.enums.LogModuleEnum;
|
||||
import com.youlai.boot.platform.codegen.service.CodegenService;
|
||||
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.vo.CodegenPreviewVo;
|
||||
import com.youlai.boot.platform.codegen.model.vo.TablePageVo;
|
||||
import com.youlai.boot.platform.codegen.model.vo.CodegenPreviewVO;
|
||||
import com.youlai.boot.platform.codegen.model.vo.TablePageVO;
|
||||
import com.youlai.boot.common.annotation.Log;
|
||||
import com.youlai.boot.platform.codegen.service.GenTableService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
@@ -46,10 +46,10 @@ public class CodegenController {
|
||||
@Operation(summary = "获取数据表分页列表")
|
||||
@GetMapping("/table/page")
|
||||
@Log(value = "代码生成分页列表", module = LogModuleEnum.OTHER)
|
||||
public PageResult<TablePageVo> getTablePage(
|
||||
public PageResult<TablePageVO> getTablePage(
|
||||
TablePageQuery queryParams
|
||||
) {
|
||||
Page<TablePageVo> result = codegenService.getTablePage(queryParams);
|
||||
Page<TablePageVO> result = codegenService.getTablePage(queryParams);
|
||||
return PageResult.success(result);
|
||||
}
|
||||
|
||||
@@ -82,9 +82,9 @@ public class CodegenController {
|
||||
@Operation(summary = "获取预览生成代码")
|
||||
@GetMapping("/{tableName}/preview")
|
||||
@Log(value = "预览生成代码", module = LogModuleEnum.OTHER)
|
||||
public Result<List<CodegenPreviewVo>> getTablePreviewData(@PathVariable String tableName,
|
||||
public Result<List<CodegenPreviewVO>> getTablePreviewData(@PathVariable String tableName,
|
||||
@RequestParam(value = "pageType", required = false, defaultValue = "classic") String pageType) {
|
||||
List<CodegenPreviewVo> list = codegenService.getCodegenPreviewData(tableName, pageType);
|
||||
List<CodegenPreviewVO> list = codegenService.getCodegenPreviewData(tableName, pageType);
|
||||
return Result.success(list);
|
||||
}
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ 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.TableMetaData;
|
||||
import com.youlai.boot.platform.codegen.model.query.TablePageQuery;
|
||||
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 java.util.List;
|
||||
@@ -27,7 +27,7 @@ public interface DatabaseMapper extends BaseMapper {
|
||||
* @param queryParams
|
||||
* @return
|
||||
*/
|
||||
Page<TablePageVo> getTablePage(Page<TablePageVo> page, TablePageQuery queryParams);
|
||||
Page<TablePageVO> getTablePage(Page<TablePageVO> page, TablePageQuery queryParams);
|
||||
|
||||
/**
|
||||
* 获取表字段列表
|
||||
|
||||
@@ -5,7 +5,7 @@ import lombok.Data;
|
||||
|
||||
@Schema(description = "代码生成代码预览Vo")
|
||||
@Data
|
||||
public class CodegenPreviewVo {
|
||||
public class CodegenPreviewVO {
|
||||
|
||||
@Schema(description = "生成文件路径")
|
||||
private String path;
|
||||
|
||||
@@ -6,7 +6,7 @@ import lombok.Data;
|
||||
|
||||
@Schema(description = "表视图对象")
|
||||
@Data
|
||||
public class TablePageVo {
|
||||
public class TablePageVO {
|
||||
|
||||
@Schema(description = "表名称", example = "sys_user")
|
||||
private String tableName;
|
||||
|
||||
@@ -2,8 +2,8 @@ package com.youlai.boot.platform.codegen.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.youlai.boot.platform.codegen.model.query.TablePageQuery;
|
||||
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.CodegenPreviewVO;
|
||||
import com.youlai.boot.platform.codegen.model.vo.TablePageVO;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -21,7 +21,7 @@ public interface CodegenService {
|
||||
* @param queryParams 查询参数
|
||||
* @return
|
||||
*/
|
||||
Page<TablePageVo> getTablePage(TablePageQuery queryParams);
|
||||
Page<TablePageVO> getTablePage(TablePageQuery queryParams);
|
||||
|
||||
/**
|
||||
* 获取预览生成代码
|
||||
@@ -29,7 +29,7 @@ public interface CodegenService {
|
||||
* @param tableName 表名
|
||||
* @return
|
||||
*/
|
||||
List<CodegenPreviewVo> getCodegenPreviewData(String tableName, String pageType);
|
||||
List<CodegenPreviewVO> getCodegenPreviewData(String tableName, String pageType);
|
||||
|
||||
/**
|
||||
* 下载代码
|
||||
|
||||
@@ -21,8 +21,8 @@ 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.GenTableColumn;
|
||||
import com.youlai.boot.platform.codegen.model.query.TablePageQuery;
|
||||
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.CodegenPreviewVO;
|
||||
import com.youlai.boot.platform.codegen.model.vo.TablePageVO;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
@@ -61,8 +61,8 @@ public class CodegenServiceImpl implements CodegenService {
|
||||
* @param queryParams 查询参数
|
||||
* @return 分页结果
|
||||
*/
|
||||
public Page<TablePageVo> getTablePage(TablePageQuery queryParams) {
|
||||
Page<TablePageVo> page = new Page<>(queryParams.getPageNum(), queryParams.getPageSize());
|
||||
public Page<TablePageVO> getTablePage(TablePageQuery queryParams) {
|
||||
Page<TablePageVO> page = new Page<>(queryParams.getPageNum(), queryParams.getPageSize());
|
||||
// 设置排除的表
|
||||
List<String> excludeTables = codegenProperties.getExcludeTables();
|
||||
queryParams.setExcludeTables(excludeTables);
|
||||
@@ -77,9 +77,9 @@ public class CodegenServiceImpl implements CodegenService {
|
||||
* @return 预览数据
|
||||
*/
|
||||
@Override
|
||||
public List<CodegenPreviewVo> getCodegenPreviewData(String tableName, String pageType) {
|
||||
public List<CodegenPreviewVO> getCodegenPreviewData(String tableName, String pageType) {
|
||||
|
||||
List<CodegenPreviewVo> list = new ArrayList<>();
|
||||
List<CodegenPreviewVO> list = new ArrayList<>();
|
||||
|
||||
GenTable genTable = genTableService.getOne(new LambdaQueryWrapper<GenTable>()
|
||||
.eq(GenTable::getTableName, tableName)
|
||||
@@ -100,7 +100,7 @@ public class CodegenServiceImpl implements CodegenService {
|
||||
// 遍历模板配置
|
||||
Map<String, CodegenProperties.TemplateConfig> templateConfigs = codegenProperties.getTemplateConfigs();
|
||||
for (Map.Entry<String, CodegenProperties.TemplateConfig> templateConfigEntry : templateConfigs.entrySet()) {
|
||||
CodegenPreviewVo previewVo = new CodegenPreviewVo();
|
||||
CodegenPreviewVO previewVo = new CodegenPreviewVO();
|
||||
|
||||
CodegenProperties.TemplateConfig templateConfig = templateConfigEntry.getValue();
|
||||
|
||||
@@ -325,9 +325,9 @@ public class CodegenServiceImpl implements CodegenService {
|
||||
* @param ui 页面类型
|
||||
*/
|
||||
private void generateAndZipCode(String tableName, ZipOutputStream zip, String ui) {
|
||||
List<CodegenPreviewVo> codePreviewList = getCodegenPreviewData(tableName, ui);
|
||||
List<CodegenPreviewVO> codePreviewList = getCodegenPreviewData(tableName, ui);
|
||||
|
||||
for (CodegenPreviewVo codePreview : codePreviewList) {
|
||||
for (CodegenPreviewVO codePreview : codePreviewList) {
|
||||
String fileName = codePreview.getFileName();
|
||||
String content = codePreview.getContent();
|
||||
String path = codePreview.getPath();
|
||||
|
||||
@@ -101,7 +101,7 @@ public class WebSocketServiceImpl implements WebSocketService {
|
||||
*
|
||||
* @return 在线用户信息列表
|
||||
*/
|
||||
public List<UserSessionRegistry.OnlineUserDto> getOnlineUsers() {
|
||||
public List<UserSessionRegistry.OnlineUserDTO> getOnlineUsers() {
|
||||
return userSessionRegistry.getOnlineUsers();
|
||||
}
|
||||
|
||||
|
||||
@@ -66,7 +66,7 @@ public class UserSessionRegistry {
|
||||
return sessions != null && !sessions.isEmpty();
|
||||
}
|
||||
|
||||
public List<OnlineUserDto> getOnlineUsers() {
|
||||
public List<OnlineUserDTO> getOnlineUsers() {
|
||||
return userSessionsMap.entrySet().stream()
|
||||
.map(entry -> {
|
||||
String username = entry.getKey();
|
||||
@@ -78,7 +78,7 @@ public class UserSessionRegistry {
|
||||
.min()
|
||||
.orElse(System.currentTimeMillis());
|
||||
|
||||
return new OnlineUserDto(username, sessions.size(), earliestLoginTime);
|
||||
return new OnlineUserDTO(username, sessions.size(), earliestLoginTime);
|
||||
})
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
@@ -95,7 +95,7 @@ public class UserSessionRegistry {
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public static class OnlineUserDto {
|
||||
public static class OnlineUserDTO {
|
||||
private String username;
|
||||
private int sessionCount;
|
||||
private long loginTime;
|
||||
|
||||
@@ -7,7 +7,7 @@ import com.youlai.boot.core.web.Result;
|
||||
import com.youlai.boot.common.annotation.Log;
|
||||
import com.youlai.boot.system.model.form.ConfigForm;
|
||||
import com.youlai.boot.system.model.query.ConfigPageQuery;
|
||||
import com.youlai.boot.system.model.vo.ConfigVo;
|
||||
import com.youlai.boot.system.model.vo.ConfigVO;
|
||||
import com.youlai.boot.system.service.ConfigService;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
import jakarta.validation.Valid;
|
||||
@@ -38,8 +38,8 @@ public class ConfigController {
|
||||
@GetMapping("/page")
|
||||
@PreAuthorize("@ss.hasPerm('sys:config:list')")
|
||||
@Log( value = "系统配置分页列表",module = LogModuleEnum.SETTING)
|
||||
public PageResult<ConfigVo> page(@ParameterObject ConfigPageQuery configPageQuery) {
|
||||
IPage<ConfigVo> result = configService.page(configPageQuery);
|
||||
public PageResult<ConfigVO> page(@ParameterObject ConfigPageQuery configPageQuery) {
|
||||
IPage<ConfigVO> result = configService.page(configPageQuery);
|
||||
return PageResult.success(result);
|
||||
}
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ import com.youlai.boot.common.model.Option;
|
||||
import com.youlai.boot.core.web.Result;
|
||||
import com.youlai.boot.system.model.form.DeptForm;
|
||||
import com.youlai.boot.system.model.query.DeptQuery;
|
||||
import com.youlai.boot.system.model.vo.DeptVo;
|
||||
import com.youlai.boot.system.model.vo.DeptVO;
|
||||
import com.youlai.boot.common.annotation.Log;
|
||||
import com.youlai.boot.system.service.DeptService;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
@@ -36,10 +36,10 @@ public class DeptController {
|
||||
@Operation(summary = "部门列表")
|
||||
@GetMapping
|
||||
@Log( value = "部门列表",module = LogModuleEnum.DEPT)
|
||||
public Result<List<DeptVo>> getDeptList(
|
||||
public Result<List<DeptVO>> getDeptList(
|
||||
DeptQuery queryParams
|
||||
) {
|
||||
List<DeptVo> list = deptService.getDeptList(queryParams);
|
||||
List<DeptVO> list = deptService.getDeptList(queryParams);
|
||||
return Result.success(list);
|
||||
}
|
||||
|
||||
|
||||
@@ -8,9 +8,9 @@ import com.youlai.boot.common.enums.LogModuleEnum;
|
||||
import com.youlai.boot.system.model.form.DictItemForm;
|
||||
import com.youlai.boot.system.model.query.DictItemPageQuery;
|
||||
import com.youlai.boot.system.model.query.DictPageQuery;
|
||||
import com.youlai.boot.system.model.vo.DictItemOptionVo;
|
||||
import com.youlai.boot.system.model.vo.DictItemPageVo;
|
||||
import com.youlai.boot.system.model.vo.DictPageVo;
|
||||
import com.youlai.boot.system.model.vo.DictItemOptionVO;
|
||||
import com.youlai.boot.system.model.vo.DictItemPageVO;
|
||||
import com.youlai.boot.system.model.vo.DictPageVO;
|
||||
import com.youlai.boot.common.annotation.RepeatSubmit;
|
||||
import com.youlai.boot.system.model.form.DictForm;
|
||||
import com.youlai.boot.common.annotation.Log;
|
||||
@@ -50,10 +50,10 @@ public class DictController {
|
||||
@Operation(summary = "字典分页列表")
|
||||
@GetMapping("/page")
|
||||
@Log( value = "字典分页列表",module = LogModuleEnum.DICT)
|
||||
public PageResult<DictPageVo> getDictPage(
|
||||
public PageResult<DictPageVO> getDictPage(
|
||||
DictPageQuery queryParams
|
||||
) {
|
||||
Page<DictPageVo> result = dictService.getDictPage(queryParams);
|
||||
Page<DictPageVO> result = dictService.getDictPage(queryParams);
|
||||
return PageResult.success(result);
|
||||
}
|
||||
|
||||
@@ -127,21 +127,21 @@ public class DictController {
|
||||
//---------------------------------------------------
|
||||
@Operation(summary = "字典项分页列表")
|
||||
@GetMapping("/{dictCode}/items/page")
|
||||
public PageResult<DictItemPageVo> getDictItemPage(
|
||||
public PageResult<DictItemPageVO> getDictItemPage(
|
||||
@PathVariable String dictCode,
|
||||
DictItemPageQuery queryParams
|
||||
) {
|
||||
queryParams.setDictCode(dictCode);
|
||||
Page<DictItemPageVo> result = dictItemService.getDictItemPage(queryParams);
|
||||
Page<DictItemPageVO> result = dictItemService.getDictItemPage(queryParams);
|
||||
return PageResult.success(result);
|
||||
}
|
||||
|
||||
@Operation(summary = "字典项列表")
|
||||
@GetMapping("/{dictCode}/items")
|
||||
public Result<List<DictItemOptionVo>> getDictItems(
|
||||
public Result<List<DictItemOptionVO>> getDictItems(
|
||||
@Parameter(description = "字典编码") @PathVariable String dictCode
|
||||
) {
|
||||
List<DictItemOptionVo> list = dictItemService.getDictItems(dictCode);
|
||||
List<DictItemOptionVO> list = dictItemService.getDictItems(dictCode);
|
||||
return Result.success(list);
|
||||
}
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ package com.youlai.boot.system.controller;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.youlai.boot.core.web.PageResult;
|
||||
import com.youlai.boot.system.model.query.LogPageQuery;
|
||||
import com.youlai.boot.system.model.vo.LogPageVo;
|
||||
import com.youlai.boot.system.model.vo.LogPageVO;
|
||||
import com.youlai.boot.system.service.LogService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
@@ -26,10 +26,10 @@ public class LogController {
|
||||
|
||||
@Operation(summary = "日志分页列表")
|
||||
@GetMapping("/page")
|
||||
public PageResult<LogPageVo> getLogPage(
|
||||
public PageResult<LogPageVO> getLogPage(
|
||||
LogPageQuery queryParams
|
||||
) {
|
||||
Page<LogPageVo> result = logService.getLogPage(queryParams);
|
||||
Page<LogPageVO> result = logService.getLogPage(queryParams);
|
||||
return PageResult.success(result);
|
||||
}
|
||||
|
||||
|
||||
@@ -7,8 +7,8 @@ import com.youlai.boot.common.model.Option;
|
||||
import com.youlai.boot.core.web.Result;
|
||||
import com.youlai.boot.system.model.form.MenuForm;
|
||||
import com.youlai.boot.system.model.query.MenuQuery;
|
||||
import com.youlai.boot.system.model.vo.MenuVo;
|
||||
import com.youlai.boot.system.model.vo.RouteVo;
|
||||
import com.youlai.boot.system.model.vo.MenuVO;
|
||||
import com.youlai.boot.system.model.vo.RouteVO;
|
||||
import com.youlai.boot.system.service.MenuService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
@@ -38,8 +38,8 @@ public class MenuController {
|
||||
@Operation(summary = "菜单列表")
|
||||
@GetMapping
|
||||
@Log(value = "菜单列表", module = LogModuleEnum.MENU)
|
||||
public Result<List<MenuVo>> getMenus(MenuQuery queryParams) {
|
||||
List<MenuVo> menuList = menuService.listMenus(queryParams);
|
||||
public Result<List<MenuVO>> getMenus(MenuQuery queryParams) {
|
||||
List<MenuVO> menuList = menuService.listMenus(queryParams);
|
||||
return Result.success(menuList);
|
||||
}
|
||||
|
||||
@@ -55,8 +55,8 @@ public class MenuController {
|
||||
|
||||
@Operation(summary = "当前用户菜单路由列表")
|
||||
@GetMapping("/routes")
|
||||
public Result<List<RouteVo>> getCurrentUserRoutes() {
|
||||
List<RouteVo> routeList = menuService.listCurrentUserRoutes();
|
||||
public Result<List<RouteVO>> getCurrentUserRoutes() {
|
||||
List<RouteVO> routeList = menuService.listCurrentUserRoutes();
|
||||
return Result.success(routeList);
|
||||
}
|
||||
|
||||
|
||||
@@ -5,9 +5,9 @@ import com.youlai.boot.core.web.PageResult;
|
||||
import com.youlai.boot.core.web.Result;
|
||||
import com.youlai.boot.system.model.form.NoticeForm;
|
||||
import com.youlai.boot.system.model.query.NoticePageQuery;
|
||||
import com.youlai.boot.system.model.vo.NoticeDetailVo;
|
||||
import com.youlai.boot.system.model.vo.NoticePageVo;
|
||||
import com.youlai.boot.system.model.vo.UserNoticePageVo;
|
||||
import com.youlai.boot.system.model.vo.NoticeDetailVO;
|
||||
import com.youlai.boot.system.model.vo.NoticePageVO;
|
||||
import com.youlai.boot.system.model.vo.UserNoticePageVO;
|
||||
import com.youlai.boot.system.service.NoticeService;
|
||||
import com.youlai.boot.system.service.UserNoticeService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
@@ -38,8 +38,8 @@ public class NoticeController {
|
||||
@Operation(summary = "通知公告分页列表")
|
||||
@GetMapping("/page")
|
||||
@PreAuthorize("@ss.hasPerm('sys:notice:list')")
|
||||
public PageResult<NoticePageVo> getNoticePage(NoticePageQuery queryParams) {
|
||||
IPage<NoticePageVo> result = noticeService.getNoticePage(queryParams);
|
||||
public PageResult<NoticePageVO> getNoticePage(NoticePageQuery queryParams) {
|
||||
IPage<NoticePageVO> result = noticeService.getNoticePage(queryParams);
|
||||
return PageResult.success(result);
|
||||
}
|
||||
|
||||
@@ -63,10 +63,10 @@ public class NoticeController {
|
||||
|
||||
@Operation(summary = "阅读获取通知公告详情")
|
||||
@GetMapping("/{id}/detail")
|
||||
public Result<NoticeDetailVo> getNoticeDetail(
|
||||
public Result<NoticeDetailVO> getNoticeDetail(
|
||||
@Parameter(description = "通知公告ID") @PathVariable Long id
|
||||
) {
|
||||
NoticeDetailVo detailVo = noticeService.getNoticeDetail(id);
|
||||
NoticeDetailVO detailVo = noticeService.getNoticeDetail(id);
|
||||
return Result.success(detailVo);
|
||||
}
|
||||
|
||||
@@ -120,10 +120,10 @@ public class NoticeController {
|
||||
|
||||
@Operation(summary = "获取我的通知公告分页列表")
|
||||
@GetMapping("/my")
|
||||
public PageResult<UserNoticePageVo> getMyNoticePage(
|
||||
public PageResult<UserNoticePageVO> getMyNoticePage(
|
||||
NoticePageQuery queryParams
|
||||
) {
|
||||
IPage<UserNoticePageVo> result = noticeService.getMyNoticePage(queryParams);
|
||||
IPage<UserNoticePageVO> result = noticeService.getMyNoticePage(queryParams);
|
||||
return PageResult.success(result);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@ import com.youlai.boot.core.web.PageResult;
|
||||
import com.youlai.boot.core.web.Result;
|
||||
import com.youlai.boot.system.model.form.RoleForm;
|
||||
import com.youlai.boot.system.model.query.RolePageQuery;
|
||||
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.system.service.RoleService;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
@@ -39,10 +39,10 @@ public class RoleController {
|
||||
@Operation(summary = "角色分页列表")
|
||||
@GetMapping("/page")
|
||||
@Log(value = "角色分页列表", module = LogModuleEnum.ROLE)
|
||||
public PageResult<RolePageVo> getRolePage(
|
||||
public PageResult<RolePageVO> getRolePage(
|
||||
RolePageQuery queryParams
|
||||
) {
|
||||
Page<RolePageVo> result = roleService.getRolePage(queryParams);
|
||||
Page<RolePageVO> result = roleService.getRolePage(queryParams);
|
||||
return PageResult.success(result);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
package com.youlai.boot.system.controller;
|
||||
|
||||
import com.youlai.boot.core.web.Result;
|
||||
import com.youlai.boot.system.model.vo.VisitStatsVo;
|
||||
import com.youlai.boot.system.model.vo.VisitTrendVo;
|
||||
import com.youlai.boot.system.model.vo.VisitStatsVO;
|
||||
import com.youlai.boot.system.model.vo.VisitTrendVO;
|
||||
import com.youlai.boot.system.service.LogService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
@@ -28,20 +28,20 @@ public class StatisticsController {
|
||||
|
||||
@Operation(summary = "访问趋势统计")
|
||||
@GetMapping("/visits/trend")
|
||||
public Result<VisitTrendVo> getVisitTrend(
|
||||
public Result<VisitTrendVO> getVisitTrend(
|
||||
@Parameter(description = "开始时间", example = "2024-01-01") @RequestParam String startDate,
|
||||
@Parameter(description = "结束时间", example = "2024-12-31") @RequestParam String endDate
|
||||
) {
|
||||
LocalDate start = LocalDate.parse(startDate);
|
||||
LocalDate end = LocalDate.parse(endDate);
|
||||
VisitTrendVo data = logService.getVisitTrend(start, end);
|
||||
VisitTrendVO data = logService.getVisitTrend(start, end);
|
||||
return Result.success(data);
|
||||
}
|
||||
|
||||
@Operation(summary = "访问概览统计")
|
||||
@GetMapping("/visits/overview")
|
||||
public Result<VisitStatsVo> getVisitOverview() {
|
||||
VisitStatsVo result = logService.getVisitStats();
|
||||
public Result<VisitStatsVO> getVisitOverview() {
|
||||
VisitStatsVO result = logService.getVisitStats();
|
||||
return Result.success(result);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,14 +14,14 @@ import com.youlai.boot.core.web.Result;
|
||||
import com.youlai.boot.common.util.ExcelUtils;
|
||||
import com.youlai.boot.security.util.SecurityUtils;
|
||||
import com.youlai.boot.system.listener.UserImportListener;
|
||||
import com.youlai.boot.system.model.dto.UserExportDto;
|
||||
import com.youlai.boot.system.model.dto.UserImportDto;
|
||||
import com.youlai.boot.system.model.dto.UserExportDTO;
|
||||
import com.youlai.boot.system.model.dto.UserImportDTO;
|
||||
import com.youlai.boot.system.model.entity.User;
|
||||
import com.youlai.boot.system.model.form.*;
|
||||
import com.youlai.boot.system.model.query.UserPageQuery;
|
||||
import com.youlai.boot.system.model.dto.CurrentUserDto;
|
||||
import com.youlai.boot.system.model.vo.UserPageVo;
|
||||
import com.youlai.boot.system.model.vo.UserProfileVo;
|
||||
import com.youlai.boot.system.model.dto.CurrentUserDTO;
|
||||
import com.youlai.boot.system.model.vo.UserPageVO;
|
||||
import com.youlai.boot.system.model.vo.UserProfileVO;
|
||||
import com.youlai.boot.system.service.UserService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
@@ -59,10 +59,10 @@ public class UserController {
|
||||
@Operation(summary = "用户分页列表")
|
||||
@GetMapping("/page")
|
||||
@Log(value = "用户分页列表", module = LogModuleEnum.USER)
|
||||
public PageResult<UserPageVo> getUserPage(
|
||||
public PageResult<UserPageVO> getUserPage(
|
||||
@Valid UserPageQuery queryParams
|
||||
) {
|
||||
IPage<UserPageVo> result = userService.getUserPage(queryParams);
|
||||
IPage<UserPageVO> result = userService.getUserPage(queryParams);
|
||||
return PageResult.success(result);
|
||||
}
|
||||
|
||||
@@ -130,8 +130,8 @@ public class UserController {
|
||||
@Operation(summary = "获取当前登录用户信息")
|
||||
@GetMapping("/me")
|
||||
@Log(value = "获取当前登录用户信息", module = LogModuleEnum.USER)
|
||||
public Result<CurrentUserDto> getCurrentUser() {
|
||||
CurrentUserDto currentUserDto = userService.getCurrentUserInfo();
|
||||
public Result<CurrentUserDTO> getCurrentUser() {
|
||||
CurrentUserDTO currentUserDto = userService.getCurrentUserInfo();
|
||||
return Result.success(currentUserDto);
|
||||
}
|
||||
|
||||
@@ -160,7 +160,7 @@ public class UserController {
|
||||
@Log(value = "导入用户", module = LogModuleEnum.USER)
|
||||
public Result<ExcelResult> importUsers(MultipartFile file) throws IOException {
|
||||
UserImportListener listener = new UserImportListener();
|
||||
ExcelUtils.importExcel(file.getInputStream(), UserImportDto.class, listener);
|
||||
ExcelUtils.importExcel(file.getInputStream(), UserImportDTO.class, listener);
|
||||
return Result.success(listener.getExcelResult());
|
||||
}
|
||||
|
||||
@@ -173,17 +173,17 @@ public class UserController {
|
||||
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
|
||||
response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode(fileName, StandardCharsets.UTF_8));
|
||||
|
||||
List<UserExportDto> exportUserList = userService.listExportUsers(queryParams);
|
||||
EasyExcel.write(response.getOutputStream(), UserExportDto.class).sheet("用户列表")
|
||||
List<UserExportDTO> exportUserList = userService.listExportUsers(queryParams);
|
||||
EasyExcel.write(response.getOutputStream(), UserExportDTO.class).sheet("用户列表")
|
||||
.doWrite(exportUserList);
|
||||
}
|
||||
|
||||
@Operation(summary = "获取个人中心用户信息")
|
||||
@GetMapping("/profile")
|
||||
@Log(value = "获取个人中心用户信息", module = LogModuleEnum.USER)
|
||||
public Result<UserProfileVo> getUserProfile() {
|
||||
public Result<UserProfileVO> getUserProfile() {
|
||||
Long userId = SecurityUtils.getUserId();
|
||||
UserProfileVo userProfile = userService.getUserProfile(userId);
|
||||
UserProfileVO userProfile = userService.getUserProfile(userId);
|
||||
return Result.success(userProfile);
|
||||
}
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@ package com.youlai.boot.system.converter;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.youlai.boot.system.model.entity.Config;
|
||||
import com.youlai.boot.system.model.vo.ConfigVo;
|
||||
import com.youlai.boot.system.model.vo.ConfigVO;
|
||||
import com.youlai.boot.system.model.form.ConfigForm;
|
||||
import org.mapstruct.Mapper;
|
||||
|
||||
@@ -15,7 +15,7 @@ import org.mapstruct.Mapper;
|
||||
@Mapper(componentModel = "spring")
|
||||
public interface ConfigConverter {
|
||||
|
||||
Page<ConfigVo> toPageVo(Page<Config> page);
|
||||
Page<ConfigVO> toPageVo(Page<Config> page);
|
||||
|
||||
Config toEntity(ConfigForm configForm);
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.youlai.boot.system.converter;
|
||||
|
||||
import com.youlai.boot.system.model.entity.Dept;
|
||||
import com.youlai.boot.system.model.vo.DeptVo;
|
||||
import com.youlai.boot.system.model.vo.DeptVO;
|
||||
import com.youlai.boot.system.model.form.DeptForm;
|
||||
import org.mapstruct.Mapper;
|
||||
|
||||
@@ -16,7 +16,7 @@ public interface DeptConverter {
|
||||
|
||||
DeptForm toForm(Dept entity);
|
||||
|
||||
DeptVo toVo(Dept entity);
|
||||
DeptVO toVo(Dept entity);
|
||||
|
||||
Dept toEntity(DeptForm deptForm);
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@ package com.youlai.boot.system.converter;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.youlai.boot.system.model.entity.Dict;
|
||||
import com.youlai.boot.system.model.vo.DictPageVo;
|
||||
import com.youlai.boot.system.model.vo.DictPageVO;
|
||||
import com.youlai.boot.system.model.form.DictForm;
|
||||
import org.mapstruct.Mapper;
|
||||
|
||||
@@ -15,7 +15,7 @@ import org.mapstruct.Mapper;
|
||||
@Mapper(componentModel = "spring")
|
||||
public interface DictConverter {
|
||||
|
||||
Page<DictPageVo> toPageVo(Page<Dict> page);
|
||||
Page<DictPageVO> toPageVo(Page<Dict> page);
|
||||
|
||||
DictForm toForm(Dict entity);
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ package com.youlai.boot.system.converter;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.youlai.boot.system.model.entity.DictItem;
|
||||
import com.youlai.boot.system.model.form.DictItemForm;
|
||||
import com.youlai.boot.system.model.vo.DictPageVo;
|
||||
import com.youlai.boot.system.model.vo.DictPageVO;
|
||||
import com.youlai.boot.common.model.Option;
|
||||
import org.mapstruct.Mapper;
|
||||
|
||||
@@ -18,7 +18,7 @@ import java.util.List;
|
||||
@Mapper(componentModel = "spring")
|
||||
public interface DictItemConverter {
|
||||
|
||||
Page<DictPageVo> toPageVo(Page<DictItem> page);
|
||||
Page<DictPageVO> toPageVo(Page<DictItem> page);
|
||||
|
||||
DictItemForm toForm(DictItem entity);
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.youlai.boot.system.converter;
|
||||
|
||||
import com.youlai.boot.system.model.entity.Menu;
|
||||
import com.youlai.boot.system.model.vo.MenuVo;
|
||||
import com.youlai.boot.system.model.vo.MenuVO;
|
||||
import com.youlai.boot.system.model.form.MenuForm;
|
||||
import org.mapstruct.Mapper;
|
||||
import org.mapstruct.Mapping;
|
||||
@@ -15,7 +15,7 @@ import org.mapstruct.Mapping;
|
||||
@Mapper(componentModel = "spring")
|
||||
public interface MenuConverter {
|
||||
|
||||
MenuVo toVo(Menu entity);
|
||||
MenuVO toVo(Menu entity);
|
||||
|
||||
@Mapping(target = "params", ignore = true)
|
||||
MenuForm toForm(Menu entity);
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
package com.youlai.boot.system.converter;
|
||||
|
||||
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.form.NoticeForm;
|
||||
import com.youlai.boot.system.model.vo.NoticeDetailVo;
|
||||
import com.youlai.boot.system.model.vo.NoticePageVo;
|
||||
import com.youlai.boot.system.model.vo.NoticeDetailVO;
|
||||
import com.youlai.boot.system.model.vo.NoticePageVO;
|
||||
import org.mapstruct.Mapper;
|
||||
import org.mapstruct.Mapping;
|
||||
import org.mapstruct.Mappings;
|
||||
@@ -30,9 +30,9 @@ public interface NoticeConverter{
|
||||
})
|
||||
Notice toEntity(NoticeForm formData);
|
||||
|
||||
NoticePageVo toPageVo(NoticeBo bo);
|
||||
NoticePageVO toPageVo(NoticeBO bo);
|
||||
|
||||
Page<NoticePageVo> toPageVo(Page<NoticeBo> noticePage);
|
||||
Page<NoticePageVO> toPageVo(Page<NoticeBO> noticePage);
|
||||
|
||||
NoticeDetailVo toDetailVo(NoticeBo noticeBo);
|
||||
NoticeDetailVO toDetailVo(NoticeBO noticeBo);
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@ package com.youlai.boot.system.converter;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.youlai.boot.system.model.entity.Role;
|
||||
import com.youlai.boot.system.model.vo.RolePageVo;
|
||||
import com.youlai.boot.system.model.vo.RolePageVO;
|
||||
import com.youlai.boot.common.model.Option;
|
||||
import com.youlai.boot.system.model.form.RoleForm;
|
||||
import org.mapstruct.Mapper;
|
||||
@@ -20,7 +20,7 @@ import java.util.List;
|
||||
@Mapper(componentModel = "spring")
|
||||
public interface RoleConverter {
|
||||
|
||||
Page<RolePageVo> toPageVo(Page<Role> page);
|
||||
Page<RolePageVO> toPageVo(Page<Role> page);
|
||||
|
||||
@Mappings({
|
||||
@Mapping(target = "value", source = "id"),
|
||||
|
||||
@@ -3,12 +3,12 @@ package com.youlai.boot.system.converter;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.youlai.boot.common.model.Option;
|
||||
import com.youlai.boot.system.model.entity.User;
|
||||
import com.youlai.boot.system.model.dto.CurrentUserDto;
|
||||
import com.youlai.boot.system.model.vo.UserPageVo;
|
||||
import com.youlai.boot.system.model.vo.UserProfileVo;
|
||||
import com.youlai.boot.system.model.bo.UserBo;
|
||||
import com.youlai.boot.system.model.dto.CurrentUserDTO;
|
||||
import com.youlai.boot.system.model.vo.UserPageVO;
|
||||
import com.youlai.boot.system.model.vo.UserProfileVO;
|
||||
import com.youlai.boot.system.model.bo.UserBO;
|
||||
import com.youlai.boot.system.model.form.UserForm;
|
||||
import com.youlai.boot.system.model.dto.UserImportDto;
|
||||
import com.youlai.boot.system.model.dto.UserImportDTO;
|
||||
import com.youlai.boot.system.model.form.UserProfileForm;
|
||||
import org.mapstruct.InheritInverseConfiguration;
|
||||
import org.mapstruct.Mapper;
|
||||
@@ -26,9 +26,9 @@ import java.util.List;
|
||||
@Mapper(componentModel = "spring")
|
||||
public interface UserConverter {
|
||||
|
||||
UserPageVo toPageVo(UserBo bo);
|
||||
UserPageVO toPageVo(UserBO bo);
|
||||
|
||||
Page<UserPageVo> toPageVo(Page<UserBo> bo);
|
||||
Page<UserPageVO> toPageVo(Page<UserBO> bo);
|
||||
|
||||
UserForm toForm(User entity);
|
||||
|
||||
@@ -38,12 +38,12 @@ public interface UserConverter {
|
||||
@Mappings({
|
||||
@Mapping(target = "userId", source = "id")
|
||||
})
|
||||
CurrentUserDto toCurrentUserDto(User entity);
|
||||
CurrentUserDTO toCurrentUserDto(User entity);
|
||||
|
||||
User toEntity(UserImportDto vo);
|
||||
User toEntity(UserImportDTO vo);
|
||||
|
||||
|
||||
UserProfileVo toProfileVo(UserBo bo);
|
||||
UserProfileVO toProfileVo(UserBO bo);
|
||||
|
||||
User toEntity(UserProfileForm formData);
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ import com.youlai.boot.common.enums.StatusEnum;
|
||||
import com.youlai.boot.core.web.ExcelResult;
|
||||
import com.youlai.boot.system.converter.UserConverter;
|
||||
import com.youlai.boot.system.enums.DictCodeEnum;
|
||||
import com.youlai.boot.system.model.dto.UserImportDto;
|
||||
import com.youlai.boot.system.model.dto.UserImportDTO;
|
||||
import com.youlai.boot.system.model.entity.*;
|
||||
import com.youlai.boot.system.service.*;
|
||||
import lombok.Getter;
|
||||
@@ -35,7 +35,7 @@ import java.util.stream.Collectors;
|
||||
* @since 2022/4/10
|
||||
*/
|
||||
@Slf4j
|
||||
public class UserImportListener extends AnalysisEventListener<UserImportDto> {
|
||||
public class UserImportListener extends AnalysisEventListener<UserImportDTO> {
|
||||
|
||||
/**
|
||||
* Excel 导入结果
|
||||
@@ -85,7 +85,7 @@ public class UserImportListener extends AnalysisEventListener<UserImportDto> {
|
||||
* @param userImportDto 一行数据,类似于 {@link AnalysisContext#readRowHolder()}
|
||||
*/
|
||||
@Override
|
||||
public void invoke(UserImportDto userImportDto, AnalysisContext analysisContext) {
|
||||
public void invoke(UserImportDTO userImportDto, AnalysisContext analysisContext) {
|
||||
log.info("解析到一条用户数据:{}", JSONUtil.toJsonStr(userImportDto));
|
||||
|
||||
boolean validation = true;
|
||||
|
||||
@@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.youlai.boot.system.model.entity.DictItem;
|
||||
import com.youlai.boot.system.model.query.DictItemPageQuery;
|
||||
import com.youlai.boot.system.model.vo.DictItemPageVo;
|
||||
import com.youlai.boot.system.model.vo.DictItemPageVO;
|
||||
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, DictItemPageQuery queryParams);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.youlai.boot.system.model.entity.Dict;
|
||||
import com.youlai.boot.system.model.query.DictPageQuery;
|
||||
import com.youlai.boot.system.model.vo.DictPageVo;
|
||||
import com.youlai.boot.system.model.vo.DictPageVO;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
/**
|
||||
@@ -23,7 +23,7 @@ public interface DictMapper extends BaseMapper<Dict> {
|
||||
* @param queryParams 查询参数
|
||||
* @return 字典分页列表
|
||||
*/
|
||||
Page<DictPageVo> getDictPage(Page<DictPageVo> page, DictPageQuery queryParams);
|
||||
Page<DictPageVO> getDictPage(Page<DictPageVO> page, DictPageQuery queryParams);
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -2,11 +2,11 @@ package com.youlai.boot.system.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.youlai.boot.system.model.bo.VisitCountBo;
|
||||
import com.youlai.boot.system.model.bo.VisitStatsBo;
|
||||
import com.youlai.boot.system.model.bo.VisitCountBO;
|
||||
import com.youlai.boot.system.model.bo.VisitStatsBO;
|
||||
import com.youlai.boot.system.model.entity.Log;
|
||||
import com.youlai.boot.system.model.query.LogPageQuery;
|
||||
import com.youlai.boot.system.model.vo.LogPageVo;
|
||||
import com.youlai.boot.system.model.vo.LogPageVO;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
import java.util.List;
|
||||
@@ -24,7 +24,7 @@ public interface LogMapper extends BaseMapper<Log> {
|
||||
/**
|
||||
* 获取日志分页列表
|
||||
*/
|
||||
Page<LogPageVo> getLogPage(Page<LogPageVo> page, LogPageQuery queryParams);
|
||||
Page<LogPageVO> getLogPage(Page<LogPageVO> page, LogPageQuery queryParams);
|
||||
|
||||
/**
|
||||
* 统计浏览数(PV)
|
||||
@@ -32,7 +32,7 @@ public interface LogMapper extends BaseMapper<Log> {
|
||||
* @param startDate 开始日期 yyyy-MM-dd
|
||||
* @param endDate 结束日期 yyyy-MM-dd
|
||||
*/
|
||||
List<VisitCountBo> getPvCounts(String startDate, String endDate);
|
||||
List<VisitCountBO> getPvCounts(String startDate, String endDate);
|
||||
|
||||
/**
|
||||
* 统计IP数
|
||||
@@ -40,17 +40,17 @@ public interface LogMapper extends BaseMapper<Log> {
|
||||
* @param startDate 开始日期 yyyy-MM-dd
|
||||
* @param endDate 结束日期 yyyy-MM-dd
|
||||
*/
|
||||
List<VisitCountBo> getIpCounts(String startDate, String endDate);
|
||||
List<VisitCountBO> getIpCounts(String startDate, String endDate);
|
||||
|
||||
/**
|
||||
* 获取浏览量(PV)统计
|
||||
*/
|
||||
VisitStatsBo getPvStats();
|
||||
VisitStatsBO getPvStats();
|
||||
|
||||
/**
|
||||
* 获取访问IP统计
|
||||
*/
|
||||
VisitStatsBo getUvStats();
|
||||
VisitStatsBO getUvStats();
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -2,10 +2,10 @@ package com.youlai.boot.system.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
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.query.NoticePageQuery;
|
||||
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.Param;
|
||||
|
||||
@@ -25,7 +25,7 @@ public interface NoticeMapper extends BaseMapper<Notice> {
|
||||
* @param queryParams 查询参数
|
||||
* @return 通知公告分页数据
|
||||
*/
|
||||
Page<NoticeBo> getNoticePage(Page<NoticePageVo> page, NoticePageQuery queryParams);
|
||||
Page<NoticeBO> getNoticePage(Page<NoticePageVO> page, NoticePageQuery queryParams);
|
||||
|
||||
/**
|
||||
* 获取阅读时通知公告详情
|
||||
@@ -33,5 +33,5 @@ public interface NoticeMapper extends BaseMapper<Notice> {
|
||||
* @param id 通知公告ID
|
||||
* @return 通知公告详情
|
||||
*/
|
||||
NoticeBo getNoticeDetail(@Param("id") Long id);
|
||||
NoticeBO getNoticeDetail(@Param("id") Long id);
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.youlai.boot.system.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.youlai.boot.system.model.bo.RolePermsBo;
|
||||
import com.youlai.boot.system.model.bo.RolePermsBO;
|
||||
import com.youlai.boot.system.model.entity.RoleMenu;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
@@ -28,7 +28,7 @@ public interface RoleMenuMapper extends BaseMapper<RoleMenu> {
|
||||
/**
|
||||
* 获取权限和拥有权限的角色列表
|
||||
*/
|
||||
List<RolePermsBo> getRolePermsList(String roleCode);
|
||||
List<RolePermsBO> getRolePermsList(String roleCode);
|
||||
|
||||
|
||||
/**
|
||||
|
||||
@@ -2,13 +2,13 @@ package com.youlai.boot.system.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
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.query.UserPageQuery;
|
||||
import com.youlai.boot.system.model.form.UserForm;
|
||||
import com.youlai.boot.common.annotation.DataPermission;
|
||||
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 java.util.List;
|
||||
@@ -30,7 +30,7 @@ public interface UserMapper extends BaseMapper<User> {
|
||||
* @return 用户分页列表
|
||||
*/
|
||||
@DataPermission(deptAlias = "u", userAlias = "u")
|
||||
Page<UserBo> getUserPage(Page<UserBo> page, UserPageQuery queryParams);
|
||||
Page<UserBO> getUserPage(Page<UserBO> page, UserPageQuery queryParams);
|
||||
|
||||
/**
|
||||
* 获取用户表单详情
|
||||
@@ -83,7 +83,7 @@ public interface UserMapper extends BaseMapper<User> {
|
||||
* @return 导出用户列表
|
||||
*/
|
||||
@DataPermission(deptAlias = "u", userAlias = "u")
|
||||
List<UserExportDto> listExportUsers(UserPageQuery queryParams);
|
||||
List<UserExportDTO> listExportUsers(UserPageQuery queryParams);
|
||||
|
||||
/**
|
||||
* 获取用户个人中心信息
|
||||
@@ -91,6 +91,6 @@ public interface UserMapper extends BaseMapper<User> {
|
||||
* @param userId 用户ID
|
||||
* @return 用户个人中心信息
|
||||
*/
|
||||
UserBo getUserProfile(Long userId);
|
||||
UserBO getUserProfile(Long userId);
|
||||
|
||||
}
|
||||
|
||||
@@ -5,8 +5,8 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.youlai.boot.system.model.entity.UserNotice;
|
||||
import com.youlai.boot.system.model.query.NoticePageQuery;
|
||||
import com.youlai.boot.system.model.vo.NoticePageVo;
|
||||
import com.youlai.boot.system.model.vo.UserNoticePageVo;
|
||||
import com.youlai.boot.system.model.vo.NoticePageVO;
|
||||
import com.youlai.boot.system.model.vo.UserNoticePageVO;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
@@ -25,5 +25,5 @@ public interface UserNoticeMapper extends BaseMapper<UserNotice> {
|
||||
* @param queryParams 查询参数
|
||||
* @return 通知公告分页列表
|
||||
*/
|
||||
IPage<UserNoticePageVo> getMyNoticePage(Page<NoticePageVo> page, @Param("queryParams") NoticePageQuery queryParams);
|
||||
IPage<UserNoticePageVO> getMyNoticePage(Page<NoticePageVO> page, @Param("queryParams") NoticePageQuery queryParams);
|
||||
}
|
||||
|
||||
@@ -11,7 +11,7 @@ import java.time.LocalDateTime;
|
||||
* @since 2024-09-01 10:31
|
||||
*/
|
||||
@Data
|
||||
public class NoticeBo {
|
||||
public class NoticeBO {
|
||||
|
||||
/**
|
||||
* 通知ID
|
||||
|
||||
@@ -10,7 +10,7 @@ import java.util.Set;
|
||||
* @since 3.0.0
|
||||
*/
|
||||
@Data
|
||||
public class RolePermsBo {
|
||||
public class RolePermsBO {
|
||||
|
||||
/**
|
||||
* 角色编码
|
||||
|
||||
@@ -11,7 +11,7 @@ import java.time.LocalDateTime;
|
||||
* @since 2022/6/10
|
||||
*/
|
||||
@Data
|
||||
public class UserBo {
|
||||
public class UserBO {
|
||||
|
||||
/**
|
||||
* 用户ID
|
||||
|
||||
@@ -9,7 +9,7 @@ import lombok.Data;
|
||||
* @since 2.10.0
|
||||
*/
|
||||
@Data
|
||||
public class VisitCountBo {
|
||||
public class VisitCountBO {
|
||||
|
||||
/**
|
||||
* 日期 yyyy-MM-dd
|
||||
|
||||
@@ -14,7 +14,7 @@ import java.math.BigDecimal;
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
public class VisitStatsBo {
|
||||
public class VisitStatsBO {
|
||||
|
||||
@Schema(description = "今日访问量 (PV)")
|
||||
private Integer todayCount;
|
||||
|
||||
@@ -13,7 +13,7 @@ import java.util.Set;
|
||||
*/
|
||||
@Schema(description ="当前登录用户对象")
|
||||
@Data
|
||||
public class CurrentUserDto {
|
||||
public class CurrentUserDTO {
|
||||
|
||||
@Schema(description="用户ID")
|
||||
private Long userId;
|
||||
|
||||
@@ -13,7 +13,7 @@ import java.time.LocalDateTime;
|
||||
* @since 2024-9-2 14:32:58
|
||||
*/
|
||||
@Data
|
||||
public class NoticeDto {
|
||||
public class NoticeDTO {
|
||||
|
||||
@Schema(description = "通知ID")
|
||||
private Long id;
|
||||
|
||||
@@ -16,7 +16,7 @@ import java.time.LocalDateTime;
|
||||
|
||||
@Data
|
||||
@ColumnWidth(20)
|
||||
public class UserExportDto {
|
||||
public class UserExportDTO {
|
||||
|
||||
@ExcelProperty(value = "用户名")
|
||||
private String username;
|
||||
|
||||
@@ -10,7 +10,7 @@ import lombok.Data;
|
||||
* @since 2022/4/10
|
||||
*/
|
||||
@Data
|
||||
public class UserImportDto {
|
||||
public class UserImportDTO {
|
||||
|
||||
@ExcelProperty(value = "用户名")
|
||||
private String username;
|
||||
|
||||
@@ -12,7 +12,7 @@ import java.util.Set;
|
||||
* @since 3.0.0
|
||||
*/
|
||||
@Data
|
||||
public class UserSessionDto {
|
||||
public class UserSessionDTO {
|
||||
|
||||
/**
|
||||
* 用户名
|
||||
@@ -29,7 +29,7 @@ public class UserSessionDto {
|
||||
*/
|
||||
private long lastActiveTime;
|
||||
|
||||
public UserSessionDto(String username) {
|
||||
public UserSessionDTO(String username) {
|
||||
this.username = username;
|
||||
this.sessionIds = new HashSet<>();
|
||||
this.lastActiveTime = System.currentTimeMillis();
|
||||
|
||||
@@ -19,7 +19,7 @@ import java.io.Serializable;
|
||||
@Builder
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Schema(description = "系统配置Vo")
|
||||
public class ConfigVo {
|
||||
public class ConfigVO {
|
||||
|
||||
@Schema(description = "主键")
|
||||
private Long id;
|
||||
|
||||
@@ -9,7 +9,7 @@ import java.util.List;
|
||||
|
||||
@Schema(description = "部门视图对象")
|
||||
@Data
|
||||
public class DeptVo {
|
||||
public class DeptVO {
|
||||
|
||||
@Schema(description = "部门ID")
|
||||
private Long id;
|
||||
@@ -30,7 +30,7 @@ public class DeptVo {
|
||||
private Integer status;
|
||||
|
||||
@Schema(description = "子部门")
|
||||
private List<DeptVo> children;
|
||||
private List<DeptVO> children;
|
||||
|
||||
@Schema(description = "创建时间")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm")
|
||||
|
||||
@@ -13,7 +13,7 @@ import lombok.Setter;
|
||||
@Schema(description = "字典项键值对象")
|
||||
@Getter
|
||||
@Setter
|
||||
public class DictItemOptionVo {
|
||||
public class DictItemOptionVO {
|
||||
|
||||
@Schema(description = "字典项值")
|
||||
private String value;
|
||||
|
||||
@@ -14,7 +14,7 @@ import lombok.Setter;
|
||||
@Schema(description = "字典项分页对象")
|
||||
@Getter
|
||||
@Setter
|
||||
public class DictItemPageVo {
|
||||
public class DictItemPageVO {
|
||||
|
||||
@Schema(description = "字典项ID")
|
||||
private Long id;
|
||||
|
||||
@@ -13,7 +13,7 @@ import lombok.Setter;
|
||||
@Schema(description = "字典分页对象")
|
||||
@Getter
|
||||
@Setter
|
||||
public class DictPageVo {
|
||||
public class DictPageVO {
|
||||
|
||||
@Schema(description = "字典ID")
|
||||
private Long id;
|
||||
|
||||
@@ -16,7 +16,7 @@ import java.time.LocalDateTime;
|
||||
*/
|
||||
@Data
|
||||
@Schema(description = "系统日志分页Vo")
|
||||
public class LogPageVo implements Serializable {
|
||||
public class LogPageVO implements Serializable {
|
||||
|
||||
@Schema(description = "主键")
|
||||
private Long id;
|
||||
|
||||
@@ -8,7 +8,7 @@ import java.util.List;
|
||||
|
||||
@Schema(description ="菜单视图对象")
|
||||
@Data
|
||||
public class MenuVo {
|
||||
public class MenuVO {
|
||||
|
||||
@Schema(description = "菜单ID")
|
||||
private Long id;
|
||||
@@ -48,7 +48,7 @@ public class MenuVo {
|
||||
|
||||
@Schema(description = "子菜单")
|
||||
@JsonInclude(value = JsonInclude.Include.NON_NULL)
|
||||
private List<MenuVo> children;
|
||||
private List<MenuVO> children;
|
||||
}
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ import java.time.LocalDateTime;
|
||||
* @since 2024-9-8 01:25:06
|
||||
*/
|
||||
@Data
|
||||
public class NoticeDetailVo {
|
||||
public class NoticeDetailVO {
|
||||
|
||||
@Schema(description = "通知ID")
|
||||
private Long id;
|
||||
|
||||
@@ -18,7 +18,7 @@ import java.time.LocalDateTime;
|
||||
@Getter
|
||||
@Setter
|
||||
@Schema(description = "通知公告视图对象")
|
||||
public class NoticePageVo implements Serializable {
|
||||
public class NoticePageVO implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@@ -8,7 +8,7 @@ import java.time.LocalDateTime;
|
||||
|
||||
@Schema(description ="角色分页对象")
|
||||
@Data
|
||||
public class RolePageVo {
|
||||
public class RolePageVO {
|
||||
|
||||
@Schema(description="角色ID")
|
||||
private Long id;
|
||||
|
||||
@@ -16,7 +16,7 @@ import java.util.Map;
|
||||
@Schema(description = "路由对象")
|
||||
@Data
|
||||
@JsonInclude(JsonInclude.Include.NON_EMPTY)
|
||||
public class RouteVo {
|
||||
public class RouteVO {
|
||||
|
||||
@Schema(description = "路由路径", example = "user")
|
||||
private String path;
|
||||
@@ -59,7 +59,7 @@ public class RouteVo {
|
||||
}
|
||||
|
||||
@Schema(description = "子路由列表")
|
||||
private List<RouteVo> children;
|
||||
private List<RouteVO> children;
|
||||
}
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ import java.time.LocalDateTime;
|
||||
*/
|
||||
@Data
|
||||
@Schema(description = "用户公告Vo")
|
||||
public class UserNoticePageVo {
|
||||
public class UserNoticePageVO {
|
||||
|
||||
@Schema(description = "通知ID")
|
||||
private Long id;
|
||||
|
||||
@@ -14,7 +14,7 @@ import java.time.LocalDateTime;
|
||||
*/
|
||||
@Schema(description ="用户分页对象")
|
||||
@Data
|
||||
public class UserPageVo {
|
||||
public class UserPageVO {
|
||||
|
||||
@Schema(description="用户ID")
|
||||
private Long id;
|
||||
|
||||
@@ -14,7 +14,7 @@ import java.util.Date;
|
||||
*/
|
||||
@Schema(description = "个人中心用户信息")
|
||||
@Data
|
||||
public class UserProfileVo {
|
||||
public class UserProfileVO {
|
||||
|
||||
@Schema(description = "用户ID")
|
||||
private Long id;
|
||||
|
||||
@@ -15,7 +15,7 @@ import java.math.BigDecimal;
|
||||
@Schema(description = "访问量统计视图对象")
|
||||
@Getter
|
||||
@Setter
|
||||
public class VisitStatsVo {
|
||||
public class VisitStatsVO {
|
||||
|
||||
@Schema(description = "今日独立访客数 (UV)")
|
||||
private Integer todayUvCount;
|
||||
|
||||
@@ -15,7 +15,7 @@ import java.util.List;
|
||||
@Schema(description = "访问趋势Vo")
|
||||
@Getter
|
||||
@Setter
|
||||
public class VisitTrendVo {
|
||||
public class VisitTrendVO {
|
||||
|
||||
@Schema(description = "日期列表")
|
||||
private List<String> dates;
|
||||
|
||||
@@ -5,7 +5,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.youlai.boot.system.model.entity.Config;
|
||||
import com.youlai.boot.system.model.form.ConfigForm;
|
||||
import com.youlai.boot.system.model.query.ConfigPageQuery;
|
||||
import com.youlai.boot.system.model.vo.ConfigVo;
|
||||
import com.youlai.boot.system.model.vo.ConfigVO;
|
||||
|
||||
/**
|
||||
* 系统配置Service接口
|
||||
@@ -20,7 +20,7 @@ public interface ConfigService extends IService<Config> {
|
||||
* @param sysConfigPageQuery 查询参数
|
||||
* @return 系统配置分页列表
|
||||
*/
|
||||
IPage<ConfigVo> page(ConfigPageQuery sysConfigPageQuery);
|
||||
IPage<ConfigVO> page(ConfigPageQuery sysConfigPageQuery);
|
||||
|
||||
/**
|
||||
* 保存系统配置
|
||||
|
||||
@@ -5,7 +5,7 @@ import com.youlai.boot.system.model.entity.Dept;
|
||||
import com.youlai.boot.common.model.Option;
|
||||
import com.youlai.boot.system.model.form.DeptForm;
|
||||
import com.youlai.boot.system.model.query.DeptQuery;
|
||||
import com.youlai.boot.system.model.vo.DeptVo;
|
||||
import com.youlai.boot.system.model.vo.DeptVO;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -21,7 +21,7 @@ public interface DeptService extends IService<Dept> {
|
||||
*
|
||||
* @return 部门列表
|
||||
*/
|
||||
List<DeptVo> getDeptList(DeptQuery queryParams);
|
||||
List<DeptVO> getDeptList(DeptQuery queryParams);
|
||||
|
||||
/**
|
||||
* 部门树形下拉选项
|
||||
|
||||
@@ -5,8 +5,8 @@ import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.youlai.boot.system.model.entity.DictItem;
|
||||
import com.youlai.boot.system.model.form.DictItemForm;
|
||||
import com.youlai.boot.system.model.query.DictItemPageQuery;
|
||||
import com.youlai.boot.system.model.vo.DictItemOptionVo;
|
||||
import com.youlai.boot.system.model.vo.DictItemPageVo;
|
||||
import com.youlai.boot.system.model.vo.DictItemOptionVO;
|
||||
import com.youlai.boot.system.model.vo.DictItemPageVO;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -24,7 +24,7 @@ public interface DictItemService extends IService<DictItem> {
|
||||
* @param queryParams 查询参数
|
||||
* @return 字典项分页列表
|
||||
*/
|
||||
Page<DictItemPageVo> getDictItemPage(DictItemPageQuery queryParams);
|
||||
Page<DictItemPageVO> getDictItemPage(DictItemPageQuery queryParams);
|
||||
|
||||
/**
|
||||
* 获取字典项列表
|
||||
@@ -32,7 +32,7 @@ public interface DictItemService extends IService<DictItem> {
|
||||
* @param dictCode 字典编码
|
||||
* @return 字典项列表
|
||||
*/
|
||||
List<DictItemOptionVo> getDictItems(String dictCode);
|
||||
List<DictItemOptionVO> getDictItems(String dictCode);
|
||||
|
||||
/**
|
||||
* 获取字典项表单
|
||||
|
||||
@@ -6,8 +6,8 @@ import com.youlai.boot.common.model.Option;
|
||||
import com.youlai.boot.system.model.entity.Dict;
|
||||
import com.youlai.boot.system.model.form.DictForm;
|
||||
import com.youlai.boot.system.model.query.DictPageQuery;
|
||||
import com.youlai.boot.system.model.vo.DictItemOptionVo;
|
||||
import com.youlai.boot.system.model.vo.DictPageVo;
|
||||
import com.youlai.boot.system.model.vo.DictItemOptionVO;
|
||||
import com.youlai.boot.system.model.vo.DictPageVO;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -25,7 +25,7 @@ public interface DictService extends IService<Dict> {
|
||||
* @param queryParams 分页查询对象
|
||||
* @return 字典分页列表
|
||||
*/
|
||||
Page<DictPageVo> getDictPage(DictPageQuery queryParams);
|
||||
Page<DictPageVO> getDictPage(DictPageQuery queryParams);
|
||||
|
||||
/**
|
||||
* 获取字典列表
|
||||
|
||||
@@ -4,9 +4,9 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.youlai.boot.system.model.entity.Log;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.youlai.boot.system.model.query.LogPageQuery;
|
||||
import com.youlai.boot.system.model.vo.LogPageVo;
|
||||
import com.youlai.boot.system.model.vo.VisitStatsVo;
|
||||
import com.youlai.boot.system.model.vo.VisitTrendVo;
|
||||
import com.youlai.boot.system.model.vo.LogPageVO;
|
||||
import com.youlai.boot.system.model.vo.VisitStatsVO;
|
||||
import com.youlai.boot.system.model.vo.VisitTrendVO;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.util.List;
|
||||
@@ -22,7 +22,7 @@ public interface LogService extends IService<Log> {
|
||||
/**
|
||||
* 获取日志分页列表
|
||||
*/
|
||||
Page<LogPageVo> getLogPage(LogPageQuery queryParams);
|
||||
Page<LogPageVO> getLogPage(LogPageQuery queryParams);
|
||||
|
||||
|
||||
/**
|
||||
@@ -31,11 +31,11 @@ public interface LogService extends IService<Log> {
|
||||
* @param startDate 开始时间
|
||||
* @param endDate 结束时间
|
||||
*/
|
||||
VisitTrendVo getVisitTrend(LocalDate startDate, LocalDate endDate);
|
||||
VisitTrendVO getVisitTrend(LocalDate startDate, LocalDate endDate);
|
||||
|
||||
/**
|
||||
* 获取访问统计
|
||||
*/
|
||||
VisitStatsVo getVisitStats();
|
||||
VisitStatsVO getVisitStats();
|
||||
|
||||
}
|
||||
|
||||
@@ -6,8 +6,8 @@ import com.youlai.boot.system.model.form.MenuForm;
|
||||
import com.youlai.boot.common.model.Option;
|
||||
import com.youlai.boot.system.model.entity.Menu;
|
||||
import com.youlai.boot.system.model.query.MenuQuery;
|
||||
import com.youlai.boot.system.model.vo.MenuVo;
|
||||
import com.youlai.boot.system.model.vo.RouteVo;
|
||||
import com.youlai.boot.system.model.vo.MenuVO;
|
||||
import com.youlai.boot.system.model.vo.RouteVO;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
@@ -23,7 +23,7 @@ public interface MenuService extends IService<Menu> {
|
||||
/**
|
||||
* 获取菜单表格列表
|
||||
*/
|
||||
List<MenuVo> listMenus(MenuQuery queryParams);
|
||||
List<MenuVO> listMenus(MenuQuery queryParams);
|
||||
|
||||
/**
|
||||
* 获取菜单下拉列表
|
||||
@@ -42,14 +42,14 @@ public interface MenuService extends IService<Menu> {
|
||||
/**
|
||||
* 获取当前用户的菜单路由列表
|
||||
*/
|
||||
List<RouteVo> listCurrentUserRoutes();
|
||||
List<RouteVO> listCurrentUserRoutes();
|
||||
|
||||
/**
|
||||
* 获取当前用户的菜单路由列表(指定数据源)
|
||||
*
|
||||
* @param datasource 数据源名称,如:master(主库)、naiveui(NaiveUI数据库)、template(模板数据库)
|
||||
*/
|
||||
List<RouteVo> listCurrentUserRoutes(String datasource);
|
||||
List<RouteVO> listCurrentUserRoutes(String datasource);
|
||||
|
||||
/**
|
||||
* 修改菜单显示状态
|
||||
|
||||
@@ -5,9 +5,9 @@ import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.youlai.boot.system.model.entity.Notice;
|
||||
import com.youlai.boot.system.model.form.NoticeForm;
|
||||
import com.youlai.boot.system.model.query.NoticePageQuery;
|
||||
import com.youlai.boot.system.model.vo.NoticePageVo;
|
||||
import com.youlai.boot.system.model.vo.UserNoticePageVo;
|
||||
import com.youlai.boot.system.model.vo.NoticeDetailVo;
|
||||
import com.youlai.boot.system.model.vo.NoticePageVO;
|
||||
import com.youlai.boot.system.model.vo.UserNoticePageVO;
|
||||
import com.youlai.boot.system.model.vo.NoticeDetailVO;
|
||||
|
||||
/**
|
||||
* 通知公告服务类
|
||||
@@ -22,7 +22,7 @@ public interface NoticeService extends IService<Notice> {
|
||||
*
|
||||
* @return 通知公告分页列表
|
||||
*/
|
||||
IPage<NoticePageVo> getNoticePage(NoticePageQuery queryParams);
|
||||
IPage<NoticePageVO> getNoticePage(NoticePageQuery queryParams);
|
||||
|
||||
/**
|
||||
* 获取通知公告表单数据
|
||||
@@ -79,7 +79,7 @@ public interface NoticeService extends IService<Notice> {
|
||||
* @param id 通知公告ID
|
||||
* @return 通知公告详情
|
||||
*/
|
||||
NoticeDetailVo getNoticeDetail(Long id);
|
||||
NoticeDetailVO getNoticeDetail(Long id);
|
||||
|
||||
/**
|
||||
* 获取我的通知公告分页列表
|
||||
@@ -87,5 +87,5 @@ public interface NoticeService extends IService<Notice> {
|
||||
* @param queryParams 查询参数
|
||||
* @return 通知公告分页列表
|
||||
*/
|
||||
IPage<UserNoticePageVo> getMyNoticePage(NoticePageQuery queryParams);
|
||||
IPage<UserNoticePageVO> getMyNoticePage(NoticePageQuery queryParams);
|
||||
}
|
||||
|
||||
@@ -7,7 +7,7 @@ import com.youlai.boot.system.model.entity.Role;
|
||||
import com.youlai.boot.common.model.Option;
|
||||
import com.youlai.boot.system.model.form.RoleForm;
|
||||
import com.youlai.boot.system.model.query.RolePageQuery;
|
||||
import com.youlai.boot.system.model.vo.RolePageVo;
|
||||
import com.youlai.boot.system.model.vo.RolePageVO;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
@@ -26,7 +26,7 @@ public interface RoleService extends IService<Role> {
|
||||
* @param queryParams
|
||||
* @return
|
||||
*/
|
||||
Page<RolePageVo> getRolePage(RolePageQuery queryParams);
|
||||
Page<RolePageVO> getRolePage(RolePageQuery queryParams);
|
||||
|
||||
|
||||
/**
|
||||
|
||||
@@ -5,8 +5,8 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.youlai.boot.system.model.entity.UserNotice;
|
||||
import com.youlai.boot.system.model.query.NoticePageQuery;
|
||||
import com.youlai.boot.system.model.vo.UserNoticePageVo;
|
||||
import com.youlai.boot.system.model.vo.NoticePageVo;
|
||||
import com.youlai.boot.system.model.vo.UserNoticePageVO;
|
||||
import com.youlai.boot.system.model.vo.NoticePageVO;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -31,5 +31,5 @@ public interface UserNoticeService extends IService<UserNotice> {
|
||||
* @param queryParams 查询参数
|
||||
* @return 我的通知公告分页列表
|
||||
*/
|
||||
IPage<UserNoticePageVo> getMyNoticePage(Page<NoticePageVo> page, NoticePageQuery queryParams);
|
||||
IPage<UserNoticePageVO> getMyNoticePage(Page<NoticePageVO> page, NoticePageQuery queryParams);
|
||||
}
|
||||
|
||||
@@ -66,9 +66,9 @@ public class UserOnlineService {
|
||||
*
|
||||
* @return 在线用户名列表
|
||||
*/
|
||||
public List<UserOnlineDto> getOnlineUsers() {
|
||||
public List<UserOnlineDTO> getOnlineUsers() {
|
||||
return onlineUsers.values().stream()
|
||||
.map(info -> new UserOnlineDto(info.getUsername(), info.getLoginTime()))
|
||||
.map(info -> new UserOnlineDTO(info.getUsername(), info.getLoginTime()))
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
@@ -127,7 +127,7 @@ public class UserOnlineService {
|
||||
* 用户在线Dto(用于返回给前端)
|
||||
*/
|
||||
@Data
|
||||
public static class UserOnlineDto {
|
||||
public static class UserOnlineDTO {
|
||||
private final String username;
|
||||
private final long loginTime;
|
||||
}
|
||||
@@ -139,7 +139,7 @@ public class UserOnlineService {
|
||||
private static class OnlineUsersChangeEvent {
|
||||
private String type;
|
||||
private int count;
|
||||
private List<UserOnlineDto> users;
|
||||
private List<UserOnlineDTO> users;
|
||||
private long timestamp;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,12 +4,12 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.youlai.boot.common.model.Option;
|
||||
import com.youlai.boot.security.model.UserAuthInfo;
|
||||
import com.youlai.boot.system.model.dto.CurrentUserDto;
|
||||
import com.youlai.boot.system.model.dto.UserExportDto;
|
||||
import com.youlai.boot.system.model.dto.CurrentUserDTO;
|
||||
import com.youlai.boot.system.model.dto.UserExportDTO;
|
||||
import com.youlai.boot.system.model.entity.User;
|
||||
import com.youlai.boot.system.model.query.UserPageQuery;
|
||||
import com.youlai.boot.system.model.vo.UserPageVo;
|
||||
import com.youlai.boot.system.model.vo.UserProfileVo;
|
||||
import com.youlai.boot.system.model.vo.UserPageVO;
|
||||
import com.youlai.boot.system.model.vo.UserProfileVO;
|
||||
import com.youlai.boot.system.model.form.*;
|
||||
|
||||
import java.util.List;
|
||||
@@ -27,7 +27,7 @@ public interface UserService extends IService<User> {
|
||||
*
|
||||
* @return {@link IPage<UserPageVo>} 用户分页列表
|
||||
*/
|
||||
IPage<UserPageVo> getUserPage(UserPageQuery queryParams);
|
||||
IPage<UserPageVO> getUserPage(UserPageQuery queryParams);
|
||||
|
||||
/**
|
||||
* 获取用户表单数据
|
||||
@@ -84,7 +84,7 @@ public interface UserService extends IService<User> {
|
||||
* @param queryParams 查询参数
|
||||
* @return {@link List<UserExportDto>} 导出用户列表
|
||||
*/
|
||||
List<UserExportDto> listExportUsers(UserPageQuery queryParams);
|
||||
List<UserExportDTO> listExportUsers(UserPageQuery queryParams);
|
||||
|
||||
|
||||
/**
|
||||
@@ -92,14 +92,14 @@ public interface UserService extends IService<User> {
|
||||
*
|
||||
* @return {@link CurrentUserDto} 登录用户信息
|
||||
*/
|
||||
CurrentUserDto getCurrentUserInfo();
|
||||
CurrentUserDTO getCurrentUserInfo();
|
||||
|
||||
/**
|
||||
* 获取个人中心用户信息
|
||||
*
|
||||
* @return {@link UserProfileVo} 个人中心用户信息
|
||||
*/
|
||||
UserProfileVo getUserProfile(Long userId);
|
||||
UserProfileVO getUserProfile(Long userId);
|
||||
|
||||
/**
|
||||
* 修改个人中心用户信息
|
||||
|
||||
@@ -11,7 +11,7 @@ import com.youlai.boot.system.mapper.ConfigMapper;
|
||||
import com.youlai.boot.system.model.entity.Config;
|
||||
import com.youlai.boot.system.model.form.ConfigForm;
|
||||
import com.youlai.boot.system.model.query.ConfigPageQuery;
|
||||
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.security.util.SecurityUtils;
|
||||
import jakarta.annotation.PostConstruct;
|
||||
@@ -54,7 +54,7 @@ public class ConfigServiceImpl extends ServiceImpl<ConfigMapper, Config> impleme
|
||||
* @return 系统配置分页列表
|
||||
*/
|
||||
@Override
|
||||
public IPage<ConfigVo> page(ConfigPageQuery configPageQuery) {
|
||||
public IPage<ConfigVO> page(ConfigPageQuery configPageQuery) {
|
||||
Page<Config> page = new Page<>(configPageQuery.getPageNum(), configPageQuery.getPageSize());
|
||||
String keywords = configPageQuery.getKeywords();
|
||||
LambdaQueryWrapper<Config> query = new LambdaQueryWrapper<Config>()
|
||||
|
||||
@@ -12,7 +12,7 @@ import com.youlai.boot.system.mapper.DeptMapper;
|
||||
import com.youlai.boot.system.model.entity.Dept;
|
||||
import com.youlai.boot.system.model.form.DeptForm;
|
||||
import com.youlai.boot.system.model.query.DeptQuery;
|
||||
import com.youlai.boot.system.model.vo.DeptVo;
|
||||
import com.youlai.boot.system.model.vo.DeptVO;
|
||||
import com.youlai.boot.common.constant.SystemConstants;
|
||||
import com.youlai.boot.common.enums.StatusEnum;
|
||||
import com.youlai.boot.common.model.Option;
|
||||
@@ -42,7 +42,7 @@ public class DeptServiceImpl extends ServiceImpl<DeptMapper, Dept> implements De
|
||||
* 获取部门列表
|
||||
*/
|
||||
@Override
|
||||
public List<DeptVo> getDeptList(DeptQuery queryParams) {
|
||||
public List<DeptVO> getDeptList(DeptQuery queryParams) {
|
||||
// 查询参数
|
||||
String keywords = queryParams.getKeywords();
|
||||
Integer status = queryParams.getStatus();
|
||||
@@ -83,12 +83,12 @@ public class DeptServiceImpl extends ServiceImpl<DeptMapper, Dept> implements De
|
||||
* @param deptList 部门列表
|
||||
* @return 部门树形列表
|
||||
*/
|
||||
public List<DeptVo> recurDeptList(Long parentId, List<Dept> deptList) {
|
||||
public List<DeptVO> recurDeptList(Long parentId, List<Dept> deptList) {
|
||||
return deptList.stream()
|
||||
.filter(dept -> dept.getParentId().equals(parentId))
|
||||
.map(dept -> {
|
||||
DeptVo deptVo = deptConverter.toVo(dept);
|
||||
List<DeptVo> children = recurDeptList(dept.getId(), deptList);
|
||||
DeptVO deptVo = deptConverter.toVo(dept);
|
||||
List<DeptVO> children = recurDeptList(dept.getId(), deptList);
|
||||
deptVo.setChildren(children);
|
||||
return deptVo;
|
||||
}).toList();
|
||||
|
||||
@@ -8,8 +8,8 @@ import com.youlai.boot.system.mapper.DictItemMapper;
|
||||
import com.youlai.boot.system.model.entity.DictItem;
|
||||
import com.youlai.boot.system.model.form.DictItemForm;
|
||||
import com.youlai.boot.system.model.query.DictItemPageQuery;
|
||||
import com.youlai.boot.system.model.vo.DictItemOptionVo;
|
||||
import com.youlai.boot.system.model.vo.DictItemPageVo;
|
||||
import com.youlai.boot.system.model.vo.DictItemOptionVO;
|
||||
import com.youlai.boot.system.model.vo.DictItemPageVO;
|
||||
import com.youlai.boot.system.service.DictItemService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
@@ -36,10 +36,10 @@ public class DictItemServiceImpl extends ServiceImpl<DictItemMapper, DictItem> i
|
||||
* @return 字典项分页列表
|
||||
*/
|
||||
@Override
|
||||
public Page<DictItemPageVo> getDictItemPage(DictItemPageQuery queryParams) {
|
||||
public Page<DictItemPageVO> getDictItemPage(DictItemPageQuery queryParams) {
|
||||
int pageNum = queryParams.getPageNum();
|
||||
int pageSize = queryParams.getPageSize();
|
||||
Page<DictItemPageVo> page = new Page<>(pageNum, pageSize);
|
||||
Page<DictItemPageVO> page = new Page<>(pageNum, pageSize);
|
||||
|
||||
return this.baseMapper.getDictItemPage(page, queryParams);
|
||||
}
|
||||
@@ -51,7 +51,7 @@ public class DictItemServiceImpl extends ServiceImpl<DictItemMapper, DictItem> i
|
||||
* @param dictCode 字典编码
|
||||
*/
|
||||
@Override
|
||||
public List<DictItemOptionVo> getDictItems(String dictCode) {
|
||||
public List<DictItemOptionVO> getDictItems(String dictCode) {
|
||||
return this.list(
|
||||
new LambdaQueryWrapper<DictItem>()
|
||||
.eq(DictItem::getDictCode, dictCode)
|
||||
@@ -59,7 +59,7 @@ public class DictItemServiceImpl extends ServiceImpl<DictItemMapper, DictItem> i
|
||||
.orderByAsc(DictItem::getSort)
|
||||
).stream()
|
||||
.map(item -> {
|
||||
DictItemOptionVo dictItemOptionVo = new DictItemOptionVo();
|
||||
DictItemOptionVO dictItemOptionVo = new DictItemOptionVO();
|
||||
dictItemOptionVo.setLabel(item.getLabel());
|
||||
dictItemOptionVo.setValue(item.getValue());
|
||||
dictItemOptionVo.setTagType(item.getTagType());
|
||||
|
||||
@@ -12,7 +12,7 @@ import com.youlai.boot.system.model.entity.Dict;
|
||||
import com.youlai.boot.system.model.entity.DictItem;
|
||||
import com.youlai.boot.system.model.form.DictForm;
|
||||
import com.youlai.boot.system.model.query.DictPageQuery;
|
||||
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.DictService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
@@ -40,7 +40,7 @@ public class DictServiceImpl extends ServiceImpl<DictMapper, Dict> implements Di
|
||||
* @param queryParams 分页查询对象
|
||||
*/
|
||||
@Override
|
||||
public Page<DictPageVo> getDictPage(DictPageQuery queryParams) {
|
||||
public Page<DictPageVO> getDictPage(DictPageQuery queryParams) {
|
||||
// 查询参数
|
||||
int pageNum = queryParams.getPageNum();
|
||||
int pageSize = queryParams.getPageSize();
|
||||
|
||||
@@ -3,13 +3,13 @@ package com.youlai.boot.system.service.impl;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.youlai.boot.system.mapper.LogMapper;
|
||||
import com.youlai.boot.system.model.bo.VisitCountBo;
|
||||
import com.youlai.boot.system.model.bo.VisitStatsBo;
|
||||
import com.youlai.boot.system.model.bo.VisitCountBO;
|
||||
import com.youlai.boot.system.model.bo.VisitStatsBO;
|
||||
import com.youlai.boot.system.model.entity.Log;
|
||||
import com.youlai.boot.system.model.query.LogPageQuery;
|
||||
import com.youlai.boot.system.model.vo.LogPageVo;
|
||||
import com.youlai.boot.system.model.vo.VisitStatsVo;
|
||||
import com.youlai.boot.system.model.vo.VisitTrendVo;
|
||||
import com.youlai.boot.system.model.vo.LogPageVO;
|
||||
import com.youlai.boot.system.model.vo.VisitStatsVO;
|
||||
import com.youlai.boot.system.model.vo.VisitTrendVO;
|
||||
import com.youlai.boot.system.service.LogService;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@@ -36,7 +36,7 @@ public class LogServiceImpl extends ServiceImpl<LogMapper, Log>
|
||||
* @return 日志分页列表
|
||||
*/
|
||||
@Override
|
||||
public Page<LogPageVo> getLogPage(LogPageQuery queryParams) {
|
||||
public Page<LogPageVO> getLogPage(LogPageQuery queryParams) {
|
||||
return this.baseMapper.getLogPage(new Page<>(queryParams.getPageNum(), queryParams.getPageSize()),
|
||||
queryParams);
|
||||
}
|
||||
@@ -49,8 +49,8 @@ public class LogServiceImpl extends ServiceImpl<LogMapper, Log>
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public VisitTrendVo getVisitTrend(LocalDate startDate, LocalDate endDate) {
|
||||
VisitTrendVo visitTrend = new VisitTrendVo();
|
||||
public VisitTrendVO getVisitTrend(LocalDate startDate, LocalDate endDate) {
|
||||
VisitTrendVO visitTrend = new VisitTrendVO();
|
||||
List<String> dates = new ArrayList<>();
|
||||
|
||||
// 获取日期范围内的日期
|
||||
@@ -61,12 +61,12 @@ public class LogServiceImpl extends ServiceImpl<LogMapper, Log>
|
||||
visitTrend.setDates(dates);
|
||||
|
||||
// 获取访问量和访问 IP 数的统计数据
|
||||
List<VisitCountBo> pvCounts = this.baseMapper.getPvCounts(dates.get(0) + " 00:00:00", dates.get(dates.size() - 1) + " 23:59:59");
|
||||
List<VisitCountBo> ipCounts = this.baseMapper.getIpCounts(dates.get(0) + " 00:00:00", dates.get(dates.size() - 1) + " 23:59:59");
|
||||
List<VisitCountBO> pvCounts = this.baseMapper.getPvCounts(dates.get(0) + " 00:00:00", dates.get(dates.size() - 1) + " 23:59:59");
|
||||
List<VisitCountBO> ipCounts = this.baseMapper.getIpCounts(dates.get(0) + " 00:00:00", dates.get(dates.size() - 1) + " 23:59:59");
|
||||
|
||||
// 将统计数据转换为 Map
|
||||
Map<String, Integer> pvMap = pvCounts.stream().collect(Collectors.toMap(VisitCountBo::getDate, VisitCountBo::getCount));
|
||||
Map<String, Integer> ipMap = ipCounts.stream().collect(Collectors.toMap(VisitCountBo::getDate, VisitCountBo::getCount));
|
||||
Map<String, Integer> pvMap = pvCounts.stream().collect(Collectors.toMap(VisitCountBO::getDate, VisitCountBO::getCount));
|
||||
Map<String, Integer> ipMap = ipCounts.stream().collect(Collectors.toMap(VisitCountBO::getDate, VisitCountBO::getCount));
|
||||
|
||||
// 匹配日期和访问量/访问 IP 数
|
||||
List<Integer> pvList = new ArrayList<>();
|
||||
@@ -87,11 +87,11 @@ public class LogServiceImpl extends ServiceImpl<LogMapper, Log>
|
||||
* 访问量统计
|
||||
*/
|
||||
@Override
|
||||
public VisitStatsVo getVisitStats() {
|
||||
VisitStatsVo result = new VisitStatsVo();
|
||||
public VisitStatsVO getVisitStats() {
|
||||
VisitStatsVO result = new VisitStatsVO();
|
||||
|
||||
// 访客数统计(UV)
|
||||
VisitStatsBo uvStats = this.baseMapper.getUvStats();
|
||||
VisitStatsBO uvStats = this.baseMapper.getUvStats();
|
||||
if(uvStats!=null){
|
||||
result.setTodayUvCount(uvStats.getTodayCount());
|
||||
result.setTotalUvCount(uvStats.getTotalCount());
|
||||
@@ -99,7 +99,7 @@ public class LogServiceImpl extends ServiceImpl<LogMapper, Log>
|
||||
}
|
||||
|
||||
// 浏览量统计(PV)
|
||||
VisitStatsBo pvStats = this.baseMapper.getPvStats();
|
||||
VisitStatsBO pvStats = this.baseMapper.getPvStats();
|
||||
if(pvStats!=null){
|
||||
result.setTodayPvCount(pvStats.getTodayCount());
|
||||
result.setTotalPvCount(pvStats.getTotalCount());
|
||||
|
||||
@@ -17,8 +17,8 @@ import com.youlai.boot.system.mapper.MenuMapper;
|
||||
import com.youlai.boot.system.model.entity.Menu;
|
||||
import com.youlai.boot.system.model.form.MenuForm;
|
||||
import com.youlai.boot.system.model.query.MenuQuery;
|
||||
import com.youlai.boot.system.model.vo.MenuVo;
|
||||
import com.youlai.boot.system.model.vo.RouteVo;
|
||||
import com.youlai.boot.system.model.vo.MenuVO;
|
||||
import com.youlai.boot.system.model.vo.RouteVO;
|
||||
import com.youlai.boot.common.constant.SystemConstants;
|
||||
import com.youlai.boot.system.enums.MenuTypeEnum;
|
||||
import com.youlai.boot.common.enums.StatusEnum;
|
||||
@@ -55,7 +55,7 @@ public class MenuServiceImpl extends ServiceImpl<MenuMapper, Menu> implements Me
|
||||
* @param queryParams {@link MenuQuery}
|
||||
*/
|
||||
@Override
|
||||
public List<MenuVo> listMenus(MenuQuery queryParams) {
|
||||
public List<MenuVO> listMenus(MenuQuery queryParams) {
|
||||
List<Menu> menus = this.list(new LambdaQueryWrapper<Menu>()
|
||||
.like(StrUtil.isNotBlank(queryParams.getKeywords()), Menu::getName, queryParams.getKeywords())
|
||||
.orderByAsc(Menu::getSort)
|
||||
@@ -88,13 +88,13 @@ public class MenuServiceImpl extends ServiceImpl<MenuMapper, Menu> implements Me
|
||||
* @param menuList 菜单列表
|
||||
* @return 菜单列表
|
||||
*/
|
||||
private List<MenuVo> buildMenuTree(Long parentId, List<Menu> menuList) {
|
||||
private List<MenuVO> buildMenuTree(Long parentId, List<Menu> menuList) {
|
||||
return CollectionUtil.emptyIfNull(menuList)
|
||||
.stream()
|
||||
.filter(menu -> menu.getParentId().equals(parentId))
|
||||
.map(entity -> {
|
||||
MenuVo menuVo = menuConverter.toVo(entity);
|
||||
List<MenuVo> children = buildMenuTree(entity.getId(), menuList);
|
||||
MenuVO menuVo = menuConverter.toVo(entity);
|
||||
List<MenuVO> children = buildMenuTree(entity.getId(), menuList);
|
||||
menuVo.setChildren(children);
|
||||
return menuVo;
|
||||
}).toList();
|
||||
@@ -142,7 +142,7 @@ public class MenuServiceImpl extends ServiceImpl<MenuMapper, Menu> implements Me
|
||||
* 获取当前用户的菜单路由列表
|
||||
*/
|
||||
@Override
|
||||
public List<RouteVo> listCurrentUserRoutes() {
|
||||
public List<RouteVO> listCurrentUserRoutes() {
|
||||
Set<String> roleCodes = SecurityUtils.getRoles();
|
||||
|
||||
if (CollectionUtil.isEmpty(roleCodes)) {
|
||||
@@ -195,7 +195,7 @@ public class MenuServiceImpl extends ServiceImpl<MenuMapper, Menu> implements Me
|
||||
* - template: 模板项目菜单数据
|
||||
*/
|
||||
@Override
|
||||
public List<RouteVo> listCurrentUserRoutes(String datasource) {
|
||||
public List<RouteVO> listCurrentUserRoutes(String datasource) {
|
||||
return listCurrentUserRoutes();
|
||||
}
|
||||
|
||||
@@ -207,13 +207,13 @@ public class MenuServiceImpl extends ServiceImpl<MenuMapper, Menu> implements Me
|
||||
* @param menuList 菜单列表
|
||||
* @return 路由层级列表
|
||||
*/
|
||||
private List<RouteVo> buildRoutes(Long parentId, List<Menu> menuList) {
|
||||
List<RouteVo> routeList = new ArrayList<>();
|
||||
private List<RouteVO> buildRoutes(Long parentId, List<Menu> menuList) {
|
||||
List<RouteVO> routeList = new ArrayList<>();
|
||||
|
||||
for (Menu menu : menuList) {
|
||||
if (menu.getParentId().equals(parentId)) {
|
||||
RouteVo routeVo = toRouteVo(menu);
|
||||
List<RouteVo> children = buildRoutes(menu.getId(), menuList);
|
||||
RouteVO routeVo = toRouteVo(menu);
|
||||
List<RouteVO> children = buildRoutes(menu.getId(), menuList);
|
||||
if (!children.isEmpty()) {
|
||||
routeVo.setChildren(children);
|
||||
}
|
||||
@@ -227,8 +227,8 @@ public class MenuServiceImpl extends ServiceImpl<MenuMapper, Menu> implements Me
|
||||
/**
|
||||
* 根据RouteBO创建RouteVo
|
||||
*/
|
||||
private RouteVo toRouteVo(Menu menu) {
|
||||
RouteVo routeVo = new RouteVo();
|
||||
private RouteVO toRouteVo(Menu menu) {
|
||||
RouteVO routeVo = new RouteVO();
|
||||
String routePath = menu.getRoutePath();
|
||||
boolean externalLink = StrUtil.startWithAny(routePath, "http://", "https://");
|
||||
|
||||
@@ -249,7 +249,7 @@ public class MenuServiceImpl extends ServiceImpl<MenuMapper, Menu> implements Me
|
||||
// 外链无组件
|
||||
routeVo.setComponent(externalLink ? null : menu.getComponent());
|
||||
|
||||
RouteVo.Meta meta = new RouteVo.Meta();
|
||||
RouteVO.Meta meta = new RouteVO.Meta();
|
||||
meta.setTitle(menu.getName());
|
||||
meta.setIcon(menu.getIcon());
|
||||
meta.setHidden(StatusEnum.DISABLE.getValue().equals(menu.getVisible()));
|
||||
|
||||
@@ -13,16 +13,16 @@ import com.youlai.boot.system.converter.NoticeConverter;
|
||||
import com.youlai.boot.system.enums.NoticePublishStatusEnum;
|
||||
import com.youlai.boot.system.enums.NoticeTargetEnum;
|
||||
import com.youlai.boot.system.mapper.NoticeMapper;
|
||||
import com.youlai.boot.system.model.bo.NoticeBo;
|
||||
import com.youlai.boot.system.model.dto.NoticeDto;
|
||||
import com.youlai.boot.system.model.bo.NoticeBO;
|
||||
import com.youlai.boot.system.model.dto.NoticeDTO;
|
||||
import com.youlai.boot.system.model.entity.Notice;
|
||||
import com.youlai.boot.system.model.entity.UserNotice;
|
||||
import com.youlai.boot.system.model.entity.User;
|
||||
import com.youlai.boot.system.model.form.NoticeForm;
|
||||
import com.youlai.boot.system.model.query.NoticePageQuery;
|
||||
import com.youlai.boot.system.model.vo.NoticePageVo;
|
||||
import com.youlai.boot.system.model.vo.UserNoticePageVo;
|
||||
import com.youlai.boot.system.model.vo.NoticeDetailVo;
|
||||
import com.youlai.boot.system.model.vo.NoticePageVO;
|
||||
import com.youlai.boot.system.model.vo.UserNoticePageVO;
|
||||
import com.youlai.boot.system.model.vo.NoticeDetailVO;
|
||||
import com.youlai.boot.system.service.NoticeService;
|
||||
import com.youlai.boot.system.service.UserNoticeService;
|
||||
import com.youlai.boot.system.service.UserOnlineService;
|
||||
@@ -63,8 +63,8 @@ public class NoticeServiceImpl extends ServiceImpl<NoticeMapper, Notice> impleme
|
||||
* @return {@link IPage< NoticePageVo >} 通知公告分页列表
|
||||
*/
|
||||
@Override
|
||||
public IPage<NoticePageVo> getNoticePage(NoticePageQuery queryParams) {
|
||||
Page<NoticeBo> noticePage = this.baseMapper.getNoticePage(
|
||||
public IPage<NoticePageVO> getNoticePage(NoticePageQuery queryParams) {
|
||||
Page<NoticeBO> noticePage = this.baseMapper.getNoticePage(
|
||||
new Page<>(queryParams.getPageNum(), queryParams.getPageSize()),
|
||||
queryParams
|
||||
);
|
||||
@@ -215,13 +215,13 @@ public class NoticeServiceImpl extends ServiceImpl<NoticeMapper, Notice> impleme
|
||||
Set<String> receivers = targetUserList.stream().map(User::getUsername).collect(Collectors.toSet());
|
||||
|
||||
Set<String> allOnlineUsers = userOnlineService.getOnlineUsers().stream()
|
||||
.map(UserOnlineService.UserOnlineDto::getUsername)
|
||||
.map(UserOnlineService.UserOnlineDTO::getUsername)
|
||||
.collect(Collectors.toSet());
|
||||
|
||||
// 找出在线用户的通知接收者
|
||||
Set<String> onlineReceivers = new HashSet<>(CollectionUtil.intersection(receivers, allOnlineUsers));
|
||||
|
||||
NoticeDto noticeDto = new NoticeDto();
|
||||
NoticeDTO noticeDto = new NoticeDTO();
|
||||
noticeDto.setId(id);
|
||||
noticeDto.setTitle(notice.getTitle());
|
||||
noticeDto.setType(notice.getType());
|
||||
@@ -271,8 +271,8 @@ public class NoticeServiceImpl extends ServiceImpl<NoticeMapper, Notice> impleme
|
||||
* @return NoticeDetailVo 通知公告详情
|
||||
*/
|
||||
@Override
|
||||
public NoticeDetailVo getNoticeDetail(Long id) {
|
||||
NoticeBo noticeBo = this.baseMapper.getNoticeDetail(id);
|
||||
public NoticeDetailVO getNoticeDetail(Long id) {
|
||||
NoticeBO noticeBo = this.baseMapper.getNoticeDetail(id);
|
||||
// 更新用户通知公告的阅读状态
|
||||
Long userId = SecurityUtils.getUserId();
|
||||
userNoticeService.update(new LambdaUpdateWrapper<UserNotice>()
|
||||
@@ -291,7 +291,7 @@ public class NoticeServiceImpl extends ServiceImpl<NoticeMapper, Notice> impleme
|
||||
* @return 通知公告分页列表
|
||||
*/
|
||||
@Override
|
||||
public IPage<UserNoticePageVo> getMyNoticePage(NoticePageQuery queryParams) {
|
||||
public IPage<UserNoticePageVO> getMyNoticePage(NoticePageQuery queryParams) {
|
||||
queryParams.setUserId(SecurityUtils.getUserId());
|
||||
return userNoticeService.getMyNoticePage(
|
||||
new Page<>(queryParams.getPageNum(), queryParams.getPageSize()),
|
||||
|
||||
@@ -4,7 +4,7 @@ import cn.hutool.core.collection.CollectionUtil;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.youlai.boot.common.constant.RedisConstants;
|
||||
import com.youlai.boot.system.mapper.RoleMenuMapper;
|
||||
import com.youlai.boot.system.model.bo.RolePermsBo;
|
||||
import com.youlai.boot.system.model.bo.RolePermsBO;
|
||||
import com.youlai.boot.system.model.entity.RoleMenu;
|
||||
import com.youlai.boot.system.service.RoleMenuService;
|
||||
import jakarta.annotation.PostConstruct;
|
||||
@@ -36,7 +36,7 @@ public class RoleMenuServiceImpl extends ServiceImpl<RoleMenuMapper, RoleMenu> i
|
||||
public void initRolePermsCache() {
|
||||
log.info("开始初始化权限缓存...");
|
||||
|
||||
List<RolePermsBo> allRolePermsList = this.baseMapper.getRolePermsList(null);
|
||||
List<RolePermsBO> allRolePermsList = this.baseMapper.getRolePermsList(null);
|
||||
|
||||
if (CollectionUtil.isEmpty(allRolePermsList)) {
|
||||
log.warn("权限数据为空,跳过缓存初始化");
|
||||
@@ -67,7 +67,7 @@ public class RoleMenuServiceImpl extends ServiceImpl<RoleMenuMapper, RoleMenu> i
|
||||
redisTemplate.delete(cacheKey);
|
||||
|
||||
// 重新加载权限
|
||||
List<RolePermsBo> list = this.baseMapper.getRolePermsList(null);
|
||||
List<RolePermsBO> list = this.baseMapper.getRolePermsList(null);
|
||||
if (CollectionUtil.isNotEmpty(list)) {
|
||||
list.forEach(item -> {
|
||||
String roleCode = item.getRoleCode();
|
||||
@@ -92,9 +92,9 @@ public class RoleMenuServiceImpl extends ServiceImpl<RoleMenuMapper, RoleMenu> i
|
||||
redisTemplate.opsForHash().delete(cacheKey, roleCode);
|
||||
|
||||
// 重新加载指定角色权限
|
||||
List<RolePermsBo> list = this.baseMapper.getRolePermsList(roleCode);
|
||||
List<RolePermsBO> list = this.baseMapper.getRolePermsList(roleCode);
|
||||
if (CollectionUtil.isNotEmpty(list)) {
|
||||
RolePermsBo rolePerms = list.get(0);
|
||||
RolePermsBO rolePerms = list.get(0);
|
||||
if (rolePerms != null) {
|
||||
Set<String> perms = rolePerms.getPerms();
|
||||
if (CollectionUtil.isNotEmpty(perms)) {
|
||||
@@ -117,9 +117,9 @@ public class RoleMenuServiceImpl extends ServiceImpl<RoleMenuMapper, RoleMenu> i
|
||||
redisTemplate.opsForHash().delete(cacheKey, oldRoleCode);
|
||||
|
||||
// 添加新角色权限缓存
|
||||
List<RolePermsBo> list = this.baseMapper.getRolePermsList(newRoleCode);
|
||||
List<RolePermsBO> list = this.baseMapper.getRolePermsList(newRoleCode);
|
||||
if (CollectionUtil.isNotEmpty(list)) {
|
||||
RolePermsBo rolePerms = list.get(0);
|
||||
RolePermsBO rolePerms = list.get(0);
|
||||
if (rolePerms != null) {
|
||||
Set<String> perms = rolePerms.getPerms();
|
||||
if (CollectionUtil.isNotEmpty(perms)) {
|
||||
|
||||
@@ -14,7 +14,7 @@ import com.youlai.boot.system.model.entity.Role;
|
||||
import com.youlai.boot.system.model.entity.RoleMenu;
|
||||
import com.youlai.boot.system.model.form.RoleForm;
|
||||
import com.youlai.boot.system.model.query.RolePageQuery;
|
||||
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.model.Option;
|
||||
import com.youlai.boot.security.util.SecurityUtils;
|
||||
@@ -51,7 +51,7 @@ public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements Ro
|
||||
* @return {@link Page< RolePageVo >} – 角色分页列表
|
||||
*/
|
||||
@Override
|
||||
public Page<RolePageVo> getRolePage(RolePageQuery queryParams) {
|
||||
public Page<RolePageVO> getRolePage(RolePageQuery queryParams) {
|
||||
// 查询参数
|
||||
int pageNum = queryParams.getPageNum();
|
||||
int pageSize = queryParams.getPageSize();
|
||||
|
||||
@@ -8,8 +8,8 @@ import com.youlai.boot.security.util.SecurityUtils;
|
||||
import com.youlai.boot.system.mapper.UserNoticeMapper;
|
||||
import com.youlai.boot.system.model.entity.UserNotice;
|
||||
import com.youlai.boot.system.model.query.NoticePageQuery;
|
||||
import com.youlai.boot.system.model.vo.NoticePageVo;
|
||||
import com.youlai.boot.system.model.vo.UserNoticePageVo;
|
||||
import com.youlai.boot.system.model.vo.NoticePageVO;
|
||||
import com.youlai.boot.system.model.vo.UserNoticePageVO;
|
||||
import com.youlai.boot.system.service.UserNoticeService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
@@ -51,7 +51,7 @@ public class UserNoticeServiceImpl extends ServiceImpl<UserNoticeMapper, UserNot
|
||||
* @return 通知公告分页列表
|
||||
*/
|
||||
@Override
|
||||
public IPage<UserNoticePageVo> getMyNoticePage(Page<NoticePageVo> page, NoticePageQuery queryParams) {
|
||||
public IPage<UserNoticePageVO> getMyNoticePage(Page<NoticePageVO> page, NoticePageQuery queryParams) {
|
||||
return this.getBaseMapper().getMyNoticePage(
|
||||
new Page<>(queryParams.getPageNum(), queryParams.getPageSize()),
|
||||
queryParams
|
||||
|
||||
@@ -22,16 +22,16 @@ import com.youlai.boot.platform.mail.service.MailService;
|
||||
import com.youlai.boot.system.converter.UserConverter;
|
||||
import com.youlai.boot.system.enums.DictCodeEnum;
|
||||
import com.youlai.boot.system.mapper.UserMapper;
|
||||
import com.youlai.boot.system.model.bo.UserBo;
|
||||
import com.youlai.boot.system.model.dto.CurrentUserDto;
|
||||
import com.youlai.boot.system.model.dto.UserExportDto;
|
||||
import com.youlai.boot.system.model.bo.UserBO;
|
||||
import com.youlai.boot.system.model.dto.CurrentUserDTO;
|
||||
import com.youlai.boot.system.model.dto.UserExportDTO;
|
||||
import com.youlai.boot.system.model.entity.DictItem;
|
||||
import com.youlai.boot.system.model.entity.User;
|
||||
import com.youlai.boot.system.model.entity.UserRole;
|
||||
import com.youlai.boot.system.model.form.*;
|
||||
import com.youlai.boot.system.model.query.UserPageQuery;
|
||||
import com.youlai.boot.system.model.vo.UserPageVo;
|
||||
import com.youlai.boot.system.model.vo.UserProfileVo;
|
||||
import com.youlai.boot.system.model.vo.UserPageVO;
|
||||
import com.youlai.boot.system.model.vo.UserProfileVO;
|
||||
import com.youlai.boot.system.service.*;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@@ -84,18 +84,18 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
|
||||
* @return {@link IPage<UserPageVo>} 用户分页列表
|
||||
*/
|
||||
@Override
|
||||
public IPage<UserPageVo> getUserPage(UserPageQuery queryParams) {
|
||||
public IPage<UserPageVO> getUserPage(UserPageQuery queryParams) {
|
||||
|
||||
// 参数构建
|
||||
int pageNum = queryParams.getPageNum();
|
||||
int pageSize = queryParams.getPageSize();
|
||||
Page<UserBo> page = new Page<>(pageNum, pageSize);
|
||||
Page<UserBO> page = new Page<>(pageNum, pageSize);
|
||||
|
||||
boolean isRoot = SecurityUtils.isRoot();
|
||||
queryParams.setIsRoot(isRoot);
|
||||
|
||||
// 查询数据
|
||||
Page<UserBo> userPage = this.baseMapper.getUserPage(page, queryParams);
|
||||
Page<UserBO> userPage = this.baseMapper.getUserPage(page, queryParams);
|
||||
|
||||
// 实体转换
|
||||
return userConverter.toPageVo(userPage);
|
||||
@@ -403,12 +403,12 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
|
||||
* @return {@link List<UserExportDto>} 导出用户列表
|
||||
*/
|
||||
@Override
|
||||
public List<UserExportDto> listExportUsers(UserPageQuery queryParams) {
|
||||
public List<UserExportDTO> listExportUsers(UserPageQuery queryParams) {
|
||||
|
||||
boolean isRoot = SecurityUtils.isRoot();
|
||||
queryParams.setIsRoot(isRoot);
|
||||
|
||||
List<UserExportDto> exportUsers = this.baseMapper.listExportUsers(queryParams);
|
||||
List<UserExportDTO> exportUsers = this.baseMapper.listExportUsers(queryParams);
|
||||
if (CollectionUtil.isNotEmpty(exportUsers)) {
|
||||
//获取性别的字典项
|
||||
Map<String, String> genderMap = dictItemService.list(
|
||||
@@ -441,7 +441,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
|
||||
* @return {@link CurrentUserDto} 用户信息
|
||||
*/
|
||||
@Override
|
||||
public CurrentUserDto getCurrentUserInfo() {
|
||||
public CurrentUserDTO getCurrentUserInfo() {
|
||||
|
||||
String username = SecurityUtils.getUsername();
|
||||
|
||||
@@ -456,7 +456,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
|
||||
)
|
||||
);
|
||||
// entity->Vo
|
||||
CurrentUserDto userInfoVo = userConverter.toCurrentUserDto(user);
|
||||
CurrentUserDTO userInfoVo = userConverter.toCurrentUserDto(user);
|
||||
|
||||
// 用户角色集合
|
||||
Set<String> roles = SecurityUtils.getRoles();
|
||||
@@ -477,8 +477,8 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
|
||||
* @return {@link UserProfileVo} 个人中心用户信息
|
||||
*/
|
||||
@Override
|
||||
public UserProfileVo getUserProfile(Long userId) {
|
||||
UserBo entity = this.baseMapper.getUserProfile(userId);
|
||||
public UserProfileVO getUserProfile(Long userId) {
|
||||
UserBO entity = this.baseMapper.getUserProfile(userId);
|
||||
return userConverter.toProfileVo(entity);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user