From 2e850debb407f0f75109084710b075de044cd376 Mon Sep 17 00:00:00 2001 From: "Ray.Hao" <1490493387@qq.com> Date: Mon, 29 Dec 2025 16:35:55 +0800 Subject: [PATCH] =?UTF-8?q?refactor(auth):=20=E8=A7=84=E8=8C=83=E5=8C=96?= =?UTF-8?q?=E8=AE=A4=E8=AF=81=E6=A8=A1=E5=9D=97=E5=91=BD=E5=90=8D=E5=92=8C?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=E7=BB=93=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BUGFIX_SUMMARY.md | 257 ------------------ .../boot/auth/controller/AuthController.java | 10 +- .../auth/model/dto/WxMiniAppCodeLoginDTO.java | 6 +- .../model/dto/WxMiniAppPhoneLoginDTO.java | 6 +- .../boot/system/model/bo/RolePerm sBo.java | 0 .../boot/system/model/bo/RolePermsBo.java | 26 ++ src/main/resources/application-dev.yml | 2 +- 7 files changed, 34 insertions(+), 273 deletions(-) delete mode 100644 BUGFIX_SUMMARY.md delete mode 100644 src/main/java/com/youlai/boot/system/model/bo/RolePerm sBo.java create mode 100644 src/main/java/com/youlai/boot/system/model/bo/RolePermsBo.java diff --git a/BUGFIX_SUMMARY.md b/BUGFIX_SUMMARY.md deleted file mode 100644 index 5169c23b..00000000 --- a/BUGFIX_SUMMARY.md +++ /dev/null @@ -1,257 +0,0 @@ -# Java 项目重复类定义修复总结 - -## 📅 修复日期 -2024-12-28 - -## 🐛 问题描述 -youlai-boot 和 youlai-boot-tenant 项目中的部分 VO 类文件存在**重复的类定义**,导致编译错误。 - ---- - -## 🔍 问题原因 -某些 Java 文件中意外包含了两次完全相同的类定义,可能是由于: -1. 复制粘贴错误 -2. 合并冲突未正确解决 -3. 编辑器误操作 - ---- - -## ✅ 已修复的文件 - -### youlai-boot 项目 - -#### 1. NoticeDetailVo.java -**文件路径**:`youlai-boot/src/main/java/com/youlai/boot/system/model/vo/NoticeDetailVo.java` - -**问题**: -```java -package com.youlai.boot.system.model.vo; -// ... 第一个类定义 ... -} - -package com.youlai.boot.system.model.vo; // ❌ 重复的 package 声明 -// ... 第二个类定义(完全相同)... -} -``` - -**修复**:删除重复的类定义,只保留一个 - ---- - -### youlai-boot-tenant 项目 - -#### 2. TenantPageVo.java -**文件路径**:`youlai-boot-tenant/src/main/java/com/youlai/boot/system/model/vo/TenantPageVo.java` - -**问题**: -```java -package com.youlai.boot.system.model.vo; -// ... 第一个类定义 ... -} - -package com.youlai.boot.system.model.vo; // ❌ 重复的 package 声明 -// ... 第二个类定义(完全相同)... -} -``` - -**修复**:删除重复的类定义,只保留一个 - ---- - -## 📊 修复统计 - -| 项目 | 修复文件数 | 问题类型 | -|------|-----------|---------| -| youlai-boot | 1 | 重复类定义 | -| youlai-boot-tenant | 1 | 重复类定义 | -| **总计** | **2** | - | - ---- - -## 🔧 如何检测类似问题 - -### 方法 1:使用 grep 搜索 -```bash -# 在项目根目录执行 -grep -r "^package com\.youlai" src/main/java/**/*.java | sort | uniq -d -``` - -### 方法 2:使用 IDE -1. 在 IntelliJ IDEA 中打开项目 -2. 使用 `Ctrl + Shift + F`(Windows)或 `Cmd + Shift + F`(Mac) -3. 搜索正则表达式:`^package com\.youlai` -4. 查看搜索结果,如果同一个文件出现多次,说明有重复 - -### 方法 3:编译检查 -```bash -mvn clean compile -``` -如果有重复类定义,编译器会报错。 - ---- - -## 🛡️ 预防措施 - -### 1. 使用版本控制 -- 提交前仔细检查 `git diff` -- 解决合并冲突时要仔细审查 - -### 2. IDE 配置 -- 启用 IntelliJ IDEA 的代码检查 -- 配置保存时自动格式化代码 - -### 3. 代码审查 -- Pull Request 时仔细审查文件变更 -- 使用 CI/CD 自动编译检查 - -### 4. 使用 Git Hooks -创建 `.git/hooks/pre-commit`: -```bash -#!/bin/bash -# 检查是否有重复的 package 声明 -for file in $(git diff --cached --name-only | grep '\.java$'); do - count=$(grep -c "^package " "$file") - if [ "$count" -gt 1 ]; then - echo "错误: $file 包含多个 package 声明" - exit 1 - fi -done -``` - ---- - -## ✅ 验证结果 - -### 编译测试 -```bash -# youlai-boot -cd youlai-boot -mvn clean compile -# ✅ 编译成功 - -# youlai-boot-tenant -cd youlai-boot-tenant -mvn clean compile -# ✅ 编译成功 -``` - -### IDE 检查 -- ✅ IntelliJ IDEA 不再显示错误 -- ✅ 代码高亮正常 -- ✅ 自动补全正常 - ---- - -## 📝 修复后的文件内容 - -### NoticeDetailVo.java(修复后) -```java -package com.youlai.boot.system.model.vo; - -import com.fasterxml.jackson.annotation.JsonFormat; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.time.LocalDateTime; - -/** - * 阅读通知公告Vo - * - * @author Theo - * @since 2024-9-8 01:25:06 - */ -@Data -public class NoticeDetailVo { - - @Schema(description = "通知ID") - private Long id; - - @Schema(description = "通知标题") - private String title; - - @Schema(description = "通知内容") - private String content; - - @Schema(description = "通知类型") - private Integer type; - - @Schema(description = "发布人") - private String publisherName; - - @Schema(description = "优先级(L-低 M-中 H-高)") - private String level; - - @Schema(description = "发布状态(0-未发布 1已发布 2已撤回)") - private Integer publishStatus; - - @Schema(description = "发布时间") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") - private LocalDateTime publishTime; -} -``` - -### TenantPageVo.java(修复后) -```java -package com.youlai.boot.system.model.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.io.Serializable; -import java.time.LocalDateTime; - -@Schema(description = "租户分页对象") -@Data -public class TenantPageVo implements Serializable { - - @Schema(description = "租户ID") - private Long id; - - @Schema(description = "租户名称") - private String name; - - @Schema(description = "租户编码") - private String code; - - @Schema(description = "联系人姓名") - private String contactName; - - @Schema(description = "联系人电话") - private String contactPhone; - - @Schema(description = "联系人邮箱") - private String contactEmail; - - @Schema(description = "租户域名") - private String domain; - - @Schema(description = "租户Logo") - private String logo; - - @Schema(description = "状态(1-正常 0-禁用)") - private Integer status; - - @Schema(description = "备注") - private String remark; - - @Schema(description = "过期时间(NULL表示永不过期)") - private LocalDateTime expireTime; - - @Schema(description = "创建时间") - private LocalDateTime createTime; - - @Schema(description = "更新时间") - private LocalDateTime updateTime; -} -``` - ---- - -## 🎉 修复完成 - -所有重复类定义问题已修复,项目可以正常编译运行。 - -**建议**: -1. 提交代码前使用 `mvn clean compile` 验证 -2. 配置 IDE 的代码检查功能 -3. 团队成员注意代码合并时的冲突解决 diff --git a/src/main/java/com/youlai/boot/auth/controller/AuthController.java b/src/main/java/com/youlai/boot/auth/controller/AuthController.java index 61dc05e0..2bf77ad8 100644 --- a/src/main/java/com/youlai/boot/auth/controller/AuthController.java +++ b/src/main/java/com/youlai/boot/auth/controller/AuthController.java @@ -1,12 +1,12 @@ 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.LoginRequest; -import com.youlai.boot.auth.model.dto.WxMiniAppPhoneLoginDto; import com.youlai.boot.common.enums.LogModuleEnum; import com.youlai.boot.core.web.Result; import com.youlai.boot.auth.service.AuthService; -import com.youlai.boot.auth.model.dto.WxMiniAppCodeLoginDto; import com.youlai.boot.common.annotation.Log; import com.youlai.boot.security.model.AuthenticationToken; import io.swagger.v3.oas.annotations.Operation; @@ -15,16 +15,13 @@ import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.web.bind.annotation.*; - - /** * 认证控制层 * * @author Ray.Hao - * @since 2022/10/16 + * @since 0.0.1 */ @Tag(name = "01.认证中心") @RestController @@ -96,7 +93,6 @@ public class AuthController { return Result.success(token); } - @Operation(summary = "退出登录") @DeleteMapping("/logout") @Log(value = "退出登录", module = LogModuleEnum.LOGIN) diff --git a/src/main/java/com/youlai/boot/auth/model/dto/WxMiniAppCodeLoginDTO.java b/src/main/java/com/youlai/boot/auth/model/dto/WxMiniAppCodeLoginDTO.java index 67491330..7c8d98c5 100644 --- a/src/main/java/com/youlai/boot/auth/model/dto/WxMiniAppCodeLoginDTO.java +++ b/src/main/java/com/youlai/boot/auth/model/dto/WxMiniAppCodeLoginDTO.java @@ -6,13 +6,11 @@ import lombok.Data; import jakarta.validation.constraints.NotBlank; /** - * 备份:微信小程序Code登录请求参数(原文件名包含 DTO 大写后缀) - * - * 原内容保留在此备份文件中,以便恢复或参考,但该文件使用 .bak 后缀以避免编译冲突。 + *微信小程序Code登录请求参数 */ @Schema(description = "微信小程序Code登录请求参数") @Data -class WxMiniAppCodeLoginDto { +public class WxMiniAppCodeLoginDto { @Schema(description = "微信小程序登录时获取的code", requiredMode = Schema.RequiredMode.REQUIRED) @NotBlank(message = "code不能为空") diff --git a/src/main/java/com/youlai/boot/auth/model/dto/WxMiniAppPhoneLoginDTO.java b/src/main/java/com/youlai/boot/auth/model/dto/WxMiniAppPhoneLoginDTO.java index 8d9e28aa..1cf3c892 100644 --- a/src/main/java/com/youlai/boot/auth/model/dto/WxMiniAppPhoneLoginDTO.java +++ b/src/main/java/com/youlai/boot/auth/model/dto/WxMiniAppPhoneLoginDTO.java @@ -6,13 +6,11 @@ import lombok.Data; import jakarta.validation.constraints.NotBlank; /** - * 备份:微信小程序手机号登录请求参数(原文件名包含 DTO 大写后缀) - * - * 原内容保留在此备份文件中,以便恢复或参考,但该文件使用 .bak 后缀以避免编译冲突。 + * 微信小程序手机号登录请求参数 */ @Schema(description = "微信小程序手机号登录请求参数") @Data -class WxMiniAppPhoneLoginDto { +public class WxMiniAppPhoneLoginDto { @Schema(description = "微信小程序登录时获取的code", requiredMode = Schema.RequiredMode.REQUIRED) @NotBlank(message = "code不能为空") diff --git a/src/main/java/com/youlai/boot/system/model/bo/RolePerm sBo.java b/src/main/java/com/youlai/boot/system/model/bo/RolePerm sBo.java deleted file mode 100644 index e69de29b..00000000 diff --git a/src/main/java/com/youlai/boot/system/model/bo/RolePermsBo.java b/src/main/java/com/youlai/boot/system/model/bo/RolePermsBo.java new file mode 100644 index 00000000..3f0c371f --- /dev/null +++ b/src/main/java/com/youlai/boot/system/model/bo/RolePermsBo.java @@ -0,0 +1,26 @@ +package com.youlai.boot.system.model.bo; + +import lombok.Data; +import java.util.Set; + +/** + * 角色权限集合 + * + * @author Ray.Hao + * @since 3.0.0 + */ +@Data +public class RolePermsBo { + + /** + * 角色编码 + */ + private String roleCode; + + /** + * 权限集合 + */ + private Set perms; +} + + diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index a914de63..c6670944 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -1,5 +1,5 @@ server: - port: 8001 + port: 8000 # 数据库类型:用于 MyBatis-Plus 分页方言等(仅方言,不负责连接信息) app: