Quellcode durchsuchen

公司认证,发布职位

Your Name vor 8 Monaten
Ursprung
Commit
e9bb5941ca
36 geänderte Dateien mit 695 neuen und 122 gelöschten Zeilen
  1. 1 0
      pom.xml
  2. 3 0
      src/main/java/com/sqx/modules/app/entity/UserEntity.java
  3. 16 0
      src/main/java/com/sqx/modules/app/service/impl/UserServiceImpl.java
  4. 39 0
      src/main/java/com/sqx/modules/firstLogin/control/PostPreferenceController.java
  5. 1 1
      src/main/java/com/sqx/modules/firstLogin/control/UserFirstRegistController.java
  6. 9 0
      src/main/java/com/sqx/modules/firstLogin/dao/PostPreferenceDao.java
  7. 11 0
      src/main/java/com/sqx/modules/firstLogin/entity/PostPreference.java
  8. 2 0
      src/main/java/com/sqx/modules/firstLogin/entity/PostSkill.java
  9. 7 0
      src/main/java/com/sqx/modules/firstLogin/service/PostPreferenceService.java
  10. 11 0
      src/main/java/com/sqx/modules/firstLogin/service/impl/PostPreferenceServiceImpl.java
  11. 2 0
      src/main/java/com/sqx/modules/interviewRecord/entity/InterviewRecord.java
  12. 50 0
      src/main/java/com/sqx/modules/message/controller/NoticeController.java
  13. 9 0
      src/main/java/com/sqx/modules/message/dao/NoticeDao.java
  14. 20 0
      src/main/java/com/sqx/modules/message/entity/Notice.java
  15. 8 0
      src/main/java/com/sqx/modules/message/service/NoticeService.java
  16. 11 0
      src/main/java/com/sqx/modules/message/service/impl/NoticeServiceImpl.java
  17. 3 1
      src/main/java/com/sqx/modules/pay/service/PayDetailsService.java
  18. 2 3
      src/main/java/com/sqx/modules/resumes/controller/CompanyController.java
  19. 0 6
      src/main/java/com/sqx/modules/resumes/controller/ResumesController.java
  20. 42 7
      src/main/java/com/sqx/modules/resumes/controller/app/AppCompanyController.java
  21. 14 1
      src/main/java/com/sqx/modules/resumes/controller/app/AppPostPushController.java
  22. 8 4
      src/main/java/com/sqx/modules/resumes/controller/app/AppResumesController.java
  23. 3 0
      src/main/java/com/sqx/modules/resumes/dao/PostPushDao.java
  24. 3 0
      src/main/java/com/sqx/modules/resumes/dao/ResumesDao.java
  25. 4 2
      src/main/java/com/sqx/modules/resumes/entity/Company.java
  26. 9 0
      src/main/java/com/sqx/modules/resumes/entity/HotVo.java
  27. 1 0
      src/main/java/com/sqx/modules/resumes/entity/PostPush.java
  28. 29 0
      src/main/java/com/sqx/modules/resumes/entity/ResumesListDto.java
  29. 4 1
      src/main/java/com/sqx/modules/resumes/service/CompanyService.java
  30. 1 0
      src/main/java/com/sqx/modules/resumes/service/PostPushService.java
  31. 2 0
      src/main/java/com/sqx/modules/resumes/service/ResumesService.java
  32. 88 14
      src/main/java/com/sqx/modules/resumes/service/impl/CompanyServiceImpl.java
  33. 192 75
      src/main/java/com/sqx/modules/resumes/service/impl/PostPushServiceImpl.java
  34. 14 3
      src/main/java/com/sqx/modules/resumes/service/impl/ResumesServiceImpl.java
  35. 15 2
      src/main/resources/mapper/resumes/PostPushDao.xml
  36. 61 2
      src/main/resources/mapper/resumes/ResumesDao.xml

+ 1 - 0
pom.xml

@@ -65,6 +65,7 @@
             <scope>system</scope>
             <systemPath>${project.basedir}/lib/activation.jar</systemPath>
         </dependency>
+
         <dependency>
             <groupId>mail</groupId>
             <artifactId>email</artifactId>

+ 3 - 0
src/main/java/com/sqx/modules/app/entity/UserEntity.java

@@ -235,4 +235,7 @@ public class UserEntity implements Serializable {
 
     @TableField(exist = false)
     private BigDecimal money;
+
+    private Integer vipPostTimes;
+    private Integer vipDueTimes;
 }

+ 16 - 0
src/main/java/com/sqx/modules/app/service/impl/UserServiceImpl.java

@@ -44,9 +44,15 @@ import com.sqx.modules.app.service.UserMoneyDetailsService;
 import com.sqx.modules.app.service.UserService;
 import com.sqx.modules.app.utils.JwtUtils;
 import com.sqx.modules.app.utils.UserConstantInterface;
+import com.sqx.modules.chat.entity.ChatContent;
+import com.sqx.modules.chat.entity.ChatConversation;
+import com.sqx.modules.chat.service.ChatContentService;
+import com.sqx.modules.chat.service.ChatConversationService;
 import com.sqx.modules.common.entity.CommonInfo;
 import com.sqx.modules.common.service.CommonInfoService;
 import com.sqx.modules.file.utils.Md5Utils;
+import com.sqx.modules.interviewRecord.entity.InterviewRecord;
+import com.sqx.modules.interviewRecord.service.InterviewRecordService;
 import com.sqx.modules.invite.service.InviteService;
 import com.sqx.modules.message.entity.MessageInfo;
 import com.sqx.modules.message.service.MessageService;
@@ -116,6 +122,12 @@ public class UserServiceImpl extends ServiceImpl<UserDao, UserEntity> implements
     private UserMoneyDetailsDao detailsDao;
     @Autowired
     private MsgService msgService;
+    @Autowired
+    private ChatConversationService chatConversationService;
+    @Autowired
+    private ChatContentService chatContentService;
+    @Autowired
+    private InterviewRecordService interviewRecordService;
 
     @Override
     public UserEntity queryByPhone(String phone) {
@@ -1151,12 +1163,16 @@ public class UserServiceImpl extends ServiceImpl<UserDao, UserEntity> implements
         int browseCount = userBrowseService.count(wrapper);
         int collectionCount = collectionService.count(new QueryWrapper<MyCollection>().eq("user_id", userId));
         int deliveryCount = sendRecordService.count(new QueryWrapper<SendRecord>().eq("user_id", userId));
+        int chatCount = chatConversationService.count(new QueryWrapper<ChatConversation>().eq("user_id",userId));
+        int interviewCount = interviewRecordService.count(new QueryWrapper<InterviewRecord>().eq("interviewer_id",userId));
         //浏览记录
         map.put("browseCount", browseCount);
         //收藏记录
         map.put("collectionCount", collectionCount);
         //投递记录
         map.put("deliveryCount", deliveryCount);
+        map.put("chatCount",chatCount);
+        map.put("interviewCount",interviewCount);
         return map;
 
     }

+ 39 - 0
src/main/java/com/sqx/modules/firstLogin/control/PostPreferenceController.java

