Переглянути джерело

1、配置文件unicode更改为中文
2、更改简历上传(除ios端之外,其余不能上传图片)
3、职位发布增加检索
4、职位发布增加关键词检索

rayson 1 рік тому
батько
коміт
e7d4acb008

+ 1 - 0
.gitignore

@@ -4,6 +4,7 @@
 # Mobile Tools for Java (J2ME)
 .mtj.tmp/
 .idea/
+.settings/
 target/
 
 # Package Files #

+ 204 - 186
src/main/java/com/wechat/controller/EnterpriseController.java

@@ -1,55 +1,48 @@
 package com.wechat.controller;
 
-import java.io.IOException;
-import java.util.Map;
-
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.validation.Valid;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.ResponseBody;
-
 import com.wechat.global.message.InfoMsg;
-import com.wechat.model.requestDto.InterviewCreateReq;
-import com.wechat.model.requestDto.JobAdvertisedReqDto;
-import com.wechat.model.requestDto.UpdUserCvReq;
-import com.wechat.model.requestDto.UserCvByJobReq;
-import com.wechat.model.requestDto.UserCvStatusReq;
+import com.wechat.model.requestDto.*;
 import com.wechat.model.responseDto.AlreadyPublishResp;
 import com.wechat.model.responseDto.ContactUserInfoResp;
 import com.wechat.model.responseDto.ResultEntity;
 import com.wechat.service.CommonService;
 import com.wechat.service.EnterpriseService;
 import com.wechat.service.MdeJobAdvertisedService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+import java.io.IOException;
+import java.util.Map;
 
 /**
  * 企业查看简历
- * 
- * @author zhouyd
  *
+ * @author zhouyd
  */
 @Controller
 @RequestMapping(value = "enterprise")
