瀏覽代碼

1、增加求职端-技能接口
2、增加招聘端-用户信息接口

rayson 1 年之前
父節點
當前提交
f437727b7f
共有 45 個文件被更改,包括 733 次插入155 次删除
  1. 2 0
      citu-framework/citu-spring-boot-starter-security/src/main/java/com/citu/framework/security/core/filter/TokenAuthenticationFilter.java
  2. 4 0
      menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/ErrorCodeConstants.java
  3. 3 3
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/area/AppAreaController.java
  4. 3 2
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/enterprise/AppEnterpriseUserBindController.java
  5. 13 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/enterprise/vo/AppEnterpriseUserBindRespVO.java
  6. 4 4
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/industry/AppIndustryController.java
  7. 2 16
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/industry/vo/AppIndustryListReqVO.java
  8. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/major/AppMajorController.java
  9. 3 3
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/position/AppPositionController.java
  10. 2 22
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/position/vo/AppPositionListReqVO.java
  11. 53 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/skill/AppSkillController.java
  12. 40 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/skill/vo/AppSkillChildrenRespVO.java
  13. 16 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/skill/vo/AppSkillListReqVO.java
  14. 21 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/skill/vo/AppSkillSimpleRespVO.java
  15. 8 24
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/appadmin/enterprise/vo/AppAdminEnterpriseUserBindRespVO.java
  16. 10 4
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/appadmin/job/AppAdminJobAdvertisedController.java
  17. 1 2
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/appadmin/job/vo/AppAdminJobRespVO.java
  18. 58 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/appadmin/user/AppAdminUserController.java
  19. 25 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/appadmin/user/vo/AppAdminUserPageReqVO.java
  20. 34 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/appadmin/user/vo/AppAdminUserSaveReqVO.java
  21. 37 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/enterprise/bind/EnterpriseUserBindSimpleRespVO.java
  22. 2 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/convert/EnterpriseConvert.java
  23. 22 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/convert/SkillConvert.java
  24. 32 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/enterprise/EnterpriseUserBindMapper.java
  25. 8 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/job/JobAdvertisedMapper.java
  26. 15 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/skill/SkillMapper.java
  27. 9 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/redis/RedisKeyConstants.java
  28. 3 3
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/area/AreaService.java
  29. 5 7
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/area/AreaServiceImpl.java
  30. 8 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/cvattachment/CvAttachmentService.java
  31. 43 11
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/enterprise/bind/EnterpriseUserBindService.java
  32. 94 14
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/enterprise/bind/EnterpriseUserBindServiceImpl.java
  33. 4 4
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/industry/IndustryService.java
  34. 11 13
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/industry/IndustryServiceImpl.java
  35. 11 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/job/JobAdvertisedService.java
  36. 7 4
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/job/JobAdvertisedServiceImpl.java
  37. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/job/JobIntegrationServiceImpl.java
  38. 2 2
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/position/PositionService.java
  39. 9 9
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/position/PositionServiceImpl.java
  40. 26 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/skill/SkillService.java
  41. 75 2
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/skill/SkillServiceImpl.java
  42. 2 0
      menduner/menduner-system-biz/src/main/resources/i18n/messages_en_US.properties
  43. 2 0
      menduner/menduner-system-biz/src/main/resources/i18n/messages_zh_CN.properties
  44. 2 0
      menduner/pom.xml
  45. 0 4
      pom.xml

+ 2 - 0
citu-framework/citu-spring-boot-starter-security/src/main/java/com/citu/framework/security/core/filter/TokenAuthenticationFilter.java

@@ -26,6 +26,7 @@ import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.net.URLDecoder;
 import java.nio.charset.StandardCharsets;
