|
@@ -855,6 +855,251 @@ public class CmBehaviorRecordServiceImpl implements CmBehaviorRecordService {
|
|
|
log.info("页面统计结束");
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 机构需求标签
|
|
|
+ *
|
|
|
+ * @param startTime
|
|
|
+ * @param endTime
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public void clubDemand(String startTime, String endTime) {
|
|
|
+ log.info("机构需求标签====统计开始");
|
|
|
+ // 获取机构Id
|
|
|
+ List<Integer> clubIdList = recordMapper.getClubId();
|
|
|
+ // 动态标签
|
|
|
+ List<String> trendsKeywordList = recordMapper.getTrendsKeyword();
|
|
|
+ // 静态标签
|
|
|
+ List<String> stateKeywordList = recordMapper.getStateKeyword();
|
|
|
+ // 机构动态标签
|
|
|
+ List<CmClubLabelPo> clubTrendsKeywordList = recordMapper.getClubTrendsKeyword();
|
|
|
+ // 机构静态标签
|
|
|
+ List<CmClubLabelPo> clubStateKeywordList = recordMapper.getClubStateKeyword();
|
|
|
+ if (null != clubIdList && clubIdList.size() > 0) {
|
|
|
+ for (Integer clubId : clubIdList) {
|
|
|
+ log.info("clubId===="+clubId);
|
|
|
+ // 标签
|
|
|
+ List<String> demandList = new ArrayList<>();
|
|
|
+ // 出现次数
|
|
|
+ Map<String, Integer> map = new HashMap<>();
|
|
|
+ // 对应机构Id
|
|
|
+ Map<String, Integer> clubIdMap = new HashMap<>();
|
|
|
+ // 咨询记录
|
|
|
+ List<CmClubLabelPo> clubLabel = recordMapper.getClubLabel(clubId, startTime, endTime);
|
|
|
+ if (clubLabel.size() > 0) {
|
|
|
+ // 动态标签
|
|
|
+ List<String> trendsKeywordCollect = clubLabel.stream().map(CmClubLabelPo::getTrendsKeyword).collect(Collectors.toList());
|
|
|
+ if (null != trendsKeywordCollect && trendsKeywordCollect.size() > 0) {
|
|
|
+ for (String trendsKeyword : trendsKeywordCollect) {
|
|
|
+ if (trendsKeyword.contains(",")) {
|
|
|
+ String[] split = trendsKeyword.split(",");
|
|
|
+ for (String s : split) {
|
|
|
+ // 第一次加入, 初始出现系数为 1
|
|
|
+ if (StringUtils.isNotBlank(s) && StringUtils.isNotEmpty(s)) {
|
|
|
+ if (!demandList.contains(s)) {
|
|
|
+ demandList.add(s);
|
|
|
+ map.put(s, 1);
|
|
|
+ clubIdMap.put(s, clubId);
|
|
|
+ } else {
|
|
|
+ // 记录过,出现次数在原来基础上 + 1
|
|
|
+ Integer number = map.get(s) + 1;
|
|
|
+ map.put(s, number);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ // 第一次加入, 初始出现系数为 1
|
|
|
+ if (StringUtils.isNotBlank(trendsKeyword) && StringUtils.isNotEmpty(trendsKeyword)) {
|
|
|
+ if (!demandList.contains(trendsKeyword)) {
|
|
|
+ demandList.add(trendsKeyword);
|
|
|
+ map.put(trendsKeyword, 1);
|
|
|
+ clubIdMap.put(trendsKeyword, clubId);
|
|
|
+ } else {
|
|
|
+ // 记录过,出现次数在原来基础上 + 1
|
|
|
+ Integer number = map.get(trendsKeyword) + 1;
|
|
|
+ map.put(trendsKeyword, number);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 保存动态标签
|
|
|
+ List<String> collect = new ArrayList<>();
|
|
|
+ if (null != clubTrendsKeywordList && clubTrendsKeywordList.size() > 0) {
|
|
|
+ collect = clubTrendsKeywordList.stream().filter(tr -> tr.getClubId().equals(clubId)).map(CmClubLabelPo::getLabel).collect(Collectors.toList());
|
|
|
+ }
|
|
|
+ for (String demand : demandList) {
|
|
|
+ if (!collect.contains(demand)) {
|
|
|
+ // 不存在 添加进机构标签
|
|
|
+ CmClubLabelPo cmClubLabelPo = new CmClubLabelPo();
|
|
|
+ cmClubLabelPo.setLabel(demand);
|
|
|
+ cmClubLabelPo.setClubId(clubIdMap.get(demand));
|
|
|
+ cmClubLabelPo.setDynamicStatus(0);
|
|
|
+ cmClubLabelPo.setAppearNumber(map.get(demand));
|
|
|
+ recordMapper.insertClubLabel(cmClubLabelPo);
|
|
|
+ collect.add(demand);
|
|
|
+ clubTrendsKeywordList.add(cmClubLabelPo);
|
|
|
+ } else {
|
|
|
+ // 存在时在原有基础累加
|
|
|
+ CmClubLabelPo cmClubLabelPo = clubTrendsKeywordList.stream().filter(trend -> trend.getLabel().equals(demand)).collect(Collectors.toList()).get(0);
|
|
|
+ cmClubLabelPo.setAppearNumber(cmClubLabelPo.getAppearNumber() + 1);
|
|
|
+ recordMapper.updateClubLabel(cmClubLabelPo);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 标签
|
|
|
+ demandList = new ArrayList<>();
|
|
|
+ // 出现次数
|
|
|
+ map = new HashMap<>();
|
|
|
+ // 对应机构Id
|
|
|
+ clubIdMap = new HashMap<>();
|
|
|
+ // 静态标签
|
|
|
+ List<String> stateKeywordCollect = clubLabel.stream().map(CmClubLabelPo::getStateKeyword).collect(Collectors.toList());
|
|
|
+ if (null != stateKeywordCollect && stateKeywordCollect.size() > 0) {
|
|
|
+ for (String stateKeyword : stateKeywordCollect) {
|
|
|
+ if (stateKeyword.contains(",")) {
|
|
|
+ String[] split = stateKeyword.split(",");
|
|
|
+ for (String s : split) {
|
|
|
+ // 第一次加入, 初始出现系数为 1
|
|
|
+ if (StringUtils.isNotBlank(s) && StringUtils.isNotEmpty(s)) {
|
|
|
+ if (StringUtils.isNotEmpty(s) && !demandList.contains(s)) {
|
|
|
+ demandList.add(s);
|
|
|
+ map.put(s, 1);
|
|
|
+ clubIdMap.put(s, clubId);
|
|
|
+ } else {
|
|
|
+ // 记录过,出现次数在原来基础上 + 1
|
|
|
+ Integer number = map.get(s) + 1;
|
|
|
+ map.put(s, number);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ // 第一次加入, 初始出现系数为 1
|
|
|
+ if (StringUtils.isNotBlank(stateKeyword) && StringUtils.isNotEmpty(stateKeyword)) {
|
|
|
+ if (!demandList.contains(stateKeyword)){
|
|
|
+ demandList.add(stateKeyword);
|
|
|
+ map.put(stateKeyword, 1);
|
|
|
+ clubIdMap.put(stateKeyword, clubId);
|
|
|
+ } else{
|
|
|
+ // 记录过,出现次数在原来基础上 + 1
|
|
|
+ Integer number = map.get(stateKeyword) + 1;
|
|
|
+ map.put(stateKeyword, number);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ List<String> collect = new ArrayList<>();
|
|
|
+ if (null != clubStateKeywordList && clubStateKeywordList.size() > 0) {
|
|
|
+ collect = clubStateKeywordList.stream().filter(st -> st.getClubId().equals(clubId)).map(CmClubLabelPo::getLabel).collect(Collectors.toList());
|
|
|
+ }
|
|
|
+ // 保存静态标签
|
|
|
+ for (String demand : demandList) {
|
|
|
+ if (!collect.contains(demand)) {
|
|
|
+ CmClubLabelPo cmClubLabelPo = new CmClubLabelPo();
|
|
|
+ cmClubLabelPo.setLabel(demand);
|
|
|
+ cmClubLabelPo.setClubId(clubIdMap.get(demand));
|
|
|
+ cmClubLabelPo.setDynamicStatus(1);
|
|
|
+ cmClubLabelPo.setAppearNumber(map.get(demand));
|
|
|
+ recordMapper.insertClubLabel(cmClubLabelPo);
|
|
|
+ collect.add(demand);
|
|
|
+ clubStateKeywordList.add(cmClubLabelPo);
|
|
|
+ } else {
|
|
|
+ // 存在时在原有基础累加
|
|
|
+ CmClubLabelPo cmClubLabelPo = clubStateKeywordList.stream().filter(trend -> trend.getLabel().equals(demand)).collect(Collectors.toList()).get(0);
|
|
|
+ cmClubLabelPo.setAppearNumber(cmClubLabelPo.getAppearNumber() + 1);
|
|
|
+ recordMapper.updateClubLabel(cmClubLabelPo);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 标签
|
|
|
+ demandList = new ArrayList<>();
|
|
|
+ // 出现次数
|
|
|
+ map = new HashMap<>();
|
|
|
+ // 对应机构Id
|
|
|
+ clubIdMap = new HashMap<>();
|
|
|
+ // 标签类型
|
|
|
+ Map<String, Integer> pageTypeMap = new HashMap<>();
|
|
|
+ // 访问记录
|
|
|
+ List<CmBehaviorRecordPo> behaviorRecordList = recordMapper.getClubBehavior(clubId, startTime, endTime);
|
|
|
+ log.info("behaviorRecordList===="+behaviorRecordList);
|
|
|
+ if (null != behaviorRecordList && behaviorRecordList.size() > 0) {
|
|
|
+ for (CmBehaviorRecordPo behaviorRecord : behaviorRecordList) {
|
|
|
+ if (behaviorRecord.getPageLabel().contains(",")) {
|
|
|
+ String[] split = behaviorRecord.getPageLabel().split(",");
|
|
|
+ for (String s : split) {
|
|
|
+ if (StringUtils.isNotBlank(s) && StringUtils.isNotEmpty(s)) {
|
|
|
+ if (!demandList.contains(s)) {
|
|
|
+ demandList.add(s);
|
|
|
+ map.put(s, Integer.parseInt(behaviorRecord.getNumber()));
|
|
|
+ clubIdMap.put(s, clubId);
|
|
|
+ pageTypeMap.put(s, behaviorRecord.getPageType());
|
|
|
+ } else {
|
|
|
+ // 记录过,出现次数在原来基础上 + 1
|
|
|
+ Integer number = map.get(s) + Integer.parseInt(behaviorRecord.getNumber());
|
|
|
+ map.put(s, number);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ if (StringUtils.isNotBlank(behaviorRecord.getPageLabel()) && StringUtils.isNotEmpty(behaviorRecord.getPageLabel())) {
|
|
|
+ if (!demandList.contains(behaviorRecord.getPageLabel())) {
|
|
|
+ demandList.add(behaviorRecord.getPageLabel());
|
|
|
+ map.put(behaviorRecord.getPageLabel(), Integer.parseInt(behaviorRecord.getNumber()));
|
|
|
+ clubIdMap.put(behaviorRecord.getPageLabel(), clubId);
|
|
|
+ pageTypeMap.put(behaviorRecord.getPageLabel(), behaviorRecord.getPageType());
|
|
|
+ } else{
|
|
|
+ // 记录过,出现次数在原来基础上 + 1
|
|
|
+ Integer number = map.get(behaviorRecord.getPageLabel()) + 1;
|
|
|
+ map.put(behaviorRecord.getPageLabel(), number);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ List<String> trendsCollect = new ArrayList<>();
|
|
|
+ List<String> stateCollect = new ArrayList<>();
|
|
|
+ if (null != clubTrendsKeywordList && clubTrendsKeywordList.size() > 0) {
|
|
|
+ trendsCollect = clubTrendsKeywordList.stream().filter(tr -> tr.getClubId().equals(clubId)).map(CmClubLabelPo::getLabel).collect(Collectors.toList());
|
|
|
+ stateCollect = clubStateKeywordList.stream().filter(st -> st.getClubId().equals(clubId)).map(CmClubLabelPo::getLabel).collect(Collectors.toList());
|
|
|
+ }
|
|
|
+ // 保存访问标签
|
|
|
+ log.info("demandList==访问标签=="+demandList);
|
|
|
+ for (String demand : demandList) {
|
|
|
+ if (!trendsCollect.contains(demand) && !stateCollect.contains(demand)) {
|
|
|
+ CmClubLabelPo cmClubLabelPo = new CmClubLabelPo();
|
|
|
+ cmClubLabelPo.setLabel(demand);
|
|
|
+ cmClubLabelPo.setClubId(clubIdMap.get(demand));
|
|
|
+ cmClubLabelPo.setAppearNumber(map.get(demand));
|
|
|
+ cmClubLabelPo.setPageType(pageTypeMap.get(demand));
|
|
|
+ if (trendsKeywordList.contains(demand)) {
|
|
|
+ cmClubLabelPo.setDynamicStatus(0);
|
|
|
+ recordMapper.insertClubLabel(cmClubLabelPo);
|
|
|
+ trendsCollect.add(demand);
|
|
|
+ clubTrendsKeywordList.add(cmClubLabelPo);
|
|
|
+ } else if (stateKeywordList.contains(demand)) {
|
|
|
+ cmClubLabelPo.setDynamicStatus(1);
|
|
|
+ recordMapper.insertClubLabel(cmClubLabelPo);
|
|
|
+ stateCollect.add(demand);
|
|
|
+ clubStateKeywordList.add(cmClubLabelPo);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ // 存在时在原有基础累加
|
|
|
+ if (trendsCollect.contains(demand)) {
|
|
|
+ CmClubLabelPo cmClubLabelPo = clubTrendsKeywordList.stream().filter(trend -> trend.getLabel().equals(demand)).collect(Collectors.toList()).get(0);
|
|
|
+ cmClubLabelPo.setAppearNumber(cmClubLabelPo.getAppearNumber() + 1);
|
|
|
+ recordMapper.updateClubLabel(cmClubLabelPo);
|
|
|
+ }
|
|
|
+ if (stateCollect.contains(demand)) {
|
|
|
+ CmClubLabelPo cmClubLabelPo = clubStateKeywordList.stream().filter(trend -> trend.getLabel().equals(demand)).collect(Collectors.toList()).get(0);
|
|
|
+ cmClubLabelPo.setAppearNumber(cmClubLabelPo.getAppearNumber() + 1);
|
|
|
+ recordMapper.updateClubLabel(cmClubLabelPo);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ log.info("机构需求标签====统计结束");
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
// 获取IP对应地址 ---- 太平洋
|
|
|
public static String recordIp(String ip) throws IOException {
|