3 Commits

Author SHA1 Message Date
df5fb556a0 修改自动化方法返回数据参数 2025-10-17 17:10:47 +08:00
6a25b6acc7 修改返回值定义 2025-10-17 16:01:11 +08:00
25ba002da2 添加系统相关&节假日相关&用户相关RPC 2025-10-17 15:52:15 +08:00
4 changed files with 123 additions and 12 deletions

33
pkg/rpc/holiday.go Normal file
View File

@@ -0,0 +1,33 @@
package rpc
import (
"fmt"
"time"
)
// 节假日相关RPC
type Holiday struct{}
// 判断某个日期是否是节假日
func (h *Holiday) IsHoliday(date time.Time) (*bool, error) {
body := map[string]any{
"date": date.Format(time.DateOnly),
}
result := &Result[bool]{}
if err := GetRequest().Send("holiday.is_holiday", body, result); err != nil {
return nil, err
}
if result.Code != 0 {
return nil, fmt.Errorf("%s", result.Message)
}
return &result.Data, nil
}
var holiday *Holiday
func GetHoliday() *Holiday {
if holiday == nil {
holiday = &Holiday{}
}
return holiday
}

31
pkg/rpc/system.go Normal file
View File

@@ -0,0 +1,31 @@
package rpc
import "fmt"
// 系统相关RPC
type System struct{}
// 获取系统位置
func (s *System) GetSystemLocation() (*SystemLocation, error) {
body := map[string]any{
"key": "system_location",
}
result := &Result[SystemLocation]{}
if err := GetRequest().Send("system.get_config", body, result); err != nil {
return nil, err
}
if result.Code != 0 {
return nil, fmt.Errorf("%s", result.Message)
}
return &result.Data, nil
}
var system *System
// 获取系统相关RPC
func GetSystem() *System {
if system == nil {
system = &System{}
}
return system
}

View File

@@ -127,7 +127,6 @@ type AutomationCondition struct {
}
// 自动化动作
type AutomationAction struct {
Id uint32 `json:"id"` // ID
Type uint8 `json:"type"` // 类型
@@ -148,8 +147,24 @@ type AutomationTask struct {
PeriodBeginTime *string `json:"period_begin_time,omitempty"` // 时段开始时间
PeriodEndTime *string `json:"period_end_time,omitempty"` // 时段结束时间
RepeatType uint8 `json:"repeat_type"` // 重复类型
CustomRepeatRange *[]uint8 `json:"custom_repeat_range,omitempty"` // 自定义重复范围
CustomRepeatRange []uint8 `json:"custom_repeat_range"` // 自定义重复范围
IsSatisfyAll uint8 `json:"is_satisfy_all"` // 是否要满足所有条件
ConditionList []AutomationCondition `json:"condition_list"` // 条件列表
EventConditionList []AutomationCondition `json:"event_condition_list"` // 事件条件列表
StatusConditionList []AutomationCondition `json:"status_condition_list"` // 事件条件列表
ActionList []AutomationAction `json:"action_list"` // 动作列表
}
// 系统位置
type SystemLocation struct {
Longitude float64 `json:"longitude,string"` // 经度
Latitude float64 `json:"latitude,string"` // 维度
}
// 用户详情
type UserDetail struct {
Mobile *string `json:"mobile,omitempty"` // 手机号
Email *string `json:"email,omitempty"` // 邮箱
Nickname *string `json:"nickname,omitempty"` // 昵称
QQ *string `json:"qq,omitempty"` // QQ
Status uint8 `json:"status"` // 状态
}

32
pkg/rpc/user.go Normal file
View File

@@ -0,0 +1,32 @@
package rpc
import "fmt"
// 用户相关RPC
type User struct{}
// 获取用户详情
func (u *User) GetDetail(userId uint32) (*UserDetail, error) {
body := map[string]any{
"user_id": userId,
"field_list": []string{"mobile", "email", "nickname", "qq", "status"},
}
result := &Result[UserDetail]{}
if err := GetRequest().Send("user.get_detail", body, result); err != nil {
return nil, err
}
if result.Code != 0 {
return nil, fmt.Errorf("%s", result.Message)
}
return &result.Data, nil
}
var user *User
// 获取用户相关RPC
func GetUser() *User {
if user == nil {
user = &User{}
}
return user
}