diff --git a/RepoSourceConfigEntity.java b/RepoSourceConfigEntity.java new file mode 100644 index 000000000..1e721061b --- /dev/null +++ b/RepoSourceConfigEntity.java @@ -0,0 +1,74 @@ +package com.softsafe.sast.platform.domain.user.model.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler; +import com.softsafe.sast.platform.domain.model.DeleteBaseEntity; +import com.softsafe.sast.platform.domain.model.enums.OauthSource; +import lombok.*; + +import java.io.Serializable; +import java.util.Map; + +/** + * 代码仓库集成配置实体类 + * 对应表: repo_source_config + */ +@EqualsAndHashCode(callSuper = true) +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +// autoResultMap = true 是核心,必须开启才能让 @TableField 的 TypeHandler 生效,自动转换 JSONB +@TableName(value = "repo_source_config", autoResultMap = true) +public class RepoSourceConfigEntity extends DeleteBaseEntity implements Serializable { + private static final long serialVersionUID = 1L; + /** + * 主键ID + * Postgres 的 GENERATED BY DEFAULT AS IDENTITY 对应 IdType.AUTO + */ + @TableId(type = IdType.AUTO) + private Long id; + + /** + * 配置名称(如: 公司GitHub, 私有GitLab) + */ + private String name; + + /** + * 类型: GITHUB, GITLAB, GITLAB_SELF_HOSTED + * 建议项目中定义对应的枚举类 RepoSourceTypeEnum + */ + private OauthSource type; + + /** + * API地址 + */ + private String endpoint; + + /** + * 页面访问地址 + */ + private String uiUrl; + + /** + * Client ID / App ID + */ + private String clientId; + + /** + * Client Secret (建议应用层加密后存入) + */ + private String clientSecret; + + /** + * 扩展参数 (JSONB) + */ + @TableField(typeHandler = JacksonTypeHandler.class) + private Map extendedParams; + + private Integer status; + +} \ No newline at end of file diff --git a/UserCredentialEntity.java b/UserCredentialEntity.java new file mode 100644 index 000000000..65558f9b4 --- /dev/null +++ b/UserCredentialEntity.java @@ -0,0 +1,74 @@ +package com.softsafe.sast.platform.domain.user.model.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler; +import com.softsafe.sast.platform.domain.model.enums.CredentialTypeEnum; +import com.softsafe.sast.platform.domain.model.enums.CredentialUsageEnum; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.util.Map; + +/** + * 用户凭证表实体类 + * 对应表名:user_credential + * 用于存储用户的认证凭证(如 OAuth Token、Installation ID、PAT) + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@TableName(value = "user_credential", autoResultMap = true) +public class UserCredentialEntity implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 ID + * 对应 SQL: id bigserial primary key + */ + @TableId(type = IdType.AUTO) + private Long id; + + /** + * 用户信息表 ID + * 关联 user_info.id + * 对应 SQL: user_info_id bigint not null + */ + private Long userInfoId; + + /** + * 凭证类型 (OAUTH_TOKEN, INSTALLATION_ID, PAT) + * 对应 SQL: type varchar(50) not null + */ + @TableField("type") + private CredentialTypeEnum type; + + + private CredentialUsageEnum userType; + + /** + * 认证凭证值 (存 AccessToken 或 InstallId) + * 对应 SQL: credential varchar(1024) not null + */ + private String credential; + + + + private Long repoSourceConfigId; + + /** + * 辅助信息 (RefreshToken, ExpiresAt 等 json) + * 对应 SQL: meta_info jsonb + */ + @TableField(typeHandler = JacksonTypeHandler.class) + private Map metaInfo; + + +}