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" }