update 重构 头像上传改为先上传oss后更新用户数据

This commit is contained in:
疯狂的狮子Li
2026-06-05 16:41:12 +08:00
parent 9e21304dbf
commit c64fb7a16a
5 changed files with 14 additions and 70 deletions
@@ -1,14 +1,11 @@
package org.dromara.system.controller.system; package org.dromara.system.controller.system;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.crypto.digest.BCrypt; import cn.hutool.crypto.digest.BCrypt;
import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotBlank;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.dromara.common.core.domain.R; import org.dromara.common.core.domain.R;
import org.dromara.common.core.utils.StringUtils; import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.core.utils.file.MimeTypeUtils;
import org.dromara.common.encrypt.annotation.ApiEncrypt; import org.dromara.common.encrypt.annotation.ApiEncrypt;
import org.dromara.common.log.annotation.Log; import org.dromara.common.log.annotation.Log;
import org.dromara.common.log.enums.BusinessType; import org.dromara.common.log.enums.BusinessType;
@@ -19,16 +16,10 @@ import org.dromara.common.web.core.BaseController;
import org.dromara.system.domain.bo.SysUserBo; import org.dromara.system.domain.bo.SysUserBo;
import org.dromara.system.domain.bo.SysUserProfileBo; import org.dromara.system.domain.bo.SysUserProfileBo;
import org.dromara.system.domain.vo.ProfileUserVo; import org.dromara.system.domain.vo.ProfileUserVo;
import org.dromara.system.domain.vo.SysOssVo;
import org.dromara.system.domain.vo.SysUserVo; import org.dromara.system.domain.vo.SysUserVo;
import org.dromara.system.service.ISysOssService;
import org.dromara.system.service.ISysUserService; import org.dromara.system.service.ISysUserService;
import org.springframework.http.MediaType;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.util.Arrays;
/** /**
* 个人信息 业务处理 * 个人信息 业务处理
@@ -42,7 +33,6 @@ import java.util.Arrays;
public class SysProfileController extends BaseController { public class SysProfileController extends BaseController {
private final ISysUserService userService; private final ISysUserService userService;
private final ISysOssService ossService;
/** /**
* 获取当前登录用户的个人中心信息。 * 获取当前登录用户的个人中心信息。
@@ -112,39 +102,6 @@ public class SysProfileController extends BaseController {
return R.fail("修改密码异常,请联系管理员"); return R.fail("修改密码异常,请联系管理员");
} }
/**
* 头像上传
*
* @param avatarfile 用户头像
* @return 头像上传结果
*/
@RepeatSubmit
@Log(title = "用户头像", businessType = BusinessType.UPDATE)
@PostMapping(value = "/avatar", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public R<AvatarVo> avatar(@RequestPart("avatarfile") MultipartFile avatarfile) {
if (ObjectUtil.isNotNull(avatarfile) && !avatarfile.isEmpty()) {
String extension = FileUtil.extName(avatarfile.getOriginalFilename());
if (!MimeTypeUtils.isImage(extension)) {
return R.fail("文件格式不正确,请上传" + Arrays.toString(MimeTypeUtils.IMAGE_EXTENSION) + "格式");
}
SysOssVo oss = ossService.upload(avatarfile);
String avatar = oss.getUrl();
boolean updateSuccess = DataPermissionHelper.ignore(() -> userService.updateUserAvatar(LoginHelper.getUserId(), oss.getOssId()));
if (updateSuccess) {
return R.ok(new AvatarVo(avatar));
}
}
return R.fail("上传图片异常,请联系管理员");
}
/**
* 用户头像信息
*
* @param imgUrl 头像地址
*/
public record AvatarVo(String imgUrl) {
}
/** /**
* 用户个人信息 * 用户个人信息
* *
@@ -77,6 +77,11 @@ public class SysUserBo implements Serializable {
*/ */
private String gender; private String gender;
/**
* 头像 OSS ID
*/
private Long avatar;
/** /**
* 密码 * 密码
*/ */
@@ -53,4 +53,9 @@ public class SysUserProfileBo implements Serializable {
*/ */
private String gender; private String gender;
/**
* 头像 OSS ID
*/
private Long avatar;
} }
@@ -188,15 +188,6 @@ public interface ISysUserService {
*/ */
int updateUserProfile(SysUserBo user); int updateUserProfile(SysUserBo user);
/**
* 修改用户头像
*
* @param userId 用户ID
* @param avatar 头像地址
* @return 是否修改成功
*/
boolean updateUserAvatar(Long userId, Long avatar);
/** /**
* 重置用户密码 * 重置用户密码
* *
@@ -386,28 +386,14 @@ public class SysUserServiceImpl implements ISysUserService, UserService {
public int updateUserProfile(SysUserBo user) { public int updateUserProfile(SysUserBo user) {
return userMapper.lambda() return userMapper.lambda()
.setIfPresent(SysUser::getNickName, user.getNickName()) .setIfPresent(SysUser::getNickName, user.getNickName())
.set(SysUser::getPhoneNumber, user.getPhoneNumber()) .setIfPresent(SysUser::getAvatar, user.getAvatar())
.set(SysUser::getEmail, user.getEmail()) .setIfPresent(SysUser::getPhoneNumber, user.getPhoneNumber())
.set(SysUser::getGender, user.getGender()) .setIfPresent(SysUser::getEmail, user.getEmail())
.setIfPresent(SysUser::getGender, user.getGender())
.eq(SysUser::getUserId, user.getUserId()) .eq(SysUser::getUserId, user.getUserId())
.updateCount(); .updateCount();
} }
/**
* 修改用户头像
*
* @param userId 用户ID
* @param avatar 头像地址
* @return 结果
*/
@Override
public boolean updateUserAvatar(Long userId, Long avatar) {
return userMapper.lambda()
.set(SysUser::getAvatar, avatar)
.eq(SysUser::getUserId, userId)
.update();
}
/** /**
* 重置用户密码 * 重置用户密码
* *