补充文档
This commit is contained in:
+260
-90
@@ -3,7 +3,7 @@ inclusion: manual
|
|||||||
---
|
---
|
||||||
|
|
||||||
# OfferPie Back‑End 项目结构说明
|
# OfferPie Back‑End 项目结构说明
|
||||||
@zk
|
|
||||||
## 1️⃣ 项目整体层次
|
## 1️⃣ 项目整体层次
|
||||||
```
|
```
|
||||||
offerpie/back-end
|
offerpie/back-end
|
||||||
@@ -23,14 +23,20 @@ offerpie/back-end
|
|||||||
│ │ ├─ LoginController.java # 登录相关接口(发送验证码、短信登录、检查登录状态)
|
│ │ ├─ LoginController.java # 登录相关接口(发送验证码、短信登录、检查登录状态)
|
||||||
│ │ ├─ RouteMenuController.java # 路由菜单接口(获取用户有效菜单树)
|
│ │ ├─ RouteMenuController.java # 路由菜单接口(获取用户有效菜单树)
|
||||||
│ │ ├─ UserProfileController.java # 用户个人资料接口(主表+5张子表的查询与保存)
|
│ │ ├─ UserProfileController.java # 用户个人资料接口(主表+5张子表的查询与保存)
|
||||||
|
│ │ ├─ UserManageController.java # 用户账号管理接口(查看/修改个人信息、注销账号、邀请统计)
|
||||||
|
│ │ ├─ UserFeedbackController.java # 用户反馈接口(提交反馈)
|
||||||
|
│ │ ├─ UserResumeController.java # 用户简历接口(简历列表、主表及5张子表的CRUD、子表单条添加/编辑/删除、简历删除、设置默认简历)
|
||||||
│ │ ├─ JobIntentionController.java # 求职意向接口(查询与保存)
|
│ │ ├─ JobIntentionController.java # 求职意向接口(查询与保存)
|
||||||
│ │ ├─ JobController.java # 岗位接口(岗位列表查询、收藏、投递、不感兴趣、求职助手任务列表、AI岗位推荐)
|
│ │ ├─ JobController.java # 岗位接口(岗位列表查询、收藏、投递、不感兴趣、求职助手任务列表、AI岗位推荐)
|
||||||
│ │ ├─ JobAgentConfigController.java # 求职助手配置接口(配置查询与保存)
|
│ │ ├─ JobAgentConfigController.java # 求职助手配置接口(配置查询与保存)
|
||||||
│ │ ├─ UserResumeController.java # 用户简历接口(简历列表、主表及5张子表的查询与保存、子表单条添加/编辑/删除、简历删除、设置默认简历)
|
│ │ ├─ MemberProductController.java # 会员商品接口(商品列表、创建订单、查询订单详情)【暂未启用,注释@RestController】
|
||||||
|
│ │ ├─ MemberStatusController.java # 会员状态接口(查询会员状态、查询功能权限库存)
|
||||||
│ │ └─ MessageController.java # 站内信消息接口(消息列表、未读数、按类型未读数、标记已读)
|
│ │ └─ MessageController.java # 站内信消息接口(消息列表、未读数、按类型未读数、标记已读)
|
||||||
│ ├─ service/
|
│ ├─ service/
|
||||||
│ │ ├─ LoginService.java # 登录业务逻辑(验证码校验、自动注册、JWT生成、Cookie设置)
|
│ │ ├─ LoginService.java # 登录业务逻辑(验证码校验、自动注册、JWT生成、Cookie设置)
|
||||||
│ │ ├─ UserRegisterService.java # 用户注册服务(注册逻辑、邀请码生成与绑定)
|
│ │ ├─ UserRegisterService.java # 用户注册服务(注册逻辑、邀请码生成与绑定)
|
||||||
|
│ │ ├─ UserManageService.java # 用户账号管理服务(查看/修改个人信息、注销账号、邀请统计)
|
||||||
|
│ │ ├─ UserFeedbackService.java # 用户反馈服务(提交反馈记录)
|
||||||
│ │ ├─ FuncPermissionService.java # 功能权限服务(校验、扣减、查询、添加库存、回退)
|
│ │ ├─ FuncPermissionService.java # 功能权限服务(校验、扣减、查询、添加库存、回退)
|
||||||
│ │ ├─ RouteMenuService.java # 路由菜单服务(查询、添加库存、获取用户菜单树)
|
│ │ ├─ RouteMenuService.java # 路由菜单服务(查询、添加库存、获取用户菜单树)
|
||||||
│ │ ├─ UserProfileService.java # 用户个人资料服务(主表+5张子表的CRUD)
|
│ │ ├─ UserProfileService.java # 用户个人资料服务(主表+5张子表的CRUD)
|
||||||
@@ -38,48 +44,131 @@ offerpie/back-end
|
|||||||
│ │ ├─ JobService.java # 岗位服务(岗位列表查询、匹配度计算编排、求职助手任务列表、AI岗位推荐)
|
│ │ ├─ JobService.java # 岗位服务(岗位列表查询、匹配度计算编排、求职助手任务列表、AI岗位推荐)
|
||||||
│ │ ├─ JobAgentConfigService.java # 求职助手配置服务(配置查询与保存)
|
│ │ ├─ JobAgentConfigService.java # 求职助手配置服务(配置查询与保存)
|
||||||
│ │ ├─ UserResumeService.java # 用户简历服务(简历列表、主表及5张子表的CRUD、子表单条添加/编辑/删除、设置默认简历)
|
│ │ ├─ UserResumeService.java # 用户简历服务(简历列表、主表及5张子表的CRUD、子表单条添加/编辑/删除、设置默认简历)
|
||||||
|
│ │ ├─ MemberProductService.java # 会员商品服务(商品列表、创建订单、支付回调处理)【暂未启用,注释@Service】
|
||||||
|
│ │ ├─ MemberGrantService.java # 会员权益发放服务(续费会员+发放功能/菜单权限)
|
||||||
|
│ │ ├─ MemberStatusService.java # 会员状态查询服务(查询会员状态、功能权限库存详情)
|
||||||
│ │ ├─ MessageQueryService.java # 站内信查询服务(消息分页列表、未读数、按类型未读数)
|
│ │ ├─ MessageQueryService.java # 站内信查询服务(消息分页列表、未读数、按类型未读数)
|
||||||
│ │ └─ WxPayNotifyMessageAbstractImpl.java # 微信支付回调实现
|
│ │ ├─ AlipayNotifyMessageAbstractImpl.java # 支付宝支付回调实现(验证流水+更新状态+触发发放)【暂未启用】
|
||||||
|
│ │ └─ WxPayNotifyMessageAbstractImpl.java # 微信支付回调实现(验证流水+更新状态+触发发放)
|
||||||
│ └─ pojo/
|
│ └─ pojo/
|
||||||
│ ├─ param/
|
│ ├─ param/
|
||||||
│ │ ├─ userProfile/ # 个人资料入参(UserProfileParam、各子表Param)
|
│ │ ├─ userProfile/ # 个人资料入参(UserProfileParam、各子表Param)
|
||||||
│ │ ├─ resume/ # 简历入参(ResumeParam、各子表Param、各子表UpdateParam、ResumeSubTableParam)
|
│ │ ├─ resume/ # 简历入参(ResumeParam、各子表Param、各子表UpdateParam、ResumeSubTableParam)
|
||||||
│ │ ├─ job/ # 岗位相关入参(JobIntentionParam、JobQueryParam、JobAgentTaskQueryParam、JobAgentRecommendParam)
|
│ │ ├─ job/ # 岗位相关入参(JobIntentionParam、JobQueryParam、JobAgentTaskQueryParam、JobAgentRecommendParam、JobApplyParam、JobApplyQueryParam、JobFavoriteQueryParam、JobDislikeParam)
|
||||||
│ │ ├─ jobAgent/ # 求职助手入参(JobAgentConfigParam)
|
│ │ ├─ jobAgent/ # 求职助手入参(JobAgentConfigParam、ChatMessageParam)
|
||||||
│ │ └─ message/ # 站内信入参(MessageQueryParam)
|
│ │ ├─ memberProduct/ # 会员商品入参(CreateOrderParam)
|
||||||
|
│ │ ├─ message/ # 站内信入参(MessageQueryParam)
|
||||||
|
│ │ ├─ feedback/ # 用户反馈入参(UserFeedbackParam)
|
||||||
|
│ │ └─ user/ # 用户账号管理入参(UserInfoParam)
|
||||||
│ ├─ dto/
|
│ ├─ dto/
|
||||||
│ │ ├─ SmsLoginDto.java # 短信登录入参(mobileNumber + code + inviteCode)
|
│ │ ├─ SmsLoginDto.java # 短信登录入参(mobileNumber + code + inviteCode)
|
||||||
│ │ ├─ userProfile/ # 个人资料出参(UserProfileDto、各子表Dto)
|
│ │ ├─ userProfile/ # 个人资料出参(UserProfileDto、各子表Dto)
|
||||||
│ │ ├─ resume/ # 简历出参(ResumeDto、ResumeListItemDto、各子表Dto)
|
│ │ ├─ resume/ # 简历出参(ResumeDto、ResumeListItemDto、各子表Dto)
|
||||||
│ │ ├─ job/ # 岗位相关出参(JobIntentionDto、JobDto、JobMatchScoreDto、JobAgentRecommendDto)
|
│ │ ├─ job/ # 岗位相关出参(JobIntentionDto、JobDto、JobDetailDto、JobMatchScoreDto、JobAgentRecommendDto、JobApplicationDto)
|
||||||
│ │ ├─ jobAgent/ # 求职助手出参(JobAgentConfigDto)
|
│ │ ├─ jobAgent/ # 求职助手出参(JobAgentConfigDto、ChatMessageDto)
|
||||||
│ │ └─ message/ # 站内信出参(MessageDto、MessageUnreadCountDto)
|
│ │ ├─ memberProduct/ # 会员商品出参(CreateOrderDto、OrderDetailDto)
|
||||||
|
│ │ ├─ memberStatus/ # 会员状态出参(MemberStatusDto、FuncStockDto)
|
||||||
|
│ │ ├─ message/ # 站内信出参(MessageDto、MessageUnreadCountDto)
|
||||||
|
│ │ └─ user/ # 用户账号管理出参(UserInfoDto、InviteStatsDto)
|
||||||
│ └─ vo/
|
│ └─ vo/
|
||||||
│ ├─ LoginVo.java # 登录返回(userId + nick)
|
│ ├─ LoginVo.java # 登录返回(userId + nick)
|
||||||
│ ├─ LanguageAbility.java # 语言能力对象(求职助手配置JSON字段)
|
│ ├─ RouteMenuVo.java # 路由菜单树形VO(含children子菜单)
|
||||||
│ └─ RouteMenuVo.java # 路由菜单树形VO(含children子菜单)
|
│ ├─ JobApplyCountVo.java # 岗位投递数量统计VO
|
||||||
|
│ └─ JobFavoriteCountVo.java # 岗位收藏数量统计VO
|
||||||
│
|
│
|
||||||
├─ common/ # **共享层**:被 C 端和 B 端共同使用的代码库
|
├─ common/ # **共享层**:被 C 端和 B 端共同使用的代码库
|
||||||
│ ├─ pom.xml
|
│ ├─ pom.xml
|
||||||
│ └─ src/main/java
|
│ └─ src/main/java
|
||||||
│ └─ org.jiayunet
|
│ └─ org.jiayunet
|
||||||
│ ├─ config/ # OSS、Redis、Security、WxPay、Sms、Async 等统一配置
|
│ ├─ config/ # 统一配置
|
||||||
│ ├─ tool/ # Http、IP、Redis、认证、验证码等工具类
|
│ │ ├─ OssConfig.java # 阿里云OSS凭证配置
|
||||||
│ ├─ interceptor/ # 全局拦截器(日志、TraceId、黑名单、SQL 统计等)
|
│ │ ├─ RedissonConf.java # Redisson客户端配置
|
||||||
│ ├─ aop/ # AOP 日志切面
|
│ │ ├─ SecurityConfig.java # Spring Security配置(JWT过滤器、白名单路径)
|
||||||
|
│ │ ├─ WxPayConfig.java # 微信支付配置
|
||||||
|
│ │ ├─ SmsConfig.java # 阿里云短信客户端配置
|
||||||
|
│ │ ├─ AsyncConfig.java # 异步线程池配置
|
||||||
|
│ │ ├─ JacksonConfig.java # Jackson序列化配置
|
||||||
|
│ │ ├─ MybatisConfig.java # MyBatis-Plus配置(分页插件等)
|
||||||
|
│ │ ├─ LongListTypeHandler.java # MyBatis List<Long> JSON类型处理器
|
||||||
|
│ │ ├─ UpdateBatchMethod.java # 批量更新SQL注入策略
|
||||||
|
│ │ └─ WebConfig.java # Spring MVC拦截器注册(黑名单+防重放)
|
||||||
|
│ ├─ constant/
|
||||||
|
│ │ └─ PreRedisKeyName.java # Redis Key前缀常量(preventReplay、blackList、login:token)
|
||||||
|
│ ├─ mapper/
|
||||||
|
│ │ └─ CommonMapper.java # 通用Mapper接口(继承BaseMapper,提供批量插入/更新)
|
||||||
|
│ ├─ tool/ # 工具类
|
||||||
|
│ │ ├─ HttpTool.java # HTTP请求工具
|
||||||
|
│ │ ├─ HttpIpTool.java # IP地址获取工具
|
||||||
|
│ │ ├─ AuthenticTool.java # 认证相关工具(JWT生成/解析)
|
||||||
|
│ │ ├─ ObjectTool.java # 通用对象工具
|
||||||
|
│ │ ├─ UserSecurityTool.java # 当前登录用户ID获取工具
|
||||||
|
│ │ ├─ VerifyImageCodeUtils.java # 图形验证码工具
|
||||||
|
│ │ └─ server/
|
||||||
|
│ │ └─ RedisServerTool.java # Redis操作工具(封装Redisson)
|
||||||
|
│ ├─ interceptor/ # 全局拦截器/过滤器
|
||||||
|
│ │ ├─ JwtAuthenticationTokenFilter.java # JWT认证过滤器
|
||||||
|
│ │ ├─ LoggingOriginalRequestFilter.java # 请求日志过滤器
|
||||||
|
│ │ ├─ TraceIdFilter.java # TraceId链路追踪过滤器
|
||||||
|
│ │ ├─ BlackListInterceptor.java # 黑名单拦截器
|
||||||
|
│ │ ├─ PreventReplayInterceptor.java # 防重放拦截器
|
||||||
|
│ │ └─ SqlLoggerInterceptor.java # SQL日志拦截器
|
||||||
|
│ ├─ aop/
|
||||||
|
│ │ └─ ControllerLogAspect.java # Controller日志切面
|
||||||
│ ├─ exception/ # 业务异常统一处理
|
│ ├─ exception/ # 业务异常统一处理
|
||||||
│ ├─ email/ # 邮件发送抽象(EmailAbility)
|
│ │ ├─ GlobalExceptionAdvice.java # → 移至web包,此处为异常定义
|
||||||
│ ├─ ai/ # AI 对话能力封装(AiChatAbility、AiChatConfig、AiResponseCleanTool)
|
│ │ ├─ BusinessException.java # 业务异常
|
||||||
│ ├─ wxPay/ # 微信支付相关能力(Js、Native、Transfer 等)
|
│ │ ├─ BusinessExpCodeEnum.java # 业务异常码枚举
|
||||||
│ ├─ pojo/ # 公共 POJO(统一响应、登录/防重放 token 等)
|
│ │ └─ BusinessExpCodeOperations.java # 异常码操作接口
|
||||||
│ └─ web/ # Spring MVC 全局响应体 advice
|
│ ├─ web/ # Spring MVC全局增强
|
||||||
|
│ │ ├─ GlobalExceptionAdvice.java # 全局异常处理器
|
||||||
|
│ │ └─ UnifiedResponseBodyAdvice.java # 统一响应体包装
|
||||||
|
│ ├─ pojo/ # 公共POJO
|
||||||
|
│ │ ├─ UnifiedResponse.java # 统一响应结构
|
||||||
|
│ │ ├─ PageParam.java # 分页请求参数基类
|
||||||
|
│ │ ├─ PageResult.java # 分页结果包装
|
||||||
|
│ │ ├─ login/
|
||||||
|
│ │ │ └─ RedisLoginTokenInfo.java # Redis中登录Token信息结构
|
||||||
|
│ │ └─ interceptor/
|
||||||
|
│ │ └─ RedisPreventReplayInfo.java # Redis中防重放信息结构
|
||||||
|
│ ├─ email/
|
||||||
|
│ │ └─ EmailAbility.java # 邮件发送封装
|
||||||
|
│ ├─ sms/
|
||||||
|
│ │ └─ AliYunSmsAbility.java # 阿里云短信发送能力
|
||||||
|
│ ├─ oss/
|
||||||
|
│ │ └─ AliOssAbility.java # 阿里云OSS能力(上传/下载/签名URL)
|
||||||
|
│ ├─ ai/ # AI对话能力封装
|
||||||
|
│ │ ├─ AiChatAbility.java # OpenAI兼容多供应商对话
|
||||||
|
│ │ ├─ AiChatConfig.java # AI供应商配置
|
||||||
|
│ │ └─ AiResponseCleanTool.java # AI响应文本清洗工具
|
||||||
|
│ ├─ alipay/ # 支付宝支付能力
|
||||||
|
│ │ ├─ AlipayClientConfig.java # 支付宝客户端配置(@ConditionalOnProperty)
|
||||||
|
│ │ ├─ AlipayPagePayAbility.java # 支付宝电脑网站支付下单
|
||||||
|
│ │ ├─ AlipayNotifyController.java # 支付宝回调入口(验签+分发)
|
||||||
|
│ │ └─ AlipayNotifyMessageAbstract.java # 支付宝回调处理抽象接口
|
||||||
|
│ └─ wxPay/ # 微信支付能力
|
||||||
|
│ ├─ WxJsPayAbility.java # 微信JS支付
|
||||||
|
│ ├─ WxNativePayAbility.java # 微信Native支付
|
||||||
|
│ ├─ WxTransferPayAbility.java # 微信转账
|
||||||
|
│ ├─ WxPayNotifyController.java # 微信支付回调入口
|
||||||
|
│ ├─ WxPayNotifyMessageAbstract.java # 微信回调处理抽象接口
|
||||||
|
│ └─ server/
|
||||||
|
│ └─ TransferServer.java # 微信转账服务端封装
|
||||||
│
|
│
|
||||||
└─ manager/ # **B 端 + C 端共享** 的业务实现(尚未搭建完整的 B 端 UI)
|
└─ manager/ # **B 端 + C 端共享** 的业务实现
|
||||||
├─ pom.xml
|
├─ pom.xml
|
||||||
└─ src/main/java
|
└─ src/main/java
|
||||||
└─ org.jiayunet
|
└─ org.jiayunet
|
||||||
├─ constant/ # 常量枚举(OSS路径、短信模板等)
|
├─ constant/ # 常量枚举
|
||||||
├─ controller/ # 对外 REST 接口(HealthCheck、Oss、字典查询等)
|
│ ├─ OssBucketEnum.java # OSS Bucket枚举
|
||||||
|
│ ├─ OssPathEnum.java # OSS路径枚举
|
||||||
|
│ ├─ SmsTemplateEnum.java # 短信模板枚举
|
||||||
|
│ └─ sms/
|
||||||
|
│ ├─ SmsVariableAllows.java # 短信变量白名单
|
||||||
|
│ └─ UniversalSmsVariable.java # 通用短信变量
|
||||||
|
├─ controller/ # 对外REST接口
|
||||||
|
│ ├─ HealthCheckController.java # 健康检查接口
|
||||||
|
│ ├─ OssController.java # 文件上传/下载接口
|
||||||
|
│ ├─ AgreementController.java # 协议接口(根据协议码查询最新启用版本)
|
||||||
│ ├─ RegionController.java # 地区接口(树形/层级/搜索/批量查询)
|
│ ├─ RegionController.java # 地区接口(树形/层级/搜索/批量查询)
|
||||||
│ ├─ JobCategoryController.java # 岗位分类接口(树形/层级/搜索/批量查询)
|
│ ├─ JobCategoryController.java # 岗位分类接口(树形/层级/搜索/批量查询)
|
||||||
│ └─ IndustryController.java # 行业接口(树形/层级/搜索/批量查询)
|
│ └─ IndustryController.java # 行业接口(树形/层级/搜索/批量查询)
|
||||||
@@ -125,6 +214,15 @@ offerpie/back-end
|
|||||||
│ ├─ UserJobCustomizeResumeMapper.java # 用户岗位定制简历Mapper
|
│ ├─ UserJobCustomizeResumeMapper.java # 用户岗位定制简历Mapper
|
||||||
│ ├─ MessageMapper.java # 站内信消息Mapper
|
│ ├─ MessageMapper.java # 站内信消息Mapper
|
||||||
│ ├─ MessageReadMapper.java # 消息已读状态Mapper
|
│ ├─ MessageReadMapper.java # 消息已读状态Mapper
|
||||||
|
│ ├─ AgreementMapper.java # 协议Mapper
|
||||||
|
│ ├─ MemberProductMapper.java # 会员商品Mapper
|
||||||
|
│ ├─ MemberOrderMapper.java # 会员订单Mapper
|
||||||
|
│ ├─ MemberUserMapper.java # 会员用户Mapper
|
||||||
|
│ ├─ MemberFuncItemMapper.java # 会员功能配置项Mapper
|
||||||
|
│ ├─ MemberRouteItemMapper.java # 会员菜单配置项Mapper
|
||||||
|
│ ├─ PayWechatFlowMapper.java # 微信支付流水Mapper
|
||||||
|
│ ├─ PayAlipayFlowMapper.java # 支付宝支付流水Mapper
|
||||||
|
│ ├─ UserFeedbackMapper.java # 用户反馈Mapper
|
||||||
│ └─ AppJobDataMapper.java # 爬虫岗位原始数据Mapper
|
│ └─ AppJobDataMapper.java # 爬虫岗位原始数据Mapper
|
||||||
├─ pojo/
|
├─ pojo/
|
||||||
│ ├─ po/ # 持久化实体
|
│ ├─ po/ # 持久化实体
|
||||||
@@ -143,8 +241,8 @@ offerpie/back-end
|
|||||||
│ │ ├─ JobRegionRelation.java # 岗位-地区关联表(bg_job_region_relation)
|
│ │ ├─ JobRegionRelation.java # 岗位-地区关联表(bg_job_region_relation)
|
||||||
│ │ ├─ JobSkillTagRelation.java # 岗位-技能标签关联表(bg_job_skill_tag_relation)
|
│ │ ├─ JobSkillTagRelation.java # 岗位-技能标签关联表(bg_job_skill_tag_relation)
|
||||||
│ │ ├─ Industry.java # 行业字典表(bg_industry)
|
│ │ ├─ Industry.java # 行业字典表(bg_industry)
|
||||||
│ │ ├─ SkillTag.java # 技能标签表(bg_skill_tag),AI自动入库,name唯一索引
|
│ │ ├─ SkillTag.java # 技能标签表(bg_skill_tag)
|
||||||
│ │ ├─ MajorCategory.java # 专业分类表(bg_major_category),三级树形结构
|
│ │ ├─ MajorCategory.java # 专业分类表(bg_major_category)
|
||||||
│ │ ├─ UserJobFavorite.java # 用户收藏岗位表(bg_user_job_favorite)
|
│ │ ├─ UserJobFavorite.java # 用户收藏岗位表(bg_user_job_favorite)
|
||||||
│ │ ├─ UserJobApplication.java # 用户投递记录表(bg_user_job_application)
|
│ │ ├─ UserJobApplication.java # 用户投递记录表(bg_user_job_application)
|
||||||
│ │ ├─ UserJobDislike.java # 用户不感兴趣记录表(bg_user_job_dislike)
|
│ │ ├─ UserJobDislike.java # 用户不感兴趣记录表(bg_user_job_dislike)
|
||||||
@@ -156,7 +254,7 @@ offerpie/back-end
|
|||||||
│ │ ├─ UserProfileProject.java # 用户项目经历表(bg_user_profile_project)
|
│ │ ├─ UserProfileProject.java # 用户项目经历表(bg_user_profile_project)
|
||||||
│ │ ├─ UserProfileCompetition.java # 用户竞赛经历表(bg_user_profile_competition)
|
│ │ ├─ UserProfileCompetition.java # 用户竞赛经历表(bg_user_profile_competition)
|
||||||
│ │ ├─ UserProfileSkillTagRelation.java # 用户技能标签关联表(bg_user_profile_skill_tag_relation)
|
│ │ ├─ UserProfileSkillTagRelation.java # 用户技能标签关联表(bg_user_profile_skill_tag_relation)
|
||||||
│ │ ├─ UserResume.java # 用户简历表(bg_user_resume,简历维度信息+个人基本信息合并存储)
|
│ │ ├─ UserResume.java # 用户简历表(bg_user_resume)
|
||||||
│ │ ├─ UserResumeEducation.java # 简历-教育经历表(bg_user_resume_education)
|
│ │ ├─ UserResumeEducation.java # 简历-教育经历表(bg_user_resume_education)
|
||||||
│ │ ├─ UserResumeWork.java # 简历-工作经历表(bg_user_resume_work)
|
│ │ ├─ UserResumeWork.java # 简历-工作经历表(bg_user_resume_work)
|
||||||
│ │ ├─ UserResumeInternship.java # 简历-实习经历表(bg_user_resume_internship)
|
│ │ ├─ UserResumeInternship.java # 简历-实习经历表(bg_user_resume_internship)
|
||||||
@@ -169,75 +267,116 @@ offerpie/back-end
|
|||||||
│ │ ├─ UserJobCustomizeResume.java # 用户岗位定制简历表(bg_user_job_customize_resume)
|
│ │ ├─ UserJobCustomizeResume.java # 用户岗位定制简历表(bg_user_job_customize_resume)
|
||||||
│ │ ├─ Message.java # 站内信消息表(bg_message)
|
│ │ ├─ Message.java # 站内信消息表(bg_message)
|
||||||
│ │ ├─ MessageRead.java # 消息已读状态表(bg_message_read)
|
│ │ ├─ MessageRead.java # 消息已读状态表(bg_message_read)
|
||||||
|
│ │ ├─ Agreement.java # 协议表(bg_agreement,版本递增)
|
||||||
|
│ │ ├─ MemberProduct.java # 会员商品表(bg_member_product)
|
||||||
|
│ │ ├─ MemberOrder.java # 会员订单表(bg_member_order)
|
||||||
|
│ │ ├─ MemberUser.java # 会员用户表(bg_member_user,记录会员到期时间)
|
||||||
|
│ │ ├─ MemberFuncItem.java # 会员功能配置项表(bg_member_func_item,定义会员包含的功能权限)
|
||||||
|
│ │ ├─ MemberRouteItem.java # 会员菜单配置项表(bg_member_route_item,定义会员包含的菜单权限)
|
||||||
|
│ │ ├─ PayWechatFlow.java # 微信支付流水表(bg_pay_wechat_flow)
|
||||||
|
│ │ ├─ PayAlipayFlow.java # 支付宝支付流水表(bg_pay_alipay_flow)
|
||||||
|
│ │ ├─ UserFeedback.java # 用户反馈表(bg_user_feedback)
|
||||||
│ │ └─ AppJobData.java # 爬虫岗位原始数据表(app_job_data)
|
│ │ └─ AppJobData.java # 爬虫岗位原始数据表(app_job_data)
|
||||||
│ └─ vo/ # ViewObject(OssUrlVo、DescriptionParagraph、JobListItemVo、UserHonorsVo 等)
|
│ └─ vo/ # ViewObject
|
||||||
├─ resources/mapper/ # MyBatis XML 映射文件
|
│ ├─ OssUrlVo.java # OSS签名URL返回
|
||||||
|
│ ├─ DescriptionParagraph.java # 描述段落对象(JSON字段通用结构)
|
||||||
|
│ ├─ LanguageAbility.java # 语言能力对象(求职助手配置JSON字段)
|
||||||
|
│ ├─ JobListItemVo.java # 岗位列表项VO
|
||||||
|
│ ├─ UserHonorsVo.java # 用户荣誉VO
|
||||||
|
│ ├─ AgreementListVo.java # 协议列表VO
|
||||||
|
│ ├─ RegionTreeVo.java # 地区树形VO
|
||||||
|
│ ├─ RegionVo.java # 地区VO
|
||||||
|
│ ├─ JobCategoryTreeVo.java # 岗位分类树形VO
|
||||||
|
│ ├─ JobCategoryVo.java # 岗位分类VO
|
||||||
|
│ ├─ IndustryTreeVo.java # 行业树形VO
|
||||||
|
│ └─ IndustryVo.java # 行业VO
|
||||||
|
├─ resources/mapper/ # MyBatis XML映射文件
|
||||||
│ └─ JobMapper.xml # 岗位自定义SQL(selectJobPage)
|
│ └─ JobMapper.xml # 岗位自定义SQL(selectJobPage)
|
||||||
└─ service/ # 业务 Service(OssService、SmsService、DictCacheService、JobCleanService、JobCleanTransactionService、CompanyCleanService、CompanyCleanTransactionService、UserProfileAnalyzeService、JobMatchService、MessageService 等)
|
└─ service/ # 业务Service
|
||||||
|
├─ OssService.java # 文件上传/下载服务
|
||||||
|
├─ SmsService.java # 短信发送服务
|
||||||
|
├─ DictCacheService.java # 字典缓存服务(地区/岗位分类/行业树形缓存)
|
||||||
|
├─ RegionService.java # 地区服务(树形/层级/搜索/批量查询)
|
||||||
|
├─ JobCategoryService.java # 岗位分类服务(树形/层级/搜索/批量查询)
|
||||||
|
├─ IndustryService.java # 行业服务(树形/层级/搜索/批量查询)
|
||||||
|
├─ AgreementService.java # 协议服务(查询最新版本、列表、创建/编辑版本递增)
|
||||||
|
├─ JobCleanService.java # 岗位清洗服务(爬虫数据→业务表)
|
||||||
|
├─ JobCleanTransactionService.java # 岗位清洗事务服务
|
||||||
|
├─ CompanyCleanService.java # 公司清洗服务
|
||||||
|
├─ CompanyCleanTransactionService.java # 公司清洗事务服务
|
||||||
|
├─ UserProfileAnalyzeService.java # 用户简历分析服务(AI三次调用:综合分析/专业归一化/技能提取)
|
||||||
|
├─ JobMatchService.java # 岗位匹配度计算服务(教育30%+经历30%+技能40%)
|
||||||
|
└─ MessageService.java # 站内信服务(发送系统/运营/订单消息)
|
||||||
```
|
```
|
||||||
> **设计理念** – 业务实体和 Mapper 位于 `manager`,B 端和 C 端共享;C 端特有的注解、切面、权限服务、路由菜单服务位于 `client-api`,避免 B 端误用;`common` 提供统一的技术支撑。
|
> **设计理念** – 业务实体和 Mapper 位于 `manager`,B 端和 C 端共享;C 端特有的注解、切面、权限服务、路由菜单服务位于 `client-api`,避免 B 端误用;`common` 提供统一的技术支撑。
|
||||||
|
|
||||||
## 2️⃣ 各层模块职责
|
## 2️⃣ 各层模块职责
|
||||||
| 层级 | 主要职责 | 关键类/包 |
|
| 层级 | 主要职责 | 关键类/包 |
|
||||||
|------|----------|-----------|
|
|------|----------|-----------|
|
||||||
| **client-api** | - 面向终端用户的 REST API <br> - 启动 Spring Boot 应用 <br> - 短信验证码登录(含自动注册、邀请码绑定) <br> - **功能权限校验**:注解 + 切面 + 权限服务(校验、扣减、回退) <br> - **路由菜单**:获取用户有效菜单树 <br> - **求职助手**:配置管理、AI岗位推荐、任务列表 | `ClientApplication`、`LoginController`、`RouteMenuController`、`JobController`、`JobAgentConfigController`、`UserResumeController`、`FuncPermission`、`FuncPermissionAspect`、`FuncPermissionService`、`RouteMenuService`、`JobService`、`JobAgentConfigService`、`UserRegisterService`、`RouteMenuVo` |
|
| **client-api** | - 面向终端用户的 REST API <br> - 启动 Spring Boot 应用 <br> - 短信验证码登录(含自动注册、邀请码绑定) <br> - **功能权限校验**:注解 + 切面 + 权限服务(校验、扣减、回退) <br> - **路由菜单**:获取用户有效菜单树 <br> - **用户管理**:查看/修改信息、注销账号、邀请统计 <br> - **用户反馈**:提交反馈 <br> - **会员体系**:商品下单、支付回调、会员状态查询、权益发放 <br> - **求职助手**:配置管理、AI岗位推荐、任务列表 | `ClientApplication`、`LoginController`、`RouteMenuController`、`UserManageController`、`UserFeedbackController`、`MemberProductController`、`MemberStatusController`、`JobController`、`JobAgentConfigController`、`UserResumeController`、`MessageController`、`FuncPermission`、`FuncPermissionAspect`、`FuncPermissionService`、`MemberGrantService`、`MemberProductService`、`MemberStatusService`、`UserManageService` |
|
||||||
| **common** | - **统一配置**:OSS、Redis、Security、WxPay、Sms、Async 等 <br> - **跨层工具**:HTTP、IP、认证、验证码、Redis Server 等 <br> - **全局拦截/切面**:日志、TraceId、黑名单、SQL 打印 <br> - **统一异常/响应**:`GlobalExceptionAdvice`、`UnifiedResponse` <br> - **业务抽象**:邮件发送、微信支付(Native/JS/Transfer)、异步任务 <br> - **公共 POJO**:登录令牌、防重放信息等 | `config/`, `tool/`, `interceptor/`, `aop/`, `exception/`, `email/`, `wxPay/`, `pojo/` |
|
| **common** | - **统一配置**:OSS、Redis、Security、WxPay、Alipay、Sms、Async、Jackson、MyBatis、Web 等 <br> - **跨层工具**:HTTP、IP、认证、验证码、Redis Server、用户安全 <br> - **通用Mapper**:CommonMapper(批量插入/更新) <br> - **全局拦截/切面**:日志、TraceId、黑名单、防重放、SQL打印 <br> - **统一异常/响应**:`GlobalExceptionAdvice`、`UnifiedResponse`、`PageResult` <br> - **业务能力抽象**:邮件(EmailAbility)、短信(AliYunSmsAbility)、OSS(AliOssAbility)、AI对话(AiChatAbility)、微信支付(Native/JS/Transfer)、支付宝支付(PagePay) <br> - **公共 POJO**:登录令牌、防重放信息、分页参数/结果 | `config/`, `constant/`, `mapper/`, `tool/`, `interceptor/`, `aop/`, `exception/`, `web/`, `pojo/`, `email/`, `sms/`, `oss/`, `ai/`, `alipay/`, `wxPay/` |
|
||||||
| **manager** | - **业务实体**(`User`、`OssFile`、`UserInvite`、`RouteMenu`、`FuncPermission`、`UserRouteMenuStock`、`UserFuncPermissionStock`、`UserFuncUsageLog`、`ChinaRegionsCode`、`JobCategory`、`Company`、`Job`、`JobRegionRelation`、`Industry`、`SkillTag`、`UserJobFavorite`、`UserJobApplication`、`UserJobDislike`、`UserJobIntention`、`UserProfile`及5张子表、`UserProfileSkillTagRelation`、`UserResume`及5张子表、`ResumeDiagnosisReport`、`ResumeDiagnosisIssue`、`JobAgentConfig`、`UserJobCustomizeResume`、`Message`、`MessageRead`、`AppJobData`) <br> - **MyBatis Mapper**(对应全部业务实体的 Mapper,含 `JobAgentConfigMapper`、`UserJobCustomizeResumeMapper`、`MessageMapper`、`MessageReadMapper`) <br> - **业务 API**:文件上传/下载、健康检查、地区/岗位分类/行业字典查询 <br> - **业务逻辑**:OssService、SmsService、DictCacheService、JobCleanService、CompanyCleanService、UserProfileAnalyzeService、JobMatchService、MessageService 等 <br> - **既供 B 端 UI(待实现)使用,也供 C 端业务直接调用** | `controller/`, `mapper/`, `pojo/po/`, `pojo/vo/`, `service/`, `constant/` |
|
| **manager** | - **业务实体**(User、OssFile、UserInvite、RouteMenu、FuncPermission、库存表、地区/岗位分类/行业/技能标签/专业分类字典、岗位及关联表、用户行为表、个人资料及5张子表、简历及5张子表、诊断报告/问题、求职助手配置/对话/定制简历、站内信、协议、会员商品/订单/用户/配置项、支付流水、用户反馈、爬虫原始数据) <br> - **MyBatis Mapper**(对应全部业务实体) <br> - **字典/公共 API**:文件上传/下载、健康检查、地区/岗位分类/行业字典查询、协议查询 <br> - **业务逻辑**:OssService、SmsService、DictCacheService、RegionService、JobCategoryService、IndustryService、AgreementService、JobCleanService、CompanyCleanService、UserProfileAnalyzeService、JobMatchService、MessageService | `controller/`, `mapper/`, `pojo/po/`, `pojo/vo/`, `service/`, `constant/` |
|
||||||
|
|
||||||
## 3️⃣ 关键业务实体
|
## 3️⃣ 关键业务实体
|
||||||
| 实体 | 所属模块 | 作用概述 |
|
| 实体 | 所属模块 | 作用概述 |
|
||||||
|------|----------|----------|
|
|------|----------|----------|
|
||||||
| `User` | manager | 记录用户基础信息(手机号、邮箱、密码、昵称、微信绑定、邀请码等),配合 `UserMapper` 完成持久化。 |
|
| `User` | manager | 记录用户基础信息(手机号、邮箱、密码、昵称、头像、生日、性别、真实姓名、微信绑定、邀请码等),配合 `UserMapper` 完成持久化。 |
|
||||||
| `OssFile` | manager | 描述 OSS(对象存储)中文件的元数据(路径、大小、标签等),通过 `OssFileMapper` 进行增删改查。 |
|
| `OssFile` | manager | 描述 OSS(对象存储)中文件的元数据(路径、大小、标签等),通过 `OssFileMapper` 进行增删改查。 |
|
||||||
| `UserInvite` | manager | 用户邀请记录表,记录邀请人与被邀请人的关系及邀请时间。 |
|
| `UserInvite` | manager | 用户邀请记录表,记录邀请人与被邀请人的关系、邀请时间、奖励天数。 |
|
||||||
|
| `UserFeedback` | manager | 用户反馈表(bg_user_feedback),记录用户提交的反馈类型和内容。 |
|
||||||
| `RouteMenu` | manager | 路由菜单表(bg_route_menu),支持多级树形结构,通过 rootId/parentId 表达层级关系,openAccess 标识是否公开免费。 |
|
| `RouteMenu` | manager | 路由菜单表(bg_route_menu),支持多级树形结构,通过 rootId/parentId 表达层级关系,openAccess 标识是否公开免费。 |
|
||||||
| `FuncPermission` | manager | 功能权限表(bg_func_permission),定义功能点编码(func_code,最长12字符,唯一约束),daily_free_count 配置每日免费次数。 |
|
| `FuncPermission` | manager | 功能权限表(bg_func_permission),定义功能点编码(func_code,最长12字符,唯一约束),daily_free_count 配置每日免费次数。 |
|
||||||
| `UserRouteMenuStock` | manager | 用户路由菜单库存表(bg_user_route_menu_stock),记录用户拥有的菜单权限,支持时间维度。 |
|
| `UserRouteMenuStock` | manager | 用户路由菜单库存表(bg_user_route_menu_stock),记录用户拥有的菜单权限,支持时间维度。 |
|
||||||
| `UserFuncPermissionStock` | manager | 用户功能权限库存表(bg_user_func_permission_stock),记录用户拥有的功能权限,支持时间/次数/复合维度。 |
|
| `UserFuncPermissionStock` | manager | 用户功能权限库存表(bg_user_func_permission_stock),记录用户拥有的功能权限,支持时间/次数/复合维度。 |
|
||||||
| `UserFuncUsageLog` | manager | 用户功能使用记录表(bg_user_func_usage_log),记录每次功能使用,用于免费次数统计和异常回退。 |
|
| `UserFuncUsageLog` | manager | 用户功能使用记录表(bg_user_func_usage_log),记录每次功能使用,用于免费次数统计和异常回退。 |
|
||||||
| `RouteMenuVo` | client-api | 路由菜单树形VO,包含 children 子菜单列表,供前端渲染动态路由。 |
|
| `Agreement` | manager | 协议表(bg_agreement),按协议码(agreementCode)分组,版本递增管理,支持启用/禁用状态。 |
|
||||||
| `LoginVo` | client-api | 登录成功后返回的用户信息(userId、nick)。 |
|
| `MemberProduct` | manager | 会员商品表(bg_member_product),定义商品名称、价格、时长天数、排序、上下架状态。 |
|
||||||
| `SmsLoginDto` | client-api | 短信验证码登录的请求参数(mobileNumber、code、inviteCode)。 |
|
| `MemberOrder` | manager | 会员订单表(bg_member_order),记录用户下单信息、支付渠道、订单状态(0待支付/1已支付)、支付时间。 |
|
||||||
|
| `MemberUser` | manager | 会员用户表(bg_member_user),记录用户的会员到期时间,一个用户一条记录。 |
|
||||||
|
| `MemberFuncItem` | manager | 会员功能配置项表(bg_member_func_item),定义会员套餐包含的功能权限项(funcCode、countLimit、addCount)。 |
|
||||||
|
| `MemberRouteItem` | manager | 会员菜单配置项表(bg_member_route_item),定义会员套餐包含的菜单权限项(routeId)。 |
|
||||||
|
| `PayWechatFlow` | manager | 微信支付流水表(bg_pay_wechat_flow),记录微信支付的订单号、金额、状态、回调数据。 |
|
||||||
|
| `PayAlipayFlow` | manager | 支付宝支付流水表(bg_pay_alipay_flow),记录支付宝支付的订单号、金额、状态、交易号、回调数据。 |
|
||||||
| `ChinaRegionsCode` | manager | 地区表(bg_china_regions_code),行政区划编码,省/市/区三级,code为主键。 |
|
| `ChinaRegionsCode` | manager | 地区表(bg_china_regions_code),行政区划编码,省/市/区三级,code为主键。 |
|
||||||
| `JobCategory` | manager | 岗位类型表(bg_job_category),树形结构,一级/二级分类。 |
|
| `JobCategory` | manager | 岗位类型表(bg_job_category),树形结构,一级/二级分类。 |
|
||||||
| `Company` | manager | 公司表(bg_company),公司基本信息、融资、规模、新闻动态等。 |
|
| `Company` | manager | 公司表(bg_company),公司基本信息、融资、规模、新闻动态等。 |
|
||||||
| `Job` | manager | 岗位表(bg_job),岗位信息、薪资、标签、技能标签、要求专业、专业敏感度,关联公司和岗位类型。 |
|
| `Job` | manager | 岗位表(bg_job),岗位信息、薪资、标签、技能标签、要求专业、专业敏感度,关联公司和岗位类型。 |
|
||||||
| `JobRegionRelation` | manager | 岗位-地区关联表(bg_job_region_relation),一个岗位可关联多个地区。 |
|
| `JobRegionRelation` | manager | 岗位-地区关联表(bg_job_region_relation),一个岗位可关联多个地区。 |
|
||||||
| `UserJobFavorite` | manager | 用户收藏岗位表(bg_user_job_favorite),用户与岗位唯一约束。 |
|
| `JobSkillTagRelation` | manager | 岗位-技能标签关联表(bg_job_skill_tag_relation),AI提取的技能标签与岗位的关联,用于匹配度计算。 |
|
||||||
| `UserJobApplication` | manager | 用户投递记录表(bg_user_job_application),记录投递状态流转。 |
|
|
||||||
| `Industry` | manager | 行业字典表(bg_industry),树形结构,一级/二级分类。 |
|
| `Industry` | manager | 行业字典表(bg_industry),树形结构,一级/二级分类。 |
|
||||||
| `SkillTag` | manager | 技能标签表(bg_skill_tag),AI自动入库,name唯一索引,用于匹配度计算。 |
|
| `SkillTag` | manager | 技能标签表(bg_skill_tag),AI自动入库,name唯一索引,用于匹配度计算。 |
|
||||||
| `MajorCategory` | manager | 专业分类表(bg_major_category),基于教育部专业目录,三级树形结构,用于专业匹配。 |
|
| `MajorCategory` | manager | 专业分类表(bg_major_category),基于教育部专业目录,三级树形结构,用于专业匹配。 |
|
||||||
| `UserJobDislike` | manager | 用户不感兴趣记录表(bg_user_job_dislike),记录用户对岗位的不感兴趣原因,冗余公司ID/地区编码/行业ID方便推荐过滤。 |
|
| `UserJobFavorite` | manager | 用户收藏岗位表(bg_user_job_favorite),用户与岗位唯一约束。 |
|
||||||
| `UserJobIntention` | manager | 用户求职意向表(bg_user_job_intention),存储意向岗位类型、城市、行业(JSON数组,节点可能为任意级别)和工作类型。 |
|
| `UserJobApplication` | manager | 用户投递记录表(bg_user_job_application),记录投递状态流转。 |
|
||||||
| `UserProfile` | manager | 用户个人资料表(bg_user_profile),存储身份证号、所在城市、微信号、作品集链接、专业IDs、学校等级、公司背书、经历时长、职责深度、量化产出、荣誉、技能标签、证书标签。 |
|
| `UserJobDislike` | manager | 用户不感兴趣记录表(bg_user_job_dislike),冗余公司ID/地区编码/行业ID方便推荐过滤。 |
|
||||||
| `UserProfileEducation` | manager | 用户教育经历表(bg_user_profile_education,profile子表),学校、专业、学历、起止年份、描述段落(JSON对象数组)。 |
|
| `UserJobIntention` | manager | 用户求职意向表(bg_user_job_intention),存储意向岗位类型、城市、行业(JSON数组)和工作类型。 |
|
||||||
| `UserProfileWork` | manager | 用户工作经历表(bg_user_profile_work,profile子表),公司、职位、起止时间、描述段落(JSON对象数组)。 |
|
| `UserProfile` | manager | 用户个人资料表(bg_user_profile),存储维度评分字段(学校等级、公司背书、经历时长、职责深度、量化产出、荣誉、技能标签、证书标签等)。 |
|
||||||
| `UserProfileInternship` | manager | 用户实习经历表(bg_user_profile_internship,profile子表),公司、职位、起止时间、描述段落(JSON对象数组)。 |
|
| `UserProfileEducation` | manager | 用户教育经历表(bg_user_profile_education,profile子表)。 |
|
||||||
| `UserProfileProject` | manager | 用户项目经历表(bg_user_profile_project,profile子表),公司、项目名、角色、起止时间、描述段落(JSON对象数组)。 |
|
| `UserProfileWork` | manager | 用户工作经历表(bg_user_profile_work,profile子表)。 |
|
||||||
| `UserProfileCompetition` | manager | 用户竞赛经历表(bg_user_profile_competition,profile子表),竞赛名、奖项、获奖时间、描述段落(JSON对象数组)。 |
|
| `UserProfileInternship` | manager | 用户实习经历表(bg_user_profile_internship,profile子表)。 |
|
||||||
| `JobSkillTagRelation` | manager | 岗位-技能标签关联表(bg_job_skill_tag_relation),AI提取的技能标签与岗位的关联,用于匹配度计算。 |
|
| `UserProfileProject` | manager | 用户项目经历表(bg_user_profile_project,profile子表)。 |
|
||||||
| `UserProfileSkillTagRelation` | manager | 用户技能标签关联表(bg_user_profile_skill_tag_relation),记录用户匹配的技能标签,由AI自动识别生成。 |
|
| `UserProfileCompetition` | manager | 用户竞赛经历表(bg_user_profile_competition,profile子表)。 |
|
||||||
| `AppJobData` | manager | 爬虫岗位原始数据表(app_job_data),存储爬虫抓取的原始岗位数据,供清洗服务读取并写入业务表。 |
|
| `UserProfileSkillTagRelation` | manager | 用户技能标签关联表(bg_user_profile_skill_tag_relation),AI自动识别生成。 |
|
||||||
| `UserResume` | manager | 用户简历表(bg_user_resume),简历维度信息(名称、目标岗位、默认标记、排序)+ 个人基本信息(姓名、联系方式、技能、证书、个人概述等)合并存储,一个用户可有多份简历。 |
|
| `UserResume` | manager | 用户简历表(bg_user_resume),简历维度信息+个人基本信息合并存储,一个用户可有多份简历。 |
|
||||||
| `UserResumeEducation` | manager | 简历-教育经历表(bg_user_resume_education),学校、专业、学历(文本)、学习形式(文本)、起止时间、描述段落。 |
|
| `UserResumeEducation` | manager | 简历-教育经历表(bg_user_resume_education)。 |
|
||||||
| `UserResumeWork` | manager | 简历-工作经历表(bg_user_resume_work),公司、职位、起止时间、描述段落。 |
|
| `UserResumeWork` | manager | 简历-工作经历表(bg_user_resume_work)。 |
|
||||||
| `UserResumeInternship` | manager | 简历-实习经历表(bg_user_resume_internship),公司、职位、起止时间、描述段落。 |
|
| `UserResumeInternship` | manager | 简历-实习经历表(bg_user_resume_internship)。 |
|
||||||
| `UserResumeProject` | manager | 简历-项目经历表(bg_user_resume_project),公司、项目名、角色、起止时间、描述段落。 |
|
| `UserResumeProject` | manager | 简历-项目经历表(bg_user_resume_project)。 |
|
||||||
| `UserResumeCompetition` | manager | 简历-竞赛经历表(bg_user_resume_competition),竞赛名、奖项、获奖时间、描述段落。 |
|
| `UserResumeCompetition` | manager | 简历-竞赛经历表(bg_user_resume_competition)。 |
|
||||||
| `ResumeDiagnosisReport` | manager | 简历诊断报告表(bg_resume_diagnosis_report),存储AI对简历的整体诊断评级(A/B/C/D)、整体评价和各类问题统计。 |
|
| `ResumeDiagnosisReport` | manager | 简历诊断报告表(bg_resume_diagnosis_report),AI整体诊断评级(A/B/C/D)和各类问题统计。 |
|
||||||
| `ResumeDiagnosisIssue` | manager | 简历诊断问题表(bg_resume_diagnosis_issue),存储AI对简历各模块的诊断发现、建议、改写内容,含紧急/重点/表达三类问题子类型计数。 |
|
| `ResumeDiagnosisIssue` | manager | 简历诊断问题表(bg_resume_diagnosis_issue),AI对简历各模块的诊断发现、建议、改写内容。 |
|
||||||
| `JobAgentConfig` | manager | 求职助手配置表(bg_job_agent_config),一个用户一条记录,存储Agent模式、投递目标、网申常见问题预设答案(部门调剂、地点调剂、面试方式、语言能力、到岗时间、实习天数/时长)。 |
|
| `JobAgentConfig` | manager | 求职助手配置表(bg_job_agent_config),一个用户一条记录,存储Agent模式、投递目标、网申常见问题预设答案。 |
|
||||||
| `JobAgentChatMessage` | manager | 求职助手对话消息表(bg_job_agent_chat_message),记录用户与求职助手的完整对话流,含4种消息类型(user/assistant/recommend/apply_progress),文本存content,JSON数据存extra由前端维护。 |
|
| `JobAgentChatMessage` | manager | 求职助手对话消息表(bg_job_agent_chat_message),完整对话流,含4种消息类型。 |
|
||||||
| `UserJobCustomizeResume` | manager | 用户岗位定制简历表(bg_user_job_customize_resume),一个用户+一个岗位=一份定制简历,content字段存完整CustomizeResume JSON,唯一索引(user_id, job_id)。 |
|
| `UserJobCustomizeResume` | manager | 用户岗位定制简历表(bg_user_job_customize_resume),唯一索引(user_id, job_id)。 |
|
||||||
| `Message` | manager | 站内信消息表(bg_message),统一存储系统消息(1)、运营消息(2)、订单消息(3),支持指定用户(targetType=1)和全员推送(targetType=2),可关联业务(bizType+bizId)。 |
|
| `Message` | manager | 站内信消息表(bg_message),支持系统(1)/运营(2)/订单(3)消息,支持指定用户和全员推送。 |
|
||||||
| `MessageRead` | manager | 消息已读状态表(bg_message_read),记录用户对消息的已读状态,唯一索引(message_id, user_id)。 |
|
| `MessageRead` | manager | 消息已读状态表(bg_message_read),唯一索引(message_id, user_id)。 |
|
||||||
|
| `AppJobData` | manager | 爬虫岗位原始数据表(app_job_data),存储爬虫抓取的原始岗位数据,供清洗服务读取。 |
|
||||||
|
|
||||||
## 4️⃣ 权限体系设计
|
## 4️⃣ 权限体系设计
|
||||||
### 整体架构
|
### 整体架构
|
||||||
- **前端**:路由控制菜单/页面可见性,登录后拉取用户有效菜单树(含公开免费菜单 + 库存授权菜单)
|
- **前端**:路由控制菜单/页面可见性,登录后拉取用户有效菜单树(含公开免费菜单 + 库存授权菜单)
|
||||||
- **后端**:AOP 切面拦截 `@FuncPermission` 注解,校验权限 + 扣减库存,业务异常自动回退次数
|
- **后端**:AOP 切面拦截 `@FuncPermission` 注解,校验权限 + 扣减库存,业务异常自动回退次数
|
||||||
- **权限来源**:商品模块下单成功后写入库存表,权限框架不关心来源
|
- **权限来源**:会员购买成功后通过 `MemberGrantService` 统一发放到库存表
|
||||||
|
|
||||||
### 数据库表(5张)
|
### 数据库表(5张)
|
||||||
| 表名 | 说明 |
|
| 表名 | 说明 |
|
||||||
@@ -265,34 +404,49 @@ offerpie/back-end
|
|||||||
8. count_limit=1 → SQL 原子扣减 `remain_count = remain_count - 1`(WHERE remain_count > 0)→ 插入使用记录,放行
|
8. count_limit=1 → SQL 原子扣减 `remain_count = remain_count - 1`(WHERE remain_count > 0)→ 插入使用记录,放行
|
||||||
9. 业务方法异常 → 删除使用记录 + 尝试回退库存次数(count_limit=1 时 remain_count + 1)
|
9. 业务方法异常 → 删除使用记录 + 尝试回退库存次数(count_limit=1 时 remain_count + 1)
|
||||||
|
|
||||||
## 5️⃣ 共享技术栈(位于 `common`)
|
## 5️⃣ 会员商品与支付体系
|
||||||
|
### 整体架构
|
||||||
|
- **商品管理**:`MemberProduct` 定义会员套餐(名称、价格、时长天数、排序、上下架)
|
||||||
|
- **下单流程**:用户选择商品 → 创建订单(`MemberOrder`) → 根据支付渠道调用微信/支付宝下单 → 返回支付凭据
|
||||||
|
- **支付回调**:微信/支付宝回调 → 验签 → 更新流水 → 调用 `handlePaySuccess` → 更新订单状态 → 发放权益
|
||||||
|
- **权益发放**:`MemberGrantService.grant()` → 续费会员时长 → 按 `MemberFuncItem` 发放功能权限 → 按 `MemberRouteItem` 发放菜单权限
|
||||||
|
|
||||||
|
### 数据库表
|
||||||
|
| 表名 | 说明 |
|
||||||
|
|------|------|
|
||||||
|
| `bg_member_product` | 会员商品定义(价格、时长、排序、状态) |
|
||||||
|
| `bg_member_order` | 会员订单(用户、商品、金额、支付渠道、状态、支付时间) |
|
||||||
|
| `bg_member_user` | 会员用户状态(一个用户一条记录,记录到期时间) |
|
||||||
|
| `bg_member_func_item` | 会员功能配置项(定义会员包含哪些功能权限、次数限制) |
|
||||||
|
| `bg_member_route_item` | 会员菜单配置项(定义会员包含哪些菜单权限) |
|
||||||
|
| `bg_pay_wechat_flow` | 微信支付流水 |
|
||||||
|
| `bg_pay_alipay_flow` | 支付宝支付流水 |
|
||||||
|
|
||||||
|
### 支付渠道
|
||||||
|
- **微信Native支付**:通过 `WxNativePayAbility` 调用微信下单接口,返回二维码URL
|
||||||
|
- **支付宝电脑网站支付**:通过 `AlipayPagePayAbility` 调用支付宝下单接口,返回HTML表单(内嵌二维码)
|
||||||
|
- 回调分别由 `WxPayNotifyController` 和 `AlipayNotifyController` 处理验签,再委托给具体实现类
|
||||||
|
|
||||||
|
## 6️⃣ 共享技术栈(位于 `common`)
|
||||||
| 类别 | 关键实现 | 位置 |
|
| 类别 | 关键实现 | 位置 |
|
||||||
|------|----------|------|
|
|------|----------|------|
|
||||||
| **配置** | `OssConfig`, `RedissonConf`, `SecurityConfig`, `WxPayConfig`, `SmsConfig`, `AsyncConfig` | `common/config` |
|
| **配置** | `OssConfig`, `RedissonConf`, `SecurityConfig`, `WxPayConfig`, `SmsConfig`, `AsyncConfig`, `JacksonConfig`, `MybatisConfig`, `WebConfig` | `common/config` |
|
||||||
| **安全** | JWT 过滤器、登录令牌 (`RedisLoginTokenInfo`)、防重放 (`RedisPreventReplayInfo`) | `common/interceptor`、`common/pojo/interceptor` |
|
| **安全** | JWT 过滤器 (`JwtAuthenticationTokenFilter`)、登录令牌 (`RedisLoginTokenInfo`)、防重放 (`PreventReplayInterceptor`)、黑名单 (`BlackListInterceptor`) | `common/interceptor`、`common/pojo` |
|
||||||
|
| **通用Mapper** | `CommonMapper`(继承BaseMapper,提供batchInsert/batchUpdate方法) | `common/mapper` |
|
||||||
|
| **常量** | `PreRedisKeyName`(Redis Key前缀:preventReplay、blackList、login:token) | `common/constant` |
|
||||||
| **邮件** | `EmailAbility`(封装邮件发送) | `common/email` |
|
| **邮件** | `EmailAbility`(封装邮件发送) | `common/email` |
|
||||||
|
| **短信** | `AliYunSmsAbility`(阿里云短信发送,ConditionalOnProperty) | `common/sms` |
|
||||||
|
| **OSS** | `AliOssAbility`(阿里云OSS上传/下载/签名URL,ConditionalOnProperty) | `common/oss` |
|
||||||
| **AI** | `AiChatAbility`(OpenAI 兼容多供应商对话)、`AiChatConfig`(供应商配置)、`AiResponseCleanTool`(AI响应文本清洗) | `common/ai` |
|
| **AI** | `AiChatAbility`(OpenAI 兼容多供应商对话)、`AiChatConfig`(供应商配置)、`AiResponseCleanTool`(AI响应文本清洗) | `common/ai` |
|
||||||
| **微信支付** | `WxJsPayAbility`, `WxNativePayAbility`, `WxTransferPayAbility`, `WxPayNotifyController` | `common/wxPay` |
|
| **支付宝** | `AlipayClientConfig`(客户端配置)、`AlipayPagePayAbility`(电脑网站支付)、`AlipayNotifyController`(回调验签)、`AlipayNotifyMessageAbstract`(回调抽象) | `common/alipay` |
|
||||||
| **全局异常** | `GlobalExceptionAdvice`, `BusinessException`, `BusinessExpCodeEnum` | `common/exception` |
|
| **微信支付** | `WxJsPayAbility`, `WxNativePayAbility`, `WxTransferPayAbility`, `WxPayNotifyController`, `WxPayNotifyMessageAbstract` | `common/wxPay` |
|
||||||
| **日志 & AOP** | `ControllerLogAspect`, `LoggingOriginalRequestFilter`, `SqlLoggerInterceptor` | `common/aop`, `common/interceptor` |
|
| **全局异常** | `GlobalExceptionAdvice`, `BusinessException`, `BusinessExpCodeEnum`, `BusinessExpCodeOperations` | `common/exception`, `common/web` |
|
||||||
| **工具类** | `HttpTool`, `HttpIpTool`, `AuthenticTool`, `ObjectTool`, `VerifyImageCodeUtils` | `common/tool` |
|
| **日志 & AOP** | `ControllerLogAspect`, `LoggingOriginalRequestFilter`, `TraceIdFilter`, `SqlLoggerInterceptor` | `common/aop`, `common/interceptor` |
|
||||||
| **统一返回体** | `UnifiedResponse`, `UnifiedResponseBodyAdvice` | `common/pojo`, `common/web` |
|
| **工具类** | `HttpTool`, `HttpIpTool`, `AuthenticTool`, `ObjectTool`, `UserSecurityTool`, `VerifyImageCodeUtils`, `RedisServerTool` | `common/tool` |
|
||||||
| **批量/更新** | `UpdateBatchMethod`(批量更新策略) | `common/config` |
|
| **统一返回体** | `UnifiedResponse`, `UnifiedResponseBodyAdvice`, `PageParam`, `PageResult` | `common/pojo`, `common/web` |
|
||||||
|
| **批量/更新** | `UpdateBatchMethod`(批量更新SQL注入策略)、`LongListTypeHandler`(List<Long> JSON类型处理器) | `common/config` |
|
||||||
|
|
||||||
## 6️⃣ 构建与运行
|
## 7️⃣ 岗位列表与匹配度计算设计
|
||||||
- **父 POM**(`back-end/pom.xml`)统一管理子模块的依赖与插件。
|
|
||||||
- 子模块 (`client-api`, `common`, `manager`) 均可单独 `mvn clean install`,生成各自的 jar 包。
|
|
||||||
- **启动入口**:运行 `client-api` 中的 `ClientApplication`,Spring Boot 会自动扫描并加载 `common`(配置、拦截、工具)以及 `manager` 中声明的 Mapper 与 Service。
|
|
||||||
|
|
||||||
## 7️⃣ 小结
|
|
||||||
- 项目采用 **三层结构**:
|
|
||||||
1. **client-api** → C 端 REST 接口 + 功能权限校验(注解/切面/服务) + 路由菜单服务 + 用户注册与邀请。
|
|
||||||
2. **manager** → 业务实体、Mapper 与业务 API,B 端 + C 端共享层。
|
|
||||||
3. **common** → 所有层共同依赖的底层设施(配置、工具、拦截、异常、支付、邮件等)。
|
|
||||||
- 权限体系分两层:前端路由控制菜单可见性,后端切面控制功能点权限与库存扣减。
|
|
||||||
- 权限和菜单作为商品维度,框架只负责校验和库存管理,不关心权限来源。
|
|
||||||
|
|
||||||
## 4.7️⃣ 岗位列表与匹配度计算设计
|
|
||||||
### 整体架构
|
### 整体架构
|
||||||
- **触发时机**:用户访问岗位列表接口(支持筛选条件:地区/岗位类型/行业/工作类型)
|
- **触发时机**:用户访问岗位列表接口(支持筛选条件:地区/岗位类型/行业/工作类型)
|
||||||
- **核心流程**:扩展层级筛选 → 查询不感兴趣记录 → 扩展排除列表 → SQL分页查询 → 查询收藏状态 → 批量计算匹配度 → 组装返回
|
- **核心流程**:扩展层级筛选 → 查询不感兴趣记录 → 扩展排除列表 → SQL分页查询 → 查询收藏状态 → 批量计算匹配度 → 组装返回
|
||||||
@@ -326,7 +480,7 @@ offerpie/back-end
|
|||||||
- **JobService**(client-api):岗位列表查询主流程编排
|
- **JobService**(client-api):岗位列表查询主流程编排
|
||||||
- **JobMatchService**(manager):批量计算匹配度(教育/经历/技能三个维度)
|
- **JobMatchService**(manager):批量计算匹配度(教育/经历/技能三个维度)
|
||||||
|
|
||||||
## 4.5️⃣ 用户简历分析设计
|
## 8️⃣ 用户简历分析设计
|
||||||
### 整体架构
|
### 整体架构
|
||||||
- **触发时机**:用户保存个人资料(主表或任意子表)后异步触发
|
- **触发时机**:用户保存个人资料(主表或任意子表)后异步触发
|
||||||
- **分析流程**:三次 AI 调用 → 第一次综合分析(学校等级、公司背书、经历时长、职责深度、量化产出、荣誉),第二次专业归一化(匹配到 bg_major_category ID),第三次技能提取(自由提取,入 bg_skill_tag)
|
- **分析流程**:三次 AI 调用 → 第一次综合分析(学校等级、公司背书、经历时长、职责深度、量化产出、荣誉),第二次专业归一化(匹配到 bg_major_category ID),第三次技能提取(自由提取,入 bg_skill_tag)
|
||||||
@@ -344,13 +498,29 @@ offerpie/back-end
|
|||||||
- 每次 AI 调用独立容错,某一次失败不影响其他维度
|
- 每次 AI 调用独立容错,某一次失败不影响其他维度
|
||||||
- 核心服务:**UserProfileAnalyzeService**(manager)
|
- 核心服务:**UserProfileAnalyzeService**(manager)
|
||||||
|
|
||||||
## 4.6️⃣ 邀请模块设计
|
## 9️⃣ 邀请模块设计
|
||||||
### 数据库表(1张)
|
### 数据库表(1张)
|
||||||
| 表名 | 说明 |
|
| 表名 | 说明 |
|
||||||
|------|------|
|
|------|------|
|
||||||
| `bg_user_invite` | 用户邀请记录(记录邀请人与被邀请人的关系及邀请时间) |
|
| `bg_user_invite` | 用户邀请记录(记录邀请人与被邀请人的关系、邀请时间、奖励天数) |
|
||||||
|
|
||||||
### 核心逻辑
|
### 核心逻辑
|
||||||
- 用户注册时自动生成10位邀请码(大写字母+数字),存入 `User.invite_code`,碰撞检查最多重试3次
|
- 用户注册时自动生成10位邀请码(大写字母+数字),存入 `User.invite_code`,碰撞检查最多重试3次
|
||||||
- 注册时可携带 `inviteCode`,有效则写入邀请记录,无效仅日志警告不阻断注册
|
- 注册时可携带 `inviteCode`,有效则写入邀请记录,无效仅日志警告不阻断注册
|
||||||
- 注册逻辑由 `UserRegisterService` 独立承担,`LoginService` 委托调用
|
- 注册逻辑由 `UserRegisterService` 独立承担,`LoginService` 委托调用
|
||||||
|
- 邀请统计由 `UserManageService.getInviteStats()` 提供(累计邀请人数、累计获得会员天数)
|
||||||
|
|
||||||
|
## 🔟 构建与运行
|
||||||
|
- **父 POM**(`back-end/pom.xml`)统一管理子模块的依赖与插件。
|
||||||
|
- 子模块 (`client-api`, `common`, `manager`) 均可单独 `mvn clean install`,生成各自的 jar 包。
|
||||||
|
- **启动入口**:运行 `client-api` 中的 `ClientApplication`,Spring Boot 会自动扫描并加载 `common`(配置、拦截、工具)以及 `manager` 中声明的 Mapper 与 Service。
|
||||||
|
- **条件加载**:多个能力组件使用 `@ConditionalOnProperty` 按配置启用(OSS、SMS、Alipay),未配置时不加载。
|
||||||
|
|
||||||
|
## 1️⃣1️⃣ 小结
|
||||||
|
- 项目采用 **三层结构**:
|
||||||
|
1. **client-api** → C 端 REST 接口 + 功能权限校验 + 路由菜单 + 用户管理 + 会员体系 + 支付回调。
|
||||||
|
2. **manager** → 业务实体、Mapper 与业务 API/Service,B 端 + C 端共享层。
|
||||||
|
3. **common** → 所有层共同依赖的底层设施(配置、工具、拦截、异常、支付、OSS、短信、AI、邮件等)。
|
||||||
|
- 权限体系分两层:前端路由控制菜单可见性,后端切面控制功能点权限与库存扣减。
|
||||||
|
- 会员体系:商品下单 → 支付回调 → `MemberGrantService` 统一发放权益(会员时长 + 功能权限 + 菜单权限)。
|
||||||
|
- 支付双通道:微信Native支付 + 支付宝电脑网站支付,各自独立流水表和回调处理。
|
||||||
|
|||||||
Reference in New Issue
Block a user