Ver código fonte

1、更改类型
2、增加单元测试

rayson 1 ano atrás
pai
commit
ab7790ee03
100 arquivos alterados com 5226 adições e 0 exclusões
  1. 94 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/area/AreaController.java
  2. 31 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/area/vo/AreaPageReqVO.java
  3. 36 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/area/vo/AreaRespVO.java
  4. 24 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/area/vo/AreaSaveReqVO.java
  5. 94 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/certificate/CertificateController.java
  6. 34 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/certificate/vo/CertificatePageReqVO.java
  7. 40 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/certificate/vo/CertificateRespVO.java
  8. 29 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/certificate/vo/CertificateSaveReqVO.java
  9. 94 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/cvattachment/CvAttachmentController.java
  10. 31 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/cvattachment/vo/CvAttachmentPageReqVO.java
  11. 36 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/cvattachment/vo/CvAttachmentRespVO.java
  12. 24 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/cvattachment/vo/CvAttachmentSaveReqVO.java
  13. 94 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/eduexp/EduExpController.java
  14. 57 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/eduexp/vo/EduExpPageReqVO.java
  15. 70 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/eduexp/vo/EduExpRespVO.java
  16. 45 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/eduexp/vo/EduExpSaveReqVO.java
  17. 94 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/jobinterested/JobInterestedController.java
  18. 47 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/jobinterested/vo/JobInterestedPageReqVO.java
  19. 60 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/jobinterested/vo/JobInterestedRespVO.java
  20. 40 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/jobinterested/vo/JobInterestedSaveReqVO.java
  21. 94 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/major/MajorController.java
  22. 31 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/major/vo/MajorPageReqVO.java
  23. 39 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/major/vo/MajorRespVO.java
  24. 25 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/major/vo/MajorSaveReqVO.java
  25. 94 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/positiontag/PositionTagController.java
  26. 28 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/positiontag/vo/PositionTagPageReqVO.java
  27. 32 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/positiontag/vo/PositionTagRespVO.java
  28. 21 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/positiontag/vo/PositionTagSaveReqVO.java
  29. 94 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/school/SchoolController.java
  30. 40 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/school/vo/SchoolPageReqVO.java
  31. 48 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/school/vo/SchoolRespVO.java
  32. 34 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/school/vo/SchoolSaveReqVO.java
  33. 94 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/usercertificate/UserCertificateController.java
  34. 28 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/usercertificate/vo/UserCertificatePageReqVO.java
  35. 32 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/usercertificate/vo/UserCertificateRespVO.java
  36. 22 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/usercertificate/vo/UserCertificateSaveReqVO.java
  37. 93 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/userinfo/UserInfoController.java
  38. 67 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/userinfo/vo/UserInfoPageReqVO.java
  39. 80 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/userinfo/vo/UserInfoRespVO.java
  40. 58 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/userinfo/vo/UserInfoSaveReqVO.java
  41. 94 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/userskill/UserSkillController.java
  42. 31 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/userskill/vo/UserSkillPageReqVO.java
  43. 39 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/userskill/vo/UserSkillRespVO.java
  44. 25 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/userskill/vo/UserSkillSaveReqVO.java
  45. 94 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/workexp/WorkExpController.java
  46. 60 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/workexp/vo/WorkExpPageReqVO.java
  47. 91 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/workexp/vo/WorkExpRespVO.java
  48. 64 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/workexp/vo/WorkExpSaveReqVO.java
  49. 43 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/area/AreaDO.java
  50. 47 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/certificate/CertificateDO.java
  51. 43 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/cvattachment/CvAttachmentDO.java
  52. 79 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/eduexp/EduExpDO.java
  53. 67 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/jobinterested/JobInterestedDO.java
  54. 46 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/major/MajorDO.java
  55. 39 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/positiontag/PositionTagDO.java
  56. 55 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/school/SchoolDO.java
  57. 39 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/usercertificate/UserCertificateDO.java
  58. 90 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/userinfo/UserInfoDO.java
  59. 46 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/userskill/UserSkillDO.java
  60. 100 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/workexp/WorkExpDO.java
  61. 27 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/area/AreaMapper.java
  62. 28 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/certificate/CertificateMapper.java
  63. 27 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/cvattachment/CvAttachmentMapper.java
  64. 34 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/eduexp/EduExpMapper.java
  65. 32 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/jobinterested/JobInterestedMapper.java
  66. 27 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/major/MajorMapper.java
  67. 26 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/positiontag/PositionTagMapper.java
  68. 26 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/usercertificate/UserCertificateMapper.java
  69. 36 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/userinfo/UserInfoMapper.java
  70. 27 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/userskill/UserSkillMapper.java
  71. 35 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/workexp/WorkExpMapper.java
  72. 55 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/area/AreaService.java
  73. 71 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/area/AreaServiceImpl.java
  74. 55 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/certificate/CertificateService.java
  75. 71 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/certificate/CertificateServiceImpl.java
  76. 55 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/cvattachment/CvAttachmentService.java
  77. 72 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/cvattachment/CvAttachmentServiceImpl.java
  78. 55 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/eduexp/EduExpService.java
  79. 72 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/eduexp/EduExpServiceImpl.java
  80. 55 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/jobinterested/JobInterestedService.java
  81. 72 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/jobinterested/JobInterestedServiceImpl.java
  82. 55 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/major/MajorService.java
  83. 72 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/major/MajorServiceImpl.java
  84. 55 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/positiontag/PositionTagService.java
  85. 72 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/positiontag/PositionTagServiceImpl.java
  86. 55 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/school/SchoolService.java
  87. 72 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/school/SchoolServiceImpl.java
  88. 55 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/usercertificate/UserCertificateService.java
  89. 72 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/usercertificate/UserCertificateServiceImpl.java
  90. 55 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/userinfo/UserInfoService.java
  91. 71 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/userinfo/UserInfoServiceImpl.java
  92. 55 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/userskill/UserSkillService.java
  93. 72 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/userskill/UserSkillServiceImpl.java
  94. 55 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/workexp/WorkExpService.java
  95. 72 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/workexp/WorkExpServiceImpl.java
  96. 12 0
      menduner/menduner-system-biz/src/main/resources/mapper/area/AreaMapper.xml
  97. 12 0
      menduner/menduner-system-biz/src/main/resources/mapper/certificate/CertificateMapper.xml
  98. 12 0
      menduner/menduner-system-biz/src/main/resources/mapper/cvattachment/CvAttachmentMapper.xml
  99. 12 0
      menduner/menduner-system-biz/src/main/resources/mapper/eduexp/EduExpMapper.xml
  100. 12 0
      menduner/menduner-system-biz/src/main/resources/mapper/jobinterested/JobInterestedMapper.xml

+ 94 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/area/AreaController.java

@@ -0,0 +1,94 @@
+package com.citu.module.menduner.system.controller.admin.area;
+
+import org.springframework.web.bind.annotation.*;
+import javax.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.security.access.prepost.PreAuthorize;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Operation;
+
+import javax.validation.*;
+import javax.servlet.http.*;
+import java.util.*;
+import java.io.IOException;
+
+import com.citu.framework.common.pojo.PageParam;
+import com.citu.framework.common.pojo.PageResult;
+import com.citu.framework.common.pojo.CommonResult;
+import com.citu.framework.common.util.object.BeanUtils;
+import static com.citu.framework.common.pojo.CommonResult.success;
+
+import com.citu.framework.excel.core.util.ExcelUtils;
+
+import com.citu.framework.apilog.core.annotation.ApiAccessLog;
+import static com.citu.framework.apilog.core.enums.OperateTypeEnum.*;
+
+import com.citu.module.menduner.system.controller.admin.area.vo.*;
+import com.citu.module.menduner.system.dal.dataobject.area.AreaDO;
+import com.citu.module.menduner.system.service.area.AreaService;
+
+@Tag(name = "管理后台 - 地区")
+@RestController
+@RequestMapping("/menduner.system/area")
+@Validated
+public class AreaController {
+
+    @Resource
+    private AreaService areaService;
+
+    @PostMapping("/create")
+    @Operation(summary = "创建地区")
+    @PreAuthorize("@ss.hasPermission('menduner.system:area:create')")
+    public CommonResult<Long> createArea(@Valid @RequestBody AreaSaveReqVO createReqVO) {
+        return success(areaService.createArea(createReqVO));
+    }
+
+    @PutMapping("/update")
+    @Operation(summary = "更新地区")
+    @PreAuthorize("@ss.hasPermission('menduner.system:area:update')")
+    public CommonResult<Boolean> updateArea(@Valid @RequestBody AreaSaveReqVO updateReqVO) {
+        areaService.updateArea(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/delete")
+    @Operation(summary = "删除地区")
+    @Parameter(name = "id", description = "编号", required = true)
+    @PreAuthorize("@ss.hasPermission('menduner.system:area:delete')")
+    public CommonResult<Boolean> deleteArea(@RequestParam("id") Long id) {
+        areaService.deleteArea(id);
+        return success(true);
+    }
+
+    @GetMapping("/get")
+    @Operation(summary = "获得地区")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('menduner.system:area:query')")
+    public CommonResult<AreaRespVO> getArea(@RequestParam("id") Long id) {
+        AreaDO area = areaService.getArea(id);
+        return success(BeanUtils.toBean(area, AreaRespVO.class));
+    }
+
+    @GetMapping("/page")
+    @Operation(summary = "获得地区分页")
+    @PreAuthorize("@ss.hasPermission('menduner.system:area:query')")
+    public CommonResult<PageResult<AreaRespVO>> getAreaPage(@Valid AreaPageReqVO pageReqVO) {
+        PageResult<AreaDO> pageResult = areaService.getAreaPage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, AreaRespVO.class));
+    }
+
+    @GetMapping("/export-excel")
+    @Operation(summary = "导出地区 Excel")
+    @PreAuthorize("@ss.hasPermission('menduner.system:area:export')")
+    @ApiAccessLog(operateType = EXPORT)
+    public void exportAreaExcel(@Valid AreaPageReqVO pageReqVO,
+              HttpServletResponse response) throws IOException {
+        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<AreaDO> list = areaService.getAreaPage(pageReqVO).getList();
+        // 导出 Excel
+        ExcelUtils.write(response, "地区.xls", "数据", AreaRespVO.class,
+                        BeanUtils.toBean(list, AreaRespVO.class));
+    }
+
+}

+ 31 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/area/vo/AreaPageReqVO.java

