From db031fc2032084032aeb29311b770e84c1e6ade8 Mon Sep 17 00:00:00 2001
From: luodangjia <luodangjia>
Date: 星期一, 20 一月 2025 18:05:44 +0800
Subject: [PATCH] 1

---
 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/model/AppUser.java                                     |   72 ++++++++++++++
 ruoyi-modules/ruoyi-company/src/main/java/com/ruoyi/company/controller/UserController.java                           |    9 +
 ruoyi-api/ruoyi-api-company/src/main/java/com/ruoyi/company/api/RemoteCompanyUserService.java                        |    8 +
 ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/SecurityConstants.java                   |    2 
 ruoyi-modules/ruoyi-gen/src/main/resources/bootstrap.yml                                                             |    4 
 ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysLoginService.java                                                 |   17 +++
 ruoyi-auth/pom.xml                                                                                                   |   15 +++
 ruoyi-ui/vue.config.js                                                                                               |    2 
 ruoyi-auth/src/main/java/com/ruoyi/auth/utils/SmsUtils.java                                                          |   36 +++++++
 pom.xml                                                                                                              |   18 +++
 ruoyi-auth/src/main/java/com/ruoyi/auth/controller/TokenController.java                                              |   56 ++++++++++-
 ruoyi-api/ruoyi-api-company/src/main/java/com/ruoyi/company/api/factory/RemoteCompanyUserServiceFallbackFactory.java |    6 +
 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/model/LoginUser.java                                   |    3 
 ruoyi-visual/ruoyi-monitor/src/main/resources/bootstrap.yml                                                          |    4 
 ruoyi-modules/ruoyi-job/src/main/resources/bootstrap.yml                                                             |    4 
 15 files changed, 239 insertions(+), 17 deletions(-)

diff --git a/pom.xml b/pom.xml
index 94822a2..92f26fb 100644
--- a/pom.xml
+++ b/pom.xml
@@ -288,6 +288,24 @@
                 <version>${ruoyi.version}</version>
             </dependency>
 
+            <dependency>
+                <groupId>com.aliyun</groupId>
+                <artifactId>dysmsapi20170525</artifactId>
+                <version>3.0.0</version>
+            </dependency>
+
+            <dependency>
+                <groupId>com.aliyun</groupId>
+                <artifactId>aliyun-java-sdk-core</artifactId>
+                <version>4.5.0</version>
+            </dependency>
+
+            <dependency>
+                <groupId>com.aliyun</groupId>
+                <artifactId>aliyun-java-sdk-dysmsapi</artifactId>
+                <version>2.1.0</version>
+            </dependency>
+
         </dependencies>
     </dependencyManagement>
 
diff --git a/ruoyi-api/ruoyi-api-company/src/main/java/com/ruoyi/company/api/RemoteCompanyUserService.java b/ruoyi-api/ruoyi-api-company/src/main/java/com/ruoyi/company/api/RemoteCompanyUserService.java
index 7f7221d..f8b68e0 100644
--- a/ruoyi-api/ruoyi-api-company/src/main/java/com/ruoyi/company/api/RemoteCompanyUserService.java
+++ b/ruoyi-api/ruoyi-api-company/src/main/java/com/ruoyi/company/api/RemoteCompanyUserService.java
@@ -3,15 +3,17 @@
 import com.ruoyi.common.core.constant.SecurityConstants;
 import com.ruoyi.common.core.constant.ServiceNameConstants;
 import com.ruoyi.common.core.domain.R;
+import com.ruoyi.company.api.domain.User;
 import com.ruoyi.company.api.factory.RemoteCompanyUserServiceFallbackFactory;
 import com.ruoyi.company.api.model.RegisterUser;
 import org.springframework.cloud.openfeign.FeignClient;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestHeader;
+import org.springframework.web.bind.annotation.*;
 
 @FeignClient(contextId = "remoteCompanyUserService", value = ServiceNameConstants.COMPANY_SERVICE, fallbackFactory = RemoteCompanyUserServiceFallbackFactory.class)
 public interface RemoteCompanyUserService {
     @PostMapping("/user/register")
     public R<Boolean> registerUser(@RequestBody RegisterUser registerUser, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
+
+    @GetMapping("/user/getUserByAccountName")
+    public R<User> getUserByAccountName(@RequestParam("accountName") String accountName, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
 }
diff --git a/ruoyi-api/ruoyi-api-company/src/main/java/com/ruoyi/company/api/factory/RemoteCompanyUserServiceFallbackFactory.java b/ruoyi-api/ruoyi-api-company/src/main/java/com/ruoyi/company/api/factory/RemoteCompanyUserServiceFallbackFactory.java
index 8c1b9e7..f8cb83d 100644
--- a/ruoyi-api/ruoyi-api-company/src/main/java/com/ruoyi/company/api/factory/RemoteCompanyUserServiceFallbackFactory.java
+++ b/ruoyi-api/ruoyi-api-company/src/main/java/com/ruoyi/company/api/factory/RemoteCompanyUserServiceFallbackFactory.java
@@ -2,6 +2,7 @@
 
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.company.api.RemoteCompanyUserService;
+import com.ruoyi.company.api.domain.User;
 import com.ruoyi.company.api.model.RegisterUser;
 import lombok.extern.log4j.Log4j2;
 import org.springframework.cloud.openfeign.FallbackFactory;
@@ -21,6 +22,11 @@
             public R<Boolean> registerUser(RegisterUser registerUser, String source) {
                 return R.fail("用户注册失败:"+cause.getMessage());
             }
+
+            @Override
+            public R<User> getUserByAccountName(String accountName, String source) {
+                return R.fail("获取用户信息失败:"+cause.getMessage());
+            }
         };
     }
 }
diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/model/AppUser.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/model/AppUser.java
new file mode 100644
index 0000000..706c123
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/model/AppUser.java
@@ -0,0 +1,72 @@
+package com.ruoyi.system.api.model;
+
+import java.time.LocalDateTime;
+
+public class AppUser {
+    private Long userId;
+
+    /**
+     * 用户唯一标识
+     */
+    private String token;
+
+    /** 账号 */
+    private String accountName;
+
+    /** 手机号 */
+    private String phone;
+
+    /** 状态:1-激活 2-禁用 */
+    private Integer status;
+
+    /** 创建时间 */
+    private LocalDateTime loginTime;
+
+    public Long getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Long userId) {
+        this.userId = userId;
+    }
+
+    public String getAccountName() {
+        return accountName;
+    }
+
+    public void setAccountName(String accountName) {
+        this.accountName = accountName;
+    }
+
+    public String getPhone() {
+        return phone;
+    }
+
+    public void setPhone(String phone) {
+        this.phone = phone;
+    }
+
+    public Integer getStatus() {
+        return status;
+    }
+
+    public void setStatus(Integer status) {
+        this.status = status;
+    }
+
+    public LocalDateTime getLoginTime() {
+        return loginTime;
+    }
+
+    public void setLoginTime(LocalDateTime loginTime) {
+        this.loginTime = loginTime;
+    }
+
+    public String getToken() {
+        return token;
+    }
+
+    public void setToken(String token) {
+        this.token = token;
+    }
+}
diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/model/LoginUser.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/model/LoginUser.java
index ef266a0..5babaac 100644
--- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/model/LoginUser.java
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/model/LoginUser.java
@@ -1,8 +1,9 @@
 package com.ruoyi.system.api.model;
 
+import com.ruoyi.system.api.domain.SysUser;
+
 import java.io.Serializable;
 import java.util.Set;
-import com.ruoyi.system.api.domain.SysUser;
 
 /**
  * 用户信息
diff --git a/ruoyi-auth/pom.xml b/ruoyi-auth/pom.xml
index da69cb9..e5763b8 100644
--- a/ruoyi-auth/pom.xml
+++ b/ruoyi-auth/pom.xml
@@ -63,6 +63,21 @@
             <groupId>com.ruoyi</groupId>
             <artifactId>ruoyi-common-swagger</artifactId>
         </dependency>
+
+        <dependency>
+            <groupId>com.aliyun</groupId>
+            <artifactId>dysmsapi20170525</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>com.aliyun</groupId>
+            <artifactId>aliyun-java-sdk-core</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>com.aliyun</groupId>
+            <artifactId>aliyun-java-sdk-dysmsapi</artifactId>
+        </dependency>
         
     </dependencies>
 	
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 53e7f52..149e560 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
@@ -2,10 +2,15 @@
 
 import javax.servlet.http.HttpServletRequest;
 
+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;
@@ -23,7 +28,12 @@
 import com.ruoyi.common.security.utils.SecurityUtils;
 import com.ruoyi.system.api.model.LoginUser;
 
+import java.time.LocalDateTime;
+import java.util.HashMap;
+import java.util.Map;
 import java.util.concurrent.TimeUnit;
+
+import static com.alibaba.nacos.api.common.Constants.ACCESS_TOKEN;
 
 /**
  * token 控制
@@ -91,6 +101,7 @@
         return R.ok();
     }
 
+
     /**
      * 发送短信验证码
      */
@@ -103,16 +114,51 @@
         String verifyKey = CacheConstants.CAPTCHA_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))
+        {
+            return R.fail("验证码发送失败");
+        }
         return R.ok(code);
     }
 
     @PostMapping("companyLogin")
