Browse Source

王先生

zhentao 1 month ago
parent
commit
227b34eabf

+ 5 - 1
pom.xml

@@ -61,7 +61,7 @@
         <dependency>
             <groupId>io.jsonwebtoken</groupId>
             <artifactId>jjwt</artifactId>
-            <version>0.9.0</version>
+            <version>0.9.1</version>
         </dependency>
         <dependency>
             <groupId>cn.hutool</groupId>
@@ -98,6 +98,10 @@
             <artifactId>redisson</artifactId>
             <version>3.18.0</version>
         </dependency>
+        <dependency>
+            <groupId>jakarta.xml.bind</groupId>
+            <artifactId>jakarta.xml.bind-api</artifactId>
+        </dependency>
 
 
     </dependencies>

+ 7 - 5
src/main/java/com/zhentao/controller/UserController.java → src/main/java/com/zhentao/controller/user/UserController.java

@@ -1,9 +1,6 @@
-package com.zhentao.controller;
+package com.zhentao.controller.user;
 
-import com.zhentao.dto.user.NoteDto;
-import com.zhentao.dto.user.UserLoginDto;
-import com.zhentao.dto.user.UserPassDto;
-import com.zhentao.dto.user.UserRegister;
+import com.zhentao.dto.user.*;
 import com.zhentao.service.UserLoginService;
 import com.zhentao.vo.Result;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -46,6 +43,11 @@ public class UserController {
     @PostMapping("/UserPassLogin")
     public Result UserPassLogin(@RequestBody @Valid UserPassDto userPassDto) {
         return userLoginService.UserPassLogin(userPassDto);
+    }
 
+//    忘记密码
+    @PostMapping("/ForgetPass")
+    public Result ForgetPass(@RequestBody @Valid ForgetPassDto forgetPassDto) {
+        return userLoginService.ForgetPass(forgetPassDto);
     }
 }

+ 1 - 1
src/main/java/com/zhentao/controller/WeChatController.java → src/main/java/com/zhentao/controller/user/WeChatController.java

@@ -1,4 +1,4 @@
-package com.zhentao.controller;
+package com.zhentao.controller.user;
 
 import com.zhentao.dto.user.WeChatMode;
 import com.zhentao.service.WeChatLogin;

+ 16 - 0
src/main/java/com/zhentao/dto/user/ForgetPassDto.java

@@ -0,0 +1,16 @@
+package com.zhentao.dto.user;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+
+@Data
+public class ForgetPassDto {
+//    手机号
+    @NotBlank(message = "手机号不能为空")
+    private String phone;
+    @NotBlank(message = "验证码不能为空")
+    private String code;
+    @NotBlank(message = "密码不能为空")
+    private String password;
+}

+ 3 - 4
src/main/java/com/zhentao/service/UserLoginService.java

@@ -2,10 +2,7 @@ package com.zhentao.service;
 
 import com.zhentao.domain.UserLogin;
 import com.baomidou.mybatisplus.extension.service.IService;
-import com.zhentao.dto.user.NoteDto;
-import com.zhentao.dto.user.UserLoginDto;
-import com.zhentao.dto.user.UserPassDto;
-import com.zhentao.dto.user.UserRegister;
+import com.zhentao.dto.user.*;
 import com.zhentao.vo.Result;
 import org.apache.tomcat.jni.User;
 
@@ -28,4 +25,6 @@ public interface UserLoginService extends IService<UserLogin> {
 
     //账号密码登录
     Result UserPassLogin(UserPassDto userPassDto);
+//    忘记密码
+    Result ForgetPass(ForgetPassDto forgetPassDto);
 }

+ 36 - 4
src/main/java/com/zhentao/service/impl/UserLoginServiceImpl.java

@@ -4,10 +4,7 @@ import cn.hutool.core.util.IdUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.zhentao.domain.UserLogin;
-import com.zhentao.dto.user.NoteDto;
-import com.zhentao.dto.user.UserLoginDto;
-import com.zhentao.dto.user.UserPassDto;
-import com.zhentao.dto.user.UserRegister;
+import com.zhentao.dto.user.*;
 import com.zhentao.enums.ApiServerException;
 import com.zhentao.exception.AsynException;
 import com.zhentao.service.UserLoginService;
@@ -226,6 +223,41 @@ public class UserLoginServiceImpl extends ServiceImpl<UserLoginMapper, UserLogin
             lock.unlock();
         }
     }
+//忘记密码
+    @Override
+    public Result ForgetPass(ForgetPassDto forgetPassDto) {
+        RLock lock = redissonClient.getLock(forgetPassDto.getPhone() + "Phone");
+        try {
+            boolean b = lock.tryLock(10, 20, TimeUnit.SECONDS);
+            if (b) {
+                QueryWrapper<UserLogin> queryWrapper = new QueryWrapper<>();
+                queryWrapper.eq("user_mobile", forgetPassDto.getPhone());
+                UserLogin one = this.getOne(queryWrapper);
+                if (one == null) {
+                    return Result.ERR("用户不存在", null);
+                }
+                // 获取Redis中的验证码
+                String s = stringRedisTemplate.opsForValue().get(forgetPassDto.getPhone());
+                // 验证码不匹配则抛出异常
+                if (!s.equals(forgetPassDto.getCode())) {
+                    throw new AsynException(ApiServerException.NOTE_ERROR);
+                }
+                // 获取用户信息,根据手机号
+                String salt = one.getSalt();
+                String s1 = DigestUtils.md5DigestAsHex((salt + forgetPassDto.getPassword()).getBytes());
+                one.setUserPassword(s1);
+                boolean b1 = this.updateById(one);
+                if (b1){
+                    return Result.OK("修改成功", null);
+                }else {
+                    return Result.ERR("修改失败", null);
+                }
+            }
+        } catch (InterruptedException e) {
+            throw new RuntimeException(e);
+        }
+        return null;
+    }
 
 
 }

+ 0 - 1
src/main/java/com/zhentao/tool/TokenUtils.java

@@ -6,7 +6,6 @@ import io.jsonwebtoken.Claims;
 import io.jsonwebtoken.JwtBuilder;
 import io.jsonwebtoken.Jwts;
 import io.jsonwebtoken.SignatureAlgorithm;
-
 import javax.crypto.spec.SecretKeySpec;
 import javax.xml.bind.DatatypeConverter;
 import java.security.Key;