diff --git a/.kiro/steering/项目结构说明.md b/.kiro/steering/项目结构说明.md index d868b94..f588768 100644 --- a/.kiro/steering/项目结构说明.md +++ b/.kiro/steering/项目结构说明.md @@ -76,6 +76,13 @@ offerpie/back-end │ ├─ UserJobFavoriteMapper.java # 用户收藏岗位Mapper │ ├─ UserJobApplicationMapper.java # 用户投递记录Mapper │ ├─ UserJobDislikeMapper.java # 用户不感兴趣记录Mapper + │ ├─ UserJobIntentionMapper.java # 用户求职意向Mapper + │ ├─ UserProfileMapper.java # 用户个人资料Mapper + │ ├─ UserProfileEducationMapper.java # 用户教育经历Mapper + │ ├─ UserProfileWorkMapper.java # 用户工作经历Mapper + │ ├─ UserProfileInternshipMapper.java # 用户实习经历Mapper + │ ├─ UserProfileProjectMapper.java # 用户项目经历Mapper + │ ├─ UserProfileCompetitionMapper.java # 用户竞赛经历Mapper │ └─ AppJobDataMapper.java # 爬虫岗位原始数据Mapper ├─ pojo/ │ ├─ po/ # 持久化实体 @@ -98,6 +105,13 @@ offerpie/back-end │ │ ├─ UserJobFavorite.java # 用户收藏岗位表(bg_user_job_favorite) │ │ ├─ UserJobApplication.java # 用户投递记录表(bg_user_job_application) │ │ ├─ UserJobDislike.java # 用户不感兴趣记录表(bg_user_job_dislike) + │ │ ├─ UserJobIntention.java # 用户求职意向表(bg_user_job_intention) + │ │ ├─ UserProfile.java # 用户个人资料表(bg_user_profile) + │ │ ├─ UserProfileEducation.java # 用户教育经历表(bg_user_profile_education) + │ │ ├─ UserProfileWork.java # 用户工作经历表(bg_user_profile_work) + │ │ ├─ UserProfileInternship.java # 用户实习经历表(bg_user_profile_internship) + │ │ ├─ UserProfileProject.java # 用户项目经历表(bg_user_profile_project) + │ │ ├─ UserProfileCompetition.java # 用户竞赛经历表(bg_user_profile_competition) │ │ └─ AppJobData.java # 爬虫岗位原始数据表(app_job_data) │ └─ vo/ # ViewObject(OssUrlVo 等) └─ service/ # 业务 Service(OssService、SmsService、DictCacheService、JobCleanService、JobCleanTransactionService、CompanyCleanService、CompanyCleanTransactionService 等) @@ -135,6 +149,13 @@ offerpie/back-end | `Industry` | manager | 行业字典表(bg_industry),树形结构,一级/二级分类。 | | `SkillTag` | manager | 技能标签表(bg_skill_tag),挂在岗位类型下,不分级,用于匹配度计算。 | | `UserJobDislike` | manager | 用户不感兴趣记录表(bg_user_job_dislike),记录用户对岗位的不感兴趣原因,冗余公司ID/地区编码/行业ID方便推荐过滤。 | +| `UserJobIntention` | manager | 用户求职意向表(bg_user_job_intention),存储意向岗位类型、城市、行业(JSON数组,节点可能为任意级别)和工作类型。 | +| `UserProfile` | manager | 用户个人资料表(bg_user_profile),存储身份证号、所在城市、微信号、作品集链接、工作年限、经验行业IDs、技能标签、证书标签。 | +| `UserProfileEducation` | manager | 用户教育经历表(bg_user_profile_education,profile子表),学校、专业、学历、起止年份、描述段落(JSON对象数组)。 | +| `UserProfileWork` | manager | 用户工作经历表(bg_user_profile_work,profile子表),公司、职位、起止时间、描述段落(JSON对象数组)。 | +| `UserProfileInternship` | manager | 用户实习经历表(bg_user_profile_internship,profile子表),公司、职位、起止时间、描述段落(JSON对象数组)。 | +| `UserProfileProject` | manager | 用户项目经历表(bg_user_profile_project,profile子表),公司、项目名、角色、起止时间、描述段落(JSON对象数组)。 | +| `UserProfileCompetition` | manager | 用户竞赛经历表(bg_user_profile_competition,profile子表),竞赛名、奖项、获奖时间、描述段落(JSON对象数组)。 | | `JobSkillTagRelation` | manager | 岗位-技能标签关联表(bg_job_skill_tag_relation),预定义技能标签与岗位的关联,用于匹配度计算。 | | `AppJobData` | manager | 爬虫岗位原始数据表(app_job_data),存储爬虫抓取的原始岗位数据,供清洗服务读取并写入业务表。 | diff --git a/manager/src/main/java/org/jiayunet/mapper/UserJobIntentionMapper.java b/manager/src/main/java/org/jiayunet/mapper/UserJobIntentionMapper.java new file mode 100644 index 0000000..e1974cc --- /dev/null +++ b/manager/src/main/java/org/jiayunet/mapper/UserJobIntentionMapper.java @@ -0,0 +1,14 @@ +package org.jiayunet.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.jiayunet.pojo.po.UserJobIntention; + +/** + * 用户求职意向Mapper + * + * @author zk + */ +@Mapper +public interface UserJobIntentionMapper extends BaseMapper { +} diff --git a/manager/src/main/java/org/jiayunet/mapper/UserProfileCompetitionMapper.java b/manager/src/main/java/org/jiayunet/mapper/UserProfileCompetitionMapper.java new file mode 100644 index 0000000..71fff90 --- /dev/null +++ b/manager/src/main/java/org/jiayunet/mapper/UserProfileCompetitionMapper.java @@ -0,0 +1,14 @@ +package org.jiayunet.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.jiayunet.pojo.po.UserProfileCompetition; + +/** + * 用户竞赛经历Mapper + * + * @author zk + */ +@Mapper +public interface UserProfileCompetitionMapper extends BaseMapper { +} diff --git a/manager/src/main/java/org/jiayunet/mapper/UserProfileEducationMapper.java b/manager/src/main/java/org/jiayunet/mapper/UserProfileEducationMapper.java new file mode 100644 index 0000000..ba8c5e5 --- /dev/null +++ b/manager/src/main/java/org/jiayunet/mapper/UserProfileEducationMapper.java @@ -0,0 +1,14 @@ +package org.jiayunet.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.jiayunet.pojo.po.UserProfileEducation; + +/** + * 用户教育经历Mapper + * + * @author zk + */ +@Mapper +public interface UserProfileEducationMapper extends BaseMapper { +} diff --git a/manager/src/main/java/org/jiayunet/mapper/UserProfileInternshipMapper.java b/manager/src/main/java/org/jiayunet/mapper/UserProfileInternshipMapper.java new file mode 100644 index 0000000..b9b867e --- /dev/null +++ b/manager/src/main/java/org/jiayunet/mapper/UserProfileInternshipMapper.java @@ -0,0 +1,14 @@ +package org.jiayunet.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.jiayunet.pojo.po.UserProfileInternship; + +/** + * 用户实习经历Mapper + * + * @author zk + */ +@Mapper +public interface UserProfileInternshipMapper extends BaseMapper { +} diff --git a/manager/src/main/java/org/jiayunet/mapper/UserProfileMapper.java b/manager/src/main/java/org/jiayunet/mapper/UserProfileMapper.java new file mode 100644 index 0000000..1f40ada --- /dev/null +++ b/manager/src/main/java/org/jiayunet/mapper/UserProfileMapper.java @@ -0,0 +1,14 @@ +package org.jiayunet.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.jiayunet.pojo.po.UserProfile; + +/** + * 用户个人资料Mapper + * + * @author zk + */ +@Mapper +public interface UserProfileMapper extends BaseMapper { +} diff --git a/manager/src/main/java/org/jiayunet/mapper/UserProfileProjectMapper.java b/manager/src/main/java/org/jiayunet/mapper/UserProfileProjectMapper.java new file mode 100644 index 0000000..51f0484 --- /dev/null +++ b/manager/src/main/java/org/jiayunet/mapper/UserProfileProjectMapper.java @@ -0,0 +1,14 @@ +package org.jiayunet.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.jiayunet.pojo.po.UserProfileProject; + +/** + * 用户项目经历Mapper + * + * @author zk + */ +@Mapper +public interface UserProfileProjectMapper extends BaseMapper { +} diff --git a/manager/src/main/java/org/jiayunet/mapper/UserProfileWorkMapper.java b/manager/src/main/java/org/jiayunet/mapper/UserProfileWorkMapper.java new file mode 100644 index 0000000..5740e49 --- /dev/null +++ b/manager/src/main/java/org/jiayunet/mapper/UserProfileWorkMapper.java @@ -0,0 +1,14 @@ +package org.jiayunet.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.jiayunet.pojo.po.UserProfileWork; + +/** + * 用户工作经历Mapper + * + * @author zk + */ +@Mapper +public interface UserProfileWorkMapper extends BaseMapper { +} diff --git a/manager/src/main/java/org/jiayunet/pojo/po/UserJobIntention.java b/manager/src/main/java/org/jiayunet/pojo/po/UserJobIntention.java new file mode 100644 index 0000000..1bb36e7 --- /dev/null +++ b/manager/src/main/java/org/jiayunet/pojo/po/UserJobIntention.java @@ -0,0 +1,42 @@ +package org.jiayunet.pojo.po; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.time.Instant; + +/** + * 用户求职意向表(bg_user_job_intention) + * + * @author zk + */ +@Data +@TableName(value = "bg_user_job_intention") +public class UserJobIntention { + + @TableId(type = IdType.ASSIGN_ID) + private Long id; + + /** 用户ID */ + private Long userId; + + /** 意向岗位类型ID列表(JSON数组),节点可能为任意级别 */ + private String categoryIds; + + /** 意向城市编码列表(JSON数组),节点可能为任意级别 */ + private String regionCodes; + + /** 意向行业ID列表(JSON数组),节点可能为任意级别 */ + private String industryIds; + + /** 工作类型 0=全职 1=实习 */ + private Integer employmentType; + + /** 创建时间 */ + private Instant createTime; + + /** 更新时间 */ + private Instant updateTime; +} diff --git a/manager/src/main/java/org/jiayunet/pojo/po/UserProfile.java b/manager/src/main/java/org/jiayunet/pojo/po/UserProfile.java new file mode 100644 index 0000000..3e4fc2a --- /dev/null +++ b/manager/src/main/java/org/jiayunet/pojo/po/UserProfile.java @@ -0,0 +1,54 @@ +package org.jiayunet.pojo.po; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.time.Instant; + +/** + * 用户个人资料表(bg_user_profile) + * + * @author zk + */ +@Data +@TableName(value = "bg_user_profile") +public class UserProfile { + + @TableId(type = IdType.ASSIGN_ID) + private Long id; + + /** 用户ID */ + private Long userId; + + /** 身份证号 */ + private String idCard; + + /** 所在城市编码,关联bg_china_regions_code */ + private String regionCode; + + /** 微信号 */ + private String wechatNumber; + + /** 作品集链接 */ + private String portfolioUrl; + + /** 工作年限(不展示,用于适配度计算) */ + private Integer workYears; + + /** 拥有经验的行业ID列表(不展示,用于适配度计算),格式:[1, 3, 7] */ + private String experienceIndustryIds; + + /** 技能标签列表,格式:["CET 6", "Photoshop", "Python"] */ + private String skills; + + /** 证书标签列表,格式:["CFA", "CMA"] */ + private String certificates; + + /** 创建时间 */ + private Instant createTime; + + /** 更新时间 */ + private Instant updateTime; +} diff --git a/manager/src/main/java/org/jiayunet/pojo/po/UserProfileCompetition.java b/manager/src/main/java/org/jiayunet/pojo/po/UserProfileCompetition.java new file mode 100644 index 0000000..bea792f --- /dev/null +++ b/manager/src/main/java/org/jiayunet/pojo/po/UserProfileCompetition.java @@ -0,0 +1,48 @@ +package org.jiayunet.pojo.po; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.time.Instant; + +/** + * 用户竞赛经历表(bg_user_profile_competition,bg_user_profile子表) + * + * @author zk + */ +@Data +@TableName(value = "bg_user_profile_competition") +public class UserProfileCompetition { + + @TableId(type = IdType.ASSIGN_ID) + private Long id; + + /** 关联bg_user_profile.id */ + private Long profileId; + + /** 用户ID(冗余,便于直接按用户查询) */ + private Long userId; + + /** 竞赛名称 */ + private String competitionName; + + /** 获奖情况,如全国二等奖 */ + private String award; + + /** 获奖时间,格式:2023.07 */ + private String awardDate; + + /** 描述段落,格式:[{"id":"a1b2","text":"协助分析师开展TMT行业研究..."}],id为前端生成的短标识,用于简历优化时精确定位段落 */ + private String description; + + /** 排序序号,越小越靠前 */ + private Integer sortOrder; + + /** 创建时间 */ + private Instant createTime; + + /** 更新时间 */ + private Instant updateTime; +} diff --git a/manager/src/main/java/org/jiayunet/pojo/po/UserProfileEducation.java b/manager/src/main/java/org/jiayunet/pojo/po/UserProfileEducation.java new file mode 100644 index 0000000..c7ad0b7 --- /dev/null +++ b/manager/src/main/java/org/jiayunet/pojo/po/UserProfileEducation.java @@ -0,0 +1,57 @@ +package org.jiayunet.pojo.po; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.time.Instant; + +/** + * 用户教育经历表(bg_user_profile_education,bg_user_profile子表) + * + * @author zk + */ +@Data +@TableName(value = "bg_user_profile_education") +public class UserProfileEducation { + + @TableId(type = IdType.ASSIGN_ID) + private Long id; + + /** 关联bg_user_profile.id */ + private Long profileId; + + /** 用户ID(冗余,便于直接按用户查询) */ + private Long userId; + + /** 学校名称 */ + private String school; + + /** 专业 */ + private String major; + + /** 学历 1=大专 2=本科 3=硕士 4=博士 */ + private Integer degree; + + /** 学习形式 0=全日制 1=非全日制 */ + private Integer studyType; + + /** 入学年份 */ + private Integer startYear; + + /** 毕业年份 */ + private Integer endYear; + + /** 描述段落,格式:[{"id":"a1b2","text":"GPA: 3.8/4.0..."}],id为前端生成的短标识,用于简历优化时精确定位段落 */ + private String description; + + /** 排序序号,越小越靠前 */ + private Integer sortOrder; + + /** 创建时间 */ + private Instant createTime; + + /** 更新时间 */ + private Instant updateTime; +} diff --git a/manager/src/main/java/org/jiayunet/pojo/po/UserProfileInternship.java b/manager/src/main/java/org/jiayunet/pojo/po/UserProfileInternship.java new file mode 100644 index 0000000..96d3aeb --- /dev/null +++ b/manager/src/main/java/org/jiayunet/pojo/po/UserProfileInternship.java @@ -0,0 +1,51 @@ +package org.jiayunet.pojo.po; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.time.Instant; + +/** + * 用户实习经历表(bg_user_profile_internship,bg_user_profile子表) + * + * @author zk + */ +@Data +@TableName(value = "bg_user_profile_internship") +public class UserProfileInternship { + + @TableId(type = IdType.ASSIGN_ID) + private Long id; + + /** 关联bg_user_profile.id */ + private Long profileId; + + /** 用户ID(冗余,便于直接按用户查询) */ + private Long userId; + + /** 公司名称 */ + private String companyName; + + /** 职位 */ + private String position; + + /** 开始时间,格式:2023.06 */ + private String startDate; + + /** 结束时间,格式:2023.09,至今则为空 */ + private String endDate; + + /** 描述段落,格式:[{"id":"a1b2","text":"参与传统行业投资项目分析..."}],id为前端生成的短标识,用于简历优化时精确定位段落 */ + private String description; + + /** 排序序号,越小越靠前 */ + private Integer sortOrder; + + /** 创建时间 */ + private Instant createTime; + + /** 更新时间 */ + private Instant updateTime; +} diff --git a/manager/src/main/java/org/jiayunet/pojo/po/UserProfileProject.java b/manager/src/main/java/org/jiayunet/pojo/po/UserProfileProject.java new file mode 100644 index 0000000..8c0d066 --- /dev/null +++ b/manager/src/main/java/org/jiayunet/pojo/po/UserProfileProject.java @@ -0,0 +1,54 @@ +package org.jiayunet.pojo.po; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.time.Instant; + +/** + * 用户项目经历表(bg_user_profile_project,bg_user_profile子表) + * + * @author zk + */ +@Data +@TableName(value = "bg_user_profile_project") +public class UserProfileProject { + + @TableId(type = IdType.ASSIGN_ID) + private Long id; + + /** 关联bg_user_profile.id */ + private Long profileId; + + /** 用户ID(冗余,便于直接按用户查询) */ + private Long userId; + + /** 所属公司 */ + private String companyName; + + /** 项目名称 */ + private String projectName; + + /** 担任角色 */ + private String role; + + /** 开始时间,格式:2023.06 */ + private String startDate; + + /** 结束时间,格式:2023.09,至今则为空 */ + private String endDate; + + /** 描述段落,格式:[{"id":"a1b2","text":"围绕新能源行业投资研究..."}],id为前端生成的短标识,用于简历优化时精确定位段落 */ + private String description; + + /** 排序序号,越小越靠前 */ + private Integer sortOrder; + + /** 创建时间 */ + private Instant createTime; + + /** 更新时间 */ + private Instant updateTime; +} diff --git a/manager/src/main/java/org/jiayunet/pojo/po/UserProfileWork.java b/manager/src/main/java/org/jiayunet/pojo/po/UserProfileWork.java new file mode 100644 index 0000000..a102338 --- /dev/null +++ b/manager/src/main/java/org/jiayunet/pojo/po/UserProfileWork.java @@ -0,0 +1,51 @@ +package org.jiayunet.pojo.po; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.time.Instant; + +/** + * 用户工作经历表(bg_user_profile_work,bg_user_profile子表) + * + * @author zk + */ +@Data +@TableName(value = "bg_user_profile_work") +public class UserProfileWork { + + @TableId(type = IdType.ASSIGN_ID) + private Long id; + + /** 关联bg_user_profile.id */ + private Long profileId; + + /** 用户ID(冗余,便于直接按用户查询) */ + private Long userId; + + /** 公司名称 */ + private String companyName; + + /** 职位 */ + private String position; + + /** 开始时间,格式:2023.06 */ + private String startDate; + + /** 结束时间,格式:2023.09,至今则为空 */ + private String endDate; + + /** 描述段落,格式:[{"id":"a1b2","text":"参与传统行业投资项目分析..."}],id为前端生成的短标识,用于简历优化时精确定位段落 */ + private String description; + + /** 排序序号,越小越靠前 */ + private Integer sortOrder; + + /** 创建时间 */ + private Instant createTime; + + /** 更新时间 */ + private Instant updateTime; +}