From 0b806d82f13eed2598c1005caa07d6a1b91782ba Mon Sep 17 00:00:00 2001 From: jlzhou <12020042@qq.com> Date: Wed, 7 Jun 2023 16:01:52 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=AA=E4=BA=BA=E7=9B=B8=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/system/SysLoginController.java | 24 +++++++++++ .../system/SysProfileController.java | 40 +++++++++++++++---- .../common/core/domain/entity/SysUser.java | 4 +- .../ruoyi/system/service/SysLoginService.java | 1 + 4 files changed, 60 insertions(+), 9 deletions(-) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java index edcc692..385659f 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java @@ -1,6 +1,10 @@ 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 com.ruoyi.common.annotation.Log; import com.ruoyi.common.config.RuoYiConfig; import com.ruoyi.common.constant.Constants; 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.LoginUser; import com.ruoyi.common.core.domain.model.SmsLoginBody; +import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.helper.LoginHelper; import com.ruoyi.system.domain.vo.RouterVo; import com.ruoyi.system.service.ISysMenuService; import com.ruoyi.system.service.ISysUserService; import com.ruoyi.system.service.SysLoginService; import lombok.RequiredArgsConstructor; +import me.chanjar.weixin.common.error.WxErrorException; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; @@ -40,6 +46,8 @@ public class SysLoginController { private final SysLoginService loginService; private final ISysMenuService menuService; private final ISysUserService userService; + + private final WxMaService wxMaService; private final RuoYiConfig config; /** @@ -149,4 +157,20 @@ public class SysLoginController { List menus = menuService.selectMenuTreeByUserId(userId); 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); + } + + } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysProfileController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysProfileController.java index 5dfe739..bc7cff0 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysProfileController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysProfileController.java @@ -2,7 +2,9 @@ package com.ruoyi.web.controller.system; import cn.dev33.satoken.secure.BCrypt; import cn.hutool.core.io.FileUtil; +import cn.hutool.core.util.StrUtil; import com.ruoyi.common.annotation.Log; +import com.ruoyi.common.annotation.RepeatSubmit; import com.ruoyi.common.constant.UserConstants; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.R; @@ -59,10 +61,10 @@ public class SysProfileController extends BaseController { @PutMapping public R updateProfile(@RequestBody SysUser 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)) { - return R.fail("修改用户'" + user.getUserName() + "'失败,邮箱账号已存在"); + return R.fail("邮箱已存在"); } user.setUserId(getUserId()); user.setUserName(null); @@ -72,8 +74,32 @@ public class SysProfileController extends BaseController { if (userService.updateUserProfile(user) > 0) { return R.ok(); } - return R.fail("修改个人信息异常,请联系管理员"); + return R.fail("修改个人异常"); } + @Log(title = "绑定用户名", businessType = BusinessType.UPDATE) + @RepeatSubmit + @PutMapping("bindUserName") + public R 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()); String userName = user.getUserName(); String password = user.getPassword(); - if (!BCrypt.checkpw(oldPassword, password)) { - return R.fail("修改密码失败,旧密码错误"); + if (StrUtil.isNotBlank(password) && !BCrypt.checkpw(oldPassword, password)) { + return R.fail("旧密码错误"); } if (BCrypt.checkpw(newPassword, password)) { - return R.fail("新密码不能与旧密码相同"); + return R.fail("新旧密码相同"); } if (userService.resetUserPwd(userName, BCrypt.hashpw(newPassword)) > 0) { return R.ok(); } - return R.fail("修改密码异常,请联系管理员"); + return R.fail("修改密码异常"); } /** diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java index 08c3444..97c30e6 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java @@ -48,14 +48,14 @@ public class SysUser extends BaseEntity { */ @Xss(message = "用户账号不能包含脚本字符") @NotBlank(message = "用户账号不能为空") - @Size(min = 0, max = 30, message = "用户账号长度不能超过{max}个字符") + @Size(min = 0, max = 20, message = "用户账号长度不能超过{max}个字符") private String userName; /** * 用户昵称 */ @Xss(message = "用户昵称不能包含脚本字符") - @Size(min = 0, max = 30, message = "用户昵称长度不能超过{max}个字符") + @Size(min = 0, max = 20, message = "用户昵称长度不能超过{max}个字符") private String nickName; /** diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/SysLoginService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/SysLoginService.java index cd9d13d..72ac661 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/SysLoginService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/SysLoginService.java @@ -151,6 +151,7 @@ public class SysLoginService { user.setAvatar(url); user.setUserName("_"+new StringBuffer(Long.toString(id.nextId(null).longValue(),36)).reverse().toString()); user.setNickName(nickname); + user.setRemark(user.getUserName()); userService.insertUser(user); return xcxLoginByOpenId(openid); }