Browse Source

1、增加个人信息-简历相关接口

rayson 1 year ago
parent
commit
a5915dfac4
56 changed files with 1370 additions and 55 deletions
  1. 19 0
      menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/ErrorCodeConstants.java
  2. 2 2
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/job/vo/JobInterestedPageReqVO.java
  3. 2 2
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/job/vo/JobInterestedRespVO.java
  4. 2 2
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/job/vo/JobInterestedSaveReqVO.java
  5. 6 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/person/vo/info/PersonInfoPageReqVO.java
  6. 8 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/person/vo/info/PersonInfoRespVO.java
  7. 6 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/person/vo/info/PersonInfoSaveReqVO.java
  8. 2 2
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/person/AppPersonController.java
  9. 230 2
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/person/AppPersonResumeController.java
  10. 52 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/person/eduexp/AppEduExpRespVO.java
  11. 46 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/person/job/AppJobInterestedRespVO.java
  12. 43 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/person/job/AppJobInterestedSaveReqVO.java
  13. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/person/job/AppPersonJobFavoriteReqVO.java
  14. 33 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/person/projectexp/AppProjectExpRespVO.java
  15. 15 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/person/resume/AppPersonAdvantageSaveReqVO.java
  16. 61 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/person/resume/AppPersonInfoSaveReqVO.java
  17. 37 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/person/trainexp/AppTrainExpRespVO.java
  18. 3 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/person/vo/AppPersonBrowseRecordPageRespVO.java
  19. 10 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/person/vo/AppPersonInfoRespVO.java
  20. 28 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/person/vo/AppPersonSkillRespVO.java
  21. 21 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/person/vo/AppPersonSkillSaveReqVO.java
  22. 64 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/person/workexp/AppWorkExpRespVO.java
  23. 16 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/convert/EduExpConvert.java
  24. 16 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/convert/JobInterestedConvert.java
  25. 16 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/convert/PersonConvert.java
  26. 16 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/convert/ProjectExpConvert.java
  27. 16 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/convert/TrainExpConvert.java
  28. 16 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/convert/WorkExpConvert.java
  29. 7 3
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/job/JobInterestedDO.java
  30. 8 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/person/PersonInfoDO.java
  31. 12 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/eduexp/EduExpMapper.java
  32. 12 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/job/JobInterestedMapper.java
  33. 12 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/person/PersonSkillMapper.java
  34. 13 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/projectexp/ProjectExpMapper.java
  35. 13 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/trainexp/TrainExpMapper.java
  36. 20 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/workexp/WorkExpMapper.java
  37. 23 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/eduexp/EduExpService.java
  38. 36 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/eduexp/EduExpServiceImpl.java
  39. 25 3
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/job/JobInterestedService.java
  40. 43 6
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/job/JobInterestedServiceImpl.java
  41. 2 2
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/person/favorite/PersonJobFavoriteService.java
  42. 2 2
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/person/favorite/PersonJobFavoriteServiceImpl.java
  43. 21 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/person/info/PersonInfoService.java
  44. 36 3
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/person/info/PersonInfoServiceImpl.java
  45. 23 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/person/skill/PersonSkillService.java
  46. 43 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/person/skill/PersonSkillServiceImpl.java
  47. 23 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/projectexp/ProjectExpService.java
  48. 45 11
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/projectexp/ProjectExpServiceImpl.java
  49. 23 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/trainexp/TrainExpService.java
  50. 38 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/trainexp/TrainExpServiceImpl.java
  51. 24 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/workexp/WorkExpService.java
  52. 43 7
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/workexp/WorkExpServiceImpl.java
  53. 16 0
      menduner/menduner-system-biz/src/main/resources/i18n/messages_en_US.properties
  54. 17 1
      menduner/menduner-system-biz/src/main/resources/i18n/messages_zh_CN.properties
  55. 0 1
      menduner/menduner-system-biz/src/main/resources/i18n/messages_zh_HK.properties
  56. 3 3
      menduner/menduner-system-biz/src/test/java/com/citu/module/menduner/system/service/person/PersonSkillServiceImplTest.java

+ 19 - 0
menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/ErrorCodeConstants.java

