diff --git a/.kiro/steering/项目结构说明.md b/.kiro/steering/项目结构说明.md
index 7c8d1f4..37c1dd9 100644
--- a/.kiro/steering/项目结构说明.md
+++ b/.kiro/steering/项目结构说明.md
@@ -63,7 +63,17 @@ offerpie/back-end
│ ├─ FuncPermissionMapper.java # 功能权限Mapper
│ ├─ UserRouteMenuStockMapper.java # 用户路由菜单库存Mapper
│ ├─ UserFuncPermissionStockMapper.java # 用户功能权限库存Mapper
- │ └─ UserFuncUsageLogMapper.java # 用户功能使用记录Mapper
+ │ ├─ UserFuncUsageLogMapper.java # 用户功能使用记录Mapper
+ │ ├─ ChinaRegionsCodeMapper.java # 地区Mapper
+ │ ├─ JobCategoryMapper.java # 岗位类型Mapper
+ │ ├─ CompanyMapper.java # 公司Mapper
+ │ ├─ JobMapper.java # 岗位Mapper
+ │ ├─ JobRegionRelationMapper.java # 岗位-地区关联Mapper
+ │ ├─ IndustryMapper.java # 行业Mapper
+ │ ├─ SkillTagMapper.java # 技能标签Mapper
+ │ ├─ UserJobFavoriteMapper.java # 用户收藏岗位Mapper
+ │ ├─ UserJobApplicationMapper.java # 用户投递记录Mapper
+ │ └─ UserJobDislikeMapper.java # 用户不感兴趣记录Mapper
├─ pojo/
│ ├─ po/ # 持久化实体
│ │ ├─ User.java
@@ -73,7 +83,17 @@ offerpie/back-end
│ │ ├─ FuncPermission.java # 功能权限表(bg_func_permission)
│ │ ├─ UserRouteMenuStock.java # 用户路由菜单库存表(bg_user_route_menu_stock)
│ │ ├─ UserFuncPermissionStock.java # 用户功能权限库存表(bg_user_func_permission_stock)
- │ │ └─ UserFuncUsageLog.java # 用户功能使用记录表(bg_user_func_usage_log)
+ │ │ ├─ UserFuncUsageLog.java # 用户功能使用记录表(bg_user_func_usage_log)
+ │ │ ├─ ChinaRegionsCode.java # 地区表(bg_china_regions_code)
+ │ │ ├─ JobCategory.java # 岗位类型表(bg_job_category)
+ │ │ ├─ Company.java # 公司表(bg_company)
+ │ │ ├─ Job.java # 岗位表(bg_job)
+ │ │ ├─ JobRegionRelation.java # 岗位-地区关联表(bg_job_region_relation)
+ │ │ ├─ Industry.java # 行业字典表(bg_industry)
+ │ │ ├─ SkillTag.java # 技能标签表(bg_skill_tag)
+ │ │ ├─ UserJobFavorite.java # 用户收藏岗位表(bg_user_job_favorite)
+ │ │ ├─ UserJobApplication.java # 用户投递记录表(bg_user_job_application)
+ │ │ └─ UserJobDislike.java # 用户不感兴趣记录表(bg_user_job_dislike)
│ └─ vo/ # ViewObject(OssUrlVo 等)
└─ service/ # 业务 Service(OssService、SmsService 等)
```
@@ -84,7 +104,7 @@ offerpie/back-end
|------|----------|-----------|
| **client-api** | - 面向终端用户的 REST API
- 启动 Spring Boot 应用
- 短信验证码登录(含自动注册、邀请码绑定)
- **功能权限校验**:注解 + 切面 + 权限服务(校验、扣减、回退)
- **路由菜单**:获取用户有效菜单树 | `ClientApplication`、`LoginController`、`RouteMenuController`、`FuncPermission`、`FuncPermissionAspect`、`FuncPermissionService`、`RouteMenuService`、`UserRegisterService`、`RouteMenuVo` |
| **common** | - **统一配置**:OSS、Redis、Security、WxPay、Sms 等
- **跨层工具**:HTTP、IP、认证、验证码、Redis Server 等
- **全局拦截/切面**:日志、TraceId、黑名单、SQL 打印
- **统一异常/响应**:`GlobalExceptionAdvice`、`UnifiedResponse`
- **业务抽象**:邮件发送、微信支付(Native/JS/Transfer)
- **公共 POJO**:登录令牌、防重放信息等 | `config/`, `tool/`, `interceptor/`, `aop/`, `exception/`, `email/`, `wxPay/`, `pojo/` |
-| **manager** | - **业务实体**(`User`、`OssFile`、`UserInvite`、`RouteMenu`、`FuncPermission`、`UserRouteMenuStock`、`UserFuncPermissionStock`、`UserFuncUsageLog`)
- **MyBatis Mapper**(`UserMapper`、`OssFileMapper`、`UserInviteMapper`、`RouteMenuMapper`、`FuncPermissionMapper`、`UserRouteMenuStockMapper`、`UserFuncPermissionStockMapper`、`UserFuncUsageLogMapper`)
- **业务 API**:文件上传/下载、健康检查等
- **业务逻辑**:服务层、工具类等
- **既供 B 端 UI(待实现)使用,也供 C 端业务直接调用** | `controller/`, `mapper/`, `pojo/po/`, `pojo/vo/`, `service/`, `constant/` |
+| **manager** | - **业务实体**(`User`、`OssFile`、`UserInvite`、`RouteMenu`、`FuncPermission`、`UserRouteMenuStock`、`UserFuncPermissionStock`、`UserFuncUsageLog`、`ChinaRegionsCode`、`JobCategory`、`Company`、`Job`、`JobRegion`、`UserJobFavorite`、`UserJobApplication`)
- **MyBatis Mapper**(`UserMapper`、`OssFileMapper`、`UserInviteMapper`、`RouteMenuMapper`、`FuncPermissionMapper`、`UserRouteMenuStockMapper`、`UserFuncPermissionStockMapper`、`UserFuncUsageLogMapper`、`ChinaRegionsCodeMapper`、`JobCategoryMapper`、`CompanyMapper`、`JobMapper`、`JobRegionRelationMapper`、`UserJobFavoriteMapper`、`UserJobApplicationMapper`)
- **业务 API**:文件上传/下载、健康检查等
- **业务逻辑**:服务层、工具类等
- **既供 B 端 UI(待实现)使用,也供 C 端业务直接调用** | `controller/`, `mapper/`, `pojo/po/`, `pojo/vo/`, `service/`, `constant/` |
## 3️⃣ 关键业务实体
| 实体 | 所属模块 | 作用概述 |
@@ -100,6 +120,16 @@ offerpie/back-end
| `RouteMenuVo` | client-api | 路由菜单树形VO,包含 children 子菜单列表,供前端渲染动态路由。 |
| `LoginVo` | client-api | 登录成功后返回的用户信息(userId、nick)。 |
| `SmsLoginDto` | client-api | 短信验证码登录的请求参数(mobileNumber、code、inviteCode)。 |
+| `ChinaRegionsCode` | manager | 地区表(bg_china_regions_code),行政区划编码,省/市/区三级,code为主键。 |
+| `JobCategory` | manager | 岗位类型表(bg_job_category),树形结构,一级/二级分类。 |
+| `Company` | manager | 公司表(bg_company),公司基本信息、融资、规模、新闻动态等。 |
+| `Job` | manager | 岗位表(bg_job),岗位信息、薪资、标签、技能标签,关联公司和岗位类型。 |
+| `JobRegionRelation` | manager | 岗位-地区关联表(bg_job_region_relation),一个岗位可关联多个地区。 |
+| `UserJobFavorite` | manager | 用户收藏岗位表(bg_user_job_favorite),用户与岗位唯一约束。 |
+| `UserJobApplication` | manager | 用户投递记录表(bg_user_job_application),记录投递状态流转。 |
+| `Industry` | manager | 行业字典表(bg_industry),树形结构,一级/二级分类。 |
+| `SkillTag` | manager | 技能标签表(bg_skill_tag),挂在岗位类型下,不分级,用于匹配度计算。 |
+| `UserJobDislike` | manager | 用户不感兴趣记录表(bg_user_job_dislike),记录用户对岗位的不感兴趣原因,冗余公司ID/地区编码/行业ID方便推荐过滤。 |
## 4️⃣ 权限体系设计
### 整体架构
diff --git a/manager/src/main/java/org/jiayunet/mapper/ChinaRegionsCodeMapper.java b/manager/src/main/java/org/jiayunet/mapper/ChinaRegionsCodeMapper.java
new file mode 100644
index 0000000..430c715
--- /dev/null
+++ b/manager/src/main/java/org/jiayunet/mapper/ChinaRegionsCodeMapper.java
@@ -0,0 +1,13 @@
+package org.jiayunet.mapper;
+
+import org.apache.ibatis.annotations.Mapper;
+import org.jiayunet.pojo.po.ChinaRegionsCode;
+
+/**
+ * 地区Mapper
+ *
+ * @author zk
+ */
+@Mapper
+public interface ChinaRegionsCodeMapper extends CommonMapper {
+}
diff --git a/manager/src/main/java/org/jiayunet/mapper/CompanyMapper.java b/manager/src/main/java/org/jiayunet/mapper/CompanyMapper.java
new file mode 100644
index 0000000..e0e691b
--- /dev/null
+++ b/manager/src/main/java/org/jiayunet/mapper/CompanyMapper.java
@@ -0,0 +1,13 @@
+package org.jiayunet.mapper;
+
+import org.apache.ibatis.annotations.Mapper;
+import org.jiayunet.pojo.po.Company;
+
+/**
+ * 公司Mapper
+ *
+ * @author zk
+ */
+@Mapper
+public interface CompanyMapper extends CommonMapper {
+}
diff --git a/manager/src/main/java/org/jiayunet/mapper/IndustryMapper.java b/manager/src/main/java/org/jiayunet/mapper/IndustryMapper.java
new file mode 100644
index 0000000..08f9498
--- /dev/null
+++ b/manager/src/main/java/org/jiayunet/mapper/IndustryMapper.java
@@ -0,0 +1,13 @@
+package org.jiayunet.mapper;
+
+import org.apache.ibatis.annotations.Mapper;
+import org.jiayunet.pojo.po.Industry;
+
+/**
+ * 行业Mapper
+ *
+ * @author zk
+ */
+@Mapper
+public interface IndustryMapper extends CommonMapper {
+}
diff --git a/manager/src/main/java/org/jiayunet/mapper/JobCategoryMapper.java b/manager/src/main/java/org/jiayunet/mapper/JobCategoryMapper.java
new file mode 100644
index 0000000..5fa7077
--- /dev/null
+++ b/manager/src/main/java/org/jiayunet/mapper/JobCategoryMapper.java
@@ -0,0 +1,13 @@
+package org.jiayunet.mapper;
+
+import org.apache.ibatis.annotations.Mapper;
+import org.jiayunet.pojo.po.JobCategory;
+
+/**
+ * 岗位类型Mapper
+ *
+ * @author zk
+ */
+@Mapper
+public interface JobCategoryMapper extends CommonMapper {
+}
diff --git a/manager/src/main/java/org/jiayunet/mapper/JobMapper.java b/manager/src/main/java/org/jiayunet/mapper/JobMapper.java
new file mode 100644
index 0000000..695c87d
--- /dev/null
+++ b/manager/src/main/java/org/jiayunet/mapper/JobMapper.java
@@ -0,0 +1,13 @@
+package org.jiayunet.mapper;
+
+import org.apache.ibatis.annotations.Mapper;
+import org.jiayunet.pojo.po.Job;
+
+/**
+ * 岗位Mapper
+ *
+ * @author zk
+ */
+@Mapper
+public interface JobMapper extends CommonMapper {
+}
diff --git a/manager/src/main/java/org/jiayunet/mapper/JobRegionRelationMapper.java b/manager/src/main/java/org/jiayunet/mapper/JobRegionRelationMapper.java
new file mode 100644
index 0000000..8937713
--- /dev/null
+++ b/manager/src/main/java/org/jiayunet/mapper/JobRegionRelationMapper.java
@@ -0,0 +1,13 @@
+package org.jiayunet.mapper;
+
+import org.apache.ibatis.annotations.Mapper;
+import org.jiayunet.pojo.po.JobRegionRelation;
+
+/**
+ * 岗位-地区关联Mapper
+ *
+ * @author zk
+ */
+@Mapper
+public interface JobRegionRelationMapper extends CommonMapper {
+}
diff --git a/manager/src/main/java/org/jiayunet/mapper/SkillTagMapper.java b/manager/src/main/java/org/jiayunet/mapper/SkillTagMapper.java
new file mode 100644
index 0000000..930718b
--- /dev/null
+++ b/manager/src/main/java/org/jiayunet/mapper/SkillTagMapper.java
@@ -0,0 +1,13 @@
+package org.jiayunet.mapper;
+
+import org.apache.ibatis.annotations.Mapper;
+import org.jiayunet.pojo.po.SkillTag;
+
+/**
+ * 技能标签Mapper
+ *
+ * @author zk
+ */
+@Mapper
+public interface SkillTagMapper extends CommonMapper {
+}
diff --git a/manager/src/main/java/org/jiayunet/mapper/UserJobApplicationMapper.java b/manager/src/main/java/org/jiayunet/mapper/UserJobApplicationMapper.java
new file mode 100644
index 0000000..e853998
--- /dev/null
+++ b/manager/src/main/java/org/jiayunet/mapper/UserJobApplicationMapper.java
@@ -0,0 +1,13 @@
+package org.jiayunet.mapper;
+
+import org.apache.ibatis.annotations.Mapper;
+import org.jiayunet.pojo.po.UserJobApplication;
+
+/**
+ * 用户投递记录Mapper
+ *
+ * @author zk
+ */
+@Mapper
+public interface UserJobApplicationMapper extends CommonMapper {
+}
diff --git a/manager/src/main/java/org/jiayunet/mapper/UserJobDislikeMapper.java b/manager/src/main/java/org/jiayunet/mapper/UserJobDislikeMapper.java
new file mode 100644
index 0000000..5af1259
--- /dev/null
+++ b/manager/src/main/java/org/jiayunet/mapper/UserJobDislikeMapper.java
@@ -0,0 +1,13 @@
+package org.jiayunet.mapper;
+
+import org.apache.ibatis.annotations.Mapper;
+import org.jiayunet.pojo.po.UserJobDislike;
+
+/**
+ * 用户不感兴趣记录Mapper
+ *
+ * @author zk
+ */
+@Mapper
+public interface UserJobDislikeMapper extends CommonMapper {
+}
diff --git a/manager/src/main/java/org/jiayunet/mapper/UserJobFavoriteMapper.java b/manager/src/main/java/org/jiayunet/mapper/UserJobFavoriteMapper.java
new file mode 100644
index 0000000..8f87f4a
--- /dev/null
+++ b/manager/src/main/java/org/jiayunet/mapper/UserJobFavoriteMapper.java
@@ -0,0 +1,13 @@
+package org.jiayunet.mapper;
+
+import org.apache.ibatis.annotations.Mapper;
+import org.jiayunet.pojo.po.UserJobFavorite;
+
+/**
+ * 用户收藏岗位Mapper
+ *
+ * @author zk
+ */
+@Mapper
+public interface UserJobFavoriteMapper extends CommonMapper {
+}
diff --git a/manager/src/main/java/org/jiayunet/pojo/po/ChinaRegionsCode.java b/manager/src/main/java/org/jiayunet/pojo/po/ChinaRegionsCode.java
new file mode 100644
index 0000000..906c8cd
--- /dev/null
+++ b/manager/src/main/java/org/jiayunet/pojo/po/ChinaRegionsCode.java
@@ -0,0 +1,29 @@
+package org.jiayunet.pojo.po;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+/**
+ * 地区表(bg_china_regions_code)
+ * 行政区划编码,省/市/区三级
+ *
+ * @author zk
+ */
+@Data
+@TableName(value = "bg_china_regions_code")
+public class ChinaRegionsCode {
+
+ /** 行政区划编码(主键) */
+ @TableId
+ private String code;
+
+ /** 地区名称 */
+ private String name;
+
+ /** 市级编码,省级为null */
+ private String cityCode;
+
+ /** 省级编码,省级为null */
+ private String provinceCode;
+}
diff --git a/manager/src/main/java/org/jiayunet/pojo/po/Company.java b/manager/src/main/java/org/jiayunet/pojo/po/Company.java
new file mode 100644
index 0000000..8e2b47a
--- /dev/null
+++ b/manager/src/main/java/org/jiayunet/pojo/po/Company.java
@@ -0,0 +1,78 @@
+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_company)
+ *
+ * @author zk
+ */
+@Data
+@TableName(value = "bg_company")
+public class Company {
+
+ @TableId(type = IdType.ASSIGN_ID)
+ private Long id;
+
+ /** 公司名 */
+ private String name;
+
+ /** 公司简称 */
+ private String shortName;
+
+ /** logo地址 */
+ private String logoUrl;
+
+ /** 地区编码 */
+ private String regionCode;
+
+ /** 公司类型(上市企业、独角兽、国企等) */
+ private String companyType;
+
+ /** 行业ID */
+ private Long industryId;
+
+ /** 公司标签(JSON数组) */
+ private String tags;
+
+ /** 公司简要 */
+ private String summary;
+
+ /** 公司描述 */
+ private String description;
+
+ /** 成立时间 */
+ private String foundedYear;
+
+ /** 注册地址 */
+ private String address;
+
+ /** 企业规模(人数) */
+ private String scale;
+
+ /** 官网地址 */
+ private String website;
+
+ /** 融资状态 */
+ private String financingStage;
+
+ /** 最新估值 */
+ private String latestValuation;
+
+ /** 新闻动态(JSON数组) */
+ private String news;
+
+ /** 状态 0=待完善 1=已完善 2=禁用 */
+ private Integer status;
+
+ /** 创建时间 */
+ private Instant createTime;
+
+ /** 更新时间 */
+ private Instant updateTime;
+}
diff --git a/manager/src/main/java/org/jiayunet/pojo/po/Industry.java b/manager/src/main/java/org/jiayunet/pojo/po/Industry.java
new file mode 100644
index 0000000..6eb5416
--- /dev/null
+++ b/manager/src/main/java/org/jiayunet/pojo/po/Industry.java
@@ -0,0 +1,32 @@
+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;
+
+/**
+ * 行业字典表(bg_industry)
+ * 树形结构,一级/二级分类
+ *
+ * @author zk
+ */
+@Data
+@TableName(value = "bg_industry")
+public class Industry {
+
+ @TableId(type = IdType.ASSIGN_ID)
+ private Long id;
+
+ /** 行业名称 */
+ private String name;
+
+ /** 根节点ID,顶级=自身ID */
+ private Long rootId;
+
+ /** 父级ID,0=顶级 */
+ private Long parentId;
+
+ /** 层级 1=一级 2=二级 */
+ private Integer level;
+}
diff --git a/manager/src/main/java/org/jiayunet/pojo/po/Job.java b/manager/src/main/java/org/jiayunet/pojo/po/Job.java
new file mode 100644
index 0000000..df75ef5
--- /dev/null
+++ b/manager/src/main/java/org/jiayunet/pojo/po/Job.java
@@ -0,0 +1,75 @@
+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_job)
+ *
+ * @author zk
+ */
+@Data
+@TableName(value = "bg_job")
+public class Job {
+
+ @TableId(type = IdType.ASSIGN_ID)
+ private Long id;
+
+ /** 岗位名称 */
+ private String title;
+
+ /** 关联公司ID */
+ private Long companyId;
+
+ /** 岗位类型ID */
+ private Long categoryId;
+
+ /** 0=全职 1=兼职 */
+ private Integer employmentType;
+
+ /** 岗位职责 */
+ private String description;
+
+ /** 任职要求 */
+ private String requirement;
+
+ /** 加分项 */
+ private String bonus;
+
+ /** 岗位标签(JSON数组) */
+ private String tags;
+
+ /** 技能标签(JSON数组) */
+ private String skillTags;
+
+ /** 薪资描述,如15-25K·13薪、面议 */
+ private String salary;
+
+ /** 学历要求 0=不限 1=大专 2=本科 3=硕士 4=博士 */
+ private Integer education;
+
+ /** 最低工作年限,0=不要求 */
+ private Integer minExperience;
+
+ /** 行业经验,关联bg_industry */
+ private Long industryId;
+
+ /** 来源链接 */
+ private String sourceUrl;
+
+ /** 爬虫原始数据ID,用于去重 */
+ private String sourceId;
+
+ /** 状态 0=上架 1=下架 2=已失效 */
+ private Integer status;
+
+ /** 创建时间 */
+ private Instant createTime;
+
+ /** 更新时间 */
+ private Instant updateTime;
+}
diff --git a/manager/src/main/java/org/jiayunet/pojo/po/JobCategory.java b/manager/src/main/java/org/jiayunet/pojo/po/JobCategory.java
new file mode 100644
index 0000000..c4249ac
--- /dev/null
+++ b/manager/src/main/java/org/jiayunet/pojo/po/JobCategory.java
@@ -0,0 +1,32 @@
+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;
+
+/**
+ * 岗位类型表(bg_job_category)
+ * 树形结构,一级/二级分类
+ *
+ * @author zk
+ */
+@Data
+@TableName(value = "bg_job_category")
+public class JobCategory {
+
+ @TableId(type = IdType.ASSIGN_ID)
+ private Long id;
+
+ /** 类型名称 */
+ private String name;
+
+ /** 根节点ID,顶级=自身ID */
+ private Long rootId;
+
+ /** 父级ID,0=顶级 */
+ private Long parentId;
+
+ /** 层级 1=一级 2=二级 */
+ private Integer level;
+}
diff --git a/manager/src/main/java/org/jiayunet/pojo/po/JobRegionRelation.java b/manager/src/main/java/org/jiayunet/pojo/po/JobRegionRelation.java
new file mode 100644
index 0000000..858347f
--- /dev/null
+++ b/manager/src/main/java/org/jiayunet/pojo/po/JobRegionRelation.java
@@ -0,0 +1,30 @@
+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_job_region_relation)
+ *
+ * @author zk
+ */
+@Data
+@TableName(value = "bg_job_region_relation")
+public class JobRegionRelation {
+
+ @TableId(type = IdType.ASSIGN_ID)
+ private Long id;
+
+ /** 岗位ID */
+ private Long jobId;
+
+ /** 地区编码 */
+ private String regionCode;
+
+ /** 创建时间 */
+ private Instant createTime;
+}
diff --git a/manager/src/main/java/org/jiayunet/pojo/po/SkillTag.java b/manager/src/main/java/org/jiayunet/pojo/po/SkillTag.java
new file mode 100644
index 0000000..9266764
--- /dev/null
+++ b/manager/src/main/java/org/jiayunet/pojo/po/SkillTag.java
@@ -0,0 +1,26 @@
+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;
+
+/**
+ * 技能标签表(bg_skill_tag)
+ * 挂在岗位类型下,不分级
+ *
+ * @author zk
+ */
+@Data
+@TableName(value = "bg_skill_tag")
+public class SkillTag {
+
+ @TableId(type = IdType.ASSIGN_ID)
+ private Long id;
+
+ /** 标签名称 */
+ private String name;
+
+ /** 所属岗位类型ID */
+ private Long categoryId;
+}
diff --git a/manager/src/main/java/org/jiayunet/pojo/po/UserJobApplication.java b/manager/src/main/java/org/jiayunet/pojo/po/UserJobApplication.java
new file mode 100644
index 0000000..44a998c
--- /dev/null
+++ b/manager/src/main/java/org/jiayunet/pojo/po/UserJobApplication.java
@@ -0,0 +1,39 @@
+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_application)
+ *
+ * @author zk
+ */
+@Data
+@TableName(value = "bg_user_job_application")
+public class UserJobApplication {
+
+ @TableId(type = IdType.ASSIGN_ID)
+ private Long id;
+
+ /** 用户ID */
+ private Long userId;
+
+ /** 岗位ID */
+ private Long jobId;
+
+ /** 投递状态 0=已投递 1=面试中 2=有Offer 3=未通过 4=已结束 */
+ private Integer status;
+
+ /** 投递时间 */
+ private Instant applyTime;
+
+ /** 创建时间 */
+ private Instant createTime;
+
+ /** 更新时间 */
+ private Instant updateTime;
+}
diff --git a/manager/src/main/java/org/jiayunet/pojo/po/UserJobDislike.java b/manager/src/main/java/org/jiayunet/pojo/po/UserJobDislike.java
new file mode 100644
index 0000000..5635690
--- /dev/null
+++ b/manager/src/main/java/org/jiayunet/pojo/po/UserJobDislike.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_dislike)
+ *
+ * @author zk
+ */
+@Data
+@TableName(value = "bg_user_job_dislike")
+public class UserJobDislike {
+
+ @TableId(type = IdType.ASSIGN_ID)
+ private Long id;
+
+ /** 用户ID */
+ private Long userId;
+
+ /** 岗位ID */
+ private Long jobId;
+
+ /** 公司ID(冗余,方便按公司过滤) */
+ private Long companyId;
+
+ /** 地区编码(冗余,方便按地区过滤) */
+ private String regionCode;
+
+ /** 行业ID(冗余,方便按行业过滤) */
+ private Long industryId;
+
+ /** 原因 0=对公司不感兴趣 1=对岗位不感兴趣 2=对行业不感兴趣 3=技能不符合 4=地点不合适 5=其他 */
+ private Integer reason;
+
+ /** 创建时间 */
+ private Instant createTime;
+}
diff --git a/manager/src/main/java/org/jiayunet/pojo/po/UserJobFavorite.java b/manager/src/main/java/org/jiayunet/pojo/po/UserJobFavorite.java
new file mode 100644
index 0000000..f18530e
--- /dev/null
+++ b/manager/src/main/java/org/jiayunet/pojo/po/UserJobFavorite.java
@@ -0,0 +1,30 @@
+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_favorite)
+ *
+ * @author zk
+ */
+@Data
+@TableName(value = "bg_user_job_favorite")
+public class UserJobFavorite {
+
+ @TableId(type = IdType.ASSIGN_ID)
+ private Long id;
+
+ /** 用户ID */
+ private Long userId;
+
+ /** 岗位ID */
+ private Long jobId;
+
+ /** 创建时间 */
+ private Instant createTime;
+}