// Copyright 2019 getensh.com. All rights reserved.
// Use of this source code is governed by getensh.com.

package gd_management

// 账单列表
type BillListReq struct {
	PageNumber int   `json:"page_number"`
	MerchantId int64 `json:"merchant_id"`
	//BillType   int    `json:"bill_type"`
	StartTime string `json:"start_time"`
	EndTime   string `json:"end_time"`
}

type Bill struct {
	Id             int64    `json:"bill_id"`
	MerchantName   string   `json:"merchant_name"`
	MerchantId     int64    `json:"merchant_id"`
	BillType       int      `json:"bill_type"`
	BillTime       string   `json:"bill_time"`
	Amount         float64  `json:"amount"`
	Balance        float64  `json:"balance"`
	BillCreateTime string   `json:"bill_create_time"`
	Remark         string   `json:"remark"`
	RemarkList     []string `json:"remark_list"`
	UserName string `json:"user_name"`
	BillStatus int `json:"bill_status"`
}

type BillListReply struct {
	Total      int    `json:"total"         description:""`
	PageSize   int    `json:"page_size"     description:""`
	PageNumber int    `json:"page_number"   description:""`
	List       []Bill `json:"list"`
}

// 充值列表
type ChargeListReq struct {
	PageNumber int    `json:"page_number"   description:""`
	MerchantId int64  `json:"merchant_id"`
	StartTime  string `json:"start_time"`
	EndTime    string `json:"end_time"`
}

type ChargeListReply struct {
	Total      int    `json:"total"         description:""`
	PageSize   int    `json:"page_size"     description:""`
	PageNumber int    `json:"page_number"   description:""`
	List       []Bill `json:"list"`
}

// 消费列表
type ConsumeListReq struct {
	PageNumber   int    `json:"page_number"   description:""`
	MerchantId   int64  `json:"merchant_id"`
	DataApiId    int64  `json:"data_api_id"`
	StartTime    string `json:"start_time"`
	EndTime      string `json:"end_time"`
	ConsumeOrder int    `json:"consume_order"`
}
type Consume struct {
	Id           int64   `json:"consume_id"`
	MerchantName string  `json:"merchant_name"`
	MerchantId   int64   `json:"merchant_id"`
	Day          string  `json:"day"`
	DataApiName  string  `json:"data_api_name"`
	Alias        string  `json:"alias"`
	TotalCount   int     `json:"total_count"`
	ChargeCount  int     `json:"charge_count"`
	Amount       float64 `json:"amount"`
}

type ConsumeListReply struct {
	Total      int       `json:"total"         description:""`
	PageSize   int       `json:"page_size"     description:""`
	PageNumber int       `json:"page_number"   description:""`
	List       []Consume `json:"list"`
}

// 消费趋势
type ConsumeTrendListReq struct {
	MerchantId int64  `json:"merchant_id"`
	DataApiId  int64  `json:"data_api_id"`
	StartTime  string `json:"start_time"`
	EndTime    string `json:"end_time"`
}
type ConsumeTrend struct {
	Day    string  `json:"day"`
	Amount float64 `json:"amount"`
}

type ConsumeTrendListReply struct {
	List []ConsumeTrend `json:"list"`
}

// 商户价格列表
type MerchantPriceListReq struct {
	PageNumber       int    `json:"page_number"   description:""`
	MerchantId       int64  `json:"merchant_id"`
	MerchantTypeList string `json:"merchant_type_list"` // 商户类型 0 所有 1 普通客户 2 预存款客户 3 后结算客户，4 默认（预存款客户，后结算客户）
	ArrearageOrder   int    `json:"arrearage_order"`    // 0 不排序，1 升序 2 降序
}
type MerchantPrice struct {
	MerchantName string                 `json:"merchant_name"`
	MerchantId   int64                  `json:"merchant_id"`
	MerchantType int                    `json:"merchant_type"`
	Balance      float64                `json:"balance"`
	Arrearage    float64                `json:"arrearage" description:"可欠费金额"`
	IsNotify     int `json:"is_notify"`
	ApiPriceList []MerchantDataApiPrice `json:"api_price_list"`
}

type MerchantPriceListReply struct {
	Total      int             `json:"total"         description:""`
	PageSize   int             `json:"page_size"     description:""`
	PageNumber int             `json:"page_number"   description:""`
	List       []MerchantPrice `json:"list"`
}

// 设置商户类型
type SetMerchantTypeReq struct {
	MerchantId   int64   `json:"merchant_id"`
	MerchantType int     `json:"merchant_type"`
	Arrearage    float64 `json:"arrearage" description:"可欠费金额"`
	IsNotify    int `json:"is_notify"`
}

type SetMerchantTypeReply struct {
}

// 商户充值
type MerchantChargeReq struct {
	MerchantId int64   `json:"merchant_id"`
	Amount     float64 `json:"amount"`
	Remark     string  `json:"remark"`
	UserName string `json:"user_name"`
}

type MerchantChargeReply struct {
}

// 商户数据api 价格列表
type MerchantDataApiPriceListReq struct {
	MerchantId int64 `json:"merchant_id"`
}

type MerchantDataApiPrice struct {
	MerchantDataApiId   int64   `json:"merchant_data_api_id"`
	MerchantDataApiName string  `json:"merchant_data_api_name"` // 可用别名
	UnitPrice           float64 `json:"unit_price"`
	Alias               string  `json:"-"`
}
type MerchantDataApiPriceListReply struct {
	List []MerchantDataApiPrice `json:"list"`
}

// 设置商户数据api 价格
type SetMerchantDataApiPriceReq struct {
	MerchantDataApiId int64   `json:"merchant_data_api_id"`
	UnitPrice         float64 `json:"unit_price"`
}

type SetMerchantDataApiPriceReply struct {
}

type GdConsume struct {
	Id                int64   `json:"consume_id"`
	Day               string  `json:"day"`
	Month             string  `json:"month"`
	MerchantDataApiId string  `json:"merchant_data_api_id"`
	MerchantId        int64   `json:"merchant_id"`
	Balance           int64   `json:"balance"`
	TotalCount        int64   `json:"total_count"`
	ValidCount        int64   `json:"valid_count"`
	ChargeCount       int64   `json:"charge_count"`
	Amount            float64 `json:"amount"`
}

func (o *GdConsume) TableName() string {
	return "t_gd_consume"
}

type GdBill struct {
	Id             int64   `json:"bill_id"`
	MerchantId     int64   `json:"merchant_id"`
	BillType       int     `json:"bill_type"`
	BillTime       string  `json:"bill_time"`
	Balance        float64 `json:"balance"`
	Remark         string  `json:"remark"`
	BillCreateTime string  `json:"bill_create_time"`
	CreatedAt      int64   `json:"created_at"`
	Amount         float64 `json:"amount"`
}

func (o *GdBill) TableName() string {
	return "t_gd_bill"
}

//
type BillDetailListReq struct {
	MerchantId int64  `json:"merchant_id"`
	Month      string `json:"month"`
	BillId     int64  `json:"bill_id"`
}
type BillDetailList struct {
	BillDetailId int64 `json:"bill_detail_id"`
	//MerchantName string  `json:"merchant_name"`
	//MerchantId   int64   `json:"merchant_id"`
	Month             string  `json:"month"`
	DataApiName       string  `json:"data_api_name"`
	MerchantDataApiId int64   `json:"merchant_data_api_id"`
	Alias             string  `json:"alias"`
	TotalCount        int     `json:"total_count"`
	ValidCount        int     `json:"valid_count"`
	ChargeCount       int     `json:"charge_count"`
	UnitPrice         float64 `json:"unit_price"`
	Amount            float64 `json:"amount"`
	Remark            string  `json:"-"`
}

type BillDetailRemark struct {
	Befor int    `json:"befor"`
	After int    `json:"after"`
	Time  string `json:"time"`
}

type BillDetailRemarkInfo struct {
	Befor       int    `json:"befor"`
	After       int    `json:"after"`
	Time        string `json:"time"`
	DataApiName string `json:"data_api_name"`
	Alias       string `json:"alias"`
	UserName string `json:"user_name"`
}

type BillDetailListReply struct {
	List           []BillDetailList       `json:"list"`
	RemarkList     []BillDetailRemarkInfo `json:"remark_list"`
	BillRemarkList []string               `json:"bill_remark_list"`
	Amount         float64                `json:"amount"`
	Balance        float64                `json:"balance"`
	BillStatus int `json:"bill_status"`
}

//
type UpdateBillDetailReq struct {
	BillDetailId int64 `json:"bill_detail_id"`
	ChargeCount  int   `json:"charge_count"`
	//Remark      string `json:"remark"`
	UserName string `json:"user_name"`
}

type UpdateBillDetailReply struct {
}

type BillRemarkReq struct {
	BillId int64  `json:"bill_id"`
	Remark string `json:"remark"`
}

type BillRemarkReply struct {
}

type GenerateBillReq struct {
	Month string `json:"month"`
}

type GenerateBillReply struct {
}

type BillExportExcelReq struct {
	Month      string `json:"month"`
	MerchantId int64  `json:"merchant_id"`
	BillId     int64  `json:"bill_id"`
}

type BillExportExcelReply struct {
	Url string `json:"url"`
}
