export type Goods = {
    goodsId: number,
    goodsName: string,
    categoryId: number,
    price: number,
    stock: number,
    status: number,
    coverImg: string,
    goodsDetail: string,
    usageInstruction: string,
    cellId: number,
    belongType: number
}

export interface ShopGoodsEntity {
  /** 商品唯一ID */
  goodsId: number;
  /** 商品名称 */
  goodsName: string;
  /** 商品分类ID */
  categoryId: number;
  /** 外部归属类型的商品ID */
  externalGoodsId?: number;
  /** 企业微信id */
  corpid?: string;
  /** 每人每月限购数量 */
  monthlyPurchaseLimit?: number;
  /** 销售价格 */
  price: number;
  /** 库存数量 */
  stock: number;
  /** 商品状态（1上架 2下架） */
  status: number;
  /** 免审批（0否 1是） */
  autoApproval?: number;
  /** 封面图URL */
  coverImg?: string;
  /** 商品详情（支持2000汉字+10个图片链接） */
  goodsDetail?: string;
  /** 备注 */
  remark?: string;
  /** 商品使用说明 */
  usageInstruction?: string;
  /** 归属类型（0-借还柜 1-固资通） */
  belongType?: number;
}

export type category = {
    categoryId: number,
    categoryName: string,
    sort: number
}

export interface SubmitOrderRequestData {
  /** 微信用户唯一标识 */
  openid: string;
  /** 系统用户ID */
  userid: string;
  /** 汇邦云用户ID */
  ab98UserId: number;
  /** 企业ID */
  corpid: string;
  /** 支付类型 wechat:微信 balance:余额 */
  paymentType: 'wechat' | 'balance' | "approval";
  /** 联系电话 */
  mobile: string;
  /** 用户姓名 */
  name: string;
  /** 企业微信用户ID或汇邦云用户ID */
  qyUserid: string;
  /** 是否内部订单 0否 1汇邦云用户 2企业微信用户 */
  isInternal: number;
  applyRemark: string;
  /** 运行模式（0-支付模式 1-审批模式 2-借还模式 3-会员模式 4-耗材模式） */
  mode: number;
  /** 订单商品明细列表 */
  goodsList: Array<{
    goodsId?: number
    quantity: number
    cellId: number
    /** 运行模式（0-支付模式 1-审批模式 2-借还模式 3-会员模式 4-耗材模式） */
    mode: number;
  }>
}

export type SubmitOrderResponseData = ApiResponseMsgData<{
  orderId: number
  totalAmount: number
  newBalance: number
  paymentInfo: WxJsApiPreCreateResponse
}>

export type ShopGoodsResponseData = ApiResponseMsgData<{ 
    goodsList: Goods[], 
    categoryList: category[] 
}>

export interface WxJsApiPreCreateResponse {
  appId: string
  timeStamp: string
  nonceStr: string
  package: string
  signType: string
  paySign: string
}

export interface GetOpenIdRequestParams {
  code: string
}
export interface QyLoginRequestParams {
  corpid: string
  code: string
  state?: string
}

export interface ShopOrderEntity {
  orderId: number
  openid: string
  totalAmount: number
  status: number
  payStatus: number
  paymentMethod: string
  payTime: string
}

export interface ShopOrderGoodsEntity {
  /** 订单商品唯一ID */
  orderGoodsId: number
  /** 关联订单ID */
  orderId: number
  /** 审批ID */
  approvalId: number
  /** 关联商品ID */
  goodsId: number
  /** 关联格口ID */
  cellId: number
  /** 购买数量 */
  quantity: number
  /** 购买时单价 */
  price: number
  /** 商品总金额 */
  totalAmount: number
  /** 商品名称 */
  goodsName: string
  /** 封面图URL */
  coverImg: string
  /** 商品状态（1正常 2已退货 3已换货 4已完成 5审核中 6退货未通过） */
  status: number
  /** 企业微信id */
  corpid: string
}

export interface GetOrdersByOpenIdDTO {
  orders: ShopOrderEntity[]
  orderGoods: ShopOrderGoodsEntity[]
  goods: Goods[]
}

export interface GetBalanceResponse {
  userid: string
  corpid: string
  /** 剩余借呗 */ 
  balance: number
  /** 已用借呗 */ 
  useBalance: number
  /** 借呗总额 */ 
  balanceLimit: number
  ab98User: ab98UserDTO;
}

export interface QyLoginDTO {
  userid: string;
  openid: string;
  isCabinetAdmin: number;
  qyUserId: number;
  name: string;
  ab98User: ab98UserDTO;
}

export interface ab98UserDTO {
  /** 主键ID */
  ab98UserId?: number;
  /** openid */
  openid?: string;
  /** 汇邦云用户唯一ID */
  userid?: string;
  /** 真实姓名 */
  name?: string;
  /** 手机号码 */
  tel?: string;
  /** 身份证号码 */
  idnum?: string;
  /** 性别（男 女） */
  sex?: string;
  /** 人脸照片地址 */
  faceImg?: string;
  /** 身份证正面地址 */
  idcardFront?: string;
  /** 身份证背面地址 */
  idcardBack?: string;
  /** 身份证登记地址 */
  address?: string;
  /** 是否已注册（0未注册 1已注册） */
  registered?: boolean;
  /** 借呗余额 单位分 */
  ab98Balance?: number;
}

export interface OpenCabinetApiData {
  // 格口ID
  cellId?: number
  // 用户ID
  userid: string
  // 是否内部用户（0否 1汇邦云用户 2企业微信用户）
  isInternal: number
  // 姓名
  name: string
  // 联系电话
  mobile: string
  // 操作类型（1用户 2管理员）
  operationType: number
}

export interface ShopEntity {
  /** 主键ID */
  shopId: number;
  /** 商店名称 */
  shopName: string;
  /** 企业微信id */
  corpid: string;
  /** 运行模式（0-支付模式 1-审批模式 2-借还模式 3-会员模式 4-耗材模式） */
  mode?: number;
  /** 借呗支付（1-正常使用 0-禁止使用） */
  balanceEnable?: number;
  /** 封面图URL */
  coverImg?: string;
}

export interface SearchGoodsDO extends ShopGoodsEntity {
  /** 分类名称 */
  categoryName?: string;
  /** 柜子ID */
  cabinetId?: number;
  /** 柜子名称 */
  cabinetName?: string;
  /** 商店名称字符串 */
  shopNameStr?: string;
  /** 格口编号 */
  cellNo?: number;
  /** 格口编号字符串 */
  cellNoStr?: string;
  /** 已分配库存 */
  totalStock?: number;
}