From 699cac64d52e8d6ee00f1f406538b7e618b9d557 Mon Sep 17 00:00:00 2001 From: zk Date: Thu, 23 Apr 2026 20:55:08 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0agent=E7=9B=B8=E5=85=B3?= =?UTF-8?q?=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/JobAgentConfigController.java | 36 +++++++++ .../pojo/dto/jobAgent/JobAgentConfigDto.java | 51 +++++++++++++ .../param/jobAgent/JobAgentConfigParam.java | 48 ++++++++++++ .../service/JobAgentConfigService.java | 65 +++++++++++++++++ .../jiayunet/mapper/JobAgentConfigMapper.java | 13 ++++ .../org/jiayunet/pojo/po/JobAgentConfig.java | 73 +++++++++++++++++++ .../org/jiayunet/pojo/vo/LanguageAbility.java | 19 +++++ 7 files changed, 305 insertions(+) create mode 100644 client-api/src/main/java/org/jiayunet/controller/JobAgentConfigController.java create mode 100644 client-api/src/main/java/org/jiayunet/pojo/dto/jobAgent/JobAgentConfigDto.java create mode 100644 client-api/src/main/java/org/jiayunet/pojo/param/jobAgent/JobAgentConfigParam.java create mode 100644 client-api/src/main/java/org/jiayunet/service/JobAgentConfigService.java create mode 100644 manager/src/main/java/org/jiayunet/mapper/JobAgentConfigMapper.java create mode 100644 manager/src/main/java/org/jiayunet/pojo/po/JobAgentConfig.java create mode 100644 manager/src/main/java/org/jiayunet/pojo/vo/LanguageAbility.java diff --git a/client-api/src/main/java/org/jiayunet/controller/JobAgentConfigController.java b/client-api/src/main/java/org/jiayunet/controller/JobAgentConfigController.java new file mode 100644 index 0000000..d1fc46c --- /dev/null +++ b/client-api/src/main/java/org/jiayunet/controller/JobAgentConfigController.java @@ -0,0 +1,36 @@ +package org.jiayunet.controller; + +import org.jiayunet.pojo.dto.jobAgent.JobAgentConfigDto; +import org.jiayunet.pojo.param.jobAgent.JobAgentConfigParam; +import org.jiayunet.service.JobAgentConfigService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +/** + * 求职助手配置接口 + * + * @author zk + */ +@RestController +@RequestMapping("/job-agent") +public class JobAgentConfigController { + + @Autowired + private JobAgentConfigService configService; + + /** + * 查询当前用户的求职助手配置 + */ + @GetMapping("/config") + public JobAgentConfigDto getConfig() { + return configService.getConfig(); + } + + /** + * 保存/更新求职助手配置 + */ + @PostMapping("/config/save") + public void saveConfig(@RequestBody JobAgentConfigParam param) { + configService.saveConfig(param); + } +} diff --git a/client-api/src/main/java/org/jiayunet/pojo/dto/jobAgent/JobAgentConfigDto.java b/client-api/src/main/java/org/jiayunet/pojo/dto/jobAgent/JobAgentConfigDto.java new file mode 100644 index 0000000..afb6e66 --- /dev/null +++ b/client-api/src/main/java/org/jiayunet/pojo/dto/jobAgent/JobAgentConfigDto.java @@ -0,0 +1,51 @@ +package org.jiayunet.pojo.dto.jobAgent; + +import lombok.Data; +import org.jiayunet.pojo.vo.LanguageAbility; + +import java.util.List; + +/** + * 求职助手配置出参 + * + * @author zk + */ +@Data +public class JobAgentConfigDto { + + /** 工作类型 1=实习 2=全职 */ + private Integer jobType; + + /** Agent模式 1=协作模式 2=托管模式 */ + private Integer agentMode; + + /** 每周投递目标数量 1=少于20个 2=20到50个 3=多于50个 */ + private Integer weeklyTarget; + + /** 投递时自动针对岗位优化简历 0=关闭 1=开启 */ + private Integer autoOptimizeResume; + + /** 是否愿意接受部门调剂 */ + private String acceptDeptTransfer; + + /** 是否接受地点调剂 */ + private String acceptLocationTransfer; + + /** 可参加的面试方式 */ + private List interviewType; + + /** 语言能力 */ + private List languages; + + /** 预计到岗时间 */ + private String availableDate; + + /** 每周可实习天数 */ + private String internDaysPerWeek; + + /** 预计实习时长 */ + private String internDuration; + + /** 状态 0=未启用 1=已启用 */ + private Integer status; +} diff --git a/client-api/src/main/java/org/jiayunet/pojo/param/jobAgent/JobAgentConfigParam.java b/client-api/src/main/java/org/jiayunet/pojo/param/jobAgent/JobAgentConfigParam.java new file mode 100644 index 0000000..6112b85 --- /dev/null +++ b/client-api/src/main/java/org/jiayunet/pojo/param/jobAgent/JobAgentConfigParam.java @@ -0,0 +1,48 @@ +package org.jiayunet.pojo.param.jobAgent; + +import lombok.Data; +import org.jiayunet.pojo.vo.LanguageAbility; + +import java.util.List; + +/** + * 求职助手配置入参 + * + * @author zk + */ +@Data +public class JobAgentConfigParam { + + /** 工作类型 1=实习 2=全职 */ + private Integer jobType; + + /** Agent模式 1=协作模式 2=托管模式 */ + private Integer agentMode; + + /** 每周投递目标数量 1=少于20个 2=20到50个 3=多于50个 */ + private Integer weeklyTarget; + + /** 投递时自动针对岗位优化简历 0=关闭 1=开启 */ + private Integer autoOptimizeResume; + + /** 是否愿意接受部门调剂,可选值:是/否 */ + private String acceptDeptTransfer; + + /** 是否接受地点调剂,可选值:是/否 */ + private String acceptLocationTransfer; + + /** 可参加的面试方式,可选值:线下面试/线上远程 */ + private List interviewType; + + /** 语言能力 */ + private List languages; + + /** 预计到岗时间,可选值:一周以内/两周以内/一个月以内/一个月以上 */ + private String availableDate; + + /** 每周可实习天数,可选值:3天及以上/4天及以上/5天及以上 */ + private String internDaysPerWeek; + + /** 预计实习时长,可选值:3个月/4个月/5个月/6个月及以上 */ + private String internDuration; +} diff --git a/client-api/src/main/java/org/jiayunet/service/JobAgentConfigService.java b/client-api/src/main/java/org/jiayunet/service/JobAgentConfigService.java new file mode 100644 index 0000000..77d7133 --- /dev/null +++ b/client-api/src/main/java/org/jiayunet/service/JobAgentConfigService.java @@ -0,0 +1,65 @@ +package org.jiayunet.service; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import org.jiayunet.mapper.JobAgentConfigMapper; +import org.jiayunet.pojo.dto.jobAgent.JobAgentConfigDto; +import org.jiayunet.pojo.param.jobAgent.JobAgentConfigParam; +import org.jiayunet.pojo.po.JobAgentConfig; +import org.jiayunet.tool.UserSecurityTool; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.time.Instant; + +/** + * 求职助手配置服务 + *

主要功能:求职助手配置的查询和保存

+ *

使用表:bg_job_agent_config(查询/新增/更新)

+ * + * @author zk + */ +@Service +public class JobAgentConfigService { + + @Autowired + private JobAgentConfigMapper configMapper; + + /** + * 查询当前用户的求职助手配置 + *

根据userId查询,不存在返回null

+ */ + public JobAgentConfigDto getConfig() { + Long userId = UserSecurityTool.getUserId(); + JobAgentConfig po = configMapper.selectOne(new LambdaQueryWrapper().eq(JobAgentConfig::getUserId, userId)); + if (po == null) { + return null; + } + JobAgentConfigDto dto = new JobAgentConfigDto(); + BeanUtils.copyProperties(po, dto); + return dto; + } + + /** + * 保存/更新求职助手配置 + *

先查询是否存在,存在则更新业务字段,不存在则新增(status默认0=未启用)

+ */ + public void saveConfig(JobAgentConfigParam param) { + Long userId = UserSecurityTool.getUserId(); + JobAgentConfig po = configMapper.selectOne(new LambdaQueryWrapper().eq(JobAgentConfig::getUserId, userId)); + + if (po == null) { + po = new JobAgentConfig(); + po.setUserId(userId); + BeanUtils.copyProperties(param, po); + po.setStatus(0); + po.setCreateTime(Instant.now()); + po.setUpdateTime(Instant.now()); + configMapper.insert(po); + } else { + BeanUtils.copyProperties(param, po); + po.setUpdateTime(Instant.now()); + configMapper.updateById(po); + } + } +} diff --git a/manager/src/main/java/org/jiayunet/mapper/JobAgentConfigMapper.java b/manager/src/main/java/org/jiayunet/mapper/JobAgentConfigMapper.java new file mode 100644 index 0000000..6dfb677 --- /dev/null +++ b/manager/src/main/java/org/jiayunet/mapper/JobAgentConfigMapper.java @@ -0,0 +1,13 @@ +package org.jiayunet.mapper; + +import org.apache.ibatis.annotations.Mapper; +import org.jiayunet.pojo.po.JobAgentConfig; + +/** + * 求职助手配置Mapper + * + * @author zk + */ +@Mapper +public interface JobAgentConfigMapper extends CommonMapper { +} diff --git a/manager/src/main/java/org/jiayunet/pojo/po/JobAgentConfig.java b/manager/src/main/java/org/jiayunet/pojo/po/JobAgentConfig.java new file mode 100644 index 0000000..f69f330 --- /dev/null +++ b/manager/src/main/java/org/jiayunet/pojo/po/JobAgentConfig.java @@ -0,0 +1,73 @@ +package org.jiayunet.pojo.po; + +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 lombok.Data; +import org.jiayunet.pojo.vo.LanguageAbility; + +import java.time.Instant; +import java.util.List; + +/** + * 求职助手配置表(bg_job_agent_config) + *

一个用户一条记录,存储Agent设置和网申常见问题的预设答案

+ * + * @author zk + */ +@Data +@TableName(value = "bg_job_agent_config", autoResultMap = true) +public class JobAgentConfig { + + @TableId(type = IdType.ASSIGN_ID) + private Long id; + + /** 用户ID */ + private Long userId; + + /** 工作类型 1=实习 2=全职 */ + private Integer jobType; + + /** Agent模式 1=协作模式 2=托管模式 */ + private Integer agentMode; + + /** 每周投递目标数量 1=少于20个 2=20到50个 3=多于50个 */ + private Integer weeklyTarget; + + /** 投递时自动针对岗位优化简历 0=关闭 1=开启 */ + private Integer autoOptimizeResume; + + /** 是否愿意接受部门调剂,可选值:是/否 */ + private String acceptDeptTransfer; + + /** 是否接受地点调剂,可选值:是/否 */ + private String acceptLocationTransfer; + + /** 可参加的面试方式,JSON字符串数组,可选值:线下面试/线上远程 */ + @TableField(typeHandler = JacksonTypeHandler.class) + private List interviewType; + + /** 语言能力,JSON对象数组,每项含language(语种)和proficiency(掌握程度) */ + @TableField(typeHandler = JacksonTypeHandler.class) + private List languages; + + /** 预计到岗时间,可选值:一周以内/两周以内/一个月以内/一个月以上 */ + private String availableDate; + + /** 每周可实习天数,仅job_type=1时填写,可选值:3天及以上/4天及以上/5天及以上 */ + private String internDaysPerWeek; + + /** 预计实习时长,仅job_type=1时填写,可选值:3个月/4个月/5个月/6个月及以上 */ + private String internDuration; + + /** 状态 0=未启用 1=已启用 */ + private Integer status; + + /** 创建时间 */ + private Instant createTime; + + /** 更新时间 */ + private Instant updateTime; +} diff --git a/manager/src/main/java/org/jiayunet/pojo/vo/LanguageAbility.java b/manager/src/main/java/org/jiayunet/pojo/vo/LanguageAbility.java new file mode 100644 index 0000000..d161e50 --- /dev/null +++ b/manager/src/main/java/org/jiayunet/pojo/vo/LanguageAbility.java @@ -0,0 +1,19 @@ +package org.jiayunet.pojo.vo; + +import lombok.Data; + +/** + * 语言能力对象 + *

用于求职助手配置中的语言能力JSON字段

+ * + * @author zk + */ +@Data +public class LanguageAbility { + + /** 语种,如英语、日语、法语等 */ + private String language; + + /** 掌握程度,可选值:入门/日常会话/商务会话/无障碍沟通/母语 */ + private String proficiency; +}