package trenditapi

var (
	TiAppID     = "1088834319474253824"
	TiAppSecret = "79e3b918aeca427bbbf9d0503f9f9106"
	TestSn      = "670020035344" //打印机编号
	TestKey     = "6p7wkk"       //打印机密钥
	BaseUrl     = "https://iot-device.trenditiot.com/openapi"
)

const (
	HttpStatusSuccessCode = 200 //http返回成功状态码
	ResponseCodeSuccess   = 0   //请求成功码
	//优先使用语言
	LangLatin   = 13 //拉丁文
	LangChinese = 16 //中文
	//打印浓度
	DensityLighter  = 4 //较淡
	DensityLight    = 5 //淡
	DensityStronger = 6 //较浓(默认)
	DensityStrong   = 7 //浓
	//打印机音量 1~5 值越大声越大
	Volume1 = 1
	Volume2 = 2
	Volume3 = 3
	Volume4 = 4
	Volume5 = 5 //(默认)
	//打印机状态
	OnlineStatus              = 1 //在线
	OfflineStatus             = 0 //当前离线
	WorkStatusReady           = 0 //就绪
	WorkStatusPrinting        = 1 //打印中
	WorkStatusPaperLack       = 2 //缺纸
	WorkStatusOverTemperature = 3 //过温
	WorkStatusPrintFail       = 4 //打印故障
	//设备音源
	VoiceMTNew       = "1"  //美团新订单提醒
	VoiceELMNew      = "2"  //饿了么新订单提醒
	VoiceJDDJNew     = "3"  //京东到家新订单提醒
	VoiceNew         = "4"  //通用新订单
	VoiceCancel      = "5"  //通用取消订单
	VoiceRefund      = "6"  //通用退单
	VoiceReminders   = "7"  //用户催单
	VoiceNewShort    = "10" //简短 - 通用新订单提醒
	VoiceCancelShort = "11" //简短 - 取消订单提醒
)

//错误码信息
var ErrMsg = map[int]string{
	1419:  "打印请求过快",
	1420:  "设备缓存队列发生溢出",
	31405: "消息发送失败，未知原因",
	31406: "消息发送失败，设备掉线",
	31407: "消息发送失败，接收超时",
	31408: "打印机参数列表为空",
	31409: "打印机SN号超过最大500个的限制",
	31410: "添加的SN号有重复",
	31411: "设备已绑定其他商户",
	31412: "设备已绑定",
	31413: "设备密钥错误",
	31414: "无效设备SN编码",
	31415: "打印请求记录不存在",
	31416: "音量参数无效",
	31417: "浓度参数无效",
	31418: "设备未绑定",
	31419: "无效的打印速度参数",
	1019: "	依具体错误情况返回", //传参数不合法通用异常编码，如缺少必填请求参数，参数值超范围等等
	1021: "	数据格式转换错误",
}

type BaseReq struct {
	AppID string `json:"appid"` //应用ID
	Uid   string `json:"uid"`   //请求唯一ID，只能用来请求一次，不可以重复
	STime string `json:"stime"` //timestamp，请求时间戳，精确秒(UTC+8)
	Sign  string `json:"sign"`  //签名 md5(uid+appid+stime+appsecrect+请求Json内容)
}

type TIResponse struct {
	HttpStatusCode int       `json:"httpStatusCode"`
	BaseRes        *BaseResp `json:"base_res"`
}
type BaseResp struct {
	Code    int         `json:"code"`    //响应码
	Message string      `json:"message"` //响应码对应说明
	Data    interface{} `json:"data"`    //操作结果
}

//增加打印机 list
type AddPrinterReq struct {
	Sn  string `json:"sn"`  //打印机编号
	Key string `json:"key"` //设备密钥
	//非必填
	Name string `json:"name"` //设备名称或备注
	Lang int    `json:"lang"` //优先使用语言 13-拉丁文；16-中文; 只有设备支持对应语言时才生效，不支持时使用默认设置
}
type AddPrinterResp struct {
	FailItem []FailItem
}

//批量操作时的错误返回
type FailItem struct {
	Sn     string `json:"sn"`
	Reason string `json:"reason"`
}

//修改打印机信息
type EditPrinterReq struct {
	Sn   string `json:"sn"`
	Name string `json:"name"`
	Lang string `json:"lang"`
}

//查询打印机状态
type GetDeviceStatusReq struct {
	Sn string `json:"sn"`
}

//设置打印机浓度
type SetDensityReq struct {
	Sn      string `json:"sn"`
	Density int    `json:"density"` //4 较淡 5 普通 6 较浓(默认) 7 浓
}

//设置打印机音量
type SetVolumeReq struct {
	Sn     string `json:"sn"`
	Volume int    `json:"volume"` //1~5 值越大声越大 (默认5)
}

//打印小票
type PrintReq struct {
	Sn string `json:"sn"`
	//非必填
	Voice             string `json:"voice"`             //播报音源,不传参数视为不播报语音，只打印小票;
	VoicePlayTimes    int    `json:"voicePlayTimes"`    //默认播报1次 1-3
	VoicePlayInterval int    `json:"voicePlayInterval"` //默认3秒 1-10
	Content           string `json:"content"`           //最大支持6000字节打印内容
	Copies            int    `json:"copies"`            //不传默认1， 取值范围: 1~5
}

type PrintResp struct {
	PrintID   string `json:"printId"`
	QueueSize string `json:"queueSize"`
}
