This commit is contained in:
@@ -0,0 +1,125 @@
|
||||
package model
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"github.com/flipped-aurora/gin-vue-admin/server/global"
|
||||
)
|
||||
|
||||
// MpConfig 微信配置表
|
||||
type MpConfig struct {
|
||||
global.GVA_MODEL
|
||||
ConfigType string `json:"configType" gorm:"type:varchar(32);not null;index;comment:配置类型 mp公众号 mini小程序"`
|
||||
AppID string `json:"appId" gorm:"type:varchar(128);not null;comment:应用ID"`
|
||||
AppSecret string `json:"appSecret" gorm:"type:varchar(256);not null;comment:应用密钥"`
|
||||
Token *string `json:"token" gorm:"type:varchar(128);comment:Token"`
|
||||
EncodingAESKey *string `json:"encodingAESKey" gorm:"type:varchar(256);comment:消息加解密密钥"`
|
||||
|
||||
// 公众号特有配置
|
||||
ServerURL *string `json:"serverUrl" gorm:"type:varchar(512);comment:服务器地址"`
|
||||
WebhookURL *string `json:"webhookUrl" gorm:"type:varchar(512);comment:Webhook地址"`
|
||||
|
||||
// 小程序特有配置
|
||||
MiniAppName *string `json:"miniAppName" gorm:"type:varchar(128);comment:小程序名称"`
|
||||
MiniAppDesc *string `json:"miniAppDesc" gorm:"type:varchar(512);comment:小程序描述"`
|
||||
|
||||
// 状态信息
|
||||
Status string `json:"status" gorm:"type:varchar(32);default:'inactive';comment:状态 active激活 inactive未激活"`
|
||||
LastTestTime *time.Time `json:"lastTestTime" gorm:"comment:最后测试时间"`
|
||||
TestResult *string `json:"testResult" gorm:"type:varchar(512);comment:测试结果"`
|
||||
|
||||
// 扩展配置
|
||||
ExtraConfig *string `json:"extraConfig" gorm:"type:text;comment:扩展配置JSON"`
|
||||
Remark *string `json:"remark" gorm:"type:varchar(512);comment:备注"`
|
||||
}
|
||||
|
||||
// TableName 指定表名
|
||||
func (MpConfig) TableName() string {
|
||||
return "mp_config"
|
||||
}
|
||||
|
||||
// ConfigType 配置类型常量
|
||||
const (
|
||||
ConfigTypeMP = "mp" // 公众号
|
||||
ConfigTypeMini = "mini" // 小程序
|
||||
)
|
||||
|
||||
// Status 状态常量
|
||||
const (
|
||||
ConfigStatusActive = "active" // 激活
|
||||
ConfigStatusInactive = "inactive" // 未激活
|
||||
ConfigStatusError = "error" // 错误
|
||||
)
|
||||
|
||||
// IsMP 是否为公众号配置
|
||||
func (c *MpConfig) IsMP() bool {
|
||||
return c.ConfigType == ConfigTypeMP
|
||||
}
|
||||
|
||||
// IsMini 是否为小程序配置
|
||||
func (c *MpConfig) IsMini() bool {
|
||||
return c.ConfigType == ConfigTypeMini
|
||||
}
|
||||
|
||||
// IsActive 是否激活状态
|
||||
func (c *MpConfig) IsActive() bool {
|
||||
return c.Status == ConfigStatusActive
|
||||
}
|
||||
|
||||
// IsInactive 是否未激活状态
|
||||
func (c *MpConfig) IsInactive() bool {
|
||||
return c.Status == ConfigStatusInactive
|
||||
}
|
||||
|
||||
// IsError 是否错误状态
|
||||
func (c *MpConfig) IsError() bool {
|
||||
return c.Status == ConfigStatusError
|
||||
}
|
||||
|
||||
// GetDisplayName 获取显示名称
|
||||
func (c *MpConfig) GetDisplayName() string {
|
||||
if c.IsMP() {
|
||||
return "微信公众号"
|
||||
} else if c.IsMini() {
|
||||
if c.MiniAppName != nil && *c.MiniAppName != "" {
|
||||
return *c.MiniAppName
|
||||
}
|
||||
return "微信小程序"
|
||||
}
|
||||
return "未知类型"
|
||||
}
|
||||
|
||||
// MpWebhookLog 微信Webhook日志表
|
||||
type MpWebhookLog struct {
|
||||
global.GVA_MODEL
|
||||
ConfigID uint `json:"configId" gorm:"not null;index;comment:配置ID"`
|
||||
RequestURL string `json:"requestUrl" gorm:"type:varchar(512);not null;comment:请求URL"`
|
||||
RequestMethod string `json:"requestMethod" gorm:"type:varchar(16);not null;comment:请求方法"`
|
||||
RequestHeaders *string `json:"requestHeaders" gorm:"type:text;comment:请求头"`
|
||||
RequestBody *string `json:"requestBody" gorm:"type:text;comment:请求体"`
|
||||
ResponseStatus int `json:"responseStatus" gorm:"not null;comment:响应状态码"`
|
||||
ResponseBody *string `json:"responseBody" gorm:"type:text;comment:响应体"`
|
||||
ProcessTime int `json:"processTime" gorm:"not null;comment:处理时间(毫秒)"`
|
||||
ErrorMessage *string `json:"errorMessage" gorm:"type:varchar(512);comment:错误信息"`
|
||||
|
||||
// 微信相关字段
|
||||
Signature *string `json:"signature" gorm:"type:varchar(128);comment:微信签名"`
|
||||
Timestamp *string `json:"timestamp" gorm:"type:varchar(32);comment:时间戳"`
|
||||
Nonce *string `json:"nonce" gorm:"type:varchar(32);comment:随机数"`
|
||||
Echostr *string `json:"echostr" gorm:"type:varchar(128);comment:随机字符串"`
|
||||
}
|
||||
|
||||
// TableName 指定表名
|
||||
func (MpWebhookLog) TableName() string {
|
||||
return "mp_webhook_log"
|
||||
}
|
||||
|
||||
// IsSuccess 是否成功
|
||||
func (l *MpWebhookLog) IsSuccess() bool {
|
||||
return l.ResponseStatus >= 200 && l.ResponseStatus < 300
|
||||
}
|
||||
|
||||
// IsError 是否错误
|
||||
func (l *MpWebhookLog) IsError() bool {
|
||||
return l.ResponseStatus >= 400 || l.ErrorMessage != nil
|
||||
}
|
||||
Reference in New Issue
Block a user