Procházet zdrojové kódy

1、增加企业岗位管理
2、增加招聘职位详情接口

rayson před 1 rokem
rodič
revize
878b539a13
51 změnil soubory, kde provedl 1080 přidání a 130 odebrání
  1. 24 0
      menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/DictTypeConstants.java
  2. 3 0
      menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/ErrorCodeConstants.java
  3. 5 2
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/eduexp/vo/EduExpRespVO.java
  4. 93 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/enterprise/EnterprisePostController.java
  5. 6 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/enterprise/bind/EnterpriseUserBindPageReqVO.java
  6. 15 2
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/enterprise/bind/EnterpriseUserBindRespVO.java
  7. 8 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/enterprise/bind/EnterpriseUserBindSaveReqVO.java
  8. 5 2
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/enterprise/business/EnterpriseBusinessRespVO.java
  9. 39 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/enterprise/post/EnterprisePostPageReqVO.java
  10. 51 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/enterprise/post/EnterprisePostRespVO.java
  11. 41 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/enterprise/post/EnterprisePostSaveReqVO.java
  12. 3 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/enterprise/register/EnterpriseRegisterRespVO.java
  13. 5 2
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/enterprise/vo/EnterpriseRespVO.java
  14. 5 2
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/job/vo/JobAdvertisedRespVO.java
  15. 3 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/job/vo/JobInterestedRespVO.java
  16. 3 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/major/vo/MajorRespVO.java
  17. 3 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/people/vo/PeopleSkillRespVO.java
  18. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/position/PositionTagController.java
  19. 3 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/user/vo/MdeUserRespVO.java
  20. 2 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/visits/vo/MdeVisitsRespVO.java
  21. 5 2
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/workexp/vo/WorkExpRespVO.java
  22. 0 3
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/area/AppAreaController.java
  23. 0 9
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/auth/AppMdeAuthController.java
  24. 33 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/contact/AppEnterpriseUserContactRespVO.java
  25. 4 3
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/enterprise/AppEnterpriseController.java
  26. 30 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/enterprise/vo/AppEnterpriseSimpleRespVO.java
  27. 0 3
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/industry/AppIndustryController.java
  28. 9 5
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/job/AppJobAdvertisedController.java
  29. 2 18
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/job/vo/AppEnterpriseJobHomeRespVO.java
  30. 92 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/job/vo/AppJobAdvertisedDetailRespVO.java
  31. 0 3
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/position/AppPositionController.java
  32. 38 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/post/AppEnterprisePostRespVO.java
  33. 3 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/user/vo/AppMdeUserRespVO.java
  34. 58 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/enterprise/EnterprisePostDO.java
  35. 8 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/enterprise/EnterpriseUserBindDO.java
  36. 1 4
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/position/PositionTagDO.java
  37. 29 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/enterprise/EnterprisePostMapper.java
  38. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/position/PositionTagMapper.java
  39. 6 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/area/AreaService.java
  40. 5 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/area/AreaServiceImpl.java
  41. 55 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/enterprise/EnterprisePostService.java
  42. 71 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/enterprise/EnterprisePostServiceImpl.java
  43. 0 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/industry/IndustryService.java
  44. 8 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/job/JobAdvertisedService.java
  45. 136 55
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/job/JobAdvertisedServiceImpl.java
  46. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/position/PositionTagService.java
  47. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/position/PositionTagServiceImpl.java
  48. 143 0
      menduner/menduner-system-biz/src/test/java/com/citu/module/menduner/system/service/enterprise/EnterprisePostServiceImplTest.java
  49. 1 1
      menduner/menduner-system-biz/src/test/java/com/citu/module/menduner/system/service/positiontag/PositionTagServiceImplTest.java
  50. 2 1
      menduner/menduner-system-biz/src/test/resources/sql/clean.sql
  51. 20 1
      menduner/menduner-system-biz/src/test/resources/sql/create_tables.sql

+ 24 - 0
menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/DictTypeConstants.java

@@ -0,0 +1,24 @@
+package com.citu.module.menduner.system.enums;
+
+/**
+ * menduner 字典类型的枚举类
+ *
+ * @author rayson
+ */
+public interface DictTypeConstants {
+
+    String USER_TYPE = "用户类型"; // 公共状态
+    String MENDUNER_STATUS = "menduner_status"; // 公共状态
+    String MENDUNER_JOB_TYPE = "menduner_job_type"; // 招聘类型
+    String MENDUNER_SKILL_LEVEL = "menduner_skill_level"; // 技能等级
+    String MENDUNER_CURRENCY_TYPE = "menduner_currency_type"; // 货币类型
+    String MENDUNER_PAY_TYPE = "menduner_pay_type"; // 薪酬类型
+    String MENDUNER_SCALE = "menduner_scale"; // 人员规模
+    String MENDUNER_FINANCING_STATUS = "menduner_financing_status"; // 融资阶段
+    String MENDUNER_ENTERPRISE_TYPE = "menduner_enterprise_type"; // 企业类型
+    String MENDUNER_BUSINESS_STATUS = "menduner_business_status"; // 经营状态
+    String MENDUNER_EDUCATION_TYPE = "menduner_education_type"; // 学历
+    String MENDUNER_EDUCATION_SYSTEM_TYPE = "menduner_education_system_type"; // 学制类型
+    String MENDUNER_VISITS_TYPE = "menduner_visits_type"; // 业务类型
+
+}

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

@@ -102,6 +102,9 @@ public interface ErrorCodeConstants {
     // ========== 门墩儿-企业登录用户 1_200_008_000 ==========
     ErrorCode MDE_ENTERPRISE_USER_BIND_NOT_EXISTS = new ErrorCode(1_200_008_001, "门墩儿-企业登录用户不存在");
 
+    // ========== 门墩儿-企业岗位信息 1_200_009_000 ==========
+    ErrorCode ENTERPRISE_POST_NOT_EXISTS = new ErrorCode(1_200_009_001, "门墩儿-企业岗位信息不存在");
+
     // ========== 门墩儿-招聘职位 1_200_010_000 ==========
     ErrorCode MDE_JOB_ADVERTISED_NOT_EXISTS = new ErrorCode(1_200_010_001, "门墩儿-招聘职位不存在");
 }

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

@@ -12,6 +12,9 @@ import com.alibaba.excel.annotation.*;
 import com.citu.framework.excel.core.annotations.DictFormat;
 import com.citu.framework.excel.core.convert.DictConvert;
 
+import static com.citu.module.menduner.system.enums.DictTypeConstants.MENDUNER_EDUCATION_SYSTEM_TYPE;
+import static com.citu.module.menduner.system.enums.DictTypeConstants.MENDUNER_EDUCATION_TYPE;
+
 @Schema(description = "管理后台 - 教育经历 Response VO")
 @Data
 @ExcelIgnoreUnannotated
