package com.nova.sankuai.controller.v1;
|
|
import com.alibaba.fastjson.JSONObject;
|
import com.nova.sankuai.domain.api.baidu.BaiduDto;
|
import com.nova.sankuai.domain.api.baidu.BaiduWrapperDto;
|
import com.nova.sankuai.domain.entity.ChannelLog;
|
import com.nova.sankuai.domain.entity.Customer;
|
import com.nova.sankuai.domain.enums.SourceTypeEnum;
|
import com.nova.sankuai.infra.constants.ResultCode;
|
import com.nova.sankuai.infra.utils.ResultJson;
|
import com.nova.sankuai.service.IChannelInfoService;
|
import com.nova.sankuai.service.IChannelLogService;
|
import com.nova.sankuai.service.ICustomerService;
|
import io.swagger.annotations.Api;
|
import io.swagger.annotations.ApiOperation;
|
import lombok.AllArgsConstructor;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.web.bind.annotation.PostMapping;
|
import org.springframework.web.bind.annotation.RequestBody;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RestController;
|
|
import java.util.regex.Matcher;
|
import java.util.regex.Pattern;
|
|
/**
|
* @author weikangdi
|
*/
|
@Api(tags = "百度对接")
|
@RestController
|
@RequestMapping(value = "/api/v1/baidu")
|
@Slf4j
|
@AllArgsConstructor
|
public class BaiduController {
|
|
private final ICustomerService customerService;
|
|
private final IChannelLogService channelLogService;
|
|
private final IChannelInfoService channelInfoService;
|
|
|
@PostMapping(value = "/customerImport")
|
@ApiOperation(value = "获取百度推广数据")
|
public ResultJson customerImport(@RequestBody BaiduWrapperDto obj) {
|
String content = obj.getData().toString();
|
String appId = obj.getAppid().toString();
|
ResultJson checkResult = channelInfoService.checkChannel(appId, content);
|
if (checkResult != null) {
|
return checkResult;
|
}
|
log.info("百度推广数据:" + content);
|
String reg = "\\{([a-zA-Z]+)\\s*=\\s*([^={}]*?),\\s*([a-zA-Z]+)\\s*=\\s*(.*?),\\s*([a-zA-Z]+)\\s*=\\s*(.*?)}";
|
Pattern p = Pattern.compile(reg);
|
Matcher m = p.matcher(content);
|
StringBuilder sb = new StringBuilder();
|
sb.append("{'");
|
while (m.find()) {
|
String group = m.group().split("type=")[1];
|
sb.append(group.split(",")[0] + "':'");
|
sb.append(group.split("value=")[1].replace("}", "") + "','");
|
}
|
String jsonStr = sb.substring(0, sb.lastIndexOf(",")) + "}";
|
BaiduDto baiduDto = null;
|
try {
|
baiduDto = JSONObject.parseObject(jsonStr, BaiduDto.class);
|
Customer customer = customerService.addBaiDuCustomer(baiduDto);
|
channelLogService.createImportLog(SourceTypeEnum.BaiDu.getCode(), ChannelLog.SUCCESS, customer.getId(), jsonStr);
|
return ResultJson.success();
|
} catch (Exception e) {
|
log.error("Baidu数据失败");
|
log.error("获取到的百度推送数据:" + content);
|
channelLogService.createImportLog(SourceTypeEnum.BaiDu.getCode(), ChannelLog.FAIL, null, jsonStr);
|
return ResultJson.failure(ResultCode.BAD_REQUEST);
|
}
|
}
|
}
|