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
8a7caf6c
Commit
8a7caf6c
authored
Oct 11, 2025
by
yuwenwen
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
http://gitlab.tangguo.ren/2300064869/safe-campus-bbs
parents
8d98f46a
d650878c
Changes
9
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
93 additions
and
31 deletions
+93
-31
safe-campus-admin/src/main/java/com/tangguo/web/controller/system/SysLoginController.java
...com/tangguo/web/controller/system/SysLoginController.java
+38
-4
safe-campus-bbs-ui/src/views/moments/index.vue
safe-campus-bbs-ui/src/views/moments/index.vue
+1
-0
safe-campus-common/src/main/java/com/tangguo/common/core/domain/entity/SysUser.java
...n/java/com/tangguo/common/core/domain/entity/SysUser.java
+2
-24
safe-campus-framework/src/main/java/com/tangguo/framework/security/handle/AuthenticationEntryPointImpl.java
...amework/security/handle/AuthenticationEntryPointImpl.java
+5
-2
safe-campus-moment/src/main/java/com/tangguo/domain/BbsMoment.java
...us-moment/src/main/java/com/tangguo/domain/BbsMoment.java
+7
-0
safe-campus-moment/src/main/java/com/tangguo/domain/vo/BbsMomentListVO.java
.../src/main/java/com/tangguo/domain/vo/BbsMomentListVO.java
+3
-0
safe-campus-moment/src/main/java/com/tangguo/mapper/BbsMomentMapper.java
...ent/src/main/java/com/tangguo/mapper/BbsMomentMapper.java
+3
-0
safe-campus-moment/src/main/java/com/tangguo/service/impl/BbsMomentServiceImpl.java
...n/java/com/tangguo/service/impl/BbsMomentServiceImpl.java
+10
-0
safe-campus-moment/src/main/resources/mapper/BbsMomentMapper.xml
...mpus-moment/src/main/resources/mapper/BbsMomentMapper.xml
+24
-1
No files found.
safe-campus-admin/src/main/java/com/tangguo/web/controller/system/SysLoginController.java
View file @
8a7caf6c
...
...
@@ -2,6 +2,7 @@ package com.tangguo.web.controller.system;
import
cn.hutool.core.util.StrUtil
;
import
com.alibaba.fastjson2.JSON
;
import
com.tangguo.common.annotation.Log
;
import
com.tangguo.common.constant.Constants
;
import
com.tangguo.common.core.domain.AjaxResult
;
import
com.tangguo.common.core.domain.entity.SysMenu
;
...
...
@@ -10,24 +11,24 @@ 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.core.domain.model.WxcpCodeLogin
;
import
com.tangguo.common.enums.BusinessType
;
import
com.tangguo.common.exception.ServiceException
;
import
com.tangguo.common.utils.SecurityUtils
;
import
com.tangguo.common.utils.StringUtils
;
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
com.tangguo.system.service.ISysUserService
;
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
org.springframework.web.bind.annotation.*
;
import
java.util.List
;
import
java.util.Objects
;
...
...
@@ -62,6 +63,9 @@ public class SysLoginController {
@Autowired
private
ServerConfig
serverConfig
;
@Autowired
private
ISysUserService
userService
;
/**
* 登录方法
...
...
@@ -122,6 +126,8 @@ public class SysLoginController {
@PostMapping
(
"/bbs/mobile/user/code/login"
)
public
AjaxResult
codeLogin
(
@RequestBody
WxcpCodeLogin
bo
)
{
LoginUser
loginUser
=
SecurityUtils
.
getLoginUserNotEx
();
log
.
info
(
"=> 登录请求参数:{}"
,
bo
);
log
.
info
(
"=> 当前登录用户:{}"
,
loginUser
);
// 企微登录认证链接
String
authCode
=
bo
.
getCode
();
...
...
@@ -130,6 +136,7 @@ public class SysLoginController {
WxCpOAuth2Service
oauth2Service
=
this
.
wxCpService
.
getOauth2Service
();
if
(
Objects
.
isNull
(
loginUser
)
&&
StrUtil
.
isBlank
(
authCode
))
{
String
oauth2Url
=
oauth2Service
.
buildAuthorizationUrl
(
redirectUrl
,
null
);
log
.
info
(
"=> 认证失败,返回Oauth2登录链接:{}"
,
oauth2Url
);
return
AjaxResult
.
error
(
401
,
"身份认证失败"
,
oauth2Url
);
}
...
...
@@ -146,6 +153,8 @@ public class SysLoginController {
throw
new
ServiceException
(
"登录失败,查询用户信息失败。"
);
}
}
log
.
info
(
"=> 登录结果:{}"
,
token
);
return
AjaxResult
.
success
(
"登录成功"
,
token
);
}
...
...
@@ -157,6 +166,7 @@ public class SysLoginController {
*/
@GetMapping
(
"/bbs/mobile/user/profile"
)
public
AjaxResult
getUserProfile
()
{
log
.
info
(
"=> 查询用户信息,当前登录用户名:{}"
,
SecurityUtils
.
getUsername
());
final
String
bbsAdmin
=
"bbs_admin"
;
SysUser
sysUser
=
SecurityUtils
.
getLoginUser
().
getUser
();
List
<
SysRole
>
roles
=
SecurityUtils
.
getLoginUser
().
getUser
().
getRoles
();
...
...
@@ -165,4 +175,28 @@ public class SysLoginController {
return
AjaxResult
.
success
(
sysUser
);
}
/**
* 查询用户信息
*
* @return 用户信息
*/
@PutMapping
(
"/bbs/mobile/user/profile"
)
public
AjaxResult
updateUserProfile
(
@RequestBody
SysUser
user
)
{
LoginUser
loginUser
=
SecurityUtils
.
getLoginUser
();
SysUser
updUser
=
new
SysUser
();
updUser
.
setUserId
(
loginUser
.
getUserId
());
updUser
.
setAvatar
(
user
.
getAvatar
());
updUser
.
setNickName
(
user
.
getNickName
());
if
(
this
.
userService
.
updateUserProfile
(
updUser
)
>
0
)
{
SysUser
sysUser
=
loginUser
.
getUser
();
sysUser
.
setAvatar
(
user
.
getAvatar
());
sysUser
.
setNickName
(
user
.
getNickName
());
tokenService
.
setLoginUser
(
loginUser
);
return
AjaxResult
.
success
();
}
return
AjaxResult
.
error
(
"修改失败"
);
}
}
safe-campus-bbs-ui/src/views/moments/index.vue
View file @
8a7caf6c
...
...
@@ -45,6 +45,7 @@
<el-table-column
label=
"帐号"
prop=
"userName"
align=
"center"
width=
"140"
></el-table-column>
<el-table-column
label=
"姓名"
prop=
"nickName"
align=
"center"
width=
"120"
></el-table-column>
<el-table-column
label=
"部门"
prop=
"deptName"
align=
"center"
width=
"160"
></el-table-column>
<el-table-column
label=
"学院"
prop=
"fullDeptName"
align=
"center"
></el-table-column>
<el-table-column
label=
"点赞数"
prop=
"likeCount"
align=
"center"
width=
"100"
></el-table-column>
<el-table-column
label=
"评论数"
prop=
"commentCount"
align=
"center"
width=
"100"
></el-table-column>
<el-table-column
label=
"创建时间"
prop=
"createTime"
align=
"center"
width=
"160"
></el-table-column>
...
...
safe-campus-common/src/main/java/com/tangguo/common/core/domain/entity/SysUser.java
View file @
8a7caf6c
...
...
@@ -6,6 +6,7 @@ import com.tangguo.common.annotation.Excel.Type;
import
com.tangguo.common.annotation.Excels
;
import
com.tangguo.common.core.domain.BaseEntity
;
import
com.tangguo.common.xss.Xss
;
import
lombok.ToString
;
import
org.apache.commons.lang3.builder.ToStringBuilder
;
import
org.apache.commons.lang3.builder.ToStringStyle
;
...
...
@@ -20,6 +21,7 @@ import java.util.List;
*
* @author ruoyi
*/
@ToString
public
class
SysUser
extends
BaseEntity
{
private
static
final
long
serialVersionUID
=
1L
;
...
...
@@ -309,28 +311,4 @@ public class SysUser extends BaseEntity {
this
.
roleId
=
roleId
;
}
@Override
public
String
toString
()
{
return
new
ToStringBuilder
(
this
,
ToStringStyle
.
MULTI_LINE_STYLE
)
.
append
(
"userId"
,
getUserId
())
.
append
(
"deptId"
,
getDeptId
())
.
append
(
"userName"
,
getUserName
())
.
append
(
"nickName"
,
getNickName
())
.
append
(
"email"
,
getEmail
())
.
append
(
"phonenumber"
,
getPhonenumber
())
.
append
(
"sex"
,
getSex
())
.
append
(
"avatar"
,
getAvatar
())
.
append
(
"password"
,
getPassword
())
.
append
(
"status"
,
getStatus
())
.
append
(
"delFlag"
,
getDelFlag
())
.
append
(
"loginIp"
,
getLoginIp
())
.
append
(
"loginDate"
,
getLoginDate
())
.
append
(
"createBy"
,
getCreateBy
())
.
append
(
"createTime"
,
getCreateTime
())
.
append
(
"updateBy"
,
getUpdateBy
())
.
append
(
"updateTime"
,
getUpdateTime
())
.
append
(
"remark"
,
getRemark
())
.
append
(
"dept"
,
getDept
())
.
toString
();
}
}
safe-campus-framework/src/main/java/com/tangguo/framework/security/handle/AuthenticationEntryPointImpl.java
View file @
8a7caf6c
...
...
@@ -7,6 +7,7 @@ import com.tangguo.common.core.domain.AjaxResult;
import
com.tangguo.common.utils.ServletUtils
;
import
com.tangguo.common.utils.StringUtils
;
import
com.tangguo.framework.config.ServerConfig
;
import
lombok.extern.slf4j.Slf4j
;
import
me.chanjar.weixin.cp.api.WxCpOAuth2Service
;
import
me.chanjar.weixin.cp.api.WxCpService
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
...
@@ -25,6 +26,7 @@ import java.util.Objects;
*
* @author ruoyi
*/
@Slf4j
@Component
public
class
AuthenticationEntryPointImpl
implements
AuthenticationEntryPoint
,
Serializable
{
private
static
final
long
serialVersionUID
=
-
8970718410437077606L
;
...
...
@@ -38,10 +40,11 @@ public class AuthenticationEntryPointImpl implements AuthenticationEntryPoint, S
@Override
public
void
commence
(
HttpServletRequest
request
,
HttpServletResponse
response
,
AuthenticationException
e
)
throws
IOException
{
String
uri
=
request
.
getRequestURI
();
int
code
=
HttpStatus
.
UNAUTHORIZED
;
log
.
info
(
"=> 身份认证失败,Token:{}"
,
request
.
getHeader
(
"Authorization"
));
if
(
uri
.
startsWith
(
"/bbs/mobile"
))
{
String
baseUrl
=
this
.
serverConfig
.
getUrl
();
String
redirectUrl
=
baseUrl
+
"/bbs/h5/pages/login/login/"
;
...
...
safe-campus-moment/src/main/java/com/tangguo/domain/BbsMoment.java
View file @
8a7caf6c
...
...
@@ -118,6 +118,13 @@ public class BbsMoment extends BaseEntity {
@TableField
(
exist
=
false
)
private
String
deptName
;
@TableField
(
exist
=
false
)
private
String
ancestors
;
@TableField
(
exist
=
false
)
private
String
fullDeptName
;
/** 动态附件 */
@TableField
(
exist
=
false
)
private
List
<
BbsMomentAttachment
>
attachments
;
...
...
safe-campus-moment/src/main/java/com/tangguo/domain/vo/BbsMomentListVO.java
View file @
8a7caf6c
...
...
@@ -30,6 +30,9 @@ public class BbsMomentListVO {
/** 发布人用户名 */
private
String
userName
;
/** 发布人头像 */
private
String
avatar
;
/** 动态内容 */
private
String
content
;
...
...
safe-campus-moment/src/main/java/com/tangguo/mapper/BbsMomentMapper.java
View file @
8a7caf6c
package
com
.
tangguo
.
mapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.tangguo.common.core.domain.entity.SysDept
;
import
com.tangguo.domain.BbsMoment
;
import
com.tangguo.domain.bo.QueryMomentBO
;
import
com.tangguo.domain.vo.BbsMomentListVO
;
...
...
@@ -19,6 +20,8 @@ public interface BbsMomentMapper extends BaseMapper<BbsMoment> {
List
<
BbsMoment
>
selectBbsMomentList
(
@Param
(
"moment"
)
BbsMoment
moment
);
List
<
String
>
selectBbsMomentDepts
(
@Param
(
"deptIds"
)
String
[]
deptIds
);
BbsUserMomentCountVO
selectUserMomentCount
(
@Param
(
"userName"
)
String
userName
);
...
...
safe-campus-moment/src/main/java/com/tangguo/service/impl/BbsMomentServiceImpl.java
View file @
8a7caf6c
package
com
.
tangguo
.
service
.
impl
;
import
cn.hutool.core.collection.CollUtil
;
import
cn.hutool.core.util.ArrayUtil
;
import
cn.hutool.core.util.StrUtil
;
import
cn.hutool.dfa.FoundWord
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.tangguo.common.core.domain.entity.SysDept
;
import
com.tangguo.common.core.domain.entity.SysUser
;
import
com.tangguo.common.enums.*
;
import
com.tangguo.common.exception.ServiceException
;
...
...
@@ -77,6 +79,14 @@ public class BbsMomentServiceImpl extends ServiceImpl<BbsMomentMapper, BbsMoment
.
filter
(
a
->
dbMoment
.
getId
().
equals
(
a
.
getMomentId
()))
.
collect
(
Collectors
.
toList
());
dbMoment
.
setAttachments
(
atts
);
String
[]
deptIds
=
dbMoment
.
getAncestors
().
split
(
","
);
if
(
ArrayUtil
.
isNotEmpty
(
deptIds
))
{
List
<
String
>
deptNames
=
this
.
baseMapper
.
selectBbsMomentDepts
(
deptIds
);
String
deptName
=
deptNames
.
stream
().
filter
(
s
->
s
.
contains
(
"学院"
))
.
reduce
((
first
,
second
)
->
second
).
orElse
(
null
);
dbMoment
.
setFullDeptName
(
deptName
);
}
}
return
dbMoments
;
}
...
...
safe-campus-moment/src/main/resources/mapper/BbsMomentMapper.xml
View file @
8a7caf6c
...
...
@@ -8,7 +8,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
SELECT
m.*,
uv.nick_name,
ud.dept_name
ud.dept_name,
ud.ancestors
FROM
bbs_moment m
LEFT JOIN
...
...
@@ -28,12 +29,28 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if
test=
"moment.params.endTime != null and moment.params.endTime != ''"
>
AND DATE_FORMAT(m.create_time, '%Y-%m-%d')
<
= #{moment.params.endTime}
</if>
<if
test=
"moment.deptName != null and moment.deptName != ''"
>
AND d.dept_name LIKE CONCAT('%', #{moment.deptName}, '%')
</if>
</where>
ORDER BY
m.create_time DESC
</select>
<select
id=
"selectBbsMomentDepts"
resultType=
"java.lang.String"
>
SELECT
dept_name
FROM
sys_dept
WHERE
dept_id IN
<foreach
collection=
"deptIds"
item=
"deptId"
open=
"("
separator=
","
close=
")"
>
#{deptId}
</foreach>
</select>
<select
id=
"selectUserMomentCount"
resultType=
"com.tangguo.domain.vo.BbsUserMomentCountVO"
>
SELECT
(SELECT COUNT(*) FROM bbs_moment WHERE user_name = #{userName}) AS moment_count,
...
...
@@ -45,10 +62,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select
id=
"selectUserMoments"
resultType=
"com.tangguo.domain.vo.BbsMomentListVO"
>
SELECT
m.*,
uv.nick_name,
uv.avatar,
IF(l.id IS NOT NULL, 1, 0) AS is_like,
IF(v.id IS NOT NULL, 1, 0) AS is_vote
FROM
bbs_moment m
LEFT JOIN
sys_user uv ON uv.user_name = m.user_name
LEFT JOIN
(
SELECT
...
...
@@ -84,6 +105,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
SELECT
m.*,
uv.nick_name,
uv.avatar,
IF(l.id IS NOT NULL, 1, 0) AS is_like,
IF(v.id IS NOT NULL, 1, 0) AS is_vote,
IF(m.user_name = #{userName}, 1, 0) AS is_self
...
...
@@ -129,6 +151,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
SELECT
m.*,
uv.nick_name,
uv.avatar,
IF(l.id IS NOT NULL, 1, 0) AS is_like,
IF(v.id IS NOT NULL, 1, 0) AS is_vote,
IF(m.user_name = #{userName}, 1, 0) AS is_self
...
...
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