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"
	PAY_METHOD_VISA PayMethods = "VISA"
)

// 支付状态
type PayStatusCode int64

const (
	PAY_STATUS_UNPAID   PayStatusCode = 10 //10,未支付
	PAY_STATUS_PAID     PayStatusCode = 20 //20,已支付
	PAY_STATUS_REFUNDED PayStatusCode = 30 //30,已退款
)

// 订单支付状态
type OrderPayStatusCode int64

// 0,未付首款
// 10,已付首款
// 20,已退首款
// 30,已付尾款
// 40,已退尾款
const (
	ORDER_PAY_STATUS_UNPAIDDEPOSIT     OrderPayStatusCode = 0  // 0,未付首款
	ORDER_PAY_STATUS_PAIDDEPOSIT       OrderPayStatusCode = 10 // 10,已付首款
	ORDER_PAY_STATUS_REFUNDEDDEPOSIT   OrderPayStatusCode = 20 // 20,已退首款
	ORDER_PAY_STATUS_PAIDDREMAINING    OrderPayStatusCode = 30 // 30,已付尾款
	ORDER_PAY_STATUS_REFUNDEDREMAINING OrderPayStatusCode = 40 // 40,已退尾款
)

// 订单状态
type OrderStatusCode int64

const (
	ORDER_STATUS_UNPAIDDEPOSIT OrderStatusCode = 0  // 0,未支付定金
	ORDER_STATUS_CLOSE         OrderStatusCode = 10 // 10,订单已关闭
	ORDER_STATUS_COMPLETE      OrderStatusCode = 20 // 20,订单已完成
	ORDER_STATUS_DELETE        OrderStatusCode = 30 // 20,订单已删除

	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,云仓单--直达仓库
)

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

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

// 支付状态名称
var OrderPayStatusMessage map[OrderPayStatusCode]string

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

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

// 订单货币
var OrderCurrencyMessage map[Currency]string

func init() {
	// 订单货币
	OrderCurrencyMessage = make(map[Currency]string, 1)
	OrderCurrencyMessage[CURRENCYUSD] = "$"

	// 订单状态名称
	OrderPayStatusMessage = make(map[OrderPayStatusCode]string)
	OrderPayStatusMessage[ORDER_PAY_STATUS_UNPAIDDEPOSIT] = "Deposit Payment Unpaid"     // 未支付首款
	OrderPayStatusMessage[ORDER_PAY_STATUS_PAIDDEPOSIT] = "Deposit Payment Paid"         // 已支付首款
	OrderPayStatusMessage[ORDER_PAY_STATUS_REFUNDEDDEPOSIT] = "Deposit Payment Refunded" // 首款已回退
	OrderPayStatusMessage[ORDER_PAY_STATUS_PAIDDREMAINING] = "Final Payment Paid"        // 尾款未支付
	OrderPayStatusMessage[ORDER_PAY_STATUS_REFUNDEDREMAINING] = "Final Payment Refunded" // 已退款

	// 订单状态名称
	PayStatusMessage = make(map[PayStatusCode]string)
	PayStatusMessage[PAY_STATUS_UNPAID] = "Unpaid"     // 未支付
	PayStatusMessage[PAY_STATUS_PAID] = "Paid"         // 已支付
	PayStatusMessage[PAY_STATUS_REFUNDED] = "Refunded" // 已退款

	// 订单状态名称
	OrderStatusMessage = make(map[OrderStatusCode]string)
	OrderStatusMessage[ORDER_STATUS_UNPAIDDEPOSIT] = "Deposit Payment Unpaid" // 首款未支付
	OrderStatusMessage[ORDER_STATUS_CLOSE] = "Closed"                         // 已关闭
	OrderStatusMessage[ORDER_STATUS_COMPLETE] = "Completed"                   // 已完成
	OrderStatusMessage[ORDER_STATUS_DELETE] = "Deleted"                       // 已删除

	OrderStatusMessage[ORDER_STATUS_DIRECTMAIL_ORDERED] = "Ordered"                        // 直邮单--已下单
	OrderStatusMessage[ORDER_STATUS_DIRECTMAIL_ORDEREDMAINING] = "Final Payment Paid"      // 直邮单--已下单--尾款
	OrderStatusMessage[ORDER_STATUS_DIRECTMAIL_STARTPRODUCTION] = "Start Production"       // 直邮单--开始生产
	OrderStatusMessage[ORDER_STATUS_DIRECTMAIL_COMPLETEPRODUCTION] = "Production Complete" // 直邮单--生产完成
	OrderStatusMessage[ORDER_STATUS_DIRECTMAIL_SHIPPED] = "Shipped"                        // 直邮单--已发货
	OrderStatusMessage[ORDER_STATUS_DIRECTMAIL_ARRIVED] = "Delivered"                      // 直邮单--已到达

	OrderStatusMessage[ORDER_STATUS_CLOUDSTORE_ORDERED] = "Ordered"                        // 云仓单--已下单
	OrderStatusMessage[ORDER_STATUS_CLOUDSTORE_ORDEREDMAINING] = "Final Payment Paid"      // 云仓单--已下单-尾款
	OrderStatusMessage[ORDER_STATUS_CLOUDSTORE_STARTPRODUCTION] = "Start Production"       // 云仓单--开始生产
	OrderStatusMessage[ORDER_STATUS_CLOUDSTORE_COMPLETEPRODUCTION] = "Production Complete" // 云仓单--生产完成
	OrderStatusMessage[ORDER_STATUS_CLOUDSTORE_ARRIVEDWAREHOUSE] = "Arrived Inventory"     // 云仓单--直达仓库

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