批量优化

This commit is contained in:
hero920103 committed 2026-10-03 23:46:55 +08:00
1 parent e3db229f41
commit aa92ca40a2
79 files changed
+7495 -1104

No files matched your search

+131
View File
@@ -0,0 +1,131 @@
package controllers
import (
"encoding/json"
"fmt"
"io"
"strings"
"server/pkg/jwtutil"
"server/services/wechatmp"
"server/services/wechatmini"
beego "github.com/beego/beego/v2/server/web"
)
// =============================================================
// 平台端「微信小程序」配置:AppID / AppSecret / 启用开关 / 自动绑定
//
// 配置就绪后,uniapp 小程序端的登录页才会展示「微信手机号一键登录」入口
// (GET /auth/wechat/miniapp/config 返回 enabled)。
// AppSecret 掩码回显,提交空串或掩码表示不修改。
// =============================================================
// PlatformWechatMiniController 平台端微信小程序配置
type PlatformWechatMiniController struct {
beego.Controller
}
func (c *PlatformWechatMiniController) claims() (*jwtutil.Claims, error) {
auth := c.Ctx.Request.Header.Get("Authorization")
if auth == "" {
return nil, fmt.Errorf("未登录")
}
parts := strings.SplitN(auth, " ", 2)
if len(parts) != 2 || parts[0] != "Bearer" {
return nil, fmt.Errorf("认证信息格式错误")
}
claims, err := jwtutil.ParseToken(parts[1])
if err != nil {
return nil, fmt.Errorf("无效的token")
}
if claims.UserType != "platform" {
return nil, fmt.Errorf("无权访问")
}
return claims, nil
}
func (c *PlatformWechatMiniController) jsonErr(httpStatus, bizCode int, msg string) {
c.Ctx.Output.SetStatus(httpStatus)
c.Data["json"] = map[string]interface{}{"code": bizCode, "msg": msg}
_ = c.ServeJSON()
}
func (c *PlatformWechatMiniController) ok(data interface{}, msg string) {
if msg == "" {
msg = "success"
}
resp := map[string]interface{}{"code": 200, "msg": msg}
if data != nil {
resp["data"] = data
}
c.Data["json"] = resp
_ = c.ServeJSON()
}
// GetConfig GET /platform/wechatMini/config
func (c *PlatformWechatMiniController) GetConfig() {
if _, err := c.claims(); err != nil {
c.jsonErr(401, 401, err.Error())
return
}
data := map[string]interface{}{
"app_id": "",
"app_secret": "",
"enabled": 0,
"auto_bind": 1,
"remark": "",
"configured": false,
}
if cfg, err := wechatmini.LoadConfig(); err == nil {
data["app_id"] = cfg.AppID
data["app_secret"] = wechatmp.MaskSecret(cfg.AppSecret)
data["remark"] = cfg.Remark
data["configured"] = cfg.AppID != "" && cfg.AppSecret != ""
if cfg.Enabled {
data["enabled"] = 1
}
if cfg.AutoBind {
data["auto_bind"] = 1
} else {
data["auto_bind"] = 0
}
}
c.ok(data, "获取成功")
}
// SaveConfig POST /platform/wechatMini/config
func (c *PlatformWechatMiniController) SaveConfig() {
if _, err := c.claims(); err != nil {
c.jsonErr(401, 401, err.Error())
return
}
var p struct {
AppID string `json:"app_id"`
AppSecret string `json:"app_secret"`
Enabled int `json:"enabled"`
AutoBind int `json:"auto_bind"`
Remark string `json:"remark"`
}
raw, err := io.ReadAll(c.Ctx.Request.Body)
if err != nil {
c.jsonErr(400, 400, "参数错误")
return
}
if err := json.Unmarshal(raw, &p); err != nil {
c.jsonErr(400, 400, "参数错误")
return
}
if err := wechatmini.SaveConfig(wechatmini.SaveInput{
AppID: p.AppID,
AppSecret: p.AppSecret,
Enabled: p.Enabled == 1,
AutoBind: p.AutoBind == 1,
Remark: p.Remark,
}); err != nil {
c.jsonErr(400, 400, err.Error())
return
}
c.ok(nil, "保存成功")
}