Просмотр исходного кода

1、增加人才、职位、企业收藏订阅接口

rayson 1 год назад
Родитель
Сommit
f753e5af4c
37 измененных файлов с 911 добавлено и 687 удалено
  1. 14 12
      menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/ErrorCodeConstants.java
  2. 0 93
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/person/PersonEnterpriseAttentionController.java
  3. 93 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/person/PersonEnterpriseSubscribeController.java
  4. 30 30
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/person/PersonJobFavoriteController.java
  5. 2 2
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/person/vo/favorite/PersonJobFavoritePageReqVO.java
  6. 2 2
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/person/vo/favorite/PersonJobFavoriteRespVO.java
  7. 2 2
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/person/vo/favorite/PersonJobFavoriteSaveReqVO.java
  8. 3 3
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/person/vo/subscribe/PersonEnterpriseSubscribePageReqVO.java
  9. 3 3
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/person/vo/subscribe/PersonEnterpriseSubscribeRespVO.java
  10. 3 3
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/person/vo/subscribe/PersonEnterpriseSubscribeSaveReqVO.java
  11. 0 3
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/enterprise/vo/AppEnterpriseDetailRespVO.java
  12. 7 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/job/AppJobAdvertisedController.java
  13. 2 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/job/vo/AppJobAdvertisedDetailRespVO.java
  14. 2 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/job/vo/AppJobAdvertisedSearchPageReqVO.java
  15. 60 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/person/AppPersonController.java
  16. 4 4
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/person/PersonEnterpriseSubscribeDO.java
  17. 3 3
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/person/PersonJobFavoriteDO.java
  18. 0 26
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/person/PersonEnterpriseAttentionMapper.java
  19. 31 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/person/PersonEnterpriseSubscribeMapper.java
  20. 0 26
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/person/PersonJobCollectionMapper.java
  21. 31 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/person/PersonJobFavoriteMapper.java
  22. 0 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/enterprise/EnterpriseServiceImpl.java
  23. 6 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/job/JobAdvertisedService.java
  24. 12 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/job/JobAdvertisedServiceImpl.java
  25. 0 55
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/person/attention/PersonEnterpriseAttentionService.java
  26. 0 71
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/person/attention/PersonEnterpriseAttentionServiceImpl.java
  27. 0 71
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/person/collection/PersonJobCollectionServiceImpl.java
  28. 32 10
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/person/favorite/PersonJobFavoriteService.java
  29. 114 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/person/favorite/PersonJobFavoriteServiceImpl.java
  30. 76 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/person/subscribe/PersonEnterpriseSubscribeService.java
  31. 113 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/person/subscribe/PersonEnterpriseSubscribeServiceImpl.java
  32. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/position/PositionServiceImpl.java
  33. 0 132
      menduner/menduner-system-biz/src/test/java/com/citu/module/menduner/system/service/person/PersonEnterpriseAttentionServiceImplTest.java
  34. 132 0
      menduner/menduner-system-biz/src/test/java/com/citu/module/menduner/system/service/person/PersonEnterpriseSubscribeServiceImplTest.java
  35. 0 132
      menduner/menduner-system-biz/src/test/java/com/citu/module/menduner/system/service/person/PersonJobCollectionServiceImplTest.java
  36. 132 0
      menduner/menduner-system-biz/src/test/java/com/citu/module/menduner/system/service/person/PersonJobFavoriteServiceImplTest.java
  37. 1 1
      menduner/menduner-system-biz/src/test/resources/sql/create_tables.sql

+ 14 - 12
menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/ErrorCodeConstants.java

@@ -88,35 +88,37 @@ public interface ErrorCodeConstants {
     ErrorCode MDE_ROLE_ADMIN_CODE_ERROR = new ErrorCode(1_200_003_005, "编码【{}】不能使用");
 
     // ========== 门墩儿-企业信息 1_200_004_000 ==========
-    ErrorCode MDE_ENTERPRISE_NOT_EXISTS = new ErrorCode(1_200_004_001, "门墩儿-企业信息不存在");
+    ErrorCode MDE_ENTERPRISE_NOT_EXISTS = new ErrorCode(1_200_004_001, "企业信息不存在");
 
     // ========== 门墩儿-企业工商信息  1_200_005_001 ==========
-    ErrorCode MDE_ENTERPRISE_BUSINESS_NOT_EXISTS = new ErrorCode(1_200_005_001, "门墩儿-企业工商信息不存在");
+    ErrorCode MDE_ENTERPRISE_BUSINESS_NOT_EXISTS = new ErrorCode(1_200_005_001, "企业工商信息不存在");
 
     // ========== 门墩儿-企业注册申请 1_200_006_000 ==========
-    ErrorCode MDE_ENTERPRISE_REGISTER_NOT_EXISTS = new ErrorCode(1_200_006_001, "门墩儿-企业注册申请不存在");
+    ErrorCode MDE_ENTERPRISE_REGISTER_NOT_EXISTS = new ErrorCode(1_200_006_001, "企业注册申请不存在");
 
     // ========== 门墩儿-企业地址 1_200_007_001 ==========
-    ErrorCode MDE_ENTERPRISE_ADDRESS_NOT_EXISTS = new ErrorCode(1_200_007_001, "门墩儿-企业地址不存在");
+    ErrorCode MDE_ENTERPRISE_ADDRESS_NOT_EXISTS = new ErrorCode(1_200_007_001, "企业地址不存在");
 
     // ========== 门墩儿-企业登录用户 1_200_008_000 ==========
-    ErrorCode MDE_ENTERPRISE_USER_BIND_NOT_EXISTS = new ErrorCode(1_200_008_001, "门墩儿-企业登录用户不存在");
+    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, "门墩儿-企业岗位信息不存在");
+    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, "门墩儿-招聘职位不存在");
+    ErrorCode MDE_JOB_ADVERTISED_NOT_EXISTS = new ErrorCode(1_200_010_001, "招聘职位不存在");
 
     // ========== 门墩儿 - 企业招聘者浏览 1_200_011_000 ==========
-    ErrorCode ENTERPRISE_USER_LOOK_NOT_EXISTS = new ErrorCode(1_200_011_001, "门墩儿 - 企业招聘者浏览不存在");
+    ErrorCode ENTERPRISE_USER_LOOK_NOT_EXISTS = new ErrorCode(1_200_011_001, "企业招聘者浏览不存在");
 
-    // ========== 门墩儿-人才-企业关注 1_200_012_000 ==========
-    ErrorCode PERSON_ENTERPRISE_ATTENTION_NOT_EXISTS = new ErrorCode(1_200_012_001, "门墩儿-人才-企业关注不存在");
+    // ========== 门墩儿-人才-企业关注订阅 1_200_012_000 ==========
+    ErrorCode PERSON_ENTERPRISE_ATTENTION_NOT_EXISTS = new ErrorCode(1_200_012_001, "企业关注订阅不存在");
+    ErrorCode PERSON_ENTERPRISE_ATTENTION_EXISTS = new ErrorCode(1_200_012_002, "企业已关注订阅,请勿重复点击");
 
     // ========== 门墩儿-人才-浏览记录 1_200_013_000 ==========
-    ErrorCode PERSON_BROWSE_RECORD_NOT_EXISTS = new ErrorCode(1_200_013_001, "门墩儿-人才-浏览记录不存在");
+    ErrorCode PERSON_BROWSE_RECORD_NOT_EXISTS = new ErrorCode(1_200_013_001, "浏览记录不存在");
 
     // ========== 门墩儿-人才-招聘职位收藏 1_200_014_000 ==========
-    ErrorCode PERSON_JOB_COLLECTION_NOT_EXISTS = new ErrorCode(1_200_014_001, "门墩儿-人才-招聘职位收藏不存在");
+    ErrorCode PERSON_JOB_COLLECTION_NOT_EXISTS = new ErrorCode(1_200_014_001, "招聘职位收藏不存在");
+    ErrorCode PERSON_JOB_COLLECTION_EXISTS = new ErrorCode(1_200_014_002, "职位已收藏,请勿重复点击");
 }

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

@@ -1,93 +0,0 @@
-package com.citu.module.menduner.system.controller.admin.person;
-
-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.person.vo.attention.PersonEnterpriseAttentionPageReqVO;
-import com.citu.module.menduner.system.controller.admin.person.vo.attention.PersonEnterpriseAttentionRespVO;
-import com.citu.module.menduner.system.controller.admin.person.vo.attention.PersonEnterpriseAttentionSaveReqVO;
-import com.citu.module.menduner.system.dal.dataobject.person.PersonEnterpriseAttentionDO;
-import com.citu.module.menduner.system.service.person.attention.PersonEnterpriseAttentionService;
-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/person-enterprise-attention")
-@Validated
-public class PersonEnterpriseAttentionController {
-
-    @Resource
-    private PersonEnterpriseAttentionService personEnterpriseAttentionService;
-
-    @PostMapping("/create")
-    @Operation(summary = "创建门墩儿-人才-企业关注")
-    @PreAuthorize("@ss.hasPermission('menduner.system:person-enterprise-attention:create')")
-    public CommonResult<Long> createPersonEnterpriseAttention(@Valid @RequestBody PersonEnterpriseAttentionSaveReqVO createReqVO) {
-        return success(personEnterpriseAttentionService.createPersonEnterpriseAttention(createReqVO));
-    }
-
-    @PutMapping("/update")
-    @Operation(summary = "更新门墩儿-人才-企业关注")
-    @PreAuthorize("@ss.hasPermission('menduner.system:person-enterprise-attention:update')")
-    public CommonResult<Boolean> updatePersonEnterpriseAttention(@Valid @RequestBody PersonEnterpriseAttentionSaveReqVO updateReqVO) {
-        personEnterpriseAttentionService.updatePersonEnterpriseAttention(updateReqVO);
-        return success(true);
-    }
-
-    @DeleteMapping("/delete")
-    @Operation(summary = "删除门墩儿-人才-企业关注")
-    @Parameter(name = "id", description = "编号", required = true)
-    @PreAuthorize("@ss.hasPermission('menduner.system:person-enterprise-attention:delete')")
-    public CommonResult<Boolean> deletePersonEnterpriseAttention(@RequestParam("id") Long id) {
-        personEnterpriseAttentionService.deletePersonEnterpriseAttention(id);
-        return success(true);
-    }
-
-    @GetMapping("/get")
-    @Operation(summary = "获得门墩儿-人才-企业关注")
-    @Parameter(name = "id", description = "编号", required = true, example = "1024")
-    @PreAuthorize("@ss.hasPermission('menduner.system:person-enterprise-attention:query')")
-    public CommonResult<PersonEnterpriseAttentionRespVO> getPersonEnterpriseAttention(@RequestParam("id") Long id) {
-        PersonEnterpriseAttentionDO personEnterpriseAttention = personEnterpriseAttentionService.getPersonEnterpriseAttention(id);
-        return success(BeanUtils.toBean(personEnterpriseAttention, PersonEnterpriseAttentionRespVO.class));
-    }
-
-    @GetMapping("/page")
-    @Operation(summary = "获得门墩儿-人才-企业关注分页")
-    @PreAuthorize("@ss.hasPermission('menduner.system:person-enterprise-attention:query')")
-    public CommonResult<PageResult<PersonEnterpriseAttentionRespVO>> getPersonEnterpriseAttentionPage(@Valid PersonEnterpriseAttentionPageReqVO pageReqVO) {
-        PageResult<PersonEnterpriseAttentionDO> pageResult = personEnterpriseAttentionService.getPersonEnterpriseAttentionPage(pageReqVO);
-        return success(BeanUtils.toBean(pageResult, PersonEnterpriseAttentionRespVO.class));
-    }
-
-    @GetMapping("/export-excel")
-    @Operation(summary = "导出门墩儿-人才-企业关注 Excel")
-    @PreAuthorize("@ss.hasPermission('menduner.system:person-enterprise-attention:export')")
-    @ApiAccessLog(operateType = EXPORT)
-    public void exportPersonEnterpriseAttentionExcel(@Valid PersonEnterpriseAttentionPageReqVO pageReqVO,
-                                                     HttpServletResponse response) throws IOException {
-        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
-        List<PersonEnterpriseAttentionDO> list = personEnterpriseAttentionService.getPersonEnterpriseAttentionPage(pageReqVO).getList();
-        // 导出 Excel
-        ExcelUtils.write(response, "门墩儿-人才-企业关注.xls", "数据", PersonEnterpriseAttentionRespVO.class,
-                BeanUtils.toBean(list, PersonEnterpriseAttentionRespVO.class));
-    }
-
-}

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