+import java.util.Collections;
 
 /**
  * Token 过滤器,验证 token 的有效性
@@ -125,6 +126,7 @@ public class TokenAuthenticationFilter extends OncePerRequestFilter {
         // 构建模拟用户
         Long userId = Long.valueOf(token.substring(securityProperties.getMockSecret().length()));
         return new LoginUser().setId(userId).setUserType(userType)
+                .setInfo(Collections.singletonMap(LoginUser.INFO_KEY_DATA_ID, "1"))
                 .setTenantId(WebFrameworkUtils.getTenantId(request));
     }
 

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

@@ -26,6 +26,7 @@ public interface ErrorCodeConstants {
     ErrorCode MDE_COMMON_USER_ID_NOT_NULL = new ErrorCode(1_200_000_006, "用户id不能为空");
     ErrorCode MDE_COMMON_ENTERPRISE_ID_NOT_NULL = new ErrorCode(1_200_000_007, "企业id不能为空");
 
+
     // ========== 人员信息-个人档案 1_100_001_000 ==========
     ErrorCode MDE_USER_INFO_NOT_EXISTS = new ErrorCode(1_100_001_001, "人员信息-个人档案不存在");
     ErrorCode MDE_PERSON_ADVANTAGE_NOT_EXISTS = new ErrorCode(1_100_001_002, "个人优势不能为空");
@@ -210,6 +211,9 @@ public interface ErrorCodeConstants {
     // ========== 企业登录用户 1_200_008_000 ==========
     ErrorCode MDE_ENTERPRISE_USER_BIND_NOT_EXISTS = new ErrorCode(1_200_008_001, "企业登录用户不存在");
     ErrorCode MDE_ENTERPRISE_USER_BIND_NAME_NOT_NULL = new ErrorCode(1_200_008_002, "名称不能为空");
+    ErrorCode MDE_ENTERPRISE_USER_BIND_IS_DISABLE = new ErrorCode(1_200_008_003, "该账户已被禁用");
+    ErrorCode MDE_ENTERPRISE_USER_BIND_IS_ADMIN = new ErrorCode(1_200_008_004, "该账户为管理员账户,无法操作");
+
 
     // ========== 企业岗位信息 1_200_009_000 ==========
     ErrorCode ENTERPRISE_POST_NOT_EXISTS = new ErrorCode(1_200_009_001, "企业岗位信息不存在");

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

@@ -34,15 +34,15 @@ public class AppAreaController {
 
     @GetMapping("/get/tree")
     @Operation(summary = "获取区域树形")
-    public CommonResult<List<AppAreaChildrenRespVO>> getArea(@Valid AreaListReqVO listReqVO) {
+    public CommonResult<List<AppAreaChildrenRespVO>> getArea(@Valid AppAreaListReqVO listReqVO) {
         List<AppAreaChildrenRespVO> list = areaService.getArea(listReqVO);
         return success(list);
     }
 
     @GetMapping("/get/children")
     @Operation(summary = "根据区域id获得地区下级列表")
-    public CommonResult<List<AppAreaChildrenRespVO>> getAreaIdChildren(@RequestParam("id") Long id) {
-        List<AppAreaChildrenRespVO> list = areaService.getAreaIdChildren(id);
+    public CommonResult<List<AppAreaChildrenRespVO>> getChildren(@RequestParam("id") Long id) {
+        List<AppAreaChildrenRespVO> list = areaService.getChildren(id);
         return success(list);
     }
 

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

@@ -1,6 +1,7 @@
 package com.citu.module.menduner.system.controller.app.enterprise;
 
 import com.citu.framework.common.pojo.CommonResult;
+import com.citu.module.menduner.system.controller.app.enterprise.vo.AppEnterpriseUserBindRespVO;
 import com.citu.module.menduner.system.controller.appadmin.enterprise.vo.AppAdminEnterpriseUserBindRespVO;
 import com.citu.module.menduner.system.service.enterprise.bind.EnterpriseUserBindService;
 import io.swagger.v3.oas.annotations.Operation;
@@ -28,13 +29,13 @@ public class AppEnterpriseUserBindController {
 
     @GetMapping("/get/enterprise/list")
     @Operation(summary = "获取当前用户绑定的企业列表")
-    public CommonResult<List<AppAdminEnterpriseUserBindRespVO>> getBindList() {
+    public CommonResult<List<AppEnterpriseUserBindRespVO>> getBindList() {
         return success(enterpriseUserBindService.getBindList());
     }
 
     @GetMapping("/get/enterprise/list/by/phone")
     @Operation(summary = "根据手机号获取用户绑定的企业列表")
-    public CommonResult<List<AppAdminEnterpriseUserBindRespVO>> getBindListByPhone
+    public CommonResult<List<AppEnterpriseUserBindRespVO>> getBindListByPhone
             (@RequestParam("phone") String phone) {
         return success(enterpriseUserBindService.getBindListByPhone(phone));
 

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

@@ -0,0 +1,13 @@
+package com.citu.module.menduner.system.controller.app.enterprise.vo;
+
+import com.citu.module.menduner.system.controller.base.enterprise.bind.EnterpriseUserBindSimpleRespVO;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Schema(description = "menduner - 企业用户 Response VO")
+@Data
+public class AppEnterpriseUserBindRespVO extends EnterpriseUserBindSimpleRespVO {
+
+}

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

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

+ 2 - 16
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/industry/vo/AppIndustryListReqVO.java

@@ -1,5 +1,6 @@
 package com.citu.module.menduner.system.controller.app.industry.vo;
 
+import com.citu.module.menduner.system.controller.base.industry.IndustryListReqVO;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 import org.springframework.format.annotation.DateTimeFormat;
@@ -10,21 +11,6 @@ import static com.citu.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DA
 
 @Schema(description = "menduner -  行业信息 Request VO")
 @Data
-public class AppIndustryListReqVO {
-    @Schema(description = "行业中文名称")
-    private String nameCn;
-
-    @Schema(description = "行业英文名称")
-    private String nameEn;
-
-    @Schema(description = "上级id", example = "11085")
-    private Long parentId;
-
-    @Schema(description = "层级")
-    private Integer level;
-
-    @Schema(description = "创建时间")
-    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
-    private LocalDateTime[] createTime;
+public class AppIndustryListReqVO extends IndustryListReqVO {
 
 }

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/major/AppMajorController.java

@@ -27,7 +27,7 @@ public class AppMajorController {
 
 
     @GetMapping("/search/by/name")
-    @Operation(summary = "根据业名称模糊搜索")
+    @Operation(summary = "根据业名称模糊搜索")
     public CommonResult<List<AppMajorRespVO>> search(@RequestParam("name") String name) {
         return success(majorService.searchByName(name));
     }

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

@@ -39,14 +39,14 @@ public class AppPositionController {
 
     @GetMapping("/get/tree")
     @Operation(summary = "获取职位树形")
-    public CommonResult<List<AppPositionChildrenRespVO>> getPosition(@Valid PositionListReqVO listReqVO) {
+    public CommonResult<List<AppPositionChildrenRespVO>> getPosition(@Valid AppPositionListReqVO listReqVO) {
         List<AppPositionChildrenRespVO> list = positionService.getPosition(listReqVO);
         return success(list);
     }
     @GetMapping("/get/children")
     @Operation(summary = "根据职位id获得职位下级列表")
-    public CommonResult<List<AppPositionChildrenRespVO>> getPositionIdChildren(@RequestParam("id") Long id) {
-        List<AppPositionChildrenRespVO> list = positionService.getPositionIdChildren(id);
+    public CommonResult<List<AppPositionChildrenRespVO>> getChildren(@RequestParam("id") Long id) {
+        List<AppPositionChildrenRespVO> list = positionService.getChildren(id);
         return success(list);
     }
 

+ 2 - 22
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/position/vo/AppPositionListReqVO.java

@@ -1,31 +1,11 @@
 package com.citu.module.menduner.system.controller.app.position.vo;
 
+import com.citu.module.menduner.system.controller.base.position.PositionListReqVO;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
-import org.springframework.format.annotation.DateTimeFormat;
-
-import java.time.LocalDateTime;
-
-import static com.citu.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
 
 @Schema(description = "menduner -  职位信息 Request VO")
 @Data
-public class AppPositionListReqVO {
-
-    @Schema(description = "职位中文名称")
-    private String nameCn;
-
-    @Schema(description = "职位英文名称")
-    private String nameEn;
-
-    @Schema(description = "上级id", example = "11085")
-    private Long parentId;
-
-    @Schema(description = "层级")
-    private Integer level;
-
-    @Schema(description = "创建时间")
-    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
-    private LocalDateTime[] createTime;
+public class AppPositionListReqVO extends PositionListReqVO {
 
 }

+ 53 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/skill/AppSkillController.java

@@ -0,0 +1,53 @@
+package com.citu.module.menduner.system.controller.app.skill;
+
+import com.citu.framework.common.pojo.CommonResult;
+import com.citu.module.menduner.system.controller.app.skill.vo.AppSkillChildrenRespVO;
+import com.citu.module.menduner.system.controller.app.skill.vo.AppSkillListReqVO;
+import com.citu.module.menduner.system.controller.app.skill.vo.AppSkillSimpleRespVO;
+import com.citu.module.menduner.system.controller.base.skill.SkillListReqVO;
+import com.citu.module.menduner.system.service.skill.SkillService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import javax.validation.Valid;
+import java.util.List;
+
+import static com.citu.framework.common.pojo.CommonResult.success;
+
+@Tag(name = "求职端 - 技能信息")
+@RestController
+@RequestMapping("/menduner/system/skill")
+@Validated
+public class AppSkillController {
+
+    @Resource
+    private SkillService skillService;
+
+    @GetMapping("/get/tree")
+    @Operation(summary = "获取技能树形")
+    public CommonResult<List<AppSkillChildrenRespVO>> getSkill(@Valid AppSkillListReqVO listReqVO) {
+        List<AppSkillChildrenRespVO> list = skillService.getSkill(listReqVO);
+        return success(list);
+    }
+
+    @GetMapping("/get/children")
+    @Operation(summary = "根据技能id获得下级列表")
+    public CommonResult<List<AppSkillChildrenRespVO>> getChildren(@RequestParam("id") Long id) {
+        List<AppSkillChildrenRespVO> list = skillService.getChildren(id);
+        return success(list);
+    }
+
+    @GetMapping("/list")
+    @Operation(summary = "获得技能列表")
+    public CommonResult<List<AppSkillSimpleRespVO>> getSkillList(@Valid AppSkillListReqVO reqVO) {
+        List<AppSkillSimpleRespVO> list = skillService.getSkillList(reqVO);
+        return success(list);
+    }
+
+}

+ 40 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/skill/vo/AppSkillChildrenRespVO.java

@@ -0,0 +1,40 @@
+package com.citu.module.menduner.system.controller.app.skill.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+@Schema(description = "menduner -  技能信息 Request VO")
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class AppSkillChildrenRespVO {
+
+
+    @Schema(description = "id", example = "7293")
+    private Long id;
+
+    @Schema(description = "技能中文名称")
+    private String nameCn;
+
+    @Schema(description = "技能英文名称")
+    private String nameEn;
+
+    @Schema(description = "上级id", example = "11085")
+    private Long parentId;
+
+    @Schema(description = "层级")
+    private Integer level;
+
+    @Schema(description = "路径")
+    private String path;
+
+    /**
+     * 子节点
+     */
+    private List<AppSkillChildrenRespVO> children;
+
+}

+ 16 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/skill/vo/AppSkillListReqVO.java

@@ -0,0 +1,16 @@
+package com.citu.module.menduner.system.controller.app.skill.vo;
+
+import com.citu.module.menduner.system.controller.base.skill.SkillListReqVO;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDateTime;
+
+import static com.citu.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "menduner -  技能信息 Request VO")
+@Data
+public class AppSkillListReqVO extends SkillListReqVO {
+
+}

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

@@ -0,0 +1,21 @@
+package com.citu.module.menduner.system.controller.app.skill.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+@Schema(description = "menduner -  技能信息 Response VO")
+@Data
+public class AppSkillSimpleRespVO {
+
+    @Schema(description = "id", example = "7293")
+    private Long id;
+
+    @Schema(description = "技能中文名称")
+    private String nameCn;
+
+    @Schema(description = "技能英文名称")
+    private String nameEn;
+
+
+
+}

+ 8 - 24
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/appadmin/enterprise/vo/AppAdminEnterpriseUserBindRespVO.java

@@ -1,5 +1,6 @@
 package com.citu.module.menduner.system.controller.appadmin.enterprise.vo;
 
+import com.citu.module.menduner.system.controller.base.enterprise.bind.EnterpriseUserBindSimpleRespVO;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
@@ -7,31 +8,14 @@ import java.time.LocalDateTime;
 
 @Schema(description = "menduner - 企业用户 Response VO")
 @Data
