Files
wts/back/src/cmd/wtstool/wx.go
2026-02-26 19:22:38 +08:00

108 lines
1.9 KiB
Go

package main
import (
"errors"
"os"
"zsxyww.com/wts/config"
"zsxyww.com/wts/handler/logic"
"zsxyww.com/wts/wechat"
)
func setDefaultWXMenu(cfg *config.Config, file string) error {
wx := wechat.Setup(cfg)
menu := wx.GetMenu()
if file == "" {
err := errors.New("no menu file selected")
return err
}
content, err := os.ReadFile(file)
if err != nil {
return err
}
err = menu.SetMenuByJSON(string(content))
if err != nil {
return err
}
return nil
}
func setWXTags(cfg *config.Config, newTag string) error {
wx := wechat.Setup(cfg)
u := wx.GetUser()
if newTag == "" {
err := errors.New("no tag selected")
return err
}
tag, err := u.CreateTag(newTag)
if err != nil {
return err
}
println(tag, " Created tag with ID:", tag.ID)
return nil
}
func getWXTags(cfg *config.Config) error {
wx := wechat.Setup(cfg)
u := wx.GetUser()
tags, err := u.GetTag()
if err != nil {
return err
}
for _, tag := range tags {
println("Tag ID:", tag.ID, "Name:", tag.Name, "Count:", tag.Count)
}
return nil
}
func setConditionalMenu(cfg *config.Config, file string) error {
wx := wechat.Setup(cfg)
menu := wx.GetMenu()
if file == "" {
err := errors.New("no menu file selected")
return err
}
content, err := os.ReadFile(file)
if err != nil {
return err
}
err = menu.AddConditionalByJSON(string(content))
if err != nil {
return err
}
return nil
}
func setWXMenu(cfg *config.Config, group string, file string) error {
switch group {
case "default":
return setDefaultWXMenu(cfg, file)
case "operator":
return setConditionalMenu(cfg, file)
case "admin":
return setConditionalMenu(cfg, file)
default:
return errors.New("unknown menu group: " + group)
}
}
func changeWXTag(cfg *config.Config, openID string, tag string) error {
if tag != "default" && tag != "operator" && tag != "admin" {
return errors.New("unknown tag: " + tag)
}
ctx := logic.Ctx{
WX: wechat.Setup(cfg),
}
return ctx.ChangeUserTag(openID, tag)
}