package model

import (
	"time"

	"go.mongodb.org/mongo-driver/bson/primitive"
)

// 订单管理
type Order struct {
	Id             primitive.ObjectID `bson:"_id,omitempty" json:"_id"`
	UserId         primitive.ObjectID `bson:"userId,omitempty" json:"userId"`
	SupplyId       primitive.ObjectID `bson:"supplyId,omitempty" json:"supplyId"`
	Address        *Address           `bson:"address,omitempty" json:"address"`
	Products       []*OrderProduct    `bson:"products,omitempty" json:"products"`
	DeliveryMethod string             `bson:"deliveryMethod,omitempty" json:"deliveryMethod"`
	Remark         string             `bson:"remark,omitempty" json:"remark"`
	Status         int                `bson:"status,omitempty" json:"status"`     // -1:待发货 1:已发货 2:已完成 3：取消
	IsCancel       int                `bson:"isCancel,omitempty" json:"isCancel"` // -1:不可取消 1：可取消
	CreateTime     time.Time          `bson:"createTime,omitempty" json:"createTime"`
	UpdateTime     time.Time          `bson:"updateTime,omitempty" json:"updateTime"`
}

type OrderProduct struct {
	Id        primitive.ObjectID `bson:"id,omitempty" json:"id"`               // id
	ProductId primitive.ObjectID `bson:"productId,omitempty" json:"productId"` // 对应产品id
	SupplyId  primitive.ObjectID `bson:"supplyId,omitempty" json:"supplyId"`   // 供应链id
	Name      string             `bson:"name,omitempty" json:"name"`
	Size      int                `bson:"size,omitempty" json:"size"`           // 下单选定的尺寸
	Color     string             `bson:"color,omitempty" json:"color"`         // 下单选定的颜色
	Unit      string             `bson:"unit,omitempty" json:"unit"`           // 型号
	Cover     string             `bson:"cover,omitempty" json:"cover"`         // 封面图
	ExpressNo string             `bson:"expressNo,omitempty" json:"expressNo"` // 快递单号，商家发货时需要输入
	Status    int                `bson:"status,omitempty" json:"status"`       // -1:待发货 1:已发货 2:已完成 3:取消
}

type OrderAddReq struct {
	Products       []*ShopCart `bson:"products,omitempty" json:"products"`
	Supply         *UserSmaple `bson:"supply,omitempty" json:"supply"`
	Address        *Address    `bson:"address,omitempty" json:"address"`
	DeliveryMethod string      `bson:"deliveryMethod,omitempty" json:"deliveryMethod"`
	Remark         string      `bson:"remark,omitempty" json:"remark"`
}
