From ee44a74a7f3674b1f019c823f3f459a2b08c8bd6 Mon Sep 17 00:00:00 2001
From: luodangjia <luodangjia>
Date: 星期一, 20 一月 2025 16:02:52 +0800
Subject: [PATCH] 1

---
 ruoyi-modules/ruoyi-company/src/main/java/com/ruoyi/company/service/UserService.java                                            |    4 
 ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/ServiceNameConstants.java                           |    5 
 ruoyi-modules/ruoyi-file/src/main/resources/bootstrap.yml                                                                       |    4 
 ruoyi-api/ruoyi-api-company/src/main/java/com/ruoyi/company/api/RemoteCompanyUserService.java                                   |   17 +
 ruoyi-modules/ruoyi-company/src/main/java/com/ruoyi/company/service/impl/CompanyServiceImpl.java                                |   11 
 pom.xml                                                                                                                         |    6 
 ruoyi-common/ruoyi-common-security/pom.xml                                                                                      |    5 
 ruoyi-common/ruoyi-common-swagger/src/main/java/com/ruoyi/common/swagger/config/SpringDocAutoConfiguration.java                 |   17 
 ruoyi-api/ruoyi-api-company/src/main/java/com/ruoyi/company/api/domain/Company.java                                             |   73 ++++
 ruoyi-api/ruoyi-api-company/pom.xml                                                                                             |   36 ++
 ruoyi-api/ruoyi-api-company/src/main/java/com/ruoyi/company/api/model/RegisterUser.java                                         |   86 +++++
 ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/aspect/SpringTxAspect.java                                   |  102 ++++++
 ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/config/ResourcesConfig.java                                               |   13 
 ruoyi-modules/ruoyi-system/pom.xml                                                                                              |   13 
 ruoyi-modules/ruoyi-company/src/main/java/com/ruoyi/company/controller/UserController.java                                      |   25 +
 ruoyi-api/ruoyi-api-company/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports |    1 
 ruoyi-modules/ruoyi-company/src/main/java/com/ruoyi/company/mapper/CompanyMapper.java                                           |    7 
 ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysLoginService.java                                                            |   57 ++
 ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/CacheConstants.java                                 |    5 
 ruoyi-gateway/src/main/resources/bootstrap.yml                                                                                  |    8 
 ruoyi-auth/pom.xml                                                                                                              |   12 
 ruoyi-modules/ruoyi-company/src/main/java/com/ruoyi/company/mapper/UserMapper.java                                              |    2 
 ruoyi-ui/vue.config.js                                                                                                          |    2 
 ruoyi-auth/src/main/resources/bootstrap.yml                                                                                     |    4 
 ruoyi-modules/ruoyi-company/src/main/java/com/ruoyi/company/utils/ObsUploadUtil.java                                            |   91 +++++
 ruoyi-api/ruoyi-api-company/src/main/java/com/ruoyi/company/api/domain/User.java                                                |   10 
 ruoyi-api/ruoyi-api-company/src/main/java/com/ruoyi/company/api/model/UserDetail.java                                           |   46 ++
 /dev/null                                                                                                                       |   38 --
 ruoyi-auth/src/main/java/com/ruoyi/auth/controller/TokenController.java                                                         |   46 ++
 ruoyi-api/ruoyi-api-company/src/main/java/com/ruoyi/company/api/factory/RemoteCompanyUserServiceFallbackFactory.java            |   26 +
 ruoyi-modules/ruoyi-company/pom.xml                                                                                             |    5 
 ruoyi-gateway/src/main/java/com/ruoyi/gateway/config/RouterFunctionConfiguration.java                                           |   69 +++
 ruoyi-modules/ruoyi-system/src/main/resources/bootstrap.yml                                                                     |    4 
 ruoyi-api/pom.xml                                                                                                               |    1 
 ruoyi-modules/ruoyi-company/src/main/java/com/ruoyi/company/service/CompanyService.java                                         |    7 
 ruoyi-modules/ruoyi-company/src/main/java/com/ruoyi/company/service/impl/UserServiceImpl.java                                   |   47 ++
 ruoyi-api/ruoyi-api-system/pom.xml                                                                                              |    5 
 ruoyi-modules/ruoyi-company/src/main/resources/bootstrap.yml                                                                    |    4 
 38 files changed, 825 insertions(+), 89 deletions(-)

diff --git a/pom.xml b/pom.xml
index 4ddb815..94822a2 100644
--- a/pom.xml
+++ b/pom.xml
@@ -282,6 +282,12 @@
                 <version>${ruoyi.version}</version>
             </dependency>
 
+            <dependency>
+                <groupId>com.ruoyi</groupId>
+                <artifactId>ruoyi-api-company</artifactId>
+                <version>${ruoyi.version}</version>
+            </dependency>
+
         </dependencies>
     </dependencyManagement>
 
diff --git a/ruoyi-api/pom.xml b/ruoyi-api/pom.xml
index d60796c..cfd9354 100644
--- a/ruoyi-api/pom.xml
+++ b/ruoyi-api/pom.xml
@@ -10,6 +10,7 @@
 
     <modules>
         <module>ruoyi-api-system</module>
+        <module>ruoyi-api-company</module>
     </modules>
 
     <artifactId>ruoyi-api</artifactId>
