From 22e936e491b49fddbc664dd0709df55545d2d1fd Mon Sep 17 00:00:00 2001
From: zjk <852185829@qq.com>
Date: 星期三, 14 十月 2026 14:53:35 +0800
Subject: [PATCH] feat(服务商小程序与认证服务): 实现服务商小程序登录与忘记密码功能

---
 hugray-server/ruoyi-modules/ruoyi-user/src/main/java/com/ruoyi/user/service/impl/AccountUserServiceImpl.java |   37 +++++++++++++++++++++++++++++++++++++
 1 files changed, 37 insertions(+), 0 deletions(-)

diff --git a/hugray-server/ruoyi-modules/ruoyi-user/src/main/java/com/ruoyi/user/service/impl/AccountUserServiceImpl.java b/hugray-server/ruoyi-modules/ruoyi-user/src/main/java/com/ruoyi/user/service/impl/AccountUserServiceImpl.java
index a26c589..dd3f888 100644
--- a/hugray-server/ruoyi-modules/ruoyi-user/src/main/java/com/ruoyi/user/service/impl/AccountUserServiceImpl.java
+++ b/hugray-server/ruoyi-modules/ruoyi-user/src/main/java/com/ruoyi/user/service/impl/AccountUserServiceImpl.java
@@ -89,6 +89,12 @@
     }
 
     @Override
+    public AccountUser selectAccountUserByUsername(String userName)
+    {
+        return accountUserMapper.selectAccountUserByUsername(userName);
+    }
+
+    @Override
     public List<AccountUser> selectAccountUserList(AccountUser accountUser)
     {
         return accountUserMapper.selectAccountUserList(accountUser);
@@ -408,6 +414,37 @@
     }
 
     @Override
+    public void resetPasswordByPhone(String phone, String rawPassword)
+    {
+        // STEP 1: 入参兜底校验(认证服务已校验,此处做服务层兜底)
+        if (StringUtils.isEmpty(phone))
+        {
+            throw new ServiceException("请输入手机号");
+        }
+        if (StringUtils.isEmpty(rawPassword))
+        {
+            throw new ServiceException("请输入新密码");
+        }
+        // STEP 2: 按手机号定位会员(逻辑删除已在 SQL 中过滤)
+        AccountUser accountUser = accountUserMapper.selectAccountUserByPhone(phone);
+        if (StringUtils.isNull(accountUser))
+        {
+            throw new ServiceException("该手机号未注册,请先注册");
+        }
+        // STEP 3: 构造单列更新对象,密码 BCrypt 加密后落库(不触碰其它资料)
+        AccountUser update = new AccountUser();
+        update.setUserId(accountUser.getUserId());
+        update.setPassword(SecurityUtils.encryptPassword(rawPassword));
+        update.setUpdateBy(phone);
+        // STEP 4: 只更新 password 一列;影响行数为 0 说明会员不存在或已删除
+        if (accountUserMapper.updateUserPassword(update) == 0)
+        {
+            throw new ServiceException("密码重置失败,请稍后重试");
+        }
+        log.info("[MEMBER_RESET_PWD] reset success, phone={}", maskPhone(phone));
+    }
+
+    @Override
     public AccountUserInfoVo getAccountUserInfo(Long userId)
     {
         // STEP 1: 校验会员ID(登录态缺失时直接失败,避免无归属查询)

--
Gitblit v1.7.1