@@ -12,6 +12,17 @@ public interface ErrorCodeConstants {
 
     // ========== 人员信息-个人档案 1_100_001_000 ==========
     ErrorCode MDE_USER_INFO_NOT_EXISTS = new ErrorCode(1_100_001_001, "人员信息-个人档案不存在");
+    ErrorCode MDE_PERSON_ADVANTAGE_NOT_EXISTS = new ErrorCode(1_100_001_002, "个人优势不能为空");
+    ErrorCode MDE_PERSON_NAME_NOT_EXISTS = new ErrorCode(1_100_001_003, "真实姓名不能为空");
+    ErrorCode MDE_PERSON_PHONE_NOT_EXISTS = new ErrorCode(1_100_001_004, "联系手机号不能为空");
+    ErrorCode MDE_PERSON_BIRTHDAY_NOT_EXISTS = new ErrorCode(1_100_001_005, "出生日期不能为空");
+    ErrorCode MDE_PERSON_EXP_TYPE_NOT_EXISTS = new ErrorCode(1_100_001_006, "工作经验不能为空");
+    ErrorCode MDE_PERSON_EDU_TYPE_NOT_EXISTS = new ErrorCode(1_100_001_007, "学历不能为空");
+    ErrorCode MDE_PERSON_JOB_STATUS_NOT_EXISTS = new ErrorCode(1_100_001_008, "求职状态不能为空");
+    ErrorCode MDE_PERSON_AREA_ID_NOT_EXISTS = new ErrorCode(1_100_001_009, "所在城市不能为空");
+    ErrorCode MDE_PERSON_EMAIL_NOT_EXISTS = new ErrorCode(1_100_001_010, "常用邮箱不能为空");
+    ErrorCode MDE_PERSON_INFO_NOT_EXISTS = new ErrorCode(1_100_001_011, "请先填写个人基本信息");
+
 
     // ========== 行业信息 1_100_002_000 ==========
     ErrorCode MDE_INDUSTRY_NOT_EXISTS = new ErrorCode(1_100_002_001, "行业信息不存在");
@@ -39,6 +50,14 @@ public interface ErrorCodeConstants {
     // ========== 求职意向 1_100_007_000 ==========
     ErrorCode MDE_JOB_INTERESTED_NOT_EXISTS = new ErrorCode(1_100_007_001, "求职意向不存在");
 
+    ErrorCode MDE_JOB_INTERESTED_POSITION_ID_NOT_EXISTS = new ErrorCode(1_100_007_002, "未选择期望职位");
+    ErrorCode MDE_JOB_INTERESTED_INDUSTRY_ID_LIST_NOT_EXISTS = new ErrorCode(1_100_007_003, "未选择期望行业");
+    ErrorCode MDE_JOB_INTERESTED_JOB_TYPE_NOT_EXISTS = new ErrorCode(1_100_007_004, "未选择求职类型");
+    ErrorCode MDE_JOB_INTERESTED_PAY_FROM_NOT_EXISTS = new ErrorCode(1_100_007_005, "未填写薪酬最低要求");
+    ErrorCode MDE_JOB_INTERESTED_PAY_TO_NOT_EXISTS = new ErrorCode(1_100_007_006, "未填写薪酬最高要求");
+    ErrorCode MDE_JOB_INTERESTED_WORK_AREA_ID_NOT_EXISTS = new ErrorCode(1_100_007_007, "未选择工作城市");
+
+
     // ========== 专业 1_100_008_000 ==========
     ErrorCode MDE_MAJOR_NOT_EXISTS = new ErrorCode(1_100_008_001, "专业不存在");
 

+ 2 - 2
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/job/vo/JobInterestedPageReqVO.java

@@ -26,7 +26,7 @@ public class JobInterestedPageReqVO extends PageParam {
     private Long positionId;
 
     @Schema(description = "期望行业")
-    private String industryIdList;
+    private List<String> industryIdList;
 
     @Schema(description = "薪酬最低要求")
     private BigDecimal payFrom;
@@ -38,7 +38,7 @@ public class JobInterestedPageReqVO extends PageParam {
     private Long workAreaId;
 
     @Schema(description = "感兴趣城市")
-    private String interestedAreaIdList;
+    private List<String> interestedAreaIdList;
 
     @Schema(description = "创建时间")
     @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)

+ 2 - 2
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/job/vo/JobInterestedRespVO.java

@@ -37,7 +37,7 @@ public class JobInterestedRespVO {
 
     @Schema(description = "期望行业")
     @ExcelProperty("期望行业")
-    private String industryIdList;
+    private List<String> industryIdList;
 
     @Schema(description = "薪酬最低要求")
     @ExcelProperty("薪酬最低要求")
@@ -53,7 +53,7 @@ public class JobInterestedRespVO {
 
     @Schema(description = "感兴趣城市")
     @ExcelProperty("感兴趣城市")
-    private String interestedAreaIdList;
+    private List<String> interestedAreaIdList;
 
     @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
     @ExcelProperty("创建时间")

+ 2 - 2
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/job/vo/JobInterestedSaveReqVO.java

@@ -23,7 +23,7 @@ public class JobInterestedSaveReqVO {
     private Long positionId;
 
     @Schema(description = "期望行业")
-    private String industryIdList;
+    private List<String> industryIdList;
 
     @Schema(description = "薪酬最低要求")
     private BigDecimal payFrom;
@@ -35,6 +35,6 @@ public class JobInterestedSaveReqVO {
     private Long workAreaId;
 
     @Schema(description = "感兴趣城市")
-    private String interestedAreaIdList;
+    private List<String> interestedAreaIdList;
 
 }

+ 6 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/person/vo/info/PersonInfoPageReqVO.java

@@ -59,6 +59,12 @@ public class PersonInfoPageReqVO extends PageParam {
     @Schema(description = "个人优势")
     private String advantage;
 
+    @Schema(description = "工作经验", example = "1")
+    private Integer expType;
+
+    @Schema(description = "学历", example = "2")
+    private Integer eduType;
+
     @Schema(description = "创建时间")
     @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
     private LocalDateTime[] createTime;

+ 8 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/person/vo/info/PersonInfoRespVO.java

@@ -72,6 +72,14 @@ public class PersonInfoRespVO {
     @ExcelProperty("个人优势")
     private String advantage;
 
+    @Schema(description = "工作经验", example = "1")
+    @ExcelProperty("工作经验")
+    private Integer expType;
+
+    @Schema(description = "学历", example = "2")
+    @ExcelProperty("学历")
+    private Integer eduType;
+
     @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
     @ExcelProperty("创建时间")
     private LocalDateTime createTime;

+ 6 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/person/vo/info/PersonInfoSaveReqVO.java

@@ -53,4 +53,10 @@ public class PersonInfoSaveReqVO {
 
     @Schema(description = "个人优势")
     private String advantage;
+
+    @Schema(description = "工作经验", example = "1")
+    private Integer expType;
+
+    @Schema(description = "学历", example = "2")
+    private Integer eduType;
 }

+ 2 - 2
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/person/AppPersonController.java

@@ -5,7 +5,7 @@ import com.citu.framework.common.util.object.BeanUtils;
 import com.citu.framework.security.core.annotations.PreAuthenticated;
 import com.citu.module.menduner.system.controller.admin.person.vo.info.PersonInfoRespVO;
 import com.citu.module.menduner.system.controller.app.person.enterprise.PersonEnterpriseSubscribeReqVO;
-import com.citu.module.menduner.system.controller.app.person.job.PersonJobFavoriteReqVO;
+import com.citu.module.menduner.system.controller.app.person.job.AppPersonJobFavoriteReqVO;
 import com.citu.module.menduner.system.dal.dataobject.person.PersonInfoDO;
 import com.citu.module.menduner.system.service.person.favorite.PersonJobFavoriteService;
 import com.citu.module.menduner.system.service.person.info.PersonInfoService;
@@ -50,7 +50,7 @@ public class AppPersonController {
     @PreAuthenticated
     @PostMapping("/job/favorite")
     @Operation(summary = "用户收藏职位")
-    public CommonResult<Boolean> favorite(@Valid @RequestBody PersonJobFavoriteReqVO reqVO) {
+    public CommonResult<Boolean> favorite(@Valid @RequestBody AppPersonJobFavoriteReqVO reqVO) {
         Boolean result = jobFavoriteService.favorite(reqVO);
         return success(result);
     }

+ 230 - 2
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/person/AppPersonResumeController.java

@@ -1,10 +1,46 @@
 package com.citu.module.menduner.system.controller.app.person;
 
+import com.citu.framework.common.pojo.CommonResult;
+import com.citu.framework.security.core.annotations.PreAuthenticated;
+import com.citu.module.menduner.system.controller.app.person.eduexp.AppEduExpRespVO;
+import com.citu.module.menduner.system.controller.app.person.eduexp.AppEduExpSaveReqVO;
+import com.citu.module.menduner.system.controller.app.person.job.AppJobInterestedRespVO;
+import com.citu.module.menduner.system.controller.app.person.job.AppJobInterestedSaveReqVO;
+import com.citu.module.menduner.system.controller.app.person.projectexp.AppProjectExpRespVO;
+import com.citu.module.menduner.system.controller.app.person.projectexp.AppProjectExpSaveReqVO;
+import com.citu.module.menduner.system.controller.app.person.resume.AppPersonAdvantageSaveReqVO;
+import com.citu.module.menduner.system.controller.app.person.resume.AppPersonInfoSaveReqVO;
+import com.citu.module.menduner.system.controller.app.person.trainexp.AppTrainExpRespVO;
+import com.citu.module.menduner.system.controller.app.person.trainexp.AppTrainExpSaveReqVO;
+import com.citu.module.menduner.system.controller.app.person.vo.AppPersonSkillRespVO;
+import com.citu.module.menduner.system.controller.app.person.vo.AppPersonSkillSaveReqVO;
+import com.citu.module.menduner.system.controller.app.person.workexp.AppWorkExpRespVO;
+import com.citu.module.menduner.system.controller.app.person.workexp.AppWorkExpSaveReqVO;
+import com.citu.module.menduner.system.convert.*;
+import com.citu.module.menduner.system.dal.dataobject.eduexp.EduExpDO;
+import com.citu.module.menduner.system.dal.dataobject.job.JobInterestedDO;
+import com.citu.module.menduner.system.dal.dataobject.person.PersonSkillDO;
+import com.citu.module.menduner.system.dal.dataobject.projectexp.ProjectExpDO;
+import com.citu.module.menduner.system.dal.dataobject.trainexp.TrainExpDO;
+import com.citu.module.menduner.system.dal.dataobject.workexp.WorkExpDO;
+import com.citu.module.menduner.system.service.eduexp.EduExpService;
+import com.citu.module.menduner.system.service.job.JobInterestedService;
+import com.citu.module.menduner.system.service.person.info.PersonInfoService;
+import com.citu.module.menduner.system.service.person.skill.PersonSkillService;
+import com.citu.module.menduner.system.service.projectexp.ProjectExpService;
+import com.citu.module.menduner.system.service.trainexp.TrainExpService;
+import com.citu.module.menduner.system.service.workexp.WorkExpService;
+import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.validation.Valid;
+import java.util.List;
+
+import static com.citu.framework.common.pojo.CommonResult.success;
 
 @Tag(name = "用户端 - 人才简历")
 @RestController
@@ -13,5 +49,197 @@ import org.springframework.web.bind.annotation.RestController;
 @Slf4j
 public class AppPersonResumeController {
 
+    @Resource
+    private PersonInfoService personInfoService;
+
+    @Resource
+    private JobInterestedService jobInterestedService;
+
+    @Resource
+    private EduExpService eduExpService;
+
+    @Resource
+    private WorkExpService workExpService;
+
+    @Resource
+    private ProjectExpService projectExpService;
+
+    @Resource
+    private TrainExpService trainExpService;
+
+    @Resource
+    private PersonSkillService personSkillService;
+
+    @PreAuthenticated
+    @PostMapping("/save/info")
+    @Operation(summary = "保存基本信息")
+    public CommonResult<Boolean> saveInfo(@Valid @RequestBody AppPersonInfoSaveReqVO reqVO) {
+        return success(personInfoService.saveInfo(reqVO));
+    }
+
+
+    // ========== 个人优势 ==========
+
+    @PreAuthenticated
+    @PostMapping("/save/advantage")
+    @Operation(summary = "保存个人优势")
+    public CommonResult<Boolean> saveAdvantage(@Valid @RequestBody AppPersonAdvantageSaveReqVO reqVO) {
+        return success(personInfoService.saveAdvantage(reqVO));
+    }
+
+
+    // ========== 求职意向 ==========
+
+    @PreAuthenticated
+    @PostMapping("/save/job/interested")
+    @Operation(summary = "保存求职意向")
+    public CommonResult<Boolean> saveJobInterested(@Valid @RequestBody AppJobInterestedSaveReqVO reqVO) {
+        return success(jobInterestedService.saveJobInterested(reqVO));
+    }
+
+    @PreAuthenticated
+    @DeleteMapping("/remove/job/interested")
+    @Operation(summary = "移除求职意向")
+    public CommonResult<Boolean> removeJobInterested(@RequestParam("id") Long id) {
+        jobInterestedService.removeJobInterested(id);
+        return success(true);
+    }
+
+    @PreAuthenticated
+    @GetMapping("/get/job/interested")
+    @Operation(summary = "获取求职意向")
+    public CommonResult<List<AppJobInterestedRespVO>> getJobInterestedList() {
+        List<JobInterestedDO> list = jobInterestedService.getJobInterestedList();
+        return success(JobInterestedConvert.INSTANCE.convertList(list));
+    }
+
+
+    // ========== 教育经历 ==========
+
+    @PreAuthenticated
+    @PostMapping("/save/edu/exp")
+    @Operation(summary = "保存教育经历")
+    public CommonResult<Boolean> saveEduExp(@Valid @RequestBody AppEduExpSaveReqVO reqVO) {
+        return success(eduExpService.saveEduExp(reqVO));
+    }
+
+    @PreAuthenticated
+    @DeleteMapping("/remove/edu/exp")
+    @Operation(summary = "移除教育经历")
+    public CommonResult<Boolean> removeEduExp(@RequestParam("id") Long id) {
+        eduExpService.removeEduExp(id);
+        return success(true);
+    }
+
+    @PreAuthenticated
+    @GetMapping("/get/edu/exp")
+    @Operation(summary = "获取教育经历")
+    public CommonResult<List<AppEduExpRespVO>> getEduExp() {
+        List<EduExpDO> list = eduExpService.getEduExpList();
+        return success(EduExpConvert.INSTANCE.convertList(list));
+    }
+
+
+    // ========== 工作经历 ==========
+
+    @PreAuthenticated
+    @PostMapping("/save/work/exp")
+    @Operation(summary = "保存工作经历")
+    public CommonResult<Boolean> saveWorkExp(@Valid @RequestBody AppWorkExpSaveReqVO reqVO) {
+        return success(workExpService.saveWorkExp(reqVO));
+    }
+
+    @PreAuthenticated
+    @DeleteMapping("/remove/work/exp")
+    @Operation(summary = "移除工作经历")
+    public CommonResult<Boolean> removeWorkExp(@RequestParam("id") Long id) {
+        workExpService.removeWorkExp(id);
+        return success(true);
+    }
+
+    @PreAuthenticated
+    @GetMapping("/get/work/exp")
+    @Operation(summary = "获取工作经历")
+    public CommonResult<List<AppWorkExpRespVO>> getWorkExp() {
+        List<WorkExpDO> list = workExpService.getWorkExpList();
+        return success(WorkExpConvert.INSTANCE.convertList(list));
+    }
+
+    // ========== 项目经历 ==========
+
+    @PreAuthenticated
+    @PostMapping("/save/project/exp")
+    @Operation(summary = "保存项目经历")
+    public CommonResult<Boolean> saveProjectExp(@Valid @RequestBody AppProjectExpSaveReqVO reqVO) {
+        return success(projectExpService.saveProjectExp(reqVO));
+    }
+
+    @PreAuthenticated
+    @DeleteMapping("/remove/project/exp")
+    @Operation(summary = "移除项目经历")
+    public CommonResult<Boolean> removeProjectExp(@RequestParam("id") Long id) {
+        projectExpService.removeProjectExp(id);
+        return success(true);
+    }
+
+    @PreAuthenticated
+    @GetMapping("/get/project/exp")
+    @Operation(summary = "获取项目经历")
+    public CommonResult<List<AppProjectExpRespVO>> getProjectExp() {
+        List<ProjectExpDO> list = projectExpService.getProjectExpList();
+        return success(ProjectExpConvert.INSTANCE.convertList(list));
+    }
+
+
+    // ========== 培训经历 ==========
+
+    @PreAuthenticated
+    @PostMapping("/save/train/exp")
+    @Operation(summary = "保存培训经历")
+    public CommonResult<Boolean> saveTrainExp(@Valid @RequestBody AppTrainExpSaveReqVO reqVO) {
+        return success(trainExpService.saveTrainExp(reqVO));
+    }
+
+    @PreAuthenticated
+    @DeleteMapping("/remove/train/exp")
+    @Operation(summary = "移除培训经历")
+    public CommonResult<Boolean> removeTrainExp(@RequestParam("id") Long id) {
+        trainExpService.removeTrainExp(id);
+        return success(true);
+    }
+
+    @PreAuthenticated
+    @GetMapping("/get/train/exp")
+    @Operation(summary = "获取培训经历")
+    public CommonResult<List<AppTrainExpRespVO>> getTrainExp() {
+        List<TrainExpDO> list = trainExpService.getTrainExpList();
+        return success(TrainExpConvert.INSTANCE.convertList(list));
+    }
+
+
+    // ========== 职业技能 ==========
+
+    @PreAuthenticated
+    @PostMapping("/save/person/skill")
+    @Operation(summary = "保存职业技能")
+    public CommonResult<Boolean> savePersonSkill(@Valid @RequestBody AppPersonSkillSaveReqVO reqVO) {
+        return success(personSkillService.savePersonSkill(reqVO));
+    }
+
+    @PreAuthenticated
+    @DeleteMapping("/remove/person/skill")
+    @Operation(summary = "移除职业技能")
+    public CommonResult<Boolean> removePersonSkill(@RequestParam("id") Long id) {
+        personSkillService.removePersonSkill(id);
+        return success(true);
+    }
+
+    @PreAuthenticated
+    @GetMapping("/get/person/skill")
+    @Operation(summary = "获取职业技能")
+    public CommonResult<List<AppPersonSkillRespVO>> getPersonSkill() {
+        List<PersonSkillDO> list = personSkillService.getPersonSkillList();
+        return success(PersonConvert.INSTANCE.convertList(list));
+    }
 
 }

+ 52 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/person/eduexp/AppEduExpRespVO.java

@@ -0,0 +1,52 @@
+package com.citu.module.menduner.system.controller.app.person.eduexp;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+
+@Data
+@Schema(description = "menduner - 教育经历 Response VO")
+public class AppEduExpRespVO {
+
+    @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "24831")
+    private Long id;
+
+    @Schema(description = "用户id", example = "30034")
+    private Long userId;
+
+    @Schema(description = "学校id", example = "926")
+    private Long schoolId;
+
+    @Schema(description = "学校名称(没有选择系统企业可自定义)", example = "李四")
+    private String schoolName;
+
+    @Schema(description = "学历(0初中及以下 | 1中专/中技 | 2高中 | 3大专 | 4 本科 5 硕士 6 博士 99 其他)", example = "2")
+    private Integer educationType;
+
+    @Schema(description = "学制类型(0 全日制 | 1 非全日制)", example = "1")
+    private Integer educationSystemType;
+
+    @Schema(description = "专业id", example = "30649")
+    private Long majorId;
+
+    @Schema(description = "专业名称(没有选择系统企业可自定义)")
+    private String major;
+
+    @Schema(description = "在校开始日期")
+    private LocalDateTime startTime;
+
+    @Schema(description = "在校结束时间")
+    private LocalDateTime endTime;
+
+    @Schema(description = "在校经历")
+    private String content;
+
+    @Schema(description = "创建时间")
+    private LocalDateTime createTime;
+
+    @Schema(description = "更新时间")
+    private LocalDateTime updateTime;
+
+}

+ 46 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/person/job/AppJobInterestedRespVO.java

@@ -0,0 +1,46 @@
+package com.citu.module.menduner.system.controller.app.person.job;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.util.List;
+
+@Schema(description = "menduner - 求职意向 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class AppJobInterestedRespVO {
+
+    @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "19777")
+    private Long id;
+
+    @Schema(description = "求职类型(0全职 1兼职 2临时 3实习)", example = "2")
+    private Integer jobType;
+
+    @Schema(description = "期望职位", example = "20359")
+    private Long positionId;
+
+    @Schema(description = "期望行业")
+    private List<String> industryIdList;
+
+    @Schema(description = "薪酬最低要求")
+    private BigDecimal payFrom;
+
+    @Schema(description = "薪酬最高要求")
+    private BigDecimal payTo;
+
+    @Schema(description = "工作城市", example = "15253")
+    private Long workAreaId;
+
+    @Schema(description = "感兴趣城市")
+    private List<String> interestedAreaIdList;
+
+    @Schema(description = "创建时间")
+    private LocalDateTime createTime;
+
+    @Schema(description = "更新时间")
+    private LocalDateTime updateTime;
+
+}

+ 43 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/person/job/AppJobInterestedSaveReqVO.java

@@ -0,0 +1,43 @@
+package com.citu.module.menduner.system.controller.app.person.job;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+import java.util.List;
+
+@Data
+@Schema(description = "menduner 人才简历-求职意向 Request VO")
+public class AppJobInterestedSaveReqVO {
+
+    @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "19777")
+    private Long id;
+
+    @NotNull(message = "{1_100_007_002}")
+    @Schema(description = "期望职位", example = "20359")
+    private Long positionId;
+
+    @NotNull(message = "{1_100_007_003}")
+    @Schema(description = "期望行业")
+    private List<String> industryIdList;
+
+    @NotNull(message = "{1_100_007_004}")
+    @Schema(description = "求职类型(0全职 1兼职 2临时 3实习)", example = "2")
+    private Integer jobType;
+
+    @NotNull(message = "{1_100_007_005}")
+    @Schema(description = "薪酬最低要求")
+    private BigDecimal payFrom;
+
+    @NotNull(message = "{1_100_007_006}")
+    @Schema(description = "薪酬最高要求")
+    private BigDecimal payTo;
+
+    @NotNull(message = "{1_100_007_007}")
+    @Schema(description = "工作城市", example = "15253")
+    private Long workAreaId;
+
+    @Schema(description = "其他感兴趣城市")
+    private List<String> interestedAreaIdList;
+}

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/person/job/PersonJobFavoriteReqVO.java → menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/person/job/AppPersonJobFavoriteReqVO.java

@@ -5,7 +5,7 @@ import lombok.Data;
 
 @Schema(description = "menduner 用户收藏职位 Request VO")
 @Data
-public class PersonJobFavoriteReqVO {
+public class AppPersonJobFavoriteReqVO {
 
     @Schema(description = "职位id", example = "19293")
     private Long jobId;

+ 33 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/person/projectexp/AppProjectExpRespVO.java

@@ -0,0 +1,33 @@
+package com.citu.module.menduner.system.controller.app.person.projectexp;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
+@Data
+@Schema(description = "menduner - 个人简历-项目经历 Response VO")
+public class AppProjectExpRespVO {
+
+    @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "6114")
+    private Long id;
+
+    @Schema(description = "项目名称", example = "王五")
+    private String name;
+
+    @Schema(description = "项目开始时间")
+    private LocalDate startTime;
+
+    @Schema(description = "项目结束时间")
+    private LocalDate endTime;
+
+    @Schema(description = "描述内容")
+    private String content;
+
+    @Schema(description = "创建时间")
+    private LocalDateTime createTime;
+
+    @Schema(description = "更新时间")
+    private LocalDateTime updateTime;
+}

+ 15 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/person/resume/AppPersonAdvantageSaveReqVO.java

@@ -0,0 +1,15 @@
+package com.citu.module.menduner.system.controller.app.person.resume;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+
+@Data
+@Schema(description = "menduner 人才简历-个人优势 Request VO")
+public class AppPersonAdvantageSaveReqVO {
+
+    @NotBlank(message = "{1_100_001_002}")
+    @Schema(description = "个人优势", example = "我是个人优势")
+    private String content;
+}

+ 61 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/person/resume/AppPersonInfoSaveReqVO.java

@@ -0,0 +1,61 @@
+package com.citu.module.menduner.system.controller.app.person.resume;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.time.LocalDateTime;
+
+@Data
+@Schema(description = "menduner 人才简历-基本信息 Request VO")
+public class AppPersonInfoSaveReqVO {
+
+    @NotBlank(message = "{1_100_001_003}")
+    @Schema(description = "真实姓名", example = "王五")
+    private String name;
+
+    @Schema(description = "用户性别")
+    private Integer sex;
+
+    @Schema(description = "头像地址")
+    private String avatar;
+
+    @NotBlank(message = "{1_100_001_004}")
+    @Schema(description = "联系手机号")
+    private String phone;
+
+    @NotBlank(message = "{1_100_001_010}")
+    @Schema(description = "常用邮箱")
+    private String email;
+
+    @NotNull(message = "{1_100_001_005}")
+    @Schema(description = "出生日期")
+    private LocalDateTime birthday;
+
+    @Schema(description = "婚姻状况(0未婚 1已婚 2离异 3保密)", example = "1")
+    private Integer maritalStatus;
+
+    @NotBlank(message = "{1_100_001_009}")
+    @Schema(description = "所在城市", example = "8366")
+    private Long areaId;
+
+    @Schema(description = "求职类型(0全职 1兼职 2临时 3实习)", example = "1")
+    private Integer jobType;
+
+    @NotBlank(message = "{1_100_001_008}")
+    @Schema(description = "求职状态(0离职-随时到岗 1在职-月内到岗 2在职-考虑机会 3在职-暂不考虑)", example = "1")
+    private Integer jobStatus;
+
+    @Schema(description = "首次工作时间")
+    private LocalDateTime firstWorkTime;
+
+    @NotNull(message = "{1_100_001_006}")
+    @Schema(description = "工作经验", example = "1")
+    private Integer expType;
+
+    @NotNull(message = "{1_100_001_007}")
+    @Schema(description = "学历", example = "2")
+    private Integer eduType;
+
+}

+ 37 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/person/trainexp/AppTrainExpRespVO.java

@@ -0,0 +1,37 @@
+package com.citu.module.menduner.system.controller.app.person.trainexp;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
+@Data
+@Schema(description = "menduner - 培训经历 Response VO")
+public class AppTrainExpRespVO {
+
+    @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "27649")
+    private Long id;
+
+    @Schema(description = "培训开始时间")
+    private LocalDate startTime;
+
+    @Schema(description = "培训结束时间")
+    private LocalDate endTime;
+
+    @Schema(description = "培训机构名称", example = "芋艿")
+    private String orgName;
+
+    @Schema(description = "培训课程")
+    private String course;
+
+    @Schema(description = "描述说明")
+    private String content;
+
+    @Schema(description = "创建时间")
+    private LocalDateTime createTime;
+
+    @Schema(description = "更新时间")
+    private LocalDateTime updateTime;
+
+}

+ 3 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/person/vo/AppPersonBrowseRecordPageRespVO.java

@@ -81,4 +81,7 @@ public class AppPersonBrowseRecordPageRespVO {
 
     @Schema(description = "创建时间")
     private LocalDateTime createTime;
+
+    @Schema(description = "更新时间")
+    private LocalDateTime updateTime;
 }

+ 10 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/person/vo/AppPersonInfoRespVO.java

@@ -54,7 +54,16 @@ public class AppPersonInfoRespVO {
     @Schema(description = "个人优势")
     private String advantage;
 
-    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    @Schema(description = "工作经验", example = "1")
+    private Integer expType;
+
+    @Schema(description = "学历", example = "2")
+    private Integer eduType;
+
+    @Schema(description = "创建时间")
     private LocalDateTime createTime;
 
+    @Schema(description = "更新时间")
+    private LocalDateTime updateTime;
+
 }

+ 28 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/person/vo/AppPersonSkillRespVO.java

@@ -0,0 +1,28 @@
+package com.citu.module.menduner.system.controller.app.person.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+
+@Data
+@Schema(description = "menduner - 人才技能 Response VO")
+public class AppPersonSkillRespVO {
+
+    @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "24591")
+    private Long id;
+
+    @Schema(description = "技能id", example = "1")
+    private String skillId;
+
+    @Schema(description = "技能等级(0一般 1良好 2熟练 3 精通)")
+    private Integer level;
+
+    @Schema(description = "创建时间")
+    private LocalDateTime createTime;
+
+    @Schema(description = "更新时间")
+    private LocalDateTime updateTime;
+
+}

+ 21 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/person/vo/AppPersonSkillSaveReqVO.java

@@ -0,0 +1,21 @@
+package com.citu.module.menduner.system.controller.app.person.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+
+@Schema(description = "menduner - 人才技能保存 Request VO")
+@Data
+public class AppPersonSkillSaveReqVO {
+
+    @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "24591")
+    private Long id;
+
+    @Schema(description = "技能id", example = "1")
+    private String skillId;
+
+    @Schema(description = "技能等级(0一般 1良好 2熟练 3 精通)")
+    private Integer level;
+
+}

+ 64 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/person/workexp/AppWorkExpRespVO.java

@@ -0,0 +1,64 @@
+package com.citu.module.menduner.system.controller.app.person.workexp;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+@Data
+@Schema(description = "menduner - 工作经历 Response VO")
+public class AppWorkExpRespVO {
+
+    @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "2363")
+    private Long id;
+
+    @Schema(description = "企业id", example = "2118")
+    private Long enterpriseId;
+
+    @Schema(description = "企业名称(没有选择系统企业时可自定义)", example = "张三")
+    private String enterpriseName;
+
+    @Schema(description = "所属行业", example = "21570")
+    private Long industryId;
+
+    @Schema(description = "所属部门", example = "李四")
+    private String deptName;
+
+    @Schema(description = "所属职位", example = "11706")
+    private Long positionId;
+
+    @Schema(description = "职位名称(没有选择系统职位时可自定义)", example = "赵六")
+    private String positionName;
+
+    @Schema(description = "在职开始日期")
+    private LocalDateTime startTime;
+
+    @Schema(description = "在职结束时间")
+    private LocalDateTime endTime;
+
+    @Schema(description = "工作内容")
+    private String content;
+
+    @Schema(description = "业绩")
+    private String achievement;
+
+    @Schema(description = "薪酬")
+    private BigDecimal pay;
+
+    @Schema(description = "薪酬类型(0月薪 1年薪)", example = "1")
+    private Integer payUnit;
+
+    @Schema(description = "货币类型", example = "2")
+    private Integer currencyType;
+
+    @Schema(description = "技能")
+    private String skillList;
+
+    @Schema(description = "创建时间")
+    private LocalDateTime createTime;
+
+    @Schema(description = "更新时间")
+    private LocalDateTime updateTime;
+
+}

+ 16 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/convert/EduExpConvert.java

@@ -0,0 +1,16 @@
+package com.citu.module.menduner.system.convert;
+
+import com.citu.module.menduner.system.controller.app.person.eduexp.AppEduExpRespVO;
+import com.citu.module.menduner.system.dal.dataobject.eduexp.EduExpDO;
+import org.mapstruct.Mapper;
+import org.mapstruct.factory.Mappers;
+
+import java.util.List;
+
+@Mapper
+public interface EduExpConvert {
+
+    EduExpConvert INSTANCE = Mappers.getMapper(EduExpConvert.class);
+
+    List<AppEduExpRespVO> convertList(List<EduExpDO> list);
+}

+ 16 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/convert/JobInterestedConvert.java

@@ -0,0 +1,16 @@
+package com.citu.module.menduner.system.convert;
+
+import com.citu.module.menduner.system.controller.app.person.job.AppJobInterestedRespVO;
+import com.citu.module.menduner.system.dal.dataobject.job.JobInterestedDO;
+import org.mapstruct.Mapper;
+import org.mapstruct.factory.Mappers;
+
+import java.util.List;
+
+@Mapper
+public interface JobInterestedConvert  {
+
+    JobInterestedConvert INSTANCE = Mappers.getMapper(JobInterestedConvert.class);
+
+    List<AppJobInterestedRespVO> convertList(List<JobInterestedDO> list);
+}

+ 16 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/convert/PersonConvert.java

@@ -0,0 +1,16 @@
+package com.citu.module.menduner.system.convert;
+
+import com.citu.module.menduner.system.controller.app.person.vo.AppPersonSkillRespVO;
+import com.citu.module.menduner.system.dal.dataobject.person.PersonSkillDO;
+import org.mapstruct.Mapper;
+import org.mapstruct.factory.Mappers;
+
+import java.util.List;
+
+@Mapper
+public interface PersonConvert {
+
+    PersonConvert INSTANCE = Mappers.getMapper(PersonConvert.class);
+
+    List<AppPersonSkillRespVO> convertList(List<PersonSkillDO> list);
+}

+ 16 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/convert/ProjectExpConvert.java

@@ -0,0 +1,16 @@
+package com.citu.module.menduner.system.convert;
+
+import com.citu.module.menduner.system.controller.app.person.projectexp.AppProjectExpRespVO;
+import com.citu.module.menduner.system.dal.dataobject.projectexp.ProjectExpDO;
+import org.mapstruct.Mapper;
+import org.mapstruct.factory.Mappers;
+
+import java.util.List;
+
+@Mapper
+public interface ProjectExpConvert {
+
+    ProjectExpConvert INSTANCE = Mappers.getMapper(ProjectExpConvert.class);
+
+    List<AppProjectExpRespVO> convertList(List<ProjectExpDO> list);
+}

+ 16 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/convert/TrainExpConvert.java

@@ -0,0 +1,16 @@
+package com.citu.module.menduner.system.convert;
+
+import com.citu.module.menduner.system.controller.app.person.trainexp.AppTrainExpRespVO;
+import com.citu.module.menduner.system.dal.dataobject.trainexp.TrainExpDO;
+import org.mapstruct.Mapper;
+import org.mapstruct.factory.Mappers;
+
+import java.util.List;
+
+@Mapper
+public interface TrainExpConvert {
+
+    TrainExpConvert INSTANCE = Mappers.getMapper(TrainExpConvert.class);
+
+    List<AppTrainExpRespVO> convertList(List<TrainExpDO> list);
+}

+ 16 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/convert/WorkExpConvert.java

@@ -0,0 +1,16 @@
+package com.citu.module.menduner.system.convert;
+
+import com.citu.module.menduner.system.controller.app.person.workexp.AppWorkExpRespVO;
+import com.citu.module.menduner.system.dal.dataobject.workexp.WorkExpDO;
+import org.mapstruct.Mapper;
+import org.mapstruct.factory.Mappers;
+
+import java.util.List;
+
+@Mapper
+public interface WorkExpConvert {
+
+    WorkExpConvert INSTANCE = Mappers.getMapper(WorkExpConvert.class);
+
+    List<AppWorkExpRespVO> convertList(List<WorkExpDO> list);
+}

+ 7 - 3
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/job/JobInterestedDO.java

@@ -1,8 +1,10 @@
 package com.citu.module.menduner.system.dal.dataobject.job;
 
+import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
 import lombok.*;
 
 import java.math.BigDecimal;
+import java.util.List;
 
 import com.baomidou.mybatisplus.annotation.*;
 import com.citu.framework.mybatis.core.dataobject.BaseDO;
@@ -12,7 +14,7 @@ import com.citu.framework.mybatis.core.dataobject.BaseDO;
  *
  * @author Rayson
  */
-@TableName("mde_job_interested")
+@TableName(value="mde_job_interested", autoResultMap = true)
 @KeySequence("mde_job_interested_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
 @Data
 @EqualsAndHashCode(callSuper = true)
@@ -44,7 +46,8 @@ public class JobInterestedDO extends BaseDO {
     /**
      * 期望行业
      */
-    private String industryIdList;
+    @TableField(typeHandler = JacksonTypeHandler.class)
+    private List<String> industryIdList;
     /**
      * 薪酬最低要求
      */
@@ -60,6 +63,7 @@ public class JobInterestedDO extends BaseDO {
     /**
      * 感兴趣城市
      */
-    private String interestedAreaIdList;
+    @TableField(typeHandler = JacksonTypeHandler.class)
+    private List<String> interestedAreaIdList;
 
 }

+ 8 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/person/PersonInfoDO.java

@@ -84,5 +84,13 @@ public class PersonInfoDO extends BaseDO {
      * 个人优势
      */
     private String advantage;
+    /**
+     * 工作经验
+     */
+    private Integer expType;
+    /**
+     * 学历
+     */
+    private Integer eduType;
 
 }

+ 12 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/eduexp/EduExpMapper.java

@@ -31,4 +31,16 @@ public interface EduExpMapper extends BaseMapperX<EduExpDO> {
                 .orderByDesc(EduExpDO::getId));
     }
 
+
+    default EduExpDO selectByIdAndUserId(Long id, Long userId) {
+        return selectOne(new LambdaQueryWrapperX<EduExpDO>()
+                .eq(EduExpDO::getId, id)
+                .eq(EduExpDO::getUserId, userId));
+    }
+
+    default void deleteByIdAndUserId(Long id, Long userId){
+        delete(new LambdaQueryWrapperX<EduExpDO>()
+                .eq(EduExpDO::getId, id)
+                .eq(EduExpDO::getUserId, userId));
+    }
 }

+ 12 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/job/JobInterestedMapper.java

@@ -29,4 +29,16 @@ public interface JobInterestedMapper extends BaseMapperX<JobInterestedDO> {
                 .orderByDesc(JobInterestedDO::getId));
     }
 
+    default JobInterestedDO selectByIdAndUserId(Long id, Long userId) {
+        return selectOne(new LambdaQueryWrapperX<JobInterestedDO>()
+                .eq(JobInterestedDO::getId, id)
+                .eq(JobInterestedDO::getUserId, userId));
+    }
+
+    default int deleteByIdAndUserId(Long id, Long userId){
+        return delete(new LambdaQueryWrapperX<JobInterestedDO>()
+                .eq(JobInterestedDO::getId, id)
+                .eq(JobInterestedDO::getUserId, userId));
+    }
+
 }

+ 12 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/person/PersonSkillMapper.java

@@ -24,4 +24,16 @@ public interface PersonSkillMapper extends BaseMapperX<PersonSkillDO> {
                 .orderByDesc(PersonSkillDO::getId));
     }
 
+    default PersonSkillDO selectByIdAndUserId(Long id, Long userId) {
+        return selectOne(new LambdaQueryWrapperX<PersonSkillDO>()
+                .eq(PersonSkillDO::getId, id)
+                .eq(PersonSkillDO::getUserId, userId));
+    }
+
+    default void deleteByIdAndUserId(Long id, Long userId) {
+        delete(new LambdaQueryWrapperX<PersonSkillDO>()
+                .eq(PersonSkillDO::getId, id)
+                .eq(PersonSkillDO::getUserId, userId));
+    }
+
 }

