个人相关

master
管理员 3 years ago
parent 2c0207ed82
commit 0b806d82f1

@ -1,6 +1,10 @@
package com.ruoyi.web.controller.system; package com.ruoyi.web.controller.system;
import cn.binarywang.wx.miniapp.api.WxMaService;
import cn.binarywang.wx.miniapp.bean.WxMaPhoneNumberInfo;
import cn.binarywang.wx.miniapp.util.WxMaConfigHolder;
import cn.dev33.satoken.annotation.SaIgnore; import cn.dev33.satoken.annotation.SaIgnore;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.config.RuoYiConfig; import com.ruoyi.common.config.RuoYiConfig;
import com.ruoyi.common.constant.Constants; import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.domain.R;
@ -9,12 +13,14 @@ import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.domain.model.LoginBody; import com.ruoyi.common.core.domain.model.LoginBody;
import com.ruoyi.common.core.domain.model.LoginUser; import com.ruoyi.common.core.domain.model.LoginUser;
import com.ruoyi.common.core.domain.model.SmsLoginBody; import com.ruoyi.common.core.domain.model.SmsLoginBody;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.helper.LoginHelper; import com.ruoyi.common.helper.LoginHelper;
import com.ruoyi.system.domain.vo.RouterVo; import com.ruoyi.system.domain.vo.RouterVo;
import com.ruoyi.system.service.ISysMenuService; import com.ruoyi.system.service.ISysMenuService;
import com.ruoyi.system.service.ISysUserService; import com.ruoyi.system.service.ISysUserService;
import com.ruoyi.system.service.SysLoginService; import com.ruoyi.system.service.SysLoginService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import me.chanjar.weixin.common.error.WxErrorException;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
@ -40,6 +46,8 @@ public class SysLoginController {
private final SysLoginService loginService; private final SysLoginService loginService;
private final ISysMenuService menuService; private final ISysMenuService menuService;
private final ISysUserService userService; private final ISysUserService userService;
private final WxMaService wxMaService;
private final RuoYiConfig config; private final RuoYiConfig config;
/** /**
@ -149,4 +157,20 @@ public class SysLoginController {
List<SysMenu> menus = menuService.selectMenuTreeByUserId(userId); List<SysMenu> menus = menuService.selectMenuTreeByUserId(userId);
return R.ok(menuService.buildMenus(menus)); return R.ok(menuService.buildMenus(menus));
} }
@Log(title = "获取微信手机号码", businessType = BusinessType.GRANT)
@PostMapping("xcxPhone")
@SaIgnore
public R<?> xcxPhone(@NotBlank(message = "{xcx.code.not.blank}") String code) {
try {
WxMaPhoneNumberInfo phoneNoInfo = wxMaService.getUserService().getNewPhoneNoInfo(code);
WxMaConfigHolder.remove();//清理ThreadLocal
return R.ok(phoneNoInfo);
} catch (WxErrorException e) {
throw new RuntimeException(e);
}
}
} }

@ -2,7 +2,9 @@ package com.ruoyi.web.controller.system;
import cn.dev33.satoken.secure.BCrypt; import cn.dev33.satoken.secure.BCrypt;
import cn.hutool.core.io.FileUtil; import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.StrUtil;
import com.ruoyi.common.annotation.Log; import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.annotation.RepeatSubmit;
import com.ruoyi.common.constant.UserConstants; import com.ruoyi.common.constant.UserConstants;
import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.domain.R;
@ -59,10 +61,10 @@ public class SysProfileController extends BaseController {
@PutMapping @PutMapping
public R<Void> updateProfile(@RequestBody SysUser user) { public R<Void> updateProfile(@RequestBody SysUser user) {
if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(user)) { if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(user)) {
return R.fail("修改用户'" + user.getUserName() + "'失败,手机号码已存在"); return R.fail("手机已存在");
} }
if (StringUtils.isNotEmpty(user.getEmail()) && !userService.checkEmailUnique(user)) { if (StringUtils.isNotEmpty(user.getEmail()) && !userService.checkEmailUnique(user)) {
return R.fail("修改用户'" + user.getUserName() + "'失败,邮箱账号已存在"); return R.fail("邮箱已存在");
} }
user.setUserId(getUserId()); user.setUserId(getUserId());
user.setUserName(null); user.setUserName(null);
@ -72,8 +74,32 @@ public class SysProfileController extends BaseController {
if (userService.updateUserProfile(user) > 0) { if (userService.updateUserProfile(user) > 0) {
return R.ok(); return R.ok();
} }
return R.fail("修改个人信息异常,请联系管理员"); return R.fail("修改个人异常");
} }
@Log(title = "绑定用户名", businessType = BusinessType.UPDATE)
@RepeatSubmit
@PutMapping("bindUserName")
public R<Void> bindUserName(String userName) {
SysUser u = new SysUser();
u.setUserId(getUserId());
u.setUserName(userName);
String oldUsername = userService.selectUserById(u.getUserId()).getUserName();
if(!(StrUtil.isBlank(oldUsername) || oldUsername.startsWith("_"))) {
return R.fail("只能绑定一次");
}
if(!userService.checkUserNameUnique(u)){
return R.fail("账户已存在");
}
if (userService.updateUserProfile(u) > 0) {
return R.ok();
}
return R.fail("绑定帐号异常");
}
/** /**
* *
@ -87,17 +113,17 @@ public class SysProfileController extends BaseController {
SysUser user = userService.selectUserById(LoginHelper.getUserId()); SysUser user = userService.selectUserById(LoginHelper.getUserId());
String userName = user.getUserName(); String userName = user.getUserName();
String password = user.getPassword(); String password = user.getPassword();
if (!BCrypt.checkpw(oldPassword, password)) { if (StrUtil.isNotBlank(password) && !BCrypt.checkpw(oldPassword, password)) {
return R.fail("修改密码失败,旧密码错误"); return R.fail("旧密码错误");
} }
if (BCrypt.checkpw(newPassword, password)) { if (BCrypt.checkpw(newPassword, password)) {
return R.fail("新密码不能与旧密码相同"); return R.fail("新旧密码相同");
} }
if (userService.resetUserPwd(userName, BCrypt.hashpw(newPassword)) > 0) { if (userService.resetUserPwd(userName, BCrypt.hashpw(newPassword)) > 0) {
return R.ok(); return R.ok();
} }
return R.fail("修改密码异常,请联系管理员"); return R.fail("修改密码异常");
} }
/** /**

@ -48,14 +48,14 @@ public class SysUser extends BaseEntity {
*/ */
@Xss(message = "用户账号不能包含脚本字符") @Xss(message = "用户账号不能包含脚本字符")
@NotBlank(message = "用户账号不能为空") @NotBlank(message = "用户账号不能为空")
@Size(min = 0, max = 30, message = "用户账号长度不能超过{max}个字符") @Size(min = 0, max = 20, message = "用户账号长度不能超过{max}个字符")
private String userName; private String userName;
/** /**
* *
*/ */
@Xss(message = "用户昵称不能包含脚本字符") @Xss(message = "用户昵称不能包含脚本字符")
@Size(min = 0, max = 30, message = "用户昵称长度不能超过{max}个字符") @Size(min = 0, max = 20, message = "用户昵称长度不能超过{max}个字符")
private String nickName; private String nickName;
/** /**

@ -151,6 +151,7 @@ public class SysLoginService {
user.setAvatar(url); user.setAvatar(url);
user.setUserName("_"+new StringBuffer(Long.toString(id.nextId(null).longValue(),36)).reverse().toString()); user.setUserName("_"+new StringBuffer(Long.toString(id.nextId(null).longValue(),36)).reverse().toString());
user.setNickName(nickname); user.setNickName(nickname);
user.setRemark(user.getUserName());
userService.insertUser(user); userService.insertUser(user);
return xcxLoginByOpenId(openid); return xcxLoginByOpenId(openid);
} }

Loading…
Cancel
Save