syntax = "v1"

info (
	title: // TODO: add title
	desc: // TODO: add description
	author: ""
	email: ""
)

import "basic.api"

service home-user-auth {

	// @handler UserRegisterHandler
	// post /api/user/register(RequestUserRegister) returns (response);
	//用户字体
	@handler UserFontsHandler
	get /api/user/fonts(request) returns (response);

	//状态配置
	@handler UserStatusConfigHandler
	get /api/user/status-config(request) returns (response);

	//联系服务
	@handler UserContactServiceHandler
	post /api/user/contact-service (RequestContactService) returns (response);

	// @handler UserOderListHandler
	// get /api/user/order-list(RequestOrderId) returns (response);
	//删除订单
	@handler UserOderDeleteHandler
	post /api/user/order-delete(RequestOrderId) returns (response);

	//订单列表
	@handler UserOrderListHandler
	get /api/user/order-list (UserOrderListReq) returns (response);

	//删除订单
	@handler UserOrderDeleteHandler
	get /api/user/order-delete (UserOrderDeleteReq) returns (response);

	//取消订单
	@handler UserOrderCancelHandler
	get /api/user/order-cancel (UserOrderCancelReq) returns (response);

	// 用户logo列表
	@handler UserLogoListHandler
	get /api/user/logo-list (UserLogoListReq) returns (response);

	// 再来一单
	@handler UserAgainOrderHandler
	get /api/user/one-more-order (UserAgainOrderReq) returns (response);

	// 保存商户信息
	@handler UserInfoSetHandler
	post /api/user/set_user_info (UserInfoSetReq) returns (response);

	// 用户logo设置当前
	@handler UserLogoSetHandler
	post /api/user/logo-set (UserLogoSetReq) returns (response);

	// 用户logo模版信息
	@handler UserLogoTemplateTagSetHandler
	post /api/user/logo-templatetag-set (UserLogoTemplateTagSetReq) returns (response);

	// 用户logo数据设置用户logo素材
	@handler UserLogoDataSetHandler
	post /api/user/logo-data-set (UserLogoDataSetReq) returns (response);
}

type (
	UserLogoDataSetReq {
		LogoDataId int64 `form:"logo_data_id"`
	}
)

type (
	UserLogoTemplateTagSetReq {
		TemplateTag           string `form:"template_tag"`
		TemplateTagColorIndex int64  `form:"template_tag_color_index"`
	}
)

type (
	UserLogoSetReq {
		SetLogoSelected int64 `form:"set_logo_selected"`
		LogoSelectedId  int64 `form:"logo_selected_id"`
		SetLogoCategory int64 `form:"set_logo_category"`
		CategoryId      int64 `form:"category_id"`
	}
)

type (
	UserInfoSetReq {
		Module   string `form:"module,options=[merchant_category,logo_merchant_category,profile]"` // json格式字符串
		Metadata string `form:"metadata"`                                                          // json格式字符串
	}
)

type (
	UserAgainOrderReq {
		Sn string `form:"sn"` // 订单编号
	}
	UserAgainOrderRes struct{}
)

type (
	UserLogoListReq {
	}
	UserLogoListRes {
	}
)

type (
	UserOrderDeleteReq {
		ID int64 `form:"id"` //订单id
	}
	UserOrderDeleteRes {
	}
)

//取消订单
type (
	UserOrderCancelReq {
		ID             int64  `form:"id"`                     //订单id
		RefundReasonId int64  `form:"refund_reason_id"`       //退款配置id
		RefundReason   string `form:"refund_reason,optional"` //退款原因
	}
	UserOrderCancelRsp {
	}
)

// 获取订单列表
type (
	UserOrderListReq {
		Page     int64 `form:"page"`      // 分页
		PageSize int64 `form:"page_size"` // 每页数量
		Status   int64 `form:"status"`    // 状态筛选
		Time     int64 `form:"time"`      // 时间筛选
		Total    int64 `form:"total"`     // 总数
		Size     int64 `form:"size"`      // 图片尺寸
	}

	UserOrderListRsp {
		Items []Items `json:"items"`
		Meta  Meta    `json:"_meta"`
	}
)

