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
f95cb58c
Commit
f95cb58c
authored
Aug 29, 2025
by
daniel
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix(urlLink): 新增小程序短链接
parent
aae107f7
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
272 additions
and
139 deletions
+272
-139
WechatMiniService.java
...dlbridge/jadp/plugins/cmpt/service/WechatMiniService.java
+175
-0
WeixinInfoService.java
...dlbridge/jadp/plugins/cmpt/service/WeixinInfoService.java
+9
-0
ResourcesController.java
...m/dlbridge/jadp/plugins/cmpt/web/ResourcesController.java
+17
-138
WechatMiniController.java
.../dlbridge/jadp/plugins/cmpt/web/WechatMiniController.java
+46
-0
index.jsp
src/main/webapp/WEB-INF/views/cmpt/index.jsp
+7
-0
index.js
src/main/webapp/static/js/index.js
+18
-1
No files found.
src/main/java/com/dlbridge/jadp/plugins/cmpt/service/WechatMiniService.java
0 → 100644
View file @
f95cb58c
package
com
.
dlbridge
.
jadp
.
plugins
.
cmpt
.
service
;
import
cn.hutool.http.HttpRequest
;
import
cn.hutool.json.JSONUtil
;
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.utils.HttpUtil
;
import
com.dlbridge.jadp.plugins.cmpt.utils.json.JsonUtil
;
import
com.fasterxml.jackson.core.type.TypeReference
;
import
com.neusoft.www.utils.web.Result
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.data.redis.core.ValueOperations
;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.StringUtils
;
import
javax.annotation.Resource
;
import
java.util.Map
;
import
java.util.concurrent.TimeUnit
;
@Service
@Slf4j
public
class
WechatMiniService
{
@Resource
private
ValueOperations
valueOperations
;
@Resource
PartnerService
partnerService
;
@Resource
private
CmptService
cmptService
;
/**
* 获取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"
;
/**
* 重新获取小程序access_token
* @param partnerId 小程序组委会ID
* @return access_token
*/
public
String
getMicroAccessToken
(
String
partnerId
){
String
accessToken
=
(
String
)
valueOperations
.
get
(
"micro_gk:access_token_"
+
partnerId
);
log
.
info
(
"===== redis access_token:"
+
accessToken
);
if
(
StringUtils
.
isEmpty
(
accessToken
))
{
Partner
partner
=
partnerService
.
getPartnerById
(
partnerId
);
String
aokenUrl
=
"https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="
+
partner
.
getAppId
()
+
"&secret="
+
partner
.
getAppSecret
();
String
json
=
HttpUtil
.
doGet
(
aokenUrl
,
null
);
log
.
info
(
"URL:"
+
aokenUrl
+
", 返回结果:"
+
json
);
Map
<
String
,
Object
>
resultMap
=
JsonUtil
.
fromJson
(
json
,
new
TypeReference
<
Map
<
String
,
Object
>>()
{
});
accessToken
=
resultMap
.
get
(
"access_token"
).
toString
();
String
expiresIn
=
resultMap
.
get
(
"expires_in"
).
toString
();
valueOperations
.
set
(
"micro_gk:access_token_"
+
partnerId
,
accessToken
,
Long
.
parseLong
(
expiresIn
),
TimeUnit
.
SECONDS
);
}
return
accessToken
;
}
/**
* 重置小程序access_token
* @param partnerId 小程序组委会ID
* @return access_token
*/
public
String
resetMicroAccessToken
(
String
partnerId
){
String
accessToken
=
""
;
Partner
partner
=
partnerService
.
getPartnerById
(
partnerId
);
String
aokenUrl
=
"https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="
+
partner
.
getAppId
()
+
"&secret="
+
partner
.
getAppSecret
();
String
json
=
HttpUtil
.
doGet
(
aokenUrl
,
null
);
log
.
info
(
"URL:"
+
aokenUrl
+
", 重新获取小程序token返回结果:"
+
json
);
Map
<
String
,
Object
>
resultMap
=
JsonUtil
.
fromJson
(
json
,
new
TypeReference
<
Map
<
String
,
Object
>>()
{
});
accessToken
=
resultMap
.
get
(
"access_token"
).
toString
();
String
expiresIn
=
resultMap
.
get
(
"expires_in"
).
toString
();
valueOperations
.
set
(
"micro_gk:access_token_"
+
partnerId
,
accessToken
,
Long
.
parseLong
(
expiresIn
),
TimeUnit
.
SECONDS
);
return
accessToken
;
}
/**
* @param urlLinkParam 参数
* @return string
* @link <a href="https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/qrcode-link/url-link/generateUrlLink.html">...</a>
*/
public
Result
<
String
>
generateUrlLink
(
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);
HttpRequest
request
=
HttpRequest
.
post
(
GENERATE_URL_LINK
+
"?access_token="
+
accessToken
)
.
header
(
"Content-Type"
,
"application/json"
)
.
body
(
jsonParams
);
String
response
=
request
.
execute
().
body
();
// 解析返回结果
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>
*/
public
Result
<
String
>
generateUrlScheme
(
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
);
// 发起请求
HttpRequest
request
=
HttpRequest
.
post
(
GENERATE_SCHEME
+
"?access_token="
+
accessToken
)
.
header
(
"Content-Type"
,
"application/json"
)
.
body
(
jsonParams
);
String
response
=
request
.
execute
().
body
();
// 解析返回结果
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
;
}
}
}
src/main/java/com/dlbridge/jadp/plugins/cmpt/service/WeixinInfoService.java
View file @
f95cb58c
...
...
@@ -4,6 +4,9 @@ import com.alibaba.fastjson.JSON;
import
com.alibaba.fastjson.JSONObject
;
import
com.dlbridge.jadp.plugins.cmpt.bean.Partner
;
import
com.dlbridge.jadp.plugins.cmpt.dao.mapper.CmptMapper
;
import
com.dlbridge.jadp.plugins.cmpt.utils.HttpUtil
;
import
com.dlbridge.jadp.plugins.cmpt.utils.json.JsonUtil
;
import
com.fasterxml.jackson.core.type.TypeReference
;
import
lombok.extern.log4j.Log4j2
;
import
org.apache.http.HttpEntity
;
import
org.apache.http.client.methods.CloseableHttpResponse
;
...
...
@@ -14,7 +17,9 @@ import org.apache.http.impl.client.HttpClients;
import
org.apache.http.ssl.SSLContextBuilder
;
import
org.apache.http.ssl.TrustStrategy
;
import
org.apache.http.util.EntityUtils
;
import
org.springframework.data.redis.core.ValueOperations
;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.StringUtils
;
import
javax.annotation.Resource
;
import
javax.net.ssl.SSLContext
;
...
...
@@ -23,6 +28,8 @@ import java.security.KeyStoreException;
import
java.security.NoSuchAlgorithmException
;
import
java.security.cert.CertificateException
;
import
java.security.cert.X509Certificate
;
import
java.util.Map
;
import
java.util.concurrent.TimeUnit
;
@Service
@Log4j2
...
...
@@ -31,6 +38,8 @@ public class WeixinInfoService {
@Resource
CmptMapper
cmptMapper
;
public
JSONObject
getOpenIdAndSessionKey
(
String
code
,
String
partnerId
)
{
try
{
Partner
parnter
=
cmptMapper
.
getParnterByParnterId
(
partnerId
);
...
...
src/main/java/com/dlbridge/jadp/plugins/cmpt/web/ResourcesController.java
View file @
f95cb58c
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.UrlLinkParam
;
import
com.dlbridge.jadp.plugins.cmpt.bean.UrlSchemeParam
;
import
com.dlbridge.jadp.plugins.cmpt.dao.model.Cmpt
;
import
com.dlbridge.jadp.plugins.cmpt.service.CmptService
;
import
com.dlbridge.jadp.plugins.cmpt.service.PartnerService
;
import
com.dlbridge.jadp.plugins.cmpt.utils.HttpUtil
;
import
com.dlbridge.jadp.plugins.cmpt.utils.json.JsonUtil
;
import
com.fasterxml.jackson.core.type.TypeReference
;
import
com.neusoft.www.utils.web.Result
;
import
com.dlbridge.jadp.plugins.cmpt.service.WechatMiniService
;
import
lombok.extern.log4j.Log4j2
;
import
org.json.JSONObject
;
import
org.springframework.data.redis.core.ValueOperations
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.stereotype.Controller
;
import
org.springframework.util.StringUtils
;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.bind.annotation.PathVariable
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
org.springframework.web.client.RestTemplate
;
import
springfox.documentation.annotations.ApiIgnore
;
...
...
@@ -32,8 +25,6 @@ import java.io.IOException;
import
java.io.InputStream
;
import
java.io.OutputStream
;
import
java.net.URL
;
import
java.util.Map
;
import
java.util.concurrent.TimeUnit
;
@Controller
@RequestMapping
(
value
=
"/img"
)
...
...
@@ -47,20 +38,17 @@ public class ResourcesController {
@Resource
CmptService
cmptService
;
@Resource
PartnerService
partnerService
;
@Resource
private
ValueOperations
valueOperations
;
private
WechatMiniService
wechatMiniService
;
/**
* 获取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"
;
/**
* 小程序码生成
...
...
@@ -78,7 +66,7 @@ public class ResourcesController {
String
url
=
"https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token="
;
try
{
// 重新获取小程序access_token
String
accessToken
=
getMicroAccessToken
(
partnerId
);
String
accessToken
=
wechatMiniService
.
getMicroAccessToken
(
partnerId
);
url
+=
accessToken
;
ResponseEntity
<
org
.
springframework
.
core
.
io
.
Resource
>
resourceResponseEntity
=
restTemplate
.
postForEntity
(
url
,
obj
.
toString
(),
org
.
springframework
.
core
.
io
.
Resource
.
class
);
...
...
@@ -95,7 +83,7 @@ public class ResourcesController {
}
}
catch
(
Exception
e
)
{
log
.
info
(
"=====获取小程序二维码异常: "
+
e
.
getMessage
());
resetMicroAccessToken
(
partnerId
);
wechatMiniService
.
resetMicroAccessToken
(
partnerId
);
}
}
...
...
@@ -114,7 +102,7 @@ public class ResourcesController {
String
partnerId
=
cmptService
.
getPartnerId
(
cmptid
);
try
{
// 重新获取小程序access_token
String
accessToken
=
getMicroAccessToken
(
partnerId
);
String
accessToken
=
wechatMiniService
.
getMicroAccessToken
(
partnerId
);
ResponseEntity
<
org
.
springframework
.
core
.
io
.
Resource
>
resourceResponseEntity
=
restTemplate
.
postForEntity
(
"https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token="
+
accessToken
,
obj
.
toString
(),
org
.
springframework
.
core
.
io
.
Resource
.
class
);
Cmpt
cmpt
=
cmptService
.
queryCmptBycmptId
(
cmptid
);
...
...
@@ -128,7 +116,7 @@ public class ResourcesController {
}
}
catch
(
Exception
e
)
{
log
.
info
(
"=====下载小程序二维码异常: "
+
e
.
getMessage
());
resetMicroAccessToken
(
partnerId
);
wechatMiniService
.
resetMicroAccessToken
(
partnerId
);
}
}
...
...
@@ -237,117 +225,8 @@ public class ResourcesController {
out
.
close
();
}
/**
* 重新获取小程序access_token
* @param partnerId 小程序组委会ID
* @return access_token
*/
private
String
getMicroAccessToken
(
String
partnerId
){
String
accessToken
=
(
String
)
valueOperations
.
get
(
"micro_gk:access_token_"
+
partnerId
);
log
.
info
(
"===== redis access_token:"
+
accessToken
);
if
(
StringUtils
.
isEmpty
(
accessToken
))
{
Partner
partner
=
partnerService
.
getPartnerById
(
partnerId
);
String
aokenUrl
=
"https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="
+
partner
.
getAppId
()
+
"&secret="
+
partner
.
getAppSecret
();
String
json
=
HttpUtil
.
doGet
(
aokenUrl
,
null
);
log
.
info
(
"URL:"
+
aokenUrl
+
", 返回结果:"
+
json
);
Map
<
String
,
Object
>
resultMap
=
JsonUtil
.
fromJson
(
json
,
new
TypeReference
<
Map
<
String
,
Object
>>()
{
});
accessToken
=
resultMap
.
get
(
"access_token"
).
toString
();
String
expiresIn
=
resultMap
.
get
(
"expires_in"
).
toString
();
valueOperations
.
set
(
"micro_gk:access_token_"
+
partnerId
,
accessToken
,
Long
.
parseLong
(
expiresIn
),
TimeUnit
.
SECONDS
);
}
return
accessToken
;
}
private
String
resetMicroAccessToken
(
String
partnerId
){
String
accessToken
=
""
;
Partner
partner
=
partnerService
.
getPartnerById
(
partnerId
);
String
aokenUrl
=
"https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="
+
partner
.
getAppId
()
+
"&secret="
+
partner
.
getAppSecret
();
String
json
=
HttpUtil
.
doGet
(
aokenUrl
,
null
);
log
.
info
(
"URL:"
+
aokenUrl
+
", 重新获取小程序token返回结果:"
+
json
);
Map
<
String
,
Object
>
resultMap
=
JsonUtil
.
fromJson
(
json
,
new
TypeReference
<
Map
<
String
,
Object
>>()
{
});
accessToken
=
resultMap
.
get
(
"access_token"
).
toString
();
String
expiresIn
=
resultMap
.
get
(
"expires_in"
).
toString
();
valueOperations
.
set
(
"micro_gk:access_token_"
+
partnerId
,
accessToken
,
Long
.
parseLong
(
expiresIn
),
TimeUnit
.
SECONDS
);
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
;
}
}
}
src/main/java/com/dlbridge/jadp/plugins/cmpt/web/WechatMiniController.java
0 → 100644
View file @
f95cb58c
package
com
.
dlbridge
.
jadp
.
plugins
.
cmpt
.
web
;
import
com.dlbridge.jadp.plugins.cmpt.bean.UrlLinkParam
;
import
com.dlbridge.jadp.plugins.cmpt.bean.UrlSchemeParam
;
import
com.dlbridge.jadp.plugins.cmpt.service.WechatMiniService
;
import
com.neusoft.www.utils.web.Result
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.extern.log4j.Log4j2
;
import
org.springframework.stereotype.Controller
;
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.bind.annotation.RestController
;
import
javax.annotation.Resource
;
@Controller
@RestController
@RequestMapping
(
value
=
"/gk/wechatMini"
)
@Api
(
value
=
"微信小程序接口"
,
tags
=
"微信小程序接口"
)
@Log4j2
public
class
WechatMiniController
{
@Resource
private
WechatMiniService
wechatMiniService
;
/**
* @param urlLinkParam 参数
* @return string
* @link <a href="https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/qrcode-link/url-link/generateUrlLink.html">...</a>
*/
@PostMapping
(
"/wxUrlLink"
)
@ApiOperation
(
value
=
"生成小程序urlLink"
,
notes
=
"生成小程序urlLink"
)
public
Result
<
String
>
generateUrlLink
(
@RequestBody
UrlLinkParam
urlLinkParam
)
{
return
wechatMiniService
.
generateUrlLink
(
urlLinkParam
);
}
/**
* @param urlSchemeParam 参数
* @return string
* @link <a href="https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/qrcode-link/url-link/generateUrlLink.html">...</a>
*/
@PostMapping
(
"/wxUrlSchema"
)
@ApiOperation
(
value
=
"生成小程序urlScheme"
,
notes
=
"生成小程序urlScheme"
)
public
Result
<
String
>
generateUrlScheme
(
@RequestBody
UrlSchemeParam
urlSchemeParam
)
{
return
wechatMiniService
.
generateUrlScheme
(
urlSchemeParam
);
}
}
src/main/webapp/WEB-INF/views/cmpt/index.jsp
View file @
f95cb58c
...
...
@@ -337,6 +337,13 @@
value=
"${cmpt.isShowTab ? 1 : 0}"
/>
</div>
</div>
<div
class=
"card-header d-flex align-items-center"
>
<h2
class=
"h3"
>
短链接:
</h2>
<h3
id=
"shortLink"
></h3>
</div>
<div
class=
"card-header d-flex align-items-center"
>
适用于短信、邮件、网页、微信内等拉起小程序的业务场景
</div>
</div>
</div>
</div>
...
...
src/main/webapp/static/js/index.js
View file @
f95cb58c
...
...
@@ -76,6 +76,8 @@ $(function () {
// 小程序路径
const
path
=
"pages/race/raceHome?raceId="
+
getCmptId
()
$
(
'.path'
).
text
(
"小程序路径:"
+
path
)
// 获取短链接
getShortLink
()
})
...
...
@@ -208,4 +210,19 @@ var saveFile = function (data, filename) {
var
event
=
document
.
createEvent
(
'MouseEvents'
);
event
.
initMouseEvent
(
'click'
,
true
,
false
,
window
,
0
,
0
,
0
,
0
,
0
,
false
,
false
,
false
,
false
,
0
,
null
);
save_link
.
dispatchEvent
(
event
);
};
\ No newline at end of file
};
// 获取短链接
function
getShortLink
()
{
let
data
=
{
'cmptId'
:
getCmptId
(),
page
:
'pages/race/raceHome'
,
query
:
'raceId='
+
getCmptId
()
}
fetch
(
"/gk/wechatMini/wxUrlLink"
,
{
method
:
'POST'
,
headers
:
{
'Content-Type'
:
'application/json'
},
body
:
JSON
.
stringify
(
data
)
}).
then
(
res
=>
res
.
json
()).
then
(
data
=>
{
if
(
data
.
content
)
{
$
(
'#shortLink'
).
text
(
data
.
content
)
}
})
}
\ No newline at end of file
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