-public class AppAdminEnterpriseUserBindRespVO {
+public class AppAdminEnterpriseUserBindRespVO extends EnterpriseUserBindSimpleRespVO {
 
-    @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "23697")
-    private Long id;
-
-    @Schema(description = "企业id", requiredMode = Schema.RequiredMode.REQUIRED, example = "616")
-    private Long enterpriseId;
-
-    @Schema(description = "企业名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "616")
-    private String enterpriseName;
-
-    @Schema(description = "名称", example = "x女士")
-    private String name;
-
-    @Schema(description = "用户性别")
-    private String sex;
-
-    @Schema(description = "头像地址")
-    private String avatar;
-
-    @Schema(description = "帐号状态(0正常 1停用 2 等待审核 3不通过)", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
-    private String status;
-
-    @Schema(description = "最后登录时间")
-    private LocalDateTime loginDate;
+    @Schema(description = "企业logo地址", example = "https://www.menduner.com/static/img/loginlogo2.7924c12.png")
+    private String logoUrl;
 
+    @Schema(description = "更新时间")
+    private LocalDateTime updateTime;
 
+    @Schema(description = "用户类型(0普通企业用户 1 企业管理员)", example = "2")
+    private String userType;
 }

+ 10 - 4
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/appadmin/job/AppAdminJobAdvertisedController.java

@@ -5,10 +5,7 @@ import com.citu.framework.common.pojo.CommonResult;
 import com.citu.framework.common.pojo.PageResult;
 import com.citu.framework.common.util.string.StrUtils;
 import com.citu.framework.security.core.annotations.PreAuthenticated;
-import com.citu.module.menduner.system.controller.appadmin.job.vo.AppAdminJobDetailRespVO;
-import com.citu.module.menduner.system.controller.appadmin.job.vo.AppAdminJobPageReqVO;
-import com.citu.module.menduner.system.controller.appadmin.job.vo.AppAdminJobReqVO;
-import com.citu.module.menduner.system.controller.appadmin.job.vo.AppAdminJobRespVO;
+import com.citu.module.menduner.system.controller.appadmin.job.vo.*;
 import com.citu.module.menduner.system.convert.JobAdvertisedConvert;
 import com.citu.module.menduner.system.service.job.JobAdvertisedService;
 import com.citu.module.menduner.system.service.job.JobIntegrationService;
@@ -20,6 +17,8 @@ import org.springframework.web.bind.annotation.*;
 import javax.annotation.Resource;
 import javax.validation.Valid;
 
+import java.util.List;
+
 import static com.citu.framework.common.pojo.CommonResult.success;
 
 @Tag(name = "招聘端 - 招聘职位")
@@ -48,6 +47,13 @@ public class AppAdminJobAdvertisedController {
         return success(JobAdvertisedConvert.INSTANCE.convert5(jobAdvertisedService.detail(id)));
     }
 
+    @PreAuthenticated
+    @GetMapping("/list")
+    @Operation(summary = "获取发布的职位列表")
+    public CommonResult<List<AppAdminJobSimpleRespVO>> getList() {
+        return success(jobAdvertisedService.getList());
+    }
+
 
     @PreAuthenticated
     @PostMapping("/save")

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

@@ -1,7 +1,6 @@
 package com.citu.module.menduner.system.controller.appadmin.job.vo;
 
 
-import com.citu.module.menduner.system.controller.base.job.JobAdvertisedSimpleRespVO;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
@@ -9,7 +8,7 @@ import java.time.LocalDateTime;
 
 @Schema(description = "招聘者 - 门墩儿-招聘职位 Response VO")
 @Data
-public class AppAdminJobRespVO extends JobAdvertisedSimpleRespVO {
+public class AppAdminJobRespVO extends AppAdminJobSimpleRespVO {
 
     @Schema(description = "过期时间")
     private LocalDateTime expireTime;

+ 58 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/appadmin/user/AppAdminUserController.java

@@ -0,0 +1,58 @@
+package com.citu.module.menduner.system.controller.appadmin.user;
+
+import com.citu.framework.common.pojo.CommonResult;
+import com.citu.framework.common.pojo.PageResult;
+import com.citu.framework.security.core.annotations.PreAuthenticated;
+import com.citu.module.menduner.system.controller.appadmin.enterprise.vo.AppAdminEnterpriseUserBindRespVO;
+import com.citu.module.menduner.system.controller.appadmin.user.vo.AppAdminUserPageReqVO;
+import com.citu.module.menduner.system.controller.appadmin.user.vo.AppAdminUserSaveReqVO;
+import com.citu.module.menduner.system.service.enterprise.bind.EnterpriseUserBindService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.validation.Valid;
+
+import static com.citu.framework.common.pojo.CommonResult.success;
+
+@Tag(name = "招聘端 - 用户信息")
+@RestController
+@RequestMapping("/menduner/system/user")
+@Validated
+public class AppAdminUserController {
+
+    @Resource
+    private EnterpriseUserBindService service;
+
+    @PreAuthenticated
+    @PostMapping("/save")
+    @Operation(summary = "保存用户信息")
+    public CommonResult<Boolean> save(@Valid @RequestBody AppAdminUserSaveReqVO reqVO) {
+        return success(service.save(reqVO));
+    }
+
+    @PreAuthenticated
+    @PostMapping("/disable")
+    @Operation(summary = "禁用账户")
+    public CommonResult<Boolean> disable(@RequestParam("id") Long id) {
+        return success(service.disable(id));
+    }
+
+    @PreAuthenticated
+    @PostMapping("/enable")
+    @Operation(summary = "开启账户")
+    public CommonResult<Boolean> enable(@RequestParam("id") Long id) {
+        return success(service.enable(id));
+    }
+
+
+    @PreAuthenticated
+    @GetMapping("/page")
+    @Operation(summary = "获取用户列表分页数据")
+    public CommonResult<PageResult<AppAdminEnterpriseUserBindRespVO>> selectPage(
+            @Valid AppAdminUserPageReqVO reqVO) {
+        return success(service.selectPage(reqVO));
+    }
+}

+ 25 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/appadmin/user/vo/AppAdminUserPageReqVO.java

@@ -0,0 +1,25 @@
+package com.citu.module.menduner.system.controller.appadmin.user.vo;
+
+import com.citu.framework.common.pojo.PageParam;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+@Schema(description = "menduner - 企业用户分页查询 Request VO")
+@Data
+public class AppAdminUserPageReqVO extends PageParam {
+
+    @Schema(description = "名称", example = "x女士")
+    private String name;
+
+    @Schema(description = "用户性别")
+    private String sex;
+
+    @Schema(description = "联系手机号")
+    private String phone;
+
+    @Schema(description = "用户邮箱")
+    private String email;
+
+    @Schema(description = "状态(0正常 1停用)")
+    private String status;
+}

+ 34 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/appadmin/user/vo/AppAdminUserSaveReqVO.java

@@ -0,0 +1,34 @@
+package com.citu.module.menduner.system.controller.appadmin.user.vo;
+
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+
+@Schema(description = "menduner - 企业登录用户新增/修改 Request VO")
+@Data
+public class AppAdminUserSaveReqVO {
+
+    @NotNull(message = "{1_200_008_001}")
+    @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "23697")
+    private Long id;
+
+    @Schema(description = "名称", example = "x女士")
+    @NotEmpty(message = "{1_200_008_002}")
+    private String name;
+
+    @Schema(description = "用户性别")
+    private String sex;
+
+    @Schema(description = "头像地址")
+    private String avatar;
+
+    @Schema(description = "联系手机号")
+    private String phone;
+
+    @Schema(description = "用户邮箱")
+    private String email;
+
+}

+ 37 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/enterprise/bind/EnterpriseUserBindSimpleRespVO.java

@@ -0,0 +1,37 @@
+package com.citu.module.menduner.system.controller.base.enterprise.bind;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Schema(description = "企业用户简易 Response VO")
+@Data
+public class EnterpriseUserBindSimpleRespVO {
+
+    @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "23697")
+    private Long id;
+
+    @Schema(description = "企业id", requiredMode = Schema.RequiredMode.REQUIRED, example = "616")
+    private Long enterpriseId;
+
+    @Schema(description = "企业名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "616")
+    private String enterpriseName;
+
+    @Schema(description = "名称", example = "x女士")
+    private String name;
+
+    @Schema(description = "用户性别")
+    private String sex;
+
+    @Schema(description = "头像地址")
+    private String avatar;
+
+    @Schema(description = "帐号状态(0正常 1停用)", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
+    private String status;
+
+    @Schema(description = "最后登录时间")
+    private LocalDateTime loginDate;
+
+
+}

+ 2 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/convert/EnterpriseConvert.java

@@ -42,4 +42,6 @@ public interface EnterpriseConvert {
     AppEnterpriseUserApplyRespVO convert9(EnterpriseUserApplyDO bean);
 
     EnterpriseUserApplyDO convert10(AppEnterpriseUserApplyReqVO bean);
+
+    AppEnterpriseUserBindRespVO convert11(EnterpriseUserBindDO bean);
 }

+ 22 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/convert/SkillConvert.java

@@ -0,0 +1,22 @@
+package com.citu.module.menduner.system.convert;
+
+
+import com.citu.module.menduner.system.controller.app.skill.vo.AppSkillChildrenRespVO;
+import com.citu.module.menduner.system.controller.app.skill.vo.AppSkillSimpleRespVO;
+import com.citu.module.menduner.system.dal.dataobject.skill.SkillDO;
+import org.mapstruct.Mapper;
+import org.mapstruct.factory.Mappers;
+
+import java.util.List;
+
+@Mapper
+public interface SkillConvert {
+
+    SkillConvert INSTANCE = Mappers.getMapper(SkillConvert.class);
+
+    AppSkillChildrenRespVO convert(SkillDO SkillDO);
+
+    List<AppSkillChildrenRespVO> convertList(List<SkillDO> list);
+
+    List<AppSkillSimpleRespVO> convertList2(List<SkillDO> list);
+}

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

@@ -4,7 +4,13 @@ package com.citu.module.menduner.system.dal.mysql.enterprise;
 import com.citu.framework.common.pojo.PageResult;
 import com.citu.framework.mybatis.core.mapper.BaseMapperX;
 import com.citu.framework.mybatis.core.query.LambdaQueryWrapperX;
+import com.citu.framework.mybatis.core.query.MPJLambdaWrapperX;
+import com.citu.module.menduner.system.controller.app.enterprise.vo.AppEnterpriseSimpleRespVO;
+import com.citu.module.menduner.system.controller.appadmin.enterprise.vo.AppAdminEnterpriseUserBindRespVO;
+import com.citu.module.menduner.system.controller.appadmin.user.vo.AppAdminUserPageReqVO;
 import com.citu.module.menduner.system.controller.base.enterprise.bind.EnterpriseUserBindPageReqVO;
+import com.citu.module.menduner.system.dal.dataobject.enterprise.EnterpriseBusinessDO;
+import com.citu.module.menduner.system.dal.dataobject.enterprise.EnterpriseDO;
 import com.citu.module.menduner.system.dal.dataobject.enterprise.EnterpriseUserBindDO;
 import com.citu.module.menduner.system.enums.MendunerStatusEnum;
 import org.apache.ibatis.annotations.Mapper;
@@ -50,4 +56,30 @@ public interface EnterpriseUserBindMapper extends BaseMapperX<EnterpriseUserBind
         );
     }
 
+    default EnterpriseUserBindDO selectByEnterpriseIdAndId(Long enterpriseId, Long id) {
+        return selectOne(new LambdaQueryWrapperX<EnterpriseUserBindDO>()
+                .eqIfPresent(EnterpriseUserBindDO::getEnterpriseId, enterpriseId)
+                .eqIfPresent(EnterpriseUserBindDO::getId, id)
+        );
+    }
+
+
+    default PageResult<AppAdminEnterpriseUserBindRespVO> selectPage(AppAdminUserPageReqVO reqVO, Long enterpriseId) {
+        MPJLambdaWrapperX<EnterpriseUserBindDO> wrapper = new MPJLambdaWrapperX<>();
+        wrapper.selectAll(EnterpriseUserBindDO.class);
+        wrapper.selectAs(EnterpriseDO::getId,AppAdminEnterpriseUserBindRespVO::getEnterpriseId);
+        wrapper.selectAs(EnterpriseDO::getName,AppAdminEnterpriseUserBindRespVO::getEnterpriseName);
+        wrapper.selectAs(EnterpriseDO::getLogoUrl,AppAdminEnterpriseUserBindRespVO::getLogoUrl);
+        wrapper.innerJoin(EnterpriseDO.class, EnterpriseDO::getId, EnterpriseUserBindDO::getEnterpriseId);
+        wrapper.eq(EnterpriseDO::getId, enterpriseId);
+        wrapper.eq(EnterpriseUserBindDO::getEnterpriseId, enterpriseId);
+        wrapper.likeIfPresent(EnterpriseUserBindDO::getName, reqVO.getName());
+        wrapper.likeIfPresent(EnterpriseUserBindDO::getPhone, reqVO.getPhone());
+        wrapper.likeIfPresent(EnterpriseUserBindDO::getEmail, reqVO.getEmail());
+        wrapper.eqIfPresent(EnterpriseUserBindDO::getSex, reqVO.getSex());
+        wrapper.eqIfPresent(EnterpriseUserBindDO::getStatus, reqVO.getStatus());
+        wrapper.orderByDesc(EnterpriseUserBindDO::getUserType, EnterpriseUserBindDO::getUpdateTime);
+        return selectJoinPage(reqVO, AppAdminEnterpriseUserBindRespVO.class, wrapper);
+    }
+
 }

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

@@ -10,6 +10,7 @@ import com.citu.framework.mybatis.core.query.MPJLambdaWrapperX;
 import com.citu.module.menduner.system.controller.app.job.vo.AppJobAdvertisedHomeRespVO;
 import com.citu.module.menduner.system.controller.app.job.vo.AppJobAdvertisedRespVO;
 import com.citu.module.menduner.system.controller.appadmin.job.vo.AppAdminJobPageReqVO;
+import com.citu.module.menduner.system.controller.appadmin.job.vo.AppAdminJobSimpleRespVO;
 import com.citu.module.menduner.system.controller.base.job.JobAdvertisedPageReqVO;
 import com.citu.module.menduner.system.dal.dataobject.enterprise.EnterpriseDO;
 import com.citu.module.menduner.system.dal.dataobject.job.JobAdvertisedDO;
@@ -103,5 +104,12 @@ public interface JobAdvertisedMapper extends BaseMapperX<JobAdvertisedDO> {
         return selectPage(reqVO, query);
     }
 
+    default List<AppAdminJobSimpleRespVO> list() {
+        MPJLambdaWrapperX<JobAdvertisedDO> query = new MPJLambdaWrapperX<>();
+        query.selectAll(JobAdvertisedDO.class);
+        query.orderByDesc(JobAdvertisedDO::getUpdateTime);
+        return selectJoinList(AppAdminJobSimpleRespVO.class, query);
+    }
+
 
 }

