import type { PageParam, PageResult } from '@vben/request';

import type { SystemStorageApi } from '#/api/system/storage';

import { requestClient } from '#/api/request';

export namespace UmsMemberApi {
  /** 会员 */
  export interface Member {
    id?: number;
    no?: string; // 会员编号，后端生成
    userId?: number; // 关联系统用户 ID
    username?: string; // 关联用户名（昵称）
    applicationId?: number; // 来源申请单 ID
    memberType: number; // 会员类型，字典 ums_member_type
    memberGrade: string; // 会员等级（按 memberType 取不同字典）
    name: string; // 姓名（个人）或单位名称（单位）
    contactUser?: string; // 联系人（单位用）
    contactPhone?: string; // 联系电话
    contactEmail?: string; // 邮箱
    legalPerson?: string; // 法定代表人（单位专有）
    organizationCode?: string; // 统一社会信用代码
    researchDirection?: string; // 研究方向
    workUnit?: string; // 工作单位（个人专有）
    title?: string; // 职称（个人专有）
    unitIntro?: string; // 单位简介（单位专有）
    regionCode?: string; // 地区编码
    industry?: string; // 行业，字典 ums_industry
    joinDate?: string; // 入会日期
    expireDate?: string; // 有效期至
    status?: number; // 状态，字典 ums_member_status
    archiveDocumentId?: number; // 归档生成的档案 ID（非空即已归档）
    archived?: boolean; // 是否已归档
    remark?: string; // 备注
    createTime?: string; // 创建时间
    attachmentList?: SystemStorageApi.StorageBlob[]; // 附件列表
    hasAttachment?: boolean; // 是否有附件
    blobIds?: number[]; // 提交时的附件 ID 列表（全量）
  }
}

/** 查询会员通讯录分页 */
export function getMemberPage(params: PageParam) {
  return requestClient.get<PageResult<UmsMemberApi.Member>>('/ums/member/page', {
    params,
  });
}

/** 查询会员详情 */
export function getMember(id: number) {
  return requestClient.get<UmsMemberApi.Member>(`/ums/member/get?id=${id}`);
}

/** 通过用户 ID 查询会员 */
export function getMemberByUserId(userId: number) {
  return requestClient.get<UmsMemberApi.Member>(
    `/ums/member/get-by-user-id?userId=${userId}`,
  );
}

/** 新增会员 */
export function createMember(data: UmsMemberApi.Member) {
  return requestClient.post('/ums/member/create', data);
}

/** 修改会员 */
export function updateMember(data: UmsMemberApi.Member) {
  return requestClient.put('/ums/member/update', data);
}

/** 删除会员 */
export function deleteMember(id: number) {
  return requestClient.delete('/ums/member/delete', {
    params: { id },
  });
}

/** 归档到档案管理（仅正常状态会员可归档），返回生成的档案编号 */
export function archiveMember(id: number) {
  return requestClient.post<string>('/ums/member/archive', null, {
    params: { id },
  });
}