@@ -0,0 +1,31 @@
+package com.citu.module.menduner.system.controller.admin.area.vo;
+
+import lombok.*;
+import java.util.*;
+import io.swagger.v3.oas.annotations.media.Schema;
+import com.citu.framework.common.pojo.PageParam;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+
+import static com.citu.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 地区分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class AreaPageReqVO extends PageParam {
+
+    @Schema(description = "区域名称", example = "芋艿")
+    private String name;
+
+    @Schema(description = "区域类型", example = "2")
+    private Integer type;
+
+    @Schema(description = "上级区域", example = "9103")
+    private Long parentId;
+
+    @Schema(description = "创建时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+
+}

+ 36 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/area/vo/AreaRespVO.java

@@ -0,0 +1,36 @@
+package com.citu.module.menduner.system.controller.admin.area.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import java.util.*;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+import com.alibaba.excel.annotation.*;
+
+@Schema(description = "管理后台 - 地区 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class AreaRespVO {
+
+    @Schema(description = "id", example = "28186")
+    @ExcelProperty("id")
+    private Long id;
+
+    @Schema(description = "区域名称", example = "芋艿")
+    @ExcelProperty("区域名称")
+    private String name;
+
+    @Schema(description = "区域类型", example = "2")
+    @ExcelProperty("区域类型")
+    private Integer type;
+
+    @Schema(description = "上级区域", example = "9103")
+    @ExcelProperty("上级区域")
+    private Long parentId;
+
+    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("创建时间")
+    private LocalDateTime createTime;
+
+}

+ 24 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/area/vo/AreaSaveReqVO.java

@@ -0,0 +1,24 @@
+package com.citu.module.menduner.system.controller.admin.area.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import javax.validation.constraints.*;
+
+@Schema(description = "管理后台 - 地区新增/修改 Request VO")
+@Data
+public class AreaSaveReqVO {
+
+    @Schema(description = "id", example = "28186")
+    private Long id;
+
+    @Schema(description = "区域名称", example = "芋艿")
+    private String name;
+
+    @Schema(description = "区域类型", example = "2")
+    private Integer type;
+
+    @Schema(description = "上级区域", example = "9103")
+    private Long parentId;
+
+}

+ 94 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/certificate/CertificateController.java

@@ -0,0 +1,94 @@
+package com.citu.module.menduner.system.controller.admin.certificate;
+
+import org.springframework.web.bind.annotation.*;
+import javax.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.security.access.prepost.PreAuthorize;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Operation;
+
+import javax.validation.*;
+import javax.servlet.http.*;
+import java.util.*;
+import java.io.IOException;
+
+import com.citu.framework.common.pojo.PageParam;
+import com.citu.framework.common.pojo.PageResult;
+import com.citu.framework.common.pojo.CommonResult;
+import com.citu.framework.common.util.object.BeanUtils;
+import static com.citu.framework.common.pojo.CommonResult.success;
+
+import com.citu.framework.excel.core.util.ExcelUtils;
+
+import com.citu.framework.apilog.core.annotation.ApiAccessLog;
+import static com.citu.framework.apilog.core.enums.OperateTypeEnum.*;
+
+import com.citu.module.menduner.system.controller.admin.certificate.vo.*;
+import com.citu.module.menduner.system.dal.dataobject.certificate.CertificateDO;
+import com.citu.module.menduner.system.service.certificate.CertificateService;
+
+@Tag(name = "管理后台 - 证书")
+@RestController
+@RequestMapping("/menduner.system/certificate")
+@Validated
+public class CertificateController {
+
+    @Resource
+    private CertificateService certificateService;
+
+    @PostMapping("/create")
+    @Operation(summary = "创建证书")
+    @PreAuthorize("@ss.hasPermission('menduner.system:certificate:create')")
+    public CommonResult<Long> createCertificate(@Valid @RequestBody CertificateSaveReqVO createReqVO) {
+        return success(certificateService.createCertificate(createReqVO));
+    }
+
+    @PutMapping("/update")
+    @Operation(summary = "更新证书")
+    @PreAuthorize("@ss.hasPermission('menduner.system:certificate:update')")
+    public CommonResult<Boolean> updateCertificate(@Valid @RequestBody CertificateSaveReqVO updateReqVO) {
+        certificateService.updateCertificate(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/delete")
+    @Operation(summary = "删除证书")
+    @Parameter(name = "id", description = "编号", required = true)
+    @PreAuthorize("@ss.hasPermission('menduner.system:certificate:delete')")
+    public CommonResult<Boolean> deleteCertificate(@RequestParam("id") Long id) {
+        certificateService.deleteCertificate(id);
+        return success(true);
+    }
+
+    @GetMapping("/get")
+    @Operation(summary = "获得证书")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('menduner.system:certificate:query')")
+    public CommonResult<CertificateRespVO> getCertificate(@RequestParam("id") Long id) {
+        CertificateDO certificate = certificateService.getCertificate(id);
+        return success(BeanUtils.toBean(certificate, CertificateRespVO.class));
+    }
+
+    @GetMapping("/page")
+    @Operation(summary = "获得证书分页")
+    @PreAuthorize("@ss.hasPermission('menduner.system:certificate:query')")
+    public CommonResult<PageResult<CertificateRespVO>> getCertificatePage(@Valid CertificatePageReqVO pageReqVO) {
+        PageResult<CertificateDO> pageResult = certificateService.getCertificatePage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, CertificateRespVO.class));
+    }
+
+    @GetMapping("/export-excel")
+    @Operation(summary = "导出证书 Excel")
+    @PreAuthorize("@ss.hasPermission('menduner.system:certificate:export')")
+    @ApiAccessLog(operateType = EXPORT)
+    public void exportCertificateExcel(@Valid CertificatePageReqVO pageReqVO,
+              HttpServletResponse response) throws IOException {
+        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<CertificateDO> list = certificateService.getCertificatePage(pageReqVO).getList();
+        // 导出 Excel
+        ExcelUtils.write(response, "证书.xls", "数据", CertificateRespVO.class,
+                        BeanUtils.toBean(list, CertificateRespVO.class));
+    }
+
+}

+ 34 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/certificate/vo/CertificatePageReqVO.java

@@ -0,0 +1,34 @@
+package com.citu.module.menduner.system.controller.admin.certificate.vo;
+
+import lombok.*;
+import java.util.*;
+import io.swagger.v3.oas.annotations.media.Schema;
+import com.citu.framework.common.pojo.PageParam;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+
+import static com.citu.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 证书分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class CertificatePageReqVO extends PageParam {
+
+    @Schema(description = "证书中文名称")
+    private String nameCn;
+
+    @Schema(description = "证书英文名称")
+    private String nameEn;
+
+    @Schema(description = "上级id", example = "19827")
+    private Long parentId;
+
+    @Schema(description = "层级")
+    private Boolean level;
+
+    @Schema(description = "创建时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+
+}

+ 40 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/certificate/vo/CertificateRespVO.java

@@ -0,0 +1,40 @@
+package com.citu.module.menduner.system.controller.admin.certificate.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import java.util.*;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+import com.alibaba.excel.annotation.*;
+
+@Schema(description = "管理后台 - 证书 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class CertificateRespVO {
+
+    @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "16166")
+    @ExcelProperty("id")
+    private Long id;
+
+    @Schema(description = "证书中文名称", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("证书中文名称")
+    private String nameCn;
+
+    @Schema(description = "证书英文名称")
+    @ExcelProperty("证书英文名称")
+    private String nameEn;
+
+    @Schema(description = "上级id", requiredMode = Schema.RequiredMode.REQUIRED, example = "19827")
+    @ExcelProperty("上级id")
+    private Long parentId;
+
+    @Schema(description = "层级")
+    @ExcelProperty("层级")
+    private Boolean level;
+
+    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("创建时间")
+    private LocalDateTime createTime;
+
+}

+ 29 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/certificate/vo/CertificateSaveReqVO.java

@@ -0,0 +1,29 @@
+package com.citu.module.menduner.system.controller.admin.certificate.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import javax.validation.constraints.*;
+
+@Schema(description = "管理后台 - 证书新增/修改 Request VO")
+@Data
+public class CertificateSaveReqVO {
+
+    @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "16166")
+    private Long id;
+
+    @Schema(description = "证书中文名称", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotEmpty(message = "证书中文名称不能为空")
+    private String nameCn;
+
+    @Schema(description = "证书英文名称")
+    private String nameEn;
+
+    @Schema(description = "上级id", requiredMode = Schema.RequiredMode.REQUIRED, example = "19827")
+    @NotNull(message = "上级id不能为空")
+    private Long parentId;
+
+    @Schema(description = "层级")
+    private Boolean level;
+
+}

+ 94 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/cvattachment/CvAttachmentController.java

@@ -0,0 +1,94 @@
+package com.citu.module.menduner.system.controller.admin.cvattachment;
+
+import org.springframework.web.bind.annotation.*;
+import javax.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.security.access.prepost.PreAuthorize;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Operation;
+
+import javax.validation.*;
+import javax.servlet.http.*;
+import java.util.*;
+import java.io.IOException;
+
+import com.citu.framework.common.pojo.PageParam;
+import com.citu.framework.common.pojo.PageResult;
+import com.citu.framework.common.pojo.CommonResult;
+import com.citu.framework.common.util.object.BeanUtils;
+import static com.citu.framework.common.pojo.CommonResult.success;
+
+import com.citu.framework.excel.core.util.ExcelUtils;
+
+import com.citu.framework.apilog.core.annotation.ApiAccessLog;
+import static com.citu.framework.apilog.core.enums.OperateTypeEnum.*;
+
+import com.citu.module.menduner.system.controller.admin.cvattachment.vo.*;
+import com.citu.module.menduner.system.dal.dataobject.cvattachment.CvAttachmentDO;
+import com.citu.module.menduner.system.service.cvattachment.CvAttachmentService;
+
+@Tag(name = "管理后台 - 简历附件")
+@RestController
+@RequestMapping("/menduner.system/cv-attachment")
+@Validated
+public class CvAttachmentController {
+
+    @Resource
+    private CvAttachmentService cvAttachmentService;
+
+    @PostMapping("/create")
+    @Operation(summary = "创建简历附件")
+    @PreAuthorize("@ss.hasPermission('menduner.system:cv-attachment:create')")
+    public CommonResult<Long> createCvAttachment(@Valid @RequestBody CvAttachmentSaveReqVO createReqVO) {
+        return success(cvAttachmentService.createCvAttachment(createReqVO));
+    }
+
+    @PutMapping("/update")
+    @Operation(summary = "更新简历附件")
+    @PreAuthorize("@ss.hasPermission('menduner.system:cv-attachment:update')")
+    public CommonResult<Boolean> updateCvAttachment(@Valid @RequestBody CvAttachmentSaveReqVO updateReqVO) {
+        cvAttachmentService.updateCvAttachment(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/delete")
+    @Operation(summary = "删除简历附件")
+    @Parameter(name = "id", description = "编号", required = true)
+    @PreAuthorize("@ss.hasPermission('menduner.system:cv-attachment:delete')")
+    public CommonResult<Boolean> deleteCvAttachment(@RequestParam("id") Long id) {
+        cvAttachmentService.deleteCvAttachment(id);
+        return success(true);
+    }
+
+    @GetMapping("/get")
+    @Operation(summary = "获得简历附件")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('menduner.system:cv-attachment:query')")
+    public CommonResult<CvAttachmentRespVO> getCvAttachment(@RequestParam("id") Long id) {
+        CvAttachmentDO cvAttachment = cvAttachmentService.getCvAttachment(id);
+        return success(BeanUtils.toBean(cvAttachment, CvAttachmentRespVO.class));
+    }
+
+    @GetMapping("/page")
+    @Operation(summary = "获得简历附件分页")
+    @PreAuthorize("@ss.hasPermission('menduner.system:cv-attachment:query')")
+    public CommonResult<PageResult<CvAttachmentRespVO>> getCvAttachmentPage(@Valid CvAttachmentPageReqVO pageReqVO) {
+        PageResult<CvAttachmentDO> pageResult = cvAttachmentService.getCvAttachmentPage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, CvAttachmentRespVO.class));
+    }
+
+    @GetMapping("/export-excel")
+    @Operation(summary = "导出简历附件 Excel")
+    @PreAuthorize("@ss.hasPermission('menduner.system:cv-attachment:export')")
+    @ApiAccessLog(operateType = EXPORT)
+    public void exportCvAttachmentExcel(@Valid CvAttachmentPageReqVO pageReqVO,
+              HttpServletResponse response) throws IOException {
+        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<CvAttachmentDO> list = cvAttachmentService.getCvAttachmentPage(pageReqVO).getList();
+        // 导出 Excel
+        ExcelUtils.write(response, "简历附件.xls", "数据", CvAttachmentRespVO.class,
+                        BeanUtils.toBean(list, CvAttachmentRespVO.class));
+    }
+
+}

+ 31 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/cvattachment/vo/CvAttachmentPageReqVO.java

@@ -0,0 +1,31 @@
+package com.citu.module.menduner.system.controller.admin.cvattachment.vo;
+
+import lombok.*;
+import java.util.*;
+import io.swagger.v3.oas.annotations.media.Schema;
+import com.citu.framework.common.pojo.PageParam;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+
+import static com.citu.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 简历附件分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class CvAttachmentPageReqVO extends PageParam {
+
+    @Schema(description = "用户id", example = "19645")
+    private Long userId;
+
+    @Schema(description = "简历附件标题")
+    private String title;
+
+    @Schema(description = "简历附件地址", example = "https://www.iocoder.cn")
+    private String url;
+
+    @Schema(description = "创建时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+
+}

+ 36 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/cvattachment/vo/CvAttachmentRespVO.java

@@ -0,0 +1,36 @@
+package com.citu.module.menduner.system.controller.admin.cvattachment.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import java.util.*;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+import com.alibaba.excel.annotation.*;
+
+@Schema(description = "管理后台 - 简历附件 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class CvAttachmentRespVO {
+
+    @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "25962")
+    @ExcelProperty("id")
+    private Long id;
+
+    @Schema(description = "用户id", example = "19645")
+    @ExcelProperty("用户id")
+    private Long userId;
+
+    @Schema(description = "简历附件标题")
+    @ExcelProperty("简历附件标题")
+    private String title;
+
+    @Schema(description = "简历附件地址", example = "https://www.iocoder.cn")
+    @ExcelProperty("简历附件地址")
+    private String url;
+
+    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("创建时间")
+    private LocalDateTime createTime;
+
+}

+ 24 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/cvattachment/vo/CvAttachmentSaveReqVO.java

@@ -0,0 +1,24 @@
+package com.citu.module.menduner.system.controller.admin.cvattachment.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import javax.validation.constraints.*;
+
+@Schema(description = "管理后台 - 简历附件新增/修改 Request VO")
+@Data
+public class CvAttachmentSaveReqVO {
+
+    @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "25962")
+    private Long id;
+
+    @Schema(description = "用户id", example = "19645")
+    private Long userId;
+
+    @Schema(description = "简历附件标题")
+    private String title;
+
+    @Schema(description = "简历附件地址", example = "https://www.iocoder.cn")
+    private String url;
+
+}

+ 94 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/eduexp/EduExpController.java

@@ -0,0 +1,94 @@
+package com.citu.module.menduner.system.controller.admin.eduexp;
+
+import org.springframework.web.bind.annotation.*;
+import javax.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.security.access.prepost.PreAuthorize;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Operation;
+
+import javax.validation.*;
+import javax.servlet.http.*;
+import java.util.*;
+import java.io.IOException;
+
+import com.citu.framework.common.pojo.PageParam;
+import com.citu.framework.common.pojo.PageResult;
+import com.citu.framework.common.pojo.CommonResult;
+import com.citu.framework.common.util.object.BeanUtils;
+import static com.citu.framework.common.pojo.CommonResult.success;
+
+import com.citu.framework.excel.core.util.ExcelUtils;
+
+import com.citu.framework.apilog.core.annotation.ApiAccessLog;
+import static com.citu.framework.apilog.core.enums.OperateTypeEnum.*;
+
+import com.citu.module.menduner.system.controller.admin.eduexp.vo.*;
+import com.citu.module.menduner.system.dal.dataobject.eduexp.EduExpDO;
+import com.citu.module.menduner.system.service.eduexp.EduExpService;
+
+@Tag(name = "管理后台 - 教育经历")
+@RestController
+@RequestMapping("/menduner.system/edu-exp")
+@Validated
+public class EduExpController {
+
+    @Resource
+    private EduExpService eduExpService;
+
+    @PostMapping("/create")
+    @Operation(summary = "创建教育经历")
+    @PreAuthorize("@ss.hasPermission('menduner.system:edu-exp:create')")
+    public CommonResult<Long> createEduExp(@Valid @RequestBody EduExpSaveReqVO createReqVO) {
+        return success(eduExpService.createEduExp(createReqVO));
+    }
+
+    @PutMapping("/update")
+    @Operation(summary = "更新教育经历")
+    @PreAuthorize("@ss.hasPermission('menduner.system:edu-exp:update')")
+    public CommonResult<Boolean> updateEduExp(@Valid @RequestBody EduExpSaveReqVO updateReqVO) {
+        eduExpService.updateEduExp(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/delete")
+    @Operation(summary = "删除教育经历")
+    @Parameter(name = "id", description = "编号", required = true)
+    @PreAuthorize("@ss.hasPermission('menduner.system:edu-exp:delete')")
+    public CommonResult<Boolean> deleteEduExp(@RequestParam("id") Long id) {
+        eduExpService.deleteEduExp(id);
+        return success(true);
+    }
+
+    @GetMapping("/get")
+    @Operation(summary = "获得教育经历")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('menduner.system:edu-exp:query')")
+    public CommonResult<EduExpRespVO> getEduExp(@RequestParam("id") Long id) {
+        EduExpDO eduExp = eduExpService.getEduExp(id);
+        return success(BeanUtils.toBean(eduExp, EduExpRespVO.class));
+    }
+
+    @GetMapping("/page")
+    @Operation(summary = "获得教育经历分页")
+    @PreAuthorize("@ss.hasPermission('menduner.system:edu-exp:query')")
+    public CommonResult<PageResult<EduExpRespVO>> getEduExpPage(@Valid EduExpPageReqVO pageReqVO) {
+        PageResult<EduExpDO> pageResult = eduExpService.getEduExpPage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, EduExpRespVO.class));
+    }
+
+    @GetMapping("/export-excel")
+    @Operation(summary = "导出教育经历 Excel")
+    @PreAuthorize("@ss.hasPermission('menduner.system:edu-exp:export')")
+    @ApiAccessLog(operateType = EXPORT)
+    public void exportEduExpExcel(@Valid EduExpPageReqVO pageReqVO,
+              HttpServletResponse response) throws IOException {
+        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<EduExpDO> list = eduExpService.getEduExpPage(pageReqVO).getList();
+        // 导出 Excel
+        ExcelUtils.write(response, "教育经历.xls", "数据", EduExpRespVO.class,
+                        BeanUtils.toBean(list, EduExpRespVO.class));
+    }
+
+}

+ 57 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/eduexp/vo/EduExpPageReqVO.java

@@ -0,0 +1,57 @@
+package com.citu.module.menduner.system.controller.admin.eduexp.vo;
+
+import com.citu.framework.common.pojo.PageParam;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
+import static com.citu.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 教育经历分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class EduExpPageReqVO extends PageParam {
+
+    @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 = "在校开始日期")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] startTime;
+
+    @Schema(description = "在校结束时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] endTime;
+
+    @Schema(description = "在校经历")
+    private String content;
+
+    @Schema(description = "创建时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+
+}

+ 70 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/eduexp/vo/EduExpRespVO.java

@@ -0,0 +1,70 @@
+package com.citu.module.menduner.system.controller.admin.eduexp.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+
+import java.time.LocalDate;
+import java.util.*;
+import java.util.*;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+import com.alibaba.excel.annotation.*;
+import com.citu.framework.excel.core.annotations.DictFormat;
+import com.citu.framework.excel.core.convert.DictConvert;
+
+@Schema(description = "管理后台 - 教育经历 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class EduExpRespVO {
+
+    @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "24831")
+    @ExcelProperty("id")
+    private Long id;
+
+    @Schema(description = "用户id", example = "30034")
+    @ExcelProperty("用户id")
+    private Long userId;
+
+    @Schema(description = "学校id", example = "926")
+    @ExcelProperty("学校id")
+    private Long schoolId;
+
+    @Schema(description = "学校名称(没有选择系统企业可自定义)", example = "李四")
+    @ExcelProperty("学校名称(没有选择系统企业可自定义)")
+    private String schoolName;
+
+    @Schema(description = "学历(0初中及以下 | 1中专/中技 | 2高中 | 3大专 | 4 本科 5 硕士 6 博士 99 其他)", example = "2")
+    @ExcelProperty(value = "学历(0初中及以下 | 1中专/中技 | 2高中 | 3大专 | 4 本科 5 硕士 6 博士 99 其他)", converter = DictConvert.class)
+    @DictFormat("menduner_education_type") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
+    private Integer educationType;
+
+    @Schema(description = "学制类型(0 全日制 | 1 非全日制)", example = "1")
+    @ExcelProperty(value = "学制类型(0 全日制 | 1 非全日制)", converter = DictConvert.class)
+    @DictFormat("menduner_education_system_type") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
+    private Integer educationSystemType;
+
+    @Schema(description = "专业id", example = "30649")
+    @ExcelProperty("专业id")
+    private Long majorId;
+
+    @Schema(description = "专业名称(没有选择系统企业可自定义)")
+    @ExcelProperty("专业名称(没有选择系统企业可自定义)")
+    private String major;
+
+    @Schema(description = "在校开始日期")
+    @ExcelProperty("在校开始日期")
+    private LocalDateTime startTime;
+
+    @Schema(description = "在校结束时间")
+    @ExcelProperty("在校结束时间")
+    private LocalDateTime endTime;
+
+    @Schema(description = "在校经历")
+    @ExcelProperty("在校经历")
+    private String content;
+
+    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("创建时间")
+    private LocalDateTime createTime;
+
+}

+ 45 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/eduexp/vo/EduExpSaveReqVO.java

@@ -0,0 +1,45 @@
+package com.citu.module.menduner.system.controller.admin.eduexp.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Schema(description = "管理后台 - 教育经历新增/修改 Request VO")
+@Data
+public class EduExpSaveReqVO {
+
+    @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;
+
+}

+ 94 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/jobinterested/JobInterestedController.java

@@ -0,0 +1,94 @@
+package com.citu.module.menduner.system.controller.admin.jobinterested;
+
+import org.springframework.web.bind.annotation.*;
+import javax.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.security.access.prepost.PreAuthorize;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Operation;
+
+import javax.validation.*;
+import javax.servlet.http.*;
+import java.util.*;
+import java.io.IOException;
+
+import com.citu.framework.common.pojo.PageParam;
+import com.citu.framework.common.pojo.PageResult;
+import com.citu.framework.common.pojo.CommonResult;
+import com.citu.framework.common.util.object.BeanUtils;
+import static com.citu.framework.common.pojo.CommonResult.success;
+
+import com.citu.framework.excel.core.util.ExcelUtils;
+
+import com.citu.framework.apilog.core.annotation.ApiAccessLog;
+import static com.citu.framework.apilog.core.enums.OperateTypeEnum.*;
+
+import com.citu.module.menduner.system.controller.admin.jobinterested.vo.*;
+import com.citu.module.menduner.system.dal.dataobject.jobinterested.JobInterestedDO;
+import com.citu.module.menduner.system.service.jobinterested.JobInterestedService;
+
+@Tag(name = "管理后台 - 求职意向")
+@RestController
+@RequestMapping("/menduner.system/job-interested")
+@Validated
+public class JobInterestedController {
+
+    @Resource
+    private JobInterestedService jobInterestedService;
+
+    @PostMapping("/create")
+    @Operation(summary = "创建求职意向")
+    @PreAuthorize("@ss.hasPermission('menduner.system:job-interested:create')")
+    public CommonResult<Long> createJobInterested(@Valid @RequestBody JobInterestedSaveReqVO createReqVO) {
+        return success(jobInterestedService.createJobInterested(createReqVO));
+    }
+
+    @PutMapping("/update")
+    @Operation(summary = "更新求职意向")
+    @PreAuthorize("@ss.hasPermission('menduner.system:job-interested:update')")
+    public CommonResult<Boolean> updateJobInterested(@Valid @RequestBody JobInterestedSaveReqVO updateReqVO) {
+        jobInterestedService.updateJobInterested(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/delete")
+    @Operation(summary = "删除求职意向")
+    @Parameter(name = "id", description = "编号", required = true)
+    @PreAuthorize("@ss.hasPermission('menduner.system:job-interested:delete')")
+    public CommonResult<Boolean> deleteJobInterested(@RequestParam("id") Long id) {
+        jobInterestedService.deleteJobInterested(id);
+        return success(true);
+    }
+
+    @GetMapping("/get")
+    @Operation(summary = "获得求职意向")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('menduner.system:job-interested:query')")
+    public CommonResult<JobInterestedRespVO> getJobInterested(@RequestParam("id") Long id) {
+        JobInterestedDO jobInterested = jobInterestedService.getJobInterested(id);
+        return success(BeanUtils.toBean(jobInterested, JobInterestedRespVO.class));
+    }
+
+    @GetMapping("/page")
+    @Operation(summary = "获得求职意向分页")
+    @PreAuthorize("@ss.hasPermission('menduner.system:job-interested:query')")
+    public CommonResult<PageResult<JobInterestedRespVO>> getJobInterestedPage(@Valid JobInterestedPageReqVO pageReqVO) {
+        PageResult<JobInterestedDO> pageResult = jobInterestedService.getJobInterestedPage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, JobInterestedRespVO.class));
+    }
+
+    @GetMapping("/export-excel")
+    @Operation(summary = "导出求职意向 Excel")
+    @PreAuthorize("@ss.hasPermission('menduner.system:job-interested:export')")
+    @ApiAccessLog(operateType = EXPORT)
+    public void exportJobInterestedExcel(@Valid JobInterestedPageReqVO pageReqVO,
+              HttpServletResponse response) throws IOException {
+        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<JobInterestedDO> list = jobInterestedService.getJobInterestedPage(pageReqVO).getList();
+        // 导出 Excel
+        ExcelUtils.write(response, "求职意向.xls", "数据", JobInterestedRespVO.class,
+                        BeanUtils.toBean(list, JobInterestedRespVO.class));
+    }
+
+}

+ 47 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/jobinterested/vo/JobInterestedPageReqVO.java

@@ -0,0 +1,47 @@
+package com.citu.module.menduner.system.controller.admin.jobinterested.vo;
+
+import lombok.*;
+import java.util.*;
+import io.swagger.v3.oas.annotations.media.Schema;
+import com.citu.framework.common.pojo.PageParam;
+import java.math.BigDecimal;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+
+import static com.citu.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 求职意向分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class JobInterestedPageReqVO extends PageParam {
+
+    @Schema(description = "用户id", example = "18091")
+    private Long userId;
+
+    @Schema(description = "求职类型(0全职 1兼职 2临时 3实习)", example = "2")
+    private Integer jobType;
+
+    @Schema(description = "期望职位", example = "20359")
+    private Long positionId;
+
+    @Schema(description = "期望行业")
+    private String industryIdList;
+
+    @Schema(description = "薪酬最低要求")
+    private BigDecimal payMin;
+
+    @Schema(description = "薪酬最高要求")
+    private BigDecimal payMax;
+
+    @Schema(description = "工作城市", example = "15253")
+    private Long workAreaId;
+
+    @Schema(description = "感兴趣城市")
+    private String interestedAreaIdList;
+
+    @Schema(description = "创建时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+
+}

+ 60 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/jobinterested/vo/JobInterestedRespVO.java

@@ -0,0 +1,60 @@
+package com.citu.module.menduner.system.controller.admin.jobinterested.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import java.util.*;
+import java.math.BigDecimal;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+import com.alibaba.excel.annotation.*;
+import com.citu.framework.excel.core.annotations.DictFormat;
+import com.citu.framework.excel.core.convert.DictConvert;
+
+@Schema(description = "管理后台 - 求职意向 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class JobInterestedRespVO {
+
+    @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "19777")
+    @ExcelProperty("id")
+    private Long id;
+
+    @Schema(description = "用户id", example = "18091")
+    @ExcelProperty("用户id")
+    private Long userId;
+
+    @Schema(description = "求职类型(0全职 1兼职 2临时 3实习)", example = "2")
+    @ExcelProperty(value = "求职类型(0全职 1兼职 2临时 3实习)", converter = DictConvert.class)
+    @DictFormat("menduner_job_type") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
+    private Integer jobType;
+
+    @Schema(description = "期望职位", example = "20359")
+    @ExcelProperty("期望职位")
+    private Long positionId;
+
+    @Schema(description = "期望行业")
+    @ExcelProperty("期望行业")
+    private String industryIdList;
+
+    @Schema(description = "薪酬最低要求")
+    @ExcelProperty("薪酬最低要求")
+    private BigDecimal payMin;
+
+    @Schema(description = "薪酬最高要求")
+    @ExcelProperty("薪酬最高要求")
+    private BigDecimal payMax;
+
+    @Schema(description = "工作城市", example = "15253")
+    @ExcelProperty("工作城市")
+    private Long workAreaId;
+
+    @Schema(description = "感兴趣城市")
+    @ExcelProperty("感兴趣城市")
+    private String interestedAreaIdList;
+
+    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("创建时间")
+    private LocalDateTime createTime;
+
+}

+ 40 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/jobinterested/vo/JobInterestedSaveReqVO.java

@@ -0,0 +1,40 @@
+package com.citu.module.menduner.system.controller.admin.jobinterested.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import javax.validation.constraints.*;
+import java.math.BigDecimal;
+
+@Schema(description = "管理后台 - 求职意向新增/修改 Request VO")
+@Data
+public class JobInterestedSaveReqVO {
+
+    @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "19777")
+    private Long id;
+
+    @Schema(description = "用户id", example = "18091")
+    private Long userId;
+
+    @Schema(description = "求职类型(0全职 1兼职 2临时 3实习)", example = "2")
+    private Integer jobType;
+
+    @Schema(description = "期望职位", example = "20359")
+    private Long positionId;
+
+    @Schema(description = "期望行业")
+    private String industryIdList;
+
+    @Schema(description = "薪酬最低要求")
+    private BigDecimal payMin;
+
+    @Schema(description = "薪酬最高要求")
+    private BigDecimal payMax;
+
+    @Schema(description = "工作城市", example = "15253")
+    private Long workAreaId;
+
+    @Schema(description = "感兴趣城市")
+    private String interestedAreaIdList;
+
+}

+ 94 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/major/MajorController.java