@@ -0,0 +1,39 @@
+package com.sqx.modules.firstLogin.control;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.sqx.common.utils.Result;
+import com.sqx.modules.app.annotation.Login;
+import com.sqx.modules.firstLogin.entity.PostPreference;
+import com.sqx.modules.firstLogin.service.PostPreferenceService;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+@RestController
+@RequestMapping("app/postPreference")
+public class PostPreferenceController {
+    @Autowired
+    private PostPreferenceService postPreferenceServer;
+    @Login
+    @GetMapping("getPostPreference")
+    @ApiOperation("获取岗位偏向")
+    public Result getPostPreference(Long ruleClassifyId){
+        return Result.success().put("data",postPreferenceServer.getBaseMapper().selectList(new QueryWrapper<PostPreference>().eq("rule_classify_id",ruleClassifyId).eq("is_use",1)));
+    }
+    @PostMapping("addPostPreference")
+    @ApiOperation("增加岗位偏向")
+    public Result addPostPreference(@RequestBody PostPreference postPreference){
+        postPreference.setIsUse(1);
+        postPreferenceServer.saveOrUpdate(postPreference);
+        return Result.success("修改完成");
+    }
+    @PostMapping("deletePostPreference")
+    @ApiOperation("增加岗位偏向")
+    public Result deletePostPreference(Long postPreferenceId){
+        PostPreference postPreference =postPreferenceServer.getById(postPreferenceId);
+        postPreference.setIsUse(0);
+        postPreferenceServer.updateById(postPreference);
+        return Result.success("修改完成");
+    }
+
+}

+ 1 - 1
src/main/java/com/sqx/modules/firstLogin/control/UserFirstRegistController.java