type Items {
	ID              int64        `json:"id"`
	Sn              string       `json:"sn"`
	UserID          int64        `json:"user_id"`
	TotalAmount     int64        `json:"total_amount"`
	Ctime           string       `json:"ctime"`
	Status          int64        `json:"status"`
	DeliveryMethod  int64        `json:"delivery_method"`
	TsTime          string       `json:"ts_time"`
	IsPayCompleted  int64        `json:"is_pay_completed"`
	DeliverSn       string       `json:"deliver_sn"`
	PcsBox          int64        `json:"pcs_box"`
	Pcs             int64        `json:"pcs"`
	SurplusAt       int64        `json:"surplus_at"`
	LogisticsStatus int64        `json:"logistics_status"`
	StatusTimes     []StatusTime `json:"status_times"`
	Deposit         int64        `json:"deposit"`
	Remaining       int64        `json:"remaining"`
	ProductList     []Product    `json:"productList"`
	IsStop          int64        `json:"is_stop"`
}

type StatusTime {
	Key  int    `json:"key"`
	Time string `json:"time"`
}

type Product {
	Cover                 string `json:"cover"`
	Fitting               string `json:"fitting"`
	OptionPrice           int64  `json:"option_price"`
	OrderDetailTemplateId int64  `json:"order_detail_template_id"`
	OrderId               int64  `json:"order_id"`
	Pcs                   int64  `json:"pcs"`
	PcsBox                int64  `json:"pcs_box"`
	Price                 int64  `json:"price"`
	ProductId             int64  `json:"product_id"`
	Size                  string `json:"size"`
	Title                 string `json:"title"`
	IsStop                int64  `json:"is_stop"`
}

type RequestContactService {
	Type       string `json:"type"`            // 类型
	RelationID int64  `json:"relation_id"`     // 关系id
	Name       string `json:"name"`            // 名字
	Email      string `json:"email"`           // email
	Phone      string `json:"phone,optional"`  // phone
	Remark     string `json:"remark,optional"` // remark标记
}

type RequestBasicInfoForm {
	FirstName            string `json:"first_name"`             // FirstName
	LastName             string `json:"last_name"`              // LastName
	Company              string `json:"company"`                // 公司名称
	Mobile               string `json:"mobile"`                 // 手机号码
	Email                string `json:"email"`                  // 邮箱
	Type                 int64  `json:"type"`                   // 1正常 0不正常
	IsOrderStatusEmail   int64  `json:"is_order_status_email"`  // 订单状态改变时是否接收邮件
	IsEmailAdvertisement int64  `json:"is_email_advertisement"` // 是否接收邮件广告
	IsOrderStatusPhone   int64  `json:"is_order_status_phone"`  // 订单状态改变是是否接收电话
	IsPhoneAdvertisement int64  `json:"is_phone_advertisement"` // 是否接收短信广告
	IsOpenRender         int64  `json:"is_open_render"`         // 是否打开个性化渲染(1:开启,0:关闭)
	IsLowRendering       int64  `json:"is_low_rendering"`       // 是否开启低渲染模型渲染
	IsRemoveBg           int64  `json:"is_remove_bg"`           // 用户上传logo是否去除背景

	// NewPassword string `form:"new_password,optional" db:"new_password"` // new_password 如果存在新密码
}

// RequestAddAddress 增加地址结构
type RequestAddAddress {
	Id        int64  `json:"id,optional"` // address_id 地址id
	IsDefault int64  `json:"is_default"`  //是否默认
	Name      string `json:"name"`        //收货人
	FirstName string `json:"first_name"`  //first_name
	LastName  string `json:"last_name"`   //last_name
	Mobile    string `json:"mobile"`      //手机
	ZipCode   string `json:"zip_code"`    //邮编
	Street    string `json:"street"`      //街道
	Suite     string `json:"suite"`       //房号
	City      string `json:"city"`        //城市
	State     string `json:"state"`       //州
}

