syntax = "v1"

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

import "basic.api"

type request {
	// TODO: add members here and delete this comment
	// Name string `form:"name"` // parameters are auto validated
}

service home-user-auth {
	@handler UserLoginHandler
	post /user/login(RequestUserLogin) returns (response);
	
	@handler AcceptCookieHandler
	post /user/accept-cookie(request) returns (response);
	
	@handler UserFontsHandler
	get /user/fonts(request) returns (response);
	
	@handler UserGetTypeHandler
	get /user/get-type(request) returns (response);
	
	@handler UserSaveBasicInfoHandler
	post /user/basic-info(RequestBasicInfoForm) returns (response);
	
	@handler UserStatusConfigHandler
	post /user/status-config(request) returns (response);
	
	@handler UserBasicInfoHandler
	get /user/basic-info(request) returns (response);
	
	@handler UserAddressListHandler
	get /user/address-list(request) returns (response);
	
	@handler UserAddAddressHandler
	post /user/add-address(RequestAddAddress) returns (response);
	
	@handler UserOderDeleteHandler
	post /user/order-delete(RequestOrderId) returns (response);
}

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 如果存在新密码
}

// UserAddAddressHandler 用户登录请求结构
type RequestUserLogin {
	Name     string `json:"name"`
	Password string `json:"pwd"`
}

// RequestAddAddress 增加地址结构
type RequestAddAddress {
	Id        int64  `json:"id"`         // 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"`    //取消原因
}

// UserLoginHandler 用户登录请求结构
type DataUserLogin {
	Token string `json:"token"` // 登录jwt token
}

// DataGuest 游客获取toekn请求结构
type DataGuest {
	Token string `json:"token"` // 登录jwt token
}

// 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非默认地址
}