package constants

// 订单类型
const (
	DELIVERYMETHODDIRECTMAIL   int64 = 1
	DELIVERYMETHODDSCLOUDSTORE int64 = 2
)

// 货币
type Currency string

const (
	CURRENCYUSD Currency = "usd"
)

// 金额单位
type AmountUnit interface{}

// 汇率单位
type ExchangeRateUnit interface{}

// 交易方式
type PayMethods string

const (
	PAY_METHOD_CARD PayMethods = "CARD"
	PayMethodVISA   PayMethods = "VISA"
)

// 支付状态
type PayStatusCode int64

const (
	PAYSTATUSUNPAID   PayStatusCode = 10 //10,未支付
	PAYSTATUSPAID     PayStatusCode = 20 //20,已支付
	PAYSTATUSREFUNDED PayStatusCode = 30 //30,已退款
)

// 订单支付状态
type OrderPayStatusCode int64

// 0,未付首款
// 10,已付首款
// 20,已退首款
// 30,已付尾款
// 40,已退尾款
const (
	ORDERPAYSTATUSUNPAIDDEPOSIT     OrderPayStatusCode = 0
	ORDERPAYSTATUSPAIDDEPOSIT       OrderPayStatusCode = 10
	ORDERPAYSTATUSREFUNDEDDEPOSIT   OrderPayStatusCode = 20
	ORDERPAYSTATUSPAIDDREMAINING    OrderPayStatusCode = 30
	ORDERPAYSTATUSREFUNDEDREMAINING OrderPayStatusCode = 40
)

// 订单状态
type OrderStatusCode int64

const (
	ORDER_STATUS_UNPAIDDEPOSIT                 OrderStatusCode = 0        // 0,未支付定金
	ORDER_STATUS_DIRECTMAIL_ORDERED            OrderStatusCode = 10100    // 10100,直邮单--已下单
	ORDER_STATUS_DIRECTMAIL_ORDEREDMAINING     OrderStatusCode = 10100001 // 10100001,直邮单--已下单--尾款
	ORDER_STATUS_DIRECTMAIL_CANCEL             OrderStatusCode = 10101    // 10101,直邮单--已取消
	ORDER_STATUS_DIRECTMAIL_STARTPRODUCTION    OrderStatusCode = 10200    // 10200,直邮单--开始生产
	ORDER_STATUS_DIRECTMAIL_COMPLETEPRODUCTION OrderStatusCode = 10300    // 10300,直邮单--生产完成
	ORDER_STATUS_DIRECTMAIL_SHIPPED            OrderStatusCode = 10400    // 10400,直邮单--已发货
	ORDER_STATUS_DIRECTMAIL_ARRIVED            OrderStatusCode = 10500    // 10500,直邮单--已到达
	ORDER_STATUS_CLOUDSTORE_ORDERED            OrderStatusCode = 20100    // 20100,云仓单--已下单
	ORDER_STATUS_CLOUDSTORE_ORDEREDMAINING     OrderStatusCode = 20100001 // 20100001,云仓单--已下单-尾款
	ORDER_STATUS_CLOUDSTORE_CANCEL             OrderStatusCode = 20101    // 20101,云仓单--已取消
	ORDER_STATUS_CLOUDSTORE_STARTPRODUCTION    OrderStatusCode = 20200    // 20200,云仓单--开始生产
	ORDER_STATUS_CLOUDSTORE_COMPLETEPRODUCTION OrderStatusCode = 20300    // 20300,云仓单--生产完成
	ORDER_STATUS_CLOUDSTORE_ARRIVEDWAREHOUSE   OrderStatusCode = 20400    // 20400,云仓单--直达仓库
	ORDER_STATUS_COMPLETE                      OrderStatusCode = 30000    // 30000,订单完成
)

// 订单状态名称
var OrderStatusMessage map[OrderStatusCode]string

// 支付状态名称
var PayStatusMessage map[PayStatusCode]string

// 订单状态--用户可见--直邮
var OrderStatusUserDIRECTMAIL []OrderStatusCode

// 订单状态--用户可见--云仓
var OrderStatusUserCLOUDSTORE []OrderStatusCode

func init() {
	// 订单状态名称
	PayStatusMessage = make(map[PayStatusCode]string)
	PayStatusMessage[PAYSTATUSUNPAID] = "Unpaid"
	PayStatusMessage[PAYSTATUSPAID] = "Paid"
	PayStatusMessage[PAYSTATUSREFUNDED] = "Refunded"

	// 订单状态名称
	OrderStatusMessage = make(map[OrderStatusCode]string)
	OrderStatusMessage[ORDER_STATUS_UNPAIDDEPOSIT] = "未支付定金"

	OrderStatusMessage[ORDER_STATUS_DIRECTMAIL_ORDERED] = "直邮单--已下单"
	OrderStatusMessage[ORDER_STATUS_DIRECTMAIL_STARTPRODUCTION] = "直邮单--开始生产"
	OrderStatusMessage[ORDER_STATUS_DIRECTMAIL_COMPLETEPRODUCTION] = "直邮单--生产完成"
	OrderStatusMessage[ORDER_STATUS_DIRECTMAIL_SHIPPED] = "直邮单--已发货"
	OrderStatusMessage[ORDER_STATUS_DIRECTMAIL_ARRIVED] = "直邮单--已到达"

	OrderStatusMessage[ORDER_STATUS_CLOUDSTORE_ORDERED] = "云仓单--已下单"
	OrderStatusMessage[ORDER_STATUS_CLOUDSTORE_STARTPRODUCTION] = "云仓单--开始生产"
	OrderStatusMessage[ORDER_STATUS_CLOUDSTORE_COMPLETEPRODUCTION] = "云仓单--生产完成"
	OrderStatusMessage[ORDER_STATUS_CLOUDSTORE_ARRIVEDWAREHOUSE] = "云仓单--直达仓库"

	OrderStatusMessage[ORDER_STATUS_COMPLETE] = "订单完成"

	// 订单状态--用户可见--直邮
	OrderStatusUserDIRECTMAIL = []OrderStatusCode{
		ORDER_STATUS_UNPAIDDEPOSIT, ORDER_STATUS_COMPLETE,
		ORDER_STATUS_DIRECTMAIL_ORDERED, ORDER_STATUS_DIRECTMAIL_STARTPRODUCTION, ORDER_STATUS_DIRECTMAIL_COMPLETEPRODUCTION, ORDER_STATUS_DIRECTMAIL_SHIPPED, ORDER_STATUS_DIRECTMAIL_ARRIVED,
	}
	// 订单状态--用户可见--云仓
	OrderStatusUserCLOUDSTORE = []OrderStatusCode{
		ORDER_STATUS_UNPAIDDEPOSIT, ORDER_STATUS_COMPLETE,
		ORDER_STATUS_CLOUDSTORE_ORDERED, ORDER_STATUS_CLOUDSTORE_STARTPRODUCTION, ORDER_STATUS_CLOUDSTORE_COMPLETEPRODUCTION, ORDER_STATUS_CLOUDSTORE_ARRIVEDWAREHOUSE,
	}
}