/**
 * API接口类型定义文件
 * 包含所有接口请求和响应的类型定义
 */

// 基础响应接口：包含状态码和消息
export interface Result {
  code: string; // 响应状态码
  msg: string; // 响应消息
}

// 带数据的响应接口：继承基础响应接口，增加data字段
export interface ResultData<T = any> extends Result {
  data: T; // 响应数据，泛型类型
}

// 分页响应接口：用于列表数据的分页返回
export interface ResPage<T> {
  list: T[]; // 数据列表
  pageNum: number; // 当前页码
  pageSize: number; // 每页条数
  total: number; // 总条数
}

// 分页请求接口：用于列表数据的分页请求
export interface ReqPage {
  pageNum: number; // 当前页码
  pageSize: number; // 每页条数
}

// 文件上传模块接口定义
export namespace Upload {
  // 文件上传响应接口
  export interface ResFileUrl {
    fileUrl: string; // 文件访问地址
  }
}

// 登录模块接口定义
export namespace Login {
  // 登录请求参数接口
  export interface ReqLoginForm {
    username: string; // 用户名
    password: string; // 密码
  }
  // 注册请求参数接口
  export interface ReqRegisterForm {
    username: string; // 用户名
    password: string; // 密码
  }
  // 登录响应接口
  export interface ResLogin {
    token: string; // 登录令牌
    result: boolean; // 登录结果
    roleId: string; // 角色ID
  }
  // 注册响应接口
  export interface ResRegister {
    result: boolean; // 注册结果
    token?: string; // 可选的登录令牌
  }
  // 权限按钮响应接口
  export interface ResAuthButtons {
    [key: string]: string[]; // 权限按钮列表，key为页面名称，value为按钮权限数组
  }
}

// 用户管理模块接口定义
export namespace User {
  // 用户列表请求参数接口
  export interface ReqUserParams extends ReqPage {
    id: any; // 用户ID
    userId: any; // 用户ID（备用）
    username: string; // 用户名
    gender: number; // 性别
    idCard: string; // 身份证号
    email: string; // 邮箱
    address: string; // 地址
    createTime: string[]; // 创建时间范围
    status: number; // 状态
  }
  // 用户列表响应接口
  export interface ResUserList {
    id: string; // 用户ID
    username: string; // 用户名
    realName?: string; // 真实姓名
    gender: number; // 性别
    user: { detail: { age: number } }; // 用户详细信息
    userPhone?: string; // 联系电话
    loginAccount?: string; // 登录账号
    loginPassword?: string; // 登录密码
    idCard: string; // 身份证号
    email: string; // 邮箱
    address: string; // 地址
    createTime: string; // 创建时间
    status: number; // 状态
    roleId?: string; // 关联律所ID
    roleName?: string; // 角色名称
    remark?: string; // 备注
    avatar: string; // 头像
    photo: any[]; // 照片列表
    children?: ResUserList[]; // 子级用户列表
  }
  // 用户状态响应接口
  export interface ResStatus {
    userLabel: string; // 状态标签
    userValue: number; // 状态值
  }
  // 用户性别响应接口
  export interface ResGender {
    genderLabel: string; // 性别标签
    genderValue: number; // 性别值
  }
  // 部门响应接口
  export interface ResDepartment {
    id: string; // 部门ID
    name: string; // 部门名称
    children?: ResDepartment[]; // 子部门列表
  }
  // 角色响应接口
  export interface ResRole {
    id: string; // 角色ID
    name: string; // 角色名称
    children?: ResDepartment[]; // 角色权限列表
  }
}