+ 13 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/projectexp/ProjectExpMapper.java

@@ -25,4 +25,17 @@ public interface ProjectExpMapper extends BaseMapperX<ProjectExpDO> {
                 .orderByDesc(ProjectExpDO::getId));
     }
 
+
+    default ProjectExpDO selectByIdAndUserId(Long id, Long userId) {
+        return selectOne(new LambdaQueryWrapperX<ProjectExpDO>()
+                .eq(ProjectExpDO::getId, id)
+                .eq(ProjectExpDO::getUserId, userId));
+    }
+
+    default void deleteByIdAndUserId(Long id, Long userId) {
+        delete(new LambdaQueryWrapperX<ProjectExpDO>()
+                .eq(ProjectExpDO::getId, id)
+                .eq(ProjectExpDO::getUserId, userId));
+    }
+
 }

+ 13 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/trainexp/TrainExpMapper.java

@@ -26,4 +26,17 @@ public interface TrainExpMapper extends BaseMapperX<TrainExpDO> {
                 .orderByDesc(TrainExpDO::getId));
     }
 
+    default TrainExpDO selectByIdAndUserId(Long id, Long userId) {
+        return selectOne(new LambdaQueryWrapperX<TrainExpDO>()
+                .eq(TrainExpDO::getId, id)
+                .eq(TrainExpDO::getUserId, userId));
+    }
+
+
+    default void deleteByIdAndUserId(Long id, Long userId){
+        delete(new LambdaQueryWrapperX<TrainExpDO>()
+                .eq(TrainExpDO::getId, id)
+                .eq(TrainExpDO::getUserId, userId));
+    }
+
 }