diff --git a/ruoyi-api/ruoyi-api-company/pom.xml b/ruoyi-api/ruoyi-api-company/pom.xml
new file mode 100644
index 0000000..c32bcc8
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-company/pom.xml
@@ -0,0 +1,36 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <groupId>com.ruoyi</groupId>
+        <artifactId>ruoyi-api</artifactId>
+        <version>3.6.5</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>ruoyi-api-company</artifactId>
+
+    <description>
+        ruoyi-api-company企业模块
+    </description>
+
+    <dependencies>
+
+        <!-- RuoYi Common Core-->
+        <dependency>
+            <groupId>com.ruoyi</groupId>
+            <artifactId>ruoyi-common-core</artifactId>
+        </dependency>
+
+        <!--lombok-->
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>com.ruoyi</groupId>
+            <artifactId>ruoyi-common-swagger</artifactId>
+        </dependency>
+
+    </dependencies>
+</project>
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
new file mode 100644
index 0000000..7f7221d
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-company/src/main/java/com/ruoyi/company/api/RemoteCompanyUserService.java
@@ -0,0 +1,17 @@
+package com.ruoyi.company.api;
+
+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.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;
+
+@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);
+}
diff --git a/ruoyi-api/ruoyi-api-company/src/main/java/com/ruoyi/company/api/domain/Company.java b/ruoyi-api/ruoyi-api-company/src/main/java/com/ruoyi/company/api/domain/Company.java
new file mode 100644
index 0000000..a0c113f
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-company/src/main/java/com/ruoyi/company/api/domain/Company.java
@@ -0,0 +1,73 @@
+package com.ruoyi.company.api.domain;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Data
+@TableName("t_company")
+public class Company {
+
+    /** 主键 */
+    @TableId
+    private Long id;
+
+    /** 公司名称 */
+    private String companyName;
+
+    /** 统一社会信用代码 */
+    private String socialCode;
+
+    /** 省份代码 */
+    private String provinceCode;
+
+    /** 城市代码 */
+    private String cityCode;
+
+    /** 区域代码 */
+    private String districtCode;
+
+    /** 经营地址 */
+    private String businessAddress;
+
+    /** 身份证正面照片 */
+    private String idCardFrontUrl;
+
+    /** 身份证反面照片 */
+    private String idCardBackUrl;
+
+    /** 法人姓名 */
+    private String legalPersonName;
+
+    /** 身份证号码 */
+    private String idCardNumber;
+
+    /** 营业执照照片 */
+    private String businessLicenseUrl;
+
+    /** 资质类目:1-再生资源回收备案资质 2-家电拆解资质 3-报废机动车回收拆解资质 4-危险废物经营许可证 0-其他证书 */
+    private Integer category;
+
+    /** 拆解企业资质证书图片地址 */
+    private String certificateUrl;
+
+    /** 联系人姓名 */
+    private String contactName;
+
+    /** 联系人手机号 */
+    private String contactPhone;
+
+    /** 联系人邮箱 */
+    private String email;
+
+    /** 创建时间 */
+    private LocalDateTime createTime;
+
+    /** 更新时间 */
+    private LocalDateTime updateTime;
+
+    /** 是否删除 */
+    private Boolean isDelete;
+}
diff --git a/ruoyi-modules/ruoyi-company/src/main/java/com/ruoyi/company/domain/User.java b/ruoyi-api/ruoyi-api-company/src/main/java/com/ruoyi/company/api/domain/User.java
similarity index 70%
rename from ruoyi-modules/ruoyi-company/src/main/java/com/ruoyi/company/domain/User.java
rename to ruoyi-api/ruoyi-api-company/src/main/java/com/ruoyi/company/api/domain/User.java
index f052baf..da29d4c 100644
--- a/ruoyi-modules/ruoyi-company/src/main/java/com/ruoyi/company/domain/User.java
+++ b/ruoyi-api/ruoyi-api-company/src/main/java/com/ruoyi/company/api/domain/User.java
@@ -1,4 +1,4 @@
-package com.ruoyi.company.domain;
+package com.ruoyi.company.api.domain;
 
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableLogic;
@@ -11,20 +11,28 @@
 @Data
 public class User {
     @TableId
+    /** 用户id */
     private Long userId;
 
+    /** 账号 */
     private String accountName;
 
+    /** 密码 */
     private String password;
 
+    /** 手机号 */
     private String phone;
 
+    /** 状态:1-激活 2-禁用 */
     private Integer status;
 
+    /** 创建时间 */
     private LocalDateTime createTime;
 
+    /** 更新时间 */
     private LocalDateTime updateTime;
 
+    /** 是否删除 */
     @TableLogic
     private Boolean isDelete;
 }
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
new file mode 100644
index 0000000..8c1b9e7
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-company/src/main/java/com/ruoyi/company/api/factory/RemoteCompanyUserServiceFallbackFactory.java
@@ -0,0 +1,26 @@
+package com.ruoyi.company.api.factory;
+
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.company.api.RemoteCompanyUserService;
+import com.ruoyi.company.api.model.RegisterUser;
+import lombok.extern.log4j.Log4j2;
+import org.springframework.cloud.openfeign.FallbackFactory;
+import org.springframework.stereotype.Component;
+import org.springframework.web.bind.annotation.PostMapping;
+
+@Component
+@Log4j2
+public class RemoteCompanyUserServiceFallbackFactory implements FallbackFactory<RemoteCompanyUserService> {
+    @Override
+    public RemoteCompanyUserService create(Throwable cause) {
+       log.error("企业服务远程调用失败:{}", cause.getMessage());
+        return new RemoteCompanyUserService() {
+
+            @PostMapping("/user/register")
+            @Override
+            public R<Boolean> registerUser(RegisterUser registerUser, String source) {
+                return R.fail("用户注册失败:"+cause.getMessage());
+            }
+        };
+    }
+}
diff --git a/ruoyi-api/ruoyi-api-company/src/main/java/com/ruoyi/company/api/model/RegisterUser.java b/ruoyi-api/ruoyi-api-company/src/main/java/com/ruoyi/company/api/model/RegisterUser.java
new file mode 100644
index 0000000..f40b755
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-company/src/main/java/com/ruoyi/company/api/model/RegisterUser.java
@@ -0,0 +1,86 @@
+package com.ruoyi.company.api.model;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+@Data
+
+public class RegisterUser {
+    @Schema(description = "账号名称")
+    private String accountName;
+
+    @Schema(description = "密码")
+    private String password;
+
+    @Schema(description = "手机号")
+    private String phone;
+
+    @Schema(description = "短信验证码")
+    private String smsCode;
+
+    /** 公司名称 */
+    @Schema(description = "公司名称")
+    private String companyName;
+
+    /** 统一社会信用代码 */
+    @Schema(description = "统一社会信用代码")
+    private String socialCode;
+
+    /** 省份代码 */
+    @Schema(description = "省份代码")
+    private String provinceCode;
+
+    /** 城市代码 */
+    @Schema(description = "城市代码")
+    private String cityCode;
+
+    /** 区域代码 */
+    @Schema(description = "区域代码")
+    private String districtCode;
+
+    /** 经营地址 */
+    @Schema(description = "经营地址")
+    private String businessAddress;
+
+    /** 身份证正面照片 */
+    @Schema(description = "身份证正面照片")
+    private String idCardFrontUrl;
+
+    /** 身份证反面照片 */
+    @Schema(description = "身份证反面照片")
+    private String idCardBackUrl;
+
+    /** 法人姓名 */
+    @Schema(description = "法人姓名")
+    private String legalPersonName;
+
+    /** 身份证号码 */
+    @Schema(description = "身份证号码")
+    private String idCardNumber;
+
+    /** 营业执照照片 */
+    @Schema(description = "营业执照照片")
+    private String businessLicenseUrl;
+
+    /** 资质类目:1-再生资源回收备案资质 2-家电拆解资质 3-报废机动车回收拆解资质 4-危险废物经营许可证 0-其他证书 */
+    @Schema(description = "资质类目:1-再生资源回收备案资质 2-家电拆解资质 3-报废机动车回收拆解资质 4-危险废物经营许可证 0-其他证书")
+    private Integer category;
+
+    /** 拆解企业资质证书图片地址 */
+    @Schema(description = "拆解企业资质证书图片地址")
+    private String certificateUrl;
+
+    /** 联系人姓名 */
+    @Schema(description = "联系人姓名")
+    private String contactName;
+
+    /** 联系人手机号 */
+    @Schema(description = "联系人手机号")
+    private String contactPhone;
+
+    /** 联系人邮箱 */
+    @Schema(description = "联系人邮箱")
+    private String email;
+
+
+}
diff --git a/ruoyi-api/ruoyi-api-company/src/main/java/com/ruoyi/company/api/model/UserDetail.java b/ruoyi-api/ruoyi-api-company/src/main/java/com/ruoyi/company/api/model/UserDetail.java
new file mode 100644
index 0000000..3e38675
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-company/src/main/java/com/ruoyi/company/api/model/UserDetail.java
@@ -0,0 +1,46 @@
+package com.ruoyi.company.api.model;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Data
+public class UserDetail {
+
+    private Long userId;
+
+    @Schema(description = "公司名称")
+    private String companyName;
+
+    /** 统一社会信用代码 */
+    private String socialCode;
+
+    /** 联系人姓名 */
+    private String contactName;
+
+    /** 联系人手机号 */
+    private String contactPhone;
+
+    /** 联系人邮箱 */
+    private String email;
+
+    /** 账号 */
+    private String accountName;
+
+    /** 用户名称 */
+    private String userName;
+
+    /** 注册时间 */
+    private LocalDateTime registerTime;
+
+    /** 绑定手机号 */
+    private String phone;
+
+    /** 账号ID */
+    private Long accountId;
+
+    /** 登录密码 */
+    private String password;
+
+}
diff --git a/ruoyi-api/ruoyi-api-company/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/ruoyi-api/ruoyi-api-company/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
new file mode 100644
index 0000000..859acba
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-company/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
@@ -0,0 +1 @@
+com.ruoyi.company.api.factory.RemoteCompanyUserServiceFallbackFactory
\ No newline at end of file
diff --git a/ruoyi-api/ruoyi-api-system/pom.xml b/ruoyi-api/ruoyi-api-system/pom.xml
index b9e9123..4f5d5a7 100644
--- a/ruoyi-api/ruoyi-api-system/pom.xml
+++ b/ruoyi-api/ruoyi-api-system/pom.xml
@@ -22,6 +22,11 @@
             <groupId>com.ruoyi</groupId>
             <artifactId>ruoyi-common-core</artifactId>
         </dependency>
+
+        <dependency>
+            <groupId>com.ruoyi</groupId>
+            <artifactId>ruoyi-common-swagger</artifactId>
+        </dependency>
         
     </dependencies>
 
diff --git a/ruoyi-auth/pom.xml b/ruoyi-auth/pom.xml
index 912b1c8..da69cb9 100644
--- a/ruoyi-auth/pom.xml
+++ b/ruoyi-auth/pom.xml
@@ -51,6 +51,18 @@
             <groupId>com.ruoyi</groupId>
             <artifactId>ruoyi-common-security</artifactId>
         </dependency>
+
+        <!--lombok-->
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+        </dependency>
+
+        <!-- RuoYi Common Swagger -->
+        <dependency>
+            <groupId>com.ruoyi</groupId>
+            <artifactId>ruoyi-common-swagger</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 9738e47..53e7f52 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,6 +1,12 @@
 package com.ruoyi.auth.controller;
 
 import javax.servlet.http.HttpServletRequest;
+
+import com.ruoyi.common.core.constant.CacheConstants;
+import com.ruoyi.common.core.constant.Constants;
+import com.ruoyi.common.redis.service.RedisService;
+import com.ruoyi.company.api.model.RegisterUser;
+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;
@@ -17,6 +23,8 @@
 import com.ruoyi.common.security.utils.SecurityUtils;
 import com.ruoyi.system.api.model.LoginUser;
 
+import java.util.concurrent.TimeUnit;
+
 /**
  * token 控制
  * 
@@ -30,6 +38,10 @@
 
     @Autowired
     private SysLoginService sysLoginService;
+
+
+    @Autowired
+    private RedisService redisService;
 
     @PostMapping("login")
     public R<?> login(@RequestBody LoginBody form)
@@ -68,11 +80,39 @@
         return R.ok();
     }
 
-    @PostMapping("register")
-    public R<?> register(@RequestBody RegisterBody registerBody)
+
+
+    @PostMapping("companyRegister")
+    @Operation(summary = "用户注册接口",description = "用户注册接口")
+    public R<?> companyRegister(@RequestBody RegisterUser registerUser)
     {
         // 用户注册
-        sysLoginService.register(registerBody.getUsername(), registerBody.getPassword());
+        sysLoginService.companyRegister(registerUser);
         return R.ok();
     }
+
+    /**
+     * 发送短信验证码
+     */
+    @PostMapping("sendSms")
+    public R<?> sendSms(@RequestBody RegisterUser registerUser)
+    {
+        // 验证码生成
+        String code = String.valueOf(Math.random()).substring(2, 6);
+        // 缓存验证码
+        String verifyKey = CacheConstants.CAPTCHA_CODE_KEY + registerUser.getPhone();
+        redisService.setCacheObject(verifyKey, code, Constants.CAPTCHA_EXPIRATION, TimeUnit.MINUTES);
+        // 发送验证码 TODO
+
+        return R.ok(code);
+    }
+
+    @PostMapping("companyLogin")
+    public R<?> companyLogin(@RequestBody RegisterUser registerUser)
+    {
+        // 用户登录
+        LoginUser userInfo = sysLoginService.login(registerUser.getPhone(), registerUser.getSmsCode());
+        // 获取登录token
+        return R.ok(tokenService.createToken(userInfo));
+    }
 }
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 ffd79e1..8a0b657 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
@@ -1,5 +1,11 @@
 package com.ruoyi.auth.service;
 
