123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152 |
- package taxerr
- import (
- "errors"
- "git.listensoft.net/tool/jspkit/logger"
- "strings"
- "github.com/go-rod/rod"
- )
- // FormatLoginError 格式化错误信息
- func FormatLoginError(str string) error {
- logger.Info("原始错误信息 - ", str)
- if strings.Contains(str, "短信发送次数超限") {
- return TelSmsOverrun
- }
- if strings.Contains(str, "手机号不在线") {
- return SmsUnOnline
- }
- if strings.Contains(str, "请调用发送验证码") || strings.Contains(str, "您的登录已掉线,请重新授权后再次发起任务") {
- return TelOffline
- }
- if strings.Contains(str, "手机验证码接收失败") || strings.Contains(str, "服务未获取到短信验证码") {
- return SmsCodeNotReceived
- }
- if strings.Contains(str, "连续认证错误次数过多") || strings.Contains(str, "次输入个人用户密码错误") || strings.Contains(str, "次输入密码错误") {
- return PasswdLockError
- }
- if strings.Contains(str, "输入的短信验证码错误") {
- return TelSmsError
- }
- if strings.Contains(str, "输入的个人账号或密码错误") {
- return PasswdError
- }
- if strings.Contains(str, "税局服务繁忙") {
- return TaxAbnormalError(true)
- }
- if strings.Contains(str, "输入的统一社会信用代码或纳税人识别号错误") {
- return TaxNoError
- }
- if strings.Contains(str, "未查询到您与该企业的关联关系") {
- return ComIrrelevantRelationError
- }
- if strings.Contains(str, "未查询到您与该代理企业的关联关系信息") {
- return NewUserV3("税局提示:未查询到您与该代理企业的关联关系信息", "请确认录入的信息是否正确")
- }
- if strings.Contains(str, "办税人登录信息与企业无关联关系") {
- return ComIrrelevantRelationError
- }
- if strings.Contains(str, "税局服务繁忙") || strings.Contains(str, `登录失败~`) || strings.Contains(str, "内部异常:") ||
- strings.Contains(str, "应用令牌无效") || str == "税局服务异常,请稍后重试" ||
- strings.Contains(str, "渠道认证") {
- // {"code":-1,"data":{},"message":"内部异常:error parse true"}
- // {"code":-1,"data":{},"message":"登录失败~syntax error, pos 1, json : Read timed out"}
- return TaxAbnormalError(true)
- }
- if strings.Contains(str, "手机号码不存在") {
- return NewUserV3("税局提示:手机号码不存在", "您可以尝试使用证件号码登录")
- }
- if strings.Contains(str, "您与该企业的绑定关系已过期") {
- return NewUserV3("税局提示:您与该企业的绑定关系已过期", "请重新绑定版税身份后重试")
- }
- if strings.Contains(str, "请在自然人业务入口进行用户注册") {
- return UnRegisteredError
- }
- if strings.Contains(str, "登记企业信息不存在") {
- return NewSystemV3("税局提示:登记企业信息不存在", "请核实")
- }
- if strings.Contains(str, "查询到您与该企业的关联关系信息仍未确认,请确认是否扫脸或稍后再试") {
- return NewUserV3(`税局提示:查询到您与该企业的关联关系信息仍未确认,请确认是否扫脸或稍后再试`, "请核实该企业与办税员绑定是否正常")
- }
- if strings.Contains(str, "请先完成扫脸认证") || strings.Contains(str, "请前往税务APP扫脸认证身份") {
- return NewUser(str)
- }
- if strings.Contains(str, "输入的个人账号、密码或报税手机号错误,请重新输入!") {
- return TaxNotMatch
- }
- if strings.Contains(str, `确认成为该企业办税人失败,请在网站自行扫脸验证确认后使用`) {
- return FaceVerifyError
- }
- if strings.Contains(str, "请核对账套内填写的手机号") || strings.Contains(str, "请自行确认为该企业内的身份2") {
- return NewUser(str)
- }
- // 扫码失败或者login一分钟超时后等等待一分钟扫码失败
- if strings.Contains(str, "请登陆后再操作") || strings.Contains(str, "请先完成登录,再执行此项业务") {
- return TaxAbnormalError(true)
- }
- if strings.Contains(str, "不存在用户") || strings.Contains(str, "返回当前用户") {
- return NewUser("代理登录未绑定该企业,请先去税局绑定")
- }
- if strings.Contains(str, "税号错误") {
- return NewUserV3(`输入的纳税人识别号与公司名不匹配`, `请在“企业信息”修改后重试`)
- }
- if strings.Contains(str, "您使用短信验证码过于频繁") || strings.Contains(str, "短信发送申请过于频繁") {
- return NewUser("税局提示:您使用短信验证码过于频繁")
- }
- if strings.Contains(str, "请先完成渠道认证") {
- return NewUserV3(`请先完成渠道认证`, `再执行此项业务`)
- }
- return New(str)
- }
- // TaskErrMsg 尝试从错误中提取任务错误信息
- func TaskErrMsg(err error) (string, bool) {
- if se := new(SystemErr); errors.As(err, &se) {
- return se.Msg, true
- }
- if ue := new(UserErr); errors.As(err, &ue) {
- return ue.Msg, true
- }
- return "", false
- }
- // AsTaskErr 尝试将错误强转为 tax 错误
- func AsTaskErr(err error) (error, bool) {
- if se := new(SystemErr); errors.As(err, &se) {
- return se, true
- }
- if ue := new(UserErr); errors.As(err, &ue) {
- return ue, true
- }
- return nil, false
- }
- func M(err error) {
- if err != nil {
- panic(err)
- }
- }
- func E[T any](t T, err error) T {
- if err != nil {
- panic(err)
- }
- return t
- }
- // U 尝试解析 rod.Try 返回 err 的底层 error
- func U(err error) error {
- if err == nil {
- return nil
- }
- te := new(rod.TryError)
- if !errors.As(err, &te) {
- return err
- }
- ue := errors.Unwrap(te)
- if ue == nil {
- return te
- }
- return ue
- }
|