97 lines
2.7 KiB
Go
97 lines
2.7 KiB
Go
/**
|
||
微信参数设置
|
||
*/
|
||
|
||
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 ")
|
||
}
|
||
}
|