forked from wts/wts
公开完整前后端的代码
This commit is contained in:
82
back/src/cmd/wtstool/main.go
Normal file
82
back/src/cmd/wtstool/main.go
Normal file
@@ -0,0 +1,82 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
"zsxyww.com/wts/config"
|
||||
hutil "zsxyww.com/wts/handler/handlerUtilities"
|
||||
"zsxyww.com/wts/model/sqlc"
|
||||
)
|
||||
|
||||
var usage string = `
|
||||
Usage: wtstool -a [action] -c [configure file path] \
|
||||
`
|
||||
|
||||
func main() {
|
||||
cfg := config.Load()
|
||||
action := strings.Split(cfg.Actions, " ")
|
||||
var err error
|
||||
|
||||
switch action[0] {
|
||||
case "set_wx_menu":
|
||||
// wtstool -a "set_wx_menu default menu.json" -c config.yaml
|
||||
err = setWXMenu(cfg, action[1], action[2])
|
||||
case "set_wx_tags":
|
||||
// wtstool -a "set_wx_tags [tagname]" -c config.yaml
|
||||
err = setWXTags(cfg, action[1])
|
||||
case "get_wx_tags":
|
||||
// wtstool -a "get_wx_tags" -c config.yaml
|
||||
err = getWXTags(cfg)
|
||||
case "get_wx_menu":
|
||||
|
||||
case "gen_jwt_key":
|
||||
// wtstool -a "gen_jwt_key [OpenID] [sid] [access] [username] [avatar] [name] [expire]" -c config.yaml
|
||||
err = genJWTKey(cfg, action[1], action[2], action[3], action[4], action[5], action[6], action[7])
|
||||
case "change_wx_tag":
|
||||
// wtstool -a "change_wx_tag [OpenID] [tag]" -c config.yaml
|
||||
err = changeWXTag(cfg, action[1], action[2])
|
||||
default:
|
||||
fmt.Println("未知的指令,本程序用法见下:")
|
||||
fmt.Println(usage)
|
||||
os.Exit(1)
|
||||
}
|
||||
if err != nil {
|
||||
fmt.Println("执行", action[0], "时出现错误:", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
fmt.Println("ok")
|
||||
}
|
||||
|
||||
func genJWTKey(cfg *config.Config, openID, sid string, accessString string, username string, avatar string, name string, expireString string) error {
|
||||
expire, err := strconv.Atoi(expireString)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if !isValidAccess(accessString) {
|
||||
return fmt.Errorf("无效的访问权限: %s", accessString)
|
||||
}
|
||||
access := sqlc.WtsAccess(accessString)
|
||||
hutil.InitJWTKey(cfg.JWTKey)
|
||||
token, err := hutil.NewWtsJWT(openID, sid, access, username, avatar, name, expire)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
fmt.Printf("生成的JWT令牌为:\n%s\n", token)
|
||||
return nil
|
||||
}
|
||||
|
||||
func isValidAccess(access string) bool {
|
||||
return access == "dev" ||
|
||||
access == "chief" ||
|
||||
access == "api" ||
|
||||
access == "user" ||
|
||||
access == "unregistered" ||
|
||||
access == "formal-member" ||
|
||||
access == "informal-member" ||
|
||||
access == "pre-member" ||
|
||||
access == "group-leader"
|
||||
}
|
||||
107
back/src/cmd/wtstool/wx.go
Normal file
107
back/src/cmd/wtstool/wx.go
Normal file
@@ -0,0 +1,107 @@
|
||||
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)
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user