# Generated by Django 5.2.1 on 2025-07-03 02:43 import django.contrib.auth.models import django.contrib.auth.validators import django.db.models.deletion import django.utils.timezone import utils.utils from django.db import migrations, models class Migration(migrations.Migration): initial = True dependencies = [ ("auth", "0012_alter_user_first_name_max_length"), ] operations = [ migrations.CreateModel( name="DictType", fields=[ ( "id", models.BigAutoField( auto_created=True, primary_key=True, serialize=False, verbose_name="ID", ), ), ( "remark", models.CharField( blank=True, db_comment="备注", help_text="备注", max_length=256, null=True, ), ), ( "creator", models.CharField( blank=True, db_comment="创建人", help_text="创建人", max_length=64, null=True, ), ), ( "modifier", models.CharField( blank=True, db_comment="修改人", help_text="修改人", max_length=64, null=True, ), ), ( "update_time", models.DateTimeField( auto_now=True, db_comment="修改时间", help_text="修改时间", null=True, ), ), ( "create_time", models.DateTimeField( auto_now_add=True, db_comment="创建时间", help_text="创建时间", null=True, ), ), ( "is_deleted", models.BooleanField(db_comment="是否软删除", default=False), ), ( "name", models.CharField( default="", max_length=100, verbose_name="字典名称" ), ), ( "type", models.CharField( db_index=True, default="", max_length=100, verbose_name="字典类型", ), ), ( "status", models.IntegerField( choices=[(0, "禁用"), (1, "启用")], default=1, verbose_name="状态", ), ), ( "deleted_time", models.DateTimeField( blank=True, null=True, verbose_name="删除时间" ), ), ], options={ "verbose_name": "字典类型", "verbose_name_plural": "字典类型", "db_table": "system_dict_type", "ordering": ["-id"], }, ), migrations.CreateModel( name="LoginLog", fields=[ ( "id", models.BigAutoField( auto_created=True, primary_key=True, serialize=False, verbose_name="ID", ), ), ( "remark", models.CharField( blank=True, db_comment="备注", help_text="备注", max_length=256, null=True, ), ), ( "creator", models.CharField( blank=True, db_comment="创建人", help_text="创建人", max_length=64, null=True, ), ), ( "modifier", models.CharField( blank=True, db_comment="修改人", help_text="修改人", max_length=64, null=True, ), ), ( "update_time", models.DateTimeField( auto_now=True, db_comment="修改时间", help_text="修改时间", null=True, ), ), ( "create_time", models.DateTimeField( auto_now_add=True, db_comment="创建时间", help_text="创建时间", null=True, ), ), ( "is_deleted", models.BooleanField(db_comment="是否软删除", default=False), ), ( "username", models.CharField(db_comment="用户账号", default="", max_length=50), ), ( "result", models.IntegerField( choices=[(0, "失败"), (1, "成功")], db_comment="登录结果", default=1, ), ), ("user_ip", models.CharField(db_comment="用户 IP", max_length=50)), ( "user_agent", models.CharField(db_comment="浏览器 UA", max_length=512), ), ], options={ "verbose_name": "系统访问记录", "verbose_name_plural": "系统访问记录", "db_table": "system_login_log", "ordering": ["-id"], }, ), migrations.CreateModel( name="MenuMeta", fields=[ ( "id", models.BigAutoField( auto_created=True, primary_key=True, serialize=False, verbose_name="ID", ), ), ( "remark", models.CharField( blank=True, db_comment="备注", help_text="备注", max_length=256, null=True, ), ), ( "creator", models.CharField( blank=True, db_comment="创建人", help_text="创建人", max_length=64, null=True, ), ), ( "modifier", models.CharField( blank=True, db_comment="修改人", help_text="修改人", max_length=64, null=True, ), ), ( "update_time", models.DateTimeField( auto_now=True, db_comment="修改时间", help_text="修改时间", null=True, ), ), ( "create_time", models.DateTimeField( auto_now_add=True, db_comment="创建时间", help_text="创建时间", null=True, ), ), ( "is_deleted", models.BooleanField(db_comment="是否软删除", default=False), ), ("title", models.CharField(db_comment="标题", max_length=200)), ( "icon", models.CharField(blank=True, db_comment="图标", max_length=100), ), ("sort", models.IntegerField(db_comment="排序", default=0)), ( "affix_tab", models.BooleanField(db_comment="固定标签页", default=False), ), ( "badge", models.CharField(blank=True, db_comment="徽章文本", max_length=50), ), ( "badge_type", models.CharField(blank=True, db_comment="徽章类型", max_length=20), ), ( "badge_variants", models.CharField(blank=True, db_comment="徽章样式", max_length=20), ), ("iframe_src", models.URLField(blank=True, db_comment="内嵌页面URL")), ("link", models.URLField(blank=True, db_comment="外部链接")), ( "hide_in_menu", models.BooleanField(db_comment="隐藏菜单", default=False), ), ( "hide_children_in_menu", models.BooleanField(db_comment="隐藏子菜单", default=False), ), ], options={ "verbose_name": "菜单元数据", "verbose_name_plural": "菜单元数据", "db_table": "system_menu_meta", }, ), migrations.CreateModel( name="Post", fields=[ ( "id", models.BigAutoField( auto_created=True, primary_key=True, serialize=False, verbose_name="ID", ), ), ( "remark", models.CharField( blank=True, db_comment="备注", help_text="备注", max_length=256, null=True, ), ), ( "creator", models.CharField( blank=True, db_comment="创建人", help_text="创建人", max_length=64, null=True, ), ), ( "modifier", models.CharField( blank=True, db_comment="修改人", help_text="修改人", max_length=64, null=True, ), ), ( "update_time", models.DateTimeField( auto_now=True, db_comment="修改时间", help_text="修改时间", null=True, ), ), ( "create_time", models.DateTimeField( auto_now_add=True, db_comment="创建时间", help_text="创建时间", null=True, ), ), ( "is_deleted", models.BooleanField(db_comment="是否软删除", default=False), ), ("code", models.CharField(db_comment="岗位编码", max_length=64)), ("name", models.CharField(db_comment="岗位名称", max_length=50)), ("sort", models.IntegerField(db_comment="显示顺序", default=0)), ( "status", models.IntegerField( choices=[(0, "禁用"), (1, "启用")], default=1, verbose_name="状态", ), ), ], options={ "verbose_name": "岗位信息表", "verbose_name_plural": "岗位信息表", "db_table": "system_post", }, ), migrations.CreateModel( name="Role", fields=[ ( "id", models.BigAutoField( auto_created=True, primary_key=True, serialize=False, verbose_name="ID", ), ), ( "creator", models.CharField( blank=True, db_comment="创建人", help_text="创建人", max_length=64, null=True, ), ), ( "modifier", models.CharField( blank=True, db_comment="修改人", help_text="修改人", max_length=64, null=True, ), ), ( "update_time", models.DateTimeField( auto_now=True, db_comment="修改时间", help_text="修改时间", null=True, ), ), ( "create_time", models.DateTimeField( auto_now_add=True, db_comment="创建时间", help_text="创建时间", null=True, ), ), ( "is_deleted", models.BooleanField(db_comment="是否软删除", default=False), ), ("name", models.CharField(max_length=100, verbose_name="角色名称")), ( "status", models.IntegerField( choices=[(0, "禁用"), (1, "启用")], default=1, verbose_name="角色状态", ), ), ( "sort", models.IntegerField( default=0, help_text="数值越小越靠前", verbose_name="显示排序" ), ), ("remark", models.TextField(blank=True, verbose_name="备注")), ], options={ "verbose_name": "角色管理", "verbose_name_plural": "角色管理", "ordering": ["-create_time"], }, ), migrations.CreateModel( name="Dept", fields=[ ( "id", models.BigAutoField( auto_created=True, primary_key=True, serialize=False, verbose_name="ID", ), ), ( "creator", models.CharField( blank=True, db_comment="创建人", help_text="创建人", max_length=64, null=True, ), ), ( "modifier", models.CharField( blank=True, db_comment="修改人", help_text="修改人", max_length=64, null=True, ), ), ( "update_time", models.DateTimeField( auto_now=True, db_comment="修改时间", help_text="修改时间", null=True, ), ), ( "is_deleted", models.BooleanField(db_comment="是否软删除", default=False), ), ("name", models.CharField(max_length=100, verbose_name="部门名称")), ( "status", models.SmallIntegerField( choices=[(0, "禁用"), (1, "启用")], default=0, verbose_name="部门状态", ), ), ( "create_time", models.DateTimeField(auto_now_add=True, verbose_name="创建时间"), ), ( "sort", models.IntegerField( default=0, help_text="数值越小越靠前", verbose_name="显示排序" ), ), ( "leader", models.CharField( blank=True, max_length=20, null=True, verbose_name="负责人" ), ), ( "phone", models.CharField( blank=True, max_length=20, null=True, verbose_name="联系电话" ), ), ( "email", models.EmailField( blank=True, max_length=254, null=True, verbose_name="邮箱" ), ), ("remark", models.TextField(blank=True, verbose_name="备注")), ( "pid", models.ForeignKey( blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name="children", to="system.dept", verbose_name="父部门 ID", ), ), ], options={ "verbose_name": "部门管理", "verbose_name_plural": "部门管理", "ordering": ["-create_time"], }, ), migrations.CreateModel( name="DictData", fields=[ ( "id", models.BigAutoField( auto_created=True, primary_key=True, serialize=False, verbose_name="ID", ), ), ( "remark", models.CharField( blank=True, db_comment="备注", help_text="备注", max_length=256, null=True, ), ), ( "creator", models.CharField( blank=True, db_comment="创建人", help_text="创建人", max_length=64, null=True, ), ), ( "modifier", models.CharField( blank=True, db_comment="修改人", help_text="修改人", max_length=64, null=True, ), ), ( "update_time", models.DateTimeField( auto_now=True, db_comment="修改时间", help_text="修改时间", null=True, ), ), ( "create_time", models.DateTimeField( auto_now_add=True, db_comment="创建时间", help_text="创建时间", null=True, ), ), ( "is_deleted", models.BooleanField(db_comment="是否软删除", default=False), ), ("sort", models.IntegerField(default=0, verbose_name="字典排序")), ( "label", models.CharField( default="", max_length=100, verbose_name="字典标签" ), ), ( "value", models.CharField( default="", max_length=100, verbose_name="字典键值" ), ), ( "status", models.IntegerField( choices=[(0, "禁用"), (1, "启用")], default=1, verbose_name="状态", ), ), ( "color_type", models.CharField( blank=True, default="", max_length=100, verbose_name="颜色类型" ), ), ( "css_class", models.CharField( blank=True, default="", max_length=100, verbose_name="css 样式" ), ), ( "dict_type", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name="dict_data", to="system.dicttype", verbose_name="字典类型", ), ), ], options={ "verbose_name": "字典数据", "verbose_name_plural": "字典数据", "db_table": "system_dict_data", "ordering": ["sort", "id"], }, ), migrations.CreateModel( name="Menu", fields=[ ( "id", models.BigAutoField( auto_created=True, primary_key=True, serialize=False, verbose_name="ID", ), ), ( "remark", models.CharField( blank=True, db_comment="备注", help_text="备注", max_length=256, null=True, ), ), ( "creator", models.CharField( blank=True, db_comment="创建人", help_text="创建人", max_length=64, null=True, ), ), ( "modifier", models.CharField( blank=True, db_comment="修改人", help_text="修改人", max_length=64, null=True, ), ), ( "update_time", models.DateTimeField( auto_now=True, db_comment="修改时间", help_text="修改时间", null=True, ), ), ( "create_time", models.DateTimeField( auto_now_add=True, db_comment="创建时间", help_text="创建时间", null=True, ), ), ( "is_deleted", models.BooleanField(db_comment="是否软删除", default=False), ), ("name", models.CharField(max_length=100, verbose_name="菜单名称")), ( "status", models.IntegerField( choices=[(0, "禁用"), (1, "启用")], default=1, verbose_name="状态", ), ), ( "type", models.CharField( choices=[ ("catalog", "目录"), ("menu", "菜单"), ("button", "按钮"), ("embedded", "内嵌页面"), ("link", "外部链接"), ], max_length=20, verbose_name="菜单类型", ), ), ( "sort", models.IntegerField( default=0, help_text="数值越小越靠前", verbose_name="显示排序" ), ), ( "path", models.CharField( blank=True, max_length=200, verbose_name="路由路径" ), ), ( "component", models.CharField( blank=True, max_length=200, verbose_name="组件路径" ), ), ( "auth_code", models.CharField( blank=True, max_length=100, verbose_name="权限编码" ), ), ( "pid", models.ForeignKey( blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="children", to="system.menu", verbose_name="父菜单", ), ), ( "meta", models.OneToOneField( on_delete=django.db.models.deletion.CASCADE, to="system.menumeta", verbose_name="元数据", ), ), ], options={ "verbose_name": "菜单", "verbose_name_plural": "菜单管理", "ordering": ["meta__sort", "id"], }, ), migrations.CreateModel( name="User", fields=[ ( "id", models.BigAutoField( auto_created=True, primary_key=True, serialize=False, verbose_name="ID", ), ), ("password", models.CharField(max_length=128, verbose_name="password")), ( "last_login", models.DateTimeField( blank=True, null=True, verbose_name="last login" ), ), ( "is_superuser", models.BooleanField( default=False, help_text="Designates that this user has all permissions without explicitly assigning them.", verbose_name="superuser status", ), ), ( "username", models.CharField( error_messages={ "unique": "A user with that username already exists." }, help_text="Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.", max_length=150, unique=True, validators=[ django.contrib.auth.validators.UnicodeUsernameValidator() ], verbose_name="username", ), ), ( "first_name", models.CharField( blank=True, max_length=150, verbose_name="first name" ), ), ( "last_name", models.CharField( blank=True, max_length=150, verbose_name="last name" ), ), ( "email", models.EmailField( blank=True, max_length=254, verbose_name="email address" ), ), ( "is_staff", models.BooleanField( default=False, help_text="Designates whether the user can log into this admin site.", verbose_name="staff status", ), ), ( "is_active", models.BooleanField( default=True, help_text="Designates whether this user should be treated as active. Unselect this instead of deleting accounts.", verbose_name="active", ), ), ( "date_joined", models.DateTimeField( default=django.utils.timezone.now, verbose_name="date joined" ), ), ( "remark", models.CharField( blank=True, db_comment="备注", help_text="备注", max_length=256, null=True, ), ), ( "creator", models.CharField( blank=True, db_comment="创建人", help_text="创建人", max_length=64, null=True, ), ), ( "modifier", models.CharField( blank=True, db_comment="修改人", help_text="修改人", max_length=64, null=True, ), ), ( "update_time", models.DateTimeField( auto_now=True, db_comment="修改时间", help_text="修改时间", null=True, ), ), ( "create_time", models.DateTimeField( auto_now_add=True, db_comment="创建时间", help_text="创建时间", null=True, ), ), ( "is_deleted", models.BooleanField(db_comment="是否软删除", default=False), ), ( "mobile", models.CharField( db_comment="手机号", max_length=11, null=True, validators=[utils.utils.validate_mobile], ), ), ( "nickname", models.CharField( blank=True, db_comment="昵称", max_length=50, null=True ), ), ( "gender", models.SmallIntegerField( blank=True, db_comment="性别", default=0, null=True ), ), ( "language", models.CharField( blank=True, db_comment="语言", max_length=20, null=True, verbose_name="语言", ), ), ( "city", models.CharField( blank=True, db_comment="城市", max_length=20, null=True, verbose_name="城市", ), ), ( "province", models.CharField( blank=True, db_comment="省份", max_length=50, null=True, verbose_name="省份", ), ), ( "country", models.CharField( blank=True, db_comment="国家", max_length=50, null=True, verbose_name="国家", ), ), ( "avatar_url", models.URLField( blank=True, db_comment="头像", null=True, verbose_name="头像" ), ), ( "status", models.IntegerField( choices=[(0, "禁用"), (1, "启用")], default=1, verbose_name="状态", ), ), ( "login_ip", models.GenericIPAddressField( blank=True, db_comment="最后登录IP", null=True ), ), ( "groups", models.ManyToManyField( blank=True, help_text="The groups this user belongs to. A user will get all permissions granted to each of their groups.", related_name="user_set", related_query_name="user", to="auth.group", verbose_name="groups", ), ), ( "user_permissions", models.ManyToManyField( blank=True, help_text="Specific permissions for this user.", related_name="user_set", related_query_name="user", to="auth.permission", verbose_name="user permissions", ), ), ( "dept", models.ManyToManyField( blank=True, db_constraint=False, related_name="users", to="system.dept", verbose_name="部门", ), ), ( "post", models.ManyToManyField( blank=True, db_constraint=False, related_name="users", to="system.post", verbose_name="岗位", ), ), ( "role", models.ManyToManyField( blank=True, db_constraint=False, related_name="users", to="system.role", verbose_name="角色", ), ), ], options={ "verbose_name": "用户数据", "verbose_name_plural": "用户数据", "db_table": "system_users", }, managers=[ ("objects", django.contrib.auth.models.UserManager()), ], ), migrations.CreateModel( name="RolePermission", fields=[ ( "id", models.BigAutoField( auto_created=True, primary_key=True, serialize=False, verbose_name="ID", ), ), ( "remark", models.CharField( blank=True, db_comment="备注", help_text="备注", max_length=256, null=True, ), ), ( "creator", models.CharField( blank=True, db_comment="创建人", help_text="创建人", max_length=64, null=True, ), ), ( "modifier", models.CharField( blank=True, db_comment="修改人", help_text="修改人", max_length=64, null=True, ), ), ( "update_time", models.DateTimeField( auto_now=True, db_comment="修改时间", help_text="修改时间", null=True, ), ), ( "is_deleted", models.BooleanField(db_comment="是否软删除", default=False), ), ( "create_time", models.DateTimeField( auto_now_add=True, verbose_name="权限关联时间" ), ), ( "menu", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, to="system.menu", verbose_name="菜单/权限", ), ), ( "role", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, to="system.role", verbose_name="角色", ), ), ], options={ "verbose_name": "角色权限关联", "verbose_name_plural": "角色权限关联", "db_table": "system_role_permission", }, ), migrations.AddField( model_name="role", name="permissions", field=models.ManyToManyField( through="system.RolePermission", to="system.menu", verbose_name="关联权限", ), ), ]