+ 15 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/skill/SkillMapper.java

@@ -4,7 +4,10 @@ import java.util.*;
 
 import com.citu.framework.mybatis.core.query.LambdaQueryWrapperX;
 import com.citu.framework.mybatis.core.mapper.BaseMapperX;
+import com.citu.module.menduner.system.controller.app.industry.vo.AppIndustryListReqVO;
+import com.citu.module.menduner.system.controller.app.skill.vo.AppSkillListReqVO;
 import com.citu.module.menduner.system.controller.base.skill.SkillListReqVO;
+import com.citu.module.menduner.system.dal.dataobject.industry.IndustryDO;
 import com.citu.module.menduner.system.dal.dataobject.skill.SkillDO;
 import org.apache.ibatis.annotations.Mapper;
 
@@ -34,4 +37,16 @@ public interface SkillMapper extends BaseMapperX<SkillDO> {
         return selectCount(SkillDO::getParentId, parentId);
     }
 
+    default List<SkillDO> selectListByParentId(Collection<Long> parentIds) {
+        return selectList(SkillDO::getParentId, parentIds);
+    }
+
+    default List<SkillDO> selectList(AppSkillListReqVO reqVO) {
+        return selectList(new LambdaQueryWrapperX<SkillDO>()
+                .likeRightIfPresent(SkillDO::getNameCn, reqVO.getNameCn())
+                .likeRightIfPresent(SkillDO::getNameEn, reqVO.getNameEn())
+                .betweenIfPresent(SkillDO::getCreateTime, reqVO.getCreateTime())
+                .orderByAsc(SkillDO::getUpdateTime));
+    }
+
 }

+ 9 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/redis/RedisKeyConstants.java

@@ -72,5 +72,14 @@ public interface RedisKeyConstants {
      */
     String MDE_INDUSTRY_CHILDREN ="mde_industry_children";
 
+    /**
+     * 指定技能的所有子技能信息的缓存
+     * <p>
+     * KEY 格式:mde_skill_children:{id}
+     * VALUE 数据类型:String 子行业编号集合
+     */
+    String MDE_SKILL_CHILDREN ="mde_skill_children";
+
+
 
 }

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

