Commit fa9e7cf8 by 王祖波

人群匹配代码

parent 12b678be
package com.gic.haoban.manage.service.service;
import com.alibaba.fastjson.JSONObject;
import com.gic.content.api.dto.common.MemberSearchDTO;
import com.gic.member.api.dto.es.MemberDataDTO;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
* @author: YuZhi
* @date: 2022/3/14 10:01
*/
public interface ESMemberInfoService {
/**
* 获取会员查询条件(老的筛选器存的查询条件)
* @param enterpriseId 企业id
* @param memberType 查询会员类型0人群1分组
* @param filterJson 查询条件
* @param creatorId 创建人id
* @param readyFlag 是否需要判断分组准备完成
* @return
*/
String getMemberSearchParamOld(String enterpriseId, Integer memberType, String filterJson, String creatorId,boolean readyFlag);
/**
* 单个会员条件匹配
* @param enterpriseId 企业id
* @param searchJson 条件json
* @param memberId 会员id
* @return
*/
boolean matchMember(String enterpriseId, JSONObject searchJson,String memberId,String creatorId);
/**
*
* @Title: queryDataSingle
* @Description: 单个会员
* @author xugh
* @param enterpriseId
* @param memberId
* @param returnFields
* @return
* @throws
*/
JSONObject queryDataSingle(String enterpriseId, String memberId, String returnFields) ;
}
package com.gic.haoban.manage.service.service.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.gic.api.base.commons.ServiceResponse;
import com.gic.commons.util.DateUtil;
import com.gic.commons.util.EntityUtil;
import com.gic.content.api.dto.common.MemberSearchDTO;
import com.gic.enterprise.api.service.StoreService;
import com.gic.haoban.manage.service.service.ESMemberInfoService;
import com.gic.member.api.dto.es.MemberDataDTO;
import com.gic.member.ext.api.service.MemberCrowdApiService;
import com.gic.member.tag.api.dto.MemberExistDTO;
import com.gic.member.tag.api.service.MemberTagEsApiService;
import com.gic.member.tag.api.service.MemberTagGroupApiService;
import com.gic.search.engine.api.constant.OperateEnum;
import com.gic.search.engine.api.dto.ESResponseQueryBatch;
import com.gic.search.engine.api.dto.ESResponseQueryBatchByScroll;
import com.gic.search.engine.api.dto.ESResponseQueryCount;
import com.gic.search.engine.api.dto.ESResponseQuerySingle;
import com.gic.search.engine.api.dto.dynamic.DynamicSearchDTO;
import com.gic.search.engine.api.filter.NewNodeAddUtil;
import com.gic.search.engine.api.service.dynamic.ESDataDynamicOperationApiService;
import com.google.common.collect.Lists;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.*;
import java.util.stream.Collectors;
/**
* @author: YuZhi
* @date: 2022/3/14 10:02
*/
@Service
public class ESMemberInfoServiceImpl implements ESMemberInfoService {
Logger logger = LogManager.getLogger(ESMemberInfoService.class);
@Autowired
private ESDataDynamicOperationApiService esApiService;
@Autowired
private StoreService storeService;
@Autowired
private MemberTagGroupApiService memberTagGroupApiService;
@Autowired
private MemberTagEsApiService memberTagEsApiService;
@Override
public String getMemberSearchParamOld(String enterpriseId, Integer memberType, String filterJson, String creatorId, boolean readyFlag) {
String searchParams = "{}";
if (StringUtils.isBlank(filterJson)) {
return searchParams;
}
logger.info("人群条件参数enterpriseId:{},memberType:{},filterJson:{}",enterpriseId,memberType,filterJson);
if (memberType == 0) {
searchParams = filterJson;
} else if (memberType == 1) {
MemberExistDTO dto = new MemberExistDTO();
dto.setEnterpriseId(enterpriseId);
String[] tagGroupIdArr = filterJson.split(",");
List<String> list = Arrays.asList(tagGroupIdArr);
if (readyFlag) {
// 是否准备好,true可以执行
boolean finishFlag = memberTagEsApiService.memberTagReady(enterpriseId, list) ;
if (!finishFlag) {
return null;
}
}
dto.setMemberTagGroupIds(list);
dto.setUseId(creatorId);
searchParams = memberTagGroupApiService.getSearchJsonByGroupId(dto);
}
logger.info("人群条件:{}",searchParams);
return searchParams;
}
@Override
public boolean matchMember(String enterpriseId, JSONObject searchJson, String memberId,String creatorId) {
JSONObject jsonObject = queryDataSingle(enterpriseId, memberId, "");
if (jsonObject == null) {
return false;
}
searchJson = this.storeService.parseSelectData(searchJson, enterpriseId,creatorId,null);
return esApiService.matchMember(searchJson, enterpriseId, jsonObject);
}
@Override
public JSONObject queryDataSingle(String enterpriseId, String memberId, String returnFields) {
JSONObject searchRes = null;
try {
JSONObject searchJson = new JSONObject();
DynamicSearchDTO search = new DynamicSearchDTO();
searchJson.put("id", memberId);
search.setSearchJson(searchJson);
search.setEnterpriseId(enterpriseId);
search.setColumnCategoryCode("member");
if (StringUtils.isNotBlank(returnFields)) {
search.setReturnFileds(returnFields);
}
ESResponseQuerySingle single = esApiService.queryDataSingle(search);
searchRes = single.getRes();
} catch (Exception e) {
logger.warn("从搜索引擎搜索会员数据异常memberId: {}", memberId, e);
}
return searchRes;
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment