From f981c1f30461ef9a40a39338aa77e511ffc24d1f Mon Sep 17 00:00:00 2001
From: luodangjia <luodangjia>
Date: 星期二, 21 一月 2025 16:56:39 +0800
Subject: [PATCH] 1

---
 ruoyi-modules/ruoyi-company/src/main/java/com/ruoyi/company/controller/front/UserController.java |   44 ++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 42 insertions(+), 2 deletions(-)

diff --git a/ruoyi-modules/ruoyi-company/src/main/java/com/ruoyi/company/controller/front/UserController.java b/ruoyi-modules/ruoyi-company/src/main/java/com/ruoyi/company/controller/front/UserController.java
index 09c83e0..e44e2e9 100644
--- a/ruoyi-modules/ruoyi-company/src/main/java/com/ruoyi/company/controller/front/UserController.java
+++ b/ruoyi-modules/ruoyi-company/src/main/java/com/ruoyi/company/controller/front/UserController.java
@@ -1,14 +1,20 @@
 package com.ruoyi.company.controller.front;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.ruoyi.common.core.constant.CacheConstants;
 import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.exception.CaptchaException;
+import com.ruoyi.common.core.utils.StringUtils;
 import com.ruoyi.common.core.utils.bean.BeanUtils;
+import com.ruoyi.common.redis.service.RedisService;
 import com.ruoyi.common.security.annotation.InnerAuth;
 import com.ruoyi.common.security.utils.SecurityUtils;
+import com.ruoyi.company.api.domain.Company;
 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.company.api.model.UpdatePassword;
+import com.ruoyi.company.api.model.UpdatePhone;
 import com.ruoyi.company.api.model.UserDetail;
 import com.ruoyi.company.service.CompanyService;
 import com.ruoyi.company.service.UserService;
@@ -16,6 +22,7 @@
 import io.swagger.v3.oas.annotations.Operation;
 import lombok.RequiredArgsConstructor;
 import lombok.experimental.StandardException;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.web.bind.annotation.*;
 
@@ -27,6 +34,7 @@
 public class UserController {
     private final UserService userService;
     private final CompanyService companyService;
+    private final RedisService redisService;
 
     @PostMapping("/register")
     public R register(@RequestBody MgtCompanyDTO mgtCompanyDTO) {
@@ -39,8 +47,11 @@
     public R<UserDetail> getUserDetail() {
         AppUser appLoginUser = SecurityUtils.getAppLoginUser();
         User user = userService.getById(appLoginUser.getUserId());
+        Company company = companyService.getOne(new LambdaQueryWrapper<Company>()
+                .eq(Company::getUserId, user.getUserId()));
         UserDetail userDetail = new UserDetail();
         BeanUtils.copyProperties(user, userDetail);
+        BeanUtils.copyProperties(company, userDetail);
         return R.ok(userDetail);
     }
 
@@ -79,6 +90,36 @@
     }
 
     /**
+     * 修改手机号
+     */
+    @PutMapping("/updatePhone")
+    @Operation(summary = "修改手机号",tags = {"企业端"})
+    public R<Void> updatePhone(@RequestBody UpdatePhone updatePhone) {
+        AppUser appLoginUser = SecurityUtils.getAppLoginUser();
+        User user = userService.getById(appLoginUser.getUserId());
+        if (!user.getPhone().equals(updatePhone.getOldPhone())) {
+            return R.fail("旧手机号错误");
+        }
+        String verifyKey = CacheConstants.PHONE_CODE_KEY + StringUtils.nvl(user.getPhone(), "");
+        String captcha = redisService.getCacheObject(verifyKey);
+        if (captcha == null) {
+            throw new CaptchaException("验证码已失效");
+        }
+        redisService.deleteObject(verifyKey);
+        if (!updatePhone.getCode().equalsIgnoreCase(captcha)) {
+            throw new CaptchaException("验证码错误");
+        }
+
+        String password = SecurityUtils.encryptPassword(updatePhone.getPassword());
+        if (!user.getPassword().equals(password)) {
+            return R.fail("密码错误");
+        }
+        user.setPhone(updatePhone.getNewPhone());
+        userService.updateById(user);
+        return R.ok();
+    }
+
+    /**
      * 修改密码
      */
     @PutMapping("/updatePassword")
@@ -86,8 +127,7 @@
     public R<Void> updatePassword(@RequestBody UpdatePassword updatePassword) {
         AppUser appLoginUser = SecurityUtils.getAppLoginUser();
         User user = userService.getById(appLoginUser.getUserId());
-        String oldPassword = SecurityUtils.encryptPassword(updatePassword.getOldPassword());
-        if (!user.getPassword().equals(oldPassword)) {
+        if (!SecurityUtils.matchesPassword(updatePassword.getOldPassword(), user.getPassword())) {
             return R.fail("旧密码错误");
         }
         if (!updatePassword.getNewPassword().equals(updatePassword.getConfirmPassword())){

--
Gitblit v1.7.1