+ 20 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/workexp/WorkExpMapper.java

@@ -1,12 +1,14 @@
 package com.citu.module.menduner.system.dal.mysql.workexp;
 
 import com.citu.framework.common.pojo.PageResult;
-import com.citu.framework.mybatis.core.query.LambdaQueryWrapperX;
 import com.citu.framework.mybatis.core.mapper.BaseMapperX;
+import com.citu.framework.mybatis.core.query.LambdaQueryWrapperX;
 import com.citu.module.menduner.system.controller.admin.workexp.vo.WorkExpPageReqVO;
 import com.citu.module.menduner.system.dal.dataobject.workexp.WorkExpDO;
 import org.apache.ibatis.annotations.Mapper;
 
+import java.util.List;
+
 /**
  * 工作经历 Mapper
  *
@@ -32,4 +34,21 @@ public interface WorkExpMapper extends BaseMapperX<WorkExpDO> {
                 .orderByDesc(WorkExpDO::getId));
     }
 
+    default List<WorkExpDO> selectByUserIdList(Long userId) {
+        return selectList(new LambdaQueryWrapperX<WorkExpDO>()
+                .eq(WorkExpDO::getUserId, userId));
+    }
+
+
+    default WorkExpDO selectByIdAndUserId(Long id, Long userId) {
+        return selectOne(new LambdaQueryWrapperX<WorkExpDO>()
+                .eq(WorkExpDO::getId, id)
+                .eq(WorkExpDO::getUserId, userId));
+    }
+
+    default void deleteByIdAndUserId(Long id, Long userId) {
+        delete(new LambdaQueryWrapperX<WorkExpDO>()
+                .eq(WorkExpDO::getId, id)
+                .eq(WorkExpDO::getUserId, userId));
+    }
 }

+ 23 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/eduexp/EduExpService.java

@@ -3,9 +3,12 @@ package com.citu.module.menduner.system.service.eduexp;
 import com.citu.framework.common.pojo.PageResult;
 import com.citu.module.menduner.system.controller.admin.eduexp.vo.EduExpPageReqVO;
 import com.citu.module.menduner.system.controller.admin.eduexp.vo.EduExpSaveReqVO;
+import com.citu.module.menduner.system.controller.app.person.eduexp.AppEduExpSaveReqVO;
 import com.citu.module.menduner.system.dal.dataobject.eduexp.EduExpDO;
+import org.springframework.web.bind.annotation.RequestBody;
 
 import javax.validation.Valid;
+import java.util.List;
 
 /**
  * 教育经历 Service 接口
@@ -52,4 +55,24 @@ public interface EduExpService {
      */
     PageResult<EduExpDO> getEduExpPage(EduExpPageReqVO pageReqVO);
 
