Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
X
xyqb-user2
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
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
head_group
xyqb-user2
Commits
38b6b2cd
Commit
38b6b2cd
authored
Jul 13, 2023
by
王亮
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add Wechat token interface.
parent
0ccbdc69
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
19 additions
and
17 deletions
+19
-17
WechatApiV2Controller.java
...ntgroup/xyqb/controller/api/v2/WechatApiV2Controller.java
+4
-3
WechatMiniPhoneLoginStrategy.java
...ntgroup/xyqb/service/v2/WechatMiniPhoneLoginStrategy.java
+8
-3
WechatFollowServiceImpl.java
...oup/xyqb/service/wechat/impl/WechatFollowServiceImpl.java
+5
-10
WechatTokenReloadJobHandler.java
...n/quantgroup/xyqb/xxlJob/WechatTokenReloadJobHandler.java
+2
-1
No files found.
src/main/java/cn/quantgroup/xyqb/controller/api/v2/WechatApiV2Controller.java
View file @
38b6b2cd
...
...
@@ -3,7 +3,9 @@ package cn.quantgroup.xyqb.controller.api.v2;
import
cn.quantgroup.xyqb.Constants
;
import
cn.quantgroup.xyqb.model.JsonResult
;
import
cn.quantgroup.xyqb.model.session.SessionStruct
;
import
cn.quantgroup.xyqb.model.webchat.AccessTokenResponse
;
import
cn.quantgroup.xyqb.session.XyqbSessionContextHolder
;
import
com.alibaba.fastjson.JSON
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Qualifier
;
import
org.springframework.data.redis.core.RedisTemplate
;
...
...
@@ -21,8 +23,7 @@ public class WechatApiV2Controller {
@GetMapping
(
"/accessToken"
)
public
JsonResult
<
String
>
token
(
String
appId
)
{
SessionStruct
sessionStruct
=
XyqbSessionContextHolder
.
getXSession
();
String
accessToken
=
redisTemplate
.
opsForValue
().
get
(
Constants
.
WECHAT_ACCESS_TOKEN_REDIS
+
sessionStruct
.
getTenantId
()
+
":"
+
appId
);
return
JsonResult
.
buildSuccessResultGeneric
(
accessToken
);
AccessTokenResponse
accessTokenResponse
=
JSON
.
parseObject
(
redisTemplate
.
opsForValue
().
get
(
Constants
.
WECHAT_ACCESS_TOKEN_REDIS
+
sessionStruct
.
getTenantId
()
+
":"
+
appId
),
AccessTokenResponse
.
class
);
return
JsonResult
.
buildSuccessResultGeneric
(
accessTokenResponse
.
getAccessToken
());
}
}
src/main/java/cn/quantgroup/xyqb/service/v2/WechatMiniPhoneLoginStrategy.java
View file @
38b6b2cd
...
...
@@ -2,6 +2,7 @@ package cn.quantgroup.xyqb.service.v2;
import
cn.quantgroup.xyqb.Constants
;
import
cn.quantgroup.xyqb.config.data.WechatConfiguration
;
import
cn.quantgroup.xyqb.constant.UserConstant
;
import
cn.quantgroup.xyqb.constant.enums.LoginType
;
import
cn.quantgroup.xyqb.controller.req.v2.LoginReq
;
import
cn.quantgroup.xyqb.entity.User
;
...
...
@@ -13,6 +14,7 @@ import cn.quantgroup.xyqb.model.session.SessionStruct;
import
cn.quantgroup.xyqb.model.v2.login.BaseLoginParam
;
import
cn.quantgroup.xyqb.model.v2.login.WechatMiniLoginParam
;
import
cn.quantgroup.xyqb.model.v2.login.WechatMiniPhoneLoginParam
;
import
cn.quantgroup.xyqb.model.webchat.AccessTokenResponse
;
import
cn.quantgroup.xyqb.remote.WechatRemoteService
;
import
cn.quantgroup.xyqb.repository.IUserRepository
;
import
cn.quantgroup.xyqb.repository.IWeChatUserRepository
;
...
...
@@ -20,6 +22,8 @@ import cn.quantgroup.xyqb.service.register.IUserRegisterService;
import
cn.quantgroup.xyqb.service.session.ISessionService
;
import
cn.quantgroup.xyqb.session.XyqbSessionContextHolder
;
import
cn.quantgroup.xyqb.util.StringUtils
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.google.gson.Gson
;
import
com.google.gson.reflect.TypeToken
;
import
lombok.extern.slf4j.Slf4j
;
...
...
@@ -31,6 +35,7 @@ import org.springframework.stereotype.Service;
import
java.lang.reflect.Type
;
import
java.util.HashMap
;
import
java.util.Map
;
import
java.util.Objects
;
/**
* 微信小程序手机号码登录
...
...
@@ -102,12 +107,12 @@ public class WechatMiniPhoneLoginStrategy implements LoginStrategy {
boolean
register
=
false
;
User
user
;
phoneParam
.
put
(
"code"
,
loginParam
.
getPhoneCode
());
String
accessToken
=
redisTemplate
.
opsForValue
().
get
(
Constants
.
WECHAT_ACCESS_TOKEN_REDIS
+
loginParam
.
getAppId
()
);
if
(
StringUtils
.
isEmpty
(
accessToken
)){
AccessTokenResponse
accessTokenResponse
=
JSON
.
parseObject
(
redisTemplate
.
opsForValue
().
get
(
Constants
.
WECHAT_ACCESS_TOKEN_REDIS
+
sessionStruct
.
getTenantId
()+
":"
+
loginParam
.
getAppId
()),
AccessTokenResponse
.
class
);
if
(
Objects
.
isNull
(
accessTokenResponse
)){
throw
new
BizException
(
BizExceptionEnum
.
EXPIRE_WECHAT_TOKEN
);
}
WechatPhoneBean
wechatPhoneBean
=
wechatRemoteService
.
getUserPhoneNumber
(
accessToken
,
phoneParam
);
WechatPhoneBean
wechatPhoneBean
=
wechatRemoteService
.
getUserPhoneNumber
(
accessToken
Response
.
getAccessToken
()
,
phoneParam
);
if
(
wechatPhoneBean
.
getErrcode
()
==
0
)
{
//1、查询库中是否存在用户
...
...
src/main/java/cn/quantgroup/xyqb/service/wechat/impl/WechatFollowServiceImpl.java
View file @
38b6b2cd
package
cn
.
quantgroup
.
xyqb
.
service
.
wechat
.
impl
;
import
cn.quantgroup.xyqb.Constants
;
import
cn.quantgroup.xyqb.constant.UserConstant
;
import
cn.quantgroup.xyqb.exception.BizException
;
import
cn.quantgroup.xyqb.exception.BizExceptionEnum
;
import
cn.quantgroup.xyqb.model.JsonResult
;
import
cn.quantgroup.xyqb.model.webchat.*
;
import
cn.quantgroup.xyqb.repository.IWeChatInfoRelationRepository
;
import
cn.quantgroup.xyqb.service.http.IHttpService
;
import
cn.quantgroup.xyqb.service.wechat.IWechatFollowService
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.google.common.collect.Lists
;
import
lombok.extern.slf4j.Slf4j
;
...
...
@@ -120,17 +124,8 @@ public class WechatFollowServiceImpl implements IWechatFollowService {
@Override
public
AccessTokenResponse
getToken
()
{
try
{
String
response
=
httpService
.
get
(
accessTokenUrl
);
if
(
StringUtils
.
isEmpty
(
response
))
{
return
null
;
}
AccessTokenResponse
accessTokenResponse
=
JSONObject
.
parseObject
(
response
,
AccessTokenResponse
.
class
);
if
(
accessTokenResponse
==
null
)
{
return
null
;
}
AccessTokenResponse
accessTokenResponse
=
JSON
.
parseObject
(
redisTemplate
.
opsForValue
().
get
(
Constants
.
WECHAT_ACCESS_TOKEN_REDIS
+
UserConstant
.
defaultTenantId
+
":"
+
appId
),
AccessTokenResponse
.
class
);
accessTokenResponse
.
setInitialTime
(
System
.
currentTimeMillis
()
-
Constants
.
MILLIS_OF_TEN_SECOND
);
redisTemplate
.
opsForValue
().
set
(
WECHAT_FOLLOW_TOKEN_KEY_PREFIX
,
JSONObject
.
toJSONString
(
accessTokenResponse
),
accessTokenResponse
.
getExpiresIn
()
+
Constants
.
THOUSAND_SECOND
,
TimeUnit
.
SECONDS
);
return
accessTokenResponse
;
}
catch
(
Exception
ex
)
{
return
null
;
...
...
src/main/java/cn/quantgroup/xyqb/xxlJob/WechatTokenReloadJobHandler.java
View file @
38b6b2cd
...
...
@@ -3,6 +3,7 @@ package cn.quantgroup.xyqb.xxlJob;
import
cn.quantgroup.xyqb.Constants
;
import
cn.quantgroup.xyqb.config.data.WechatConfiguration
;
import
cn.quantgroup.xyqb.remote.WechatRemoteService
;
import
com.alibaba.fastjson.JSON
;
import
com.xxl.job.core.handler.annotation.XxlJob
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
...
@@ -39,7 +40,7 @@ public class WechatTokenReloadJobHandler {
if
(
result
.
containsKey
(
"errcode"
))
{
log
.
error
(
"微信获取token失败:{}"
,
i
.
getAppId
());
}
else
{
redisTemplate
.
opsForValue
().
set
(
Constants
.
WECHAT_ACCESS_TOKEN_REDIS
+
i
.
getTenantId
()+
":"
+
i
.
getAppId
(),
result
.
get
(
"access_token"
));
redisTemplate
.
opsForValue
().
set
(
Constants
.
WECHAT_ACCESS_TOKEN_REDIS
+
i
.
getTenantId
()+
":"
+
i
.
getAppId
(),
JSON
.
toJSONString
(
result
));
}
});
...
...
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