Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
C
cloud-platform
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
youjj
cloud-platform
Commits
e6a4c880
Commit
e6a4c880
authored
Jul 13, 2019
by
hezhen
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
短信模板
parent
7fb092c5
Changes
9
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
2123 additions
and
14 deletions
+2123
-14
pom.xml
xx-universal/xx-universal-api/pom.xml
+7
-6
CCPRestSDK.java
...in/java/com/xxfc/platform/universal/utils/CCPRestSDK.java
+1806
-0
CCPRestSmsUtils.java
...va/com/xxfc/platform/universal/utils/CCPRestSmsUtils.java
+3
-3
CcopHttpClient.java
...ava/com/xxfc/platform/universal/utils/CcopHttpClient.java
+67
-0
DateUtil.java
...main/java/com/xxfc/platform/universal/utils/DateUtil.java
+78
-0
EncryptUtil.java
...n/java/com/xxfc/platform/universal/utils/EncryptUtil.java
+59
-0
PublicMsg.java
...ain/java/com/xxfc/platform/universal/utils/PublicMsg.java
+90
-0
SmsController.java
...com/xxfc/platform/universal/controller/SmsController.java
+2
-5
UploadController.java
.../xxfc/platform/universal/controller/UploadController.java
+11
-0
No files found.
xx-universal/xx-universal-api/pom.xml
View file @
e6a4c880
...
...
@@ -41,13 +41,14 @@
<artifactId>
httpclient
</artifactId>
<version>
4.5
</version>
</dependency>
<!-- 短信机-->
<dependency>
<groupId>
sms
</groupId>
<artifactId>
sms
</artifactId>
<version>
2.6.3
</version>
<scope>
system
</scope>
<systemPath>
D:/hezhen/Program Files/apache-maven-3.5.4/repo/sms/CCP_REST_SMS_SDK_JAVA_v2.6.3r.jar
</systemPath>
<groupId>
com.google.code.gson
</groupId>
<artifactId>
gson
</artifactId>
<version>
2.8.5
</version>
</dependency>
<dependency>
<groupId>
com.google.code.gson
</groupId>
<artifactId>
gson
</artifactId>
</dependency>
</dependencies>
...
...
xx-universal/xx-universal-api/src/main/java/com/xxfc/platform/universal/utils/CCPRestSDK.java
0 → 100644
View file @
e6a4c880
/*
* Copyright (c) 2014 The CCP project authors. All Rights Reserved.
*
* Use of this source code is governed by a Beijing Speedtong Information Technology Co.,Ltd license
* that can be found in the LICENSE file in the root of the web site.
*
* http://www.yuntongxun.com
*
* An additional intellectual property rights grant can be found
* in the file PATENTS. All contributing project authors may
* be found in the AUTHORS file in the root of the source tree.
*/
package
com
.
xxfc
.
platform
.
universal
.
utils
;
import
com.google.gson.JsonElement
;
import
com.google.gson.JsonObject
;
import
com.google.gson.JsonParser
;
import
com.google.gson.JsonArray
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.http.HttpEntity
;
import
org.apache.http.HttpResponse
;
import
org.apache.http.client.methods.HttpGet
;
import
org.apache.http.client.methods.HttpPost
;
import
org.apache.http.client.methods.HttpRequestBase
;
import
org.apache.http.entity.BasicHttpEntity
;
import
org.apache.http.impl.client.DefaultHttpClient
;
import
org.apache.http.message.AbstractHttpMessage
;
import
org.apache.http.util.EntityUtils
;
import
org.dom4j.Document
;
import
org.dom4j.DocumentException
;
import
org.dom4j.DocumentHelper
;
import
org.dom4j.Element
;
import
java.io.ByteArrayInputStream
;
import
java.io.FileInputStream
;
import
java.io.IOException
;
import
java.io.UnsupportedEncodingException
;
import
java.security.NoSuchAlgorithmException
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.Iterator
;
import
java.util.Map.Entry
;
import
java.util.Set
;
import
java.util.Date
;
@Slf4j
public
class
CCPRestSDK
{
int
status
;
private
static
final
int
Request_Get
=
0
;
private
static
final
int
Request_Post
=
1
;
private
static
final
String
Account_Info
=
"AccountInfo"
;
private
static
final
String
Create_SubAccount
=
"SubAccounts"
;
private
static
final
String
Get_SubAccounts
=
"GetSubAccounts"
;
private
static
final
String
Query_SubAccountByName
=
"QuerySubAccountByName"
;
private
static
final
String
SMSMessages
=
"SMS/Messages"
;
private
static
final
String
TemplateSMS
=
"SMS/TemplateSMS"
;
private
static
final
String
Query_SMSTemplate
=
"SMS/QuerySMSTemplate"
;
private
static
final
String
LandingCalls
=
"Calls/LandingCalls"
;
private
static
final
String
VoiceVerify
=
"Calls/VoiceVerify"
;
private
static
final
String
IvrDial
=
"ivr/dial"
;
private
static
final
String
BillRecords
=
"BillRecords"
;
private
static
final
String
queryCallState
=
"ivr/call"
;
private
static
final
String
callResult
=
"CallResult"
;
private
static
final
String
mediaFileUpload
=
"Calls/MediaFileUpload"
;
private
String
SERVER_IP
;
private
String
SERVER_PORT
;
private
String
ACCOUNT_SID
;
private
String
ACCOUNT_TOKEN
;
private
String
SUBACCOUNT_SID
;
private
String
SUBACCOUNT_Token
;
public
String
App_ID
;
private
BodyType
BODY_TYPE
=
BodyType
.
Type_XML
;
public
String
Callsid
;
public
enum
BodyType
{
Type_XML
,
Type_JSON
;
}
public
enum
AccountType
{
Accounts
,
SubAccounts
;
}
/**
* 初始化服务地址和端口
*
* @param serverIP
* 必选参数 服务器地址
* @param serverPort
* 必选参数 服务器端口
*/
public
void
init
(
String
serverIP
,
String
serverPort
)
{
if
(
isEmpty
(
serverIP
)
||
isEmpty
(
serverPort
))
{
log
.
error
(
"初始化异常:serverIP或serverPort为空"
);
throw
new
IllegalArgumentException
(
"必选参数:"
+
(
isEmpty
(
serverIP
)
?
" 服务器地址 "
:
""
)
+
(
isEmpty
(
serverPort
)
?
" 服务器端口 "
:
""
)
+
"为空"
);
}
SERVER_IP
=
serverIP
;
SERVER_PORT
=
serverPort
;
}
/**
* 初始化主帐号信息
*
* @param accountSid
* 必选参数 主帐号
* @param accountToken
* 必选参数 主帐号TOKEN
*/
public
void
setAccount
(
String
accountSid
,
String
accountToken
)
{
if
(
isEmpty
(
accountSid
)
||
isEmpty
(
accountToken
))
{
log
.
error
(
"初始化异常:accountSid或accountToken为空"
);
throw
new
IllegalArgumentException
(
"必选参数:"
+
(
isEmpty
(
accountSid
)
?
" 主帐号"
:
""
)
+
(
isEmpty
(
accountToken
)
?
" 主帐号TOKEN "
:
""
)
+
"为空"
);
}
ACCOUNT_SID
=
accountSid
;
ACCOUNT_TOKEN
=
accountToken
;
}
/**
* 初始化子帐号信息
*
* @param subAccountSid
* 必选参数 子帐号
* @param subAccountToken
* 必选参数 子帐号TOKEN
*/
public
void
setSubAccount
(
String
subAccountSid
,
String
subAccountToken
)
{
if
(
isEmpty
(
subAccountSid
)
||
isEmpty
(
subAccountToken
))
{
log
.
error
(
"初始化异常:subAccountSid或subAccountToken为空"
);
throw
new
IllegalArgumentException
(
"必选参数:"
+
(
isEmpty
(
subAccountSid
)
?
" 子帐号"
:
""
)
+
(
isEmpty
(
subAccountToken
)
?
" 子帐号TOKEN "
:
""
)
+
"为空"
);
}
SUBACCOUNT_SID
=
subAccountSid
;
SUBACCOUNT_Token
=
subAccountToken
;
}
/**
* 初始化应用Id
*
* @param appId
* 必选参数 应用Id
*/
public
void
setAppId
(
String
appId
)
{
if
(
isEmpty
(
appId
))
{
log
.
error
(
"初始化异常:appId为空"
);
throw
new
IllegalArgumentException
(
"必选参数: 应用Id 为空"
);
}
App_ID
=
appId
;
}
/**
* 话单下载
*
* @param date
* 必选参数 day 代表前一天的数据(从00:00 – 23:59)
* @param keywords
* 可选参数 客户的查询条件,由客户自行定义并提供给云通讯平台。默认不填忽略此参数
* @return
*/
public
HashMap
<
String
,
Object
>
billRecords
(
String
date
,
String
keywords
)
{
HashMap
<
String
,
Object
>
validate
=
accountValidate
();
if
(
validate
!=
null
)
{
return
validate
;
}
if
((
isEmpty
(
date
)))
{
log
.
error
(
"必选参数: 日期 为空"
);
throw
new
IllegalArgumentException
(
"必选参数: 日期 为空"
);
}
CcopHttpClient
chc
=
new
CcopHttpClient
();
DefaultHttpClient
httpclient
=
null
;
try
{
httpclient
=
chc
.
registerSSL
(
SERVER_IP
,
"TLS"
,
Integer
.
parseInt
(
SERVER_PORT
),
"https"
);
}
catch
(
Exception
e1
)
{
//e1.printStackTrace();
log
.
error
(
e1
.
getMessage
());
throw
new
RuntimeException
(
"初始化httpclient异常"
+
e1
.
getMessage
());
}
String
result
=
""
;
try
{
HttpPost
httppost
=
(
HttpPost
)
getHttpRequestBase
(
1
,
BillRecords
);
String
requsetbody
=
""
;
if
(
BODY_TYPE
==
BodyType
.
Type_JSON
)
{
JsonObject
json
=
new
JsonObject
();
json
.
addProperty
(
"appId"
,
App_ID
);
json
.
addProperty
(
"date"
,
date
);
if
(!(
isEmpty
(
keywords
)))
json
.
addProperty
(
"keywords"
,
keywords
);
requsetbody
=
json
.
toString
();
}
else
{
StringBuilder
sb
=
new
StringBuilder
(
"<?xml version='1.0' encoding='utf-8'?><BillRecords>"
);
sb
.
append
(
"<appId>"
).
append
(
App_ID
).
append
(
"</appId>"
)
.
append
(
"<date>"
).
append
(
date
).
append
(
"</date>"
);
if
(!(
isEmpty
(
keywords
)))
sb
.
append
(
"<keywords>"
).
append
(
keywords
)
.
append
(
"</keywords>"
);
sb
.
append
(
"</BillRecords>"
).
toString
();
requsetbody
=
sb
.
toString
();
}
log
.
info
(
"billRecords Request body = : "
+
requsetbody
);
//打印包体
System
.
out
.
println
(
"请求的包体:"
+
requsetbody
);
BasicHttpEntity
requestBody
=
new
BasicHttpEntity
();
requestBody
.
setContent
(
new
ByteArrayInputStream
(
requsetbody
.
getBytes
(
"UTF-8"
)));
requestBody
.
setContentLength
(
requsetbody
.
getBytes
(
"UTF-8"
).
length
);
httppost
.
setEntity
(
requestBody
);
HttpResponse
response
=
httpclient
.
execute
(
httppost
);
status
=
response
.
getStatusLine
().
getStatusCode
();
System
.
out
.
println
(
"Https请求返回状态码:"
+
status
);
HttpEntity
entity
=
response
.
getEntity
();
if
(
entity
!=
null
)
result
=
EntityUtils
.
toString
(
entity
,
"UTF-8"
);
EntityUtils
.
consume
(
entity
);
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
log
.
error
(
e
.
getMessage
());
return
getMyError
(
"172001"
,
"网络错误"
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
log
.
error
(
e
.
getMessage
());
return
getMyError
(
"172002"
,
"无返回"
);
}
finally
{
if
(
httpclient
!=
null
)
httpclient
.
getConnectionManager
().
shutdown
();
}
log
.
info
(
"billRecords response body = "
+
result
);
try
{
if
(
BODY_TYPE
==
BodyType
.
Type_JSON
)
{
return
jsonToMap
(
result
);
}
else
{
return
xmlToMap
(
result
);
}
}
catch
(
Exception
e
)
{
return
getMyError
(
"172003"
,
"返回包体错误"
);
}
}
/**
* 发起IVR外呼请求
*
* @param number
* 必选参数 待呼叫号码,为Dial节点的属性
* @param userdata
* 可选参数 用户数据,在<startservice>通知中返回,只允许填写数字字符,为Dial节点的属性
* @param record
* 可选参数 是否录音,可填项为true和false,默认值为false不录音,为Dial节点的属性
* @param disnumber
* 可选参数 用户方的显号号码,根据平台侧显号规则控制。
* @return
*/
public
HashMap
<
String
,
Object
>
ivrDial
(
String
number
,
String
userdata
,
boolean
record
,
String
disnumber
)
{
HashMap
<
String
,
Object
>
validate
=
accountValidate
();
if
(
validate
!=
null
)
return
validate
;
if
(
isEmpty
(
number
))
{
log
.
error
(
"必选参数: 待呼叫号码 为空"
);
throw
new
IllegalArgumentException
(
"必选参数: 待呼叫号码 为空"
);
}
CcopHttpClient
chc
=
new
CcopHttpClient
();
DefaultHttpClient
httpclient
=
null
;
try
{
httpclient
=
chc
.
registerSSL
(
SERVER_IP
,
"TLS"
,
Integer
.
parseInt
(
SERVER_PORT
),
"https"
);
}
catch
(
Exception
e1
)
{
e1
.
printStackTrace
();
throw
new
RuntimeException
(
"初始化httpclient异常"
+
e1
.
getMessage
());
}
String
result
=
""
;
try
{
HttpPost
httppost
=
(
HttpPost
)
getHttpRequestBase
(
1
,
IvrDial
);
String
requsetbody
=
""
;
StringBuilder
sb
=
new
StringBuilder
(
"<?xml version='1.0' encoding='utf-8'?><Request>"
);
sb
.
append
(
"<Appid>"
).
append
(
App_ID
).
append
(
"</Appid>"
)
.
append
(
"<Dial number="
).
append
(
"\""
).
append
(
number
)
.
append
(
"\""
);
if
(
record
)
{
sb
.
append
(
" record="
).
append
(
"\""
).
append
(
record
).
append
(
"\""
);
}
if
(
userdata
!=
null
)
{
sb
.
append
(
" userdata="
).
append
(
"\""
).
append
(
userdata
)
.
append
(
"\""
);
}
if
(
disnumber
!=
null
)
{
sb
.
append
(
" disnumber="
).
append
(
"\""
).
append
(
disnumber
)
.
append
(
"\""
);
}
sb
.
append
(
"></Dial></Request>"
).
toString
();
requsetbody
=
sb
.
toString
();
log
.
info
(
"ivrDial Request body = : "
+
requsetbody
);
System
.
out
.
println
(
"请求的包体:"
+
requsetbody
);
BasicHttpEntity
requestBody
=
new
BasicHttpEntity
();
requestBody
.
setContent
(
new
ByteArrayInputStream
(
requsetbody
.
getBytes
(
"UTF-8"
)));
requestBody
.
setContentLength
(
requsetbody
.
getBytes
(
"UTF-8"
).
length
);
httppost
.
setEntity
(
requestBody
);
HttpResponse
response
=
httpclient
.
execute
(
httppost
);
status
=
response
.
getStatusLine
().
getStatusCode
();
System
.
out
.
println
(
"Https请求返回状态码:"
+
status
);
HttpEntity
entity
=
response
.
getEntity
();
if
(
entity
!=
null
)
result
=
EntityUtils
.
toString
(
entity
,
"UTF-8"
);
EntityUtils
.
consume
(
entity
);
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
log
.
error
(
e
.
getMessage
());
return
getMyError
(
"172001"
,
"网络错误"
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
log
.
error
(
e
.
getMessage
());
return
getMyError
(
"172002"
,
"无返回"
);
}
finally
{
if
(
httpclient
!=
null
)
httpclient
.
getConnectionManager
().
shutdown
();
}
log
.
info
(
"ivrDial response body = "
+
result
);
try
{
return
xmlToMap
(
result
);
}
catch
(
Exception
e
)
{
return
getMyError
(
"172003"
,
"返回包体错误"
);
}
}
/**
* 发起语音验证码请求
*
* @param verifyCode
* 必选参数 验证码内容,为数字和英文字母,不区分大小写,长度4-8位
* @param to
* 必选参数 接收号码
* @param displayNum
* 可选参数 显示主叫号码,显示权限由服务侧控制
* @param playTimes
* 可选参数 循环播放次数,1-3次,默认播放1次
* @param respUrl
* 可选参数 语音验证码状态通知回调地址,云通讯平台将向该Url地址发送呼叫结果通知
* @param lang
* 可选参数 语言类型
* @param userData
* 可选参数 第三方私有数据
* @param welcomePrompt
* 可选参数 wav格式的文件名,欢迎提示音,在播放验证码语音前播放此内容,配合verifyCode使用,默认值空,当playVerifyCode为空有效。
* @param playVerifyCode
* 可选参数 wav格式的文件名,语音验证码的内容全部播放此节点下的全部语音文件,也就是实现了语音验证码功能播放用户自己的语音文件,该参数和verifyCode二者不能同时为空,当二者都不为空时优先使用playVerifyCode。
* @param maxCallTime
* 可选参数 最大通话时长
* @return
*/
public
HashMap
<
String
,
Object
>
voiceVerify
(
String
verifyCode
,
String
to
,
String
displayNum
,
String
playTimes
,
String
respUrl
,
String
lang
,
String
userData
,
String
welcomePrompt
,
String
playVerifyCode
,
String
maxCallTime
)
{
HashMap
<
String
,
Object
>
validate
=
accountValidate
();
if
(
validate
!=
null
)
return
validate
;
if
((
isEmpty
(
verifyCode
))
||
(
isEmpty
(
to
)))
throw
new
IllegalArgumentException
(
"必选参数:"
+
(
isEmpty
(
verifyCode
)
?
" 验证码内容 "
:
""
)
+
(
isEmpty
(
to
)
?
" 接收号码 "
:
""
)
+
"为空"
);
CcopHttpClient
chc
=
new
CcopHttpClient
();
DefaultHttpClient
httpclient
=
null
;
try
{
httpclient
=
chc
.
registerSSL
(
SERVER_IP
,
"TLS"
,
Integer
.
parseInt
(
SERVER_PORT
),
"https"
);
}
catch
(
Exception
e1
)
{
e1
.
printStackTrace
();
throw
new
RuntimeException
(
"初始化httpclient异常"
+
e1
.
getMessage
());
}
String
result
=
""
;
try
{
HttpPost
httppost
=
(
HttpPost
)
getHttpRequestBase
(
1
,
VoiceVerify
);
String
requsetbody
=
""
;
if
(
BODY_TYPE
==
BodyType
.
Type_JSON
)
{
JsonObject
json
=
new
JsonObject
();
json
.
addProperty
(
"appId"
,
App_ID
);
json
.
addProperty
(
"verifyCode"
,
verifyCode
);
json
.
addProperty
(
"to"
,
to
);
if
(!(
isEmpty
(
displayNum
)))
json
.
addProperty
(
"displayNum"
,
displayNum
);
if
(!(
isEmpty
(
playTimes
)))
json
.
addProperty
(
"playTimes"
,
playTimes
);
if
(!(
isEmpty
(
respUrl
)))
json
.
addProperty
(
"respUrl"
,
respUrl
);
if
(!(
isEmpty
(
lang
)))
json
.
addProperty
(
"lang"
,
lang
);
if
(!(
isEmpty
(
userData
)))
json
.
addProperty
(
"userData"
,
userData
);
if
(!(
isEmpty
(
welcomePrompt
)))
json
.
addProperty
(
"welcomePrompt"
,
welcomePrompt
);
if
(!(
isEmpty
(
playVerifyCode
)))
json
.
addProperty
(
"playVerifyCode"
,
playVerifyCode
);
if
(!(
isEmpty
(
maxCallTime
)))
json
.
addProperty
(
"maxCallTime"
,
maxCallTime
);
requsetbody
=
json
.
toString
();
}
else
{
StringBuilder
sb
=
new
StringBuilder
(
"<?xml version='1.0' encoding='utf-8'?><VoiceVerify>"
);
sb
.
append
(
"<appId>"
).
append
(
App_ID
).
append
(
"</appId>"
)
.
append
(
"<verifyCode>"
).
append
(
verifyCode
)
.
append
(
"</verifyCode>"
).
append
(
"<to>"
).
append
(
to
)
.
append
(
"</to>"
);
if
(!(
isEmpty
(
displayNum
)))
sb
.
append
(
"<displayNum>"
).
append
(
displayNum
)
.
append
(
"</displayNum>"
);
if
(!(
isEmpty
(
playTimes
)))
sb
.
append
(
"<playTimes>"
).
append
(
playTimes
)
.
append
(
"</playTimes>"
);
if
(!(
isEmpty
(
respUrl
)))
sb
.
append
(
"<respUrl>"
).
append
(
respUrl
).
append
(
"</respUrl>"
);
if
(!(
isEmpty
(
lang
)))
sb
.
append
(
"<lang>"
).
append
(
lang
).
append
(
"</lang>"
);
if
(!(
isEmpty
(
userData
)))
sb
.
append
(
"<userData>"
).
append
(
userData
)
.
append
(
"</userData>"
);
if
(!(
isEmpty
(
welcomePrompt
)))
sb
.
append
(
"<welcomePrompt>"
).
append
(
welcomePrompt
)
.
append
(
"</welcomePrompt>"
);
if
(!(
isEmpty
(
playVerifyCode
)))
sb
.
append
(
"<playVerifyCode>"
).
append
(
playVerifyCode
)
.
append
(
"</playVerifyCode>"
);
if
(!(
isEmpty
(
maxCallTime
)))
sb
.
append
(
"<maxCallTime>"
).
append
(
maxCallTime
)
.
append
(
"</maxCallTime>"
);
sb
.
append
(
"</VoiceVerify>"
).
toString
();
requsetbody
=
sb
.
toString
();
}
log
.
info
(
"voiceVerify Request body = : "
+
requsetbody
);
System
.
out
.
println
(
"请求的包体:"
+
requsetbody
);
BasicHttpEntity
requestBody
=
new
BasicHttpEntity
();
requestBody
.
setContent
(
new
ByteArrayInputStream
(
requsetbody
.
getBytes
(
"UTF-8"
)));
requestBody
.
setContentLength
(
requsetbody
.
getBytes
(
"UTF-8"
).
length
);
httppost
.
setEntity
(
requestBody
);
HttpResponse
response
=
httpclient
.
execute
(
httppost
);
status
=
response
.
getStatusLine
().
getStatusCode
();
System
.
out
.
println
(
"Https请求返回状态码:"
+
status
);
HttpEntity
entity
=
response
.
getEntity
();
if
(
entity
!=
null
)
result
=
EntityUtils
.
toString
(
entity
,
"UTF-8"
);
EntityUtils
.
consume
(
entity
);
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
log
.
error
(
e
.
getMessage
());
return
getMyError
(
"172001"
,
"网络错误"
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
log
.
error
(
e
.
getMessage
());
return
getMyError
(
"172002"
,
"无返回"
);
}
finally
{
if
(
httpclient
!=
null
)
httpclient
.
getConnectionManager
().
shutdown
();
}
log
.
info
(
"voiceVerify response body = "
+
result
);
try
{
if
(
BODY_TYPE
==
BodyType
.
Type_JSON
)
{
return
jsonToMap
(
result
);
}
else
{
return
xmlToMap
(
result
);
}
}
catch
(
Exception
e
)
{
return
getMyError
(
"172003"
,
"返回包体错误"
);
}
}
/**
* 发送外呼通知请求
*
* @param to
* 必选参数 被叫号码
* @param mediaName
* 可选参数 语音文件名称,格式 wav。与mediaTxt不能同时为空,不为空时mediaTxt属性失效
* @param mediaTxt
* 可选参数 文本内容,默认值为空
* @param displayNum
* 可选参数 显示的主叫号码,显示权限由服务侧控制
* @param playTimes
* 可选参数 循环播放次数,1-3次,默认播放1次
* @param respUrl
* 可选参数 外呼通知状态通知回调地址,云通讯平台将向该Url地址发送呼叫结果通知
* @param userData
* 可选参数 用户私有数据
* @param txtSpeed
* 可选参数 文本转语音后的发音速度,取值范围:-500至500,当mediaTxt有效才生效,默认值为0。
* @param txtVolume
* 可选参数 文本转语音后的音量大小,取值范围:-20至20,当mediaTxt有效才生效,默认值为0。
* @param txtPitch
* 可选参数 文本转语音后的音调,取值范围:-500至500,当mediaTxt有效才生效,默认值为0。
* @param txtBgsound
* 可选参数 文本转语音后的背景音编号,目前云通讯平台支持6种背景音,1到6的六种背景音编码,0为不需要背景音。暂时不支持第三方自定义背景音。当mediaTxt有效才生效。
* @param playMode
* 可选参数 是否同时播放文本和语音文件 , 0、否 1、是,默认0。优先播放文本。
* @return
*/
public
HashMap
<
String
,
Object
>
landingCall
(
String
to
,
String
mediaName
,
String
mediaTxt
,
String
displayNum
,
String
playTimes
,
String
respUrl
,
String
userData
,
String
txtSpeed
,
String
txtVolume
,
String
txtPitch
,
String
txtBgsound
,
String
playMode
)
{
HashMap
<
String
,
Object
>
validate
=
accountValidate
();
if
(
validate
!=
null
)
return
validate
;
if
(
isEmpty
(
to
))
throw
new
IllegalArgumentException
(
"必选参数:"
+
(
isEmpty
(
to
)
?
" 被叫号码 "
:
""
)
+
"为空"
);
if
((
isEmpty
(
mediaName
))
&&
(
isEmpty
(
mediaTxt
)))
throw
new
IllegalArgumentException
(
"参数语音文件名称和参数语音文本内容不能同时为空"
);
CcopHttpClient
chc
=
new
CcopHttpClient
();
DefaultHttpClient
httpclient
=
null
;
try
{
httpclient
=
chc
.
registerSSL
(
SERVER_IP
,
"TLS"
,
Integer
.
parseInt
(
SERVER_PORT
),
"https"
);
}
catch
(
Exception
e1
)
{
e1
.
printStackTrace
();
throw
new
RuntimeException
(
"初始化httpclient异常"
+
e1
.
getMessage
());
}
String
result
=
""
;
try
{
HttpPost
httppost
=
(
HttpPost
)
getHttpRequestBase
(
1
,
LandingCalls
);
String
requsetbody
=
""
;
if
(
BODY_TYPE
==
BodyType
.
Type_JSON
)
{
JsonObject
json
=
new
JsonObject
();
json
.
addProperty
(
"appId"
,
App_ID
);
json
.
addProperty
(
"to"
,
to
);
if
(!(
isEmpty
(
mediaName
)))
{
json
.
addProperty
(
"mediaName"
,
mediaName
);
}
if
(!(
isEmpty
(
mediaTxt
)))
{
json
.
addProperty
(
"mediaTxt"
,
mediaTxt
);
}
if
(!(
isEmpty
(
displayNum
)))
{
json
.
addProperty
(
"displayNum"
,
displayNum
);
}
if
(!(
isEmpty
(
playTimes
)))
{
json
.
addProperty
(
"playTimes"
,
playTimes
);
}
if
(!(
isEmpty
(
respUrl
)))
{
json
.
addProperty
(
"respUrl"
,
respUrl
);
}
if
(!(
isEmpty
(
userData
)))
{
json
.
addProperty
(
"userData"
,
userData
);
}
if
(!(
isEmpty
(
txtSpeed
)))
{
json
.
addProperty
(
"txtSpeed"
,
txtSpeed
);
}
if
(!(
isEmpty
(
txtVolume
)))
{
json
.
addProperty
(
"txtVolume"
,
txtVolume
);
}
if
(!(
isEmpty
(
txtPitch
)))
{
json
.
addProperty
(
"txtPitch"
,
txtPitch
);
}
if
(!(
isEmpty
(
txtBgsound
)))
{
json
.
addProperty
(
"txtBgsound"
,
txtBgsound
);
}
if
(!(
isEmpty
(
playMode
)))
{
json
.
addProperty
(
"playMode"
,
playMode
);
}
requsetbody
=
json
.
toString
();
}
else
{
StringBuilder
sb
=
new
StringBuilder
(
"<?xml version='1.0' encoding='utf-8'?><LandingCall>"
);
sb
.
append
(
"<appId>"
).
append
(
App_ID
).
append
(
"</appId>"
)
.
append
(
"<to>"
).
append
(
to
).
append
(
"</to>"
);
if
(!(
isEmpty
(
mediaName
)))
sb
.
append
(
"<mediaName>"
).
append
(
mediaName
)
.
append
(
"</mediaName>"
);
else
if
(!(
isEmpty
(
mediaName
)))
sb
.
append
(
"<mediaName>"
).
append
(
mediaName
)
.
append
(
"</mediaName>"
);
if
(!(
isEmpty
(
mediaTxt
)))
sb
.
append
(
"<mediaTxt>"
).
append
(
mediaTxt
)
.
append
(
"</mediaTxt>"
);
if
(!(
isEmpty
(
displayNum
)))
sb
.
append
(
"<displayNum>"
).
append
(
displayNum
)
.
append
(
"</displayNum>"
);
if
(!(
isEmpty
(
playTimes
)))
sb
.
append
(
"<playTimes>"
).
append
(
playTimes
)
.
append
(
"</playTimes>"
);
if
(!(
isEmpty
(
respUrl
)))
sb
.
append
(
"<respUrl>"
).
append
(
respUrl
).
append
(
"</respUrl>"
);
if
(!(
isEmpty
(
userData
)))
sb
.
append
(
"<userData>"
).
append
(
userData
).
append
(
"</userData>"
);
if
(!(
isEmpty
(
txtSpeed
)))
sb
.
append
(
"<txtSpeed>"
).
append
(
txtSpeed
).
append
(
"</txtSpeed>"
);
if
(!(
isEmpty
(
txtVolume
)))
sb
.
append
(
"<txtVolume>"
).
append
(
txtVolume
).
append
(
"</txtVolume>"
);
if
(!(
isEmpty
(
txtPitch
)))
sb
.
append
(
"<txtPitch>"
).
append
(
txtPitch
).
append
(
"</txtPitch>"
);
if
(!(
isEmpty
(
txtBgsound
)))
sb
.
append
(
"<txtBgsound>"
).
append
(
txtBgsound
).
append
(
"</txtBgsound>"
);
if
(!(
isEmpty
(
playMode
)))
sb
.
append
(
"<playMode>"
).
append
(
playMode
).
append
(
"</playMode>"
);
sb
.
append
(
"</LandingCall>"
).
toString
();
requsetbody
=
sb
.
toString
();
}
log
.
info
(
"landingCalls Request body = : "
+
requsetbody
);
System
.
out
.
println
(
"请求的包体:"
+
requsetbody
);
BasicHttpEntity
requestBody
=
new
BasicHttpEntity
();
requestBody
.
setContent
(
new
ByteArrayInputStream
(
requsetbody
.
getBytes
(
"UTF-8"
)));
requestBody
.
setContentLength
(
requsetbody
.
getBytes
(
"UTF-8"
).
length
);
httppost
.
setEntity
(
requestBody
);
HttpResponse
response
=
httpclient
.
execute
(
httppost
);
status
=
response
.
getStatusLine
().
getStatusCode
();
System
.
out
.
println
(
"Https请求返回状态码:"
+
status
);
HttpEntity
entity
=
response
.
getEntity
();
if
(
entity
!=
null
)
result
=
EntityUtils
.
toString
(
entity
,
"UTF-8"
);
EntityUtils
.
consume
(
entity
);
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
log
.
error
(
e
.
getMessage
());
return
getMyError
(
"172001"
,
"网络错误"
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
log
.
error
(
e
.
getMessage
());
return
getMyError
(
"172002"
,
"无返回"
);
}
finally
{
if
(
httpclient
!=
null
)
httpclient
.
getConnectionManager
().
shutdown
();
}
log
.
info
(
"landingCall response body = "
+
result
);
try
{
if
(
BODY_TYPE
==
BodyType
.
Type_JSON
)
{
return
jsonToMap
(
result
);
}
else
{
return
xmlToMap
(
result
);
}
}
catch
(
Exception
e
)
{
return
getMyError
(
"172003"
,
"返回包体错误"
);
}
}
/**
* 发送短信模板请求
*
* @param to
* 必选参数 短信接收端手机号码集合,用英文逗号分开,每批发送的手机号数量不得超过100个
* @param templateId
* 必选参数 模板Id
* @param datas
* 可选参数 内容数据,用于替换模板中{序号}
* @return
*/
public
HashMap
<
String
,
Object
>
sendTemplateSMS
(
String
to
,
String
templateId
,
String
[]
datas
)
{
HashMap
<
String
,
Object
>
validate
=
accountValidate
();
if
(
validate
!=
null
)
return
validate
;
if
((
isEmpty
(
to
))
||
(
isEmpty
(
App_ID
))
||
(
isEmpty
(
templateId
)))
throw
new
IllegalArgumentException
(
"必选参数:"
+
(
isEmpty
(
to
)
?
" 手机号码 "
:
""
)
+
(
isEmpty
(
templateId
)
?
" 模板Id "
:
""
)
+
"为空"
);
CcopHttpClient
chc
=
new
CcopHttpClient
();
DefaultHttpClient
httpclient
=
null
;
try
{
httpclient
=
chc
.
registerSSL
(
SERVER_IP
,
"TLS"
,
Integer
.
parseInt
(
SERVER_PORT
),
"https"
);
}
catch
(
Exception
e1
)
{
e1
.
printStackTrace
();
throw
new
RuntimeException
(
"初始化httpclient异常"
+
e1
.
getMessage
());
}
String
result
=
""
;
try
{
HttpPost
httppost
=
(
HttpPost
)
getHttpRequestBase
(
1
,
TemplateSMS
);
String
requsetbody
=
""
;
if
(
BODY_TYPE
==
BodyType
.
Type_JSON
)
{
JsonObject
json
=
new
JsonObject
();
json
.
addProperty
(
"appId"
,
App_ID
);
json
.
addProperty
(
"to"
,
to
);
json
.
addProperty
(
"templateId"
,
templateId
);
if
(
datas
!=
null
)
{
StringBuilder
sb
=
new
StringBuilder
(
"["
);
for
(
String
s
:
datas
)
{
sb
.
append
(
"\""
+
s
+
"\""
+
","
);
}
sb
.
replace
(
sb
.
length
()
-
1
,
sb
.
length
(),
"]"
);
JsonParser
parser
=
new
JsonParser
();
JsonArray
Jarray
=
parser
.
parse
(
sb
.
toString
())
.
getAsJsonArray
();
json
.
add
(
"datas"
,
Jarray
);
}
requsetbody
=
json
.
toString
();
}
else
{
StringBuilder
sb
=
new
StringBuilder
(
"<?xml version='1.0' encoding='utf-8'?><TemplateSMS>"
);
sb
.
append
(
"<appId>"
).
append
(
App_ID
).
append
(
"</appId>"
)
.
append
(
"<to>"
).
append
(
to
).
append
(
"</to>"
)
.
append
(
"<templateId>"
).
append
(
templateId
)
.
append
(
"</templateId>"
);
if
(
datas
!=
null
)
{
sb
.
append
(
"<datas>"
);
for
(
String
s
:
datas
)
{
sb
.
append
(
"<data>"
).
append
(
s
).
append
(
"</data>"
);
}
sb
.
append
(
"</datas>"
);
}
sb
.
append
(
"</TemplateSMS>"
).
toString
();
requsetbody
=
sb
.
toString
();
}
//打印包体
System
.
out
.
println
(
"请求的包体:"
+
requsetbody
);
log
.
info
(
"sendTemplateSMS Request body = "
+
requsetbody
);
BasicHttpEntity
requestBody
=
new
BasicHttpEntity
();
requestBody
.
setContent
(
new
ByteArrayInputStream
(
requsetbody
.
getBytes
(
"UTF-8"
)));
requestBody
.
setContentLength
(
requsetbody
.
getBytes
(
"UTF-8"
).
length
);
httppost
.
setEntity
(
requestBody
);
HttpResponse
response
=
httpclient
.
execute
(
httppost
);
//获取响应码
status
=
response
.
getStatusLine
().
getStatusCode
();
System
.
out
.
println
(
"Https请求返回状态码:"
+
status
);
HttpEntity
entity
=
response
.
getEntity
();
if
(
entity
!=
null
)
result
=
EntityUtils
.
toString
(
entity
,
"UTF-8"
);
EntityUtils
.
consume
(
entity
);
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
log
.
error
(
e
.
getMessage
());
return
getMyError
(
"172001"
,
"网络错误"
+
"Https请求返回码:"
+
status
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
log
.
error
(
e
.
getMessage
());
return
getMyError
(
"172002"
,
"无返回"
);
}
finally
{
if
(
httpclient
!=
null
)
httpclient
.
getConnectionManager
().
shutdown
();
}
log
.
info
(
"sendTemplateSMS response body = "
+
result
);
try
{
if
(
BODY_TYPE
==
BodyType
.
Type_JSON
)
{
return
jsonToMap
(
result
);
}
else
{
return
xmlToMap
(
result
);
}
}
catch
(
Exception
e
)
{
return
getMyError
(
"172003"
,
"返回包体错误"
);
}
}
/**
* 获取子帐号信息
*
* @param
*
* @param friendlyName
* 必选参数 子帐号名称
* @return
*/
public
HashMap
<
String
,
Object
>
querySubAccount
(
String
friendlyName
)
{
HashMap
<
String
,
Object
>
validate
=
accountValidate
();
if
(
validate
!=
null
)
{
return
validate
;
}
if
((
isEmpty
(
friendlyName
)))
{
log
.
error
(
"必选参数: 子帐号名称 为空"
);
throw
new
IllegalArgumentException
(
"必选参数: 子帐号名称 为空"
);
}
CcopHttpClient
chc
=
new
CcopHttpClient
();
DefaultHttpClient
httpclient
=
null
;
try
{
httpclient
=
chc
.
registerSSL
(
SERVER_IP
,
"TLS"
,
Integer
.
parseInt
(
SERVER_PORT
),
"https"
);
}
catch
(
Exception
e1
)
{
e1
.
printStackTrace
();
throw
new
RuntimeException
(
"初始化httpclient异常"
+
e1
.
getMessage
());
}
String
result
=
""
;
try
{
HttpPost
httppost
=
(
HttpPost
)
getHttpRequestBase
(
1
,
Query_SubAccountByName
);
String
requsetbody
=
""
;
if
(
BODY_TYPE
==
BodyType
.
Type_JSON
)
{
JsonObject
json
=
new
JsonObject
();
json
.
addProperty
(
"appId"
,
App_ID
);
json
.
addProperty
(
"friendlyName"
,
friendlyName
);
requsetbody
=
json
.
toString
();
}
else
{
requsetbody
=
"<?xml version='1.0' encoding='utf-8'?><SubAccount>"
+
"<appId>"
+
App_ID
+
"</appId>"
+
"<friendlyName>"
+
friendlyName
+
"</friendlyName>"
+
"</SubAccount>"
;
}
log
.
info
(
"querySubAccountByName Request body = "
+
requsetbody
);
System
.
out
.
println
(
"请求的包体:"
+
requsetbody
);
BasicHttpEntity
requestBody
=
new
BasicHttpEntity
();
requestBody
.
setContent
(
new
ByteArrayInputStream
(
requsetbody
.
getBytes
(
"UTF-8"
)));
requestBody
.
setContentLength
(
requsetbody
.
getBytes
(
"UTF-8"
).
length
);
httppost
.
setEntity
(
requestBody
);
HttpResponse
response
=
httpclient
.
execute
(
httppost
);
status
=
response
.
getStatusLine
().
getStatusCode
();
System
.
out
.
println
(
"Https请求返回状态码:"
+
status
);
HttpEntity
entity
=
response
.
getEntity
();
if
(
entity
!=
null
)
result
=
EntityUtils
.
toString
(
entity
,
"UTF-8"
);
EntityUtils
.
consume
(
entity
);
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
log
.
error
(
e
.
getMessage
());
return
getMyError
(
"172001"
,
"网络错误"
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
log
.
error
(
e
.
getMessage
());
return
getMyError
(
"172002"
,
"无返回"
);
}
finally
{
if
(
httpclient
!=
null
)
httpclient
.
getConnectionManager
().
shutdown
();
}
log
.
info
(
"querySubAccount result "
+
result
);
try
{
if
(
BODY_TYPE
==
BodyType
.
Type_JSON
)
{
return
jsonToMap
(
result
);
}
else
{
return
xmlToMap
(
result
);
}
}
catch
(
Exception
e
)
{
return
getMyError
(
"172003"
,
"返回包体错误"
);
}
}
/**
* 获取子帐号
*
* @param startNo
* 可选参数 开始的序号,默认从0开始
* @param offset
* 可选参数 一次查询的最大条数,最小是1条,最大是100条
* @return
*/
public
HashMap
<
String
,
Object
>
getSubAccounts
(
String
startNo
,
String
offset
)
{
HashMap
<
String
,
Object
>
validate
=
accountValidate
();
if
(
validate
!=
null
)
return
validate
;
CcopHttpClient
chc
=
new
CcopHttpClient
();
DefaultHttpClient
httpclient
=
null
;
try
{
httpclient
=
chc
.
registerSSL
(
SERVER_IP
,
"TLS"
,
Integer
.
parseInt
(
SERVER_PORT
),
"https"
);
}
catch
(
Exception
e1
)
{
e1
.
printStackTrace
();
throw
new
RuntimeException
(
"初始化httpclient异常"
+
e1
.
getMessage
());
}
String
result
=
""
;
try
{
HttpPost
httppost
=
(
HttpPost
)
getHttpRequestBase
(
1
,
Get_SubAccounts
);
String
requsetbody
=
""
;
if
(
BODY_TYPE
==
BodyType
.
Type_JSON
)
{
JsonObject
json
=
new
JsonObject
();
json
.
addProperty
(
"appId"
,
App_ID
);
if
(!(
isEmpty
(
startNo
)))
json
.
addProperty
(
"startNo"
,
startNo
);
if
(!(
isEmpty
(
offset
)))
json
.
addProperty
(
"offset"
,
offset
);
requsetbody
=
json
.
toString
();
}
else
{
StringBuilder
sb
=
new
StringBuilder
(
"<?xml version='1.0' encoding='utf-8'?><SubAccount>"
);
sb
.
append
(
"<appId>"
).
append
(
App_ID
).
append
(
"</appId>"
);
if
(!(
isEmpty
(
startNo
)))
sb
.
append
(
"<startNo>"
).
append
(
startNo
).
append
(
"</startNo>"
);
if
(!(
isEmpty
(
offset
)))
sb
.
append
(
"<offset>"
).
append
(
offset
).
append
(
"</offset>"
);
sb
.
append
(
"</SubAccount>"
).
toString
();
requsetbody
=
sb
.
toString
();
}
log
.
info
(
"GetSubAccounts Request body = "
+
requsetbody
);
System
.
out
.
println
(
"请求的包体:"
+
requsetbody
);
BasicHttpEntity
requestBody
=
new
BasicHttpEntity
();
requestBody
.
setContent
(
new
ByteArrayInputStream
(
requsetbody
.
getBytes
(
"UTF-8"
)));
requestBody
.
setContentLength
(
requsetbody
.
getBytes
(
"UTF-8"
).
length
);
httppost
.
setEntity
(
requestBody
);
HttpResponse
response
=
httpclient
.
execute
(
httppost
);
status
=
response
.
getStatusLine
().
getStatusCode
();
System
.
out
.
println
(
"Https请求返回状态码:"
+
status
);
HttpEntity
entity
=
response
.
getEntity
();
if
(
entity
!=
null
)
result
=
EntityUtils
.
toString
(
entity
,
"UTF-8"
);
EntityUtils
.
consume
(
entity
);
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
log
.
error
(
e
.
getMessage
());
return
getMyError
(
"172001"
,
"网络错误"
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
log
.
error
(
e
.
getMessage
());
return
getMyError
(
"172002"
,
"无返回"
);
}
finally
{
if
(
httpclient
!=
null
)
httpclient
.
getConnectionManager
().
shutdown
();
}
log
.
info
(
"getSubAccounts result "
+
result
);
try
{
if
(
BODY_TYPE
==
BodyType
.
Type_JSON
)
{
return
jsonToMap
(
result
);
}
else
{
return
xmlToMap
(
result
);
}
}
catch
(
Exception
e
)
{
return
getMyError
(
"172003"
,
"返回包体错误"
);
}
}
/**
* 获取主帐号信息查询
*
* @return
*/
public
HashMap
<
String
,
Object
>
queryAccountInfo
()
{
if
((
isEmpty
(
SERVER_IP
)))
{
return
getMyError
(
"172004"
,
"IP为空"
);
}
if
((
isEmpty
(
SERVER_PORT
)))
{
return
getMyError
(
"172005"
,
"端口错误"
);
}
if
((
isEmpty
(
ACCOUNT_SID
)))
{
return
getMyError
(
"172006"
,
"主帐号为空"
);
}
if
((
isEmpty
(
ACCOUNT_TOKEN
)))
{
return
getMyError
(
"172007"
,
"主帐号TOKEN为空"
);
}
CcopHttpClient
chc
=
new
CcopHttpClient
();
DefaultHttpClient
httpclient
=
null
;
try
{
httpclient
=
chc
.
registerSSL
(
SERVER_IP
,
"TLS"
,
Integer
.
parseInt
(
SERVER_PORT
),
"https"
);
}
catch
(
Exception
e1
)
{
e1
.
printStackTrace
();
log
.
error
(
e1
.
getMessage
());
throw
new
RuntimeException
(
"初始化httpclient异常"
+
e1
.
getMessage
());
}
String
result
=
""
;
try
{
HttpGet
httpGet
=
(
HttpGet
)
getHttpRequestBase
(
0
,
Account_Info
);
HttpResponse
response
=
httpclient
.
execute
(
httpGet
);
status
=
response
.
getStatusLine
().
getStatusCode
();
System
.
out
.
println
(
"Https请求返回状态码:"
+
status
);
HttpEntity
entity
=
response
.
getEntity
();
if
(
entity
!=
null
)
result
=
EntityUtils
.
toString
(
entity
,
"UTF-8"
);
EntityUtils
.
consume
(
entity
);
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
log
.
error
(
e
.
getMessage
());
return
getMyError
(
"172001"
,
"网络错误"
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
log
.
error
(
e
.
getMessage
());
return
getMyError
(
"172002"
,
"无返回"
);
}
finally
{
if
(
httpclient
!=
null
)
httpclient
.
getConnectionManager
().
shutdown
();
}
log
.
info
(
"queryAccountInfo response body = "
+
result
);
try
{
if
(
BODY_TYPE
==
BodyType
.
Type_JSON
)
{
return
jsonToMap
(
result
);
}
else
{
return
xmlToMap
(
result
);
}
}
catch
(
Exception
e
)
{
return
getMyError
(
"172003"
,
"返回包体错误"
);
}
}
/**
* 创建子帐号
*
* @param friendlyName
* 必选参数 子帐号名称。可由英文字母和阿拉伯数字组成子帐号唯一名称,推荐使用电子邮箱地址
* @return
*/
public
HashMap
<
String
,
Object
>
createSubAccount
(
String
friendlyName
)
{
HashMap
<
String
,
Object
>
validate
=
accountValidate
();
if
(
validate
!=
null
)
return
validate
;
if
(
isEmpty
(
friendlyName
))
{
log
.
error
(
"必选参数: 子帐号名称 为空"
);
throw
new
IllegalArgumentException
(
"必选参数: 子帐号名称 为空"
);
}
CcopHttpClient
chc
=
new
CcopHttpClient
();
DefaultHttpClient
httpclient
=
null
;
try
{
httpclient
=
chc
.
registerSSL
(
SERVER_IP
,
"TLS"
,
Integer
.
parseInt
(
SERVER_PORT
),
"https"
);
}
catch
(
Exception
e1
)
{
e1
.
printStackTrace
();
log
.
error
(
e1
.
getMessage
());
throw
new
RuntimeException
(
"初始化httpclient异常"
+
e1
.
getMessage
());
}
String
result
=
""
;
try
{
HttpPost
httppost
=
(
HttpPost
)
getHttpRequestBase
(
1
,
Create_SubAccount
);
String
requsetbody
=
""
;
if
(
BODY_TYPE
==
BodyType
.
Type_JSON
)
{
JsonObject
json
=
new
JsonObject
();
json
.
addProperty
(
"appId"
,
App_ID
);
json
.
addProperty
(
"friendlyName"
,
friendlyName
);
requsetbody
=
json
.
toString
();
}
else
{
requsetbody
=
"<?xml version='1.0' encoding='utf-8'?><SubAccount>"
+
"<appId>"
+
App_ID
+
"</appId>"
+
"<friendlyName>"
+
friendlyName
+
"</friendlyName>"
+
"</SubAccount>"
;
}
log
.
info
(
"CreateSubAccount Request body = "
+
requsetbody
);
System
.
out
.
println
(
"请求的包体:"
+
requsetbody
);
BasicHttpEntity
requestBody
=
new
BasicHttpEntity
();
requestBody
.
setContent
(
new
ByteArrayInputStream
(
requsetbody
.
getBytes
(
"UTF-8"
)));
requestBody
.
setContentLength
(
requsetbody
.
getBytes
(
"UTF-8"
).
length
);
httppost
.
setEntity
(
requestBody
);
HttpResponse
response
=
httpclient
.
execute
(
httppost
);
status
=
response
.
getStatusLine
().
getStatusCode
();
System
.
out
.
println
(
"Https请求返回状态码:"
+
status
);
HttpEntity
entity
=
response
.
getEntity
();
if
(
entity
!=
null
)
{
result
=
EntityUtils
.
toString
(
entity
,
"UTF-8"
);
}
EntityUtils
.
consume
(
entity
);
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
log
.
error
(
e
.
getMessage
());
return
getMyError
(
"172001"
,
"网络错误"
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
log
.
error
(
e
.
getMessage
());
return
getMyError
(
"172002"
,
"无返回"
);
}
finally
{
if
(
httpclient
!=
null
)
httpclient
.
getConnectionManager
().
shutdown
();
}
log
.
info
(
"createSubAccount response body = "
+
result
);
try
{
if
(
BODY_TYPE
==
BodyType
.
Type_JSON
)
{
return
jsonToMap
(
result
);
}
else
{
return
xmlToMap
(
result
);
}
}
catch
(
Exception
e
)
{
return
getMyError
(
"172003"
,
"返回包体错误"
);
}
}
/**
* 短信模板查询
*
* @param templateId
* 可选参数 模板Id,不带此参数查询全部可用模板
* @return
*/
public
HashMap
<
String
,
Object
>
QuerySMSTemplate
(
String
templateId
)
{
HashMap
<
String
,
Object
>
validate
=
accountValidate
();
if
(
validate
!=
null
)
return
validate
;
CcopHttpClient
chc
=
new
CcopHttpClient
();
DefaultHttpClient
httpclient
=
null
;
try
{
httpclient
=
chc
.
registerSSL
(
SERVER_IP
,
"TLS"
,
Integer
.
parseInt
(
SERVER_PORT
),
"https"
);
}
catch
(
Exception
e1
)
{
e1
.
printStackTrace
();
log
.
error
(
e1
.
getMessage
());
throw
new
RuntimeException
(
"初始化httpclient异常"
+
e1
.
getMessage
());
}
String
result
=
""
;
try
{
HttpPost
httppost
=
(
HttpPost
)
getHttpRequestBase
(
1
,
Query_SMSTemplate
);
String
requsetbody
=
""
;
if
(
BODY_TYPE
==
BodyType
.
Type_JSON
)
{
JsonObject
json
=
new
JsonObject
();
json
.
addProperty
(
"appId"
,
App_ID
);
json
.
addProperty
(
"templateId"
,
templateId
);
requsetbody
=
json
.
toString
();
}
else
{
requsetbody
=
"<?xml version='1.0' encoding='utf-8'?><Request>"
+
"<appId>"
+
App_ID
+
"</appId>"
+
"<templateId>"
+
templateId
+
"</templateId>"
+
"</Request>"
;
}
log
.
info
(
"QuerySMSTemplate Request body = "
+
requsetbody
);
//打印包体
System
.
out
.
println
(
"请求的包体:"
+
requsetbody
);
BasicHttpEntity
requestBody
=
new
BasicHttpEntity
();
requestBody
.
setContent
(
new
ByteArrayInputStream
(
requsetbody
.
getBytes
(
"UTF-8"
)));
requestBody
.
setContentLength
(
requsetbody
.
getBytes
(
"UTF-8"
).
length
);
httppost
.
setEntity
(
requestBody
);
HttpResponse
response
=
httpclient
.
execute
(
httppost
);
//获取响应码
status
=
response
.
getStatusLine
().
getStatusCode
();
System
.
out
.
println
(
"Https请求返回状态码:"
+
status
);
HttpEntity
entity
=
response
.
getEntity
();
if
(
entity
!=
null
)
{
result
=
EntityUtils
.
toString
(
entity
,
"UTF-8"
);
}
EntityUtils
.
consume
(
entity
);
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
log
.
error
(
e
.
getMessage
());
return
getMyError
(
"172001"
,
"网络错误"
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
log
.
error
(
e
.
getMessage
());
return
getMyError
(
"172002"
,
"无返回"
);
}
finally
{
if
(
httpclient
!=
null
)
httpclient
.
getConnectionManager
().
shutdown
();
}
log
.
info
(
"QuerySMSTemplate response body = "
+
result
);
try
{
if
(
BODY_TYPE
==
BodyType
.
Type_JSON
)
{
return
jsonToMap
(
result
);
}
else
{
return
xmlToMap
(
result
);
}
}
catch
(
Exception
e
)
{
return
getMyError
(
"172003"
,
"返回包体错误"
);
}
}
/**
* 呼叫状态查询
*
* @param callid
* 必选参数 呼叫Id
* @param action
* 可选参数 查询结果通知的回调url地址
* @return
*/
public
HashMap
<
String
,
Object
>
QueryCallState
(
String
callid
,
String
action
)
{
HashMap
<
String
,
Object
>
validate
=
accountValidate
();
if
(
validate
!=
null
)
return
validate
;
if
((
isEmpty
(
callid
)))
{
log
.
error
(
"必选参数: callid 为空"
);
throw
new
IllegalArgumentException
(
"必选参数: callid 为空"
);
}
Callsid
=
callid
;
CcopHttpClient
chc
=
new
CcopHttpClient
();
DefaultHttpClient
httpclient
=
null
;
try
{
httpclient
=
chc
.
registerSSL
(
SERVER_IP
,
"TLS"
,
Integer
.
parseInt
(
SERVER_PORT
),
"https"
);
}
catch
(
Exception
e1
)
{
e1
.
printStackTrace
();
log
.
error
(
e1
.
getMessage
());
throw
new
RuntimeException
(
"初始化httpclient异常"
+
e1
.
getMessage
());
}
String
result
=
""
;
try
{
HttpPost
httppost
=
(
HttpPost
)
getHttpRequestBase
(
1
,
queryCallState
);
String
requsetbody
=
""
;
if
(
BODY_TYPE
==
BodyType
.
Type_JSON
)
{
JsonObject
json
=
new
JsonObject
();
JsonObject
json2
=
new
JsonObject
();
json
.
addProperty
(
"Appid"
,
App_ID
);
json2
.
addProperty
(
"callid"
,
callid
);
if
(!(
isEmpty
(
action
)))
json2
.
addProperty
(
"action"
,
action
);
json
.
addProperty
(
"QueryCallState"
,
json2
.
toString
());
requsetbody
=
json
.
toString
();
}
else
{
StringBuilder
sb
=
new
StringBuilder
(
"<?xml version='1.0' encoding='utf-8'?><Request>"
);
sb
.
append
(
"<Appid>"
).
append
(
App_ID
).
append
(
"</Appid>"
)
.
append
(
"<QueryCallState callid="
).
append
(
"\""
).
append
(
callid
)
.
append
(
"\""
);
if
(
action
!=
null
)
{
sb
.
append
(
" action="
).
append
(
"\""
).
append
(
action
)
.
append
(
"\""
).
append
(
"/"
);
}
sb
.
append
(
"></Request>"
).
toString
();
requsetbody
=
sb
.
toString
();
}
log
.
info
(
"queryCallState Request body = : "
+
requsetbody
);
System
.
out
.
println
(
"请求的包体:"
+
requsetbody
);
BasicHttpEntity
requestBody
=
new
BasicHttpEntity
();
requestBody
.
setContent
(
new
ByteArrayInputStream
(
requsetbody
.
getBytes
(
"UTF-8"
)));
requestBody
.
setContentLength
(
requsetbody
.
getBytes
(
"UTF-8"
).
length
);
httppost
.
setEntity
(
requestBody
);
HttpResponse
response
=
httpclient
.
execute
(
httppost
);
status
=
response
.
getStatusLine
().
getStatusCode
();
System
.
out
.
println
(
"Https请求返回状态码:"
+
status
);
HttpEntity
entity
=
response
.
getEntity
();
if
(
entity
!=
null
)
result
=
EntityUtils
.
toString
(
entity
,
"UTF-8"
);
EntityUtils
.
consume
(
entity
);
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
log
.
error
(
e
.
getMessage
());
return
getMyError
(
"172001"
,
"网络错误"
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
log
.
error
(
e
.
getMessage
());
return
getMyError
(
"172002"
,
"无返回"
);
}
finally
{
if
(
httpclient
!=
null
)
httpclient
.
getConnectionManager
().
shutdown
();
}
log
.
info
(
"billRecords response body = "
+
result
);
try
{
if
(
BODY_TYPE
==
BodyType
.
Type_JSON
)
{
return
jsonToMap
(
result
);
}
else
{
return
xmlToMap
(
result
);
}
}
catch
(
Exception
e
)
{
return
getMyError
(
"172003"
,
"返回包体错误"
);
}
}
/**
* 呼叫结果查询
*
* @param callSid
* 必选参数 呼叫Id
* @return
*/
public
HashMap
<
String
,
Object
>
CallResult
(
String
callSid
)
{
if
((
isEmpty
(
SERVER_IP
)))
{
return
getMyError
(
"172004"
,
"IP为空"
);
}
if
((
isEmpty
(
SERVER_PORT
)))
{
return
getMyError
(
"172005"
,
"端口错误"
);
}
if
((
isEmpty
(
ACCOUNT_SID
)))
{
return
getMyError
(
"172006"
,
"主帐号为空"
);
}
if
((
isEmpty
(
ACCOUNT_TOKEN
)))
{
return
getMyError
(
"172007"
,
"主帐号TOKEN为空"
);
}
Callsid
=
callSid
;
CcopHttpClient
chc
=
new
CcopHttpClient
();
DefaultHttpClient
httpclient
=
null
;
try
{
httpclient
=
chc
.
registerSSL
(
SERVER_IP
,
"TLS"
,
Integer
.
parseInt
(
SERVER_PORT
),
"https"
);
}
catch
(
Exception
e1
)
{
e1
.
printStackTrace
();
log
.
error
(
e1
.
getMessage
());
throw
new
RuntimeException
(
"初始化httpclient异常"
+
e1
.
getMessage
());
}
String
result
=
""
;
try
{
HttpGet
httpGet
=
(
HttpGet
)
getHttpRequestBase
(
0
,
callResult
);
HttpResponse
response
=
httpclient
.
execute
(
httpGet
);
status
=
response
.
getStatusLine
().
getStatusCode
();
System
.
out
.
println
(
"Https请求返回状态码:"
+
status
);
HttpEntity
entity
=
response
.
getEntity
();
if
(
entity
!=
null
)
result
=
EntityUtils
.
toString
(
entity
,
"UTF-8"
);
EntityUtils
.
consume
(
entity
);
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
log
.
error
(
e
.
getMessage
());
return
getMyError
(
"172001"
,
"网络错误"
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
log
.
error
(
e
.
getMessage
());
return
getMyError
(
"172002"
,
"无返回"
);
}
finally
{
if
(
httpclient
!=
null
)
httpclient
.
getConnectionManager
().
shutdown
();
}
log
.
info
(
"queryAccountInfo response body = "
+
result
);
try
{
if
(
BODY_TYPE
==
BodyType
.
Type_JSON
)
{
return
jsonToMap
(
result
);
}
else
{
return
xmlToMap
(
result
);
}
}
catch
(
Exception
e
)
{
return
getMyError
(
"172003"
,
"返回包体错误"
);
}
}
/**
* 语音文件上传
*
* @param filename
* 必选参数 文件名
* @param fis
* 必选参数 二进制数据流
* @return
*/
public
String
Filename
;
public
HashMap
<
String
,
Object
>
MediaFileUpload
(
String
filename
,
FileInputStream
fis
)
{
HashMap
<
String
,
Object
>
validate
=
accountValidate
();
if
(
validate
!=
null
)
return
validate
;
if
((
isEmpty
(
filename
)))
{
log
.
error
(
"必选参数: filename 为空"
);
throw
new
IllegalArgumentException
(
"必选参数: filename 为空"
);
}
if
(
fis
==
null
){
log
.
error
(
"必选参数: fis 为空"
);
throw
new
IllegalArgumentException
(
"请检查设置的文件"
);
}
Filename
=
filename
;
CcopHttpClient
chc
=
new
CcopHttpClient
();
DefaultHttpClient
httpclient
=
new
DefaultHttpClient
();
try
{
httpclient
=
chc
.
registerSSL
(
SERVER_IP
,
"TLS"
,
Integer
.
parseInt
(
SERVER_PORT
),
"https"
);
}
catch
(
Exception
e1
)
{
e1
.
printStackTrace
();
log
.
error
(
e1
.
getMessage
());
throw
new
RuntimeException
(
"初始化httpclient异常"
+
e1
.
getMessage
());
}
String
result
=
""
;
try
{
HttpPost
httppost
=
(
HttpPost
)
getHttpRequestBase
(
1
,
mediaFileUpload
);
log
.
info
(
"MediaFileUpload Request body = : "
+
fis
);
BasicHttpEntity
requestBody
=
new
BasicHttpEntity
();
requestBody
.
setContent
(
fis
);
requestBody
.
setContentLength
(
fis
.
available
());
System
.
out
.
println
(
"请求的包体:"
+
requestBody
);
httppost
.
setEntity
(
requestBody
);
HttpResponse
response
=
httpclient
.
execute
(
httppost
);
status
=
response
.
getStatusLine
().
getStatusCode
();
System
.
out
.
println
(
"Https请求返回状态码:"
+
status
);
HttpEntity
entity
=
response
.
getEntity
();
if
(
entity
!=
null
)
result
=
EntityUtils
.
toString
(
entity
,
"UTF-8"
);
EntityUtils
.
consume
(
entity
);
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
log
.
error
(
e
.
getMessage
());
return
getMyError
(
"172001"
,
"网络错误"
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
log
.
error
(
e
.
getMessage
());
return
getMyError
(
"172002"
,
"无返回"
);
}
finally
{
if
(
httpclient
!=
null
)
httpclient
.
getConnectionManager
().
shutdown
();
}
log
.
info
(
"billRecords response body = "
+
result
);
try
{
if
(
BODY_TYPE
==
BodyType
.
Type_JSON
)
{
return
jsonToMap
(
result
);
}
else
{
return
xmlToMap
(
result
);
}
}
catch
(
Exception
e
)
{
return
getMyError
(
"172003"
,
"返回包体错误"
);
}
}
private
HashMap
<
String
,
Object
>
jsonToMap
(
String
result
)
{
HashMap
<
String
,
Object
>
hashMap
=
new
HashMap
<
String
,
Object
>();
JsonParser
parser
=
new
JsonParser
();
JsonObject
asJsonObject
=
parser
.
parse
(
result
).
getAsJsonObject
();
Set
<
Entry
<
String
,
JsonElement
>>
entrySet
=
asJsonObject
.
entrySet
();
HashMap
<
String
,
Object
>
hashMap2
=
new
HashMap
<
String
,
Object
>();
for
(
Entry
<
String
,
JsonElement
>
m
:
entrySet
)
{
if
(
"statusCode"
.
equals
(
m
.
getKey
())
||
"statusMsg"
.
equals
(
m
.
getKey
()))
hashMap
.
put
(
m
.
getKey
(),
m
.
getValue
().
getAsString
());
else
{
if
(
"SubAccount"
.
equals
(
m
.
getKey
())
||
"totalCount"
.
equals
(
m
.
getKey
())
||
"smsTemplateList"
.
equals
(
m
.
getKey
())
||
"token"
.
equals
(
m
.
getKey
())
||
"callSid"
.
equals
(
m
.
getKey
())
||
"state"
.
equals
(
m
.
getKey
())
||
"downUrl"
.
equals
(
m
.
getKey
()))
{
if
(!
"SubAccount"
.
equals
(
m
.
getKey
())
&&
!
"smsTemplateList"
.
equals
(
m
.
getKey
()))
hashMap2
.
put
(
m
.
getKey
(),
m
.
getValue
().
getAsString
());
else
{
try
{
if
((
m
.
getValue
().
toString
().
trim
().
length
()
<=
2
)
&&
!
m
.
getValue
().
toString
().
contains
(
"["
))
{
hashMap2
.
put
(
m
.
getKey
(),
m
.
getValue
()
.
getAsString
());
hashMap
.
put
(
"data"
,
hashMap2
);
break
;
}
if
(
m
.
getValue
().
toString
().
contains
(
"[]"
))
{
hashMap2
.
put
(
m
.
getKey
(),
new
JsonArray
());
hashMap
.
put
(
"data"
,
hashMap2
);
continue
;
}
JsonArray
asJsonArray
=
parser
.
parse
(
m
.
getValue
().
toString
()).
getAsJsonArray
();
ArrayList
<
HashMap
<
String
,
Object
>>
arrayList
=
new
ArrayList
<
HashMap
<
String
,
Object
>>();
for
(
JsonElement
j
:
asJsonArray
)
{
Set
<
Entry
<
String
,
JsonElement
>>
entrySet2
=
j
.
getAsJsonObject
().
entrySet
();
HashMap
<
String
,
Object
>
hashMap3
=
new
HashMap
<
String
,
Object
>();
for
(
Entry
<
String
,
JsonElement
>
m2
:
entrySet2
)
{
hashMap3
.
put
(
m2
.
getKey
(),
m2
.
getValue
()
.
getAsString
());
}
arrayList
.
add
(
hashMap3
);
}
hashMap2
.
put
(
m
.
getKey
(),
arrayList
);
}
catch
(
Exception
e
)
{
JsonObject
asJsonObject2
=
parser
.
parse
(
m
.
getValue
().
toString
()).
getAsJsonObject
();
Set
<
Entry
<
String
,
JsonElement
>>
entrySet2
=
asJsonObject2
.
entrySet
();
HashMap
<
String
,
Object
>
hashMap3
=
new
HashMap
<
String
,
Object
>();
for
(
Entry
<
String
,
JsonElement
>
m2
:
entrySet2
)
{
hashMap3
.
put
(
m2
.
getKey
(),
m2
.
getValue
()
.
getAsString
());
}
hashMap2
.
put
(
m
.
getKey
(),
hashMap3
);
hashMap
.
put
(
"data"
,
hashMap2
);
}
}
hashMap
.
put
(
"data"
,
hashMap2
);
}
else
{
JsonObject
asJsonObject2
=
parser
.
parse
(
m
.
getValue
().
toString
()).
getAsJsonObject
();
Set
<
Entry
<
String
,
JsonElement
>>
entrySet2
=
asJsonObject2
.
entrySet
();
HashMap
<
String
,
Object
>
hashMap3
=
new
HashMap
<
String
,
Object
>();
for
(
Entry
<
String
,
JsonElement
>
m2
:
entrySet2
)
{
hashMap3
.
put
(
m2
.
getKey
(),
m2
.
getValue
().
getAsString
());
}
if
(
hashMap3
.
size
()
!=
0
)
{
hashMap2
.
put
(
m
.
getKey
(),
hashMap3
);
}
else
{
hashMap2
.
put
(
m
.
getKey
(),
m
.
getValue
().
getAsString
());
}
hashMap
.
put
(
"data"
,
hashMap2
);
}
}
}
return
hashMap
;
}
/**
* @description 将xml字符串转换成map
* @param xml
* @return Map
*/
private
HashMap
<
String
,
Object
>
xmlToMap
(
String
xml
)
{
HashMap
<
String
,
Object
>
map
=
new
HashMap
<
String
,
Object
>();
Document
doc
=
null
;
try
{
doc
=
DocumentHelper
.
parseText
(
xml
);
// 将字符串转为XML
Element
rootElt
=
doc
.
getRootElement
();
// 获取根节点
HashMap
<
String
,
Object
>
hashMap2
=
new
HashMap
<
String
,
Object
>();
ArrayList
<
HashMap
<
String
,
Object
>>
arrayList
=
new
ArrayList
<
HashMap
<
String
,
Object
>>();
for
(
Iterator
i
=
rootElt
.
elementIterator
();
i
.
hasNext
();)
{
Element
e
=
(
Element
)
i
.
next
();
if
(
"statusCode"
.
equals
(
e
.
getName
())
||
"statusMsg"
.
equals
(
e
.
getName
()))
map
.
put
(
e
.
getName
(),
e
.
getText
());
else
{
if
(
"SubAccount"
.
equals
(
e
.
getName
())
||
"TemplateSMS"
.
equals
(
e
.
getName
())
||
"totalCount"
.
equals
(
e
.
getName
())
||
"token"
.
equals
(
e
.
getName
())
||
"callSid"
.
equals
(
e
.
getName
())
||
"state"
.
equals
(
e
.
getName
())
||
"downUrl"
.
equals
(
e
.
getName
()))
{
if
(!
"SubAccount"
.
equals
(
e
.
getName
())&&!
"TemplateSMS"
.
equals
(
e
.
getName
()))
{
hashMap2
.
put
(
e
.
getName
(),
e
.
getText
());
}
else
if
(
"SubAccount"
.
equals
(
e
.
getName
())){
HashMap
<
String
,
Object
>
hashMap3
=
new
HashMap
<
String
,
Object
>();
for
(
Iterator
i2
=
e
.
elementIterator
();
i2
.
hasNext
();)
{
Element
e2
=
(
Element
)
i2
.
next
();
hashMap3
.
put
(
e2
.
getName
(),
e2
.
getText
());
}
arrayList
.
add
(
hashMap3
);
hashMap2
.
put
(
"SubAccount"
,
arrayList
);
}
else
if
(
"TemplateSMS"
.
equals
(
e
.
getName
())){
HashMap
<
String
,
Object
>
hashMap3
=
new
HashMap
<
String
,
Object
>();
for
(
Iterator
i2
=
e
.
elementIterator
();
i2
.
hasNext
();)
{
Element
e2
=
(
Element
)
i2
.
next
();
hashMap3
.
put
(
e2
.
getName
(),
e2
.
getText
());
}
arrayList
.
add
(
hashMap3
);
hashMap2
.
put
(
"TemplateSMS"
,
arrayList
);
}
map
.
put
(
"data"
,
hashMap2
);
}
else
{
HashMap
<
String
,
Object
>
hashMap3
=
new
HashMap
<
String
,
Object
>();
for
(
Iterator
i2
=
e
.
elementIterator
();
i2
.
hasNext
();)
{
Element
e2
=
(
Element
)
i2
.
next
();
// hashMap2.put(e2.getName(),e2.getText());
hashMap3
.
put
(
e2
.
getName
(),
e2
.
getText
());
}
if
(
hashMap3
.
size
()
!=
0
)
{
hashMap2
.
put
(
e
.
getName
(),
hashMap3
);
}
else
{
hashMap2
.
put
(
e
.
getName
(),
e
.
getText
());
}
map
.
put
(
"data"
,
hashMap2
);
}
}
}
}
catch
(
DocumentException
e
)
{
e
.
printStackTrace
();
log
.
error
(
e
.
getMessage
());
}
catch
(
Exception
e
)
{
log
.
error
(
e
.
getMessage
());
e
.
printStackTrace
();
}
return
map
;
}
private
HttpRequestBase
getHttpRequestBase
(
int
get
,
String
action
)
throws
NoSuchAlgorithmException
,
UnsupportedEncodingException
{
return
getHttpRequestBase
(
get
,
action
,
AccountType
.
Accounts
);
}
private
HttpRequestBase
getHttpRequestBase
(
int
get
,
String
action
,
AccountType
mAccountType
)
throws
NoSuchAlgorithmException
,
UnsupportedEncodingException
{
String
timestamp
=
DateUtil
.
dateToStr
(
new
Date
(),
DateUtil
.
DATE_TIME_NO_SLASH
);
EncryptUtil
eu
=
new
EncryptUtil
();
String
sig
=
""
;
String
acountName
=
""
;
String
acountType
=
""
;
if
(
mAccountType
==
AccountType
.
Accounts
)
{
acountName
=
ACCOUNT_SID
;
sig
=
ACCOUNT_SID
+
ACCOUNT_TOKEN
+
timestamp
;
acountType
=
"Accounts"
;
}
else
{
acountName
=
SUBACCOUNT_SID
;
sig
=
SUBACCOUNT_SID
+
SUBACCOUNT_Token
+
timestamp
;
acountType
=
"SubAccounts"
;
}
String
signature
=
eu
.
md5Digest
(
sig
);
String
url
=
getBaseUrl
().
append
(
"/"
+
acountType
+
"/"
)
.
append
(
acountName
).
append
(
"/"
+
action
+
"?sig="
)
.
append
(
signature
).
toString
();
if
(
callResult
.
equals
(
action
))
{
url
=
url
+
"&callsid="
+
Callsid
;
}
if
(
queryCallState
.
equals
(
action
))
{
url
=
url
+
"&callid="
+
Callsid
;
}
if
(
mediaFileUpload
.
equals
(
action
))
{
url
=
url
+
"&appid="
+
App_ID
+
"&filename="
+
Filename
;
}
log
.
info
(
getmethodName
(
action
)
+
" url = "
+
url
);
//System.out.println(getmethodName(action) + " url = " + url);
HttpRequestBase
mHttpRequestBase
=
null
;
if
(
get
==
Request_Get
)
mHttpRequestBase
=
new
HttpGet
(
url
);
else
if
(
get
==
Request_Post
)
mHttpRequestBase
=
new
HttpPost
(
url
);
if
(
IvrDial
.
equals
(
action
))
{
setHttpHeaderXML
(
mHttpRequestBase
);
}
else
if
(
mediaFileUpload
.
equals
(
action
))
{
setHttpHeaderMedia
(
mHttpRequestBase
);
}
else
{
setHttpHeader
(
mHttpRequestBase
);
}
String
src
=
acountName
+
":"
+
timestamp
;
String
auth
=
eu
.
base64Encoder
(
src
);
mHttpRequestBase
.
setHeader
(
"Authorization"
,
auth
);
System
.
out
.
println
(
"请求的Url:"
+
mHttpRequestBase
);
//打印Url
return
mHttpRequestBase
;
}
private
String
getmethodName
(
String
action
)
{
if
(
action
.
equals
(
Account_Info
))
{
return
"queryAccountInfo"
;
}
else
if
(
action
.
equals
(
Create_SubAccount
))
{
return
"createSubAccount"
;
}
else
if
(
action
.
equals
(
Get_SubAccounts
))
{
return
"getSubAccounts"
;
}
else
if
(
action
.
equals
(
Query_SubAccountByName
))
{
return
"querySubAccount"
;
}
else
if
(
action
.
equals
(
SMSMessages
))
{
return
"sendSMS"
;
}
else
if
(
action
.
equals
(
TemplateSMS
))
{
return
"sendTemplateSMS"
;
}
else
if
(
action
.
equals
(
LandingCalls
))
{
return
"landingCalls"
;
}
else
if
(
action
.
equals
(
VoiceVerify
))
{
return
"voiceVerify"
;
}
else
if
(
action
.
equals
(
IvrDial
))
{
return
"ivrDial"
;
}
else
if
(
action
.
equals
(
BillRecords
))
{
return
"billRecords"
;
}
else
{
return
""
;
}
}
private
void
setHttpHeaderXML
(
AbstractHttpMessage
httpMessage
)
{
httpMessage
.
setHeader
(
"Accept"
,
"application/xml"
);
httpMessage
.
setHeader
(
"Content-Type"
,
"application/xml;charset=utf-8"
);
}
private
void
setHttpHeaderMedia
(
AbstractHttpMessage
httpMessage
)
{
if
(
BODY_TYPE
==
BodyType
.
Type_JSON
)
{
httpMessage
.
setHeader
(
"Accept"
,
"application/json"
);
httpMessage
.
setHeader
(
"Content-Type"
,
"application/octet-stream;charset=utf-8;"
);
}
else
{
httpMessage
.
setHeader
(
"Accept"
,
"application/xml"
);
httpMessage
.
setHeader
(
"Content-Type"
,
"application/octet-stream;charset=utf-8;"
);
}
}
private
void
setHttpHeader
(
AbstractHttpMessage
httpMessage
)
{
if
(
BODY_TYPE
==
BodyType
.
Type_JSON
)
{
httpMessage
.
setHeader
(
"Accept"
,
"application/json"
);
httpMessage
.
setHeader
(
"Content-Type"
,
"application/json;charset=utf-8"
);
}
else
{
httpMessage
.
setHeader
(
"Accept"
,
"application/xml"
);
httpMessage
.
setHeader
(
"Content-Type"
,
"application/xml;charset=utf-8"
);
}
}
private
StringBuffer
getBaseUrl
()
{
StringBuffer
sb
=
new
StringBuffer
(
"https://"
);
sb
.
append
(
SERVER_IP
).
append
(
":"
).
append
(
SERVER_PORT
);
sb
.
append
(
"/2013-12-26"
);
return
sb
;
}
private
boolean
isEmpty
(
String
str
)
{
return
((
""
.
equals
(
str
))
||
(
str
==
null
));
}
private
HashMap
<
String
,
Object
>
getMyError
(
String
code
,
String
msg
)
{
HashMap
<
String
,
Object
>
hashMap
=
new
HashMap
<
String
,
Object
>();
hashMap
.
put
(
"statusCode"
,
code
);
hashMap
.
put
(
"statusMsg"
,
msg
);
return
hashMap
;
}
private
HashMap
<
String
,
Object
>
subAccountValidate
()
{
if
((
isEmpty
(
SERVER_IP
)))
{
return
getMyError
(
"172004"
,
"IP为空"
);
}
if
((
isEmpty
(
SERVER_PORT
)))
{
return
getMyError
(
"172005"
,
"端口错误"
);
}
if
(
isEmpty
(
SUBACCOUNT_SID
))
return
getMyError
(
"172008"
,
"子帐号空"
);
if
(
isEmpty
(
SUBACCOUNT_Token
))
return
getMyError
(
"172009"
,
"子帐号TOKEN空"
);
return
null
;
}
private
HashMap
<
String
,
Object
>
accountValidate
()
{
if
((
isEmpty
(
SERVER_IP
)))
{
return
getMyError
(
"172004"
,
"IP为空"
);
}
if
((
isEmpty
(
SERVER_PORT
)))
{
return
getMyError
(
"172005"
,
"端口错误"
);
}
if
((
isEmpty
(
ACCOUNT_SID
)))
{
return
getMyError
(
"172006"
,
"主帐号为空"
);
}
if
((
isEmpty
(
ACCOUNT_TOKEN
)))
{
return
getMyError
(
"172007"
,
"主帐号TOKEN为空"
);
}
if
((
isEmpty
(
App_ID
)))
{
return
getMyError
(
"172012"
,
"应用ID为空"
);
}
return
null
;
}
private
void
setBodyType
(
BodyType
bodyType
)
{
BODY_TYPE
=
bodyType
;
}
}
\ No newline at end of file
xx-universal/xx-universal-api/src/main/java/com/xxfc/platform/universal/utils/CCPRestSmsUtils.java
View file @
e6a4c880
package
com
.
xxfc
.
platform
.
universal
.
utils
;
import
com.cloopen.rest.sdk.CCPRestSmsSDK
;
import
java.util.HashMap
;
import
java.util.Map
;
import
java.util.Set
;
public
class
CCPRestSmsUtils
{
public
static
CCPRestS
msS
DK
restAPI
;
public
static
CCPRestSDK
restAPI
;
static
{
restAPI
=
new
CCPRestS
msS
DK
();
restAPI
=
new
CCPRestSDK
();
restAPI
.
init
(
"app.cloopen.com"
,
"8883"
);
restAPI
.
setAccount
(
"8aaf070865e6b6eb0165ecd776700559"
,
"3fe5e2f053674f23b029a9a9fc9503f0"
);
...
...
xx-universal/xx-universal-api/src/main/java/com/xxfc/platform/universal/utils/CcopHttpClient.java
0 → 100644
View file @
e6a4c880
package
com
.
xxfc
.
platform
.
universal
.
utils
;
import
java.security.KeyManagementException
;
import
java.security.NoSuchAlgorithmException
;
import
java.security.Principal
;
import
java.security.SecureRandom
;
import
java.security.cert.CertificateException
;
import
java.security.cert.X509Certificate
;
import
javax.net.ssl.SSLContext
;
import
javax.net.ssl.TrustManager
;
import
javax.net.ssl.X509TrustManager
;
import
org.apache.http.conn.scheme.Scheme
;
import
org.apache.http.conn.ssl.SSLSocketFactory
;
import
org.apache.http.impl.client.DefaultHttpClient
;
public
class
CcopHttpClient
{
public
DefaultHttpClient
registerSSL
(
String
hostname
,
String
protocol
,
int
port
,
String
scheme
)
throws
NoSuchAlgorithmException
,
KeyManagementException
{
DefaultHttpClient
httpclient
=
new
DefaultHttpClient
();
SSLContext
ctx
=
SSLContext
.
getInstance
(
protocol
);
X509TrustManager
tm
=
new
X509TrustManager
()
{
public
void
checkClientTrusted
(
X509Certificate
[]
chain
,
String
authType
)
throws
CertificateException
{
}
public
void
checkServerTrusted
(
X509Certificate
[]
chain
,
String
authType
)
throws
CertificateException
{
if
((
chain
==
null
)
||
(
chain
.
length
==
0
))
throw
new
IllegalArgumentException
(
"null or zero-length certificate chain"
);
if
((
authType
==
null
)
||
(
authType
.
length
()
==
0
))
throw
new
IllegalArgumentException
(
"null or zero-length authentication type"
);
boolean
br
=
false
;
Principal
principal
=
null
;
for
(
X509Certificate
x509Certificate
:
chain
)
{
principal
=
x509Certificate
.
getSubjectX500Principal
();
if
(
principal
!=
null
)
{
br
=
true
;
return
;
}
}
if
(!(
br
))
throw
new
CertificateException
(
"服务端证书验证失败!"
);
}
public
X509Certificate
[]
getAcceptedIssuers
()
{
return
new
X509Certificate
[
0
];
}
};
ctx
.
init
(
null
,
new
TrustManager
[]
{
tm
},
new
SecureRandom
());
SSLSocketFactory
socketFactory
=
new
SSLSocketFactory
(
ctx
,
SSLSocketFactory
.
ALLOW_ALL_HOSTNAME_VERIFIER
);
Scheme
sch
=
new
Scheme
(
scheme
,
port
,
socketFactory
);
httpclient
.
getConnectionManager
().
getSchemeRegistry
().
register
(
sch
);
return
httpclient
;
}
}
\ No newline at end of file
xx-universal/xx-universal-api/src/main/java/com/xxfc/platform/universal/utils/DateUtil.java
0 → 100644
View file @
e6a4c880
/*
* Copyright (c) 2014 The CCP project authors. All Rights Reserved.
*
* Use of this source code is governed by a Beijing Speedtong Information Technology Co.,Ltd license
* that can be found in the LICENSE file in the root of the web site.
*
* http://www.yuntongxun.com
*
* An additional intellectual property rights grant can be found
* in the file PATENTS. All contributing project authors may
* be found in the AUTHORS file in the root of the source tree.
*/
package
com
.
xxfc
.
platform
.
universal
.
utils
;
import
java.text.SimpleDateFormat
;
import
java.util.Date
;
public
class
DateUtil
{
public
static
final
int
DEFAULT
=
0
;
public
static
final
int
YM
=
1
;
public
static
final
int
YMR_SLASH
=
11
;
public
static
final
int
NO_SLASH
=
2
;
public
static
final
int
YM_NO_SLASH
=
3
;
public
static
final
int
DATE_TIME
=
4
;
public
static
final
int
DATE_TIME_NO_SLASH
=
5
;
public
static
final
int
DATE_HM
=
6
;
public
static
final
int
TIME
=
7
;
public
static
final
int
HM
=
8
;
public
static
final
int
LONG_TIME
=
9
;
public
static
final
int
SHORT_TIME
=
10
;
public
static
final
int
DATE_TIME_LINE
=
12
;
public
static
String
dateToStr
(
Date
date
,
String
pattern
)
{
if
((
date
==
null
)
||
(
date
.
equals
(
""
)))
return
null
;
SimpleDateFormat
formatter
=
new
SimpleDateFormat
(
pattern
);
return
formatter
.
format
(
date
);
}
public
static
String
dateToStr
(
Date
date
)
{
return
dateToStr
(
date
,
"yyyy/MM/dd"
);
}
public
static
String
dateToStr
(
Date
date
,
int
type
)
{
switch
(
type
)
{
case
0
:
return
dateToStr
(
date
);
case
1
:
return
dateToStr
(
date
,
"yyyy/MM"
);
case
2
:
return
dateToStr
(
date
,
"yyyyMMdd"
);
case
11
:
return
dateToStr
(
date
,
"yyyy-MM-dd"
);
case
3
:
return
dateToStr
(
date
,
"yyyyMM"
);
case
4
:
return
dateToStr
(
date
,
"yyyy/MM/dd HH:mm:ss"
);
case
5
:
return
dateToStr
(
date
,
"yyyyMMddHHmmss"
);
case
6
:
return
dateToStr
(
date
,
"yyyy/MM/dd HH:mm"
);
case
7
:
return
dateToStr
(
date
,
"HH:mm:ss"
);
case
8
:
return
dateToStr
(
date
,
"HH:mm"
);
case
9
:
return
dateToStr
(
date
,
"HHmmss"
);
case
10
:
return
dateToStr
(
date
,
"HHmm"
);
case
12
:
return
dateToStr
(
date
,
"yyyy-MM-dd HH:mm:ss"
);
}
throw
new
IllegalArgumentException
(
"Type undefined : "
+
type
);
}
}
\ No newline at end of file
xx-universal/xx-universal-api/src/main/java/com/xxfc/platform/universal/utils/EncryptUtil.java
0 → 100644
View file @
e6a4c880
/*
* Copyright (c) 2014 The CCP project authors. All Rights Reserved.
*
* Use of this source code is governed by a Beijing Speedtong Information Technology Co.,Ltd license
* that can be found in the LICENSE file in the root of the web site.
*
* http://www.yuntongxun.com
*
* An additional intellectual property rights grant can be found
* in the file PATENTS. All contributing project authors may
* be found in the AUTHORS file in the root of the source tree.
*/
package
com
.
xxfc
.
platform
.
universal
.
utils
;
import
java.io.IOException
;
import
java.io.UnsupportedEncodingException
;
import
java.security.MessageDigest
;
import
java.security.NoSuchAlgorithmException
;
import
cn.hutool.core.codec.Base64
;
public
class
EncryptUtil
{
private
static
final
String
UTF8
=
"utf-8"
;
public
String
md5Digest
(
String
src
)
throws
NoSuchAlgorithmException
,
UnsupportedEncodingException
{
MessageDigest
md
=
MessageDigest
.
getInstance
(
"MD5"
);
byte
[]
b
=
md
.
digest
(
src
.
getBytes
(
"utf-8"
));
return
byte2HexStr
(
b
);
}
public
String
base64Encoder
(
String
src
)
throws
UnsupportedEncodingException
{
// BASE64Encoder encoder = new BASE64Encoder();
return
Base64
.
encode
(
src
.
getBytes
(
"utf-8"
));
}
public
String
base64Decoder
(
String
dest
)
throws
NoSuchAlgorithmException
,
IOException
{
// BASE64Decoder decoder = new BASE64Decoder();
return
new
String
(
Base64
.
decode
(
dest
),
"utf-8"
);
}
private
String
byte2HexStr
(
byte
[]
b
)
{
StringBuilder
sb
=
new
StringBuilder
();
for
(
int
i
=
0
;
i
<
b
.
length
;
++
i
)
{
String
s
=
Integer
.
toHexString
(
b
[
i
]
&
0xFF
);
if
(
s
.
length
()
==
1
)
{
sb
.
append
(
"0"
);
}
sb
.
append
(
s
.
toUpperCase
());
}
return
sb
.
toString
();
}
}
\ No newline at end of file
xx-universal/xx-universal-api/src/main/java/com/xxfc/platform/universal/utils/PublicMsg.java
0 → 100644
View file @
e6a4c880
package
com
.
xxfc
.
platform
.
universal
.
utils
;
public
class
PublicMsg
{
public
final
static
String
UEDITOR_CONFIG
=
"{\n"
+
" \"imageActionName\": \"uploadimage\",\n"
+
" \"imageFieldName\": \"upfile\",\n"
+
" \"imageMaxSize\": 2048000,\n"
+
" \"imageAllowFiles\": [\".png\", \".jpg\", \".jpeg\", \".gif\", \".bmp\"],\n"
+
" \"imageCompressEnable\": true,\n"
+
" \"imageCompressBorder\": 1600,\n"
+
" \"imageInsertAlign\": \"none\",\n"
+
" \"imageUrlPrefix\": \"\",\n"
+
" \"imagePathFormat\": \"/ueditor/jsp/upload/image/{yyyy}{mm}{dd}/{time}{rand:6}\",\n"
+
"\n"
+
" \"scrawlActionName\": \"uploadscrawl\",\n"
+
" \"scrawlFieldName\": \"upfile\",\n"
+
" \"scrawlPathFormat\": \"/ueditor/jsp/upload/image/{yyyy}{mm}{dd}/{time}{rand:6}\",\n"
+
" \"scrawlMaxSize\": 2048000,\n"
+
" \"scrawlUrlPrefix\": \"\",\n"
+
" \"scrawlInsertAlign\": \"none\",\n"
+
"\n"
+
" \"snapscreenActionName\": \"uploadimage\",\n"
+
" \"snapscreenPathFormat\": \"/ueditor/jsp/upload/image/{yyyy}{mm}{dd}/{time}{rand:6}\",\n"
+
" \"snapscreenUrlPrefix\": \"\",\n"
+
" \"snapscreenInsertAlign\": \"none\",\n"
+
"\n"
+
" \"catcherLocalDomain\": [\"127.0.0.1\", \"localhost\", \"img.baidu.com\"],\n"
+
" \"catcherActionName\": \"catchimage\",\n"
+
" \"catcherFieldName\": \"source\",\n"
+
" \"catcherPathFormat\": \"/ueditor/jsp/upload/image/{yyyy}{mm}{dd}/{time}{rand:6}\",\n"
+
" \"catcherUrlPrefix\": \"\",\n"
+
" \"catcherMaxSize\": 2048000,\n"
+
" \"catcherAllowFiles\": [\".png\", \".jpg\", \".jpeg\", \".gif\", \".bmp\"],\n"
+
"\n"
+
" \"videoActionName\": \"uploadvideo\",\n"
+
" \"videoFieldName\": \"upfile\",\n"
+
" \"videoPathFormat\": \"/ueditor/jsp/upload/video/{yyyy}{mm}{dd}/{time}{rand:6}\",\n"
+
" \"videoUrlPrefix\": \"\",\n"
+
" \"videoMaxSize\": 102400000,\n"
+
" \"videoAllowFiles\": [\n"
+
" \".flv\", \".swf\", \".mkv\", \".avi\", \".rm\", \".rmvb\", \".mpeg\", \".mpg\",\n"
+
" \".ogg\", \".ogv\", \".mov\", \".wmv\", \".mp4\", \".webm\", \".mp3\", \".wav\", \".mid\"],\n"
+
"\n"
+
" \"fileActionName\": \"uploadfile\",\n"
+
" \"fileFieldName\": \"upfile\",\n"
+
" \"filePathFormat\": \"/ueditor/jsp/upload/file/{yyyy}{mm}{dd}/{time}{rand:6}\",\n"
+
" \"fileUrlPrefix\": \"\",\n"
+
" \"fileMaxSize\": 51200000,\n"
+
" \"fileAllowFiles\": [\n"
+
" \".png\", \".jpg\", \".jpeg\", \".gif\", \".bmp\",\n"
+
" \".flv\", \".swf\", \".mkv\", \".avi\", \".rm\", \".rmvb\", \".mpeg\", \".mpg\",\n"
+
" \".ogg\", \".ogv\", \".mov\", \".wmv\", \".mp4\", \".webm\", \".mp3\", \".wav\", \".mid\",\n"
+
" \".rar\", \".zip\", \".tar\", \".gz\", \".7z\", \".bz2\", \".cab\", \".iso\",\n"
+
" \".doc\", \".docx\", \".xls\", \".xlsx\", \".ppt\", \".pptx\", \".pdf\", \".txt\", \".md\", \".xml\"\n"
+
" ],\n"
+
"\n"
+
" \"imageManagerActionName\": \"listimage\",\n"
+
" \"imageManagerListPath\": \"/ueditor/jsp/upload/image/\",\n"
+
" \"imageManagerListSize\": 20,\n"
+
" \"imageManagerUrlPrefix\": \"\",\n"
+
" \"imageManagerInsertAlign\": \"none\",\n"
+
" \"imageManagerAllowFiles\": [\".png\", \".jpg\", \".jpeg\", \".gif\", \".bmp\"],\n"
+
"\n"
+
" \"fileManagerActionName\": \"listfile\",\n"
+
" \"fileManagerListPath\": \"/ueditor/jsp/upload/file/\",\n"
+
" \"fileManagerUrlPrefix\": \"\",\n"
+
" \"fileManagerListSize\": 20,\n"
+
" \"fileManagerAllowFiles\": [\n"
+
" \".png\", \".jpg\", \".jpeg\", \".gif\", \".bmp\",\n"
+
" \".flv\", \".swf\", \".mkv\", \".avi\", \".rm\", \".rmvb\", \".mpeg\", \".mpg\",\n"
+
" \".ogg\", \".ogv\", \".mov\", \".wmv\", \".mp4\", \".webm\", \".mp3\", \".wav\", \".mid\",\n"
+
" \".rar\", \".zip\", \".tar\", \".gz\", \".7z\", \".bz2\", \".cab\", \".iso\",\n"
+
" \".doc\", \".docx\", \".xls\", \".xlsx\", \".ppt\", \".pptx\", \".pdf\", \".txt\", \".md\", \".xml\"\n"
+
" ] \n"
+
"\n"
+
"}"
;
/**
* Ueditor的返回状态类型
*/
public
enum
UeditorMsg
{
SUCCESS
(
"SUCCESS"
),
ERROR
(
"上传失败"
);
private
String
v
;
UeditorMsg
(
String
v
){
this
.
v
=
v
;
}
public
String
get
(){
return
this
.
v
;
}
}
}
\ No newline at end of file
xx-universal/xx-universal-server/src/main/java/com/xxfc/platform/universal/controller/SmsController.java
View file @
e6a4c880
...
...
@@ -11,10 +11,7 @@ import com.xxfc.platform.universal.service.SmsService;
import
com.xxfc.platform.universal.service.UploadService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestMethod
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
org.springframework.web.bind.annotation.RestController
;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.multipart.MultipartFile
;
import
java.io.File
;
...
...
@@ -48,7 +45,7 @@ public class SmsController {
}
@RequestMapping
(
value
=
"/app/unauth/sendTemplate"
,
method
=
RequestMethod
.
GET
)
public
ObjectRestResponse
sendTemplate
(
SmsTemplateDTO
smsTemplateDTO
)
throws
Exception
{
public
ObjectRestResponse
sendTemplate
(
@RequestBody
SmsTemplateDTO
smsTemplateDTO
)
throws
Exception
{
if
(
smsTemplateDTO
==
null
){
return
ObjectRestResponse
.
createDefaultFail
();
}
...
...
xx-universal/xx-universal-server/src/main/java/com/xxfc/platform/universal/controller/UploadController.java
View file @
e6a4c880
...
...
@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONObject;
import
com.github.wxiaoqi.security.auth.client.annotation.IgnoreUserToken
;
import
com.github.wxiaoqi.security.common.util.result.JsonResultUtil
;
import
com.xxfc.platform.universal.service.UploadService
;
import
com.xxfc.platform.universal.utils.PublicMsg
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
...
@@ -14,6 +15,8 @@ import org.springframework.web.bind.annotation.RequestParam;
import
org.springframework.web.bind.annotation.RestController
;
import
org.springframework.web.multipart.MultipartFile
;
import
javax.servlet.http.HttpServletRequest
;
/**
* 图片上传
...
...
@@ -96,5 +99,13 @@ public class UploadController{
return
JsonResultUtil
.
createDefaultFail
();
}
//以下是图片上传的方法
@RequestMapping
(
value
=
"/app/unauth/ueditor"
)
public
String
ueditor
(
HttpServletRequest
request
)
{
return
PublicMsg
.
UEDITOR_CONFIG
;
}
}
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