TalentRetrievalService.java 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229
  1. package com.wechat.service;
  2. import java.util.ArrayList;
  3. import java.util.Arrays;
  4. import java.util.HashMap;
  5. import java.util.List;
  6. import java.util.Map;
  7. import java.util.Set;
  8. import java.util.regex.Matcher;
  9. import java.util.regex.Pattern;
  10. import javax.annotation.Resource;
  11. import javax.servlet.http.HttpServletRequest;
  12. import org.apache.commons.collections.CollectionUtils;
  13. import org.springframework.beans.factory.annotation.Autowired;
  14. import org.springframework.stereotype.Service;
  15. import org.springframework.web.bind.annotation.RequestParam;
  16. import com.beust.jcommander.internal.Sets;
  17. import com.google.common.collect.Maps;
  18. import com.wechat.common.Constants;
  19. import com.wechat.common.utils.StringsUtils;
  20. import com.wechat.dao.MdeEducationExperienceDao;
  21. import com.wechat.dao.MdePositionCvRelDao;
  22. import com.wechat.dao.MdeUserDao;
  23. import com.wechat.global.base.dao.Pagination;
  24. import com.wechat.global.base.dao.PagingResult;
  25. import com.wechat.global.base.dao.RedisWithExpiryTimeDao;
  26. import com.wechat.model.dbEntity.MdeEducationExperience;
  27. import com.wechat.model.dbEntity.MdeJobAdvertised;
  28. import com.wechat.model.dbEntity.MdeUser;
  29. import com.wechat.model.dto.AdImageDto;
  30. import com.wechat.model.dto.TalentRetrievalDto;
  31. import com.wechat.model.dto.WorkDateDto;
  32. import com.wechat.model.requestDto.AlentRetrievalReq;
  33. import com.wechat.model.requestDto.KeyWordReq;
  34. import com.wechat.model.requestDto.PageReq;
  35. import com.wechat.model.responseDto.ContactUserInfoResp;
  36. @Service
  37. public class TalentRetrievalService {
  38. @Autowired
  39. private MdeUserDao mdeUserDao;
  40. @Resource
  41. private RedisWithExpiryTimeDao redisDao;
  42. @Autowired
  43. private MdePositionCvRelDao mdePositionCvRelDao;
  44. @Autowired
  45. private MdeEducationExperienceDao mdeEducationExperienceDao;
  46. @Autowired
  47. private CommonService commonService;
  48. public Map<String, Object> init(HttpServletRequest req) {
  49. Map<String, Object> maps = Maps.newHashMap();
  50. String userCode = commonService.getUserCode(req);
  51. //String language = commonService.getLanguage(req);
  52. List<MdeUser> mdeUser = commonService.getRecommentPeople(userCode);
  53. List<AdImageDto> adImages = commonService.getAdImages(Constants.PC_RENCAI_TOP_AD);
  54. maps.put("adImages", adImages);
  55. maps.put("talentReTrieval", mdeUser);// 优选人才
  56. return maps;
  57. }
  58. /**
  59. * 人才关键词检索
  60. *
  61. * @param req
  62. * @param resp
  63. * @return
  64. */
  65. // @Deprecated
  66. // public PagingResult<TalentRetrievalDto> searchKeyWord(KeyWordReq keyWordReq, HttpServletRequest req) {
  67. // if (keyWordReq != null && StringsUtils.isEmpty(keyWordReq.getKeyWord())) {
  68. // PagingResult<TalentRetrievalDto> pagingResult = new PagingResult<>();
  69. // pagingResult.setCurrentPage(keyWordReq.getIndex());
  70. // pagingResult.setTotalSize(0);
  71. // pagingResult.setPageSize(keyWordReq.getSize());
  72. // pagingResult.setResultList(new ArrayList<TalentRetrievalDto>());
  73. // pagingResult.setPageNoSize(10);
  74. // return pagingResult;
  75. // }
  76. //
  77. // Pagination pagination = new Pagination(keyWordReq.getIndex(), keyWordReq.getSize());
  78. // String keyWord = keyWordReq.getKeyWord();
  79. // // 拆分关键字
  80. // // 提取字符串中的数字
  81. // String regEx = "[^0-9]";
  82. // Pattern p = Pattern.compile(regEx);
  83. // Matcher m = p.matcher(keyWord);
  84. // String number = m.replaceAll("").trim();
  85. // keyWord = keyWord.replaceAll("\\d+", "");
  86. // List<String> keyWordSplit = keyWordSplit(keyWord);
  87. // Map<Object, Object> param = Maps.newHashMap();
  88. // param.put("keyWord", keyWordSplit);
  89. // String eduId = mdeUserDao.getEducationId(param);
  90. // param.put("experience", number);
  91. // //根据工作年限获取工作起始时间范围
  92. // WorkDateDto workDate =commonService.getDateByExperience(number);
  93. // param.put("from", workDate.getFrom());
  94. // param.put("to", workDate.getTo());
  95. //
  96. // param.put("eduId", eduId);
  97. // param.put("publisher", commonService.getUserCode(req));
  98. // pagination.setParams(param);
  99. // PagingResult<TalentRetrievalDto> page = mdeUserDao.searchKeyWord(pagination);
  100. // List<TalentRetrievalDto> list = commonService.addDomainUrlTalentRetrieval(page.getResultList()); // 拼接图像域名
  101. // page.setResultList(list);
  102. // return page;
  103. // }
  104. /**
  105. * @description 人才关键词检索
  106. * @author rayson
  107. * @param keyWordReq
  108. * @date 2023-10-23 10:30
  109. * @return PagingResult<TalentRetrievalDto>
  110. **/
  111. public PagingResult<TalentRetrievalDto> searchKeyWord(KeyWordReq keyWordReq, HttpServletRequest req) {
  112. Pagination pagination = new Pagination(keyWordReq.getIndex(), keyWordReq.getSize());
  113. Map<Object, Object> param = Maps.newHashMap();
  114. param.put("keyWord", keyWordReq.getKeyWord());
  115. param.put("publisher", commonService.getUserCode(req));
  116. pagination.setParams(param);
  117. PagingResult<TalentRetrievalDto> page = mdeUserDao.searchKeyWord(pagination);
  118. // 拼接图像域名
  119. List<TalentRetrievalDto> list = commonService.addDomainUrlTalentRetrieval(page.getResultList());
  120. page.setResultList(list);
  121. return page;
  122. }
  123. /**
  124. * 人才筛选
  125. *
  126. * @param AlentRetrievalReq
  127. * @return
  128. */
  129. public PagingResult<TalentRetrievalDto> filterPersonAbility(AlentRetrievalReq alentRetrievalReq,HttpServletRequest req) {
  130. Pagination pagination = new Pagination(alentRetrievalReq.getIndex(), alentRetrievalReq.getSize());
  131. Map<Object, Object> params = Maps.newHashMap();
  132. List<String> positionIdList = null;
  133. if (StringsUtils.isNotEmpty(alentRetrievalReq.getPositionIdList())) {
  134. positionIdList = Arrays.asList(alentRetrievalReq.getPositionIdList().split(","));
  135. }
  136. params.put("positionIdList", positionIdList);
  137. params.put("deptId", alentRetrievalReq.getDeptId());
  138. params.put("provinceId", alentRetrievalReq.getProvinceId());
  139. params.put("cityId", alentRetrievalReq.getCityId());
  140. params.put("publisher", commonService.getUserCode(req));
  141. List<String> brandIdList = null;
  142. if (StringsUtils.isNotEmpty(alentRetrievalReq.getBrandIdList())) {
  143. brandIdList = Arrays.asList(alentRetrievalReq.getBrandIdList().split(","));
  144. }
  145. params.put("brandIdList", brandIdList);
  146. int workExperience = alentRetrievalReq.getWorkExperience();
  147. params.put("workExperience", alentRetrievalReq.getWorkExperience());
  148. params.put("eduExperience", alentRetrievalReq.getEduExperience());
  149. //根据工作年限获取工作起始时间范围
  150. WorkDateDto workDate =commonService.getDateByExperience(String.valueOf(workExperience));
  151. params.put("from", workDate.getFrom());
  152. params.put("to", workDate.getTo());
  153. pagination.setParams(params);
  154. PagingResult<TalentRetrievalDto> page = mdeUserDao.filterPersonAbility(pagination);
  155. List<TalentRetrievalDto> list = commonService.addDomainUrlTalentRetrieval(page.getResultList()); // 拼接图像域名
  156. page.setResultList(list);
  157. return page;
  158. }
  159. /**
  160. * 获取联系方式
  161. *
  162. * @param userCode
  163. * @return
  164. */
  165. public ContactUserInfoResp getContactNumber(String userCode,String lang) {
  166. // 根据用户code 查询用户信息和工作履历
  167. ContactUserInfoResp contactUserInfoResp = mdeUserDao.getContactNumber(userCode);
  168. if (contactUserInfoResp != null) {
  169. List<MdeEducationExperience> educationList =
  170. mdeEducationExperienceDao.getEducationExperienceByUserCode(userCode,lang);
  171. contactUserInfoResp.setEducationExperience(educationList);
  172. contactUserInfoResp = commonService.addDomainUrlLookUserCv(contactUserInfoResp); // 拼接图像域名
  173. }
  174. return contactUserInfoResp;
  175. }
  176. /**
  177. * 关键词拆分
  178. *
  179. * @param keyWord
  180. * @return
  181. */
  182. private List<String> keyWordSplit(String keyWord) {
  183. Set<String> set = Sets.newHashSet();
  184. List<String> split = Arrays.asList(keyWord.trim().split(" "));
  185. if (CollectionUtils.isEmpty(split)) {
  186. set.add(keyWord);
  187. } else {
  188. for (String string : split) {
  189. set.add(string);
  190. }
  191. }
  192. List<String> list = new ArrayList<>(set);
  193. return list;
  194. }
  195. /**
  196. * 优选人才 -分页查询
  197. *
  198. * @return
  199. */
  200. public PagingResult<TalentRetrievalDto> getPagingRecmtPep(PageReq searchReq,String userCode) {
  201. Pagination page = new Pagination(searchReq.getIndex(), searchReq.getSize());
  202. Map<Object, Object> pageParam = new HashMap<Object, Object>();
  203. pageParam.put("userCode", userCode);
  204. page.setParams(pageParam);
  205. return mdeUserDao.getPagingRecommentTalent(page);
  206. }
  207. }