Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
X
xyqb-user2
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
head_group
xyqb-user2
Commits
e0365af5
Commit
e0365af5
authored
Mar 12, 2018
by
技术部-任文超
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
广点通的注册转化消息上报
parent
19410ce1
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
96 additions
and
67 deletions
+96
-67
RegisterMqConfig.java
...n/java/cn/quantgroup/xyqb/config/mq/RegisterMqConfig.java
+32
-1
UserController.java
...ntgroup/xyqb/controller/internal/user/UserController.java
+13
-52
IRegisterMqService.java
...ava/cn/quantgroup/xyqb/service/mq/IRegisterMqService.java
+3
-3
IRegisterMqServiceImpl.java
...antgroup/xyqb/service/mq/Impl/IRegisterMqServiceImpl.java
+22
-11
MqUtils.java
src/main/java/cn/quantgroup/xyqb/util/MqUtils.java
+26
-0
No files found.
src/main/java/cn/quantgroup/xyqb/config/mq/RegisterMqConfig.java
View file @
e0365af5
...
...
@@ -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
;
}
}
src/main/java/cn/quantgroup/xyqb/controller/internal/user/UserController.java
View file @
e0365af5
...
...
@@ -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
);
...
...
src/main/java/cn/quantgroup/xyqb/service/mq/IRegisterMqService.java
View file @
e0365af5
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
);
}
src/main/java/cn/quantgroup/xyqb/service/mq/Impl/IRegisterMqServiceImpl.java
View file @
e0365af5
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
(
UserRegisterMqMessag
e
message
){
public
void
send
(
Serializabl
e
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
);
}
}
src/main/java/cn/quantgroup/xyqb/util/MqUtils.java
View file @
e0365af5
...
...
@@ -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
{
}
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment