xybot/login/impl.go

173 lines
4.2 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package login
import (
"fmt"
"gitee.ltd/lxh/xybot/base"
)
// GetQRCode
// @description: 获取登录二维码
// @receiver s
// @param deviceId
// @param deviceName
// @return resp
// @return err
func (s service) GetQRCode(deviceId, deviceName string) (resp GetQRCodeResponse, err error) {
var result base.Response[GetQRCodeResponse]
_, err = s.client.R().
SetResult(&result).
SetBody(map[string]any{
"DeviceID": deviceId,
"DeviceName": deviceName,
}).Post("/GetQRCode")
if err = result.CheckError(err); err != nil {
return
}
resp = result.Data
return
}
// AwakenLogin
// @description: 唤醒登录
// @receiver s
// @return resp
// @return err
func (s service) AwakenLogin() (resp AwakenLoginResponse, err error) {
var result base.Response[AwakenLoginResponse]
_, err = s.client.R().
SetHeader("WeChatId", s.robotInfo.GetId()).
SetResult(&result).
SetBody(map[string]any{"Wxid": s.robotInfo.GetId()}).
Post("/AwakenLogin")
if err = result.CheckError(err); err != nil {
return
}
resp = result.Data
return
}
// CheckUuid
// @description: 检查登录二维码
// @receiver s
// @param uuid
// @return resp
// @return err
func (s service) CheckUuid(uuid string) (resp CheckUuidResponse, err error) {
var result base.Response[CheckUuidResponse]
_, err = s.client.R().
SetResult(&result).
SetBody(map[string]any{
"Uuid": uuid,
}).Post("/CheckUuid")
if err = result.CheckError(err); err != nil {
return
}
resp = result.Data
// 这儿做一下处理在登录成功之后更新一下wxId的值免得再初始化一次client
if resp.AcctSectResp.Username != "" {
s.robotInfo.SetId(resp.AcctSectResp.Username)
}
return
}
// AutoHeartbeatStart
// @description: 启动自动心跳
// @receiver s
// @return err
func (s service) AutoHeartbeatStart() (err error) {
var result base.Response[base.EmptyResponse]
_, err = s.client.R().
SetHeader("WeChatId", s.robotInfo.GetId()).
SetResult(&result).
SetBody(map[string]any{"Wxid": s.robotInfo.GetId()}).
Post("/AutoHeartbeatStart")
err = result.CheckError(err)
return
}
// AutoHeartbeatStatus
// @description: 获取自动心跳状态
// @receiver s
// @return running
// @return err
func (s service) AutoHeartbeatStatus() (running bool, err error) {
var result AutoHeartbeatStatusResponse
_, err = s.client.R().
SetHeader("WeChatId", s.robotInfo.GetId()).
SetResult(&result).
SetBody(map[string]any{"Wxid": s.robotInfo.GetId()}).
Post("/AutoHeartbeatStatus")
if err == nil {
if !result.Success {
err = fmt.Errorf("[%d] %s", result.Code, result.Message)
return
}
running = result.Running
}
return
}
// AutoHeartbeatStop
// @description: 停止自动心跳
// @receiver s
// @return err
func (s service) AutoHeartbeatStop() (err error) {
var result base.Response[base.EmptyResponse]
_, err = s.client.R().
SetHeader("WeChatId", s.robotInfo.GetId()).
SetResult(&result).
SetBody(map[string]any{"Wxid": s.robotInfo.GetId()}).
Post("/AutoHeartbeatStop")
err = result.CheckError(err)
return
}
// Heartbeat
// @description: 手动发起心跳
// @receiver s
// @return err
func (s service) Heartbeat() (err error) {
var result base.Response[base.EmptyResponse]
_, err = s.client.R().
SetHeader("WeChatId", s.robotInfo.GetId()).
SetResult(&result).
SetBody(map[string]any{"Wxid": s.robotInfo.GetId()}).
Post("/Heartbeat")
err = result.CheckError(err)
return
}
// GetCachedInfo
// @description: 获取登录缓存信息
// @receiver s
// @return resp
// @return err
func (s service) GetCachedInfo() (resp GetCachedInfoResponse, err error) {
var result base.Response[GetCachedInfoResponse]
_, err = s.client.R().
SetHeader("WeChatId", s.robotInfo.GetId()).
SetResult(&result).
SetBody(map[string]any{"Wxid": s.robotInfo.GetId()}).
Post("/GetCachedInfo")
if err = result.CheckError(err); err != nil {
return
}
resp = result.Data
return
}
// Logout
// @description: 退出登录
// @receiver s
// @return err
func (s service) Logout() (err error) {
var result base.Response[base.EmptyResponse]
_, err = s.client.R().
SetHeader("WeChatId", s.robotInfo.GetId()).
SetResult(&result).
SetBody(map[string]any{"Wxid": s.robotInfo.GetId()}).
Post("/Logout")
err = result.CheckError(err)
return
}