+import com.ruoyi.common.core.exception.CaptchaException;
+import com.ruoyi.common.security.annotation.RequiresPermissions;
+import com.ruoyi.company.api.RemoteCompanyUserService;
+import com.ruoyi.company.api.domain.User;
+import com.ruoyi.company.api.model.RegisterUser;
+import lombok.RequiredArgsConstructor;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 import com.ruoyi.common.core.constant.CacheConstants;
@@ -19,25 +25,25 @@
 import com.ruoyi.system.api.domain.SysUser;
 import com.ruoyi.system.api.model.LoginUser;
 
+import javax.annotation.Resource;
+import java.time.LocalDateTime;
+
 /**
  * 登录校验方法
  * 
  * @author ruoyi
  */
 @Component
+@RequiredArgsConstructor
 public class SysLoginService
 {
-    @Autowired
+    @Resource
     private RemoteUserService remoteUserService;
-
-    @Autowired
-    private SysPasswordService passwordService;
-
-    @Autowired
-    private SysRecordLogService recordLogService;
-
-    @Autowired
-    private RedisService redisService;
+    @Resource
+    private RemoteCompanyUserService remoteCompanyUserService;
+    private final SysPasswordService passwordService;
+    private final SysRecordLogService recordLogService;
+    private final RedisService redisService;
 
     /**
      * 登录
@@ -152,4 +158,35 @@
         }
         recordLogService.recordLogininfor(username, Constants.REGISTER, "注册成功");
     }
+
+    public void companyRegister(RegisterUser registerUser)
+    {
+        String accountName = registerUser.getAccountName();
+        String password = registerUser.getPassword();
+        // 用户名或密码为空 错误
+        if (StringUtils.isAnyBlank(accountName, password))
+        {
+            throw new ServiceException("用户/密码必须填写");
+        }
+        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("验证码错误");
+            }
+        }
+        remoteCompanyUserService.registerUser(registerUser, SecurityConstants.INNER);
+    }
+
+
+    public void companyLogin(RegisterUser registerUser)
+    {
+    }
 }
diff --git a/ruoyi-auth/src/main/resources/bootstrap.yml b/ruoyi-auth/src/main/resources/bootstrap.yml
index 43c2e63..574d331 100644
--- a/ruoyi-auth/src/main/resources/bootstrap.yml
+++ b/ruoyi-auth/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-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/aspect/SpringTxAspect.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/aspect/SpringTxAspect.java
new file mode 100644
index 0000000..089eb9c
--- /dev/null
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/aspect/SpringTxAspect.java
@@ -0,0 +1,102 @@
+package com.ruoyi.common.core.aspect;
+
+
+import org.aspectj.lang.annotation.Aspect;
+import org.springframework.aop.Advisor;
+import org.springframework.aop.aspectj.AspectJExpressionPointcut;
+import org.springframework.aop.support.DefaultPointcutAdvisor;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.transaction.PlatformTransactionManager;
+import org.springframework.transaction.TransactionDefinition;
+import org.springframework.transaction.interceptor.NameMatchTransactionAttributeSource;
+import org.springframework.transaction.interceptor.RollbackRuleAttribute;
+import org.springframework.transaction.interceptor.RuleBasedTransactionAttribute;
+import org.springframework.transaction.interceptor.TransactionInterceptor;
+
+import javax.annotation.Resource;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * 全局事务切面配置
+ */
+@Aspect
+@Configuration
+public class SpringTxAspect {
+
+    /**
+     * 切面,根据自己的项目定义不同的表达式execution
+     **/
+    private static final String AOP_POINTCUT_EXPRESSION = "execution(* com.ruoyi.*.service..*.*(..))";
+    @Resource
+    private PlatformTransactionManager transactionManager;
+
+    /**
+     * 增强(事务)的属性的配置
+     *
+     * @param
+     * @return TransactionInterceptor
+     * @title: txAdvice
+     * @author luofl 2025-1-20
+     * @Description: 配置
+     */
+    @SuppressWarnings({"unchecked", "rawtypes"})
+    @Bean
+    public TransactionInterceptor txAdvice() {
+        NameMatchTransactionAttributeSource txAttributeS = new NameMatchTransactionAttributeSource();
+        RuleBasedTransactionAttribute requiredAttr = new RuleBasedTransactionAttribute();
+        // PROPAGATION_REQUIRED:如果当前没有事务,就新建一个事务,如果已经存在一个事务中,加入到这个事务中
+        requiredAttr.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
+        // 抛出异常后执行切点回滚
+        requiredAttr.setRollbackRules(Collections.singletonList(new RollbackRuleAttribute(Exception.class)));
+        //
+        RuleBasedTransactionAttribute supportsAttr = new RuleBasedTransactionAttribute();
+        // PROPAGATION_SUPPORTS:支持当前事务,如果当前没有事务,就以非事务方式执行
+        supportsAttr.setPropagationBehavior(TransactionDefinition.PROPAGATION_SUPPORTS);
+        // 只读事务,不做更新操作
+        supportsAttr.setReadOnly(true);
+
+        // 注意:方法名称来自类匹配的到方法【save*, “*”表示匹配任意個字符】
+        Map txMethod = new HashMap();
+        txMethod.put("save*", requiredAttr);
+        txMethod.put("insert*", requiredAttr);
+        txMethod.put("add*", requiredAttr);
+        txMethod.put("update*", requiredAttr);
+        txMethod.put("modify*", requiredAttr);
+        txMethod.put("remove*", requiredAttr);
+        txMethod.put("delete*", requiredAttr);
+        txMethod.put("bind*", requiredAttr);
+        txMethod.put("unbind*", requiredAttr);
+        txMethod.put("create*", requiredAttr);
+        txMethod.put("change*", requiredAttr);
+        txMethod.put("register*", requiredAttr);
+        // readOnly = true
+        txMethod.put("select*", supportsAttr);
+        txMethod.put("get*", supportsAttr);
+        txMethod.put("find*", supportsAttr);
+        txMethod.put("query*", supportsAttr);
+        txMethod.put("read*", supportsAttr);
+        txMethod.put("check*", supportsAttr);
+        //
+        txAttributeS.setNameMap(txMethod);
+        TransactionInterceptor txAdvice = new TransactionInterceptor(transactionManager, txAttributeS);
+        return txAdvice;
+    }
+
+    /**
+     * AOP配置定义切面和切点的信息
+     *
+     * @return Advisor
+     * @title: txAdviceAdvisor
+     * @author luofl 2025-1-20
+     * @Description: AdvisorBean
+     */
+    @Bean
+    public Advisor txAdviceAdvisor() {
+        AspectJExpressionPointcut pointcut = new AspectJExpressionPointcut();
+        pointcut.setExpression(AOP_POINTCUT_EXPRESSION);
+        return new DefaultPointcutAdvisor(pointcut, txAdvice());
+    }
+}
\ No newline at end of file
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/CacheConstants.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/CacheConstants.java
index 1d2510e..ff161d4 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/CacheConstants.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/CacheConstants.java
@@ -38,6 +38,11 @@
     public static final String CAPTCHA_CODE_KEY = "captcha_codes:";
 
     /**
+     * 手机验证码 redis key
+     */
+    public static final String PHONE_CODE_KEY = "phone_codes:";
+
+    /**
      * 参数管理 cache key
      */
     public static final String SYS_CONFIG_KEY = "sys_config:";
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/ServiceNameConstants.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/ServiceNameConstants.java
index 421a322..33600e6 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/ServiceNameConstants.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/ServiceNameConstants.java
@@ -18,6 +18,11 @@
     public static final String SYSTEM_SERVICE = "ruoyi-system";
 
     /**
+     * 企业模块的serviceid
+     */
+    public static final String COMPANY_SERVICE = "ruoyi-company";
+
+    /**
      * 文件服务的serviceid
      */
     public static final String FILE_SERVICE = "ruoyi-file";
diff --git a/ruoyi-common/ruoyi-common-security/pom.xml b/ruoyi-common/ruoyi-common-security/pom.xml
index 487a130..fc15b5b 100644
--- a/ruoyi-common/ruoyi-common-security/pom.xml
+++ b/ruoyi-common/ruoyi-common-security/pom.xml
@@ -28,6 +28,11 @@
             <artifactId>ruoyi-api-system</artifactId>
         </dependency>
 
+        <dependency>
+            <groupId>com.ruoyi</groupId>
+            <artifactId>ruoyi-api-company</artifactId>
+        </dependency>
+
         <!-- RuoYi Common Redis-->
         <dependency>
             <groupId>com.ruoyi</groupId>
diff --git a/ruoyi-common/ruoyi-common-swagger/src/main/java/com/ruoyi/common/swagger/config/SpringDocAutoConfiguration.java b/ruoyi-common/ruoyi-common-swagger/src/main/java/com/ruoyi/common/swagger/config/SpringDocAutoConfiguration.java
index 77b6ee6..3fddaba 100644
--- a/ruoyi-common/ruoyi-common-swagger/src/main/java/com/ruoyi/common/swagger/config/SpringDocAutoConfiguration.java
+++ b/ruoyi-common/ruoyi-common-swagger/src/main/java/com/ruoyi/common/swagger/config/SpringDocAutoConfiguration.java
@@ -2,6 +2,9 @@
 
 import java.util.ArrayList;
 import java.util.List;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import io.swagger.v3.oas.annotations.responses.ApiResponse;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
 import org.springframework.boot.context.properties.EnableConfigurationProperties;
@@ -27,12 +30,13 @@
     @ConditionalOnMissingBean(OpenAPI.class)
     public OpenAPI openApi(SpringDocProperties properties)
     {
-        return new OpenAPI().components(new Components()
-            // 设置认证的请求头
-            .addSecuritySchemes("apikey", securityScheme()))
-            .addSecurityItem(new SecurityRequirement().addList("apikey"))
-            .info(convertInfo(properties.getInfo()))
-            .servers(servers(properties.getGatewayUrl()));
+        OpenAPI servers = new OpenAPI().components(new Components()
+                        // 设置认证的请求头
+                        .addSecuritySchemes("apikey", securityScheme()))
+                .addSecurityItem(new SecurityRequirement().addList("apikey"))
+                .info(convertInfo(properties.getInfo()))
+                .servers(servers(properties.getGatewayUrl()));
+        return servers;
     }
 
     public SecurityScheme securityScheme()
@@ -42,7 +46,6 @@
             .in(SecurityScheme.In.HEADER)
             .scheme("Bearer");
     }