@@ -76,21 +76,21 @@ public interface AreaService {
      * @param id 查询条件
      * @return 地区列表
      **/
-    List<AppAreaChildrenRespVO> getAreaIdChildren(Long id);
+    List<AppAreaChildrenRespVO> getChildren(Long id);
 
     /**
      * 根据区域id获得下级id集合
      * @param id 父级id
      * @return 地区id集合
      **/
-    Set<Long> getAreaIdChildrenIds(Long id);
+    Set<Long> getChildrenIds(Long id);
 
     /**
      * 获取区域
      *
      * @param reqVO 查询条件
      **/
-    List<AppAreaChildrenRespVO> getArea(AreaListReqVO reqVO);
+    List<AppAreaChildrenRespVO> getArea(AppAreaListReqVO reqVO);
 
     /**
      * 获取区域

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

@@ -5,15 +5,13 @@ import com.citu.framework.common.pojo.PageResult;
 import com.citu.framework.common.util.object.BeanUtils;
 import com.citu.framework.datapermission.core.annotation.DataPermission;
 import com.citu.module.menduner.system.controller.app.area.vo.AppAreaChildrenRespVO;
+import com.citu.module.menduner.system.controller.app.area.vo.AppAreaHotRespVO;
 import com.citu.module.menduner.system.controller.app.area.vo.AppAreaListReqVO;
 import com.citu.module.menduner.system.controller.app.area.vo.AppAreaSimpleRespVO;
-import com.citu.module.menduner.system.controller.app.area.vo.AppAreaHotRespVO;
-import com.citu.module.menduner.system.controller.app.position.vo.AppPositionChildrenRespVO;
 import com.citu.module.menduner.system.controller.base.area.*;
 import com.citu.module.menduner.system.convert.AreaConvert;
 import com.citu.module.menduner.system.dal.dataobject.area.AreaDO;
 import com.citu.module.menduner.system.dal.dataobject.area.AreaHotDO;
-import com.citu.module.menduner.system.dal.dataobject.enterprise.EnterpriseDO;
 import com.citu.module.menduner.system.dal.mysql.area.AreaHotMapper;
 import com.citu.module.menduner.system.dal.mysql.area.AreaMapper;
 import com.citu.module.menduner.system.dal.redis.RedisKeyConstants;
@@ -112,7 +110,7 @@ public class AreaServiceImpl implements AreaService {
 
     @Override
     @Cacheable(cacheNames = RedisKeyConstants.MDE_AREA_CHILDREN, key = "#id", unless = "#result.size==0")
-    public List<AppAreaChildrenRespVO> getAreaIdChildren(Long id) {
+    public List<AppAreaChildrenRespVO> getChildren(Long id) {
         List<AppAreaChildrenRespVO> children = new LinkedList<>();
         // 遍历每一层
         Collection<Long> parentIds = Collections.singleton(id);
@@ -133,13 +131,13 @@ public class AreaServiceImpl implements AreaService {
     @Override
     @DataPermission(enable = false)
     @Cacheable(cacheNames = RedisKeyConstants.MDE_AREA_IDS, key = "#id", unless = "#result.size==0")
-    public Set<Long> getAreaIdChildrenIds(Long id) {
-        List<AppAreaChildrenRespVO> children = getAreaIdChildren(id);
+    public Set<Long> getChildrenIds(Long id) {
+        List<AppAreaChildrenRespVO> children = getChildren(id);
         return convertSet(children, AppAreaChildrenRespVO::getId);
     }
 
     @Override
-    public List<AppAreaChildrenRespVO> getArea(AreaListReqVO reqVO) {
+    public List<AppAreaChildrenRespVO> getArea(AppAreaListReqVO reqVO) {
         List<AreaDO> areaList = areaMapper.selectList(reqVO);
         if (null == areaList) {
             return null;

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

@@ -62,7 +62,15 @@ public interface CvAttachmentService {
      */
     void create(AppCvAttachmentSaveReqVO reqVO);
 
+    /**
+     * 移除附件
+     *
+     * @param id id
+     */
     void remove(Long id);
 
+    /**
+     * 获取简历附件列表
+     */
     List<CvAttachmentDO> getList();
 }

+ 43 - 11
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/enterprise/bind/EnterpriseUserBindService.java

@@ -1,10 +1,13 @@
 package com.citu.module.menduner.system.service.enterprise.bind;
 
 import com.citu.framework.common.pojo.PageResult;
+import com.citu.module.menduner.system.controller.app.enterprise.vo.AppEnterpriseUserBindRespVO;
+import com.citu.module.menduner.system.controller.appadmin.enterprise.vo.AppAdminEnterpriseUserBindRespVO;
+import com.citu.module.menduner.system.controller.appadmin.user.vo.AppAdminUserPageReqVO;
+import com.citu.module.menduner.system.controller.appadmin.user.vo.AppAdminUserSaveReqVO;
+import com.citu.module.menduner.system.controller.base.contact.AppEnterpriseUserContactRespVO;
 import com.citu.module.menduner.system.controller.base.enterprise.bind.EnterpriseUserBindPageReqVO;
 import com.citu.module.menduner.system.controller.base.enterprise.bind.EnterpriseUserBindSaveReqVO;
-import com.citu.module.menduner.system.controller.base.contact.AppEnterpriseUserContactRespVO;
-import com.citu.module.menduner.system.controller.appadmin.enterprise.vo.AppAdminEnterpriseUserBindRespVO;
 import com.citu.module.menduner.system.dal.dataobject.enterprise.EnterpriseUserBindDO;
 
 import javax.validation.Valid;
@@ -63,12 +66,7 @@ public interface EnterpriseUserBindService {
      */
     EnterpriseUserBindDO getEnterpriseUserBindById(Long userId);
 
-    /**
-     * 根据联系人id,获取联系人基本信息
-     * @param userId 用户id
-     * @param enterpriseId 企业id
-     **/
-    AppEnterpriseUserContactRespVO getContact(Long enterpriseId,Long userId);
+
 
     /**
      * 更新用户的最后登陆信息
@@ -80,27 +78,61 @@ public interface EnterpriseUserBindService {
 
     /**
      * 根据企业id和用户id查询用户绑定数据
+     *
      * @param enterpriseId
      * @param userId
      * @return EnterpriseUserBindDO
      **/
     EnterpriseUserBindDO selectByEnterpriseIdAndUserId(Long enterpriseId, Long userId);
 
-    // ========== 招聘端 ==========
+    // ========== 求职端 ==========
+    /**
+     * 根据联系人id,获取联系人基本信息
+     *
+     * @param userId       用户id
+     * @param enterpriseId 企业id
+     **/
+    AppEnterpriseUserContactRespVO getContact(Long enterpriseId, Long userId);
 
     /**
      * 获取当前用户绑定的企业列表
      **/
-    List<AppAdminEnterpriseUserBindRespVO> getBindList();
+    List<AppEnterpriseUserBindRespVO> getBindList();
 
     /**
      * 根据手机号获取用户绑定的企业列表
      **/
-    List<AppAdminEnterpriseUserBindRespVO> getBindListByPhone(String phone);
+    List<AppEnterpriseUserBindRespVO> getBindListByPhone(String phone);
+
+    // ========== 招聘端 ==========
 
     /**
      * 获取当前登录用户绑定的企业
      **/
     AppAdminEnterpriseUserBindRespVO getBindEnterprise();
 
+    /**
+     * 保存企业用户信息
+     * @return reqVO 保存对象
+     **/
+    boolean save(AppAdminUserSaveReqVO reqVO);
+
+    /**
+     * 禁用账号
+     * @return id
+     **/
+    boolean disable(Long id);
+
+    /**
+     * 开启账号
+     * @return id
+     **/
+    boolean enable(Long id);
+
+    /**
+     * 获取用户列表分页数据
+     * @return 分页数据
+     **/
+    PageResult<AppAdminEnterpriseUserBindRespVO> selectPage(AppAdminUserPageReqVO reqVO);
+
 }

+ 94 - 14
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/enterprise/bind/EnterpriseUserBindServiceImpl.java

@@ -2,13 +2,17 @@ package com.citu.module.menduner.system.service.enterprise.bind;
 
 
 import com.baomidou.dynamic.datasource.annotation.DSTransactional;
+import com.citu.framework.common.enums.UserTypeEnum;
 import com.citu.framework.common.pojo.PageResult;
 import com.citu.framework.common.util.object.BeanUtils;
 import com.citu.framework.security.core.LoginUser;
+import com.citu.module.menduner.system.controller.app.enterprise.vo.AppEnterpriseUserBindRespVO;
+import com.citu.module.menduner.system.controller.appadmin.enterprise.vo.AppAdminEnterpriseUserBindRespVO;
+import com.citu.module.menduner.system.controller.appadmin.user.vo.AppAdminUserPageReqVO;
+import com.citu.module.menduner.system.controller.appadmin.user.vo.AppAdminUserSaveReqVO;
+import com.citu.module.menduner.system.controller.base.contact.AppEnterpriseUserContactRespVO;
 import com.citu.module.menduner.system.controller.base.enterprise.bind.EnterpriseUserBindPageReqVO;
 import com.citu.module.menduner.system.controller.base.enterprise.bind.EnterpriseUserBindSaveReqVO;
-import com.citu.module.menduner.system.controller.base.contact.AppEnterpriseUserContactRespVO;
-import com.citu.module.menduner.system.controller.appadmin.enterprise.vo.AppAdminEnterpriseUserBindRespVO;
 import com.citu.module.menduner.system.convert.EnterpriseConvert;
 import com.citu.module.menduner.system.dal.dataobject.enterprise.EnterpriseDO;
 import com.citu.module.menduner.system.dal.dataobject.enterprise.EnterprisePostDO;
@@ -16,6 +20,7 @@ import com.citu.module.menduner.system.dal.dataobject.enterprise.EnterpriseUserB
 import com.citu.module.menduner.system.dal.dataobject.user.MdeUserDO;
 import com.citu.module.menduner.system.dal.mysql.enterprise.EnterpriseMapper;
 import com.citu.module.menduner.system.dal.mysql.enterprise.EnterpriseUserBindMapper;
+import com.citu.module.menduner.system.enums.MendunerStatusEnum;
 import com.citu.module.menduner.system.service.enterprise.post.EnterprisePostService;
 import com.citu.module.menduner.system.service.user.MdeUserService;
 import org.springframework.stereotype.Service;