@@ -0,0 +1,94 @@
+package com.citu.module.menduner.system.controller.admin.major;
+
+import org.springframework.web.bind.annotation.*;
+import javax.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.security.access.prepost.PreAuthorize;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Operation;
+
+import javax.validation.*;
+import javax.servlet.http.*;
+import java.util.*;
+import java.io.IOException;
+
+import com.citu.framework.common.pojo.PageParam;
+import com.citu.framework.common.pojo.PageResult;
+import com.citu.framework.common.pojo.CommonResult;
+import com.citu.framework.common.util.object.BeanUtils;
+import static com.citu.framework.common.pojo.CommonResult.success;
+
+import com.citu.framework.excel.core.util.ExcelUtils;
+
+import com.citu.framework.apilog.core.annotation.ApiAccessLog;
+import static com.citu.framework.apilog.core.enums.OperateTypeEnum.*;
+
+import com.citu.module.menduner.system.controller.admin.major.vo.*;
+import com.citu.module.menduner.system.dal.dataobject.major.MajorDO;
+import com.citu.module.menduner.system.service.major.MajorService;
+
+@Tag(name = "管理后台 - 专业")
+@RestController
+@RequestMapping("/menduner.system/major")
+@Validated
+public class MajorController {
+
+    @Resource
+    private MajorService majorService;
+
+    @PostMapping("/create")
+    @Operation(summary = "创建专业")
+    @PreAuthorize("@ss.hasPermission('menduner.system:major:create')")
+    public CommonResult<Long> createMajor(@Valid @RequestBody MajorSaveReqVO createReqVO) {
+        return success(majorService.createMajor(createReqVO));
+    }
+
+    @PutMapping("/update")
+    @Operation(summary = "更新专业")
+    @PreAuthorize("@ss.hasPermission('menduner.system:major:update')")
+    public CommonResult<Boolean> updateMajor(@Valid @RequestBody MajorSaveReqVO updateReqVO) {
+        majorService.updateMajor(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/delete")
+    @Operation(summary = "删除专业")
+    @Parameter(name = "id", description = "编号", required = true)
+    @PreAuthorize("@ss.hasPermission('menduner.system:major:delete')")
+    public CommonResult<Boolean> deleteMajor(@RequestParam("id") Long id) {
+        majorService.deleteMajor(id);
+        return success(true);
+    }
+
+    @GetMapping("/get")
+    @Operation(summary = "获得专业")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('menduner.system:major:query')")
+    public CommonResult<MajorRespVO> getMajor(@RequestParam("id") Long id) {
+        MajorDO major = majorService.getMajor(id);
+        return success(BeanUtils.toBean(major, MajorRespVO.class));
+    }
+
+    @GetMapping("/page")
+    @Operation(summary = "获得专业分页")
+    @PreAuthorize("@ss.hasPermission('menduner.system:major:query')")
+    public CommonResult<PageResult<MajorRespVO>> getMajorPage(@Valid MajorPageReqVO pageReqVO) {
+        PageResult<MajorDO> pageResult = majorService.getMajorPage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, MajorRespVO.class));
+    }
+
+    @GetMapping("/export-excel")
+    @Operation(summary = "导出专业 Excel")
+    @PreAuthorize("@ss.hasPermission('menduner.system:major:export')")
+    @ApiAccessLog(operateType = EXPORT)
+    public void exportMajorExcel(@Valid MajorPageReqVO pageReqVO,
+              HttpServletResponse response) throws IOException {
+        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<MajorDO> list = majorService.getMajorPage(pageReqVO).getList();
+        // 导出 Excel
+        ExcelUtils.write(response, "专业.xls", "数据", MajorRespVO.class,
+                        BeanUtils.toBean(list, MajorRespVO.class));
+    }
+
+}

+ 31 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/major/vo/MajorPageReqVO.java

@@ -0,0 +1,31 @@
+package com.citu.module.menduner.system.controller.admin.major.vo;
+
+import lombok.*;
+import java.util.*;
+import io.swagger.v3.oas.annotations.media.Schema;
+import com.citu.framework.common.pojo.PageParam;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+
+import static com.citu.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 专业分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class MajorPageReqVO extends PageParam {
+
+    @Schema(description = "专业名称")
+    private String nameCn;
+
+    @Schema(description = "专业英文名称")
+    private String nameEn;
+
+    @Schema(description = "帐号状态(0正常 1停用)", example = "1")
+    private Integer status;
+
+    @Schema(description = "创建时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+
+}

+ 39 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/major/vo/MajorRespVO.java

@@ -0,0 +1,39 @@
+package com.citu.module.menduner.system.controller.admin.major.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import java.util.*;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+import com.alibaba.excel.annotation.*;
+import com.citu.framework.excel.core.annotations.DictFormat;
+import com.citu.framework.excel.core.convert.DictConvert;
+
+@Schema(description = "管理后台 - 专业 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class MajorRespVO {
+
+    @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "30317")
+    @ExcelProperty("id")
+    private Long id;
+
+    @Schema(description = "专业名称")
+    @ExcelProperty("专业名称")
+    private String nameCn;
+
+    @Schema(description = "专业英文名称")
+    @ExcelProperty("专业英文名称")
+    private String nameEn;
+
+    @Schema(description = "帐号状态(0正常 1停用)", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+    @ExcelProperty(value = "帐号状态(0正常 1停用)", converter = DictConvert.class)
+    @DictFormat("menduner_status") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
+    private Integer status;
+
+    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("创建时间")
+    private LocalDateTime createTime;
+
+}

+ 25 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/major/vo/MajorSaveReqVO.java

@@ -0,0 +1,25 @@
+package com.citu.module.menduner.system.controller.admin.major.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import javax.validation.constraints.*;
+
+@Schema(description = "管理后台 - 专业新增/修改 Request VO")
+@Data
+public class MajorSaveReqVO {
+
+    @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "30317")
+    private Long id;
+
+    @Schema(description = "专业名称")
+    private String nameCn;
+
+    @Schema(description = "专业英文名称")
+    private String nameEn;
+
+    @Schema(description = "帐号状态(0正常 1停用)", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+    @NotNull(message = "帐号状态(0正常 1停用)不能为空")
+    private Integer status;
+
+}

+ 94 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/positiontag/PositionTagController.java

@@ -0,0 +1,94 @@
+package com.citu.module.menduner.system.controller.admin.positiontag;
+
+import org.springframework.web.bind.annotation.*;
+import javax.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.security.access.prepost.PreAuthorize;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Operation;
+
+import javax.validation.*;
+import javax.servlet.http.*;
+import java.util.*;
+import java.io.IOException;
+
+import com.citu.framework.common.pojo.PageParam;
+import com.citu.framework.common.pojo.PageResult;
+import com.citu.framework.common.pojo.CommonResult;
+import com.citu.framework.common.util.object.BeanUtils;
+import static com.citu.framework.common.pojo.CommonResult.success;
+
+import com.citu.framework.excel.core.util.ExcelUtils;
+
+import com.citu.framework.apilog.core.annotation.ApiAccessLog;
+import static com.citu.framework.apilog.core.enums.OperateTypeEnum.*;
+
+import com.citu.module.menduner.system.controller.admin.positiontag.vo.*;
+import com.citu.module.menduner.system.dal.dataobject.positiontag.PositionTagDO;
+import com.citu.module.menduner.system.service.positiontag.PositionTagService;
+
+@Tag(name = "管理后台 - 职位标签")
+@RestController
+@RequestMapping("/menduner.system/position-tag")
+@Validated
+public class PositionTagController {
+
+    @Resource
+    private PositionTagService positionTagService;
+
+    @PostMapping("/create")
+    @Operation(summary = "创建职位标签")
+    @PreAuthorize("@ss.hasPermission('menduner.system:position-tag:create')")
+    public CommonResult<Long> createPositionTag(@Valid @RequestBody PositionTagSaveReqVO createReqVO) {
+        return success(positionTagService.createPositionTag(createReqVO));
+    }
+
+    @PutMapping("/update")
+    @Operation(summary = "更新职位标签")
+    @PreAuthorize("@ss.hasPermission('menduner.system:position-tag:update')")
+    public CommonResult<Boolean> updatePositionTag(@Valid @RequestBody PositionTagSaveReqVO updateReqVO) {
+        positionTagService.updatePositionTag(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/delete")
+    @Operation(summary = "删除职位标签")
+    @Parameter(name = "id", description = "编号", required = true)
+    @PreAuthorize("@ss.hasPermission('menduner.system:position-tag:delete')")
+    public CommonResult<Boolean> deletePositionTag(@RequestParam("id") Long id) {
+        positionTagService.deletePositionTag(id);
+        return success(true);
+    }
+
+    @GetMapping("/get")
+    @Operation(summary = "获得职位标签")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('menduner.system:position-tag:query')")
+    public CommonResult<PositionTagRespVO> getPositionTag(@RequestParam("id") Long id) {
+        PositionTagDO positionTag = positionTagService.getPositionTag(id);
+        return success(BeanUtils.toBean(positionTag, PositionTagRespVO.class));
+    }
+
+    @GetMapping("/page")
+    @Operation(summary = "获得职位标签分页")
+    @PreAuthorize("@ss.hasPermission('menduner.system:position-tag:query')")
+    public CommonResult<PageResult<PositionTagRespVO>> getPositionTagPage(@Valid PositionTagPageReqVO pageReqVO) {
+        PageResult<PositionTagDO> pageResult = positionTagService.getPositionTagPage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, PositionTagRespVO.class));
+    }
+
+    @GetMapping("/export-excel")
+    @Operation(summary = "导出职位标签 Excel")
+    @PreAuthorize("@ss.hasPermission('menduner.system:position-tag:export')")
+    @ApiAccessLog(operateType = EXPORT)
+    public void exportPositionTagExcel(@Valid PositionTagPageReqVO pageReqVO,
+              HttpServletResponse response) throws IOException {
+        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<PositionTagDO> list = positionTagService.getPositionTagPage(pageReqVO).getList();
+        // 导出 Excel
+        ExcelUtils.write(response, "职位标签.xls", "数据", PositionTagRespVO.class,
+                        BeanUtils.toBean(list, PositionTagRespVO.class));
+    }
+
+}

+ 28 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/positiontag/vo/PositionTagPageReqVO.java

@@ -0,0 +1,28 @@
+package com.citu.module.menduner.system.controller.admin.positiontag.vo;
+
+import lombok.*;
+import java.util.*;
+import io.swagger.v3.oas.annotations.media.Schema;
+import com.citu.framework.common.pojo.PageParam;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+
+import static com.citu.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 职位标签分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class PositionTagPageReqVO extends PageParam {
+
+    @Schema(description = "职位id", example = "10147")
+    private Long positionId;
+
+    @Schema(description = "标签")
+    private String label;
+
+    @Schema(description = "创建时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+
+}

+ 32 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/positiontag/vo/PositionTagRespVO.java

@@ -0,0 +1,32 @@
+package com.citu.module.menduner.system.controller.admin.positiontag.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import java.util.*;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+import com.alibaba.excel.annotation.*;
+
+@Schema(description = "管理后台 - 职位标签 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class PositionTagRespVO {
+
+    @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "5369")
+    @ExcelProperty("id")
+    private Long id;
+
+    @Schema(description = "职位id", example = "10147")
+    @ExcelProperty("职位id")
+    private Long positionId;
+
+    @Schema(description = "标签")
+    @ExcelProperty("标签")
+    private String label;
+
+    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("创建时间")
+    private LocalDateTime createTime;
+
+}

+ 21 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/positiontag/vo/PositionTagSaveReqVO.java

@@ -0,0 +1,21 @@
+package com.citu.module.menduner.system.controller.admin.positiontag.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import javax.validation.constraints.*;
+
+@Schema(description = "管理后台 - 职位标签新增/修改 Request VO")
+@Data
+public class PositionTagSaveReqVO {
+
+    @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "5369")
+    private Long id;
+
+    @Schema(description = "职位id", example = "10147")
+    private Long positionId;
+
+    @Schema(description = "标签")
+    private String label;
+
+}

+ 94 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/school/SchoolController.java

@@ -0,0 +1,94 @@
+package com.citu.module.menduner.system.controller.admin.school;
+
+import org.springframework.web.bind.annotation.*;
+import javax.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.security.access.prepost.PreAuthorize;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Operation;
+
+import javax.validation.*;
+import javax.servlet.http.*;
+import java.util.*;
+import java.io.IOException;
+
+import com.citu.framework.common.pojo.PageParam;
+import com.citu.framework.common.pojo.PageResult;
+import com.citu.framework.common.pojo.CommonResult;
+import com.citu.framework.common.util.object.BeanUtils;
+import static com.citu.framework.common.pojo.CommonResult.success;
+
+import com.citu.framework.excel.core.util.ExcelUtils;
+
+import com.citu.framework.apilog.core.annotation.ApiAccessLog;
+import static com.citu.framework.apilog.core.enums.OperateTypeEnum.*;
+
+import com.citu.module.menduner.system.controller.admin.school.vo.*;
+import com.citu.module.menduner.system.dal.dataobject.school.SchoolDO;
+import com.citu.module.menduner.system.service.school.SchoolService;
+
+@Tag(name = "管理后台 - 学校")
+@RestController
+@RequestMapping("/menduner.system/school")
+@Validated
+public class SchoolController {
+
+    @Resource
+    private SchoolService schoolService;
+
+    @PostMapping("/create")
+    @Operation(summary = "创建学校")
+    @PreAuthorize("@ss.hasPermission('menduner.system:school:create')")
+    public CommonResult<Long> createSchool(@Valid @RequestBody SchoolSaveReqVO createReqVO) {
+        return success(schoolService.createSchool(createReqVO));
+    }
+
+    @PutMapping("/update")
+    @Operation(summary = "更新学校")
+    @PreAuthorize("@ss.hasPermission('menduner.system:school:update')")
+    public CommonResult<Boolean> updateSchool(@Valid @RequestBody SchoolSaveReqVO updateReqVO) {
+        schoolService.updateSchool(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/delete")
+    @Operation(summary = "删除学校")
+    @Parameter(name = "id", description = "编号", required = true)
+    @PreAuthorize("@ss.hasPermission('menduner.system:school:delete')")
+    public CommonResult<Boolean> deleteSchool(@RequestParam("id") Long id) {
+        schoolService.deleteSchool(id);
+        return success(true);
+    }
+
+    @GetMapping("/get")
+    @Operation(summary = "获得学校")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('menduner.system:school:query')")
+    public CommonResult<SchoolRespVO> getSchool(@RequestParam("id") Long id) {
+        SchoolDO school = schoolService.getSchool(id);
+        return success(BeanUtils.toBean(school, SchoolRespVO.class));
+    }
+
+    @GetMapping("/page")
+    @Operation(summary = "获得学校分页")
+    @PreAuthorize("@ss.hasPermission('menduner.system:school:query')")
+    public CommonResult<PageResult<SchoolRespVO>> getSchoolPage(@Valid SchoolPageReqVO pageReqVO) {
+        PageResult<SchoolDO> pageResult = schoolService.getSchoolPage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, SchoolRespVO.class));
+    }
+
+    @GetMapping("/export-excel")
+    @Operation(summary = "导出学校 Excel")
+    @PreAuthorize("@ss.hasPermission('menduner.system:school:export')")
+    @ApiAccessLog(operateType = EXPORT)
+    public void exportSchoolExcel(@Valid SchoolPageReqVO pageReqVO,
+              HttpServletResponse response) throws IOException {
+        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<SchoolDO> list = schoolService.getSchoolPage(pageReqVO).getList();
+        // 导出 Excel
+        ExcelUtils.write(response, "学校.xls", "数据", SchoolRespVO.class,
+                        BeanUtils.toBean(list, SchoolRespVO.class));
+    }
+
+}

+ 40 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/school/vo/SchoolPageReqVO.java

@@ -0,0 +1,40 @@
+package com.citu.module.menduner.system.controller.admin.school.vo;
+
+import lombok.*;
+import java.util.*;
+import io.swagger.v3.oas.annotations.media.Schema;
+import com.citu.framework.common.pojo.PageParam;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+
+import static com.citu.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 学校分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class SchoolPageReqVO extends PageParam {
+
+    @Schema(description = "学校名称", example = "王五")
+    private String name;
+
+    @Schema(description = "学校所在区域", example = "9857")
+    private Long areaId;
+
+    @Schema(description = "学校所在地址")
+    private String address;
+
+    @Schema(description = "经度")
+    private String longitude;
+
+    @Schema(description = "维度")
+    private String latitude;
+
+    @Schema(description = "帐号状态(0正常 1停用)", example = "2")
+    private Integer status;
+
+    @Schema(description = "创建时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+
+}

+ 48 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/school/vo/SchoolRespVO.java

@@ -0,0 +1,48 @@
+package com.citu.module.menduner.system.controller.admin.school.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import java.util.*;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+import com.alibaba.excel.annotation.*;
+
+@Schema(description = "管理后台 - 学校 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class SchoolRespVO {
+
+    @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "32163")
+    @ExcelProperty("id")
+    private Long id;
+
+    @Schema(description = "学校名称", example = "王五")
+    @ExcelProperty("学校名称")
+    private String name;
+
+    @Schema(description = "学校所在区域", example = "9857")
+    @ExcelProperty("学校所在区域")
+    private Long areaId;
+
+    @Schema(description = "学校所在地址")
+    @ExcelProperty("学校所在地址")
+    private String address;
+
+    @Schema(description = "经度")
+    @ExcelProperty("经度")
+    private String longitude;
+
+    @Schema(description = "维度")
+    @ExcelProperty("维度")
+    private String latitude;
+
+    @Schema(description = "帐号状态(0正常 1停用)", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
+    @ExcelProperty("帐号状态(0正常 1停用)")
+    private Integer status;
+
+    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("创建时间")
+    private LocalDateTime createTime;
+
+}

+ 34 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/school/vo/SchoolSaveReqVO.java

@@ -0,0 +1,34 @@
+package com.citu.module.menduner.system.controller.admin.school.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import javax.validation.constraints.*;
+
+@Schema(description = "管理后台 - 学校新增/修改 Request VO")
+@Data
+public class SchoolSaveReqVO {
+
+    @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "32163")
+    private Long id;
+
+    @Schema(description = "学校名称", example = "王五")
+    private String name;
+
+    @Schema(description = "学校所在区域", example = "9857")
+    private Long areaId;
+
+    @Schema(description = "学校所在地址")
+    private String address;
+
+    @Schema(description = "经度")
+    private String longitude;
+
+    @Schema(description = "维度")
+    private String latitude;
+
+    @Schema(description = "帐号状态(0正常 1停用)", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
+    @NotNull(message = "帐号状态(0正常 1停用)不能为空")
+    private Integer status;
+
+}

+ 94 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/usercertificate/UserCertificateController.java

@@ -0,0 +1,94 @@
+package com.citu.module.menduner.system.controller.admin.usercertificate;
+
+import org.springframework.web.bind.annotation.*;
+import javax.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.security.access.prepost.PreAuthorize;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Operation;
+
+import javax.validation.*;
+import javax.servlet.http.*;
+import java.util.*;
+import java.io.IOException;
+
+import com.citu.framework.common.pojo.PageParam;
+import com.citu.framework.common.pojo.PageResult;
+import com.citu.framework.common.pojo.CommonResult;
+import com.citu.framework.common.util.object.BeanUtils;
+import static com.citu.framework.common.pojo.CommonResult.success;
+
+import com.citu.framework.excel.core.util.ExcelUtils;
+
+import com.citu.framework.apilog.core.annotation.ApiAccessLog;
+import static com.citu.framework.apilog.core.enums.OperateTypeEnum.*;
+
+import com.citu.module.menduner.system.controller.admin.usercertificate.vo.*;
+import com.citu.module.menduner.system.dal.dataobject.usercertificate.UserCertificateDO;
+import com.citu.module.menduner.system.service.usercertificate.UserCertificateService;
+
+@Tag(name = "管理后台 - 用户证书")
+@RestController
+@RequestMapping("/menduner.system/user-certificate")
+@Validated
+public class UserCertificateController {
+
+    @Resource
+    private UserCertificateService userCertificateService;
+
+    @PostMapping("/create")
+    @Operation(summary = "创建用户证书")
+    @PreAuthorize("@ss.hasPermission('menduner.system:user-certificate:create')")
+    public CommonResult<Long> createUserCertificate(@Valid @RequestBody UserCertificateSaveReqVO createReqVO) {
+        return success(userCertificateService.createUserCertificate(createReqVO));
+    }
+
+    @PutMapping("/update")
+    @Operation(summary = "更新用户证书")
+    @PreAuthorize("@ss.hasPermission('menduner.system:user-certificate:update')")
+    public CommonResult<Boolean> updateUserCertificate(@Valid @RequestBody UserCertificateSaveReqVO updateReqVO) {
+        userCertificateService.updateUserCertificate(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/delete")
+    @Operation(summary = "删除用户证书")
+    @Parameter(name = "id", description = "编号", required = true)
+    @PreAuthorize("@ss.hasPermission('menduner.system:user-certificate:delete')")
+    public CommonResult<Boolean> deleteUserCertificate(@RequestParam("id") Long id) {
+        userCertificateService.deleteUserCertificate(id);
+        return success(true);
+    }
+
+    @GetMapping("/get")
+    @Operation(summary = "获得用户证书")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('menduner.system:user-certificate:query')")
+    public CommonResult<UserCertificateRespVO> getUserCertificate(@RequestParam("id") Long id) {
+        UserCertificateDO userCertificate = userCertificateService.getUserCertificate(id);
+        return success(BeanUtils.toBean(userCertificate, UserCertificateRespVO.class));
+    }
+
+    @GetMapping("/page")
+    @Operation(summary = "获得用户证书分页")
+    @PreAuthorize("@ss.hasPermission('menduner.system:user-certificate:query')")
+    public CommonResult<PageResult<UserCertificateRespVO>> getUserCertificatePage(@Valid UserCertificatePageReqVO pageReqVO) {
+        PageResult<UserCertificateDO> pageResult = userCertificateService.getUserCertificatePage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, UserCertificateRespVO.class));
+    }
+
+    @GetMapping("/export-excel")
+    @Operation(summary = "导出用户证书 Excel")
+    @PreAuthorize("@ss.hasPermission('menduner.system:user-certificate:export')")
+    @ApiAccessLog(operateType = EXPORT)
+    public void exportUserCertificateExcel(@Valid UserCertificatePageReqVO pageReqVO,
+              HttpServletResponse response) throws IOException {
+        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<UserCertificateDO> list = userCertificateService.getUserCertificatePage(pageReqVO).getList();
+        // 导出 Excel
+        ExcelUtils.write(response, "用户证书.xls", "数据", UserCertificateRespVO.class,
+                        BeanUtils.toBean(list, UserCertificateRespVO.class));
+    }
+
+}

+ 28 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/usercertificate/vo/UserCertificatePageReqVO.java

@@ -0,0 +1,28 @@
+package com.citu.module.menduner.system.controller.admin.usercertificate.vo;
+
+import lombok.*;
+import java.util.*;
+import io.swagger.v3.oas.annotations.media.Schema;
+import com.citu.framework.common.pojo.PageParam;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+
+import static com.citu.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 用户证书分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class UserCertificatePageReqVO extends PageParam {
+
+    @Schema(description = "用户id", example = "16810")
+    private Long userId;
+
+    @Schema(description = "证书id", example = "29115")
+    private Long certificateId;
+
+    @Schema(description = "创建时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+
+}

+ 32 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/usercertificate/vo/UserCertificateRespVO.java

@@ -0,0 +1,32 @@
+package com.citu.module.menduner.system.controller.admin.usercertificate.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import java.util.*;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+import com.alibaba.excel.annotation.*;
+
+@Schema(description = "管理后台 - 用户证书 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class UserCertificateRespVO {
+
+    @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "25497")
+    @ExcelProperty("id")
+    private Long id;
+
+    @Schema(description = "用户id", requiredMode = Schema.RequiredMode.REQUIRED, example = "16810")
+    @ExcelProperty("用户id")
+    private Long userId;
+
+    @Schema(description = "证书id", example = "29115")
+    @ExcelProperty("证书id")
+    private Long certificateId;
+
+    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("创建时间")
+    private LocalDateTime createTime;
+
+}

+ 22 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/usercertificate/vo/UserCertificateSaveReqVO.java

@@ -0,0 +1,22 @@
+package com.citu.module.menduner.system.controller.admin.usercertificate.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import javax.validation.constraints.*;
+
+@Schema(description = "管理后台 - 用户证书新增/修改 Request VO")
+@Data
+public class UserCertificateSaveReqVO {
+
+    @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "25497")
+    private Long id;
+
+    @Schema(description = "用户id", requiredMode = Schema.RequiredMode.REQUIRED, example = "16810")
+    @NotNull(message = "用户id不能为空")
+    private Long userId;
+
+    @Schema(description = "证书id", example = "29115")
+    private Long certificateId;
+
+}

