package request

import common "sundynix-go/model/commom/request"

// ExchangeItemCreateReq 创建兑换商品请求
type ExchangeItemCreateReq struct {
	Name         string `json:"name" binding:"required"`
	Description  string `json:"description"`
	ImageId      string `json:"imageId"`
	Type         string `json:"type" binding:"required"` // PHYSICAL / VIRTUAL / COUPON
	CostSunlight int64  `json:"costSunlight" binding:"required,min=1"`
	Stock        int    `json:"stock"`        // -1 无限
	LimitPerUser int    `json:"limitPerUser"` // 0 不限
	Sort         int    `json:"sort"`
	StartTime    string `json:"startTime"` // 可选
	EndTime      string `json:"endTime"`   // 可选
}

// ExchangeItemUpdateReq 更新兑换商品请求
type ExchangeItemUpdateReq struct {
	Id           string `json:"id" binding:"required"`
	Name         string `json:"name"`
	Description  string `json:"description"`
	ImageId      string `json:"imageId"`
	Type         string `json:"type"`
	CostSunlight int64  `json:"costSunlight"`
	Stock        int    `json:"stock"`
	LimitPerUser int    `json:"limitPerUser"`
	Status       int    `json:"status"` // 1上架 2下架
	Sort         int    `json:"sort"`
	StartTime    string `json:"startTime"`
	EndTime      string `json:"endTime"`
}

// ExchangeItemListReq 商品列表查询请求
type ExchangeItemListReq struct {
	common.PageInfo
	Type   string `json:"type" form:"type"`     // 按类型筛选
	Status int    `json:"status" form:"status"` // 按状态筛选
}

// ExchangeReq 用户兑换请求
type ExchangeReq struct {
	ItemId        string `json:"itemId" binding:"required"`
	Quantity      int    `json:"quantity"` // 默认1
	RecipientName string `json:"recipientName"`
	Phone         string `json:"phone"`
	Address       string `json:"address"`
}

// ExchangeOrderListReq 订单列表查询请求
type ExchangeOrderListReq struct {
	common.PageInfo
	Status int    `json:"status" form:"status"` // 按状态筛选
	UserId string `json:"userId" form:"userId"` // 管理端按用户筛选
}

// ExchangeOrderUpdateReq 更新订单状态请求 (管理端)
type ExchangeOrderUpdateReq struct {
	Id         string `json:"id" binding:"required"`
	Status     int    `json:"status" binding:"required"` // 目标状态
	TrackingNo string `json:"trackingNo"`                // 快递单号（发货时）
	Remark     string `json:"remark"`
}
