Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Thinkingcao
silence-boot
提交
3fd0fbdd
silence-boot
项目概览
Thinkingcao
/
silence-boot
8 个月 前同步成功
通知
193
Star
63
Fork
6
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
silence-boot
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
3fd0fbdd
编写于
10月 28, 2019
作者:
T
Thinkingcao
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
更新sql
上级
79e4c735
变更
7
展开全部
隐藏空白更改
内联
并排
Showing
7 changed file
with
1202 addition
and
0 deletion
+1202
-0
silence-common/src/main/java/com/silence/common/utils/HttpTools.java
...mon/src/main/java/com/silence/common/utils/HttpTools.java
+259
-0
silence-weixin/src/main/java/com/silence/weixin/controller/WxMpOAuthController.java
...va/com/silence/weixin/controller/WxMpOAuthController.java
+83
-0
silence-weixin/src/main/java/com/silence/weixin/controller/WxMpWeChatController.java
...a/com/silence/weixin/controller/WxMpWeChatController.java
+75
-0
silence-weixin/src/main/java/com/silence/weixin/inter/PushMessageService.java
...ain/java/com/silence/weixin/inter/PushMessageService.java
+21
-0
silence-weixin/src/main/java/com/silence/weixin/service/WXJSAPiService.java
.../main/java/com/silence/weixin/service/WXJSAPiService.java
+35
-0
silence-weixin/src/main/java/com/silence/weixin/utils/WeChatTemplateMsgUtils.java
...java/com/silence/weixin/utils/WeChatTemplateMsgUtils.java
+139
-0
silence-weixin/src/main/java/com/silence/weixin/utils/WeChatUtils.java
...n/src/main/java/com/silence/weixin/utils/WeChatUtils.java
+590
-0
未找到文件。
silence-common/src/main/java/com/silence/common/utils/HttpTools.java
0 → 100644
浏览文件 @
3fd0fbdd
/**
* Project Name:hotelfront
* File Name:HttpTools.java
* Package Name:com.iman.tool
* Date:2015年11月4日下午1:23:51
* Copyright (c) 1999 - 2015,iman, Inc or its affiliates. All Rights Reserved.
*/
package
com.silence.common.utils
;
import
org.apache.http.HttpEntity
;
import
org.apache.http.client.config.RequestConfig
;
import
org.apache.http.client.methods.CloseableHttpResponse
;
import
org.apache.http.client.methods.HttpPost
;
import
org.apache.http.client.protocol.HttpClientContext
;
import
org.apache.http.conn.ConnectTimeoutException
;
import
org.apache.http.entity.ContentType
;
import
org.apache.http.entity.StringEntity
;
import
org.apache.http.impl.client.CloseableHttpClient
;
import
org.apache.http.impl.client.HttpClients
;
import
org.apache.http.impl.conn.PoolingHttpClientConnectionManager
;
import
org.apache.http.util.EntityUtils
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
java.io.IOException
;
import
java.net.SocketTimeoutException
;
import
java.nio.charset.Charset
;
import
java.util.HashMap
;
import
java.util.Map
;
/**
* ClassName:HttpTools <br/>
* Reason: TODO ADD REASON. <br/>
* Date: 2015年11月4日 下午1:23:51 <br/>
*
* @author haoxi
*/
public
class
HttpTools
{
private
static
final
Logger
LOGGER
=
LoggerFactory
.
getLogger
(
HttpTools
.
class
);
public
static
String
doPost
(
String
url
,
String
data
)
{
// 使用连接池创建连接
PoolingHttpClientConnectionManager
poolingHttpClientConnectionManager
=
new
PoolingHttpClientConnectionManager
();
CloseableHttpClient
httpClient
=
HttpClients
.
custom
().
setConnectionManager
(
poolingHttpClientConnectionManager
)
.
build
();
CloseableHttpResponse
response
=
null
;
try
{
HttpPost
post
=
new
HttpPost
(
url
);
// 设置请求和传输超时时间
RequestConfig
requestConfig
=
RequestConfig
.
custom
().
setSocketTimeout
(
10000
).
setConnectTimeout
(
10000
)
.
build
();
post
.
setConfig
(
requestConfig
);
ContentType
contentType
=
ContentType
.
create
(
ContentType
.
APPLICATION_JSON
.
getMimeType
(),
Charset
.
forName
(
"UTF-8"
));
post
.
setEntity
(
new
StringEntity
(
data
,
contentType
));
response
=
httpClient
.
execute
(
post
,
HttpClientContext
.
create
());
int
statusCode
=
response
.
getStatusLine
().
getStatusCode
();
if
(
200
==
statusCode
)
{
HttpEntity
entity
=
response
.
getEntity
();
String
s
=
EntityUtils
.
toString
(
entity
);
// 关闭httpEntity流
EntityUtils
.
consume
(
entity
);
return
s
;
}
}
catch
(
ConnectTimeoutException
e
)
{
LOGGER
.
error
(
"Connect Timeout."
);
}
catch
(
SocketTimeoutException
e
)
{
LOGGER
.
error
(
"Socket Timeout."
);
}
catch
(
Exception
e
)
{
LOGGER
.
error
(
"doPost Exception : "
,
e
);
}
finally
{
if
(
null
!=
response
)
{
try
{
// 关闭response
response
.
close
();
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
}
}
return
null
;
}
public
static
String
escape
(
String
src
)
{
int
i
;
char
j
;
StringBuffer
tmp
=
new
StringBuffer
();
tmp
.
ensureCapacity
(
src
.
length
()
*
6
);
for
(
i
=
0
;
i
<
src
.
length
();
i
++)
{
j
=
src
.
charAt
(
i
);
if
(
Character
.
isDigit
(
j
)
||
Character
.
isLowerCase
(
j
)
||
Character
.
isUpperCase
(
j
))
tmp
.
append
(
j
);
else
if
(
j
<
256
)
{
tmp
.
append
(
"%"
);
if
(
j
<
16
)
tmp
.
append
(
"0"
);
tmp
.
append
(
Integer
.
toString
(
j
,
16
));
}
else
{
tmp
.
append
(
"%u"
);
tmp
.
append
(
Integer
.
toString
(
j
,
16
));
}
}
return
tmp
.
toString
();
}
public
static
String
unescape
(
String
src
)
{
StringBuffer
tmp
=
new
StringBuffer
();
tmp
.
ensureCapacity
(
src
.
length
());
int
lastPos
=
0
,
pos
=
0
;
char
ch
;
while
(
lastPos
<
src
.
length
())
{
pos
=
src
.
indexOf
(
"%"
,
lastPos
);
if
(
pos
==
lastPos
)
{
if
(
src
.
charAt
(
pos
+
1
)
==
'u'
)
{
ch
=
(
char
)
Integer
.
parseInt
(
src
.
substring
(
pos
+
2
,
pos
+
6
),
16
);
tmp
.
append
(
ch
);
lastPos
=
pos
+
6
;
}
else
{
ch
=
(
char
)
Integer
.
parseInt
(
src
.
substring
(
pos
+
1
,
pos
+
3
),
16
);
tmp
.
append
(
ch
);
lastPos
=
pos
+
3
;
}
}
else
{
if
(
pos
==
-
1
)
{
tmp
.
append
(
src
.
substring
(
lastPos
));
lastPos
=
src
.
length
();
}
else
{
tmp
.
append
(
src
.
substring
(
lastPos
,
pos
));
lastPos
=
pos
;
}
}
}
return
tmp
.
toString
();
}
/**
* @disc 对字符串重新编码
* @param src
* @return
*/
public
static
String
isoToGB
(
String
src
)
{
String
strRet
=
null
;
try
{
strRet
=
new
String
(
src
.
getBytes
(
"ISO_8859_1"
),
"GB2312"
);
}
catch
(
Exception
e
)
{
}
return
strRet
;
}
/**
* @disc 对字符串重新编码
* @param src
* @return
*/
public
static
String
isoToUTF
(
String
src
)
{
String
strRet
=
null
;
try
{
strRet
=
new
String
(
src
.
getBytes
(
"ISO_8859_1"
),
"UTF-8"
);
}
catch
(
Exception
e
)
{
}
return
strRet
;
}
/**
* 获取url无参数段
* @param url
* @return
*/
public
static
String
getUrlBase
(
String
url
){
if
(
url
.
indexOf
(
"?"
)
!=
0
){
String
[]
arrSplit
=
null
;
arrSplit
=
url
.
split
(
"[?]"
);
return
arrSplit
[
0
];
}
else
{
return
url
;
}
}
public
static
String
getUrlParam
(
String
url
){
if
(
url
.
indexOf
(
"?"
)
>=
0
){
String
[]
arrSplit
=
null
;
arrSplit
=
url
.
split
(
"[?]"
);
return
arrSplit
[
1
];
}
else
{
return
""
;
}
}
/**
* 将url参数转换成map
*
* @param param
* aa=11&bb=22&cc=33
* @return
*/
public
static
Map
<
String
,
Object
>
getUrlParamMap
(
String
param
)
{
Map
<
String
,
Object
>
map
=
new
HashMap
<
String
,
Object
>(
0
);
if
(
StringUtils
.
isBlank
(
param
))
{
return
map
;
}
String
[]
params
=
param
.
split
(
"&"
);
for
(
int
i
=
0
;
i
<
params
.
length
;
i
++)
{
String
[]
p
=
params
[
i
].
split
(
"="
);
if
(
p
.
length
==
2
)
{
map
.
put
(
p
[
0
],
p
[
1
]);
}
}
return
map
;
}
/**
* 将map转换成url
*
* @param map
* @return
*/
public
static
String
getUrlParamsByMap
(
Map
<
String
,
Object
>
map
)
{
if
(
map
==
null
)
{
return
""
;
}
StringBuffer
sb
=
new
StringBuffer
();
for
(
Map
.
Entry
<
String
,
Object
>
entry
:
map
.
entrySet
())
{
sb
.
append
(
entry
.
getKey
()
+
"="
+
entry
.
getValue
());
sb
.
append
(
"&"
);
}
String
s
=
sb
.
toString
();
if
(
s
.
endsWith
(
"&"
))
{
s
=
StringUtils
.
substringBeforeLast
(
s
,
"&"
);
}
return
s
;
}
public
static
void
main
(
String
[]
args
)
{
/**
String tmp = "小许";
System.out.println("testing escape : " + tmp);
tmp = escape(tmp);
System.out.println(tmp);
System.out.println("testing unescape :" + tmp);
System.out.println(unescape("%u6211%u4eec"));
System.out.println(isoToUTF(tmp));
*/
String
url
=
"https://www.baidu.com/s?abc=111"
;
String
params
=
getUrlParam
(
url
);
System
.
out
.
println
(
params
);
System
.
out
.
println
(
getUrlBase
(
url
));
Map
<
String
,
Object
>
map
=
getUrlParamMap
(
params
);
map
.
put
(
"haha"
,
"test"
);
System
.
out
.
println
(
getUrlParamsByMap
(
map
));
}
}
silence-weixin/src/main/java/com/silence/weixin/controller/WxMpOAuthController.java
0 → 100644
浏览文件 @
3fd0fbdd
package
com.silence.weixin.controller
;
import
com.silence.common.utils.HttpTools
;
import
lombok.extern.slf4j.Slf4j
;
import
me.chanjar.weixin.common.api.WxConsts
;
import
me.chanjar.weixin.common.error.WxErrorException
;
import
me.chanjar.weixin.mp.api.WxMpService
;
import
me.chanjar.weixin.mp.bean.result.WxMpOAuth2AccessToken
;
import
me.chanjar.weixin.mp.bean.result.WxMpUser
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
import
java.net.URLDecoder
;
import
java.net.URLEncoder
;
import
java.util.Map
;
/**
* @author cao_wencao
* @ClassName: WxMpOAuthController
* @Description: 微信网页授权
* @date 2018年7月4日 下午1:27:58
*/
@RestController
@RequestMapping
(
"/wechat/oauth"
)
@Slf4j
public
class
WxMpOAuthController
{
@Autowired
private
WxMpService
wxMpService
;
@GetMapping
(
"/oauthInfo"
)
public
void
authorize
(
HttpServletRequest
request
,
HttpServletResponse
response
)
throws
Exception
{
String
backUrl
=
request
.
getParameter
(
"backUrl"
);
backUrl
=
URLEncoder
.
encode
(
backUrl
,
"UTF-8"
);
String
host
=
request
.
getRequestURL
().
toString
();
host
=
host
.
replaceAll
(
"/oauthInfo"
,
"/getInfo"
)
+
"?backUrl="
+
backUrl
;
// String redirect_uri = URLEncoder.encode(host, "UTF-8");
// 构建授权URL,方法内会自动encode
String
redirectUri
=
wxMpService
.
oauth2buildAuthorizationUrl
(
host
,
WxConsts
.
OAuth2Scope
.
SNSAPI_USERINFO
,
"1"
);
log
.
info
(
"redirectUri地址={}"
,
redirectUri
);
// 日志
response
.
sendRedirect
(
redirectUri
);
}
@GetMapping
(
"/getInfo"
)
public
void
getInfo
(
HttpServletRequest
request
,
HttpServletResponse
response
)
throws
Exception
{
String
backUrl
=
""
;
String
code
=
request
.
getParameter
(
"code"
);
backUrl
=
request
.
getParameter
(
"backUrl"
);
backUrl
=
URLDecoder
.
decode
(
backUrl
,
"UTF-8"
);
// 通过code换取access token
WxMpOAuth2AccessToken
wxMpOAuth2AccessToken
=
null
;
String
openId
=
null
;
try
{
wxMpOAuth2AccessToken
=
wxMpService
.
oauth2getAccessToken
(
code
);
// 获取openId
openId
=
wxMpOAuth2AccessToken
.
getOpenId
();
log
.
info
(
"openId={}"
,
openId
);
//第二个参数为null时默认为zh_CN
WxMpUser
wxMpUser
=
wxMpService
.
getUserService
().
userInfo
(
openId
,
null
);
//TODO: 将微信粉丝信息wxMpUser保存到数据库
log
.
info
(
"网页授权获取用户信息 :"
+
wxMpUser
.
toString
());
Map
<
String
,
Object
>
params
=
HttpTools
.
getUrlParamMap
(
HttpTools
.
getUrlParam
(
backUrl
));
// 重新组装参数
params
.
put
(
"curoauth"
,
openId
);
String
baseUrl
=
HttpTools
.
getUrlBase
(
backUrl
);
backUrl
=
baseUrl
+
"?"
+
HttpTools
.
getUrlParamsByMap
(
params
);
log
.
info
(
"链接微信授权成功 结束======"
+
backUrl
);
}
catch
(
WxErrorException
e
)
{
log
.
error
(
"【微信网页授权】{}"
,
e
.
getMessage
());
throw
new
RuntimeException
(
"网页授权失败!"
);
}
response
.
sendRedirect
(
backUrl
);
}
}
silence-weixin/src/main/java/com/silence/weixin/controller/WxMpWeChatController.java
0 → 100644
浏览文件 @
3fd0fbdd
package
com.silence.weixin.controller
;
import
com.google.common.collect.Maps
;
import
com.silence.weixin.service.WXJSAPiService
;
import
lombok.extern.slf4j.Slf4j
;
import
me.chanjar.weixin.common.error.WxErrorException
;
import
me.chanjar.weixin.mp.api.WxMpService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Controller
;
import
org.springframework.ui.Model
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.ResponseBody
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
import
java.util.Map
;
/**
* <pre>
* @author cao_wencao
* @date 2018年8月13日 下午6:21:27
* </pre>
*/
@Controller
@RequestMapping
(
"/wechat/jsApi"
)
@Slf4j
public
class
WxMpWeChatController
{
@Autowired
private
WxMpService
wxMpService
;
@Autowired
private
WXJSAPiService
wXJSAPiService
;
/**
* 创建调用jsapi时所需要的签名 传入当前网页的URL,不包含#及其后面部分
*
* @author cao_wencao
* @param
* @return
* @throws WxErrorException
*/
@PostMapping
(
"/getJsapiSignature"
)
public
Object
getJsapiSignature
(
HttpServletRequest
request
,
HttpServletResponse
response
,
Model
model
)
throws
WxErrorException
{
String
url
=
request
.
getRequestURL
().
toString
();
log
.
info
(
"【创建jsapi-URL】 : {}"
,
url
);
Map
<
String
,
String
>
paramMap
=
wXJSAPiService
.
getJSApiData
(
url
);
return
paramMap
;
}
/**
* 获得jsapi_ticket,不强制刷新jsapi_ticket
*
* @author cao_wencao
* @param
* @return
*/
@GetMapping
(
"/getJsapiTicket"
)
public
@ResponseBody
Object
getJsapiTicket
()
{
String
jsapiTicket
=
null
;
Map
<
String
,
String
>
paramMap
=
Maps
.
newHashMap
();
try
{
jsapiTicket
=
this
.
wxMpService
.
getJsapiTicket
();
paramMap
.
put
(
jsapiTicket
,
jsapiTicket
);
}
catch
(
WxErrorException
e
)
{
log
.
error
(
"获取[jsapi_ticket失败]: {}"
,
e
.
getMessage
());
}
return
paramMap
;
}
}
silence-weixin/src/main/java/com/silence/weixin/inter/PushMessageService.java
0 → 100644
浏览文件 @
3fd0fbdd
package
com.silence.weixin.inter
;
/**
* <pre>
* @Description:模板消息推送服务接口
* @Aouth: cao_wencao
* @Date: 2019-02-15 10:39
* </pre>
*/
public
interface
PushMessageService
{
/**
* <pre>
* 订单结算通知
* @auther: cao_wencao
* @date: 2019/2/15 10:40
* </pre>
*/
public
String
orderPay
(
String
openId
,
Object
object
);
}
silence-weixin/src/main/java/com/silence/weixin/service/WXJSAPiService.java
0 → 100644
浏览文件 @
3fd0fbdd
package
com.silence.weixin.service
;
import
com.google.common.collect.Maps
;
import
me.chanjar.weixin.common.bean.WxJsapiSignature
;
import
me.chanjar.weixin.common.error.WxErrorException
;
import
me.chanjar.weixin.mp.api.WxMpService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.Map
;
/**
* @desc: 获取微信jsapi签名
* @auth: cao_wencao
* @date: 2019/10/28 17:18
*/
@Service
public
class
WXJSAPiService
{
@Autowired
private
WxMpService
wxMpService
;
public
Map
<
String
,
String
>
getJSApiData
(
String
url
)
throws
WxErrorException
{
Map
<
String
,
String
>
paramMap
=
Maps
.
newHashMap
();
WxJsapiSignature
createJsapiSignature
=
this
.
wxMpService
.
createJsapiSignature
(
url
);
if
(
null
!=
createJsapiSignature
)
{
paramMap
.
put
(
"appId"
,
createJsapiSignature
.
getAppId
());
paramMap
.
put
(
"nonceStr"
,
createJsapiSignature
.
getNonceStr
());
paramMap
.
put
(
"timestamp"
,
String
.
valueOf
(
createJsapiSignature
.
getTimestamp
()));
paramMap
.
put
(
"signature"
,
createJsapiSignature
.
getSignature
());
paramMap
.
put
(
"url"
,
createJsapiSignature
.
getUrl
());
}
return
paramMap
;
}
}
silence-weixin/src/main/java/com/silence/weixin/utils/WeChatTemplateMsgUtils.java
0 → 100644
浏览文件 @
3fd0fbdd
package
com.silence.weixin.utils
;
import
com.silence.weixin.inter.PushMessageService
;
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.WxMpTemplate
;
import
me.chanjar.weixin.mp.bean.template.WxMpTemplateData
;
import
me.chanjar.weixin.mp.bean.template.WxMpTemplateIndustry
;
import
me.chanjar.weixin.mp.bean.template.WxMpTemplateMessage
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
java.util.Arrays
;
import
java.util.List
;
/**
* <pre>
* @Description: 微信模板消息推送实现
* @Aouth: cao_wencao
* @Date: 2019-01-24 14:07
* </pre>
*/
@Slf4j
@Component
public
class
WeChatTemplateMsgUtils
implements
PushMessageService
{
@Autowired
private
WxMpService
wxMpService
;
private
static
String
wx_template_id
=
"消息推送模板ID可从配置参数读取"
;
//合作投稿审核通知,发送模板消息
@Override
public
String
orderPay
(
String
openId
,
Object
object
)
{
//实例化模板对象
WxMpTemplateMessage
wxMpTemplateMessage
=
new
WxMpTemplateMessage
();
//设置模板ID
wxMpTemplateMessage
.
setTemplateId
(
wx_template_id
);
//设置发送给哪个用户
wxMpTemplateMessage
.
setToUser
(
openId
);
//构建消息格式
List
<
WxMpTemplateData
>
listData
=
Arrays
.
asList
(
new
WxMpTemplateData
(
"first"
,
"恭喜你支付成功!"
,
"#173177"
),
new
WxMpTemplateData
(
"keyword1"
,
"曹."
,
"#173177"
),
new
WxMpTemplateData
(
"keyword2"
,
"2019698571200"
,
"#173177"
),
new
WxMpTemplateData
(
"keyword3"
,
"¥98.80"
,
"#173177"
),
new
WxMpTemplateData
(
"keyword4"
,
"星冰乐(焦糖味) 家乐氏香甜玉米片*2 乐天七彩爱情糖*3"
,
"#173177"
),
new
WxMpTemplateData
(
"remark"
,
"如有疑问,请联系客服电话:021-54145323"
,
"#173177"
)
);
//接收发送模板消息结果,就是msgid,if(msgid! = null)即成功
String
wxTemplateResult
=
null
;
//放进模板对象。准备发送
wxMpTemplateMessage
.
setData
(
listData
);
try
{
//发送模板
wxTemplateResult
=
wxMpService
.
getTemplateMsgService
().
sendTemplateMsg
(
wxMpTemplateMessage
);
}
catch
(
WxErrorException
e
)
{
log
.
error
(
"发送模板消息异常:{}"
,
e
.
getMessage
());
e
.
printStackTrace
();
}
return
wxTemplateResult
;
}
/**
* <pre>
* 设置所属行业
* @auther: cao_wencao
* @date: 2019/2/18 15:17
* </pre>
*/
public
boolean
setIndustry
(
WxMpTemplateIndustry
wxMpIndustry
)
throws
WxErrorException
{
Boolean
flag
=
wxMpService
.
getTemplateMsgService
().
setIndustry
(
wxMpIndustry
);
return
flag
;
}
/**
* <pre>
* 获取设置的行业信息
* @auther: cao_wencao
* @date: 2019/2/18 15:21
* </pre>
*/
public
WxMpTemplateIndustry
getIndustry
()
throws
WxErrorException
{
WxMpTemplateIndustry
wxMpTemplateIndustry
=
wxMpService
.
getTemplateMsgService
().
getIndustry
();
return
wxMpTemplateIndustry
;
}
/**
* <pre>
* 发送模板消息
* @auther: cao_wencao
* @date: 2019/2/18 15:25
* </pre>
*/
public
String
sendTemplateMsg
(
WxMpTemplateMessage
templateMessage
)
throws
WxErrorException
{
String
result
=
wxMpService
.
getTemplateMsgService
().
sendTemplateMsg
(
templateMessage
);
return
result
;
}
/**
* <pre>
* 获得模板ID
* shortTemplateId: 模板库中模板的编号,有“TM**”和“OPENTMTM**”等形式
* @auther: cao_wencao
* @date: 2019/2/18 15:29
* </pre>
*/
public
String
addTemplate
(
String
shortTemplateId
)
throws
WxErrorException
{
String
result
=
wxMpService
.
getTemplateMsgService
().
addTemplate
(
shortTemplateId
);
return
result
;
}
/**
* <pre>
* 获得模板列表
* @auther: cao_wencao
* @date: 2019/2/18 15:30
* </pre>
*/
List
<
WxMpTemplate
>
getAllPrivateTemplate
()
throws
WxErrorException
{
List
<
WxMpTemplate
>
templateList
=
wxMpService
.
getTemplateMsgService
().
getAllPrivateTemplate
();
return
templateList
;
}
/**
* <pre>
* 删除模板
* templateId: 公众帐号下模板消息ID
* @auther: cao_wencao
* @date: 2019/2/18 15:32
* </pre>
*/
boolean
delPrivateTemplate
(
String
templateId
)
throws
WxErrorException
{
Boolean
flag
=
wxMpService
.
getTemplateMsgService
().
delPrivateTemplate
(
templateId
);
return
flag
;
}
}
silence-weixin/src/main/java/com/silence/weixin/utils/WeChatUtils.java
0 → 100644
浏览文件 @
3fd0fbdd
此差异已折叠。
点击以展开。
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录