+    /**
+     * 保存简历教育经历
+     *
+     * @param reqVO 教育经历
+     * @return 保存|成功|失败
+     */
+    Boolean saveEduExp(@Valid @RequestBody AppEduExpSaveReqVO reqVO);
+
+    /**
+     * 根据教育经历id移除教育经历
+     *
+     * @param id 教育经历id
+     */
+    void removeEduExp(Long id);
+
+    /**
+     * 获取当前登录人才的教育经历
+     */
+    List<EduExpDO> getEduExpList();
+
 }

+ 36 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/eduexp/EduExpServiceImpl.java

@@ -4,6 +4,7 @@ import com.citu.framework.common.pojo.PageResult;
 import com.citu.framework.common.util.object.BeanUtils;
 import com.citu.module.menduner.system.controller.admin.eduexp.vo.EduExpPageReqVO;
 import com.citu.module.menduner.system.controller.admin.eduexp.vo.EduExpSaveReqVO;
+import com.citu.module.menduner.system.controller.app.person.eduexp.AppEduExpSaveReqVO;
 import com.citu.module.menduner.system.dal.dataobject.eduexp.EduExpDO;
 import com.citu.module.menduner.system.dal.mysql.eduexp.EduExpMapper;
 import org.springframework.stereotype.Service;
@@ -11,6 +12,7 @@ import org.springframework.transaction.annotation.Transactional;
 import org.springframework.validation.annotation.Validated;
 
 import javax.annotation.Resource;
+import java.util.List;
 
 import static com.citu.framework.common.exception.util.ServiceExceptionUtil.exception;
 import static com.citu.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
@@ -75,4 +77,38 @@ public class EduExpServiceImpl implements EduExpService {
         return eduExpMapper.selectPage(pageReqVO);
     }
 
+    void validate(Long id, Long userId) {
+        if (null == eduExpMapper.selectByIdAndUserId(id, userId)) {
+            throw exception(MDE_EDU_EXP_NOT_EXISTS);
+        }
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean saveEduExp(AppEduExpSaveReqVO reqVO) {
+        Long userId = getLoginUserId();
+        EduExpDO eduExpDO = BeanUtils.toBean(reqVO, EduExpDO.class);
+        eduExpDO.setUserId(userId);
+        if (null == reqVO.getId()) {
+            eduExpMapper.insert(eduExpDO);
+        } else {
+            eduExpMapper.updateById(eduExpDO);
+        }
+        return true;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void removeEduExp(Long id) {
+        Long userId = getLoginUserId();
+        // 校验存在
+        validate(id, userId);
+        // 删除
+        eduExpMapper.deleteByIdAndUserId(id, userId);
+    }
+
+    @Override
+    public List<EduExpDO> getEduExpList() {
+        return eduExpMapper.selectList(EduExpDO::getUserId, getLoginUserId());
+    }
 }

+ 25 - 3
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/job/JobInterestedService.java

@@ -1,11 +1,14 @@
 package com.citu.module.menduner.system.service.job;
 
-import javax.validation.*;
-
+import com.citu.framework.common.pojo.PageResult;
 import com.citu.module.menduner.system.controller.admin.job.vo.JobInterestedPageReqVO;
 import com.citu.module.menduner.system.controller.admin.job.vo.JobInterestedSaveReqVO;
+import com.citu.module.menduner.system.controller.app.person.job.AppJobInterestedSaveReqVO;
 import com.citu.module.menduner.system.dal.dataobject.job.JobInterestedDO;
-import com.citu.framework.common.pojo.PageResult;
+import org.springframework.web.bind.annotation.RequestBody;
+
+import javax.validation.Valid;
+import java.util.List;
 
 /**
  * 求职意向 Service 接口
@@ -52,4 +55,23 @@ public interface JobInterestedService {
      */
     PageResult<JobInterestedDO> getJobInterestedPage(JobInterestedPageReqVO pageReqVO);
 
+    /**
+     * 保存简历求职意向
+     *
+     * @param reqVO 求职意向
+     * @return 保存|成功|失败
+     */
+    Boolean saveJobInterested(@Valid @RequestBody AppJobInterestedSaveReqVO reqVO);
+
+    /**
+     * 根据求职意向id移除求职意向
+     *
+     * @param id 求职意向id
+     */
+    void removeJobInterested(Long id);
+
+    /**
+     * 获取当前登录人才的求职意向
+     */
+    List<JobInterestedDO> getJobInterestedList();
 }