// 商铺用户管理模块接口定义
export namespace StoreUser {
  // 商铺用户列表请求参数接口
  export interface ReqUserParams extends ReqPage {
    storeName: string; // 商铺名称
    storePhone: string; // 商铺电话
    storeType: string; // 商铺类型
    password: string; // 密码
    phone: number; // 联系电话
    createTime: string[]; // 创建时间范围
    status: number; // 状态
    addressName: string; // 地址名称
    adCode: string; // 行政区域编码
  }
  // 用户账号接口
  export interface StoreUserAccount {
    userAccount: string; // 用户账号
  }
  // 用户选项接口
  export interface UserOptions {
    id: number; // 用户ID
    name: string; // 用户名称
  }
  // 经营板块接口
  export interface StoreSection {
    sectionName: string; // 板块名称
    types: string[]; // 类型列表
  }
  // 字典接口
  export interface Dict {
    typeName: string; // 类型名称
    typeDetail: string; // 类型详情
    parentId: number; // 父级ID
    dictId: string; // 字典ID
    dictDetail: string; // 字典详情
  }
  // 商铺用户列表响应接口
  export interface ResStoreUserList {
    id: string; // 商铺ID
    storeName: string; // 商铺名称
    name: string; // 联系人姓名
    nickName: string; // 联系人姓名
    phone: string; // 联系电话
    payPassword: string; // 支付密码
    storePhone: string; // 商铺电话
    storeContact: string; // 商铺联系人
    storeTypeStr: string[]; // 商铺类型字符串数组
    storeTypeList: string[]; // 商铺类型列表
    password: string; // 密码
    isChain: number; // 是否连锁
    storeTel: string; // 商铺电话
    storeCapacity: number; // 商铺容量
    storeArea: string; // 商铺面积
    storeAddress: string; // 商铺地址
    storeBlurb: string; // 商铺简介
    storeStatus: string; // 商铺状态
    businessStatus: string; // 营业状态
    idCard: string; // 身份证号
    storePositionLongitude: string; // 经度
    storePositionLatitude: string; // 纬度
    storePass: string; // 商铺密码
    expirationTime: string; // 过期时间
    avatar: string; // 头像
    photo: any[]; // 照片列表
    status: string; // 状态
    switchStatus: boolean; // 开关状态
    children?: ResStoreUserList[]; // 子级商铺列表
    storeInfoModel: string; // 商铺信息模型
    businessTypes: []; // 经营类型
    fileList: []; // 文件列表
    contractImage: []; // 合同图片
    expiredState: string; // 过期状态
    latitude: string; // 纬度
    longitude: string; // 经度
  }
  // 状态响应接口
  export interface ResStatus {
    userLabel: string; // 状态标签
    userValue: number; // 状态值
  }
  // 性别响应接口
  export interface ResGender {
    genderLabel: string; // 性别标签
    genderValue: number; // 性别值
  }
  // 部门响应接口
  export interface ResDepartment {
    id: string; // 部门ID
    name: string; // 部门名称
    children?: ResDepartment[]; // 子部门列表
  }
  // 角色响应接口
  export interface ResRole {
    id: string; // 角色ID
    name: string; // 角色名称
    children?: ResDepartment[]; // 角色权限列表
  }
}

// 课程管理模块接口定义
export declare namespace Course {
  // 课程请求参数接口
  interface ReqCourseParams {
    id?: number; // 课程ID
    className: string; // 课程名称
    classState: number; // 课程状态
    page: number | string; // 页码
    size: number | string; // 每页条数
    classBigType: number | string; // 课程大类
    classSmallType: number | string; // 课程小类
    classTeacher: number | string; // 课程教师
    classVideoUrl: string; // 课程视频地址
  }
  // 课程列表响应接口
  export interface ResCourseList {
    id: string; // ID
    couponId: string; // 优惠券ID
    className: string; // 课程名称
    classBigType: string; // 课程大类
    classSmallType: string; // 课程小类
    classTeacher: string; // 课程教师
    classPrice: string; // 课程价格
    classStatus: string; // 课程状态
    playCount: string; // 播放次数
  }
}
export namespace Discount {
  export interface ReqPlatformCouponLogParams extends ReqPage {
    userName: string; // 用户名
    phone: string; // 手机号
    couponId: string; // 优惠券ID
  }
  export interface ResPlatformCouponLogList {
    id: string; // ID
    userName: string; // 用户名
    phone: string; // 手机号
  }
}

// 申诉管理模块接口定义
export namespace StoreCommentAppeal {
  // 申诉列表请求参数接口
  export interface ReqStoreCommentAppealParams extends ReqPage {
    storeName: string; // 商铺名称
    storePhone: string; // 商铺电话
    storeType: string; // 商铺类型
    password: string; // 密码
    phone: number; // 联系电话
    createTime: string[]; // 创建时间范围
    status: number; // 状态
  }
  // 申诉列表响应接口
  export interface ResStoreCommentAppealList {
    id: string; // 申诉ID
    storeName: string; // 商铺名称
    storePhone: string; // 商铺电话
    storeContact: string; // 商铺联系人
    storeTypeStr: string[]; // 商铺类型字符串数组
    storeTypeList: string[]; // 商铺类型列表
    appealType: string; // 申诉类型
    appealImage: any; // 申诉图片
    password: string; // 密码
    isChain: number; // 是否连锁
    photo: any[]; // 照片列表
    children?: ResStoreCommentAppealList[]; // 子级申诉列表
  }
}

// 套餐管理模块接口定义
export namespace GroupPackage {
  // 套餐列表请求参数接口
  export interface GroupPackageParams extends ReqPage {
    storeName: string; // 商铺名称
    phone: number; // 联系电话
    createTime: string; // 创建时间
    type: string; // 类型
  }
  // 套餐列表响应接口
  export interface GroupPackageList {
    id: string; // 套餐ID
    storeName: string; // 商铺名称
    phone: string; // 联系电话
    createdTime: string; // 创建时间
    statusName: string; // 状态名称
    status: string; // 状态
  }
}

