package wechat

import "github.com/pkg/errors"

// -1	系统繁忙，此时请开发者稍候再试
// 0	请求成功
// 40001	AppSecret错误或者AppSecret不属于这个公众号，请开发者确认AppSecret的正确性
// 40002	请确保grant_type字段值为client_credential
// 40164	调用接口的IP地址不在白名单中，请在接口IP白名单中进行设置。
// 40243	AppSecret已被冻结，请登录MP解冻后再次调用。
// 89503	此IP调用需要管理员确认,请联系管理员
// 89501	此IP正在等待管理员确认,请联系管理员
// 89506	24小时内该IP被管理员拒绝调用两次，24小时内不可再使用该IP调用
// 89507	1小时内该IP被管理员拒绝调用一次，1小时内不可再使用该IP调用
// 10003	redirect_uri域名与后台配置不一致
// 10004	此公众号被封禁
// 10005	此公众号并没有这些scope的权限
// 10006	必须关注此测试号
// 10009	操作太频繁了，请稍后重试
// 10010	scope不能为空
// 10011	redirect_uri不能为空
// 10012	appid不能为空
// 10013	state不能为空
// 10015	公众号未授权第三方平台，请检查授权状态
// 10016	不支持微信开放平台的Appid，请使用公众号Appid
func translateError(errCode int, msg string) error {
	if errCode == 0 {
		return nil
	}

	errs := map[int]error{
		0:     nil,
		-1:    errors.New("系统繁忙，此时请开发者稍候再试"),
		40001: errors.New("AppSecret错误或者AppSecret不属于这个公众号，请开发者确认AppSecret的正确性"),
		40002: errors.New("请确保grant_type字段值为client_credential"),
		40164: errors.New("调用接口的IP地址不在白名单中，请在接口IP白名单中进行设置"),
		40243: errors.New("AppSecret已被冻结，请登录MP解冻后再次调用"),
		89503: errors.New("此IP调用需要管理员确认,请联系管理员"),
		89501: errors.New("此IP正在等待管理员确认,请联系管理员"),
		89506: errors.New("24小时内该IP被管理员拒绝调用两次，24小时内不可再使用该IP调用"),
		89507: errors.New("1小时内该IP被管理员拒绝调用一次，1小时内不可再使用该IP调用"),
		10003: errors.New("redirect_uri域名与后台配置不一致"),
		10004: errors.New("此公众号被封禁"),
		10005: errors.New("此公众号并没有这些scope的权限"),
		10006: errors.New("必须关注此测试号"),
		10009: errors.New("操作太频繁了，请稍后重试"),
		10010: errors.New("scope不能为空"),
		10011: errors.New("redirect_uri不能为空"),
		10012: errors.New("appid不能为空"),
		10013: errors.New("state不能为空"),
		10015: errors.New("公众号未授权第三方平台，请检查授权状态"),
		10016: errors.New("不支持微信开放平台的Appid，请使用公众号Appid"),
	}

	if err, ok := errs[errCode]; ok {
		return err
	}
	return errors.New(msg)
}
