96 lines
6.3 KiB
Go
96 lines
6.3 KiB
Go
package models
|
||
|
||
import "time"
|
||
|
||
// =============================================================
|
||
// 微信小程序配置(表结构见 docs/sql/create_wechat_mini_config.sql)
|
||
//
|
||
// 小程序与公众号是两套独立应用,AppID / AppSecret 不可混用,
|
||
// 因此单独建表;AppSecret 以 AES-256-GCM 加密存储(复用 wechatmp 的密钥)。
|
||
// =============================================================
|
||
|
||
// WechatMiniConfig 微信小程序配置 yz_platform_wechat_mini_config(单行)
|
||
type WechatMiniConfig struct {
|
||
ID uint64 `orm:"column(id);pk;auto" json:"id"`
|
||
AppID string `orm:"column(app_id);size(64)" json:"app_id"`
|
||
AppSecret string `orm:"column(app_secret);size(512)" json:"-"` // 加密存储,不回显
|
||
Enabled int8 `orm:"column(enabled);default(0)" json:"enabled"`
|
||
AutoBind int8 `orm:"column(auto_bind);default(1)" json:"auto_bind"` // 1:手机号命中身份后自动绑定小程序
|
||
Remark string `orm:"column(remark);size(255)" json:"remark"`
|
||
CreateTime time.Time `orm:"column(create_time);type(datetime);auto_now_add" json:"create_time"`
|
||
UpdateTime *time.Time `orm:"column(update_time);type(datetime);null" json:"update_time"`
|
||
}
|
||
|
||
func (m *WechatMiniConfig) TableName() string { return "yz_platform_wechat_mini_config" }
|
||
|
||
// WechatMiniApp 微信小程序(多应用) yz_platform_wechat_mini_app
|
||
// 支持配置多个小程序:认证端登录时按客户端传入的 appid 精确匹配
|
||
// (未传 appid 时回退第一条启用记录),AppSecret 加密存储不回显。
|
||
//
|
||
// 消息推送(小程序后台「开发管理 → 开发设置 → 消息推送」)相关字段:
|
||
// Token 与后台填写的令牌一致,用于 sha1 签名校验
|
||
// AESKey 消息加解密密钥(EncodingAESKey,43 位),加密存储不回显
|
||
// EncryptMode 加解密方式 plain / compatible / safe
|
||
// DataFormat 推送数据格式 xml / json
|
||
type WechatMiniApp struct {
|
||
ID uint64 `orm:"column(id);pk;auto" json:"id"`
|
||
Name string `orm:"column(name);size(128);default('')" json:"name"`
|
||
AppID string `orm:"column(app_id);size(64)" json:"app_id"`
|
||
AppSecret string `orm:"column(app_secret);size(512)" json:"-"` // 加密存储,不回显
|
||
QrcodeURL string `orm:"column(qrcode_url);size(512);default('')" json:"qrcode_url"` // 小程序码图片地址,供官网 / H5 等其他端调取
|
||
Token string `orm:"column(token);size(128);default('')" json:"token"` // 消息推送 Token
|
||
AESKey string `orm:"column(aes_key);size(512);default('')" json:"-"` // 消息推送 EncodingAESKey(加密存储,不回显)
|
||
EncryptMode string `orm:"column(encrypt_mode);size(16);default('plain')" json:"encrypt_mode"` // plain/compatible/safe
|
||
DataFormat string `orm:"column(data_format);size(16);default('xml')" json:"data_format"` // xml/json
|
||
PushReply string `orm:"column(push_reply);size(512);default('')" json:"push_reply"` // 客服消息自动回复文案(空 = 不自动回复)
|
||
Enabled int8 `orm:"column(enabled);default(0)" json:"enabled"`
|
||
AutoBind int8 `orm:"column(auto_bind);default(1)" json:"auto_bind"` // 1:手机号命中身份后自动绑定
|
||
Remark string `orm:"column(remark);size(255)" json:"remark"`
|
||
CreateTime time.Time `orm:"column(create_time);type(datetime);auto_now_add" json:"create_time"`
|
||
UpdateTime *time.Time `orm:"column(update_time);type(datetime);null" json:"update_time"`
|
||
DeleteTime *time.Time `orm:"column(delete_time);type(datetime);null" json:"delete_time"`
|
||
}
|
||
|
||
func (m *WechatMiniApp) TableName() string { return "yz_platform_wechat_mini_app" }
|
||
|
||
// WechatMiniTemplate 小程序订阅消息模板 yz_platform_wechat_mini_template
|
||
//
|
||
// 一个小程序可配置多个「场景」模板(如站内通知 notice、审批待办 approval)。
|
||
// Fields 存微信模板字段键 → 语义变量名的映射(JSON),例如:
|
||
//
|
||
// {"thing1":"title","phrase2":"content","time3":"time"}
|
||
//
|
||
// 推送时按该映射把 title/content/time 填进微信模板的对应字段。
|
||
type WechatMiniTemplate struct {
|
||
ID uint64 `orm:"column(id);pk;auto" json:"id"`
|
||
AppID string `orm:"column(app_id);size(64)" json:"app_id"`
|
||
Code string `orm:"column(code);size(64)" json:"code"` // 场景码:notice / approval / schedule ...
|
||
TemplateID string `orm:"column(template_id);size(128)" json:"template_id"` // 微信订阅消息模板 ID
|
||
Title string `orm:"column(title);size(255);default('')" json:"title"`
|
||
Page string `orm:"column(page);size(255);default('')" json:"page"` // 点击消息跳转的小程序页面
|
||
Fields string `orm:"column(fields);type(text);null" json:"fields"` // JSON:微信字段键 → 语义变量名
|
||
Enabled int8 `orm:"column(enabled);default(1)" json:"enabled"`
|
||
Remark string `orm:"column(remark);size(255)" json:"remark"`
|
||
CreateTime time.Time `orm:"column(create_time);type(datetime);auto_now_add" json:"create_time"`
|
||
UpdateTime *time.Time `orm:"column(update_time);type(datetime);null" json:"update_time"`
|
||
DeleteTime *time.Time `orm:"column(delete_time);type(datetime);null" json:"delete_time"`
|
||
}
|
||
|
||
func (m *WechatMiniTemplate) TableName() string { return "yz_platform_wechat_mini_template" }
|
||
|
||
// WechatMiniSubscribe 小程序订阅授权记录 yz_platform_wechat_mini_subscribe
|
||
//
|
||
// 微信一次性订阅消息:用户每次授权 = 1 次发送机会,发送成功即消耗 1 次。
|
||
// 这里记录每个身份(用户)对某个模板的剩余可发送次数,避免对未授权用户反复调接口。
|
||
type WechatMiniSubscribe struct {
|
||
ID uint64 `orm:"column(id);pk;auto" json:"id"`
|
||
IdentityID uint64 `orm:"column(identity_id)" json:"identity_id"`
|
||
AppID string `orm:"column(app_id);size(64)" json:"app_id"`
|
||
TemplateID string `orm:"column(template_id);size(128)" json:"template_id"`
|
||
Remain int `orm:"column(remain);default(0)" json:"remain"` // 剩余可发送次数
|
||
UpdateTime *time.Time `orm:"column(update_time);type(datetime);null" json:"update_time"`
|
||
CreateTime time.Time `orm:"column(create_time);type(datetime);auto_now_add" json:"create_time"`
|
||
}
|
||
|
||
func (m *WechatMiniSubscribe) TableName() string { return "yz_platform_wechat_mini_subscribe" }
|