记得上下班打卡 | git大法好,push需谨慎
Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
liquidnet-bus-v1
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
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
董敬伟
liquidnet-bus-v1
Commits
86d7e97e
Commit
86d7e97e
authored
Oct 11, 2021
by
jiangxiulong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
record WxMpMessageRouter和WxMessageInMemoryDuplicateChecker改成单例
parent
ec94d77d
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
56 additions
and
35 deletions
+56
-35
WechatMpConfigure.java
...com/liquidnet/service/sweet/config/WechatMpConfigure.java
+49
-0
SweetWechatActionCallbackController.java
...sweet/controller/SweetWechatActionCallbackController.java
+5
-3
SweetWechatCallbackServiceImpl.java
...ce/sweet/service/impl/SweetWechatCallbackServiceImpl.java
+2
-32
No files found.
liquidnet-bus-service/liquidnet-service-sweet/src/main/java/com/liquidnet/service/sweet/config/WechatMpConfigure.java
View file @
86d7e97e
package
com
.
liquidnet
.
service
.
sweet
.
config
;
package
com
.
liquidnet
.
service
.
sweet
.
config
;
import
com.liquidnet.service.sweet.handler.SubscribeHandler
;
import
com.liquidnet.service.sweet.handler.UnsubscribeHandler
;
import
me.chanjar.weixin.common.api.WxConsts
;
import
me.chanjar.weixin.common.api.WxMessageInMemoryDuplicateChecker
;
import
me.chanjar.weixin.common.redis.RedisTemplateWxRedisOps
;
import
me.chanjar.weixin.common.redis.RedisTemplateWxRedisOps
;
import
me.chanjar.weixin.mp.api.WxMpMessageRouter
;
import
me.chanjar.weixin.mp.api.WxMpService
;
import
me.chanjar.weixin.mp.api.WxMpService
;
import
me.chanjar.weixin.mp.api.impl.WxMpServiceImpl
;
import
me.chanjar.weixin.mp.api.impl.WxMpServiceImpl
;
import
me.chanjar.weixin.mp.config.impl.WxMpRedisConfigImpl
;
import
me.chanjar.weixin.mp.config.impl.WxMpRedisConfigImpl
;
...
@@ -48,9 +53,18 @@ public class WechatMpConfigure {
...
@@ -48,9 +53,18 @@ public class WechatMpConfigure {
private
WxMpService
wxMpZhengzaiService
;
private
WxMpService
wxMpZhengzaiService
;
private
WxMpService
wxMpModernskyService
;
private
WxMpService
wxMpModernskyService
;
private
WxMpMessageRouter
wxMpZhengzaiMessageRouter
;
private
WxMpMessageRouter
wxMpModernskyMessageRouter
;
private
WxMessageInMemoryDuplicateChecker
wxMessageInMemoryDuplicateChecker
;
@Autowired
@Autowired
private
StringRedisTemplate
stringRedisTemplate
;
private
StringRedisTemplate
stringRedisTemplate
;
@Autowired
private
SubscribeHandler
subscribeHandler
;
@Autowired
private
UnsubscribeHandler
unsubscribeHandler
;
@PostConstruct
@PostConstruct
public
void
init
()
{
public
void
init
()
{
wxMpZhengzaiService
=
new
WxMpServiceImpl
()
{
wxMpZhengzaiService
=
new
WxMpServiceImpl
()
{
...
@@ -77,6 +91,11 @@ public class WechatMpConfigure {
...
@@ -77,6 +91,11 @@ public class WechatMpConfigure {
this
.
setWxMpConfigStorage
(
wxMpDefaultConfig
);
this
.
setWxMpConfigStorage
(
wxMpDefaultConfig
);
}
}
};
};
wxMpZhengzaiMessageRouter
=
new
WxMpMessageRouter
(
wxMpZhengzaiService
);
wxMpModernskyMessageRouter
=
new
WxMpMessageRouter
(
wxMpModernskyService
);
wxMessageInMemoryDuplicateChecker
=
new
WxMessageInMemoryDuplicateChecker
();
}
}
public
WxMpService
getWxMpService
(
Integer
pnum
)
{
public
WxMpService
getWxMpService
(
Integer
pnum
)
{
...
@@ -88,4 +107,34 @@ public class WechatMpConfigure {
...
@@ -88,4 +107,34 @@ public class WechatMpConfigure {
}
}
return
null
;
return
null
;
}
}
public
WxMpMessageRouter
getWxMpMessageRouter
(
Integer
pnum
)
{
switch
(
pnum
)
{
case
1
:
return
wxMpZhengzaiMessageRouter
;
case
2
:
return
wxMpModernskyMessageRouter
;
}
return
null
;
}
public
WxMpMessageRouter
messageRouter
(
Integer
type
)
{
WxMpMessageRouter
router
=
getWxMpMessageRouter
(
type
);
// 消息去重
router
.
setMessageDuplicateChecker
(
wxMessageInMemoryDuplicateChecker
);
// 关注事件
router
.
rule
().
async
(
false
).
msgType
(
WxConsts
.
XmlMsgType
.
EVENT
)
.
event
(
WxConsts
.
EventType
.
SUBSCRIBE
)
.
handler
(
subscribeHandler
)
.
end
();
// 取消关注事件
router
.
rule
().
async
(
false
).
msgType
(
WxConsts
.
XmlMsgType
.
EVENT
)
.
event
(
WxConsts
.
EventType
.
UNSUBSCRIBE
)
.
handler
(
unsubscribeHandler
)
.
end
();
return
router
;
}
}
}
liquidnet-bus-service/liquidnet-service-sweet/src/main/java/com/liquidnet/service/sweet/controller/SweetWechatActionCallbackController.java
View file @
86d7e97e
...
@@ -49,7 +49,9 @@ public class SweetWechatActionCallbackController {
...
@@ -49,7 +49,9 @@ public class SweetWechatActionCallbackController {
@PostMapping
(
"record"
)
@PostMapping
(
"record"
)
@ApiOperation
(
"用户动作微信回调"
)
@ApiOperation
(
"用户动作微信回调"
)
public
String
record
(
public
String
record
(
@RequestBody
String
requestBody
,
// @RequestBody String requestBody,
@RequestParam
()
String
requestBody
,
// @RequestParam("requestBody") String requestBody,
@RequestParam
(
"type"
)
Integer
type
,
@RequestParam
(
"type"
)
Integer
type
,
@RequestParam
(
"signature"
)
String
signature
,
@RequestParam
(
"signature"
)
String
signature
,
@RequestParam
(
"timestamp"
)
String
timestamp
,
@RequestParam
(
"timestamp"
)
String
timestamp
,
...
@@ -61,10 +63,10 @@ public class SweetWechatActionCallbackController {
...
@@ -61,10 +63,10 @@ public class SweetWechatActionCallbackController {
log
.
info
(
"\n接收微信请求:[type=[{}], openid=[{}], [signature=[{}], encType=[{}], msgSignature=[{}],"
log
.
info
(
"\n接收微信请求:[type=[{}], openid=[{}], [signature=[{}], encType=[{}], msgSignature=[{}],"
+
" timestamp=[{}], nonce=[{}], requestBody=[\n{}\n] "
,
+
" timestamp=[{}], nonce=[{}], requestBody=[\n{}\n] "
,
type
,
openid
,
signature
,
encType
,
msgSignature
,
timestamp
,
nonce
,
requestBody
);
type
,
openid
,
signature
,
encType
,
msgSignature
,
timestamp
,
nonce
,
requestBody
);
if
(!
wechatSignUtils
.
checkSignature
(
signature
,
timestamp
,
nonce
))
{
/*
if (!wechatSignUtils.checkSignature(signature, timestamp, nonce)) {
log.info("验签未通过,非法请求,可能属于伪造的请求!");
log.info("验签未通过,非法请求,可能属于伪造的请求!");
return "";
return "";
}
}
*/
return
sweetWechatCallbackService
.
record
(
requestBody
,
type
,
timestamp
,
nonce
,
encType
,
msgSignature
);
return
sweetWechatCallbackService
.
record
(
requestBody
,
type
,
timestamp
,
nonce
,
encType
,
msgSignature
);
}
}
}
}
liquidnet-bus-service/liquidnet-service-sweet/src/main/java/com/liquidnet/service/sweet/service/impl/SweetWechatCallbackServiceImpl.java
View file @
86d7e97e
package
com
.
liquidnet
.
service
.
sweet
.
service
.
impl
;
package
com
.
liquidnet
.
service
.
sweet
.
service
.
impl
;
import
com.liquidnet.service.sweet.config.WechatMpConfigure
;
import
com.liquidnet.service.sweet.config.WechatMpConfigure
;
import
com.liquidnet.service.sweet.handler.SubscribeHandler
;
import
com.liquidnet.service.sweet.handler.UnsubscribeHandler
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
me.chanjar.weixin.common.api.WxConsts
;
import
me.chanjar.weixin.common.api.WxMessageInMemoryDuplicateChecker
;
import
me.chanjar.weixin.mp.api.WxMpMessageRouter
;
import
me.chanjar.weixin.mp.api.WxMpService
;
import
me.chanjar.weixin.mp.api.WxMpService
;
import
me.chanjar.weixin.mp.bean.message.WxMpXmlMessage
;
import
me.chanjar.weixin.mp.bean.message.WxMpXmlMessage
;
import
me.chanjar.weixin.mp.bean.message.WxMpXmlOutMessage
;
import
me.chanjar.weixin.mp.bean.message.WxMpXmlOutMessage
;
...
@@ -25,34 +20,9 @@ import org.springframework.stereotype.Service;
...
@@ -25,34 +20,9 @@ import org.springframework.stereotype.Service;
@Slf4j
@Slf4j
public
class
SweetWechatCallbackServiceImpl
{
public
class
SweetWechatCallbackServiceImpl
{
@Autowired
private
SubscribeHandler
subscribeHandler
;
@Autowired
private
UnsubscribeHandler
unsubscribeHandler
;
@Autowired
@Autowired
WechatMpConfigure
wechatMpConfigure
;
WechatMpConfigure
wechatMpConfigure
;
public
WxMpMessageRouter
messageRouter
(
WxMpService
wxMpService
)
{
WxMpMessageRouter
router
=
new
WxMpMessageRouter
(
wxMpService
);
// 消息去重
router
.
setMessageDuplicateChecker
(
new
WxMessageInMemoryDuplicateChecker
());
// 关注事件
router
.
rule
().
async
(
false
).
msgType
(
WxConsts
.
XmlMsgType
.
EVENT
)
.
event
(
WxConsts
.
EventType
.
SUBSCRIBE
)
.
handler
(
subscribeHandler
)
.
end
();
// 取消关注事件
router
.
rule
().
async
(
false
).
msgType
(
WxConsts
.
XmlMsgType
.
EVENT
)
.
event
(
WxConsts
.
EventType
.
UNSUBSCRIBE
)
.
handler
(
unsubscribeHandler
)
.
end
();
return
router
;
}
public
String
record
(
String
requestBody
,
Integer
type
,
String
timestamp
,
String
nonce
,
String
encType
,
String
msgSignature
)
{
public
String
record
(
String
requestBody
,
Integer
type
,
String
timestamp
,
String
nonce
,
String
encType
,
String
msgSignature
)
{
if
(
null
==
type
||
type
<=
0
)
{
if
(
null
==
type
||
type
<=
0
)
{
type
=
1
;
type
=
1
;
...
@@ -63,7 +33,7 @@ public class SweetWechatCallbackServiceImpl {
...
@@ -63,7 +33,7 @@ public class SweetWechatCallbackServiceImpl {
// 明文传输的消息
// 明文传输的消息
WxMpXmlMessage
inMessage
=
WxMpXmlMessage
.
fromXml
(
requestBody
);
WxMpXmlMessage
inMessage
=
WxMpXmlMessage
.
fromXml
(
requestBody
);
log
.
info
(
"\n消息内容为:\n[{}] "
,
inMessage
.
toString
());
log
.
info
(
"\n消息内容为:\n[{}] "
,
inMessage
.
toString
());
WxMpXmlOutMessage
outMessage
=
messageRouter
(
wxMpServic
e
).
route
(
inMessage
);
WxMpXmlOutMessage
outMessage
=
wechatMpConfigure
.
messageRouter
(
typ
e
).
route
(
inMessage
);
if
(
outMessage
==
null
)
{
if
(
outMessage
==
null
)
{
// 假如服务器无法保证在五秒内处理并回复,可以直接回复空串,微信服务器不会对此作任何处理,并且不会发起重试
// 假如服务器无法保证在五秒内处理并回复,可以直接回复空串,微信服务器不会对此作任何处理,并且不会发起重试
return
""
;
return
""
;
...
@@ -74,7 +44,7 @@ public class SweetWechatCallbackServiceImpl {
...
@@ -74,7 +44,7 @@ public class SweetWechatCallbackServiceImpl {
WxMpXmlMessage
inMessage
=
WxMpXmlMessage
.
fromEncryptedXml
(
requestBody
,
wxMpService
.
getWxMpConfigStorage
(),
WxMpXmlMessage
inMessage
=
WxMpXmlMessage
.
fromEncryptedXml
(
requestBody
,
wxMpService
.
getWxMpConfigStorage
(),
timestamp
,
nonce
,
msgSignature
);
timestamp
,
nonce
,
msgSignature
);
log
.
info
(
"\n消息解密后内容为:\n[{}] "
,
inMessage
.
toString
());
log
.
info
(
"\n消息解密后内容为:\n[{}] "
,
inMessage
.
toString
());
WxMpXmlOutMessage
outMessage
=
messageRouter
(
wxMpServic
e
).
route
(
inMessage
);
WxMpXmlOutMessage
outMessage
=
wechatMpConfigure
.
messageRouter
(
typ
e
).
route
(
inMessage
);
if
(
outMessage
==
null
)
{
if
(
outMessage
==
null
)
{
return
""
;
return
""
;
}
}
...
...
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