173 lines
4.2 KiB
Go
173 lines
4.2 KiB
Go
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
|
||
}
|