rename com.imyeyu.server to com.imyeyu.api
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user