@@ -27,10 +32,11 @@ import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 
+import static com.citu.framework.common.exception.enums.GlobalErrorCodeConstants.FORBIDDEN;
 import static com.citu.framework.common.exception.util.ServiceExceptionUtil.exception;
 import static com.citu.framework.security.core.util.SecurityFrameworkUtils.getLoginUser;
 import static com.citu.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
-import static com.citu.module.menduner.system.enums.ErrorCodeConstants.MDE_ENTERPRISE_USER_BIND_NOT_EXISTS;
+import static com.citu.module.menduner.system.enums.ErrorCodeConstants.*;
 
 /**
  * 门墩儿-企业登录用户 Service 实现类
@@ -134,14 +140,14 @@ public class EnterpriseUserBindServiceImpl implements EnterpriseUserBindService
     }
 
     @Override
-    public List<AppAdminEnterpriseUserBindRespVO> getBindList() {
+    public List<AppEnterpriseUserBindRespVO> getBindList() {
         List<EnterpriseUserBindDO> list = enterpriseUserBindMapper.selectListByUserId(getLoginUserId());
         if (null == list) {
             return Collections.emptyList();
         }
-        List<AppAdminEnterpriseUserBindRespVO> respList = new ArrayList<>();
+        List<AppEnterpriseUserBindRespVO> respList = new ArrayList<>();
         for (EnterpriseUserBindDO userBindDO : list) {
-            AppAdminEnterpriseUserBindRespVO resp = EnterpriseConvert.INSTANCE.convert7(userBindDO);
+            AppEnterpriseUserBindRespVO resp = EnterpriseConvert.INSTANCE.convert11(userBindDO);
             EnterpriseDO enterprise = enterpriseMapper.selectById(userBindDO.getEnterpriseId());
             if (null != enterprise) {
                 resp.setEnterpriseId(enterprise.getId());
@@ -153,7 +159,7 @@ public class EnterpriseUserBindServiceImpl implements EnterpriseUserBindService
     }
 
     @Override
-    public List<AppAdminEnterpriseUserBindRespVO> getBindListByPhone(String phone) {
+    public List<AppEnterpriseUserBindRespVO> getBindListByPhone(String phone) {
         MdeUserDO user = mdeUserService.getUserByPhone(phone);
         if (null == user) {
             // 返回空列表,方便前端跳注册申请页面
@@ -164,9 +170,9 @@ public class EnterpriseUserBindServiceImpl implements EnterpriseUserBindService
         if (null == list) {
             return Collections.emptyList();
         }
-        List<AppAdminEnterpriseUserBindRespVO> respList = new ArrayList<>();
+        List<AppEnterpriseUserBindRespVO> respList = new ArrayList<>();
         for (EnterpriseUserBindDO userBindDO : list) {
-            AppAdminEnterpriseUserBindRespVO resp = EnterpriseConvert.INSTANCE.convert7(userBindDO);
+            AppEnterpriseUserBindRespVO resp = EnterpriseConvert.INSTANCE.convert11(userBindDO);
             EnterpriseDO enterprise = enterpriseMapper.selectById(userBindDO.getEnterpriseId());
             if (null != enterprise) {
                 resp.setEnterpriseId(enterprise.getId());
@@ -179,11 +185,8 @@ public class EnterpriseUserBindServiceImpl implements EnterpriseUserBindService
 
     @Override
     public AppAdminEnterpriseUserBindRespVO getBindEnterprise() {
-        LoginUser loginUser = getLoginUser();
-        if (null == loginUser
-                || null == loginUser.getInfo()) {
-            throw exception(MDE_ENTERPRISE_USER_BIND_NOT_EXISTS);
-        }
+        LoginUser loginUser = validAppAdmin();
+
         EnterpriseUserBindDO userBindDO = enterpriseUserBindMapper
                 .selectByEnterpriseIdAndUserId(
                         Long.valueOf(loginUser.getInfo().get(LoginUser.INFO_KEY_DATA_ID)), loginUser.getId());
@@ -191,12 +194,89 @@ public class EnterpriseUserBindServiceImpl implements EnterpriseUserBindService
             throw exception(MDE_ENTERPRISE_USER_BIND_NOT_EXISTS);
         }
 
+        // 设置企业的信息
         AppAdminEnterpriseUserBindRespVO resp = EnterpriseConvert.INSTANCE.convert7(userBindDO);
         EnterpriseDO enterprise = enterpriseMapper.selectById(userBindDO.getEnterpriseId());
         if (null != enterprise) {
             resp.setEnterpriseId(enterprise.getId());
             resp.setEnterpriseName(enterprise.getName());
+            resp.setLogoUrl(enterprise.getLogoUrl());
         }
         return resp;
     }
+
+    @Override
+    @DSTransactional
+    public boolean save(AppAdminUserSaveReqVO reqVO) {
+        EnterpriseUserBindDO userBindDO = enterpriseUserBindMapper.selectById(reqVO.getId());
+        if (null == userBindDO) {
+            throw exception(MDE_ENTERPRISE_USER_BIND_NOT_EXISTS);
+        }
+        userBindDO.setName(reqVO.getName());
+        userBindDO.setSex(reqVO.getSex());
+        userBindDO.setPhone(reqVO.getPhone());
+        userBindDO.setAvatar(reqVO.getAvatar());
+        userBindDO.setEmail(reqVO.getEmail());
+        return enterpriseUserBindMapper.updateById(userBindDO) > 1;
+    }
+
+    @Override
+    @DSTransactional
+    public boolean disable(Long id) {
+        EnterpriseUserBindDO userBindDO = valid(id);
+        if (MendunerStatusEnum.DISABLE.getStatus().equals(userBindDO.getStatus())) {
+            throw exception(MDE_ENTERPRISE_USER_BIND_IS_DISABLE);
+        }
+        userBindDO.setStatus(MendunerStatusEnum.DISABLE.getStatus());
+        return enterpriseUserBindMapper.updateById(userBindDO) == 1;
+    }
+
+    @Override
+    @DSTransactional
+    public boolean enable(Long id) {
+        EnterpriseUserBindDO userBindDO = valid(id);
+        if (MendunerStatusEnum.ENABLE.getStatus().equals(userBindDO.getStatus())) {
+            return true;
+        }
+        userBindDO.setStatus(MendunerStatusEnum.ENABLE.getStatus());
+        return enterpriseUserBindMapper.updateById(userBindDO) == 1;
+    }
+
+    private EnterpriseUserBindDO valid(Long id) {
+        LoginUser loginUser = validAppAdmin();
+
+        // 查找操作的目标用户
+        EnterpriseUserBindDO userBindDO = enterpriseUserBindMapper
+                .selectByEnterpriseIdAndId(
+                        Long.valueOf(loginUser.getInfo().get(LoginUser.INFO_KEY_DATA_ID)), id);
+
+        if (null == userBindDO) {
+            throw exception(MDE_ENTERPRISE_USER_BIND_NOT_EXISTS);
+        }
+        if (userBindDO.getUserId().equals(loginUser.getId())) {
+            throw exception(MDE_ENTERPRISE_USER_BIND_IS_ADMIN);
+        }
+        return userBindDO;
+    }
+
+    /**
+     * 校验是否app 管理员用户
+     **/
+    private LoginUser validAppAdmin() {
+        LoginUser loginUser = getLoginUser();
+
+        // 判断操作者是否有权限操作
+        if (!UserTypeEnum.MEMBER_ADMIN.getValue()
+                .equals(loginUser.getUserType())) {
+            throw exception(FORBIDDEN);
+        }
+        return loginUser;
+    }
+
+    @Override
+    public PageResult<AppAdminEnterpriseUserBindRespVO> selectPage(AppAdminUserPageReqVO reqVO) {
+        LoginUser loginUser = validAppAdmin();
+        Long enterpriseId = Long.valueOf(loginUser.getInfo().get(LoginUser.INFO_KEY_DATA_ID));
+        return enterpriseUserBindMapper.selectPage(reqVO, enterpriseId);
+    }
 }

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