@@ -0,0 +1,93 @@
+package com.citu.module.menduner.system.controller.admin.person;
+
+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.person.vo.subscribe.PersonEnterpriseSubscribePageReqVO;
+import com.citu.module.menduner.system.controller.admin.person.vo.subscribe.PersonEnterpriseSubscribeRespVO;
+import com.citu.module.menduner.system.controller.admin.person.vo.subscribe.PersonEnterpriseSubscribeSaveReqVO;
+import com.citu.module.menduner.system.dal.dataobject.person.PersonEnterpriseSubscribeDO;
+import com.citu.module.menduner.system.service.person.subscribe.PersonEnterpriseSubscribeService;
+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/person-enterprise-subscribe")
+@Validated
+public class PersonEnterpriseSubscribeController {
+
+    @Resource
+    private PersonEnterpriseSubscribeService personEnterpriseSubscribeService;
+
+    @PostMapping("/create")
+    @Operation(summary = "创建门墩儿-人才-企业关注订阅")
+    @PreAuthorize("@ss.hasPermission('menduner.system:person-enterprise-subscribe:create')")
+    public CommonResult<Long> createPersonEnterpriseSubscribe(@Valid @RequestBody PersonEnterpriseSubscribeSaveReqVO createReqVO) {
+        return success(personEnterpriseSubscribeService.createPersonEnterpriseSubscribe(createReqVO));
+    }
+
+    @PutMapping("/update")
+    @Operation(summary = "更新门墩儿-人才-企业关注订阅")
+    @PreAuthorize("@ss.hasPermission('menduner.system:person-enterprise-subscribe:update')")
+    public CommonResult<Boolean> updatePersonEnterpriseSubscribe(@Valid @RequestBody PersonEnterpriseSubscribeSaveReqVO updateReqVO) {
+        personEnterpriseSubscribeService.updatePersonEnterpriseSubscribe(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/delete")
+    @Operation(summary = "删除门墩儿-人才-企业关注订阅")
+    @Parameter(name = "id", description = "编号", required = true)
+    @PreAuthorize("@ss.hasPermission('menduner.system:person-enterprise-subscribe:delete')")
+    public CommonResult<Boolean> deletePersonEnterpriseSubscribe(@RequestParam("id") Long id) {
+        personEnterpriseSubscribeService.deletePersonEnterpriseSubscribe(id);
+        return success(true);
+    }
+
+    @GetMapping("/get")
+    @Operation(summary = "获得门墩儿-人才-企业关注订阅")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('menduner.system:person-enterprise-subscribe:query')")
+    public CommonResult<PersonEnterpriseSubscribeRespVO> getPersonEnterpriseSubscribe(@RequestParam("id") Long id) {
+        PersonEnterpriseSubscribeDO personEnterpriseSubscribe = personEnterpriseSubscribeService.getPersonEnterpriseSubscribe(id);
+        return success(BeanUtils.toBean(personEnterpriseSubscribe, PersonEnterpriseSubscribeRespVO.class));
+    }
+
+    @GetMapping("/page")
+    @Operation(summary = "获得门墩儿-人才-企业关注订阅分页")
+    @PreAuthorize("@ss.hasPermission('menduner.system:person-enterprise-subscribe:query')")
+    public CommonResult<PageResult<PersonEnterpriseSubscribeRespVO>> getPersonEnterpriseSubscribePage(@Valid PersonEnterpriseSubscribePageReqVO pageReqVO) {
+        PageResult<PersonEnterpriseSubscribeDO> pageResult = personEnterpriseSubscribeService.getPersonEnterpriseSubscribePage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, PersonEnterpriseSubscribeRespVO.class));
+    }
+
+    @GetMapping("/export-excel")
+    @Operation(summary = "导出门墩儿-人才-企业关注订阅 Excel")
+    @PreAuthorize("@ss.hasPermission('menduner.system:person-enterprise-subscribe:export')")
+    @ApiAccessLog(operateType = EXPORT)
+    public void exportPersonEnterpriseSubscribeExcel(@Valid PersonEnterpriseSubscribePageReqVO pageReqVO,
+                                                     HttpServletResponse response) throws IOException {
+        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<PersonEnterpriseSubscribeDO> list = personEnterpriseSubscribeService.getPersonEnterpriseSubscribePage(pageReqVO).getList();
+        // 导出 Excel
+        ExcelUtils.write(response, "门墩儿-人才-企业关注订阅.xls", "数据", PersonEnterpriseSubscribeRespVO.class,
+                BeanUtils.toBean(list, PersonEnterpriseSubscribeRespVO.class));
+    }
+
+}

+ 30 - 30
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/person/PersonJobCollectionController.java → menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/person/PersonJobFavoriteController.java

@@ -6,11 +6,11 @@ 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.person.vo.collection.PersonJobCollectionPageReqVO;
-import com.citu.module.menduner.system.controller.admin.person.vo.collection.PersonJobCollectionRespVO;
-import com.citu.module.menduner.system.controller.admin.person.vo.collection.PersonJobCollectionSaveReqVO;
-import com.citu.module.menduner.system.dal.dataobject.person.PersonJobCollectionDO;
-import com.citu.module.menduner.system.service.person.collection.PersonJobCollectionService;
+import com.citu.module.menduner.system.controller.admin.person.vo.favorite.PersonJobFavoritePageReqVO;
+import com.citu.module.menduner.system.controller.admin.person.vo.favorite.PersonJobFavoriteRespVO;
+import com.citu.module.menduner.system.controller.admin.person.vo.favorite.PersonJobFavoriteSaveReqVO;
+import com.citu.module.menduner.system.dal.dataobject.person.PersonJobFavoriteDO;
+import com.citu.module.menduner.system.service.person.favorite.PersonJobFavoriteService;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.Parameter;
 import io.swagger.v3.oas.annotations.tags.Tag;
@@ -29,65 +29,65 @@ import static com.citu.framework.common.pojo.CommonResult.success;
 
 @Tag(name = "管理后台 - 门墩儿-人才-招聘职位收藏")
 @RestController
-@RequestMapping("/menduner/system/person-job-collection")
+@RequestMapping("/menduner/system/person-job-favorite")
 @Validated