-public class EnterpriseController{
-
-	@Autowired
-	private EnterpriseService enterpriseService;
-	@Autowired
-	private CommonService commonService;
-	@Resource
-	private MdeJobAdvertisedService jobAdvertisedService;
-	/**
-	 * 企业点击收到的简历
-	 * 
-	 * @return
-	 * @throws Exception
-	 */
+public class EnterpriseController {
+
+    @Autowired
+    private EnterpriseService enterpriseService;
+    @Autowired
+    private CommonService commonService;
+    @Resource
+    private MdeJobAdvertisedService jobAdvertisedService;
+    /**
+     * 企业点击收到的简历
+     *
+     * @return
+     * @throws Exception
+     */
 /*	@RequestMapping(value = "receive", method = RequestMethod.POST)
 	@ResponseBody
 	public ResultEntity<Map<String, Object>> receiveUserCv(HttpServletRequest req, HttpServletResponse resp,
@@ -59,155 +52,180 @@ public class EnterpriseController{
 		return new ResultEntity<>(InfoMsg.SUCCESS_REQUEST, maps);
 	}*/
 
-	/**
-	 * 查看简历
-	 * 
-	 * @param userCode
-	 * @return
-	 */
-	@RequestMapping(value = "lookUserCv", method = RequestMethod.POST)
-	@ResponseBody
-	public ResultEntity<ContactUserInfoResp> lookUserCv(@RequestBody Map<String, String> param,HttpServletRequest req) {
-		String lang = commonService.getLanguage(req);
-		String hotelCode = commonService.getUserCode(req);
-		ContactUserInfoResp contactUserInfoResp = enterpriseService.lookUserCv(hotelCode,param,lang);
-		return new ResultEntity<>(InfoMsg.SUCCESS_REQUEST, contactUserInfoResp);
-	}
-
-	/**
-	 * 更新职位发布状态
-	 * 
-	 * @param req
-	 * @param resp
-	 * @param params
-	 * @return
-	 * @throws Exception 
-	 */
-	@RequestMapping(value = "updateJobAdvertisedStatus", method = RequestMethod.POST)
-	@ResponseBody
-	public ResultEntity<String> updateJobAdvertisedStatus(HttpServletRequest req, HttpServletResponse resp,
-			@RequestBody Map<String, String> params) throws Exception {
-		return enterpriseService.updateJobAdvertisedStatus(req,params);
-	}
-	
-	/**
-	 * 更新职位首推状态
-	 * 
-	 * @param req
-	 * @param resp
-	 * @param params
-	 * @return
-	 */
-	@RequestMapping(value = "updateJobRecommend", method = RequestMethod.POST)
-	@ResponseBody
-	public ResultEntity<String> updateJobRecommend(HttpServletRequest req, HttpServletResponse resp,
-			@RequestBody Map<String, String> params) {
-		return enterpriseService.updateJobRecommend(req,params);
-	}
-
-	/**
-	 * 下载简历
-	 * 
-	 * @param req
-	 * @param resp
-	 * @return
-	 * @throws IOException 
-	 * @throws Exception
-	 */
-	@RequestMapping(value = "download", method = RequestMethod.POST)
-	@ResponseBody
-	public ResultEntity<String> downloadUserCv(HttpServletRequest req, HttpServletResponse resp,
-			@RequestBody Map<String, Object> param) {
-		String infoMsg = enterpriseService.downloadUserCv(req, resp, param);
-		return new ResultEntity<>(InfoMsg.SUCCESS_REQUEST,infoMsg);
-	}
-
-	/**
-	 * 切换简历类型 根据类型判断 ( 0-新投递;1-已查看;2-已下载;3-邀请面试;4-录取;5-淘汰;6-储备)
-	 * 
-	 * @param req
-	 * @param resp
-	 * @return
-	 * @throws Exception
-	 */
-	@RequestMapping(value = "getUserCvStateListInfo", method = RequestMethod.POST)
-	@ResponseBody
-	public ResultEntity<Map<String, Object>> getUserCvStateListInfo(HttpServletRequest req,
-			@Valid @RequestBody UserCvStatusReq param) {
-		Map<String, Object> maps = enterpriseService.getUserCvStateListInfo2(req, param, "0");
-		return new ResultEntity<>(InfoMsg.SUCCESS_REQUEST, maps);
-	}
-	
-	/**
-	 * PC端专用
-	 * 切换简历类型 根据类型判断 ( 0-新投递;1-已查看;2-已下载;3-邀请面试;4-录取;5-淘汰;6-储备)
-	 * 
-	 * @param req
-	 * @param resp
-	 * @return
-	 * @throws Exception
-	 */
-	@RequestMapping(value = "getUserCvStateListInfoPc", method = RequestMethod.POST)
-	@ResponseBody
-	public ResultEntity<Map<String, Object>> getUserCvStateListInfoPc(HttpServletRequest req,
-			@Valid @RequestBody UserCvStatusReq param) {
-		Map<String, Object> maps = enterpriseService.getUserCvStateListInfo2(req, param, "1");
-		return new ResultEntity<>(InfoMsg.SUCCESS_REQUEST, maps);
-	}
-	
-	/**
-	 * PC端专用
-	 *   按职位显示投递列表 
-	 * 
-	 * @param req
-	 * @param resp
-	 * @return
-	 * @throws Exception
-	 */
-	@RequestMapping(value = "getUserCvListInfoByJobPc", method = RequestMethod.POST)
-	@ResponseBody
-	public ResultEntity<Map<String, Object>> getUserCvListInfoByJobPc(HttpServletRequest req,
-			 @RequestBody UserCvByJobReq param) {
-		Map<String, Object> maps = enterpriseService.getUserCvStateListInfoByJob(req, param, "1");
-		return new ResultEntity<>(InfoMsg.SUCCESS_REQUEST, maps);
-	}
-
-
-	/**
-	 * 邀请面试/录用/淘汰 更新简历状态 type ( 0-新投递;1-已查看;2-已下载;3-邀请面试;4-录取;5-淘汰;6-储备)
-	 * 
-	 * @param req
-	 * @param resp
-	 * @return
-	 * @throws Exception
-	 */
-	@RequestMapping(value = "updateUserCvStatus", method = RequestMethod.POST)
-	@ResponseBody
-	public ResultEntity<String> updateUserCvStatus(HttpServletRequest req, @RequestBody UpdUserCvReq param)
-			throws Exception {
-		InfoMsg infoMsg = enterpriseService.updateUserCvStatus(req, param, new InterviewCreateReq());
-		return new ResultEntity<>(infoMsg);
-	}
-
-	/**
-	 * 已发布信息
-	 * 
-	 * @param req
-	 * @param resp
-	 * @return
-	 */
-	@RequestMapping(value = "alreadyPublish", method = RequestMethod.POST)
-	@ResponseBody
-	public ResultEntity<AlreadyPublishResp> alreadyPublish (@RequestBody JobAdvertisedReqDto jobReq,
-			HttpServletRequest req, HttpServletResponse resp) {
-		String userCode = commonService.getUserCode(req);
-		AlreadyPublishResp response = new AlreadyPublishResp();
-		// 获取已发布职位信息
-		response.setList(enterpriseService.alreadyPublish(req, resp, userCode,jobReq));
-		// 获取首推数据
-		response.setRecommendNum(jobAdvertisedService.getAvailableAndUsedCount(userCode));
-
-		return new ResultEntity<>(InfoMsg.SUCCESS_REQUEST, response);
-	}
+    /**
+     * 查看简历
+     *
+     * @param userCode
+     * @return
+     */
+    @RequestMapping(value = "lookUserCv", method = RequestMethod.POST)
+    @ResponseBody
+    public ResultEntity<ContactUserInfoResp> lookUserCv(@RequestBody Map<String, String> param, HttpServletRequest req) {
+        String lang = commonService.getLanguage(req);
+        String hotelCode = commonService.getUserCode(req);
+        ContactUserInfoResp contactUserInfoResp = enterpriseService.lookUserCv(hotelCode, param, lang);
+        return new ResultEntity<>(InfoMsg.SUCCESS_REQUEST, contactUserInfoResp);
+    }
+
+    /**
+     * 更新职位发布状态
+     *
+     * @param req
+     * @param resp
+     * @param params
+     * @return
+     * @throws Exception
+     */
+    @RequestMapping(value = "updateJobAdvertisedStatus", method = RequestMethod.POST)
+    @ResponseBody
+    public ResultEntity<String> updateJobAdvertisedStatus(HttpServletRequest req, HttpServletResponse resp,
+                                                          @RequestBody Map<String, String> params) throws Exception {
+        return enterpriseService.updateJobAdvertisedStatus(req, params);
+    }
+
+    /**
+     * 更新职位首推状态
+     *
+     * @param req
+     * @param resp
+     * @param params
+     * @return
+     */
+    @RequestMapping(value = "updateJobRecommend", method = RequestMethod.POST)
+    @ResponseBody
+    public ResultEntity<String> updateJobRecommend(HttpServletRequest req, HttpServletResponse resp,
+                                                   @RequestBody Map<String, String> params) {
+        return enterpriseService.updateJobRecommend(req, params);
+    }
+
+    /**
+     * 下载简历
+     *
+     * @param req
+     * @param resp
+     * @return
+     * @throws IOException
+     * @throws Exception
+     */
+    @RequestMapping(value = "download", method = RequestMethod.POST)
+    @ResponseBody
+    public ResultEntity<String> downloadUserCv(HttpServletRequest req, HttpServletResponse resp,
+                                               @RequestBody Map<String, Object> param) {
+        String infoMsg = enterpriseService.downloadUserCv(req, resp, param);
+        return new ResultEntity<>(InfoMsg.SUCCESS_REQUEST, infoMsg);
+    }
+
+    /**
+     * 切换简历类型 根据类型判断 ( 0-新投递;1-已查看;2-已下载;3-邀请面试;4-录取;5-淘汰;6-储备)
+     *
+     * @param req
+     * @param resp
+     * @return
+     * @throws Exception
+     */
+    @RequestMapping(value = "getUserCvStateListInfo", method = RequestMethod.POST)
+    @ResponseBody
+    public ResultEntity<Map<String, Object>> getUserCvStateListInfo(HttpServletRequest req,
+                                                                    @Valid @RequestBody UserCvStatusReq param) {
+        Map<String, Object> maps = enterpriseService.getUserCvStateListInfo2(req, param, "0");
+        return new ResultEntity<>(InfoMsg.SUCCESS_REQUEST, maps);
+    }
+
+    /**
+     * PC端专用
+     * 切换简历类型 根据类型判断 ( 0-新投递;1-已查看;2-已下载;3-邀请面试;4-录取;5-淘汰;6-储备)
+     *
+     * @param req
+     * @param resp
+     * @return
+     * @throws Exception
+     */
+    @RequestMapping(value = "getUserCvStateListInfoPc", method = RequestMethod.POST)
+    @ResponseBody
+    public ResultEntity<Map<String, Object>> getUserCvStateListInfoPc(HttpServletRequest req,
+                                                                      @Valid @RequestBody UserCvStatusReq param) {
+        Map<String, Object> maps = enterpriseService.getUserCvStateListInfo2(req, param, "1");
+        return new ResultEntity<>(InfoMsg.SUCCESS_REQUEST, maps);
+    }
+
+    /**
+     * PC端专用
+     * 按职位显示投递列表
+     *
+     * @param req
+     * @param resp
+     * @return
+     * @throws Exception
+     */
+    @RequestMapping(value = "getUserCvListInfoByJobPc", method = RequestMethod.POST)
+    @ResponseBody
+    public ResultEntity<Map<String, Object>> getUserCvListInfoByJobPc(HttpServletRequest req,
+                                                                      @RequestBody UserCvByJobReq param) {
+        Map<String, Object> maps = enterpriseService.getUserCvStateListInfoByJob(req, param, "1");
+        return new ResultEntity<>(InfoMsg.SUCCESS_REQUEST, maps);
+    }
+
+
+    /**
+     * 邀请面试/录用/淘汰 更新简历状态 type ( 0-新投递;1-已查看;2-已下载;3-邀请面试;4-录取;5-淘汰;6-储备)
+     *
+     * @param req
+     * @param resp
+     * @return
+     * @throws Exception
+     */
+    @RequestMapping(value = "updateUserCvStatus", method = RequestMethod.POST)
+    @ResponseBody
+    public ResultEntity<String> updateUserCvStatus(HttpServletRequest req, @RequestBody UpdUserCvReq param)
+            throws Exception {
+        InfoMsg infoMsg = enterpriseService.updateUserCvStatus(req, param, new InterviewCreateReq());
+        return new ResultEntity<>(infoMsg);
+    }
+
+    /**
+     * 已发布信息
+     *
+     * @param req
+     * @param resp
+     * @return
+     */
+    @RequestMapping(value = "alreadyPublish", method = RequestMethod.POST)
+    @ResponseBody
+    public ResultEntity<AlreadyPublishResp> alreadyPublish(@RequestBody JobAdvertisedReqDto jobReq,
+                                                           HttpServletRequest req, HttpServletResponse resp) {
+        String userCode = commonService.getUserCode(req);
+        AlreadyPublishResp response = new AlreadyPublishResp();
+        // 获取已发布职位信息
+        response.setList(enterpriseService.alreadyPublish(req, resp, userCode, jobReq));
+        // 获取首推数据
+        response.setRecommendNum(jobAdvertisedService.getAvailableAndUsedCount(userCode));
+
+        return new ResultEntity<>(InfoMsg.SUCCESS_REQUEST, response);
+    }
+
+
+    /**
+     * @param req
+     * @param resp
+     * @param keyWordReq 关键词
+     * @return ResultEntity<AlreadyPublishResp>
+     * @description 已发职位关键词检索
+     * @author rayson
+     * @date 2023-09-12 14:41
+     **/
+    @RequestMapping(value = "searchKeyWord", method = RequestMethod.POST)
+    @ResponseBody
+    public ResultEntity<AlreadyPublishResp> searchPersonAbility(HttpServletRequest req,
+                                                                HttpServletResponse resp, @RequestBody KeyWordReq keyWordReq) {
+        String userCode = commonService.getUserCode(req);
+        AlreadyPublishResp response = new AlreadyPublishResp();
+        // 检索已发职位
+        response.setList(enterpriseService.searchKeyWord(keyWordReq, userCode, req));
+        // 获取首推数据
+        response.setRecommendNum(jobAdvertisedService.getAvailableAndUsedCount(userCode));
+
+        return new ResultEntity<>(InfoMsg.SUCCESS_REQUEST, response);
+    }
+
 
 }

+ 384 - 365
src/main/java/com/wechat/dao/MdeJobAdvertisedDao.java

@@ -3,12 +3,6 @@
  */
 package com.wechat.dao;
 
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.springframework.stereotype.Repository;
-
 import com.wechat.global.base.dao.Pagination;
 import com.wechat.global.base.dao.PagingResult;
 import com.wechat.global.base.dao.impl.BaseDao;
@@ -22,86 +16,92 @@ import com.wechat.model.dto.ShowOfJobsDto;
 import com.wechat.model.responseDto.JobAdvertisedNologinResp;
 import com.wechat.model.responseDto.JobAdvertisedRes;
 import com.wechat.model.responseDto.JobAdvertisedResp;
+import org.springframework.stereotype.Repository;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 
 /**
  * 单表生成DAO接口
- * 
+ *
  * @author tangwc
  * @version 2018-05-23
  */
 @Repository
 public class MdeJobAdvertisedDao extends BaseDao {
-	public MdeJobAdvertised getInfoById(int id,String lang) {
-		Map<String,Object> map = new HashMap<String,Object>();
-		map.put("id", id);
-		map.put("lang", lang);
-		return 	super.selectOne("MdeJobAdvertisedMapper.get", map);
-	}
-	
-	public MdeJobAdvertisedEntity getJobAdvertisedById(int id) {
-		Map<String,Object> map = new HashMap<String,Object>();
-		map.put("id", id);
-		return super.selectOne("MdeJobAdvertisedMapper.getInfoById", map);
-	}
-	
-	
-	/**
-	 * 根据id查询全部相关职位的详情
-	 * @param id
-	 * @param lang
-	 * @return
-	 */
-	public List<ShowOfJobsDto> getInfoByIds(List<String> idList) {
-		Map<String,Object> map = new HashMap<String,Object>();
-		map.put("idList", idList);
-		return 	super.select("MdeJobAdvertisedMapper.getInfoByIds", map);
-	}
-
-	
-	/**
-	 * 获取推荐职位
-	 * 
-	 * @param limi
-	 * @return
-	 */
-	public List<MdeJobAdvertised> getRecommentJobs(int limitSize) {
-		return super.select("MdeJobAdvertisedMapper.getRecommentJobs", limitSize);
-	}
-	
-	/**
-	 * 获取推荐职位-分页查询
-	 * 
-	 * @param limi
-	 * @return
-	 */
-	public PagingResult<JobAdvertisedListDto> getPagingRecommentJobs(Pagination page) {
-		return super.selectPagination("MdeJobAdvertisedMapper.getPagingRecommentJobs", "MdeJobAdvertisedMapper.getPagingRecommentJobsCount",page);
-	}
-	
-	
-	/**
-	 * 优选职位
-	 * 
-	 * @param userCode
-	 * @param recommentJobsLimitSize
-	 * @return
-	 */
+    public MdeJobAdvertised getInfoById(int id, String lang) {
+        Map<String, Object> map = new HashMap<String, Object>();
+        map.put("id", id);
+        map.put("lang", lang);
+        return super.selectOne("MdeJobAdvertisedMapper.get", map);
+    }
+
+    public MdeJobAdvertisedEntity getJobAdvertisedById(int id) {
+        Map<String, Object> map = new HashMap<String, Object>();
+        map.put("id", id);
+        return super.selectOne("MdeJobAdvertisedMapper.getInfoById", map);
+    }
+
+
+    /**
+     * 根据id查询全部相关职位的详情
+     *
+     * @param id
+     * @param lang
+     * @return
+     */
+    public List<ShowOfJobsDto> getInfoByIds(List<String> idList) {
+        Map<String, Object> map = new HashMap<String, Object>();
+        map.put("idList", idList);
+        return super.select("MdeJobAdvertisedMapper.getInfoByIds", map);
+    }
+
+
+    /**
+     * 获取推荐职位
+     *
+     * @param limi
+     * @return
+     */
+    public List<MdeJobAdvertised> getRecommentJobs(int limitSize) {
+        return super.select("MdeJobAdvertisedMapper.getRecommentJobs", limitSize);
+    }
+
+    /**
+     * 获取推荐职位-分页查询
+     *
+     * @param limi
+     * @return
+     */
+    public PagingResult<JobAdvertisedListDto> getPagingRecommentJobs(Pagination page) {
+        return super.selectPagination("MdeJobAdvertisedMapper.getPagingRecommentJobs", "MdeJobAdvertisedMapper.getPagingRecommentJobsCount", page);
+    }
+
+
+    /**
+     * 优选职位
+     *
+     * @param userCode
+     * @param recommentJobsLimitSize
+     * @return
+     */
 /*	public List<MdeJobAdvertised> getRecommentJobs(String userCode, int recommentJobsLimitSize) {
 		Map<String, Object> map = new HashMap<String, Object>();
 		map.put("userCode", userCode);
 		map.put("limitSize", recommentJobsLimitSize);
 		return super.select("MdeJobAdvertisedMapper.getRecommentJobsByUserCode", map);
 	}*/
-	
-	
-	/**
-	 * 优选职位
-	 * 
-	 * @param userCode
-	 * @param lang 
-	 * @param limitSize
-	 * @return
-	 */
+
+
+    /**
+     * 优选职位
+     *
+     * @param userCode
+     * @param lang
+     * @param limitSize
+     * @return
+     */
 	/*public List<MdeJobAdvertised> getSuperiorJobs(String userCode, String lang, int limitSize) {
 		Map<String, Object> map = new HashMap<String, Object>();
 		map.put("userCode", userCode);
@@ -110,297 +110,316 @@ public class MdeJobAdvertisedDao extends BaseDao {
 		return super.select("MdeJobAdvertisedMapper.getSuperiorJobs", map);
 	}*/
 
-	/**
-	 * 职位搜索
-	 * 
-	 * @param page
-	 * @return
-	 */
-	public PagingResult<JobAdvertisedListDto> searchJob(Pagination page) {
-		return super.selectPagination("MdeJobAdvertisedMapper.searchJob", "MdeJobAdvertisedMapper.searchJobCount",page);
-	}
-
-	/**
-	 * 职位搜索 (未登录)
-	 * 
-	 * @param page
-	 * @return
-	 */
-	public List<MdeJobAdvertised> searchJobNotLogin(Map<String,Object> param) {
-		return sqlSession.selectList("MdeJobAdvertisedMapper.searchJobNotLogin",param);
-	} 
-	
-	/**
-	 * 获取相似职位
-	 * 
-	 * @param jobId
-	 * @return
-	 */
-	public List<JobAdvertisedListDto> getSimilarJobs(int jobId, int limitSize) {
-		Map<String, Object> map = new HashMap<String, Object>();
-		map.put("jobId", jobId);
-		map.put("limitSize", limitSize);
-		return super.select("MdeJobAdvertisedMapper.getSimilarJobs", map);
-	}
-
-	/**
-	 * 酒店的其他职位
-	 * 
-	 * @param jobId
-	 * @return
-	 */
-	public List<MdeJobAdvertised> gethotelOtherPositionList(int jobId, String publisher, int limitSize) {
-		Map<String, Object> map = new HashMap<String, Object>();
-		map.put("jobId", jobId);
-		map.put("publisher", publisher);
-		map.put("limitSize", limitSize);
-		return super.select("MdeJobAdvertisedMapper.gethotelOtherPositionList", map);
-	}
-
-	public int insert(MdeJobAdvertised mdeJobAdvertised) {
-		return super.insert("MdeJobAdvertisedMapper.insert", mdeJobAdvertised);
-	}
-
-	/**
-	 * 获取 企业正在招聘的职位
-	 * 
-	 * @param publisher
-	 * @return
-	 */
-	public List<MdeJobAdvertised> getByPublisher(String publisher) {
-		return super.select("MdeJobAdvertisedMapper.getAdvertisedRecruitment", publisher);
-
-	}
-
-	/**
-	 * 获取已经投递过职位的用户code
-	 * @param publisher
-	 * @return
-	 */
-	public List<MdeJobAdvertised> getAlreadyAdvertisedByJobId(String publisher) {
-		return super.select("MdeJobAdvertisedMapper.getAlreadyAdvertisedByJobId", publisher);
-
-	}
-	/**
-	 * 查看该企业是否发布某个职位
-	 * 
-	 * @return
-	 */
-	public MdeJobAdvertised findByPublisherAndJobId(MdeJobInvitationRel mdeJobInvitationRel) {
-		return super.selectOne("MdeJobAdvertisedMapper.findByPublisherAndJobId", mdeJobInvitationRel);
-	}
-
-	public int updateJobAdvertisedStatus(Map<String, String> maps) {
-		return sqlSession.update("MdeJobAdvertisedMapper.updateJobAdvertisedStatus", maps);
-	}
-
-	public List<MdeJobAdvertised> getAdvertisedRecruitment(String userCode) {
-		return super.select("MdeJobAdvertisedMapper.getAdvertisedRecruitment", userCode);
-	}
-	
-	/**
-	 * 更新职位首推状态
-	 * 
-	 */
-	public int updateJobRecommend(Map<String, String> maps) {
-		return sqlSession.update("MdeJobAdvertisedMapper.updateJobRecommend", maps);
-	}
-
-
-	/**
-	 * 更新招聘职位信息表
-	 * 
-	 * @param mdeJobAdvertised
-	 * @return
-	 */
-	public int update(MdeJobAdvertised mdeJobAdvertised) {
-		return super.update("MdeJobAdvertisedMapper.update", mdeJobAdvertised);
-	}
-
-	public List<JobAdvertisedRes> getCollectionJobList(String[] jobListStr,String lang) {
-		Map<String, Object> map = new HashMap<String, Object>();
-		map.put("jobListStr", jobListStr);
-		map.put("lang", lang);
-		return super.select("MdeJobAdvertisedMapper.getCollectionJobList", map);
-	}
-
-	/**
-	 * 查询投递该公司的总简历数
-	 * 
-	 * @param userCode
-	 *            企业code
-	 * @return
-	 */
-	public int getAllUserCvCount(String userCode) {
-		return super.count("MdeJobAdvertisedMapper.getAllUserCvCount", userCode);
-	}
-
-	/**
-	 * 获取邀请面试简历数量
-	 * 
-	 * @param userCode
-	 *            企业code
-	 * @return
-	 */
-	public int inviteAuditionCount(String userCode) {
-		return super.count("MdeJobAdvertisedMapper.inviteAuditionCount", userCode);
-	}
-	
-	/**
-	 * 获取指定企业新简历数量
-	 * 
-	 * @param userCode
-	 *            企业code
-	 * @return
-	 */
-	public int getNewCvCountByPublisher(String userCode) {
-		return super.count("MdeJobAdvertisedMapper.getNewCvCountByPublisher", userCode);
-	}
-
-	/**
-	 * 录用简历数量
-	 * 
-	 * @param userCode
-	 *            企业code
-	 * @return
-	 */
-	public int matriculateUserCvCount(String userCode) {
-		return super.count("MdeJobAdvertisedMapper.matriculateUserCvCount", userCode);
-	}
-
-	/**
-	 * 淘汰简历数量
-	 * 
-	 * @param userCode
-	 *            企业code
-	 * @return
-	 */
-	public int eliminateUserCvCount(String userCode) {
-		return super.count("MdeJobAdvertisedMapper.eliminateUserCvCount", userCode);
-	}
-
-	/**
-	 * 已发布信息
-	 * 
-	 * @param userCode
-	 * @return
-	 */
-	public PagingResult<JobAdvertisedResp> alreadyPublish(Pagination page) {
-		return super.selectPagination("MdeJobAdvertisedMapper.alreadyPublish",
-				"MdeJobAdvertisedMapper.alreadyPublishCount", page);
-	}
-	
-	/**
-	 * 已发布职位个数
-	 * 
-	 * @param userCode
-	 * @return
-	 */
-	public int alreadyPublishCount(String userCode,String jobStatus) {
-		Map<Object, Object> pageParam = new HashMap<Object, Object>();
-		pageParam.put("userCode", userCode);
-		pageParam.put("jobStatus", jobStatus);
-		return super.count("MdeJobAdvertisedMapper.alreadyPublishCount", pageParam);
-	}
-
-	/**
-	 * 优选职位  大于50(未登录) 
-	 * @return
-	 */
-	public List<MdeJobAdvertised> getNotLoginRecommentJobsRandJoin(Integer limitSize) {
-		return super.select("MdeJobAdvertisedMapper.getNotLoginRecommentJobsRandJoin",limitSize);
-	}
-	
-	/**
-	 * 优选职位  小于50(未登录) 
-	 * @return
-	 */
-	public List<MdeJobAdvertised> getNotLoginRecommentJobsRand(Integer limitSize) {
-		return super.select("MdeJobAdvertisedMapper.getNotLoginRecommentJobsRand",limitSize);
-	}
-	/**
-	 * 优选职位的数量
-	 * @return
-	 */
-	public int getNotLoginRecommentJobsCount() {
-		return sqlSession.selectOne("MdeJobAdvertisedMapper.getNotLoginRecommentJobsCount");
-	}
-	
-	/**
-	 * 批量更新发布日期(招聘中的职位)
-	 * @param publisher
-	 * @return
-	 */
-	public int batchUpdatePublishDate (String publisher) {
-		return sqlSession.update("MdeJobAdvertisedMapper.batchUpdatePublishDate",publisher);
-	}
-	
-	/**
-	 * 获取已发布的职位-非登录状态
-	 * @param userCode
-	 * @param lang
-	 * @return
-	 */
-	public List<JobAdvertisedNologinResp> getPublishingJobsByUserCodeNologin(String userCode, String lang) {
-		Map<String,Object> map = new HashMap<String,Object>();
-		map.put("userCode", userCode);
-		map.put("lang", lang);
-		return super.select("MdeJobAdvertisedMapper.getPublishingJobsByUserCode",map);
-	}
-	
-	/**
-	 * 获取已发布的职位
-	 * @param userCode
-	 * @param lang
-	 * @return
-	 */
-	public List<JobAdvertisedResp> getPublishingJobsByUserCode(String userCode, String lang) {
-		Map<String,Object> map = new HashMap<String,Object>();
-		map.put("userCode", userCode);
-		map.put("lang", lang);
-		return super.select("MdeJobAdvertisedMapper.getPublishingJobsByUserCode",map);
-	}
-	
-	
-	/**
-	 * 获取已发布的职位
-	 * @param userCode
-	 * @param lang
-	 * @return
-	 */
-	public List<JobAdvertisedNologinResp> getPublishingJobsNologin(String userCode) {
-		Map<String,Object> map = new HashMap<String,Object>();
-		map.put("userCode", userCode);
-		return super.select("MdeJobAdvertisedMapper.getPublishingJobsNologin",map);
-	}
-	
-	/**
-	 * 获取酒店可首推和已首推个数  
-	 * @param userCode
-	 * @return
-	 */
-	public AvailableAndUsedCountDto getAvailableAndUsedCount(String userCode) {
-		Map<String,Object> map = new HashMap<String,Object>();
-		map.put("userCode", userCode);
-		return super.selectOne("MdeJobAdvertisedMapper.getAvailableAndUsedCount",map);
-	}
-	
-	/**
-	 *点击量查询
-	 * @param statisticType 统计类型  按月,季度,年 统计
-	 * @return
-	 */
-	public List<JobRepFormPvDto> findRepFormPvByDate(Map<String, Object> map){
-		return super.select("MdeJobAdvertisedMapper.findRepFormPvByDate",map);
-	}
-	
-	/**
-	 * 点击量
-	 * @param statisticType 统计类型  按月,季度,年 统计
-	 * @return
-	 */
-	public Integer findGeneralPvByDate(Map<String, Object> map){
-		return super.selectOne("MdeJobAdvertisedMapper.findGeneralPvByDate",map);
-	}
-	
+    /**
+     * 职位搜索
+     *
+     * @param page
+     * @return
+     */
+    public PagingResult<JobAdvertisedListDto> searchJob(Pagination page) {
+        return super.selectPagination("MdeJobAdvertisedMapper.searchJob", "MdeJobAdvertisedMapper.searchJobCount", page);
+    }
+
+    /**
+     * 职位搜索 (未登录)
+     *
+     * @param page
+     * @return
+     */
+    public List<MdeJobAdvertised> searchJobNotLogin(Map<String, Object> param) {
+        return sqlSession.selectList("MdeJobAdvertisedMapper.searchJobNotLogin", param);
+    }
+
+    /**
+     * 获取相似职位
+     *
+     * @param jobId
+     * @return
+     */
+    public List<JobAdvertisedListDto> getSimilarJobs(int jobId, int limitSize) {
+        Map<String, Object> map = new HashMap<String, Object>();
+        map.put("jobId", jobId);
+        map.put("limitSize", limitSize);
+        return super.select("MdeJobAdvertisedMapper.getSimilarJobs", map);
+    }
+
+    /**
+     * 酒店的其他职位
+     *
+     * @param jobId
+     * @return
+     */
+    public List<MdeJobAdvertised> gethotelOtherPositionList(int jobId, String publisher, int limitSize) {
+        Map<String, Object> map = new HashMap<String, Object>();
+        map.put("jobId", jobId);
+        map.put("publisher", publisher);
+        map.put("limitSize", limitSize);
+        return super.select("MdeJobAdvertisedMapper.gethotelOtherPositionList", map);
+    }
+
+    public int insert(MdeJobAdvertised mdeJobAdvertised) {
+        return super.insert("MdeJobAdvertisedMapper.insert", mdeJobAdvertised);
+    }
+
+    /**
+     * 获取 企业正在招聘的职位
+     *
+     * @param publisher
+     * @return
+     */
+    public List<MdeJobAdvertised> getByPublisher(String publisher) {
+        return super.select("MdeJobAdvertisedMapper.getAdvertisedRecruitment", publisher);
+
+    }
+
+    /**
+     * 获取已经投递过职位的用户code
+     *
+     * @param publisher
+     * @return
+     */
+    public List<MdeJobAdvertised> getAlreadyAdvertisedByJobId(String publisher) {
+        return super.select("MdeJobAdvertisedMapper.getAlreadyAdvertisedByJobId", publisher);
+
+    }
+
+    /**
+     * 查看该企业是否发布某个职位
+     *
+     * @return
+     */
+    public MdeJobAdvertised findByPublisherAndJobId(MdeJobInvitationRel mdeJobInvitationRel) {
+        return super.selectOne("MdeJobAdvertisedMapper.findByPublisherAndJobId", mdeJobInvitationRel);
+    }
+
+    public int updateJobAdvertisedStatus(Map<String, String> maps) {
+        return sqlSession.update("MdeJobAdvertisedMapper.updateJobAdvertisedStatus", maps);
+    }
+
+    public List<MdeJobAdvertised> getAdvertisedRecruitment(String userCode) {
+        return super.select("MdeJobAdvertisedMapper.getAdvertisedRecruitment", userCode);
+    }
+
+    /**
+     * 更新职位首推状态
+     */
+    public int updateJobRecommend(Map<String, String> maps) {
+        return sqlSession.update("MdeJobAdvertisedMapper.updateJobRecommend", maps);
+    }
+
+
+    /**
+     * 更新招聘职位信息表
+     *
+     * @param mdeJobAdvertised
+     * @return
+     */
+    public int update(MdeJobAdvertised mdeJobAdvertised) {
+        return super.update("MdeJobAdvertisedMapper.update", mdeJobAdvertised);
+    }
+
+    public List<JobAdvertisedRes> getCollectionJobList(String[] jobListStr, String lang) {
+        Map<String, Object> map = new HashMap<String, Object>();
+        map.put("jobListStr", jobListStr);
+        map.put("lang", lang);
+        return super.select("MdeJobAdvertisedMapper.getCollectionJobList", map);
+    }
+
+    /**
+     * 查询投递该公司的总简历数
+     *
+     * @param userCode 企业code
+     * @return
+     */
+    public int getAllUserCvCount(String userCode) {
+        return super.count("MdeJobAdvertisedMapper.getAllUserCvCount", userCode);
+    }
+
+    /**
+     * 获取邀请面试简历数量
+     *
+     * @param userCode 企业code
+     * @return
+     */
+    public int inviteAuditionCount(String userCode) {
+        return super.count("MdeJobAdvertisedMapper.inviteAuditionCount", userCode);
+    }
+
+    /**
+     * 获取指定企业新简历数量
+     *
+     * @param userCode 企业code
+     * @return
+     */
+    public int getNewCvCountByPublisher(String userCode) {
+        return super.count("MdeJobAdvertisedMapper.getNewCvCountByPublisher", userCode);
+    }
+
+    /**
+     * 录用简历数量
+     *
+     * @param userCode 企业code
+     * @return
+     */
+    public int matriculateUserCvCount(String userCode) {
+        return super.count("MdeJobAdvertisedMapper.matriculateUserCvCount", userCode);
+    }
+
+    /**
+     * 淘汰简历数量
+     *
+     * @param userCode 企业code
+     * @return
+     */
+    public int eliminateUserCvCount(String userCode) {
+        return super.count("MdeJobAdvertisedMapper.eliminateUserCvCount", userCode);
+    }
+
+    /**
+     * 已发布信息
+     *
+     * @param userCode
+     * @return
+     */
+    public PagingResult<JobAdvertisedResp> alreadyPublish(Pagination page) {
+        return super.selectPagination("MdeJobAdvertisedMapper.alreadyPublish",
+                "MdeJobAdvertisedMapper.alreadyPublishCount", page);
+    }
+
+    /**
+     * @param page
+     * @return PagingResult<JobAdvertisedResp>
+     * @description 已发职位关键词检索
+     * @author rayson
+     * @date 2023-09-12 14:52
+     **/
+    public PagingResult<JobAdvertisedResp> searchKeyWord(Pagination page) {
+        return super.selectPagination("MdeJobAdvertisedMapper.searchKeyWord",
+                "MdeJobAdvertisedMapper.searchKeyWordCount", page);
+    }
+
+    /**
+     * 已发布职位个数
+     *
+     * @param userCode
+     * @return
+     */
+    public int alreadyPublishNotVipCount(String userCode, String jobStatus) {
+        Map<Object, Object> pageParam = new HashMap<Object, Object>();
+        pageParam.put("userCode", userCode);
+        pageParam.put("jobStatus", jobStatus);
+        return super.count("MdeJobAdvertisedMapper.alreadyPublishNotVipCount", pageParam);
+    }
+
+    /**
+     * 优选职位  大于50(未登录)
+     *
+     * @return
+     */
+    public List<MdeJobAdvertised> getNotLoginRecommentJobsRandJoin(Integer limitSize) {
+        return super.select("MdeJobAdvertisedMapper.getNotLoginRecommentJobsRandJoin", limitSize);
+    }
+
+    /**
+     * 优选职位  小于50(未登录)
+     *
+     * @return
+     */
+    public List<MdeJobAdvertised> getNotLoginRecommentJobsRand(Integer limitSize) {
+        return super.select("MdeJobAdvertisedMapper.getNotLoginRecommentJobsRand", limitSize);
+    }
+
+    /**
+     * 优选职位的数量
+     *
+     * @return
+     */
+    public int getNotLoginRecommentJobsCount() {
+        return sqlSession.selectOne("MdeJobAdvertisedMapper.getNotLoginRecommentJobsCount");
+    }
+
+    /**
+     * 批量更新发布日期(招聘中的职位)
+     *
+     * @param publisher
+     * @return
+     */
+    public int batchUpdatePublishDate(String publisher) {
+        return sqlSession.update("MdeJobAdvertisedMapper.batchUpdatePublishDate", publisher);
+    }
+
+    /**
+     * 获取已发布的职位-非登录状态
+     *
+     * @param userCode
+     * @param lang
+     * @return
+     */
+    public List<JobAdvertisedNologinResp> getPublishingJobsByUserCodeNologin(String userCode, String lang) {
+        Map<String, Object> map = new HashMap<String, Object>();
+        map.put("userCode", userCode);
+        map.put("lang", lang);
+        return super.select("MdeJobAdvertisedMapper.getPublishingJobsByUserCode", map);
+    }
+
+    /**
+     * 获取已发布的职位
+     *
+     * @param userCode
+     * @param lang
+     * @return
+     */
+    public List<JobAdvertisedResp> getPublishingJobsByUserCode(String userCode, String lang) {
+        Map<String, Object> map = new HashMap<String, Object>();
+        map.put("userCode", userCode);
+        map.put("lang", lang);
+        return super.select("MdeJobAdvertisedMapper.getPublishingJobsByUserCode", map);
+    }
+
+
+    /**
+     * 获取已发布的职位
+     *
+     * @param userCode
+     * @param lang
+     * @return
+     */
+    public List<JobAdvertisedNologinResp> getPublishingJobsNologin(String userCode) {
+        Map<String, Object> map = new HashMap<String, Object>();
+        map.put("userCode", userCode);
+        return super.select("MdeJobAdvertisedMapper.getPublishingJobsNologin", map);
+    }
+
+    /**
+     * 获取酒店可首推和已首推个数
+     *
+     * @param userCode
+     * @return
+     */
+    public AvailableAndUsedCountDto getAvailableAndUsedCount(String userCode) {
+        Map<String, Object> map = new HashMap<String, Object>();
+        map.put("userCode", userCode);
+        return super.selectOne("MdeJobAdvertisedMapper.getAvailableAndUsedCount", map);
+    }
+
+    /**
+     * 点击量查询
+     *
+     * @param statisticType 统计类型  按月,季度,年 统计
+     * @return
+     */
+    public List<JobRepFormPvDto> findRepFormPvByDate(Map<String, Object> map) {
+        return super.select("MdeJobAdvertisedMapper.findRepFormPvByDate", map);
+    }
+
+    /**
+     * 点击量
+     *
+     * @param statisticType 统计类型  按月,季度,年 统计
+     * @return
+     */
+    public Integer findGeneralPvByDate(Map<String, Object> map) {
+        return super.selectOne("MdeJobAdvertisedMapper.findGeneralPvByDate", map);
+    }
+
 }

+ 45 - 0
src/main/java/com/wechat/model/requestDto/JobAdvertisedReqDto.java

@@ -1,11 +1,23 @@
 package com.wechat.model.requestDto;
 
+import java.util.Date;
+
 public class JobAdvertisedReqDto extends PageReq {
 
 	private String jobStatus; // 招聘状态
 
 	private boolean refresh; // true(更新招聘中职位日期)
 
+	private String positionIdList; // 职位Id
+
+	private boolean newDelivery; // 是否有新简历
+
+	private Date dayStart; // 职位发布开始时间
+
+	private Date dayEnd;  // 职位发布结束时间
+
+
+
 	public String getJobStatus() {
 		return jobStatus;
 	}
@@ -22,4 +34,37 @@ public class JobAdvertisedReqDto extends PageReq {
 		this.refresh = refresh;
 	}
 
+	public String getPositionIdList() {
+		return positionIdList;
+	}
+
+	public void setPositionIdList(String positionIdList) {
+		this.positionIdList = positionIdList;
+	}
+
+	public boolean getNewDelivery() {
+		return newDelivery;
+	}
+
+	public void setNewDelivery(boolean newDelivery) {
+		this.newDelivery = newDelivery;
+	}
+
+
+	public Date getDayStart() {
+		return dayStart;
+	}
+
+	public void setDayStart(Date dayStart) {
+		this.dayStart = dayStart;
+	}
+
+	public Date getDayEnd() {
+		return dayEnd;
+	}
+
+	public void setDayEnd(Date dayEnd) {
+		this.dayEnd = dayEnd;
+	}
+
 }

+ 494 - 485
src/main/java/com/wechat/service/EnterpriseService.java

@@ -1,30 +1,7 @@
 package com.wechat.service;
 
-import java.io.BufferedInputStream;
-import java.io.BufferedOutputStream;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import org.apache.commons.collections.CollectionUtils;
-import org.nutz.lang.Strings;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
 import com.google.common.collect.Maps;
 import com.wechat.common.utils.MessageUtils;
-import com.wechat.common.utils.NumberUtils;
 import com.wechat.common.utils.StringsUtils;
 import com.wechat.dao.MdeJobAdvertisedDao;
 import com.wechat.dao.MdePositionCvRelDao;
@@ -39,86 +16,86 @@ import com.wechat.global.message.InfoMsg;
 import com.wechat.model.dbEntity.MdePositionCvRel;
 import com.wechat.model.dbEntity.MdeUser;
 import com.wechat.model.dto.UserInfoResp;
-import com.wechat.model.requestDto.InterviewCreateReq;
-import com.wechat.model.requestDto.JobAdvertisedReqDto;
-import com.wechat.model.requestDto.UpdUserCvReq;
-import com.wechat.model.requestDto.UserCvByJobReq;
-import com.wechat.model.requestDto.UserCvStatusReq;
+import com.wechat.model.requestDto.*;
 import com.wechat.model.responseDto.ContactUserInfoResp;
 import com.wechat.model.responseDto.JobAdvertisedResp;
 import com.wechat.model.responseDto.ResultEntity;
+import org.apache.commons.collections.CollectionUtils;
+import org.nutz.lang.Strings;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.*;
+import java.util.*;
 
 @Service
-public class EnterpriseService extends BaseService{
-
-	@Autowired
-	private CommonService commonService;
-
-	@Autowired
-	private MdePositionCvRelDao mdePositionCvRelDao;
-	
-	@Autowired
-	private RecruitmentInformationReleaseService recruitmentReleaseService;
-
-	@Resource
-	private RedisWithExpiryTimeDao redisDao;
-
-	@Autowired
-	private MdeJobAdvertisedDao mdeJobAdvertisedDao;
-
-	@Autowired
-	private PositionService postitionService;
-
-	@Autowired
-	private TalentRetrievalService talentRetrievalService;
-
-	@Autowired
-	private MdeUserDao mdeUserDao;
-
-	@Value("#{configProperties['upload.path.template']}")
-	private String fileTemplate;
-
-	public static Logger log = LoggerFactory.getLogger(EnterpriseService.class);
-
-	@Value("#{configProperties['upload.base.path']}")
-	private String basePackagePath; // 简历路径
-
-	@Value("#{configProperties['upload.path.file']}")
-	private String filePath; // 简历路径
-
-	@Value("#{configProperties['url.base']}")
-	private String domainUrl; // 域名
-
-	@Value("#{configProperties['interview_invitation_template_id']}")
-	private String interviewInvitationTemplateId; // 邀请面试 推送模板Id
-	
-	@Value("#{configProperties['interview_invitation_url']}")
-	private String interviewInvitationUrl; //  邀请面试 跳转地址
-	
-	// 视频小程序-用户唯一凭证
-	@Value("#{configProperties['wx.miniprog.video.appid']}")
-	private String videoAppId;
-	
-	// 视频小程序-跳转小程序类型:developer为开发版;trial为体验版;formal为正式版;默认为正式版
-	@Value("#{configProperties['wx.miniprog.video.state']}")
-	private String videoMpState;
-	
-	// 视频小程序-主页链接
-	@Value("#{configProperties['wx.miniprog.video.tmsg.invite.url']}")
-	private String videoTmsgInviteUrl;
-	
-	//非付费企业月可发职位次数
-	@Value("#{configProperties['unvip_release_no']}")
-	private String unvipReleaseNo;
-
-
-	/**
-	 * 企业查看简历 首页
-	 * 
-	 * @param req
-	 * @param resp
-	 * @return
-	 */
+public class EnterpriseService extends BaseService {
+
+    public static Logger log = LoggerFactory.getLogger(EnterpriseService.class);
+    @Autowired
+    private CommonService commonService;
+    @Autowired
+    private MdePositionCvRelDao mdePositionCvRelDao;
+    @Autowired
+    private RecruitmentInformationReleaseService recruitmentReleaseService;
+    @Resource
+    private RedisWithExpiryTimeDao redisDao;
+    @Autowired
+    private MdeJobAdvertisedDao mdeJobAdvertisedDao;
+    @Autowired
+    private PositionService postitionService;
+    @Autowired
+    private TalentRetrievalService talentRetrievalService;
+    @Autowired
+    private MdeUserDao mdeUserDao;
+    @Value("#{configProperties['upload.path.template']}")
+    private String fileTemplate;
+    @Value("#{configProperties['upload.base.path']}")
+    private String basePackagePath; // 简历路径
+
+    @Value("#{configProperties['upload.path.file']}")
+    private String filePath; // 简历路径
+
+    @Value("#{configProperties['url.base']}")
+    private String domainUrl; // 域名
+
+    @Value("#{configProperties['interview_invitation_template_id']}")
+    private String interviewInvitationTemplateId; // 邀请面试 推送模板Id
+
+    @Value("#{configProperties['interview_invitation_url']}")
+    private String interviewInvitationUrl; //  邀请面试 跳转地址
+
+    // 视频小程序-用户唯一凭证
+    @Value("#{configProperties['wx.miniprog.video.appid']}")
+    private String videoAppId;
+
+    // 视频小程序-跳转小程序类型:developer为开发版;trial为体验版;formal为正式版;默认为正式版
+    @Value("#{configProperties['wx.miniprog.video.state']}")
+    private String videoMpState;
+
+    // 视频小程序-主页链接
+    @Value("#{configProperties['wx.miniprog.video.tmsg.invite.url']}")
+    private String videoTmsgInviteUrl;
+
+    //非付费企业月可发职位次数
+    @Value("#{configProperties['unvip_release_no']}")
+    private String unvipReleaseNo;
+
+
+    /**
+     * 企业查看简历 首页
+     *
+     * @param req
+     * @param resp
+     * @return
+     */
 /*	public Map<String, Object> receiveUserCv(HttpServletRequest req, Page page) {
 		Map<String, Object> maps = Maps.newHashMap();
 		Pagination pagination = new Pagination(page.getIndex(), page.getSize());
@@ -192,308 +169,302 @@ public class EnterpriseService extends BaseService{
 		return maps;
 	}*/
 
-	/**
-	 * 更新职位发布状态
-	 * 
-	 * @param maps
-	 * @return
-	 * @throws Exception 
-	 */
-	@Transactional
-	public ResultEntity<String> updateJobAdvertisedStatus(HttpServletRequest req,Map<String, String> maps) throws Exception {
-		// 当前登录账号的企业code
-		String userCode = commonService.getUserCode(req);
-		//需要修改为的状态,不是修改前的状态
-		String jobStatus = maps.get("jobStatus");
-		String jobId = maps.get("jobId");
-		if (StringsUtils.isEmpty(jobId)) {
-			return new ResultEntity<>(InfoMsg.EERROE_POSITION_ERROR);
-		}
-		if (!"0".equals(jobStatus) && !"1".equals(jobStatus)) {
-			return new ResultEntity<>(InfoMsg.ERROR_JOBSTATUS_ERROR);
-		} else if ("0".equals(jobStatus)){
-			//验证企业发布次数
-			if(!recruitmentReleaseService.checkReleaseLimit(userCode))
-			{
-				//超限
-				InfoMsg msg = InfoMsg.ERROR_RELEASE_BEYOND;
-				msg.setMsg(MessageUtils.getText(msg.getMsg(), unvipReleaseNo));
-				return new ResultEntity<>(msg);
-			}
-		}
-		
-
-		maps.put("userCode", userCode);
-		int upd = mdeJobAdvertisedDao.updateJobAdvertisedStatus(maps);
-		if(upd < 1) {
-			log.error("职位发布状态更新失败" + "jobId:【"+jobId +"】 " + "userCode:【"+userCode +"】 ");
-			return new ResultEntity<>(InfoMsg.ERROR_INSERT_ERROR);
-		}
-
-		return new ResultEntity<>(InfoMsg.SUCCESS_REQUEST);
-	}
-	
-	/**
-	 * 更新职位首推状态
-	 * 
-	 * @param maps
-	 * @return
-	 */
-	@Transactional
-	public ResultEntity<String> updateJobRecommend(HttpServletRequest req,Map<String, String> maps) {
-		String recommendFlag = maps.get("recommendFlag");
-		String jobId = maps.get("jobId");
-		if (StringsUtils.isEmpty(jobId)) {
-			return new ResultEntity<>(InfoMsg.EERROE_POSITION_ERROR);
-		}
-		if (!"0".equals(recommendFlag) && !"1".equals(recommendFlag)) {
-			return new ResultEntity<>(InfoMsg.ERROR_PARAMS_ERROR);
-		}
-	
-		// 当前登录账号的企业code
-		String userCode = commonService.getUserCode(req);
-		maps.put("userCode", userCode);
-		int upd = mdeJobAdvertisedDao.updateJobRecommend(maps);
-		
-		if(upd < 1) {
-			log.error("职位首推状态更新失败" + "jobId:【"+jobId +"】 " + "userCode:【"+userCode +"】 ");
-			return new ResultEntity<>(InfoMsg.ERROR_INSERT_ERROR);
-		}
-		return new ResultEntity<>(InfoMsg.SUCCESS_REQUEST);
-	}
-
-	/**
-	 * 查看简历
-	 * 
-	 * @param userCode
-	 *            用户code
-     * @param hotelCode
-	 *            酒店code
-	 * @return
-	 */
-	@Transactional
-	public ContactUserInfoResp lookUserCv(String hotelCode,Map<String, String> param,String lang) {
-		int jobId = Integer.parseInt(param.get("jobId"));
-		String userCode = param.get("userCode");
-		String status = param.get("status");
-		
-		if (StringsUtils.isEmpty(param.get("jobId")) || StringsUtils.isEmpty(param.get("userCode"))|| StringsUtils.isEmpty(param.get("status"))) {
-			throw new CustomException(InfoMsg.ERROR_PARAMS_ERROR);
-		}
-		// 根据用户code 查询用户信息
-		ContactUserInfoResp contactUserInfoResp = talentRetrievalService.getContactNumber(userCode,lang);
-		if("0".equals(status))
-		{
-			//新简历投递的情况下,更新为已读
-			mdePositionCvRelDao.updateCvAlready(userCode,jobId);
-			//获取当前企业的新简历数 更新缓存
-			int count = mdeJobAdvertisedDao.getNewCvCountByPublisher(hotelCode);
-			redisDao.insert("hotelUserRecievedCVCount_" + hotelCode,String.valueOf(count));
-		}
-
-		return contactUserInfoResp;
-	}
-
-	/**
-	 * 下载简历的用户code
-	 * 
-	 * @param userCode
-	 * @return
-	 */
-	@Transactional
-	public String downloadUserCv(HttpServletRequest req, HttpServletResponse resp, Map<String, Object> param) {
-		String lang = commonService.getLanguage(req);
-		String userCode = param.get("userCode").toString();
-		String jobId = param.get("jobId").toString();
-		Map<String, Object> maps = Maps.newHashMap();
-		maps.put("userCode", userCode);
-		maps.put("jobId", jobId);
-		MdeUser mdeUser = mdeUserDao.getUserInfoByCode(userCode);
-		List<MdePositionCvRel> mdePositionCvRelsList = mdePositionCvRelDao.findPositionCvRelByJobIdAndUserCode(maps);
-		String cvUrl = "";
-		BufferedInputStream bufferInputStream = null;
-		BufferedOutputStream bufferOutStream = null;
-		try {
-			if (CollectionUtils.isNotEmpty(mdePositionCvRelsList)) {
-				MdePositionCvRel mdePositionCvRel = mdePositionCvRelsList.get(0);
-				cvUrl = mdePositionCvRel.getCvUrl();
-				if (Strings.isEmpty(cvUrl)) {
-					// word模板生成简历
-					String relativePath = postitionService.exportUserCvDoc(resp, userCode,lang);
-					cvUrl = domainUrl + relativePath;
+    /**
+     * 更新职位发布状态
+     *
+     * @param maps
+     * @return
+     * @throws Exception
+     */
+    @Transactional
+    public ResultEntity<String> updateJobAdvertisedStatus(HttpServletRequest req, Map<String, String> maps) throws Exception {
+        // 当前登录账号的企业code
+        String userCode = commonService.getUserCode(req);
+        //需要修改为的状态,不是修改前的状态
+        String jobStatus = maps.get("jobStatus");
+        String jobId = maps.get("jobId");
+        if (StringsUtils.isEmpty(jobId)) {
+            return new ResultEntity<>(InfoMsg.EERROE_POSITION_ERROR);
+        }
+        if (!"0".equals(jobStatus) && !"1".equals(jobStatus)) {
+            return new ResultEntity<>(InfoMsg.ERROR_JOBSTATUS_ERROR);
+        } else if ("0".equals(jobStatus)) {
+            //验证企业发布次数
+            if (!recruitmentReleaseService.checkReleaseLimit(userCode)) {
+                //超限
+                InfoMsg msg = InfoMsg.ERROR_RELEASE_BEYOND;
+                msg.setMsg(MessageUtils.getText(msg.getMsg(), unvipReleaseNo));
+                return new ResultEntity<>(msg);
+            }
+        }
+
+
+        maps.put("userCode", userCode);
+        int upd = mdeJobAdvertisedDao.updateJobAdvertisedStatus(maps);
+        if (upd < 1) {
+            log.error("职位发布状态更新失败" + "jobId:【" + jobId + "】 " + "userCode:【" + userCode + "】 ");
+            return new ResultEntity<>(InfoMsg.ERROR_INSERT_ERROR);
+        }
+
+        return new ResultEntity<>(InfoMsg.SUCCESS_REQUEST);
+    }
+
+    /**
+     * 更新职位首推状态
+     *
+     * @param maps
+     * @return
+     */
+    @Transactional
+    public ResultEntity<String> updateJobRecommend(HttpServletRequest req, Map<String, String> maps) {
+        String recommendFlag = maps.get("recommendFlag");
+        String jobId = maps.get("jobId");
+        if (StringsUtils.isEmpty(jobId)) {
+            return new ResultEntity<>(InfoMsg.EERROE_POSITION_ERROR);
+        }
+        if (!"0".equals(recommendFlag) && !"1".equals(recommendFlag)) {
+            return new ResultEntity<>(InfoMsg.ERROR_PARAMS_ERROR);
+        }
+
+        // 当前登录账号的企业code
+        String userCode = commonService.getUserCode(req);
+        maps.put("userCode", userCode);
+        int upd = mdeJobAdvertisedDao.updateJobRecommend(maps);
+
+        if (upd < 1) {
+            log.error("职位首推状态更新失败" + "jobId:【" + jobId + "】 " + "userCode:【" + userCode + "】 ");
+            return new ResultEntity<>(InfoMsg.ERROR_INSERT_ERROR);
+        }
+        return new ResultEntity<>(InfoMsg.SUCCESS_REQUEST);
+    }
+
+    /**
+     * 查看简历
+     *
+     * @param userCode  用户code
+     * @param hotelCode 酒店code
+     * @return
+     */
+    @Transactional
+    public ContactUserInfoResp lookUserCv(String hotelCode, Map<String, String> param, String lang) {
+        int jobId = Integer.parseInt(param.get("jobId"));
+        String userCode = param.get("userCode");
+        String status = param.get("status");
+
+        if (StringsUtils.isEmpty(param.get("jobId")) || StringsUtils.isEmpty(param.get("userCode")) || StringsUtils.isEmpty(param.get("status"))) {
+            throw new CustomException(InfoMsg.ERROR_PARAMS_ERROR);
+        }
+        // 根据用户code 查询用户信息
+        ContactUserInfoResp contactUserInfoResp = talentRetrievalService.getContactNumber(userCode, lang);
+        if ("0".equals(status)) {
+            //新简历投递的情况下,更新为已读
+            mdePositionCvRelDao.updateCvAlready(userCode, jobId);
+            //获取当前企业的新简历数 更新缓存
+            int count = mdeJobAdvertisedDao.getNewCvCountByPublisher(hotelCode);
+            redisDao.insert("hotelUserRecievedCVCount_" + hotelCode, String.valueOf(count));
+        }
+
+        return contactUserInfoResp;
+    }
+
+    /**
+     * 下载简历的用户code
+     *
+     * @param userCode
+     * @return
+     */
+    @Transactional
+    public String downloadUserCv(HttpServletRequest req, HttpServletResponse resp, Map<String, Object> param) {
+        String lang = commonService.getLanguage(req);
+        String userCode = param.get("userCode").toString();
+        String jobId = param.get("jobId").toString();
+        Map<String, Object> maps = Maps.newHashMap();
+        maps.put("userCode", userCode);
+        maps.put("jobId", jobId);
+        MdeUser mdeUser = mdeUserDao.getUserInfoByCode(userCode);
+        List<MdePositionCvRel> mdePositionCvRelsList = mdePositionCvRelDao.findPositionCvRelByJobIdAndUserCode(maps);
+        String cvUrl = "";
+        BufferedInputStream bufferInputStream = null;
+        BufferedOutputStream bufferOutStream = null;
+        try {
+            if (CollectionUtils.isNotEmpty(mdePositionCvRelsList)) {
+                MdePositionCvRel mdePositionCvRel = mdePositionCvRelsList.get(0);
+                cvUrl = mdePositionCvRel.getCvUrl();
+                if (Strings.isEmpty(cvUrl)) {
+                    // word模板生成简历
+                    String relativePath = postitionService.exportUserCvDoc(resp, userCode, lang);
+                    cvUrl = domainUrl + relativePath;
 //					String pdfPath = relativePath.substring(0, relativePath.indexOf("."))+".pdf";
 //					Word2Pdf.convertWordToPdf(basePackagePath+relativePath, basePackagePath+pdfPath);
-				} else {
-					cvUrl = basePackagePath + mdePositionCvRel.getCvUrl();
-					String suffx = cvUrl.substring(cvUrl.lastIndexOf("."), cvUrl.length());
-					StringBuffer buffer = new StringBuffer();
-					buffer.append(mdeUser.getName() + "(");
-					buffer.append(mdeUser.getUserName() + ")_门墩儿" + suffx);
-					File file = new File(cvUrl);
-					if (!file.exists()) {
-						throw new CustomException(InfoMsg.EERROE_FILENOTEXIST_ERROR);
-					}
-					bufferInputStream = new BufferedInputStream(new FileInputStream(file));
-					File saveFile = new File(basePackagePath + fileTemplate);
-					if (!saveFile.exists()) {
-						saveFile.mkdirs();
-					}
-					int len = 0;
-					bufferOutStream = new BufferedOutputStream(
-							new FileOutputStream(new File(basePackagePath + fileTemplate + buffer.toString())), 1024);
-					while ((len = bufferInputStream.read()) != -1) {
-						bufferOutStream.write(len);
-					}
-					String relativePath = fileTemplate + buffer.toString();
-					cvUrl = domainUrl + relativePath;
+                } else {
+                    cvUrl = basePackagePath + mdePositionCvRel.getCvUrl();
+                    String suffx = cvUrl.substring(cvUrl.lastIndexOf("."), cvUrl.length());
+                    StringBuffer buffer = new StringBuffer();
+                    buffer.append(mdeUser.getName() + "(");
+                    buffer.append(mdeUser.getUserName() + ")_门墩儿" + suffx);
+                    File file = new File(cvUrl);
+                    if (!file.exists()) {
+                        throw new CustomException(InfoMsg.EERROE_FILENOTEXIST_ERROR);
+                    }
+                    bufferInputStream = new BufferedInputStream(new FileInputStream(file));
+                    File saveFile = new File(basePackagePath + fileTemplate);
+                    if (!saveFile.exists()) {
+                        saveFile.mkdirs();
+                    }
+                    int len = 0;
+                    bufferOutStream = new BufferedOutputStream(
+                            new FileOutputStream(new File(basePackagePath + fileTemplate + buffer.toString())), 1024);
+                    while ((len = bufferInputStream.read()) != -1) {
+                        bufferOutStream.write(len);
+                    }
+                    String relativePath = fileTemplate + buffer.toString();
+                    cvUrl = domainUrl + relativePath;
 //					if(suffx.substring(1).equalsIgnoreCase("doc") || suffx.substring(1).equalsIgnoreCase("docx")) {
 //						String pdfPath = relativePath.substring(0, relativePath.indexOf("."))+".pdf";
 ////						Word2Pdf.convertWordToPdf(basePackagePath+relativePath, basePackagePath+pdfPath);
 //					}else if(suffx.substring(1).equalsIgnoreCase("xls") || suffx.substring(1).equalsIgnoreCase("xlsx")) {
 //						
 //					}
-					
-				}
-				try {
-					if (Integer.valueOf(mdePositionCvRel.getCvStatus()) < 2) {
-						// 更新简历状态
-						mdePositionCvRel.setCvStatus("2"); // 已下载
-						mdePositionCvRelDao.update(mdePositionCvRel);
-					}
-				} catch (Exception e) {
-					e.printStackTrace();
-					throw new CustomException(InfoMsg.ERROR_UPDATE_USERCVSTATUS_FILE);
-				} finally {
-					if (bufferOutStream != null) {
-						bufferOutStream.flush();
-						bufferOutStream.close();
-					}
-					if (bufferInputStream != null) {
-						bufferInputStream.close();
-					}
-				}
-			}
-
-			return cvUrl;
-		} catch (Exception e) {
-			log.info(e.getMessage());
-			throw new CustomException(InfoMsg.ERROR_READ_FILE);
-		}
-	}
-
-	
-	/**
-	 * 根据职位查询投递者简历信息
-	 * 
-	 * @author jadyn.wu
-	 * @param req
-	 * @param statusReq
-	 * @param model 终端类型(1-PC端 只显示1个面试时间)
-	 * @return
-	 */
-	public Map<String, Object> getUserCvStateListInfoByJob(HttpServletRequest req, UserCvByJobReq cvJobReq, String model) {
-		Page<UserInfoResp> page2 = new Page<UserInfoResp>(cvJobReq.getIndex(), cvJobReq.getSize());
-
-		Map<String, Object> maps = Maps.newHashMap();
-		
-		String userCode = commonService.getUserCode(req);
-		String lang = commonService.getLanguage(req);
-
-		// 根据jobId获取简历信息
-		UserInfoResp paramsDto = new UserInfoResp();
-		paramsDto.setPublisher(userCode);
-		paramsDto.setLang(lang);
-		paramsDto.setJobId(cvJobReq.getJobId());
-		paramsDto.setModel(model);
-		page2 = mdePositionCvRelDao.getUserCvStateListInfo(page2,paramsDto);
-
-		maps.put("allUserCvCount", getAllUserCvCount(userCode)); // 所有简历数量
-		maps.put("inviteAuditionCount", inviteAuditionCount(userCode)); // 邀请简历数量
-		maps.put("matriculateUserCv", matriculateUserCvCount(userCode)); // 录用简历数量
-		maps.put("eliminateUserCvCount", eliminateUserCvCount(userCode)); // 淘汰简历数量
-		List<UserInfoResp> list = commonService.addDomainUrlEnterUserCv(page2.getResultList()); // 拼接头像域名
-
-		page2.setResultList(list);
-		maps.put("page", page2);
-		return maps;
-	}
-	
-	/**
-	 * 根据简历状态查询投递者简历信息
-	 * 
-	 * @author jadyn.wu
-	 * @param req
-	 * @param statusReq
-	 * @param model 终端类型(1-PC端 只显示1个面试时间)
-	 * @return
-	 */
-	public Map<String, Object> getUserCvStateListInfo2(HttpServletRequest req, UserCvStatusReq statusReq, String model) {
-		Page<UserInfoResp> page2 = new Page<UserInfoResp>(statusReq.getIndex(), statusReq.getSize());
-
-		Map<String, Object> maps = Maps.newHashMap();
-		
-		String userCode = commonService.getUserCode(req);
-		String lang = commonService.getLanguage(req);
-		String type = statusReq.getType();
-
-		// 根据type 获取简历信息 0-新投递;1-已查看;2-已下载;3-邀请面试;4-录取;5-淘汰;6-储备
-		UserInfoResp paramsDto = new UserInfoResp();
-		paramsDto.setPublisher(userCode);
-		paramsDto.setLang(lang);
-		paramsDto.setStatus(type);
-		paramsDto.setModel(model);
-		page2 = mdePositionCvRelDao.getUserCvStateListInfo(page2,paramsDto);
 
-		maps.put("allUserCvCount", getAllUserCvCount(userCode)); // 所有简历数量
-		maps.put("inviteAuditionCount", inviteAuditionCount(userCode)); // 邀请简历数量
-		maps.put("matriculateUserCv", matriculateUserCvCount(userCode)); // 录用简历数量
-		maps.put("eliminateUserCvCount", eliminateUserCvCount(userCode)); // 淘汰简历数量
-		List<UserInfoResp> list = commonService.addDomainUrlEnterUserCv(page2.getResultList()); // 拼接头像域名
-		
-		// 查询新投递简历的情况下
-		/* 去除自动更新为已读状态
-		 * if("0".equals(type)) { //删除缓存中投递该企业的简历数量
-		 * redisDao.delete("hotelUserRecievedCVCount_" + userCode); //新简历投递的情况下,更新为已读
-		 * mdePositionCvRelDao.updateCvsAlready(userCode); }
-		 */
-		page2.setResultList(list);
-		maps.put("page", page2);
-		return maps;
-	}
-	
-	
-
-	/**
-	 * 更新简历状态 type (0.邀请面试1.录用2.淘汰)
-	 * 
-	 * @param req
-	 * @param resp
-	 * @param jo
-	 * @return
-	 */
-	@Transactional
-	public InfoMsg updateUserCvStatus(HttpServletRequest req, UpdUserCvReq param, InterviewCreateReq intvReq) {
-		String lang = commonService.getLanguage(req);
-		String userCode = param.getUserCode();
-		String jobId = param.getJobId();
-		String type = param.getType();
-
-		Map<String, String> maps = Maps.newHashMap();
-		maps.put("userCode", userCode);
-		maps.put("jobId", jobId);
-		maps.put("remark", param.getRemark());
-		// 根据type 更新简历状态 (0-新投递;1-已查看;2-已下载;3-邀请面试;4-录取;5-淘汰;6-储备)
-		try {
-			if("3".equals(type)||"4".equals(type)||"5".equals(type)||"6".equals(type))
-			{
-				maps.put("status", type);
-				mdePositionCvRelDao.updateUserCvStatus(maps);
-			}
-		} catch (Exception e) {
-			log.error("简历状态更新失败" + e.getMessage());
-			throw new CustomException(InfoMsg.ERROR_UPDATE_USERCVSTATUS_FILE);
-		}
-		// 邀请面试发送微信消息给用户
+                }
+                try {
+                    if (Integer.valueOf(mdePositionCvRel.getCvStatus()) < 2) {
+                        // 更新简历状态
+                        mdePositionCvRel.setCvStatus("2"); // 已下载
+                        mdePositionCvRelDao.update(mdePositionCvRel);
+                    }
+                } catch (Exception e) {
+                    e.printStackTrace();
+                    throw new CustomException(InfoMsg.ERROR_UPDATE_USERCVSTATUS_FILE);
+                } finally {
+                    if (bufferOutStream != null) {
+                        bufferOutStream.flush();
+                        bufferOutStream.close();
+                    }
+                    if (bufferInputStream != null) {
+                        bufferInputStream.close();
+                    }
+                }
+            }
+
+            return cvUrl;
+        } catch (Exception e) {
+            log.info(e.getMessage());
+            throw new CustomException(InfoMsg.ERROR_READ_FILE);
+        }
+    }
+
+
+    /**
+     * 根据职位查询投递者简历信息
+     *
+     * @param req
+     * @param statusReq
+     * @param model     终端类型(1-PC端 只显示1个面试时间)
+     * @return
+     * @author jadyn.wu
+     */
+    public Map<String, Object> getUserCvStateListInfoByJob(HttpServletRequest req, UserCvByJobReq cvJobReq, String model) {
+        Page<UserInfoResp> page2 = new Page<UserInfoResp>(cvJobReq.getIndex(), cvJobReq.getSize());
+
+        Map<String, Object> maps = Maps.newHashMap();
+
+        String userCode = commonService.getUserCode(req);
+        String lang = commonService.getLanguage(req);
+
+        // 根据jobId获取简历信息
+        UserInfoResp paramsDto = new UserInfoResp();
+        paramsDto.setPublisher(userCode);
+        paramsDto.setLang(lang);
+        paramsDto.setJobId(cvJobReq.getJobId());
+        paramsDto.setModel(model);
+        page2 = mdePositionCvRelDao.getUserCvStateListInfo(page2, paramsDto);
+
+        maps.put("allUserCvCount", getAllUserCvCount(userCode)); // 所有简历数量
+        maps.put("inviteAuditionCount", inviteAuditionCount(userCode)); // 邀请简历数量
+        maps.put("matriculateUserCv", matriculateUserCvCount(userCode)); // 录用简历数量
+        maps.put("eliminateUserCvCount", eliminateUserCvCount(userCode)); // 淘汰简历数量
+        List<UserInfoResp> list = commonService.addDomainUrlEnterUserCv(page2.getResultList()); // 拼接头像域名
+
+        page2.setResultList(list);
+        maps.put("page", page2);
+        return maps;
+    }
+
+    /**
+     * 根据简历状态查询投递者简历信息
+     *
+     * @param req
+     * @param statusReq
+     * @param model     终端类型(1-PC端 只显示1个面试时间)
+     * @return
+     * @author jadyn.wu
+     */
+    public Map<String, Object> getUserCvStateListInfo2(HttpServletRequest req, UserCvStatusReq statusReq, String model) {
+        Page<UserInfoResp> page2 = new Page<UserInfoResp>(statusReq.getIndex(), statusReq.getSize());
+
+        Map<String, Object> maps = Maps.newHashMap();
+
+        String userCode = commonService.getUserCode(req);
+        String lang = commonService.getLanguage(req);
+        String type = statusReq.getType();
+
+        // 根据type 获取简历信息 0-新投递;1-已查看;2-已下载;3-邀请面试;4-录取;5-淘汰;6-储备
+        UserInfoResp paramsDto = new UserInfoResp();
+        paramsDto.setPublisher(userCode);
+        paramsDto.setLang(lang);
+        paramsDto.setStatus(type);
+        paramsDto.setModel(model);
+        page2 = mdePositionCvRelDao.getUserCvStateListInfo(page2, paramsDto);
+
+        maps.put("allUserCvCount", getAllUserCvCount(userCode)); // 所有简历数量
+        maps.put("inviteAuditionCount", inviteAuditionCount(userCode)); // 邀请简历数量
+        maps.put("matriculateUserCv", matriculateUserCvCount(userCode)); // 录用简历数量
+        maps.put("eliminateUserCvCount", eliminateUserCvCount(userCode)); // 淘汰简历数量
+        List<UserInfoResp> list = commonService.addDomainUrlEnterUserCv(page2.getResultList()); // 拼接头像域名
+
+        // 查询新投递简历的情况下
+        /* 去除自动更新为已读状态
+         * if("0".equals(type)) { //删除缓存中投递该企业的简历数量
+         * redisDao.delete("hotelUserRecievedCVCount_" + userCode); //新简历投递的情况下,更新为已读
+         * mdePositionCvRelDao.updateCvsAlready(userCode); }
+         */
+        page2.setResultList(list);
+        maps.put("page", page2);
+        return maps;
+    }
+
+
+    /**
+     * 更新简历状态 type (0.邀请面试1.录用2.淘汰)
+     *
+     * @param req
+     * @param resp
+     * @param jo
+     * @return
+     */
+    @Transactional
+    public InfoMsg updateUserCvStatus(HttpServletRequest req, UpdUserCvReq param, InterviewCreateReq intvReq) {
+        String lang = commonService.getLanguage(req);
+        String userCode = param.getUserCode();
+        String jobId = param.getJobId();
+        String type = param.getType();
+
+        Map<String, String> maps = Maps.newHashMap();
+        maps.put("userCode", userCode);
+        maps.put("jobId", jobId);
+        maps.put("remark", param.getRemark());
+        // 根据type 更新简历状态 (0-新投递;1-已查看;2-已下载;3-邀请面试;4-录取;5-淘汰;6-储备)
+        try {
+            if ("3".equals(type) || "4".equals(type) || "5".equals(type) || "6".equals(type)) {
+                maps.put("status", type);
+                mdePositionCvRelDao.updateUserCvStatus(maps);
+            }
+        } catch (Exception e) {
+            log.error("简历状态更新失败" + e.getMessage());
+            throw new CustomException(InfoMsg.ERROR_UPDATE_USERCVSTATUS_FILE);
+        }
+        // 邀请面试发送微信消息给用户
 //		if("3".equals(type)) {
 //			String currentUserCode = commonService.getUserCode(req);
 //			MdeUser personUser = mdeUserDao.getFullInfo(userCode);
@@ -525,8 +496,8 @@ public class EnterpriseService extends BaseService{
 //                }
 //			}
 //		}
-		return InfoMsg.SUCCESS_REQUEST;
-	}
+        return InfoMsg.SUCCESS_REQUEST;
+    }
 
 //	private TMsgSendBaseReq organizationParam(MdeUser user,MdeUser publisher,String jobName,String remarks,InterviewCreateReq intvReq) {
 //		TMsgSendBaseReq invited = new TMsgSendBaseReq();
@@ -556,96 +527,134 @@ public class EnterpriseService extends BaseService{
 //		invited.setData(dto);
 //		return invited;
 //	}
-	/**
-	 * 已发布信息
-	 * 
-	 * @param req
-	 * @param resp
-	 * @return
-	 */
-	public PagingResult<JobAdvertisedResp> alreadyPublish(HttpServletRequest req, HttpServletResponse resp,String userCode,
-			JobAdvertisedReqDto jobReq) {
-		String language = commonService.getLanguage(req);
-		// 刷新招聘中职位  (发布日期为当前日期)
-		if (jobReq.isRefresh()) {
-			batchUpdatePublishDate(userCode);
-		}
-		Pagination page = new Pagination(jobReq.getIndex(), jobReq.getSize());
-		Map<Object, Object> pageParam = new HashMap<Object, Object>();
-		pageParam.put("userCode", userCode);
-		pageParam.put("lang", language);
-		pageParam.put("jobStatus", jobReq.getJobStatus());
-		page.setParams(pageParam);
-		PagingResult<JobAdvertisedResp> list = mdeJobAdvertisedDao.alreadyPublish(page);
-		return list;
-	}
-
-	/**
-	 * 获取投递该公司总简历数
-	 * 
-	 * @param userCode
-	 *            企业code
-	 * @return
-	 */
-	public int getAllUserCvCount(String userCode) {
-		return mdeJobAdvertisedDao.getAllUserCvCount(userCode);
-	}
-
-	/**
-	 * 获取邀请面试简历数量
-	 * 
-	 * @param userCode
-	 *            企业code
-	 * @return
-	 */
-	public int inviteAuditionCount(String userCode) {
-		return mdeJobAdvertisedDao.inviteAuditionCount(userCode);
-	}
-
-	/**
-	 * 获取录用简历数量
-	 * 
-	 * @param userCode
-	 *            企业code
-	 * @return
-	 */
-	public int matriculateUserCvCount(String userCode) {
-		return mdeJobAdvertisedDao.matriculateUserCvCount(userCode);
-	}
-
-	/**
-	 * 淘汰简历数量
-	 * 
-	 * @param userCode
-	 *            企业code
-	 * @return
-	 */
-	public int eliminateUserCvCount(String userCode) {
-		return mdeJobAdvertisedDao.eliminateUserCvCount(userCode);
-	}
-	
-	/**
-	 * 获取指定企业的新简历数量
-	 * 
-	 * @param userCode
-	 *            企业code
-	 * @return
-	 */
-	public int getNewCvCountByPublisher(String userCode) {
-		return mdeJobAdvertisedDao.getNewCvCountByPublisher(userCode);
-	}
-	
-	/**
-	 * 批量更新发布日期(招聘中职位)
-	 * @return
-	 */
-	@Transactional
-	public void  batchUpdatePublishDate (String userCode) {
-		try {
-			mdeJobAdvertisedDao.batchUpdatePublishDate(userCode);
-		} catch (Exception e) {
-			e.printStackTrace();
-			throw new CustomException(InfoMsg.ERROR_UPDATE_USERCVSTATUS_FILE);
-		}
-	}
+
+    /**
+     * 已发布信息
+     *
+     * @param req
+     * @param resp
+     * @return
+     */
+    public PagingResult<JobAdvertisedResp> alreadyPublish(HttpServletRequest req, HttpServletResponse resp, String userCode,
+                                                          JobAdvertisedReqDto jobReq) {
+        String language = commonService.getLanguage(req);
+        // 刷新招聘中职位  (发布日期为当前日期)
+        if (jobReq.isRefresh()) {
+            batchUpdatePublishDate(userCode);
+        }
+        Pagination page = new Pagination(jobReq.getIndex(), jobReq.getSize());
+        Map<Object, Object> pageParam = new HashMap<Object, Object>();
+        pageParam.put("userCode", userCode);
+        pageParam.put("lang", language);
+        pageParam.put("jobStatus", jobReq.getJobStatus());
+        List<String> positionIdList = null;
+        if (StringsUtils.isNotEmpty(jobReq.getPositionIdList())) {
+            positionIdList = Arrays.asList(jobReq.getPositionIdList().split(","));
+        }
+        pageParam.put("positionIdList", positionIdList);
+        pageParam.put("newDelivery", jobReq.getNewDelivery());
+        pageParam.put("dayStart", jobReq.getDayStart());
+        pageParam.put("dayEnd", jobReq.getDayEnd());
+        page.setParams(pageParam);
+        PagingResult<JobAdvertisedResp> list = mdeJobAdvertisedDao.alreadyPublish(page);
+        return list;
+    }
+
+
+    /**
+     * @param keyWordReq 关键词
+     * @param req
+     * @param userCode   用户code
+     * @return PagingResult<JobAdvertisedResp>
+     * @description 已发职位关键词检索
+     * @author rayson
+     * @date 2023-09-12 14:42
+     **/
+    public PagingResult<JobAdvertisedResp> searchKeyWord(KeyWordReq keyWordReq, String userCode, HttpServletRequest req) {
+        if (keyWordReq != null && StringsUtils.isEmpty(keyWordReq.getKeyWord())) {
+            PagingResult<JobAdvertisedResp> pagingResult = new PagingResult<>();
+            pagingResult.setCurrentPage(keyWordReq.getIndex());
+            pagingResult.setTotalSize(0);
+            pagingResult.setPageSize(keyWordReq.getSize());
+            pagingResult.setResultList(new ArrayList<JobAdvertisedResp>());
+            pagingResult.setPageNoSize(10);
+            return pagingResult;
+        }
+        String language = commonService.getLanguage(req);
+
+        Pagination page = new Pagination(keyWordReq.getIndex(), keyWordReq.getSize());
+
+        Map<Object, Object> pageParam = Maps.newHashMap();
+        pageParam.put("userCode", userCode);
+        pageParam.put("lang", language);
+        pageParam.put("keyWord", keyWordReq.getKeyWord());
+        page.setParams(pageParam);
+        PagingResult<JobAdvertisedResp> list = mdeJobAdvertisedDao.searchKeyWord(page);
+        return list;
+    }
+
+    /**
+     * 获取投递该公司总简历数
+     *
+     * @param userCode 企业code
+     * @return
+     */
+    public int getAllUserCvCount(String userCode) {
+        return mdeJobAdvertisedDao.getAllUserCvCount(userCode);
+    }
+
+    /**
+     * 获取邀请面试简历数量
+     *
+     * @param userCode 企业code
+     * @return
+     */
+    public int inviteAuditionCount(String userCode) {
+        return mdeJobAdvertisedDao.inviteAuditionCount(userCode);
+    }
+
+    /**
+     * 获取录用简历数量
+     *
+     * @param userCode 企业code
+     * @return
+     */
+    public int matriculateUserCvCount(String userCode) {
+        return mdeJobAdvertisedDao.matriculateUserCvCount(userCode);
+    }
+
+    /**
+     * 淘汰简历数量
+     *
+     * @param userCode 企业code
+     * @return
+     */
+    public int eliminateUserCvCount(String userCode) {
+        return mdeJobAdvertisedDao.eliminateUserCvCount(userCode);
+    }
+
+    /**
+     * 获取指定企业的新简历数量
+     *
+     * @param userCode 企业code
+     * @return
+     */
+    public int getNewCvCountByPublisher(String userCode) {
+        return mdeJobAdvertisedDao.getNewCvCountByPublisher(userCode);
+    }
+
+    /**
+     * 批量更新发布日期(招聘中职位)
+     *
+     * @return
+     */
+    @Transactional
+    public void batchUpdatePublishDate(String userCode) {
+        try {
+            mdeJobAdvertisedDao.batchUpdatePublishDate(userCode);
+        } catch (Exception e) {
+            e.printStackTrace();
+            throw new CustomException(InfoMsg.ERROR_UPDATE_USERCVSTATUS_FILE);
+        }
+    }
 }

+ 1 - 1
src/main/java/com/wechat/service/PersonCeneterService.java

@@ -579,7 +579,7 @@ public class PersonCeneterService {
                 || fileName.equalsIgnoreCase("xlsx")) {
             return true;
         }
-        if (system.toLowerCase().contains("iphone")) {
+        if (system.toLowerCase().contains("ios")) {
             if (fileName.equalsIgnoreCase("png")
                     || fileName.equalsIgnoreCase("jpg")
                     || fileName.equalsIgnoreCase("jpeg")) {

+ 1 - 1
src/main/java/com/wechat/service/RecruitmentInformationReleaseService.java

@@ -63,7 +63,7 @@ public class RecruitmentInformationReleaseService {
 		if ("0".equals(user.getVipFlag()) && DateUtils.dateCompare(discountTime,new Date()))
 		{
 			//非会员的情况下验证发布次数
-			if(jobAdvertisedDao.alreadyPublishCount(publisher, "0") >= unvipReleaseNo)
+			if(jobAdvertisedDao.alreadyPublishNotVipCount(publisher, "0") >= unvipReleaseNo)
 			{
 				//超限
 				result = false;

+ 83 - 83
src/main/resources/conf.local.properties

@@ -1,4 +1,4 @@
-#weixin \u516c\u4f17\u53f7
+#weixin ???
 token=RdkcWechatToken2016
 weixin.appid=wx700ad9bf40b511db
 weixin.secret=2a8ac1cb6266187fdb9527d40e73c4b9
@@ -19,78 +19,78 @@ weixin.userinfo=https://api.weixin.qq.com/cgi-bin/user/info?access_token={0}&ope
 weixin.userinfo.list=https://api.weixin.qq.com/cgi-bin/user/info/batchget?access_token={0}
 weixin.menu=https://api.weixin.qq.com/cgi-bin/menu/create?access_token={0}
 weixin.shorturl=https://api.weixin.qq.com/cgi-bin/shorturl?access_token={0}
-#\u9759\u9ed8\u767b\u9646
+#????
 weixin.authorization.code=https://open.weixin.qq.com/connect/oauth2/authorize?appid={0}&redirect_uri={1}&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect
 
-#weixin \u5c0f\u7a0b\u5e8f
-#\u89c6\u9891\u9762\u8bd5
+#weixin ???
+#????
 wx.miniprog.video.token=Mde1ht7eD@tIof8b.b86ugsQddt
 wx.miniprog.video.appid=wx2258c25589859d8c
 wx.miniprog.video.secret=a44c4fd22083ff735cd551415cb590c8
 wx.miniprog.video.tmsg.invite.url=pages/index/index
-#\u8df3\u8f6c\u5c0f\u7a0b\u5e8f\u7c7b\u578b\uff1adeveloper\u4e3a\u5f00\u53d1\u7248\uff1btrial\u4e3a\u4f53\u9a8c\u7248\uff1bformal\u4e3a\u6b63\u5f0f\u7248\uff1b\u9ed8\u8ba4\u4e3a\u6b63\u5f0f\u7248
+#????????developer?????trial?????formal???????????
 wx.miniprog.video.state=developer
 
-#\u5c0f\u7a0b\u5e8f \u767b\u5f55
+#??? ??
 wx.miniprog.login.url=https://api.weixin.qq.com/sns/jscode2session?appid={0}&secret={1}&js_code={2}&grant_type=authorization_code
-#\u5c0f\u7a0b\u5e8f \u4e0b\u53d1\u5c0f\u7a0b\u5e8f\u548c\u516c\u4f17\u53f7\u7edf\u4e00\u7684\u670d\u52a1\u6d88\u606f
+#??? ????????????????
 wx.miniprog.tplmsg.url=https://api.weixin.qq.com/cgi-bin/message/wxopen/template/uniform_send?access_token={0}
 
-#\u817e\u8baf\u5373\u65f6\u89c6\u9891
+#??????
 wx.video.appid=1400384566
 wx.video.secret=656440f384e8de3272ff0d6f293d72e3bff67d9b3386d717abea8b2f1279774a
 
 
-#\u9886\u82f1
+#??
 linkedIn.clientId=81fdbcw6p7kx2c
 linkedIn.clientSecret=4HJvFKhEuC4AUT9q
 linkedIn.grantType=authorization_code
 linkedIn.redirect_url=https://www.menduner.com/user/login
 linkedIn.UserURl=https://api.linkedin.com/v2/me?projection=(id)
 #linkedIn.UserURl=https://api.linkedin.com/v2/me?projection=(id,firstName,lastName,profilePicture(displayImage~:playableStreams))
-#\u83b7\u53d6\u9886\u82f1\u7528\u6237\u4fe1\u606f
+#????????
 linkedIn.TokenUrl=https://www.linkedin.com/oauth/v2/accessToken
-#\u5206\u4eab\u52a8\u6001\u5230\u9886\u82f1
+#???????
 linkedIn.shareTrendToLinkedIn=https://api.linkedin.com/v1/people/~/shares?format=json
 
-#\u5fae\u4fe1\u7b2c\u4e09\u65b9\u767b\u5f55
+#???????
 weixin.authorization.tokenUrl=https://api.weixin.qq.com/sns/oauth2/access_token?appid={0}&secret={1}&code={2}&grant_type=authorization_code
-#\u5fae\u4fe1\u5f00\u653e\u5e73\u53f0
+#??????
 weixin.open.appid=wxae181c656f9443fc
 weixin.open.secret=c3d39dea54f749c94a8b27a27b39e9ab
-#\u83b7\u53d6\u5fae\u4fe1\u7528\u6237\u4fe1\u606f
+#????????
 weixin.authorization.userinfo=https://api.weixin.qq.com/sns/userinfo?access_token={0}&openid={1}&lang=zh_CN
-#\u5fae\u4fe1\u63a8\u9001 (\u63a5\u53e3\u5730\u5740)
+#???? (????)
 weixin.tmsg.send=https://api.weixin.qq.com/cgi-bin/message/template/send?access_token={0}
 
-##\u6a21\u677f\u6d88\u606f
-#\u804c\u4f4d\u9080\u8bf7\u901a\u77e5 \u63a8\u9001
+##????
+#?????? ??
 position_template_id=NAXbtCr8VR71M78NWyPBpK_xASTMKDktb6H8zIgbOws
 position_url=https://www.menduner.com/#/mine/invitations/company
 
-#\u9762\u8bd5\u9080\u8bf7\u901a\u77e5  \u63a8\u9001 <\u9762\u8bd5\u5b89\u6392\u63d0\u9192>
+#??????  ?? <??????>
 interview_invitation_template_id=SVffJu9YWkXHd1_2hIS4tJU02msuVS4r0X3cCQr24zo
-#\u516c\u4f17\u53f7\u94fe\u63a5
+#?????
 interview_invitation_url=https://www.menduner.com/#/mine/resume/delivery
-#\u5c0f\u7a0b\u5e8f\u94fe\u63a5
+#?????
 interview.invitation.minp.url=pages/interDetail/interDetail?id={0}&jobName={1}&isCheck=1
 
-#\u9762\u8bd5\u65f6\u95f4\u53d8\u66f4\u901a\u77e5  \u63a8\u9001 <\u9884\u7ea6\u66f4\u6539\u63d0\u9192>
+#????????  ?? <??????>
 interview.change.time.template.id=ioqHaLu4hJggfs09XCQWKYPh_eOKZbLcXBpQMo-38KI
-#\u5c0f\u7a0b\u5e8f\u94fe\u63a5
+#?????
 interview.change.time.minp.url=pages/interDetail/interDetail?id={0}&jobName={1}&isCheck=1
 
-#\u9762\u8bd5\u65f6\u95f4\u786e\u8ba4\u901a\u77e5  \u63a8\u9001 <\u9762\u8bd5\u65f6\u95f4\u786e\u8ba4\u901a\u77e5>
+#????????  ?? <????????>
 interview.confirm.time.template.id=vM2Oqqmxqnenrd6VyLMvwN-DziM17wTMPvYpV5xKZHw
-#\u5c0f\u7a0b\u5e8f\u94fe\u63a5
+#?????
 interview.confirm.time.minp.url=pages/interDetail/interDetail?id={0}&jobName={1}&isCheck=0
 
-#\u62d2\u7edd\u9762\u8bd5\u901a\u77e5  \u63a8\u9001 <\u62d2\u7edd\u9762\u8bd5\u9080\u8bf7\u901a\u77e5>
+#??????  ?? <????????>
 interview.refuse.time.template.id=MoDQgpOLzEaaPGLdBs6ZkbV3wn1RTupYPzAZ3CVjGVg
-#\u5c0f\u7a0b\u5e8f\u94fe\u63a5
+#?????
 interview.refuse.time.minp.url=pages/interDetail/interDetail?id={0}&jobName={1}&isCheck=0
 
-#\u767e\u5ea6API
+#??API
 baidu.grant.type=client_credentials
 baidu.client.id=C5L7K5jHUYBxgj9ZKGb5A33G
 baidu.client.secret=Vt23lBP1zFZN5URRtQ4fhpLsSGa6TNdj
@@ -102,7 +102,7 @@ weixin.jsapi.reTime=6800
 weixin.jsapi.ticket=https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token={0}&type=jsapi
 weixin.jsapi.signature=jsapi_ticket={0}&noncestr={1}&timestamp={2}&url={3}
 
-#token \u8fc7\u671f\u65f6\u95f4\uff08\u5206\u949f\uff09
+#token ????????
 token.expire.minute=120
 
 #reGet accessToke time
@@ -121,85 +121,85 @@ upload.path.html=htmls/
 upload.path.file=files/
 upload.path.card=card/
 upload.path.template=template/
-#\u4f01\u4e1a\u76f8\u518c
+#????
 upload.path.image.album=album/
-#\u4f01\u4e1a\u4e3b\u9875\u80cc\u666f\u56fe
+#???????
 upload.path.image.centerBg=centerBg/
-#\u4e34\u65f6\u6587\u4ef6
+#????
 upload.path.image.temporary=temporary/
-#\u5728\u804c\u8bc1\u660e
+#????
 upload.path.image.onjob=onjob/
 
 upload.refund.path=refund/
 upload.qrcode.path=qrcode/
 
 
-#\u9ed8\u8ba4\u8bf7\u6c42\u6bcf\u9875\u6570\u91cf
+#????????
 default.request.page.size=10
-#\u597d\u53cb\u52a8\u6001\u6bcf\u9875\u6570\u91cf
+#????????
 trends.friendTrends.limitSize=5
-#\u597d\u53cb\u52a8\u6001 \u53d1\u5e03\u52a8\u6001,\u4fee\u6539\u8d44\u6599 \u8ddd\u79bb\u4eca\u5929\u7684\u5929\u6570
+#???? ????,???? ???????
 trends.friendTrendsWithLimit.limitDay=7
-#\u53ef\u80fd\u8ba4\u8bc6\u7684\u4eba\u6bcf\u9875\u6570\u91cf
+#??????????
 user.maybeFriends.limitSize=6
-#\u4f18\u9009\u4eba\u624d \u6bcf\u9875\u6570\u91cf
+#???? ????
 user.superiorTalenRetrieval.limitSize=5
-#\u63a8\u8350\u4eba\u624d \u6bcf\u9875\u6570\u91cf
+#???? ????
 user.recommentTalenRetrieval.limitSize=5
-#\u7528\u6237\u8be6\u7ec6\u4fe1\u606f  \u6211\u7684\u52a8\u6001\u663e\u793a\u6570\u91cf
+#??????  ????????
 user.detail.myTrends.limitSize=3
-#\u63a8\u8350\u804c\u4f4d\u6bcf\u9875\u6570\u91cf
+#????????
 job.recommendJobs.limitSize=5
-#\u76f8\u4f3c\u804c\u4f4d\u6bcf\u9875\u6570\u91cf
+#????????
 job.similarJobs.limitSize=5
-#\u9152\u5e97\u5176\u4ed6\u804c\u4f4d\u6bcf\u9875\u6570\u91cf
+#??????????
 job.hotelOtherPosition.limitSize=5
-#\u63a8\u8350\u9152\u5e97\u6bcf\u9875\u6570\u91cf
+#????????
 hotel.recommentHotels.limitSize=5
-#\u76f8\u4f3c\u9152\u5e97\u6bcf\u9875\u6570\u91cf
+#????????
 hotel.similarHotels.limitSize=5
-#\u6211\u7684\u597d\u53cb\u6bcf\u9875\u6570\u91cf
+#????????
 friends.myFriends.limitSize=6
-# \u56fe\u7247\u538b\u7f29\u5927\u5c0f\u63a7\u5236
+# ????????
 compress.image.size=500
 
 #sms
 sms.appID=1400097875
 sms.appkey=c434c99479419bd8b3b3c4cb517c6753
-#\u666e\u901a\u77ed\u4fe1\u6a21\u677f\uff08\u4e2d\u56fd\u5927\u9646\uff09
+#????????????
 sms.templateId=438082
-#\u666e\u901a\u77ed\u4fe1\u6a21\u677f\uff08\u56fd\u9645\uff09
+#??????????
 sms.templateId_en=179748
-#\u77ed\u4fe1\u9a8c\u8bc1\u7801\u8fc7\u671f\u65f6\u95f4\uff08\u79d2\uff09
+#????????????
 sms.phoneCode.expirationTime=600
-sms.sign=\u95e8\u58a9\u513f
+sms.sign=???
 sms.sign.en=Menduner
-#\u4f01\u4e1a\u6c47\u6b3e\u77ed\u4fe1\u6a21\u677fId 
+#????????Id
 sms.sendRemit.templateId=165764
-#\u4f01\u4e1a\u9080\u8bf7\u77ed\u4fe1\u6a21\u677fId \uff08\u4e2d\u56fd\u5927\u9646\uff09
+#????????Id ??????
 sms.invitation.templateId=179431
-#\u4f01\u4e1a\u9080\u8bf7\u77ed\u4fe1\u6a21\u677fId \uff08\u56fd\u9645\uff09
+#????????Id ????
 sms.international.invitation.templateId=179744
-#\u4f01\u4e1a\u9080\u8bf7\u9762\u8bd5\u77ed\u4fe1Id
+#????????Id
 sms.interview.cn=727003
 sms.interview.en=727003
-#\u9884\u7ea6\u65f6\u95f4\u4fee\u6539\u901a\u77e5
+#????????
 sms.intv.time.upd=730206
-#\u9884\u7ea6\u65f6\u95f4\u786e\u8ba4\u901a\u77e5
+#????????
 sms.intv.time.ok=730218
-#\u62d2\u7edd\u9762\u8bd5
+#????
 sms.intv.refuse=743398
 
 #order
-default.invoiceContent=\u54a8\u8be2\u8d39
-default.accountName=\u82cf\u5dde\u8bc6\u559c\u8bc6\u8c0a\u4fe1\u606f\u79d1\u6280\u6709\u9650\u516c\u53f8
-default.openingBank=\u62db\u5546\u94f6\u884c\u80a1\u4efd\u6709\u9650\u516c\u53f8\u82cf\u5dde\u72ec\u5885\u6e56\u652f\u884c
+default.invoiceContent=???
+default.accountName=??????????????
+default.openingBank=?????????????????
 default.account=512908229410902
 
 default.invoiceContent_en=Consulting fee
 default.accountName_en=Suzhou Shixi Shiyi Hotel Management Co., Ltd.
 default.openingBank_en=China Merchants Bank Suzhou Dushu Lake Branch
-#\u9ed8\u8ba4\u8fd0\u8d39
+#????
 default.freight=0
 
 #AliPay
@@ -215,54 +215,54 @@ AliPay.gatewayUrl=https://openapi.alipay.com/gateway.do
 #WXpay.appId=wx848cc247559f92f3
 WXpay.appKey=b1HxwCuWLfQIzuilI1ayBTTiXOBfEeMg
 #WXpay.appSecret=220609861baa9d70bc0576f382eb02aa
-#\u5546\u6237\u53f7
+#???
 WXpay.mchId=1505499481
-#\u56de\u8c03\u5730\u5740
+#????
 WXpay.notifyUrl={0}RecruitmentApi/order/weChat_notify_url
-#code\u56de\u8c03\u5730\u5740
+#code????
 WXpay.codeUrl={0}RecruitmentApi/order/weChat_code_url
 
 
-#\u4f01\u4e1a\u6ce8\u518c\u6fc0\u6d3b\u8fde\u63a5
+#????????
 enterprise.register.activeUrl={0}RecruitmentApi/login/activation
-#\u90ae\u4ef6\u6fc0\u6d3b\u8df3\u8f6c\u9759\u6001\u9875\u9762url
+#??????????url
 enterprise.mail.activation.redirectUrl=https://www.menduner.com/#/emailTip
 
-#\u4f01\u4e1a\u6ce8\u518c\u53d1\u9001\u6fc0\u6d3b\u8fde\u63a5, \u5185\u5bb9\u914d\u7f6e (\u5e9f\u5f03) 
-#enterprise.mail.companyName=\u82cf\u5dde\u8bc6\u559c\u8bc6\u8c0a\u9152\u5e97\u7ba1\u7406\u6709\u9650\u516c\u53f8
-#enterprise.mail.checkStatusName=\u5ba1\u6838\u5f85\u901a\u8fc7
+#??????????, ???? (??)
+#enterprise.mail.companyName=??????????????
+#enterprise.mail.checkStatusName=?????
 #enterprise.mail.addMessage=xxx
 
-#\u4f01\u4e1a\u7ebf\u4e0b\u652f\u4ed8 \u6700\u7ec8\u4ed8\u6b3e\u671f\u9650
+#?????? ??????
 deadline_payment=10
-#\u5ba1\u6838\u4eba\u90ae\u7bb1\u5730\u5740
+#???????
 auditor_email_address=peter.pan@menduner.com
 
-#\u6ce8\u518c\u53d1\u9001\u90ae\u4ef6
+#??????
 send_email_address=services@menduner.com
 send_email_password=I2x6hZzeWHOXptpR
-#\u56fe\u5f62\u9a8c\u8bc1\u78015\u5206\u949f
+#?????5??
 captcha.expirationTime=300
 
-#\u4e94\u5929\u4e4b\u5185\u4e0d\u53ef\u6295\u9012\u540c\u4e00\u804c\u4f4d
+#????????????
 position_five_day_whin=5
 
-#\u57fa\u7840\u6570\u636e\u5931\u6548\u65f6\u95f4(\u4e00\u5468 604800 )
+#????????(?? 604800 )
 base_data_expired_second=60
 
-#\u975e\u4ed8\u8d39\u4f01\u4e1a\u6708\u53ef\u53d1\u804c\u4f4d\u6b21\u6570
+#????????????
 unvip_release_no=2
 
-#\u9650\u5236\u975eVIP\u4f01\u4e1a\u542f\u52a8\u65f6\u95f4
+#???VIP??????
 unvip_discount_date=2020-01-01
 
-#PV/UV\u8bb0\u5f55\u5931\u6548\u65f6\u95f4(\u4e00\u5468 7\u5929 )
+#PV/UV??????(?? 7? )
 pvuv.expired.days=7
 
-#thymeleaf  
+#thymeleaf
 spring.thymeleaf.encoding=UTF-8  
 spring.thymeleaf.suffix=.html  
-#\u9ed8\u8ba4\u4e25\u683c\u68c0\u67e5  
-#spring.thymeleaf.mode=HTML5  
-#\u975e\u4e25\u683c\u68c0\u67e5  
-docx4j-ImportXHTML.Element.Heading.MapToStyle=true
+#??????
+#spring.thymeleaf.mode=HTML5
+#?????
+docx4j-ImportXHTML.Element.Heading.MapToStyle=true

+ 83 - 83
src/main/resources/conf.prod.properties

@@ -1,4 +1,4 @@
-#weixin \u516c\u4f17\u53f7
+#weixin ???
 token=
 weixin.appid=wx848cc247559f92f3
 weixin.secret=220609861baa9d70bc0576f382eb02aa
@@ -13,78 +13,78 @@ weixin.userinfo=https://api.weixin.qq.com/cgi-bin/user/info?access_token={0}&ope
 weixin.userinfo.list=https://api.weixin.qq.com/cgi-bin/user/info/batchget?access_token={0}
 weixin.menu=https://api.weixin.qq.com/cgi-bin/menu/create?access_token={0}
 weixin.shorturl=https://api.weixin.qq.com/cgi-bin/shorturl?access_token={0}
-#\u9759\u9ed8\u767b\u9646
+#????
 weixin.authorization.code=https://open.weixin.qq.com/connect/oauth2/authorize?appid={0}&redirect_uri={1}&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect
 
-#weixin \u5c0f\u7a0b\u5e8f
-#\u89c6\u9891\u9762\u8bd5
+#weixin ???
+#????
 wx.miniprog.video.token=Mde1ht7eD@tIof8b.b86ugsQddt
 wx.miniprog.video.appid=wx2258c25589859d8c
 wx.miniprog.video.secret=a44c4fd22083ff735cd551415cb590c8
 wx.miniprog.video.tmsg.invite.url=pages/index/index
-#\u8df3\u8f6c\u5c0f\u7a0b\u5e8f\u7c7b\u578b\uff1adeveloper\u4e3a\u5f00\u53d1\u7248\uff1btrial\u4e3a\u4f53\u9a8c\u7248\uff1bformal\u4e3a\u6b63\u5f0f\u7248\uff1b\u9ed8\u8ba4\u4e3a\u6b63\u5f0f\u7248
+#????????developer?????trial?????formal???????????
 wx.miniprog.video.state=formal
 
-#\u5c0f\u7a0b\u5e8f \u767b\u5f55
+#??? ??
 wx.miniprog.login.url=https://api.weixin.qq.com/sns/jscode2session?appid={0}&secret={1}&js_code={2}&grant_type=authorization_code
-#\u5c0f\u7a0b\u5e8f \u4e0b\u53d1\u5c0f\u7a0b\u5e8f\u548c\u516c\u4f17\u53f7\u7edf\u4e00\u7684\u670d\u52a1\u6d88\u606f
+#??? ????????????????
 wx.miniprog.tplmsg.url=https://api.weixin.qq.com/cgi-bin/message/wxopen/template/uniform_send?access_token={0}
 
-#\u817e\u8baf\u5373\u65f6\u89c6\u9891
+#??????
 wx.video.appid=1400384566
 wx.video.secret=656440f384e8de3272ff0d6f293d72e3bff67d9b3386d717abea8b2f1279774a
 
 
-#\u9886\u82f1\u7b2c\u4e09\u65b9\u767b\u5f55
+#???????
 linkedIn.clientId=81fdbcw6p7kx2c
 linkedIn.clientSecret=4HJvFKhEuC4AUT9q
 linkedIn.grantType=authorization_code
 linkedIn.redirect_url=https://www.menduner.com/user/login
 linkedIn.UserURl=https://api.linkedin.com/v2/me?projection=(id)
-#\u83b7\u53d6\u9886\u82f1\u7528\u6237\u4fe1\u606f
+#????????
 linkedIn.TokenUrl=https://www.linkedin.com/oauth/v2/accessToken
-#\u5206\u4eab\u52a8\u6001\u5230\u9886\u82f1
+#???????
 linkedIn.shareTrendToLinkedIn=https://api.linkedin.com/v1/people/~/shares?format=json
 
-#\u5fae\u4fe1\u7b2c\u4e09\u65b9\u767b\u5f55
+#???????
 weixin.authorization.tokenUrl=https://api.weixin.qq.com/sns/oauth2/access_token?appid={0}&secret={1}&code={2}&grant_type=authorization_code
-#\u5fae\u4fe1\u5f00\u653e\u5e73\u53f0
+#??????
 weixin.open.appid=wxae181c656f9443fc
 weixin.open.secret=c3d39dea54f749c94a8b27a27b39e9ab
-#\u83b7\u53d6\u5fae\u4fe1\u7528\u6237\u4fe1\u606f
+#????????
 weixin.authorization.userinfo=https://api.weixin.qq.com/sns/userinfo?access_token={0}&openid={1}&lang=zh_CN
 
-#\u5fae\u4fe1\u63a8\u9001 (\u63a5\u53e3\u5730\u5740)
+#???? (????)
 weixin.tmsg.send=https://api.weixin.qq.com/cgi-bin/message/template/send?access_token={0}
 
-##\u6a21\u677f\u6d88\u606f
-#\u804c\u4f4d\u9080\u8bf7\u901a\u77e5 \u63a8\u9001
+##????
+#?????? ??
 position_template_id=NAXbtCr8VR71M78NWyPBpK_xASTMKDktb6H8zIgbOws
 position_url=https://www.menduner.com/#/mine/invitations/company
 
-#\u9762\u8bd5\u9080\u8bf7\u901a\u77e5  \u63a8\u9001 <\u9762\u8bd5\u5b89\u6392\u63d0\u9192>
+#??????  ?? <??????>
 interview_invitation_template_id=SVffJu9YWkXHd1_2hIS4tJU02msuVS4r0X3cCQr24zo
-#\u516c\u4f17\u53f7\u94fe\u63a5
+#?????
 interview_invitation_url=https://www.menduner.com/#/mine/resume/delivery
-#\u5c0f\u7a0b\u5e8f\u94fe\u63a5
+#?????
 interview.invitation.minp.url=pages/interDetail/interDetail?id={0}&jobName={1}&isCheck=1
 
-#\u9762\u8bd5\u65f6\u95f4\u53d8\u66f4\u901a\u77e5  \u63a8\u9001 <\u9884\u7ea6\u66f4\u6539\u63d0\u9192>
+#????????  ?? <??????>
 interview.change.time.template.id=ioqHaLu4hJggfs09XCQWKYPh_eOKZbLcXBpQMo-38KI
-#\u5c0f\u7a0b\u5e8f\u94fe\u63a5
+#?????
 interview.change.time.minp.url=pages/interDetail/interDetail?id={0}&jobName={1}&isCheck=1
 
-#\u9762\u8bd5\u65f6\u95f4\u786e\u8ba4\u901a\u77e5  \u63a8\u9001 <\u9762\u8bd5\u65f6\u95f4\u786e\u8ba4\u901a\u77e5>
+#????????  ?? <????????>
 interview.confirm.time.template.id=vM2Oqqmxqnenrd6VyLMvwN-DziM17wTMPvYpV5xKZHw
-#\u5c0f\u7a0b\u5e8f\u94fe\u63a5
+#?????
 interview.confirm.time.minp.url=pages/interDetail/interDetail?id={0}&jobName={1}&isCheck=0
 
-#\u62d2\u7edd\u9762\u8bd5\u901a\u77e5  \u63a8\u9001 <\u9762\u8bd5\u62d2\u7edd\u63d0\u9192>
+#??????  ?? <??????>
 interview.refuse.time.template.id=MoDQgpOLzEaaPGLdBs6ZkbV3wn1RTupYPzAZ3CVjGVg
-#\u5c0f\u7a0b\u5e8f\u94fe\u63a5
+#?????
 interview.refuse.time.minp.url=pages/interDetail/interDetail?id={0}&jobName={1}&isCheck=0
 
-#\u767e\u5ea6API
+#??API
 baidu.grant.type=client_credentials
 baidu.client.id=C5L7K5jHUYBxgj9ZKGb5A33G
 baidu.client.secret=Vt23lBP1zFZN5URRtQ4fhpLsSGa6TNdj
@@ -96,102 +96,102 @@ weixin.jsapi.reTime=6800
 weixin.jsapi.ticket=https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token={0}&type=jsapi
 weixin.jsapi.signature=jsapi_ticket={0}&noncestr={1}&timestamp={2}&url={3}
 
-#token \u8fc7\u671f\u65f6\u95f4\uff08\u5206\u949f\uff09
+#token ????????
 token.expire.minute=180
 
 #reGet accessToke time
 weixin.reTime=4800
 
-#\u4e3b\u57df\u540d
+#???
 url.base=https://www.menduner.com/
 
-#\u4e0a\u4f20\u6587\u4ef6\u7edd\u5bf9\u8def\u5f84, \u8def\u5f84\u4e2d\u4e0d\u5141\u8bb8\u5305\u542b\u201cuserfiles\u201d
-#\u548c\u540e\u53f0userfiles.basedir\u914d\u7f6e\u4e00\u81f4
+#????????, ?????????userfiles?
+#???userfiles.basedir????
 upload.base.path=/data/uploadfiles/
 upload.path.image=images/
 upload.path.html=htmls/
 upload.path.file=files/
 upload.path.card=card/
 upload.path.template=template/
-#\u4f01\u4e1a\u76f8\u518c
+#????
 upload.path.image.album=album/
-#\u4f01\u4e1a\u4e3b\u9875\u80cc\u666f\u56fe
+#???????
 upload.path.image.centerBg=centerBg/
-#\u4e34\u65f6\u6587\u4ef6
+#????
 upload.path.image.temporary=temporary/
-#\u5728\u804c\u8bc1\u660e
+#????
 upload.path.image.onjob=onjob/
 
 upload.refund.path=refund/
 upload.qrcode.path=qrcode/
 
 
-#\u9ed8\u8ba4\u8bf7\u6c42\u6bcf\u9875\u6570\u91cf
+#????????
 default.request.page.size=10
-#\u597d\u53cb\u52a8\u6001\u6bcf\u9875\u6570\u91cf
+#????????
 trends.friendTrends.limitSize=5
-#\u597d\u53cb\u52a8\u6001 \u53d1\u5e03\u52a8\u6001,\u4fee\u6539\u8d44\u6599 \u8ddd\u79bb\u4eca\u5929\u7684\u5929\u6570
+#???? ????,???? ???????
 trends.friendTrendsWithLimit.limitDay=7
-#\u53ef\u80fd\u8ba4\u8bc6\u7684\u4eba\u6bcf\u9875\u6570\u91cf
+#??????????
 user.maybeFriends.limitSize=6
-#\u4f18\u9009\u4eba\u624d \u6bcf\u9875\u6570\u91cf
+#???? ????
 user.superiorTalenRetrieval.limitSize=5
-#\u63a8\u8350\u4eba\u624d \u6bcf\u9875\u6570\u91cf
+#???? ????
 user.recommentTalenRetrieval.limitSize=5
-#\u7528\u6237\u8be6\u7ec6\u4fe1\u606f  \u6211\u7684\u52a8\u6001\u663e\u793a\u6570\u91cf
+#??????  ????????
 user.detail.myTrends.limitSize=3
-#\u63a8\u8350\u804c\u4f4d\u6bcf\u9875\u6570\u91cf
+#????????
 job.recommendJobs.limitSize=5
-#\u76f8\u4f3c\u804c\u4f4d\u6bcf\u9875\u6570\u91cf
+#????????
 job.similarJobs.limitSize=5
-#\u9152\u5e97\u5176\u4ed6\u804c\u4f4d\u6bcf\u9875\u6570\u91cf
+#??????????
 job.hotelOtherPosition.limitSize=5
-#\u63a8\u8350\u9152\u5e97\u6bcf\u9875\u6570\u91cf
+#????????
 hotel.recommentHotels.limitSize=5
-#\u76f8\u4f3c\u9152\u5e97\u6bcf\u9875\u6570\u91cf
+#????????
 hotel.similarHotels.limitSize=5
-#\u6211\u7684\u597d\u53cb\u6bcf\u9875\u6570\u91cf
+#????????
 friends.myFriends.limitSize=6
-# \u56fe\u7247\u538b\u7f29\u5927\u5c0f\u63a7\u5236
+# ????????
 compress.image.size=600
 
 #sms
 sms.appID=1400097875
 sms.appkey=c434c99479419bd8b3b3c4cb517c6753
-#\u666e\u901a\u77ed\u4fe1\u6a21\u677f\uff08\u4e2d\u56fd\u5927\u9646\uff09
+#????????????
 sms.templateId=438082
-#\u666e\u901a\u77ed\u4fe1\u6a21\u677f\uff08\u56fd\u9645\uff09
+#??????????
 sms.templateId_en=179748
-#\u77ed\u4fe1\u9a8c\u8bc1\u7801\u8fc7\u671f\u65f6\u95f4\uff08\u79d2\uff09
+#????????????
 sms.phoneCode.expirationTime=600
-sms.sign=\u95e8\u58a9\u513f
+sms.sign=???
 sms.sign.en=Menduner
-#\u4f01\u4e1a\u6c47\u6b3e\u77ed\u4fe1\u6a21\u677fId
+#????????Id
 sms.sendRemit.templateId=165764
-#\u4f01\u4e1a\u9080\u8bf7\u77ed\u4fe1\u6a21\u677fId \uff08\u4e2d\u56fd\u5927\u9646\uff09
+#????????Id ??????
 sms.invitation.templateId=179431
-#\u4f01\u4e1a\u9080\u8bf7\u77ed\u4fe1\u6a21\u677fId \uff08\u56fd\u9645\uff09
+#????????Id ????
 sms.international.invitation.templateId=179744
-#\u4f01\u4e1a\u9080\u8bf7\u9762\u8bd5\u77ed\u4fe1Id
+#????????Id
 sms.interview.cn=727003
 sms.interview.en=727003
-#\u9884\u7ea6\u65f6\u95f4\u4fee\u6539\u901a\u77e5
+#????????
 sms.intv.time.upd=730206
-#\u9884\u7ea6\u65f6\u95f4\u786e\u8ba4\u901a\u77e5
+#????????
 sms.intv.time.ok=730218
-#\u62d2\u7edd\u9762\u8bd5
+#????
 sms.intv.refuse=743398
 
 #order
-default.invoiceContent=\u54a8\u8be2\u8d39
-default.accountName=\u82cf\u5dde\u8bc6\u559c\u8bc6\u8c0a\u4fe1\u606f\u79d1\u6280\u6709\u9650\u516c\u53f8
-default.openingBank=\u62db\u5546\u94f6\u884c\u80a1\u4efd\u6709\u9650\u516c\u53f8\u82cf\u5dde\u72ec\u5885\u6e56\u652f\u884c
+default.invoiceContent=???
+default.accountName=??????????????
+default.openingBank=?????????????????
 default.account=512908229410902
 
 default.invoiceContent_en=Consulting fee
 default.accountName_en=Suzhou Shixi Shiyi Information Technology Co., Ltd.
 default.openingBank_en=China Merchants Bank Suzhou Dushu Lake Branch
-#\u9ed8\u8ba4\u8fd0\u8d39
+#????
 default.freight=0
 
 #AliPay
@@ -206,49 +206,49 @@ AliPay.gatewayUrl=https://openapi.alipay.com/gateway.do
 
 #WeChatPay
 WXpay.appKey=b1HxwCuWLfQIzuilI1ayBTTiXOBfEeMg
-#\u516c\u4f17\u53f7id
+#???id
 WXpay.appid=wx848cc247559f92f3
 WXpay.appSecret=220609861baa9d70bc0576f382eb02aa
-#\u5546\u6237\u53f7
+#???
 WXpay.mchId=1505499481
-#\u56de\u8c03\u5730\u5740
+#????
 WXpay.notifyUrl={0}RecruitmentApi/order/weChat_notify_url
-#code\u56de\u8c03\u5730\u5740
+#code????
 WXpay.codeUrl={0}RecruitmentApi/order/weChat_code_url
 
-#\u4f01\u4e1a\u6ce8\u518c\u6fc0\u6d3b\u8fde\u63a5
+#????????
 enterprise.register.activeUrl={0}RecruitmentApi/login/activation
-#\u90ae\u4ef6\u6fc0\u6d3b\u8df3\u8f6c\u9759\u6001\u9875\u9762url
+#??????????url
 enterprise.mail.activation.redirectUrl=https://www.menduner.com/#/emailTip
-#\u4f01\u4e1a\u6ce8\u518c\u53d1\u9001\u6fc0\u6d3b\u8fde\u63a5, \u5185\u5bb9\u914d\u7f6e
-#enterprise.mail.companyName=\u82cf\u5dde\u8bc6\u559c\u8bc6\u8c0a\u9152\u5e97\u7ba1\u7406\u6709\u9650\u516c\u53f8
-#enterprise.mail.checkStatusName=\u5ba1\u6838\u5f85\u901a\u8fc7
+#??????????, ????
+#enterprise.mail.companyName=??????????????
+#enterprise.mail.checkStatusName=?????
 #enterprise.mail.addMessage=xxx
 
-#\u4f01\u4e1a\u7ebf\u4e0b\u652f\u4ed8 \u6700\u7ec8\u4ed8\u6b3e\u671f\u9650
+#?????? ??????
 deadline_payment=10
 
-#\u5ba1\u6838\u4eba\u90ae\u7bb1\u5730\u5740
+#???????
 auditor_email_address=peter.pan@menduner.com
 
-#\u6ce8\u518c\u53d1\u9001\u90ae\u4ef6
+#??????
 send_email_address=services@menduner.com
 send_email_password=I2x6hZzeWHOXptpR
 
-#\u56fe\u5f62\u9a8c\u8bc1\u78015\u5206\u949f
+#?????5??
 captcha.expirationTime=300
 
-#\u4e94\u5929\u4e4b\u5185\u4e0d\u53ef\u6295\u9012\u540c\u4e00\u804c\u4f4d
+#????????????
 position_five_day_whin=30
 
-#\u57fa\u7840\u6570\u636e\u5931\u6548\u65f6\u95f4(\u4e00\u5468)
+#????????(??)
 base_data_expired_second=604800
 
-#\u975e\u4ed8\u8d39\u4f01\u4e1a\u53ef\u53d1\u804c\u4f4d\u6b21\u6570
+#???????????
 unvip_release_no=3
 
-#\u9650\u5236\u975eVIP\u4f01\u4e1a\u542f\u52a8\u65f6\u95f4 now>
+#???VIP?????? now>
 unvip_discount_date=2020-04-30
 
-#PV/UV\u8bb0\u5f55\u5931\u6548\u65f6\u95f4(\u4e00\u5468 7\u5929 )
-pvuv.expired.days=7
+#PV/UV??????(?? 7? )
+pvuv.expired.days=7

+ 83 - 83
src/main/resources/conf.test.properties

@@ -1,4 +1,4 @@
-#weixin \u516c\u4f17\u53f7
+#weixin ???
 token=
 weixin.appid=wx700ad9bf40b511db
 weixin.secret=2a8ac1cb6266187fdb9527d40e73c4b9
@@ -15,78 +15,78 @@ weixin.userinfo=https://api.weixin.qq.com/cgi-bin/user/info?access_token={0}&ope
 weixin.userinfo.list=https://api.weixin.qq.com/cgi-bin/user/info/batchget?access_token={0}
 weixin.menu=https://api.weixin.qq.com/cgi-bin/menu/create?access_token={0}
 weixin.shorturl=https://api.weixin.qq.com/cgi-bin/shorturl?access_token={0}
-#\u9759\u9ed8\u767b\u9646
+#????
 weixin.authorization.code=https://open.weixin.qq.com/connect/oauth2/authorize?appid={0}&redirect_uri={1}&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect
 
 
-#weixin \u5c0f\u7a0b\u5e8f
-#\u89c6\u9891\u9762\u8bd5
+#weixin ???
+#????
 wx.miniprog.video.token=Mde1ht7eD@tIof8b.b86ugsQddt
 wx.miniprog.video.appid=wx2258c25589859d8c
 wx.miniprog.video.secret=a44c4fd22083ff735cd551415cb590c8
 wx.miniprog.video.tmsg.invite.url=pages/index/index
-#\u8df3\u8f6c\u5c0f\u7a0b\u5e8f\u7c7b\u578b\uff1adeveloper\u4e3a\u5f00\u53d1\u7248\uff1btrial\u4e3a\u4f53\u9a8c\u7248\uff1bformal\u4e3a\u6b63\u5f0f\u7248\uff1b\u9ed8\u8ba4\u4e3a\u6b63\u5f0f\u7248
+#????????developer?????trial?????formal???????????
 wx.miniprog.video.state=trial
 
-#\u5c0f\u7a0b\u5e8f \u767b\u5f55
+#??? ??
 wx.miniprog.login.url=https://api.weixin.qq.com/sns/jscode2session?appid={0}&secret={1}&js_code={2}&grant_type=authorization_code
-#\u5c0f\u7a0b\u5e8f \u4e0b\u53d1\u5c0f\u7a0b\u5e8f\u548c\u516c\u4f17\u53f7\u7edf\u4e00\u7684\u670d\u52a1\u6d88\u606f
+#??? ????????????????
 wx.miniprog.tplmsg.url=https://api.weixin.qq.com/cgi-bin/message/wxopen/template/uniform_send?access_token={0}
 
-#\u817e\u8baf\u5373\u65f6\u89c6\u9891
+#??????
 wx.video.appid=1400384566
 wx.video.secret=656440f384e8de3272ff0d6f293d72e3bff67d9b3386d717abea8b2f1279774a
 
-#\u9886\u82f1\u7b2c\u4e09\u65b9\u767b\u5f55
+#???????
 linkedIn.clientId=81fdbcw6p7kx2c
 linkedIn.clientSecret=4HJvFKhEuC4AUT9q
 linkedIn.grantType=authorization_code
 linkedIn.redirect_url=https://test.menduner.com/user/login
 linkedIn.UserURl=https://api.linkedin.com/v2/me?projection=(id)
-#\u83b7\u53d6\u9886\u82f1\u7528\u6237\u4fe1\u606f
+#????????
 linkedIn.TokenUrl=https://www.linkedin.com/oauth/v2/accessToken
-#\u5206\u4eab\u52a8\u6001\u5230\u9886\u82f1
+#???????
 linkedIn.shareTrendToLinkedIn=https://api.linkedin.com/v1/people/~/shares?format=json
 
-#\u5fae\u4fe1\u7b2c\u4e09\u65b9\u767b\u5f55
+#???????
 weixin.authorization.tokenUrl=https://api.weixin.qq.com/sns/oauth2/access_token?appid={0}&secret={1}&code={2}&grant_type=authorization_code
-#\u5fae\u4fe1\u5f00\u653e\u5e73\u53f0
+#??????
 weixin.open.appid=wxae181c656f9443fc
 weixin.open.secret=c3d39dea54f749c94a8b27a27b39e9ab
-#\u83b7\u53d6\u5fae\u4fe1\u7528\u6237\u4fe1\u606f
+#????????
 weixin.authorization.userinfo=https://api.weixin.qq.com/sns/userinfo?access_token={0}&openid={1}&lang=zh_CN
 
-#\u5fae\u4fe1\u63a8\u9001 (\u63a5\u53e3\u5730\u5740)
+#???? (????)
 weixin.tmsg.send=https://api.weixin.qq.com/cgi-bin/message/template/send?access_token={0}
 
-##\u6a21\u677f\u6d88\u606f
-#\u804c\u4f4d\u9080\u8bf7\u901a\u77e5 \u63a8\u9001
+##????
+#?????? ??
 position_template_id=NAXbtCr8VR71M78NWyPBpK_xASTMKDktb6H8zIgbOws
 position_url=https://test.menduner.com/#/mine/invitations/company
 
-#\u9762\u8bd5\u9080\u8bf7\u901a\u77e5  \u63a8\u9001 <\u9762\u8bd5\u5b89\u6392\u63d0\u9192>
+#??????  ?? <??????>
 interview_invitation_template_id=SVffJu9YWkXHd1_2hIS4tJU02msuVS4r0X3cCQr24zo
-#\u516c\u4f17\u53f7\u94fe\u63a5
+#?????
 interview_invitation_url=https://www.menduner.com/#/mine/resume/delivery
-#\u5c0f\u7a0b\u5e8f\u94fe\u63a5
+#?????
 interview.invitation.minp.url=pages/interDetail/interDetail?id={0}&jobName={1}&isCheck=1
 
-#\u9762\u8bd5\u65f6\u95f4\u53d8\u66f4\u901a\u77e5  \u63a8\u9001 <\u9884\u7ea6\u66f4\u6539\u63d0\u9192>
+#????????  ?? <??????>
 interview.change.time.template.id=ioqHaLu4hJggfs09XCQWKYPh_eOKZbLcXBpQMo-38KI
-#\u5c0f\u7a0b\u5e8f\u94fe\u63a5
+#?????
 interview.change.time.minp.url=pages/interDetail/interDetail?id={0}&jobName={1}&isCheck=1
 
-#\u9762\u8bd5\u65f6\u95f4\u786e\u8ba4\u901a\u77e5  \u63a8\u9001 <\u9762\u8bd5\u65f6\u95f4\u786e\u8ba4\u901a\u77e5>
+#????????  ?? <????????>
 interview.confirm.time.template.id=vM2Oqqmxqnenrd6VyLMvwN-DziM17wTMPvYpV5xKZHw
-#\u5c0f\u7a0b\u5e8f\u94fe\u63a5
+#?????
 interview.confirm.time.minp.url=pages/interDetail/interDetail?id={0}&jobName={1}&isCheck=0
 
-#\u62d2\u7edd\u9762\u8bd5\u901a\u77e5  \u63a8\u9001 <\u9762\u8bd5\u62d2\u7edd\u63d0\u9192>
+#??????  ?? <??????>
 interview.refuse.time.template.id=MoDQgpOLzEaaPGLdBs6ZkbV3wn1RTupYPzAZ3CVjGVg
-#\u5c0f\u7a0b\u5e8f\u94fe\u63a5
+#?????
 interview.refuse.time.minp.url=pages/interDetail/interDetail?id={0}&jobName={1}&isCheck=0
 
-#\u767e\u5ea6API
+#??API
 baidu.grant.type=client_credentials
 baidu.client.id=C5L7K5jHUYBxgj9ZKGb5A33G
 baidu.client.secret=Vt23lBP1zFZN5URRtQ4fhpLsSGa6TNdj
@@ -98,102 +98,102 @@ weixin.jsapi.reTime=6800
 weixin.jsapi.ticket=https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token={0}&type=jsapi
 weixin.jsapi.signature=jsapi_ticket={0}&noncestr={1}&timestamp={2}&url={3}
 
-#token \u8fc7\u671f\u65f6\u95f4\uff08\u5206\u949f\uff09
+#token ????????
 token.expire.minute=180
 
 #reGet accessToke time
 weixin.reTime=4800
 
-#\u4e3b\u57df\u540d
+#???
 url.base=https://test.menduner.com/
 
-#\u4e0a\u4f20\u6587\u4ef6\u7edd\u5bf9\u8def\u5f84, \u8def\u5f84\u4e2d\u4e0d\u5141\u8bb8\u5305\u542b\u201cuserfiles\u201d
-#\u548c\u540e\u53f0userfiles.basedir\u914d\u7f6e\u4e00\u81f4
+#????????, ?????????userfiles?
+#???userfiles.basedir????
 upload.base.path=/data/uploadfiles/test/
 upload.path.image=images/
 upload.path.html=htmls/
 upload.path.file=files/
 upload.path.card=card/
 upload.path.template=template/
-#\u4f01\u4e1a\u76f8\u518c
+#????
 upload.path.image.album=album/
-#\u4f01\u4e1a\u4e3b\u9875\u80cc\u666f\u56fe
+#???????
 upload.path.image.centerBg=centerBg/
-#\u4e34\u65f6\u6587\u4ef6
+#????
 upload.path.image.temporary=temporary/
-#\u5728\u804c\u8bc1\u660e
+#????
 upload.path.image.onjob=onjob/
 
 upload.refund.path=refund/
 upload.qrcode.path=qrcode/
 
 
-#\u9ed8\u8ba4\u8bf7\u6c42\u6bcf\u9875\u6570\u91cf
+#????????
 default.request.page.size=10
-#\u597d\u53cb\u52a8\u6001\u6bcf\u9875\u6570\u91cf
+#????????
 trends.friendTrends.limitSize=5
-#\u597d\u53cb\u52a8\u6001 \u53d1\u5e03\u52a8\u6001,\u4fee\u6539\u8d44\u6599 \u8ddd\u79bb\u4eca\u5929\u7684\u5929\u6570
+#???? ????,???? ???????
 trends.friendTrendsWithLimit.limitDay=7
-#\u53ef\u80fd\u8ba4\u8bc6\u7684\u4eba\u6bcf\u9875\u6570\u91cf
+#??????????
 user.maybeFriends.limitSize=6
-#\u4f18\u9009\u4eba\u624d \u6bcf\u9875\u6570\u91cf
+#???? ????
 user.superiorTalenRetrieval.limitSize=5
-#\u63a8\u8350\u4eba\u624d \u6bcf\u9875\u6570\u91cf
+#???? ????
 user.recommentTalenRetrieval.limitSize=5
-#\u7528\u6237\u8be6\u7ec6\u4fe1\u606f  \u6211\u7684\u52a8\u6001\u663e\u793a\u6570\u91cf
+#??????  ????????
 user.detail.myTrends.limitSize=3
-#\u63a8\u8350\u804c\u4f4d\u6bcf\u9875\u6570\u91cf
+#????????
 job.recommendJobs.limitSize=5
-#\u76f8\u4f3c\u804c\u4f4d\u6bcf\u9875\u6570\u91cf
+#????????
 job.similarJobs.limitSize=5
-#\u9152\u5e97\u5176\u4ed6\u804c\u4f4d\u6bcf\u9875\u6570\u91cf
+#??????????
 job.hotelOtherPosition.limitSize=5
-#\u63a8\u8350\u9152\u5e97\u6bcf\u9875\u6570\u91cf
+#????????
 hotel.recommentHotels.limitSize=5
-#\u76f8\u4f3c\u9152\u5e97\u6bcf\u9875\u6570\u91cf
+#????????
 hotel.similarHotels.limitSize=5
-#\u6211\u7684\u597d\u53cb\u6bcf\u9875\u6570\u91cf
+#????????
 friends.myFriends.limitSize=6
-# \u56fe\u7247\u538b\u7f29\u5927\u5c0f\u63a7\u5236
+# ????????
 compress.image.size=600
 
 #sms
 sms.appID=1400097875
 sms.appkey=c434c99479419bd8b3b3c4cb517c6753
-#\u666e\u901a\u77ed\u4fe1\u6a21\u677f\uff08\u4e2d\u56fd\u5927\u9646\uff09
+#????????????
 sms.templateId=438082
-#\u666e\u901a\u77ed\u4fe1\u6a21\u677f\uff08\u56fd\u9645\uff09
+#??????????
 sms.templateId_en=179748
-#\u77ed\u4fe1\u9a8c\u8bc1\u7801\u8fc7\u671f\u65f6\u95f4\uff08\u79d2\uff09
+#????????????
 sms.phoneCode.expirationTime=600
-sms.sign=\u95e8\u58a9\u513f
+sms.sign=???
 sms.sign.en=Menduner
-#\u4f01\u4e1a\u6c47\u6b3e\u77ed\u4fe1\u6a21\u677fId
+#????????Id
 sms.sendRemit.templateId=165764
-#\u4f01\u4e1a\u9080\u8bf7\u77ed\u4fe1\u6a21\u677fId \uff08\u4e2d\u56fd\u5927\u9646\uff09
+#????????Id ??????
 sms.invitation.templateId=179431
-#\u4f01\u4e1a\u9080\u8bf7\u77ed\u4fe1\u6a21\u677fId \uff08\u56fd\u9645\uff09
+#????????Id ????
 sms.international.invitation.templateId=179744
-#\u4f01\u4e1a\u9080\u8bf7\u9762\u8bd5\u77ed\u4fe1Id
+#????????Id
 sms.interview.cn=727003
 sms.interview.en=727003
-#\u9884\u7ea6\u65f6\u95f4\u4fee\u6539\u901a\u77e5
+#????????
 sms.intv.time.upd=730206
-#\u9884\u7ea6\u65f6\u95f4\u786e\u8ba4\u901a\u77e5
+#????????
 sms.intv.time.ok=730218
-#\u62d2\u7edd\u9762\u8bd5
+#????
 sms.intv.refuse=743398
 
 #order
-default.invoiceContent=\u54a8\u8be2\u8d39
-default.accountName=\u82cf\u5dde\u8bc6\u559c\u8bc6\u8c0a\u4fe1\u606f\u79d1\u6280\u6709\u9650\u516c\u53f8
-default.openingBank=\u62db\u5546\u94f6\u884c\u80a1\u4efd\u6709\u9650\u516c\u53f8\u82cf\u5dde\u72ec\u5885\u6e56\u652f\u884c
+default.invoiceContent=???
+default.accountName=??????????????
+default.openingBank=?????????????????
 default.account=512908229410902
 
 default.invoiceContent_en=Consulting fee
 default.accountName_en=Suzhou Shixi Shiyi Information Technology Co., Ltd.
 default.openingBank_en=China Merchants Bank Suzhou Dushu Lake Branch
-#\u9ed8\u8ba4\u8fd0\u8d39
+#????
 default.freight=0
 
 
@@ -209,49 +209,49 @@ AliPay.gatewayUrl=https://openapi.alipay.com/gateway.do
 #WeChatPay
 WXpay.appKey=b1HxwCuWLfQIzuilI1ayBTTiXOBfEeMg
 
-#\u516c\u4f17\u53f7id
+#???id
 WXpay.appid=wx848cc247559f92f3
 WXpay.appSecret=220609861baa9d70bc0576f382eb02aa
-#\u5546\u6237\u53f7
+#???
 WXpay.mchId=1505499481
-#\u56de\u8c03\u5730\u5740
+#????
 WXpay.notifyUrl=https://www.menduner.com/RecruitmentApi/order/weChat_notify_url
-#code\u56de\u8c03\u5730\u5740
+#code????
 WXpay.codeUrl={0}RecruitmentApi/order/weChat_code_url
 
-#\u4f01\u4e1a\u6ce8\u518c\u6fc0\u6d3b\u8fde\u63a5
+#????????
 enterprise.register.activeUrl={0}RecruitmentApi/login/activation
-#\u90ae\u4ef6\u6fc0\u6d3b\u8df3\u8f6c\u9759\u6001\u9875\u9762url
+#??????????url
 enterprise.mail.activation.redirectUrl=https://test.menduner.com/#/emailTip
-#\u4f01\u4e1a\u6ce8\u518c\u53d1\u9001\u6fc0\u6d3b\u8fde\u63a5, \u5185\u5bb9\u914d\u7f6e
-#enterprise.mail.companyName=\u82cf\u5dde\u8bc6\u559c\u8bc6\u8c0a\u9152\u5e97\u7ba1\u7406\u6709\u9650\u516c\u53f8
-#enterprise.mail.checkStatusName=\u5ba1\u6838\u5f85\u901a\u8fc7
+#??????????, ????
+#enterprise.mail.companyName=??????????????
+#enterprise.mail.checkStatusName=?????
 #enterprise.mail.addMessage=xxx
 
-#\u4f01\u4e1a\u7ebf\u4e0b\u652f\u4ed8 \u6700\u7ec8\u4ed8\u6b3e\u671f\u9650
+#?????? ??????
 deadline_payment=10
 
-#\u5ba1\u6838\u4eba\u90ae\u7bb1\u5730\u5740
+#???????
 auditor_email_address=peter.pan@menduner.com
 
-#\u6ce8\u518c\u53d1\u9001\u90ae\u4ef6
+#??????
 send_email_address=services@menduner.com
 send_email_password=I2x6hZzeWHOXptpR
 
-#\u56fe\u5f62\u9a8c\u8bc1\u78015\u5206\u949f
+#?????5??
 captcha.expirationTime=300
 
-#\u4e94\u5929\u4e4b\u5185\u4e0d\u53ef\u6295\u9012\u540c\u4e00\u804c\u4f4d
+#????????????
 position_five_day_whin=5
 
-#\u57fa\u7840\u6570\u636e\u5931\u6548\u65f6\u95f4(\u4e00\u5468)
+#????????(??)
 base_data_expired_second=604800
 
-#\u975e\u4ed8\u8d39\u4f01\u4e1a\u6708\u53ef\u53d1\u804c\u4f4d\u6b21\u6570
+#????????????
 unvip_release_no=2
 
-#\u9650\u5236\u975eVIP\u4f01\u4e1a\u542f\u52a8\u65f6\u95f4
+#???VIP??????
 unvip_discount_date=2020-01-14
 
-#PV/UV\u8bb0\u5f55\u5931\u6548\u65f6\u95f4(\u4e00\u5468 7\u5929 )
-pvuv.expired.days=7
+#PV/UV??????(?? 7? )
+pvuv.expired.days=7

+ 13 - 13
src/main/resources/message.tmpl.properties

@@ -1,16 +1,16 @@
 #message template
-tmpl.subscribe=\u611F\u8C22\u5173\u6CE8\u6DD8\u8C46\u5546\u57CE\u516C\u4F17\u53F7\uFF01
+tmpl.subscribe=????????????
 
 #tmpl message info
-tmpl.tmsg.deliver.first=\u4EB2\uFF0C\u5B9D\u8D1D\u5DF2\u7ECF\u542F\u7A0B\u4E86\uFF0C\u597D\u60F3\u5FEB\u70B9\u6765\u5230\u4F60\u8EAB\u8FB9\n
-tmpl.tmsg.deliver.remark=\u5907\u6CE8\uFF1A\u5982\u679C\u7591\u95EE\uFF0C\u8BF7\u76F4\u63A5\u5728\u5FAE\u4FE1\u670D\u52A1\u53F7\u4E2D\u7559\u8A00\uFF0C\u6211\u4EEC\u5C06\u5728\u7B2C\u4E00\u65F6\u95F4\u4E3A\u60A8\u670D\u52A1\uFF01\u670D\u52A1\u65F6\u95F4\uFF1A9:00-18:00
-tmpl.tmsg.sucess.first=\u606D\u559C\uFF0C\u60A8\u53C2\u4E0E\u7684\u56E2\u8D2D\u5DF2\u7ECF\u6210\u529F\n
-tmpl.tmsg.sucess.remark=\n\u6211\u4EEC\u5373\u5C06\u4E3A\u60A8\u53D1\u8D27\uFF0C\u70B9\u51FB\u67E5\u770B\u66F4\u591A\u62FC\u56E2 >>
-tmpl.tmsg.wait.remark=\n\u8BF7\u8010\u5FC3\u7B49\u5F85\u5F00\u5956\uFF0C\u795D\u60A8\u597D\u8FD0\uFF01\u70B9\u51FB\u67E5\u770B\u66F4\u591A\u62FC\u56E2 >>
-tmpl.tmsg.prize.first=\u4EB2\uFF0C\u60A8\u53C2\u4E0E\u7684\u62BD\u5956\u6D3B\u52A8\u5DF2\u4E2D\u5956\n
-tmpl.tmsg.prize.remark=\n\u8BE6\u60C5\u8BF7\u70B9\u51FB\u201C\u6DD8\u8C46\u62FC\u56E2\u201D\u4E0B\u65B9\u201C\u6211\u7684\u56E2\u201D\u67E5\u770B\u5F00\u5956\u7ED3\u679C
-tmpl.tmsg.faile.remark=\n\u60A8\u7684\u4ED8\u6B3E\u5C06\u57281-3\u4E2A\u5DE5\u4F5C\u65E5\u5185\u9000\u56DE\uFF0C\u4E3A\u4E86\u5F25\u8865\u60A8\u7684\u635F\u5931\uFF0C\u7279\u610F\u7ED9\u60A8\u51C6\u5907\u4E86\u4E00\u5F2020\u5143\u4F18\u60E0\u5238\uFF0C\u70B9\u51FB\u9886\u53D6\uFF01
-tmpl.tmsg.refound.first=\u60A8\u7684\u8BA2\u5355\u5DF2\u9000\u6B3E\uFF0C\u8BF7\u6CE8\u610F\u67E5\u6536\n
-tmpl.tmsg.refound.remark=\n\u5907\u6CE8\uFF1A\u5982\u9700\u66F4\u5FEB\u6377\u9000\u6B3E\uFF0C\u5EFA\u8BAE\u4F7F\u7528\u96F6\u94B1\u652F\u4ED8
-tmpl.tmsg.exchange.first=\u60A8\u7684\u5151\u6362\u7801\u5DF2\u6210\u529F\u5151\u6362\n
-tmpl.tmsg.exchange.remark=\n\u611F\u8C22\u60A8\u7684\u4F7F\u7528\u4E0E\u652F\u6301\uFF01\u5982\u6709\u7591\u95EE\uFF0C\u8BF7\u62E8\u6253\u5BA2\u670D\u70ED\u7EBF\uFF1A051266377777\uFF01
+tmpl.tmsg.deliver.first=???????????????????\n
+tmpl.tmsg.deliver.remark=???????????????????????????????????????9:00-18:00
+tmpl.tmsg.sucess.first=?????????????\n
+tmpl.tmsg.sucess.remark=\n????????????????? >>
+tmpl.tmsg.wait.remark=\n????????????????????? >>
+tmpl.tmsg.prize.first=?????????????\n
+tmpl.tmsg.prize.remark=\n????????????????????????
+tmpl.tmsg.faile.remark=\n??????1-3??????????????????????????20??????????
+tmpl.tmsg.refound.first=?????????????\n
+tmpl.tmsg.refound.remark=\n???????????????????
+tmpl.tmsg.exchange.first=??????????\n
+tmpl.tmsg.exchange.remark=\n???????????????????????051266377777?

+ 14 - 14
src/main/resources/mybatis-config.xml

@@ -1,19 +1,19 @@
 <?xml version="1.0" encoding="UTF-8" ?>
-<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" 
-"http://mybatis.org/dtd/mybatis-3-config.dtd">
+<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-config.dtd">
 <configuration>
-<!--     <settings>
-        打印查询语句
-        <setting name="logImpl" value="STDOUT_LOGGING" />
-    </settings> -->
-    
+    <settings>
+        <!-- 打印查询语句-->
+        <setting name="logImpl" value="STDOUT_LOGGING"/>
+    </settings>
+
     <!-- 类型别名 -->
-	<typeAliases>
-		<typeAlias alias="Page" type="com.wechat.global.base.interceptor.Page" /><!--分页  -->
-	</typeAliases>
-	
-	<!-- 插件配置 -->
-	<plugins>
-		<plugin interceptor="com.wechat.global.base.interceptor.PaginationInterceptor" />
+    <typeAliases>
+        <typeAlias alias="Page" type="com.wechat.global.base.interceptor.Page"/><!--分页  -->
+    </typeAliases>
+
+    <!-- 插件配置 -->
+    <plugins>
+        <plugin interceptor="com.wechat.global.base.interceptor.PaginationInterceptor"/>
     </plugins>
 </configuration>

+ 1286 - 1218
src/main/resources/mybatis/MdeJobAdvertisedMapper.xml

@@ -1,60 +1,60 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="MdeJobAdvertisedMapper">
-	<resultMap type="com.wechat.model.dbEntity.MdeJobAdvertised" id="MdeJobAdvertised">
-		<id column="job_id" property="jobId" />
-		<result column="publisher" property="publisher" />
-		<result column="job_name" property="jobName" />
-		<result column="position_id" property="positionId" />
-		<result column="add_province" property="addProvince" />
-		<result column="add_city" property="addCity" />
-		<result column="add_area" property="addArea" />
-		<result column="add_detail" property="addDetail" />
-		<result column="add_longitude" property="addLongitude" />
-		<result column="add_latitude" property="addLatitude" />
-		<result column="work_experience" property="workExperience" />
-		<result column="education" property="education" />
-		<result column="job_describe" property="jobDescribe" />
-		<result column="job_status" property="jobStatus" />
-		<result column="recommend_flag" property="recommendFlag" /> 
-		<result column="version_no" property="versionNo" /> 
-		<result column="remarks" property="remarks" />
-		<result column="del_flag" property="delFlag" />
-		<result column="create_by" property="createBy" />
-		<result column="create_date" property="createDate" />
-		<result column="update_by" property="updateBy" />
-		<result column="update_date" property="updateDate" />
-		<result column="job_requirement" property="jobRequirement" />
-		<result column="job_invitation" property="jobInvitation" />
-		<result column="pay_from" property="payFrom" />
-		<result column="pay_to" property="payTo" />
-		<result column="contact_information" property="contactInformation" />
-		
-		<!-- 酒店名称 -->
-		<result column="publisher_name" property="publisherName" />
-		<result column="foreign_name" property="foreignName"/>
-		<result column="identity_flag" property="identityFlag"/>
-		<result column="RECOMMEND_FLAG" property="recommendFlag"/>
-		<result column="PREPARE_FLAG" property="prepareFlag" />
-		<result column="PREPARE_YEAR" property="prepareYear" />
-		<result column="PREPARE_QUARTER" property="prepareQuarter" />
-	</resultMap>
-	<resultMap type="com.wechat.model.dbEntity.MdeJobAdvertised" id="mdeJobAdvertisedJoin">
-		<id column="job_id" property="jobId" />
-		<result column="job_name" property="jobName" />
-		<collection property="userCodeList"  ofType="com.wechat.model.dbEntity.MdeJobInvitationRel">
-			<result column="USER_CODE" property="userCode" />
-		</collection>
-	</resultMap>
-	<resultMap type="com.wechat.model.dbEntity.MdeJobAdvertised" id="mdePositionCvRelMap">
-		<id column="job_id" property="jobId" />
-		<result column="job_name" property="jobName" />
-		<collection property="userCodeList"  ofType="com.wechat.model.dbEntity.MdeJobInvitationRel">
-			<result column="USER_CODE" property="userCode" />
-		</collection>
-	</resultMap>
-	<sql id="mdeJobAdvertisedColumns">
-		a.job_id AS "jobId",
+    <resultMap type="com.wechat.model.dbEntity.MdeJobAdvertised" id="MdeJobAdvertised">
+        <id column="job_id" property="jobId"/>
+        <result column="publisher" property="publisher"/>
+        <result column="job_name" property="jobName"/>
+        <result column="position_id" property="positionId"/>
+        <result column="add_province" property="addProvince"/>
+        <result column="add_city" property="addCity"/>
+        <result column="add_area" property="addArea"/>
+        <result column="add_detail" property="addDetail"/>
+        <result column="add_longitude" property="addLongitude"/>
+        <result column="add_latitude" property="addLatitude"/>
+        <result column="work_experience" property="workExperience"/>
+        <result column="education" property="education"/>
+        <result column="job_describe" property="jobDescribe"/>
+        <result column="job_status" property="jobStatus"/>
+        <result column="recommend_flag" property="recommendFlag"/>
+        <result column="version_no" property="versionNo"/>
+        <result column="remarks" property="remarks"/>
+        <result column="del_flag" property="delFlag"/>
+        <result column="create_by" property="createBy"/>
+        <result column="create_date" property="createDate"/>
+        <result column="update_by" property="updateBy"/>
+        <result column="update_date" property="updateDate"/>
+        <result column="job_requirement" property="jobRequirement"/>
+        <result column="job_invitation" property="jobInvitation"/>
+        <result column="pay_from" property="payFrom"/>
+        <result column="pay_to" property="payTo"/>
+        <result column="contact_information" property="contactInformation"/>
+
+        <!-- 酒店名称 -->
+        <result column="publisher_name" property="publisherName"/>
+        <result column="foreign_name" property="foreignName"/>
+        <result column="identity_flag" property="identityFlag"/>
+        <result column="RECOMMEND_FLAG" property="recommendFlag"/>
+        <result column="PREPARE_FLAG" property="prepareFlag"/>
+        <result column="PREPARE_YEAR" property="prepareYear"/>
+        <result column="PREPARE_QUARTER" property="prepareQuarter"/>
+    </resultMap>
+    <resultMap type="com.wechat.model.dbEntity.MdeJobAdvertised" id="mdeJobAdvertisedJoin">
+        <id column="job_id" property="jobId"/>
+        <result column="job_name" property="jobName"/>
+        <collection property="userCodeList" ofType="com.wechat.model.dbEntity.MdeJobInvitationRel">
+            <result column="USER_CODE" property="userCode"/>
+        </collection>
+    </resultMap>
+    <resultMap type="com.wechat.model.dbEntity.MdeJobAdvertised" id="mdePositionCvRelMap">
+        <id column="job_id" property="jobId"/>
+        <result column="job_name" property="jobName"/>
+        <collection property="userCodeList" ofType="com.wechat.model.dbEntity.MdeJobInvitationRel">
+            <result column="USER_CODE" property="userCode"/>
+        </collection>
+    </resultMap>
+    <sql id="mdeJobAdvertisedColumns">
+        a.job_id AS "jobId",
 		a.publisher AS "publisher",
 		a.job_name AS "jobName",
 		a.position_id AS "positionId",
@@ -81,1191 +81,1259 @@
 		a.job_requirement AS "jobRequirement",
 		a.job_invitation AS "jobInvitation",
 		a.contact_information AS "contactInformation"
-	</sql>
-	
-	<sql id="userColumJoin">
-		,u.name AS "publisherName"
+    </sql>
+
+    <sql id="userColumJoin">
+        ,u.name AS "publisherName"
 		,u.head_portrait AS "headPortrait"
 		,u.foreign_name as "foreignName"
 		,u.PREPARE_FLAG as prepareFlag
 		,u.identity_flag as "identityFlag"
-	</sql>
-	<sql id="areaColumJoin">
-		<choose>
-			<when test="lang == 'en'.toString()">
-				,s1.name_en as addProvinceName,s2.name_en as addCityName,s3.name_en as addAreaName
-			</when>
-			<otherwise>
-				,s1.name as addProvinceName,s2.name as addCityName,s3.name as addAreaName
-			</otherwise>
-		</choose>
-	</sql>
-	<sql id="userLeftJoin">
-		inner join mde_user u on u.user_code = a.publisher and u.del_flag=0 
-	</sql>
-	<sql id ="arealeftJoin">
-		inner JOIN sys_area s1 ON a.ADD_PROVINCE = s1.code
+    </sql>
+    <sql id="areaColumJoin">
+        <choose>
+            <when test="lang == 'en'.toString()">
+                ,s1.name_en as addProvinceName,s2.name_en as addCityName,s3.name_en as addAreaName
+            </when>
+            <otherwise>
+                ,s1.name as addProvinceName,s2.name as addCityName,s3.name as addAreaName
+            </otherwise>
+        </choose>
+    </sql>
+    <sql id="userLeftJoin">
+        inner join mde_user u on u.user_code = a.publisher and u.del_flag=0
+    </sql>
+    <sql id="arealeftJoin">
+        inner JOIN sys_area s1 ON a.ADD_PROVINCE = s1.code
 		inner JOIN sys_area s2 ON a.ADD_CITY = s2.code
 		LEFT JOIN sys_area s3 ON a.ADD_AREA = s3.code
-	</sql>
-	<!-- 获取职位信息 -->
-	<select id="get" resultMap="MdeJobAdvertised">
-		SELECT
-			<include refid="mdeJobAdvertisedColumns" />
-			<include refid="userColumJoin"></include>
-			<include refid="areaColumJoin"></include>
-			,u.PREPARE_YEAR as prepareYear
-			,u.PREPARE_QUARTER as prepareQuarter
-		FROM mde_job_advertised a
-		<include refid="userLeftJoin" /><!-- mde_user u -->
-		<include refid="arealeftJoin"></include>
-		WHERE a.job_id = #{id}
-		and a.del_flag=0
-	</select>
-	
-	<!-- 更加id获取职位信息 -->
-	<select id="getInfoById" resultType="com.wechat.model.dbEntity.MdeJobAdvertisedEntity">
-		SELECT
-		<include refid="mdeJobAdvertisedColumns" />
-		FROM mde_job_advertised a
-		WHERE a.job_id = #{id}
-	</select>
-	
-	<!-- 获取职位信息 -->
-	<select id="getInfoByIds" resultType="com.wechat.model.dto.ShowOfJobsDto">
-		SELECT
-			a.job_id AS "jobId",
-			a.publisher AS "publisher",
-			a.job_name AS "jobName",
-			a.position_id AS "positionId",
-			a.job_name as "positionName",
-			pos.REMARKS as "abbreviation",
-			a.work_experience AS "workExperience",
-			a.education AS "education",
-			a.job_describe AS "jobDescribe",
-			a.job_requirement AS "jobRequirement",
-			a.PAY_FROM as payFrom,
-			a.PAY_TO as payTo,
-			a.create_date AS "createDate",
-			a.job_invitation AS "jobInvitation"
-			,s1.name as addProvinceName
-			,s2.name as addCityName
-			,s3.name as addAreaName
-		FROM mde_job_advertised a
-		<include refid="arealeftJoin"></include>
-		inner join mde_position pos
-			on a.position_id = pos.position_id
-		WHERE a.JOB_STATUS = "0"
-		and a.job_id in
-				<foreach collection="idList" item="item" separator="," open="(" close=")">
-					#{item}
-				</foreach>
-		order by pos.POSITION_GRADE
-	</select>
+    </sql>
+
+    <!-- 已发职位 or 已发职位的关键词检索 表连接  -->
+    <sql id="mdeJobAdvertisedJoinCommon">
+        LEFT JOIN (
+        SELECT
+        rel.POS_ID,
+        COUNT( rel.INTV_ID ) AS cvNum,
+        min( rel.CV_STATUS ) AS newFlag
+        FROM
+        mde_position_cv_rel rel
+        INNER JOIN mde_user u ON u.USER_CODE = rel.CANDIDATE
+        WHERE
+        rel.PUBLISHER = #{userCode}
+        AND u.DEL_FLAG = 0
+        GROUP BY
+        rel.POS_ID
+        ) rel2 ON ad.JOB_ID = rel2.POS_ID
+        LEFT JOIN sys_dict s ON s.`value` = ad.WORK_EXPERIENCE
+        LEFT JOIN sys_dict edu ON edu.`value` = ad.education
+        LEFT JOIN sys_area s1 ON ad.ADD_PROVINCE = s1.CODE
+        LEFT JOIN sys_area s2 ON ad.ADD_CITY = s2.CODE
+        LEFT JOIN mde_position p ON ad.POSITION_ID = p.POSITION_ID
+        WHERE
+        ad.DEL_FLAG = 0
+        AND ad.PUBLISHER = #{userCode}
+        AND s.type = 'job_year'
+        AND edu.type = 'education'
+        AND p.DEL_FLAG =0
+    </sql>
+
+    <!-- 已发职位 or 已发职位的关键词检索 select -->
+    <sql id="mdeJobAdvertisedSelectCommon">
+        ad.JOB_NAME AS jobName,
+        ad.JOB_ID As jobId,
+        ad.RECOMMEND_FLAG as recommendFlag,
+        ad.PAY_FROM as payFrom,
+        ad.PAY_TO as payTo,
+        <choose>
+            <when test="lang=='en'.toString()">
+                s.en as workExperience,
+                edu.en AS education,
+                s1.name_en as addProvinceName,s2.name_en as addCityName,
+                p.POSITION_NAME_EN as positionName,
+            </when>
+            <otherwise>
+                s.label AS workExperience,
+                edu.label AS education,
+                s1.name as addProvinceName,s2.name as addCityName,
+                p.POSITION_NAME_CN as positionName,
+            </otherwise>
+        </choose>
+        p.POSITION_ID as positionId,
+        ad.UPDATE_DATE AS publishDate,
+        ad.JOB_STATUS AS jobStatus,
+        rel2.cvNum AS cvNum,
+        IFNULL( rel2.newFlag, 9 ) AS newFlag
+    </sql>
+    <!-- 获取职位信息 -->
+    <select id="get" resultMap="MdeJobAdvertised">
+        SELECT
+        <include refid="mdeJobAdvertisedColumns"/>
+        <include refid="userColumJoin">
+        </include>
+        <include refid="areaColumJoin">
+        </include>
+        ,u.PREPARE_YEAR as prepareYear
+        ,u.PREPARE_QUARTER as prepareQuarter
+        FROM mde_job_advertised a
+        <include refid="userLeftJoin"/><!-- mde_user u -->
+        <include refid="arealeftJoin">
+        </include>
+        WHERE a.job_id = #{id}
+        and a.del_flag=0
+    </select>
+
+    <!-- 更加id获取职位信息 -->
+    <select id="getInfoById" resultType="com.wechat.model.dbEntity.MdeJobAdvertisedEntity">
+        SELECT
+        <include refid="mdeJobAdvertisedColumns"/>
+        FROM mde_job_advertised a
+        WHERE a.job_id = #{id}
+    </select>
 
-	<insert id="insert">
-		INSERT INTO mde_job_advertised(
-		publisher,
-		job_name,
-		position_id,
-		add_province,
-		add_city,
-		add_area,
-		add_detail,
-		add_longitude,
-		add_latitude,
-		work_experience,
-		education,
-		job_describe,
-		remarks,
-		create_by,
-		create_date,
-		update_by,
-		update_date,
-		<if test="recommendFlag != null and recommendFlag != ''">
-			recommend_flag,
-		</if>
-		<if test="payFrom != null and payFrom != 0">
-			pay_from,
-		</if>
-		<if test="payTo != null and payTo != 0">
-			pay_to,
-		</if>
-		job_requirement,
-		job_invitation,
-		contact_information
-		) VALUES (
-		#{publisher},
-		#{jobName},
-		#{positionId},
-		#{addProvince},
-		#{addCity},
-		#{addArea},
-		#{addDetail},
-		#{addLongitude},
-		#{addLatitude},
-		#{workExperience},
-		#{education},
-		#{jobDescribe},
-		#{remarks},
-		#{createBy},
-		#{createDate},
-		#{updateBy},
-		#{updateDate},
-		<if test="recommendFlag != null and recommendFlag != ''">
-			#{recommendFlag},
-		</if>
-		<if test="payFrom != null and payFrom != 0">
-			#{payFrom},
-		</if>
-		<if test="payTo != null and payTo != 0">
-			#{payTo},
-		</if>
-		#{jobRequirement},
-		#{jobInvitation},
-		#{contactInformation}
-		)
-	</insert>
+    <!-- 获取职位信息 -->
+    <select id="getInfoByIds" resultType="com.wechat.model.dto.ShowOfJobsDto">
+        SELECT
+        a.job_id AS "jobId",
+        a.publisher AS "publisher",
+        a.job_name AS "jobName",
+        a.position_id AS "positionId",
+        a.job_name as "positionName",
+        pos.REMARKS as "abbreviation",
+        a.work_experience AS "workExperience",
+        a.education AS "education",
+        a.job_describe AS "jobDescribe",
+        a.job_requirement AS "jobRequirement",
+        a.PAY_FROM as payFrom,
+        a.PAY_TO as payTo,
+        a.create_date AS "createDate",
+        a.job_invitation AS "jobInvitation"
+        ,s1.name as addProvinceName
+        ,s2.name as addCityName
+        ,s3.name as addAreaName
+        FROM mde_job_advertised a
+        <include refid="arealeftJoin">
+        </include>
+        inner join mde_position pos
+        on a.position_id = pos.position_id
+        WHERE a.JOB_STATUS = "0"
+        and a.job_id in
+        <foreach collection="idList" item="item" separator="," open="(" close=")">
+            #{item}
+        </foreach>
+        order by pos.POSITION_GRADE
+    </select>
 
-	<update id="update">
-		UPDATE mde_job_advertised SET
-		<if test="publisher != null and publisher != ''"> publisher = #{publisher},             </if>
-		<if test="jobName != null and jobName != ''"> job_name = #{jobName},                </if>
-		<if test="positionId != null and positionId != ''"> position_id = #{positionId},                </if>
-		<if test="addProvince != null and addProvince != ''"> add_province = #{addProvince},        </if>
-		<if test="addCity != null and addCity != ''"> add_city = #{addCity},                </if>
-					add_area = #{addArea}, 
-					add_detail = #{addDetail},
-		<if test="addLongitude != null and addLongitude != ''"> add_longitude = #{addLongitude},      </if>
-		<if test="addLatitude != null and addLatitude != ''"> add_latitude = #{addLatitude},        </if>
-		<if test="workExperience != null and workExperience != ''"> work_experience = #{workExperience},  </if>
-		<if test="education != null and education != ''"> education = #{education},             </if>
-		<if test="jobDescribe != null and jobDescribe != ''"> job_describe = #{jobDescribe},        </if>
-		<if test="jobStatus != null and jobStatus != ''"> job_status = #{jobStatus},            </if>
-		<if test="remarks != null and remarks != ''"> remarks = #{remarks},                 </if>
-		<if test="recommendFlag != null and recommendFlag != ''"> recommend_flag = #{recommendFlag},  </if>
-		pay_from = #{payFrom},
-		pay_to = #{payTo},
-		<if test="updateBy != null and updateBy != ''"> update_by = #{updateBy},              </if>
-		<if test="updateDate != null"> update_date = #{updateDate},          </if>
-		<if test="createDate != null"> create_date = #{createDate},          </if>
-		<if test="jobRequirement != null and jobRequirement != ''"> job_requirement = #{jobRequirement},          </if>
-		<if test="jobInvitation != null and jobInvitation != ''"> job_invitation = #{jobInvitation},          </if>
-		<if test="contactInformation !=null and contactInformation != ''"> contact_information = #{contactInformation},         </if>
-		version_no = version_no +1
-		WHERE job_id = #{jobId} <if test="versionNo !=null and versionNo != ''"> and version_no = #{versionNo}</if>
-	</update>
+    <insert id="insert">
+        INSERT INTO mde_job_advertised(
+        publisher,
+        job_name,
+        position_id,
+        add_province,
+        add_city,
+        add_area,
+        add_detail,
+        add_longitude,
+        add_latitude,
+        work_experience,
+        education,
+        job_describe,
+        remarks,
+        create_by,
+        create_date,
+        update_by,
+        update_date,
+        <if test="recommendFlag != null and recommendFlag != ''">
+            recommend_flag,
+        </if>
+        <if test="payFrom != null and payFrom != 0">
+            pay_from,
+        </if>
+        <if test="payTo != null and payTo != 0">
+            pay_to,
+        </if>
+        job_requirement,
+        job_invitation,
+        contact_information
+        ) VALUES (
+        #{publisher},
+        #{jobName},
+        #{positionId},
+        #{addProvince},
+        #{addCity},
+        #{addArea},
+        #{addDetail},
+        #{addLongitude},
+        #{addLatitude},
+        #{workExperience},
+        #{education},
+        #{jobDescribe},
+        #{remarks},
+        #{createBy},
+        #{createDate},
+        #{updateBy},
+        #{updateDate},
+        <if test="recommendFlag != null and recommendFlag != ''">
+            #{recommendFlag},
+        </if>
+        <if test="payFrom != null and payFrom != 0">
+            #{payFrom},
+        </if>
+        <if test="payTo != null and payTo != 0">
+            #{payTo},
+        </if>
+        #{jobRequirement},
+        #{jobInvitation},
+        #{contactInformation}
+        )
+    </insert>
 
-	<update id="delete">
-		UPDATE mde_job_advertised SET
-		version_no = version_no +1,
-		del_flag = #{DEL_FLAG_DELETE}
-		WHERE job_id = #{id} and version_no = #{versionNo}
-	</update>
-	
-	<!-- 推荐职位 (已登录) -->
-	<select id="getRecommentJobs" resultMap="MdeJobAdvertised">	
-<![CDATA[SET @num = 0;
-		SET @cont = 0;
-		SET @publisher = '';
-		
-		SELECT
-			m.JOB_ID,
-			m.PUBLISHER,
-			m.row_number,
-			m.JOB_NAME,
-			m.ADD_PROVINCE,
-			s1.`name` AS addProvinceName,
-			s2.`name` AS addCityName,
-			s3.`name` AS addAreaName,
-			m.ADD_CITY,
-			m.ADD_AREA,
-			m.ADD_DETAIL,
-			m.JOB_DESCRIBE,
-			m.CREATE_DATE,
-			m.UPDATE_DATE,
-			m.publisher_name,
-			m.PREPARE_FLAG,
-			m.headPortrait,
-			m.PAY_FROM,
-			m.PAY_TO,
-			m.foreignName 
-		FROM
-			(
-				SELECT
-					base.*,
-				CASE
-						WHEN @publisher = base.PUBLISHER 
-						THEN @num := @num + 1 ELSE @num := 1 
-						END row_number,
+    <update id="update">
+        UPDATE mde_job_advertised SET
+        <if test="publisher != null and publisher != ''">
+            publisher = #{publisher},
+        </if>
+        <if test="jobName != null and jobName != ''">
+            job_name = #{jobName},
+        </if>
+        <if test="positionId != null and positionId != ''">
+            position_id = #{positionId},
+        </if>
+        <if test="addProvince != null and addProvince != ''">
+            add_province = #{addProvince},
+        </if>
+        <if test="addCity != null and addCity != ''">
+            add_city = #{addCity},
+        </if>
+        add_area = #{addArea},
+        add_detail = #{addDetail},
+        <if test="addLongitude != null and addLongitude != ''">
+            add_longitude = #{addLongitude},
+        </if>
+        <if test="addLatitude != null and addLatitude != ''">
+            add_latitude = #{addLatitude},
+        </if>
+        <if test="workExperience != null and workExperience != ''">
+            work_experience = #{workExperience},
+        </if>
+        <if test="education != null and education != ''">
+            education = #{education},
+        </if>
+        <if test="jobDescribe != null and jobDescribe != ''">
+            job_describe = #{jobDescribe},
+        </if>
+        <if test="jobStatus != null and jobStatus != ''">
+            job_status = #{jobStatus},
+        </if>
+        <if test="remarks != null and remarks != ''">
+            remarks = #{remarks},
+        </if>
+        <if test="recommendFlag != null and recommendFlag != ''">
+            recommend_flag = #{recommendFlag},
+        </if>
+        pay_from = #{payFrom},
+        pay_to = #{payTo},
+        <if test="updateBy != null and updateBy != ''">
+            update_by = #{updateBy},
+        </if>
+        <if test="updateDate != null">
+            update_date = #{updateDate},
+        </if>
+        <if test="createDate != null">
+            create_date = #{createDate},
+        </if>
+        <if test="jobRequirement != null and jobRequirement != ''">
+            job_requirement = #{jobRequirement},
+        </if>
+        <if test="jobInvitation != null and jobInvitation != ''">
+            job_invitation = #{jobInvitation},
+        </if>
+        <if test="contactInformation !=null and contactInformation != ''">
+            contact_information = #{contactInformation},
+        </if>
+        version_no = version_no +1
+        WHERE job_id = #{jobId}
+        <if test="versionNo !=null and versionNo != ''">
+            and version_no = #{versionNo}
+        </if>
+    </update>
+
+    <update id="delete">
+        UPDATE mde_job_advertised
+        SET version_no = version_no + 1,
+            del_flag   = #{DEL_FLAG_DELETE}
+        WHERE job_id = #{id}
+          and version_no = #{versionNo}
+    </update>
+
+    <!-- 推荐职位 (已登录) -->
+    <select id="getRecommentJobs" resultMap="MdeJobAdvertised">
+        <![CDATA[
+        SET @num = 0;
+        SET @cont = 0;
+        SET @publisher = '';
+
+        SELECT m.JOB_ID,
+               m.PUBLISHER,
+               m.row_number,
+               m.JOB_NAME,
+               m.ADD_PROVINCE,
+               s1.`name` AS addProvinceName,
+               s2.`name` AS addCityName,
+               s3.`name` AS addAreaName,
+               m.ADD_CITY,
+               m.ADD_AREA,
+               m.ADD_DETAIL,
+               m.JOB_DESCRIBE,
+               m.CREATE_DATE,
+               m.UPDATE_DATE,
+               m.publisher_name,
+               m.PREPARE_FLAG,
+               m.headPortrait,
+               m.PAY_FROM,
+               m.PAY_TO,
+               m.foreignName
+        FROM (SELECT base.*,
+                     CASE
+                         WHEN @publisher = base.PUBLISHER
+                             THEN @num := @num + 1
+                         ELSE @num := 1
+                         END row_number,
 				@publisher := base.PUBLISHER,
-				@cont := @cont + 1 
-				FROM
-					(
-						SELECT
-							a.JOB_ID,
-							a.PUBLISHER,
-							a.JOB_NAME,
-							a.ADD_PROVINCE,
-							a.ADD_CITY,
-							a.ADD_AREA,
-							a.ADD_DETAIL,
-							a.JOB_DESCRIBE,
-							a.CREATE_DATE,
-							a.UPDATE_DATE,
-							a.PAY_FROM,
-							a.PAY_TO,
-							u.`NAME` AS publisher_name,
-							u.PREPARE_FLAG,
-							u.head_portrait AS headPortrait,
-							u.foreign_name AS foreignName 
-						FROM
-							mde_job_advertised a
-							INNER JOIN mde_user u ON u.USER_CODE = a.PUBLISHER 
-							AND u.VIP_FLAG != 0 
-						WHERE
-							a.job_status = 0 
-							and a.RECOMMEND_FLAG = '1'
-							AND date( a.UPDATE_DATE ) > DATE_SUB( CURDATE( ), INTERVAL 3 MONTH ) 
-						ORDER BY
-							RAND( ) 
-					) base 
-				ORDER BY
-					base.PUBLISHER 
-				) m
-			LEFT JOIN sys_area s1 ON m.ADD_PROVINCE = s1.CODE 
-			LEFT JOIN sys_area s2 ON m.ADD_CITY = s2.CODE 
-			LEFT JOIN sys_area s3 ON m.ADD_AREA = s3.CODE 
-		WHERE
-			m.row_number <= 2 
-		ORDER BY
-			RAND()
-		LIMIT #{limitSize}  ]]>
-	</select> 
+				@cont := @cont + 1
+              FROM
+                  (
+                  SELECT
+                  a.JOB_ID, a.PUBLISHER, a.JOB_NAME, a.ADD_PROVINCE, a.ADD_CITY, a.ADD_AREA, a.ADD_DETAIL, a.JOB_DESCRIBE, a.CREATE_DATE, a.UPDATE_DATE, a.PAY_FROM, a.PAY_TO, u.`NAME` AS publisher_name, u.PREPARE_FLAG, u.head_portrait AS headPortrait, u.foreign_name AS foreignName
+                  FROM
+                  mde_job_advertised a
+                  INNER JOIN mde_user u ON u.USER_CODE = a.PUBLISHER
+                  AND u.VIP_FLAG != 0
+                  WHERE
+                  a.job_status = 0
+                  and a.RECOMMEND_FLAG = '1'
+                  AND date ( a.UPDATE_DATE ) > DATE_SUB( CURDATE( ), INTERVAL 3 MONTH )
+                  ORDER BY
+                  RAND( )
+                  ) base
+              ORDER BY
+                  base.PUBLISHER) m
+                 LEFT JOIN sys_area s1 ON m.ADD_PROVINCE = s1.CODE
+                 LEFT JOIN sys_area s2 ON m.ADD_CITY = s2.CODE
+                 LEFT JOIN sys_area s3 ON m.ADD_AREA = s3.CODE
+        WHERE m.row_number <= 2
+        ORDER BY RAND()
+        LIMIT #{limitSize}
+        ]]>
+    </select>
+
+    <!-- 相似职位 -->
+    <select id="getSimilarJobs" resultType="com.wechat.model.dto.JobAdvertisedListDto">
+        SELECT
+        a.job_id AS "jobId",
+        a.job_name AS "jobName",
+        a.position_id AS "positionId",
+        a.add_detail AS "addDetail",
+        a.add_longitude AS "addLongitude",
+        a.add_latitude AS "addLatitude",
+        a.work_experience AS "workExperience",
+        a.education AS "education",
+        a.PAY_FROM as payFrom,
+        a.PAY_TO as payTo,
+        puvView.PAGE_VIEW as pageView,
+        a.update_date AS "updateDate"
+        <include refid="userColumJoin">
+        </include>
+        <include refid="areaColumJoin">
+        </include>
+        FROM mde_job_advertised a
+        <include refid="userLeftJoin"/>
+        <include refid="arealeftJoin">
+        </include>
+        left join MDE_VIEW_JOB_PUV_ALL puvView
+        on puvView.JOB_ID = a.JOB_ID
+        <where>
+            a.del_flag = 0 and a.job_id != #{jobId} and a.job_status =0
+            and a.position_id = (select position_id from mde_job_advertised where job_id=#{jobId})
+            AND a.job_id >=
+            ((SELECT MAX(job_id) FROM mde_job_advertised) - (SELECT MIN(job_id) FROM mde_job_advertised)) * RAND() +
+            ( SELECT MIN(job_id) FROM mde_job_advertised )
+        </where>
+        order by a.RECOMMEND_FLAG desc,a.update_date desc
+        limit #{limitSize}
+    </select>
+    <!-- 酒店的其他职位 -->
+    <select id="gethotelOtherPositionList"
+            resultMap="MdeJobAdvertised">
+        SELECT
+        <include refid="mdeJobAdvertisedColumns"/>
+        <include refid="userColumJoin">
+        </include>
+        <include refid="areaColumJoin">
+        </include>
+        FROM mde_job_advertised a
+        <include refid="userLeftJoin"/>
+        <include refid="arealeftJoin">
+        </include>
+        <where>
+            a.del_flag = 0 and job_id != #{jobId} and a.job_status =0
+            and a.publisher = #{publisher}
+        </where>
+        order by a.RECOMMEND_FLAG desc,a.update_date desc
+        limit #{limitSize}
+    </select>
+    <!-- 职位搜索  (未登录) -->
+    <select id="searchJobNotLogin" resultMap="MdeJobAdvertised">
+        SELECT
+        j.JOB_ID,
+        j.PUBLISHER,
+        u.`NAME` AS publisher_name,
+        u.foreign_name,
+        u.identity_flag,
+        j.JOB_NAME,
+        j.CREATE_DATE
+        FROM
+        mde_job_advertised j
+        INNER JOIN mde_user u ON u.USER_CODE = j.PUBLISHER
+        INNER JOIN sys_area a ON j.ADD_PROVINCE = a.code
+        INNER JOIN sys_area b ON j.ADD_CITY = b.code
+        LEFT JOIN sys_area c ON j.ADD_AREA = c.code
+        WHERE
+        u.IDENTITY_FLAG = 1
+        AND u.DEL_FLAG = 0
+        AND j.JOB_STATUS = 0
+        AND j.DEL_FLAG = 0
+        <if test="keyWord != null and keyWord.size() >0">
+            AND
+            <foreach collection="keyWord" item="key" open="(" close=")" separator="or">
+                CONCAT(a.`name`, b.`name`, c.`name`,j.ADD_DETAIL) LIKE CONCAT('%', #{key}, '%')
+                OR u.`NAME` LIKE CONCAT('%', #{key}, '%')
+                OR j.JOB_NAME LIKE CONCAT('%', #{key}, '%')
+            </foreach>
+        </if>
+        GROUP BY j.PUBLISHER
+        order by j.RECOMMEND_FLAG desc,j.update_date desc
+        limit 10
+    </select>
+
+    <!-- 职位搜索 -->
+    <select id="searchJob" resultType="com.wechat.model.dto.JobAdvertisedListDto">
+        SELECT
+        <include refid="mdeJobAdvertisedColumns"/>
+        <include refid="userColumJoin">
+        </include>
+        <include refid="areaColumJoin">
+        </include>
+        ,pos.POSITION_GRADE as positionGrade
+        ,puvView.PAGE_VIEW as pageView
+        FROM mde_job_advertised a
+        <include refid="userLeftJoin"/><!-- mde_user u -->
+        <include refid="arealeftJoin"/><!-- sys_area s1,s2,s3 -->
+        inner join MDE_POSITION pos
+        on pos.POSITION_ID = a.POSITION_ID
+        left join MDE_VIEW_JOB_PUV_ALL puvView
+        on puvView.JOB_ID = a.JOB_ID
+        <where>
+            a.del_flag = 0
+            and a.job_status = 0
+            AND u.del_flag = 0
+            AND u.IDENTITY_FLAG = 1
+            <if test="keyWord !=null and keyWord.size() != 0">
+                and
+                (
+                (
+                <!-- 职位名搜索 -->
+                <foreach item="key" collection="keyWord" open="(" separator=" or " close=")">
+                    a.JOB_NAME like concat('%',#{key},'%')
+                </foreach>
+                )
+                <!-- 加入 按照酒店名称搜索 -->
+                or (
+                <foreach item="key" collection="keyWord" open="(" separator=" or " close=")">
+                    u.name like concat("%", #{key},"%")
+                </foreach>
+                )
+                )
+            </if>
+            <if test="position != null and position.size() != 0">
+                and a.position_id in
+                <foreach item="ideach" collection="position" open="(" separator="," close=")">
+                    #{ideach}
+                </foreach>
+            </if>
+            <if test="prepareFlag !=null and prepareFlag != ''">
+                and u.PREPARE_FLAG = #{prepareFlag}
+            </if>
+            <if test="fromDate !=null and fromDate != ''">
+                and date_format( a.update_date, '%Y-%m-%d' ) >= #{fromDate}
+            </if>
+            <choose>
+                <when test="addArea != null">
+                    and a.add_area = #{addArea}
+                </when>
+                <when test="addCity != null">
+                    and a.add_city = #{addCity}
+                </when>
+                <when test="addProvince != null">
+                    and a.add_province = #{addProvince}
+                </when>
+            </choose>
+        </where>
+        <choose>
+            <when test="orderColumn != null and orderColumn != ''">
+                <!-- 拼接SQL 所以使用${XX} 不是 #{XX} -->
+                ORDER BY ${orderColumn}
+            </when>
+            <otherwise>
+                ORDER BY a.RECOMMEND_FLAG desc,a.update_date desc
+            </otherwise>
+        </choose>
+    </select>
+
+    <select id="searchJobCount" resultType="java.lang.Integer">
+        SELECT
+        count(1)
+        FROM mde_job_advertised a
+        <include refid="userLeftJoin"/><!-- mde_user u -->
+        <include refid="arealeftJoin"/><!-- sys_area s1,s2,s3 -->
+        <where>
+            a.del_flag = 0
+            and a.job_status = 0
+            AND u.del_flag = 0
+            AND u.IDENTITY_FLAG = 1
+            <if test="keyWord !=null and keyWord.size() != 0">
+                and
+                (
+                (
+                <!-- 职位名搜索 -->
+                <foreach item="key" collection="keyWord" open="(" separator=" or " close=")">
+                    a.JOB_NAME like concat('%',#{key},'%')
+                </foreach>
+                )
+                <!-- 加入 按照酒店名称搜索 -->
+                or (
+                <foreach item="key" collection="keyWord" open="(" separator=" or " close=")">
+                    u.name like concat("%", #{key},"%")
+                </foreach>
+                )
+                )
+            </if>
+            <if test="position != null and position.size() != 0">
+                and a.position_id in
+                <foreach item="ideach" collection="position" open="(" separator="," close=")">
+                    #{ideach}
+                </foreach>
+            </if>
+            <if test="prepareFlag !=null and prepareFlag != ''">
+                and u.PREPARE_FLAG = #{prepareFlag}
+            </if>
+            <if test="fromDate !=null and fromDate != ''">
+                and date_format( a.update_date, '%Y-%m-%d' ) >= #{fromDate}
+            </if>
+            <choose>
+                <when test="addArea != null">
+                    and a.add_area = #{addArea}
+                </when>
+                <when test="addCity != null">
+                    and a.add_city = #{addCity}
+                </when>
+                <when test="addProvince != null">
+                    and a.add_province = #{addProvince}
+                </when>
+            </choose>
+        </where>
+    </select>
+
+
+    <!-- 职位搜索 点击量-->
+    <select id="searchJobPv" resultType="com.wechat.model.dto.JobAdvertisedListDto">
+        SELECT
+        <include refid="mdeJobAdvertisedColumns"/>
+        <include refid="userColumJoin">
+        </include>
+        <include refid="areaColumJoin">
+        </include>
+        ,pos.POSITION_GRADE as positionGrade
+        FROM mde_job_advertised a
+        <include refid="userLeftJoin"/><!-- mde_user u -->
+        <include refid="arealeftJoin"/><!-- sys_area s1,s2,s3 -->
+        inner join MDE_POSITION pos
+        on pos.POSITION_ID = a.POSITION_ID
+        <where>
+            a.del_flag = 0
+            and a.job_status = 0
+            AND u.del_flag = 0
+            AND u.IDENTITY_FLAG = 1
+            <if test="keyWord !=null and keyWord.size() != 0">
+                and
+                (
+                (
+                <!-- 职位名搜索 -->
+                <foreach item="key" collection="keyWord" open="(" separator=" or " close=")">
+                    a.JOB_NAME like concat('%',#{key},'%')
+                </foreach>
+                )
+                <!-- 加入 按照酒店名称搜索 -->
+                or (
+                <foreach item="key" collection="keyWord" open="(" separator=" or " close=")">
+                    u.name like concat("%", #{key},"%")
+                </foreach>
+                )
+                )
+            </if>
+            <if test="position != null and position.size() != 0">
+                and a.position_id in
+                <foreach item="ideach" collection="position" open="(" separator="," close=")">
+                    #{ideach}
+                </foreach>
+            </if>
+            <if test="prepareFlag !=null and prepareFlag != ''">
+                and u.PREPARE_FLAG = #{prepareFlag}
+            </if>
+            <if test="fromDate !=null and fromDate != ''">
+                and date_format( a.update_date, '%Y-%m-%d' ) >= #{fromDate}
+            </if>
+            <choose>
+                <when test="addArea != null">
+                    and a.add_area = #{addArea}
+                </when>
+                <when test="addCity != null">
+                    and a.add_city = #{addCity}
+                </when>
+                <when test="addProvince != null">
+                    and a.add_province = #{addProvince}
+                </when>
+            </choose>
+        </where>
+        <choose>
+            <when test="orderColumn != null and orderColumn != ''">
+                <!-- 拼接SQL 所以使用${XX} 不是 #{XX} -->
+                ORDER BY ${orderColumn}
+            </when>
+            <otherwise>
+                ORDER BY a.RECOMMEND_FLAG desc,a.update_date desc
+            </otherwise>
+        </choose>
+    </select>
+
+    <!-- 查看该企业是否发布某个职位 -->
+    <select id="findByPublisherAndJobId" parameterType="com.wechat.model.dbEntity.MdeJobInvitationRel"
+            resultMap="MdeJobAdvertised">
+        select
+        <include refid="mdeJobAdvertisedColumns">
+        </include>
+        from mde_job_advertised a
+        where a.PUBLISHER =#{publisher}
+        and a.job_Id = #{jobId}
+        AND a.JOB_STATUS =0
+        AND a.DEL_FLAG = 0
+    </select>
+    <select id="getCollectionJobList" resultType="com.wechat.model.responseDto.JobAdvertisedRes">
+        SELECT
+        a.job_id as jobId,
+        a.job_name as jobName,
+        a.PAY_FROM as payFrom,
+        a.PAY_TO as payTo,
+        <choose>
+            <when test="lang == 'en'.toString()">
+                s1.name_en as addProvince,
+                s.name_en as addCity,
+            </when>
+            <otherwise>
+                s1.name as addProvince,
+                s.name as addCity,
+            </otherwise>
+        </choose>
+        u.NAME as name,
+        u.foreign_name as foreignName
+        FROM
+        mde_job_advertised a
+        LEFT JOIN mde_user u ON a.publisher = u.user_code AND u.del_flag = 0
+        LEFT JOIN sys_area s ON a.add_city = s.code AND s.del_flag = 0
+        LEFT JOIN sys_area s1 ON a.add_province = s1.code AND s1.del_flag = 0
+        WHERE a.del_flag=0 and a.job_id in
+        <foreach collection="jobListStr" index="index" item="item" open="(" separator="," close=")">
+            #{item}
+        </foreach>
+    </select>
+
+    <!-- 获取正在发布中的职位 -->
+    <select id="getPublishingJobsByUserCode" resultType="com.wechat.model.responseDto.JobAdvertisedNologinResp">
+        SELECT
+        ad.JOB_NAME AS jobName,
+        ad.JOB_ID As jobId,
+        ad.RECOMMEND_FLAG as recommendFlag,
+        ad.PAY_FROM as payFrom,
+        ad.PAY_TO as payTo,
+        <choose>
+            <when test="lang=='en'.toString()">
+                s.en as workExperience,
+                edu.en AS education,
+                s1.name_en as addProvinceName,s2.name_en as addCityName,
+            </when>
+            <otherwise>
+                s.label AS workExperience,
+                edu.label AS education,
+                s1.name as addProvinceName,s2.name as addCityName,
+            </otherwise>
+        </choose>
+        ad.UPDATE_DATE AS publishDate,
+        ad.CREATE_DATE AS createDate,
+        ad.JOB_STATUS AS jobStatus
+        FROM
+        mde_job_advertised ad,
+        sys_dict s,
+        sys_dict edu,
+        sys_area s1,
+        sys_area s2
+        WHERE
+        s.`value` = ad.WORK_EXPERIENCE
+        AND ad.DEL_FLAG = 0
+        AND ad.PUBLISHER = #{userCode}
+        AND ad.JOB_STATUS = 0
+        AND s.type = 'job_year'
+        AND edu.`value` = ad.education
+        AND edu.type = 'education'
+        AND ad.ADD_PROVINCE = s1.code
+        AND ad.ADD_CITY = s2.code
+        order by ad.RECOMMEND_FLAG desc,ad.update_date desc
+    </select>
+
+    <!-- 获取正在发布中的职位 非登陆-->
+    <select id="getPublishingJobsNologin" resultType="com.wechat.model.responseDto.JobAdvertisedNologinResp">
+        SELECT
+        ad.JOB_NAME AS jobName,
+        ad.JOB_ID As jobId,
+        ad.RECOMMEND_FLAG as recommendFlag,
+        ad.PAY_FROM as payFrom,
+        ad.PAY_TO as payTo,
+        <choose>
+            <when test="lang=='en'.toString()">
+                s.en as workExperience,
+                edu.en AS education,
+                s1.name_en as addProvinceName,s2.name_en as addCityName,
+            </when>
+            <otherwise>
+                s.label AS workExperience,
+                edu.label AS education,
+                s1.name as addProvinceName,s2.name as addCityName,
+            </otherwise>
+        </choose>
+        ad.UPDATE_DATE AS publishDate,
+        ad.CREATE_DATE as createDate,
+        ad.JOB_STATUS AS jobStatus
+        FROM
+        mde_job_advertised ad,
+        sys_dict s,
+        sys_dict edu,
+        sys_area s1,
+        sys_area s2
+        WHERE
+        s.`value` = ad.WORK_EXPERIENCE
+        AND ad.DEL_FLAG = 0
+        AND ad.PUBLISHER = #{userCode}
+        AND ad.JOB_STATUS = 0
+        AND s.type = 'job_year'
+        AND edu.`value` = ad.education
+        AND edu.type = 'education'
+        AND ad.ADD_PROVINCE = s1.code
+        AND ad.ADD_CITY = s2.code
+        order by ad.RECOMMEND_FLAG desc,ad.update_date desc
+    </select>
+
+    <select id="alreadyPublishNotVipCount" resultType="java.lang.Integer">
+        SELECT
+        count(1)
+        FROM
+        mde_job_advertised ad
+        WHERE
+        ad.DEL_FLAG = 0
+        AND ad.PUBLISHER = #{userCode}
+        <if test="jobStatus !=null and jobStatus != ''">
+            AND ad.JOB_STATUS = #{jobStatus}
+        </if>
+    </select>
 
-	<!-- 相似职位 -->
-	<select id="getSimilarJobs" resultType="com.wechat.model.dto.JobAdvertisedListDto">
-		SELECT
-			a.job_id AS "jobId",
-			a.job_name AS "jobName",
-			a.position_id AS "positionId",
-			a.add_detail AS "addDetail",
-			a.add_longitude AS "addLongitude",
-			a.add_latitude AS "addLatitude",
-			a.work_experience AS "workExperience",
-			a.education AS "education",
-			a.PAY_FROM  as payFrom,
-			a.PAY_TO    as payTo,
-			puvView.PAGE_VIEW as pageView,
-			a.update_date AS "updateDate"
-		<include refid="userColumJoin"></include>
-		<include refid="areaColumJoin"></include>
-		FROM mde_job_advertised a
-		<include refid="userLeftJoin" />
-		<include refid="arealeftJoin"></include>
-		left join MDE_VIEW_JOB_PUV_ALL puvView
-			on puvView.JOB_ID = a.JOB_ID
-		<where>
-			a.del_flag = 0 and a.job_id != #{jobId} and a.job_status =0
-			and a.position_id = (select position_id from mde_job_advertised where job_id=#{jobId})
-			AND a.job_id >= 
-			((SELECT MAX(job_id) FROM mde_job_advertised) - (SELECT MIN(job_id) FROM mde_job_advertised)) * RAND() + 
-			( SELECT MIN(job_id) FROM mde_job_advertised )
-		</where>
-		order by a.RECOMMEND_FLAG desc,a.update_date desc
-		limit #{limitSize}
-	</select>
-	<!-- 酒店的其他职位 -->
-	<select id="gethotelOtherPositionList"
-		resultMap="MdeJobAdvertised">
-		SELECT
-		<include refid="mdeJobAdvertisedColumns" />
-		<include refid="userColumJoin"></include>
-		<include refid="areaColumJoin"></include>
-		FROM mde_job_advertised a
-		<include refid="userLeftJoin" />
-		<include refid="arealeftJoin"></include>
-		<where>
-			a.del_flag = 0 and job_id != #{jobId} and a.job_status =0
-			and a.publisher = #{publisher}
-		</where>
-		order by a.RECOMMEND_FLAG desc,a.update_date desc
-		limit #{limitSize}
-	</select>
-	<!-- 职位搜索  (未登录) -->
-	<select id="searchJobNotLogin" resultMap="MdeJobAdvertised">
-			SELECT
-				j.JOB_ID,
-				j.PUBLISHER,
-				u.`NAME` AS publisher_name,
-				u.foreign_name,
-				u.identity_flag,
-				j.JOB_NAME,
-				j.CREATE_DATE
-			FROM
-				mde_job_advertised j
-			INNER JOIN mde_user u ON u.USER_CODE = j.PUBLISHER
-			INNER JOIN sys_area a ON j.ADD_PROVINCE = a.code
-			INNER JOIN sys_area b ON j.ADD_CITY = b.code
-			LEFT JOIN sys_area c ON j.ADD_AREA = c.code
-			WHERE
-				u.IDENTITY_FLAG = 1
-			AND u.DEL_FLAG = 0
-			AND j.JOB_STATUS = 0
-			AND j.DEL_FLAG = 0
-			<if test="keyWord != null and keyWord.size() >0">
-			AND 
-			<foreach collection="keyWord"  item="key" open="(" close=")" separator="or">
-			 	CONCAT(a.`name`, b.`name`, c.`name`,j.ADD_DETAIL) LIKE CONCAT('%', #{key}, '%')
-			 	OR u.`NAME` LIKE CONCAT('%', #{key}, '%')
-				OR j.JOB_NAME LIKE CONCAT('%', #{key}, '%')
-			 </foreach>
-			</if>
-			GROUP BY j.PUBLISHER
-			order by j.RECOMMEND_FLAG desc,j.update_date desc
-				limit 10
-	</select>
 
-	<!-- 职位搜索 -->
-	<select id="searchJob" resultType="com.wechat.model.dto.JobAdvertisedListDto">
-		SELECT
-		<include refid="mdeJobAdvertisedColumns" />
-		<include refid="userColumJoin"></include>
-		<include refid="areaColumJoin"></include>
-		,pos.POSITION_GRADE as positionGrade
-		,puvView.PAGE_VIEW as pageView
-		FROM mde_job_advertised a
-		<include refid="userLeftJoin" /><!-- mde_user u -->
-		<include refid="arealeftJoin" /><!-- sys_area s1,s2,s3 -->
-		inner join MDE_POSITION pos
-			on pos.POSITION_ID = a.POSITION_ID
-		left join MDE_VIEW_JOB_PUV_ALL puvView
-			on puvView.JOB_ID = a.JOB_ID
-		<where>
-				a.del_flag = 0 
-			and a.job_status = 0
-			AND u.del_flag = 0 
-			AND u.IDENTITY_FLAG = 1
-			<if test="keyWord !=null and keyWord.size() != 0">
-				and 
-				( 
-					(
-						<!-- 职位名搜索 -->
-						<foreach item="key" collection="keyWord" open="(" separator=" or " close=")">
-							 a.JOB_NAME like concat('%',#{key},'%')
-						</foreach> 
-					)
-					<!-- 加入 按照酒店名称搜索 -->
-					or (
-						<foreach item="key" collection="keyWord" open="(" separator=" or " close=")">
-							u.name like concat("%", #{key},"%")
-						</foreach>
-					)
-				)
-			</if>
-			<if test="position != null and position.size() != 0">
-				and a.position_id in
-				<foreach item="ideach" collection="position" open="(" separator="," close=")">
-					#{ideach}
-				</foreach>
-			</if>
-			<if test="prepareFlag !=null and prepareFlag != ''">
-				and u.PREPARE_FLAG = #{prepareFlag}
-			</if>
-			<if test="fromDate !=null and fromDate != ''">
-				and date_format( a.update_date, '%Y-%m-%d' ) >= #{fromDate} 
-			</if>
-			<choose>
-				<when test="addArea != null">
-					and a.add_area = #{addArea}
-				</when>
-				<when test="addCity != null">
-					and a.add_city = #{addCity}
-				</when>
-				<when test="addProvince != null">
-					and a.add_province = #{addProvince}
-				</when>
-			</choose>
-		</where>
-		<choose>
-			<when test="orderColumn != null and orderColumn != ''">
-				<!-- 拼接SQL 所以使用${XX} 不是 #{XX} -->
-				ORDER BY ${orderColumn} 
-			</when>
-			<otherwise>
-				ORDER BY a.RECOMMEND_FLAG desc,a.update_date desc
-			</otherwise>
-		</choose>
-	</select>
+    <select id="alreadyPublishCount" resultType="java.lang.Integer">
+        SELECT
+        count(1)
+        FROM
+        mde_job_advertised ad
+        <include refid="mdeJobAdvertisedJoinCommon"/>
+        <if test="jobStatus !=null and jobStatus != ''">
+            AND ad.JOB_STATUS = #{jobStatus}
+        </if>
+        <if test="positionIdList != null">
+            AND ad.POSITION_ID in
+            <foreach collection="positionIdList" item="positionId" separator="," open="(" close=")">
+                #{positionId}
+            </foreach>
+        </if>
+        <if test="newDelivery">
+            AND rel2.newFlag = 0
+        </if>
+        <if test="dayStart !=null">
+            <![CDATA[
+			AND ad.CREATE_DATE >= #{dayStart}
+			]]>
+        </if>
+        <if test="dayEnd !=null">
+            <![CDATA[
+			AND ad.CREATE_DATE <= #{dayEnd}
+			]]>
+        </if>
+    </select>
 
-	<select id="searchJobCount" resultType="java.lang.Integer">
-		SELECT
-		count(1)
-		FROM mde_job_advertised a
-		<include refid="userLeftJoin" /><!-- mde_user u -->
-		<include refid="arealeftJoin" /><!-- sys_area s1,s2,s3 -->
-		<where>
-			a.del_flag = 0 
-			and a.job_status = 0
-			AND u.del_flag = 0 
-			AND u.IDENTITY_FLAG = 1
-			<if test="keyWord !=null and keyWord.size() != 0">
-				and 
-				( 
-					(
-						<!-- 职位名搜索 -->
-						<foreach item="key" collection="keyWord" open="(" separator=" or " close=")">
-							 a.JOB_NAME like concat('%',#{key},'%')
-						</foreach> 
-					)
-					<!-- 加入 按照酒店名称搜索 -->
-					or (
-						<foreach item="key" collection="keyWord" open="(" separator=" or " close=")">
-							u.name like concat("%", #{key},"%")
-						</foreach>
-					)
-				)
-			</if>
-			<if test="position != null and position.size() != 0">
-				and a.position_id in
-				<foreach item="ideach" collection="position" open="(" separator="," close=")">
-					#{ideach}
-				</foreach>
-			</if>
-			<if test="prepareFlag !=null and prepareFlag != ''">
-				and u.PREPARE_FLAG = #{prepareFlag}
-			</if>
-			<if test="fromDate !=null and fromDate != ''">
-				and date_format( a.update_date, '%Y-%m-%d' ) >= #{fromDate} 
-			</if>
-			<choose>
-				<when test="addArea != null">
-					and a.add_area = #{addArea}
-				</when>
-				<when test="addCity != null">
-					and a.add_city = #{addCity}
-				</when>
-				<when test="addProvince != null">
-					and a.add_province = #{addProvince}
-				</when>
-			</choose>
-		</where>
-	</select>
-	
-	
-	<!-- 职位搜索 点击量-->
-	<select id="searchJobPv" resultType="com.wechat.model.dto.JobAdvertisedListDto">
-		SELECT
-		<include refid="mdeJobAdvertisedColumns" />
-		<include refid="userColumJoin"></include>
-		<include refid="areaColumJoin"></include>
-		,pos.POSITION_GRADE as positionGrade
-		FROM mde_job_advertised a
-		<include refid="userLeftJoin" /><!-- mde_user u -->
-		<include refid="arealeftJoin" /><!-- sys_area s1,s2,s3 -->
-		inner join MDE_POSITION pos
-			on pos.POSITION_ID = a.POSITION_ID
-		<where>
-				a.del_flag = 0 
-			and a.job_status = 0
-			AND u.del_flag = 0 
-			AND u.IDENTITY_FLAG = 1
-			<if test="keyWord !=null and keyWord.size() != 0">
-				and 
-				( 
-					(
-						<!-- 职位名搜索 -->
-						<foreach item="key" collection="keyWord" open="(" separator=" or " close=")">
-							 a.JOB_NAME like concat('%',#{key},'%')
-						</foreach> 
-					)
-					<!-- 加入 按照酒店名称搜索 -->
-					or (
-						<foreach item="key" collection="keyWord" open="(" separator=" or " close=")">
-							u.name like concat("%", #{key},"%")
-						</foreach>
-					)
-				)
-			</if>
-			<if test="position != null and position.size() != 0">
-				and a.position_id in
-				<foreach item="ideach" collection="position" open="(" separator="," close=")">
-					#{ideach}
-				</foreach>
-			</if>
-			<if test="prepareFlag !=null and prepareFlag != ''">
-				and u.PREPARE_FLAG = #{prepareFlag}
-			</if>
-			<if test="fromDate !=null and fromDate != ''">
-				and date_format( a.update_date, '%Y-%m-%d' ) >= #{fromDate} 
-			</if>
-			<choose>
-				<when test="addArea != null">
-					and a.add_area = #{addArea}
-				</when>
-				<when test="addCity != null">
-					and a.add_city = #{addCity}
-				</when>
-				<when test="addProvince != null">
-					and a.add_province = #{addProvince}
-				</when>
-			</choose>
-		</where>
-		<choose>
-			<when test="orderColumn != null and orderColumn != ''">
-				<!-- 拼接SQL 所以使用${XX} 不是 #{XX} -->
-				ORDER BY ${orderColumn} 
-			</when>
-			<otherwise>
-				ORDER BY a.RECOMMEND_FLAG desc,a.update_date desc
-			</otherwise>
-		</choose>
-	</select>
-	
-	<!-- 查看该企业是否发布某个职位 -->
-	<select id="findByPublisherAndJobId" parameterType="com.wechat.model.dbEntity.MdeJobInvitationRel" resultMap="MdeJobAdvertised">
-		select 
-		<include refid="mdeJobAdvertisedColumns"></include>
-		from mde_job_advertised a
-		where a.PUBLISHER =#{publisher}
-		and a.job_Id = #{jobId}
-		AND a.JOB_STATUS =0 
-		AND a.DEL_FLAG = 0
-	</select>
-	<select id="getCollectionJobList" resultType="com.wechat.model.responseDto.JobAdvertisedRes">
-		SELECT
-			a.job_id as jobId,
-			a.job_name as jobName,
-			a.PAY_FROM  as payFrom,
-			a.PAY_TO    as payTo,
-			<choose>
-				<when test="lang == 'en'.toString()">
-					s1.name_en as addProvince,
-					s.name_en as addCity,
-				</when>
-				<otherwise>
-					s1.name as addProvince,
-					s.name as addCity, 
-				</otherwise>
-			</choose>
-			u.NAME as name,
-			u.foreign_name as foreignName
-		FROM
-			mde_job_advertised a
-			LEFT JOIN mde_user u ON a.publisher = u.user_code AND u.del_flag = 0
-			LEFT JOIN sys_area s ON a.add_city = s.code AND s.del_flag = 0
-			LEFT JOIN sys_area s1 ON a.add_province = s1.code AND s1.del_flag = 0 
-		WHERE a.del_flag=0 and a.job_id in
-		<foreach collection="jobListStr" index="index" item="item" open="(" separator="," close=")">
-			#{item}
-		</foreach>
-	</select>
-	
-	<!-- 获取正在发布中的职位 -->
-	<select id = "getPublishingJobsByUserCode" resultType= "com.wechat.model.responseDto.JobAdvertisedNologinResp">
-		SELECT
-			ad.JOB_NAME AS jobName,
-			ad.JOB_ID As jobId,
-			ad.RECOMMEND_FLAG as recommendFlag,
-			ad.PAY_FROM  as payFrom,
-			ad.PAY_TO    as payTo,
-			<choose>
-				<when test="lang=='en'.toString()">
-					s.en as workExperience,
-					edu.en AS education,
-					s1.name_en as addProvinceName,s2.name_en as addCityName,
-				</when>
-				<otherwise>
-					s.label AS workExperience,
-					edu.label AS education,
-					s1.name as addProvinceName,s2.name as addCityName,
-				</otherwise>
-			</choose>
-			ad.UPDATE_DATE AS publishDate,
-			ad.CREATE_DATE AS createDate,
-			ad.JOB_STATUS AS jobStatus
-		FROM
-			mde_job_advertised ad,
-			sys_dict s,
-			sys_dict edu,
-			sys_area s1,
-		    sys_area s2 
-		WHERE
-			 s.`value` = ad.WORK_EXPERIENCE
-			AND ad.DEL_FLAG = 0
-			AND ad.PUBLISHER = #{userCode}
-			AND ad.JOB_STATUS = 0
-			AND s.type = 'job_year'
-			AND edu.`value` = ad.education
-			AND edu.type = 'education'
-			AND ad.ADD_PROVINCE = s1.code
-			AND ad.ADD_CITY = s2.code
-		order by ad.RECOMMEND_FLAG desc,ad.update_date desc
-	</select>
-	
-	<!-- 获取正在发布中的职位 非登陆-->
-	<select id = "getPublishingJobsNologin" resultType= "com.wechat.model.responseDto.JobAdvertisedNologinResp">
-		SELECT
-			ad.JOB_NAME AS jobName,
-			ad.JOB_ID As jobId,
-			ad.RECOMMEND_FLAG as recommendFlag,
-			ad.PAY_FROM  as payFrom,
-			ad.PAY_TO    as payTo,
-			<choose>
-				<when test="lang=='en'.toString()">
-					s.en as workExperience,
-					edu.en AS education,
-					s1.name_en as addProvinceName,s2.name_en as addCityName,
-				</when>
-				<otherwise>
-					s.label AS workExperience,
-					edu.label AS education,
-					s1.name as addProvinceName,s2.name as addCityName,
-				</otherwise>
-			</choose>
-			ad.UPDATE_DATE AS publishDate,
-			ad.CREATE_DATE as createDate,
-			ad.JOB_STATUS AS jobStatus
-		FROM
-			mde_job_advertised ad,
-			sys_dict s,
-			sys_dict edu,
-			sys_area s1,
-		    sys_area s2 
-		WHERE
-			 s.`value` = ad.WORK_EXPERIENCE
-			AND ad.DEL_FLAG = 0
-			AND ad.PUBLISHER = #{userCode}
-			AND ad.JOB_STATUS = 0
-			AND s.type = 'job_year'
-			AND edu.`value` = ad.education
-			AND edu.type = 'education'
-			AND ad.ADD_PROVINCE = s1.code
-			AND ad.ADD_CITY = s2.code
-		order by ad.RECOMMEND_FLAG desc,ad.update_date desc
-	</select>
-	
-	<select id = "alreadyPublishCount" resultType= "java.lang.Integer">
-		SELECT
-			count(1)
-		FROM
-			mde_job_advertised ad
-		WHERE
-			ad.DEL_FLAG = 0
-			AND ad.PUBLISHER = #{userCode}
-			<if test = "jobStatus !=null and jobStatus != ''">
-				AND ad.JOB_STATUS = #{jobStatus}
-			</if>
-	</select>
-	
-	
-	<!-- 获取正在发布中的职位 -->
-	<select id = "alreadyPublish" resultType= "com.wechat.model.responseDto.JobAdvertisedResp">
-		SELECT
-			ad.JOB_NAME AS jobName,
-			ad.JOB_ID As jobId,
-			ad.RECOMMEND_FLAG as recommendFlag,
-			ad.PAY_FROM  as payFrom,
-			ad.PAY_TO    as payTo,
-			<choose>
-				<when test="lang=='en'.toString()">
-					s.en as workExperience,
-					edu.en AS education,
-					s1.name_en as addProvinceName,s2.name_en as addCityName,
-				</when>
-				<otherwise>
-					s.label AS workExperience,
-					edu.label AS education,
-					s1.name as addProvinceName,s2.name as addCityName,
-				</otherwise>
-			</choose>
-			ad.UPDATE_DATE AS publishDate,
-			ad.JOB_STATUS AS jobStatus,
-			rel2.cvNum AS cvNum,
-			IFNULL( rel2.newFlag, 9 ) AS newFlag 
-		FROM
-			mde_job_advertised ad
-			LEFT JOIN (
-				SELECT
-					rel.POS_ID,
-					COUNT( rel.INTV_ID ) AS cvNum,
-					min( rel.CV_STATUS ) AS newFlag 
-				FROM
-					mde_position_cv_rel rel
-					INNER JOIN mde_user u ON u.USER_CODE = rel.CANDIDATE 
-				WHERE
-					rel.PUBLISHER = #{userCode}
-					AND u.DEL_FLAG = 0 
-				GROUP BY
-					rel.POS_ID 
-				) rel2 ON ad.JOB_ID = rel2.POS_ID
-			LEFT JOIN sys_dict s ON s.`value` = ad.WORK_EXPERIENCE
-			LEFT JOIN sys_dict edu ON edu.`value` = ad.education
-			LEFT JOIN sys_area s1 ON ad.ADD_PROVINCE = s1.CODE 
-			LEFT JOIN sys_area s2 ON ad.ADD_CITY = s2.CODE 	
-		WHERE
-				ad.DEL_FLAG = 0 
-			AND ad.PUBLISHER = #{userCode} 
-			AND s.type = 'job_year' 
-			AND edu.type = 'education' 
-			<if test = "jobStatus !=null and jobStatus != ''">
-				AND ad.JOB_STATUS = #{jobStatus}
-			</if>	
-		order by ad.JOB_STATUS,ad.RECOMMEND_FLAG desc,ad.update_date desc
-	</select>
-	
-	
-	<!-- 推荐职位 分页查询 -->
-	<select id = "getPagingRecommentJobs" resultType= "com.wechat.model.dto.JobAdvertisedListDto">
-		SELECT
-			job.JOB_ID as jobId,
-			job.PUBLISHER as publisher,
-			job.JOB_NAME as jobName,
-			job.ADD_PROVINCE as addProvince,
-			job.ADD_CITY as addCity,
-			job.ADD_AREA as addArea,
-			s1.`name` AS addProvinceName,
-			s2.`name` AS addCityName,
-			s3.`name` AS addAreaName,
-			job.ADD_DETAIL as addDetail,
-			job.work_experience AS workExperience,
-			job.education AS education,
-			job.PAY_FROM  as payFrom,
-			job.PAY_TO    as payTo,
-			job.UPDATE_DATE as updateDate,
-			puber.`NAME` AS publisherName,
-			puber.head_portrait AS headPortrait,
-			puber.foreign_name AS foreignName,
-			puber.PREPARE_FLAG as prepareFlag,
-			puber.VIP_FLAG as vipFlag
-		FROM
-			MDE_JOB_ADVERTISED job
-			INNER JOIN mde_position bp ON job.POSITION_ID = bp.POSITION_ID
-			INNER JOIN (
-				SELECT
-					b.DEPD_ID,
-					b.POSITION_GRADE 
-				FROM
-					mde_work_experience a
-					INNER JOIN mde_position_another_name b ON a.POSITION_TITLE = b.POSITION_NAME 
-				WHERE
-					a.USER_CODE = #{userCode}
-					AND a.SHOW_FLAG = '0' 
-					and a.DEL_FLAG ='0'
-			UNION
-				SELECT
-					b.DEPD_ID,
-					b.POSITION_GRADE 
-				FROM
-					MDE_SUBSCRIBED_POSITIONS a
-					INNER JOIN MDE_POSITION b ON a.POSITION_ID = b.POSITION_ID 
-				WHERE
-					a.USER_CODE = #{userCode}
-					AND a.DEL_FLAG = '0' 
-			) uWork ON bp.DEPD_ID = uWork.DEPD_ID 
+
+    <!-- 获取正在发布中的职位 -->
+    <select id="alreadyPublish" resultType="com.wechat.model.responseDto.JobAdvertisedResp">
+        SELECT
+        <include refid="mdeJobAdvertisedSelectCommon"/>
+        FROM
+        mde_job_advertised ad
+        <include refid="mdeJobAdvertisedJoinCommon"/>
+        <if test="jobStatus !=null and jobStatus != ''">
+            AND ad.JOB_STATUS = #{jobStatus}
+        </if>
+        <if test="positionIdList != null">
+            AND ad.POSITION_ID in
+            <foreach collection="positionIdList" item="positionId" separator="," open="(" close=")">
+                #{positionId}
+            </foreach>
+        </if>
+        <if test="newDelivery">
+            AND rel2.newFlag = 0
+        </if>
+        <if test="dayStart !=null">
+            <![CDATA[
+			AND ad.CREATE_DATE >= #{dayStart}
+			]]>
+        </if>
+        <if test="dayEnd !=null">
+            <![CDATA[
+			AND ad.CREATE_DATE <= #{dayEnd}
+			]]>
+        </if>
+        order by ad.JOB_STATUS,ad.RECOMMEND_FLAG desc,ad.update_date desc
+    </select>
+
+    <!-- 已发职位关键词检索 统计 -->
+    <select id="searchKeyWordCount" resultType="java.lang.Integer">
+        SELECT
+        count(1)
+        FROM
+        mde_job_advertised ad
+        <include refid="mdeJobAdvertisedJoinCommon"/>
+        <if test="keyWord !=null">
+            AND MATCH(ad.JOB_NAME,ad.JOB_DESCRIBE,ad.JOB_REQUIREMENT) AGAINST(#{keyWord} IN BOOLEAN MODE)
+        </if>
+    </select>
+
+    <!-- 已发职位关键词检索 -->
+    <select id="searchKeyWord" resultType="com.wechat.model.responseDto.JobAdvertisedResp">
+        SELECT
+        <include refid="mdeJobAdvertisedSelectCommon"/>
+        FROM
+        mde_job_advertised ad
+        <include refid="mdeJobAdvertisedJoinCommon"/>
+        <if test="keyWord !=null">
+            AND MATCH(ad.JOB_NAME,ad.JOB_DESCRIBE,ad.JOB_REQUIREMENT) AGAINST(#{keyWord} IN BOOLEAN MODE)
+            order by
+            MATCH(ad.JOB_NAME,ad.JOB_DESCRIBE,ad.JOB_REQUIREMENT) AGAINST(#{keyWord} IN BOOLEAN MODE) desc,
+            ad.update_date desc
+        </if>
+    </select>
+
+
+
+    <!-- 推荐职位 分页查询 -->
+    <select id="getPagingRecommentJobs" resultType="com.wechat.model.dto.JobAdvertisedListDto">
+        SELECT job.JOB_ID          as jobId,
+               job.PUBLISHER       as publisher,
+               job.JOB_NAME        as jobName,
+               job.ADD_PROVINCE    as addProvince,
+               job.ADD_CITY        as addCity,
+               job.ADD_AREA        as addArea,
+               s1.`name`           AS addProvinceName,
+               s2.`name`           AS addCityName,
+               s3.`name`           AS addAreaName,
+               job.ADD_DETAIL      as addDetail,
+               job.work_experience AS workExperience,
+               job.education       AS education,
+               job.PAY_FROM        as payFrom,
+               job.PAY_TO          as payTo,
+               job.UPDATE_DATE     as updateDate,
+               puber.`NAME`        AS publisherName,
+               puber.head_portrait AS headPortrait,
+               puber.foreign_name  AS foreignName,
+               puber.PREPARE_FLAG  as prepareFlag,
+               puber.VIP_FLAG      as vipFlag
+        FROM MDE_JOB_ADVERTISED job
+                 INNER JOIN mde_position bp ON job.POSITION_ID = bp.POSITION_ID
+                 INNER JOIN (SELECT b.DEPD_ID,
+                                    b.POSITION_GRADE
+                             FROM mde_work_experience a
+                                      INNER JOIN mde_position_another_name b ON a.POSITION_TITLE = b.POSITION_NAME
+                             WHERE a.USER_CODE = #{userCode}
+                               AND a.SHOW_FLAG = '0'
+                               and a.DEL_FLAG = '0'
+                             UNION
+                             SELECT b.DEPD_ID,
+                                    b.POSITION_GRADE
+                             FROM MDE_SUBSCRIBED_POSITIONS a
+                                      INNER JOIN MDE_POSITION b ON a.POSITION_ID = b.POSITION_ID
+                             WHERE a.USER_CODE = #{userCode}
+                               AND a.DEL_FLAG = '0') uWork ON bp.DEPD_ID = uWork.DEPD_ID
 		<![CDATA[	AND bp.POSITION_GRADE <= uWork.POSITION_GRADE    ]]>
 			INNER JOIN mde_user puber ON job.PUBLISHER = puber.USER_CODE
-			LEFT JOIN sys_area s1 ON job.ADD_PROVINCE = s1.CODE 
-			LEFT JOIN sys_area s2 ON job.ADD_CITY = s2.CODE
-			LEFT JOIN sys_area s3 ON job.ADD_AREA = s3.CODE 
-		WHERE
-			job.JOB_STATUS = '0'
-			and job.DEL_FLAG = '0'
-			and puber.DEL_FLAG = '0'
-			and bp.DEL_FLAG = '0'
-			and job.UPDATE_DATE > #{selDate}
-		ORDER BY
-			job.RECOMMEND_FLAG DESC,
-			puber.VIP_FLAG DESC,
-			job.UPDATE_DATE DESC
-		
-	</select> 
-	
-	<!-- 推荐职位分页查询 计数 -->
-	<select id = "getPagingRecommentJobsCount" resultType= "java.lang.Integer">
-		SELECT
-			count(job.JOB_ID)
-		FROM
-			MDE_JOB_ADVERTISED job
-			INNER JOIN mde_position bp ON job.POSITION_ID = bp.POSITION_ID
-			INNER JOIN (
-				SELECT
-					b.DEPD_ID,
-					b.POSITION_GRADE 
-				FROM
-					mde_work_experience a
-					INNER JOIN mde_position_another_name b ON a.POSITION_TITLE = b.POSITION_NAME 
-				WHERE
-					a.USER_CODE =  #{userCode} 
-					AND a.SHOW_FLAG = '0' 
-					and a.DEL_FLAG ='0'
-			UNION
-				SELECT
-					b.DEPD_ID,
-					b.POSITION_GRADE 
-				FROM
-					MDE_SUBSCRIBED_POSITIONS a
-					INNER JOIN MDE_POSITION b ON a.POSITION_ID = b.POSITION_ID 
-				WHERE
-					a.USER_CODE = #{userCode}
-					AND a.DEL_FLAG = '0' 
-			) uWork ON bp.DEPD_ID = uWork.DEPD_ID 
+                 LEFT JOIN sys_area s1 ON job.ADD_PROVINCE = s1.CODE
+                 LEFT JOIN sys_area s2 ON job.ADD_CITY = s2.CODE
+                 LEFT JOIN sys_area s3 ON job.ADD_AREA = s3.CODE
+        WHERE job.JOB_STATUS = '0'
+          and job.DEL_FLAG = '0'
+          and puber.DEL_FLAG = '0'
+          and bp.DEL_FLAG = '0'
+          and job.UPDATE_DATE > #{selDate}
+        ORDER BY job.RECOMMEND_FLAG DESC,
+                 puber.VIP_FLAG DESC,
+                 job.UPDATE_DATE DESC
+    </select>
+
+    <!-- 推荐职位分页查询 计数 -->
+    <select id="getPagingRecommentJobsCount" resultType="java.lang.Integer">
+        SELECT count(job.JOB_ID)
+        FROM MDE_JOB_ADVERTISED job
+                 INNER JOIN mde_position bp ON job.POSITION_ID = bp.POSITION_ID
+                 INNER JOIN (SELECT b.DEPD_ID,
+                                    b.POSITION_GRADE
+                             FROM mde_work_experience a
+                                      INNER JOIN mde_position_another_name b ON a.POSITION_TITLE = b.POSITION_NAME
+                             WHERE a.USER_CODE = #{userCode}
+                               AND a.SHOW_FLAG = '0'
+                               and a.DEL_FLAG = '0'
+                             UNION
+                             SELECT b.DEPD_ID,
+                                    b.POSITION_GRADE
+                             FROM MDE_SUBSCRIBED_POSITIONS a
+                                      INNER JOIN MDE_POSITION b ON a.POSITION_ID = b.POSITION_ID
+                             WHERE a.USER_CODE = #{userCode}
+                               AND a.DEL_FLAG = '0') uWork ON bp.DEPD_ID = uWork.DEPD_ID
 			<![CDATA[	AND bp.POSITION_GRADE <= uWork.POSITION_GRADE    ]]>
 			INNER JOIN mde_user puber ON job.PUBLISHER = puber.USER_CODE
-		WHERE
-			job.JOB_STATUS = '0'
-			and job.DEL_FLAG = '0'
-			and puber.DEL_FLAG = '0'
-			and bp.DEL_FLAG = '0'
-			and job.UPDATE_DATE > #{selDate}
+        WHERE job.JOB_STATUS = '0'
+          and job.DEL_FLAG = '0'
+          and puber.DEL_FLAG = '0'
+          and bp.DEL_FLAG = '0'
+          and job.UPDATE_DATE > #{selDate}
+    </select>
+
+    <!--获取已经投递过职位的用户code -->
+    <select id="getAlreadyAdvertisedByJobId" resultMap="mdePositionCvRelMap">
+        SELECT j.job_id,
+               j.JOB_NAME,
+               p.CANDIDATE as USER_CODE
+        FROM mde_job_advertised j
+                 LEFT JOIN mde_position_cv_rel p ON j.JOB_ID = p.POS_ID
+            AND p.DEL_FLAG = 0
+        WHERE j.PUBLISHER = #{publisher}
+          AND j.JOB_STATUS = 0
+          AND j.DEL_FLAG = 0
+    </select>
+
+    <!-- 获取 企业正在招聘的职位 -->
+    <select id="getAdvertisedRecruitment" resultMap="mdeJobAdvertisedJoin">
+        SELECT j.JOB_ID,
+               j.JOB_NAME,
+               r.user_code
+        FROM mde_job_advertised j
+                 LEFT JOIN mde_job_invitation_rel r ON j.JOB_ID = r.job_id
+            AND j.PUBLISHER = r.PUBLISHER AND r.DEL_FLAG = 0
+        WHERE j.JOB_STATUS = 0
+          AND j.DEL_FLAG = 0
+          AND j.PUBLISHER = #{publisher}
+        order by j.RECOMMEND_FLAG desc, j.update_date desc
+    </select>
+    <!-- 修改职位状态  关闭职位的同时取消职位首推-->
+    <update id="updateJobAdvertisedStatus">
+        UPDATE mde_job_advertised
+        SET JOB_STATUS = #{jobStatus},
+        <if test="jobStatus == 1">
+            RECOMMEND_FLAG = '0',
+        </if>
+        UPDATE_DATE = now(),
+        VERSION_NO = VERSION_NO + 1
+        WHERE
+        JOB_ID = #{jobId}
+        AND PUBLISHER = #{userCode}
+        AND DEL_FLAG = 0
+    </update>
 
-	</select>
+    <!-- 修改首推状态 -->
+    <update id="updateJobRecommend">
+        UPDATE mde_job_advertised
+        SET RECOMMEND_FLAG = #{recommendFlag},
+            UPDATE_DATE    = now(),
+            VERSION_NO     = VERSION_NO + 1
+        WHERE JOB_ID = #{jobId}
+          AND PUBLISHER = #{userCode}
+          AND DEL_FLAG = 0
+    </update>
 
-	<!--获取已经投递过职位的用户code -->
-	<select id="getAlreadyAdvertisedByJobId" resultMap="mdePositionCvRelMap">
-		SELECT
-			j.job_id,
-			j.JOB_NAME,
-			p.CANDIDATE as USER_CODE
-		FROM
-			mde_job_advertised j
-		LEFT JOIN mde_position_cv_rel p ON j.JOB_ID = p.POS_ID
-		AND p.DEL_FLAG = 0
-		WHERE
-			j.PUBLISHER = #{publisher}
-		AND j.JOB_STATUS = 0
-		AND j.DEL_FLAG = 0
-	</select>
-		
-	<!-- 获取 企业正在招聘的职位 -->
-	<select id="getAdvertisedRecruitment" resultMap="mdeJobAdvertisedJoin">
-		SELECT
-			j.JOB_ID,
-			j.JOB_NAME,
-			r.user_code
-		FROM
-			mde_job_advertised j
-		LEFT JOIN mde_job_invitation_rel r ON j.JOB_ID = r.job_id
-		AND j.PUBLISHER = r.PUBLISHER AND r.DEL_FLAG = 0
-		WHERE
-			j.JOB_STATUS = 0
-		AND j.DEL_FLAG = 0
-		AND j.PUBLISHER = #{publisher}
-		order by j.RECOMMEND_FLAG desc,j.update_date desc
-	</select>
-	<!-- 修改职位状态  关闭职位的同时取消职位首推-->
-	<update id="updateJobAdvertisedStatus">
-		UPDATE mde_job_advertised
-		SET JOB_STATUS = #{jobStatus},
-		<if test = "jobStatus == 1">
-		 RECOMMEND_FLAG = '0',
-		</if>
-		UPDATE_DATE = now(),
-		 VERSION_NO = VERSION_NO + 1
-		WHERE
-			JOB_ID = #{jobId}
-		AND PUBLISHER = #{userCode}
-		AND DEL_FLAG = 0
-	</update>
-	
-	<!-- 修改首推状态 -->
-	<update id="updateJobRecommend">
-		UPDATE mde_job_advertised
-		SET RECOMMEND_FLAG = #{recommendFlag},
-		UPDATE_DATE = now(),
-		 VERSION_NO = VERSION_NO + 1
-		WHERE
-			JOB_ID = #{jobId}
-		AND PUBLISHER = #{userCode}
-		AND DEL_FLAG = 0
-	</update>
-	
-	<!-- 企业简历总数量 -->
-	<select id="getAllUserCvCount" resultType="java.lang.Integer">
-			SELECT
-				count(1)
-			FROM
-				mde_job_advertised j,
-				mde_position_cv_rel r
-			WHERE
-				j.JOB_ID = r.POS_ID
-				AND j.DEL_FLAG=0
-				AND r.DEL_FLAG=0
-				AND j.PUBLISHER = #{userCode}
-	</select>
-	<!-- 按发布者获取新简历数量 -->
-	<select id="getNewCvCountByPublisher" resultType="java.lang.Integer">
-			SELECT
-				count(1)
-			FROM
-				mde_job_advertised j,
-				mde_position_cv_rel r
-			WHERE
-				j.JOB_ID = r.POS_ID
-				AND j.DEL_FLAG=0
-				AND r.DEL_FLAG=0
-				AND r.CV_STATUS =0
-				AND j.PUBLISHER = #{userCode}
-	</select>
-	<!-- 邀请面试数量 -->
-	<select id="inviteAuditionCount" resultType="java.lang.Integer">
-			SELECT
-				count(1)
-			FROM
-				mde_job_advertised j,
-				mde_position_cv_rel r
-			WHERE
-				j.JOB_ID = r.POS_ID
-				AND j.DEL_FLAG=0
-				AND r.DEL_FLAG=0
-				AND r.CV_STATUS =3
-				AND j.PUBLISHER = #{userCode}
-	</select>
-	<!-- 录用简历数量 -->
-	<select id="matriculateUserCvCount" resultType="java.lang.Integer">
-			SELECT
-				count(1)
-			FROM
-				mde_job_advertised j,
-				mde_position_cv_rel r
-			WHERE
-				j.JOB_ID = r.POS_ID
-				AND j.DEL_FLAG=0
-				AND r.DEL_FLAG=0
-				AND r.CV_STATUS =4
-				AND j.PUBLISHER = #{userCode}
-	</select>
-	<!-- 淘汰数量 -->
-	<select id="eliminateUserCvCount" resultType="java.lang.Integer">
-			SELECT
-				count(1)
-			FROM
-				mde_job_advertised j,
-				mde_position_cv_rel r
-			WHERE
-				j.JOB_ID = r.POS_ID
-				AND j.DEL_FLAG=0
-				AND r.DEL_FLAG=0
-				AND r.CV_STATUS =5
-				AND j.PUBLISHER = #{userCode}
-	</select>
-	<!-- 随机抽取优选职位  大于50  (未登录)  -->
-	<select id="getNotLoginRecommentJobsRandJoin" resultMap="MdeJobAdvertised">
-				SELECT 
-						t1.JOB_ID,
-						t1.PUBLISHER,
-						t1.JOB_NAME,
-						t1.JOB_DESCRIBE,
-						t1.CREATE_DATE,
-						t1.`NAME` AS publisher_name from (
-					SELECT
-						a.JOB_ID,
-						a.PUBLISHER,
-						a.JOB_NAME,
-						a.JOB_DESCRIBE,
-						a.CREATE_DATE,
-						a.UPDATE_DATE,
-						u.`NAME`
-					FROM
-						mde_job_advertised a,
-						mde_user u
-					WHERE
-						u.USER_CODE = a.PUBLISHER
-					AND u.DEL_FLAG = 0
-					AND u.IDENTITY_FLAG = 1
-					AND u.VIP_FLAG = 1
-					AND a.DEL_FLAG = 0
-					AND a.JOB_STATUS = 0
-					GROUP BY a.PUBLISHER ) as t1
-		JOIN (SELECT ROUND(RAND() * (
-		(SELECT MAX(JOB_ID) FROM mde_job_advertised)-(SELECT MIN(JOB_ID) FROM mde_job_advertised))+(SELECT MIN(JOB_ID) FROM mde_job_advertised)) AS JOB_ID) AS t2
-		WHERE t1.JOB_ID >= t2.JOB_ID 
-		ORDER BY t1.UPDATE_DATE desc
-		LIMIT #{limitSize}
-	</select>
-	
-	<!-- 随机抽取优选职位  小于50  (未登录)  -->
-	 <select id="getNotLoginRecommentJobsRand" resultMap="MdeJobAdvertised">
-			SELECT
-				a.JOB_ID,
-				a.PUBLISHER,
-				a.JOB_NAME,
-				a.JOB_DESCRIBE,
-				a.CREATE_DATE,
-				u.`NAME`AS publisher_name
-			FROM
-				mde_job_advertised a,
-				mde_user u
-			WHERE
-				u.USER_CODE = a.PUBLISHER
-			AND u.DEL_FLAG = 0
-			AND u.IDENTITY_FLAG = 1
-			AND u.VIP_FLAG = 1
-			AND a.DEL_FLAG = 0
-			AND a.JOB_STATUS = 0
-			GROUP BY a.PUBLISHER
-			ORDER BY RAND()
-			LIMIT #{limitSize}
-	 </select>
-	
-	<!--优选人才数量  -->
-	<select id="getNotLoginRecommentJobsCount" resultType = "java.lang.Integer">
-		SELECT
-			count(1)
-		FROM
-			mde_job_advertised a,
-			mde_user u
-		WHERE
-			u.USER_CODE = a.PUBLISHER
-		AND u.DEL_FLAG = 0
-		AND u.IDENTITY_FLAG = 1
-		AND u.VIP_FLAG = 1
-		AND a.DEL_FLAG = 0
-		AND a.JOB_STATUS = 0
-	</select>
-	
-	<update id="batchUpdatePublishDate">
-		UPDATE mde_job_advertised
-		SET  UPDATE_DATE = NOW(),
-		version_no = version_no +1
-		WHERE
-			JOB_STATUS = 0
-			and PUBLISHER =#{publisher}
-	</update>
-	
-	<!--获取酒店可首推和已首推个数  -->
-	<select id="getAvailableAndUsedCount" resultType = "com.wechat.model.dto.AvailableAndUsedCountDto">
-		SELECT
-			ifnull(count(a.PUBLISHER),0) as used,
-			ifnull(s.remarks,0) as available
-		FROM
-			mde_user u
-		left join mde_job_advertised a
-		  on  u.USER_CODE = a.PUBLISHER
-		AND a.DEL_FLAG = 0
-		AND a.JOB_STATUS = 0
-		AND a.RECOMMEND_FLAG = 1
-		 left join sys_dict s
-		  on  s.value = u.VIP_FLAG
-		 and  s.type = 'vip_level'
-		WHERE
-			u.USER_CODE = #{userCode}
-		AND u.DEL_FLAG = 0
-		AND u.IDENTITY_FLAG = 1
-		GROUP By 
-			u.USER_CODE
-	</select>
-	
-	
-	<select id="findRepFormPvByDate" resultType="com.wechat.model.dto.JobRepFormPvDto">
-		SELECT
-		<choose>
-			<when test='ymd =="d"'>
-				a.WRIT_DATE         as imagX,
-			</when>
-			<when test='ymd =="m"'>
-				date_format( a.WRIT_DATE, '%Y-%m' ) as imagX,
-			</when>
-			<when test='ymd =="y"'>
-				date_format( a.WRIT_DATE, '%Y' ) as imagX,
-			</when>
-			<otherwise>
-				a.WRIT_DATE         as imagX,
-			</otherwise>
-		</choose>
-			IFNULL(cvHis.num,0) as cvNums,
-			SUM( a.PAGE_VIEW )  as pv
-		FROM
-			mde_job_advertised job 
-		inner join
-			mde_job_pv_uv a on  job.JOB_ID = a.JOB_ID
-		LEFT JOIN (
-			SELECT
-			<choose>
-				<when test='ymd =="d"'>
-					rel.DELIVER_DATE as deliverDate,
-				</when>
-				<when test='ymd =="m"'>
-					date_format( rel.DELIVER_DATE , '%Y-%m' ) as deliverDate,
-				</when>
-				<when test='ymd =="y"'>
-					date_format( rel.DELIVER_DATE , '%Y' ) as deliverDate,
-				</when>
-				<otherwise>
-					rel.DELIVER_DATE as deliverDate,
-				</otherwise>
-			</choose>
-				count( rel.DELIVER_DATE ) num 
-			FROM
-				mde_position_cv_rel rel 
-			WHERE
-				rel.PUBLISHER = #{userCode}
-	<![CDATA[   AND rel.DELIVER_DATE >= #{from} 
-				AND rel.DELIVER_DATE <= #{to}   ]]> 
-		<choose>
-			<when test='ymd =="d"'>
-				GROUP BY rel.DELIVER_DATE 
-					) cvHis ON cvHis.deliverDate = a.WRIT_DATE 
-			</when>
-			<when test='ymd =="m"'>
-				GROUP BY date_format( rel.DELIVER_DATE , '%Y-%m' )
-					) cvHis ON cvHis.deliverDate = date_format( a.WRIT_DATE, '%Y-%m' )
-			</when>
-			<when test='ymd =="y"'>
-				GROUP BY date_format( rel.DELIVER_DATE , '%Y' )
-					) cvHis ON cvHis.deliverDate = date_format( a.WRIT_DATE, '%Y' )
-			</when>
-			<otherwise>
-				GROUP BY rel.DELIVER_DATE 
-					) cvHis ON cvHis.deliverDate = a.WRIT_DATE 
-			</otherwise>
-		</choose>
-		WHERE
-			job.PUBLISHER = #{userCode}
-			<![CDATA[
+    <!-- 企业简历总数量 -->
+    <select id="getAllUserCvCount" resultType="java.lang.Integer">
+        SELECT count(1)
+        FROM mde_job_advertised j,
+             mde_position_cv_rel r
+        WHERE j.JOB_ID = r.POS_ID
+          AND j.DEL_FLAG = 0
+          AND r.DEL_FLAG = 0
+          AND j.PUBLISHER = #{userCode}
+    </select>
+    <!-- 按发布者获取新简历数量 -->
+    <select id="getNewCvCountByPublisher" resultType="java.lang.Integer">
+        SELECT count(1)
+        FROM mde_job_advertised j,
+             mde_position_cv_rel r
+        WHERE j.JOB_ID = r.POS_ID
+          AND j.DEL_FLAG = 0
+          AND r.DEL_FLAG = 0
+          AND r.CV_STATUS = 0
+          AND j.PUBLISHER = #{userCode}
+    </select>
+    <!-- 邀请面试数量 -->
+    <select id="inviteAuditionCount" resultType="java.lang.Integer">
+        SELECT count(1)
+        FROM mde_job_advertised j,
+             mde_position_cv_rel r
+        WHERE j.JOB_ID = r.POS_ID
+          AND j.DEL_FLAG = 0
+          AND r.DEL_FLAG = 0
+          AND r.CV_STATUS = 3
+          AND j.PUBLISHER = #{userCode}
+    </select>
+    <!-- 录用简历数量 -->
+    <select id="matriculateUserCvCount" resultType="java.lang.Integer">
+        SELECT count(1)
+        FROM mde_job_advertised j,
+             mde_position_cv_rel r
+        WHERE j.JOB_ID = r.POS_ID
+          AND j.DEL_FLAG = 0
+          AND r.DEL_FLAG = 0
+          AND r.CV_STATUS = 4
+          AND j.PUBLISHER = #{userCode}
+    </select>
+    <!-- 淘汰数量 -->
+    <select id="eliminateUserCvCount" resultType="java.lang.Integer">
+        SELECT count(1)
+        FROM mde_job_advertised j,
+             mde_position_cv_rel r
+        WHERE j.JOB_ID = r.POS_ID
+          AND j.DEL_FLAG = 0
+          AND r.DEL_FLAG = 0
+          AND r.CV_STATUS = 5
+          AND j.PUBLISHER = #{userCode}
+    </select>
+    <!-- 随机抽取优选职位  大于50  (未登录)  -->
+    <select id="getNotLoginRecommentJobsRandJoin" resultMap="MdeJobAdvertised">
+        SELECT t1.JOB_ID,
+               t1.PUBLISHER,
+               t1.JOB_NAME,
+               t1.JOB_DESCRIBE,
+               t1.CREATE_DATE,
+               t1.`NAME` AS publisher_name
+        from (SELECT a.JOB_ID,
+                     a.PUBLISHER,
+                     a.JOB_NAME,
+                     a.JOB_DESCRIBE,
+                     a.CREATE_DATE,
+                     a.UPDATE_DATE,
+                     u.`NAME`
+              FROM mde_job_advertised a,
+                   mde_user u
+              WHERE u.USER_CODE = a.PUBLISHER
+                AND u.DEL_FLAG = 0
+                AND u.IDENTITY_FLAG = 1
+                AND u.VIP_FLAG = 1
+                AND a.DEL_FLAG = 0
+                AND a.JOB_STATUS = 0
+              GROUP BY a.PUBLISHER) as t1
+                 JOIN (SELECT ROUND(RAND() * (
+                (SELECT MAX(JOB_ID) FROM mde_job_advertised) - (SELECT MIN(JOB_ID) FROM mde_job_advertised)) +
+                                    (SELECT MIN(JOB_ID) FROM mde_job_advertised)) AS JOB_ID) AS t2
+        WHERE t1.JOB_ID >= t2.JOB_ID
+        ORDER BY t1.UPDATE_DATE desc
+        LIMIT #{limitSize}
+    </select>
+
+    <!-- 随机抽取优选职位  小于50  (未登录)  -->
+    <select id="getNotLoginRecommentJobsRand" resultMap="MdeJobAdvertised">
+        SELECT a.JOB_ID,
+               a.PUBLISHER,
+               a.JOB_NAME,
+               a.JOB_DESCRIBE,
+               a.CREATE_DATE,
+               u.`NAME` AS publisher_name
+        FROM mde_job_advertised a,
+             mde_user u
+        WHERE u.USER_CODE = a.PUBLISHER
+          AND u.DEL_FLAG = 0
+          AND u.IDENTITY_FLAG = 1
+          AND u.VIP_FLAG = 1
+          AND a.DEL_FLAG = 0
+          AND a.JOB_STATUS = 0
+        GROUP BY a.PUBLISHER
+        ORDER BY RAND()
+        LIMIT #{limitSize}
+    </select>
+
+    <!--优选人才数量  -->
+    <select id="getNotLoginRecommentJobsCount" resultType="java.lang.Integer">
+        SELECT count(1)
+        FROM mde_job_advertised a,
+             mde_user u
+        WHERE u.USER_CODE = a.PUBLISHER
+          AND u.DEL_FLAG = 0
+          AND u.IDENTITY_FLAG = 1
+          AND u.VIP_FLAG = 1
+          AND a.DEL_FLAG = 0
+          AND a.JOB_STATUS = 0
+    </select>
+
+    <update id="batchUpdatePublishDate">
+        UPDATE mde_job_advertised
+        SET UPDATE_DATE = NOW(),
+            version_no  = version_no + 1
+        WHERE JOB_STATUS = 0
+          and PUBLISHER = #{publisher}
+    </update>
+
+    <!--获取酒店可首推和已首推个数  -->
+    <select id="getAvailableAndUsedCount" resultType="com.wechat.model.dto.AvailableAndUsedCountDto">
+        SELECT ifnull(count(a.PUBLISHER), 0) as used,
+               ifnull(s.remarks, 0)          as available
+        FROM mde_user u
+                 left join mde_job_advertised a
+                           on u.USER_CODE = a.PUBLISHER
+                               AND a.DEL_FLAG = 0
+                               AND a.JOB_STATUS = 0
+                               AND a.RECOMMEND_FLAG = 1
+                 left join sys_dict s
+                           on s.value = u.VIP_FLAG
+                               and s.type = 'vip_level'
+        WHERE u.USER_CODE = #{userCode}
+          AND u.DEL_FLAG = 0
+          AND u.IDENTITY_FLAG = 1
+        GROUP By u.USER_CODE
+    </select>
+
+
+    <select id="findRepFormPvByDate" resultType="com.wechat.model.dto.JobRepFormPvDto">
+        SELECT
+        <choose>
+            <when test='ymd =="d"'>
+                a.WRIT_DATE as imagX,
+            </when>
+            <when test='ymd =="m"'>
+                date_format( a.WRIT_DATE, '%Y-%m' ) as imagX,
+            </when>
+            <when test='ymd =="y"'>
+                date_format( a.WRIT_DATE, '%Y' ) as imagX,
+            </when>
+            <otherwise>
+                a.WRIT_DATE as imagX,
+            </otherwise>
+        </choose>
+        IFNULL(cvHis.num,0) as cvNums,
+        SUM( a.PAGE_VIEW ) as pv
+        FROM
+        mde_job_advertised job
+        inner join
+        mde_job_pv_uv a on job.JOB_ID = a.JOB_ID
+        LEFT JOIN (
+        SELECT
+        <choose>
+            <when test='ymd =="d"'>
+                rel.DELIVER_DATE as deliverDate,
+            </when>
+            <when test='ymd =="m"'>
+                date_format( rel.DELIVER_DATE , '%Y-%m' ) as deliverDate,
+            </when>
+            <when test='ymd =="y"'>
+                date_format( rel.DELIVER_DATE , '%Y' ) as deliverDate,
+            </when>
+            <otherwise>
+                rel.DELIVER_DATE as deliverDate,
+            </otherwise>
+        </choose>
+        count( rel.DELIVER_DATE ) num
+        FROM
+        mde_position_cv_rel rel
+        WHERE
+        rel.PUBLISHER = #{userCode}
+        <![CDATA[   AND rel.DELIVER_DATE >= #{from}
+				AND rel.DELIVER_DATE <= #{to}   ]]>
+        <choose>
+            <when test='ymd =="d"'>
+                GROUP BY rel.DELIVER_DATE
+                ) cvHis ON cvHis.deliverDate = a.WRIT_DATE
+            </when>
+            <when test='ymd =="m"'>
+                GROUP BY date_format( rel.DELIVER_DATE , '%Y-%m' )
+                ) cvHis ON cvHis.deliverDate = date_format( a.WRIT_DATE, '%Y-%m' )
+            </when>
+            <when test='ymd =="y"'>
+                GROUP BY date_format( rel.DELIVER_DATE , '%Y' )
+                ) cvHis ON cvHis.deliverDate = date_format( a.WRIT_DATE, '%Y' )
+            </when>
+            <otherwise>
+                GROUP BY rel.DELIVER_DATE
+                ) cvHis ON cvHis.deliverDate = a.WRIT_DATE
+            </otherwise>
+        </choose>
+        WHERE
+        job.PUBLISHER = #{userCode}
+        <![CDATA[
 			AND a.WRIT_DATE >= #{from}
 			AND a.WRIT_DATE <= #{to} 
-			]]> 
-			<if test="jobId != null and jobId != 0 ">
-				AND a.JOB_ID = #{jobId}
-			</if>
-		<choose>
-			<when test='ymd =="d"'>
-				GROUP BY a.WRIT_DATE
-			</when>
-			<when test='ymd =="m"'>
-				GROUP BY date_format( a.WRIT_DATE, '%Y-%m' )
-			</when>
-			<when test='ymd =="y"'>
-				GROUP BY date_format( a.WRIT_DATE, '%Y' )
-			</when>
-			<otherwise>
-				GROUP BY a.WRIT_DATE
-			</otherwise>
-		</choose>
-		ORDER BY
-			a.WRIT_DATE
-	</select>
-	
-	<select id="findGeneralPvByDate" resultType="java.lang.Integer">
-		<!-- 点击量 -->
-		SELECT
-			SUM( a.PAGE_VIEW )  as num
-		FROM
-			mde_job_advertised job 
-		inner join
-			mde_job_pv_uv a on  job.JOB_ID = a.JOB_ID 
-		WHERE
-			job.PUBLISHER = #{userCode}
-			<![CDATA[
+			]]>
+        <if test="jobId != null and jobId != 0 ">
+            AND a.JOB_ID = #{jobId}
+        </if>
+        <choose>
+            <when test='ymd =="d"'>
+                GROUP BY a.WRIT_DATE
+            </when>
+            <when test='ymd =="m"'>
+                GROUP BY date_format( a.WRIT_DATE, '%Y-%m' )
+            </when>
+            <when test='ymd =="y"'>
+                GROUP BY date_format( a.WRIT_DATE, '%Y' )
+            </when>
+            <otherwise>
+                GROUP BY a.WRIT_DATE
+            </otherwise>
+        </choose>
+        ORDER BY
+        a.WRIT_DATE
+    </select>
+
+    <select id="findGeneralPvByDate" resultType="java.lang.Integer">
+        <!-- 点击量 -->
+        SELECT
+        SUM( a.PAGE_VIEW ) as num
+        FROM
+        mde_job_advertised job
+        inner join
+        mde_job_pv_uv a on job.JOB_ID = a.JOB_ID
+        WHERE
+        job.PUBLISHER = #{userCode}
+        <![CDATA[
 			AND a.WRIT_DATE >= #{from}
 			AND a.WRIT_DATE <= #{to} 
-			]]> 
-			<if test="jobId != null and jobId != 0 ">
-				AND a.JOB_ID = #{jobId}
-			</if>
-	</select>
-	
-
-	
+			]]>
+        <if test="jobId != null and jobId != 0 ">
+            AND a.JOB_ID = #{jobId}
+        </if>
+    </select>
 </mapper>