@@ -74,15 +74,15 @@ public interface IndustryService {
      * 根据行业id获得地区列表
      *
      * @param id 查询条件
-     * @return 地区列表
+     * @return 列表
      **/
-    List<AppIndustryChildrenRespVO> getIndustryIdChildren(Long id);
+    List<AppIndustryChildrenRespVO> getChildren(Long id);
 
     /**
-     * 获取中国的行业
+     * 获取行业列表
      * @param reqVO 查询条件
      **/
-    List<AppIndustryChildrenRespVO> getIndustry(IndustryListReqVO reqVO);
+    List<AppIndustryChildrenRespVO> getIndustry(AppIndustryListReqVO reqVO);
 
     /**
      * 获取行业信息

+ 11 - 13
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/industry/IndustryServiceImpl.java

@@ -156,43 +156,41 @@ public class IndustryServiceImpl implements IndustryService {
     }
 
     @Override
-    public List<AppIndustryChildrenRespVO> getIndustry(IndustryListReqVO reqVO) {
-        List<IndustryDO> areaList = industryMapper.selectList(reqVO);
-        if (null == areaList) {
+    public List<AppIndustryChildrenRespVO> getIndustry(AppIndustryListReqVO reqVO) {
+        List<IndustryDO> list = industryMapper.selectList(reqVO);
+        if (null == list) {
             return null;
         }
-        List<AppIndustryChildrenRespVO> convertList = IndustryConvert.INSTANCE.convertList(areaList);
+        List<AppIndustryChildrenRespVO> convertList = IndustryConvert.INSTANCE.convertList(list);
         List<AppIndustryChildrenRespVO> convertListSort = convertList.stream()
                 .sorted(Comparator.comparing(AppIndustryChildrenRespVO::getLevel))
                 .collect(Collectors.toList());
         // 获取父节点并设置path
-        List<AppIndustryChildrenRespVO> result = convertListSort.stream()
+        return convertListSort.stream()
                 .filter(root -> root.getParentId() == 0)
-                .map(root -> {
+                .peek(root -> {
                     root.setPath(String.valueOf(root.getId()));
                     root.setChildren(getChildren(root, convertListSort));
-                    return root;
                 })
                 .collect(Collectors.toList());
-        return result;
     }
 
     @Override
     @Cacheable(cacheNames = RedisKeyConstants.MDE_INDUSTRY_CHILDREN, key = "#id", unless = "#result.size==0")
-    public List<AppIndustryChildrenRespVO> getIndustryIdChildren(Long id) {
+    public List<AppIndustryChildrenRespVO> getChildren(Long id) {
         List<AppIndustryChildrenRespVO> children = new LinkedList<>();
         // 遍历每一层
         Collection<Long> parentIds = Collections.singleton(id);
         for (int i = 0; i < Short.MAX_VALUE; i++) { // 使用 Short.MAX_VALUE 避免 bug 场景下,存在死循环
             // 查询当前层,所有的子节点
-            List<IndustryDO> areaDOList = industryMapper.selectListByParentId(parentIds);
+            List<IndustryDO> list = industryMapper.selectListByParentId(parentIds);
             // 1. 如果没有子节点,则结束遍历
-            if (CollUtil.isEmpty(areaDOList)) {
+            if (CollUtil.isEmpty(list)) {
                 break;
             }
             // 2. 如果有子节点,继续遍历
-            children.addAll(IndustryConvert.INSTANCE.convertList(areaDOList));
-            parentIds = convertSet(areaDOList, IndustryDO::getId);
+            children.addAll(IndustryConvert.INSTANCE.convertList(list));
+            parentIds = convertSet(list, IndustryDO::getId);
         }
         return children;
     }

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

@@ -8,6 +8,7 @@ import com.citu.module.menduner.system.controller.app.job.vo.AppJobAdvertisedDet
 import com.citu.module.menduner.system.controller.app.job.vo.AppJobAdvertisedHomeRespVO;
 import com.citu.module.menduner.system.controller.app.job.vo.AppJobAdvertisedPageReqVO;
 import com.citu.module.menduner.system.controller.appadmin.job.vo.AppAdminJobReqVO;
+import com.citu.module.menduner.system.controller.appadmin.job.vo.AppAdminJobSimpleRespVO;
 import com.citu.module.menduner.system.controller.base.CommonRespVO;
 import com.citu.module.menduner.system.controller.base.job.JobAdvertisedPageReqVO;
 import com.citu.module.menduner.system.controller.base.job.JobAdvertisedSaveReqVO;
@@ -45,6 +46,7 @@ public interface JobAdvertisedService {
      */
     void deleteJobAdvertised(Long id);
 
+
     /**
      * 获得门墩儿-招聘职位
      *
@@ -61,6 +63,8 @@ public interface JobAdvertisedService {
      */
     PageResult<JobAdvertisedDO> getJobAdvertisedPage(JobAdvertisedPageReqVO pageReqVO);
 
+    // ========== 求职者 ==========
+
     /**
      * 获取推荐招聘职位分页
      *
@@ -93,6 +97,7 @@ public interface JobAdvertisedService {
      **/
     PageResult<AppEnterpriseJobHomeRespVO> getHotEnterpriseJobPage(PageParam pageParam);
 
+
     /**
      * 获取职位详情
      *
@@ -144,4 +149,10 @@ public interface JobAdvertisedService {
      * 刷新职位
      **/
     void refresh(List<Long> ids);
+
+    /**
+     * 获取发布的职位
+     * @return 简易职位信息的集合
+     **/
+    List<AppAdminJobSimpleRespVO> getList();
 }

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

@@ -13,6 +13,7 @@ import com.citu.module.menduner.system.controller.app.job.vo.AppJobAdvertisedDet
 import com.citu.module.menduner.system.controller.app.job.vo.AppJobAdvertisedHomeRespVO;
 import com.citu.module.menduner.system.controller.app.job.vo.AppJobAdvertisedPageReqVO;
 import com.citu.module.menduner.system.controller.appadmin.job.vo.AppAdminJobReqVO;
+import com.citu.module.menduner.system.controller.appadmin.job.vo.AppAdminJobSimpleRespVO;
 import com.citu.module.menduner.system.controller.base.CommonRespVO;
 import com.citu.module.menduner.system.controller.base.contact.AppEnterpriseUserContactRespVO;
 import com.citu.module.menduner.system.controller.base.job.JobAdvertisedPageReqVO;
@@ -30,10 +31,7 @@ import org.springframework.validation.annotation.Validated;
 import javax.annotation.Resource;
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
+import java.util.*;
 import java.util.stream.Collectors;
 
 import static com.citu.framework.common.exception.enums.GlobalErrorCodeConstants.FORBIDDEN;
@@ -467,4 +465,9 @@ public class JobAdvertisedServiceImpl implements JobAdvertisedService {
             jobAdvertisedMapper.updateById(job);
         }
     }
+
+    @Override
+    public List<AppAdminJobSimpleRespVO> getList() {
+        return jobAdvertisedMapper.list();
+    }
 }

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/job/JobIntegrationServiceImpl.java