-public class PersonJobCollectionController {
+public class PersonJobFavoriteController {
 
     @Resource
-    private PersonJobCollectionService personJobCollectionService;
+    private PersonJobFavoriteService personJobFavoriteService;
 
     @PostMapping("/create")
     @Operation(summary = "创建门墩儿-人才-招聘职位收藏")
-    @PreAuthorize("@ss.hasPermission('menduner:system:person-job-collection:create')")
-    public CommonResult<Long> createPersonJobCollection(@Valid @RequestBody PersonJobCollectionSaveReqVO createReqVO) {
-        return success(personJobCollectionService.createPersonJobCollection(createReqVO));
+    @PreAuthorize("@ss.hasPermission('menduner:system:person-job-favorite:create')")
+    public CommonResult<Long> createPersonJobFavorite(@Valid @RequestBody PersonJobFavoriteSaveReqVO createReqVO) {
+        return success(personJobFavoriteService.createPersonJobFavorite(createReqVO));
     }
 
     @PutMapping("/update")
     @Operation(summary = "更新门墩儿-人才-招聘职位收藏")
-    @PreAuthorize("@ss.hasPermission('menduner:system:person-job-collection:update')")
-    public CommonResult<Boolean> updatePersonJobCollection(@Valid @RequestBody PersonJobCollectionSaveReqVO updateReqVO) {
-        personJobCollectionService.updatePersonJobCollection(updateReqVO);
+    @PreAuthorize("@ss.hasPermission('menduner:system:person-job-favorite:update')")
+    public CommonResult<Boolean> updatePersonJobFavorite(@Valid @RequestBody PersonJobFavoriteSaveReqVO updateReqVO) {
+        personJobFavoriteService.updatePersonJobFavorite(updateReqVO);
         return success(true);
     }
 
     @DeleteMapping("/delete")
     @Operation(summary = "删除门墩儿-人才-招聘职位收藏")
     @Parameter(name = "id", description = "编号", required = true)
-    @PreAuthorize("@ss.hasPermission('menduner:system:person-job-collection:delete')")
-    public CommonResult<Boolean> deletePersonJobCollection(@RequestParam("id") Long id) {
-        personJobCollectionService.deletePersonJobCollection(id);
+    @PreAuthorize("@ss.hasPermission('menduner:system:person-job-favorite:delete')")
+    public CommonResult<Boolean> deletePersonJobFavorite(@RequestParam("id") Long id) {
+        personJobFavoriteService.deletePersonJobFavorite(id);
         return success(true);
     }
 
     @GetMapping("/get")
     @Operation(summary = "获得门墩儿-人才-招聘职位收藏")
     @Parameter(name = "id", description = "编号", required = true, example = "1024")
-    @PreAuthorize("@ss.hasPermission('menduner:system:person-job-collection:query')")
-    public CommonResult<PersonJobCollectionRespVO> getPersonJobCollection(@RequestParam("id") Long id) {
-        PersonJobCollectionDO personJobCollection = personJobCollectionService.getPersonJobCollection(id);
-        return success(BeanUtils.toBean(personJobCollection, PersonJobCollectionRespVO.class));
+    @PreAuthorize("@ss.hasPermission('menduner:system:person-job-favorite:query')")
+    public CommonResult<PersonJobFavoriteRespVO> getPersonJobFavorite(@RequestParam("id") Long id) {
+        PersonJobFavoriteDO personJobFavorite = personJobFavoriteService.getPersonJobFavorite(id);
+        return success(BeanUtils.toBean(personJobFavorite, PersonJobFavoriteRespVO.class));
     }
 
     @GetMapping("/page")
     @Operation(summary = "获得门墩儿-人才-招聘职位收藏分页")
-    @PreAuthorize("@ss.hasPermission('menduner:system:person-job-collection:query')")
-    public CommonResult<PageResult<PersonJobCollectionRespVO>> getPersonJobCollectionPage(@Valid PersonJobCollectionPageReqVO pageReqVO) {
-        PageResult<PersonJobCollectionDO> pageResult = personJobCollectionService.getPersonJobCollectionPage(pageReqVO);
-        return success(BeanUtils.toBean(pageResult, PersonJobCollectionRespVO.class));
+    @PreAuthorize("@ss.hasPermission('menduner:system:person-job-favorite:query')")
+    public CommonResult<PageResult<PersonJobFavoriteRespVO>> getPersonJobFavoritePage(@Valid PersonJobFavoritePageReqVO pageReqVO) {
+        PageResult<PersonJobFavoriteDO> pageResult = personJobFavoriteService.getPersonJobFavoritePage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, PersonJobFavoriteRespVO.class));
     }
 
     @GetMapping("/export-excel")
     @Operation(summary = "导出门墩儿-人才-招聘职位收藏 Excel")
-    @PreAuthorize("@ss.hasPermission('menduner:system:person-job-collection:export')")
+    @PreAuthorize("@ss.hasPermission('menduner:system:person-job-favorite:export')")
     @ApiAccessLog(operateType = EXPORT)
-    public void exportPersonJobCollectionExcel(@Valid PersonJobCollectionPageReqVO pageReqVO,
+    public void exportPersonJobFavoriteExcel(@Valid PersonJobFavoritePageReqVO pageReqVO,
                                                HttpServletResponse response) throws IOException {
         pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
-        List<PersonJobCollectionDO> list = personJobCollectionService.getPersonJobCollectionPage(pageReqVO).getList();
+        List<PersonJobFavoriteDO> list = personJobFavoriteService.getPersonJobFavoritePage(pageReqVO).getList();
         // 导出 Excel
-        ExcelUtils.write(response, "门墩儿-人才-招聘职位收藏.xls", "数据", PersonJobCollectionRespVO.class,
-                BeanUtils.toBean(list, PersonJobCollectionRespVO.class));
+        ExcelUtils.write(response, "门墩儿-人才-招聘职位收藏.xls", "数据", PersonJobFavoriteRespVO.class,
+                BeanUtils.toBean(list, PersonJobFavoriteRespVO.class));
     }
 
 }

+ 2 - 2
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/person/vo/collection/PersonJobCollectionPageReqVO.java → menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/person/vo/favorite/PersonJobFavoritePageReqVO.java

@@ -1,4 +1,4 @@
-package com.citu.module.menduner.system.controller.admin.person.vo.collection;
+package com.citu.module.menduner.system.controller.admin.person.vo.favorite;
 
 import com.citu.framework.common.pojo.PageParam;
 import io.swagger.v3.oas.annotations.media.Schema;
@@ -15,7 +15,7 @@ import static com.citu.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DA
 @Data
 @EqualsAndHashCode(callSuper = true)
 @ToString(callSuper = true)
-public class PersonJobCollectionPageReqVO extends PageParam {
+public class PersonJobFavoritePageReqVO extends PageParam {
 
     @Schema(description = "用户id", example = "18904")
     private Long userId;

+ 2 - 2
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/person/vo/collection/PersonJobCollectionRespVO.java → menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/person/vo/favorite/PersonJobFavoriteRespVO.java

@@ -1,4 +1,4 @@
-package com.citu.module.menduner.system.controller.admin.person.vo.collection;
+package com.citu.module.menduner.system.controller.admin.person.vo.favorite;
 
 import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
 import com.alibaba.excel.annotation.ExcelProperty;
@@ -10,7 +10,7 @@ import java.time.LocalDateTime;
 @Schema(description = "管理后台 - 门墩儿-人才-招聘职位收藏 Response VO")
 @Data
 @ExcelIgnoreUnannotated
-public class PersonJobCollectionRespVO {
+public class PersonJobFavoriteRespVO {
 
     @Schema(description = "岗位ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "3367")
     @ExcelProperty("岗位ID")

+ 2 - 2
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/person/vo/collection/PersonJobCollectionSaveReqVO.java → menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/person/vo/favorite/PersonJobFavoriteSaveReqVO.java

@@ -1,11 +1,11 @@
-package com.citu.module.menduner.system.controller.admin.person.vo.collection;
+package com.citu.module.menduner.system.controller.admin.person.vo.favorite;
 
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
 @Schema(description = "管理后台 - 门墩儿-人才-招聘职位收藏新增/修改 Request VO")
 @Data
-public class PersonJobCollectionSaveReqVO {
+public class PersonJobFavoriteSaveReqVO {
 
     @Schema(description = "岗位ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "3367")
     private Long id;

+ 3 - 3
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/person/vo/attention/PersonEnterpriseAttentionPageReqVO.java → menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/person/vo/subscribe/PersonEnterpriseSubscribePageReqVO.java

@@ -1,4 +1,4 @@
-package com.citu.module.menduner.system.controller.admin.person.vo.attention;
+package com.citu.module.menduner.system.controller.admin.person.vo.subscribe;
 
 import com.citu.framework.common.pojo.PageParam;
 import io.swagger.v3.oas.annotations.media.Schema;
@@ -11,11 +11,11 @@ import java.time.LocalDateTime;
 
 import static com.citu.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
 
-@Schema(description = "管理后台 - 门墩儿-人才-企业关注分页 Request VO")
+@Schema(description = "管理后台 - 门墩儿-人才-企业关注订阅分页 Request VO")
 @Data
 @EqualsAndHashCode(callSuper = true)
 @ToString(callSuper = true)
-public class PersonEnterpriseAttentionPageReqVO extends PageParam {
+public class PersonEnterpriseSubscribePageReqVO extends PageParam {
 
     @Schema(description = "用户id", example = "32466")
     private Long userId;

+ 3 - 3
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/person/vo/attention/PersonEnterpriseAttentionRespVO.java → menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/person/vo/subscribe/PersonEnterpriseSubscribeRespVO.java

@@ -1,4 +1,4 @@
-package com.citu.module.menduner.system.controller.admin.person.vo.attention;
+package com.citu.module.menduner.system.controller.admin.person.vo.subscribe;
 
 import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
 import com.alibaba.excel.annotation.ExcelProperty;
@@ -7,10 +7,10 @@ import lombok.Data;
 
 import java.time.LocalDateTime;
 
-@Schema(description = "管理后台 - 门墩儿-人才-企业关注 Response VO")
+@Schema(description = "管理后台 - 门墩儿-人才-企业关注订阅 Response VO")
 @Data
 @ExcelIgnoreUnannotated
-public class PersonEnterpriseAttentionRespVO {
+public class PersonEnterpriseSubscribeRespVO {
 
     @Schema(description = "岗位ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "9310")
     @ExcelProperty("岗位ID")

+ 3 - 3
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/person/vo/attention/PersonEnterpriseAttentionSaveReqVO.java → menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/person/vo/subscribe/PersonEnterpriseSubscribeSaveReqVO.java

@@ -1,11 +1,11 @@
-package com.citu.module.menduner.system.controller.admin.person.vo.attention;
+package com.citu.module.menduner.system.controller.admin.person.vo.subscribe;
 
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
-@Schema(description = "管理后台 - 门墩儿-人才-企业关注新增/修改 Request VO")
+@Schema(description = "管理后台 - 门墩儿-人才-企业关注订阅新增/修改 Request VO")
 @Data
-public class PersonEnterpriseAttentionSaveReqVO {
+public class PersonEnterpriseSubscribeSaveReqVO {
 
     @Schema(description = "岗位ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "9310")
     private Long id;

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

@@ -24,7 +24,4 @@ public class AppEnterpriseDetailRespVO {
     @Schema(description = "企业在招职位")
     private Integer JobAdvertisedCount;
 
-    @Schema(description = "是否关注")
-    private boolean attention;
-
 }

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

@@ -89,4 +89,11 @@ public class AppJobAdvertisedController {
         return success(list);
     }
 
+    @GetMapping("/get/area/count")
+    @Operation(summary = "根据企业id获取企业职位区域")
+    public CommonResult<List<AppCommonRespVO>> getJobAreaCountByEnterpriseId(@RequestParam("enterpriseId") Long enterpriseId) {
+        List<AppCommonRespVO> list = jobAdvertisedService.getJobAreaCountByEnterpriseId(enterpriseId);
+        return success(list);
+    }
+
 }

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

@@ -14,7 +14,7 @@ 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")
+@Schema(description = "menduner - 招聘职位-详情 Response VO")
 @Data
 public class AppJobAdvertisedDetailRespVO {
 
@@ -92,4 +92,5 @@ public class AppJobAdvertisedDetailRespVO {
     @Schema(description = "招聘联系人信息")
     private AppEnterpriseUserContactRespVO contact;
 
+
 }

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

@@ -40,6 +40,8 @@ public class AppJobAdvertisedSearchPageReqVO extends PageParam {
 
 
     // ========== 企业相关 ==========
+    @Schema(description = "企业id", example = "15967")
+    private Long enterpriseId;
 
     @Schema(description = "企业类型(menduner_enterprise_type)", example = "[]")
     private Integer enterpriseType;

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

@@ -2,9 +2,12 @@ package com.citu.module.menduner.system.controller.app.person;
 
 import com.citu.framework.common.pojo.CommonResult;
 import com.citu.framework.common.util.object.BeanUtils;
+import com.citu.framework.security.core.annotations.PreAuthenticated;
 import com.citu.module.menduner.system.controller.admin.person.vo.info.PersonInfoRespVO;
 import com.citu.module.menduner.system.dal.dataobject.person.PersonInfoDO;
+import com.citu.module.menduner.system.service.person.favorite.PersonJobFavoriteService;
 import com.citu.module.menduner.system.service.person.info.PersonInfoService;
+import com.citu.module.menduner.system.service.person.subscribe.PersonEnterpriseSubscribeService;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.Parameter;
 import io.swagger.v3.oas.annotations.tags.Tag;
@@ -29,6 +32,13 @@ public class AppPersonController {
     @Resource
     private PersonInfoService personInfoService;
 
+    @Resource
+    private PersonJobFavoriteService jobFavoriteService;
+
+    @Resource
+    private PersonEnterpriseSubscribeService enterpriseSubscribeService;
+
+    @PreAuthenticated
     @GetMapping("/get")
     @Operation(summary = "获得人才信息")
     @Parameter(name = "userId", description = "用户id", required = true, example = "1024")
@@ -37,4 +47,54 @@ public class AppPersonController {
         return success(BeanUtils.toBean(userInfo, PersonInfoRespVO.class));
     }
 
+    @PreAuthenticated
+    @GetMapping("/job/favorite")
+    @Operation(summary = "用户收藏职位")
+    public CommonResult<Boolean> favorite(@RequestParam("jobId") Long jobId) {
+        Boolean result = jobFavoriteService.favorite(jobId);
+        return success(result);
+    }
+
+    @PreAuthenticated
+    @GetMapping("/enterprise/subscribe")
+    @Operation(summary = "用户关注订阅企业")
+    public CommonResult<Boolean> subscribe(@RequestParam("enterpriseId")Long enterpriseId) {
+        Boolean result = enterpriseSubscribeService.subscribe(enterpriseId);
+        return success(result);
+    }
+
+
+    @PreAuthenticated
+    @GetMapping("/job/favorite/count")
+    @Operation(summary = "获取用户收藏职位数量")
+    public CommonResult<Long> getFavoriteCunt() {
+        Long count = jobFavoriteService.countByUserId();
+        return success(count);
+    }
+
+    @PreAuthenticated
+    @GetMapping("/enterprise/subscribe/count")
+    @Operation(summary = "获取用户订阅的企业数量")
+    public CommonResult<Long> getSubscribeCount() {
+        Long count = enterpriseSubscribeService.countByUserId();
+        return success(count);
+    }
+
+
+    @GetMapping("/job/favorite/check")
+    @Operation(summary = "效验是否收藏该职位")
+    @Parameter(name = "jobId", description = "招聘职位id", required = true, example = "1024")
+    public CommonResult<Boolean> isFavorite(@RequestParam("jobId") Long jobId) {
+        Boolean result = jobFavoriteService.isFavorite(jobId);
+        return success(result);
+    }
+
+    @GetMapping("/enterprise/subscribe/check")
+    @Operation(summary = "效验是否关注该企业")
+    @Parameter(name = "enterpriseId", description = "企业id", required = true, example = "1024")
+    public CommonResult<Boolean> isSubscribe(@RequestParam("enterpriseId") Long enterpriseId) {
+        Boolean result = enterpriseSubscribeService.isSubscribe(enterpriseId);
+        return success(result);
+    }
+
 }

+ 4 - 4
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/person/PersonEnterpriseAttentionDO.java → menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/person/PersonEnterpriseSubscribeDO.java

@@ -7,19 +7,19 @@ import com.citu.framework.mybatis.core.dataobject.BaseDO;
 import lombok.*;
 
 /**
- * 门墩儿-人才-企业关注 DO
+ * 门墩儿-人才-企业关注订阅订阅 DO
  *
  * @author Rayson
  */
-@TableName("mde_person_enterprise_attention")
-@KeySequence("mde_person_enterprise_attention_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@TableName("mde_person_enterprise_subscribe")
+@KeySequence("mde_person_enterprise_subscribe_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
 @Data
 @EqualsAndHashCode(callSuper = true)
 @ToString(callSuper = true)
 @Builder
 @NoArgsConstructor
 @AllArgsConstructor
-public class PersonEnterpriseAttentionDO extends BaseDO {
+public class PersonEnterpriseSubscribeDO extends BaseDO {
 
     /**
      * 岗位ID

+ 3 - 3
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/person/PersonJobCollectionDO.java → menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/person/PersonJobFavoriteDO.java

@@ -11,15 +11,15 @@ import lombok.*;
  *
  * @author Rayson
  */
-@TableName("mde_person_job_collection")
-@KeySequence("mde_person_job_collection_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@TableName("mde_person_job_favorite")
+@KeySequence("mde_person_job_favorite_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
 @Data
 @EqualsAndHashCode(callSuper = true)
 @ToString(callSuper = true)
 @Builder
 @NoArgsConstructor
 @AllArgsConstructor
-public class PersonJobCollectionDO extends BaseDO {
+public class PersonJobFavoriteDO extends BaseDO {
 
     /**
      * 岗位ID

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

@@ -1,26 +0,0 @@
-package com.citu.module.menduner.system.dal.mysql.person;
-
-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.person.vo.attention.PersonEnterpriseAttentionPageReqVO;
-import com.citu.module.menduner.system.dal.dataobject.person.PersonEnterpriseAttentionDO;
-import org.apache.ibatis.annotations.Mapper;
-
-/**
- * 门墩儿-人才-企业关注 Mapper
- *
- * @author Rayson
- */
-@Mapper
-public interface PersonEnterpriseAttentionMapper extends BaseMapperX<PersonEnterpriseAttentionDO> {
-
-    default PageResult<PersonEnterpriseAttentionDO> selectPage(PersonEnterpriseAttentionPageReqVO reqVO) {
-        return selectPage(reqVO, new LambdaQueryWrapperX<PersonEnterpriseAttentionDO>()
-                .eqIfPresent(PersonEnterpriseAttentionDO::getUserId, reqVO.getUserId())
-                .eqIfPresent(PersonEnterpriseAttentionDO::getEnterpriseId, reqVO.getEnterpriseId())
-                .betweenIfPresent(PersonEnterpriseAttentionDO::getCreateTime, reqVO.getCreateTime())
-                .orderByDesc(PersonEnterpriseAttentionDO::getId));
-    }
-
-}

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

@@ -0,0 +1,31 @@
+package com.citu.module.menduner.system.dal.mysql.person;
+
+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.person.vo.subscribe.PersonEnterpriseSubscribePageReqVO;
+import com.citu.module.menduner.system.dal.dataobject.person.PersonEnterpriseSubscribeDO;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 门墩儿-人才-企业关注订阅 Mapper
+ *
+ * @author Rayson
+ */
+@Mapper
+public interface PersonEnterpriseSubscribeMapper extends BaseMapperX<PersonEnterpriseSubscribeDO> {
+
+    default PageResult<PersonEnterpriseSubscribeDO> selectPage(PersonEnterpriseSubscribePageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<PersonEnterpriseSubscribeDO>()
+                .eqIfPresent(PersonEnterpriseSubscribeDO::getUserId, reqVO.getUserId())
+                .eqIfPresent(PersonEnterpriseSubscribeDO::getEnterpriseId, reqVO.getEnterpriseId())
+                .betweenIfPresent(PersonEnterpriseSubscribeDO::getCreateTime, reqVO.getCreateTime())
+                .orderByDesc(PersonEnterpriseSubscribeDO::getId));
+    }
+
+    default PersonEnterpriseSubscribeDO selectByUserIdAndEnterpriseId(Long userId, Long enterpriseId) {
+        return selectOne(PersonEnterpriseSubscribeDO::getUserId, userId,
+                PersonEnterpriseSubscribeDO::getEnterpriseId, enterpriseId);
+    }
+
+}

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

@@ -1,26 +0,0 @@
-package com.citu.module.menduner.system.dal.mysql.person;
-
-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.person.vo.collection.PersonJobCollectionPageReqVO;
-import com.citu.module.menduner.system.dal.dataobject.person.PersonJobCollectionDO;
-import org.apache.ibatis.annotations.Mapper;
-
-/**
- * 门墩儿-人才-招聘职位收藏 Mapper
- *
- * @author Rayson
- */
-@Mapper
-public interface PersonJobCollectionMapper extends BaseMapperX<PersonJobCollectionDO> {
-
-    default PageResult<PersonJobCollectionDO> selectPage(PersonJobCollectionPageReqVO reqVO) {
-        return selectPage(reqVO, new LambdaQueryWrapperX<PersonJobCollectionDO>()
-                .eqIfPresent(PersonJobCollectionDO::getUserId, reqVO.getUserId())
-                .eqIfPresent(PersonJobCollectionDO::getJobId, reqVO.getJobId())
-                .betweenIfPresent(PersonJobCollectionDO::getCreateTime, reqVO.getCreateTime())
-                .orderByDesc(PersonJobCollectionDO::getId));
-    }
-
-}

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

@@ -0,0 +1,31 @@
+package com.citu.module.menduner.system.dal.mysql.person;
+
+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.person.vo.favorite.PersonJobFavoritePageReqVO;
+import com.citu.module.menduner.system.dal.dataobject.person.PersonJobFavoriteDO;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 门墩儿-人才-招聘职位收藏 Mapper
+ *
+ * @author Rayson
+ */
+@Mapper
+public interface PersonJobFavoriteMapper extends BaseMapperX<PersonJobFavoriteDO> {
+
+    default PageResult<PersonJobFavoriteDO> selectPage(PersonJobFavoritePageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<PersonJobFavoriteDO>()
+                .eqIfPresent(PersonJobFavoriteDO::getUserId, reqVO.getUserId())
+                .eqIfPresent(PersonJobFavoriteDO::getJobId, reqVO.getJobId())
+                .betweenIfPresent(PersonJobFavoriteDO::getCreateTime, reqVO.getCreateTime())
+                .orderByDesc(PersonJobFavoriteDO::getId));
+    }
+
+    default PersonJobFavoriteDO selectByUserIdAndJobId(Long userId, Long jobId) {
+        return selectOne(new LambdaQueryWrapperX<PersonJobFavoriteDO>()
+                .eq(PersonJobFavoriteDO::getUserId, userId)
+                .eq(PersonJobFavoriteDO::getJobId, jobId));
+    }
+}

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

@@ -185,7 +185,6 @@ public class EnterpriseServiceImpl implements EnterpriseService {
         respVO.setAddressList(addressList);
 
         respVO.setJobAdvertisedCount(67);
-        respVO.setAttention(false);
         return respVO;
     }
 }

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

@@ -115,4 +115,10 @@ public interface JobAdvertisedService {
      * @return 公共 Response
      **/
     List<AppCommonRespVO> getJobPositionCountByEnterpriseId(Long enterpriseId);
+
+    /**
+     * 根据企业id获取企业职位区域
+     * @return 公共 Response
+     **/
+    List<AppCommonRespVO> getJobAreaCountByEnterpriseId(Long enterpriseId);
 }

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

@@ -505,4 +505,16 @@ public class JobAdvertisedServiceImpl implements JobAdvertisedService {
         }
         return list;
     }
+
+    @Override
+    public List<AppCommonRespVO> getJobAreaCountByEnterpriseId(Long enterpriseId) {
+        List<AppCommonRespVO> list =new ArrayList<>();
+        for (int i = 1; i < 5; i++) {
+            AppCommonRespVO respVO =new AppCommonRespVO();
+            respVO.setKey(""+i);
+            respVO.setValue(""+i);
+            list.add(respVO);
+        }
+        return list;
+    }
 }

+ 0 - 55
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/person/attention/PersonEnterpriseAttentionService.java

@@ -1,55 +0,0 @@
-package com.citu.module.menduner.system.service.person.attention;
-
-import com.citu.framework.common.pojo.PageResult;
-import com.citu.module.menduner.system.controller.admin.person.vo.attention.PersonEnterpriseAttentionPageReqVO;
-import com.citu.module.menduner.system.controller.admin.person.vo.attention.PersonEnterpriseAttentionSaveReqVO;
-import com.citu.module.menduner.system.dal.dataobject.person.PersonEnterpriseAttentionDO;
-
-import javax.validation.Valid;
-
-/**
- * 门墩儿-人才-企业关注 Service 接口
- *
- * @author Rayson
- */
-public interface PersonEnterpriseAttentionService {
-
-    /**
-     * 创建门墩儿-人才-企业关注
-     *
-     * @param createReqVO 创建信息
-     * @return 编号
-     */
-    Long createPersonEnterpriseAttention(@Valid PersonEnterpriseAttentionSaveReqVO createReqVO);
-
-    /**
-     * 更新门墩儿-人才-企业关注
-     *
-     * @param updateReqVO 更新信息
-     */
-    void updatePersonEnterpriseAttention(@Valid PersonEnterpriseAttentionSaveReqVO updateReqVO);
-
-    /**
-     * 删除门墩儿-人才-企业关注
-     *
-     * @param id 编号
-     */
-    void deletePersonEnterpriseAttention(Long id);
-
-    /**
-     * 获得门墩儿-人才-企业关注
-     *
-     * @param id 编号
-     * @return 门墩儿-人才-企业关注
-     */
-    PersonEnterpriseAttentionDO getPersonEnterpriseAttention(Long id);
-
-    /**
-     * 获得门墩儿-人才-企业关注分页
-     *
-     * @param pageReqVO 分页查询
-     * @return 门墩儿-人才-企业关注分页
-     */
-    PageResult<PersonEnterpriseAttentionDO> getPersonEnterpriseAttentionPage(PersonEnterpriseAttentionPageReqVO pageReqVO);
-
-}

+ 0 - 71
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/person/attention/PersonEnterpriseAttentionServiceImpl.java

@@ -1,71 +0,0 @@
-package com.citu.module.menduner.system.service.person.attention;
-
-import com.citu.framework.common.pojo.PageResult;
-import com.citu.framework.common.util.object.BeanUtils;
-import com.citu.module.menduner.system.controller.admin.person.vo.attention.PersonEnterpriseAttentionPageReqVO;
-import com.citu.module.menduner.system.controller.admin.person.vo.attention.PersonEnterpriseAttentionSaveReqVO;
-import com.citu.module.menduner.system.dal.dataobject.person.PersonEnterpriseAttentionDO;
-import com.citu.module.menduner.system.dal.mysql.person.PersonEnterpriseAttentionMapper;
-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.PERSON_ENTERPRISE_ATTENTION_NOT_EXISTS;
-
-/**
- * 门墩儿-人才-企业关注 Service 实现类
- *
- * @author Rayson
- */
-@Service
-@Validated
-public class PersonEnterpriseAttentionServiceImpl implements PersonEnterpriseAttentionService {
-
-    @Resource
-    private PersonEnterpriseAttentionMapper personEnterpriseAttentionMapper;
-
-    @Override
-    public Long createPersonEnterpriseAttention(PersonEnterpriseAttentionSaveReqVO createReqVO) {
-        // 插入
-        PersonEnterpriseAttentionDO personEnterpriseAttention = BeanUtils.toBean(createReqVO, PersonEnterpriseAttentionDO.class);
-        personEnterpriseAttentionMapper.insert(personEnterpriseAttention);
-        // 返回
-        return personEnterpriseAttention.getId();
-    }
-
-    @Override
-    public void updatePersonEnterpriseAttention(PersonEnterpriseAttentionSaveReqVO updateReqVO) {
-        // 校验存在
-        validatePersonEnterpriseAttentionExists(updateReqVO.getId());
-        // 更新
-        PersonEnterpriseAttentionDO updateObj = BeanUtils.toBean(updateReqVO, PersonEnterpriseAttentionDO.class);
-        personEnterpriseAttentionMapper.updateById(updateObj);
-    }
-
-    @Override
-    public void deletePersonEnterpriseAttention(Long id) {
-        // 校验存在
-        validatePersonEnterpriseAttentionExists(id);
-        // 删除
-        personEnterpriseAttentionMapper.deleteById(id);
-    }
-
-    private void validatePersonEnterpriseAttentionExists(Long id) {
-        if (personEnterpriseAttentionMapper.selectById(id) == null) {
-            throw exception(PERSON_ENTERPRISE_ATTENTION_NOT_EXISTS);
-        }
-    }
-
-    @Override
-    public PersonEnterpriseAttentionDO getPersonEnterpriseAttention(Long id) {
-        return personEnterpriseAttentionMapper.selectById(id);
-    }
-
-    @Override
-    public PageResult<PersonEnterpriseAttentionDO> getPersonEnterpriseAttentionPage(PersonEnterpriseAttentionPageReqVO pageReqVO) {
-        return personEnterpriseAttentionMapper.selectPage(pageReqVO);
-    }
-
-}

+ 0 - 71
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/person/collection/PersonJobCollectionServiceImpl.java

@@ -1,71 +0,0 @@
-package com.citu.module.menduner.system.service.person.collection;
-
-import com.citu.framework.common.pojo.PageResult;
-import com.citu.framework.common.util.object.BeanUtils;
-import com.citu.module.menduner.system.controller.admin.person.vo.collection.PersonJobCollectionPageReqVO;
-import com.citu.module.menduner.system.controller.admin.person.vo.collection.PersonJobCollectionSaveReqVO;
-import com.citu.module.menduner.system.dal.dataobject.person.PersonJobCollectionDO;
-import com.citu.module.menduner.system.dal.mysql.person.PersonJobCollectionMapper;
-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.PERSON_JOB_COLLECTION_NOT_EXISTS;
-
-/**
- * 门墩儿-人才-招聘职位收藏 Service 实现类
- *
- * @author Rayson
- */
-@Service
-@Validated
-public class PersonJobCollectionServiceImpl implements PersonJobCollectionService {
-
-    @Resource
-    private PersonJobCollectionMapper personJobCollectionMapper;
-
-    @Override
-    public Long createPersonJobCollection(PersonJobCollectionSaveReqVO createReqVO) {
-        // 插入
-        PersonJobCollectionDO personJobCollection = BeanUtils.toBean(createReqVO, PersonJobCollectionDO.class);
-        personJobCollectionMapper.insert(personJobCollection);
-        // 返回
-        return personJobCollection.getId();
-    }
-
-    @Override
-    public void updatePersonJobCollection(PersonJobCollectionSaveReqVO updateReqVO) {
-        // 校验存在
-        validatePersonJobCollectionExists(updateReqVO.getId());
-        // 更新
-        PersonJobCollectionDO updateObj = BeanUtils.toBean(updateReqVO, PersonJobCollectionDO.class);
-        personJobCollectionMapper.updateById(updateObj);
-    }
-
-    @Override
-    public void deletePersonJobCollection(Long id) {
-        // 校验存在
-        validatePersonJobCollectionExists(id);
-        // 删除
-        personJobCollectionMapper.deleteById(id);
-    }
-
-    private void validatePersonJobCollectionExists(Long id) {
-        if (personJobCollectionMapper.selectById(id) == null) {
-            throw exception(PERSON_JOB_COLLECTION_NOT_EXISTS);
-        }
-    }
-
-    @Override
-    public PersonJobCollectionDO getPersonJobCollection(Long id) {
-        return personJobCollectionMapper.selectById(id);
-    }
-
-    @Override
-    public PageResult<PersonJobCollectionDO> getPersonJobCollectionPage(PersonJobCollectionPageReqVO pageReqVO) {
-        return personJobCollectionMapper.selectPage(pageReqVO);
-    }
-
-}

+ 32 - 10
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/person/collection/PersonJobCollectionService.java → menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/person/favorite/PersonJobFavoriteService.java

@@ -1,9 +1,9 @@
-package com.citu.module.menduner.system.service.person.collection;
+package com.citu.module.menduner.system.service.person.favorite;
 
 import com.citu.framework.common.pojo.PageResult;
-import com.citu.module.menduner.system.controller.admin.person.vo.collection.PersonJobCollectionPageReqVO;
-import com.citu.module.menduner.system.controller.admin.person.vo.collection.PersonJobCollectionSaveReqVO;
-import com.citu.module.menduner.system.dal.dataobject.person.PersonJobCollectionDO;
+import com.citu.module.menduner.system.controller.admin.person.vo.favorite.PersonJobFavoritePageReqVO;
+import com.citu.module.menduner.system.controller.admin.person.vo.favorite.PersonJobFavoriteSaveReqVO;
+import com.citu.module.menduner.system.dal.dataobject.person.PersonJobFavoriteDO;
 
 import javax.validation.Valid;
 
@@ -12,7 +12,7 @@ import javax.validation.Valid;
  *
  * @author Rayson
  */
-public interface PersonJobCollectionService {
+public interface PersonJobFavoriteService {
 
     /**
      * 创建门墩儿-人才-招聘职位收藏
@@ -20,21 +20,21 @@ public interface PersonJobCollectionService {
      * @param createReqVO 创建信息
      * @return 编号
      */
-    Long createPersonJobCollection(@Valid PersonJobCollectionSaveReqVO createReqVO);
+    Long createPersonJobFavorite(@Valid PersonJobFavoriteSaveReqVO createReqVO);
 
     /**
      * 更新门墩儿-人才-招聘职位收藏
      *
      * @param updateReqVO 更新信息
      */
-    void updatePersonJobCollection(@Valid PersonJobCollectionSaveReqVO updateReqVO);
+    void updatePersonJobFavorite(@Valid PersonJobFavoriteSaveReqVO updateReqVO);
 
     /**
      * 删除门墩儿-人才-招聘职位收藏
      *
      * @param id 编号
      */
-    void deletePersonJobCollection(Long id);
+    void deletePersonJobFavorite(Long id);
 
     /**
      * 获得门墩儿-人才-招聘职位收藏
@@ -42,7 +42,7 @@ public interface PersonJobCollectionService {
      * @param id 编号
      * @return 门墩儿-人才-招聘职位收藏
      */
-    PersonJobCollectionDO getPersonJobCollection(Long id);
+    PersonJobFavoriteDO getPersonJobFavorite(Long id);
 
     /**
      * 获得门墩儿-人才-招聘职位收藏分页
@@ -50,6 +50,28 @@ public interface PersonJobCollectionService {
      * @param pageReqVO 分页查询
      * @return 门墩儿-人才-招聘职位收藏分页
      */
-    PageResult<PersonJobCollectionDO> getPersonJobCollectionPage(PersonJobCollectionPageReqVO pageReqVO);
+    PageResult<PersonJobFavoriteDO> getPersonJobFavoritePage(PersonJobFavoritePageReqVO pageReqVO);
+
+    /**
+     * 效验是否收藏该职位
+     *
+     * @param jobId 招聘发布职位id
+     * @return true 收藏 | false 未收藏
+     */
+    Boolean isFavorite(Long jobId);
+
+    /**
+     * 获取用户收藏职位数量
+     *
+     * @return 收藏职位数量
+     */
+    Long countByUserId();
+
+    /**
+     * 用户收藏职位
+     *
+     * @return 成功|失败
+     */
+    Boolean favorite(Long jobId);
 
 }

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

@@ -0,0 +1,114 @@
+package com.citu.module.menduner.system.service.person.favorite;
+
+import com.citu.framework.common.pojo.PageResult;
+import com.citu.framework.common.util.object.BeanUtils;
+import com.citu.module.menduner.system.controller.admin.person.vo.favorite.PersonJobFavoritePageReqVO;
+import com.citu.module.menduner.system.controller.admin.person.vo.favorite.PersonJobFavoriteSaveReqVO;
+import com.citu.module.menduner.system.dal.dataobject.person.PersonJobFavoriteDO;
+import com.citu.module.menduner.system.dal.mysql.person.PersonJobFavoriteMapper;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.validation.annotation.Validated;
+
+import javax.annotation.Resource;
+
+import static com.citu.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static com.citu.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
+import static com.citu.module.menduner.system.enums.ErrorCodeConstants.PERSON_JOB_COLLECTION_EXISTS;
+import static com.citu.module.menduner.system.enums.ErrorCodeConstants.PERSON_JOB_COLLECTION_NOT_EXISTS;
+
+/**
+ * 门墩儿-人才-招聘职位收藏 Service 实现类
+ *
+ * @author Rayson
+ */
+@Service
+@Validated
+public class PersonJobFavoriteServiceImpl implements PersonJobFavoriteService {
+
+    @Resource
+    private PersonJobFavoriteMapper personJobFavoriteMapper;
+
+    @Override
+    public Long createPersonJobFavorite(PersonJobFavoriteSaveReqVO createReqVO) {
+        // 插入
+        PersonJobFavoriteDO personJobFavorite = BeanUtils.toBean(createReqVO, PersonJobFavoriteDO.class);
+        personJobFavoriteMapper.insert(personJobFavorite);
+        // 返回
+        return personJobFavorite.getId();
+    }
+
+    @Override
+    public void updatePersonJobFavorite(PersonJobFavoriteSaveReqVO updateReqVO) {
+        // 校验存在
+        validatePersonJobFavoriteExists(updateReqVO.getId());
+        // 更新
+        PersonJobFavoriteDO updateObj = BeanUtils.toBean(updateReqVO, PersonJobFavoriteDO.class);
+        personJobFavoriteMapper.updateById(updateObj);
+    }
+
+    @Override
+    public void deletePersonJobFavorite(Long id) {
+        // 校验存在
+        validatePersonJobFavoriteExists(id);
+        // 删除
+        personJobFavoriteMapper.deleteById(id);
+    }
+
+    private void validatePersonJobFavoriteExists(Long id) {
+        if (personJobFavoriteMapper.selectById(id) == null) {
+            throw exception(PERSON_JOB_COLLECTION_NOT_EXISTS);
+        }
+    }
+
+    @Override
+    public PersonJobFavoriteDO getPersonJobFavorite(Long id) {
+        return personJobFavoriteMapper.selectById(id);
+    }
+
+    @Override
+    public PageResult<PersonJobFavoriteDO> getPersonJobFavoritePage(PersonJobFavoritePageReqVO pageReqVO) {
+        return personJobFavoriteMapper.selectPage(pageReqVO);
+    }
+
+
+    @Override
+    public Boolean isFavorite(Long jobId) {
+        Long userId = getLoginUserId();
+        if (null == userId) {
+            // 未登录
+            return false;
+        }
+        return null != personJobFavoriteMapper.selectByUserIdAndJobId(userId, jobId);
+    }
+
+    @Override
+    public Long countByUserId() {
+        return personJobFavoriteMapper.selectCount(PersonJobFavoriteDO::getUserId, getLoginUserId());
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean favorite(Long jobId) {
+        Long userId = getLoginUserId();
+        if (null == userId) {
+            // 未登录
+            return false;
+        }
+        check(userId, jobId);
+
+        return personJobFavoriteMapper.insert(
+                PersonJobFavoriteDO.builder()
+                        .jobId(jobId)
+                        .userId(userId)
+                        .build()
+        ) == 1;
+    }
+
+    void check(Long userId, Long jobId) {
+        // 判断是否收藏
+        if (null != personJobFavoriteMapper.selectByUserIdAndJobId(userId, jobId)) {
+            throw exception(PERSON_JOB_COLLECTION_EXISTS);
+        }
+    }
+}

+ 76 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/person/subscribe/PersonEnterpriseSubscribeService.java

@@ -0,0 +1,76 @@
+package com.citu.module.menduner.system.service.person.subscribe;
+
+import com.citu.framework.common.pojo.PageResult;
+import com.citu.module.menduner.system.controller.admin.person.vo.subscribe.PersonEnterpriseSubscribePageReqVO;
+import com.citu.module.menduner.system.controller.admin.person.vo.subscribe.PersonEnterpriseSubscribeSaveReqVO;
+import com.citu.module.menduner.system.dal.dataobject.person.PersonEnterpriseSubscribeDO;
+
+import javax.validation.Valid;
+
+/**
+ * 门墩儿-人才-企业关注订阅 Service 接口
+ *
+ * @author Rayson
+ */
+public interface PersonEnterpriseSubscribeService {
+
+    /**
+     * 创建门墩儿-人才-企业关注订阅
+     *
+     * @param createReqVO 创建信息
+     * @return 编号
+     */
+    Long createPersonEnterpriseSubscribe(@Valid PersonEnterpriseSubscribeSaveReqVO createReqVO);
+
+    /**
+     * 更新门墩儿-人才-企业关注订阅
+     *
+     * @param updateReqVO 更新信息
+     */
+    void updatePersonEnterpriseSubscribe(@Valid PersonEnterpriseSubscribeSaveReqVO updateReqVO);
+
+    /**
+     * 删除门墩儿-人才-企业关注订阅
+     *
+     * @param id 编号
+     */
+    void deletePersonEnterpriseSubscribe(Long id);
+
+    /**
+     * 获得门墩儿-人才-企业关注订阅
+     *
+     * @param id 编号
+     * @return 门墩儿-人才-企业关注订阅
+     */
+    PersonEnterpriseSubscribeDO getPersonEnterpriseSubscribe(Long id);
+
+    /**
+     * 获得门墩儿-人才-企业关注订阅分页
+     *
+     * @param pageReqVO 分页查询
+     * @return 门墩儿-人才-企业关注订阅分页
+     */
+    PageResult<PersonEnterpriseSubscribeDO> getPersonEnterpriseSubscribePage(PersonEnterpriseSubscribePageReqVO pageReqVO);
+
+    /**
+     * 效验是否关注该企业
+     *
+     * @param enterpriseId 企业id
+     * @return true 关注 | false 未关注
+     */
+    Boolean isSubscribe(Long enterpriseId);
+
+    /**
+     * 获取用户订阅的企业数量
+     *
+     * @return 收藏职位数量
+     */
+    Long countByUserId();
+
+    /**
+     * 用户订阅企业
+     *
+     * @return 成功|失败
+     */
+    Boolean subscribe(Long enterpriseId);
+}

+ 113 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/person/subscribe/PersonEnterpriseSubscribeServiceImpl.java

@@ -0,0 +1,113 @@
+package com.citu.module.menduner.system.service.person.subscribe;
+
+import com.citu.framework.common.pojo.PageResult;
+import com.citu.framework.common.util.object.BeanUtils;
+import com.citu.module.menduner.system.controller.admin.person.vo.subscribe.PersonEnterpriseSubscribePageReqVO;
+import com.citu.module.menduner.system.controller.admin.person.vo.subscribe.PersonEnterpriseSubscribeSaveReqVO;
+import com.citu.module.menduner.system.dal.dataobject.person.PersonEnterpriseSubscribeDO;
+import com.citu.module.menduner.system.dal.dataobject.person.PersonJobFavoriteDO;
+import com.citu.module.menduner.system.dal.mysql.person.PersonEnterpriseSubscribeMapper;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.validation.annotation.Validated;
+
+import javax.annotation.Resource;
+
+import static com.citu.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static com.citu.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
+import static com.citu.module.menduner.system.enums.ErrorCodeConstants.*;
+
+/**
+ * 门墩儿-人才-企业关注订阅 Service 实现类
+ *
+ * @author Rayson
+ */
+@Service
+@Validated
+public class PersonEnterpriseSubscribeServiceImpl implements PersonEnterpriseSubscribeService {
+
+    @Resource
+    private PersonEnterpriseSubscribeMapper personEnterpriseSubscribeMapper;
+
+    @Override
+    public Long createPersonEnterpriseSubscribe(PersonEnterpriseSubscribeSaveReqVO createReqVO) {
+        // 插入
+        PersonEnterpriseSubscribeDO personEnterpriseSubscribe = BeanUtils.toBean(createReqVO, PersonEnterpriseSubscribeDO.class);
+        personEnterpriseSubscribeMapper.insert(personEnterpriseSubscribe);
+        // 返回
+        return personEnterpriseSubscribe.getId();
+    }
+
+    @Override
+    public void updatePersonEnterpriseSubscribe(PersonEnterpriseSubscribeSaveReqVO updateReqVO) {
+        // 校验存在
+        validatePersonEnterpriseSubscribeExists(updateReqVO.getId());
+        // 更新
+        PersonEnterpriseSubscribeDO updateObj = BeanUtils.toBean(updateReqVO, PersonEnterpriseSubscribeDO.class);
+        personEnterpriseSubscribeMapper.updateById(updateObj);
+    }
+
+    @Override
+    public void deletePersonEnterpriseSubscribe(Long id) {
+        // 校验存在
+        validatePersonEnterpriseSubscribeExists(id);
+        // 删除
+        personEnterpriseSubscribeMapper.deleteById(id);
+    }
+
+    private void validatePersonEnterpriseSubscribeExists(Long id) {
+        if (personEnterpriseSubscribeMapper.selectById(id) == null) {
+            throw exception(PERSON_ENTERPRISE_ATTENTION_NOT_EXISTS);
+        }
+    }
+
+    @Override
+    public PersonEnterpriseSubscribeDO getPersonEnterpriseSubscribe(Long id) {
+        return personEnterpriseSubscribeMapper.selectById(id);
+    }
+
+    @Override
+    public PageResult<PersonEnterpriseSubscribeDO> getPersonEnterpriseSubscribePage(PersonEnterpriseSubscribePageReqVO pageReqVO) {
+        return personEnterpriseSubscribeMapper.selectPage(pageReqVO);
+    }
+
+    @Override
+    public Boolean isSubscribe(Long enterpriseId) {
+        Long userId = getLoginUserId();
+        if(null == userId) {
+            // 未登录
+            return false;
+        }
+        return null != personEnterpriseSubscribeMapper.selectByUserIdAndEnterpriseId(userId,enterpriseId);
+    }
+
+    @Override
+    public Long countByUserId() {
+        return personEnterpriseSubscribeMapper.selectCount(PersonEnterpriseSubscribeDO::getUserId, getLoginUserId());
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean subscribe(Long enterpriseId) {
+        Long userId = getLoginUserId();
+        if (null == userId) {
+            // 未登录
+            return false;
+        }
+        check(userId, enterpriseId);
+
+        return personEnterpriseSubscribeMapper.insert(
+                PersonEnterpriseSubscribeDO.builder()
+                        .enterpriseId(enterpriseId)
+                        .userId(userId)
+                        .build()
+        ) == 1;
+    }
+
+    void check(Long userId, Long enterpriseId) {
+        // 判断是否关注订阅
+        if (null != personEnterpriseSubscribeMapper.selectByUserIdAndEnterpriseId(userId, enterpriseId)) {
+            throw exception(PERSON_ENTERPRISE_ATTENTION_EXISTS);
+        }
+    }
+}

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

@@ -34,7 +34,7 @@ import java.util.stream.Stream;
 
 import static com.citu.framework.common.exception.util.ServiceExceptionUtil.exception;
 import static com.citu.framework.common.util.collection.CollectionUtils.convertSet;
-import static com.citu.framework.web.core.util.WebFrameworkUtils.getLoginUserId;
+import static com.citu.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
 import static com.citu.module.menduner.system.enums.ErrorCodeConstants.MDE_POSITION_NOT_EXISTS;
 
 /**

+ 0 - 132
menduner/menduner-system-biz/src/test/java/com/citu/module/menduner/system/service/person/PersonEnterpriseAttentionServiceImplTest.java

@@ -1,132 +0,0 @@
-package com.citu.module.menduner.system.service.person;
-
-import com.citu.framework.common.pojo.PageResult;
-import com.citu.framework.test.core.ut.BaseDbUnitTest;
-import com.citu.module.menduner.system.controller.admin.person.vo.attention.PersonEnterpriseAttentionPageReqVO;
-import com.citu.module.menduner.system.controller.admin.person.vo.attention.PersonEnterpriseAttentionSaveReqVO;
-import com.citu.module.menduner.system.dal.dataobject.person.PersonEnterpriseAttentionDO;
-import com.citu.module.menduner.system.dal.mysql.person.PersonEnterpriseAttentionMapper;
-import com.citu.module.menduner.system.service.person.attention.PersonEnterpriseAttentionServiceImpl;
-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.PERSON_ENTERPRISE_ATTENTION_NOT_EXISTS;
-import static org.junit.jupiter.api.Assertions.*;
-
-/**
- * {@link PersonEnterpriseAttentionServiceImpl} 的单元测试类
- *
- * @author Rayson
- */
-@Import(PersonEnterpriseAttentionServiceImpl.class)
-public class PersonEnterpriseAttentionServiceImplTest extends BaseDbUnitTest {
-
-    @Resource
-    private PersonEnterpriseAttentionServiceImpl personEnterpriseAttentionService;
-
-    @Resource
-    private PersonEnterpriseAttentionMapper personEnterpriseAttentionMapper;
-
-    @Test
-    public void testCreatePersonEnterpriseAttention_success() {
-        // 准备参数
-        PersonEnterpriseAttentionSaveReqVO createReqVO = randomPojo(PersonEnterpriseAttentionSaveReqVO.class).setId(null);
-
-        // 调用
-        Long personEnterpriseAttentionId = personEnterpriseAttentionService.createPersonEnterpriseAttention(createReqVO);
-        // 断言
-        assertNotNull(personEnterpriseAttentionId);
-        // 校验记录的属性是否正确
-        PersonEnterpriseAttentionDO personEnterpriseAttention = personEnterpriseAttentionMapper.selectById(personEnterpriseAttentionId);
-        assertPojoEquals(createReqVO, personEnterpriseAttention, "id");
-    }
-
-    @Test
-    public void testUpdatePersonEnterpriseAttention_success() {
-        // mock 数据
-        PersonEnterpriseAttentionDO dbPersonEnterpriseAttention = randomPojo(PersonEnterpriseAttentionDO.class);
-        personEnterpriseAttentionMapper.insert(dbPersonEnterpriseAttention);// @Sql: 先插入出一条存在的数据
-        // 准备参数
-        PersonEnterpriseAttentionSaveReqVO updateReqVO = randomPojo(PersonEnterpriseAttentionSaveReqVO.class, o -> {
-            o.setId(dbPersonEnterpriseAttention.getId()); // 设置更新的 ID
-        });
-
-        // 调用
-        personEnterpriseAttentionService.updatePersonEnterpriseAttention(updateReqVO);
-        // 校验是否更新正确
-        PersonEnterpriseAttentionDO personEnterpriseAttention = personEnterpriseAttentionMapper.selectById(updateReqVO.getId()); // 获取最新的
-        assertPojoEquals(updateReqVO, personEnterpriseAttention);
-    }
-
-    @Test
-    public void testUpdatePersonEnterpriseAttention_notExists() {
-        // 准备参数
-        PersonEnterpriseAttentionSaveReqVO updateReqVO = randomPojo(PersonEnterpriseAttentionSaveReqVO.class);
-
-        // 调用, 并断言异常
-        assertServiceException(() -> personEnterpriseAttentionService.updatePersonEnterpriseAttention(updateReqVO), PERSON_ENTERPRISE_ATTENTION_NOT_EXISTS);
-    }
-
-    @Test
-    public void testDeletePersonEnterpriseAttention_success() {
-        // mock 数据
-        PersonEnterpriseAttentionDO dbPersonEnterpriseAttention = randomPojo(PersonEnterpriseAttentionDO.class);
-        personEnterpriseAttentionMapper.insert(dbPersonEnterpriseAttention);// @Sql: 先插入出一条存在的数据
-        // 准备参数
-        Long id = dbPersonEnterpriseAttention.getId();
-
-        // 调用
-        personEnterpriseAttentionService.deletePersonEnterpriseAttention(id);
-        // 校验数据不存在了
-        assertNull(personEnterpriseAttentionMapper.selectById(id));
-    }
-
-    @Test
-    public void testDeletePersonEnterpriseAttention_notExists() {
-        // 准备参数
-        Long id = randomLongId();
-
-        // 调用, 并断言异常
-        assertServiceException(() -> personEnterpriseAttentionService.deletePersonEnterpriseAttention(id), PERSON_ENTERPRISE_ATTENTION_NOT_EXISTS);
-    }
-
-    @Test
-    @Disabled  // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解
-    public void testGetPersonEnterpriseAttentionPage() {
-        // mock 数据
-        PersonEnterpriseAttentionDO dbPersonEnterpriseAttention = randomPojo(PersonEnterpriseAttentionDO.class, o -> { // 等会查询到
-            o.setUserId(null);
-            o.setEnterpriseId(null);
-            o.setCreateTime(null);
-        });
-        personEnterpriseAttentionMapper.insert(dbPersonEnterpriseAttention);
-        // 测试 userId 不匹配
-        personEnterpriseAttentionMapper.insert(cloneIgnoreId(dbPersonEnterpriseAttention, o -> o.setUserId(null)));
-        // 测试 enterpriseId 不匹配
-        personEnterpriseAttentionMapper.insert(cloneIgnoreId(dbPersonEnterpriseAttention, o -> o.setEnterpriseId(null)));
-        // 测试 createTime 不匹配
-        personEnterpriseAttentionMapper.insert(cloneIgnoreId(dbPersonEnterpriseAttention, o -> o.setCreateTime(null)));
-        // 准备参数
-        PersonEnterpriseAttentionPageReqVO reqVO = new PersonEnterpriseAttentionPageReqVO();
-        reqVO.setUserId(null);
-        reqVO.setEnterpriseId(null);
-        reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
-
-        // 调用
-        PageResult<PersonEnterpriseAttentionDO> pageResult = personEnterpriseAttentionService.getPersonEnterpriseAttentionPage(reqVO);
-        // 断言
-        assertEquals(1, pageResult.getTotal());
-        assertEquals(1, pageResult.getList().size());
-        assertPojoEquals(dbPersonEnterpriseAttention, pageResult.getList().get(0));
-    }
-
-}

+ 132 - 0
menduner/menduner-system-biz/src/test/java/com/citu/module/menduner/system/service/person/PersonEnterpriseSubscribeServiceImplTest.java

@@ -0,0 +1,132 @@
+package com.citu.module.menduner.system.service.person;
+
+import com.citu.framework.common.pojo.PageResult;
+import com.citu.framework.test.core.ut.BaseDbUnitTest;
+import com.citu.module.menduner.system.controller.admin.person.vo.subscribe.PersonEnterpriseSubscribePageReqVO;
+import com.citu.module.menduner.system.controller.admin.person.vo.subscribe.PersonEnterpriseSubscribeSaveReqVO;
+import com.citu.module.menduner.system.dal.dataobject.person.PersonEnterpriseSubscribeDO;
+import com.citu.module.menduner.system.dal.mysql.person.PersonEnterpriseSubscribeMapper;
+import com.citu.module.menduner.system.service.person.subscribe.PersonEnterpriseSubscribeServiceImpl;
+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.PERSON_ENTERPRISE_ATTENTION_NOT_EXISTS;
+import static org.junit.jupiter.api.Assertions.*;
+
+/**
+ * {@link PersonEnterpriseSubscribeServiceImpl} 的单元测试类
+ *
+ * @author Rayson
+ */
+@Import(PersonEnterpriseSubscribeServiceImpl.class)
+public class PersonEnterpriseSubscribeServiceImplTest extends BaseDbUnitTest {
+
+    @Resource
+    private PersonEnterpriseSubscribeServiceImpl personEnterpriseSubscribeService;
+
+    @Resource
+    private PersonEnterpriseSubscribeMapper personEnterpriseSubscribeMapper;
+
+    @Test
+    public void testCreatePersonEnterpriseSubscribe_success() {
+        // 准备参数
+        PersonEnterpriseSubscribeSaveReqVO createReqVO = randomPojo(PersonEnterpriseSubscribeSaveReqVO.class).setId(null);
+
+        // 调用
+        Long personEnterpriseSubscribeId = personEnterpriseSubscribeService.createPersonEnterpriseSubscribe(createReqVO);
+        // 断言
+        assertNotNull(personEnterpriseSubscribeId);
+        // 校验记录的属性是否正确
+        PersonEnterpriseSubscribeDO personEnterpriseSubscribe = personEnterpriseSubscribeMapper.selectById(personEnterpriseSubscribeId);
+        assertPojoEquals(createReqVO, personEnterpriseSubscribe, "id");
+    }
+
+    @Test
+    public void testUpdatePersonEnterpriseSubscribe_success() {
+        // mock 数据
+        PersonEnterpriseSubscribeDO dbPersonEnterpriseSubscribe = randomPojo(PersonEnterpriseSubscribeDO.class);
+        personEnterpriseSubscribeMapper.insert(dbPersonEnterpriseSubscribe);// @Sql: 先插入出一条存在的数据
+        // 准备参数
+        PersonEnterpriseSubscribeSaveReqVO updateReqVO = randomPojo(PersonEnterpriseSubscribeSaveReqVO.class, o -> {
+            o.setId(dbPersonEnterpriseSubscribe.getId()); // 设置更新的 ID
+        });
+
+        // 调用
+        personEnterpriseSubscribeService.updatePersonEnterpriseSubscribe(updateReqVO);
+        // 校验是否更新正确
+        PersonEnterpriseSubscribeDO personEnterpriseSubscribe = personEnterpriseSubscribeMapper.selectById(updateReqVO.getId()); // 获取最新的
+        assertPojoEquals(updateReqVO, personEnterpriseSubscribe);
+    }
+
+    @Test
+    public void testUpdatePersonEnterpriseSubscribe_notExists() {
+        // 准备参数
+        PersonEnterpriseSubscribeSaveReqVO updateReqVO = randomPojo(PersonEnterpriseSubscribeSaveReqVO.class);
+
+        // 调用, 并断言异常
+        assertServiceException(() -> personEnterpriseSubscribeService.updatePersonEnterpriseSubscribe(updateReqVO), PERSON_ENTERPRISE_ATTENTION_NOT_EXISTS);
+    }
+
+    @Test
+    public void testDeletePersonEnterpriseSubscribe_success() {
+        // mock 数据
+        PersonEnterpriseSubscribeDO dbPersonEnterpriseSubscribe = randomPojo(PersonEnterpriseSubscribeDO.class);
+        personEnterpriseSubscribeMapper.insert(dbPersonEnterpriseSubscribe);// @Sql: 先插入出一条存在的数据
+        // 准备参数
+        Long id = dbPersonEnterpriseSubscribe.getId();
+
+        // 调用
+        personEnterpriseSubscribeService.deletePersonEnterpriseSubscribe(id);
+        // 校验数据不存在了
+        assertNull(personEnterpriseSubscribeMapper.selectById(id));
+    }
+
+    @Test
+    public void testDeletePersonEnterpriseSubscribe_notExists() {
+        // 准备参数
+        Long id = randomLongId();
+
+        // 调用, 并断言异常
+        assertServiceException(() -> personEnterpriseSubscribeService.deletePersonEnterpriseSubscribe(id), PERSON_ENTERPRISE_ATTENTION_NOT_EXISTS);
+    }
+
+    @Test
+    @Disabled  // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解
+    public void testGetPersonEnterpriseSubscribePage() {
+        // mock 数据
+        PersonEnterpriseSubscribeDO dbPersonEnterpriseSubscribe = randomPojo(PersonEnterpriseSubscribeDO.class, o -> { // 等会查询到
+            o.setUserId(null);
+            o.setEnterpriseId(null);
+            o.setCreateTime(null);
+        });
+        personEnterpriseSubscribeMapper.insert(dbPersonEnterpriseSubscribe);
+        // 测试 userId 不匹配
+        personEnterpriseSubscribeMapper.insert(cloneIgnoreId(dbPersonEnterpriseSubscribe, o -> o.setUserId(null)));
+        // 测试 enterpriseId 不匹配
+        personEnterpriseSubscribeMapper.insert(cloneIgnoreId(dbPersonEnterpriseSubscribe, o -> o.setEnterpriseId(null)));
+        // 测试 createTime 不匹配
+        personEnterpriseSubscribeMapper.insert(cloneIgnoreId(dbPersonEnterpriseSubscribe, o -> o.setCreateTime(null)));
+        // 准备参数
+        PersonEnterpriseSubscribePageReqVO reqVO = new PersonEnterpriseSubscribePageReqVO();
+        reqVO.setUserId(null);
+        reqVO.setEnterpriseId(null);
+        reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
+
+        // 调用
+        PageResult<PersonEnterpriseSubscribeDO> pageResult = personEnterpriseSubscribeService.getPersonEnterpriseSubscribePage(reqVO);
+        // 断言
+        assertEquals(1, pageResult.getTotal());
+        assertEquals(1, pageResult.getList().size());
+        assertPojoEquals(dbPersonEnterpriseSubscribe, pageResult.getList().get(0));
+    }
+
+}

+ 0 - 132
menduner/menduner-system-biz/src/test/java/com/citu/module/menduner/system/service/person/PersonJobCollectionServiceImplTest.java

@@ -1,132 +0,0 @@
-package com.citu.module.menduner.system.service.person;
-
-import com.citu.framework.common.pojo.PageResult;
-import com.citu.framework.test.core.ut.BaseDbUnitTest;
-import com.citu.module.menduner.system.controller.admin.person.vo.collection.PersonJobCollectionPageReqVO;
-import com.citu.module.menduner.system.controller.admin.person.vo.collection.PersonJobCollectionSaveReqVO;
-import com.citu.module.menduner.system.dal.dataobject.person.PersonJobCollectionDO;
-import com.citu.module.menduner.system.dal.mysql.person.PersonJobCollectionMapper;
-import com.citu.module.menduner.system.service.person.collection.PersonJobCollectionServiceImpl;
-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.PERSON_JOB_COLLECTION_NOT_EXISTS;
-import static org.junit.jupiter.api.Assertions.*;
-
-/**
- * {@link PersonJobCollectionServiceImpl} 的单元测试类
- *
- * @author Rayson
- */
-@Import(PersonJobCollectionServiceImpl.class)
-public class PersonJobCollectionServiceImplTest extends BaseDbUnitTest {
-
-    @Resource
-    private PersonJobCollectionServiceImpl personJobCollectionService;
-
-    @Resource
-    private PersonJobCollectionMapper personJobCollectionMapper;
-
-    @Test
-    public void testCreatePersonJobCollection_success() {
-        // 准备参数
-        PersonJobCollectionSaveReqVO createReqVO = randomPojo(PersonJobCollectionSaveReqVO.class).setId(null);
-
-        // 调用
-        Long personJobCollectionId = personJobCollectionService.createPersonJobCollection(createReqVO);
-        // 断言
-        assertNotNull(personJobCollectionId);
-        // 校验记录的属性是否正确
-        PersonJobCollectionDO personJobCollection = personJobCollectionMapper.selectById(personJobCollectionId);
-        assertPojoEquals(createReqVO, personJobCollection, "id");
-    }
-
-    @Test
-    public void testUpdatePersonJobCollection_success() {
-        // mock 数据
-        PersonJobCollectionDO dbPersonJobCollection = randomPojo(PersonJobCollectionDO.class);
-        personJobCollectionMapper.insert(dbPersonJobCollection);// @Sql: 先插入出一条存在的数据
-        // 准备参数
-        PersonJobCollectionSaveReqVO updateReqVO = randomPojo(PersonJobCollectionSaveReqVO.class, o -> {
-            o.setId(dbPersonJobCollection.getId()); // 设置更新的 ID
-        });
-
-        // 调用
-        personJobCollectionService.updatePersonJobCollection(updateReqVO);
-        // 校验是否更新正确
-        PersonJobCollectionDO personJobCollection = personJobCollectionMapper.selectById(updateReqVO.getId()); // 获取最新的
-        assertPojoEquals(updateReqVO, personJobCollection);
-    }
-
-    @Test
-    public void testUpdatePersonJobCollection_notExists() {
-        // 准备参数
-        PersonJobCollectionSaveReqVO updateReqVO = randomPojo(PersonJobCollectionSaveReqVO.class);
-
-        // 调用, 并断言异常
-        assertServiceException(() -> personJobCollectionService.updatePersonJobCollection(updateReqVO), PERSON_JOB_COLLECTION_NOT_EXISTS);
-    }
-
-    @Test
-    public void testDeletePersonJobCollection_success() {
-        // mock 数据
-        PersonJobCollectionDO dbPersonJobCollection = randomPojo(PersonJobCollectionDO.class);
-        personJobCollectionMapper.insert(dbPersonJobCollection);// @Sql: 先插入出一条存在的数据
-        // 准备参数
-        Long id = dbPersonJobCollection.getId();
-
-        // 调用
-        personJobCollectionService.deletePersonJobCollection(id);
-        // 校验数据不存在了
-        assertNull(personJobCollectionMapper.selectById(id));
-    }
-
-    @Test
-    public void testDeletePersonJobCollection_notExists() {
-        // 准备参数
-        Long id = randomLongId();
-
-        // 调用, 并断言异常
-        assertServiceException(() -> personJobCollectionService.deletePersonJobCollection(id), PERSON_JOB_COLLECTION_NOT_EXISTS);
-    }
-
-    @Test
-    @Disabled  // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解
-    public void testGetPersonJobCollectionPage() {
-        // mock 数据
-        PersonJobCollectionDO dbPersonJobCollection = randomPojo(PersonJobCollectionDO.class, o -> { // 等会查询到
-            o.setUserId(null);
-            o.setJobId(null);
-            o.setCreateTime(null);
-        });
-        personJobCollectionMapper.insert(dbPersonJobCollection);
-        // 测试 userId 不匹配
-        personJobCollectionMapper.insert(cloneIgnoreId(dbPersonJobCollection, o -> o.setUserId(null)));
-        // 测试 jobId 不匹配
-        personJobCollectionMapper.insert(cloneIgnoreId(dbPersonJobCollection, o -> o.setJobId(null)));
-        // 测试 createTime 不匹配
-        personJobCollectionMapper.insert(cloneIgnoreId(dbPersonJobCollection, o -> o.setCreateTime(null)));
-        // 准备参数
-        PersonJobCollectionPageReqVO reqVO = new PersonJobCollectionPageReqVO();
-        reqVO.setUserId(null);
-        reqVO.setJobId(null);
-        reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
-
-        // 调用
-        PageResult<PersonJobCollectionDO> pageResult = personJobCollectionService.getPersonJobCollectionPage(reqVO);
-        // 断言
-        assertEquals(1, pageResult.getTotal());
-        assertEquals(1, pageResult.getList().size());
-        assertPojoEquals(dbPersonJobCollection, pageResult.getList().get(0));
-    }
-
-}

+ 132 - 0
menduner/menduner-system-biz/src/test/java/com/citu/module/menduner/system/service/person/PersonJobFavoriteServiceImplTest.java

@@ -0,0 +1,132 @@
+package com.citu.module.menduner.system.service.person;
+
+import com.citu.framework.common.pojo.PageResult;
+import com.citu.framework.test.core.ut.BaseDbUnitTest;
+import com.citu.module.menduner.system.controller.admin.person.vo.favorite.PersonJobFavoritePageReqVO;
+import com.citu.module.menduner.system.controller.admin.person.vo.favorite.PersonJobFavoriteSaveReqVO;
+import com.citu.module.menduner.system.dal.dataobject.person.PersonJobFavoriteDO;
+import com.citu.module.menduner.system.dal.mysql.person.PersonJobFavoriteMapper;
+import com.citu.module.menduner.system.service.person.favorite.PersonJobFavoriteServiceImpl;
+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.PERSON_JOB_COLLECTION_NOT_EXISTS;
+import static org.junit.jupiter.api.Assertions.*;
+
+/**
+ * {@link PersonJobFavoriteServiceImpl} 的单元测试类
+ *
+ * @author Rayson
+ */
+@Import(PersonJobFavoriteServiceImpl.class)
+public class PersonJobFavoriteServiceImplTest extends BaseDbUnitTest {
+
+    @Resource
+    private PersonJobFavoriteServiceImpl personJobFavoriteService;
+
+    @Resource
+    private PersonJobFavoriteMapper personJobFavoriteMapper;
+
+    @Test
+    public void testCreatePersonJobFavorite_success() {
+        // 准备参数
+        PersonJobFavoriteSaveReqVO createReqVO = randomPojo(PersonJobFavoriteSaveReqVO.class).setId(null);
+
+        // 调用
+        Long personJobFavoriteId = personJobFavoriteService.createPersonJobFavorite(createReqVO);
+        // 断言
+        assertNotNull(personJobFavoriteId);
+        // 校验记录的属性是否正确
+        PersonJobFavoriteDO personJobFavorite = personJobFavoriteMapper.selectById(personJobFavoriteId);
+        assertPojoEquals(createReqVO, personJobFavorite, "id");
+    }
+
+    @Test
+    public void testUpdatePersonJobFavorite_success() {
+        // mock 数据
+        PersonJobFavoriteDO dbPersonJobFavorite = randomPojo(PersonJobFavoriteDO.class);
+        personJobFavoriteMapper.insert(dbPersonJobFavorite);// @Sql: 先插入出一条存在的数据
+        // 准备参数
+        PersonJobFavoriteSaveReqVO updateReqVO = randomPojo(PersonJobFavoriteSaveReqVO.class, o -> {
+            o.setId(dbPersonJobFavorite.getId()); // 设置更新的 ID
+        });
+
+        // 调用
+        personJobFavoriteService.updatePersonJobFavorite(updateReqVO);
+        // 校验是否更新正确
+        PersonJobFavoriteDO personJobFavorite = personJobFavoriteMapper.selectById(updateReqVO.getId()); // 获取最新的
+        assertPojoEquals(updateReqVO, personJobFavorite);
+    }
+
+    @Test
+    public void testUpdatePersonJobFavorite_notExists() {
+        // 准备参数
+        PersonJobFavoriteSaveReqVO updateReqVO = randomPojo(PersonJobFavoriteSaveReqVO.class);
+
+        // 调用, 并断言异常
+        assertServiceException(() -> personJobFavoriteService.updatePersonJobFavorite(updateReqVO), PERSON_JOB_COLLECTION_NOT_EXISTS);
+    }
+
+    @Test
+    public void testDeletePersonJobFavorite_success() {
+        // mock 数据
+        PersonJobFavoriteDO dbPersonJobFavorite = randomPojo(PersonJobFavoriteDO.class);
+        personJobFavoriteMapper.insert(dbPersonJobFavorite);// @Sql: 先插入出一条存在的数据
+        // 准备参数
+        Long id = dbPersonJobFavorite.getId();
+
+        // 调用
+        personJobFavoriteService.deletePersonJobFavorite(id);
+        // 校验数据不存在了
+        assertNull(personJobFavoriteMapper.selectById(id));
+    }
+
+    @Test
+    public void testDeletePersonJobFavorite_notExists() {
+        // 准备参数
+        Long id = randomLongId();
+
+        // 调用, 并断言异常
+        assertServiceException(() -> personJobFavoriteService.deletePersonJobFavorite(id), PERSON_JOB_COLLECTION_NOT_EXISTS);
+    }
+
+    @Test
+    @Disabled  // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解
+    public void testGetPersonJobFavoritePage() {
+        // mock 数据
+        PersonJobFavoriteDO dbPersonJobFavorite = randomPojo(PersonJobFavoriteDO.class, o -> { // 等会查询到
+            o.setUserId(null);
+            o.setJobId(null);
+            o.setCreateTime(null);
+        });
+        personJobFavoriteMapper.insert(dbPersonJobFavorite);
+        // 测试 userId 不匹配
+        personJobFavoriteMapper.insert(cloneIgnoreId(dbPersonJobFavorite, o -> o.setUserId(null)));
+        // 测试 jobId 不匹配
+        personJobFavoriteMapper.insert(cloneIgnoreId(dbPersonJobFavorite, o -> o.setJobId(null)));
+        // 测试 createTime 不匹配
+        personJobFavoriteMapper.insert(cloneIgnoreId(dbPersonJobFavorite, o -> o.setCreateTime(null)));
+        // 准备参数
+        PersonJobFavoritePageReqVO reqVO = new PersonJobFavoritePageReqVO();
+        reqVO.setUserId(null);
+        reqVO.setJobId(null);
+        reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
+
+        // 调用
+        PageResult<PersonJobFavoriteDO> pageResult = personJobFavoriteService.getPersonJobFavoritePage(reqVO);
+        // 断言
+        assertEquals(1, pageResult.getTotal());
+        assertEquals(1, pageResult.getList().size());
+        assertPojoEquals(dbPersonJobFavorite, pageResult.getList().get(0));
+    }
+
+}

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

@@ -378,7 +378,7 @@ CREATE TABLE IF NOT EXISTS "mde_person_enterprise_attention" (
     "deleted" bit NOT NULL DEFAULT FALSE,
     "tenant_id" bigint NOT NULL,
     PRIMARY KEY ("id")
-) COMMENT '门墩儿-人才-企业关注表';
+) COMMENT '门墩儿-人才-企业关注订阅表';
 
 CREATE TABLE IF NOT EXISTS "mde_person_browse_record" (
     "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,