@@ -106,7 +106,7 @@ public class UserFirstRegistController {
 
     @GetMapping("getPostSkill")
     @ApiOperation("获取专业技能")
-    public Result getPostSkill(PostSkill postSkill) {
+    public Result getPostSkill( PostSkill postSkill) {
         return Result.success().put("data", postSkillService.getPostSkill(postSkill));
     }
 

+ 9 - 0
src/main/java/com/sqx/modules/firstLogin/dao/PostPreferenceDao.java

@@ -0,0 +1,9 @@
+package com.sqx.modules.firstLogin.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.sqx.modules.firstLogin.entity.PostPreference;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface PostPreferenceDao extends BaseMapper<PostPreference> {
+}

+ 11 - 0
src/main/java/com/sqx/modules/firstLogin/entity/PostPreference.java

@@ -0,0 +1,11 @@
+package com.sqx.modules.firstLogin.entity;
+
+import lombok.Data;
+
+@Data
+public class PostPreference {
+    private Integer postPreferenceId;
+    private Integer ruleClassifyId;
+    private String preferenceName;
+    private Integer isUse;
+}

+ 2 - 0
src/main/java/com/sqx/modules/firstLogin/entity/PostSkill.java

@@ -42,6 +42,8 @@ public class PostSkill implements Serializable {
      * 更新时间
      */
     private DateTime updateTime;
+
+    private Integer ruleClassifyId;
     @TableField(exist = false)
     private List<PostSkill> childrenList;
 }

+ 7 - 0
src/main/java/com/sqx/modules/firstLogin/service/PostPreferenceService.java

@@ -0,0 +1,7 @@
+package com.sqx.modules.firstLogin.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.sqx.modules.firstLogin.entity.PostPreference;
+
+public interface PostPreferenceService extends IService<PostPreference> {
+}

+ 11 - 0
src/main/java/com/sqx/modules/firstLogin/service/impl/PostPreferenceServiceImpl.java

@@ -0,0 +1,11 @@
+package com.sqx.modules.firstLogin.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.sqx.modules.firstLogin.dao.PostPreferenceDao;
+import com.sqx.modules.firstLogin.entity.PostPreference;
+import com.sqx.modules.firstLogin.service.PostPreferenceService;
+import org.springframework.stereotype.Service;
+
+@Service
+public class PostPreferenceServiceImpl extends ServiceImpl<PostPreferenceDao,PostPreference> implements PostPreferenceService {
+}

+ 2 - 0
src/main/java/com/sqx/modules/interviewRecord/entity/InterviewRecord.java

@@ -117,6 +117,8 @@ public class InterviewRecord implements Serializable {
     private Integer interviewResultType;
     private String  interviewRecordType;
     private Integer interviewProcesses;
+    private Integer sign;
+    private String  signTime;
     /**
      * 详细地址
      */

+ 50 - 0
src/main/java/com/sqx/modules/message/controller/NoticeController.java

@@ -0,0 +1,50 @@
+package com.sqx.modules.message.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.sqx.common.utils.Result;
+import com.sqx.modules.message.entity.Notice;
+import com.sqx.modules.message.service.NoticeService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.HashMap;
+
+@RestController
+@Api(value = "公告管理", tags = {"公告管理"})
+@RequestMapping(value = "/app/message")
+public class NoticeController {
+    private final NoticeService noticeService;
+
+    public NoticeController(NoticeService noticeService) {
+        this.noticeService = noticeService;
+    }
+
+    @GetMapping("/selectNotice")
+    @ApiOperation("获取公告列表")
+    public Result selectNotice(){
+        HashMap<String,Object> map = new HashMap<>();
+        map.put("banner",noticeService.getBaseMapper().selectList(new QueryWrapper<Notice>().eq("is_use",1).eq("type",0)));
+        map.put("rule",noticeService.getBaseMapper().selectList(new QueryWrapper<Notice>().eq("is_use",1).eq("type",1)));
+        map.put("notice",noticeService.getBaseMapper().selectList(new QueryWrapper<Notice>().eq("is_use",1).eq("type",2)));
+        return  Result.success().put("data",map);
+    }
+
+    @PostMapping("/insertNotice")
+    @ApiOperation("增加或修改公告")
+    public  Result insertNotice(Notice notice){
+        noticeService.saveOrUpdate(notice);
+        return Result.success();
+    }
+    @PostMapping("/deleteNotice")
+    @ApiOperation("增加或修改公告")
+    public  Result deleteNotice(Long noticeId){
+        Notice notice = noticeService.getById(noticeId);
+        notice.setIsUse(0);
+        noticeService.saveOrUpdate(notice);
+        return Result.success();
+    }
+}

+ 9 - 0
src/main/java/com/sqx/modules/message/dao/NoticeDao.java

@@ -0,0 +1,9 @@
+package com.sqx.modules.message.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.sqx.modules.message.entity.Notice;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface NoticeDao extends BaseMapper<Notice> {
+}

+ 20 - 0
src/main/java/com/sqx/modules/message/entity/Notice.java

@@ -0,0 +1,20 @@
+package com.sqx.modules.message.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class Notice implements Serializable {
+    private static final long serialVersionUID = 1L;
+    @TableId(type = IdType.AUTO)
+    private  Long  noticeId;
+    private String noticeDetail;
+    private String noticeUpdateTime;
+    private Integer isUse;
+    private String noticeTitle;
+    private Integer type;
+
+}

+ 8 - 0
src/main/java/com/sqx/modules/message/service/NoticeService.java

@@ -0,0 +1,8 @@
+package com.sqx.modules.message.service;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.sqx.modules.message.entity.Notice;
+
+public interface NoticeService extends IService<Notice> {
+}

+ 11 - 0
src/main/java/com/sqx/modules/message/service/impl/NoticeServiceImpl.java

@@ -0,0 +1,11 @@
+package com.sqx.modules.message.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.sqx.modules.message.dao.NoticeDao;
+import com.sqx.modules.message.entity.Notice;
+import com.sqx.modules.message.service.NoticeService;
+import org.springframework.stereotype.Service;
+
+@Service
+public class NoticeServiceImpl extends ServiceImpl<NoticeDao, Notice> implements NoticeService{
+}

+ 3 - 1
src/main/java/com/sqx/modules/pay/service/PayDetailsService.java

@@ -1,9 +1,11 @@
 package com.sqx.modules.pay.service;
 
+import com.baomidou.mybatisplus.extension.service.IService;
 import com.sqx.common.utils.PageUtils;
 import com.sqx.common.utils.Result;
+import com.sqx.modules.pay.entity.PayDetails;
 
-public interface PayDetailsService {
+public interface PayDetailsService extends IService<PayDetails> {
 
     PageUtils selectPayDetails(int page, int limit, String startTime, String endTime, Long userId, Integer state, String userName, String orderId, Integer type, String phone);
 

+ 2 - 3
src/main/java/com/sqx/modules/resumes/controller/CompanyController.java

@@ -29,9 +29,9 @@ public class CompanyController {
     @Login
     @PostMapping("/insertCompany")
     @ApiOperation("添加企业")
-    public Result insertCompany(@RequestBody Company company,@RequestAttribute("userID")Long userID){
+    public Result insertCompany(@RequestBody Company company,@RequestAttribute("userId")Long userId){
 
-       return companyService.insertCompany(company);
+       return companyService.insertCompany(company,userId);
    }
     @PostMapping("/updateCompany")
     @ApiOperation("修改企业")
@@ -51,7 +51,6 @@ public class CompanyController {
     public Result selectCompanyByUserId(Long userId){
         return Result.success().put("data",companyService.selectCompanyByUserId(userId));
     }
-
     @GetMapping("/selectCompanyList")
     @ApiOperation("查询企业列表")
     public Result selectCompanyList(Integer page,Integer limit,String startTime, String endTime,String companyName,String companyPhone,String userName,Integer status){

+ 0 - 6
src/main/java/com/sqx/modules/resumes/controller/ResumesController.java

@@ -120,7 +120,6 @@ public class ResumesController {
         }else {
             return Result.error("未添加简历");
         }
-
     }
 
     @PostMapping("/auditResumes")
@@ -199,9 +198,4 @@ public class ResumesController {
         result.put("auditPostPushCount",auditPostPushCount);result.put("postPushCount",postPushCount);
         return Result.success().put("data",result);
     }
-
-
-
-
-
 }

+ 42 - 7
src/main/java/com/sqx/modules/resumes/controller/app/AppCompanyController.java

@@ -1,14 +1,21 @@
 package com.sqx.modules.resumes.controller.app;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.api.R;
 import com.sqx.common.utils.Result;
 import com.sqx.modules.app.annotation.Login;
 import com.sqx.modules.resumes.entity.Company;
+import com.sqx.modules.resumes.entity.CompanyUser;
+import com.sqx.modules.resumes.entity.PostPush;
 import com.sqx.modules.resumes.service.CompanyService;
+import com.sqx.modules.resumes.service.CompanyUserService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.HashMap;
+
 @RestController
 @Api(value = "企业", tags = {"企业"})
 @RequestMapping(value = "/app/company")
@@ -16,13 +23,15 @@ public class AppCompanyController {
 
     @Autowired
     private CompanyService companyService;
+    @Autowired
+    private CompanyUserService companyUserService;
 
     @Login
     @PostMapping("/insertCompany")
     @ApiOperation("添加企业")
     public Result insertCompany(@RequestBody Company company,@RequestAttribute Long userId){
         company.setUserId(userId);
-        return companyService.insertCompany(company);
+        return companyService.insertCompany(company,userId);
     }
 
     @Login
@@ -33,13 +42,35 @@ public class AppCompanyController {
         return companyService.updateCompany(company);
     }
 
+//    @Login
+//    @GetMapping("/selectCompanyByUserId")
+//    @ApiOperation("查询用户的企业")
+//    public Result selectCompanyByUserId(@RequestAttribute  Long userId){
+//        return Result.success().put("data",companyService.selectCompanyByUserId(userId));
+//    }
     @Login
-    @GetMapping("/selectCompanyByUserId")
-    @ApiOperation("查询用户的企业")
-    public Result selectCompanyByUserId(@RequestAttribute  Long userId){
-        return Result.success().put("data",companyService.selectCompanyByUserId(userId));
+    @GetMapping("selectCompanyByUserId")
+    @ApiOperation("是否是公司员工")
+    public Result isCompanyUser(@RequestAttribute("userId")Long userId){
+        CompanyUser companyUser = companyUserService.getOne(new QueryWrapper<CompanyUser>().eq("user_id",userId).eq("is_use",1));
+        if (companyUser == null){
+        QueryWrapper<Company> queryWrapper =new QueryWrapper<>();
+        queryWrapper.eq("user_id",userId).orderByDesc("update_time").last("limit 1 ");
+        Company company = companyService.getBaseMapper().selectOne(queryWrapper);
+            if(company.getStatus()==1){
+            company.setMessage("审核中");
+            return Result.success().put("data",company);
+        }else{
+                company.setMessage(company.getAuditContent());
+                return Result.success().put("data",company);
+            }
+        }
+        else {
+            Company company = companyService.getById(companyUser.getCompanyId());
+            company.setMessage("审核通过");
+            return Result.success().put("data",company);
+        }
     }
-
     @GetMapping("/selectCompanyByUserIds")
     @ApiOperation("查询用户的企业")
     public Result selectCompanyByUserIds(Long userId){
@@ -85,5 +116,9 @@ public class AppCompanyController {
     public Result listCompany(Integer page, Integer limit, String companyName, String city, String companyScope, String companyPeople){
         return companyService.listCompany(page, limit, companyName, city, companyScope, companyPeople);
     }
-
+    @GetMapping("/getCompanyPostPush")
+    @ApiOperation("获取公司岗位列表")
+    public Result getCompanyPostPush(String key, Integer page, Integer limit,Double lng,Double lat, PostPush postPush){
+        return companyService.selectCompanyPostPushList(key,postPush,page,limit,lat,lng);
+    }
 }

+ 14 - 1
src/main/java/com/sqx/modules/resumes/controller/app/AppPostPushController.java

@@ -1,5 +1,7 @@
 package com.sqx.modules.resumes.controller.app;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.api.R;
 import com.sqx.common.utils.Result;
 import com.sqx.modules.app.annotation.Login;
 import com.sqx.modules.record.service.RecordService;
@@ -24,13 +26,16 @@ public class AppPostPushController {
     @Login
     @PostMapping("/savePostPush")
     @ApiOperation("添加或修改招聘信息")
-    public Result savePostPush(@RequestBody PostPush postPush, @RequestAttribute Long userId) {
+    public Result savePostPush(@RequestBody PostPush postPush, @RequestAttribute("userId") Long userId) {
         return postPushService.savePostPush(postPush, userId);
     }
 
     @GetMapping("/getPostPushList")
     @ApiOperation("获取发布的招聘岗位列表")
     public Result getPostPushList(Integer page, Integer limit, Long userId, PostPush postPush, Integer screen,Integer isDue) {
+        if (screen == 3&&postPush.getLat()==null&&postPush.getLng()==null){
+            return  Result.error("请打开你的定位");
+        }
         return postPushService.getPostPushList(page, limit, null, null, userId, postPush, screen,isDue);
     }
 
@@ -123,4 +128,12 @@ public class AppPostPushController {
     public Result listPostPushByCompanyId(Long companyId) {
         return Result.success().put("data", postPushService.listPostPushByCompanyId(companyId));
     }
+
+    @Login
+    @GetMapping("getHotList")
+    @ApiOperation("获取热门列表")
+    public  Result getHotList(){
+        return Result.success().put("data",postPushService.getHotPost());
+    }
+
 }

+ 8 - 4
src/main/java/com/sqx/modules/resumes/controller/app/AppResumesController.java

@@ -150,13 +150,17 @@ public class AppResumesController {
     }
 
 
-    @GetMapping("/selectResumesList")
+//    @GetMapping("/selectResumesList")
+//    @ApiOperation("查询简历列表")
+//    public Result selectResumesList(Integer page, Integer limit, Long companyId, Resumes resumes, Integer screen) {
+//        return resumesService.selectResumesListByCompany(page, limit, companyId, resumes, screen);
+
+    @GetMapping("selectResumesList")
     @ApiOperation("查询简历列表")
-    public Result selectResumesList(Integer page, Integer limit, Long companyId, Resumes resumes, Integer screen) {
-        return resumesService.selectResumesListByCompany(page, limit, companyId, resumes, screen);
+    public  Result selectResumesListHr(Integer page, Integer limit){
+        return  resumesService.selectResumesListHr(page,limit);
     }
 
-
     /**
      * 导出数据 生成pdf
      *

+ 3 - 0
src/main/java/com/sqx/modules/resumes/dao/PostPushDao.java

@@ -3,6 +3,7 @@ package com.sqx.modules.resumes.dao;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.sqx.common.utils.Result;
 import com.sqx.modules.resumes.entity.PostDetails;
 import com.sqx.modules.resumes.entity.PostPush;
 import com.sqx.modules.resumes.vo.CityVo;
@@ -43,4 +44,6 @@ public interface PostPushDao extends BaseMapper<PostPush> {
     List<String> getCompanyClassify(@Param("companyId") Long companyId);
 
     IPage<PostPush> getAdminPostPushList(@Param("pages") Page<PostPush> pages, @Param("postPush") PostPush postPush, @Param("startTime") String startTime, @Param("endTime") String endTime);
+
+    List<Object> getHotPost();
 }

+ 3 - 0
src/main/java/com/sqx/modules/resumes/dao/ResumesDao.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.sqx.modules.resumes.entity.Resumes;
+import com.sqx.modules.resumes.entity.ResumesListDto;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
@@ -26,4 +27,6 @@ public interface ResumesDao extends BaseMapper<Resumes> {
     List<Resumes> exportExcelCompanyList(String startTime, String endTime, Resumes resumes);
 
     Resumes selectResumesByResumesId(@Param("userId") Long userId, @Param("resumesId") Long resumesId);
+
+    List<Object> selectResumesListHr(@Param("page")Page<ResumesListDto> page);
 }

+ 4 - 2
src/main/java/com/sqx/modules/resumes/entity/Company.java

@@ -149,7 +149,7 @@ public class Company implements Serializable {
      * 公司招聘岗位列表
      */
     @TableField(exist = false)
-    List<PostPush> postPushList;
+    Object postPushList;
 
     private String companyAllName;
     private String addressDetail;
@@ -161,12 +161,14 @@ public class Company implements Serializable {
     private String companyPeopleDevelop;
     private String photos;
     private String workDescribe;
+    private Integer isUse;
 
     @TableField(exist = false)
     private  List<HrEntity> hr;
     @TableField(exist = false)
     private List<UserEntity> userEntities;
-
+    @TableField(exist = false)
+    private String message;
     public Company() {
     }
 }

+ 9 - 0
src/main/java/com/sqx/modules/resumes/entity/HotVo.java

@@ -0,0 +1,9 @@
+package com.sqx.modules.resumes.entity;
+
+import lombok.Data;
+
+@Data
+public class HotVo {
+    private String ruleClassifyName;
+    private Integer count;
+}

+ 1 - 0
src/main/java/com/sqx/modules/resumes/entity/PostPush.java

@@ -234,6 +234,7 @@ public class PostPush implements Serializable {
     private String  welfareTag;
     private Integer type;
     private String salaryTimes;
+    private Integer orderId;
 
     public PostPush() {
     }

+ 29 - 0
src/main/java/com/sqx/modules/resumes/entity/ResumesListDto.java

@@ -0,0 +1,29 @@
+package com.sqx.modules.resumes.entity;
+
+import lombok.Data;
+
+@Data
+public class ResumesListDto {
+//    u.user_id,
+//    u.user_name,
+//    last_work.type AS work_type,
+//    last_work.company_name,
+//    last_work.skills,
+//    last_work.end_time AS last_work_end_time,
+//    last_work.work_content,
+//    e.school,
+//    e.degree,
+//    intent.rule_classify_name AS expected_position,
+//    intent.salary_range AS expected_range
+    private  Integer userId;
+    private  String userName;
+    private  String WorkType;
+    private  String companyName;
+    private  String skills;
+    private  String workContent;
+    private  String school;
+    private  String degree;
+    private  String expectedPosition;
+    private  String expectedRange;
+    private  String profession;
+}

+ 4 - 1
src/main/java/com/sqx/modules/resumes/service/CompanyService.java

@@ -4,11 +4,12 @@ package com.sqx.modules.resumes.service;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.sqx.common.utils.Result;
 import com.sqx.modules.resumes.entity.Company;
+import com.sqx.modules.resumes.entity.PostPush;
 import com.sqx.modules.utils.excel.ExcelData;
 
 public interface CompanyService extends IService<Company> {
 
-    Result insertCompany(Company company);
+    Result insertCompany(Company company,Long userId);
 
     Result updateCompany(Company company);
 
@@ -28,4 +29,6 @@ public interface CompanyService extends IService<Company> {
 
     Result listCompany(Integer page, Integer limit, String companyName, String city, String companyScope, String companyPeople);
 
+    Result selectCompanyPostPushList(String key, PostPush postPush, Integer page, Integer limit, Double lat, Double lng);
+
 }

+ 1 - 0
src/main/java/com/sqx/modules/resumes/service/PostPushService.java

@@ -55,4 +55,5 @@ public interface PostPushService extends IService<PostPush> {
 
     List<PostPush> listPostPushByCompanyId(Long companyId);
 
+    List<Object> getHotPost();
 }

+ 2 - 0
src/main/java/com/sqx/modules/resumes/service/ResumesService.java

@@ -43,4 +43,6 @@ public interface ResumesService extends IService<Resumes> {
     Result checkPower(Long resumesId, Long userId);
 
     Result updateShow(Long resumesId);
+
+    Result selectResumesListHr(Integer page, Integer limit);
 }

+ 88 - 14
src/main/java/com/sqx/modules/resumes/service/impl/CompanyServiceImpl.java

@@ -29,6 +29,7 @@ import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.time.LocalDateTime;
 import java.util.*;
 
 /**
@@ -53,17 +54,61 @@ public class CompanyServiceImpl extends ServiceImpl<CompanyDao, Company> impleme
     private CompanyUserService companyUserService;
 
 
+//    @Override
+//    public Result insertCompany(Company company) {
+//        Company oldCompany = selectCompanyByUserId(company.getUserId());
+//        if (oldCompany != null) {
+//            return Result.error("当前用户已经有企业了!");
+//        }
+//        String format = DateUtils.format(new Date());
+//        company.setCreateTime(format);
+//        company.setUpdateTime(format);
+//        company.setStatus(1);
+//        baseMapper.insert(company);
+//        MessageInfo messageInfo = new MessageInfo();
+//        messageInfo.setState("20");
+//        messageInfo.setIsSee("0");
+//        messageInfo.setContent(String.valueOf(company.getUserId()));
+//        messageService.save(messageInfo);
+//        return Result.success();
+//    }
     @Override
-    public Result insertCompany(Company company) {
-        Company oldCompany = selectCompanyByUserId(company.getUserId());
-        if (oldCompany != null) {
-            return Result.error("当前用户已经有企业了!");
+    public Result insertCompany(Company company,Long userId) {
+        QueryWrapper<Company> queryWrapper =new QueryWrapper<>();
+        queryWrapper.eq("company_all_name",company.getCompanyAllName()).eq("status",2).eq("is_use",1);
+        Company companyOne= baseMapper.selectOne(queryWrapper);
+        if (companyOne != null){
+            company.setIsUse(0);
+            company.setStatus(1);
+            company.setUpdateTime(String.valueOf(LocalDateTime.now()));
+            baseMapper.insert(company);
+            CompanyUser companyUser = new CompanyUser();
+            companyUser.setCompanyId(companyOne.getCompanyId());
+            companyUser.setUserId(userId);
+            companyUser.setCreateTime(String.valueOf(LocalDateTime.now()));
+            companyUser.setIsUse(0);
+            companyUserService.save(companyUser);
+        }else {
+                QueryWrapper<Company> queryWrapper1 = new QueryWrapper<>();
+                queryWrapper1.eq("company_all_name",company.getCompanyAllName()).eq("status",1).eq("is_use",1);
+                Company company1 =baseMapper.selectOne(queryWrapper1);
+                if (company1 != null){
+                    return Result.error("该企业正在审核中,请等待审核完成");
+                }else {
+                    company.setStatus(1);
+                    company.setIsUse(1);
+                    company.setCompanyCreateTime(String.valueOf(LocalDateTime.now()));
+                    company.setUpdateTime(String.valueOf(LocalDateTime.now()));
+                    baseMapper.insert(company);
+                    CompanyUser companyUser = new CompanyUser();
+                    companyUser.setCompanyId(company.getCompanyId());
+                    companyUser.setUserId(userId);
+                    companyUser.setCreateTime(String.valueOf(LocalDateTime.now()));
+                    companyUser.setIsUse(0);
+                    companyUserService.save(companyUser);
+                    return Result.success().put("data",company.getCompanyId());
+                }
         }
-        String format = DateUtils.format(new Date());
-        company.setCreateTime(format);
-        company.setUpdateTime(format);
-        company.setStatus(1);
-        baseMapper.insert(company);
         MessageInfo messageInfo = new MessageInfo();
         messageInfo.setState("20");
         messageInfo.setIsSee("0");
@@ -75,8 +120,6 @@ public class CompanyServiceImpl extends ServiceImpl<CompanyDao, Company> impleme
     @Override
     public Result updateCompany(Company company) {
         company.setUpdateTime(DateUtils.format(new Date()));
-        UserEntity userEntity = userService.getById(company.getUserId());
-        userEntity.setUserType(2);
         baseMapper.updateById(company);
         if (company.getStatus()!=2){
             MessageInfo messageInfo = new MessageInfo();
@@ -94,6 +137,7 @@ public class CompanyServiceImpl extends ServiceImpl<CompanyDao, Company> impleme
         for (String id : ids.split(",")) {
             Company company = baseMapper.selectById(Long.parseLong(id));
             UserEntity userEntity = userService.selectUserById(company.getUserId());
+            CompanyUser companyUser = companyUserService.getOne(new QueryWrapper<CompanyUser>().eq("company_id",company.getCompanyId()).eq("use_id",company.getUserId()));
             MessageInfo messageInfo = new MessageInfo();
             messageInfo.setContent(content);
             messageInfo.setTitle("企业审核通知");
@@ -109,6 +153,8 @@ public class CompanyServiceImpl extends ServiceImpl<CompanyDao, Company> impleme
                     company.setStatus(2);
                     company.setAuditContent("通过");
                     userEntity.setUserType(2);
+                    companyUser.setIsUse(1);
+                    companyUserService.updateById(companyUser);
                     userService.updateById(userEntity);
                     msgList.add("审核通过");
                 } else {
@@ -129,8 +175,17 @@ public class CompanyServiceImpl extends ServiceImpl<CompanyDao, Company> impleme
         return Result.success();
     }
 
+    public Result leaveCompany(Long userId){
+        QueryWrapper<CompanyUser> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("user_id",userId).eq("is_use",1);
+        CompanyUser companyUser =companyUserService.getOne(queryWrapper);
+        companyUser.setIsUse(0);
+        companyUserService.save(companyUser);
+        return Result.success().put("data","退出当前公司成功");
+    }
     @Override
     public Company selectCompanyByUserId(Long userId) {
+
         return baseMapper.selectOne(new QueryWrapper<Company>().eq("user_id", userId));
     }
 
@@ -299,11 +354,30 @@ public class CompanyServiceImpl extends ServiceImpl<CompanyDao, Company> impleme
 
             return Result.success().put("data", companyIPage);
         }
+    }
 
-
-
-
+    @Override
+    public Result selectCompanyPostPushList(String key, PostPush postPush, Integer page, Integer limit, Double lat, Double lng) {
+        QueryWrapper<Company> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("status",1).eq("is_use",1).like("company_all_name",key);
+        List<Company> companies = baseMapper.selectList(queryWrapper);
+        for (Company company :companies){
+            postPush.setCompanyId(company.getCompanyId());
+            company.setPostPushList( postPushService.getPostPushList(page,limit,lng,lat,null,postPush,null,null));
+        }
+        return Result.success().put("data",companies);
     }
 
+//    @Override
+//    public Result selectCompanyPostPushList(String key, Integer page, Integer limit,PostPush postPush, Double lng, Double lat) {
+//        QueryWrapper<Company> queryWrapper = new QueryWrapper<>();
+//        queryWrapper.eq("status",1).eq("is_use",1).like("company_all_name",key);
+//        List<Company> companies = baseMapper.selectList(queryWrapper);
+//        for (Company company :companies){
+//            postPush.setCompanyId(company.getCompanyId());
+//            company.setPostPushList((List<PostPush>) postPushService.getPostPushList(page,limit,lng,lat,null,postPush,null,null));
+//        }
+//        return Result.success().put("data",companies);
+//    }
 
 }

+ 192 - 75
src/main/java/com/sqx/modules/resumes/service/impl/PostPushServiceImpl.java

@@ -9,7 +9,6 @@ import com.sqx.common.utils.DateUtils;
 import com.sqx.common.utils.Result;
 import com.sqx.modules.app.entity.UserBrowse;
 import com.sqx.modules.app.entity.UserEntity;
-import com.sqx.modules.app.entity.UserMoney;
 import com.sqx.modules.app.entity.UserMoneyDetails;
 import com.sqx.modules.app.service.UserBrowseService;
 import com.sqx.modules.app.service.UserMoneyDetailsService;
@@ -20,23 +19,25 @@ import com.sqx.modules.common.service.CommonInfoService;
 import com.sqx.modules.firstLogin.service.HrService;
 import com.sqx.modules.myCollection.entity.MyCollection;
 import com.sqx.modules.myCollection.service.MyCollectionService;
+import com.sqx.modules.pay.entity.PayDetails;
+import com.sqx.modules.pay.service.PayDetailsService;
 import com.sqx.modules.resumes.dao.PostPushDao;
 import com.sqx.modules.resumes.dao.RuleClassifyDao;
 import com.sqx.modules.resumes.entity.Company;
+import com.sqx.modules.resumes.entity.CompanyUser;
 import com.sqx.modules.resumes.entity.PostPush;
 import com.sqx.modules.resumes.entity.RuleClassify;
 import com.sqx.modules.resumes.service.CompanyService;
+import com.sqx.modules.resumes.service.CompanyUserService;
 import com.sqx.modules.resumes.service.PostPushService;
 import com.sqx.modules.resumes.vo.CityVo;
 import com.sqx.modules.resumes.vo.LetterCity;
-import com.sqx.modules.utils.PinYinUti;
 import com.sqx.modules.utils.SenInfoCheckUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import java.math.BigDecimal;
 import java.time.LocalDateTime;
 import java.util.ArrayList;
 import java.util.Date;
@@ -72,88 +73,199 @@ public class PostPushServiceImpl extends ServiceImpl<PostPushDao, PostPush> impl
     @Autowired
     private HrService hrService;
 
+//    @Override
+//    public Result savePostPush(PostPush postPush, Long userId) {
+//        if (userId == null) {
+//            userId = companyService.getById(postPush.getCompanyId()).getUserId();
+//        }
+//        QueryWrapper<PostPush> wrapper = new QueryWrapper<PostPush>().eq("rule_classify_id", postPush.getRuleClassifyId()).eq("company_id", postPush.getCompanyId()).notIn("status", 3, 4);
+//        reentrantReadWriteLock.writeLock().lock();
+//        try {
+//            if (postPush.getPostPushId() != null) {
+//                PostPush push = baseMapper.selectById(postPush.getPostPushId());
+//                if (push.getStatus() != 2 && push.getStatus() != 3 && push.getStatus() != 5) {
+//                    return Result.error("当前状态不能修改,请先取消");
+//                }
+//                if (push.getStatus() == 5) {
+//                    if (LocalDateTime.now().isAfter(push.getOverdueTime())) {
+//                        return Result.error("当前招聘信息已过期");
+//                    }
+//                }
+//                //过滤当前数据,否则会因相同岗位限制而无法修改
+//                wrapper.ne("post_push_id", postPush.getPostPushId());
+//            }
+//            Integer count = baseMapper.selectCount(wrapper);
+//            if (count > 0) {
+//                return Result.error("相同岗位只能发布一条招聘信息");
+//            }
+//            RuleClassify ruleClassify = ruleClassifyDao.selectById(postPush.getRuleClassifyId());
+//            postPush.setStatus(1);
+//            postPush.setRuleClassifyName(ruleClassify.getRuleClassifyName());
+//            postPush.setUpdateTime(DateUtils.format(new Date(), DateUtils.DATE_TIME_PATTERN));
+//            UserEntity userEntity1 = userService.selectUserById(userId);
+//            if(userEntity1.getIsCompanyVip()!=null && userEntity1.getIsCompanyVip()==1){
+//                postPush.setPayMoney(ruleClassify.getMemberPrice());
+//            }else{
+//                postPush.setPayMoney(ruleClassify.getPrice());
+//            }
+//            postPush.setCityInitial(PinYinUti.getFirstPinYin(postPush.getCity()));
+//            RuleClassify twoClassify = ruleClassifyDao.selectOne(new QueryWrapper<RuleClassify>().eq("rule_classify_id", ruleClassify.getParentId()));
+//            RuleClassify oneClassify = ruleClassifyDao.selectOne(new QueryWrapper<RuleClassify>().eq("rule_classify_id", twoClassify.getParentId()));
+//            postPush.setClassifyTwoId(twoClassify.getRuleClassifyId());
+//            postPush.setClassifyOneId(oneClassify.getRuleClassifyId());
+//            UserMoney userMoney = userMoneyService.selectUserMoneyByUserId(userId);
+//            //当支付金额大于0时才支付。
+//            if (postPush.getPayMoney().compareTo(BigDecimal.ZERO) > 0) {
+//                if(userEntity1.getIsCompanyVip()!=null && userEntity1.getIsCompanyVip()==1){
+//                    if (ruleClassify.getMemberPrice().compareTo(userMoney.getMoney()) > 0) {
+//                        return Result.error("账户余额不足,请充值!");
+//                    }
+//                }else{
+//                    if (ruleClassify.getPrice().compareTo(userMoney.getMoney()) > 0) {
+//                        return Result.error("账户余额不足,请充值!");
+//                    }
+//                }
+//                userMoneyService.updateMoney(2, userId, postPush.getPayMoney());
+//                UserMoneyDetails userMoneyDetails = new UserMoneyDetails();
+//                userMoneyDetails.setMoney(postPush.getPayMoney());
+//                userMoneyDetails.setUserId(userId);
+//                userMoneyDetails.setTitle("发布招募岗位成功");
+//                userMoneyDetails.setContent("扣除账户钻石:" + postPush.getPayMoney());
+//                userMoneyDetails.setType(2);
+//                userMoneyDetails.setClassify(1);
+//                userMoneyDetails.setCreateTime(DateUtils.format(new Date(), DateUtils.DATE_TIME_PATTERN));
+//                userMoneyDetailsService.save(userMoneyDetails);
+//                Company company = companyService.getById(postPush.getCompanyId());
+//                UserEntity userEntity = userService.getById(company.getUserId());
+//                if (StringUtils.isNotBlank(userEntity.getOpenId())) {
+//                    sendPostMeg(userEntity, postPush);
+//                }
+//            }
+//            //是否是修改操作
+//            if (postPush.getPostPushId() != null) {
+//                return Result.upStatus(baseMapper.updateById(postPush));
+//            } else {
+//                postPush.setCreateTime(LocalDateTime.now());
+//                return Result.upStatus(baseMapper.insert(postPush));
+//            }
+//
+//        } catch (Exception e) {
+//            log.error("岗位发布异常:" + e.getMessage(), e);
+//        } finally {
+//            reentrantReadWriteLock.writeLock().unlock();
+//        }
+//        return Result.error("系统繁忙,请稍后再试!");
+//    }
+    @Autowired
+    private CompanyUserService companyUserService;
+    @Autowired
+    private PayDetailsService payDetailsService;
+    @Autowired
+    private PostPushService postPushService;
+
     @Override
     public Result savePostPush(PostPush postPush, Long userId) {
-        if (userId == null) {
-            userId = companyService.getById(postPush.getCompanyId()).getUserId();
-        }
-        QueryWrapper<PostPush> wrapper = new QueryWrapper<PostPush>().eq("rule_classify_id", postPush.getRuleClassifyId()).eq("company_id", postPush.getCompanyId()).notIn("status", 3, 4);
-        reentrantReadWriteLock.writeLock().lock();
-        try {
-            if (postPush.getPostPushId() != null) {
-                PostPush push = baseMapper.selectById(postPush.getPostPushId());
-                if (push.getStatus() != 2 && push.getStatus() != 3 && push.getStatus() != 5) {
-                    return Result.error("当前状态不能修改,请先取消");
-                }
-                if (push.getStatus() == 5) {
-                    if (LocalDateTime.now().isAfter(push.getOverdueTime())) {
+        QueryWrapper<CompanyUser> queryWrapper =new QueryWrapper<>();
+        queryWrapper.eq("user_id",userId).eq("is_use",1);
+        CompanyUser companyUser = companyUserService.getOne(queryWrapper);
+        if (companyUser == null) {//初次注册
+            postPush.setStatus(6);
+            postPushService.saveOrUpdate(postPush);
+            return Result.success("招聘信息已暂存,等待公司认证后再次发布");
+        } else {
+            Company company = companyService.getById(companyUser.getCompanyId());
+            if (company.getStatus() != 2) {
+                return Result.error("公司信息不完整或未通过审核");
+            } else {//公司存在判断是更改还是发布新的
+                if (postPush.getPostPushId() != null) {//更改
+                    PostPush push = baseMapper.selectById(postPush.getPostPushId());
+                    if (push.getStatus() != 2 && push.getStatus() != 3 && push.getStatus() != 5) {
+                        return Result.error("当前状态不能修改,请先取消");
+                    }
+                    if (push.getStatus() == 5) {
                         return Result.error("当前招聘信息已过期");
+                    } else {
+                        postPush.setCompanyId(companyUser.getCompanyId());
+                        postPush.setStatus(1);
+                        baseMapper.updateById(postPush);
+                        return Result.success("更新岗位信息中,请等待审核");
+                    }
+                } else {//新发布,发布岗位相同,不能发布
+                    UserEntity userEntity = userService.getById(userId);
+                    postPush.setUserId(String.valueOf(userId));
+                    postPush.setCompanyId(company.getCompanyId());
+                    postPush.setStatus(1);
+                    QueryWrapper<PostPush> queryWrapperClassify = new QueryWrapper<>();
+                    queryWrapperClassify.eq("rule_classify_id", postPush.getRuleClassifyId()).eq("user_id", userId).notIn("status", 3, 4);
+                    PayDetails payDetails = payDetailsService.getOne(new QueryWrapper<PayDetails>().eq("order_id", postPush.getOrderId()));
+                    Integer count = baseMapper.selectCount(queryWrapperClassify);
+                    if (count > 0) {
+                        return Result.error("相同岗位只能发布一条招聘信息");
+                    } else {//发布岗位不同
+                        if (userEntity.getIsUserVip() == 0) {//发布者是不是vip
+                            if (payDetails == null || payDetails.getState() != 1) {
+                                return Result.error("请完成订单支付");
+                            } else {
+                                baseMapper.insert(postPush);
+                                return Result.success("新发布的岗位正在审核中请等待");
+                            }
+                        } else {//发布者是vip
+                            if (userEntity.getVipPostTimes() == 0) {//没有免费次数
+                                if (payDetails == null || payDetails.getState() != 1) {
+                                    return Result.error("请完成订单支付");
+                                } else {
+                                    baseMapper.insert(postPush);
+                                    return Result.success("新发布的岗位正在审核中请等待");
+                                }
+                            } else {//有免费次数
+                                userEntity.setVipPostTimes(userEntity.getVipPostTimes() - 1);
+                                userService.updateById(userEntity);
+                                baseMapper.insert(postPush);
+                                return Result.success("新发布的岗位正在审核中请等待");
+                            }
+                        }
                     }
                 }
-                //过滤当前数据,否则会因相同岗位限制而无法修改
-                wrapper.ne("post_push_id", postPush.getPostPushId());
-            }
-            Integer count = baseMapper.selectCount(wrapper);
-            if (count > 0) {
-                return Result.error("相同岗位只能发布一条招聘信息");
-            }
-            RuleClassify ruleClassify = ruleClassifyDao.selectById(postPush.getRuleClassifyId());
-            postPush.setStatus(1);
-            postPush.setRuleClassifyName(ruleClassify.getRuleClassifyName());
-            postPush.setUpdateTime(DateUtils.format(new Date(), DateUtils.DATE_TIME_PATTERN));
-            UserEntity userEntity1 = userService.selectUserById(userId);
-            if(userEntity1.getIsCompanyVip()!=null && userEntity1.getIsCompanyVip()==1){
-                postPush.setPayMoney(ruleClassify.getMemberPrice());
-            }else{
-                postPush.setPayMoney(ruleClassify.getPrice());
             }
-            postPush.setCityInitial(PinYinUti.getFirstPinYin(postPush.getCity()));
-            RuleClassify twoClassify = ruleClassifyDao.selectOne(new QueryWrapper<RuleClassify>().eq("rule_classify_id", ruleClassify.getParentId()));
-            RuleClassify oneClassify = ruleClassifyDao.selectOne(new QueryWrapper<RuleClassify>().eq("rule_classify_id", twoClassify.getParentId()));
-            postPush.setClassifyTwoId(twoClassify.getRuleClassifyId());
-            postPush.setClassifyOneId(oneClassify.getRuleClassifyId());
-            UserMoney userMoney = userMoneyService.selectUserMoneyByUserId(userId);
-            //当支付金额大于0时才支付。
-            if (postPush.getPayMoney().compareTo(BigDecimal.ZERO) > 0) {
-                if(userEntity1.getIsCompanyVip()!=null && userEntity1.getIsCompanyVip()==1){
-                    if (ruleClassify.getMemberPrice().compareTo(userMoney.getMoney()) > 0) {
-                        return Result.error("账户余额不足,请充值!");
-                    }
-                }else{
-                    if (ruleClassify.getPrice().compareTo(userMoney.getMoney()) > 0) {
-                        return Result.error("账户余额不足,请充值!");
-                    }
+        }
+    }
+    public Result addDue(Long postPushId,Long orderId,Long userId) {
+        PostPush postPush = baseMapper.selectById(postPushId);
+        UserEntity userEntity = userService.getById(userId);
+        PayDetails payDetails = payDetailsService.getOne(new QueryWrapper<PayDetails>().eq("order_id", orderId));
+        if (postPush.getStatus()==2||postPush.getStatus()==4) {
+
+            if (userEntity.getIsUserVip() == 0) {//非vip
+                if (payDetails.getState() != 1) {
+                    return Result.error("请完成支付");
+                } else {
+                    postPush.setIsDue(1);
+                    postPush.setOrderId(Math.toIntExact(orderId));
+                    baseMapper.updateById(postPush);
+                    return Result.success("发布为急聘成功");
                 }
-                userMoneyService.updateMoney(2, userId, postPush.getPayMoney());
-                UserMoneyDetails userMoneyDetails = new UserMoneyDetails();
-                userMoneyDetails.setMoney(postPush.getPayMoney());
-                userMoneyDetails.setUserId(userId);
-                userMoneyDetails.setTitle("发布招募岗位成功");
-                userMoneyDetails.setContent("扣除账户钻石:" + postPush.getPayMoney());
-                userMoneyDetails.setType(2);
-                userMoneyDetails.setClassify(1);
-                userMoneyDetails.setCreateTime(DateUtils.format(new Date(), DateUtils.DATE_TIME_PATTERN));
-                userMoneyDetailsService.save(userMoneyDetails);
-                Company company = companyService.getById(postPush.getCompanyId());
-                UserEntity userEntity = userService.getById(company.getUserId());
-                if (StringUtils.isNotBlank(userEntity.getOpenId())) {
-                    sendPostMeg(userEntity, postPush);
+            } else {//vip
+                if (userEntity.getVipDueTimes() == 0) {//没有免费次数
+                    if (payDetails.getState() != 1) {
+                        return Result.error("请完成支付");
+                    } else {
+                        postPush.setUpdateTime(String.valueOf(LocalDateTime.now()));
+                        postPush.setIsDue(1);
+                        postPush.setOrderId(Math.toIntExact(orderId));
+                        baseMapper.updateById(postPush);
+                        return Result.success("发布为急聘成功");
+                    }
+                } else {//有免费次数
+                    userEntity.setVipDueTimes(userEntity.getVipPostTimes() - 1);
+                    postPush.setIsDue(1);
+                    postPush.setUpdateTime(String.valueOf(LocalDateTime.now()));
+                    baseMapper.updateById(postPush);
+                    return Result.success("发布为急聘成功");
                 }
             }
-            //是否是修改操作
-            if (postPush.getPostPushId() != null) {
-                return Result.upStatus(baseMapper.updateById(postPush));
-            } else {
-                postPush.setCreateTime(LocalDateTime.now());
-                return Result.upStatus(baseMapper.insert(postPush));
-            }
-
-        } catch (Exception e) {
-            log.error("岗位发布异常:" + e.getMessage(), e);
-        } finally {
-            reentrantReadWriteLock.writeLock().unlock();
+        }else {
+            return Result.error("当前岗位状态不能发布急聘");
         }
-        return Result.error("系统繁忙,请稍后再试!");
     }
 
     private void sendPostMeg(UserEntity userEntity, PostPush postPush) {
@@ -366,6 +478,11 @@ public class PostPushServiceImpl extends ServiceImpl<PostPushDao, PostPush> impl
         return postPushList;
     }
 
+    @Override
+    public List<Object> getHotPost() {
+        return baseMapper.getHotPost();
+    }
+
 
     /*@Override
     public PostPush selectPostPushDetails(Long userId, Long postPushId, Double lng, Double lat) {

+ 14 - 3
src/main/java/com/sqx/modules/resumes/service/impl/ResumesServiceImpl.java

@@ -223,7 +223,7 @@ public class ResumesServiceImpl extends ServiceImpl<ResumesDao, Resumes> impleme
 
     @Override
     public Result selectResumesList(Integer page, Integer limit, String startTime, String endTime, Resumes resumes) {
-        IPage<Resumes> resumesPage = baseMapper.selectResumesList(new Page<>(page, limit), startTime, endTime, resumes);
+       IPage<Resumes> resumesPage = baseMapper.selectResumesList(new Page<>(page, limit), startTime, endTime, resumes);
         List<Resumes> records = resumesPage.getRecords();
         for (Resumes record : records) {
             Long resumesId = record.getResumesId();
@@ -231,8 +231,19 @@ public class ResumesServiceImpl extends ServiceImpl<ResumesDao, Resumes> impleme
             resumes.setResumesWorkList(resumesDetailsService.selectResumesDetailsList(resumesId, 2));
         }
         return Result.success().put("data", new PageUtils(resumesPage));
-    }
-
+   }
+    @Override
+    public Result selectResumesListHr(Integer page, Integer limit) {
+        Page<ResumesListDto> pages;
+        if (page != null && limit != null) {
+            pages = new Page<>(page, limit);
+        } else {
+            pages = new Page<>();
+            pages.setSize(-1);
+        }
+    List<Object> resumesPage = baseMapper.selectResumesListHr(pages) ;
+    return Result.success().put("data",resumesPage);
+}
 
     @Override
     public Result selectResumesListByCompany(Integer page, Integer limit, Long companyId, Resumes resumes, Integer screen) {

+ 15 - 2
src/main/resources/mapper/resumes/PostPushDao.xml

@@ -31,7 +31,7 @@
         post_push p,
         company c
         WHERE p.company_id = c.company_id
-
+        and c.is_use = 1
         <if test="postPush.companyId!=null">
             and p.company_id = #{postPush.companyId}
         </if>
@@ -351,6 +351,19 @@
             </if>
         </trim>
     </insert>
-
+<select id="getHotPost" resultType="com.sqx.modules.resumes.entity.HotVo">
+    SELECT
+        p.rule_classify_name AS ruleClassifyName,
+        COUNT(p.rule_classify_id) AS count
+    FROM
+        post_push p
+    WHERE
+        p.status = 2
+    GROUP BY
+        p.rule_classify_id, p.rule_classify_name
+    ORDER BY
+        count DESC
+        LIMIT 8;
+</select>
 
 </mapper>

+ 61 - 2
src/main/resources/mapper/resumes/ResumesDao.xml

@@ -66,11 +66,70 @@
                 and date_format(r.create_time,'%Y-%m-%d') &lt;= #{endTime}
             </if>
         </where>
-
-
         order by r.update_time desc
     </select>
+    <select id="selectResumesListHr" resultType="com.sqx.modules.resumes.entity.ResumesListDto">
+        SELECT
+        u.user_id,
+        u.user_name,
+        last_work.type AS work_type,
+        last_work.company_name,
+        last_work.skills,
+        last_work.work_content,
+        e.school,
+        e.degree,
+        e.profession,
+        intent.rule_classify_name AS expected_position,
+        intent.salary_range AS expected_range
+        FROM
+        tb_user u
+        INNER JOIN (
+        SELECT
+        edu.*,
+        ROW_NUMBER() OVER (PARTITION BY edu.user_id ORDER BY edu.end_time DESC) AS edu_rn
+        FROM edu
+        WHERE edu.is_use = 1
+        ) e ON u.user_id = e.user_id AND e.edu_rn = 1
+        INNER JOIN (
+        SELECT
+        wed.*,
+        we.type,
+        we.company_name,
+        we.user_id,
+        ROW_NUMBER() OVER (PARTITION BY we.user_id ORDER BY wed.end_time DESC) AS work_rn
+        FROM work_exp we
+        INNER JOIN work_exp_detail wed ON we.work_exp_id = wed.work_exp_id
+        WHERE we.is_use = 1
+        ) last_work ON u.user_id = last_work.user_id AND last_work.work_rn = 1
+        INNER JOIN (
+        SELECT
+        intent.*,
+        ROW_NUMBER() OVER (
+        PARTITION BY intent.user_id
+        ORDER BY intent.is_default DESC, intent.create_time DESC
+        ) AS intent_rn
+        FROM intention intent
+        ) intent ON u.user_id = intent.user_id AND intent.intent_rn = 1
+        <where>
 
+            <if test="userName != null and userName != ''">
+                AND u.user_name LIKE CONCAT('%', #{userName}, '%')
+            </if>
+
+            <if test="workType != null and workType != ''">
+                AND last_work.type = #{workType}
+            </if>
+
+            <if test="degree != null and degree != ''">
+                AND e.school LIKE CONCAT('%', #{school}, '%')
+            </if>
+
+            <if test="expectedPosition != null and expectedPosition != ''">
+                AND intent.rule_classify_name LIKE CONCAT('%', #{expectedPosition}, '%')
+            </if>
+        </where>
+        ORDER BY u.user_id DESC
+    </select>
     <select id="selectResumesListByCompany" resultType="com.sqx.modules.resumes.entity.Resumes">
         SELECT
         r.*,