+ 43 - 6
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/job/JobInterestedServiceImpl.java

@@ -1,18 +1,21 @@
 package com.citu.module.menduner.system.service.job;
 
+import com.citu.framework.common.pojo.PageResult;
+import com.citu.framework.common.util.object.BeanUtils;
 import com.citu.module.menduner.system.controller.admin.job.vo.JobInterestedPageReqVO;
 import com.citu.module.menduner.system.controller.admin.job.vo.JobInterestedSaveReqVO;
+import com.citu.module.menduner.system.controller.app.person.job.AppJobInterestedSaveReqVO;
+import com.citu.module.menduner.system.dal.dataobject.job.JobInterestedDO;
+import com.citu.module.menduner.system.dal.mysql.job.JobInterestedMapper;
 import org.springframework.stereotype.Service;
-import javax.annotation.Resource;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.validation.annotation.Validated;
 
-import com.citu.module.menduner.system.dal.dataobject.job.JobInterestedDO;
-import com.citu.framework.common.pojo.PageResult;
-import com.citu.framework.common.util.object.BeanUtils;
-
-import com.citu.module.menduner.system.dal.mysql.job.JobInterestedMapper;
+import javax.annotation.Resource;
+import java.util.List;
 
 import static com.citu.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static com.citu.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
 import static com.citu.module.menduner.system.enums.ErrorCodeConstants.MDE_JOB_INTERESTED_NOT_EXISTS;
 
 /**
@@ -69,4 +72,38 @@ public class JobInterestedServiceImpl implements JobInterestedService {
         return jobInterestedMapper.selectPage(pageReqVO);
     }
 
+    private void validateJobInterestedExists(Long id, Long userId) {
+        if (null == jobInterestedMapper.selectByIdAndUserId(id, userId)) {
+            throw exception(MDE_JOB_INTERESTED_NOT_EXISTS);
+        }
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void removeJobInterested(Long id) {
+        Long userId = getLoginUserId();
+        // 校验存在
+        validateJobInterestedExists(id, userId);
+        // 删除
+        jobInterestedMapper.deleteByIdAndUserId(id, userId);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean saveJobInterested(AppJobInterestedSaveReqVO reqVO) {
+        Long userId = getLoginUserId();
+        JobInterestedDO jobInterestedDO = BeanUtils.toBean(reqVO, JobInterestedDO.class);
+        jobInterestedDO.setUserId(userId);
+        if (null == reqVO.getId()) {
+            jobInterestedMapper.insert(jobInterestedDO);
+        } else {
+            jobInterestedMapper.updateById(jobInterestedDO);
+        }
+        return true;
+    }
+
+    @Override
+    public List<JobInterestedDO> getJobInterestedList() {
+        return jobInterestedMapper.selectList(JobInterestedDO::getUserId, getLoginUserId());
+    }
 }

+ 2 - 2
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/person/favorite/PersonJobFavoriteService.java

@@ -3,7 +3,7 @@ package com.citu.module.menduner.system.service.person.favorite;
 import com.citu.framework.common.pojo.PageResult;
 import com.citu.module.menduner.system.controller.admin.person.vo.favorite.PersonJobFavoritePageReqVO;
 import com.citu.module.menduner.system.controller.admin.person.vo.favorite.PersonJobFavoriteSaveReqVO;
-import com.citu.module.menduner.system.controller.app.person.job.PersonJobFavoriteReqVO;
+import com.citu.module.menduner.system.controller.app.person.job.AppPersonJobFavoriteReqVO;
 import com.citu.module.menduner.system.dal.dataobject.person.PersonJobFavoriteDO;
 
 import javax.validation.Valid;
@@ -73,7 +73,7 @@ public interface PersonJobFavoriteService {
      *
      * @return 成功|失败
      */
-    Boolean favorite(PersonJobFavoriteReqVO reqVO);
+    Boolean favorite(AppPersonJobFavoriteReqVO reqVO);
 
     /**
      * 用户取消收藏职位

+ 2 - 2
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/person/favorite/PersonJobFavoriteServiceImpl.java

@@ -4,7 +4,7 @@ import com.citu.framework.common.pojo.PageResult;
 import com.citu.framework.common.util.object.BeanUtils;
 import com.citu.module.menduner.system.controller.admin.person.vo.favorite.PersonJobFavoritePageReqVO;
 import com.citu.module.menduner.system.controller.admin.person.vo.favorite.PersonJobFavoriteSaveReqVO;
-import com.citu.module.menduner.system.controller.app.person.job.PersonJobFavoriteReqVO;
+import com.citu.module.menduner.system.controller.app.person.job.AppPersonJobFavoriteReqVO;
 import com.citu.module.menduner.system.dal.dataobject.person.PersonJobFavoriteDO;
 import com.citu.module.menduner.system.dal.mysql.person.PersonJobFavoriteMapper;
 import org.springframework.stereotype.Service;
@@ -91,7 +91,7 @@ public class PersonJobFavoriteServiceImpl implements PersonJobFavoriteService {
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public Boolean favorite(PersonJobFavoriteReqVO reqVO) {
+    public Boolean favorite(AppPersonJobFavoriteReqVO reqVO) {
         Long userId = getLoginUserId();
         if (null == userId) {
             // 未登录

+ 21 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/person/info/PersonInfoService.java

@@ -1,9 +1,12 @@
 package com.citu.module.menduner.system.service.person.info;
 
 import com.citu.framework.common.pojo.PageResult;
+import com.citu.module.menduner.system.controller.app.person.resume.AppPersonAdvantageSaveReqVO;
+import com.citu.module.menduner.system.controller.app.person.resume.AppPersonInfoSaveReqVO;
 import com.citu.module.menduner.system.dal.dataobject.person.PersonInfoDO;
 import com.citu.module.menduner.system.controller.admin.person.vo.info.PersonInfoPageReqVO;
 import com.citu.module.menduner.system.controller.admin.person.vo.info.PersonInfoSaveReqVO;
+import org.springframework.web.bind.annotation.RequestBody;
 
 import javax.validation.Valid;
 
@@ -59,4 +62,22 @@ public interface PersonInfoService {
      * @return 人才信息-个人档案
      */
     PersonInfoDO getUserInfoByUserId(Long userId);
+
+    /**
+     * 保存简历基本信息
+     *
+     * @param reqVO 基本信息
+     * @return 保存|成功|失败
+     */
+    Boolean saveInfo(@Valid @RequestBody AppPersonInfoSaveReqVO reqVO);
+
+    /**
+     * 保存简历个人优势
+     *
+     * @param reqVO 个人优势
+     * @return 保存|成功|失败
+     */
+    Boolean saveAdvantage(@Valid @RequestBody AppPersonAdvantageSaveReqVO reqVO);
+
+
 }

+ 36 - 3
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/person/info/PersonInfoServiceImpl.java

@@ -2,10 +2,12 @@ package com.citu.module.menduner.system.service.person.info;
 
 import com.citu.framework.common.pojo.PageResult;
 import com.citu.framework.common.util.object.BeanUtils;
-import com.citu.module.menduner.system.dal.dataobject.person.PersonInfoDO;
-import com.citu.module.menduner.system.dal.mysql.person.PersonInfoMapper;
 import com.citu.module.menduner.system.controller.admin.person.vo.info.PersonInfoPageReqVO;
 import com.citu.module.menduner.system.controller.admin.person.vo.info.PersonInfoSaveReqVO;
+import com.citu.module.menduner.system.controller.app.person.resume.AppPersonAdvantageSaveReqVO;
+import com.citu.module.menduner.system.controller.app.person.resume.AppPersonInfoSaveReqVO;
+import com.citu.module.menduner.system.dal.dataobject.person.PersonInfoDO;
+import com.citu.module.menduner.system.dal.mysql.person.PersonInfoMapper;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.validation.annotation.Validated;
@@ -13,6 +15,8 @@ import org.springframework.validation.annotation.Validated;
 import javax.annotation.Resource;
 
 import static com.citu.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static com.citu.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
+import static com.citu.module.menduner.system.enums.ErrorCodeConstants.MDE_PERSON_INFO_NOT_EXISTS;
 import static com.citu.module.menduner.system.enums.ErrorCodeConstants.MDE_USER_INFO_NOT_EXISTS;
 
 /**
@@ -74,6 +78,35 @@ public class PersonInfoServiceImpl implements PersonInfoService {
 
     @Override
     public PersonInfoDO getUserInfoByUserId(Long userId) {
-        return personInfoMapper.selectOne(PersonInfoDO::getUserId,userId);
+        return personInfoMapper.selectOne(PersonInfoDO::getUserId, userId);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean saveInfo(AppPersonInfoSaveReqVO reqVO) {
+        Long userId = getLoginUserId();
+        PersonInfoDO info = personInfoMapper.selectOne(PersonInfoDO::getUserId, userId);
+        PersonInfoDO userInfo = BeanUtils.toBean(reqVO, PersonInfoDO.class);
+        userInfo.setUserId(userId);
+        if (null == info) {
+            personInfoMapper.insert(userInfo);
+        } else {
+            personInfoMapper.updateById(userInfo);
+        }
+        return true;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean saveAdvantage(AppPersonAdvantageSaveReqVO reqVO) {
+        Long userId = getLoginUserId();
+        PersonInfoDO info = personInfoMapper.selectOne(PersonInfoDO::getUserId, userId);
+        if (null == info) {
+            throw exception(MDE_PERSON_INFO_NOT_EXISTS);
+        }
+        info.setAdvantage(reqVO.getContent());
+        personInfoMapper.updateById(info);
+
+        return true;
     }
 }

+ 23 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/person/skill/PersonSkillService.java

@@ -3,9 +3,12 @@ package com.citu.module.menduner.system.service.person.skill;
 import com.citu.framework.common.pojo.PageResult;
 import com.citu.module.menduner.system.controller.admin.person.vo.skill.PersonSkillPageReqVO;
 import com.citu.module.menduner.system.controller.admin.person.vo.skill.PersonSkillSaveReqVO;
+import com.citu.module.menduner.system.controller.app.person.vo.AppPersonSkillSaveReqVO;
 import com.citu.module.menduner.system.dal.dataobject.person.PersonSkillDO;
+import org.springframework.web.bind.annotation.RequestBody;
 
 import javax.validation.Valid;
+import java.util.List;
 
 /**
  * 人才技能 Service 接口
@@ -52,4 +55,24 @@ public interface PersonSkillService {
      */
     PageResult<PersonSkillDO> getUserSkillPage(PersonSkillPageReqVO pageReqVO);
 
