Files
devstar-create-from-template/modules/setting/wechat.go

97 lines
2.7 KiB
Go
Raw Normal View History

2025-08-25 15:46:12 +08:00
/**
微信参数设置
*/
package setting
import (
"code.gitea.io/gitea/modules/log"
"github.com/ArtisanCloud/PowerWeChat/v3/src/kernel"
wechat_sdk "github.com/ArtisanCloud/PowerWeChat/v3/src/officialAccount"
)
var Wechat = struct {
Enabled bool
DefaultDomainName string
UserConfig WechatUserConfigType
TempQrExpireSeconds int
SDK *wechat_sdk.OfficialAccount
cache kernel.CacheInterface
// 注册过期时间
RegisterationExpireSeconds int
}{}
type WechatUserConfigType struct {
AppID string
AppSecret string
RedisAddr string
MessageToken string
MessageAesKey string
}
// loadWechatSettingsFrom
/**
* 创建PowerWechat全局工具类实例
* 配置文件 custom/conf/app.ini
*/
func loadWechatSettingsFrom(rootCfg ConfigProvider) {
sec := rootCfg.Section("wechat")
Wechat.Enabled = sec.Key("ENABLED_WECHAT_QR_SIGNIN").MustBool(true)
log.Info("ENABLED_WECHAT_QR_SIGNIN == '%b'", Wechat.Enabled)
Wechat.DefaultDomainName = sec.Key("WECHAT_QR_SERVICE_DOMAIN_NAME").MustString("devstar.cn")
Wechat.UserConfig.AppID = sec.Key("WECHAT_APP_ID").MustString("")
Wechat.UserConfig.AppSecret = sec.Key("WECHAT_APP_SECRET").MustString("")
Wechat.UserConfig.RedisAddr = sec.Key("WECHAT_REDIS_ADDR").MustString("")
Wechat.UserConfig.MessageToken = sec.Key("WECHAT_MESSAGE_TOKEN").MustString("")
Wechat.UserConfig.MessageAesKey = sec.Key("WECHAT_MESSAGE_AES_KEY").MustString("")
if Wechat.UserConfig.AppID != "" && Wechat.UserConfig.AppSecret != "" {
log.Info("createPowerWechatApp AppID:%s ", Wechat.UserConfig.AppID)
createPowerWechatApp(Wechat.UserConfig)
}
Wechat.TempQrExpireSeconds = sec.Key("WECHAT_TEMP_QR_EXPIRE_SECONDS").MustInt(60)
// 扫码后最长注册时间默认24小时
Wechat.RegisterationExpireSeconds = sec.Key("WECHAT_REGISTERATION_EXPIRE_SECONDS").MustInt(86400)
}
/**
* 创建微信公众号工具类
*
* @param userConfig 微信公众号配置信息, 详见 `custom/conf/app.ini`
* @return PowerWechat app 实例.
*/
func createPowerWechatApp(userConfig WechatUserConfigType) {
if userConfig.RedisAddr != "" {
Wechat.cache = kernel.NewRedisClient(&kernel.UniversalOptions{
Addrs: []string{userConfig.RedisAddr},
})
}
var err error
Wechat.SDK, err = wechat_sdk.NewOfficialAccount(&wechat_sdk.UserConfig{
AppID: userConfig.AppID,
Secret: userConfig.AppSecret,
Token: userConfig.MessageToken,
AESKey: userConfig.MessageAesKey,
Log: wechat_sdk.Log{
Level: "error",
File: "./wechat-error.log",
},
HttpDebug: false,
Debug: false,
Cache: Wechat.cache,
// Sandbox: true,
})
if err != nil {
log.Warn("创建微信工具类 PowerWechat 失败,请检查 modules/setting/wechat.go ")
}
}