🐛 Fixing a bug. 移动端修改用户信息

This commit is contained in:
aeizzz committed 2023-01-05 20:19:49 +08:00
1 parent 91b3991fa4
commit a29d368d68
4 files changed
+44

No files matched your search

@@ -19,4 +19,10 @@ public class AppUserDTO extends AppUser {
@ApiModelProperty(value = "角色id集合")
private List<Long> role;
/**
* 新密码
*/
@ApiModelProperty(value = "新密码")
private String newpassword1;
}
@@ -19,6 +19,7 @@ package com.pig4cloud.pigx.app.controller;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.pig4cloud.pigx.admin.api.dto.UserDTO;
import com.pig4cloud.pigx.admin.api.entity.SysUser;
import com.pig4cloud.pigx.app.api.dto.AppUserDTO;
import com.pig4cloud.pigx.app.api.vo.AppUserExcelVO;
@@ -37,6 +38,7 @@ import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.util.List;
/**
@@ -151,4 +153,10 @@ public class AppUserController {
return appUserService.listUser(appUser);
}
@SysLog("修改个人信息")
@PutMapping("/edit")
public R updateUserInfo(@Valid @RequestBody AppUserDTO userDto) {
return appUserService.updateUserInfo(userDto);
}
}
@@ -24,6 +24,7 @@ import com.pig4cloud.pigx.app.api.dto.AppUserDTO;
import com.pig4cloud.pigx.app.api.dto.AppUserInfo;
import com.pig4cloud.pigx.app.api.entity.AppUser;
import com.pig4cloud.pigx.app.api.vo.AppUserExcelVO;
import com.pig4cloud.pigx.common.core.util.R;
import java.util.List;
@@ -47,4 +48,6 @@ public interface AppUserService extends IService<AppUser> {
AppUserInfo findUserInfo(AppUser user);
R updateUserInfo(AppUserDTO userDto);
}
@@ -25,7 +25,9 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.pig4cloud.pigx.admin.api.entity.SysMenu;
import com.pig4cloud.pigx.admin.api.entity.SysRole;
import com.pig4cloud.pigx.admin.api.entity.SysUser;
import com.pig4cloud.pigx.admin.api.entity.SysUserRole;
import com.pig4cloud.pigx.admin.api.vo.UserVO;
import com.pig4cloud.pigx.app.api.dto.AppUserDTO;
import com.pig4cloud.pigx.app.api.dto.AppUserInfo;
import com.pig4cloud.pigx.app.api.entity.AppMenu;
@@ -38,10 +40,16 @@ import com.pig4cloud.pigx.app.service.AppRoleService;
import com.pig4cloud.pigx.app.service.AppUserRoleService;
import com.pig4cloud.pigx.app.service.AppUserService;
import com.pig4cloud.pigx.app.api.vo.AppUserExcelVO;
import com.pig4cloud.pigx.common.core.constant.CacheConstants;
import com.pig4cloud.pigx.common.core.constant.CommonConstants;
import com.pig4cloud.pigx.common.core.exception.ErrorCodes;
import com.pig4cloud.pigx.common.core.util.MsgUtils;
import com.pig4cloud.pigx.common.core.util.R;
import com.pig4cloud.pigx.common.data.resolver.ParamResolver;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Service;
@@ -60,6 +68,7 @@ import java.util.stream.Collectors;
*/
@Service
@AllArgsConstructor
@Slf4j
public class AppUserServiceImpl extends ServiceImpl<AppUserMapper, AppUser> implements AppUserService {
private static final PasswordEncoder ENCODER = new BCryptPasswordEncoder();
@@ -170,4 +179,22 @@ public class AppUserServiceImpl extends ServiceImpl<AppUserMapper, AppUser> impl
return info;
}
@Override
@CacheEvict(value = CacheConstants.USER_DETAILS_MINI, key = "#userDto.username")
public R updateUserInfo(AppUserDTO userDto) {
AppUser appUser = baseMapper.selectById(userDto.getUserId());
if (!ENCODER.matches(userDto.getPassword(), appUser.getPassword())) {
log.info("原密码错误,修改个人信息失败:{}", userDto.getUsername());
return R.failed(MsgUtils.getMessage(ErrorCodes.SYS_USER_UPDATE_PASSWORDERROR));
}
BeanUtils.copyProperties(userDto, appUser);
// 防止把前端传过来的密码设置上
appUser.setPassword(null);
if (StrUtil.isNotBlank(userDto.getNewpassword1())) {
appUser.setPassword(ENCODER.encode(userDto.getNewpassword1()));
}
return R.ok(this.updateById(appUser));
}
}