记得上下班打卡 | 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
53b111d2
Commit
53b111d2
authored
Jul 10, 2021
by
jiangxiulong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
微信分享
parent
64740964
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
203 additions
and
2 deletions
+203
-2
KylinRedisConst.java
...com/liquidnet/service/kylin/constant/KylinRedisConst.java
+3
-0
liquidnet-service-platform.yml
...us-config/liquidnet-config/liquidnet-service-platform.yml
+7
-1
AlOssController.java
...ce/platform/controller/basicServices/AlOssController.java
+1
-1
WechatShareController.java
...tform/controller/basicServices/WechatShareController.java
+192
-0
No files found.
liquidnet-bus-api/liquidnet-service-kylin-api/src/main/java/com/liquidnet/service/kylin/constant/KylinRedisConst.java
View file @
53b111d2
...
...
@@ -36,4 +36,7 @@ public class KylinRedisConst {
public
static
final
String
CHECK_USER
=
"kylin:checkUser:id:"
;
public
static
final
String
CHECK_USER_RELATION
=
"kylin:checkUser:relation:id:"
;
public
static
final
String
WECHAT_SHARE_ACCESSTOKEN
=
"basicServices:accessToken:appid:"
;
public
static
final
String
WECHAT_SHARE_JSAPI_TICKET
=
"basicServices:jsapiTicket:appid:"
;
}
liquidnet-bus-config/liquidnet-config/liquidnet-service-platform.yml
View file @
53b111d2
...
...
@@ -153,4 +153,10 @@ liquidnet:
imgUrl
:
"
https://img.zhengzai.tv/"
endpoint
:
http://oss-cn-hangzhou.aliyuncs.com
accessKeyId
:
LTAI4FxrURzMvvu9reFgwY5o
accessKeySecret
:
Ym5tfAxOf2zX20MgjikLI3Wz3tlwVV
\ No newline at end of file
accessKeySecret
:
Ym5tfAxOf2zX20MgjikLI3Wz3tlwVV
zhengzai-wechat
:
appid
:
wx3498304dda39c5a1
secret
:
a1307fab0a5f2380086a7c636f7339ea
modernsky-wechat
:
appid
:
wx769aa9167bef9ce2
secret
:
bebccc204b9472ba41661372b197eb81
\ No newline at end of file
liquidnet-bus-service/liquidnet-service-platform/liquidnet-service-platform-impl/src/main/java/com/liquidnet/service/platform/controller/basicServices/AlOssController.java
View file @
53b111d2
...
...
@@ -28,7 +28,7 @@ import java.util.UUID;
@Api
(
tags
=
"basicServices"
)
@RestController
@RequestMapping
(
"basicServices/
A
lOss"
)
@RequestMapping
(
"basicServices/
a
lOss"
)
public
class
AlOssController
{
@Value
(
"${liquidnet.al-oss.endpoint}"
)
...
...
liquidnet-bus-service/liquidnet-service-platform/liquidnet-service-platform-impl/src/main/java/com/liquidnet/service/platform/controller/basicServices/WechatShareController.java
0 → 100644
View file @
53b111d2
package
com
.
liquidnet
.
service
.
platform
.
controller
.
basicServices
;
import
com.google.gson.Gson
;
import
com.google.gson.JsonObject
;
import
com.liquidnet.common.cache.redis.util.RedisUtil
;
import
com.liquidnet.service.kylin.constant.KylinRedisConst
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiImplicitParam
;
import
io.swagger.annotations.ApiImplicitParams
;
import
io.swagger.annotations.ApiOperation
;
import
org.apache.http.HttpEntity
;
import
org.apache.http.HttpResponse
;
import
org.apache.http.client.methods.HttpGet
;
import
org.apache.http.impl.client.CloseableHttpClient
;
import
org.apache.http.impl.client.HttpClients
;
import
org.apache.http.util.EntityUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.web.bind.annotation.*
;
import
java.io.UnsupportedEncodingException
;
import
java.security.MessageDigest
;
import
java.security.NoSuchAlgorithmException
;
import
java.util.Formatter
;
import
java.util.HashMap
;
import
java.util.Map
;
import
java.util.UUID
;
/**
* <p>
* 阿里云上传
* </p>
*
* @author jiangxiulong
* @since 2021-07-09
*/
@Api
(
tags
=
"basicServices"
)
@RestController
@RequestMapping
(
"basicServices/wechatShareSign"
)
public
class
WechatShareController
{
@Value
(
"${liquidnet.zhengzai-wechat.appid}"
)
private
String
zhengzaiAppid
;
@Value
(
"${liquidnet.zhengzai-wechat.secret}"
)
private
String
zhengzaiSecret
;
@Value
(
"${liquidnet.modernsky-wechat.appid}"
)
private
String
modernskyAppid
;
@Value
(
"${liquidnet.modernsky-wechat.secret}"
)
private
String
modernskySecret
;
@Autowired
private
RedisUtil
redisUtil
;
@GetMapping
(
"/zhengzai"
)
@ApiOperation
(
"正在微信分享sign"
)
@ApiImplicitParams
({
@ApiImplicitParam
(
type
=
"query"
,
dataType
=
"String"
,
name
=
"url"
,
value
=
"url地址 注意 URL 一定要动态获取,不能 hardcode"
,
required
=
true
),
})
public
Map
<
String
,
String
>
zhengzai
(
@RequestParam
String
url
)
{
String
accessToken
=
accessToken
(
zhengzaiAppid
,
zhengzaiSecret
);
String
jsapiTicket
=
jsapiTicket
(
zhengzaiAppid
,
accessToken
);
Map
<
String
,
String
>
ret
=
sign
(
jsapiTicket
,
url
);
return
ret
;
}
@GetMapping
(
"/modernsky"
)
@ApiOperation
(
"摩登微信分享sign"
)
@ApiImplicitParams
({
@ApiImplicitParam
(
type
=
"query"
,
dataType
=
"String"
,
name
=
"url"
,
value
=
"url地址 注意 URL 一定要动态获取,不能 hardcode"
,
required
=
true
),
})
public
Map
<
String
,
String
>
modernsky
(
@RequestParam
String
url
)
{
String
accessToken
=
accessToken
(
modernskyAppid
,
modernskySecret
);
String
jsapiTicket
=
jsapiTicket
(
modernskyAppid
,
accessToken
);
Map
<
String
,
String
>
ret
=
sign
(
jsapiTicket
,
url
);
return
ret
;
}
public
static
Map
<
String
,
String
>
sign
(
String
jsapi_ticket
,
String
url
)
{
Map
<
String
,
String
>
ret
=
new
HashMap
<
String
,
String
>();
String
nonce_str
=
create_nonce_str
();
String
timestamp
=
create_timestamp
();
String
string1
;
String
signature
=
""
;
//注意这里参数名必须全部小写,且必须有序
string1
=
"jsapi_ticket="
+
jsapi_ticket
+
"&noncestr="
+
nonce_str
+
"×tamp="
+
timestamp
+
"&url="
+
url
;
System
.
out
.
println
(
string1
);
try
{
MessageDigest
crypt
=
MessageDigest
.
getInstance
(
"SHA-1"
);
crypt
.
reset
();
crypt
.
update
(
string1
.
getBytes
(
"UTF-8"
));
signature
=
byteToHex
(
crypt
.
digest
());
}
catch
(
NoSuchAlgorithmException
e
)
{
e
.
printStackTrace
();
}
catch
(
UnsupportedEncodingException
e
)
{
e
.
printStackTrace
();
}
ret
.
put
(
"url"
,
url
);
ret
.
put
(
"jsapi_ticket"
,
jsapi_ticket
);
ret
.
put
(
"nonceStr"
,
nonce_str
);
ret
.
put
(
"timestamp"
,
timestamp
);
ret
.
put
(
"signature"
,
signature
);
return
ret
;
}
private
static
String
byteToHex
(
final
byte
[]
hash
)
{
Formatter
formatter
=
new
Formatter
();
for
(
byte
b
:
hash
)
{
formatter
.
format
(
"%02x"
,
b
);
}
String
result
=
formatter
.
toString
();
formatter
.
close
();
return
result
;
}
private
static
String
create_nonce_str
()
{
return
UUID
.
randomUUID
().
toString
();
}
private
static
String
create_timestamp
()
{
return
Long
.
toString
(
System
.
currentTimeMillis
()
/
1000
);
}
private
String
accessToken
(
String
appid
,
String
secret
)
{
String
accessTokenRedisKey
=
KylinRedisConst
.
WECHAT_SHARE_ACCESSTOKEN
.
concat
(
appid
);
String
accessToken
=
""
;
if
(!
redisUtil
.
hasKey
(
accessTokenRedisKey
))
{
// 请求微信获取 access_token
String
accessTokenUrl
=
String
.
format
(
"https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=%s&secret=%s"
,
appid
,
secret
);
JsonObject
object
=
null
;
try
{
CloseableHttpClient
client
=
HttpClients
.
createDefault
();
HttpGet
httpGet
=
new
HttpGet
(
accessTokenUrl
);
HttpResponse
httpResponse
=
client
.
execute
(
httpGet
);
HttpEntity
httpEntity
=
httpResponse
.
getEntity
();
String
tokens
=
EntityUtils
.
toString
(
httpEntity
,
"utf-8"
);
Gson
token_gson
=
new
Gson
();
object
=
token_gson
.
fromJson
(
tokens
,
JsonObject
.
class
);
accessToken
=
object
.
get
(
"access_token"
).
toString
().
replaceAll
(
"\""
,
""
);
redisUtil
.
set
(
accessTokenRedisKey
,
accessToken
,
7200
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
}
else
{
accessToken
=
(
String
)
redisUtil
.
get
(
accessTokenRedisKey
);
}
return
accessToken
;
}
private
String
jsapiTicket
(
String
appid
,
String
accessToken
)
{
String
jsapiTicketRedisKey
=
KylinRedisConst
.
WECHAT_SHARE_JSAPI_TICKET
.
concat
(
appid
);
String
jsapiTicket
=
""
;
if
(!
redisUtil
.
hasKey
(
jsapiTicketRedisKey
))
{
// 获取 jsapi_ticket
String
ticketUrl
=
String
.
format
(
"https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=%s&type=jsapi"
,
accessToken
);
JsonObject
object
=
null
;
try
{
CloseableHttpClient
client
=
HttpClients
.
createDefault
();
HttpGet
httpGet
=
new
HttpGet
(
ticketUrl
);
HttpResponse
httpResponse
=
client
.
execute
(
httpGet
);
HttpEntity
httpEntity
=
httpResponse
.
getEntity
();
String
tokens
=
EntityUtils
.
toString
(
httpEntity
,
"utf-8"
);
Gson
token_gson
=
new
Gson
();
object
=
token_gson
.
fromJson
(
tokens
,
JsonObject
.
class
);
jsapiTicket
=
object
.
get
(
"ticket"
).
toString
().
replaceAll
(
"\""
,
""
);
redisUtil
.
set
(
jsapiTicketRedisKey
,
jsapiTicket
,
7200
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
}
else
{
jsapiTicket
=
(
String
)
redisUtil
.
get
(
jsapiTicketRedisKey
);
}
return
jsapiTicket
;
}
}
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