Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
C
cocktail-party-server
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
cocktail-party
cocktail-party-server
Commits
d46e62a2
提交
d46e62a2
authored
6月 06, 2025
作者:
RuoYi
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
用户头像更换后移除旧头像文件
上级
fa889226
隐藏空白字符变更
内嵌
并排
正在显示
8 个修改的文件
包含
83 行增加
和
38 行删除
+83
-38
CommonController.java
...ava/com/ruoyi/web/controller/common/CommonController.java
+1
-2
SysProfileController.java
...com/ruoyi/web/controller/system/SysProfileController.java
+10
-4
FileUploadUtils.java
...ain/java/com/ruoyi/common/utils/file/FileUploadUtils.java
+36
-8
FileUtils.java
.../src/main/java/com/ruoyi/common/utils/file/FileUtils.java
+13
-1
SysUserMapper.java
.../src/main/java/com/ruoyi/system/mapper/SysUserMapper.java
+4
-4
ISysUserService.java
...c/main/java/com/ruoyi/system/service/ISysUserService.java
+4
-4
SysUserServiceImpl.java
...ava/com/ruoyi/system/service/impl/SysUserServiceImpl.java
+6
-6
SysUserMapper.xml
...system/src/main/resources/mapper/system/SysUserMapper.xml
+9
-9
没有找到文件。
ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java
浏览文件 @
d46e62a2
...
...
@@ -14,7 +14,6 @@ import org.springframework.web.bind.annotation.RequestMapping;
import
org.springframework.web.bind.annotation.RestController
;
import
org.springframework.web.multipart.MultipartFile
;
import
com.ruoyi.common.config.RuoYiConfig
;
import
com.ruoyi.common.constant.Constants
;
import
com.ruoyi.common.core.domain.AjaxResult
;
import
com.ruoyi.common.utils.StringUtils
;
import
com.ruoyi.common.utils.file.FileUploadUtils
;
...
...
@@ -148,7 +147,7 @@ public class CommonController
// 本地资源路径
String
localPath
=
RuoYiConfig
.
getProfile
();
// 数据库资源地址
String
downloadPath
=
localPath
+
StringUtils
.
substringAfter
(
resource
,
Constants
.
RESOURCE_PREFIX
);
String
downloadPath
=
localPath
+
FileUtils
.
stripPrefix
(
resource
);
// 下载名称
String
downloadName
=
StringUtils
.
substringAfterLast
(
downloadPath
,
"/"
);
response
.
setContentType
(
MediaType
.
APPLICATION_OCTET_STREAM_VALUE
);
...
...
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysProfileController.java
浏览文件 @
d46e62a2
...
...
@@ -21,6 +21,7 @@ import com.ruoyi.common.utils.DateUtils;
import
com.ruoyi.common.utils.SecurityUtils
;
import
com.ruoyi.common.utils.StringUtils
;
import
com.ruoyi.common.utils.file.FileUploadUtils
;
import
com.ruoyi.common.utils.file.FileUtils
;
import
com.ruoyi.common.utils.file.MimeTypeUtils
;
import
com.ruoyi.framework.web.service.TokenService
;
import
com.ruoyi.system.service.ISysUserService
;
...
...
@@ -94,7 +95,7 @@ public class SysProfileController extends BaseController
String
oldPassword
=
params
.
get
(
"oldPassword"
);
String
newPassword
=
params
.
get
(
"newPassword"
);
LoginUser
loginUser
=
getLoginUser
();
String
userName
=
loginUser
.
getUsername
();
Long
userId
=
loginUser
.
getUserId
();
String
password
=
loginUser
.
getPassword
();
if
(!
SecurityUtils
.
matchesPassword
(
oldPassword
,
password
))
{
...
...
@@ -105,7 +106,7 @@ public class SysProfileController extends BaseController
return
error
(
"新密码不能与旧密码相同"
);
}
newPassword
=
SecurityUtils
.
encryptPassword
(
newPassword
);
if
(
userService
.
resetUserPwd
(
user
Name
,
newPassword
)
>
0
)
if
(
userService
.
resetUserPwd
(
user
Id
,
newPassword
)
>
0
)
{
// 更新缓存用户密码&密码最后更新时间
loginUser
.
getUser
().
setPwdUpdateDate
(
DateUtils
.
getNowDate
());
...
...
@@ -126,9 +127,14 @@ public class SysProfileController extends BaseController
if
(!
file
.
isEmpty
())
{
LoginUser
loginUser
=
getLoginUser
();
String
avatar
=
FileUploadUtils
.
upload
(
RuoYiConfig
.
getAvatarPath
(),
file
,
MimeTypeUtils
.
IMAGE_EXTENSION
);
if
(
userService
.
updateUserAvatar
(
loginUser
.
getUser
name
(),
avatar
))
String
avatar
=
FileUploadUtils
.
upload
(
RuoYiConfig
.
getAvatarPath
(),
file
,
MimeTypeUtils
.
IMAGE_EXTENSION
,
true
);
if
(
userService
.
updateUserAvatar
(
loginUser
.
getUser
Id
(),
avatar
))
{
String
oldAvatar
=
loginUser
.
getUser
().
getAvatar
();
if
(
StringUtils
.
isNotEmpty
(
oldAvatar
))
{
FileUtils
.
deleteFile
(
RuoYiConfig
.
getProfile
()
+
FileUtils
.
stripPrefix
(
oldAvatar
));
}
AjaxResult
ajax
=
AjaxResult
.
success
();
ajax
.
put
(
"imgUrl"
,
avatar
);
// 更新缓存用户头像
...
...
ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUploadUtils.java
浏览文件 @
d46e62a2
...
...
@@ -13,11 +13,12 @@ import com.ruoyi.common.exception.file.FileSizeLimitExceededException;
import
com.ruoyi.common.exception.file.InvalidExtensionException
;
import
com.ruoyi.common.utils.DateUtils
;
import
com.ruoyi.common.utils.StringUtils
;
import
com.ruoyi.common.utils.uuid.IdUtils
;
import
com.ruoyi.common.utils.uuid.Seq
;
/**
* 文件上传工具类
*
*
* @author ruoyi
*/
public
class
FileUploadUtils
...
...
@@ -102,15 +103,35 @@ public class FileUploadUtils
throws
FileSizeLimitExceededException
,
IOException
,
FileNameLengthLimitExceededException
,
InvalidExtensionException
{
int
fileNamelength
=
Objects
.
requireNonNull
(
file
.
getOriginalFilename
()).
length
();
if
(
fileNamelength
>
FileUploadUtils
.
DEFAULT_FILE_NAME_LENGTH
)
return
upload
(
baseDir
,
file
,
allowedExtension
,
false
);
}
/**
* 文件上传
*
* @param baseDir 相对应用的基目录
* @param file 上传的文件
* @param useCustomNaming 系统自定义文件名
* @param allowedExtension 上传文件类型
* @return 返回上传成功的文件名
* @throws FileSizeLimitExceededException 如果超出最大大小
* @throws FileNameLengthLimitExceededException 文件名太长
* @throws IOException 比如读写文件出错时
* @throws InvalidExtensionException 文件校验异常
*/
public
static
final
String
upload
(
String
baseDir
,
MultipartFile
file
,
String
[]
allowedExtension
,
boolean
useCustomNaming
)
throws
FileSizeLimitExceededException
,
IOException
,
FileNameLengthLimitExceededException
,
InvalidExtensionException
{
int
fileNameLength
=
Objects
.
requireNonNull
(
file
.
getOriginalFilename
()).
length
();
if
(
fileNameLength
>
FileUploadUtils
.
DEFAULT_FILE_NAME_LENGTH
)
{
throw
new
FileNameLengthLimitExceededException
(
FileUploadUtils
.
DEFAULT_FILE_NAME_LENGTH
);
}
assertAllowed
(
file
,
allowedExtension
);
String
fileName
=
extractFilename
(
file
);
String
fileName
=
useCustomNaming
?
uuidFilename
(
file
)
:
extractFilename
(
file
);
String
absPath
=
getAbsoluteFile
(
baseDir
,
fileName
).
getAbsolutePath
();
file
.
transferTo
(
Paths
.
get
(
absPath
));
...
...
@@ -118,12 +139,19 @@ public class FileUploadUtils
}
/**
* 编码文件名
* 编码文件名
(日期格式目录 + 原文件名 + 序列值 + 后缀)
*/
public
static
final
String
extractFilename
(
MultipartFile
file
)
{
return
StringUtils
.
format
(
"{}/{}_{}.{}"
,
DateUtils
.
datePath
(),
FilenameUtils
.
getBaseName
(
file
.
getOriginalFilename
()),
Seq
.
getId
(
Seq
.
uploadSeqType
),
getExtension
(
file
));
return
StringUtils
.
format
(
"{}/{}_{}.{}"
,
DateUtils
.
datePath
(),
FilenameUtils
.
getBaseName
(
file
.
getOriginalFilename
()),
Seq
.
getId
(
Seq
.
uploadSeqType
),
getExtension
(
file
));
}
/**
* 编编码文件名(日期格式目录 + UUID + 后缀)
*/
public
static
final
String
uuidFilename
(
MultipartFile
file
)
{
return
StringUtils
.
format
(
"{}/{}.{}"
,
DateUtils
.
datePath
(),
IdUtils
.
fastSimpleUUID
(),
getExtension
(
file
));
}
public
static
final
File
getAbsoluteFile
(
String
uploadDir
,
String
fileName
)
throws
IOException
...
...
@@ -216,7 +244,7 @@ public class FileUploadUtils
/**
* 获取文件名的后缀
*
*
* @param file 表单文件
* @return 后缀名
*/
...
...
ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUtils.java
浏览文件 @
d46e62a2
...
...
@@ -11,13 +11,14 @@ import java.net.URLEncoder;
import
java.nio.charset.StandardCharsets
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
import
org.apache.commons.io.FilenameUtils
;
import
org.apache.commons.io.IOUtils
;
import
org.apache.commons.lang3.ArrayUtils
;
import
com.ruoyi.common.config.RuoYiConfig
;
import
com.ruoyi.common.constant.Constants
;
import
com.ruoyi.common.utils.DateUtils
;
import
com.ruoyi.common.utils.StringUtils
;
import
com.ruoyi.common.utils.uuid.IdUtils
;
import
org.apache.commons.io.FilenameUtils
;
/**
* 文件处理工具类
...
...
@@ -103,6 +104,17 @@ public class FileUtils
return
FileUploadUtils
.
getPathFileName
(
uploadDir
,
pathName
);
}
/**
* 移除路径中的请求前缀片段
*
* @param filePath 文件路径
* @return 移除后的文件路径
*/
public
static
String
stripPrefix
(
String
filePath
)
{
return
StringUtils
.
substringAfter
(
filePath
,
Constants
.
RESOURCE_PREFIX
);
}
/**
* 删除文件
*
...
...
ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java
浏览文件 @
d46e62a2
...
...
@@ -70,20 +70,20 @@ public interface SysUserMapper
/**
* 修改用户头像
*
* @param user
Name 用户名
* @param user
Id 用户ID
* @param avatar 头像地址
* @return 结果
*/
public
int
updateUserAvatar
(
@Param
(
"user
Name"
)
String
userName
,
@Param
(
"avatar"
)
String
avatar
);
public
int
updateUserAvatar
(
@Param
(
"user
Id"
)
Long
userId
,
@Param
(
"avatar"
)
String
avatar
);
/**
* 重置用户密码
*
* @param user
Name 用户名
* @param user
Id 用户ID
* @param password 密码
* @return 结果
*/
public
int
resetUserPwd
(
@Param
(
"user
Name"
)
String
userName
,
@Param
(
"password"
)
String
password
);
public
int
resetUserPwd
(
@Param
(
"user
Id"
)
Long
userId
,
@Param
(
"password"
)
String
password
);
/**
* 通过用户ID删除用户
...
...
ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java
浏览文件 @
d46e62a2
...
...
@@ -155,11 +155,11 @@ public interface ISysUserService
/**
* 修改用户头像
*
* @param user
Name 用户名
* @param user
Id 用户ID
* @param avatar 头像地址
* @return 结果
*/
public
boolean
updateUserAvatar
(
String
userName
,
String
avatar
);
public
boolean
updateUserAvatar
(
Long
userId
,
String
avatar
);
/**
* 重置用户密码
...
...
@@ -172,11 +172,11 @@ public interface ISysUserService
/**
* 重置用户密码
*
* @param user
Name 用户名
* @param user
Id 用户ID
* @param password 密码
* @return 结果
*/
public
int
resetUserPwd
(
String
userName
,
String
password
);
public
int
resetUserPwd
(
Long
userId
,
String
password
);
/**
* 通过用户ID删除用户
...
...
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
浏览文件 @
d46e62a2
...
...
@@ -344,14 +344,14 @@ public class SysUserServiceImpl implements ISysUserService
/**
* 修改用户头像
*
* @param user
Name 用户名
* @param user
Id 用户ID
* @param avatar 头像地址
* @return 结果
*/
@Override
public
boolean
updateUserAvatar
(
String
userName
,
String
avatar
)
public
boolean
updateUserAvatar
(
Long
userId
,
String
avatar
)
{
return
userMapper
.
updateUserAvatar
(
user
Name
,
avatar
)
>
0
;
return
userMapper
.
updateUserAvatar
(
user
Id
,
avatar
)
>
0
;
}
/**
...
...
@@ -369,14 +369,14 @@ public class SysUserServiceImpl implements ISysUserService
/**
* 重置用户密码
*
* @param user
Name 用户名
* @param user
Id 用户ID
* @param password 密码
* @return 结果
*/
@Override
public
int
resetUserPwd
(
String
userName
,
String
password
)
public
int
resetUserPwd
(
Long
userId
,
String
password
)
{
return
userMapper
.
resetUserPwd
(
user
Name
,
password
);
return
userMapper
.
resetUserPwd
(
user
Id
,
password
);
}
/**
...
...
ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
浏览文件 @
d46e62a2
...
...
@@ -19,13 +19,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result
property=
"loginIp"
column=
"login_ip"
/>
<result
property=
"loginDate"
column=
"login_date"
/>
<result
property=
"pwdUpdateDate"
column=
"pwd_update_date"
/>
<result
property=
"createBy"
column=
"create_by"
/>
<result
property=
"createTime"
column=
"create_time"
/>
<result
property=
"updateBy"
column=
"update_by"
/>
<result
property=
"updateTime"
column=
"update_time"
/>
<result
property=
"remark"
column=
"remark"
/>
<association
property=
"dept"
javaType=
"SysDept"
resultMap=
"deptResult"
/>
<collection
property=
"roles"
javaType=
"java.util.List"
resultMap=
"RoleResult"
/>
<result
property=
"createBy"
column=
"create_by"
/>
<result
property=
"createTime"
column=
"create_time"
/>
<result
property=
"updateBy"
column=
"update_by"
/>
<result
property=
"updateTime"
column=
"update_time"
/>
<result
property=
"remark"
column=
"remark"
/>
<association
property=
"dept"
javaType=
"SysDept"
resultMap=
"deptResult"
/>
<collection
property=
"roles"
javaType=
"java.util.List"
resultMap=
"RoleResult"
/>
</resultMap>
<resultMap
id=
"deptResult"
type=
"SysDept"
>
...
...
@@ -202,11 +202,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</update>
<update
id=
"updateUserAvatar"
parameterType=
"SysUser"
>
update sys_user set avatar = #{avatar} where user_
name = #{userName
}
update sys_user set avatar = #{avatar} where user_
id = #{userId
}
</update>
<update
id=
"resetUserPwd"
parameterType=
"SysUser"
>
update sys_user set pwd_update_date = sysdate(), password = #{password} where user_
name = #{userName
}
update sys_user set pwd_update_date = sysdate(), password = #{password} where user_
id = #{userId
}
</update>
<delete
id=
"deleteUserById"
parameterType=
"Long"
>
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论