优化微信的处理流程
This commit is contained in:
parent
050ab4ed41
commit
d76db7d81e
149
web/wx.go
149
web/wx.go
|
@ -32,7 +32,7 @@ var (
|
||||||
const (
|
const (
|
||||||
login = "login"
|
login = "login"
|
||||||
StartStudy = "start_study"
|
StartStudy = "start_study"
|
||||||
getUser = "stop_study"
|
getUser = "get_user"
|
||||||
SCORE = "score"
|
SCORE = "score"
|
||||||
|
|
||||||
checkUpdate = "check_update"
|
checkUpdate = "check_update"
|
||||||
|
@ -40,12 +40,31 @@ const (
|
||||||
restart = "restart"
|
restart = "restart"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
type WechatHandler func(id string)
|
||||||
|
|
||||||
|
var (
|
||||||
|
handlers sync.Map
|
||||||
|
)
|
||||||
|
|
||||||
|
func RegisterHandler(key string, action WechatHandler) {
|
||||||
|
handlers.Store(key, action)
|
||||||
|
}
|
||||||
|
|
||||||
func initWechat() {
|
func initWechat() {
|
||||||
config := conf.GetConfig()
|
config := conf.GetConfig()
|
||||||
if !config.Wechat.Enable {
|
if !config.Wechat.Enable {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
log.Infoln(config.Wechat)
|
|
||||||
|
// 注册插件
|
||||||
|
RegisterHandler(login, handleLogin)
|
||||||
|
RegisterHandler(StartStudy, handleStartStudy)
|
||||||
|
RegisterHandler(getUser, handleGetUser)
|
||||||
|
RegisterHandler(SCORE, handleScore)
|
||||||
|
RegisterHandler(checkUpdate, handleCheckUpdate)
|
||||||
|
RegisterHandler(updateBtn, handleUpdate)
|
||||||
|
RegisterHandler(restart, handleRestart)
|
||||||
|
|
||||||
wx = mp.New(config.Wechat.Token, config.Wechat.AppID, config.Wechat.Secret, "123", "123")
|
wx = mp.New(config.Wechat.Token, config.Wechat.AppID, config.Wechat.Secret, "123", "123")
|
||||||
err := wx.CreateMenu(&mp.Menu{Buttons: []mp.MenuButton{
|
err := wx.CreateMenu(&mp.Menu{Buttons: []mp.MenuButton{
|
||||||
{
|
{
|
||||||
|
@ -64,61 +83,40 @@ func initWechat() {
|
||||||
MediaId: "",
|
MediaId: "",
|
||||||
SubButtons: []mp.MenuButton{
|
SubButtons: []mp.MenuButton{
|
||||||
{
|
{
|
||||||
Name: "开始学习",
|
Name: "开始学习",
|
||||||
Type: "click",
|
Type: "click",
|
||||||
Key: StartStudy,
|
Key: StartStudy,
|
||||||
Url: "",
|
|
||||||
MediaId: "",
|
|
||||||
SubButtons: nil,
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "获取用户",
|
Name: "获取用户",
|
||||||
Type: "click",
|
Type: "click",
|
||||||
Key: getUser,
|
Key: getUser,
|
||||||
Url: "",
|
|
||||||
MediaId: "",
|
|
||||||
SubButtons: nil,
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "积分查询",
|
Name: "积分查询",
|
||||||
Type: "click",
|
Type: "click",
|
||||||
Key: SCORE,
|
Key: SCORE,
|
||||||
Url: "",
|
|
||||||
MediaId: "",
|
|
||||||
SubButtons: nil,
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "关于",
|
Name: "关于",
|
||||||
Type: "click",
|
Type: "click",
|
||||||
Key: "",
|
|
||||||
Url: "",
|
|
||||||
MediaId: "",
|
|
||||||
SubButtons: []mp.MenuButton{
|
SubButtons: []mp.MenuButton{
|
||||||
{
|
{
|
||||||
Name: "检查更新",
|
Name: "检查更新",
|
||||||
Type: "click",
|
Type: "click",
|
||||||
Key: checkUpdate,
|
Key: checkUpdate,
|
||||||
Url: "",
|
|
||||||
MediaId: "",
|
|
||||||
SubButtons: nil,
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "重启程序",
|
Name: "重启程序",
|
||||||
Type: "click",
|
Type: "click",
|
||||||
Key: restart,
|
Key: restart,
|
||||||
Url: "",
|
|
||||||
MediaId: "",
|
|
||||||
SubButtons: nil,
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "更新程序",
|
Name: "更新程序",
|
||||||
Type: "click",
|
Type: "click",
|
||||||
Key: updateBtn,
|
Key: updateBtn,
|
||||||
Url: "",
|
|
||||||
MediaId: "",
|
|
||||||
SubButtons: nil,
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -135,22 +133,21 @@ func initWechat() {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
lastNonce = nonce
|
lastNonce = nonce
|
||||||
switch r.EventKey {
|
value, ok := handlers.Load(r.EventKey)
|
||||||
case login:
|
if !ok {
|
||||||
go handleLogin(r.FromUserName)
|
log.Warningln("未注册key为" + r.EventKey + "的调用方法")
|
||||||
case StartStudy:
|
return
|
||||||
go handleStartStudy(r.FromUserName)
|
|
||||||
case getUser:
|
|
||||||
go handleGetUser(r.FromUserName)
|
|
||||||
case SCORE:
|
|
||||||
go handleScore(r.FromUserName)
|
|
||||||
case checkUpdate:
|
|
||||||
handleCheckUpdate(r.FromUserName)
|
|
||||||
case updateBtn:
|
|
||||||
handleUpdate(r.FromUserName)
|
|
||||||
case restart:
|
|
||||||
handleRestart(r.FromUserName)
|
|
||||||
}
|
}
|
||||||
|
go func() {
|
||||||
|
defer func() {
|
||||||
|
err := recover()
|
||||||
|
if err != nil {
|
||||||
|
log.Errorln("处理微信事件错误")
|
||||||
|
log.Errorln(err)
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
(value.(WechatHandler))(r.FromUserName)
|
||||||
|
}()
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -199,13 +196,6 @@ func HandleWechat(rep http.ResponseWriter, req *http.Request) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func handleLogin(id string) {
|
func handleLogin(id string) {
|
||||||
defer func() {
|
|
||||||
err := recover()
|
|
||||||
if err != nil {
|
|
||||||
log.Errorln("处理微信事件错误")
|
|
||||||
log.Errorln(err)
|
|
||||||
}
|
|
||||||
}()
|
|
||||||
core := &lib.Core{Push: func(kind, message string) {
|
core := &lib.Core{Push: func(kind, message string) {
|
||||||
if kind == "flush" && strings.HasPrefix(message, "登录链接") {
|
if kind == "flush" && strings.HasPrefix(message, "登录链接") {
|
||||||
l := strings.ReplaceAll(message, "登录链接:\r\n", "")
|
l := strings.ReplaceAll(message, "登录链接:\r\n", "")
|
||||||
|
@ -230,13 +220,6 @@ func handleLogin(id string) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func handleStartStudy(id string) {
|
func handleStartStudy(id string) {
|
||||||
defer func() {
|
|
||||||
err := recover()
|
|
||||||
if err != nil {
|
|
||||||
log.Errorln("处理微信事件错误")
|
|
||||||
log.Errorln(err)
|
|
||||||
}
|
|
||||||
}()
|
|
||||||
users, err := model.QueryByPushID(id)
|
users, err := model.QueryByPushID(id)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
|
@ -271,13 +254,6 @@ func handleStartStudy(id string) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func handleGetUser(id string) {
|
func handleGetUser(id string) {
|
||||||
defer func() {
|
|
||||||
err := recover()
|
|
||||||
if err != nil {
|
|
||||||
log.Errorln("处理微信事件错误")
|
|
||||||
log.Errorln(err)
|
|
||||||
}
|
|
||||||
}()
|
|
||||||
users, err := model.Query()
|
users, err := model.Query()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
|
@ -298,21 +274,6 @@ func handleGetUser(id string) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func handleScore(id string) {
|
func handleScore(id string) {
|
||||||
defer func() {
|
|
||||||
err := recover()
|
|
||||||
if err != nil {
|
|
||||||
log.Errorln("处理微信事件错误")
|
|
||||||
log.Errorln(err)
|
|
||||||
}
|
|
||||||
}()
|
|
||||||
|
|
||||||
defer func() {
|
|
||||||
err := recover()
|
|
||||||
if err != nil {
|
|
||||||
log.Errorln("处理微信事件错误")
|
|
||||||
log.Errorln(err)
|
|
||||||
}
|
|
||||||
}()
|
|
||||||
users, err := model.Query()
|
users, err := model.Query()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
|
|
Loading…
Reference in New Issue