Skip to content

Commit d416221

Browse files
committed
refactor: Chat user model
1 parent b3698b3 commit d416221

File tree

2 files changed

+102
-0
lines changed

2 files changed

+102
-0
lines changed

apps/system_manage/models/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,4 @@
99
from .workspace_user_permission import *
1010
from .system_setting import *
1111
from .log_management import *
12+
from .chat_user import *
Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
# coding=utf-8
2+
"""
3+
@project: MaxKB
4+
@Author:虎虎
5+
@file: user.py
6+
@date:2025/4/14 10:20
7+
@desc:
8+
"""
9+
import uuid_utils.compat as uuid
10+
from django.db import models
11+
12+
from common.constants.permission_constants import Group
13+
14+
15+
class ChatUser(models.Model):
16+
id = models.UUIDField(primary_key=True, max_length=128, default=uuid.uuid7, editable=False, verbose_name="主键id")
17+
email = models.EmailField(null=True, blank=True, verbose_name="邮箱", db_index=True)
18+
phone = models.CharField(max_length=20, verbose_name="电话", default="")
19+
nick_name = models.CharField(max_length=150, verbose_name="昵称", unique=True, db_index=True)
20+
username = models.CharField(max_length=150, unique=True, verbose_name="用户名", db_index=True)
21+
password = models.CharField(max_length=150, verbose_name="密码")
22+
source = models.CharField(max_length=10, verbose_name="来源", default="LOCAL", db_index=True)
23+
is_active = models.BooleanField(default=True, db_index=True)
24+
create_time = models.DateTimeField(verbose_name="创建时间", auto_now_add=True, null=True, db_index=True)
25+
update_time = models.DateTimeField(verbose_name="修改时间", auto_now=True, null=True, db_index=True)
26+
27+
USERNAME_FIELD = 'username'
28+
REQUIRED_FIELDS = []
29+
30+
class Meta:
31+
db_table = "chat_user"
32+
33+
34+
class UserGroup(models.Model):
35+
id = models.CharField(primary_key=True, max_length=128, default=uuid.uuid7, editable=False, verbose_name="主键id")
36+
name = models.CharField(max_length=150, verbose_name="名称", unique=True, db_index=True)
37+
38+
class Meta:
39+
db_table = "user_group"
40+
41+
42+
class UserGroupRelation(models.Model):
43+
id = models.UUIDField(primary_key=True, max_length=128, default=uuid.uuid7, editable=False, verbose_name="主键id")
44+
user = models.ForeignKey(ChatUser, on_delete=models.CASCADE, verbose_name="用户")
45+
group = models.ForeignKey(UserGroup, on_delete=models.CASCADE, verbose_name="用户组")
46+
47+
class Meta:
48+
db_table = "user_group_relation"
49+
50+
51+
class ChatUserPlatformSource(models.Model):
52+
id = models.UUIDField(primary_key=True, max_length=128, default=uuid.uuid7, editable=False, verbose_name="主键id")
53+
auth_type = models.CharField(max_length=20, unique=True, db_index=True)
54+
config = models.JSONField()
55+
type = models.CharField(max_length=20, default="SSO", verbose_name="认证类型", db_index=True)
56+
is_active = models.BooleanField(default=True, verbose_name="是否开启", db_index=True)
57+
is_valid = models.BooleanField(default=True, verbose_name="是否有效", db_index=True)
58+
59+
class Meta:
60+
db_table = "chat_user_platform_source"
61+
62+
63+
class ResourceType(models.TextChoices):
64+
"""资源类型"""
65+
KNOWLEDGE = Group.KNOWLEDGE.value, '知识库'
66+
APPLICATION = Group.APPLICATION.value, '应用'
67+
68+
69+
class ResourceChatUserAuthorize(models.Model):
70+
"""
71+
资源对话用户授权表
72+
"""
73+
id = models.UUIDField(primary_key=True, max_length=128, default=uuid.uuid7, editable=False, verbose_name="主键id")
74+
workspace_id = models.CharField(max_length=64, verbose_name="工作空间id", default="default", db_index=True,
75+
null=True)
76+
user_group = models.ForeignKey(UserGroup, on_delete=models.CASCADE, verbose_name="用户组")
77+
user = models.ForeignKey(ChatUser, on_delete=models.CASCADE, verbose_name="用户")
78+
resource_id = models.UUIDField(max_length=128, verbose_name="资源id", db_index=True)
79+
resource_type = models.CharField(verbose_name="资源类型", choices=ResourceType.choices, db_index=True)
80+
is_auth = models.BooleanField(verbose_name="是否授权")
81+
82+
class Meta:
83+
db_table = "resource_chat_user_authorize"
84+
unique_together = ('user_group_id', 'resource_type', 'resource_id', 'user_id')
85+
86+
87+
class ResourceChatUserGroupAuthorize(models.Model):
88+
"""
89+
资源对话用户组授权表
90+
"""
91+
id = models.UUIDField(primary_key=True, max_length=128, default=uuid.uuid7, editable=False, verbose_name="主键id")
92+
workspace_id = models.CharField(max_length=64, verbose_name="工作空间id", default="default", db_index=True,
93+
null=True)
94+
user_group = models.ForeignKey(UserGroup, on_delete=models.CASCADE, verbose_name="用户组")
95+
resource_id = models.UUIDField(max_length=128, verbose_name="资源id", db_index=True)
96+
resource_type = models.CharField(verbose_name="资源类型", choices=ResourceType.choices, db_index=True)
97+
is_auth = models.BooleanField(verbose_name="是否授权")
98+
99+
class Meta:
100+
db_table = "resource_chat_user_group_authorize"
101+
unique_together = ('user_group_id', 'resource_type', 'resource_id')

0 commit comments

Comments
 (0)