'use client';

// 注销/删除账号弹窗(受控)。列表页与用户详情页共用,避免两处各写一套(同 AdjustBalanceModals)。
// 复用 C 端自助注销同一套后端清理:物理删除个人内容/行为/PII 表 + 清零余额 + 匿名化 user 行,
// 保留资金流水/邀请关系/广告幂等+对账表。仅 super_admin 可见入口;后端亦 require_role("super_admin") 兜底。
// 后端资金前置闸(有未提现现金/邀请金 / 在审提现单 → 409)带明确 detail,errMsg 原样透出。
import { App, Form, Input, Modal } from 'antd';
import { api, errMsg } from '@/lib/api';

export type DeleteTargetUser = { id: number; phone: string };

interface Props {
  user: DeleteTargetUser | null;
  open: boolean;
  onClose: () => void;
  onDone?: () => void; // 删除成功后回调(刷新详情/列表)
}

export function DeleteUserModal({ user, open, onClose, onDone }: Props) {
  const { message } = App.useApp();
  const [form] = Form.useForm();

  const submit = async () => {
    if (!user) return;
    const v = await form.validateFields(); // 原因必填,缺失即红字阻断
    try {
      // axios 的 DELETE 带 body 要放在 config.data 里
      await api.delete(`/admin/api/users/${user.id}`, { data: { reason: v.reason } });
      message.success('账号已注销');
      onClose();
      onDone?.();
    } catch (e) {
      message.error(errMsg(e));
    }
  };

  return (
    <Modal
      title={`注销账号 - ${user?.phone ?? ''}`}
      open={open}
      onOk={submit}
      onCancel={onClose}
      okText="确认注销"
      okButtonProps={{ danger: true }}
      afterOpenChange={(o) => {
        if (o) form.resetFields();
      }}
      destroyOnHidden
    >
      <p style={{ color: '#cf1322', marginBottom: 12 }}>
        将永久删除该账号的个人数据(比价/省钱/签到/领券/埋点/设备/邀请指纹等)并清零余额、匿名化手机号,
        <strong>不可恢复</strong>。资金流水/邀请关系/广告对账记录按合规保留。
      </p>
      <Form form={form} layout="vertical">
        <Form.Item name="reason" label="注销原因(入审计)" rules={[{ required: true, message: '请填写注销原因' }]}>
          <Input.TextArea rows={2} />
        </Form.Item>
      </Form>
    </Modal>
  );
}
