"""补齐 gvsdsdk 权限码（可重复执行）。"""
import uuid

from django.core.management.base import BaseCommand
from django.utils import timezone

from gvsdsdk.models import Permission

# (PermCode, PermName, PermDesc, PermCategory)
EXTRA_PERMISSIONS = [
    (
        'dsks666',
        '打手接单考试管理',
        '配置各俱乐部考试开关、抽题规则与题库（小程序配置-打手接单考试）',
        '小程序配置',
    ),
    (
        'phbj666',
        '排行榜奖励配置',
        '配置各俱乐部排行榜名次奖金、排序指标与领取明细（小程序配置-排行榜奖励）',
        '小程序配置',
    ),
    (
        'kfhs666',
        '客服聊天配置',
        '配置客服欢迎语、发图确认弹窗、关键词自动回复（会话管理-客服聊天配置）',
        '会话管理',
    ),
    (
        'gdck666',
        '投诉工单查看',
        '查看用户投诉工单列表与详情',
        '投诉工单',
    ),
    (
        'gdcl666',
        '投诉工单处理',
        '处理/关闭用户投诉工单',
        '投诉工单',
    ),
    (
        'sfbq666',
        '身份装饰标签管理',
        '管理小程序身份装饰标签（与用户管理-身份装饰标签菜单对应）',
        '用户管理',
    ),
    (
        '005bb',
        '提现审核（按俱乐部）',
        '审核本俱乐部提现（同意/拒绝/自动打款）。跨俱乐部仅集团高管；须角色 ClubID + 数据范围任职。',
        '提现管理',
    ),
    (
        'djcfg001',
        '资金冻结规则配置',
        '配置本俱乐部各角色冻结比例/分期/解冻条件',
        '资金冻结',
    ),
    (
        'djled001',
        '资金冻结明细',
        '查看冻结流水并手动解冻',
        '资金冻结',
    ),
    (
        'djrisk001',
        '罚款投诉风险指标',
        '查看罚款率/投诉率等解冻相关指标',
        '资金冻结',
    ),
    (
        'xycfg001',
        '角色协议配置',
        '配置打手/管事/组长用户协议并发布版本',
        '小程序配置',
    ),
    (
        '002ad',
        '修改抢单要求',
        '修改平台订单/本店商品的抢单要求类型（会员/押金门槛）。须显式绑定；本店超管 000001 不会自动拥有。',
        '订单管理',
    ),
    # ---------- 店铺管理（999 系列：列表/详情/复制/提现等） ----------
    ('999a', '店铺状态管理', '修改店铺封禁/正常状态', '店铺管理'),
    ('999b', '店铺余额与创建', '修改可提现余额、添加新店铺', '店铺管理'),
    ('999c', '店铺提现限额', '修改每日提现限额及开关', '店铺管理'),
    ('999d', '店铺抽成配置', '修改店铺订单收益抽成及默认抽成费率', '店铺管理'),
    ('999e', '店铺基本信息', '修改店铺名称、电话、微信号', '店铺管理'),
    # ---------- 店铺商品管理（1199 系列：商品/类型/审核） ----------
    ('1199ab', '店铺商品审核模式', '查看/修改店铺商品全局审核开关', '店铺管理'),
    ('1199abc', '店铺商品封禁下架', '封禁、下架、驳回店铺商品/类型审核', '店铺管理'),
    ('1199abd', '店铺商品上架解封', '上架、解封、审核通过店铺商品/类型', '店铺管理'),
    ('1199abe', '店铺商品信息修改', '修改店铺商品标题、价格、库存等基本信息', '店铺管理'),
]


class Command(BaseCommand):
    help = '写入 gvsdsdk Permission 表缺失的权限码（如 sfbq666）'

    def handle(self, *args, **options):
        sample = Permission.objects.filter(PermStatus=1).first()
        tenant_uuid = sample.TenantUUID if sample else uuid.UUID('00000000-0000-0000-0000-000000000001').bytes
        created = 0
        for code, name, desc, category in EXTRA_PERMISSIONS:
            if Permission.objects.filter(PermCode=code).exists():
                self.stdout.write(f'  已存在: {code}')
                continue
            Permission.objects.create(
                PermUUID=uuid.uuid4().bytes,
                TenantUUID=tenant_uuid,
                PermCode=code,
                PermName=name,
                PermDesc=desc,
                PermCategory=category,
                PermStatus=1,
                CreateTime=timezone.now(),
            )
            created += 1
            self.stdout.write(self.style.SUCCESS(f'  新增权限: {code} - {name}'))
        self.stdout.write(self.style.SUCCESS(f'完成，新增 {created} 条权限'))