-
     private Info convertInfo(SpringDocProperties.InfoProperties infoProperties)
     {
         Info info = new Info();
diff --git a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/config/RouterFunctionConfiguration.java b/ruoyi-gateway/src/main/java/com/ruoyi/gateway/config/RouterFunctionConfiguration.java
index db3c94e..72648bd 100644
--- a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/config/RouterFunctionConfiguration.java
+++ b/ruoyi-gateway/src/main/java/com/ruoyi/gateway/config/RouterFunctionConfiguration.java
@@ -1,13 +1,23 @@
 package com.ruoyi.gateway.config;
 
+import com.ruoyi.gateway.handler.ValidateCodeHandler;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.HttpStatus;
 import org.springframework.http.MediaType;
+import org.springframework.http.server.reactive.ServerHttpRequest;
+import org.springframework.http.server.reactive.ServerHttpResponse;
+import org.springframework.web.cors.reactive.CorsUtils;
 import org.springframework.web.reactive.function.server.RequestPredicates;
 import org.springframework.web.reactive.function.server.RouterFunction;
 import org.springframework.web.reactive.function.server.RouterFunctions;
-import com.ruoyi.gateway.handler.ValidateCodeHandler;
+import org.springframework.web.server.ServerWebExchange;
+import org.springframework.web.server.WebFilter;
+import org.springframework.web.server.WebFilterChain;
+import reactor.core.publisher.Mono;
 
 /**
  * 路由配置信息
@@ -15,17 +25,50 @@
  * @author ruoyi
  */
 @Configuration
-public class RouterFunctionConfiguration
-{
-    @Autowired
-    private ValidateCodeHandler validateCodeHandler;
+public class RouterFunctionConfiguration {
 
-    @SuppressWarnings("rawtypes")
-    @Bean
-    public RouterFunction routerFunction()
-    {
-        return RouterFunctions.route(
-                RequestPredicates.GET("/code").and(RequestPredicates.accept(MediaType.TEXT_PLAIN)),
-                validateCodeHandler);
-    }
+	/**
+	 * 这里为支持的请求头,如果有自定义的header字段请自己添加
+	 */
+	private static final String ALLOWED_HEADERS = "X-Requested-With, Content-Type, Authorization, credential, X-XSRF-TOKEN, token, username, client, request-origion, sign, nonce_str, timestamp";
+	private static final String ALLOWED_METHODS = "GET,POST,PUT,DELETE,OPTIONS,HEAD";
+	private static final String ALLOWED_ORIGIN = "*";
+	private static final String ALLOWED_EXPOSE = "*";
+	private static final String MAX_AGE = "18000L";
+
+	@Autowired
+	private ValidateCodeHandler validateCodeHandler;
+
+	@SuppressWarnings("rawtypes")
+	@Bean
+	public RouterFunction routerFunction() {
+		return RouterFunctions.route(
+				RequestPredicates.GET("/code").and(RequestPredicates.accept(MediaType.TEXT_PLAIN)),
+				validateCodeHandler);
+	}
+
+	/**
+	 * 跨域配置
+	 */
+	@Bean
+	public WebFilter corsFilter() {
+		return (ServerWebExchange ctx, WebFilterChain chain) -> {
+			ServerHttpRequest request = ctx.getRequest();
+			if (CorsUtils.isCorsRequest(request)) {
+				ServerHttpResponse response = ctx.getResponse();
+				HttpHeaders headers = response.getHeaders();
+				headers.add("Access-Control-Allow-Headers", ALLOWED_HEADERS);
+				headers.add("Access-Control-Allow-Methods", ALLOWED_METHODS);
+				headers.add("Access-Control-Allow-Origin", ALLOWED_ORIGIN);
+				headers.add("Access-Control-Expose-Headers", ALLOWED_EXPOSE);
+				headers.add("Access-Control-Max-Age", MAX_AGE);
+				headers.add("Access-Control-Allow-Credentials", "true");
+				if (request.getMethod() == HttpMethod.OPTIONS) {
+					response.setStatusCode(HttpStatus.OK);
+					return Mono.empty();
+				}
+			}
+			return chain.filter(ctx);
+		};
+	}
 }
diff --git a/ruoyi-gateway/src/main/resources/bootstrap.yml b/ruoyi-gateway/src/main/resources/bootstrap.yml
index 052f3d9..ed0993a 100644
--- a/ruoyi-gateway/src/main/resources/bootstrap.yml
+++ b/ruoyi-gateway/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
         # 共享配置
@@ -28,12 +28,12 @@
       eager: true
       transport:
         # 控制台地址
-        dashboard: 127.0.0.1:8718
+        dashboard: 192.168.110.111:8718
       # nacos配置持久化
       datasource:
         ds1:
           nacos:
-            server-addr: 127.0.0.1:8848
+            server-addr: 192.168.110.111:8848
             dataId: sentinel-ruoyi-gateway
             groupId: DEFAULT_GROUP
             data-type: json
diff --git a/ruoyi-modules/ruoyi-company/pom.xml b/ruoyi-modules/ruoyi-company/pom.xml
index 187c0a4..58dac60 100644
--- a/ruoyi-modules/ruoyi-company/pom.xml
+++ b/ruoyi-modules/ruoyi-company/pom.xml
@@ -83,6 +83,11 @@
       <artifactId>ruoyi-common-swagger</artifactId>
     </dependency>
 
+    <dependency>
+      <groupId>com.ruoyi</groupId>
+      <artifactId>ruoyi-api-company</artifactId>
+    </dependency>
+
   </dependencies>
 
   <build>
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 9ac4529..f6c8c92 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,9 +1,34 @@
 package com.ruoyi.company.controller;
 
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.security.utils.SecurityUtils;
+import com.ruoyi.company.api.domain.User;
+import com.ruoyi.company.api.model.RegisterUser;
+import com.ruoyi.company.api.model.UserDetail;
+import com.ruoyi.company.service.UserService;
+import io.swagger.v3.oas.annotations.Operation;
+import lombok.RequiredArgsConstructor;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.time.LocalDateTime;
+
 @RestController
 @RequestMapping("/user")
+@RequiredArgsConstructor
 public class UserController {
+    private final UserService userService;
+
+    @PostMapping("/register")
+    public R register(RegisterUser registerUser) {
+        userService.register(registerUser);
+        return R.ok();
+    }
+
+    @GetMapping("/getUserDetail")
+    public R<UserDetail> getUserDetail(Long userId) {
+        return R.ok(new UserDetail());
+    }
 }
diff --git a/ruoyi-modules/ruoyi-company/src/main/java/com/ruoyi/company/mapper/CompanyMapper.java b/ruoyi-modules/ruoyi-company/src/main/java/com/ruoyi/company/mapper/CompanyMapper.java
new file mode 100644
index 0000000..c781d60
--- /dev/null
+++ b/ruoyi-modules/ruoyi-company/src/main/java/com/ruoyi/company/mapper/CompanyMapper.java
@@ -0,0 +1,7 @@
+package com.ruoyi.company.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.company.api.domain.Company;
+
+public interface CompanyMapper extends BaseMapper<Company> {
+}
diff --git a/ruoyi-modules/ruoyi-company/src/main/java/com/ruoyi/company/mapper/UserMapper.java b/ruoyi-modules/ruoyi-company/src/main/java/com/ruoyi/company/mapper/UserMapper.java
index dac80cd..b58ad43 100644
--- a/ruoyi-modules/ruoyi-company/src/main/java/com/ruoyi/company/mapper/UserMapper.java
+++ b/ruoyi-modules/ruoyi-company/src/main/java/com/ruoyi/company/mapper/UserMapper.java
@@ -1,7 +1,7 @@
 package com.ruoyi.company.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.ruoyi.company.domain.User;
+import com.ruoyi.company.api.domain.User;
 
 public interface UserMapper extends BaseMapper<User> {
 }
diff --git a/ruoyi-modules/ruoyi-company/src/main/java/com/ruoyi/company/service/CompanyService.java b/ruoyi-modules/ruoyi-company/src/main/java/com/ruoyi/company/service/CompanyService.java
new file mode 100644
index 0000000..566af85
--- /dev/null
+++ b/ruoyi-modules/ruoyi-company/src/main/java/com/ruoyi/company/service/CompanyService.java
@@ -0,0 +1,7 @@
+package com.ruoyi.company.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.company.api.domain.Company;
+
+public interface CompanyService extends IService<Company> {
+}
diff --git a/ruoyi-modules/ruoyi-company/src/main/java/com/ruoyi/company/service/UserService.java b/ruoyi-modules/ruoyi-company/src/main/java/com/ruoyi/company/service/UserService.java
index 0becc3d..586e3eb 100644
--- a/ruoyi-modules/ruoyi-company/src/main/java/com/ruoyi/company/service/UserService.java
+++ b/ruoyi-modules/ruoyi-company/src/main/java/com/ruoyi/company/service/UserService.java
@@ -1,7 +1,9 @@
 package com.ruoyi.company.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
-import com.ruoyi.company.domain.User;
+import com.ruoyi.company.api.domain.User;
+import com.ruoyi.company.api.model.RegisterUser;
 
 public interface UserService extends IService<User> {
+    void register(RegisterUser registerUser);
 }
diff --git a/ruoyi-modules/ruoyi-company/src/main/java/com/ruoyi/company/service/impl/CompanyServiceImpl.java b/ruoyi-modules/ruoyi-company/src/main/java/com/ruoyi/company/service/impl/CompanyServiceImpl.java
new file mode 100644
index 0000000..8addf56
--- /dev/null
+++ b/ruoyi-modules/ruoyi-company/src/main/java/com/ruoyi/company/service/impl/CompanyServiceImpl.java
@@ -0,0 +1,11 @@
+package com.ruoyi.company.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.company.api.domain.Company;
+import com.ruoyi.company.mapper.CompanyMapper;
+import com.ruoyi.company.service.CompanyService;
+import org.springframework.stereotype.Service;
+
+@Service
+public class CompanyServiceImpl extends ServiceImpl<CompanyMapper, Company> implements CompanyService {
+}
diff --git a/ruoyi-modules/ruoyi-company/src/main/java/com/ruoyi/company/service/impl/UserServiceImpl.java b/ruoyi-modules/ruoyi-company/src/main/java/com/ruoyi/company/service/impl/UserServiceImpl.java
index 82e3ec4..947cf87 100644
--- a/ruoyi-modules/ruoyi-company/src/main/java/com/ruoyi/company/service/impl/UserServiceImpl.java
+++ b/ruoyi-modules/ruoyi-company/src/main/java/com/ruoyi/company/service/impl/UserServiceImpl.java
@@ -1,11 +1,56 @@
 package com.ruoyi.company.service.impl;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.ruoyi.company.domain.User;
+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.model.RegisterUser;
 import com.ruoyi.company.mapper.UserMapper;
+import com.ruoyi.company.service.CompanyService;
 import com.ruoyi.company.service.UserService;
+import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
 
+import java.time.LocalDateTime;
+
 @Service
+@RequiredArgsConstructor
 public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
+    private final CompanyService companyService;
+
+    @Override
+    public void register(RegisterUser registerUser) {
+        String accountName = registerUser.getAccountName();
+        String password = registerUser.getPassword();
+        User user = new User();
+        user.setAccountName(accountName);
+        user.setPassword(SecurityUtils.encryptPassword(password));
+        user.setPhone(registerUser.getPhone());
+        user.setStatus(1);
+        user.setCreateTime(LocalDateTime.now());
+        user.setUpdateTime(LocalDateTime.now());
+        user.setIsDelete(false);
+        this.save(user);
+        Company company = new Company();
+        company.setCompanyName(registerUser.getCompanyName());
+        company.setSocialCode(registerUser.getSocialCode());
+        company.setProvinceCode(registerUser.getProvinceCode());
+        company.setCityCode(registerUser.getCityCode());
+        company.setDistrictCode(registerUser.getDistrictCode());
+        company.setBusinessAddress(registerUser.getBusinessAddress());
+        company.setIdCardFrontUrl(registerUser.getIdCardFrontUrl());
+        company.setIdCardBackUrl(registerUser.getIdCardBackUrl());
+        company.setLegalPersonName(registerUser.getLegalPersonName());
+        company.setIdCardNumber(registerUser.getIdCardNumber());
+        company.setBusinessLicenseUrl(registerUser.getBusinessLicenseUrl());
+        company.setCategory(registerUser.getCategory());
+        company.setCertificateUrl(registerUser.getCertificateUrl());
+        company.setContactName(registerUser.getContactName());
+        company.setContactPhone(registerUser.getContactPhone());
+        company.setEmail(registerUser.getEmail());
+        company.setCreateTime(LocalDateTime.now());
+        company.setUpdateTime(LocalDateTime.now());
+        company.setIsDelete(false);
+        companyService.save(company);
+    }
 }
diff --git a/ruoyi-modules/ruoyi-company/src/main/java/com/ruoyi/company/utils/ObsUploadUtil.java b/ruoyi-modules/ruoyi-company/src/main/java/com/ruoyi/company/utils/ObsUploadUtil.java
new file mode 100644
index 0000000..184bad1
--- /dev/null
+++ b/ruoyi-modules/ruoyi-company/src/main/java/com/ruoyi/company/utils/ObsUploadUtil.java
@@ -0,0 +1,91 @@
+//package com.ruoyi.company.utils;
+//
+//import com.obs.services.ObsClient;
+//import com.obs.services.model.ObjectMetadata;
+//import com.obs.services.model.PutObjectResult;
+//import org.springframework.web.multipart.MultipartFile;
+//
+//import java.io.IOException;
+//import java.io.InputStream;
+//import java.util.UUID;
+//
+//public class ObsUploadUtil {
+//	//OBS图片访问域名
+//	public static String endPoint = "obs.cn-southwest-2.myhuaweicloud.com";
+//	public static String accessKeyId = "F95RSIZQ1B77MGRTPWSU";
+//	public static String accessKeySecret = "rMhmXnuDGPwI5ptq0jGCZ6QwaoUDQ5ZJm3RFrZuy";
+//	public static String bucketName = "qijishenghuiyuan";
+//	public static String oss_domain = "http://qijishenghuiyuan.obs.cn-southwest-2.myhuaweicloud.com/";
+//
+//
+//	// 创建ObsClient实例
+//	public static ObsClient obsClient = new ObsClient(accessKeyId, accessKeySecret, endPoint);
+//
+//	public static String obsUpload(MultipartFile file) throws IOException{
+//		String fileName = "";
+//		if(file!=null && !"".equals(file.getOriginalFilename()) && file.getOriginalFilename()!=null){
+//			InputStream content = file.getInputStream();//获得指定文件的输入流
+//			ObjectMetadata meta = new ObjectMetadata();// 创建上传Object的Metadata
+//			meta.setContentLength(file.getSize());  // 必须设置ContentLength
+//			String originalFilename = file.getOriginalFilename();
+//			fileName =  UUID.randomUUID().toString().replaceAll("-","") + originalFilename.subSequence(originalFilename.lastIndexOf("."), originalFilename.length());
+//			obsClient.putObject(bucketName,"admin/"+fileName,content,meta);
+//			if(fileName != null && !"".equals(fileName)){
+//				System.out.println(fileName);
+//				fileName = oss_domain+"admin/"+fileName;
+//			}
+//		}
+//		return fileName;
+//	}
+//
+//
+//
+//	public static String obsUpload(String suffix, InputStream content){
+//		String fileName =  UUID.randomUUID().toString().replaceAll("-","") + "." + suffix;
+//		try {
+//			PutObjectResult putObjectResult = obsClient.putObject(bucketName, "admin/" + fileName, content);
+//			String objectUrl = putObjectResult.getObjectUrl();
+//			return oss_domain+"admin/"+fileName;
+//		}catch (Exception e){
+//			e.printStackTrace();
+//		}
+//		return "";
+//	}
+//
+//
+//
+//	/**
+//	 * 删除某个Object
+//	 *
+//	 * @param bucketUrl
+//	 * @return
+//	 */
+//	public static boolean deleteObject(String bucketUrl) {
+//		try {
+//			bucketUrl=bucketUrl.replace(oss_domain+"web","");
+//			// 删除Object.
+//			obsClient.deleteObject(bucketName, bucketUrl);
+//		} catch (Exception e) {
+//			e.printStackTrace();
+//			return false;
+//		} finally {
+//			//ossClient.shutdown();
+//		}
+//		return true;
+//	}
+//
+////	 public static void createBucket(String bucketName)
+////     {
+////         //初始化 OSSClient
+//////          ossClient = new OssClient(endPoint, accessKeyId, accessKeySecret);
+////
+////         // 新建一个Bucket
+////         Bucket bucket = ossClient.createBucket(bucketName);
+////         System.out.println(bucket.getName());
+////         System.out.println(bucket.getCreationDate());
+////     }
+////
+////	 public static void main(String[] args) {
+////		 OssUploadUtil.createBucket("ssfdfsd");
+////	}
+//}
diff --git a/ruoyi-modules/ruoyi-company/src/main/resources/bootstrap.yml b/ruoyi-modules/ruoyi-company/src/main/resources/bootstrap.yml
index 6e07551..ddb5d57 100644
--- a/ruoyi-modules/ruoyi-company/src/main/resources/bootstrap.yml
+++ b/ruoyi-modules/ruoyi-company/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-company/src/test/java/com/ruoyi/AppTest.java b/ruoyi-modules/ruoyi-company/src/test/java/com/ruoyi/AppTest.java
deleted file mode 100644
index 5d55f51..0000000
--- a/ruoyi-modules/ruoyi-company/src/test/java/com/ruoyi/AppTest.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package com.ruoyi;
-
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-
-/**
- * Unit test for simple App.
- */
-public class AppTest 
-    extends TestCase
-{
-    /**
-     * Create the test case
-     *
-     * @param testName name of the test case
-     */
-    public AppTest( String testName )
-    {
-        super( testName );
-    }
-
-    /**
-     * @return the suite of tests being tested
-     */
-    public static Test suite()
-    {
-        return new TestSuite( AppTest.class );
-    }
-
-    /**
-     * Rigourous Test :-)
-     */
-    public void testApp()
-    {
-        assertTrue( true );
-    }
-}
diff --git a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/config/ResourcesConfig.java b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/config/ResourcesConfig.java
index 8003670..7ea9eed 100644
--- a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/config/ResourcesConfig.java
+++ b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/config/ResourcesConfig.java
@@ -2,7 +2,15 @@
 
 import java.io.File;
 import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.server.reactive.ServerHttpRequest;
+import org.springframework.http.server.reactive.ServerHttpResponse;
+import org.springframework.web.cors.CorsUtils;
+import org.springframework.web.server.ServerWebExchange;
+import org.springframework.web.server.WebFilter;
+import org.springframework.web.server.WebFilterChain;
 import org.springframework.web.servlet.config.annotation.CorsRegistry;
 import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
 import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@@ -45,6 +53,9 @@
                 // 设置允许跨域请求的域名
                 .allowedOrigins("*")
                 // 设置允许的方法
-                .allowedMethods("GET");
+                .allowedMethods("GET")
+                .allowedMethods("POST")
+                .allowedMethods("DELETE")
+                .allowedMethods("PUT");
     }
 }
