72 lines
3.2 KiB
Go
72 lines
3.2 KiB
Go
|
|
package dto
|
||
|
|
|
||
|
|
import (
|
||
|
|
"with_you/internal/model"
|
||
|
|
)
|
||
|
|
|
||
|
|
type TradeImageResponse struct {
|
||
|
|
ID string `json:"id"`
|
||
|
|
URL string `json:"url"`
|
||
|
|
ThumbnailURL string `json:"thumbnail_url"`
|
||
|
|
PreviewURL string `json:"preview_url"`
|
||
|
|
PreviewURLLarge string `json:"preview_url_large"`
|
||
|
|
Width int `json:"width"`
|
||
|
|
Height int `json:"height"`
|
||
|
|
}
|
||
|
|
|
||
|
|
type TradeItemResponse struct {
|
||
|
|
ID string `json:"id"`
|
||
|
|
UserID string `json:"user_id"`
|
||
|
|
TradeType string `json:"trade_type"`
|
||
|
|
Category string `json:"category"`
|
||
|
|
Title string `json:"title"`
|
||
|
|
Content string `json:"content"`
|
||
|
|
Segments model.MessageSegments `json:"segments,omitempty"`
|
||
|
|
Images []TradeImageResponse `json:"images"`
|
||
|
|
Price *float64 `json:"price,omitempty"`
|
||
|
|
Condition string `json:"condition,omitempty"`
|
||
|
|
Status string `json:"status"`
|
||
|
|
ViewsCount int `json:"views_count"`
|
||
|
|
FavoritesCount int `json:"favorites_count"`
|
||
|
|
IsFavorited bool `json:"is_favorited"`
|
||
|
|
Author *UserResponse `json:"author"`
|
||
|
|
CreatedAt string `json:"created_at"`
|
||
|
|
UpdatedAt string `json:"updated_at"`
|
||
|
|
}
|
||
|
|
|
||
|
|
type CreateTradeItemRequest struct {
|
||
|
|
TradeType string `json:"trade_type" binding:"required,oneof=sell buy"`
|
||
|
|
Category string `json:"category" binding:"required,oneof=digital book clothing daily cosmetics sport ticket other"`
|
||
|
|
Title string `json:"title" binding:"required,max=100"`
|
||
|
|
Content string `json:"content"`
|
||
|
|
Segments model.MessageSegments `json:"segments"`
|
||
|
|
Images []string `json:"images"`
|
||
|
|
Price *float64 `json:"price"`
|
||
|
|
Condition string `json:"condition" binding:"omitempty,oneof=brand_new like_new lightly_used well_used"`
|
||
|
|
}
|
||
|
|
|
||
|
|
type UpdateTradeItemRequest struct {
|
||
|
|
TradeType *string `json:"trade_type" binding:"omitempty,oneof=sell buy"`
|
||
|
|
Category *string `json:"category" binding:"omitempty,oneof=digital book clothing daily cosmetics sport ticket other"`
|
||
|
|
Title *string `json:"title" binding:"omitempty,max=100"`
|
||
|
|
Content *string `json:"content"`
|
||
|
|
Segments model.MessageSegments `json:"segments"`
|
||
|
|
Images []string `json:"images"`
|
||
|
|
Price *float64 `json:"price"`
|
||
|
|
Condition *string `json:"condition" binding:"omitempty,oneof=brand_new like_new lightly_used well_used"`
|
||
|
|
}
|
||
|
|
|
||
|
|
type UpdateTradeItemStatusRequest struct {
|
||
|
|
Status string `json:"status" binding:"required,oneof=active sold bought offline"`
|
||
|
|
}
|
||
|
|
|
||
|
|
type TradeCursorPageResponse struct {
|
||
|
|
Items []*TradeItemResponse `json:"list"`
|
||
|
|
NextCursor string `json:"next_cursor,omitempty"`
|
||
|
|
PrevCursor string `json:"prev_cursor,omitempty"`
|
||
|
|
HasMore bool `json:"has_more"`
|
||
|
|
}
|
||
|
|
|
||
|
|
type TradeFavoriteResponse struct {
|
||
|
|
Favorited bool `json:"favorited"`
|
||
|
|
}
|