+ 93 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/userinfo/UserInfoController.java

@@ -0,0 +1,93 @@
+package com.citu.module.menduner.system.controller.admin.userinfo;
+
+import com.citu.framework.apilog.core.annotation.ApiAccessLog;
+import com.citu.framework.common.pojo.CommonResult;
+import com.citu.framework.common.pojo.PageParam;
+import com.citu.framework.common.pojo.PageResult;
+import com.citu.framework.common.util.object.BeanUtils;
+import com.citu.framework.excel.core.util.ExcelUtils;
+import com.citu.module.menduner.system.dal.dataobject.userinfo.UserInfoDO;
+import com.citu.module.menduner.system.service.userinfo.UserInfoService;
+import com.citu.module.menduner.system.controller.admin.userinfo.vo.UserInfoPageReqVO;
+import com.citu.module.menduner.system.controller.admin.userinfo.vo.UserInfoRespVO;
+import com.citu.module.menduner.system.controller.admin.userinfo.vo.UserInfoSaveReqVO;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+import java.io.IOException;
+import java.util.List;
+
+import static com.citu.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
+import static com.citu.framework.common.pojo.CommonResult.success;
+
+@Tag(name = "管理后台 - 用户信息-个人档案")
+@RestController
+@RequestMapping("/menduner.system/user-info")
+@Validated
+public class UserInfoController {
+
+    @Resource
+    private UserInfoService userInfoService;
+
+    @PostMapping("/create")
+    @Operation(summary = "创建用户信息-个人档案")
+    @PreAuthorize("@ss.hasPermission('menduner.system:user-info:create')")
+    public CommonResult<Long> createUserInfo(@Valid @RequestBody UserInfoSaveReqVO createReqVO) {
+        return success(userInfoService.createUserInfo(createReqVO));
+    }
+
+    @PutMapping("/update")
+    @Operation(summary = "更新用户信息-个人档案")
+    @PreAuthorize("@ss.hasPermission('menduner.system:user-info:update')")
+    public CommonResult<Boolean> updateUserInfo(@Valid @RequestBody UserInfoSaveReqVO updateReqVO) {
+        userInfoService.updateUserInfo(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/delete")
+    @Operation(summary = "删除用户信息-个人档案")
+    @Parameter(name = "id", description = "编号", required = true)
+    @PreAuthorize("@ss.hasPermission('menduner.system:user-info:delete')")
+    public CommonResult<Boolean> deleteUserInfo(@RequestParam("id") Long id) {
+        userInfoService.deleteUserInfo(id);
+        return success(true);
+    }
+
+    @GetMapping("/get")
+    @Operation(summary = "获得用户信息-个人档案")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('menduner.system:user-info:query')")
+    public CommonResult<UserInfoRespVO> getUserInfo(@RequestParam("id") Long id) {
+        UserInfoDO userInfo = userInfoService.getUserInfo(id);
+        return success(BeanUtils.toBean(userInfo, UserInfoRespVO.class));
+    }
+
+    @GetMapping("/page")
+    @Operation(summary = "获得用户信息-个人档案分页")
+    @PreAuthorize("@ss.hasPermission('menduner.system:user-info:query')")
+    public CommonResult<PageResult<UserInfoRespVO>> getUserInfoPage(@Valid UserInfoPageReqVO pageReqVO) {
+        PageResult<UserInfoDO> pageResult = userInfoService.getUserInfoPage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, UserInfoRespVO.class));
+    }
+
+    @GetMapping("/export-excel")
+    @Operation(summary = "导出用户信息-个人档案 Excel")
+    @PreAuthorize("@ss.hasPermission('menduner.system:user-info:export')")
+    @ApiAccessLog(operateType = EXPORT)
+    public void exportUserInfoExcel(@Valid UserInfoPageReqVO pageReqVO,
+                                    HttpServletResponse response) throws IOException {
+        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<UserInfoDO> list = userInfoService.getUserInfoPage(pageReqVO).getList();
+        // 导出 Excel
+        ExcelUtils.write(response, "用户信息-个人档案.xls", "数据", UserInfoRespVO.class,
+                BeanUtils.toBean(list, UserInfoRespVO.class));
+    }
+
+}

+ 67 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/userinfo/vo/UserInfoPageReqVO.java

@@ -0,0 +1,67 @@
+package com.citu.module.menduner.system.controller.admin.userinfo.vo;
+
+import com.citu.framework.common.pojo.PageParam;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
+import static com.citu.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 用户信息-个人档案分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class UserInfoPageReqVO extends PageParam {
+
+    @Schema(description = "用户id", example = "18804")
+    private Long userId;
+
+    @Schema(description = "真实姓名", example = "王五")
+    private String name;
+
+    @Schema(description = "用户性别")
+    private Integer sex;
+
+    @Schema(description = "头像地址")
+    private String avatar;
+
+    @Schema(description = "联系手机号")
+    private String phone;
+
+    @Schema(description = "用户邮箱")
+    private String email;
+
+    @Schema(description = "微信号")
+    private String wxCode;
+
+    @Schema(description = "出生日期")
+    private LocalDateTime birthday;
+
+    @Schema(description = "婚姻状况(0未婚 1已婚 2离异 3保密)", example = "1")
+    private Integer maritalStatus;
+
+    @Schema(description = "现居住地", example = "8366")
+    private Long areaId;
+
+    @Schema(description = "求职类型(0全职 1兼职 2临时 3实习)", example = "1")
+    private Integer jobType;
+
+    @Schema(description = "求职状态(0离职-随时到岗 1在职-月内到岗 2在职-考虑机会 3在职-暂不考虑)", example = "1")
+    private Integer jobStatus;
+
+    @Schema(description = "首次工作时间")
+    private LocalDateTime firstWorkTime;
+
+    @Schema(description = "个人优势")
+    private String advantage;
+
+    @Schema(description = "创建时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+
+}

+ 80 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/userinfo/vo/UserInfoRespVO.java

@@ -0,0 +1,80 @@
+package com.citu.module.menduner.system.controller.admin.userinfo.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
+@Schema(description = "管理后台 - 用户信息-个人档案 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class UserInfoRespVO {
+
+    @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "25036")
+    @ExcelProperty("id")
+    private Long id;
+
+    @Schema(description = "用户id", example = "18804")
+    @ExcelProperty("用户id")
+    private Long userId;
+
+    @Schema(description = "真实姓名", example = "王五")
+    @ExcelProperty("真实姓名")
+    private String name;
+
+    @Schema(description = "用户性别")
+    @ExcelProperty("用户性别")
+    private Integer sex;
+
+    @Schema(description = "头像地址")
+    @ExcelProperty("头像地址")
+    private String avatar;
+
+    @Schema(description = "联系手机号")
+    @ExcelProperty("联系手机号")
+    private String phone;
+
+    @Schema(description = "用户邮箱")
+    @ExcelProperty("用户邮箱")
+    private String email;
+
+    @Schema(description = "微信号")
+    @ExcelProperty("微信号")
+    private String wxCode;
+
+    @Schema(description = "出生日期")
+    @ExcelProperty("出生日期")
+    private LocalDateTime birthday;
+
+    @Schema(description = "婚姻状况(0未婚 1已婚 2离异 3保密)", example = "1")
+    @ExcelProperty("婚姻状况(0未婚 1已婚 2离异 3保密)")
+    private Integer maritalStatus;
+
+    @Schema(description = "现居住地", example = "8366")
+    @ExcelProperty("现居住地")
+    private Long areaId;
+
+    @Schema(description = "求职类型(0全职 1兼职 2临时 3实习)", example = "1")
+    @ExcelProperty("求职类型(0全职 1兼职 2临时 3实习)")
+    private Integer jobType;
+
+    @Schema(description = "求职状态(0离职-随时到岗 1在职-月内到岗 2在职-考虑机会 3在职-暂不考虑)", example = "1")
+    @ExcelProperty("求职状态(0离职-随时到岗 1在职-月内到岗 2在职-考虑机会 3在职-暂不考虑)")
+    private Integer jobStatus;
+
+    @Schema(description = "首次工作时间")
+    @ExcelProperty("首次工作时间")
+    private LocalDateTime firstWorkTime;
+
+    @Schema(description = "个人优势")
+    @ExcelProperty("个人优势")
+    private String advantage;
+
+    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("创建时间")
+    private LocalDateTime createTime;
+
+}

+ 58 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/userinfo/vo/UserInfoSaveReqVO.java

@@ -0,0 +1,58 @@
+package com.citu.module.menduner.system.controller.admin.userinfo.vo;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
+@Schema(description = "管理后台 - 用户信息-个人档案新增/修改 Request VO")
+@Data
+public class UserInfoSaveReqVO {
+
+    @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "25036")
+    private Long id;
+
+    @Schema(description = "用户id", example = "18804")
+    private Long userId;
+
+    @Schema(description = "真实姓名", example = "王五")
+    private String name;
+
+    @Schema(description = "用户性别")
+    private Integer sex;
+
+    @Schema(description = "头像地址")
+    private String avatar;
+
+    @Schema(description = "联系手机号")
+    private String phone;
+
+    @Schema(description = "用户邮箱")
+    private String email;
+
+    @Schema(description = "微信号")
+    private String wxCode;
+
+    @Schema(description = "出生日期")
+    private LocalDateTime birthday;
+
+    @Schema(description = "婚姻状况(0未婚 1已婚 2离异 3保密)", example = "1")
+    private Integer maritalStatus;
+
+    @Schema(description = "现居住地", example = "8366")
+    private Long areaId;
+
+    @Schema(description = "求职类型(0全职 1兼职 2临时 3实习)", example = "1")
+    private Integer jobType;
+
+    @Schema(description = "求职状态(0离职-随时到岗 1在职-月内到岗 2在职-考虑机会 3在职-暂不考虑)", example = "1")
+    private Integer jobStatus;
+
+    @Schema(description = "首次工作时间")
+    private LocalDateTime firstWorkTime;
+
+    @Schema(description = "个人优势")
+    private String advantage;
+}

+ 94 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/userskill/UserSkillController.java

@@ -0,0 +1,94 @@
+package com.citu.module.menduner.system.controller.admin.userskill;
+
+import org.springframework.web.bind.annotation.*;
+import javax.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.security.access.prepost.PreAuthorize;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Operation;
+
+import javax.validation.*;
+import javax.servlet.http.*;
+import java.util.*;
+import java.io.IOException;
+
+import com.citu.framework.common.pojo.PageParam;
+import com.citu.framework.common.pojo.PageResult;
+import com.citu.framework.common.pojo.CommonResult;
+import com.citu.framework.common.util.object.BeanUtils;
+import static com.citu.framework.common.pojo.CommonResult.success;
+
+import com.citu.framework.excel.core.util.ExcelUtils;
+
+import com.citu.framework.apilog.core.annotation.ApiAccessLog;
+import static com.citu.framework.apilog.core.enums.OperateTypeEnum.*;
+
+import com.citu.module.menduner.system.controller.admin.userskill.vo.*;
+import com.citu.module.menduner.system.dal.dataobject.userskill.UserSkillDO;
+import com.citu.module.menduner.system.service.userskill.UserSkillService;
+
+@Tag(name = "管理后台 - 用户技能")
+@RestController
+@RequestMapping("/menduner.system/user-skill")
+@Validated
+public class UserSkillController {
+
+    @Resource
+    private UserSkillService userSkillService;
+
+    @PostMapping("/create")
+    @Operation(summary = "创建用户技能")
+    @PreAuthorize("@ss.hasPermission('menduner.system:user-skill:create')")
+    public CommonResult<Long> createUserSkill(@Valid @RequestBody UserSkillSaveReqVO createReqVO) {
+        return success(userSkillService.createUserSkill(createReqVO));
+    }
+
+    @PutMapping("/update")
+    @Operation(summary = "更新用户技能")
+    @PreAuthorize("@ss.hasPermission('menduner.system:user-skill:update')")
+    public CommonResult<Boolean> updateUserSkill(@Valid @RequestBody UserSkillSaveReqVO updateReqVO) {
+        userSkillService.updateUserSkill(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/delete")
+    @Operation(summary = "删除用户技能")
+    @Parameter(name = "id", description = "编号", required = true)
+    @PreAuthorize("@ss.hasPermission('menduner.system:user-skill:delete')")
+    public CommonResult<Boolean> deleteUserSkill(@RequestParam("id") Long id) {
+        userSkillService.deleteUserSkill(id);
+        return success(true);
+    }
+
+    @GetMapping("/get")
+    @Operation(summary = "获得用户技能")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('menduner.system:user-skill:query')")
+    public CommonResult<UserSkillRespVO> getUserSkill(@RequestParam("id") Long id) {
+        UserSkillDO userSkill = userSkillService.getUserSkill(id);
+        return success(BeanUtils.toBean(userSkill, UserSkillRespVO.class));
+    }
+
+    @GetMapping("/page")
+    @Operation(summary = "获得用户技能分页")
+    @PreAuthorize("@ss.hasPermission('menduner.system:user-skill:query')")
+    public CommonResult<PageResult<UserSkillRespVO>> getUserSkillPage(@Valid UserSkillPageReqVO pageReqVO) {
+        PageResult<UserSkillDO> pageResult = userSkillService.getUserSkillPage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, UserSkillRespVO.class));
+    }
+
+    @GetMapping("/export-excel")
+    @Operation(summary = "导出用户技能 Excel")
+    @PreAuthorize("@ss.hasPermission('menduner.system:user-skill:export')")
+    @ApiAccessLog(operateType = EXPORT)
+    public void exportUserSkillExcel(@Valid UserSkillPageReqVO pageReqVO,
+              HttpServletResponse response) throws IOException {
+        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<UserSkillDO> list = userSkillService.getUserSkillPage(pageReqVO).getList();
+        // 导出 Excel
+        ExcelUtils.write(response, "用户技能.xls", "数据", UserSkillRespVO.class,
+                        BeanUtils.toBean(list, UserSkillRespVO.class));
+    }
+
+}

+ 31 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/userskill/vo/UserSkillPageReqVO.java

@@ -0,0 +1,31 @@
+package com.citu.module.menduner.system.controller.admin.userskill.vo;
+
+import lombok.*;
+import java.util.*;
+import io.swagger.v3.oas.annotations.media.Schema;
+import com.citu.framework.common.pojo.PageParam;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+
+import static com.citu.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 用户技能分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class UserSkillPageReqVO extends PageParam {
+
+    @Schema(description = "用户id", example = "7946")
+    private Long userId;
+
+    @Schema(description = "技能名称", example = "芋艿")
+    private String name;
+
+    @Schema(description = "技能等级(0一般 1良好 2熟练 3 精通)")
+    private Integer level;
+
+    @Schema(description = "创建时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+
+}

+ 39 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/userskill/vo/UserSkillRespVO.java

@@ -0,0 +1,39 @@
+package com.citu.module.menduner.system.controller.admin.userskill.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import java.util.*;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+import com.alibaba.excel.annotation.*;
+import com.citu.framework.excel.core.annotations.DictFormat;
+import com.citu.framework.excel.core.convert.DictConvert;
+
+@Schema(description = "管理后台 - 用户技能 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class UserSkillRespVO {
+
+    @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "24591")
+    @ExcelProperty("id")
+    private Long id;
+
+    @Schema(description = "用户id", requiredMode = Schema.RequiredMode.REQUIRED, example = "7946")
+    @ExcelProperty("用户id")
+    private Long userId;
+
+    @Schema(description = "技能名称", example = "芋艿")
+    @ExcelProperty("技能名称")
+    private String name;
+
+    @Schema(description = "技能等级(0一般 1良好 2熟练 3 精通)")
+    @ExcelProperty(value = "技能等级(0一般 1良好 2熟练 3 精通)", converter = DictConvert.class)
+    @DictFormat("skill_level") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
+    private Integer level;
+
+    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("创建时间")
+    private LocalDateTime createTime;
+
+}

+ 25 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/userskill/vo/UserSkillSaveReqVO.java

@@ -0,0 +1,25 @@
+package com.citu.module.menduner.system.controller.admin.userskill.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import javax.validation.constraints.*;
+
+@Schema(description = "管理后台 - 用户技能新增/修改 Request VO")
+@Data
+public class UserSkillSaveReqVO {
+
+    @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "24591")
+    private Long id;
+
+    @Schema(description = "用户id", requiredMode = Schema.RequiredMode.REQUIRED, example = "7946")
+    @NotNull(message = "用户id不能为空")
+    private Long userId;
+
+    @Schema(description = "技能名称", example = "芋艿")
+    private String name;
+
+    @Schema(description = "技能等级(0一般 1良好 2熟练 3 精通)")
+    private Integer level;
+
+}

+ 94 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/workexp/WorkExpController.java

