| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- # coding=utf-8
- """
- @project: MaxKB
- @Author:虎虎
- @file: user.py
- @date:2025/4/14 10:20
- @desc:
- """
- import uuid_utils.compat as uuid
- from django.db import models
- from common.constants.permission_constants import Group
- class ChatUser(models.Model):
- id = models.UUIDField(primary_key=True, max_length=128, default=uuid.uuid7, editable=False, verbose_name="主键id")
- email = models.EmailField(null=True, blank=True, verbose_name="邮箱", db_index=True)
- phone = models.CharField(max_length=20, verbose_name="电话", default="")
- nick_name = models.CharField(max_length=150, verbose_name="昵称", unique=True, db_index=True)
- username = models.CharField(max_length=150, unique=True, verbose_name="用户名", db_index=True)
- password = models.CharField(max_length=150, verbose_name="密码")
- source = models.CharField(max_length=10, verbose_name="来源", default="LOCAL", db_index=True)
- is_active = models.BooleanField(default=True, db_index=True)
- create_time = models.DateTimeField(verbose_name="创建时间", auto_now_add=True, null=True, db_index=True)
- update_time = models.DateTimeField(verbose_name="修改时间", auto_now=True, null=True, db_index=True)
- USERNAME_FIELD = 'username'
- REQUIRED_FIELDS = []
- class Meta:
- db_table = "chat_user"
- class UserGroup(models.Model):
- id = models.CharField(primary_key=True, max_length=128, default=uuid.uuid7, editable=False, verbose_name="主键id")
- name = models.CharField(max_length=150, verbose_name="名称", unique=True, db_index=True)
- class Meta:
- db_table = "user_group"
- class UserGroupRelation(models.Model):
- id = models.UUIDField(primary_key=True, max_length=128, default=uuid.uuid7, editable=False, verbose_name="主键id")
- user = models.ForeignKey(ChatUser, on_delete=models.CASCADE, verbose_name="用户")
- group = models.ForeignKey(UserGroup, on_delete=models.CASCADE, verbose_name="用户组")
- class Meta:
- db_table = "user_group_relation"
- class ResourceType(models.TextChoices):
- """资源类型"""
- KNOWLEDGE = Group.KNOWLEDGE.value, '知识库'
- APPLICATION = Group.APPLICATION.value, '应用'
- class ResourceChatUserAuthorize(models.Model):
- """
- 资源对话用户授权表
- """
- id = models.UUIDField(primary_key=True, max_length=128, default=uuid.uuid7, editable=False, verbose_name="主键id")
- workspace_id = models.CharField(max_length=64, verbose_name="工作空间id", default="default", db_index=True,
- null=True)
- user_group = models.ForeignKey(UserGroup, on_delete=models.CASCADE, verbose_name="用户组")
- user = models.ForeignKey(ChatUser, on_delete=models.CASCADE, verbose_name="用户")
- resource_id = models.UUIDField(max_length=128, verbose_name="资源id", db_index=True)
- resource_type = models.CharField(verbose_name="资源类型", choices=ResourceType.choices, db_index=True)
- is_auth = models.BooleanField(verbose_name="是否授权")
- class Meta:
- db_table = "resource_chat_user_authorize"
- unique_together = ('user_group_id', 'resource_type', 'resource_id', 'user_id')
- class ResourceChatUserGroupAuthorize(models.Model):
- """
- 资源对话用户组授权表
- """
- id = models.UUIDField(primary_key=True, max_length=128, default=uuid.uuid7, editable=False, verbose_name="主键id")
- workspace_id = models.CharField(max_length=64, verbose_name="工作空间id", default="default", db_index=True,
- null=True)
- user_group = models.ForeignKey(UserGroup, on_delete=models.CASCADE, verbose_name="用户组")
- resource_id = models.UUIDField(max_length=128, verbose_name="资源id", db_index=True)
- resource_type = models.CharField(verbose_name="资源类型", choices=ResourceType.choices, db_index=True)
- is_auth = models.BooleanField(verbose_name="是否授权")
- class Meta:
- db_table = "resource_chat_user_group_authorize"
- unique_together = ('user_group_id', 'resource_type', 'resource_id')
|