refactor all

This commit is contained in:
Timi
2026-07-31 01:03:53 +08:00
parent 4e7f340cc6
commit e45809a0db
512 changed files with 14620 additions and 13519 deletions
@@ -1,20 +0,0 @@
package com.imyeyu.api.modules.common.vo;
import lombok.Data;
import com.imyeyu.api.bean.CaptchaFrom;
/**
* 验证码请求,不要执行参数校验,否则会被全局拦截器统一返回 JSON 错误,但这是验证码,需要返回错误图片
*
* @author 夜雨
* @since 2023-07-15 18:14
*/
@Data
public class CaptchaRequest {
private int width;
private int height;
private CaptchaFrom from;
}
@@ -1,22 +0,0 @@
package com.imyeyu.api.modules.common.vo;
import jakarta.validation.constraints.Email;
import jakarta.validation.constraints.NotBlank;
import lombok.Data;
/**
* @author 夜雨
* @since 2023-05-26 13:21
*/
@Data
public class FeedbackRequest {
@NotBlank
private String from;
@Email
private String email;
@NotBlank
private String data;
}
@@ -0,0 +1,20 @@
package com.imyeyu.api.modules.common.vo.attach;
import com.imyeyu.api.modules.common.entity.Attachment;
import lombok.Data;
/**
* 业务附件差分更新请求
*
* @author 夜雨
* @since 2026-03-11 00:00
*/
@Data
public class BizDeleteReq {
/** 业务类型 */
private Attachment.BizType bizType;
/** 业务 ID */
private String bizId;
}
@@ -0,0 +1,26 @@
package com.imyeyu.api.modules.common.vo.attach;
import com.imyeyu.api.modules.common.entity.Attachment;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
/**
* 业务附件差分更新请求
*
* @author 夜雨
* @since 2026-03-11 00:00
*/
@Data
public class BizUpdateReq {
/** 业务类型 */
private Attachment.BizType bizType;
/** 业务 ID */
private String bizId;
/** 附件项列表 */
private List<Attachment> items = new ArrayList<>();
}
@@ -0,0 +1,15 @@
package com.imyeyu.api.modules.common.vo.attach;
import lombok.Data;
/**
* @author 夜雨
* @since 2025-09-27 01:37
*/
@Data
public class TempFileResp {
private String id;
private Long expireAt;
}
@@ -0,0 +1,18 @@
package com.imyeyu.api.modules.common.vo.attach;
import com.imyeyu.api.modules.common.entity.Attachment;
import lombok.Data;
/**
* @author 夜雨
* @since 2026-01-13 14:55
*/
@Data
public class TempFileSaveReq {
private Attachment.BizType bizType;
private String bizId;
private String[] tempFileIds;
}
@@ -0,0 +1,28 @@
package com.imyeyu.api.modules.common.vo.comment;
import lombok.Data;
/**
* 创建主评论请求
*
* @author 夜雨
* @since 2026-05-27 18:40
*/
@Data
public class CommentCreateReq {
/** 业务类型 */
protected String bizType;
/** 业务 ID */
protected String bizId;
/** 评论用户 ID,登录用户评论时使用 */
protected String userId;
/** 评论用户昵称,游客评论时使用 */
protected String userNick;
/** 评论内容 */
protected String content;
}
@@ -0,0 +1,28 @@
package com.imyeyu.api.modules.common.vo.comment;
import lombok.Data;
/**
* 评论层查询请求
*
* @author 夜雨
* @since 2026-05-27 17:20
*/
@Data
public class CommentLayerQueryReq {
/** 业务类型 */
protected String bizType;
/** 业务 ID */
protected String bizId;
/** 父评论 ID,查询主评论时为 null */
protected String parentId;
/** 起始偏移量 */
protected Integer offset;
/** 查询条数 */
protected Integer limit;
}
@@ -0,0 +1,26 @@
package com.imyeyu.api.modules.common.vo.comment;
import com.fasterxml.jackson.annotation.JsonView;
import com.imyeyu.api.modules.common.entity.Comment;
import com.imyeyu.spring.util.ResponseView;
import lombok.Data;
import java.util.List;
/**
* 评论层响应
*
* @author 夜雨
* @since 2026-05-27 17:20
*/
@Data
public class CommentLayerResp {
/** 当前层总数 */
@JsonView(ResponseView.Public.class)
private Long total;
/** 当前层评论列表 */
@JsonView(ResponseView.Public.class)
private List<Comment> list;
}
@@ -0,0 +1,30 @@
package com.imyeyu.api.modules.common.vo.comment;
import com.fasterxml.jackson.annotation.JsonView;
import com.imyeyu.api.modules.common.entity.Comment;
import com.imyeyu.spring.util.ResponseView;
import lombok.Data;
import java.util.List;
/**
* 评论节点响应
*
* @author 夜雨
* @since 2026-05-27 17:20
*/
@Data
public class CommentNodeResp {
/** 当前评论 */
@JsonView(ResponseView.Public.class)
private Comment comment;
/** 直属回复总数 */
@JsonView(ResponseView.Public.class)
private Long replyTotal;
/** 直属回复列表 */
@JsonView(ResponseView.Public.class)
private List<Comment> replyList;
}
@@ -0,0 +1,25 @@
package com.imyeyu.api.modules.common.vo.comment;
import lombok.Data;
/**
* 回复评论请求
*
* @author 夜雨
* @since 2026-05-27 18:40
*/
@Data
public class CommentReplyReq {
/** 父评论 ID */
protected String parentId;
/** 评论用户 ID,登录用户评论时使用 */
protected String userId;
/** 评论用户昵称,游客评论时使用 */
protected String userNick;
/** 回复内容 */
protected String content;
}
@@ -0,0 +1,30 @@
package com.imyeyu.api.modules.common.vo.comment;
import com.fasterxml.jackson.annotation.JsonView;
import com.imyeyu.api.modules.common.entity.Comment;
import com.imyeyu.spring.util.ResponseView;
import lombok.Data;
import java.util.List;
/**
* 评论线程响应
*
* @author 夜雨
* @since 2026-05-27 17:20
*/
@Data
public class CommentThreadResp {
/** 主评论 */
@JsonView(ResponseView.Public.class)
private Comment root;
/** 子评论总数 */
@JsonView(ResponseView.Public.class)
private Long replyTotal;
/** 子评论列表 */
@JsonView(ResponseView.Public.class)
private List<Comment> replyList;
}
@@ -0,0 +1,30 @@
package com.imyeyu.api.modules.common.vo.comment;
import com.fasterxml.jackson.annotation.JsonView;
import com.imyeyu.api.modules.common.entity.Comment;
import com.imyeyu.spring.util.ResponseView;
import lombok.Data;
import java.util.List;
/**
* 扁平评论列表项
*
* @author 夜雨
* @since 2026-05-27 17:20
*/
@Data
public class FlatCommentListItemResp {
/** 主评论 */
@JsonView(ResponseView.Public.class)
private Comment root;
/** 回复预览总数 */
@JsonView(ResponseView.Public.class)
private Long replyPreviewTotal;
/** 回复预览列表 */
@JsonView(ResponseView.Public.class)
private List<Comment> replyPreviewList;
}
@@ -0,0 +1,25 @@
package com.imyeyu.api.modules.common.vo.comment;
import com.fasterxml.jackson.annotation.JsonView;
import com.imyeyu.spring.util.ResponseView;
import lombok.Data;
import java.util.List;
/**
* 扁平评论列表响应
*
* @author 夜雨
* @since 2026-05-27 17:20
*/
@Data
public class FlatCommentListResp {
/** 主评论总数 */
@JsonView(ResponseView.Public.class)
private Long total;
/** 主评论列表 */
@JsonView(ResponseView.Public.class)
private List<FlatCommentListItemResp> list;
}
@@ -0,0 +1,25 @@
package com.imyeyu.api.modules.common.vo.comment;
import com.fasterxml.jackson.annotation.JsonView;
import com.imyeyu.spring.util.ResponseView;
import lombok.Data;
import java.util.List;
/**
* 层级评论列表响应
*
* @author 夜雨
* @since 2026-05-27 17:20
*/
@Data
public class NestedCommentListResp {
/** 主评论总数 */
@JsonView(ResponseView.Public.class)
private Long total;
/** 主评论列表 */
@JsonView(ResponseView.Public.class)
private List<CommentNodeResp> list;
}
@@ -1,25 +0,0 @@
package com.imyeyu.api.modules.common.vo.user;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import com.imyeyu.api.modules.common.validation.UserPassword;
/**
* 登录请求对象
*
* @author 夜雨
* @since 2023-04-25 17:26
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class LoginRequest {
/** 用户(可能是 UID、邮箱或用户名) */
private String user;
/** 明文密码 */
@UserPassword
private String password;
}
@@ -1,26 +0,0 @@
package com.imyeyu.api.modules.common.vo.user;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* 登录返回对象
*
* @author 夜雨
* @since 2023-05-05 17:57
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class LoginResponse {
/** 登录用户 ID */
private Long id;
/** 令牌 */
private String token;
/** 过期时间 */
private Long expireAt;
}
@@ -1,32 +0,0 @@
package com.imyeyu.api.modules.common.vo.user;
import jakarta.validation.constraints.Pattern;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import com.imyeyu.api.modules.common.validation.UserName;
import com.imyeyu.api.modules.common.validation.UserPassword;
/**
* 注册请求对象
*
* @author 夜雨
* @since 2023-05-05 18:08
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class RegisterRequest {
/** 用户名 */
@UserName
private String name;
/** 明文密码 */
@UserPassword
private String password;
/** 邮箱 */
@Pattern(regexp = "^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$", message = "user.email.not_match_regex")
private String email;
}
@@ -1,19 +0,0 @@
package com.imyeyu.api.modules.common.vo.user;
import jakarta.validation.constraints.NotBlank;
import lombok.Data;
import com.imyeyu.api.modules.common.validation.UserPassword;
/**
* @author 夜雨
* @since 2023-07-15 11:23
*/
@Data
public class UpdatePasswordByKeyRequest {
@NotBlank
private String key;
@UserPassword
private String newPassword;
}
@@ -1,18 +0,0 @@
package com.imyeyu.api.modules.common.vo.user;
import lombok.Data;
import com.imyeyu.api.modules.common.validation.UserPassword;
/**
* @author 夜雨
* @since 2023-07-15 11:23
*/
@Data
public class UpdatePasswordRequest {
@UserPassword
private String oldValue;
@UserPassword
private String newValue;
}
@@ -1,21 +0,0 @@
package com.imyeyu.api.modules.common.vo.user;
import com.imyeyu.api.modules.common.entity.Attachment;
import com.imyeyu.api.modules.common.entity.UserProfile;
import com.imyeyu.spring.annotation.table.Transient;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.List;
/**
* @author 夜雨
* @since 2024-02-21 13:00
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class UserProfileView extends UserProfile {
@Transient
private List<Attachment> attachmentList;
}
@@ -1,33 +0,0 @@
package com.imyeyu.api.modules.common.vo.user;
import lombok.Data;
import lombok.EqualsAndHashCode;
import com.imyeyu.api.modules.common.entity.User;
import com.imyeyu.api.modules.common.entity.UserProfile;
import org.springframework.web.multipart.MultipartFile;
/**
* @author 夜雨
* @since 2024-02-21 11:55
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class UserRequest extends User {
private UserProfileRequest profile;
/**
*
*
* @author 夜雨
* @since 2024-05-17 00:06
*/
@Data
@EqualsAndHashCode(callSuper = true)
public static final class UserProfileRequest extends UserProfile {
private MultipartFile wrapper;
private MultipartFile avatar;
}
}
@@ -1,56 +0,0 @@
package com.imyeyu.api.modules.common.vo.user;
import com.imyeyu.java.bean.timi.TimiCode;
import com.imyeyu.java.bean.timi.TimiException;
import com.imyeyu.java.ref.Ref;
import com.imyeyu.api.TimiServerAPI;
import com.imyeyu.api.modules.common.entity.User;
import com.imyeyu.api.modules.common.entity.UserPrivacy;
import com.imyeyu.api.modules.common.service.UserPrivacyService;
import com.imyeyu.api.modules.common.service.UserService;
import com.imyeyu.spring.annotation.table.Transient;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.List;
/**
* 用户视图
*
* @author 夜雨
* @since 2024-03-05 20:00
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class UserView extends User {
/** 用户信息视图 */
@Transient
private UserProfileView profile;
public UserView doFilter() {
try {
UserService userService = TimiServerAPI.applicationContext.getBean(UserService.class);
UserPrivacyService privacyService = TimiServerAPI.applicationContext.getBean(UserPrivacyService.class);
password = null;
updatedAt = null;
emailVerifyAt = null;
profile.setUpdatedAt(null);
profile.setLastLoginIP(null);
User loginUser = userService.getLoginUser();
if (loginUser == null || !id.equals(loginUser.getId())) {
// 未登录,并且获取的用户资料不是自己的,执行隐私控制过滤
UserPrivacy privacy = privacyService.get(id);
List<String> filters = privacy.listFilterFields();
for (int i = 0; i < filters.size(); i++) {
Ref.setFieldValue(profile, filters.get(i), null);
}
}
return this;
} catch (Exception e) {
throw new TimiException(TimiCode.ERROR, "TODO filter user fail", e);
}
}
}