@@ -0,0 +1,94 @@
+package com.citu.module.menduner.system.controller.admin.workexp;
+
+import org.springframework.web.bind.annotation.*;
+import javax.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.security.access.prepost.PreAuthorize;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Operation;
+
+import javax.validation.*;
+import javax.servlet.http.*;
+import java.util.*;
+import java.io.IOException;
+
+import com.citu.framework.common.pojo.PageParam;
+import com.citu.framework.common.pojo.PageResult;
+import com.citu.framework.common.pojo.CommonResult;
+import com.citu.framework.common.util.object.BeanUtils;
+import static com.citu.framework.common.pojo.CommonResult.success;
+
+import com.citu.framework.excel.core.util.ExcelUtils;
+
+import com.citu.framework.apilog.core.annotation.ApiAccessLog;
+import static com.citu.framework.apilog.core.enums.OperateTypeEnum.*;
+
+import com.citu.module.menduner.system.controller.admin.workexp.vo.*;
+import com.citu.module.menduner.system.dal.dataobject.workexp.WorkExpDO;
+import com.citu.module.menduner.system.service.workexp.WorkExpService;
+
+@Tag(name = "管理后台 - 工作经历")
+@RestController
+@RequestMapping("/menduner.system/work-exp")
+@Validated
+public class WorkExpController {
+
+    @Resource
+    private WorkExpService workExpService;
+
+    @PostMapping("/create")
+    @Operation(summary = "创建工作经历")
+    @PreAuthorize("@ss.hasPermission('menduner.system:work-exp:create')")
+    public CommonResult<Long> createWorkExp(@Valid @RequestBody WorkExpSaveReqVO createReqVO) {
+        return success(workExpService.createWorkExp(createReqVO));
+    }
+
+    @PutMapping("/update")
+    @Operation(summary = "更新工作经历")
+    @PreAuthorize("@ss.hasPermission('menduner.system:work-exp:update')")
+    public CommonResult<Boolean> updateWorkExp(@Valid @RequestBody WorkExpSaveReqVO updateReqVO) {
+        workExpService.updateWorkExp(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/delete")
+    @Operation(summary = "删除工作经历")
+    @Parameter(name = "id", description = "编号", required = true)
+    @PreAuthorize("@ss.hasPermission('menduner.system:work-exp:delete')")
+    public CommonResult<Boolean> deleteWorkExp(@RequestParam("id") Long id) {
+        workExpService.deleteWorkExp(id);
+        return success(true);
+    }
+
+    @GetMapping("/get")
+    @Operation(summary = "获得工作经历")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('menduner.system:work-exp:query')")
+    public CommonResult<WorkExpRespVO> getWorkExp(@RequestParam("id") Long id) {
+        WorkExpDO workExp = workExpService.getWorkExp(id);
+        return success(BeanUtils.toBean(workExp, WorkExpRespVO.class));
+    }
+
+    @GetMapping("/page")
+    @Operation(summary = "获得工作经历分页")
+    @PreAuthorize("@ss.hasPermission('menduner.system:work-exp:query')")
+    public CommonResult<PageResult<WorkExpRespVO>> getWorkExpPage(@Valid WorkExpPageReqVO pageReqVO) {
+        PageResult<WorkExpDO> pageResult = workExpService.getWorkExpPage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, WorkExpRespVO.class));
+    }
+
+    @GetMapping("/export-excel")
+    @Operation(summary = "导出工作经历 Excel")
+    @PreAuthorize("@ss.hasPermission('menduner.system:work-exp:export')")
+    @ApiAccessLog(operateType = EXPORT)
+    public void exportWorkExpExcel(@Valid WorkExpPageReqVO pageReqVO,
+              HttpServletResponse response) throws IOException {
+        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<WorkExpDO> list = workExpService.getWorkExpPage(pageReqVO).getList();
+        // 导出 Excel
+        ExcelUtils.write(response, "工作经历.xls", "数据", WorkExpRespVO.class,
+                        BeanUtils.toBean(list, WorkExpRespVO.class));
+    }
+
+}

+ 60 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/workexp/vo/WorkExpPageReqVO.java

@@ -0,0 +1,60 @@
+package com.citu.module.menduner.system.controller.admin.workexp.vo;
+
+import lombok.*;
+
+import java.time.LocalDate;
+import java.util.*;
+import io.swagger.v3.oas.annotations.media.Schema;
+import com.citu.framework.common.pojo.PageParam;
+import java.math.BigDecimal;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+
+import static com.citu.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 工作经历分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class WorkExpPageReqVO extends PageParam {
+
+    @Schema(description = "用户id", example = "8688")
+    private Long userId;
+
+    @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 = "在职开始日期")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] startTime;
+
+    @Schema(description = "在职结束时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] endTime;
+
+    @Schema(description = "薪酬类型(0月薪 1年薪)", example = "1")
+    private Integer payType;
+
+    @Schema(description = "货币类型", example = "2")
+    private Integer currencyType;
+
+    @Schema(description = "创建时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+
+}

+ 91 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/workexp/vo/WorkExpRespVO.java

@@ -0,0 +1,91 @@
+package com.citu.module.menduner.system.controller.admin.workexp.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+
+import java.time.LocalDate;
+import java.util.*;
+import java.util.*;
+import java.math.BigDecimal;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+import com.alibaba.excel.annotation.*;
+import com.citu.framework.excel.core.annotations.DictFormat;
+import com.citu.framework.excel.core.convert.DictConvert;
+
+@Schema(description = "管理后台 - 工作经历 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class WorkExpRespVO {
+
+    @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "2363")
+    @ExcelProperty("id")
+    private Long id;
+
+    @Schema(description = "用户id", requiredMode = Schema.RequiredMode.REQUIRED, example = "8688")
+    @ExcelProperty("用户id")
+    private Long userId;
+
+    @Schema(description = "企业id", example = "2118")
+    @ExcelProperty("企业id")
+    private Long enterpriseId;
+
+    @Schema(description = "企业名称(没有选择系统企业时可自定义)", example = "张三")
+    @ExcelProperty("企业名称(没有选择系统企业时可自定义)")
+    private String enterpriseName;
+
+    @Schema(description = "所属行业", example = "21570")
+    @ExcelProperty("所属行业")
+    private Long industryId;
+
+    @Schema(description = "所属部门", example = "李四")
+    @ExcelProperty("所属部门")
+    private String deptName;
+
+    @Schema(description = "所属职位", example = "11706")
+    @ExcelProperty("所属职位")
+    private Long positionId;
+
+    @Schema(description = "职位名称(没有选择系统职位时可自定义)", example = "赵六")
+    @ExcelProperty("职位名称(没有选择系统职位时可自定义)")
+    private String positionName;
+
+    @Schema(description = "在职开始日期")
+    @ExcelProperty("在职开始日期")
+    private LocalDateTime startTime;
+
+    @Schema(description = "在职结束时间")
+    @ExcelProperty("在职结束时间")
+    private LocalDateTime endTime;
+
+    @Schema(description = "工作内容")
+    @ExcelProperty("工作内容")
+    private String content;
+
+    @Schema(description = "业绩")
+    @ExcelProperty("业绩")
+    private String achievement;
+
+    @Schema(description = "薪酬")
+    @ExcelProperty("薪酬")
+    private BigDecimal pay;
+
+    @Schema(description = "薪酬类型(0月薪 1年薪)", example = "1")
+    @ExcelProperty(value = "薪酬类型(0月薪 1年薪)", converter = DictConvert.class)
+    @DictFormat("menduner_pay_type") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
+    private Integer payType;
+
+    @Schema(description = "货币类型", example = "2")
+    @ExcelProperty(value = "货币类型", converter = DictConvert.class)
+    @DictFormat("menduner_currency_type") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
+    private Integer currencyType;
+
+    @Schema(description = "技能")
+    @ExcelProperty("技能")
+    private String skillList;
+
+    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("创建时间")
+    private LocalDateTime createTime;
+
+}

+ 64 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/workexp/vo/WorkExpSaveReqVO.java

@@ -0,0 +1,64 @@
+package com.citu.module.menduner.system.controller.admin.workexp.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
+@Schema(description = "管理后台 - 工作经历新增/修改 Request VO")
+@Data
+public class WorkExpSaveReqVO {
+
+    @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "2363")
+    private Long id;
+
+    @Schema(description = "用户id", requiredMode = Schema.RequiredMode.REQUIRED, example = "8688")
+    @NotNull(message = "用户id不能为空")
+    private Long userId;
+
+    @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 payType;
+
+    @Schema(description = "货币类型", example = "2")
+    private Integer currencyType;
+
+    @Schema(description = "技能")
+    private String skillList;
+
+}

+ 43 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/area/AreaDO.java

@@ -0,0 +1,43 @@
+package com.citu.module.menduner.system.dal.dataobject.area;
+
+import lombok.*;
+import java.util.*;
+import java.time.LocalDateTime;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.*;
+import com.citu.framework.mybatis.core.dataobject.BaseDO;
+
+/**
+ * 地区 DO
+ *
+ * @author Rayson
+ */
+@TableName("mde_area")
+@KeySequence("mde_area_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class AreaDO extends BaseDO {
+
+    /**
+     * id
+     */
+    @TableId
+    private Long id;
+    /**
+     * 区域名称
+     */
+    private String name;
+    /**
+     * 区域类型
+     */
+    private Integer type;
+    /**
+     * 上级区域
+     */
+    private Long parentId;
+
+}

+ 47 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/certificate/CertificateDO.java

@@ -0,0 +1,47 @@
+package com.citu.module.menduner.system.dal.dataobject.certificate;
+
+import lombok.*;
+import java.util.*;
+import java.time.LocalDateTime;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.*;
+import com.citu.framework.mybatis.core.dataobject.BaseDO;
+
+/**
+ * 证书 DO
+ *
+ * @author Rayson
+ */
+@TableName("mde_certificate")
+@KeySequence("mde_certificate_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class CertificateDO extends BaseDO {
+
+    /**
+     * id
+     */
+    @TableId
+    private Long id;
+    /**
+     * 证书中文名称
+     */
+    private String nameCn;
+    /**
+     * 证书英文名称
+     */
+    private String nameEn;
+    /**
+     * 上级id
+     */
+    private Long parentId;
+    /**
+     * 层级
+     */
+    private Boolean level;
+
+}

+ 43 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/cvattachment/CvAttachmentDO.java

@@ -0,0 +1,43 @@
+package com.citu.module.menduner.system.dal.dataobject.cvattachment;
+
+import lombok.*;
+import java.util.*;
+import java.time.LocalDateTime;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.*;
+import com.citu.framework.mybatis.core.dataobject.BaseDO;
+
+/**
+ * 简历附件 DO
+ *
+ * @author Rayson
+ */
+@TableName("mde_cv_attachment")
+@KeySequence("mde_cv_attachment_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class CvAttachmentDO extends BaseDO {
+
+    /**
+     * id
+     */
+    @TableId
+    private Long id;
+    /**
+     * 用户id
+     */
+    private Long userId;
+    /**
+     * 简历附件标题
+     */
+    private String title;
+    /**
+     * 简历附件地址
+     */
+    private String url;
+
+}

+ 79 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/eduexp/EduExpDO.java

@@ -0,0 +1,79 @@
+package com.citu.module.menduner.system.dal.dataobject.eduexp;
+
+import com.citu.module.menduner.system.enums.eduexp.EducationSystemTypeEnum;
+import com.citu.module.menduner.system.enums.eduexp.EducationTypeEnum;
+import lombok.*;
+
+import java.time.LocalDate;
+import java.util.*;
+import java.time.LocalDateTime;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.*;
+import com.citu.framework.mybatis.core.dataobject.BaseDO;
+
+/**
+ * 教育经历 DO
+ *
+ * @author Rayson
+ */
+@TableName("mde_edu_exp")
+@KeySequence("mde_edu_exp_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class EduExpDO extends BaseDO {
+
+    /**
+     * id
+     */
+    @TableId
+    private Long id;
+    /**
+     * 用户id
+     */
+    private Long userId;
+    /**
+     * 学校id
+     */
+    private Long schoolId;
+    /**
+     * 学校名称(没有选择系统企业可自定义)
+     */
+    private String schoolName;
+    /**
+     * 学历(0初中及以下 | 1中专/中技 | 2高中 | 3大专 | 4 本科 5 硕士 6 博士 99 其他)
+     *
+     * 枚举 {@link EducationTypeEnum 对应的类}
+     */
+    private Integer educationType;
+    /**
+     * 学制类型(0 全日制 | 1 非全日制)
+     *
+     * 枚举 {@link EducationSystemTypeEnum 对应的类}
+     */
+    private Integer educationSystemType;
+    /**
+     * 专业id
+     */
+    private Long majorId;
+    /**
+     * 专业名称(没有选择系统企业可自定义)
+     */
+    private String major;
+    /**
+     * 在校开始日期
+     */
+    private LocalDateTime startTime;
+    /**
+     * 在校结束时间
+     */
+    private LocalDateTime endTime;
+    /**
+     * 在校经历
+     */
+    private String content;
+
+}

+ 67 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/jobinterested/JobInterestedDO.java

@@ -0,0 +1,67 @@
+package com.citu.module.menduner.system.dal.dataobject.jobinterested;
+
+import lombok.*;
+import java.util.*;
+import java.math.BigDecimal;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.*;
+import com.citu.framework.mybatis.core.dataobject.BaseDO;
+
+/**
+ * 求职意向 DO
+ *
+ * @author Rayson
+ */
+@TableName("mde_job_interested")
+@KeySequence("mde_job_interested_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class JobInterestedDO extends BaseDO {
+
+    /**
+     * id
+     */
+    @TableId
+    private Long id;
+    /**
+     * 用户id
+     */
+    private Long userId;
+    /**
+     * 求职类型(0全职 1兼职 2临时 3实习)
+     *
+     * 枚举 {@link TODO menduner_job_type 对应的类}
+     */
+    private Integer jobType;
+    /**
+     * 期望职位
+     */
+    private Long positionId;
+    /**
+     * 期望行业
+     */
+    private String industryIdList;
+    /**
+     * 薪酬最低要求
+     */
+    private BigDecimal payMin;
+    /**
+     * 薪酬最高要求
+     */
+    private BigDecimal payMax;
+    /**
+     * 工作城市
+     */
+    private Long workAreaId;
+    /**
+     * 感兴趣城市
+     */
+    private String interestedAreaIdList;
+
+}

+ 46 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/major/MajorDO.java

@@ -0,0 +1,46 @@
+package com.citu.module.menduner.system.dal.dataobject.major;
+
+import com.citu.module.menduner.system.enums.MendunerStatusEnum;
+import lombok.*;
+import java.util.*;
+import java.time.LocalDateTime;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.*;
+import com.citu.framework.mybatis.core.dataobject.BaseDO;
+
+/**
+ * 专业 DO
+ *
+ * @author Rayson
+ */
+@TableName("mde_major")
+@KeySequence("mde_major_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class MajorDO extends BaseDO {
+
+    /**
+     * id
+     */
+    @TableId
+    private Long id;
+    /**
+     * 专业名称
+     */
+    private String nameCn;
+    /**
+     * 专业英文名称
+     */
+    private String nameEn;
+    /**
+     * 帐号状态(0正常 1停用)
+     *
+     * 枚举 {@link  MendunerStatusEnum 对应的类}
+     */
+    private Integer status;
+
+}

+ 39 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/positiontag/PositionTagDO.java

@@ -0,0 +1,39 @@
+package com.citu.module.menduner.system.dal.dataobject.positiontag;
+
+import lombok.*;
+import java.util.*;
+import java.time.LocalDateTime;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.*;
+import com.citu.framework.mybatis.core.dataobject.BaseDO;
+
+/**
+ * 职位标签 DO
+ *
+ * @author Rayson
+ */
+@TableName("mde_position_tag")
+@KeySequence("mde_position_tag_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class PositionTagDO extends BaseDO {
+
+    /**
+     * id
+     */
+    @TableId
+    private Long id;
+    /**
+     * 职位id
+     */
+    private Long positionId;
+    /**
+     * 标签
+     */
+    private String label;
+
+}

+ 55 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/school/SchoolDO.java

@@ -0,0 +1,55 @@
+package com.citu.module.menduner.system.dal.dataobject.school;
+
+import lombok.*;
+import java.util.*;
+import java.time.LocalDateTime;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.*;
+import com.citu.framework.mybatis.core.dataobject.BaseDO;
+
+/**
+ * 学校 DO
+ *
+ * @author Rayson
+ */
+@TableName("mde_school")
+@KeySequence("mde_school_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class SchoolDO extends BaseDO {
+
+    /**
+     * id
+     */
+    @TableId
+    private Long id;
+    /**
+     * 学校名称
+     */
+    private String name;
+    /**
+     * 学校所在区域
+     */
+    private Long areaId;
+    /**
+     * 学校所在地址
+     */
+    private String address;
+    /**
+     * 经度
+     */
+    private String longitude;
+    /**
+     * 维度
+     */
+    private String latitude;
+    /**
+     * 帐号状态(0正常 1停用)
+     */
+    private Integer status;
+
+}

+ 39 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/usercertificate/UserCertificateDO.java

@@ -0,0 +1,39 @@
+package com.citu.module.menduner.system.dal.dataobject.usercertificate;
+
+import lombok.*;
+import java.util.*;
+import java.time.LocalDateTime;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.*;
+import com.citu.framework.mybatis.core.dataobject.BaseDO;
+
+/**
+ * 用户证书 DO
+ *
+ * @author Rayson
+ */
+@TableName("mde_user_certificate")
+@KeySequence("mde_user_certificate_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class UserCertificateDO extends BaseDO {
+
+    /**
+     * id
+     */
+    @TableId
+    private Long id;
+    /**
+     * 用户id
+     */
+    private Long userId;
+    /**
+     * 证书id
+     */
+    private Long certificateId;
+
+}

+ 90 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/userinfo/UserInfoDO.java

@@ -0,0 +1,90 @@
+package com.citu.module.menduner.system.dal.dataobject.userinfo;
+
+import com.baomidou.mybatisplus.annotation.KeySequence;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.citu.framework.mybatis.core.dataobject.BaseDO;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
+/**
+ * 用户信息-个人档案 DO
+ *
+ * @author Rayson
+ */
+@TableName("mde_user_info")
+@KeySequence("mde_user_info_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class UserInfoDO extends BaseDO {
+
+    /**
+     * id
+     */
+    @TableId
+    private Long id;
+    /**
+     * 用户id
+     */
+    private Long userId;
+    /**
+     * 真实姓名
+     */
+    private String name;
+    /**
+     * 用户性别
+     */
+    private Integer sex;
+    /**
+     * 头像地址
+     */
+    private String avatar;
+    /**
+     * 联系手机号
+     */
+    private String phone;
+    /**
+     * 用户邮箱
+     */
+    private String email;
+    /**
+     * 微信号
+     */
+    private String wxCode;
+    /**
+     * 出生日期
+     */
+    private LocalDateTime birthday;
+    /**
+     * 婚姻状况(0未婚 1已婚 2离异 3保密)
+     */
+    private Integer maritalStatus;
+    /**
+     * 现居住地
+     */
+    private Long areaId;
+    /**
+     * 求职类型(0全职 1兼职 2临时 3实习)
+     */
+    private Integer jobType;
+    /**
+     * 求职状态(0离职-随时到岗 1在职-月内到岗 2在职-考虑机会 3在职-暂不考虑)
+     */
+    private Integer jobStatus;
+    /**
+     * 首次工作时间
+     */
+    private LocalDateTime firstWorkTime;
+    /**
+     * 个人优势
+     */
+    private String advantage;
+
+}

+ 46 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/userskill/UserSkillDO.java

@@ -0,0 +1,46 @@
+package com.citu.module.menduner.system.dal.dataobject.userskill;
+
+import com.citu.module.menduner.system.enums.userskill.SkillLevelEnum;
+import lombok.*;
+import java.util.*;
+import java.time.LocalDateTime;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.*;
+import com.citu.framework.mybatis.core.dataobject.BaseDO;
+
+/**
+ * 用户技能 DO
+ *
+ * @author Rayson
+ */
+@TableName("mde_user_skill")
+@KeySequence("mde_user_skill_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class UserSkillDO extends BaseDO {
+
+    /**
+     * id
+     */
+    @TableId
+    private Long id;
+    /**
+     * 用户id
+     */
+    private Long userId;
+    /**
+     * 技能名称
+     */
+    private String name;
+    /**
+     * 技能等级(0一般 1良好 2熟练 3 精通)
+     *
+     * 枚举 {@link SkillLevelEnum 对应的类}
+     */
+    private Integer level;
+
+}

+ 100 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/workexp/WorkExpDO.java

@@ -0,0 +1,100 @@
+package com.citu.module.menduner.system.dal.dataobject.workexp;
+
+import com.baomidou.mybatisplus.annotation.KeySequence;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.citu.framework.mybatis.core.dataobject.BaseDO;
+import com.citu.module.menduner.system.enums.eduexp.CurrencyTypeEnum;
+import com.citu.module.menduner.system.enums.eduexp.PayTypeEnum;
+import lombok.*;
+
+import java.math.BigDecimal;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
+/**
+ * 工作经历 DO
+ *
+ * @author Rayson
+ */
+@TableName("mde_work_exp")
+@KeySequence("mde_work_exp_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class WorkExpDO extends BaseDO {
+
+    /**
+     * id
+     */
+    @TableId
+    private Long id;
+    /**
+     * 用户id
+     */
+    private Long userId;
+    /**
+     * 企业id
+     */
+    private Long enterpriseId;
+    /**
+     * 企业名称(没有选择系统企业时可自定义)
+     */
+    private String enterpriseName;
+    /**
+     * 所属行业
+     */
+    private Long industryId;
+    /**
+     * 所属部门
+     */
+    private String deptName;
+    /**
+     * 所属职位
+     */
+    private Long positionId;
+    /**
+     * 职位名称(没有选择系统职位时可自定义)
+     */
+    private String positionName;
+    /**
+     * 在职开始日期
+     */
+    private LocalDateTime startTime;
+    /**
+     * 在职结束时间
+     */
+    private LocalDateTime endTime;
+    /**
+     * 工作内容
+     */
+    private String content;
+    /**
+     * 业绩
+     */
+    private String achievement;
+    /**
+     * 薪酬
+     */
+    private BigDecimal pay;
+    /**
+     * 薪酬类型(0月薪 1年薪)
+     * <p>
+     * 枚举 {@link PayTypeEnum 对应的类}
+     */
+    private Integer payType;
+    /**
+     * 货币类型 (0人民币 1美元 2欧元)
+     * <p>
+     * 枚举 {@link CurrencyTypeEnum 对应的类}
+     */
+    private Integer currencyType;
+    /**
+     * 技能
+     */
+    private String skillList;
+
+}

+ 27 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/area/AreaMapper.java

