Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gk
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
micro_app
gk
Commits
66a8f98d
Commit
66a8f98d
authored
Jan 08, 2025
by
daniel
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat(wxUrl): 新增微信短链接接口
parent
ece54f28
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
144 additions
and
4 deletions
+144
-4
UrlLinkParam.java
...ava/com/dlbridge/jadp/plugins/cmpt/bean/UrlLinkParam.java
+23
-0
UrlSchemeParam.java
...a/com/dlbridge/jadp/plugins/cmpt/bean/UrlSchemeParam.java
+22
-0
ResourcesController.java
...m/dlbridge/jadp/plugins/cmpt/web/ResourcesController.java
+99
-4
No files found.
src/main/java/com/dlbridge/jadp/plugins/cmpt/bean/UrlLinkParam.java
0 → 100644
View file @
66a8f98d
package
com
.
dlbridge
.
jadp
.
plugins
.
cmpt
.
bean
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel
(
value
=
"小程序urlLink"
,
description
=
"小程序urlLink"
)
public
class
UrlLinkParam
{
@ApiModelProperty
(
value
=
"页面参数"
,
allowEmptyValue
=
true
)
String
query
;
@ApiModelProperty
(
value
=
"跳转的页面"
,
allowEmptyValue
=
true
)
String
page
=
"pages/index/index"
;
@ApiModelProperty
(
value
=
"正式版为 release,体验版为 trial,开发版为 develop"
)
String
envVersion
=
"release"
;
@ApiModelProperty
(
value
=
"赛客id"
)
Integer
cmptId
;
}
src/main/java/com/dlbridge/jadp/plugins/cmpt/bean/UrlSchemeParam.java
0 → 100644
View file @
66a8f98d
package
com
.
dlbridge
.
jadp
.
plugins
.
cmpt
.
bean
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel
(
value
=
"小程序UrlScheme"
,
description
=
"小程序UrlScheme"
)
public
class
UrlSchemeParam
{
@ApiModelProperty
(
value
=
"页面参数"
,
allowEmptyValue
=
true
)
String
query
;
@ApiModelProperty
(
value
=
"跳转的页面"
,
allowEmptyValue
=
true
)
String
page
=
"pages/index/index"
;
@ApiModelProperty
(
value
=
"正式版为 release,体验版为 trial,开发版为 develop"
)
String
envVersion
=
"release"
;
@ApiModelProperty
(
value
=
"赛客id"
)
Integer
cmptId
;
}
\ No newline at end of file
src/main/java/com/dlbridge/jadp/plugins/cmpt/web/ResourcesController.java
View file @
66a8f98d
package
com
.
dlbridge
.
jadp
.
plugins
.
cmpt
.
web
;
package
com
.
dlbridge
.
jadp
.
plugins
.
cmpt
.
web
;
import
cn.hutool.json.JSONUtil
;
import
com.dlbridge.jadp.plugins.cmpt.bean.Partner
;
import
com.dlbridge.jadp.plugins.cmpt.bean.Partner
;
import
com.dlbridge.jadp.plugins.cmpt.bean.UrlLinkParam
;
import
com.dlbridge.jadp.plugins.cmpt.bean.UrlSchemeParam
;
import
com.dlbridge.jadp.plugins.cmpt.dao.model.Cmpt
;
import
com.dlbridge.jadp.plugins.cmpt.dao.model.Cmpt
;
import
com.dlbridge.jadp.plugins.cmpt.service.CmptService
;
import
com.dlbridge.jadp.plugins.cmpt.service.CmptService
;
import
com.dlbridge.jadp.plugins.cmpt.service.PartnerService
;
import
com.dlbridge.jadp.plugins.cmpt.service.PartnerService
;
import
com.dlbridge.jadp.plugins.cmpt.utils.HttpUtil
;
import
com.dlbridge.jadp.plugins.cmpt.utils.HttpUtil
;
import
com.dlbridge.jadp.plugins.cmpt.utils.json.JsonUtil
;
import
com.dlbridge.jadp.plugins.cmpt.utils.json.JsonUtil
;
import
com.fasterxml.jackson.core.type.TypeReference
;
import
com.fasterxml.jackson.core.type.TypeReference
;
import
com.neusoft.www.utils.web.Result
;
import
lombok.extern.log4j.Log4j2
;
import
lombok.extern.log4j.Log4j2
;
import
org.json.JSONObject
;
import
org.json.JSONObject
;
import
org.springframework.data.redis.core.ValueOperations
;
import
org.springframework.data.redis.core.ValueOperations
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.stereotype.Controller
;
import
org.springframework.stereotype.Controller
;
import
org.springframework.util.StringUtils
;
import
org.springframework.util.StringUtils
;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.bind.annotation.PathVariable
;
import
org.springframework.web.client.RestClientException
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.client.RestTemplate
;
import
org.springframework.web.client.RestTemplate
;
import
springfox.documentation.annotations.ApiIgnore
;
import
springfox.documentation.annotations.ApiIgnore
;
...
@@ -25,7 +31,9 @@ import javax.servlet.http.HttpServletResponse;
...
@@ -25,7 +31,9 @@ import javax.servlet.http.HttpServletResponse;
import
java.awt.*
;
import
java.awt.*
;
import
java.awt.geom.RoundRectangle2D
;
import
java.awt.geom.RoundRectangle2D
;
import
java.awt.image.BufferedImage
;
import
java.awt.image.BufferedImage
;
import
java.io.*
;
import
java.io.IOException
;
import
java.io.InputStream
;
import
java.io.OutputStream
;
import
java.net.URL
;
import
java.net.URL
;
import
java.util.Map
;
import
java.util.Map
;
import
java.util.concurrent.TimeUnit
;
import
java.util.concurrent.TimeUnit
;
...
@@ -48,6 +56,15 @@ public class ResourcesController {
...
@@ -48,6 +56,15 @@ public class ResourcesController {
@Resource
@Resource
private
ValueOperations
valueOperations
;
private
ValueOperations
valueOperations
;
/**
* 获取url link
*/
public
final
static
String
GENERATE_URL_LINK
=
"https://api.weixin.qq.com/wxa/generate_urllink"
;
/**
* 获取 SCHEME
*/
public
final
static
String
GENERATE_SCHEME
=
"https://api.weixin.qq.com/wxa/generatescheme"
;
/**
/**
* 小程序码生成
* 小程序码生成
* @param cmptid 赛事ID
* @param cmptid 赛事ID
...
@@ -81,6 +98,8 @@ public class ResourcesController {
...
@@ -81,6 +98,8 @@ public class ResourcesController {
}
}
}
}
@RequestMapping
(
"/download/{cmptid}"
)
@RequestMapping
(
"/download/{cmptid}"
)
public
void
download
(
@PathVariable
(
"cmptid"
)
Integer
cmptid
,
HttpServletResponse
response
)
throws
IOException
{
public
void
download
(
@PathVariable
(
"cmptid"
)
Integer
cmptid
,
HttpServletResponse
response
)
throws
IOException
{
response
.
addHeader
(
"Content-Type"
,
"application/octet-stream"
);
response
.
addHeader
(
"Content-Type"
,
"application/octet-stream"
);
...
@@ -89,7 +108,6 @@ public class ResourcesController {
...
@@ -89,7 +108,6 @@ public class ResourcesController {
obj
.
put
(
"scene"
,
"raceId="
+
cmptid
);
obj
.
put
(
"scene"
,
"raceId="
+
cmptid
);
obj
.
put
(
"width"
,
"1280"
);
obj
.
put
(
"width"
,
"1280"
);
String
partnerId
=
cmptService
.
getPartnerId
(
cmptid
);
String
partnerId
=
cmptService
.
getPartnerId
(
cmptid
);
try
{
try
{
// 重新获取小程序access_token
// 重新获取小程序access_token
String
accessToken
=
getMicroAccessToken
(
partnerId
);
String
accessToken
=
getMicroAccessToken
(
partnerId
);
...
@@ -214,4 +232,81 @@ public class ResourcesController {
...
@@ -214,4 +232,81 @@ public class ResourcesController {
return
accessToken
;
return
accessToken
;
}
}
// 生成小程序urlLink
/**
* @param urlLinkParam 参数
* @return string
* @link <a href="https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/qrcode-link/url-link/generateUrlLink.html">...</a>
*/
@PostMapping
(
"/wxUrlLink"
)
public
Result
<
String
>
generateUrlLink
(
@RequestBody
UrlLinkParam
urlLinkParam
)
{
String
partnerId
=
cmptService
.
getPartnerId
(
urlLinkParam
.
getCmptId
());
try
{
// 获取小程序 access_token
String
accessToken
=
getMicroAccessToken
(
partnerId
);
// Creating the parameters
cn
.
hutool
.
json
.
JSONObject
params
=
new
cn
.
hutool
.
json
.
JSONObject
();
params
.
set
(
"path"
,
urlLinkParam
.
getPage
());
params
.
set
(
"query"
,
urlLinkParam
.
getQuery
());
params
.
set
(
"env_version"
,
urlLinkParam
.
getEnvVersion
());
// 构造请求参数
String
jsonParams
=
JsonUtil
.
toJson
(
params
);
// 发起请求
String
response
=
HttpUtil
.
post
(
GENERATE_URL_LINK
,
accessToken
,
"application/json"
,
jsonParams
);
// 解析返回结果
cn
.
hutool
.
json
.
JSONObject
result
=
JSONUtil
.
parseObj
(
response
);
if
(
result
.
containsKey
(
"url_link"
))
{
return
Result
.
success
().
setContent
(
result
.
getStr
(
"url_link"
));
}
else
{
log
.
error
(
"Failed to generate UrlLink: {}"
,
result
);
return
null
;
}
}
catch
(
Exception
e
)
{
log
.
error
(
"Error generating UrlLink: {}"
,
e
.
getMessage
(),
e
);
// 如果失败,重置 access_token
resetMicroAccessToken
(
partnerId
);
return
null
;
}
}
/**
* @param urlSchemeParam 参数
* @return string
* @link <a href="https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/qrcode-link/url-link/generateUrlLink.html">...</a>
*/
@PostMapping
(
"/wxUrlSchema"
)
public
Result
<
String
>
generateUrlScheme
(
@RequestBody
UrlSchemeParam
urlSchemeParam
)
{
String
partnerId
=
cmptService
.
getPartnerId
(
urlSchemeParam
.
getCmptId
());
try
{
// 获取小程序 access_token
String
accessToken
=
getMicroAccessToken
(
partnerId
);
// 构造请求参数
cn
.
hutool
.
json
.
JSONObject
params
=
new
cn
.
hutool
.
json
.
JSONObject
();
cn
.
hutool
.
json
.
JSONObject
jump_wxa
=
new
cn
.
hutool
.
json
.
JSONObject
();
jump_wxa
.
set
(
"path"
,
urlSchemeParam
.
getPage
());
jump_wxa
.
set
(
"query"
,
urlSchemeParam
.
getQuery
());
jump_wxa
.
set
(
"env_version"
,
urlSchemeParam
.
getEnvVersion
());
params
.
set
(
"jump_wxa"
,
jump_wxa
);
// 使用 Hutool 的 toString() 来确保请求体是正确的 JSON 格式
String
jsonParams
=
params
.
toString
();
// 输出调试信息,确认请求的 JSON 格式
System
.
out
.
println
(
"Sending JSON: "
+
jsonParams
);
// 发起请求
String
response
=
HttpUtil
.
post
(
GENERATE_SCHEME
,
accessToken
,
"application/json"
,
jsonParams
);
// 解析返回结果
cn
.
hutool
.
json
.
JSONObject
result
=
JSONUtil
.
parseObj
(
response
);
if
(
result
.
containsKey
(
"openlink"
))
{
return
Result
.
success
().
setContent
(
result
.
getStr
(
"openlink"
));
}
else
{
log
.
error
(
"Failed to generate UrlSchema: {}"
,
result
);
return
null
;
}
}
catch
(
Exception
e
)
{
log
.
error
(
"Error generating UrlSchema: {}"
,
e
.
getMessage
(),
e
);
// 如果失败,重置 access_token
resetMicroAccessToken
(
partnerId
);
return
null
;
}
}
}
}
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