-    public R<?> companyLogin(@RequestBody RegisterUser registerUser)
+    public R<Map<String, Object>> companyLogin(@RequestBody RegisterUser registerUser)
     {
         // 用户登录
-        LoginUser userInfo = sysLoginService.login(registerUser.getPhone(), registerUser.getSmsCode());
-        // 获取登录token
-        return R.ok(tokenService.createToken(userInfo));
+        User user = sysLoginService.companyLogin(registerUser);
+
+        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.setToken(token);
+
+        // 根据uuid将loginUser缓存
+        String userKey = getTokenKey(appUser.getToken());
+        redisService.setCacheObject(userKey, appUser, CacheConstants.EXPIRATION, TimeUnit.MINUTES);
+
+        // Jwt存储信息
+        Map<String, Object> claimsMap = new HashMap<String, Object>();
+        claimsMap.put(SecurityConstants.USER_KEY, token);
+        claimsMap.put(SecurityConstants.DETAILS_USER_ID, appUser.getUserId());
+        claimsMap.put(SecurityConstants.DETAILS_USERNAME, appUser.getAccountName());
+
+        // 接口返回信息
+        Map<String, Object> rspMap = new HashMap<String, Object>();
+        rspMap.put("access_token", JwtUtils.createToken(claimsMap));
+        rspMap.put("expires_in", CacheConstants.EXPIRATION);
+
+        return R.ok(rspMap);
     }
+
+
+    private String getTokenKey(String token)
+    {
+        return "login_tokens:" + token;
+    }
+
+
 }
diff --git a/ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysLoginService.java b/ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysLoginService.java
index 8a0b657..b237eba 100644
--- a/ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysLoginService.java
+++ b/ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysLoginService.java
@@ -6,6 +6,7 @@
 import com.ruoyi.company.api.domain.User;
 import com.ruoyi.company.api.model.RegisterUser;
 import lombok.RequiredArgsConstructor;
+import org.jacoco.agent.rt.internal_43f5073.core.internal.flow.IFrame;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 import com.ruoyi.common.core.constant.CacheConstants;
@@ -186,7 +187,21 @@
     }
 
 
-    public void companyLogin(RegisterUser registerUser)
+    public User companyLogin(RegisterUser registerUser)
     {
+        String accountName = registerUser.getAccountName();
+        String password = registerUser.getPassword();
+
+        R<User> r = remoteCompanyUserService.getUserByAccountName(accountName, SecurityConstants.INNER);
+        if (R.isError(r)){
+            throw new ServiceException(r.getMsg());
+        }
+        if (r.getData() == null){
+            throw new ServiceException("账号不存在");
+        }
+        if (!SecurityUtils.matchesPassword(r.getData().getPassword(), password)){
+            throw new ServiceException("密码错误");
+        }
+        return r.getData();
     }
 }
