Files
devstar/modules/setting/wechat.go
孟宁 0557a744c0 !52 通过场景码SceneStr区分用户登录不同的部署版本,优化了代码
* 修改了微信公众号关注事件和文本消息的响应
* 通过场景码SceneStr区分用户登录不同的部署版本,优化了代码
* 兼容线上/api/wechat/official-account相关API
* 对第三方依赖中的PowerWeChat和officialAccount等字符串进行了本地化抽象,以Wechat和wechat_sdk命名可读性更好
* Merge branch 'dev' into refactoring-wechat-qr-code
* 梳理了routers到auth_service的代码,wechat_service还需要进一步整理
* 对代码文件目录结构进行了重构,内在逻辑还没有重构
* wechat相关路径中删掉了无意义的official-account字符串
2025-02-14 10:41:45 +00:00

97 lines
2.7 KiB
Go
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/**
微信参数设置
*/
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 ")
}
}