@@ -166,7 +166,7 @@ public class JobIntegrationServiceImpl implements JobIntegrationService {
 
         if (null != reqVO.getAreaIds() && reqVO.getAreaIds().size() <= 1) {
             // 不为空且只有一个区域id的情况
-            Set<Long> areaIds = areaService.getAreaIdChildrenIds(reqVO.getAreaIds().get(0));
+            Set<Long> areaIds = areaService.getChildrenIds(reqVO.getAreaIds().get(0));
             if (!areaIds.isEmpty()) {
                 List<Long> areaIdList = new ArrayList<>(areaIds);
                 // 包括自己

+ 2 - 2
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/position/PositionService.java

@@ -83,7 +83,7 @@ public interface PositionService {
      * @param id 查询条件
      * @return 职位列表
      **/
-    List<AppPositionChildrenRespVO> getPositionIdChildren(Long id);
+    List<AppPositionChildrenRespVO> getChildren(Long id);
 
     /**
      * 获取职位信息
@@ -91,7 +91,7 @@ public interface PositionService {
      * @param reqVO 查询条件
      * @return 职位列表
      **/
-    List<AppPositionChildrenRespVO> getPosition(PositionListReqVO reqVO);
+    List<AppPositionChildrenRespVO> getPosition(AppPositionListReqVO reqVO);
 
     /**
      * 获取职位信息

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

@@ -172,12 +172,12 @@ public class PositionServiceImpl implements PositionService {
     }
 
     @Override
-    public List<AppPositionChildrenRespVO> getPosition(PositionListReqVO reqVO) {
-        List<PositionDO> areaList = positionMapper.selectList(reqVO);
-        if (null == areaList) {
+    public List<AppPositionChildrenRespVO> getPosition(AppPositionListReqVO reqVO) {
+        List<PositionDO> list = positionMapper.selectList(reqVO);
+        if (null == list) {
             return null;
         }
-        List<AppPositionChildrenRespVO> convertList = PositionConvert.INSTANCE.convertList(areaList);
+        List<AppPositionChildrenRespVO> convertList = PositionConvert.INSTANCE.convertList(list);
 
         List<AppPositionChildrenRespVO> convertListSort = convertList.stream()
                 .sorted(Comparator.comparing(AppPositionChildrenRespVO::getLevel))
@@ -196,20 +196,20 @@ public class PositionServiceImpl implements PositionService {
 
     @Override
     @Cacheable(cacheNames = RedisKeyConstants.MDE_POSITION_CHILDREN, key = "#id", unless = "#result.size==0")
-    public List<AppPositionChildrenRespVO> getPositionIdChildren(Long id) {
+    public List<AppPositionChildrenRespVO> getChildren(Long id) {
         List<AppPositionChildrenRespVO> children = new LinkedList<>();
         // 遍历每一层
         Collection<Long> parentIds = Collections.singleton(id);
         for (int i = 0; i < Short.MAX_VALUE; i++) { // 使用 Short.MAX_VALUE 避免 bug 场景下,存在死循环
             // 查询当前层,所有的子节点
-            List<PositionDO> areaDOList = positionMapper.selectListByParentId(parentIds);
+            List<PositionDO> list = positionMapper.selectListByParentId(parentIds);
             // 1. 如果没有子节点,则结束遍历
-            if (CollUtil.isEmpty(areaDOList)) {
+            if (CollUtil.isEmpty(list)) {
                 break;
             }
             // 2. 如果有子节点,继续遍历
-            children.addAll(PositionConvert.INSTANCE.convertList(areaDOList));
-            parentIds = convertSet(areaDOList, PositionDO::getId);
+            children.addAll(PositionConvert.INSTANCE.convertList(list));
+            parentIds = convertSet(list, PositionDO::getId);
         }
         return children;
     }

+ 26 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/skill/SkillService.java

@@ -1,5 +1,8 @@
 package com.citu.module.menduner.system.service.skill;
 
+import com.citu.module.menduner.system.controller.app.skill.vo.AppSkillChildrenRespVO;
+import com.citu.module.menduner.system.controller.app.skill.vo.AppSkillListReqVO;
+import com.citu.module.menduner.system.controller.app.skill.vo.AppSkillSimpleRespVO;
 import com.citu.module.menduner.system.controller.base.skill.SkillListReqVO;
 import com.citu.module.menduner.system.controller.base.skill.SkillSaveReqVO;
 import com.citu.module.menduner.system.dal.dataobject.skill.SkillDO;
@@ -52,4 +55,27 @@ public interface SkillService {
      */
     List<SkillDO> getSkillList(SkillListReqVO listReqVO);
 
+    // ========== 求职者 ==========
+
+    /**
+     * 根据技能id获得地区列表
+     *
+     * @param id 查询条件
+     * @return 列表
+     **/
+    List<AppSkillChildrenRespVO> getChildren(Long id);
+
+    /**
+     * 获取技能列表
+     * @param reqVO 查询条件
+     **/
+    List<AppSkillChildrenRespVO> getSkill(AppSkillListReqVO reqVO);
+
+    /**
+     * 获取技能信息
+     *
+     * @param reqVO 查询条件
+     **/
+    List<AppSkillSimpleRespVO> getSkillList(AppSkillListReqVO reqVO);
+
 }

+ 75 - 2
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/skill/SkillServiceImpl.java

@@ -1,18 +1,29 @@
 package com.citu.module.menduner.system.service.skill;
 
+import cn.hutool.core.collection.CollUtil;
 import com.citu.framework.common.util.object.BeanUtils;
+import com.citu.module.menduner.system.controller.app.industry.vo.AppIndustryChildrenRespVO;
+import com.citu.module.menduner.system.controller.app.skill.vo.AppSkillChildrenRespVO;
+import com.citu.module.menduner.system.controller.app.skill.vo.AppSkillListReqVO;
+import com.citu.module.menduner.system.controller.app.skill.vo.AppSkillSimpleRespVO;
 import com.citu.module.menduner.system.controller.base.skill.SkillListReqVO;
 import com.citu.module.menduner.system.controller.base.skill.SkillSaveReqVO;
+import com.citu.module.menduner.system.convert.IndustryConvert;
+import com.citu.module.menduner.system.convert.SkillConvert;
+import com.citu.module.menduner.system.dal.dataobject.industry.IndustryDO;
 import com.citu.module.menduner.system.dal.dataobject.skill.SkillDO;
 import com.citu.module.menduner.system.dal.mysql.skill.SkillMapper;
+import com.citu.module.menduner.system.dal.redis.RedisKeyConstants;
+import org.springframework.cache.annotation.Cacheable;
 import org.springframework.stereotype.Service;
 import org.springframework.validation.annotation.Validated;
 
 import javax.annotation.Resource;
-import java.util.List;
-import java.util.Objects;
+import java.util.*;
+import java.util.stream.Collectors;
 
 import static com.citu.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static com.citu.framework.common.util.collection.CollectionUtils.convertSet;
 import static com.citu.module.menduner.system.enums.ErrorCodeConstants.*;
 
 /**
@@ -131,4 +142,66 @@ public class SkillServiceImpl implements SkillService {
         return skillMapper.selectList(listReqVO);
     }
 
+    @Override
+    @Cacheable(cacheNames = RedisKeyConstants.MDE_SKILL_CHILDREN, key = "#id", unless = "#result.size==0")
+    public List<AppSkillChildrenRespVO> getChildren(Long id) {
+        List<AppSkillChildrenRespVO> children = new LinkedList<>();
+        // 遍历每一层
+        Collection<Long> parentIds = Collections.singleton(id);
+        for (int i = 0; i < Short.MAX_VALUE; i++) { // 使用 Short.MAX_VALUE 避免 bug 场景下,存在死循环
+            // 查询当前层,所有的子节点
+            List<SkillDO> list = skillMapper.selectListByParentId(parentIds);
+            // 1. 如果没有子节点,则结束遍历
+            if (CollUtil.isEmpty(list)) {
+                break;
+            }
+            // 2. 如果有子节点,继续遍历
+            children.addAll(SkillConvert.INSTANCE.convertList(list));
+            parentIds = convertSet(list, SkillDO::getId);
+        }
+        return children;
+    }
+
+    /**
+     * 递归查询子节点
+     *
+     * @param root 根节点
+     * @param all  所有节点
+     * @return 根节点信息
+     */
+    private List<AppSkillChildrenRespVO> getChildren(AppSkillChildrenRespVO root, List<AppSkillChildrenRespVO> all) {
+        return all.stream()
+                .filter(child -> Objects.equals(child.getParentId(), root.getId()))
+                .map(child -> {
+                    child.setPath(root.getPath() + "," + child.getId());
+                    child.setChildren(getChildren(child, all));
+                    return child;
+                })
+                .collect(Collectors.toList());
+    }
+
+    @Override
+    public List<AppSkillChildrenRespVO> getSkill(AppSkillListReqVO reqVO) {
+        List<SkillDO> list = skillMapper.selectList(reqVO);
+        if (null == list) {
+            return null;
+        }
+        List<AppSkillChildrenRespVO> convertList = SkillConvert.INSTANCE.convertList(list);
+        List<AppSkillChildrenRespVO> convertListSort = convertList.stream()
+                .sorted(Comparator.comparing(AppSkillChildrenRespVO::getLevel))
+                .collect(Collectors.toList());
+        // 获取父节点并设置path
+        return convertListSort.stream()
+                .filter(root -> root.getParentId() == 0)
+                .peek(root -> {
+                    root.setPath(String.valueOf(root.getId()));
+                    root.setChildren(getChildren(root, convertListSort));
+                })
+                .collect(Collectors.toList());
+    }
+
+    @Override
+    public List<AppSkillSimpleRespVO> getSkillList(AppSkillListReqVO reqVO) {
+        return SkillConvert.INSTANCE.convertList2(skillMapper.selectList(reqVO));
+    }
 }

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

@@ -165,6 +165,8 @@
 # ========== 企业登录用户 1_200_008_000 ==========
 1_200_008_001=Enterprise login user does not exist
 1_200_008_002=Name cannot be empty
+1_200_008_003=The account has been disabled
+1_200_008_004=This account is an administrator account and cannot be operated
 # ========== 企业岗位信息 1_200_009_000 ==========
 1_200_009_001=Enterprise position information does not exist
 1_200_009_002=The Chinese name of the position cannot be empty

+ 2 - 0
menduner/menduner-system-biz/src/main/resources/i18n/messages_zh_CN.properties

@@ -165,6 +165,8 @@
 # ========== 企业登录用户 1_200_008_000 ==========
 1_200_008_001=企业登录用户不存在
 1_200_008_002=名称不能为空
+1_200_008_003=该账户已被禁用
+1_200_008_004=该账户为管理员账户,无法操作
 # ========== 企业岗位信息 1_200_009_000 ==========
 1_200_009_001=企业岗位信息不存在
 1_200_009_002=岗位中文名称不能为空

+ 2 - 0
menduner/pom.xml

@@ -16,6 +16,8 @@
         <module>menduner-common</module>
         <module>menduner-system-api</module>
         <module>menduner-system-biz</module>
+        <module>menduner-reward-api</module>
+        <module>menduner-reward-biz</module>
     </modules>
     <description>
         门墩儿相关

+ 0 - 4
pom.xml

@@ -22,10 +22,6 @@
         <module>citu-module-mall</module>
         <module>citu-module-erp</module>
         <module>citu-module-crm</module>
-
-        <module>menduner</module>
-        <module>menduner/menduner-reward-api</module>
-        <module>menduner/menduner-reward-biz</module>
     </modules>
 
     <name>${project.artifactId}</name>