修改app用户信息

This commit is contained in:
2025-06-24 17:43:45 +08:00
parent a7bb1d8e84
commit ae88cc16cc
9 changed files with 109 additions and 33 deletions

View File

@ -77,7 +77,7 @@ public class AppTokenProvider implements InitializingBean {
// 设置参数
Map<String, Object> claims = new HashMap<>(6);
// 设置用户ID
// claims.put(AUTHORITIES_UID_KEY, user.getAppUser().getId());
claims.put(AUTHORITIES_UID_KEY, user.getAppUser().getId());
// if (user.getAppUser() != null){
// claims.put(AUTHORITIES_UID_KEY, user.getAppUser().getId());
// }else {
@ -102,7 +102,7 @@ public class AppTokenProvider implements InitializingBean {
Map<String, Object> claims = new HashMap<>(6);
// 设置用户ID
// claims.put(AUTHORITIES_UID_KEY, user.getAppUser().getId());
claims.put(AUTHORITIES_UID_KEY, user.getAppUser().getId());
// if (user.getAppUser() != null){
// claims.put(AUTHORITIES_UID_KEY, user.getAppUser().getId());
// }else {

View File

@ -0,0 +1,32 @@
package com.fuyuanshen.modules.system.domain.dto.app;
import com.fuyuanshen.modules.system.domain.app.APPUser;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.web.multipart.MultipartFile;
import javax.validation.constraints.NotBlank;
/**
* @author: 默苍璃
* @date: 2025-06-1818:36
*/
@Data
public class APPUpdateUserDTO {
@ApiModelProperty(value = "ID", hidden = true)
private Long id;
@ApiModelProperty(value = "用户昵称")
private String nickName;
@ApiModelProperty(value = "地区")
private String region;
@ApiModelProperty(value = "用户性别")
private String gender;
@ApiModelProperty(value = "头像图片")
private MultipartFile file;
}

View File

@ -1,19 +1,7 @@
package com.fuyuanshen.modules.system.domain.vo;
import com.fuyuanshen.base.BaseEntity;
import com.fuyuanshen.modules.system.domain.Dept;
import com.fuyuanshen.modules.system.domain.Job;
import com.fuyuanshen.modules.system.domain.Role;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
import java.util.Objects;
import java.util.Set;
/**
* @author: 默苍璃
@ -22,7 +10,7 @@ import java.util.Set;
@Data
public class APPUserVo {
@ApiModelProperty(value = "ID", hidden = true)
@ApiModelProperty(value = "ID")
private Long id;
@ApiModelProperty(value = "用户昵称")

View File

@ -20,8 +20,10 @@ import com.fuyuanshen.annotation.Log;
import com.fuyuanshen.annotation.rest.AnonymousPostMapping;
import com.fuyuanshen.exception.BadRequestException;
import com.fuyuanshen.modules.system.domain.app.APPUser;
import com.fuyuanshen.modules.system.domain.dto.DeviceForm;
import com.fuyuanshen.modules.system.domain.dto.UserQueryCriteria;
import com.fuyuanshen.modules.system.domain.dto.app.APPForgotPasswordDTO;
import com.fuyuanshen.modules.system.domain.dto.app.APPUpdateUserDTO;
import com.fuyuanshen.modules.system.domain.dto.app.APPUserDTO;
import com.fuyuanshen.modules.system.domain.vo.APPUserVo;
import com.fuyuanshen.modules.system.enums.UserType;
@ -93,10 +95,9 @@ public class APPUserController {
@Log("发送用户注册验证码")
@ApiOperation("发送用户注册验证码")
@PostMapping(value = "/sendRegisterSms")
@PreAuthorize("@el.check('appUser:edit')")
@AnonymousPostMapping(value = "/sendRegisterSms")
public ResponseVO<String> sendRegisterSms(@Param("phoneNumber") String phoneNumber) throws Exception {
appUserService.sendSms(phoneNumber);
// appUserService.sendSms(phoneNumber);
return ResponseVO.success("success");
}
@ -104,26 +105,20 @@ public class APPUserController {
@ApiOperation("修改APP用户")
@PutMapping
@PreAuthorize("@el.check('appUser:edit')")
public ResponseVO<String> updateUser(@Validated(APPUser.Update.class) @RequestBody APPUser appUser) throws Exception {
public ResponseVO<String> updateUser(@Validated @ModelAttribute APPUpdateUserDTO appUser) throws Exception {
Long userId = SecurityUtils.getCurrentUserId();
if(!userId.equals(appUser.getId())){
throw new BadRequestException("不能修改他人资料");
}
APPUser updUser= new APPUser();
updUser.setId(appUser.getId());
updUser.setNickName(appUser.getNickName());
updUser.setAvatarPath(appUser.getAvatarPath());
updUser.setRegion(appUser.getRegion());
updUser.setGender(appUser.getGender());
appUserService.updateById(appUser);
appUserService.updateUser(appUser);
return ResponseVO.success("success");
}
@Log("忘记密码")
@ApiOperation("忘记密码")
@PostMapping(value = "/forgotPassword")
@PreAuthorize("@el.check('appUser:edit')")
@AnonymousPostMapping(value = "/forgotPassword")
public ResponseVO<String> forgotPassword(@RequestBody APPForgotPasswordDTO appForgotPasswordDTO) throws Exception {
if (!"0000".equals(appForgotPasswordDTO.getVerificationCode())) {
throw new BadRequestException("验证码错误");
@ -134,10 +129,9 @@ public class APPUserController {
@Log("发送忘记密码验证码")
@ApiOperation("发送忘记密码验证码")
@PostMapping(value = "/sendSms")
@PreAuthorize("@el.check('appUser:edit')")
@AnonymousPostMapping(value = "/sendForgotPasswordSms")
public ResponseVO<String> sendForgotPasswordSms(@Param("phoneNumber") String phoneNumber) throws Exception {
appUserService.sendSms(phoneNumber);
// appUserService.sendSms(phoneNumber);
return ResponseVO.success("success");
}
}

View File

@ -22,6 +22,7 @@ import com.fuyuanshen.modules.system.domain.Role;
import com.fuyuanshen.modules.system.domain.app.APPUser;
import com.fuyuanshen.modules.system.domain.dto.UserQueryCriteria;
import com.fuyuanshen.modules.system.domain.dto.app.APPForgotPasswordDTO;
import com.fuyuanshen.modules.system.domain.dto.app.APPUpdateUserDTO;
import com.fuyuanshen.modules.system.domain.dto.app.APPUserDTO;
import com.fuyuanshen.modules.utils.ResponseVO;
import com.fuyuanshen.utils.PageResult;
@ -59,4 +60,6 @@ public interface APPUserService extends IService<APPUser> {
void forgotPassword(APPForgotPasswordDTO appForgotPasswordDTO);
void sendSms(String phoneNumber);
void updateUser(APPUpdateUserDTO appUser);
}

View File

@ -19,11 +19,13 @@ import cn.hutool.core.util.RandomUtil;
import cn.hutool.crypto.digest.MD5;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.fuyuanshen.constants.DeviceConstants;
import com.fuyuanshen.exception.BadRequestException;
import com.fuyuanshen.modules.system.domain.Role;
import com.fuyuanshen.modules.system.domain.app.APPUser;
import com.fuyuanshen.modules.system.domain.dto.UserQueryCriteria;
import com.fuyuanshen.modules.system.domain.dto.app.APPForgotPasswordDTO;
import com.fuyuanshen.modules.system.domain.dto.app.APPUpdateUserDTO;
import com.fuyuanshen.modules.system.domain.dto.app.APPUserDTO;
import com.fuyuanshen.modules.system.mapper.app.APPUserMapper;
import com.fuyuanshen.modules.system.service.app.APPUserService;
@ -31,9 +33,13 @@ import com.fuyuanshen.modules.utils.ResponseVO;
import com.fuyuanshen.utils.*;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.IOException;
import java.util.Set;
import static com.fuyuanshen.constants.RedisConstants.*;
@ -53,7 +59,16 @@ public class APPUserServiceImpl extends ServiceImpl<APPUserMapper, APPUser> impl
@Autowired
private final RedisUtils redisUtils;
@Value("${file.app_avatar.pic}")
private String filePath;
@Value("${file.app_avatar.ip}")
private String ip;
/**
* 文件访问路径前缀
*/
public static final String FILE_ACCESS_PREFIX = "images";
public static final String FILE_AVATAR_PREFIX = "avatar";
/**
* 查询APP/小程序用户
*
@ -83,13 +98,13 @@ public class APPUserServiceImpl extends ServiceImpl<APPUserMapper, APPUser> impl
throw new BadRequestException("该手机号已被注册");
}
Object verificationCode = redisUtils.get(APP_REGISTER_SMS_TOKEN + username);
/* Object verificationCode = redisUtils.get(APP_REGISTER_SMS_TOKEN + username);
if (verificationCode == null) {
throw new BadRequestException("验证码已过期");
}
if(!user.getVerificationCode().equals(verificationCode.toString())){
throw new BadRequestException("验证码错误");
}
}*/
APPUser appUser = new APPUser();
appUser.setUsername(user.getPhoneNumber());
@ -142,4 +157,38 @@ public class APPUserServiceImpl extends ServiceImpl<APPUserMapper, APPUser> impl
}
@Override
public void updateUser(APPUpdateUserDTO appUser) {
APPUser updUser= new APPUser();
updUser.setId(appUser.getId());
updUser.setNickName(appUser.getNickName());
try {
updUser.setAvatarPath(saveUserAvatarImage(appUser.getFile()));
}catch (IOException e){
throw new BadRequestException("上传头像失败");
}
updUser.setRegion(appUser.getRegion());
updUser.setGender(appUser.getGender());
appUserMapper.updateById(updUser);
}
private String saveUserAvatarImage(MultipartFile file) throws IOException {
if (file == null || file.isEmpty()) {
return null;
}
String originalFileName = file.getOriginalFilename();
String fileExtension = originalFileName.substring(originalFileName.lastIndexOf(".") + 1);
String newFileName = "PS_" + RandomUtil.randomNumbers(8) + "." + fileExtension;
File newFile = new File(filePath + FILE_AVATAR_PREFIX + File.separator + newFileName);
if (!newFile.getParentFile().exists()) {
newFile.getParentFile().mkdirs();
}
file.transferTo(newFile);
return ip + DeviceConstants.FILE_ACCESS_PREFIX + "/" + FILE_AVATAR_PREFIX + "/" + newFileName;
}
}

View File

@ -141,6 +141,10 @@ file:
device:
pic: C:\eladmin\file\ #设备图片存储路径
ip: http://fuyuanshen.com:81/ #服务器地址
app_avatar:
pic: C:\eladmin\file\ #设备图片存储路径
#ip: http://fuyuanshen.com:81/ #服务器地址
ip: https://fuyuanshen.com/ #服务器地址
logging:
level:

View File

@ -151,3 +151,7 @@ file:
pic: /home/eladmin/file/ #设备图片存储路径
#ip: http://fuyuanshen.com:81/ #服务器地址
ip: https://fuyuanshen.com/ #服务器地址
app_avatar:
pic: /home/eladmin/app_avatar/ #设备图片存储路径
#ip: http://fuyuanshen.com:81/ #服务器地址
ip: https://fuyuanshen.com/ #服务器地址

View File

@ -43,6 +43,8 @@ spring:
multipart:
max-file-size: 5MB # 设置单个上传文件的最大大小为10MB
max-request-size: 5MB
jackson:
default-property-inclusion: non_null
# pid:
# file: /自行指定位置/eladmin.pid