@@ -0,0 +1,27 @@
+package com.citu.module.menduner.system.dal.mysql.area;
+
+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.module.menduner.system.controller.admin.area.vo.AreaPageReqVO;
+import com.citu.module.menduner.system.dal.dataobject.area.AreaDO;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 地区 Mapper
+ *
+ * @author Rayson
+ */
+@Mapper
+public interface AreaMapper extends BaseMapperX<AreaDO> {
+
+    default PageResult<AreaDO> selectPage(AreaPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<AreaDO>()
+                .likeIfPresent(AreaDO::getName, reqVO.getName())
+                .eqIfPresent(AreaDO::getType, reqVO.getType())
+                .eqIfPresent(AreaDO::getParentId, reqVO.getParentId())
+                .betweenIfPresent(AreaDO::getCreateTime, reqVO.getCreateTime())
+                .orderByDesc(AreaDO::getId));
+    }
+
+}

+ 28 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/certificate/CertificateMapper.java

@@ -0,0 +1,28 @@
+package com.citu.module.menduner.system.dal.mysql.certificate;
+
+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.module.menduner.system.controller.admin.certificate.vo.CertificatePageReqVO;
+import com.citu.module.menduner.system.dal.dataobject.certificate.CertificateDO;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 证书 Mapper
+ *
+ * @author Rayson
+ */
+@Mapper
+public interface CertificateMapper extends BaseMapperX<CertificateDO> {
+
+    default PageResult<CertificateDO> selectPage(CertificatePageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<CertificateDO>()
+                .likeIfPresent(CertificateDO::getNameCn, reqVO.getNameCn())
+                .likeIfPresent(CertificateDO::getNameEn, reqVO.getNameEn())
+                .eqIfPresent(CertificateDO::getParentId, reqVO.getParentId())
+                .eqIfPresent(CertificateDO::getLevel, reqVO.getLevel())
+                .betweenIfPresent(CertificateDO::getCreateTime, reqVO.getCreateTime())
+                .orderByDesc(CertificateDO::getId));
+    }
+
+}

+ 27 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/cvattachment/CvAttachmentMapper.java

@@ -0,0 +1,27 @@
+package com.citu.module.menduner.system.dal.mysql.cvattachment;
+
+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.module.menduner.system.controller.admin.cvattachment.vo.CvAttachmentPageReqVO;
+import com.citu.module.menduner.system.dal.dataobject.cvattachment.CvAttachmentDO;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 简历附件 Mapper
+ *
+ * @author Rayson
+ */
+@Mapper
+public interface CvAttachmentMapper extends BaseMapperX<CvAttachmentDO> {
+
+    default PageResult<CvAttachmentDO> selectPage(CvAttachmentPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<CvAttachmentDO>()
+                .eqIfPresent(CvAttachmentDO::getUserId, reqVO.getUserId())
+                .eqIfPresent(CvAttachmentDO::getTitle, reqVO.getTitle())
+                .eqIfPresent(CvAttachmentDO::getUrl, reqVO.getUrl())
+                .betweenIfPresent(CvAttachmentDO::getCreateTime, reqVO.getCreateTime())
+                .orderByDesc(CvAttachmentDO::getId));
+    }
+
+}

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

@@ -0,0 +1,34 @@
+package com.citu.module.menduner.system.dal.mysql.eduexp;
+
+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.module.menduner.system.controller.admin.eduexp.vo.EduExpPageReqVO;
+import com.citu.module.menduner.system.dal.dataobject.eduexp.EduExpDO;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 教育经历 Mapper
+ *
+ * @author Rayson
+ */
+@Mapper
+public interface EduExpMapper extends BaseMapperX<EduExpDO> {
+
+    default PageResult<EduExpDO> selectPage(EduExpPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<EduExpDO>()
+                .eqIfPresent(EduExpDO::getUserId, reqVO.getUserId())
+                .eqIfPresent(EduExpDO::getSchoolId, reqVO.getSchoolId())
+                .likeIfPresent(EduExpDO::getSchoolName, reqVO.getSchoolName())
+                .eqIfPresent(EduExpDO::getEducationType, reqVO.getEducationType())
+                .eqIfPresent(EduExpDO::getEducationSystemType, reqVO.getEducationSystemType())
+                .eqIfPresent(EduExpDO::getMajorId, reqVO.getMajorId())
+                .eqIfPresent(EduExpDO::getMajor, reqVO.getMajor())
+                .betweenIfPresent(EduExpDO::getStartTime, reqVO.getStartTime())
+                .betweenIfPresent(EduExpDO::getEndTime, reqVO.getEndTime())
+                .eqIfPresent(EduExpDO::getContent, reqVO.getContent())
+                .betweenIfPresent(EduExpDO::getCreateTime, reqVO.getCreateTime())
+                .orderByDesc(EduExpDO::getId));
+    }
+
+}

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

@@ -0,0 +1,32 @@
+package com.citu.module.menduner.system.dal.mysql.jobinterested;
+
+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.module.menduner.system.controller.admin.jobinterested.vo.JobInterestedPageReqVO;
+import com.citu.module.menduner.system.dal.dataobject.jobinterested.JobInterestedDO;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 求职意向 Mapper
+ *
+ * @author Rayson
+ */
+@Mapper
+public interface JobInterestedMapper extends BaseMapperX<JobInterestedDO> {
+
+    default PageResult<JobInterestedDO> selectPage(JobInterestedPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<JobInterestedDO>()
+                .eqIfPresent(JobInterestedDO::getUserId, reqVO.getUserId())
+                .eqIfPresent(JobInterestedDO::getJobType, reqVO.getJobType())
+                .eqIfPresent(JobInterestedDO::getPositionId, reqVO.getPositionId())
+                .eqIfPresent(JobInterestedDO::getIndustryIdList, reqVO.getIndustryIdList())
+                .eqIfPresent(JobInterestedDO::getPayMin, reqVO.getPayMin())
+                .eqIfPresent(JobInterestedDO::getPayMax, reqVO.getPayMax())
+                .eqIfPresent(JobInterestedDO::getWorkAreaId, reqVO.getWorkAreaId())
+                .eqIfPresent(JobInterestedDO::getInterestedAreaIdList, reqVO.getInterestedAreaIdList())
+                .betweenIfPresent(JobInterestedDO::getCreateTime, reqVO.getCreateTime())
+                .orderByDesc(JobInterestedDO::getId));
+    }
+
+}

+ 27 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/major/MajorMapper.java

@@ -0,0 +1,27 @@
+package com.citu.module.menduner.system.dal.mysql.major;
+
+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.module.menduner.system.controller.admin.major.vo.MajorPageReqVO;
+import com.citu.module.menduner.system.dal.dataobject.major.MajorDO;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 专业 Mapper
+ *
+ * @author Rayson
+ */
+@Mapper
+public interface MajorMapper extends BaseMapperX<MajorDO> {
+
+    default PageResult<MajorDO> selectPage(MajorPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<MajorDO>()
+                .eqIfPresent(MajorDO::getNameCn, reqVO.getNameCn())
+                .eqIfPresent(MajorDO::getNameEn, reqVO.getNameEn())
+                .eqIfPresent(MajorDO::getStatus, reqVO.getStatus())
+                .betweenIfPresent(MajorDO::getCreateTime, reqVO.getCreateTime())
+                .orderByDesc(MajorDO::getId));
+    }
+
+}

+ 26 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/positiontag/PositionTagMapper.java

@@ -0,0 +1,26 @@
+package com.citu.module.menduner.system.dal.mysql.positiontag;
+
+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.module.menduner.system.controller.admin.positiontag.vo.PositionTagPageReqVO;
+import com.citu.module.menduner.system.dal.dataobject.positiontag.PositionTagDO;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 职位标签 Mapper
+ *
+ * @author Rayson
+ */
+@Mapper
+public interface PositionTagMapper extends BaseMapperX<PositionTagDO> {
+
+    default PageResult<PositionTagDO> selectPage(PositionTagPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<PositionTagDO>()
+                .eqIfPresent(PositionTagDO::getPositionId, reqVO.getPositionId())
+                .eqIfPresent(PositionTagDO::getLabel, reqVO.getLabel())
+                .betweenIfPresent(PositionTagDO::getCreateTime, reqVO.getCreateTime())
+                .orderByDesc(PositionTagDO::getId));
+    }
+
+}

+ 26 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/usercertificate/UserCertificateMapper.java

@@ -0,0 +1,26 @@
+package com.citu.module.menduner.system.dal.mysql.usercertificate;
+
+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.module.menduner.system.controller.admin.usercertificate.vo.UserCertificatePageReqVO;
+import com.citu.module.menduner.system.dal.dataobject.usercertificate.UserCertificateDO;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 用户证书 Mapper
+ *
+ * @author Rayson
+ */
+@Mapper
+public interface UserCertificateMapper extends BaseMapperX<UserCertificateDO> {
+
+    default PageResult<UserCertificateDO> selectPage(UserCertificatePageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<UserCertificateDO>()
+                .eqIfPresent(UserCertificateDO::getUserId, reqVO.getUserId())
+                .eqIfPresent(UserCertificateDO::getCertificateId, reqVO.getCertificateId())
+                .betweenIfPresent(UserCertificateDO::getCreateTime, reqVO.getCreateTime())
+                .orderByDesc(UserCertificateDO::getId));
+    }
+
+}

+ 36 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/userinfo/UserInfoMapper.java

@@ -0,0 +1,36 @@
+package com.citu.module.menduner.system.dal.mysql.userinfo;
+
+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.module.menduner.system.dal.dataobject.userinfo.UserInfoDO;
+import com.citu.module.menduner.system.controller.admin.userinfo.vo.UserInfoPageReqVO;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 用户信息-个人档案 Mapper
+ *
+ * @author Rayson
+ */
+@Mapper
+public interface UserInfoMapper extends BaseMapperX<UserInfoDO> {
+
+    default PageResult<UserInfoDO> selectPage(UserInfoPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<UserInfoDO>()
+                .eqIfPresent(UserInfoDO::getUserId, reqVO.getUserId())
+                .likeIfPresent(UserInfoDO::getName, reqVO.getName())
+                .eqIfPresent(UserInfoDO::getSex, reqVO.getSex())
+                .eqIfPresent(UserInfoDO::getAvatar, reqVO.getAvatar())
+                .eqIfPresent(UserInfoDO::getPhone, reqVO.getPhone())
+                .eqIfPresent(UserInfoDO::getEmail, reqVO.getEmail())
+                .eqIfPresent(UserInfoDO::getWxCode, reqVO.getWxCode())
+                .eqIfPresent(UserInfoDO::getBirthday, reqVO.getBirthday())
+                .eqIfPresent(UserInfoDO::getMaritalStatus, reqVO.getMaritalStatus())
+                .eqIfPresent(UserInfoDO::getAreaId, reqVO.getAreaId())
+                .eqIfPresent(UserInfoDO::getJobType, reqVO.getJobType())
+                .eqIfPresent(UserInfoDO::getJobStatus, reqVO.getJobStatus())
+                .betweenIfPresent(UserInfoDO::getCreateTime, reqVO.getCreateTime())
+                .orderByDesc(UserInfoDO::getId));
+    }
+
+}

+ 27 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/userskill/UserSkillMapper.java

@@ -0,0 +1,27 @@
+package com.citu.module.menduner.system.dal.mysql.userskill;
+
+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.module.menduner.system.controller.admin.userskill.vo.UserSkillPageReqVO;
+import com.citu.module.menduner.system.dal.dataobject.userskill.UserSkillDO;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 用户技能 Mapper
+ *
+ * @author Rayson
+ */
+@Mapper
+public interface UserSkillMapper extends BaseMapperX<UserSkillDO> {
+
+    default PageResult<UserSkillDO> selectPage(UserSkillPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<UserSkillDO>()
+                .eqIfPresent(UserSkillDO::getUserId, reqVO.getUserId())
+                .likeIfPresent(UserSkillDO::getName, reqVO.getName())
+                .eqIfPresent(UserSkillDO::getLevel, reqVO.getLevel())
+                .betweenIfPresent(UserSkillDO::getCreateTime, reqVO.getCreateTime())
+                .orderByDesc(UserSkillDO::getId));
+    }
+
+}

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

@@ -0,0 +1,35 @@
+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.module.menduner.system.controller.admin.workexp.vo.WorkExpPageReqVO;
+import com.citu.module.menduner.system.dal.dataobject.workexp.WorkExpDO;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 工作经历 Mapper
+ *
+ * @author Rayson
+ */
+@Mapper
+public interface WorkExpMapper extends BaseMapperX<WorkExpDO> {
+
+    default PageResult<WorkExpDO> selectPage(WorkExpPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<WorkExpDO>()
+                .eqIfPresent(WorkExpDO::getUserId, reqVO.getUserId())
+                .eqIfPresent(WorkExpDO::getEnterpriseId, reqVO.getEnterpriseId())
+                .likeIfPresent(WorkExpDO::getEnterpriseName, reqVO.getEnterpriseName())
+                .eqIfPresent(WorkExpDO::getIndustryId, reqVO.getIndustryId())
+                .likeIfPresent(WorkExpDO::getDeptName, reqVO.getDeptName())
+                .eqIfPresent(WorkExpDO::getPositionId, reqVO.getPositionId())
+                .likeIfPresent(WorkExpDO::getPositionName, reqVO.getPositionName())
+                .betweenIfPresent(WorkExpDO::getStartTime, reqVO.getStartTime())
+                .betweenIfPresent(WorkExpDO::getEndTime, reqVO.getEndTime())
+                .eqIfPresent(WorkExpDO::getPayType, reqVO.getPayType())
+                .eqIfPresent(WorkExpDO::getCurrencyType, reqVO.getCurrencyType())
+                .betweenIfPresent(WorkExpDO::getCreateTime, reqVO.getCreateTime())
+                .orderByDesc(WorkExpDO::getId));
+    }
+
+}

+ 55 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/area/AreaService.java

@@ -0,0 +1,55 @@
+package com.citu.module.menduner.system.service.area;
+
+import com.citu.framework.common.pojo.PageResult;
+import com.citu.module.menduner.system.controller.admin.area.vo.AreaPageReqVO;
+import com.citu.module.menduner.system.controller.admin.area.vo.AreaSaveReqVO;
+import com.citu.module.menduner.system.dal.dataobject.area.AreaDO;
+
+import javax.validation.Valid;
+
+/**
+ * 地区 Service 接口
+ *
+ * @author Rayson
+ */
+public interface AreaService {
+
+    /**
+     * 创建地区
+     *
+     * @param createReqVO 创建信息
+     * @return 编号
+     */
+    Long createArea(@Valid AreaSaveReqVO createReqVO);
+
+    /**
+     * 更新地区
+     *
+     * @param updateReqVO 更新信息
+     */
+    void updateArea(@Valid AreaSaveReqVO updateReqVO);
+
+    /**
+     * 删除地区
+     *
+     * @param id 编号
+     */
+    void deleteArea(Long id);
+
+    /**
+     * 获得地区
+     *
+     * @param id 编号
+     * @return 地区
+     */
+    AreaDO getArea(Long id);
+
+    /**
+     * 获得地区分页
+     *
+     * @param pageReqVO 分页查询
+     * @return 地区分页
+     */
+    PageResult<AreaDO> getAreaPage(AreaPageReqVO pageReqVO);
+
+}

+ 71 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/area/AreaServiceImpl.java

@@ -0,0 +1,71 @@
+package com.citu.module.menduner.system.service.area;
+
+import com.citu.framework.common.pojo.PageResult;
+import com.citu.framework.common.util.object.BeanUtils;
+import com.citu.module.menduner.system.controller.admin.area.vo.AreaPageReqVO;
+import com.citu.module.menduner.system.controller.admin.area.vo.AreaSaveReqVO;
+import com.citu.module.menduner.system.dal.dataobject.area.AreaDO;
+import com.citu.module.menduner.system.dal.mysql.area.AreaMapper;
+import org.springframework.stereotype.Service;
+import org.springframework.validation.annotation.Validated;
+
+import javax.annotation.Resource;
+
+import static com.citu.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static com.citu.module.menduner.system.enums.ErrorCodeConstants.AREA_NOT_EXISTS;
+
+/**
+ * 地区 Service 实现类
+ *
+ * @author Rayson
+ */
+@Service
+@Validated
+public class AreaServiceImpl implements AreaService {
+
+    @Resource
+    private AreaMapper areaMapper;
+
+    @Override
+    public Long createArea(AreaSaveReqVO createReqVO) {
+        // 插入
+        AreaDO area = BeanUtils.toBean(createReqVO, AreaDO.class);
+        areaMapper.insert(area);
+        // 返回
+        return area.getId();
+    }
+
+    @Override
+    public void updateArea(AreaSaveReqVO updateReqVO) {
+        // 校验存在
+        validateAreaExists(updateReqVO.getId());
+        // 更新
+        AreaDO updateObj = BeanUtils.toBean(updateReqVO, AreaDO.class);
+        areaMapper.updateById(updateObj);
+    }
+
+    @Override
+    public void deleteArea(Long id) {
+        // 校验存在
+        validateAreaExists(id);
+        // 删除
+        areaMapper.deleteById(id);
+    }
+
+    private void validateAreaExists(Long id) {
+        if (areaMapper.selectById(id) == null) {
+            throw exception(AREA_NOT_EXISTS);
+        }
+    }
+
+    @Override
+    public AreaDO getArea(Long id) {
+        return areaMapper.selectById(id);
+    }
+
+    @Override
+    public PageResult<AreaDO> getAreaPage(AreaPageReqVO pageReqVO) {
+        return areaMapper.selectPage(pageReqVO);
+    }
+
+}

+ 55 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/certificate/CertificateService.java

@@ -0,0 +1,55 @@
+package com.citu.module.menduner.system.service.certificate;
+
+import com.citu.framework.common.pojo.PageResult;
+import com.citu.module.menduner.system.controller.admin.certificate.vo.CertificatePageReqVO;
+import com.citu.module.menduner.system.controller.admin.certificate.vo.CertificateSaveReqVO;
+import com.citu.module.menduner.system.dal.dataobject.certificate.CertificateDO;
+
+import javax.validation.Valid;
+
+/**
+ * 证书 Service 接口
+ *
+ * @author Rayson
+ */
+public interface CertificateService {
+
+    /**
+     * 创建证书
+     *
+     * @param createReqVO 创建信息
+     * @return 编号
+     */
+    Long createCertificate(@Valid CertificateSaveReqVO createReqVO);
+
+    /**
+     * 更新证书
+     *
+     * @param updateReqVO 更新信息
+     */
+    void updateCertificate(@Valid CertificateSaveReqVO updateReqVO);
+
+    /**
+     * 删除证书
+     *
+     * @param id 编号
+     */
+    void deleteCertificate(Long id);
+
+    /**
+     * 获得证书
+     *
+     * @param id 编号
+     * @return 证书
+     */
+    CertificateDO getCertificate(Long id);
+
+    /**
+     * 获得证书分页
+     *
+     * @param pageReqVO 分页查询
+     * @return 证书分页
+     */
+    PageResult<CertificateDO> getCertificatePage(CertificatePageReqVO pageReqVO);
+
+}

+ 71 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/certificate/CertificateServiceImpl.java

@@ -0,0 +1,71 @@
+package com.citu.module.menduner.system.service.certificate;
+
+import com.citu.framework.common.pojo.PageResult;
+import com.citu.framework.common.util.object.BeanUtils;
+import com.citu.module.menduner.system.controller.admin.certificate.vo.CertificatePageReqVO;
+import com.citu.module.menduner.system.controller.admin.certificate.vo.CertificateSaveReqVO;
+import com.citu.module.menduner.system.dal.dataobject.certificate.CertificateDO;
+import com.citu.module.menduner.system.dal.mysql.certificate.CertificateMapper;
+import org.springframework.stereotype.Service;
+import org.springframework.validation.annotation.Validated;
+
+import javax.annotation.Resource;
+
+import static com.citu.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static com.citu.module.menduner.system.enums.ErrorCodeConstants.CERTIFICATE_NOT_EXISTS;
+
+/**
+ * 证书 Service 实现类
+ *
+ * @author Rayson
+ */
+@Service
+@Validated
+public class CertificateServiceImpl implements CertificateService {
+
+    @Resource
+    private CertificateMapper certificateMapper;
+
+    @Override
+    public Long createCertificate(CertificateSaveReqVO createReqVO) {
+        // 插入
+        CertificateDO certificate = BeanUtils.toBean(createReqVO, CertificateDO.class);
+        certificateMapper.insert(certificate);
+        // 返回
+        return certificate.getId();
+    }
+
+    @Override
+    public void updateCertificate(CertificateSaveReqVO updateReqVO) {
+        // 校验存在
+        validateCertificateExists(updateReqVO.getId());
+        // 更新
+        CertificateDO updateObj = BeanUtils.toBean(updateReqVO, CertificateDO.class);
+        certificateMapper.updateById(updateObj);
+    }
+
+    @Override
+    public void deleteCertificate(Long id) {
+        // 校验存在
+        validateCertificateExists(id);
+        // 删除
+        certificateMapper.deleteById(id);
+    }
+
+    private void validateCertificateExists(Long id) {
+        if (certificateMapper.selectById(id) == null) {
+            throw exception(CERTIFICATE_NOT_EXISTS);
+        }
+    }
+
+    @Override
+    public CertificateDO getCertificate(Long id) {
+        return certificateMapper.selectById(id);
+    }
+
+    @Override
+    public PageResult<CertificateDO> getCertificatePage(CertificatePageReqVO pageReqVO) {
+        return certificateMapper.selectPage(pageReqVO);
+    }
+
+}