+    /**
+     * 保存简历人才技能
+     *
+     * @param reqVO 人才技能
+     * @return 保存|成功|失败
+     */
+    Boolean savePersonSkill(@Valid @RequestBody AppPersonSkillSaveReqVO reqVO);
+
+    /**
+     * 根据人才技能id移除人才技能
+     *
+     * @param id 人才技能id
+     */
+    void removePersonSkill(Long id);
+
+    /**
+     * 获取当前登录人才的人才技能
+     */
+    List<PersonSkillDO> getPersonSkillList();
+
 }

+ 43 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/person/skill/PersonSkillServiceImpl.java

@@ -2,8 +2,12 @@ package com.citu.module.menduner.system.service.person.skill;
 
 import com.citu.module.menduner.system.controller.admin.person.vo.skill.PersonSkillPageReqVO;
 import com.citu.module.menduner.system.controller.admin.person.vo.skill.PersonSkillSaveReqVO;
+import com.citu.module.menduner.system.controller.app.person.vo.AppPersonSkillSaveReqVO;
+import com.citu.module.menduner.system.dal.dataobject.projectexp.ProjectExpDO;
 import org.springframework.stereotype.Service;
 import javax.annotation.Resource;
+
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.validation.annotation.Validated;
 
 import com.citu.module.menduner.system.dal.dataobject.person.PersonSkillDO;
@@ -12,8 +16,13 @@ import com.citu.framework.common.util.object.BeanUtils;
 
 import com.citu.module.menduner.system.dal.mysql.person.PersonSkillMapper;
 
+import java.util.Collections;
+import java.util.List;
+
 import static com.citu.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static com.citu.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
 import static com.citu.module.menduner.system.enums.ErrorCodeConstants.MDE_USER_SKILL_NOT_EXISTS;
+import static com.citu.module.menduner.system.enums.ErrorCodeConstants.PROJECT_EXP_NOT_EXISTS;
 
 /**
  * 人才技能 Service 实现类
@@ -69,4 +78,38 @@ public class PersonSkillServiceImpl implements PersonSkillService {
         return personSkillMapper.selectPage(pageReqVO);
     }
 
+    void validate(Long id, Long userId) {
+        if (null == personSkillMapper.selectByIdAndUserId(id, userId)) {
+            throw exception(MDE_USER_SKILL_NOT_EXISTS);
+        }
+    }
+
+    @Override
+    public List<PersonSkillDO> getPersonSkillList() {
+        return personSkillMapper.selectList(PersonSkillDO::getUserId, getLoginUserId());
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean savePersonSkill(AppPersonSkillSaveReqVO reqVO) {
+        Long userId = getLoginUserId();
+        PersonSkillDO personSkillDO = BeanUtils.toBean(reqVO, PersonSkillDO.class);
+        personSkillDO.setUserId(userId);
+        if (null == reqVO.getId()) {
+            personSkillMapper.insert(personSkillDO);
+        } else {
+            personSkillMapper.updateById(personSkillDO);
+        }
+        return true;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void removePersonSkill(Long id) {
+        Long userId = getLoginUserId();
+        // 校验存在
+        validate(id, userId);
+        // 删除
+        personSkillMapper.deleteByIdAndUserId(id, userId);
+    }
 }

+ 23 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/projectexp/ProjectExpService.java

@@ -3,9 +3,12 @@ package com.citu.module.menduner.system.service.projectexp;
 import com.citu.framework.common.pojo.PageResult;
 import com.citu.module.menduner.system.controller.admin.projectexp.vo.ProjectExpPageReqVO;
 import com.citu.module.menduner.system.controller.admin.projectexp.vo.ProjectExpSaveReqVO;
+import com.citu.module.menduner.system.controller.app.person.projectexp.AppProjectExpSaveReqVO;
 import com.citu.module.menduner.system.dal.dataobject.projectexp.ProjectExpDO;
+import org.springframework.web.bind.annotation.RequestBody;
 
 import javax.validation.Valid;
+import java.util.List;
 
 /**
  * 门墩儿-项目经历 Service 接口
@@ -52,4 +55,24 @@ public interface ProjectExpService {
      */
     PageResult<ProjectExpDO> getProjectExpPage(ProjectExpPageReqVO pageReqVO);
 
+    /**
+     * 保存简历项目经历
+     *
+     * @param reqVO 项目经历
+     * @return 保存|成功|失败
+     */
+    Boolean saveProjectExp(@Valid @RequestBody AppProjectExpSaveReqVO reqVO);
+
+    /**
+     * 根据项目经历id移除项目经历
+     *
+     * @param id 项目经历id
+     */
+    void removeProjectExp(Long id);
+
+    /**
+     * 获取当前登录人才的项目经历
+     */
+    List<ProjectExpDO> getProjectExpList();
+
 }

+ 45 - 11
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/projectexp/ProjectExpServiceImpl.java

@@ -1,22 +1,22 @@
 package com.citu.module.menduner.system.service.projectexp;
 
-import org.springframework.stereotype.Service;
-import javax.annotation.Resource;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.util.*;
-import com.citu.module.menduner.system.controller.admin.projectexp.vo.*;
-import com.citu.module.menduner.system.dal.dataobject.projectexp.ProjectExpDO;
 import com.citu.framework.common.pojo.PageResult;
-import com.citu.framework.common.pojo.PageParam;
 import com.citu.framework.common.util.object.BeanUtils;
-
+import com.citu.module.menduner.system.controller.admin.projectexp.vo.ProjectExpPageReqVO;
+import com.citu.module.menduner.system.controller.admin.projectexp.vo.ProjectExpSaveReqVO;
+import com.citu.module.menduner.system.controller.app.person.projectexp.AppProjectExpSaveReqVO;
+import com.citu.module.menduner.system.dal.dataobject.projectexp.ProjectExpDO;
 import com.citu.module.menduner.system.dal.mysql.projectexp.ProjectExpMapper;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.validation.annotation.Validated;
+
+import javax.annotation.Resource;
+import java.util.List;
 
 import static com.citu.framework.common.exception.util.ServiceExceptionUtil.exception;
 import static com.citu.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
-import static com.citu.module.menduner.system.enums.ErrorCodeConstants.*;
+import static com.citu.module.menduner.system.enums.ErrorCodeConstants.PROJECT_EXP_NOT_EXISTS;
 
 /**
  * 门墩儿-项目经历 Service 实现类
@@ -77,4 +77,38 @@ public class ProjectExpServiceImpl implements ProjectExpService {
         return projectExpMapper.selectPage(pageReqVO);
     }
 
+    void validate(Long id, Long userId) {
+        if (null == projectExpMapper.selectByIdAndUserId(id, userId)) {
+            throw exception(PROJECT_EXP_NOT_EXISTS);
+        }
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean saveProjectExp(AppProjectExpSaveReqVO reqVO) {
+        Long userId = getLoginUserId();
+        ProjectExpDO projectExpDO = BeanUtils.toBean(reqVO, ProjectExpDO.class);
+        projectExpDO.setUserId(userId);
+        if (null == reqVO.getId()) {
+            projectExpMapper.insert(projectExpDO);
+        } else {
+            projectExpMapper.updateById(projectExpDO);
+        }
+        return true;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void removeProjectExp(Long id) {
+        Long userId = getLoginUserId();
+        // 校验存在
+        validate(id, userId);
+        // 删除
+        projectExpMapper.deleteByIdAndUserId(id, userId);
+    }
+
+    @Override
+    public List<ProjectExpDO> getProjectExpList() {
+        return projectExpMapper.selectList(ProjectExpDO::getUserId, getLoginUserId());
+    }
 }

+ 23 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/trainexp/TrainExpService.java

@@ -3,9 +3,12 @@ package com.citu.module.menduner.system.service.trainexp;
 import com.citu.framework.common.pojo.PageResult;
 import com.citu.module.menduner.system.controller.admin.trainexp.vo.TrainExpPageReqVO;
 import com.citu.module.menduner.system.controller.admin.trainexp.vo.TrainExpSaveReqVO;
+import com.citu.module.menduner.system.controller.app.person.trainexp.AppTrainExpSaveReqVO;
 import com.citu.module.menduner.system.dal.dataobject.trainexp.TrainExpDO;
+import org.springframework.web.bind.annotation.RequestBody;
 
 import javax.validation.Valid;
+import java.util.List;
 
 /**
  * 门墩儿-培训经历 Service 接口
@@ -52,4 +55,24 @@ public interface TrainExpService {
      */
     PageResult<TrainExpDO> getTrainExpPage(TrainExpPageReqVO pageReqVO);
 
+    /**
+     * 保存简历培训经历
+     *
+     * @param reqVO 培训经历
+     * @return 保存|成功|失败
+     */
+    Boolean saveTrainExp(@Valid @RequestBody AppTrainExpSaveReqVO reqVO);
+
+    /**
+     * 根据培训经历id移除培训经历
+     *
+     * @param id 培训经历id
+     */
+    void removeTrainExp(Long id);
+
+    /**
+     * 获取当前登录人才的培训经历
+     */
+    List<TrainExpDO> getTrainExpList();
+
 }

+ 38 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/trainexp/TrainExpServiceImpl.java

@@ -4,14 +4,18 @@ import com.citu.framework.common.pojo.PageResult;
 import com.citu.framework.common.util.object.BeanUtils;
 import com.citu.module.menduner.system.controller.admin.trainexp.vo.TrainExpPageReqVO;
 import com.citu.module.menduner.system.controller.admin.trainexp.vo.TrainExpSaveReqVO;
+import com.citu.module.menduner.system.controller.app.person.trainexp.AppTrainExpSaveReqVO;
 import com.citu.module.menduner.system.dal.dataobject.trainexp.TrainExpDO;
 import com.citu.module.menduner.system.dal.mysql.trainexp.TrainExpMapper;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.validation.annotation.Validated;
 
 import javax.annotation.Resource;
