123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- package com.fdkankan.tracking.service.impl;
- import cn.hutool.core.bean.BeanUtil;
- import cn.hutool.core.collection.CollUtil;
- import cn.hutool.core.util.StrUtil;
- import com.alibaba.fastjson.JSON;
- import com.alibaba.fastjson.JSONObject;
- import com.fdkankan.elasticsearch.service.DocumentService;
- import com.fdkankan.redis.constant.RedisKey;
- import com.fdkankan.redis.util.RedisUtil;
- import com.fdkankan.tracking.bean.TrackingBody;
- import com.fdkankan.tracking.vo.TrackingParamVo;
- import com.fdkankan.tracking.service.TrackingService;
- import com.fdkankan.web.response.ResultData;
- import com.fdkankan.web.util.WebUtil;
- import lombok.extern.slf4j.Slf4j;
- import org.elasticsearch.rest.RestStatus;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import org.springframework.util.ObjectUtils;
- import javax.servlet.http.HttpServletRequest;
- import java.net.URI;
- import java.util.*;
- import java.util.stream.Collectors;
- @Slf4j
- @Service
- public class TrackingServiceImpl implements TrackingService {
- @Autowired
- private DocumentService documentService;
- @Autowired
- private RedisUtil redisUtil;
- @Override
- public ResultData saveLog(TrackingParamVo param, HttpServletRequest request) throws Exception {
- String index = param.getProduct();
- if(StrUtil.isEmpty(index)){
- return ResultData.ok();
- }
- TrackingBody trackingBody = param.getPayload();
- if(ObjectUtils.isEmpty(trackingBody)){
- return ResultData.ok();
- }
- String appId = trackingBody.getAppId();
- appId = index.concat(appId.substring(appId.indexOf("-")));
- trackingBody.setAppId(appId);
- String redisIndex = redisUtil.hget(RedisKey.TRACK_APPID, appId);
- if(StrUtil.isEmpty(redisIndex) || !redisIndex.equals(index)){
- return ResultData.ok();
- }
- trackingBody.setUserAgent(request.getHeader("user-agent"));
- trackingBody.setUserIP(WebUtil.getIpAddress(request));
- trackingBody.setTime(Calendar.getInstance().getTime());
- trackingBody.setSource("FRONT");
- JSONObject requestData = trackingBody.getRequestData();
- if(Objects.nonNull(requestData)){
- Object data = trackingBody.getRequestData().get("data");
- //如果是数组,需要拆解成多条数据入库
- if(data instanceof Iterable){
- List<LinkedHashMap> dataList = (List<LinkedHashMap>)data;
- List<JSONObject> list = dataList.stream().map(item -> {
- TrackingBody subBody = BeanUtil.copyProperties(trackingBody, TrackingBody.class);
- subBody.getRequestData().put("data", item);
- return JSON.parseObject(JSON.toJSONString(subBody));
- }).collect(Collectors.toList());
- if(CollUtil.isEmpty(list)){
- return ResultData.ok("data为空");
- }
- RestStatus restStatus = documentService.batchImportGoodsData(list, index);
- return ResultData.ok(restStatus.getStatus());
- }
- }
- RestStatus restStatus = documentService.addDocument(index, null, JSON.toJSONString(trackingBody));
- return ResultData.ok(restStatus.getStatus());
- }
- public static void main(String[] args) {
- String appid = "7b5958d5-1ae6-4ad5-8a87-5fc8a4b92999";
- System.out.println(appid.substring(appid.indexOf("-")));
- }
- }
|