From ae88cc16ccbe7316f5eec8579b6e4d13c1e5381d Mon Sep 17 00:00:00 2001 From: chenyouting <514333061@qq.com> Date: Tue, 24 Jun 2025 17:43:45 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9app=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../security/app/AppTokenProvider.java | 4 +- .../domain/dto/app/APPUpdateUserDTO.java | 32 +++++++++++ .../modules/system/domain/vo/APPUserVo.java | 14 +---- .../system/rest/app/APPUserController.java | 26 ++++----- .../system/service/app/APPUserService.java | 3 ++ .../service/impl/app/APPUserServiceImpl.java | 53 ++++++++++++++++++- .../main/resources/config/application-dev.yml | 4 ++ .../resources/config/application-prod.yml | 4 ++ .../src/main/resources/config/application.yml | 2 + 9 files changed, 109 insertions(+), 33 deletions(-) create mode 100644 fys-system/src/main/java/com/fuyuanshen/modules/system/domain/dto/app/APPUpdateUserDTO.java diff --git a/fys-system/src/main/java/com/fuyuanshen/modules/security/security/app/AppTokenProvider.java b/fys-system/src/main/java/com/fuyuanshen/modules/security/security/app/AppTokenProvider.java index 48f43fe..6104e05 100644 --- a/fys-system/src/main/java/com/fuyuanshen/modules/security/security/app/AppTokenProvider.java +++ b/fys-system/src/main/java/com/fuyuanshen/modules/security/security/app/AppTokenProvider.java @@ -77,7 +77,7 @@ public class AppTokenProvider implements InitializingBean { // 设置参数 Map 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 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 { diff --git a/fys-system/src/main/java/com/fuyuanshen/modules/system/domain/dto/app/APPUpdateUserDTO.java b/fys-system/src/main/java/com/fuyuanshen/modules/system/domain/dto/app/APPUpdateUserDTO.java new file mode 100644 index 0000000..39c1e3c --- /dev/null +++ b/fys-system/src/main/java/com/fuyuanshen/modules/system/domain/dto/app/APPUpdateUserDTO.java @@ -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; +} diff --git a/fys-system/src/main/java/com/fuyuanshen/modules/system/domain/vo/APPUserVo.java b/fys-system/src/main/java/com/fuyuanshen/modules/system/domain/vo/APPUserVo.java index 031f8b2..32dba88 100644 --- a/fys-system/src/main/java/com/fuyuanshen/modules/system/domain/vo/APPUserVo.java +++ b/fys-system/src/main/java/com/fuyuanshen/modules/system/domain/vo/APPUserVo.java @@ -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 = "用户昵称") diff --git a/fys-system/src/main/java/com/fuyuanshen/modules/system/rest/app/APPUserController.java b/fys-system/src/main/java/com/fuyuanshen/modules/system/rest/app/APPUserController.java index 1a4dcd6..a7ff195 100644 --- a/fys-system/src/main/java/com/fuyuanshen/modules/system/rest/app/APPUserController.java +++ b/fys-system/src/main/java/com/fuyuanshen/modules/system/rest/app/APPUserController.java @@ -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 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 updateUser(@Validated(APPUser.Update.class) @RequestBody APPUser appUser) throws Exception { + public ResponseVO 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 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 sendForgotPasswordSms(@Param("phoneNumber") String phoneNumber) throws Exception { - appUserService.sendSms(phoneNumber); +// appUserService.sendSms(phoneNumber); return ResponseVO.success("success!!!"); } } diff --git a/fys-system/src/main/java/com/fuyuanshen/modules/system/service/app/APPUserService.java b/fys-system/src/main/java/com/fuyuanshen/modules/system/service/app/APPUserService.java index ab40f4d..2d1cbf8 100644 --- a/fys-system/src/main/java/com/fuyuanshen/modules/system/service/app/APPUserService.java +++ b/fys-system/src/main/java/com/fuyuanshen/modules/system/service/app/APPUserService.java @@ -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 { void forgotPassword(APPForgotPasswordDTO appForgotPasswordDTO); void sendSms(String phoneNumber); + + void updateUser(APPUpdateUserDTO appUser); } diff --git a/fys-system/src/main/java/com/fuyuanshen/modules/system/service/impl/app/APPUserServiceImpl.java b/fys-system/src/main/java/com/fuyuanshen/modules/system/service/impl/app/APPUserServiceImpl.java index 46ce0f4..f89014d 100644 --- a/fys-system/src/main/java/com/fuyuanshen/modules/system/service/impl/app/APPUserServiceImpl.java +++ b/fys-system/src/main/java/com/fuyuanshen/modules/system/service/impl/app/APPUserServiceImpl.java @@ -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 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 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 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; + } } diff --git a/fys-system/src/main/resources/config/application-dev.yml b/fys-system/src/main/resources/config/application-dev.yml index 5892d92..177945c 100644 --- a/fys-system/src/main/resources/config/application-dev.yml +++ b/fys-system/src/main/resources/config/application-dev.yml @@ -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: diff --git a/fys-system/src/main/resources/config/application-prod.yml b/fys-system/src/main/resources/config/application-prod.yml index 63a86da..9208981 100644 --- a/fys-system/src/main/resources/config/application-prod.yml +++ b/fys-system/src/main/resources/config/application-prod.yml @@ -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/ #服务器地址 diff --git a/fys-system/src/main/resources/config/application.yml b/fys-system/src/main/resources/config/application.yml index 0669a77..76c354c 100644 --- a/fys-system/src/main/resources/config/application.yml +++ b/fys-system/src/main/resources/config/application.yml @@ -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