diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserInviteController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserInviteController.java
new file mode 100644
index 0000000..eb22abd
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserInviteController.java
@@ -0,0 +1,36 @@
+package com.ruoyi.web.controller.system;
+
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.system.domain.SysUserInvite;
+import com.ruoyi.system.service.ISysUserInviteService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+@RestController
+@RequestMapping("/system/user/invite")
+public class SysUserInviteController extends BaseController {
+    @Autowired
+    private ISysUserInviteService inviteService;
+
+    @PreAuthorize("@ss.hasPermi('system:user:invite:query')")
+    @GetMapping("/code")
+    public AjaxResult getInviteCode() {
+        SysUserInvite invite = inviteService.getInviteCode(getUserId());
+        if (invite == null) {
+            return AjaxResult.error("未找到邀请码");
+        }
+        return AjaxResult.success(invite.getCode());
+    }
+
+    @PreAuthorize("@ss.hasPermi('system:user:invite:query')")
+    @GetMapping("/user/{code}")
+    public AjaxResult getUserByInviteCode(@PathVariable String code) {
+        SysUserInvite invite = inviteService.getUserByInviteCode(code);
+        if (invite == null) {
+            return AjaxResult.error("邀请码不存在");
+        }
+        return AjaxResult.success(invite.getUserId());
+    }
+}
\ No newline at end of file
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysUserInvite.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysUserInvite.java
new file mode 100644
index 0000000..3432587
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysUserInvite.java
@@ -0,0 +1,15 @@
+package com.ruoyi.system.domain;
+
+import com.ruoyi.common.core.domain.BaseEntity;
+import lombok.Data;
+
+@Data
+public class SysUserInvite extends BaseEntity {
+    private static final long serialVersionUID = 1L;
+
+    private Long codeId;
+
+    private String code;
+
+    private Long userId;
+}
\ No newline at end of file
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserInviteMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserInviteMapper.java
new file mode 100644
index 0000000..b0239ca
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserInviteMapper.java
@@ -0,0 +1,8 @@
+package com.ruoyi.system.mapper;
+
+import com.ruoyi.system.domain.SysUserInvite;
+
+public interface SysUserInviteMapper {
+    SysUserInvite selectInviteByUserId(Long userId);
+    SysUserInvite selectInviteByCode(String code);
+}
\ No newline at end of file
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserInviteService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserInviteService.java
new file mode 100644
index 0000000..d5b04f4
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserInviteService.java
@@ -0,0 +1,8 @@
+package com.ruoyi.system.service;
+
+import com.ruoyi.system.domain.SysUserInvite;
+
+public interface ISysUserInviteService {
+    SysUserInvite getInviteCode(Long userId);
+    SysUserInvite getUserByInviteCode(String code);
+}
\ No newline at end of file
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserInviteServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserInviteServiceImpl.java
new file mode 100644
index 0000000..e499a5a
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserInviteServiceImpl.java
@@ -0,0 +1,23 @@
+package com.ruoyi.system.service.impl;
+
+import com.ruoyi.system.domain.SysUserInvite;
+import com.ruoyi.system.mapper.SysUserInviteMapper;
+import com.ruoyi.system.service.ISysUserInviteService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class SysUserInviteServiceImpl implements ISysUserInviteService {
+    @Autowired
+    private SysUserInviteMapper inviteMapper;
+
+    @Override
+    public SysUserInvite getInviteCode(Long userId) {
+        return inviteMapper.selectInviteByUserId(userId);
+    }
+
+    @Override
+    public SysUserInvite getUserByInviteCode(String code) {
+        return inviteMapper.selectInviteByCode(code);
+    }
+}
\ No newline at end of file
diff --git a/ruoyi-system/src/main/resources/mapper/system/SysUserInviteMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysUserInviteMapper.xml
new file mode 100644
index 0000000..82da470
--- /dev/null
+++ b/ruoyi-system/src/main/resources/mapper/system/SysUserInviteMapper.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.system.mapper.SysUserInviteMapper">
+    <resultMap id="SysUserInviteMap" type="com.ruoyi.system.domain.SysUserInvite">
+        <id property="codeId" column="code_id"/>
+        <result property="code" column="code"/>
+        <result property="userId" column="user_id"/>
+    </resultMap>
+
+    <select id="selectInviteByUserId" resultMap="SysUserInviteMap">
+        select code_id, code, user_id
+        from invite_codes
+        where user_id = #{userId}
+    </select>
+
+    <select id="selectInviteByCode" resultMap="SysUserInviteMap">
+        select code_id, code, user_id
+        from invite_codes
+        where code = #{code}
+    </select>
+</mapper>
\ No newline at end of file