// 操作日志
export namespace OptionLog {
  export interface ReqOptionLogParams extends ReqPage {
    optionName: string;
    optionType: string;
    startTime?: string;
    endTime?: string;
  }
  export interface ResOptionLogList {
    id: string;
    optionName: string;
    optionType: string;
    optionTime: string;
    optionIndex: number;
  }
}

// 联名卡管理
export namespace CoBrandedCard {
  export interface CoBrandedCardParams extends ReqPage {
    name: string;
    status: string;
  }
  export interface CoBrandedCardList {
    id: string;
    name: string;
    totalQty: string;
    storeQty: string;
    onTime: string;
    status: string;
  }
  export interface ResCoBrandedCard {
    id: string;
    name: string;
    images: string;
    imageUrlList: any[];
    totalQty: number;
    originalCost: string;
    currentPrice: number;
    storeName: any[];
    dataform: any[];
    storeNameList: any[];
    tickNameList: any[];
    quanIds: string;
    detailsImages: any[];
    detailsImagesStr: String;
    onTime: string;
    endTime: string;
    storeQty: string;
    remainQty: string;
    children?: ResCoBrandedCard[];
  }
}

export namespace Order {
  // 订单列表请求参数接口
  export interface OrderParams extends ReqPage {
    storeId: string; // 店铺ID
    userId: string;
    storeName: string; // 商铺名称
    phone: number; // 联系电话
    createTime: string; // 创建时间
  }
  // 订单列表响应接口
  export interface OrderList {
    id: string; // 订单ID
    storeId: string; // 店铺ID
    userId: string;
    storeName: string; // 商铺名称
    phone: string; // 联系电话
    createdTime: string; // 创建时间
    statusName: string; // 状态名称
    status: string; // 状态
  }
}
//AI智能客服
export namespace AiCustomerService {
  // 订单列表请求参数接口
  export interface AiCustomerServiceParams extends ReqPage {
    storeId: string; // 店铺ID
    userId: string;
    storeName: string; // 商铺名称
    phone: number; // 联系电话
    createTime: string; // 创建时间
  }
  // 订单列表响应接口
  export interface AiCustomerServiceList {
    id: string; // 订单ID
    storeId: string; // 店铺ID
    userId: string;
    storeName: string; // 商铺名称
    phone: string; // 联系电话
    createdTime: string; // 创建时间
    statusName: string; // 状态名称
    status: string; // 状态
  }
}
// 员工管理
export namespace StaffConfig {
  export interface StaffConfigParams extends ReqPage {
    id: string;
    status: string;
    rejectionReason: string;
  }
  export interface StaffConfigList {
    id: string;
    storeName: string;
    phone: string;
    createdTime: string;
    statusName: string;
    status: string;
    name: string;
    rejectionReason: string;
  }
}

// 对账结算
export namespace Reconciliation {
  export interface ReconciliationParams extends ReqPage {
    storeName: string;
  }
  // 列表table
  export interface ReconciliationList {
    storeId: string;
    storeName: string;
    mealOrderCount: string;
    mealOrderAmount: string;
    mealIncomeCount: string;
    mealIncomeMoney: string;
    couponOrderCount: string;
    couponOrderAmount: string;
    couponIncomeCount: string;
    couponIncomeMoney: string;
    cashoutMoney: string;
    accountFrozen: string;
  }
  export interface ResReconciliation {
    totalTransactionAmount: string;
    amountPaid: string;
    amountWrittenOff: string;
    transactionNumber: string;
    unwithdrawnAmountsFrozen: string;
    amountNotWrittenOff: string;
    billingRanking: any[];
  }
  // 详情table
  export interface ResDetailList {
    userId: string;
    userName: string;
    buyTime: string;
    buyCount: string;
    buyAmount: string;
    name: string;
    typeName: string;
    statusName: string;
    refundTime: string;
    usedTime: string;
  }
  export interface WithdrawalList {
    storeName: string;
    storeId: string;
    cashOutTypeName: string;
    money: string;
    createdTime: string;
    paymentDate: string;
  }
}

// 达人管理
export namespace Talent {
  export interface ReqTalentParams extends ReqPage {
    name: string;
  }
  export interface ResTalentList {
    id: string;
    name: string;
    phone: string;
    createTime: string;
  }
}
// 工作台
export namespace Audit {
  export interface ReqAuditParams extends ReqPage {
    status: string;
  }
  export interface ResAuditList {
    id: string;
    name: string;
    status: string;
    createTime: string;
  }
}

