package service import ( "ElectronicInvoice/internal/consts" "ElectronicInvoice/util" "context" "github.com/gogf/gf/v2/errors/gerror" "github.com/gogf/gf/v2/frame/g" "github.com/gogf/gf/v2/util/gconv" "time" ) // Login 登录系统 func (t *TripartiteAuth) Login() error { type ( loginFirstRes struct { Ewm string `json:"ewm"` //扫码二维码 IsVerificationCode int `json:"isVerificationCode"` //是否需要输入验证码 1需要 2不需要 } ) var ( ctx = context.Background() d loginFirstRes loginType = g.Cfg().MustGet(ctx, "loginType", 0).Int() //0 短信登录 1 扫码登录 ) //授权登录 err := CommonDoPost("/index_index/startPort", t.GetFormHeaderWithToken(), g.MapStrAny{ "taxNum": g.Cfg().MustGet(ctx, "company.taxNum"), "tel": g.Cfg().MustGet(ctx, "company.account"), "password": g.Cfg().MustGet(ctx, "company.password"), "login_type": loginType, "parameter": "cccc", }, func(i interface{}) error { if err := gconv.Struct(i, &d); err != nil { return err } return nil }) if err != nil { return gerror.Wrap(err, "授权登录异常") } if loginType == 0 { //短信登录 //TODO 发送消息 取填写验证码 g.Log().Infof(ctx, "等待接收登录验证码") select { case <-time.After(time.Minute * 5): g.Log().Infof(ctx, "已接接收登录验证码接收超时") return consts.AuthTimeOut case yzm := <-JyInvoiceManager.phoneCode: if err := t.LoginAfterKeepOnline(yzm); err != nil { return gerror.Wrap(err, "短信验证失败") } } } else { //ToDo be developed // 等待扫完完成回调 默认扫码成功 if err := util.SendQrImage2ChatBot(d.Ewm); err != nil { return gerror.Wrap(err, "发送企业微信登录消息异常") } select { case <-time.After(time.Minute * 5): g.Log().Infof(ctx, "已接接收登录验证码接收超时") return consts.AuthTimeOut case scanOk := <-JyInvoiceManager.ScanLogin: if !scanOk { return gerror.Wrap(err, "扫码登录验证失败") } } } JyInvoiceManager.Login = true return nil } // LoginAfterKeepOnline 长期登录授权接口 func (t *TripartiteAuth) LoginAfterKeepOnline(yzm string) error { var ( ctx = context.Background() ) g.Log().Infof(ctx, "已接接收登录验证码 %s", yzm) err := CommonDoPost("/index_index/onLine", t.GetFormHeaderWithToken(), g.MapStrAny{ "taxNum": g.Cfg().MustGet(ctx, "company.taxNum"), "tel": g.Cfg().MustGet(ctx, "company.account"), "yzm": yzm, }, nil) if err != nil { return gerror.Wrap(err, "授权登录异常") } return nil } // VerifyLogin 验证登录 func (t *TripartiteAuth) VerifyLogin() error { var ( ctx = context.Background() ) err := CommonDoPost("/index_index/verifyLogin", t.GetFormHeaderWithToken(), g.MapStrAny{ "taxNum": g.Cfg().MustGet(ctx, "company.taxNum"), "tel": g.Cfg().MustGet(ctx, "company.account"), }, nil) if err != nil { return gerror.Wrap(err, "授权登录异常") } return err } // SyncData 验证登录 func (t *TripartiteAuth) SyncData() error { var ( ctx = context.Background() ) err := CommonDoPost("/index_index/syncData", t.GetFormHeaderWithToken(), g.MapStrAny{ "taxNum": g.Cfg().MustGet(ctx, "company.taxNum"), "tel": g.Cfg().MustGet(ctx, "company.account"), "start_time": "2024-01-01", "end_time": "2024-05-01", "total": 10, }, nil) if err != nil { return gerror.Wrap(err, "Demo") } return err }