Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
S
safe-campus-bbs
Project overview
Project overview
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
万成波
safe-campus-bbs
Commits
0f2e9070
Commit
0f2e9070
authored
Sep 29, 2025
by
万成波
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
移动端登录
parent
2a9ae49c
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
83 additions
and
39 deletions
+83
-39
safe-campus-admin/src/main/java/com/tangguo/web/controller/system/SysLoginController.java
...com/tangguo/web/controller/system/SysLoginController.java
+53
-5
safe-campus-admin/src/main/resources/application-dev.yml
safe-campus-admin/src/main/resources/application-dev.yml
+2
-2
safe-campus-admin/src/main/resources/application-jxfz.yml
safe-campus-admin/src/main/resources/application-jxfz.yml
+1
-1
safe-campus-admin/src/test/java/com/tangguo/ApplicationTest.java
...mpus-admin/src/test/java/com/tangguo/ApplicationTest.java
+1
-1
safe-campus-common/src/main/java/com/tangguo/common/core/domain/AjaxResult.java
.../main/java/com/tangguo/common/core/domain/AjaxResult.java
+11
-0
safe-campus-common/src/main/java/com/tangguo/common/utils/SecurityUtils.java
...src/main/java/com/tangguo/common/utils/SecurityUtils.java
+12
-0
safe-campus-framework/src/main/java/com/tangguo/framework/web/service/SysLoginService.java
...va/com/tangguo/framework/web/service/SysLoginService.java
+3
-30
No files found.
safe-campus-admin/src/main/java/com/tangguo/web/controller/system/SysLoginController.java
View file @
0f2e9070
package
com
.
tangguo
.
web
.
controller
.
system
;
import
cn.hutool.core.util.StrUtil
;
import
com.alibaba.fastjson2.JSON
;
import
com.tangguo.common.constant.Constants
;
import
com.tangguo.common.core.domain.AjaxResult
;
import
com.tangguo.common.core.domain.entity.SysMenu
;
import
com.tangguo.common.core.domain.entity.SysUser
;
import
com.tangguo.common.core.domain.model.LoginBody
;
import
com.tangguo.common.core.domain.model.LoginUser
;
import
com.tangguo.common.exception.ServiceException
;
import
com.tangguo.common.utils.SecurityUtils
;
import
com.tangguo.common.core.domain.model.WxcpCodeLogin
;
import
com.tangguo.framework.config.ServerConfig
;
import
com.tangguo.framework.web.service.SysLoginService
;
import
com.tangguo.framework.web.service.SysPermissionService
;
import
com.tangguo.framework.web.service.TokenService
;
import
com.tangguo.framework.web.service.UserDetailsServiceImpl
;
import
com.tangguo.system.service.ISysMenuService
;
import
lombok.extern.slf4j.Slf4j
;
import
me.chanjar.weixin.cp.api.WxCpOAuth2Service
;
import
me.chanjar.weixin.cp.api.WxCpService
;
import
me.chanjar.weixin.cp.bean.WxCpOauth2UserInfo
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.security.core.userdetails.UserDetails
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RestController
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Set
;
import
java.util.*
;
/**
* 登录验证
*
* @author ruoyi
*/
@Slf4j
@RestController
public
class
SysLoginController
{
@Autowired
...
...
@@ -36,6 +47,19 @@ public class SysLoginController {
@Autowired
private
SysPermissionService
permissionService
;
@Autowired
private
UserDetailsServiceImpl
userDetailsServiceImpl
;
@Autowired
private
TokenService
tokenService
;
@Autowired
private
WxCpService
wxCpService
;
@Autowired
private
ServerConfig
serverConfig
;
/**
* 登录方法
*
...
...
@@ -94,8 +118,32 @@ public class SysLoginController {
*/
@PostMapping
(
"/bbs/mobile/user/code/login"
)
public
AjaxResult
codeLogin
(
@RequestBody
WxcpCodeLogin
bo
)
{
Map
<
String
,
Object
>
tokenMap
=
this
.
loginService
.
codeLogin
(
bo
);
return
AjaxResult
.
success
(
tokenMap
);
LoginUser
loginUser
=
SecurityUtils
.
getLoginUserNotEx
();
// 企微登录认证链接
String
authCode
=
bo
.
getCode
();
String
baseUrl
=
this
.
serverConfig
.
getUrl
();
String
redirectUrl
=
"http://test.tangguo.ren"
+
"/bbs/h5/pages/login/login/"
;
WxCpOAuth2Service
oauth2Service
=
this
.
wxCpService
.
getOauth2Service
();
if
(
Objects
.
isNull
(
loginUser
)
&&
StrUtil
.
isBlank
(
authCode
))
{
String
oauth2Url
=
oauth2Service
.
buildAuthorizationUrl
(
redirectUrl
,
null
);
return
AjaxResult
.
error
(
401
,
"身份认证失败"
,
oauth2Url
);
}
// 查询企微用户信息
String
token
=
null
;
if
(
Objects
.
isNull
(
loginUser
)
&&
StrUtil
.
isNotBlank
(
authCode
))
{
try
{
WxCpOauth2UserInfo
userInfo
=
oauth2Service
.
getUserInfo
(
authCode
);
log
.
info
(
"=> 查询企微用户信息,返回结果:{},{}"
,
authCode
,
JSON
.
toJSONString
(
userInfo
));
UserDetails
userDetails
=
this
.
userDetailsServiceImpl
.
loadUserByUsername2
(
userInfo
.
getUserId
());
token
=
this
.
tokenService
.
createToken
((
LoginUser
)
userDetails
);
}
catch
(
Exception
e
)
{
log
.
error
(
"=> 查询用户信息失败:"
,
e
);
throw
new
ServiceException
(
"登录失败,查询用户信息失败。"
);
}
}
return
AjaxResult
.
success
(
"登录成功"
,
token
);
}
...
...
safe-campus-admin/src/main/resources/application-dev.yml
View file @
0f2e9070
...
...
@@ -97,5 +97,5 @@ wx:
cp
:
corp-id
:
ww63ca87d5f8647514
app-config
:
agent-id
:
10000
44
secret
:
GqApjJ2aDuntiU5iQ9yqx8JKQwYDMrg1tTHdeeF0BWA
agent-id
:
10000
72
secret
:
O2KXf2b9oGG2GBrpzDgf4EFdhGwl2KaS9BWtJQT1I64
safe-campus-admin/src/main/resources/application-jxfz.yml
View file @
0f2e9070
# 项目相关配置
ruoyi
:
profile
:
/home/application/safe-campus-bbs/server/resources
profile
:
/home/application
s
/safe-campus-bbs/server/resources
# 数据源配置
spring
:
...
...
safe-campus-admin/src/test/java/com/tangguo/ApplicationTest.java
View file @
0f2e9070
...
...
@@ -36,7 +36,7 @@ public class ApplicationTest {
public
void
test
()
{
WxCpOAuth2Service
oauth2Service
=
this
.
wxCpService
.
getOauth2Service
();
System
.
out
.
println
(
oauth2Service
.
buildAuthorizationUrl
(
"https://
wecom.jift.edu.cn/bbs
/"
,
""
));
System
.
out
.
println
(
oauth2Service
.
buildAuthorizationUrl
(
"https://
test.tangguo.ren/bbs/h5/pages/login/login
/"
,
""
));
}
...
...
safe-campus-common/src/main/java/com/tangguo/common/core/domain/AjaxResult.java
View file @
0f2e9070
...
...
@@ -158,6 +158,17 @@ public class AjaxResult extends HashMap<String, Object> {
return
new
AjaxResult
(
code
,
msg
,
null
);
}
/**
* 返回错误消息
*
* @param code 状态码
* @param msg 返回内容
* @return 错误消息
*/
public
static
AjaxResult
error
(
int
code
,
String
msg
,
Object
data
)
{
return
new
AjaxResult
(
code
,
msg
,
data
);
}
/**
* 方便链式调用
*
...
...
safe-campus-common/src/main/java/com/tangguo/common/utils/SecurityUtils.java
View file @
0f2e9070
...
...
@@ -57,6 +57,18 @@ public class SecurityUtils {
}
}
/**
* 获取用户
* 不会抛出异常 用于可登录可不登录时使用获取信息
**/
public
static
LoginUser
getLoginUserNotEx
()
{
try
{
return
(
LoginUser
)
getAuthentication
().
getPrincipal
();
}
catch
(
Exception
e
)
{
return
null
;
}
}
/**
* 获取Authentication
*/
...
...
safe-campus-framework/src/main/java/com/tangguo/framework/web/service/SysLoginService.java
View file @
0f2e9070
package
com
.
tangguo
.
framework
.
web
.
service
;
import
cn.hutool.core.util.StrUtil
;
import
com.tangguo.common.constant.CacheConstants
;
import
com.tangguo.common.constant.Constants
;
import
com.tangguo.common.constant.UserConstants
;
...
...
@@ -11,6 +12,7 @@ import com.tangguo.common.exception.ServiceException;
import
com.tangguo.common.exception.user.*
;
import
com.tangguo.common.utils.DateUtils
;
import
com.tangguo.common.utils.MessageUtils
;
import
com.tangguo.common.utils.SecurityUtils
;
import
com.tangguo.common.utils.StringUtils
;
import
com.tangguo.common.utils.ip.IpUtils
;
import
com.tangguo.framework.manager.AsyncManager
;
...
...
@@ -20,6 +22,7 @@ import com.tangguo.system.service.ISysConfigService;
import
com.tangguo.system.service.ISysUserService
;
import
lombok.extern.slf4j.Slf4j
;
import
me.chanjar.weixin.common.error.WxErrorException
;
import
me.chanjar.weixin.cp.api.WxCpOAuth2Service
;
import
me.chanjar.weixin.cp.api.WxCpService
;
import
me.chanjar.weixin.cp.bean.WxCpOauth2UserInfo
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
...
@@ -174,34 +177,4 @@ public class SysLoginService {
userService
.
updateUserProfile
(
sysUser
);
}
/**
* 企微用户Code登录
*
* @param bo 登录参数
* @return 登录结果
*/
public
Map
<
String
,
Object
>
codeLogin
(
WxcpCodeLogin
bo
)
{
String
userName
;
try
{
log
.
info
(
"=> 移动端用户登录:{}"
,
bo
);
WxCpOauth2UserInfo
authUserInfo
=
this
.
wxCpService
.
getOauth2Service
().
getAuthUserInfo
(
bo
.
getCode
());
userName
=
authUserInfo
.
getUserId
();
}
catch
(
WxErrorException
e
)
{
log
.
error
(
"=> 移动端用户登录失败,查询当前企微用户数据失败:"
,
e
);
throw
new
ServiceException
(
"登录失败,查询当前企微用户数据失败。"
,
401
);
}
try
{
UserDetails
userDetails
=
this
.
userDetailsServiceImpl
.
loadUserByUsername2
(
userName
);
String
token
=
this
.
tokenService
.
createToken
((
LoginUser
)
userDetails
);
Map
<
String
,
Object
>
resultMap
=
new
LinkedHashMap
<>(
2
);
resultMap
.
put
(
"token"
,
token
);
return
resultMap
;
}
catch
(
Exception
e
)
{
log
.
error
(
"=> 移动端用户登录失败,生成用户Token失败:"
,
e
);
throw
new
ServiceException
(
"登录失败:"
+
e
.
getMessage
(),
401
);
}
}
}
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