Quellcode durchsuchen

Merge remote-tracking branch 'origin/dev' into dev

shaoguo vor 7 Monaten
Ursprung
Commit
1bb4017ae9

+ 6 - 1
src/main/java/com/sqx/modules/app/controller/UserController.java

@@ -22,6 +22,7 @@ import com.sqx.modules.pay.service.PayDetailsService;
 import com.sqx.modules.resumes.entity.Company;
 import com.sqx.modules.resumes.entity.Resumes;
 import com.sqx.modules.resumes.service.CompanyService;
+import com.sqx.modules.resumes.service.PostPushService;
 import com.sqx.modules.resumes.service.ResumesService;
 import com.sqx.modules.utils.SenInfoCheckUtil;
 import com.sqx.modules.utils.excel.ExcelData;
@@ -29,7 +30,6 @@ import com.sqx.modules.utils.excel.ExportExcelUtils;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
-import org.apache.catalina.User;
 import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
@@ -62,6 +62,8 @@ public class UserController {
     private ResumesService resumesService;
     @Autowired
     private CommonInfoService commonInfoService;
+    @Autowired
+    private PostPushService postPushService;
     
     @PostMapping("/saveUser")
     @ApiOperation("系统添加用户")
@@ -132,6 +134,9 @@ public class UserController {
         //查询邀请人数
         int count = userService.queryInviterCount(userEntity.getInvitationCode());
         Company company = companyService.selectCompanyByUserId(userId);
+        if(company != null){
+            company.setCompanyAddress(postPushService.getCompanyAddressByLastlyPostPush(company.getCompanyId()));
+        }
         map.put("company", company);
         map.put("userEntity", userEntity);
         map.put("money", userMoney);

+ 2 - 1
src/main/java/com/sqx/modules/app/service/impl/UserServiceImpl.java

@@ -953,7 +953,7 @@ public class UserServiceImpl extends ServiceImpl<UserDao, UserEntity> implements
     public void pushToSingle(String title, String content, String clientId) {
         try {
             if (StringUtils.isNotEmpty(clientId)) {
-                UserEntity userEntity = baseMapper.selectOne(new QueryWrapper<UserEntity>().eq("clientid", clientId));
+                UserEntity userEntity = baseMapper.selectOne(new QueryWrapper<UserEntity>().eq("clientid", clientId).ne("phone",null).last("limit 1"));
                 GtApiConfiguration apiConfiguration = new GtApiConfiguration();
                 //填写应用配置
                 apiConfiguration.setAppId(commonInfoService.findOne(61).getValue());
@@ -1206,6 +1206,7 @@ public class UserServiceImpl extends ServiceImpl<UserDao, UserEntity> implements
         map.put("chatCount",chatCount);
         //邀请
         map.put("interviewCount",interviewCount);
+        map.put("iosAudit",1);
         return map;
 
     }

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

@@ -64,6 +64,8 @@ public class UserFirstRegistController {
         }else{
             resumes.setUserId(userId);
             resumes.setStatus(1);
+            resumes.setIsShow(0);  //是否展示
+            resumes.setCreateTime(String.valueOf(LocalDateTime.now()));
             resumesService.save(resumes);
         }
         return  Result.success();
@@ -105,18 +107,18 @@ public class UserFirstRegistController {
         resumesDto.setWorkExpList(workExpService.selectWorkExp(Math.toIntExact(userId)));
         resumesDto.setSkills(skillService.selectSkill(Integer.valueOf(userId1)));
         resumesDto.setWorkExpTimes(workExpService.getWorkTime(Long.valueOf(userId1)));
-        UserBrowse userBrowseOld = userBrowseService.getOne(new QueryWrapper<UserBrowse>().eq("user_id",userId).eq("resumes_id",resumesId));
-        if (userBrowseOld != null){
-            userBrowseOld.setUpdateTime(LocalDateTime.now());
-            userBrowseService.updateById(userBrowseOld);
-        }else {
-            UserBrowse userBrowse = new UserBrowse();
-            userBrowse.setUserId(userId);
-            userBrowse.setResumesId(resumesId);
-            userBrowse.setBrowseType(2);
-            userBrowse.setUpdateTime(LocalDateTime.now());
-            userBrowseService.save(userBrowse);
-        }
+//        UserBrowse userBrowseOld = userBrowseService.getOne(new QueryWrapper<UserBrowse>().eq("user_id",userId).eq("resumes_id",resumesId));
+//        if (userBrowseOld != null){
+//            userBrowseOld.setUpdateTime(LocalDateTime.now());
+//            userBrowseService.updateById(userBrowseOld);
+//        }else {
+//            UserBrowse userBrowse = new UserBrowse();
+//            userBrowse.setUserId(userId);
+//            userBrowse.setResumesId(resumesId);
+//            userBrowse.setBrowseType(2);
+//            userBrowse.setUpdateTime(LocalDateTime.now());
+//            userBrowseService.save(userBrowse);
+//        }
         return Result.success().put("data",resumesDto);
     }
     @Login

+ 2 - 1
src/main/java/com/sqx/modules/intention/dao/IntentionDao.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.sqx.modules.intention.entity.Intention;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * <p>
@@ -17,6 +18,6 @@ import org.apache.ibatis.annotations.Mapper;
 @Mapper
 public interface IntentionDao extends BaseMapper<Intention> {
 
-    Page<Intention> getIntentionList(IPage<Intention> page);
+    Page<Intention> getIntentionList(IPage<Intention> page, @Param("userId") Long userId);
 
 }

+ 1 - 1
src/main/java/com/sqx/modules/intention/service/impl/IntentionServiceImpl.java

@@ -47,7 +47,7 @@ public class IntentionServiceImpl extends ServiceImpl<IntentionDao, Intention> i
     @Override
     public IPage<Intention> getIntentionList(Integer page, Integer limit, Intention intention) {
         IPage<Intention> pages=new Page<>(page,limit);
-        return baseMapper.getIntentionList(pages);
+        return baseMapper.getIntentionList(pages, intention.getUserId());
     }
 
     @Override

+ 31 - 0
src/main/java/com/sqx/modules/resumes/controller/app/AppPostPushController.java

@@ -6,8 +6,15 @@ import com.baomidou.mybatisplus.extension.api.R;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.sqx.common.utils.Result;
 import com.sqx.modules.app.annotation.Login;
+import com.sqx.modules.app.entity.UserBrowse;
+import com.sqx.modules.app.service.UserBrowseService;
 import com.sqx.modules.app.service.UserService;
+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.firstLogin.service.HrService;
+import com.sqx.modules.myCollection.entity.MyCollection;
+import com.sqx.modules.myCollection.service.MyCollectionService;
 import com.sqx.modules.record.service.RecordService;
 import com.sqx.modules.resumes.entity.PostPush;
 import com.sqx.modules.resumes.service.CompanyService;
@@ -18,6 +25,9 @@ import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.HashMap;
+import java.util.Map;
+
 @RestController
 @Api(value = "招聘信息", tags = {"招聘信息"})
 @RequestMapping(value = "/app/postPush")
@@ -33,6 +43,14 @@ public class AppPostPushController {
     private CompanyService companyService;
     @Autowired
     private UserService userService;
+    @Autowired
+    private ChatContentService chatContentService;
+    @Autowired
+    private ChatConversationService chatConversationService;
+    @Autowired
+    private UserBrowseService userBrowseService;
+    @Autowired
+    private MyCollectionService myCollectionService;
 
     @Login
     @PostMapping("/savePostPush")
@@ -54,6 +72,19 @@ public class AppPostPushController {
         return postPushService.getPostPushList(page, limit, null, null, userId, postPush, screen,isDue);
     }
     @Login
+    @GetMapping("postPushData")
+    @ApiOperation("岗位数据")
+    private  Result postPushData(Long postPushId){
+        Map<String,Integer> map =new HashMap<>();
+        int chatCount =chatConversationService.count(new QueryWrapper<ChatConversation>().eq("post_push_id",postPushId));
+        int viewCount =userBrowseService.count(new QueryWrapper<UserBrowse>().eq("post_Push_id",postPushId));
+        int collectCount =myCollectionService.count(new QueryWrapper<MyCollection>().eq("post_push_id",postPushId));
+        map.put("chatCount",chatCount);
+        map.put("viewCount",viewCount);
+        map.put("collectCount",collectCount);
+        return Result.success().put("data",map);
+    }
+    @Login
     @GetMapping("/selectPostPushDetails")
     @ApiOperation("查询招聘信息详情(通用)")
     public Result selectPostPushDetails(@RequestAttribute("userId")Long userId, Long postPushId,Double lng,Double lat) {

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

@@ -49,4 +49,6 @@ public interface PostPushDao extends BaseMapper<PostPush> {
     List<Object> getHotPost();
 
     List<PostPush> getPostPushListUser(Double lng, Double lat, PostPush postPush, String[] industry, String[] education, String[] experience, String[] companyPeople, String[] salaryRange);
+
+    String getCompanyAddressByLastlyPostPush(@Param("companyId") Long companyId);
 }

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

@@ -59,4 +59,6 @@ public interface PostPushService extends IService<PostPush> {
     List<Object> getHotPost();
 
     void setMinAndMaxSalary(PostPush postPush);
+
+    String getCompanyAddressByLastlyPostPush(Long companyId);
 }

+ 85 - 22
src/main/java/com/sqx/modules/resumes/service/impl/PostPushServiceImpl.java

@@ -1,6 +1,7 @@
 package com.sqx.modules.resumes.service.impl;
 
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -77,6 +78,8 @@ public class PostPushServiceImpl extends ServiceImpl<PostPushDao, PostPush> impl
     private ReentrantReadWriteLock reentrantReadWriteLock = new ReentrantReadWriteLock();
     @Autowired
     private HrService hrService;
+    @Autowired
+    private PostPushDao postPushDao;
 
 //    @Override
 //    public Result savePostPush(PostPush postPush, Long userId) {
@@ -181,8 +184,66 @@ public class PostPushServiceImpl extends ServiceImpl<PostPushDao, PostPush> impl
     public Result savePostPush(PostPush postPush, Long userId) {
 //         1. 基础参数校验:确保是新增(postPushId为空)
         if (postPush.getPostPushId() != null) {
-            postPushService.updateById(postPush);
-            return Result.success("更新成功").put("data",postPush.getPostPushId());
+//            if (!StringUtils.isBlank(postPush.getRuleClassifyName())) {
+//                return Result.error("更新失败:岗位名称(ruleClassifyName)不能为空");
+//            }
+
+            // 2. 校验数据库中是否存在该条记录(核心:更新前先确认记录存在)
+            PostPush existPost = postPushService.getById(postPush.getPostPushId());
+            if (existPost == null) {
+                return Result.error("更新失败:" + postPush.getPostPushId() + "的记录不存在");
+            }
+            // 若修改了岗位名称,校验新名称是否存在非3、4状态记录
+            if (!existPost.getRuleClassifyName().equals(postPush.getRuleClassifyName())) {
+                LambdaQueryWrapper<PostPush> newNameWrapper = new LambdaQueryWrapper<PostPush>()
+                        .eq(PostPush::getRuleClassifyName, postPush.getRuleClassifyName())
+                        .ne(PostPush::getStatus, 3)
+                        .eq(PostPush::getUserId,userId)
+                        .ne(PostPush::getStatus, 4);
+                if (postPushService.count(newNameWrapper) > 0) {
+                    return Result.error("更新失败:新岗位名称【" + postPush.getRuleClassifyName() + "】已存在状态非3、4的记录");
+                }
+            }
+            // 3. 核心规则1:同岗位(ruleClassifyName)下,排除当前记录后,不允许存在状态非3、4的其他记录
+            LambdaQueryWrapper<PostPush> samePostWrapper = new LambdaQueryWrapper<PostPush>()
+                    .eq(PostPush::getRuleClassifyName, postPush.getRuleClassifyName()) // 同岗位
+                    .eq(PostPush::getUserId,userId)
+                    .ne(PostPush::getStatus, 3)  // 排除状态3(不通过)
+                    .ne(PostPush::getStatus, 4)  // 排除状态4(已取消)
+                    .ne(PostPush::getPostPushId, postPush.getPostPushId()); // 关键:排除当前更新的这条记录
+            List<PostPush> samePostOtherList = postPushService.list(samePostWrapper);
+            if (!samePostOtherList.isEmpty()) {
+                return Result.error("更新失败:相同岗位【" + postPush.getRuleClassifyName() + "】已存在状态非3、4的其他记录");
+            }
+
+            // 4. 核心规则2:状态2、5禁止修改(当前记录的原始状态)
+            Integer originalStatus = existPost.getStatus();
+            if (originalStatus == 2 || originalStatus == 5) {
+                // 额外校验:状态2、5的同岗位仅允许当前这一条(防止并发新增)
+                LambdaQueryWrapper<PostPush> status25Wrapper = new LambdaQueryWrapper<PostPush>()
+                        .eq(PostPush::getRuleClassifyName, postPush.getRuleClassifyName())
+                        .in(PostPush::getStatus, 2, 5)
+                        .ne(PostPush::getPostPushId, postPush.getPostPushId()); // 排除当前记录
+                long count = postPushService.count(status25Wrapper);
+                if (count > 0) {
+                    return Result.error("更新失败:相同岗位【" + postPush.getRuleClassifyName() + "】已存在状态2/5的其他记录");
+                }
+                return Result.error("更新失败:岗位【" + postPush.getRuleClassifyName() + "】状态为" + originalStatus + ",禁止修改");
+            }
+
+            // 5. 核心规则3:允许修改的状态(1、3、4、6),强制改为状态1
+            postPush.setStatus(1);
+            // 补充:保留原始记录的核心字段(避免更新时丢失)
+            postPush.setCreateTime(existPost.getCreateTime()); // 示例:创建时间不允许修改
+
+            // 6. 执行更新操作(幂等性:即使数据库已存在该记录,也正常更新)
+            boolean updateSuccess = postPushService.updateById(postPush);
+            if (!updateSuccess) {
+                throw new RuntimeException("更新失败:PostPushId=" + postPush.getPostPushId() + "的记录更新执行失败");
+            }
+
+            // 7. 返回更新结果(携带PostPushId)
+            return Result.success("更新成功").put("data", postPush.getPostPushId());
         }
 
         // 2. 公司关联记录查询:优先取is_use=1,无则取最新一条(按创建时间倒序)
@@ -413,15 +474,12 @@ public class PostPushServiceImpl extends ServiceImpl<PostPushDao, PostPush> impl
                 if (company == null) {
                     return Result.error("岗位关联的公司不存在");
                 }
-                Long userId = company.getUserId(); // 公司所属用户ID
-                if (userId == null) {
-                    return Result.error("公司未关联用户,审核通过失败");
-                }
+                Long userId = Long.valueOf(postPush.getUserId()); // 公司所属用户ID
 
                 // 核心修改:查询 company_user 表,校验 is_use 是否为 1(公司关联已启用)
                 QueryWrapper<CompanyUser> companyUserQuery = new QueryWrapper<>();
                 companyUserQuery.eq("user_id", userId) // 公司所属用户ID
-                        .eq("company_id", companyId) // 岗位关联的公司ID
+//                        .eq("company_id", companyId) // 岗位关联的公司ID
                         .eq("is_use", 1); // 必须启用关联
                 CompanyUser companyUser = companyUserService.getOne(companyUserQuery);
                 if (companyUser == null) {
@@ -436,27 +494,27 @@ public class PostPushServiceImpl extends ServiceImpl<PostPushDao, PostPush> impl
                 // 4. 校验当前已上架岗位数是否超过VIP展示上限
                 QueryWrapper<PostPush> openQuery = new QueryWrapper<>();
                 openQuery.eq("user_id", postPush.getUserId())
-                        .eq("status", 2); // 已上架的开放状态
-                // 区分急聘/普通岗位
-                if (postPush.getIsDue() != null && postPush.getIsDue() == 1) {
+                        .eq("status", 2); // 已上架状态
+                boolean isDue = postPush.getIsDue() != null && postPush.getIsDue() == 1;
+                if (isDue) {
                     openQuery.eq("is_due", 1);
                     Integer vipDueTimes = user.getVipDueTimes();
-                    // 急聘岗位:-1=不限,>0=最多展示数;超过则设为下架(status=5
+                    // 急聘岗位:超过上限设为下架(5),否则设为审核通过(2
                     if (vipDueTimes != null && vipDueTimes != -1) {
                         int currentDueCount = postPushService.count(openQuery);
-                        if (currentDueCount >= vipDueTimes) {
-                            postPush.setStatus(5); // 超过上限→下架状态
-                        }
+                        postPush.setStatus(currentDueCount >= vipDueTimes ? 5 : 2);
+                    } else {
+                        postPush.setStatus(2); // 不限次数直接设为通过
                     }
                 } else {
                     openQuery.eq("is_due", 0).or().isNull("is_due");
                     Integer vipPostTimes = user.getVipPostTimes();
-                    // 普通岗位:-1=不限,>0=最多展示数;超过则设为下架(status=5
+                    // 普通岗位:超过上限设为下架(5),否则设为审核通过(2
                     if (vipPostTimes != null && vipPostTimes != -1) {
                         int currentPostCount = postPushService.count(openQuery);
-                        if (currentPostCount >= vipPostTimes) {
-                            postPush.setStatus(5); // 超过上限→下架状态
-                        }
+                        postPush.setStatus(currentPostCount >= vipPostTimes ? 5 : 2);
+                    } else {
+                        postPush.setStatus(2); // 不限次数直接设为通过
                     }
                 }
 
@@ -692,6 +750,11 @@ public class PostPushServiceImpl extends ServiceImpl<PostPushDao, PostPush> impl
         postPush.setMaxSalary(1000*maxSalary);
     }
 
+    @Override
+    public String getCompanyAddressByLastlyPostPush(Long companyId) {
+        return postPushDao.getCompanyAddressByLastlyPostPush(companyId);
+    }
+
     /**
      * 解析单个xxk格式,四舍五入转整数(保持原数值精度)
      */
@@ -754,11 +817,11 @@ public class PostPushServiceImpl extends ServiceImpl<PostPushDao, PostPush> impl
                     userBrowseOld.setUpdateTime(LocalDateTime.now());
                     userBrowseService.updateById(userBrowseOld);
                 }
-                postPush.setIsCollection(myCollectionService.getBaseMapper().selectCount(new QueryWrapper<MyCollection>().eq("user_id", userId).eq("post_push_id", postPushId).eq("type", 1)));
-                postPush.setCompany(company);
-                postPush.setUser(userService.getById(postPush.getUserId()));
-                postPush.setHr(hrService.getByUserId(postPush.getUserId()));
             }
+            postPush.setIsCollection(myCollectionService.getBaseMapper().selectCount(new QueryWrapper<MyCollection>().eq("user_id", userId).eq("post_push_id", postPushId).eq("type", 1)));
+            postPush.setCompany(company);
+            postPush.setUser(userService.getById(postPush.getUserId()));
+            postPush.setHr(hrService.getByUserId(postPush.getUserId()));
         }
         return postPush;
     }

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

@@ -497,7 +497,7 @@ public class ResumesServiceImpl extends ServiceImpl<ResumesDao, Resumes> impleme
             resumes.setIntentionList(intentionList);
             resumes.setWorkExpList(workExpList);
             List<ResumesListDto> list = resumesDao.selectResumesListHr(resumesListDto);
-            resumes.setResumesListDtoList(list.get(0));
+            resumes.setResumesListDtoList(list != null && !list.isEmpty() ? list.get(0) : null);
             /*System.out.println("+++++++++++++++++++++++++++++++++");
             System.out.println("---------------------------------");*/
         }

+ 12 - 8
src/main/java/com/sqx/modules/resumes/service/impl/RuleClassifyServiceImpl.java

@@ -5,20 +5,16 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.sqx.common.utils.Result;
-import com.sqx.modules.resumes.dao.PostDetailsDao;
+import com.sqx.modules.firstLogin.dao.PostPreferenceDao;
+import com.sqx.modules.firstLogin.dao.PostSkillDao;
 import com.sqx.modules.resumes.dao.RuleClassifyDao;
-import com.sqx.modules.resumes.entity.PostDetails;
 import com.sqx.modules.resumes.entity.RuleClassify;
-import com.sqx.modules.resumes.service.PostDetailsService;
 import com.sqx.modules.resumes.service.RuleClassifyService;
-import org.junit.Rule;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Comparator;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -27,6 +23,10 @@ import java.util.stream.Collectors;
 @Service
 public class RuleClassifyServiceImpl extends ServiceImpl<RuleClassifyDao, RuleClassify> implements RuleClassifyService {
 
+    @Autowired
+    private PostSkillDao postSkillDao;
+    @Autowired
+    private PostPreferenceDao postPreferenceDao;
 
     @Override
     public Result addClassify(RuleClassify ruleClassify) {
@@ -99,6 +99,10 @@ public class RuleClassifyServiceImpl extends ServiceImpl<RuleClassifyDao, RuleCl
         if (count > 0) {
             return Result.error("请先删除下级岗位");
         } else {
+            Map<String, Object> map = new HashMap<String, Object>();
+            map.put("rule_classify_id",intentionId);
+            postSkillDao.deleteByMap(map);
+            postPreferenceDao.deleteByMap(map);
             return Result.upStatus(baseMapper.deleteById(intentionId));
         }
 

+ 4 - 0
src/main/resources/mapper/intention/IntentionDao.xml

@@ -8,6 +8,10 @@
         a.classify_one_id, a.classify_two_id, a.is_default, a.min_salary, a.max_salary
         from intention a
         left join tb_user b on a.user_id = b.user_id
+        where 1=1
+        <if test="userId!=null">
+            and a.user_id = #{userId}
+        </if>
         order by a.create_time desc
     </select>
 

+ 1 - 1
src/main/resources/mapper/resumes/CompanyDao.xml

@@ -10,7 +10,7 @@
         left join post_push a on a.company_id = c.company_id and a.create_time = (select min(create_time) from post_push b where a.company_id = b.company_id)
         where 1=1
         <if test="companyName!=null and companyName!=''">
-            and c.company_name like concat('%',#{companyName},'%')
+            and c.company_all_name like concat('%',#{companyName},'%')
         </if>
         <if test="companyPhone!=null and companyPhone!=''">
             and u.phone like concat('%',#{companyPhone},'%')

+ 7 - 0
src/main/resources/mapper/resumes/PostPushDao.xml

@@ -3,6 +3,13 @@
 
 <mapper namespace="com.sqx.modules.resumes.dao.PostPushDao">
 
+    <select id="getCompanyAddressByLastlyPostPush" resultType="java.lang.String">
+        select a.address
+        from post_push a
+        where a.company_id = #{companyId}
+        and a.create_time =
+            (select min(b.create_time) from post_push b where a.company_id = b.company_id)
+    </select>
 
     <select id="selectPostList" resultType="com.sqx.modules.resumes.entity.PostDetails">
         select pd.* from post_details pd

+ 51 - 30
src/main/resources/mapper/resumes/ResumesDao.xml

@@ -5,29 +5,61 @@
 
 
     <select id="selectResumesList" resultType="com.sqx.modules.resumes.entity.Resumes">
-        select r.*,u.user_name as userName,u.avatar from resumes r
+        select
+        r.resumes_id, u.user_name as resumes_name, u.sex as resumes_sex, u.age as resumes_age, r.resumes_phone, e.degree as resumes_education,
+        r.resumes_marriage, i.salary_range as resumes_compensation, r.resumes_email, r.resumes_work_experience,
+        r.resumes_intention, r.resumes_major, i.rule_classify_name as resumes_post, r.adv as resumes_details, r.resumes_image_name,
+        r.resumes_image, r.user_id, r.status, r.update_time, r.create_time, r.audit_content, e.school as school,
+        r.rule_post_name, r.rule_post_id, r.is_recommend, r.city, r.rule_classify_id, r.rule_major, r.address,
+        e.profession as major, r.money, r.industry_id, r.industry_one_id, r.classify_one_id, r. classify_two_id, r.resumes_status,
+        e.end_time as graduation_time, r.industry_name, r.is_show, r.if_exp, r.birthday, r.adv, r.picture, r.resumes_attachment,
+        u.user_name as userName,u.avatar from resumes r
         left join tb_user u on u.user_id=r.user_id
+        left join edu e on e.user_id = r.user_id and e.end_time = (select max(b.end_time) from edu b where b.user_id = e.user_id)
+        left join intention i on i.user_id = r.user_Id and i.create_time = (select max(o.create_time) from intention o where o.user_id = i.user_id)
         <where>
             <if test="resumes.isShow!=null">
                 and r.is_show = #{resumes.isShow}
             </if>
+            <if test="resumes.status!=null and resumes.status!=0">
+                and r.status=#{resumes.status}
+            </if>
             <if test="resumes.resumesName!=null and resumes.resumesName!=''">
-                and r.resumes_name like concat('%',#{resumes.resumesName},'%')
+                and u.user_name like concat('%',#{resumes.resumesName},'%')
             </if>
             <if test="resumes.resumesPhone!=null and resumes.resumesPhone!=''">
-                and r.resumes_phone like concat('%',#{resumes.resumesPhone},'%')
+                and u.phone like concat('%',#{resumes.resumesPhone},'%')
             </if>
-            <if test="resumes.resumesMajor!=null and resumes.resumesMajor!=''">
-                and r.resumes_major like concat('%',#{resumes.resumesMajor},'%')
+            <if test="resumes.school!=null and resumes.school!=''">
+                and e.school like concat('%',#{resumes.school},'%')
+            </if>
+            <if test="resumes.resumesEducation!=null and resumes.resumesEducation!=''">
+                and e.degree like concat('%',#{resumes.resumesEducation},'%')
             </if>
             <if test="resumes.resumesPost!=null and resumes.resumesPost!=''">
-                and r.resumes_post like concat('%',#{resumes.resumesPost},'%')
+                and i.rule_classify_name like concat('%',#{resumes.resumesPost},'%')
+            </if>
+            <if test="resumes.industryName!=null and resumes.industryName!=''">
+                and r.industry_name like concat('%',#{resumes.industryName},'%')
             </if>
+            <if test="resumes.resumesAge!=null and resumes.resumesAge!=''">
+                and u.age =#{resumes.resumesAge}
+            </if>
+            <if test="startTime!=null and startTime!='' and startTime!=null and startTime!=''">
+                and date_format(r.create_time,'%Y-%m-%d') BETWEEN #{startTime} and #{endTime}
+            </if>
+            <if test="startTime!=null and startTime!='' and  (endTime==null or endTime=='')">
+                and date_format(cr.create_time,'%Y-%m-%d') &gt;= #{startTime}
+            </if>
+            <if test="endTime!=null and endTime!='' and (startTime==null or startTime=='')">
+                and date_format(r.create_time,'%Y-%m-%d') &lt;= #{endTime}
+            </if>
+
             <if test="resumes.resumesWorkExperience!=null and resumes.resumesWorkExperience!=''">
                 and r.resumes_work_experience like concat('%',#{resumes.resumesWorkExperience},'%')
             </if>
-            <if test="resumes.status!=null and resumes.status!=0">
-                and r.status=#{resumes.status}
+            <if test="resumes.resumesMajor!=null and resumes.resumesMajor!=''">
+                and r.resumes_major like concat('%',#{resumes.resumesMajor},'%')
             </if>
             <if test="resumes.isRecommend!=null and resumes.isRecommend==1">
                 and (r.is_recommend =1 or r.is_recommend is null )
@@ -35,36 +67,15 @@
             <if test="resumes.isRecommend!=null and resumes.isRecommend==2">
                 and r.is_recommend=#{resumes.isRecommend}
             </if>
-            <if test="resumes.resumesEducation!=null and resumes.resumesEducation!=''">
-                and r.resumes_education like concat('%',#{resumes.resumesEducation},'%')
-            </if>
             <if test="resumes.resumesMarriage!=null and resumes.resumesMarriage!=''">
                 and r.resumes_marriage like concat('%',#{resumes.resumesMarriage},'%')
             </if>
-            <if test="resumes.industryName!=null and resumes.industryName!=''">
-                and r.industry_name like concat('%',#{resumes.industryName},'%')
-            </if>
             <if test="resumes.rulePostName!=null and resumes.rulePostName!=''">
                 and r.rule_post_name like concat('%',#{resumes.rulePostName},'%')
             </if>
             <if test="resumes.resumesCompensation!=null and resumes.resumesCompensation!=''">
                 and r.resumes_compensation like concat('%',#{resumes.resumesCompensation},'%')
             </if>
-            <if test="resumes.school!=null and resumes.school!=''">
-                and r.school like concat('%',#{resumes.school},'%')
-            </if>
-            <if test="resumes.resumesAge!=null and resumes.resumesAge!=''">
-                and r.resumes_age =#{resumes.resumesAge}
-            </if>
-            <if test="startTime!=null and startTime!='' and startTime!=null and startTime!=''">
-                and date_format(r.create_time,'%Y-%m-%d') BETWEEN #{startTime} and #{endTime}
-            </if>
-            <if test="startTime!=null and startTime!='' and  (endTime==null or endTime=='')">
-                and date_format(cr.create_time,'%Y-%m-%d') &gt;= #{startTime}
-            </if>
-            <if test="endTime!=null and endTime!='' and (startTime==null or startTime=='')">
-                and date_format(r.create_time,'%Y-%m-%d') &lt;= #{endTime}
-            </if>
         </where>
         order by r.update_time desc
     </select>
@@ -532,11 +543,21 @@
 
     </select>
     <select id="selectResumesByResumesId" resultType="com.sqx.modules.resumes.entity.Resumes">
-        select *
+        select
+        r.resumes_id, u.user_name as resumes_name, u.sex as resumes_sex, u.age as resumes_age, r.resumes_phone, e.degree as resumes_education,
+        r.resumes_marriage, i.salary_range as resumes_compensation, r.resumes_email, r.resumes_work_experience,
+        r.resumes_intention, r.resumes_major, i.rule_classify_name as resumes_post, r.adv as resumes_details, r.resumes_image_name,
+        r.resumes_image, r.user_id, r.status, r.update_time, r.create_time, r.audit_content, e.school as school,
+        r.rule_post_name, r.rule_post_id, r.is_recommend, r.city, r.rule_classify_id, r.rule_major, r.address,
+        e.profession as major, r.money, r.industry_id, r.industry_one_id, r.classify_one_id, r. classify_two_id, r.resumes_status,
+        e.end_time as graduation_time, r.industry_name, r.is_show, r.if_exp, r.birthday, r.adv, r.picture, r.resumes_attachment
         <if test="userId!=null">
             ,(select if(count(0)>0,1,0) from my_collection m where m.resumes_id = r.resumes_id and m.user_id = #{userId} and m.type =2 ) as isCollection
         </if>
         from resumes r
+        left join tb_user u on u.user_id=r.user_id
+        left join edu e on e.user_id = r.user_id and e.end_time = (select max(b.end_time) from edu b where b.user_id = e.user_id)
+        left join intention i on i.user_id = r.user_Id and i.create_time = (select max(o.create_time) from intention o where o.user_id = i.user_id)
         where r.resumes_id = #{resumesId}
 
     </select>