记得上下班打卡 | 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
e4522b19
Commit
e4522b19
authored
Sep 22, 2021
by
jiangxiulong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
consumer sweet add template message
parent
bf16e5f5
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
291 additions
and
0 deletions
+291
-0
WechatMaConfigure.java
...rvice/consumer/sweet/config/wechat/WechatMaConfigure.java
+49
-0
WechatMpConfigure.java
...rvice/consumer/sweet/config/wechat/WechatMpConfigure.java
+91
-0
SweetOpenSendMsgParam.java
...t/service/consumer/sweet/param/SweetOpenSendMsgParam.java
+48
-0
SweetWechatTemplateServiceImpl.java
...er/sweet/service/impl/SweetWechatTemplateServiceImpl.java
+103
-0
No files found.
liquidnet-bus-service/liquidnet-service-consumer-all/liquidnet-service-consumer-sweet/src/main/java/com/liquidnet/service/consumer/sweet/config/wechat/WechatMaConfigure.java
0 → 100644
View file @
e4522b19
package
com
.
liquidnet
.
service
.
consumer
.
sweet
.
config
.
wechat
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.context.annotation.Configuration
;
@Configuration
public
class
WechatMaConfigure
{
private
static
String
appletAppidZhengzai
;
private
static
String
appletAppidStrawberry
;
private
static
String
appletAppidFive
;
private
static
String
appletAppidMdsk
;
@Value
(
"${liquidnet.wechat.applet.zhengzai.appid}"
)
public
void
setAppletAppidZhengzai
(
String
appletAppidZhengzai
)
{
WechatMaConfigure
.
appletAppidZhengzai
=
appletAppidZhengzai
;
}
@Value
(
"${liquidnet.wechat.applet.strawberry.appid}"
)
public
void
setAppletAppidStrawberry
(
String
appletAppidStrawberry
)
{
WechatMaConfigure
.
appletAppidStrawberry
=
appletAppidStrawberry
;
}
@Value
(
"${liquidnet.wechat.applet.five.appid}"
)
public
void
setAppletAppidFive
(
String
appletAppidFive
)
{
WechatMaConfigure
.
appletAppidFive
=
appletAppidFive
;
}
@Value
(
"${liquidnet.wechat.applet.mdsk.appid}"
)
public
void
setAppletAppidMdsk
(
String
appletAppidMdsk
)
{
WechatMaConfigure
.
appletAppidMdsk
=
appletAppidMdsk
;
}
public
String
getWxMaAppid
(
Integer
anum
)
{
switch
(
anum
)
{
case
4
:
return
appletAppidZhengzai
;
case
1
:
return
appletAppidStrawberry
;
case
2
:
return
appletAppidFive
;
case
3
:
return
appletAppidMdsk
;
}
return
""
;
}
}
liquidnet-bus-service/liquidnet-service-consumer-all/liquidnet-service-consumer-sweet/src/main/java/com/liquidnet/service/consumer/sweet/config/wechat/WechatMpConfigure.java
0 → 100644
View file @
e4522b19
package
com
.
liquidnet
.
service
.
consumer
.
sweet
.
config
.
wechat
;
import
me.chanjar.weixin.common.redis.RedisTemplateWxRedisOps
;
import
me.chanjar.weixin.mp.api.WxMpService
;
import
me.chanjar.weixin.mp.api.impl.WxMpServiceImpl
;
import
me.chanjar.weixin.mp.config.impl.WxMpRedisConfigImpl
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.data.redis.core.StringRedisTemplate
;
import
javax.annotation.PostConstruct
;
@Configuration
public
class
WechatMpConfigure
{
private
static
String
appidZhengzai
;
private
static
String
secretZhengzai
;
private
static
String
tokenZhengzai
;
private
static
String
aeskeyZhengzai
;
private
static
String
appidModernsky
;
private
static
String
secretModernsky
;
@Value
(
"${liquidnet.wechat.service.zhengzai.appid}"
)
public
void
setAppidZhengzai
(
String
appidZhengzai
)
{
WechatMpConfigure
.
appidZhengzai
=
appidZhengzai
;
}
@Value
(
"${liquidnet.wechat.service.zhengzai.secret}"
)
public
void
setSecretZhengzai
(
String
secretZhengzai
)
{
WechatMpConfigure
.
secretZhengzai
=
secretZhengzai
;
}
@Value
(
"${liquidnet.wechat.service.zhengzai.token}"
)
public
void
setTokenZhengzai
(
String
tokenZhengzai
)
{
WechatMpConfigure
.
tokenZhengzai
=
tokenZhengzai
;
}
@Value
(
"${liquidnet.wechat.service.zhengzai.aeskey}"
)
public
void
setAeskeyZhengzai
(
String
aeskeyZhengzai
)
{
WechatMpConfigure
.
aeskeyZhengzai
=
aeskeyZhengzai
;
}
@Value
(
"${liquidnet.wechat.service.modernsky.appid}"
)
public
void
setAppidModernsky
(
String
appidModernsky
)
{
WechatMpConfigure
.
appidModernsky
=
appidModernsky
;
}
@Value
(
"${liquidnet.wechat.service.modernsky.secret}"
)
public
void
setSecretModernsky
(
String
secretModernsky
)
{
WechatMpConfigure
.
secretModernsky
=
secretModernsky
;
}
private
WxMpService
wxMpZhengzaiService
;
private
WxMpService
wxMpModernskyService
;
@Autowired
private
StringRedisTemplate
stringRedisTemplate
;
@PostConstruct
public
void
init
()
{
wxMpZhengzaiService
=
new
WxMpServiceImpl
()
{
{
RedisTemplateWxRedisOps
redisTemplateWxRedisOps
=
new
RedisTemplateWxRedisOps
(
stringRedisTemplate
);
WxMpRedisConfigImpl
wxMpDefaultConfig
=
new
WxMpRedisConfigImpl
(
redisTemplateWxRedisOps
,
"sweet:accessToken:service:zhengzai"
);
wxMpDefaultConfig
.
setAppId
(
appidZhengzai
);
wxMpDefaultConfig
.
setSecret
(
secretZhengzai
);
wxMpDefaultConfig
.
setToken
(
tokenZhengzai
);
wxMpDefaultConfig
.
setAesKey
(
aeskeyZhengzai
);
this
.
setWxMpConfigStorage
(
wxMpDefaultConfig
);
}
};
wxMpModernskyService
=
new
WxMpServiceImpl
()
{
{
RedisTemplateWxRedisOps
redisTemplateWxRedisOps
=
new
RedisTemplateWxRedisOps
(
stringRedisTemplate
);
WxMpRedisConfigImpl
wxMpDefaultConfig
=
new
WxMpRedisConfigImpl
(
redisTemplateWxRedisOps
,
"sweet:accessToken:service:modernsky"
);
wxMpDefaultConfig
.
setAppId
(
appidModernsky
);
wxMpDefaultConfig
.
setSecret
(
secretModernsky
);
this
.
setWxMpConfigStorage
(
wxMpDefaultConfig
);
}
};
}
public
WxMpService
getWxMpService
(
Integer
pnum
)
{
switch
(
pnum
)
{
case
1
:
return
wxMpZhengzaiService
;
case
2
:
return
wxMpModernskyService
;
}
return
null
;
}
}
liquidnet-bus-service/liquidnet-service-consumer-all/liquidnet-service-consumer-sweet/src/main/java/com/liquidnet/service/consumer/sweet/param/SweetOpenSendMsgParam.java
0 → 100644
View file @
e4522b19
package
com
.
liquidnet
.
service
.
consumer
.
sweet
.
param
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
javax.validation.constraints.Max
;
import
javax.validation.constraints.Min
;
import
javax.validation.constraints.NotBlank
;
import
javax.validation.constraints.NotNull
;
import
java.io.Serializable
;
@ApiModel
(
value
=
"SweetOpenSendMsgParam"
,
description
=
"发送模版消息公共接口入参"
)
@Data
public
class
SweetOpenSendMsgParam
implements
Serializable
{
private
static
final
long
serialVersionUID
=
675588088506034208L
;
@ApiModelProperty
(
position
=
11
,
required
=
true
,
allowableValues
=
"1,2"
,
value
=
"发送目标类型 1正在服务号 2摩登服务号"
)
@NotNull
(
message
=
"sendTargetType不能为空"
)
@Min
(
value
=
1
,
message
=
"sendTargetType无效"
)
@Max
(
value
=
2
,
message
=
"sendTargetType无效"
)
private
Integer
sendTargetType
;
@ApiModelProperty
(
position
=
12
,
required
=
true
,
value
=
"模版消息ID"
,
example
=
"y-j82V1TYhlTH1j8QscuDPcPQtNiDtENb7N5IZMBvqU"
)
@NotBlank
(
message
=
"templateId不能为空"
)
private
String
templateId
;
@ApiModelProperty
(
position
=
13
,
required
=
true
,
value
=
"模版消息数据"
,
example
=
"{\"first\": \"感谢关注「正在现场」服务号\", \"keyword2\": \"4006-310-750\"}"
)
@NotBlank
(
message
=
"templateData不能为空"
)
private
String
templateData
;
@ApiModelProperty
(
position
=
14
,
required
=
true
,
allowableValues
=
"1,2,3,4,5"
,
value
=
"点击跳转类型 1草莓小程序 2五百里小程序 3mdsk小程序 4正在小程序 5url"
)
@NotNull
(
message
=
"jumpType不能为空"
)
@Min
(
value
=
1
,
message
=
"jumpType无效"
)
@Max
(
value
=
5
,
message
=
"jumpType无效"
)
private
Integer
jumpType
;
@ApiModelProperty
(
position
=
15
,
value
=
"跳转url"
,
example
=
"www.zhengzai.tv"
)
private
String
jumpUrl
;
@ApiModelProperty
(
position
=
16
,
allowableValues
=
"false,true"
,
value
=
"是否需要前端配合处理跳转,直接跳转jumpAppletPagePath为false,true时需要前端根据状态码做跳转处理"
)
private
Boolean
jumpAppletUsePath
;
@ApiModelProperty
(
position
=
17
,
value
=
"跳转小程序需要的某页地址"
,
example
=
"pages/webview?query=lottery"
)
private
String
jumpAppletPagePath
;
@ApiModelProperty
(
position
=
18
,
required
=
true
,
value
=
"openId"
,
example
=
"oUpkkuNe4yuVs77aaKFvuvpgNOSw"
)
@NotBlank
(
message
=
"openId不能为空"
)
private
String
openId
;
}
liquidnet-bus-service/liquidnet-service-consumer-all/liquidnet-service-consumer-sweet/src/main/java/com/liquidnet/service/consumer/sweet/service/impl/SweetWechatTemplateServiceImpl.java
0 → 100644
View file @
e4522b19
package
com
.
liquidnet
.
service
.
consumer
.
sweet
.
service
.
impl
;
import
com.alibaba.fastjson.JSONObject
;
import
com.liquidnet.service.base.ResponseDto
;
import
com.liquidnet.service.consumer.sweet.config.wechat.WechatMaConfigure
;
import
com.liquidnet.service.consumer.sweet.config.wechat.WechatMpConfigure
;
import
com.liquidnet.service.consumer.sweet.param.SweetOpenSendMsgParam
;
import
lombok.extern.slf4j.Slf4j
;
import
me.chanjar.weixin.common.error.WxErrorException
;
import
me.chanjar.weixin.mp.api.WxMpService
;
import
me.chanjar.weixin.mp.bean.template.WxMpTemplateData
;
import
me.chanjar.weixin.mp.bean.template.WxMpTemplateMessage
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.Map
;
/**
* <p>
* 公众号模版消息 服务实现类
* </p>
*
* @author liquidnet
* @since 2021-07-27
*/
@Slf4j
@Service
public
class
SweetWechatTemplateServiceImpl
{
@Autowired
WechatMpConfigure
wechatMpConfigure
;
@Autowired
WechatMaConfigure
wechatMaConfigure
;
public
ResponseDto
openSendMsg
(
SweetOpenSendMsgParam
param
)
{
WxMpTemplateMessage
templateMessage
=
null
;
if
(
param
.
getJumpType
()
==
5
)
{
templateMessage
=
getTemplateMessage
(
param
.
getTemplateId
(),
param
.
getOpenId
(),
param
.
getJumpUrl
());
}
else
{
templateMessage
=
getTemplateMessage
(
param
.
getTemplateId
(),
param
.
getOpenId
(),
param
.
getJumpType
(),
param
.
getJumpAppletPagePath
(),
param
.
getJumpAppletUsePath
());
}
// 添加模板数据
String
templateData
=
param
.
getTemplateData
();
JSONObject
templateDataJObj
=
JSONObject
.
parseObject
(
templateData
);
for
(
Map
.
Entry
<
String
,
Object
>
entry
:
templateDataJObj
.
entrySet
())
{
templateMessage
.
addData
(
new
WxMpTemplateData
(
entry
.
getKey
(),
String
.
valueOf
(
entry
.
getValue
())));
}
String
msgId
=
sendTmpMsg
(
templateMessage
,
param
.
getSendTargetType
());
if
(
null
==
msgId
)
{
return
ResponseDto
.
failure
(
"模版消息发送失败"
);
}
else
{
return
ResponseDto
.
success
(
msgId
);
}
}
/**
* 获取templateMessage
*
* @param templateId
* @param openId
* @param url
* @return
*/
private
WxMpTemplateMessage
getTemplateMessage
(
String
templateId
,
String
openId
,
String
url
)
{
WxMpTemplateMessage
templateMessage
=
WxMpTemplateMessage
.
builder
()
.
toUser
(
openId
)
// 接收者openid
.
templateId
(
templateId
)
// 模板id
.
url
(
url
)
// 模板跳转链接
.
build
();
return
templateMessage
;
}
private
WxMpTemplateMessage
getTemplateMessage
(
String
templateId
,
String
openId
,
Integer
jumpType
,
String
jumpAppletPagePath
,
Boolean
jumpAppletUsePath
)
{
//配置小程序信息
WxMpTemplateMessage
.
MiniProgram
miniProgram
=
new
WxMpTemplateMessage
.
MiniProgram
();
miniProgram
.
setAppid
(
wechatMaConfigure
.
getWxMaAppid
(
jumpType
));
//小程序appid
miniProgram
.
setUsePath
(
jumpAppletUsePath
);
//true的话需要前端配合处理跳转
miniProgram
.
setPagePath
(
jumpAppletPagePath
);
//用户点击时需要跳转的小程序页面
WxMpTemplateMessage
templateMessage
=
WxMpTemplateMessage
.
builder
()
.
toUser
(
openId
)
// 接收者openid
.
templateId
(
templateId
)
// 模板id
.
miniProgram
(
miniProgram
)
// 模板跳转链接
.
build
();
return
templateMessage
;
}
private
String
sendTmpMsg
(
WxMpTemplateMessage
templateMessage
,
Integer
sendTargetType
)
{
String
msgId
=
null
;
try
{
// 发送模板消息
WxMpService
wxMpService
=
wechatMpConfigure
.
getWxMpService
(
sendTargetType
);
log
.
info
(
"sendTmpMsg-isAccessTokenExpired:[{}] "
,
wxMpService
.
getWxMpConfigStorage
().
isAccessTokenExpired
());
log
.
info
(
"sendTmpMsg-getAccessToken:[{}] "
,
wxMpService
.
getWxMpConfigStorage
().
getAccessToken
());
msgId
=
wxMpService
.
getTemplateMsgService
().
sendTemplateMsg
(
templateMessage
);
log
.
info
(
"模版消息发送成功:[msgId=[{}]"
,
msgId
);
}
catch
(
WxErrorException
e
)
{
log
.
error
(
"模版消息发送异常"
,
e
);
}
return
msgId
;
}
}
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