11package top .cadecode .uniboot .controller ;
22
3+ import cn .hutool .core .util .ObjectUtil ;
34import io .swagger .annotations .Api ;
45import io .swagger .annotations .ApiOperation ;
56import lombok .RequiredArgsConstructor ;
67import lombok .extern .slf4j .Slf4j ;
8+ import org .springframework .security .crypto .password .PasswordEncoder ;
9+ import org .springframework .validation .annotation .Validated ;
710import org .springframework .web .bind .annotation .PostMapping ;
11+ import org .springframework .web .bind .annotation .RequestBody ;
812import org .springframework .web .bind .annotation .RequestMapping ;
913import org .springframework .web .bind .annotation .RestController ;
1014import top .cadecode .uniboot .common .annotation .ApiFormat ;
15+ import top .cadecode .uniboot .common .exception .UniException ;
1116import top .cadecode .uniboot .framework .security .TokenAuthHolder ;
1217import top .cadecode .uniboot .system .bean .dto .SysUserDto .SysUserDetailsDto ;
1318import top .cadecode .uniboot .system .bean .dto .SysUserDto .SysUserInfoDto ;
19+ import top .cadecode .uniboot .system .bean .po .SysUser ;
1420import top .cadecode .uniboot .system .bean .vo .SysMenuVo .SysMenuTreeVo ;
21+ import top .cadecode .uniboot .system .request .SysUserRequest .SysUserModifyInfoRequest ;
22+ import top .cadecode .uniboot .system .request .SysUserRequest .SysUserModifyPassRequest ;
1523import top .cadecode .uniboot .system .service .SysMenuService ;
24+ import top .cadecode .uniboot .system .service .SysUserService ;
1625
26+ import javax .validation .Valid ;
1727import java .util .List ;
1828
1929/**
2838@ Api (tags = "系统管理" )
2939@ RequestMapping ("system" )
3040@ RestController
41+ @ Validated
3142public class SystemController {
3243
44+ private final SysUserService sysUserService ;
3345 private final SysMenuService sysMenuService ;
3446
47+ private final PasswordEncoder passwordEncoder ;
48+
3549 /**
3650 * 获取用户信息
3751 */
@@ -42,4 +56,37 @@ public SysUserInfoDto userGetInfo() {
4256 List <SysMenuTreeVo > sysMenuTreeVos = sysMenuService .listTreeVoByRoles (userDetails .getRoles ());
4357 return SysUserInfoDto .builder ().menuList (sysMenuTreeVos ).build ();
4458 }
59+
60+ @ ApiOperation ("修改用户信息" )
61+ @ PostMapping ("user/modify_info" )
62+ public boolean userModifyInfo (@ RequestBody @ Valid SysUserModifyInfoRequest request ) {
63+ SysUserDetailsDto userDetails = TokenAuthHolder .getUserDetails (null );
64+ return sysUserService .lambdaUpdate ()
65+ .eq (SysUser ::getId , userDetails .getId ())
66+ .set (SysUser ::getNickName , request .getNickName ())
67+ .set (SysUser ::getPhone , request .getPhone ())
68+ .set (SysUser ::getMail , request .getMail ())
69+ .set (SysUser ::getSex , request .getSex ())
70+ .update ();
71+ }
72+
73+ @ ApiOperation ("修改用户密码" )
74+ @ PostMapping ("user/modify_pass" )
75+ public boolean userModifyPass (@ RequestBody @ Valid SysUserModifyPassRequest request ) {
76+ SysUserDetailsDto userDetails = TokenAuthHolder .getUserDetails (null );
77+ SysUser sysUser = sysUserService .lambdaQuery ().select (SysUser ::getPassword )
78+ .eq (SysUser ::getId , userDetails .getId ()).one ();
79+ if (ObjectUtil .notEqual (request .getNewPass (), request .getConfirmedPass ())){
80+ throw UniException .of ("新密码和确认密码不一致" );
81+ }
82+ if (!passwordEncoder .matches (request .getOldPass (), sysUser .getPassword ())) {
83+ throw UniException .of ("原密码错误" );
84+ }
85+ return sysUserService .lambdaUpdate ()
86+ .eq (SysUser ::getId , userDetails .getId ())
87+ .eq (SysUser ::getPassword , sysUser .getPassword ())
88+ .set (SysUser ::getPassword , passwordEncoder .encode (request .getNewPass ()))
89+ .update ();
90+ }
91+
4592}
0 commit comments