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 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);
	
}

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

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

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

// UserLoginHandler 用户登录请求结构
type DataUserLogin {
	Token    string `json:"token"`     // 充值密码token
	JwtToken string `json:"jwt_token"` // jwt 的Token
}

// UserBasicInfoHandler 返回data结构
type DataUserBasicInfo {
	Id                   int64  `db:"id"`         // ID
	FaceId               int64  `db:"face_id"`    // facebook的userid
	Sub                  int64  `db:"sub"`        // google的sub
	FirstName            string `db:"first_name"` // FirstName
	LastName             string `db:"last_name"`  // LastName
	Username             string `db:"username"`   // 用户名
	Company              string `db:"company"`    // 公司名称
	Mobile               string `db:"mobile"`     // 手机号码
	AuthKey              string `db:"auth_key"`
	PasswordHash         string `db:"password_hash"`
	VerificationToken    string `db:"verification_token"`
	PasswordResetToken   string `db:"password_reset_token"`
	Email                string `db:"email"`                  // 邮箱
	Type                 int64  `db:"type"`                   // 1普通餐厅 2连锁餐厅
	Status               int64  `db:"status"`                 // 1正常 0不正常
	IsDel                int64  `db:"is_del"`                 // 是否删除 1删除
	CreatedAt            int64  `db:"created_at"`             // 添加时间
	UpdatedAt            int64  `db:"updated_at"`             // 更新时间
	IsOrderStatusEmail   int64  `db:"is_order_status_email"`  // 订单状态改变时是否接收邮件
	IsEmailAdvertisement int64  `db:"is_email_advertisement"` // 是否接收邮件广告
	IsOrderStatusPhone   int64  `db:"is_order_status_phone"`  // 订单状态改变是是否接收电话
	IsPhoneAdvertisement int64  `db:"is_phone_advertisement"` // 是否接收短信广告
	IsOpenRender         int64  `db:"is_open_render"`         // 是否打开个性化渲染(1:开启,0:关闭)
	IsThousandFace       int64  `db:"is_thousand_face"`       // 是否已经存在千人千面(1:存在,0:不存在)
	IsLowRendering       int64  `db:"is_low_rendering"`       // 是否开启低渲染模型渲染
	IsRemoveBg           int64  `db:"is_remove_bg"`           // 用户上传logo是否去除背景
}

// /user/get-type reponse.data 结构
type DataGetType {
	Id   int64  `db:"id" json:"key"`    // ID
	Name string `db:"name" 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  `db:"id"`
	UserId    int64  `db:"user_id"`    // 用户ID
	Name      string `db:"name"`       // 地址名称
	FirstName string `db:"first_name"` // FirstName
	LastName  string `db:"last_name"`  // LastName
	Mobile    string `db:"mobile"`     // 手机号码
	Street    string `db:"street"`     // 街道
	Suite     string `db:"suite"`      // 房号
	City      string `db:"city"`       // 城市
	State     string `db:"state"`      // 州名
	// Country   string `db:"country"`    // 国家
	ZipCode string `db:"zip_code"` // 邮编
	// Status    int64  `db:"status"`     // 1正常 0异常
	IsDefault int64 `db:"is_default"` // 1默认地址,0非默认地址
}