// RequestOrderId 传入订单id的结构
type RequestOrderId {
	OrderId        int64  `json:"id"`               //订单id
	RefundReasonId int64  `json:"refund_reason_id"` //取消原因id
	RefundReason   string `json:"refund_reason"`    //取消原因
}

// UserBasicInfoHandler 返回data结构
type DataUserBasicInfo {
	Type                 int64 `json:"type"`                   // 1普通餐厅 2连锁餐厅
	IsOrderStatusEmail   int64 `json:"is_order_status_email"`  // 订单状态改变时是否接收邮件
	IsEmailAdvertisement int64 `json:"is_email_advertisement"` // 是否接收邮件广告
	IsOrderStatusPhone   int64 `json:"is_order_status_phone"`  // 订单状态改变是是否接收电话
	IsPhoneAdvertisement int64 `json:"is_phone_advertisement"` // 是否接收短信广告
	IsOpenRender         int64 `json:"is_open_render"`         // 是否打开个性化渲染(1:开启,0:关闭)
	IsThousandFace       int64 `json:"is_thousand_face"`       // 是否已经存在千人千面(1:存在,0:不存在)
	IsLowRendering       int64 `json:"is_low_rendering"`       // 是否开启低渲染模型渲染
	IsRemoveBg           int64 `json:"is_remove_bg"`           // 用户上传logo是否去除背景
}

// /user/get-type reponse.data 结构
type DataGetType {
	Id   int64  `json:"key"`  // ID
	Name string `json:"name"` // 餐厅名字
}

// KeyName 普通的key name 对象结构. eg: /user/status-config 用在返回值
type KeyName {
	Key  int    `json:"key"`
	Name string `json:"name"`
}

// KeyNameButton 普通的key name button 对象结构 eg: /user/status-config 用在返回值
type KeyNameButton {
	Key    int      `json:"key"`
	Name   string   `json:"name"`
	Button []string `json:"button"`
}

// DataStatusConfig /user/status-config 返回值data结构
type DataStatusConfig {
	SearchList               []KeyName       `json:"search_list"`                //搜索下拉列表
	OrderStatus              []KeyNameButton `json:"order_status"`               //直邮单状态
	InventoryStatus          []KeyNameButton `json:"Inventory_status"`           //云仓单状态
	OrderLogisticsStatus     []KeyName       `json:"order_logistics_status"`     //订单物流状态
	InventoryLogisticsStatus []KeyName       `json:"Inventory_logistics_status"` //订单物流状态
	Time                     []KeyName       `json:"time"`                       //返回订单时间筛选项
	RefundReason             []KeyName       `json:"refund_reason"`              //退款原因说明项
	LogisticsStatus          []KeyNameButton `json:"logistics_status"`           //物流状态筛选项
}

// DataAddressList /user/address-list 返回值
type DataAddressList {
	Id        int64  `json:"id"`
	UserId    int64  `json:"user_id"`    // 用户ID
	Name      string `json:"name"`       // 地址名称
	FirstName string `json:"first_name"` // FirstName
	LastName  string `json:"last_name"`  // LastName
	Mobile    string `json:"mobile"`     // 手机号码
	Street    string `json:"street"`     // 街道
	Suite     string `json:"suite"`      // 房号
	City      string `json:"city"`       // 城市
	State     string `json:"state"`      // 州名
	// Country   string `json:"country"`    // 国家
	ZipCode string `json:"zip_code"` // 邮编
	// Status    int64  `json:"status"`     // 1正常 0异常
	IsDefault int64 `json:"is_default"` // 1默认地址,0非默认地址
}