diff --git a/ruoyi-auth/src/main/java/com/ruoyi/auth/utils/SmsUtils.java b/ruoyi-auth/src/main/java/com/ruoyi/auth/utils/SmsUtils.java
new file mode 100644
index 0000000..7689e11
--- /dev/null
+++ b/ruoyi-auth/src/main/java/com/ruoyi/auth/utils/SmsUtils.java
@@ -0,0 +1,36 @@
+package com.ruoyi.auth.utils;
+
+import com.aliyuncs.DefaultAcsClient;
+import com.aliyuncs.IAcsClient;
+import com.aliyuncs.dysmsapi.model.v20170525.SendSmsRequest;
+import com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse;
+import com.aliyuncs.exceptions.ClientException;
+import com.aliyuncs.profile.DefaultProfile;
+
+public class SmsUtils {
+    public static String sendSms(String phoneNumber, String code) {
+        // 设置AccessKeyId、AccessKeySecret等信息
+        String accessKeyId = "LTAI5tFSeci96NRF6p6UN69G";
+        String accessKeySecret = "25t5zmWkueoQd81Zka70uPKRPgaMiV";
+
+        // 创建DefaultAcsClient实例并初始化
+        DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId, accessKeySecret);
+        IAcsClient client = new DefaultAcsClient(profile);
+
+        // 创建并设置请求
+        SendSmsRequest request = new SendSmsRequest();
+        request.setPhoneNumbers(phoneNumber); // 必填: 要发送到的手机号码
+        request.setSignName("供销云"); // 必填: 已经在阿里云上注册的短信签名
+        request.setTemplateCode("SMS_311235421"); // 必填: 已经在阿里云上注册的短信模板CODE
+        request.setTemplateParam("{\"code\":\""+code+"\"}"); // 必填: 短信模板的变量参数
+
+        try {
+            // 发送短信并打印结果
+            SendSmsResponse response = client.getAcsResponse(request);
+            return response.getCode();
+        } catch (ClientException e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+}
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/SecurityConstants.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/SecurityConstants.java
index c122e52..49f1ac3 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/SecurityConstants.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/SecurityConstants.java
@@ -16,6 +16,7 @@
      * 用户名字段
      */
     public static final String DETAILS_USERNAME = "username";
+    public static final String DETAILS_USERNAME2 = "username";
 
     /**
      * 授权信息字段
@@ -36,6 +37,7 @@
      * 用户标识
      */
     public static final String USER_KEY = "user_key";
+    public static final String APP_USER_KEY = "app_user_key";
 
     /**
      * 登录用户
diff --git a/ruoyi-modules/ruoyi-company/src/main/java/com/ruoyi/company/controller/UserController.java b/ruoyi-modules/ruoyi-company/src/main/java/com/ruoyi/company/controller/UserController.java
index f6c8c92..40a128d 100644
--- a/ruoyi-modules/ruoyi-company/src/main/java/com/ruoyi/company/controller/UserController.java
+++ b/ruoyi-modules/ruoyi-company/src/main/java/com/ruoyi/company/controller/UserController.java
@@ -1,6 +1,8 @@
 package com.ruoyi.company.controller;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.security.annotation.InnerAuth;
 import com.ruoyi.common.security.utils.SecurityUtils;
 import com.ruoyi.company.api.domain.User;
 import com.ruoyi.company.api.model.RegisterUser;
@@ -31,4 +33,11 @@
     public R<UserDetail> getUserDetail(Long userId) {
         return R.ok(new UserDetail());
     }
+
+    @GetMapping("/getUserByAccountName")
+    @InnerAuth
+    public R<User> getUserByAccountName(String accountName) {
+        return R.ok(userService.getOne(new LambdaQueryWrapper<User>()
+                .eq(User::getAccountName,accountName)));
+    }
 }
diff --git a/ruoyi-modules/ruoyi-gen/src/main/resources/bootstrap.yml b/ruoyi-modules/ruoyi-gen/src/main/resources/bootstrap.yml
index 64b9d91..8ca1ad7 100644
--- a/ruoyi-modules/ruoyi-gen/src/main/resources/bootstrap.yml
+++ b/ruoyi-modules/ruoyi-gen/src/main/resources/bootstrap.yml
@@ -14,10 +14,10 @@
     nacos:
       discovery:
         # 服务注册地址
-        server-addr: 127.0.0.1:8848
+        server-addr: 192.168.110.111:8848
       config:
         # 配置中心地址
-        server-addr: 127.0.0.1:8848
+        server-addr: 192.168.110.111:8848
         # 配置文件格式
         file-extension: yml
         # 共享配置
diff --git a/ruoyi-modules/ruoyi-job/src/main/resources/bootstrap.yml b/ruoyi-modules/ruoyi-job/src/main/resources/bootstrap.yml
index 817a429..2cc4b44 100644
--- a/ruoyi-modules/ruoyi-job/src/main/resources/bootstrap.yml
+++ b/ruoyi-modules/ruoyi-job/src/main/resources/bootstrap.yml
@@ -14,10 +14,10 @@
     nacos:
       discovery:
         # 服务注册地址
-        server-addr: 127.0.0.1:8848
+        server-addr: 192.168.110.111:8848
       config:
         # 配置中心地址
-        server-addr: 127.0.0.1:8848
+        server-addr: 192.168.110.111:8848
         # 配置文件格式
         file-extension: yml
         # 共享配置
diff --git a/ruoyi-ui/vue.config.js b/ruoyi-ui/vue.config.js
index 3451af1..a68ec25 100644
--- a/ruoyi-ui/vue.config.js
+++ b/ruoyi-ui/vue.config.js
@@ -36,7 +36,7 @@
     proxy: {
       // detail: https://cli.vuejs.org/config/#devserver-proxy
       [process.env.VUE_APP_BASE_API]: {
-        target: `http://localhost:9000`,
+        target: `http://192.168.110.80:9000`,
         changeOrigin: true,
         pathRewrite: {
           ['^' + process.env.VUE_APP_BASE_API]: ''
diff --git a/ruoyi-visual/ruoyi-monitor/src/main/resources/bootstrap.yml b/ruoyi-visual/ruoyi-monitor/src/main/resources/bootstrap.yml
index 5bef22c..3c90887 100644
--- a/ruoyi-visual/ruoyi-monitor/src/main/resources/bootstrap.yml
+++ b/ruoyi-visual/ruoyi-monitor/src/main/resources/bootstrap.yml
@@ -14,10 +14,10 @@
     nacos:
       discovery:
         # 服务注册地址
-        server-addr: 127.0.0.1:8848
+        server-addr: 192.168.110.111:8848
       config:
         # 配置中心地址
-        server-addr: 127.0.0.1:8848
+        server-addr: 192.168.110.111:8848
         # 配置文件格式
         file-extension: yml
         # 共享配置

--
Gitblit v1.7.1