增加微信通知功能
This commit is contained in:
@@ -159,6 +159,11 @@ func Init(_ string) {
|
||||
// 平台端推广佣金(docs/sql/create_platform_commission.sql)
|
||||
new(PlatformCommissionRule),
|
||||
new(PlatformCommissionOrder),
|
||||
|
||||
// 微信公众号(服务号)绑定与推送(docs/sql/create_platform_wechat_mp.sql)
|
||||
new(WechatMpConfig),
|
||||
new(WechatMpFollower),
|
||||
new(WechatMpVerifyCode),
|
||||
)
|
||||
|
||||
// 创建全局 Ormer
|
||||
|
||||
@@ -0,0 +1,85 @@
|
||||
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" }
|
||||
Reference in New Issue
Block a user