rename com.imyeyu.server to com.imyeyu.api

This commit is contained in:
Timi
2025-07-22 15:26:14 +08:00
parent e816b885b2
commit 323e038e86
340 changed files with 1174 additions and 1175 deletions
@@ -0,0 +1,20 @@
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;
}
@@ -0,0 +1,22 @@
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,21 @@
package com.imyeyu.api.modules.common.vo.attachment;
import com.imyeyu.api.modules.common.entity.Attachment;
import com.imyeyu.spring.annotation.table.Transient;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.InputStream;
/**
* @author 夜雨
* @since 2024-02-21 10:58
*/
@Data
@Transient
@EqualsAndHashCode(callSuper = true)
public class AttachmentRequest extends Attachment {
private InputStream inputStream;
}
@@ -0,0 +1,15 @@
package com.imyeyu.api.modules.common.vo.attachment;
import lombok.Data;
import lombok.EqualsAndHashCode;
import com.imyeyu.api.bean.MultilingualHandler;
import com.imyeyu.api.modules.common.entity.Attachment;
/**
* @author 夜雨
* @since 2024-02-21 10:55
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class AttachmentView extends Attachment implements MultilingualHandler {
}
@@ -0,0 +1,41 @@
package com.imyeyu.api.modules.common.vo.comment;
import com.imyeyu.spring.bean.Page;
import jakarta.validation.constraints.Min;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.Getter;
/**
* @author 夜雨
* @since 2023-07-15 09:03
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class CommentReplyPage extends Page {
/**
*
*
* @author 夜雨
* @since 2025-04-17 23:29
*/
@Getter
@AllArgsConstructor
public enum BizType {
COMMENT("comment_id"),
SENDER("sender_id"),
RECEIVER("receiver_id");
final String column;
}
private BizType bizType;
@Min(1)
private Long bizId;
}
@@ -0,0 +1,28 @@
package com.imyeyu.api.modules.common.vo.comment;
import com.imyeyu.api.modules.common.entity.CommentReply;
import com.imyeyu.api.modules.common.vo.user.UserView;
import com.imyeyu.spring.annotation.table.Transient;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* @author 夜雨
* @since 2024-03-05 17:48
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class CommentReplyView extends CommentReply {
/** 所属评论 */
@Transient
private CommentView comment;
/** 发送用户 */
@Transient
private UserView sender;
/** 回复用户 */
@Transient
private UserView receiver;
}
@@ -0,0 +1,34 @@
package com.imyeyu.api.modules.common.vo.comment;
import com.imyeyu.api.modules.blog.entity.Article;
import com.imyeyu.api.modules.common.entity.Comment;
import com.imyeyu.api.modules.common.vo.user.UserView;
import com.imyeyu.api.modules.git.bean.gitea.Repository;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.List;
/**
* @author 夜雨
* @since 2024-02-29 16:37
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class CommentView extends Comment {
/** 回复数量 */
private int repliesLength;
/** 发送用户 */
private UserView user;
/** 关联文章 */
private Article article;
/** 关联仓库 */
private Repository repository;
/** 回复列表 */
private List<CommentReplyView> replies;
}
@@ -0,0 +1,18 @@
package com.imyeyu.api.modules.common.vo.comment;
import jakarta.validation.constraints.Min;
import lombok.Data;
import lombok.EqualsAndHashCode;
import com.imyeyu.spring.bean.Page;
/**
* @author 夜雨
* @since 2023-07-15 14:13
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class UserCommentPage extends Page {
@Min(1)
private Long userId;
}
@@ -0,0 +1,18 @@
package com.imyeyu.api.modules.common.vo.icon;
import com.imyeyu.api.modules.common.entity.Icon;
import lombok.Data;
import java.util.List;
/**
* @author 夜雨
* @since 2023-09-11 12:41
*/
@Data
public class AllResponse {
private long latest;
private List<Icon> icons;
}
@@ -0,0 +1,18 @@
package com.imyeyu.api.modules.common.vo.icon;
import jakarta.validation.constraints.NotBlank;
import lombok.Data;
import lombok.EqualsAndHashCode;
import com.imyeyu.spring.bean.Page;
/**
* @author 夜雨
* @since 2023-07-14 15:26
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class LabelPage extends Page {
@NotBlank(message = "icon.page.label.empty")
private String label;
}
@@ -0,0 +1,18 @@
package com.imyeyu.api.modules.common.vo.icon;
import jakarta.validation.constraints.NotBlank;
import lombok.Data;
import lombok.EqualsAndHashCode;
import com.imyeyu.spring.bean.Page;
/**
* @author 夜雨
* @since 2023-07-14 16:13
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class NamePage extends Page {
@NotBlank(message = "icon.page.name.empty")
private String name;
}
@@ -0,0 +1,18 @@
package com.imyeyu.api.modules.common.vo.icon;
import jakarta.validation.constraints.NotBlank;
import lombok.Data;
import lombok.EqualsAndHashCode;
import com.imyeyu.spring.bean.Page;
/**
* @author 夜雨
* @since 2023-07-14 15:00
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class UnicodePage extends Page {
@NotBlank(message = "icon.page.unicode.empty")
private String unicode;
}
@@ -0,0 +1,15 @@
package com.imyeyu.api.modules.common.vo.tag;
import lombok.Data;
/**
* @author 夜雨
* @since 2025-05-30 22:58
*/
@Data
public class TagRequest {
private String bizId;
private String zhCN;
}
@@ -0,0 +1,15 @@
package com.imyeyu.api.modules.common.vo.user;
import jakarta.validation.constraints.NotBlank;
import lombok.Data;
/**
* @author 夜雨
* @since 2023-07-18 17:37
*/
@Data
public class EmailVerifyCallbackRequest {
@NotBlank
private String key;
}
@@ -0,0 +1,25 @@
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;
}
@@ -0,0 +1,26 @@
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;
}
@@ -0,0 +1,32 @@
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;
}
@@ -0,0 +1,19 @@
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;
}
@@ -0,0 +1,18 @@
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;
}
@@ -0,0 +1,21 @@
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;
}
@@ -0,0 +1,33 @@
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;
}
}
@@ -0,0 +1,56 @@
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);
}
}
}