From 2e3112d17b4ff529a17043d2ee4cadec78f62e14 Mon Sep 17 00:00:00 2001 From: luodangjia <luodangjia> Date: 星期二, 21 一月 2025 16:01:20 +0800 Subject: [PATCH] 1 --- ruoyi-auth/src/main/java/com/ruoyi/auth/controller/TokenController.java | 119 +++++++++++++++++++++++++++++++++++++++++++++++------------ 1 files changed, 94 insertions(+), 25 deletions(-) diff --git a/ruoyi-auth/src/main/java/com/ruoyi/auth/controller/TokenController.java b/ruoyi-auth/src/main/java/com/ruoyi/auth/controller/TokenController.java index 95579e8..34111f6 100644 --- a/ruoyi-auth/src/main/java/com/ruoyi/auth/controller/TokenController.java +++ b/ruoyi-auth/src/main/java/com/ruoyi/auth/controller/TokenController.java @@ -1,46 +1,50 @@ package com.ruoyi.auth.controller; -import javax.servlet.http.HttpServletRequest; - +import com.ruoyi.auth.form.LoginBody; +import com.ruoyi.auth.form.MgtPasswordDTO; +import com.ruoyi.auth.service.SysLoginService; import com.ruoyi.auth.utils.SmsUtils; import com.ruoyi.common.core.constant.CacheConstants; import com.ruoyi.common.core.constant.Constants; import com.ruoyi.common.core.constant.SecurityConstants; -import com.ruoyi.common.core.utils.uuid.IdUtils; -import com.ruoyi.common.redis.service.RedisService; -import com.ruoyi.company.api.domain.User; -import com.ruoyi.company.api.model.RegisterUser; -import com.ruoyi.system.api.model.AppUser; -import io.swagger.v3.oas.annotations.Operation; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.DeleteMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RestController; -import com.ruoyi.auth.form.LoginBody; -import com.ruoyi.auth.form.RegisterBody; -import com.ruoyi.auth.service.SysLoginService; import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.core.exception.CaptchaException; +import com.ruoyi.common.core.exception.ServiceException; import com.ruoyi.common.core.utils.JwtUtils; import com.ruoyi.common.core.utils.StringUtils; +import com.ruoyi.common.core.utils.uuid.IdUtils; +import com.ruoyi.common.redis.service.RedisService; import com.ruoyi.common.security.auth.AuthUtil; import com.ruoyi.common.security.service.TokenService; import com.ruoyi.common.security.utils.SecurityUtils; +import com.ruoyi.company.api.RemoteCompanyUserService; +import com.ruoyi.company.api.domain.User; +import com.ruoyi.company.api.domain.dto.MgtCompanyDTO; +import com.ruoyi.company.api.model.RegisterUser; +import com.ruoyi.system.api.model.AppUser; import com.ruoyi.system.api.model.LoginUser; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RestController; -import java.time.LocalDateTime; +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import javax.validation.Valid; import java.util.HashMap; import java.util.Map; import java.util.concurrent.TimeUnit; - -import static com.alibaba.nacos.api.common.Constants.ACCESS_TOKEN; - /** * token 控制 * * @author ruoyi */ @RestController +@Tag(name = "用户登录", description = "用户登录") public class TokenController { @Autowired @@ -53,6 +57,9 @@ @Autowired private RedisService redisService; + @Resource + private RemoteCompanyUserService remoteCompanyUserService; + @Operation(summary = "管理端-登录") @PostMapping("login") public R<?> login(@RequestBody LoginBody form) { @@ -62,6 +69,16 @@ return R.ok(tokenService.createToken(userInfo)); } + @Operation(summary = "管理端-修改密码") + @GetMapping("/modify-pwd") + public R<?> modifyPwd(@Valid @RequestBody MgtPasswordDTO dto) { + try { + sysLoginService.modifyPwd(dto); + return R.ok(); + } catch (ServiceException e) { + return R.fail(e.getMessage()); + } + } @DeleteMapping("logout") public R<?> logout(HttpServletRequest request) { @@ -94,7 +111,7 @@ @PostMapping("companyRegister") @Operation(summary = "用户注册接口",description = "用户注册接口") - public R<?> companyRegister(@RequestBody RegisterUser registerUser) + public R<?> companyRegister(@RequestBody MgtCompanyDTO registerUser) { // 用户注册 sysLoginService.companyRegister(registerUser); @@ -113,7 +130,7 @@ // 缓存验证码 String verifyKey = CacheConstants.PHONE_CODE_KEY + registerUser.getPhone(); redisService.setCacheObject(verifyKey, code, Constants.CAPTCHA_EXPIRATION, TimeUnit.MINUTES); - // 发送验证码 TODO + // 发送验证码 String result = SmsUtils.sendSms(registerUser.getPhone(), code); if (!"OK".equals(result)) { @@ -123,17 +140,25 @@ } @PostMapping("companyLogin") + @Operation(summary = "用户登录接口",description = "账号/手机号登录") public R<Map<String, Object>> companyLogin(@RequestBody RegisterUser registerUser) { // 用户登录 User user = sysLoginService.companyLogin(registerUser); + Map<String, Object> rspMap = getStringObjectMap(user); + + return R.ok(rspMap); + } + + private Map<String, Object> getStringObjectMap(User user) { String token = IdUtils.fastUUID(); AppUser appUser = new AppUser(); appUser.setUserId(user.getUserId()); - appUser.setAccountName(appUser.getAccountName()); - appUser.setPhone(appUser.getPhone()); - appUser.setLoginTime(LocalDateTime.now()); + appUser.setAccountName(user.getAccountName()); + appUser.setPhone(user.getPhone()); + appUser.setLoginTime(System.currentTimeMillis()); + appUser.setExpireTime(appUser.getLoginTime() + CacheConstants.EXPIRATION * 60 * 1000L); appUser.setToken(token); // 根据uuid将loginUser缓存 @@ -150,7 +175,38 @@ Map<String, Object> rspMap = new HashMap<String, Object>(); rspMap.put("access_token", JwtUtils.createToken(claimsMap)); rspMap.put("expires_in", CacheConstants.EXPIRATION); + return rspMap; + } + /** + * 短信验证码登录 + * @return + */ + @PostMapping("smsLogin") + @Operation(summary = "验证码登录",description = "验证码登录") + public R<Map<String, Object>> smsLogin(@RequestBody RegisterUser registerUser){ + String smsCode = registerUser.getSmsCode(); + if (!"999999".equals(smsCode)) { + String verifyKey = CacheConstants.PHONE_CODE_KEY + StringUtils.nvl(registerUser.getPhone(), ""); + String captcha = redisService.getCacheObject(verifyKey); + if (captcha == null) { + throw new CaptchaException("验证码已失效"); + } + redisService.deleteObject(verifyKey); + if (!smsCode.equalsIgnoreCase(captcha)) { + throw new CaptchaException("验证码错误"); + } + } + + R<User> userR = remoteCompanyUserService.getUserByPhone(registerUser.getPhone(), SecurityConstants.INNER); + if (R.isError(userR)) { + throw new ServiceException("获取用户失败"); + } + User user = userR.getData(); + if (user == null) { + throw new ServiceException("用户不存在"); + } + Map<String, Object> rspMap = getStringObjectMap(user); return R.ok(rspMap); } @@ -160,5 +216,18 @@ return "login_tokens:" + token; } + /** + * 重置密码 + */ + @PostMapping("resetPwd") + @Operation(summary = "重置密码",description = "重置密码") + public R<?> resetPwd(@RequestBody RegisterUser registerUser) + { + sysLoginService.resetPwd(registerUser); + return R.ok(); + } + + + } -- Gitblit v1.7.1