loginTax.go 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. package login
  2. import (
  3. "context"
  4. "git.listensoft.net/tool/jspkit/common"
  5. "git.listensoft.net/tool/jspkit/common/lxrod"
  6. "git.listensoft.net/tool/jspkit/common/models"
  7. "git.listensoft.net/tool/jspkit/taxerr"
  8. "github.com/go-rod/rod"
  9. "strings"
  10. )
  11. func Login(ctx context.Context, lr *lxrod.Lxrod, info *models.CompanyInfo) (p *rod.Page, err error) {
  12. defer func() {
  13. if err != nil && p != nil && p.GetContext().Err() == nil {
  14. lr.LoginErrImg = common.SaveErrImg(p, *info)
  15. }
  16. }()
  17. if info.Dlfs == "新版登录" || info.Dlfs == "代理登录" {
  18. _, p, err = lr.NewLowBrowser2(ctx)
  19. err = CheckSessionAndLogin(ctx, p, GetBaseUri(info.Area), *info)
  20. if err != nil {
  21. if info.Dlfs == "新版登录" && RetryErr(err) {
  22. err = qrLogin(p, info, lr)
  23. }
  24. if err != nil {
  25. return
  26. }
  27. }
  28. if strings.Contains(p.MustInfo().URL, "loginb") { //todo ctx中传递参数决定是否
  29. C, _ := lxrod.PageToClient(p, GetBaseUri(info.Area))
  30. err = AfterLogin(C, p, lr, *info, GetBaseUri(info.Area))
  31. }
  32. } else {
  33. err = taxerr.New("暂不支持的登录方式!")
  34. }
  35. return
  36. }
  37. func RetryErr(err error) bool {
  38. if strings.Contains(err.Error(), "卡顿") ||
  39. strings.Contains(err.Error(), "失效") ||
  40. strings.Contains(err.Error(), "cookie失效") ||
  41. strings.Contains(err.Error(), "网络超时,请稍后再试") ||
  42. strings.Contains(err.Error(), "character") ||
  43. strings.Contains(err.Error(), "登陆失败, 网络请求异常") ||
  44. strings.Contains(err.Error(), "登陆失败, 授权失败") ||
  45. strings.Contains(err.Error(), "登录失败: 内部服务错误") ||
  46. strings.Contains(err.Error(), "登陆失败,网络请求异常") {
  47. return true
  48. }
  49. return false
  50. }