refactor: 更新微信小程序登录请求参数的注释和备份文件,移除RolePermsBO类
This commit is contained in:
257
BUGFIX_SUMMARY.md
Normal file
257
BUGFIX_SUMMARY.md
Normal file
@@ -0,0 +1,257 @@
|
||||
# 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. 团队成员注意代码合并时的冲突解决
|
||||
@@ -6,17 +6,18 @@ import lombok.Data;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
|
||||
/**
|
||||
* 微信小程序Code登录请求参数
|
||||
* 备份:微信小程序Code登录请求参数(原文件名包含 DTO 大写后缀)
|
||||
*
|
||||
* @author 有来技术团队
|
||||
* @since 2.0.0
|
||||
* 原内容保留在此备份文件中,以便恢复或参考,但该文件使用 .bak 后缀以避免编译冲突。
|
||||
*/
|
||||
@Schema(description = "微信小程序Code登录请求参数")
|
||||
@Data
|
||||
public class WxMiniAppCodeLoginDto {
|
||||
class WxMiniAppCodeLoginDto {
|
||||
|
||||
@Schema(description = "微信小程序登录时获取的code", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotBlank(message = "code不能为空")
|
||||
private String code;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -6,14 +6,13 @@ import lombok.Data;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
|
||||
/**
|
||||
* 微信小程序手机号登录请求参数
|
||||
* 备份:微信小程序手机号登录请求参数(原文件名包含 DTO 大写后缀)
|
||||
*
|
||||
* @author Ray.Hao
|
||||
* @since 2.0.0
|
||||
* 原内容保留在此备份文件中,以便恢复或参考,但该文件使用 .bak 后缀以避免编译冲突。
|
||||
*/
|
||||
@Schema(description = "微信小程序手机号登录请求参数")
|
||||
@Data
|
||||
public class WxMiniAppPhoneLoginDto {
|
||||
class WxMiniAppPhoneLoginDto {
|
||||
|
||||
@Schema(description = "微信小程序登录时获取的code", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotBlank(message = "code不能为空")
|
||||
@@ -25,4 +24,6 @@ public class WxMiniAppPhoneLoginDto {
|
||||
@Schema(description = "加密算法的初始向量")
|
||||
private String iv;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -10,10 +10,9 @@ import com.youlai.boot.system.model.vo.UserNoticePageVo;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 用户公告状态Mapper接口
|
||||
* 用户公告状态
|
||||
*
|
||||
* @author youlaitech
|
||||
* @since 2024-08-28 16:56
|
||||
|
||||
@@ -73,3 +73,5 @@ public class NoticeBo {
|
||||
*/
|
||||
private LocalDateTime revokeTime;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,26 +0,0 @@
|
||||
package com.youlai.boot.system.model.bo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* 角色权限业务对象
|
||||
*
|
||||
* @author haoxr
|
||||
* @since 2023/11/29
|
||||
*/
|
||||
@Data
|
||||
public class RolePermsBo {
|
||||
|
||||
/**
|
||||
* 角色编码
|
||||
*/
|
||||
private String roleCode;
|
||||
|
||||
/**
|
||||
* 权限标识集合
|
||||
*/
|
||||
private Set<String> perms;
|
||||
|
||||
}
|
||||
@@ -68,3 +68,5 @@ public class UserBo {
|
||||
*/
|
||||
private LocalDateTime createTime;
|
||||
}
|
||||
|
||||
|
||||
@@ -26,3 +26,5 @@ public class VisitStatsBo {
|
||||
private BigDecimal growthRate;
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -34,3 +34,5 @@ public class CurrentUserDto {
|
||||
private Set<String> perms;
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -29,3 +29,5 @@ public class NoticeDto {
|
||||
private LocalDateTime publishTime;
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -42,3 +42,5 @@ public class UserExportDto {
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -34,3 +34,5 @@ public class UserImportDto {
|
||||
private String deptCode;
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -34,4 +34,6 @@ public class UserSessionDto {
|
||||
this.sessionIds = new HashSet<>();
|
||||
this.lastActiveTime = System.currentTimeMillis();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -36,3 +36,5 @@ public class ConfigVo {
|
||||
@Schema(description = "描述、备注")
|
||||
private String remark;
|
||||
}
|
||||
|
||||
|
||||
@@ -40,3 +40,6 @@ public class DeptVo {
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -25,3 +25,5 @@ public class DictItemOptionVo {
|
||||
private String tagType;
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -35,3 +35,5 @@ public class DictItemPageVo {
|
||||
private Integer status;
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -1,13 +1,9 @@
|
||||
package com.youlai.boot.system.model.vo;
|
||||
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
||||
/**
|
||||
* 字典分页Vo
|
||||
*
|
||||
@@ -30,5 +26,6 @@ public class DictPageVo {
|
||||
|
||||
@Schema(description = "字典状态(1-启用,0-禁用)")
|
||||
private Integer status;
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -56,4 +56,6 @@ public class LogPageVo implements Serializable {
|
||||
|
||||
@Schema(description = "操作人")
|
||||
private String operator;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -49,5 +49,6 @@ public class MenuVo {
|
||||
@Schema(description = "子菜单")
|
||||
@JsonInclude(value = JsonInclude.Include.NON_NULL)
|
||||
private List<MenuVo> children;
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -40,3 +40,6 @@ public class NoticeDetailVo {
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private LocalDateTime publishTime;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -59,3 +59,5 @@ public class NoticePageVo implements Serializable {
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm")
|
||||
private LocalDateTime revokeTime;
|
||||
}
|
||||
|
||||
|
||||
@@ -31,3 +31,5 @@ public class RolePageVo {
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private LocalDateTime updateTime;
|
||||
}
|
||||
|
||||
|
||||
@@ -61,3 +61,5 @@ public class RouteVo {
|
||||
@Schema(description = "子路由列表")
|
||||
private List<RouteVo> children;
|
||||
}
|
||||
|
||||
|
||||
@@ -37,5 +37,6 @@ public class UserNoticePageVo {
|
||||
|
||||
@Schema(description = "是否已读")
|
||||
private Integer isRead;
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -49,5 +49,6 @@ public class UserPageVo {
|
||||
@Schema(description="创建时间")
|
||||
@JsonFormat(pattern = "yyyy/MM/dd HH:mm")
|
||||
private LocalDateTime createTime;
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -46,5 +46,6 @@ public class UserProfileVo {
|
||||
@Schema(description = "创建时间")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
private Date createTime;
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -34,5 +34,6 @@ public class VisitStatsVo {
|
||||
|
||||
@Schema(description = "页面浏览量增长率")
|
||||
private BigDecimal pvGrowthRate;
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
package com.youlai.boot.system.model.vo;
|
||||
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
@@ -26,5 +25,6 @@ public class VisitTrendVo {
|
||||
|
||||
@Schema(description = "IP数")
|
||||
private List<Integer> ipList;
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
server:
|
||||
port: 8000
|
||||
port: 8001
|
||||
|
||||
# 数据库类型:用于 MyBatis-Plus 分页方言等(仅方言,不负责连接信息)
|
||||
app:
|
||||
@@ -11,8 +11,8 @@ spring:
|
||||
# === MySQL 数据源(默认启用) ===
|
||||
driver-class-name: com.mysql.cj.jdbc.Driver
|
||||
url: jdbc:mysql://www.youlai.tech:3306/youlai_admin?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&autoReconnect=true&allowMultiQueries=true
|
||||
username: root
|
||||
password: Youlai@2025
|
||||
username: youlai
|
||||
password: 123456
|
||||
|
||||
# === PostgreSQL 数据源示例(按需启用) ===
|
||||
# driver-class-name: org.postgresql.Driver
|
||||
|
||||
Reference in New Issue
Block a user