123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350 |
- package com.hz.employmentsite.services.impl.jobUserManager;
- import com.github.pagehelper.PageHelper;
- import com.github.pagehelper.PageInfo;
- import com.hz.employmentsite.filter.exception.BaseException;
- import com.hz.employmentsite.mapper.*;
- import com.hz.employmentsite.mapper.cquery.RecommendMgtCQuery;
- import com.hz.employmentsite.model.*;
- import com.hz.employmentsite.services.service.WechatService;
- import com.hz.employmentsite.services.service.jobUserManager.JobUserServiceService;
- import com.hz.employmentsite.services.service.jobUserManager.RecommendMgtService;
- import com.hz.employmentsite.util.CalculateUtils;
- import com.hz.employmentsite.util.DesUtils;
- import com.hz.employmentsite.util.StringUtils;
- import com.hz.employmentsite.vo.jobUserManager.*;
- import lombok.extern.slf4j.Slf4j;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import java.util.*;
- @Service("RecommendMgtService")
- @Slf4j
- public class RecommendMgtServiceImpl implements RecommendMgtService {
- @Autowired
- private RecommendMgtCQuery recommendMgtCQuery;
- @Autowired
- private PcRecommendMgtMapper pcRecommendMgtMapper;
- @Autowired
- private StringUtils stringUtils;
- @Autowired
- private WechatService wechatService;
- @Autowired
- private PcSiteUserMapper pcSiteUserMapper;
- @Autowired
- private PcJobuserMapper pcJobuserMapper;
- @Autowired
- private PcJobhuntMapper pcJobhuntMapper;
- @Autowired
- private PcPostMapper pcPostMapper;
- @Autowired
- private DesUtils desUtils;
- @Autowired
- private CalculateUtils calculateUtils;
- @Autowired
- private JobUserServiceService jobUserServiceService;
- @Override
- public PageInfo<RecommendMgtVo> getList(Integer page, Integer rows, String name,
- String companyName, Integer recommendType, Integer entryState,
- String pushName, String qzProfessionName, String zpProfessionName,
- String siteID, String regionCode, Date startDate,
- Date endDate, String loginUserID) {
- List<String> curLoginUserSiteJobHuntIDs = new ArrayList<>();
- if (!stringUtils.IsNullOrEmpty(loginUserID)) {
- // 查询APP登录人员的驿站信息
- PcSiteUserExample siteUserExp = new PcSiteUserExample();
- siteUserExp.or().andUserIDEqualTo(loginUserID);
- // 获取到登录人员的所属驿站ID
- String curLoginUserSiteID = pcSiteUserMapper.selectByExample(siteUserExp).get(0).getSiteID();
- // 查询该驿站下录入的求职人员信息
- PcJobuserExample jobUserExp = new PcJobuserExample();
- jobUserExp.or().andSiteIDEqualTo(curLoginUserSiteID);
- // 获取到求职人员ID
- List<String> jobUserIDs = pcJobuserMapper.selectByExample(jobUserExp).stream().map(item -> item.getJobuserID()).toList();
- if (!jobUserIDs.isEmpty()) {
- // 查询求职人员的求职意向
- PcJobhuntExample jobHuntExample = new PcJobhuntExample();
- jobHuntExample.or().andJobUserIDIn(jobUserIDs);
- // 获取求职意向ID
- curLoginUserSiteJobHuntIDs = pcJobhuntMapper.selectByExample(jobHuntExample).stream().map(item -> item.getJobHuntID()).toList();
- }
- }
- PageHelper.startPage(page, rows);
- List<RecommendMgtVo> list;
- if (!stringUtils.IsNullOrEmpty(loginUserID) && curLoginUserSiteJobHuntIDs.isEmpty()) {
- // APP查询时,当前驿站没有录入求职人员与求职记录信息,返回空,防止curLoginUserSiteJobHuntIDs为空字符,查询语句不能触发
- list = new ArrayList<>();
- } else {
- list = recommendMgtCQuery.getRecommendMgtList(null, name, companyName, recommendType, entryState, pushName, qzProfessionName, zpProfessionName, siteID, regionCode, startDate, endDate, stringUtils.ListToInSql(curLoginUserSiteJobHuntIDs));
- }
- list.forEach(item->{
- item.setUserMobile(calculateUtils.maskMobile(desUtils.decoderText(item.getUserMobile())));
- });
- PageInfo<RecommendMgtVo> result = new PageInfo(list);
- return result;
- }
- @Override
- public RecommendMgtVo getListById(String recommendMgtID) {
- RecommendMgtVo data = recommendMgtCQuery.getRecommendMgtList(recommendMgtID, null, null, null, null, null, null, null, null, null, null, null, null).stream().findFirst().orElse(null);
- if(data==null){
- throw new BaseException("500","未查询到数据");
- }
- return data;
- }
- @Override
- public int addRecommend(List<RecommendMgtVo> list, String userID) {
- try {
- List<PcRecommendMgt> addList = new ArrayList<>();
- List<JobUserServiceVo> serviceList = new ArrayList<>();
- final int[] result = {1};
- list.forEach(item -> {
- PcPost curPost = pcPostMapper.selectByPrimaryKey(item.getPostID());
- if(curPost.getEndTime().before(new Date())||curPost.getRecordStatus().equals(0)){
- result[0] = -1;
- }else{
- PcRecommendMgt model = new PcRecommendMgt();
- model.setRecommendMgtID(item.getRecommendMgtID());
- model.setPostID(item.getPostID());
- model.setJobHuntID(item.getJobHuntID());
- model.setRecommendType(item.getRecommendType());
- model.setEntryState(Integer.parseInt("0"));
- model.setCreateUserID(userID);
- model.setCreateTime(new Date());
- addList.add(model);
- JobUserServiceVo service = new JobUserServiceVo();
- service.setJobUserID(item.jobuserId);
- service.setServiceContent("已推荐 " + item.companyName + " 的 " + item.zpProfessionName + " 岗位");
- service.setServiceTime(new Date());
- service.setServiceUserID(userID);
- serviceList.add(service);
- }
- });
- addList.forEach(x -> {
- pcRecommendMgtMapper.insert(x);
- });
- serviceList.forEach(item -> {
- jobUserServiceService.save(item, userID);
- });
- return result[0];
- } catch (Exception e) {
- e.printStackTrace();
- return 0;
- }
- }
- @Override
- public int setEntryState(String id, Integer state) {
- PcRecommendMgt data = pcRecommendMgtMapper.selectByPrimaryKey(id);
- if (data == null) {
- return -1;
- }
- data.setEntryState(state);
- if(state.equals(1)){
- var curJobHuntInfo = pcJobhuntMapper.selectByPrimaryKey(data.getJobHuntID());
- var curJobUserInfo = pcJobuserMapper.selectByPrimaryKey(curJobHuntInfo.getJobUserID());
- curJobUserInfo.setJobStatusID(1);
- pcJobuserMapper.updateByPrimaryKey(curJobUserInfo);
- }
- return pcRecommendMgtMapper.updateByPrimaryKey(data);
- }
- @Override
- public int saveRemark(String id, String remark, String userId) {
- PcRecommendMgt data = pcRecommendMgtMapper.selectByPrimaryKey(id);
- if (data == null) {
- return -1;
- }
- data.setRemark(remark);
- data.setModifyTime(new Date());
- data.setModifyUserID(userId);
- return pcRecommendMgtMapper.updateByPrimaryKey(data);
- }
- @Override
- public PageInfo<RecommendCompanyPostVo> getRecommendCompanyPostList(Integer page, Integer rows, String jobHuntID, String professionID,
- String companyName,String inviteProfessionName, Integer type, String parentProfessionID, Integer cultureRank,
- String workYear,Integer minSalary,Integer maxSalary) {
- PageHelper.startPage(page, rows);
- List<RecommendCompanyPostVo> list = recommendMgtCQuery.getRecommendCompanyPostList(jobHuntID, professionID, companyName, inviteProfessionName, type,parentProfessionID,cultureRank,workYear,minSalary,maxSalary);
- list.forEach(x -> {
- if (stringUtils.IsNullOrEmpty(x.recommendMgtID)) {
- x.recommendMgtID = UUID.randomUUID().toString();
- }
- });
- PageInfo<RecommendCompanyPostVo> result = new PageInfo(list);
- return result;
- }
- @Override
- public PageInfo<RecommendJobVo> getRecommendJobList(Integer page, Integer rows, String postID, String professionID,String huntProfessionName,
- String userName, Integer type, Integer cultureRank, Integer keyPersonType, String parentProfessionID,
- Integer workYear,String regionCode,String siteID,Integer minSalary,Integer maxSalary) {
- PageHelper.startPage(page, rows);
- List<String> recommendedJobHuntIDList = new ArrayList<>();
- PcRecommendMgtExample recommendMgtExp = new PcRecommendMgtExample();
- recommendMgtExp.or().andPostIDEqualTo(postID);
- var recommendedList = pcRecommendMgtMapper.selectByExample(recommendMgtExp);
- if( recommendedList.size()>0 && type.equals(0)){
- for(PcRecommendMgt curRecommended:recommendedList){
- recommendedJobHuntIDList.add(curRecommended.getJobHuntID());
- }
- }
- List<RecommendJobVo> list = recommendMgtCQuery.getRecommendJobList(postID, professionID, huntProfessionName, userName, type, cultureRank, keyPersonType, parentProfessionID, workYear,regionCode,siteID, minSalary, maxSalary,stringUtils.ListToInSql(recommendedJobHuntIDList));
- List<RecommendJobVo> resultList = new ArrayList<>();
- list.forEach(x -> {
- if (stringUtils.IsNullOrEmpty(x.getRecommendMgtID())) {
- x.setRecommendMgtID(UUID.randomUUID().toString());
- }
- x.setUserMobile(calculateUtils.maskMobile(desUtils.decoderText(x.getUserMobile())));
- //过滤已入职的求职意向数据
- PcRecommendMgtExample curRecommendMgtExp = new PcRecommendMgtExample();
- curRecommendMgtExp.or().andJobHuntIDEqualTo(x.getJobhuntID());
- var curRecommendMgtInfo = pcRecommendMgtMapper.selectByExample(curRecommendMgtExp).stream().findFirst().orElse(null);
- if( curRecommendMgtInfo ==null || curRecommendMgtInfo.getEntryState().equals(0)){
- resultList.add(x);
- }
- });
- PageInfo<RecommendJobVo> result = new PageInfo(resultList);
- return result;
- }
- @Override
- public List<ProfessionLevel> getProfessionLevelList() {
- return recommendMgtCQuery.getProfessionLevelList();
- }
- @Override
- public List<WorkCategoryLevel> getWorkCategoryLevelList() {
- return recommendMgtCQuery.getWorkCategoryLevelList();
- }
- @Override
- public PageInfo<ProfessionLevel> getProfessionLikeList(Integer page, Integer rows,String professionName) {
- PageHelper.startPage(page, rows);
- List<ProfessionLevel> list = recommendMgtCQuery.getProfessionLikeList(professionName);
- PageInfo<ProfessionLevel> result = new PageInfo(list);
- return result;
- }
- @Override
- public PageInfo<ProfessionLevel> getCompanyProfessionLikeList(Integer page, Integer rows,String professionName,String companyName) {
- PageHelper.startPage(page, rows);
- List<ProfessionLevel> list = recommendMgtCQuery.getCompanyProfessionLikeList(professionName,companyName);
- List<ProfessionLevel> finalList = new ArrayList<>();
- HashMap<String,String> nameCodeList = new HashMap<>();
- list.forEach(item->{
- if(!nameCodeList.containsValue(item.postName)){
- nameCodeList.put("postName",item.postName);
- finalList.add(item);
- }
- });
- PageInfo<ProfessionLevel> result = new PageInfo(finalList);
- return result;
- }
- @Override
- public List<OccupationCategory> getOccupationCategoryList() {return recommendMgtCQuery.getOccupationCategoryList();}
- @Override
- public List<IndustryLevel> getAllIndustryList() {return recommendMgtCQuery.getAllIndustryList();}
- @Override
- public void sendWxMessage() {
- sendUser();
- sendCompany();
- }
- private void sendUser() {
- List<HashMap<String, Object>> toUserList = recommendMgtCQuery.getCompanypostToUsermessageList();
- WxMessagetempsetting toUserTemp = wechatService.getWxMessagetempsettingList().stream().filter(it -> it.getTemplateNo().equals("toUser")).findFirst().orElse(null);
- if (toUserTemp != null) {
- List<WxMessagetempsettingField> fieldList = wechatService.getWxMessagetempFieldList(toUserTemp.getTemplateNo());
- if (fieldList.size() > 0) {
- toUserList.forEach(item -> {
- try {
- String recommendmgtid = item.get("recommendmgtid").toString();
- PcRecommendMgt pcRecommendMgt = pcRecommendMgtMapper.selectByPrimaryKey(recommendmgtid);
- Map<String, String> data = new HashMap<>();
- fieldList.forEach(field -> {
- data.put(field.getWxFieldName(), item.get(field.getSysFieldName()).toString());
- });
- boolean result = wechatService.sendMsg(item.get("userOpenId").toString(), recommendmgtid, toUserTemp.getUrl() + "?recommendmgtid=" + recommendmgtid, toUserTemp.getTemplateId(), data);
- if (result) {
- pcRecommendMgt.setIsSendUser(true);
- pcRecommendMgtMapper.updateByPrimaryKey(pcRecommendMgt);
- }
- } catch (Exception e) {
- log.error("sendUser:微信消息推送失败," + e.getMessage());
- }
- });
- }
- }
- }
- private void sendCompany() {
- List<HashMap<String, Object>> toCompanyList = recommendMgtCQuery.getUserhuntpostToCompanymessageList();
- WxMessagetempsetting toCompanyTemp = wechatService.getWxMessagetempsettingList().stream().filter(it -> it.getTemplateNo().equals("toCompany")).findFirst().orElse(null);
- if (toCompanyTemp != null) {
- List<WxMessagetempsettingField> fieldList = wechatService.getWxMessagetempFieldList(toCompanyTemp.getTemplateNo());
- if (fieldList.size() > 0) {
- toCompanyList.forEach(item -> {
- try {
- String recommendmgtid = item.get("recommendmgtid").toString();
- PcRecommendMgt pcRecommendMgt = pcRecommendMgtMapper.selectByPrimaryKey(recommendmgtid);
- Map<String, String> data = new HashMap<>();
- fieldList.forEach(field -> {
- data.put(field.getWxFieldName(), item.get(field.getSysFieldName()).toString());
- });
- boolean result = wechatService.sendMsg(item.get("companyOpenId").toString(), recommendmgtid, toCompanyTemp.getUrl() + "?recommendmgtid=" + recommendmgtid, toCompanyTemp.getTemplateId(), data);
- if (result) {
- pcRecommendMgt.setIsSendCompany(true);
- pcRecommendMgtMapper.updateByPrimaryKey(pcRecommendMgt);
- }
- } catch (Exception e) {
- log.error("sendCompany:微信消息推送失败," + e.getMessage());
- }
- });
- }
- }
- }
- }
|