\ No newline at end of file
diff --git a/ruoyi-modules/ruoyi-file/src/main/resources/bootstrap.yml b/ruoyi-modules/ruoyi-file/src/main/resources/bootstrap.yml
index c73fb0e..c11657c 100644
--- a/ruoyi-modules/ruoyi-file/src/main/resources/bootstrap.yml
+++ b/ruoyi-modules/ruoyi-file/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-system/pom.xml b/ruoyi-modules/ruoyi-system/pom.xml
index d4bffdc..31e4bac 100644
--- a/ruoyi-modules/ruoyi-system/pom.xml
+++ b/ruoyi-modules/ruoyi-system/pom.xml
@@ -71,6 +71,19 @@
             <artifactId>ruoyi-common-swagger</artifactId>
         </dependency>
 
+        <!-- Pagehelper -->
+        <dependency>
+            <groupId>com.github.pagehelper</groupId>
+            <artifactId>pagehelper-spring-boot-starter</artifactId>
+            <version>1.4.6</version> <!-- 使用最新版本 -->
+        </dependency>
+
+        <!-- mybatis-plus 增强CRUD -->
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>mybatis-plus-boot-starter</artifactId>
+        </dependency>
+
     </dependencies>
 
     <build>
diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/bootstrap.yml b/ruoyi-modules/ruoyi-system/src/main/resources/bootstrap.yml
index ca94b42..b170917 100644
--- a/ruoyi-modules/ruoyi-system/src/main/resources/bootstrap.yml
+++ b/ruoyi-modules/ruoyi-system/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 8afb50b..3451af1 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:8080`,
+        target: `http://localhost:9000`,
         changeOrigin: true,
         pathRewrite: {
           ['^' + process.env.VUE_APP_BASE_API]: ''

--
Gitblit v1.7.1