+ 55 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/cvattachment/CvAttachmentService.java

@@ -0,0 +1,55 @@
+package com.citu.module.menduner.system.service.cvattachment;
+
+import com.citu.framework.common.pojo.PageResult;
+import com.citu.module.menduner.system.controller.admin.cvattachment.vo.CvAttachmentPageReqVO;
+import com.citu.module.menduner.system.controller.admin.cvattachment.vo.CvAttachmentSaveReqVO;
+import com.citu.module.menduner.system.dal.dataobject.cvattachment.CvAttachmentDO;
+
+import javax.validation.Valid;
+
+/**
+ * 简历附件 Service 接口
+ *
+ * @author Rayson
+ */
+public interface CvAttachmentService {
+
+    /**
+     * 创建简历附件
+     *
+     * @param createReqVO 创建信息
+     * @return 编号
+     */
+    Long createCvAttachment(@Valid CvAttachmentSaveReqVO createReqVO);
+
+    /**
+     * 更新简历附件
+     *
+     * @param updateReqVO 更新信息
+     */
+    void updateCvAttachment(@Valid CvAttachmentSaveReqVO updateReqVO);
+
+    /**
+     * 删除简历附件
+     *
+     * @param id 编号
+     */
+    void deleteCvAttachment(Long id);
+
+    /**
+     * 获得简历附件
+     *
+     * @param id 编号
+     * @return 简历附件
+     */
+    CvAttachmentDO getCvAttachment(Long id);
+
+    /**
+     * 获得简历附件分页
+     *
+     * @param pageReqVO 分页查询
+     * @return 简历附件分页
+     */
+    PageResult<CvAttachmentDO> getCvAttachmentPage(CvAttachmentPageReqVO pageReqVO);
+
+}

+ 72 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/cvattachment/CvAttachmentServiceImpl.java

@@ -0,0 +1,72 @@
+package com.citu.module.menduner.system.service.cvattachment;
+
+import com.citu.module.menduner.system.controller.admin.cvattachment.vo.CvAttachmentPageReqVO;
+import com.citu.module.menduner.system.controller.admin.cvattachment.vo.CvAttachmentSaveReqVO;
+import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+
+import com.citu.module.menduner.system.dal.dataobject.cvattachment.CvAttachmentDO;
+import com.citu.framework.common.pojo.PageResult;
+import com.citu.framework.common.util.object.BeanUtils;
+
+import com.citu.module.menduner.system.dal.mysql.cvattachment.CvAttachmentMapper;
+
+import static com.citu.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static com.citu.module.menduner.system.enums.ErrorCodeConstants.CV_ATTACHMENT_NOT_EXISTS;
+
+/**
+ * 简历附件 Service 实现类
+ *
+ * @author Rayson
+ */
+@Service
+@Validated
+public class CvAttachmentServiceImpl implements CvAttachmentService {
+
+    @Resource
+    private CvAttachmentMapper cvAttachmentMapper;
+
+    @Override
+    public Long createCvAttachment(CvAttachmentSaveReqVO createReqVO) {
+        // 插入
+        CvAttachmentDO cvAttachment = BeanUtils.toBean(createReqVO, CvAttachmentDO.class);
+        cvAttachmentMapper.insert(cvAttachment);
+        // 返回
+        return cvAttachment.getId();
+    }
+
+    @Override
+    public void updateCvAttachment(CvAttachmentSaveReqVO updateReqVO) {
+        // 校验存在
+        validateCvAttachmentExists(updateReqVO.getId());
+        // 更新
+        CvAttachmentDO updateObj = BeanUtils.toBean(updateReqVO, CvAttachmentDO.class);
+        cvAttachmentMapper.updateById(updateObj);
+    }
+
+    @Override
+    public void deleteCvAttachment(Long id) {
+        // 校验存在
+        validateCvAttachmentExists(id);
+        // 删除
+        cvAttachmentMapper.deleteById(id);
+    }
+
+    private void validateCvAttachmentExists(Long id) {
+        if (cvAttachmentMapper.selectById(id) == null) {
+            throw exception(CV_ATTACHMENT_NOT_EXISTS);
+        }
+    }
+
+    @Override
+    public CvAttachmentDO getCvAttachment(Long id) {
+        return cvAttachmentMapper.selectById(id);
+    }
+
+    @Override
+    public PageResult<CvAttachmentDO> getCvAttachmentPage(CvAttachmentPageReqVO pageReqVO) {
+        return cvAttachmentMapper.selectPage(pageReqVO);
+    }
+
+}

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

@@ -0,0 +1,55 @@
+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.dal.dataobject.eduexp.EduExpDO;
+
+import javax.validation.Valid;
+
+/**
+ * 教育经历 Service 接口
+ *
+ * @author Rayson
+ */
+public interface EduExpService {
+
+    /**
+     * 创建教育经历
+     *
+     * @param createReqVO 创建信息
+     * @return 编号
+     */
+    Long createEduExp(@Valid EduExpSaveReqVO createReqVO);
+
+    /**
+     * 更新教育经历
+     *
+     * @param updateReqVO 更新信息
+     */
+    void updateEduExp(@Valid EduExpSaveReqVO updateReqVO);
+
+    /**
+     * 删除教育经历
+     *
+     * @param id 编号
+     */
+    void deleteEduExp(Long id);
+
+    /**
+     * 获得教育经历
+     *
+     * @param id 编号
+     * @return 教育经历
+     */
+    EduExpDO getEduExp(Long id);
+
+    /**
+     * 获得教育经历分页
+     *
+     * @param pageReqVO 分页查询
+     * @return 教育经历分页
+     */
+    PageResult<EduExpDO> getEduExpPage(EduExpPageReqVO pageReqVO);
+
+}

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

@@ -0,0 +1,72 @@
+package com.citu.module.menduner.system.service.eduexp;
+
+import com.citu.module.menduner.system.controller.admin.eduexp.vo.EduExpPageReqVO;
+import com.citu.module.menduner.system.controller.admin.eduexp.vo.EduExpSaveReqVO;
+import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+
+import com.citu.module.menduner.system.dal.dataobject.eduexp.EduExpDO;
+import com.citu.framework.common.pojo.PageResult;
+import com.citu.framework.common.util.object.BeanUtils;
+
+import com.citu.module.menduner.system.dal.mysql.eduexp.EduExpMapper;
+
+import static com.citu.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static com.citu.module.menduner.system.enums.ErrorCodeConstants.EDU_EXP_NOT_EXISTS;
+
+/**
+ * 教育经历 Service 实现类
+ *
+ * @author Rayson
+ */
+@Service
+@Validated
+public class EduExpServiceImpl implements EduExpService {
+
+    @Resource
+    private EduExpMapper eduExpMapper;
+
+    @Override
+    public Long createEduExp(EduExpSaveReqVO createReqVO) {
+        // 插入
+        EduExpDO eduExp = BeanUtils.toBean(createReqVO, EduExpDO.class);
+        eduExpMapper.insert(eduExp);
+        // 返回
+        return eduExp.getId();
+    }
+
+    @Override
+    public void updateEduExp(EduExpSaveReqVO updateReqVO) {
+        // 校验存在
+        validateEduExpExists(updateReqVO.getId());
+        // 更新
+        EduExpDO updateObj = BeanUtils.toBean(updateReqVO, EduExpDO.class);
+        eduExpMapper.updateById(updateObj);
+    }
+
+    @Override
+    public void deleteEduExp(Long id) {
+        // 校验存在
+        validateEduExpExists(id);
+        // 删除
+        eduExpMapper.deleteById(id);
+    }
+
+    private void validateEduExpExists(Long id) {
+        if (eduExpMapper.selectById(id) == null) {
+            throw exception(EDU_EXP_NOT_EXISTS);
+        }
+    }
+
+    @Override
+    public EduExpDO getEduExp(Long id) {
+        return eduExpMapper.selectById(id);
+    }
+
+    @Override
+    public PageResult<EduExpDO> getEduExpPage(EduExpPageReqVO pageReqVO) {
+        return eduExpMapper.selectPage(pageReqVO);
+    }
+
+}

+ 55 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/jobinterested/JobInterestedService.java

@@ -0,0 +1,55 @@
+package com.citu.module.menduner.system.service.jobinterested;
+
+import javax.validation.*;
+
+import com.citu.module.menduner.system.controller.admin.jobinterested.vo.JobInterestedPageReqVO;
+import com.citu.module.menduner.system.controller.admin.jobinterested.vo.JobInterestedSaveReqVO;
+import com.citu.module.menduner.system.dal.dataobject.jobinterested.JobInterestedDO;
+import com.citu.framework.common.pojo.PageResult;
+
+/**
+ * 求职意向 Service 接口
+ *
+ * @author Rayson
+ */
+public interface JobInterestedService {
+
+    /**
+     * 创建求职意向
+     *
+     * @param createReqVO 创建信息
+     * @return 编号
+     */
+    Long createJobInterested(@Valid JobInterestedSaveReqVO createReqVO);
+
+    /**
+     * 更新求职意向
+     *
+     * @param updateReqVO 更新信息
+     */
+    void updateJobInterested(@Valid JobInterestedSaveReqVO updateReqVO);
+
+    /**
+     * 删除求职意向
+     *
+     * @param id 编号
+     */
+    void deleteJobInterested(Long id);
+
+    /**
+     * 获得求职意向
+     *
+     * @param id 编号
+     * @return 求职意向
+     */
+    JobInterestedDO getJobInterested(Long id);
+
+    /**
+     * 获得求职意向分页
+     *
+     * @param pageReqVO 分页查询
+     * @return 求职意向分页
+     */
+    PageResult<JobInterestedDO> getJobInterestedPage(JobInterestedPageReqVO pageReqVO);
+
+}

+ 72 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/jobinterested/JobInterestedServiceImpl.java

@@ -0,0 +1,72 @@
+package com.citu.module.menduner.system.service.jobinterested;
+
+import com.citu.module.menduner.system.controller.admin.jobinterested.vo.JobInterestedPageReqVO;
+import com.citu.module.menduner.system.controller.admin.jobinterested.vo.JobInterestedSaveReqVO;
+import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+
+import com.citu.module.menduner.system.dal.dataobject.jobinterested.JobInterestedDO;
+import com.citu.framework.common.pojo.PageResult;
+import com.citu.framework.common.util.object.BeanUtils;
+
+import com.citu.module.menduner.system.dal.mysql.jobinterested.JobInterestedMapper;
+
+import static com.citu.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static com.citu.module.menduner.system.enums.ErrorCodeConstants.JOB_INTERESTED_NOT_EXISTS;
+
+/**
+ * 求职意向 Service 实现类
+ *
+ * @author Rayson
+ */
+@Service
+@Validated
+public class JobInterestedServiceImpl implements JobInterestedService {
+
+    @Resource
+    private JobInterestedMapper jobInterestedMapper;
+
+    @Override
+    public Long createJobInterested(JobInterestedSaveReqVO createReqVO) {
+        // 插入
+        JobInterestedDO jobInterested = BeanUtils.toBean(createReqVO, JobInterestedDO.class);
+        jobInterestedMapper.insert(jobInterested);
+        // 返回
+        return jobInterested.getId();
+    }
+
+    @Override
+    public void updateJobInterested(JobInterestedSaveReqVO updateReqVO) {
+        // 校验存在
+        validateJobInterestedExists(updateReqVO.getId());
+        // 更新
+        JobInterestedDO updateObj = BeanUtils.toBean(updateReqVO, JobInterestedDO.class);
+        jobInterestedMapper.updateById(updateObj);
+    }
+
+    @Override
+    public void deleteJobInterested(Long id) {
+        // 校验存在
+        validateJobInterestedExists(id);
+        // 删除
+        jobInterestedMapper.deleteById(id);
+    }
+
+    private void validateJobInterestedExists(Long id) {
+        if (jobInterestedMapper.selectById(id) == null) {
+            throw exception(JOB_INTERESTED_NOT_EXISTS);
+        }
+    }
+
+    @Override
+    public JobInterestedDO getJobInterested(Long id) {
+        return jobInterestedMapper.selectById(id);
+    }
+
+    @Override
+    public PageResult<JobInterestedDO> getJobInterestedPage(JobInterestedPageReqVO pageReqVO) {
+        return jobInterestedMapper.selectPage(pageReqVO);
+    }
+
+}

+ 55 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/major/MajorService.java

@@ -0,0 +1,55 @@
+package com.citu.module.menduner.system.service.major;
+
+import javax.validation.*;
+
+import com.citu.module.menduner.system.controller.admin.major.vo.MajorPageReqVO;
+import com.citu.module.menduner.system.controller.admin.major.vo.MajorSaveReqVO;
+import com.citu.module.menduner.system.dal.dataobject.major.MajorDO;
+import com.citu.framework.common.pojo.PageResult;
+
+/**
+ * 专业 Service 接口
+ *
+ * @author Rayson
+ */
+public interface MajorService {
+
+    /**
+     * 创建专业
+     *
+     * @param createReqVO 创建信息
+     * @return 编号
+     */
+    Long createMajor(@Valid MajorSaveReqVO createReqVO);
+
+    /**
+     * 更新专业
+     *
+     * @param updateReqVO 更新信息
+     */
+    void updateMajor(@Valid MajorSaveReqVO updateReqVO);
+
+    /**
+     * 删除专业
+     *
+     * @param id 编号
+     */
+    void deleteMajor(Long id);
+
+    /**
+     * 获得专业
+     *
+     * @param id 编号
+     * @return 专业
+     */
+    MajorDO getMajor(Long id);
+
+    /**
+     * 获得专业分页
+     *
+     * @param pageReqVO 分页查询
+     * @return 专业分页
+     */
+    PageResult<MajorDO> getMajorPage(MajorPageReqVO pageReqVO);
+
+}

+ 72 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/major/MajorServiceImpl.java

@@ -0,0 +1,72 @@
+package com.citu.module.menduner.system.service.major;
+
+import com.citu.module.menduner.system.controller.admin.major.vo.MajorPageReqVO;
+import com.citu.module.menduner.system.controller.admin.major.vo.MajorSaveReqVO;
+import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+
+import com.citu.module.menduner.system.dal.dataobject.major.MajorDO;
+import com.citu.framework.common.pojo.PageResult;
+import com.citu.framework.common.util.object.BeanUtils;
+
+import com.citu.module.menduner.system.dal.mysql.major.MajorMapper;
+
+import static com.citu.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static com.citu.module.menduner.system.enums.ErrorCodeConstants.MAJOR_NOT_EXISTS;
+
+/**
+ * 专业 Service 实现类
+ *
+ * @author Rayson
+ */
+@Service
+@Validated
+public class MajorServiceImpl implements MajorService {
+
+    @Resource
+    private MajorMapper majorMapper;
+
+    @Override
+    public Long createMajor(MajorSaveReqVO createReqVO) {
+        // 插入
+        MajorDO major = BeanUtils.toBean(createReqVO, MajorDO.class);
+        majorMapper.insert(major);
+        // 返回
+        return major.getId();
+    }
+
+    @Override
+    public void updateMajor(MajorSaveReqVO updateReqVO) {
+        // 校验存在
+        validateMajorExists(updateReqVO.getId());
+        // 更新
+        MajorDO updateObj = BeanUtils.toBean(updateReqVO, MajorDO.class);
+        majorMapper.updateById(updateObj);
+    }
+
+    @Override
+    public void deleteMajor(Long id) {
+        // 校验存在
+        validateMajorExists(id);
+        // 删除
+        majorMapper.deleteById(id);
+    }
+
+    private void validateMajorExists(Long id) {
+        if (majorMapper.selectById(id) == null) {
+            throw exception(MAJOR_NOT_EXISTS);
+        }
+    }
+
+    @Override
+    public MajorDO getMajor(Long id) {
+        return majorMapper.selectById(id);
+    }
+
+    @Override
+    public PageResult<MajorDO> getMajorPage(MajorPageReqVO pageReqVO) {
+        return majorMapper.selectPage(pageReqVO);
+    }
+
+}

+ 55 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/positiontag/PositionTagService.java

@@ -0,0 +1,55 @@
+package com.citu.module.menduner.system.service.positiontag;
+
+import com.citu.framework.common.pojo.PageResult;
+import com.citu.module.menduner.system.controller.admin.positiontag.vo.PositionTagPageReqVO;
+import com.citu.module.menduner.system.controller.admin.positiontag.vo.PositionTagSaveReqVO;
+import com.citu.module.menduner.system.dal.dataobject.positiontag.PositionTagDO;
+
+import javax.validation.Valid;
+
+/**
+ * 职位标签 Service 接口
+ *
+ * @author Rayson
+ */
+public interface PositionTagService {
+
+    /**
+     * 创建职位标签
+     *
+     * @param createReqVO 创建信息
+     * @return 编号
+     */
+    Long createPositionTag(@Valid PositionTagSaveReqVO createReqVO);
+
+    /**
+     * 更新职位标签
+     *
+     * @param updateReqVO 更新信息
+     */
+    void updatePositionTag(@Valid PositionTagSaveReqVO updateReqVO);
+
+    /**
+     * 删除职位标签
+     *
+     * @param id 编号
+     */
+    void deletePositionTag(Long id);
+
+    /**
+     * 获得职位标签
+     *
+     * @param id 编号
+     * @return 职位标签
+     */
+    PositionTagDO getPositionTag(Long id);
+
+    /**
+     * 获得职位标签分页
+     *
+     * @param pageReqVO 分页查询
+     * @return 职位标签分页
+     */
+    PageResult<PositionTagDO> getPositionTagPage(PositionTagPageReqVO pageReqVO);
+
+}

+ 72 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/positiontag/PositionTagServiceImpl.java

@@ -0,0 +1,72 @@
+package com.citu.module.menduner.system.service.positiontag;
+
+import com.citu.module.menduner.system.controller.admin.positiontag.vo.PositionTagPageReqVO;
+import com.citu.module.menduner.system.controller.admin.positiontag.vo.PositionTagSaveReqVO;
+import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+
+import com.citu.module.menduner.system.dal.dataobject.positiontag.PositionTagDO;
+import com.citu.framework.common.pojo.PageResult;
+import com.citu.framework.common.util.object.BeanUtils;
+
+import com.citu.module.menduner.system.dal.mysql.positiontag.PositionTagMapper;
+
+import static com.citu.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static com.citu.module.menduner.system.enums.ErrorCodeConstants.POSITION_TAG_NOT_EXISTS;
+
+/**
+ * 职位标签 Service 实现类
+ *
+ * @author Rayson
+ */
+@Service
+@Validated
+public class PositionTagServiceImpl implements PositionTagService {
+
+    @Resource
+    private PositionTagMapper positionTagMapper;
+
+    @Override
+    public Long createPositionTag(PositionTagSaveReqVO createReqVO) {
+        // 插入
+        PositionTagDO positionTag = BeanUtils.toBean(createReqVO, PositionTagDO.class);
+        positionTagMapper.insert(positionTag);
+        // 返回
+        return positionTag.getId();
+    }
+
+    @Override
+    public void updatePositionTag(PositionTagSaveReqVO updateReqVO) {
+        // 校验存在
+        validatePositionTagExists(updateReqVO.getId());
+        // 更新
+        PositionTagDO updateObj = BeanUtils.toBean(updateReqVO, PositionTagDO.class);
+        positionTagMapper.updateById(updateObj);
+    }
+
+    @Override
+    public void deletePositionTag(Long id) {
+        // 校验存在
+        validatePositionTagExists(id);
+        // 删除
+        positionTagMapper.deleteById(id);
+    }
+
+    private void validatePositionTagExists(Long id) {
+        if (positionTagMapper.selectById(id) == null) {
+            throw exception(POSITION_TAG_NOT_EXISTS);
+        }
+    }
+
+    @Override
+    public PositionTagDO getPositionTag(Long id) {
+        return positionTagMapper.selectById(id);
+    }
+
+    @Override
+    public PageResult<PositionTagDO> getPositionTagPage(PositionTagPageReqVO pageReqVO) {
+        return positionTagMapper.selectPage(pageReqVO);
+    }
+
+}

+ 55 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/school/SchoolService.java

