Commit e0365af5 authored by 技术部-任文超's avatar 技术部-任文超

广点通的注册转化消息上报

parent 19410ce1
......@@ -24,6 +24,12 @@ public class RegisterMqConfig {
private String queueName;
@Value("${register.rabbitmq.exchange}")
private String registerMqExchange;
@Value("${register.rabbitmq.queue.qq_gdt}")
private String queueName4Gdt;
@Value("${register.rabbitmq.routing_key.qq_gdt}")
private String routingKey4Gdt;
@Value("${register.rabbitmq.exchange.qq_gdt}")
private String exchange4Gdt;
@Value("${register.rabbitmq.connection.host}")
private String host;
......@@ -75,11 +81,36 @@ public class RegisterMqConfig {
return binding;
}
@Bean(name = "registerRabbitTemplate")
public RabbitTemplate registerTemplate(@Qualifier("registerMqFactory") ConnectionFactory registerMqFactory) {
RabbitTemplate template = new RabbitTemplate(registerMqFactory);
template.setExchange(registerMqExchange);
return template;
}
@Bean(name = "registerMqExchange4Gdt")
public FanoutExchange registerMqExchange4Gdt() {
return new FanoutExchange(exchange4Gdt);
}
@Bean(name = "registerMqQueue4Gdt")
public Queue registerMqQueue4Gdt() {
return new Queue(queueName4Gdt);
}
@Bean(name = "registerMqBinding4Gdt")
public Binding registerMqBinding4Gdt(@Qualifier("registerMqAmqpAdmin")AmqpAdmin registerMqAmqpAdmin, @Qualifier("registerMqQueue4Gdt")Queue registerMqQueue4Gdt, @Qualifier("registerMqExchange4Gdt")FanoutExchange registerMqExchange4Gdt) {
Binding binding = BindingBuilder.bind(registerMqQueue4Gdt).to(registerMqExchange4Gdt);
registerMqAmqpAdmin.declareBinding(binding);
return binding;
}
@Bean(name = "registerRabbitTemplate4Gdt")
public RabbitTemplate registerTemplate4Gdt(@Qualifier("registerMqFactory") ConnectionFactory registerMqFactory) {
RabbitTemplate template = new RabbitTemplate(registerMqFactory);
template.setExchange(exchange4Gdt);
return template;
}
}
......@@ -88,52 +88,6 @@ public class UserController implements IBaseController {
return JsonResult.buildSuccessResult("", getCurrentUserFromRedis());
}
/**
* 接收QQ广点通的授权下发
* @param authorization_code QQ广点通自动下发的授权码
* @param state 请求校验参数,由量化派填写,用于接收授权码时校验,单次有效
* @param request
* @return
*/
@RequestMapping("/qq_gdt_OAuth20_code")
public JsonResult qqGdtOauth20CodeCallback(@RequestParam(required = false) String authorization_code, String state, HttpServletRequest request) {
// 记录下发来源IP
String ip = getIp();
// 打印下发参数
Map<String, String[]> response = request.getParameterMap();
LOGGER.info("[qq_gdt] 接收QQ广点通的授权下发,ip:{},authorization_code:{},state:{},data:【{}】", ip, authorization_code, state, JSON.toJSONString(response));
if(!Objects.isNull(state)){
// 合法,接收
return JsonResult.buildSuccessResult("OK", "");
}else{
// 非法,丢弃
return JsonResult.buildErrorStateResult("NO", "");
}
}
/**
* 重新刷新QQ广点通的授权下发
* @param authorization_code QQ广点通自动下发的授权码
* @param state 请求校验参数,由量化派填写,用于接收授权码时校验,单次有效
* @param request
* @return
*/
@RequestMapping("/qq_gdt_OAuth20_code")
public JsonResult qqGdtOauth20CodeRegain(@RequestParam(required = false) String authorization_code, String state, HttpServletRequest request) {
// 记录下发来源IP
String ip = getIp();
// 打印下发参数
Map<String, String[]> response = request.getParameterMap();
LOGGER.info("[qq_gdt] 接收QQ广点通的授权下发,ip:{},authorization_code:{},state:{},data:【{}】", ip, authorization_code, state, JSON.toJSONString(response));
if(!Objects.isNull(state)){
// 合法,接收
return JsonResult.buildSuccessResult("OK", "");
}else{
// 非法,丢弃
return JsonResult.buildErrorStateResult("NO", "");
}
}
/**
* 登录(账号 + 密码)
* 密码错误达到限定次数时执行图形验证码校验
......@@ -204,10 +158,12 @@ public class UserController implements IBaseController {
@RequestParam(required = false, defaultValue = "1") Long channelId, String appChannel,
@RequestParam(required = false, defaultValue = "1") Long createdFrom,
@RequestParam(required = false,defaultValue = "xyqb") String key,
@RequestParam(required = false)Long btRegisterChannelId,
@RequestParam(required = false) String dimension ,HttpServletRequest request) {
LOGGER.info("login/fastV1 -> channelId:{},appChennel:{},createdFrom:{},key:{},btRegisterChannelId:{},dimension:{}",channelId, appChannel, createdFrom, key, btRegisterChannelId, dimension);
return loginFast(channelId, appChannel, createdFrom, key, btRegisterChannelId, dimension, request);
@RequestParam(required = false) Long btRegisterChannelId,
@RequestParam(required = false) String dimension,
@RequestParam(name = "click_id", required = false) String clickId,
HttpServletRequest request) {
LOGGER.info("login/fastV1 -> channelId:{},appChennel:{},createdFrom:{},key:{},btRegisterChannelId:{},dimension:{},clickId:{}",channelId, appChannel, createdFrom, key, btRegisterChannelId, dimension, clickId);
return loginFast(channelId, appChannel, createdFrom, key, btRegisterChannelId, dimension, clickId, request);
}
@RequestMapping("/login/fast")
......@@ -216,9 +172,11 @@ public class UserController implements IBaseController {
@RequestParam(required = false, defaultValue = "1") Long createdFrom,
@RequestParam(required = false,defaultValue = "xyqb") String key,
@RequestParam(required = false)Long btRegisterChannelId,
@RequestParam(required = false) String dimension ,HttpServletRequest request) {
@RequestParam(required = false) String dimension,
@RequestParam(name = "click_id", required = false) String clickId,
HttpServletRequest request) {
Map<String, JsonResult> validMap = getHeaderParam(request);
LOGGER.info("login/fast -> channelId:{},appChannel:{},createdFrom:{},btRegisterChannelId:{},key:{},dimension:{}",channelId,appChannel,createdFrom,btRegisterChannelId,key,dimension);
LOGGER.info("login/fast -> channelId:{},appChannel:{},createdFrom:{},btRegisterChannelId:{},key:{},dimension:{},clickId:{}",channelId,appChannel,createdFrom,btRegisterChannelId,key,dimension, clickId);
if (null != validMap.get("fail")) {
return validMap.get("fail");
}
......@@ -241,11 +199,14 @@ public class UserController implements IBaseController {
return JsonResult.buildErrorStateResult("登录失败", null);
}
UserStatistics statistics = null;
JSONObject qqGdt = null;
if (user == null) {
user = userRegisterService.register(phoneNo, channelId, createdFrom, appChannel,btRegisterChannelId,dimension);
if (user == null) {
throw new UserNotExistException("用户未找到");
}
//广点通转化注册 - 发送消息 - 方法内过滤
MqUtils.sendRegisterMessageForGdt(phoneNo, clickId);
statistics = new UserStatistics(user,dimension,2,channelId);
}else{
statistics = new UserStatistics(user,dimension,3,channelId);
......
package cn.quantgroup.xyqb.service.mq;
import cn.quantgroup.xyqb.model.UserRegisterMqMessage;
import cn.quantgroup.xyqb.model.UserStatistics;
import java.io.Serializable;
/**
* Created by xuran on 2017/9/7.
* 用户注册信息广播
*/
public interface IRegisterMqService {
void send(UserRegisterMqMessage message);
void send(Serializable message);
void send4Gdt(Serializable message);
}
package cn.quantgroup.xyqb.service.mq.Impl;
import cn.quantgroup.xyqb.model.UserRegisterMqMessage;
import cn.quantgroup.xyqb.service.mq.IRegisterMqService;
import com.alibaba.fastjson.JSONObject;
import org.slf4j.Logger;
......@@ -12,6 +11,8 @@ import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import java.io.Serializable;
/**
* Created by xuran on 2017/9/7.
*/
......@@ -22,34 +23,44 @@ public class IRegisterMqServiceImpl implements IRegisterMqService {
@Autowired
@Qualifier("registerRabbitTemplate")
RabbitTemplate registerRabTemplate;
@Autowired
@Qualifier("registerRabbitTemplate4Gdt")
RabbitTemplate registerRabbitTemplate4Gdt;
@Autowired
@Qualifier(value = "registerMqQueue")
Queue registerMqQueue;
/**
* 发送用登陆统计信息
* @param message 订单信息
*/
@Override
@Async
public void send(UserRegisterMqMessage message){
public void send(Serializable message){
if(null==message){
LOGGER.error("广播用户注册消息不能为空");
}
LOGGER.info("广播用户注册消息,message={}",message);
String msg = JSONObject.toJSONString(message);
registerRabTemplate.convertAndSend(msg);
LOGGER.info("广播用户注册消息,message={}",msg);
}
/**
* 发送用登陆统计信息
* @param message 订单信息
*/
@Override
@Async
public void send4Gdt(Serializable message){
if(null==message){
LOGGER.error("广点通用户注册消息不能为空");
}
LOGGER.info("广点通用户注册消息,message={}",message);
String msg = JSONObject.toJSONString(message);
registerRabbitTemplate4Gdt.convertAndSend(msg);
LOGGER.info("广点通用户注册消息,message={}",msg);
}
}
......@@ -6,7 +6,9 @@ import cn.quantgroup.xyqb.model.UserRet;
import cn.quantgroup.xyqb.model.UserStatistics;
import cn.quantgroup.xyqb.service.mq.IRegisterMqService;
import cn.quantgroup.xyqb.service.mq.IVestService;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
/**
* Created by xuran on 2017/6/23.
......@@ -26,6 +28,7 @@ public class MqUtils {
vest, e);
}
}
/**
* 用户注册消息进行广播
* @param message
......@@ -50,4 +53,27 @@ public class MqUtils {
MqUtils.sendRegisterMessage(registerMqMessage);
return userRet;
}
/**
* 腾讯广点通转化的用户注册消息推送
* @param phoneNo - 转化成功的用户手机号
* @param clickId - 转化成功的点击动作唯一标识
*/
public static void sendRegisterMessageForGdt(String phoneNo, String clickId){
if(ValidationUtil.validatePhoneNo(phoneNo) && StringUtils.isNotBlank(clickId)){
//填充广点通消息
JSONObject message = new JSONObject();
message.put("phoneNo", phoneNo);
message.put("clickId", clickId);
try {
IRegisterMqService rService = ApplicationContextHolder.getBean("registerMqService");
rService.send4Gdt(message);
} catch (Exception e) {
log.error("[MQUtils][MQUtils_exception]发送广点通用户注册信息,message={},error={}",
message, e);
}
}else{
}
}
}
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