// 会员管理
export namespace Vip {
  export interface ReqVipParams extends ReqPage {
    name: string;
  }
  export interface ResVipList {
    id: string;
    name: string;
    phone: string;
    createTime: string;
  }
}

// 过滤条件模块
export namespace EssentialModuleInformation {
  export interface ReqInformationParams extends ReqPage {
    informationKey: string;
    informationValue: string;
    label: string;
    dataType: string;
    paramType: string;
    parentId: number;
  }
  export interface ResInformationList {
    informationKey: string;
    informationValue: string;
    label: string;
    dataType: string;
    paramType: string;
    parentId: number;
    children?: ResInformationList[];
  }
}

// 字典库管理
export namespace StoreDictionary {
  export interface ReqDictionaryParams extends ReqPage {
    label: string;
    dataType: string;
    paramType: string;
    parentId: number;
    typeName: string;
    typeDetail: string;
    dictId: string;
    dictDetail: string;
  }
  export interface ResDictionaryList {
    informationKey: string;
    informationValue: string;
    label: string;
    dataType: string;
    paramType: string;
    parentId: number;
    typeName: string;
    typeDetail: string;
    dictId: string;
    dictDetail: string;
    children?: ResDictionaryList[];
  }
}

// 申诉管理
export namespace lifeUserViolation {
  export interface lifeUserViolationParam extends ReqPage {
    id: number;
    reportedUserType: string;
    reportedUserId: string;
    reportingUserType: string;
    reportingUserId: string;
    reportContextType: string;
    violationType: string;
    otherReasonContent: string;
    reportEvidenceImg: any;
    processingStatus: string;
    processingTime: string;
    deleteFlag: number;
    createdTime: string;
    createdUserId: number;
    updatedTime: string;
    updatedUserId: number;
    commentId: string;
    dynamicsId: string;
    image: string;
  }
}

// 过滤条件模块
export namespace EssentialModuleClassification {
  export interface ResClassificationList {
    id: string;
    tagLevel: number;
    label: string;
    parentTagId: string;
    children?: ResClassificationList[];
  }
}

// banner管理

export declare namespace Banner {
  interface ReqBannerParams extends ReqPage {
    bannerTitle: string;
    page: number;
    size: number;
  }
  interface ResBannerList {
    bannerImg?: string;
    bannerIntroduce?: string;
    bannerSort?: number;
    bannerTitle?: string;
    createdTime?: string;
    createdUserId?: number;
    deleteFlag?: number;
    id?: number;
    playCount?: number;
    playFlag?: number;
    updatedTime?: string;
    updatedUserId?: number;
  }
}

// 二手交易管理模块接口定义
export namespace SecondHandTrading {
  // 商品管理列表请求参数接口
  export interface SecondHandTradingParams extends ReqPage {
    storeName: string; // 商铺名称
    phone: number; // 联系电话
    createTime: string; // 创建时间
    type: string; // 类型
  }
  // 商品管理列表响应接口
  export interface SecondHandTradingList {
    id: string; // 套餐ID
    storeName: string; // 商铺名称
    phone: string; // 联系电话
    createdTime: string; // 创建时间
    statusName: string; // 状态名称
    status: string; // 状态
  }

  // 交易管理列表请求参数接口
  export interface SecondHandTradingTransactionParams extends ReqPage {
    tradeNo: string; // 订单编号
    goodsId: number; // 商品ID
    tradeStatus: string; // 交易状态
  }
  // 交易管理列表响应接口
  export interface SecondHandTradingTransactionList {
    id: string; // 套餐ID
    tradeNo: string; // 订单编号
    goodsId: string; // 商品ID
    createdTime: string; // 商品名称
    statusName: string; // 交易价格（￥）
    tradeStatus: string; // 交易状态
  }

  // 分类管理列表请求参数接口
  export interface SecondHandTradingCategoryParams extends ReqPage {}
  // 分类管理列表响应接口
  export interface SecondHandTradingCategoryList {}

  // 举报管理列表请求参数接口
  export interface SecondHandTradingReportParams extends ReqPage {
    reportingUserName: string; // 举报用户名称
    createdTime: string; // 举报时间
    processingStatus: string; // 处理状态
    reportingUserId: string; // 举报用户ID
  }
  // 举报管理列表响应接口
  export interface SecondHandTradingReportList {
    businessId: number;
    dictDetail: string;
    id: number;
    pageNum: string;
    pageSize: string;
    processingContext: string;
    processingStatus: number;
    processingTime: string;
    reportContext: string;
    reportContextType: number;
    reportResult: string;
    reportedUserName: string;
    reportedUserPhone: string;
    reportingDate: string;
    reportingUserName: string;
    reportingUserPhone: string;
    createdTime: string;
  }
}