@@ -0,0 +1,55 @@
+package com.citu.module.menduner.system.service.school;
+
+import javax.validation.*;
+
+import com.citu.module.menduner.system.controller.admin.school.vo.SchoolPageReqVO;
+import com.citu.module.menduner.system.controller.admin.school.vo.SchoolSaveReqVO;
+import com.citu.module.menduner.system.dal.dataobject.school.SchoolDO;
+import com.citu.framework.common.pojo.PageResult;
+
+/**
+ * 学校 Service 接口
+ *
+ * @author Rayson
+ */
+public interface SchoolService {
+
+    /**
+     * 创建学校
+     *
+     * @param createReqVO 创建信息
+     * @return 编号
+     */
+    Long createSchool(@Valid SchoolSaveReqVO createReqVO);
+
+    /**
+     * 更新学校
+     *
+     * @param updateReqVO 更新信息
+     */
+    void updateSchool(@Valid SchoolSaveReqVO updateReqVO);
+
+    /**
+     * 删除学校
+     *
+     * @param id 编号
+     */
+    void deleteSchool(Long id);
+
+    /**
+     * 获得学校
+     *
+     * @param id 编号
+     * @return 学校
+     */
+    SchoolDO getSchool(Long id);
+
+    /**
+     * 获得学校分页
+     *
+     * @param pageReqVO 分页查询
+     * @return 学校分页
+     */
+    PageResult<SchoolDO> getSchoolPage(SchoolPageReqVO pageReqVO);
+
+}

+ 72 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/school/SchoolServiceImpl.java

@@ -0,0 +1,72 @@
+package com.citu.module.menduner.system.service.school;
+
+import com.citu.module.menduner.system.controller.admin.school.vo.SchoolPageReqVO;
+import com.citu.module.menduner.system.controller.admin.school.vo.SchoolSaveReqVO;
+import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+
+import com.citu.module.menduner.system.dal.dataobject.school.SchoolDO;
+import com.citu.framework.common.pojo.PageResult;
+import com.citu.framework.common.util.object.BeanUtils;
+
+import com.citu.module.menduner.system.dal.mysql.school.SchoolMapper;
+
+import static com.citu.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static com.citu.module.menduner.system.enums.ErrorCodeConstants.SCHOOL_NOT_EXISTS;
+
+/**
+ * 学校 Service 实现类
+ *
+ * @author Rayson
+ */
+@Service
+@Validated
+public class SchoolServiceImpl implements SchoolService {
+
+    @Resource
+    private SchoolMapper schoolMapper;
+
+    @Override
+    public Long createSchool(SchoolSaveReqVO createReqVO) {
+        // 插入
+        SchoolDO school = BeanUtils.toBean(createReqVO, SchoolDO.class);
+        schoolMapper.insert(school);
+        // 返回
+        return school.getId();
+    }
+
+    @Override
+    public void updateSchool(SchoolSaveReqVO updateReqVO) {
+        // 校验存在
+        validateSchoolExists(updateReqVO.getId());
+        // 更新
+        SchoolDO updateObj = BeanUtils.toBean(updateReqVO, SchoolDO.class);
+        schoolMapper.updateById(updateObj);
+    }
+
+    @Override
+    public void deleteSchool(Long id) {
+        // 校验存在
+        validateSchoolExists(id);
+        // 删除
+        schoolMapper.deleteById(id);
+    }
+
+    private void validateSchoolExists(Long id) {
+        if (schoolMapper.selectById(id) == null) {
+            throw exception(SCHOOL_NOT_EXISTS);
+        }
+    }
+
+    @Override
+    public SchoolDO getSchool(Long id) {
+        return schoolMapper.selectById(id);
+    }
+
+    @Override
+    public PageResult<SchoolDO> getSchoolPage(SchoolPageReqVO pageReqVO) {
+        return schoolMapper.selectPage(pageReqVO);
+    }
+
+}

+ 55 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/usercertificate/UserCertificateService.java

@@ -0,0 +1,55 @@
+package com.citu.module.menduner.system.service.usercertificate;
+
+import javax.validation.*;
+
+import com.citu.module.menduner.system.controller.admin.usercertificate.vo.UserCertificatePageReqVO;
+import com.citu.module.menduner.system.controller.admin.usercertificate.vo.UserCertificateSaveReqVO;
+import com.citu.module.menduner.system.dal.dataobject.usercertificate.UserCertificateDO;
+import com.citu.framework.common.pojo.PageResult;
+
+/**
+ * 用户证书 Service 接口
+ *
+ * @author Rayson
+ */
+public interface UserCertificateService {
+
+    /**
+     * 创建用户证书
+     *
+     * @param createReqVO 创建信息
+     * @return 编号
+     */
+    Long createUserCertificate(@Valid UserCertificateSaveReqVO createReqVO);
+
+    /**
+     * 更新用户证书
+     *
+     * @param updateReqVO 更新信息
+     */
+    void updateUserCertificate(@Valid UserCertificateSaveReqVO updateReqVO);
+
+    /**
+     * 删除用户证书
+     *
+     * @param id 编号
+     */
+    void deleteUserCertificate(Long id);
+
+    /**
+     * 获得用户证书
+     *
+     * @param id 编号
+     * @return 用户证书
+     */
+    UserCertificateDO getUserCertificate(Long id);
+
+    /**
+     * 获得用户证书分页
+     *
+     * @param pageReqVO 分页查询
+     * @return 用户证书分页
+     */
+    PageResult<UserCertificateDO> getUserCertificatePage(UserCertificatePageReqVO pageReqVO);
+
+}

+ 72 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/usercertificate/UserCertificateServiceImpl.java

@@ -0,0 +1,72 @@
+package com.citu.module.menduner.system.service.usercertificate;
+
+import com.citu.module.menduner.system.controller.admin.usercertificate.vo.UserCertificatePageReqVO;
+import com.citu.module.menduner.system.controller.admin.usercertificate.vo.UserCertificateSaveReqVO;
+import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+
+import com.citu.module.menduner.system.dal.dataobject.usercertificate.UserCertificateDO;
+import com.citu.framework.common.pojo.PageResult;
+import com.citu.framework.common.util.object.BeanUtils;
+
+import com.citu.module.menduner.system.dal.mysql.usercertificate.UserCertificateMapper;
+
+import static com.citu.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static com.citu.module.menduner.system.enums.ErrorCodeConstants.USER_CERTIFICATE_NOT_EXISTS;
+
+/**
+ * 用户证书 Service 实现类
+ *
+ * @author Rayson
+ */
+@Service
+@Validated
+public class UserCertificateServiceImpl implements UserCertificateService {
+
+    @Resource
+    private UserCertificateMapper userCertificateMapper;
+
+    @Override
+    public Long createUserCertificate(UserCertificateSaveReqVO createReqVO) {
+        // 插入
+        UserCertificateDO userCertificate = BeanUtils.toBean(createReqVO, UserCertificateDO.class);
+        userCertificateMapper.insert(userCertificate);
+        // 返回
+        return userCertificate.getId();
+    }
+
+    @Override
+    public void updateUserCertificate(UserCertificateSaveReqVO updateReqVO) {
+        // 校验存在
+        validateUserCertificateExists(updateReqVO.getId());
+        // 更新
+        UserCertificateDO updateObj = BeanUtils.toBean(updateReqVO, UserCertificateDO.class);
+        userCertificateMapper.updateById(updateObj);
+    }
+
+    @Override
+    public void deleteUserCertificate(Long id) {
+        // 校验存在
+        validateUserCertificateExists(id);
+        // 删除
+        userCertificateMapper.deleteById(id);
+    }
+
+    private void validateUserCertificateExists(Long id) {
+        if (userCertificateMapper.selectById(id) == null) {
+            throw exception(USER_CERTIFICATE_NOT_EXISTS);
+        }
+    }
+
+    @Override
+    public UserCertificateDO getUserCertificate(Long id) {
+        return userCertificateMapper.selectById(id);
+    }
+
+    @Override
+    public PageResult<UserCertificateDO> getUserCertificatePage(UserCertificatePageReqVO pageReqVO) {
+        return userCertificateMapper.selectPage(pageReqVO);
+    }
+
+}

+ 55 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/userinfo/UserInfoService.java

@@ -0,0 +1,55 @@
+package com.citu.module.menduner.system.service.userinfo;
+
+import com.citu.framework.common.pojo.PageResult;
+import com.citu.module.menduner.system.dal.dataobject.userinfo.UserInfoDO;
+import com.citu.module.menduner.system.controller.admin.userinfo.vo.UserInfoPageReqVO;
+import com.citu.module.menduner.system.controller.admin.userinfo.vo.UserInfoSaveReqVO;
+
+import javax.validation.Valid;
+
+/**
+ * 用户信息-个人档案 Service 接口
+ *
+ * @author Rayson
+ */
+public interface UserInfoService {
+
+    /**
+     * 创建用户信息-个人档案
+     *
+     * @param createReqVO 创建信息
+     * @return 编号
+     */
+    Long createUserInfo(@Valid UserInfoSaveReqVO createReqVO);
+
+    /**
+     * 更新用户信息-个人档案
+     *
+     * @param updateReqVO 更新信息
+     */
+    void updateUserInfo(@Valid UserInfoSaveReqVO updateReqVO);
+
+    /**
+     * 删除用户信息-个人档案
+     *
+     * @param id 编号
+     */
+    void deleteUserInfo(Long id);
+
+    /**
+     * 获得用户信息-个人档案
+     *
+     * @param id 编号
+     * @return 用户信息-个人档案
+     */
+    UserInfoDO getUserInfo(Long id);
+
+    /**
+     * 获得用户信息-个人档案分页
+     *
+     * @param pageReqVO 分页查询
+     * @return 用户信息-个人档案分页
+     */
+    PageResult<UserInfoDO> getUserInfoPage(UserInfoPageReqVO pageReqVO);
+
+}

+ 71 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/userinfo/UserInfoServiceImpl.java

@@ -0,0 +1,71 @@
+package com.citu.module.menduner.system.service.userinfo;
+
+import com.citu.framework.common.pojo.PageResult;
+import com.citu.framework.common.util.object.BeanUtils;
+import com.citu.module.menduner.system.dal.dataobject.userinfo.UserInfoDO;
+import com.citu.module.menduner.system.dal.mysql.userinfo.UserInfoMapper;
+import com.citu.module.menduner.system.controller.admin.userinfo.vo.UserInfoPageReqVO;
+import com.citu.module.menduner.system.controller.admin.userinfo.vo.UserInfoSaveReqVO;
+import org.springframework.stereotype.Service;
+import org.springframework.validation.annotation.Validated;
+
+import javax.annotation.Resource;
+
+import static com.citu.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static com.citu.module.menduner.system.enums.ErrorCodeConstants.USER_INFO_NOT_EXISTS;
+
+/**
+ * 用户信息-个人档案 Service 实现类
+ *
+ * @author Rayson
+ */
+@Service
+@Validated
+public class UserInfoServiceImpl implements UserInfoService {
+
+    @Resource
+    private UserInfoMapper userInfoMapper;
+
+    @Override
+    public Long createUserInfo(UserInfoSaveReqVO createReqVO) {
+        // 插入
+        UserInfoDO userInfo = BeanUtils.toBean(createReqVO, UserInfoDO.class);
+        userInfoMapper.insert(userInfo);
+        // 返回
+        return userInfo.getId();
+    }
+
+    @Override
+    public void updateUserInfo(UserInfoSaveReqVO updateReqVO) {
+        // 校验存在
+        validateUserInfoExists(updateReqVO.getId());
+        // 更新
+        UserInfoDO updateObj = BeanUtils.toBean(updateReqVO, UserInfoDO.class);
+        userInfoMapper.updateById(updateObj);
+    }
+
+    @Override
+    public void deleteUserInfo(Long id) {
+        // 校验存在
+        validateUserInfoExists(id);
+        // 删除
+        userInfoMapper.deleteById(id);
+    }
+
+    private void validateUserInfoExists(Long id) {
+        if (userInfoMapper.selectById(id) == null) {
+            throw exception(USER_INFO_NOT_EXISTS);
+        }
+    }
+
+    @Override
+    public UserInfoDO getUserInfo(Long id) {
+        return userInfoMapper.selectById(id);
+    }
+
+    @Override
+    public PageResult<UserInfoDO> getUserInfoPage(UserInfoPageReqVO pageReqVO) {
+        return userInfoMapper.selectPage(pageReqVO);
+    }
+
+}

+ 55 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/userskill/UserSkillService.java

@@ -0,0 +1,55 @@
+package com.citu.module.menduner.system.service.userskill;
+
+import com.citu.framework.common.pojo.PageResult;
+import com.citu.module.menduner.system.controller.admin.userskill.vo.UserSkillPageReqVO;
+import com.citu.module.menduner.system.controller.admin.userskill.vo.UserSkillSaveReqVO;
+import com.citu.module.menduner.system.dal.dataobject.userskill.UserSkillDO;
+
+import javax.validation.Valid;
+
+/**
+ * 用户技能 Service 接口
+ *
+ * @author Rayson
+ */
+public interface UserSkillService {
+
+    /**
+     * 创建用户技能
+     *
+     * @param createReqVO 创建信息
+     * @return 编号
+     */
+    Long createUserSkill(@Valid UserSkillSaveReqVO createReqVO);
+
+    /**
+     * 更新用户技能
+     *
+     * @param updateReqVO 更新信息
+     */
+    void updateUserSkill(@Valid UserSkillSaveReqVO updateReqVO);
+
+    /**
+     * 删除用户技能
+     *
+     * @param id 编号
+     */
+    void deleteUserSkill(Long id);
+
+    /**
+     * 获得用户技能
+     *
+     * @param id 编号
+     * @return 用户技能
+     */
+    UserSkillDO getUserSkill(Long id);
+
+    /**
+     * 获得用户技能分页
+     *
+     * @param pageReqVO 分页查询
+     * @return 用户技能分页
+     */
+    PageResult<UserSkillDO> getUserSkillPage(UserSkillPageReqVO pageReqVO);
+
+}

+ 72 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/userskill/UserSkillServiceImpl.java

@@ -0,0 +1,72 @@
+package com.citu.module.menduner.system.service.userskill;
+
+import com.citu.module.menduner.system.controller.admin.userskill.vo.UserSkillPageReqVO;
+import com.citu.module.menduner.system.controller.admin.userskill.vo.UserSkillSaveReqVO;
+import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+
+import com.citu.module.menduner.system.dal.dataobject.userskill.UserSkillDO;
+import com.citu.framework.common.pojo.PageResult;
+import com.citu.framework.common.util.object.BeanUtils;
+
+import com.citu.module.menduner.system.dal.mysql.userskill.UserSkillMapper;
+
+import static com.citu.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static com.citu.module.menduner.system.enums.ErrorCodeConstants.USER_SKILL_NOT_EXISTS;
+
+/**
+ * 用户技能 Service 实现类
+ *
+ * @author Rayson
+ */
+@Service
+@Validated
+public class UserSkillServiceImpl implements UserSkillService {
+
+    @Resource
+    private UserSkillMapper userSkillMapper;
+
+    @Override
+    public Long createUserSkill(UserSkillSaveReqVO createReqVO) {
+        // 插入
+        UserSkillDO userSkill = BeanUtils.toBean(createReqVO, UserSkillDO.class);
+        userSkillMapper.insert(userSkill);
+        // 返回
+        return userSkill.getId();
+    }
+
+    @Override
+    public void updateUserSkill(UserSkillSaveReqVO updateReqVO) {
+        // 校验存在
+        validateUserSkillExists(updateReqVO.getId());
+        // 更新
+        UserSkillDO updateObj = BeanUtils.toBean(updateReqVO, UserSkillDO.class);
+        userSkillMapper.updateById(updateObj);
+    }
+
+    @Override
+    public void deleteUserSkill(Long id) {
+        // 校验存在
+        validateUserSkillExists(id);
+        // 删除
+        userSkillMapper.deleteById(id);
+    }
+
+    private void validateUserSkillExists(Long id) {
+        if (userSkillMapper.selectById(id) == null) {
+            throw exception(USER_SKILL_NOT_EXISTS);
+        }
+    }
+
+    @Override
+    public UserSkillDO getUserSkill(Long id) {
+        return userSkillMapper.selectById(id);
+    }
+
+    @Override
+    public PageResult<UserSkillDO> getUserSkillPage(UserSkillPageReqVO pageReqVO) {
+        return userSkillMapper.selectPage(pageReqVO);
+    }
+
+}

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

@@ -0,0 +1,55 @@
+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.dal.dataobject.workexp.WorkExpDO;
+
+import javax.validation.Valid;
+
+/**
+ * 工作经历 Service 接口
+ *
+ * @author Rayson
+ */
+public interface WorkExpService {
+
+    /**
+     * 创建工作经历
+     *
+     * @param createReqVO 创建信息
+     * @return 编号
+     */
+    Long createWorkExp(@Valid WorkExpSaveReqVO createReqVO);
+
+    /**
+     * 更新工作经历
+     *
+     * @param updateReqVO 更新信息
+     */
+    void updateWorkExp(@Valid WorkExpSaveReqVO updateReqVO);
+
+    /**
+     * 删除工作经历
+     *
+     * @param id 编号
+     */
+    void deleteWorkExp(Long id);
+
+    /**
+     * 获得工作经历
+     *
+     * @param id 编号
+     * @return 工作经历
+     */
+    WorkExpDO getWorkExp(Long id);
+
+    /**
+     * 获得工作经历分页
+     *
+     * @param pageReqVO 分页查询
+     * @return 工作经历分页
+     */
+    PageResult<WorkExpDO> getWorkExpPage(WorkExpPageReqVO pageReqVO);
+
+}

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

@@ -0,0 +1,72 @@
+package com.citu.module.menduner.system.service.workexp;
+
+import com.citu.module.menduner.system.controller.admin.workexp.vo.WorkExpPageReqVO;
+import com.citu.module.menduner.system.controller.admin.workexp.vo.WorkExpSaveReqVO;
+import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
+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 static com.citu.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static com.citu.module.menduner.system.enums.ErrorCodeConstants.WORK_EXP_NOT_EXISTS;
+
+/**
+ * 工作经历 Service 实现类
+ *
+ * @author Rayson
+ */
+@Service
+@Validated
+public class WorkExpServiceImpl implements WorkExpService {
+
+    @Resource
+    private WorkExpMapper workExpMapper;
+
+    @Override
+    public Long createWorkExp(WorkExpSaveReqVO createReqVO) {
+        // 插入
+        WorkExpDO workExp = BeanUtils.toBean(createReqVO, WorkExpDO.class);
+        workExpMapper.insert(workExp);
+        // 返回
+        return workExp.getId();
+    }
+
+    @Override
+    public void updateWorkExp(WorkExpSaveReqVO updateReqVO) {
+        // 校验存在
+        validateWorkExpExists(updateReqVO.getId());
+        // 更新
+        WorkExpDO updateObj = BeanUtils.toBean(updateReqVO, WorkExpDO.class);
+        workExpMapper.updateById(updateObj);
+    }
+
+    @Override
+    public void deleteWorkExp(Long id) {
+        // 校验存在
+        validateWorkExpExists(id);
+        // 删除
+        workExpMapper.deleteById(id);
+    }
+
+    private void validateWorkExpExists(Long id) {
+        if (workExpMapper.selectById(id) == null) {
+            throw exception(WORK_EXP_NOT_EXISTS);
+        }
+    }
+
+    @Override
+    public WorkExpDO getWorkExp(Long id) {
+        return workExpMapper.selectById(id);
+    }
+
+    @Override
+    public PageResult<WorkExpDO> getWorkExpPage(WorkExpPageReqVO pageReqVO) {
+        return workExpMapper.selectPage(pageReqVO);
+    }
+
+}

+ 12 - 0
menduner/menduner-system-biz/src/main/resources/mapper/area/AreaMapper.xml

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.citu.module.menduner.system.dal.mysql.area.AreaMapper">
+
+    <!--
+        一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
+        无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
+        代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
+        文档可见:https://www.iocoder.cn/MyBatis/x-plugins/
+     -->
+
+</mapper>

+ 12 - 0
menduner/menduner-system-biz/src/main/resources/mapper/certificate/CertificateMapper.xml

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.citu.module.menduner.system.dal.mysql.certificate.CertificateMapper">
+
+    <!--
+        一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
+        无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
+        代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
+        文档可见:https://www.iocoder.cn/MyBatis/x-plugins/
+     -->
+
+</mapper>

+ 12 - 0
menduner/menduner-system-biz/src/main/resources/mapper/cvattachment/CvAttachmentMapper.xml

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.citu.module.menduner.system.dal.mysql.cvattachment.CvAttachmentMapper">
+
+    <!--
+        一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
+        无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
+        代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
+        文档可见:https://www.iocoder.cn/MyBatis/x-plugins/
+     -->
+
+</mapper>

+ 12 - 0
menduner/menduner-system-biz/src/main/resources/mapper/eduexp/EduExpMapper.xml

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.citu.module.menduner.system.dal.mysql.eduexp.EduExpMapper">
+
+    <!--
+        一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
+        无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
+        代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
+        文档可见:https://www.iocoder.cn/MyBatis/x-plugins/
+     -->
+
+</mapper>

+ 12 - 0
menduner/menduner-system-biz/src/main/resources/mapper/jobinterested/JobInterestedMapper.xml

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.citu.module.menduner.system.dal.mysql.jobinterested.JobInterestedMapper">
+
+    <!--
+        一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
+        无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
+        代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
+        文档可见:https://www.iocoder.cn/MyBatis/x-plugins/
+     -->
+
+</mapper>

Alguns arquivos não foram mostrados porque muitos arquivos mudaram nesse diff