@@ -35,12 +38,12 @@ public class EduExpRespVO {
 
     @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 枚举类中
+    @DictFormat(MENDUNER_EDUCATION_TYPE)
     private Integer educationType;
 
     @Schema(description = "学制类型(0 全日制 | 1 非全日制)", example = "1")
     @ExcelProperty(value = "学制类型(0 全日制 | 1 非全日制)", converter = DictConvert.class)
-    @DictFormat("menduner_education_system_type") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
+    @DictFormat(MENDUNER_EDUCATION_SYSTEM_TYPE)
     private Integer educationSystemType;
 
     @Schema(description = "专业id", example = "30649")

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

@@ -0,0 +1,93 @@
+package com.citu.module.menduner.system.controller.admin.enterprise;
+
+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.controller.admin.enterprise.post.EnterprisePostPageReqVO;
+import com.citu.module.menduner.system.controller.admin.enterprise.post.EnterprisePostRespVO;
+import com.citu.module.menduner.system.controller.admin.enterprise.post.EnterprisePostSaveReqVO;
+import com.citu.module.menduner.system.dal.dataobject.enterprise.EnterprisePostDO;
+import com.citu.module.menduner.system.service.enterprise.EnterprisePostService;
+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/enterprise-post")
+@Validated
+public class EnterprisePostController {
+
+    @Resource
+    private EnterprisePostService enterprisePostService;
+
+    @PostMapping("/create")
+    @Operation(summary = "创建门墩儿-企业岗位信息")
+    @PreAuthorize("@ss.hasPermission('menduner:system:enterprise-post:create')")
+    public CommonResult<Long> createEnterprisePost(@Valid @RequestBody EnterprisePostSaveReqVO createReqVO) {
+        return success(enterprisePostService.createEnterprisePost(createReqVO));
+    }
+
+    @PutMapping("/update")
+    @Operation(summary = "更新门墩儿-企业岗位信息")
+    @PreAuthorize("@ss.hasPermission('menduner:system:enterprise-post:update')")
+    public CommonResult<Boolean> updateEnterprisePost(@Valid @RequestBody EnterprisePostSaveReqVO updateReqVO) {
+        enterprisePostService.updateEnterprisePost(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/delete")
+    @Operation(summary = "删除门墩儿-企业岗位信息")
+    @Parameter(name = "id", description = "编号", required = true)
+    @PreAuthorize("@ss.hasPermission('menduner:system:enterprise-post:delete')")
+    public CommonResult<Boolean> deleteEnterprisePost(@RequestParam("id") Long id) {
+        enterprisePostService.deleteEnterprisePost(id);
+        return success(true);
+    }
+
+    @GetMapping("/get")
+    @Operation(summary = "获得门墩儿-企业岗位信息")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('menduner:system:enterprise-post:query')")
+    public CommonResult<EnterprisePostRespVO> getEnterprisePost(@RequestParam("id") Long id) {
+        EnterprisePostDO enterprisePost = enterprisePostService.getEnterprisePost(id);
+        return success(BeanUtils.toBean(enterprisePost, EnterprisePostRespVO.class));
+    }
+
+    @GetMapping("/page")
+    @Operation(summary = "获得门墩儿-企业岗位信息分页")
+    @PreAuthorize("@ss.hasPermission('menduner:system:enterprise-post:query')")
+    public CommonResult<PageResult<EnterprisePostRespVO>> getEnterprisePostPage(@Valid EnterprisePostPageReqVO pageReqVO) {
+        PageResult<EnterprisePostDO> pageResult = enterprisePostService.getEnterprisePostPage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, EnterprisePostRespVO.class));
+    }
+
+    @GetMapping("/export-excel")
+    @Operation(summary = "导出门墩儿-企业岗位信息 Excel")
+    @PreAuthorize("@ss.hasPermission('menduner:system:enterprise-post:export')")
+    @ApiAccessLog(operateType = EXPORT)
+    public void exportEnterprisePostExcel(@Valid EnterprisePostPageReqVO pageReqVO,
+                                          HttpServletResponse response) throws IOException {
+        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<EnterprisePostDO> list = enterprisePostService.getEnterprisePostPage(pageReqVO).getList();
+        // 导出 Excel
+        ExcelUtils.write(response, "门墩儿-企业岗位信息.xls", "数据", EnterprisePostRespVO.class,
+                BeanUtils.toBean(list, EnterprisePostRespVO.class));
+    }
+
+}

+ 6 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/enterprise/bind/EnterpriseUserBindPageReqVO.java

@@ -21,6 +21,12 @@ public class EnterpriseUserBindPageReqVO extends PageParam {
     @Schema(description = "用户id", example = "23317")
     private String userId;
 
+    @Schema(description = "名称", example = "x女士")
+    private String name;
+
+    @Schema(description = "岗位id", example = "23317")
+    private Long postId;
+
     @Schema(description = "帐号状态(0正常 1停用 2 等待审核 3不通过)", example = "2")
     private Integer status;
 

+ 15 - 2
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/enterprise/bind/EnterpriseUserBindRespVO.java

@@ -8,6 +8,11 @@ import com.alibaba.excel.annotation.*;
 import com.citu.framework.excel.core.annotations.DictFormat;
 import com.citu.framework.excel.core.convert.DictConvert;
 
+import javax.validation.constraints.NotEmpty;
+
+import static com.citu.module.menduner.system.enums.DictTypeConstants.MENDUNER_STATUS;
+import static com.citu.module.menduner.system.enums.DictTypeConstants.USER_TYPE;
+
 @Schema(description = "管理后台 - 门墩儿-企业登录用户 Response VO")
 @Data
 @ExcelIgnoreUnannotated
@@ -21,13 +26,21 @@ public class EnterpriseUserBindRespVO {
     @ExcelProperty("企业id")
     private Long enterpriseId;
 
+    @Schema(description = "岗位id", example = "23317")
+    @ExcelProperty("岗位id")
+    private Long postId;
+
     @Schema(description = "用户id", requiredMode = Schema.RequiredMode.REQUIRED, example = "23317")
     @ExcelProperty("用户id")
     private String userId;
 
+    @Schema(description = "名称", example = "x女士")
+    @ExcelProperty("名称")
+    private String name;
+
     @Schema(description = "帐号状态(0正常 1停用 2 等待审核 3不通过)", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
     @ExcelProperty(value = "帐号状态(0正常 1停用 2 等待审核 3不通过)", converter = DictConvert.class)
-    @DictFormat("menduner_status") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
+    @DictFormat(MENDUNER_STATUS)
     private Integer status;
 
     @Schema(description = "最后登录IP")
@@ -40,7 +53,7 @@ public class EnterpriseUserBindRespVO {
 
     @Schema(description = "用户类型(0普通企业用户 1 企业管理员)", example = "2")
     @ExcelProperty(value = "用户类型(0普通企业用户 1 企业管理员)", converter = DictConvert.class)
-    @DictFormat("user_type") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
+    @DictFormat(USER_TYPE)
     private Integer userType;
 
     @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)

+ 8 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/enterprise/bind/EnterpriseUserBindSaveReqVO.java

@@ -1,6 +1,7 @@
 package com.citu.module.menduner.system.controller.admin.enterprise.bind;
 
 
+import com.alibaba.excel.annotation.ExcelProperty;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
 
@@ -18,10 +19,17 @@ public class EnterpriseUserBindSaveReqVO {
     @NotNull(message = "企业id不能为空")
     private Long enterpriseId;
 
+    @Schema(description = "岗位id", example = "23317")
+    private Long postId;
+
     @Schema(description = "用户id", requiredMode = Schema.RequiredMode.REQUIRED, example = "23317")
     @NotEmpty(message = "用户id不能为空")
     private String userId;
 
+    @Schema(description = "名称", example = "x女士")
+    @NotEmpty(message = "名称不能为空")
+    private String name;
+
     @Schema(description = "帐号状态(0正常 1停用 2 等待审核 3不通过)", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
     @NotNull(message = "帐号状态(0正常 1停用 2 等待审核 3不通过)不能为空")
     private Integer status;

+ 5 - 2
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/enterprise/business/EnterpriseBusinessRespVO.java

@@ -8,6 +8,9 @@ import com.alibaba.excel.annotation.*;
 import com.citu.framework.excel.core.annotations.DictFormat;
 import com.citu.framework.excel.core.convert.DictConvert;
 
+import static com.citu.module.menduner.system.enums.DictTypeConstants.MENDUNER_BUSINESS_STATUS;
+import static com.citu.module.menduner.system.enums.DictTypeConstants.MENDUNER_ENTERPRISE_TYPE;
+
 @Schema(description = "管理后台 - 门墩儿-企业工商信息 Response VO")
 @Data
 @ExcelIgnoreUnannotated
@@ -31,7 +34,7 @@ public class EnterpriseBusinessRespVO {
 
     @Schema(description = "企业类型", example = "2")
     @ExcelProperty(value = "企业类型", converter = DictConvert.class)
-    @DictFormat("menduner_enterprise_type") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
+    @DictFormat(MENDUNER_ENTERPRISE_TYPE)
     private String type;
 
     @Schema(description = "所属地区")
@@ -72,7 +75,7 @@ public class EnterpriseBusinessRespVO {
 
     @Schema(description = "经营状态", example = "1")
     @ExcelProperty(value = "经营状态", converter = DictConvert.class)
-    @DictFormat("menduner_business_status") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
+    @DictFormat(MENDUNER_BUSINESS_STATUS)
     private String businessStatus;
 
     @Schema(description = "营业期限")

+ 39 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/enterprise/post/EnterprisePostPageReqVO.java

@@ -0,0 +1,39 @@
+package com.citu.module.menduner.system.controller.admin.enterprise.post;
+
+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.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 EnterprisePostPageReqVO extends PageParam {
+
+    @Schema(description = "所属企业id", example = "9907")
+    private Long enterpriseId;
+
+    @Schema(description = "岗位缩写")
+    private String code;
+
+    @Schema(description = "岗位中文名称")
+    private String nameCn;
+
+    @Schema(description = "岗位英文")
+    private String nameEn;
+
+    @Schema(description = "状态(0正常 1停用)", example = "2")
+    private Integer status;
+
+    @Schema(description = "创建时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+
+}

+ 51 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/enterprise/post/EnterprisePostRespVO.java

@@ -0,0 +1,51 @@
+package com.citu.module.menduner.system.controller.admin.enterprise.post;
+
+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.LocalDateTime;
+
+@Schema(description = "管理后台 - 门墩儿-企业岗位信息 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class EnterprisePostRespVO {
+
+    @Schema(description = "岗位ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "13815")
+    @ExcelProperty("岗位ID")
+    private Long id;
+
+    @Schema(description = "所属企业id", example = "9907")
+    @ExcelProperty("所属企业id")
+    private Long enterpriseId;
+
+    @Schema(description = "岗位缩写")
+    @ExcelProperty("岗位缩写")
+    private String code;
+
+    @Schema(description = "岗位中文名称", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("岗位中文名称")
+    private String nameCn;
+
+    @Schema(description = "岗位英文", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("岗位英文")
+    private String nameEn;
+
+    @Schema(description = "显示顺序", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("显示顺序")
+    private Integer sort;
+
+    @Schema(description = "状态(0正常 1停用)", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
+    @ExcelProperty("状态(0正常 1停用)")
+    private Integer status;
+
+    @Schema(description = "备注", example = "随便")
+    @ExcelProperty("备注")
+    private String remark;
+
+    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("创建时间")
+    private LocalDateTime createTime;
+
+}

+ 41 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/enterprise/post/EnterprisePostSaveReqVO.java

@@ -0,0 +1,41 @@
+package com.citu.module.menduner.system.controller.admin.enterprise.post;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+
+@Schema(description = "管理后台 - 门墩儿-企业岗位信息新增/修改 Request VO")
+@Data
+public class EnterprisePostSaveReqVO {
+
+    @Schema(description = "岗位ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "13815")
+    private Long id;
+
+    @Schema(description = "所属企业id", example = "9907")
+    private Long enterpriseId;
+
+    @Schema(description = "岗位缩写")
+    private String code;
+
+    @Schema(description = "岗位中文名称", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotEmpty(message = "岗位中文名称不能为空")
+    private String nameCn;
+
+    @Schema(description = "岗位英文", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotEmpty(message = "岗位英文不能为空")
+    private String nameEn;
+
+    @Schema(description = "显示顺序", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotNull(message = "显示顺序不能为空")
+    private Integer sort;
+
+    @Schema(description = "状态(0正常 1停用)", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
+    @NotNull(message = "状态(0正常 1停用)不能为空")
+    private Integer status;
+
+    @Schema(description = "备注", example = "随便")
+    private String remark;
+
+}

+ 3 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/enterprise/register/EnterpriseRegisterRespVO.java

@@ -9,6 +9,8 @@ import com.alibaba.excel.annotation.*;
 import com.citu.framework.excel.core.annotations.DictFormat;
 import com.citu.framework.excel.core.convert.DictConvert;
 
+import static com.citu.module.menduner.system.enums.DictTypeConstants.MENDUNER_STATUS;
+
 @Schema(description = "管理后台 - 门墩儿-企业注册申请 Response VO")
 @Data
 @ExcelIgnoreUnannotated
@@ -40,7 +42,7 @@ public class EnterpriseRegisterRespVO {
 
     @Schema(description = "帐号状态(0正常 1停用 2 等待审核 3不通过)", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
     @ExcelProperty(value = "帐号状态(0正常 1停用 2 等待审核 3不通过)", converter = DictConvert.class)
-    @DictFormat("menduner_status") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
+    @DictFormat(MENDUNER_STATUS)
     private Integer status;
 
     @Schema(description = "审核原因", example = "不喜欢")

+ 5 - 2
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/enterprise/vo/EnterpriseRespVO.java

@@ -10,6 +10,9 @@ import lombok.Data;
 import java.time.LocalDateTime;
 import java.util.List;
 
+import static com.citu.module.menduner.system.enums.DictTypeConstants.MENDUNER_FINANCING_STATUS;
+import static com.citu.module.menduner.system.enums.DictTypeConstants.MENDUNER_SCALE;
+
 @Schema(description = "管理后台 - 门墩儿-企业信息 Response VO")
 @Data
 @ExcelIgnoreUnannotated
@@ -57,12 +60,12 @@ public class EnterpriseRespVO {
 
     @Schema(description = "融资阶段(未融资,天使轮,A轮,B轮,C轮,D轮以上,已上市,不需要融资)", example = "2")
     @ExcelProperty(value = "融资阶段(未融资,天使轮,A轮,B轮,C轮,D轮以上,已上市,不需要融资)", converter = DictConvert.class)
-    @DictFormat("menduner_financing_status") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
+    @DictFormat(MENDUNER_FINANCING_STATUS)
     private Integer financingStatus;
 
     @Schema(description = "人员规模(0-20人,20-99人,100-499人,500-999人,1000-9999人,9999人以上)")
     @ExcelProperty(value = "人员规模(0-20人,20-99人,100-499人,500-999人,1000-9999人,9999人以上)", converter = DictConvert.class)
-    @DictFormat("menduner_scale") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
+    @DictFormat(MENDUNER_SCALE)
     private Integer scale;
 
     @Schema(description = "公司福利")

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

@@ -12,6 +12,9 @@ import java.math.BigDecimal;
 import java.time.LocalDateTime;
 import java.util.List;
 
+import static com.citu.module.menduner.system.enums.DictTypeConstants.MENDUNER_JOB_TYPE;
+import static com.citu.module.menduner.system.enums.DictTypeConstants.MENDUNER_STATUS;
+
 @Schema(description = "管理后台 - 门墩儿-招聘职位 Response VO")
 @Data
 @ExcelIgnoreUnannotated
@@ -43,7 +46,7 @@ public class JobAdvertisedRespVO {
 
     @Schema(description = "招聘类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
     @ExcelProperty(value = "招聘类型", converter = DictConvert.class)
-    @DictFormat("menduner_job_type") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
+    @DictFormat(MENDUNER_JOB_TYPE)
     private Integer type;
 
     @Schema(description = "工作经验", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@@ -92,7 +95,7 @@ public class JobAdvertisedRespVO {
 
     @Schema(description = "职位状态", example = "2")
     @ExcelProperty(value = "职位状态", converter = DictConvert.class)
-    @DictFormat("menduner_status") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
+    @DictFormat(MENDUNER_STATUS)
     private Integer status;
 
     @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)

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

@@ -11,6 +11,8 @@ import com.alibaba.excel.annotation.*;
 import com.citu.framework.excel.core.annotations.DictFormat;
 import com.citu.framework.excel.core.convert.DictConvert;
 
+import static com.citu.module.menduner.system.enums.DictTypeConstants.MENDUNER_JOB_TYPE;
+
 @Schema(description = "管理后台 - 求职意向 Response VO")
 @Data
 @ExcelIgnoreUnannotated
@@ -26,7 +28,7 @@ public class JobInterestedRespVO {
 
     @Schema(description = "求职类型(0全职 1兼职 2临时 3实习)", example = "2")
     @ExcelProperty(value = "求职类型(0全职 1兼职 2临时 3实习)", converter = DictConvert.class)
-    @DictFormat("menduner_job_type") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
+    @DictFormat(MENDUNER_JOB_TYPE)
     private Integer jobType;
 
     @Schema(description = "期望职位", example = "20359")

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

@@ -10,6 +10,8 @@ import com.alibaba.excel.annotation.*;
 import com.citu.framework.excel.core.annotations.DictFormat;
 import com.citu.framework.excel.core.convert.DictConvert;
 
+import static com.citu.module.menduner.system.enums.DictTypeConstants.MENDUNER_STATUS;
+
 @Schema(description = "管理后台 - 专业 Response VO")
 @Data
 @ExcelIgnoreUnannotated
@@ -29,7 +31,7 @@ public class MajorRespVO {
 
     @Schema(description = "帐号状态(0正常 1停用)", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
     @ExcelProperty(value = "帐号状态(0正常 1停用)", converter = DictConvert.class)
-    @DictFormat("menduner_status") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
+    @DictFormat(MENDUNER_STATUS)
     private Integer status;
 
     @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)

+ 3 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/people/vo/PeopleSkillRespVO.java

@@ -8,6 +8,8 @@ import com.alibaba.excel.annotation.*;
 import com.citu.framework.excel.core.annotations.DictFormat;
 import com.citu.framework.excel.core.convert.DictConvert;
 
+import static com.citu.module.menduner.system.enums.DictTypeConstants.MENDUNER_SKILL_LEVEL;
+
 @Schema(description = "管理后台 - 人员技能 Response VO")
 @Data
 @ExcelIgnoreUnannotated
@@ -27,7 +29,7 @@ public class PeopleSkillRespVO {
 
     @Schema(description = "技能等级(0一般 1良好 2熟练 3 精通)")
     @ExcelProperty(value = "技能等级(0一般 1良好 2熟练 3 精通)", converter = DictConvert.class)
-    @DictFormat("skill_level") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
+    @DictFormat(MENDUNER_SKILL_LEVEL)
     private Integer level;
 
     @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/position/PositionTagController.java

@@ -9,7 +9,7 @@ import com.citu.framework.excel.core.util.ExcelUtils;
 import com.citu.module.menduner.system.controller.admin.position.vo.PositionTagPageReqVO;
 import com.citu.module.menduner.system.controller.admin.position.vo.PositionTagRespVO;
 import com.citu.module.menduner.system.controller.admin.position.vo.PositionTagSaveReqVO;
-import com.citu.module.menduner.system.dal.dataobject.positiontag.PositionTagDO;
+import com.citu.module.menduner.system.dal.dataobject.position.PositionTagDO;
 import com.citu.module.menduner.system.service.position.PositionTagService;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.Parameter;

+ 3 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/user/vo/MdeUserRespVO.java

@@ -10,6 +10,8 @@ import lombok.Data;
 
 import java.time.LocalDateTime;
 
+import static com.citu.module.menduner.system.enums.DictTypeConstants.MENDUNER_STATUS;
+
 @Schema(description = "管理后台 - 门墩儿-用户登录 Response VO")
 @Data
 @ExcelIgnoreUnannotated
@@ -41,7 +43,7 @@ public class MdeUserRespVO {
 
     @Schema(description = "帐号状态(0正常 1停用)", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
     @ExcelProperty(value = "帐号状态(0正常 1停用)", converter = DictConvert.class)
-    @DictFormat("menduner_status") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
+    @DictFormat(MENDUNER_STATUS)
     private Integer status;
 
     @Schema(description = "注册 IP")

+ 2 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/visits/vo/MdeVisitsRespVO.java

@@ -12,6 +12,7 @@ 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;
+import static com.citu.module.menduner.system.enums.DictTypeConstants.MENDUNER_VISITS_TYPE;
 
 @Schema(description = "管理后台 - 门墩儿-用户登录 Response VO")
 @Data
@@ -24,7 +25,7 @@ public class MdeVisitsRespVO {
 
     @Schema(description = "业务类型")
     @ExcelProperty(value = "业务类型", converter = DictConvert.class)
-    @DictFormat("menduner_visits_type") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
+    @DictFormat(MENDUNER_VISITS_TYPE)
     private Integer type;
 
     @Schema(description = "业务id")

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

@@ -13,6 +13,9 @@ import com.alibaba.excel.annotation.*;
 import com.citu.framework.excel.core.annotations.DictFormat;
 import com.citu.framework.excel.core.convert.DictConvert;
 
+import static com.citu.module.menduner.system.enums.DictTypeConstants.MENDUNER_CURRENCY_TYPE;
+import static com.citu.module.menduner.system.enums.DictTypeConstants.MENDUNER_PAY_TYPE;
+
 @Schema(description = "管理后台 - 工作经历 Response VO")
 @Data
 @ExcelIgnoreUnannotated
@@ -72,12 +75,12 @@ public class WorkExpRespVO {
 
     @Schema(description = "薪酬类型(0月薪 1年薪)", example = "1")
     @ExcelProperty(value = "薪酬类型(0月薪 1年薪)", converter = DictConvert.class)
-    @DictFormat("menduner_pay_type") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
+    @DictFormat(MENDUNER_PAY_TYPE)
     private Integer payType;
 
     @Schema(description = "货币类型", example = "2")
     @ExcelProperty(value = "货币类型", converter = DictConvert.class)
-    @DictFormat("menduner_currency_type") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
+    @DictFormat(MENDUNER_CURRENCY_TYPE)
     private Integer currencyType;
 
     @Schema(description = "技能")

+ 0 - 3
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/area/AppAreaController.java

@@ -33,7 +33,6 @@ public class AppAreaController {
     private AreaService areaService;
 
     @GetMapping("/get/tree")
-    @PreAuthenticated
     @Operation(summary = "获取区域树形")
     public CommonResult<List<AppAreaChildrenRespVO>> getArea(@Valid AreaListReqVO listReqVO) {
         List<AppAreaChildrenRespVO> list = areaService.getArea(listReqVO);
@@ -41,7 +40,6 @@ public class AppAreaController {
     }
 
     @GetMapping("/get/children")
-    @PreAuthenticated
     @Operation(summary = "根据区域id获得地区下级列表")
     public CommonResult<List<AppAreaChildrenRespVO>> getAreaIdChildren(@RequestParam("id") Long id) {
         List<AppAreaChildrenRespVO> list = areaService.getAreaIdChildren(id);
@@ -50,7 +48,6 @@ public class AppAreaController {
 
     @GetMapping("/list")
     @Operation(summary = "获得地区列表")
-    @PreAuthenticated
     public CommonResult<List<AppAreaSimpleRespVO>> getAreaList(@Valid AppAreaListReqVO reqVO) {
         List<AppAreaSimpleRespVO> list = areaService.getAreaList(reqVO);
         return success(list);

+ 0 - 9
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/auth/AppMdeAuthController.java

@@ -48,7 +48,6 @@ public class AppMdeAuthController {
         return success(authService.login(reqVO));
     }
 
-    @PermitAll
     @PostMapping("/logout")
     @Operation(summary = "登出系统")
     public CommonResult<Boolean> logout(HttpServletRequest request) {
@@ -60,7 +59,6 @@ public class AppMdeAuthController {
         return success(true);
     }
 
-    @PermitAll
     @PostMapping("/refresh-token")
     @Operation(summary = "刷新令牌")
     @Parameter(name = "refreshToken", description = "刷新令牌", required = true)
@@ -70,14 +68,12 @@ public class AppMdeAuthController {
 
     // ========== 短信登录相关 ==========
 
-    @PermitAll
     @PostMapping("/sms-login")
     @Operation(summary = "使用手机 + 验证码登录")
     public CommonResult<AppMdeAuthLoginRespVO> smsLogin(@RequestBody @Valid AppMdeAuthSmsLoginReqVO reqVO) {
         return success(authService.smsLogin(reqVO));
     }
 
-    @PermitAll
     @PostMapping("/send-sms-code")
     @Operation(summary = "发送手机验证码")
     public CommonResult<Boolean> sendSmsCode(@RequestBody @Valid AppMdeAuthSmsSendReqVO reqVO) {
@@ -85,7 +81,6 @@ public class AppMdeAuthController {
         return success(true);
     }
 
-    @PermitAll
     @PostMapping("/validate-sms-code")
     @Operation(summary = "校验手机验证码")
     public CommonResult<Boolean> validateSmsCode(@RequestBody @Valid AppMdeAuthSmsValidateReqVO reqVO) {
@@ -95,7 +90,6 @@ public class AppMdeAuthController {
 
     // ========== 社交登录相关 ==========
 
-    @PermitAll
     @GetMapping("/social-auth-redirect")
     @Operation(summary = "社交授权的跳转")
     @Parameters({
@@ -107,21 +101,18 @@ public class AppMdeAuthController {
         return CommonResult.success(authService.getSocialAuthorizeUrl(type, redirectUri));
     }
 
-    @PermitAll
     @PostMapping("/social-login")
     @Operation(summary = "社交快捷登录,使用 code 授权码", description = "适合未登录的用户,但是社交账号已绑定用户")
     public CommonResult<AppMdeAuthLoginRespVO> socialLogin(@RequestBody @Valid AppMdeAuthSocialLoginReqVO reqVO) {
         return success(authService.socialLogin(reqVO));
     }
 
-    @PermitAll
     @PostMapping("/weixin-mini-app-login")
     @Operation(summary = "微信小程序的一键登录")
     public CommonResult<AppMdeAuthLoginRespVO> weixinMiniAppLogin(@RequestBody @Valid AppMdeAuthWeixinMiniAppLoginReqVO reqVO) {
         return success(authService.weixinMiniAppLogin(reqVO));
     }
 
-    @PermitAll
     @PostMapping("/create-weixin-jsapi-signature")
     @Operation(summary = "创建微信 JS SDK 初始化所需的签名",
             description = "参考 https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html 文档")

+ 33 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/contact/AppEnterpriseUserContactRespVO.java

@@ -0,0 +1,33 @@
+package com.citu.module.menduner.system.controller.app.contact;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+@Data
+@Schema(description = "menduner - 首页-企业用户联系人 Response VO")
+public class AppEnterpriseUserContactRespVO {
+
+    @Schema(description = "所属企业id", example = "9907")
+    private Long enterpriseId;
+
+    @Schema(description = "用户id", requiredMode = Schema.RequiredMode.REQUIRED, example = "9592")
+    private Long userId;
+
+    @Schema(description = "头像", requiredMode = Schema.RequiredMode.REQUIRED, example = "http://123.jpg")
+    private String avatar;
+
+    @Schema(description = "联系人名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "9592")
+    private String name;
+
+    @Schema(description = "岗位中文名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "人事")
+    private String postNameCn;
+
+    @Schema(description = "岗位英文名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "human resources")
+    private String postNameEn;
+
+    @Schema(description = "岗位编码", requiredMode = Schema.RequiredMode.REQUIRED, example = "HR")
+    private String postCode;
+
+
+
+}

+ 4 - 3
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/enterprise/AppEnterpriseController.java

@@ -1,14 +1,16 @@
 package com.citu.module.menduner.system.controller.app.enterprise;
 
 import com.citu.framework.common.pojo.CommonResult;
-import com.citu.framework.security.core.annotations.PreAuthenticated;
 import com.citu.module.menduner.system.controller.app.enterprise.vo.AppEnterpriseClickReqVO;
 import com.citu.module.menduner.system.service.enterprise.EnterpriseService;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
 
 import javax.annotation.Resource;
 import javax.validation.Valid;
@@ -27,7 +29,6 @@ public class AppEnterpriseController {
 
     @PostMapping("/click")
     @Operation(summary = "点击访问职位埋点")
-    @PreAuthenticated
     public CommonResult<Boolean> click(@RequestBody @Valid AppEnterpriseClickReqVO reqVO) {
         enterpriseService.click(reqVO);
         return success(true);

+ 30 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/enterprise/vo/AppEnterpriseSimpleRespVO.java

@@ -0,0 +1,30 @@
+package com.citu.module.menduner.system.controller.app.enterprise.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+@Data
+@Schema(description = "menduner - 首页-企业简易 Response VO")
+public class AppEnterpriseSimpleRespVO {
+
+    @Schema(description = "企业id", requiredMode = Schema.RequiredMode.REQUIRED, example = "123")
+    private Long id;
+
+    @Schema(description = "企业全称", requiredMode = Schema.RequiredMode.REQUIRED, example = "xx科技有限公司")
+    private String name;
+
+    @Schema(description = "企业别称", requiredMode = Schema.RequiredMode.REQUIRED, example = "xx科技")
+    private String anotherName;
+
+    @Schema(description = "所在行业", requiredMode = Schema.RequiredMode.REQUIRED, example = "123")
+    private Long industryId;
+
+    @Schema(description = "人员规模(0-20人,20-99人,100-499人,500-999人,1000-9999人,9999人以上)", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+    private Integer scale;
+
+    @Schema(description = "融资阶段(未融资,天使轮,A轮,B轮,C轮,D轮以上,已上市,不需要融资)", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+    private Integer financingStatus;
+
+    @Schema(description = "企业logo地址", requiredMode = Schema.RequiredMode.REQUIRED, example = "https://www.menduner.com/static/img/loginlogo2.7924c12.png")
+    private String logo_url;
+}

+ 0 - 3
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/industry/AppIndustryController.java

@@ -35,14 +35,12 @@ public class AppIndustryController {
     private IndustryService industryService;
 
     @GetMapping("/get/tree")
-    @PreAuthenticated
     @Operation(summary = "获取行业树形")
     public CommonResult<List<AppIndustryChildrenRespVO>> getIndustry(@Valid IndustryListReqVO listReqVO) {
         List<AppIndustryChildrenRespVO> list = industryService.getIndustry(listReqVO);
         return success(list);
     }
     @GetMapping("/get/children")
-    @PreAuthenticated
     @Operation(summary = "根据职位id获得职位下级列表")
     public CommonResult<List<AppIndustryChildrenRespVO>> getIndustryIdChildren(@RequestParam("id") Long id) {
         List<AppIndustryChildrenRespVO> list = industryService.getIndustryIdChildren(id);
@@ -51,7 +49,6 @@ public class AppIndustryController {
 
     @GetMapping("/list")
     @Operation(summary = "获得行业列表")
-    @PreAuthenticated
     public CommonResult<List<AppIndustrySimpleRespVO>> getIndustryList(@Valid AppIndustryListReqVO reqVO) {
         List<AppIndustrySimpleRespVO> list = industryService.getIndustryList(reqVO);
         return success(list);

+ 9 - 5
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/job/AppJobAdvertisedController.java

@@ -3,8 +3,8 @@ package com.citu.module.menduner.system.controller.app.job;
 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.security.core.annotations.PreAuthenticated;
 import com.citu.module.menduner.system.controller.app.job.vo.AppEnterpriseJobHomeRespVO;
+import com.citu.module.menduner.system.controller.app.job.vo.AppJobAdvertisedDetailRespVO;
 import com.citu.module.menduner.system.controller.app.job.vo.AppJobHomeRespVO;
 import com.citu.module.menduner.system.service.job.JobAdvertisedService;
 import io.swagger.v3.oas.annotations.Operation;
@@ -13,6 +13,7 @@ import lombok.extern.slf4j.Slf4j;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.annotation.Resource;
@@ -32,7 +33,6 @@ public class AppJobAdvertisedController {
 
     @GetMapping("/get/recommended")
     @Operation(summary = "获取推荐招聘职位分页")
-    @PreAuthenticated
     public CommonResult<PageResult<AppJobHomeRespVO>> getRecommendedJobPage(@Valid PageParam pageParam) {
         PageResult<AppJobHomeRespVO> result = jobAdvertisedService.getRecommendedJobPage(pageParam);
         return success(result);
@@ -40,7 +40,6 @@ public class AppJobAdvertisedController {
 
     @GetMapping("/get/latest")
     @Operation(summary = "获取最新招聘职位分页")
-    @PreAuthenticated
     public CommonResult<PageResult<AppJobHomeRespVO>> getLatestJobPage(@Valid PageParam pageParam) {
         PageResult<AppJobHomeRespVO> result = jobAdvertisedService.getLatestJobPage(pageParam);
         return success(result);
@@ -48,7 +47,6 @@ public class AppJobAdvertisedController {
 
     @GetMapping("/get/urgent")
     @Operation(summary = "获取急聘招聘职位分页")
-    @PreAuthenticated
     public CommonResult<PageResult<AppJobHomeRespVO>> getUrgentJobPage(@Valid PageParam pageParam) {
         PageResult<AppJobHomeRespVO> result = jobAdvertisedService.getUrgentJobPage(pageParam);
         return success(result);
@@ -56,10 +54,16 @@ public class AppJobAdvertisedController {
 
     @GetMapping("/get/hot/enterprise")
     @Operation(summary = "获取热门企业的职位分页")
-    @PreAuthenticated
     public CommonResult<PageResult<AppEnterpriseJobHomeRespVO>> getHotEnterpriseJobPage(@Valid PageParam pageParam) {
         PageResult<AppEnterpriseJobHomeRespVO> result = jobAdvertisedService.getHotEnterpriseJobPage(pageParam);
         return success(result);
     }
 
+    @GetMapping("/get/detail")
+    @Operation(summary = "获取招聘职位详情")
+    public CommonResult<AppJobAdvertisedDetailRespVO> getJobAdvertisedDetail(@RequestParam("id") Long id) {
+        AppJobAdvertisedDetailRespVO respVO = jobAdvertisedService.getJobAdvertisedDetail(id);
+        return success(respVO);
+    }
+
 }

+ 2 - 18
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/job/vo/AppEnterpriseJobHomeRespVO.java

@@ -1,12 +1,12 @@
 package com.citu.module.menduner.system.controller.app.job.vo;
 
+import com.citu.module.menduner.system.controller.app.enterprise.vo.AppEnterpriseSimpleRespVO;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.AllArgsConstructor;
 import lombok.Builder;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 
-import java.math.BigDecimal;
 import java.util.List;
 
 @Schema(description = "menduner - 首页-热门企业-招聘职位 Response VO")
@@ -14,25 +14,9 @@ import java.util.List;
 @NoArgsConstructor
 @AllArgsConstructor
 @Builder
-public class AppEnterpriseJobHomeRespVO {
-
-    @Schema(description = "企业id", requiredMode = Schema.RequiredMode.REQUIRED, example = "123")
-    private Long enterpriseId;
-
-    @Schema(description = "企业别称", requiredMode = Schema.RequiredMode.REQUIRED, example = "xx科技")
-    private String anotherName;
-
-    @Schema(description = "所在行业", requiredMode = Schema.RequiredMode.REQUIRED, example = "123")
-    private Long industryId;
-
-    @Schema(description = "人员规模(0-20人,20-99人,100-499人,500-999人,1000-9999人,9999人以上)", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
-    private Integer scale;
-
-    @Schema(description = "企业logo地址", requiredMode = Schema.RequiredMode.REQUIRED, example = "https://www.menduner.com/static/img/loginlogo2.7924c12.png")
-    private String logo_url;
+public class AppEnterpriseJobHomeRespVO extends AppEnterpriseSimpleRespVO {
 
     @Schema(description = "企业发布职位", requiredMode = Schema.RequiredMode.REQUIRED, example = "{}")
     private List<AppJobSimpleRespVO> jobList;
 
-
 }

+ 92 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/job/vo/AppJobAdvertisedDetailRespVO.java

@@ -0,0 +1,92 @@
+package com.citu.module.menduner.system.controller.app.job.vo;
+
+
+import com.citu.framework.excel.core.annotations.DictFormat;
+import com.citu.module.menduner.system.controller.app.contact.AppEnterpriseUserContactRespVO;
+import com.citu.module.menduner.system.controller.app.enterprise.vo.AppEnterpriseSimpleRespVO;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.util.List;
+
+import static com.citu.module.menduner.system.enums.DictTypeConstants.MENDUNER_JOB_TYPE;
+import static com.citu.module.menduner.system.enums.DictTypeConstants.MENDUNER_STATUS;
+
+@Schema(description = "menduner - 首页-招聘职位-详情 Response VO")
+@Data
+public class AppJobAdvertisedDetailRespVO {
+
+    @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "4770")
+    private Long id;
+
+    @Schema(description = "企业id", requiredMode = Schema.RequiredMode.REQUIRED, example = "29465")
+    private Long enterpriseId;
+
+    @Schema(description = "发布用户id", requiredMode = Schema.RequiredMode.REQUIRED, example = "9592")
+    private Long userId;
+
+    @Schema(description = "工作地区", requiredMode = Schema.RequiredMode.REQUIRED, example = "25976")
+    private Long areaId;
+
+    @Schema(description = "职位名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三")
+    private String name;
+
+    @Schema(description = "职位类型id", requiredMode = Schema.RequiredMode.REQUIRED, example = "31707")
+    private Long positionId;
+
+    @Schema(description = "招聘类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
+    @DictFormat(MENDUNER_JOB_TYPE)
+    private Integer type;
+
+    @Schema(description = "工作经验", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+    private Integer expType;
+
+    @Schema(description = "学历要求", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+    private Integer eduType;
+
+    @Schema(description = "薪酬from")
+    private BigDecimal payFrom;
+
+    @Schema(description = "薪酬to")
+    private BigDecimal payTo;
+
+    @Schema(description = "薪酬单位")
+    private Integer payUnit;
+
+    @Schema(description = "职位标签")
+    private List<String> tagList;
+
+    @Schema(description = "职位内容")
+    private String content;
+
+    @Schema(description = "职位要求")
+    private String requirement;
+
+    @Schema(description = "工作地址")
+    private String address;
+
+    @Schema(description = "经度")
+    private String longitude;
+
+    @Schema(description = "维度")
+    private String latitude;
+
+    @Schema(description = "职位状态", example = "2")
+    @DictFormat(MENDUNER_STATUS)
+    private Integer status;
+
+    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    private LocalDateTime createTime;
+
+    @Schema(description = "更新时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    private LocalDateTime updateTime;
+
+    @Schema(description = "企业信息")
+    private AppEnterpriseSimpleRespVO enterprise;
+
+    @Schema(description = "招聘联系人信息")
+    private AppEnterpriseUserContactRespVO contact;
+
+}

+ 0 - 3
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/position/AppPositionController.java

@@ -35,21 +35,18 @@ public class AppPositionController {
 
     @PostMapping("/click")
     @Operation(summary = "点击访问职位埋点")
-    @PreAuthenticated
     public CommonResult<Boolean> click(@RequestBody @Valid AppPositionClickReqVO reqVO) {
         positionService.click(reqVO);
         return success(true);
     }
 
     @GetMapping("/get/tree")
-    @PreAuthenticated
     @Operation(summary = "获取职位树形")
     public CommonResult<List<AppPositionChildrenRespVO>> getPosition(@Valid PositionListReqVO listReqVO) {
         List<AppPositionChildrenRespVO> list = positionService.getPosition(listReqVO);
         return success(list);
     }
     @GetMapping("/get/children")
-    @PreAuthenticated
     @Operation(summary = "根据职位id获得职位下级列表")
     public CommonResult<List<AppPositionChildrenRespVO>> getPositionIdChildren(@RequestParam("id") Long id) {
         List<AppPositionChildrenRespVO> list = positionService.getPositionIdChildren(id);

+ 38 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/post/AppEnterprisePostRespVO.java

@@ -0,0 +1,38 @@
+package com.citu.module.menduner.system.controller.app.post;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Data
+@Schema(description = "menduner - 企业岗位简易信息 Response VO")
+public class AppEnterprisePostRespVO {
+
+    @Schema(description = "岗位ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "13815")
+    private Long id;
+
+    @Schema(description = "所属企业id", example = "9907")
+    private Long enterpriseId;
+
+    @Schema(description = "岗位缩写")
+    private String code;
+
+    @Schema(description = "岗位中文名称", requiredMode = Schema.RequiredMode.REQUIRED)
+    private String nameCn;
+
+    @Schema(description = "岗位英文", requiredMode = Schema.RequiredMode.REQUIRED)
+    private String nameEn;
+
+    @Schema(description = "显示顺序", requiredMode = Schema.RequiredMode.REQUIRED)
+    private Integer sort;
+
+    @Schema(description = "状态(0正常 1停用)", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
+    private Integer status;
+
+    @Schema(description = "备注", example = "随便")
+    private String remark;
+
+    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    private LocalDateTime createTime;
+}

+ 3 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/user/vo/AppMdeUserRespVO.java

@@ -10,6 +10,8 @@ import lombok.Data;
 
 import java.time.LocalDateTime;
 
+import static com.citu.module.menduner.system.enums.DictTypeConstants.MENDUNER_STATUS;
+
 @Schema(description = "管理后台 - 门墩儿-用户登录 Response VO")
 @Data
 @ExcelIgnoreUnannotated
@@ -37,7 +39,7 @@ public class AppMdeUserRespVO {
 
     @Schema(description = "帐号状态(0正常 1停用)", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
     @ExcelProperty(value = "帐号状态(0正常 1停用)", converter = DictConvert.class)
-    @DictFormat("menduner_status") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
+    @DictFormat(MENDUNER_STATUS)
     private Integer status;
 
     @Schema(description = "注册 IP")

+ 58 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/enterprise/EnterprisePostDO.java

@@ -0,0 +1,58 @@
+package com.citu.module.menduner.system.dal.dataobject.enterprise;
+
+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 lombok.*;
+
+/**
+ * 门墩儿-企业岗位信息 DO
+ *
+ * @author Rayson
+ */
+@TableName("mde_enterprise_post")
+@KeySequence("mde_enterprise_post_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class EnterprisePostDO extends BaseDO {
+
+    /**
+     * 岗位ID
+     */
+    @TableId
+    private Long id;
+    /**
+     * 所属企业id
+     */
+    private Long enterpriseId;
+    /**
+     * 岗位缩写
+     */
+    private String code;
+    /**
+     * 岗位中文名称
+     */
+    private String nameCn;
+    /**
+     * 岗位英文
+     */
+    private String nameEn;
+    /**
+     * 显示顺序
+     */
+    private Integer sort;
+    /**
+     * 状态(0正常 1停用)
+     */
+    private Integer status;
+    /**
+     * 备注
+     */
+    private String remark;
+
+}

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

@@ -33,10 +33,18 @@ public class EnterpriseUserBindDO extends BaseDO {
      * 企业id
      */
     private Long enterpriseId;
+    /**
+     * 岗位id
+     */
+    private Long postId;
     /**
      * 用户id
      */
     private String userId;
+    /**
+     * 名称
+     */
+    private String name;
     /**
      * 帐号状态(0正常 1停用 2 等待审核 3不通过)
      * <p>

+ 1 - 4
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/positiontag/PositionTagDO.java → menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/position/PositionTagDO.java

@@ -1,9 +1,6 @@
-package com.citu.module.menduner.system.dal.dataobject.positiontag;
+package com.citu.module.menduner.system.dal.dataobject.position;
 
 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;
 

+ 29 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/enterprise/EnterprisePostMapper.java

@@ -0,0 +1,29 @@
+package com.citu.module.menduner.system.dal.mysql.enterprise;
+
+import com.citu.framework.common.pojo.PageResult;
+import com.citu.framework.mybatis.core.mapper.BaseMapperX;
+import com.citu.framework.mybatis.core.query.LambdaQueryWrapperX;
+import com.citu.module.menduner.system.controller.admin.enterprise.post.EnterprisePostPageReqVO;
+import com.citu.module.menduner.system.dal.dataobject.enterprise.EnterprisePostDO;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 门墩儿-企业岗位信息 Mapper
+ *
+ * @author Rayson
+ */
+@Mapper
+public interface EnterprisePostMapper extends BaseMapperX<EnterprisePostDO> {
+
+    default PageResult<EnterprisePostDO> selectPage(EnterprisePostPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<EnterprisePostDO>()
+                .eqIfPresent(EnterprisePostDO::getEnterpriseId, reqVO.getEnterpriseId())
+                .eqIfPresent(EnterprisePostDO::getCode, reqVO.getCode())
+                .likeIfPresent(EnterprisePostDO::getNameCn, reqVO.getNameCn())
+                .likeIfPresent(EnterprisePostDO::getNameEn, reqVO.getNameEn())
+                .eqIfPresent(EnterprisePostDO::getStatus, reqVO.getStatus())
+                .betweenIfPresent(EnterprisePostDO::getCreateTime, reqVO.getCreateTime())
+                .orderByDesc(EnterprisePostDO::getId));
+    }
+
+}

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/position/PositionTagMapper.java

@@ -4,7 +4,7 @@ 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.position.vo.PositionTagPageReqVO;
-import com.citu.module.menduner.system.dal.dataobject.positiontag.PositionTagDO;
+import com.citu.module.menduner.system.dal.dataobject.position.PositionTagDO;
 import org.apache.ibatis.annotations.Mapper;
 
 /**

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

@@ -91,4 +91,10 @@ public interface AreaService {
      * @param reqVO 查询条件
      **/
     List<AppAreaSimpleRespVO> getAreaList(AppAreaListReqVO reqVO);
+
+    /**
+     * 获取热门城市
+     *
+     **/
+    List<AppAreaSimpleRespVO> getHotArea();
 }

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

@@ -155,4 +155,9 @@ public class AreaServiceImpl implements AreaService {
     public List<AppAreaSimpleRespVO> getAreaList(AppAreaListReqVO reqVO) {
         return AreaConvert.INSTANCE.convertList2(areaMapper.selectList(reqVO));
     }
+
+    @Override
+    public List<AppAreaSimpleRespVO> getHotArea() {
+        return Collections.emptyList();
+    }
 }

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

@@ -0,0 +1,55 @@
+package com.citu.module.menduner.system.service.enterprise;
+
+import com.citu.framework.common.pojo.PageResult;
+import com.citu.module.menduner.system.controller.admin.enterprise.post.EnterprisePostPageReqVO;
+import com.citu.module.menduner.system.controller.admin.enterprise.post.EnterprisePostSaveReqVO;
+import com.citu.module.menduner.system.dal.dataobject.enterprise.EnterprisePostDO;
+
+import javax.validation.Valid;
+
+/**
+ * 门墩儿-企业岗位信息 Service 接口
+ *
+ * @author Rayson
+ */
+public interface EnterprisePostService {
+
+    /**
+     * 创建门墩儿-企业岗位信息
+     *
+     * @param createReqVO 创建信息
+     * @return 编号
+     */
+    Long createEnterprisePost(@Valid EnterprisePostSaveReqVO createReqVO);
+
+    /**
+     * 更新门墩儿-企业岗位信息
+     *
+     * @param updateReqVO 更新信息
+     */
+    void updateEnterprisePost(@Valid EnterprisePostSaveReqVO updateReqVO);
+
+    /**
+     * 删除门墩儿-企业岗位信息
+     *
+     * @param id 编号
+     */
+    void deleteEnterprisePost(Long id);
+
+    /**
+     * 获得门墩儿-企业岗位信息
+     *
+     * @param id 编号
+     * @return 门墩儿-企业岗位信息
+     */
+    EnterprisePostDO getEnterprisePost(Long id);
+
+    /**
+     * 获得门墩儿-企业岗位信息分页
+     *
+     * @param pageReqVO 分页查询
+     * @return 门墩儿-企业岗位信息分页
+     */
+    PageResult<EnterprisePostDO> getEnterprisePostPage(EnterprisePostPageReqVO pageReqVO);
+
+}

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

@@ -0,0 +1,71 @@
+package com.citu.module.menduner.system.service.enterprise;
+
+import com.citu.framework.common.pojo.PageResult;
+import com.citu.framework.common.util.object.BeanUtils;
+import com.citu.module.menduner.system.controller.admin.enterprise.post.EnterprisePostPageReqVO;
+import com.citu.module.menduner.system.controller.admin.enterprise.post.EnterprisePostSaveReqVO;
+import com.citu.module.menduner.system.dal.dataobject.enterprise.EnterprisePostDO;
+import com.citu.module.menduner.system.dal.mysql.enterprise.EnterprisePostMapper;
+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.ENTERPRISE_POST_NOT_EXISTS;
+
+/**
+ * 门墩儿-企业岗位信息 Service 实现类
+ *
+ * @author Rayson
+ */
+@Service
+@Validated
+public class EnterprisePostServiceImpl implements EnterprisePostService {
+
+    @Resource
+    private EnterprisePostMapper enterprisePostMapper;
+
+    @Override
+    public Long createEnterprisePost(EnterprisePostSaveReqVO createReqVO) {
+        // 插入
+        EnterprisePostDO enterprisePost = BeanUtils.toBean(createReqVO, EnterprisePostDO.class);
+        enterprisePostMapper.insert(enterprisePost);
+        // 返回
+        return enterprisePost.getId();
+    }
+
+    @Override
+    public void updateEnterprisePost(EnterprisePostSaveReqVO updateReqVO) {
+        // 校验存在
+        validateEnterprisePostExists(updateReqVO.getId());
+        // 更新
+        EnterprisePostDO updateObj = BeanUtils.toBean(updateReqVO, EnterprisePostDO.class);
+        enterprisePostMapper.updateById(updateObj);
+    }
+
+    @Override
+    public void deleteEnterprisePost(Long id) {
+        // 校验存在
+        validateEnterprisePostExists(id);
+        // 删除
+        enterprisePostMapper.deleteById(id);
+    }
+
+    private void validateEnterprisePostExists(Long id) {
+        if (enterprisePostMapper.selectById(id) == null) {
+            throw exception(ENTERPRISE_POST_NOT_EXISTS);
+        }
+    }
+
+    @Override
+    public EnterprisePostDO getEnterprisePost(Long id) {
+        return enterprisePostMapper.selectById(id);
+    }
+
+    @Override
+    public PageResult<EnterprisePostDO> getEnterprisePostPage(EnterprisePostPageReqVO pageReqVO) {
+        return enterprisePostMapper.selectPage(pageReqVO);
+    }
+
+}

+ 0 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/industry/IndustryService.java

@@ -90,5 +90,4 @@ public interface IndustryService {
      * @param reqVO 查询条件
      **/
     List<AppIndustrySimpleRespVO> getIndustryList(AppIndustryListReqVO reqVO);
-    
 }

+ 8 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/job/JobAdvertisedService.java

@@ -5,6 +5,7 @@ import java.util.*;
 import javax.validation.*;
 import com.citu.module.menduner.system.controller.admin.job.vo.*;
 import com.citu.module.menduner.system.controller.app.job.vo.AppEnterpriseJobHomeRespVO;
+import com.citu.module.menduner.system.controller.app.job.vo.AppJobAdvertisedDetailRespVO;
 import com.citu.module.menduner.system.controller.app.job.vo.AppJobHomeRespVO;
 import com.citu.module.menduner.system.dal.dataobject.job.JobAdvertisedDO;
 import com.citu.framework.common.pojo.PageResult;
@@ -82,4 +83,11 @@ public interface JobAdvertisedService {
      * @return 门墩儿-招聘职位分页
      **/
     PageResult<AppEnterpriseJobHomeRespVO> getHotEnterpriseJobPage(PageParam pageParam);
+
+    /**
+     * 获取职位详情
+     * @param id 职位id
+     * @return 门墩儿-招聘职位详情
+     **/
+    AppJobAdvertisedDetailRespVO getJobAdvertisedDetail(Long id);
 }

+ 136 - 55
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/job/JobAdvertisedServiceImpl.java

@@ -1,26 +1,29 @@
 package com.citu.module.menduner.system.service.job;
 
 
+import cn.hutool.core.collection.ListUtil;
 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.module.menduner.system.controller.admin.job.vo.JobAdvertisedPageReqVO;
 import com.citu.module.menduner.system.controller.admin.job.vo.JobAdvertisedSaveReqVO;
+import com.citu.module.menduner.system.controller.app.contact.AppEnterpriseUserContactRespVO;
+import com.citu.module.menduner.system.controller.app.enterprise.vo.AppEnterpriseSimpleRespVO;
 import com.citu.module.menduner.system.controller.app.job.vo.AppEnterpriseJobHomeRespVO;
+import com.citu.module.menduner.system.controller.app.job.vo.AppJobAdvertisedDetailRespVO;
 import com.citu.module.menduner.system.controller.app.job.vo.AppJobHomeRespVO;
 import com.citu.module.menduner.system.controller.app.job.vo.AppJobSimpleRespVO;
 import com.citu.module.menduner.system.dal.dataobject.job.JobAdvertisedDO;
 import com.citu.module.menduner.system.dal.mysql.job.JobAdvertisedMapper;
+import com.citu.module.menduner.system.enums.MendunerStatusEnum;
 import com.citu.module.menduner.system.service.visits.MdeVisitsService;
-import org.apache.poi.hpsf.Decimal;
 import org.springframework.stereotype.Service;
 import org.springframework.validation.annotation.Validated;
 
 import javax.annotation.Resource;
-
 import java.math.BigDecimal;
+import java.time.LocalDateTime;
 import java.util.ArrayList;
-import java.util.Collections;
 import java.util.List;
 
 import static com.citu.framework.common.exception.util.ServiceExceptionUtil.exception;
@@ -85,10 +88,10 @@ public class JobAdvertisedServiceImpl implements JobAdvertisedService {
     }
 
     public PageResult<AppJobHomeRespVO> generate() {
-        PageResult<AppJobHomeRespVO> result=new PageResult<>();
-        List<AppJobHomeRespVO> list=new ArrayList<>();
+        PageResult<AppJobHomeRespVO> result = new PageResult<>();
+        List<AppJobHomeRespVO> list = new ArrayList<>();
 
-        AppJobHomeRespVO respVO1 =new AppJobHomeRespVO();
+        AppJobHomeRespVO respVO1 = new AppJobHomeRespVO();
         respVO1.setId(1L);
         respVO1.setAreaId(110000L);
         respVO1.setPositionId(1L);
@@ -106,7 +109,7 @@ public class JobAdvertisedServiceImpl implements JobAdvertisedService {
         respVO1.setLogo_url("https://www.menduner.com/static/img/loginlogo2.7924c12.png");
         list.add(respVO1);
 
-        AppJobHomeRespVO respVO2 =new AppJobHomeRespVO();
+        AppJobHomeRespVO respVO2 = new AppJobHomeRespVO();
         respVO2.setId(2L);
         respVO2.setAreaId(440100L);
         respVO2.setPositionId(2L);
@@ -125,7 +128,7 @@ public class JobAdvertisedServiceImpl implements JobAdvertisedService {
         list.add(respVO2);
 
 
-        AppJobHomeRespVO respVO3 =new AppJobHomeRespVO();
+        AppJobHomeRespVO respVO3 = new AppJobHomeRespVO();
         respVO3.setId(3L);
         respVO3.setAreaId(440300L);
         respVO3.setPositionId(3L);
@@ -143,7 +146,7 @@ public class JobAdvertisedServiceImpl implements JobAdvertisedService {
         respVO3.setLogo_url("https://www.menduner.com/static/img/loginlogo2.7924c12.png");
         list.add(respVO3);
 
-        AppJobHomeRespVO respVO4 =new AppJobHomeRespVO();
+        AppJobHomeRespVO respVO4 = new AppJobHomeRespVO();
         respVO4.setId(4L);
         respVO4.setAreaId(440600L);
         respVO4.setPositionId(4L);
@@ -161,7 +164,7 @@ public class JobAdvertisedServiceImpl implements JobAdvertisedService {
         respVO4.setLogo_url("https://www.menduner.com/static/img/loginlogo2.7924c12.png");
         list.add(respVO4);
 
-        AppJobHomeRespVO respVO5 =new AppJobHomeRespVO();
+        AppJobHomeRespVO respVO5 = new AppJobHomeRespVO();
         respVO5.setId(5L);
         respVO5.setAreaId(441200L);
         respVO5.setPositionId(5L);
@@ -171,7 +174,7 @@ public class JobAdvertisedServiceImpl implements JobAdvertisedService {
         respVO5.setName("保姆");
         respVO5.setExpType(4);
         respVO5.setEduType(4);
-        respVO5.setTagList(new ArrayList<>());
+        respVO5.setTagList(ListUtil.of("年终奖", "不需要出国工作", "医药设备"));
         respVO5.setEnterpriseId(1L);
         respVO5.setAnotherName("门墩儿科技");
         respVO5.setIndustryId(5L);
@@ -179,7 +182,7 @@ public class JobAdvertisedServiceImpl implements JobAdvertisedService {
         respVO5.setLogo_url("https://www.menduner.com/static/img/loginlogo2.7924c12.png");
         list.add(respVO5);
 
-        AppJobHomeRespVO respVO6 =new AppJobHomeRespVO();
+        AppJobHomeRespVO respVO6 = new AppJobHomeRespVO();
         respVO6.setId(6L);
         respVO6.setAreaId(440800L);
         respVO6.setPositionId(6L);
@@ -189,7 +192,7 @@ public class JobAdvertisedServiceImpl implements JobAdvertisedService {
         respVO6.setName("软件开发工程师");
         respVO6.setExpType(5);
         respVO6.setEduType(5);
-        respVO6.setTagList(new ArrayList<>());
+        respVO6.setTagList(ListUtil.of("无经验要求", "金融产品", "不限", "不接受居家办公", "教育培训", "互联网金融"));
         respVO6.setEnterpriseId(1L);
         respVO6.setAnotherName("门墩儿科技");
         respVO6.setIndustryId(6L);
@@ -198,7 +201,7 @@ public class JobAdvertisedServiceImpl implements JobAdvertisedService {
         list.add(respVO6);
 
 
-        AppJobHomeRespVO respVO7 =new AppJobHomeRespVO();
+        AppJobHomeRespVO respVO7 = new AppJobHomeRespVO();
         respVO7.setId(7L);
         respVO7.setAreaId(441900L);
         respVO7.setPositionId(7L);
@@ -217,7 +220,7 @@ public class JobAdvertisedServiceImpl implements JobAdvertisedService {
         list.add(respVO7);
 
 
-        AppJobHomeRespVO respVO8 =new AppJobHomeRespVO();
+        AppJobHomeRespVO respVO8 = new AppJobHomeRespVO();
         respVO8.setId(8L);
         respVO8.setAreaId(441700L);
         respVO8.setPositionId(8L);
@@ -235,7 +238,7 @@ public class JobAdvertisedServiceImpl implements JobAdvertisedService {
         respVO8.setLogo_url("https://www.menduner.com/static/img/loginlogo2.7924c12.png");
         list.add(respVO8);
 
-        AppJobHomeRespVO respVO9 =new AppJobHomeRespVO();
+        AppJobHomeRespVO respVO9 = new AppJobHomeRespVO();
         respVO9.setId(9L);
         respVO9.setAreaId(445300L);
         respVO9.setPositionId(9L);
@@ -276,17 +279,18 @@ public class JobAdvertisedServiceImpl implements JobAdvertisedService {
 
     @Override
     public PageResult<AppEnterpriseJobHomeRespVO> getHotEnterpriseJobPage(PageParam pageParam) {
-        PageResult<AppEnterpriseJobHomeRespVO> result=new PageResult<>();
-        List<AppEnterpriseJobHomeRespVO> list=new ArrayList<>();
+        PageResult<AppEnterpriseJobHomeRespVO> result = new PageResult<>();
+        List<AppEnterpriseJobHomeRespVO> list = new ArrayList<>();
 
-        AppEnterpriseJobHomeRespVO respVO1 =new AppEnterpriseJobHomeRespVO();
-        respVO1.setEnterpriseId(1L);
+        AppEnterpriseJobHomeRespVO respVO1 = new AppEnterpriseJobHomeRespVO();
+        respVO1.setId(1L);
         respVO1.setAnotherName("门墩儿科技");
         respVO1.setIndustryId(1L);
         respVO1.setScale(0);
+        respVO1.setFinancingStatus(0);
         respVO1.setLogo_url("https://www.menduner.com/static/img/loginlogo2.7924c12.png");
-        List<AppJobSimpleRespVO> list1 =new ArrayList<>();
-        AppJobSimpleRespVO job1=new AppJobHomeRespVO();
+        List<AppJobSimpleRespVO> list1 = new ArrayList<>();
+        AppJobSimpleRespVO job1 = new AppJobHomeRespVO();
         job1.setId(1L);
         job1.setAreaId(110000L);
         job1.setPositionId(1L);
@@ -296,10 +300,10 @@ public class JobAdvertisedServiceImpl implements JobAdvertisedService {
         job1.setName("项目经理");
         job1.setExpType(0);
         job1.setEduType(0);
-        job1.setTagList(new ArrayList<>());
+        job1.setTagList(ListUtil.of("无经验要求", "金融产品", "不限", "不接受居家办公", "教育培训", "互联网金融"));
         list1.add(job1);
 
-        AppJobSimpleRespVO job2=new AppJobHomeRespVO();
+        AppJobSimpleRespVO job2 = new AppJobHomeRespVO();
         job2.setId(2L);
         job2.setAreaId(440100L);
         job2.setPositionId(2L);
@@ -309,57 +313,134 @@ public class JobAdvertisedServiceImpl implements JobAdvertisedService {
         job2.setName("车间主任");
         job2.setExpType(1);
         job2.setEduType(1);
-        job2.setTagList(new ArrayList<>());
+        job2.setTagList(ListUtil.of("无经验要求", "金融产品", "不限", "不接受居家办公", "教育培训", "互联网金融"));
         list1.add(job1);
 
+        AppJobSimpleRespVO job3 = new AppJobHomeRespVO();
+        job3.setId(8L);
+        job3.setAreaId(441700L);
+        job3.setPositionId(8L);
+        job3.setPayFrom(BigDecimal.valueOf(1.2));
+        job3.setPayTo(BigDecimal.valueOf(3.8));
+        job3.setPayUnit(0);
+        job3.setName("程序员");
+        job3.setExpType(7);
+        job3.setEduType(99);
+        job3.setTagList(new ArrayList<>());
+        list1.add(job3);
+
         respVO1.setJobList(list1);
         list.add(respVO1);
 
 
-
-        AppEnterpriseJobHomeRespVO respVO2 =new AppEnterpriseJobHomeRespVO();
-        respVO2.setEnterpriseId(33L);
+        AppEnterpriseJobHomeRespVO respVO2 = new AppEnterpriseJobHomeRespVO();
+        respVO2.setId(33L);
         respVO2.setAnotherName("XX科技");
         respVO2.setIndustryId(33L);
         respVO2.setScale(0);
+        respVO2.setFinancingStatus(6);
         respVO2.setLogo_url("https://www.menduner.com/static/img/loginlogo2.7924c12.png");
-        List<AppJobSimpleRespVO> list2 =new ArrayList<>();
-        AppJobSimpleRespVO job3=new AppJobHomeRespVO();
-        job3.setId(1L);
-        job3.setAreaId(110000L);
-        job3.setPositionId(1L);
-        job3.setPayFrom(BigDecimal.valueOf(5));
-        job3.setPayTo(BigDecimal.valueOf(12));
-        job3.setPayUnit(0);
-        job3.setName("项目经理");
-        job3.setExpType(0);
-        job3.setEduType(0);
-        job3.setTagList(new ArrayList<>());
-        list2.add(job3);
-
-        AppJobSimpleRespVO job4=new AppJobHomeRespVO();
-        job4.setId(2L);
-        job4.setAreaId(440100L);
-        job4.setPositionId(2L);
-        job4.setPayFrom(BigDecimal.valueOf(18));
-        job4.setPayTo(BigDecimal.valueOf(22));
-        job4.setPayUnit(1);
-        job4.setName("车间主任");
-        job4.setExpType(1);
-        job4.setEduType(1);
+        List<AppJobSimpleRespVO> list2 = new ArrayList<>();
+        AppJobSimpleRespVO job4 = new AppJobHomeRespVO();
+        job4.setId(1L);
+        job4.setAreaId(110000L);
+        job4.setPositionId(1L);
+        job4.setPayFrom(BigDecimal.valueOf(5));
+        job4.setPayTo(BigDecimal.valueOf(12));
+        job4.setPayUnit(0);
+        job4.setName("项目经理");
+        job4.setExpType(0);
+        job4.setEduType(0);
         job4.setTagList(new ArrayList<>());
         list2.add(job4);
 
+        AppJobSimpleRespVO job5 = new AppJobHomeRespVO();
+        job5.setId(2L);
+        job5.setAreaId(440100L);
+        job5.setPositionId(2L);
+        job5.setPayFrom(BigDecimal.valueOf(18));
+        job5.setPayTo(BigDecimal.valueOf(22));
+        job5.setPayUnit(1);
+        job5.setName("车间主任");
+        job5.setExpType(1);
+        job5.setEduType(1);
+        job5.setTagList(new ArrayList<>());
+        list2.add(job5);
+
         respVO2.setJobList(list2);
         list.add(respVO2);
 
 
-
-
-
         result.setList(list);
         result.setTotal(2L);
 
         return result;
     }
+
+    @Override
+    public AppJobAdvertisedDetailRespVO getJobAdvertisedDetail(Long id) {
+
+        AppJobAdvertisedDetailRespVO respVO = new AppJobAdvertisedDetailRespVO();
+        respVO.setId(id);
+        respVO.setUserId(1L);
+        respVO.setEnterpriseId(1L);
+        respVO.setAreaId(110000L);
+        respVO.setPositionId(1L);
+        respVO.setPayFrom(BigDecimal.valueOf(5));
+        respVO.setPayTo(BigDecimal.valueOf(12));
+        respVO.setPayUnit(0);
+        respVO.setName("项目经理");
+        respVO.setExpType(0);
+        respVO.setEduType(0);
+        respVO.setTagList(ListUtil.of("无经验要求", "金融产品", "不限", "不接受居家办公", "教育培训", "互联网金融"));
+
+        String content = "参与微信搜一搜公众号搜索、小程序搜索、视频号搜索、官方区(比如搜北大)、服务搜索(比如搜洗车、身份证、违章查询)、富展现Box(比如搜宝马320、桂林天气)等业务的算法研发。\n" +
+                "可能参与的工作方向:\n" +
+                "1. 检索召回方向:包括Query理解、非必留、query改写、基础相关性、服务链接爬取、服务可用性计算等\n" +
+                "2. query意图识别方向:服务知识图谱、Query成份解析、服务相关性、自动意图识别、相似Query扩散、预训练语言模型等。\n" +
+                "3. 搜索排序方向:机构知识图谱、寻址相关性、搜索排序、点击率预估、转化率预估等。\n";
+        respVO.setContent(content);
+
+        String requirement = "计算机、机器学习和数学等相关专业,硕士及以上学历;\n" +
+                "对数据有理解意识、有洞察力;\n" +
+                "针对具体业务问题建模能力强;\n" +
+                "极强的手速、研发能力强;\n" +
+                "如果具有扎实的机器学习、深度学习和自然语言处理方向的理论和实践基, 会是加分项;\n" +
+                "如果熟练掌握一种深度学习和深度学习框架(如 Tensorflow/PyTorch/Caffe 等),会是加分项。";
+        respVO.setRequirement(requirement);
+
+        respVO.setAddress("广州海珠区广州T.I.T创意园B5栋");
+
+        respVO.setLongitude("113.32531");
+        respVO.setLatitude("23.099613");
+
+        respVO.setStatus(MendunerStatusEnum.ENABLE.getStatus());
+
+        respVO.setCreateTime(LocalDateTime.now());
+        respVO.setUpdateTime(LocalDateTime.now());
+
+        AppEnterpriseSimpleRespVO enterpriseSimpleRespVO = new AppEnterpriseSimpleRespVO();
+        enterpriseSimpleRespVO.setId(1L);
+        enterpriseSimpleRespVO.setName("广州门墩儿科技有限公司");
+        enterpriseSimpleRespVO.setAnotherName("门墩儿科技");
+        enterpriseSimpleRespVO.setIndustryId(1L);
+        enterpriseSimpleRespVO.setScale(0);
+        enterpriseSimpleRespVO.setFinancingStatus(0);
+        enterpriseSimpleRespVO.setLogo_url("https://www.menduner.com/static/img/loginlogo2.7924c12.png");
+
+        respVO.setEnterprise(enterpriseSimpleRespVO);
+
+        AppEnterpriseUserContactRespVO contactRespVO = new AppEnterpriseUserContactRespVO();
+        contactRespVO.setAvatar("https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fsafe-img.xhscdn.com%2Fbw1%2F5bbef4cc-6268-46d9-87b3-3aa7d2168aad%3FimageView2%2F2%2Fw%2F1080%2Fformat%2Fjpg&refer=http%3A%2F%2Fsafe-img.xhscdn.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1718339519&t=6ff0d47abd90d209ca81b671e898deb8");
+        contactRespVO.setUserId(1L);
+        contactRespVO.setEnterpriseId(1L);
+        contactRespVO.setPostCode("HR");
+        contactRespVO.setPostNameCn("人事经理");
+        contactRespVO.setPostNameEn("uman resources");
+        contactRespVO.setName("肖女士");
+
+        respVO.setContact(contactRespVO);
+
+        return respVO;
+    }
 }

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/position/PositionTagService.java

@@ -3,7 +3,7 @@ package com.citu.module.menduner.system.service.position;
 import com.citu.framework.common.pojo.PageResult;
 import com.citu.module.menduner.system.controller.admin.position.vo.PositionTagPageReqVO;
 import com.citu.module.menduner.system.controller.admin.position.vo.PositionTagSaveReqVO;
-import com.citu.module.menduner.system.dal.dataobject.positiontag.PositionTagDO;
+import com.citu.module.menduner.system.dal.dataobject.position.PositionTagDO;
 
 import javax.validation.Valid;
 

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/position/PositionTagServiceImpl.java

@@ -6,7 +6,7 @@ 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.module.menduner.system.dal.dataobject.position.PositionTagDO;
 import com.citu.framework.common.pojo.PageResult;
 import com.citu.framework.common.util.object.BeanUtils;
 

+ 143 - 0
menduner/menduner-system-biz/src/test/java/com/citu/module/menduner/system/service/enterprise/EnterprisePostServiceImplTest.java

@@ -0,0 +1,143 @@
+package com.citu.module.menduner.system.service.enterprise;
+
+import com.citu.framework.common.pojo.PageResult;
+import com.citu.framework.test.core.ut.BaseDbUnitTest;
+import com.citu.module.menduner.system.controller.admin.enterprise.post.EnterprisePostPageReqVO;
+import com.citu.module.menduner.system.controller.admin.enterprise.post.EnterprisePostSaveReqVO;
+import com.citu.module.menduner.system.dal.dataobject.enterprise.EnterprisePostDO;
+import com.citu.module.menduner.system.dal.mysql.enterprise.EnterprisePostMapper;
+import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.api.Test;
+import org.springframework.context.annotation.Import;
+
+import javax.annotation.Resource;
+
+import static com.citu.framework.common.util.date.LocalDateTimeUtils.buildBetweenTime;
+import static com.citu.framework.common.util.object.ObjectUtils.cloneIgnoreId;
+import static com.citu.framework.test.core.util.AssertUtils.assertPojoEquals;
+import static com.citu.framework.test.core.util.AssertUtils.assertServiceException;
+import static com.citu.framework.test.core.util.RandomUtils.randomLongId;
+import static com.citu.framework.test.core.util.RandomUtils.randomPojo;
+import static com.citu.module.menduner.system.enums.ErrorCodeConstants.ENTERPRISE_POST_NOT_EXISTS;
+import static org.junit.jupiter.api.Assertions.*;
+
+/**
+ * {@link EnterprisePostServiceImpl} 的单元测试类
+ *
+ * @author Rayson
+ */
+@Import(EnterprisePostServiceImpl.class)
+public class EnterprisePostServiceImplTest extends BaseDbUnitTest {
+
+    @Resource
+    private EnterprisePostServiceImpl enterprisePostService;
+
+    @Resource
+    private EnterprisePostMapper enterprisePostMapper;
+
+    @Test
+    public void testCreateEnterprisePost_success() {
+        // 准备参数
+        EnterprisePostSaveReqVO createReqVO = randomPojo(EnterprisePostSaveReqVO.class).setId(null);
+
+        // 调用
+        Long enterprisePostId = enterprisePostService.createEnterprisePost(createReqVO);
+        // 断言
+        assertNotNull(enterprisePostId);
+        // 校验记录的属性是否正确
+        EnterprisePostDO enterprisePost = enterprisePostMapper.selectById(enterprisePostId);
+        assertPojoEquals(createReqVO, enterprisePost, "id");
+    }
+
+    @Test
+    public void testUpdateEnterprisePost_success() {
+        // mock 数据
+        EnterprisePostDO dbEnterprisePost = randomPojo(EnterprisePostDO.class);
+        enterprisePostMapper.insert(dbEnterprisePost);// @Sql: 先插入出一条存在的数据
+        // 准备参数
+        EnterprisePostSaveReqVO updateReqVO = randomPojo(EnterprisePostSaveReqVO.class, o -> {
+            o.setId(dbEnterprisePost.getId()); // 设置更新的 ID
+        });
+
+        // 调用
+        enterprisePostService.updateEnterprisePost(updateReqVO);
+        // 校验是否更新正确
+        EnterprisePostDO enterprisePost = enterprisePostMapper.selectById(updateReqVO.getId()); // 获取最新的
+        assertPojoEquals(updateReqVO, enterprisePost);
+    }
+
+    @Test
+    public void testUpdateEnterprisePost_notExists() {
+        // 准备参数
+        EnterprisePostSaveReqVO updateReqVO = randomPojo(EnterprisePostSaveReqVO.class);
+
+        // 调用, 并断言异常
+        assertServiceException(() -> enterprisePostService.updateEnterprisePost(updateReqVO), ENTERPRISE_POST_NOT_EXISTS);
+    }
+
+    @Test
+    public void testDeleteEnterprisePost_success() {
+        // mock 数据
+        EnterprisePostDO dbEnterprisePost = randomPojo(EnterprisePostDO.class);
+        enterprisePostMapper.insert(dbEnterprisePost);// @Sql: 先插入出一条存在的数据
+        // 准备参数
+        Long id = dbEnterprisePost.getId();
+
+        // 调用
+        enterprisePostService.deleteEnterprisePost(id);
+        // 校验数据不存在了
+        assertNull(enterprisePostMapper.selectById(id));
+    }
+
+    @Test
+    public void testDeleteEnterprisePost_notExists() {
+        // 准备参数
+        Long id = randomLongId();
+
+        // 调用, 并断言异常
+        assertServiceException(() -> enterprisePostService.deleteEnterprisePost(id), ENTERPRISE_POST_NOT_EXISTS);
+    }
+
+    @Test
+    @Disabled  // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解
+    public void testGetEnterprisePostPage() {
+        // mock 数据
+        EnterprisePostDO dbEnterprisePost = randomPojo(EnterprisePostDO.class, o -> { // 等会查询到
+            o.setEnterpriseId(null);
+            o.setCode(null);
+            o.setNameCn(null);
+            o.setNameEn(null);
+            o.setStatus(null);
+            o.setCreateTime(null);
+        });
+        enterprisePostMapper.insert(dbEnterprisePost);
+        // 测试 enterpriseId 不匹配
+        enterprisePostMapper.insert(cloneIgnoreId(dbEnterprisePost, o -> o.setEnterpriseId(null)));
+        // 测试 code 不匹配
+        enterprisePostMapper.insert(cloneIgnoreId(dbEnterprisePost, o -> o.setCode(null)));
+        // 测试 nameCn 不匹配
+        enterprisePostMapper.insert(cloneIgnoreId(dbEnterprisePost, o -> o.setNameCn(null)));
+        // 测试 nameEn 不匹配
+        enterprisePostMapper.insert(cloneIgnoreId(dbEnterprisePost, o -> o.setNameEn(null)));
+        // 测试 status 不匹配
+        enterprisePostMapper.insert(cloneIgnoreId(dbEnterprisePost, o -> o.setStatus(null)));
+        // 测试 createTime 不匹配
+        enterprisePostMapper.insert(cloneIgnoreId(dbEnterprisePost, o -> o.setCreateTime(null)));
+        // 准备参数
+        EnterprisePostPageReqVO reqVO = new EnterprisePostPageReqVO();
+        reqVO.setEnterpriseId(null);
+        reqVO.setCode(null);
+        reqVO.setNameCn(null);
+        reqVO.setNameEn(null);
+        reqVO.setStatus(null);
+        reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
+
+        // 调用
+        PageResult<EnterprisePostDO> pageResult = enterprisePostService.getEnterprisePostPage(reqVO);
+        // 断言
+        assertEquals(1, pageResult.getTotal());
+        assertEquals(1, pageResult.getList().size());
+        assertPojoEquals(dbEnterprisePost, pageResult.getList().get(0));
+    }
+
+}

+ 1 - 1
menduner/menduner-system-biz/src/test/java/com/citu/module/menduner/system/service/positiontag/PositionTagServiceImplTest.java

@@ -10,7 +10,7 @@ import javax.annotation.Resource;
 
 import com.citu.framework.test.core.ut.BaseDbUnitTest;
 
-import com.citu.module.menduner.system.dal.dataobject.positiontag.PositionTagDO;
+import com.citu.module.menduner.system.dal.dataobject.position.PositionTagDO;
 import com.citu.module.menduner.system.dal.mysql.position.PositionTagMapper;
 import com.citu.framework.common.pojo.PageResult;
 

+ 2 - 1
menduner/menduner-system-biz/src/test/resources/sql/clean.sql

@@ -15,4 +15,5 @@ DELETE FROM "mde_job_advertised";
 DELETE FROM "mde_enterprise";
 DELETE FROM "mde_enterprise_business";
 DELETE FROM "mde_enterprise_register";
-DELETE FROM "mde_enterprise_user_bind";
+DELETE FROM "mde_enterprise_user_bind";
+DELETE FROM "mde_enterprise_post";

+ 20 - 1
menduner/menduner-system-biz/src/test/resources/sql/create_tables.sql

@@ -329,4 +329,23 @@ CREATE TABLE IF NOT EXISTS "mde_enterprise_user_bind" (
     "deleted" bit NOT NULL DEFAULT FALSE,
     "tenant_id" bigint NOT NULL,
     PRIMARY KEY ("id")
-) COMMENT '门墩儿-企业登录用户表';
+) COMMENT '门墩儿-企业登录用户表';
+
+-- 将该建表 SQL 语句,添加到 citu-module-menduner.system-biz 模块的 test/resources/sql/create_tables.sql 文件里
+CREATE TABLE IF NOT EXISTS "mde_enterprise_post" (
+    "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
+    "enterprise_id" bigint,
+    "code" varchar,
+    "name_cn" varchar NOT NULL,
+    "name_en" varchar NOT NULL,
+    "sort" int NOT NULL,
+    "status" int NOT NULL,
+    "remark" varchar,
+    "creator" varchar DEFAULT '',
+    "create_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
+    "updater" varchar DEFAULT '',
+    "update_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+    "deleted" bit NOT NULL DEFAULT FALSE,
+    "tenant_id" bigint NOT NULL,
+    PRIMARY KEY ("id")
+) COMMENT '门墩儿-企业岗位信息表';