86 lines
5.0 KiB
Go
86 lines
5.0 KiB
Go
package models
|
||
|
||
import "time"
|
||
|
||
// =============================================================
|
||
// 微信公众号(服务号)绑定与推送(表结构见 docs/sql/create_platform_wechat_mp.sql)
|
||
// 1. 配置:AppID / AppSecret / Token / EncodingAESKey(敏感字段加密存储)
|
||
// 2. 粉丝:关注/取关事件沉淀,可绑定平台用户或租户用户,认证后定向推送
|
||
// 3. 验证码:扫码关注 → 公众号被动回复验证码 → 平台核销完成绑定
|
||
// =============================================================
|
||
|
||
// 绑定对象类型
|
||
const (
|
||
WechatBindTypePlatformUser = "platform_user" // 平台用户(yz_system_admin_user)
|
||
WechatBindTypeTenantUser = "tenant_user" // 租户用户(yz_system_tenant_user)
|
||
)
|
||
|
||
// 验证码状态
|
||
const (
|
||
WechatVerifyStatusWaiting = 0 // 待扫码
|
||
WechatVerifyStatusScanned = 1 // 已扫码待核销
|
||
WechatVerifyStatusUsed = 2 // 已核销
|
||
WechatVerifyStatusExpired = 3 // 已过期
|
||
)
|
||
|
||
// WechatMpConfig 微信公众号(服务号)配置 yz_platform_wechat_mp_config(单行)
|
||
type WechatMpConfig 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:"-"` // 加密存储,不回显
|
||
Token string `orm:"column(token);size(128)" json:"token"`
|
||
AESKey string `orm:"column(aes_key);size(512)" json:"-"` // 加密存储,不回显
|
||
EncryptMode string `orm:"column(encrypt_mode);size(16)" json:"encrypt_mode"` // plain / compatible / safe
|
||
TemplateID string `orm:"column(template_id);size(128)" json:"template_id"`
|
||
Verified int8 `orm:"column(verified);default(0)" json:"verified"`
|
||
Enabled int8 `orm:"column(enabled);default(0)" 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"`
|
||
}
|
||
|
||
func (m *WechatMpConfig) TableName() string { return "yz_platform_wechat_mp_config" }
|
||
|
||
// WechatMpFollower 微信公众号关注用户(粉丝) yz_platform_wechat_mp_follower
|
||
type WechatMpFollower struct {
|
||
ID uint64 `orm:"column(id);pk;auto" json:"id"`
|
||
OpenID string `orm:"column(openid);size(64)" json:"openid"`
|
||
UnionID string `orm:"column(unionid);size(64)" json:"unionid"`
|
||
Nickname string `orm:"column(nickname);size(128)" json:"nickname"`
|
||
Avatar string `orm:"column(avatar);size(512)" json:"avatar"`
|
||
Sex int8 `orm:"column(sex);default(0)" json:"sex"`
|
||
City string `orm:"column(city);size(64)" json:"city"`
|
||
Province string `orm:"column(province);size(64)" json:"province"`
|
||
Country string `orm:"column(country);size(64)" json:"country"`
|
||
Subscribe int8 `orm:"column(subscribe);default(1)" json:"subscribe"`
|
||
SubscribeTime *time.Time `orm:"column(subscribe_time);type(datetime);null" json:"subscribe_time"`
|
||
UnsubscribeTime *time.Time `orm:"column(unsubscribe_time);type(datetime);null" json:"unsubscribe_time"`
|
||
BindType string `orm:"column(bind_type);size(32)" json:"bind_type"`
|
||
BindID uint64 `orm:"column(bind_id)" json:"bind_id"`
|
||
BindTid uint64 `orm:"column(bind_tid)" json:"bind_tid"`
|
||
BindTime *time.Time `orm:"column(bind_time);type(datetime);null" json:"bind_time"`
|
||
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 *WechatMpFollower) TableName() string { return "yz_platform_wechat_mp_follower" }
|
||
|
||
// WechatMpVerifyCode 公众号关注取码/绑定验证码 yz_platform_wechat_mp_verify_code
|
||
type WechatMpVerifyCode struct {
|
||
ID uint64 `orm:"column(id);pk;auto" json:"id"`
|
||
Scene string `orm:"column(scene);size(64)" json:"scene"`
|
||
Code string `orm:"column(code);size(8)" json:"code"`
|
||
OpenID string `orm:"column(openid);size(64)" json:"openid"`
|
||
Status int8 `orm:"column(status);default(0)" json:"status"`
|
||
BindType string `orm:"column(bind_type);size(32)" json:"bind_type"`
|
||
BindID uint64 `orm:"column(bind_id)" json:"bind_id"`
|
||
BindTid uint64 `orm:"column(bind_tid)" json:"bind_tid"`
|
||
ExpireAt *time.Time `orm:"column(expire_at);type(datetime);null" json:"expire_at"`
|
||
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 *WechatMpVerifyCode) TableName() string { return "yz_platform_wechat_mp_verify_code" }
|