+import java.util.List;
 
 import static com.citu.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static com.citu.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
 import static com.citu.module.menduner.system.enums.ErrorCodeConstants.TRAIN_EXP_NOT_EXISTS;
 
 /**
@@ -68,4 +72,38 @@ public class TrainExpServiceImpl implements TrainExpService {
         return trainExpMapper.selectPage(pageReqVO);
     }
 
+    void validate(Long id, Long userId) {
+        if (null == trainExpMapper.selectByIdAndUserId(id, userId)) {
+            throw exception(TRAIN_EXP_NOT_EXISTS);
+        }
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean saveTrainExp(AppTrainExpSaveReqVO reqVO) {
+        Long userId = getLoginUserId();
+        TrainExpDO trainExpDO = BeanUtils.toBean(reqVO, TrainExpDO.class);
+        trainExpDO.setUserId(userId);
+        if (null == reqVO.getId()) {
+            trainExpMapper.insert(trainExpDO);
+        } else {
+            trainExpMapper.updateById(trainExpDO);
+        }
+        return true;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void removeTrainExp(Long id) {
+        Long userId = getLoginUserId();
+        // 校验存在
+        validate(id, userId);
+        // 删除
+        trainExpMapper.deleteByIdAndUserId(id, userId);
+    }
+
+    @Override
+    public List<TrainExpDO> getTrainExpList() {
+        return trainExpMapper.selectList(TrainExpDO::getUserId, getLoginUserId());
+    }
 }

+ 24 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/workexp/WorkExpService.java

@@ -3,9 +3,13 @@ package com.citu.module.menduner.system.service.workexp;
 import com.citu.framework.common.pojo.PageResult;
 import com.citu.module.menduner.system.controller.admin.workexp.vo.WorkExpPageReqVO;
 import com.citu.module.menduner.system.controller.admin.workexp.vo.WorkExpSaveReqVO;
+
+import com.citu.module.menduner.system.controller.app.person.workexp.AppWorkExpSaveReqVO;
 import com.citu.module.menduner.system.dal.dataobject.workexp.WorkExpDO;
+import org.springframework.web.bind.annotation.RequestBody;
 
 import javax.validation.Valid;
+import java.util.List;
 
 /**
  * 工作经历 Service 接口
@@ -52,4 +56,24 @@ public interface WorkExpService {
      */
     PageResult<WorkExpDO> getWorkExpPage(WorkExpPageReqVO pageReqVO);
 
+    /**
+     * 保存简历工作经历
+     *
+     * @param reqVO 工作经历
+     * @return 保存|成功|失败
+     */
+    Boolean saveWorkExp(@Valid @RequestBody AppWorkExpSaveReqVO reqVO);
+
+    /**
+     * 根据工作经历id移除工作经历
+     *
+     * @param id 工作经历id
+     */
+    void removeWorkExp(Long id);
+
+    /**
+     * 获取当前登录人才的工作经历
+     */
+    List<WorkExpDO> getWorkExpList();
+
 }

+ 43 - 7
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/workexp/WorkExpServiceImpl.java

@@ -1,18 +1,19 @@
 package com.citu.module.menduner.system.service.workexp;
 
+import com.citu.framework.common.pojo.PageResult;
+import com.citu.framework.common.util.object.BeanUtils;
 import com.citu.module.menduner.system.controller.admin.workexp.vo.WorkExpPageReqVO;
 import com.citu.module.menduner.system.controller.admin.workexp.vo.WorkExpSaveReqVO;
+import com.citu.module.menduner.system.controller.app.person.workexp.AppWorkExpSaveReqVO;
+import com.citu.module.menduner.system.dal.dataobject.eduexp.EduExpDO;
+import com.citu.module.menduner.system.dal.dataobject.workexp.WorkExpDO;
+import com.citu.module.menduner.system.dal.mysql.workexp.WorkExpMapper;
 import org.springframework.stereotype.Service;
-import javax.annotation.Resource;
-
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.validation.annotation.Validated;
 
-import com.citu.module.menduner.system.dal.dataobject.workexp.WorkExpDO;
-import com.citu.framework.common.pojo.PageResult;
-import com.citu.framework.common.util.object.BeanUtils;
-
-import com.citu.module.menduner.system.dal.mysql.workexp.WorkExpMapper;
+import javax.annotation.Resource;
+import java.util.List;
 
 import static com.citu.framework.common.exception.util.ServiceExceptionUtil.exception;
 import static com.citu.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
@@ -77,4 +78,39 @@ public class WorkExpServiceImpl implements WorkExpService {
         return workExpMapper.selectPage(pageReqVO);
     }
 
+    void validate(Long id, Long userId) {
+        if (null == workExpMapper.selectByIdAndUserId(id, userId)) {
+            throw exception(MDE_WORK_EXP_NOT_EXISTS);
+        }
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean saveWorkExp(AppWorkExpSaveReqVO reqVO) {
+        Long userId = getLoginUserId();
+        WorkExpDO eduExpDO = BeanUtils.toBean(reqVO, WorkExpDO.class);
+        eduExpDO.setUserId(userId);
+        if (null == reqVO.getId()) {
+            workExpMapper.insert(eduExpDO);
+        } else {
+            workExpMapper.updateById(eduExpDO);
+        }
+        return true;
+    }
+
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void removeWorkExp(Long id) {
+        Long userId = getLoginUserId();
+        // 校验存在
+        validate(id, userId);
+        // 删除
+        workExpMapper.deleteByIdAndUserId(id, userId);
+    }
+
+    @Override
+    public List<WorkExpDO> getWorkExpList() {
+        return workExpMapper.selectByUserIdList(getLoginUserId());
+    }
 }

+ 16 - 0
menduner/menduner-system-biz/src/main/resources/i18n/messages_en_US.properties

@@ -19,6 +19,16 @@
 999=unknown error
 # ========== 人员信息-个人档案 1_100_001_000 ==========
 1_100_001_001=Personal Profile Does Not Exist
+1_100_001_002=Personal advantage cannot be empty
+1_100_001_003=Real name cannot be empty
+1_100_001_004=Contact phone number cannot be empty
+1_100_001_005=Birthdate cannot be empty
+1_100_001_006=Work experience cannot be empty
+1_100_001_007=Education cannot be empty
+1_100_001_008=Job search status cannot be empty
+1_100_001_009=City cannot be empty
+1_100_001_010=Frequently used email cannot be empty
+1_100_001_011=Please fill in your personal basic information first
 # ========== 行业信息 1_100_002_000 ==========
 1_100_002_001=Industry information does not exist
 # ========== 职位信息 1_100_003_000 ==========
@@ -39,6 +49,12 @@
 1_100_006_005=No end date selected for school
 # ========== 求职意向 1_100_007_000 ==========
 1_100_007_001=Job search intention does not exist
+1_100_007_002=No expected position selected
+1_100_007_003=No expected industry selected
+1_100_007_004=No job search type selected
+1_100_007_005=No minimum salary requirement filled in
+1_100_007_006=No maximum salary requirement filled in
+1_100_007_007=No work city selected
 # ========== 专业 1_100_008_000 ==========
 1_100_008_001=Major does not exist
 # ========== 职位标签 1_100_009_000 ==========

+ 17 - 1
menduner/menduner-system-biz/src/main/resources/i18n/messages_zh_CN.properties

@@ -19,7 +19,17 @@
 999=未知错误
 
 # ========== 人员信息-个人档案 1_100_001_000 ==========
-1_100_001_001=人员信息-个人档案不存在
+1_100_001_001=个人档案不存在
+1_100_001_002=个人优势不能为空
+1_100_001_003=真实姓名不能为空
+1_100_001_004=联系手机号不能为空
+1_100_001_005=出生日期不能为空
+1_100_001_006=工作经验不能为空
+1_100_001_007=学历不能为空
+1_100_001_008=求职状态不能为空
+1_100_001_009=所在城市不能为空
+1_100_001_010=常用邮箱不能为空
+1_100_001_011=请先填写个人基本信息
 # ========== 行业信息 1_100_002_000 ==========
 1_100_002_001=行业信息不存在
 # ========== 职位信息 1_100_003_000 ==========
@@ -40,6 +50,12 @@
 1_100_006_005=未选择在校结束日期
 # ========== 求职意向 1_100_007_000 ==========
 1_100_007_001=求职意向不存在
+1_100_007_002=未选择期望职位
+1_100_007_003=未选择期望行业
+1_100_007_004=未选择求职类型
+1_100_007_005=未填写薪酬最低要求
+1_100_007_006=未填写薪酬最高要求
+1_100_007_007=未选择工作城市
 # ========== 专业 1_100_008_000 ==========
 1_100_008_001=专业不存在
 # ========== 职位标签 1_100_009_000 ==========

+ 0 - 1
menduner/menduner-system-biz/src/main/resources/i18n/messages_zh_HK.properties

@@ -1 +0,0 @@
-person.name=88888888

+ 3 - 3
menduner/menduner-system-biz/src/test/java/com/citu/module/menduner/system/service/person/PersonSkillServiceImplTest.java

@@ -106,7 +106,7 @@ public class PersonSkillServiceImplTest extends BaseDbUnitTest {
        // mock 数据
        PersonSkillDO dbUserSkill = randomPojo(PersonSkillDO.class, o -> { // 等会查询到
            o.setUserId(null);
-           o.setName(null);
+           o.setSkillId(null);
            o.setLevel(null);
            o.setCreateTime(null);
        });
@@ -114,7 +114,7 @@ public class PersonSkillServiceImplTest extends BaseDbUnitTest {
        // 测试 userId 不匹配
        personSkillMapper.insert(cloneIgnoreId(dbUserSkill, o -> o.setUserId(null)));
        // 测试 name 不匹配
-       personSkillMapper.insert(cloneIgnoreId(dbUserSkill, o -> o.setName(null)));
+       personSkillMapper.insert(cloneIgnoreId(dbUserSkill, o -> o.setSkillId(null)));
        // 测试 level 不匹配
        personSkillMapper.insert(cloneIgnoreId(dbUserSkill, o -> o.setLevel(null)));
        // 测试 createTime 不匹配
@@ -122,7 +122,7 @@ public class PersonSkillServiceImplTest extends BaseDbUnitTest {
        // 准备参数
        PersonSkillPageReqVO reqVO = new PersonSkillPageReqVO();
        reqVO.setUserId(null);
-       reqVO.setName(null);
+       reqVO.setSkillId(null);
        reqVO.setLevel(null);
        reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));