Files
2023-06-01 08:41:54 +08:00

113 lines
2.4 KiB
Go

package core
import (
"strings"
"github.com/cdle/sillyplus/utils"
"github.com/gin-gonic/gin"
)
type Master struct {
Platform string `json:"platform"`
Nickname string `json:"nickname"`
ID string `json:"number"`
Index int `json:"id"`
Unix int `json:"unix"`
}
func init() {
GinApi(GET, "/api/master/list", func(c *gin.Context) {
plts := getPltsArray()
ms := []Master{}
i := 1
for _, plt := range plts {
v := MakeBucket(plt)
masters := strings.Split(v.GetString("masters"), "&")
for _, master := range masters {
if master == "" {
continue
}
nk := Nickname{ID: master}
nickname.First(&nk)
ms = append(ms, Master{
Platform: plt,
Nickname: nk.Value,
ID: master,
Index: i,
Unix: nk.Unix,
})
i++
}
}
c.JSON(200, map[string]interface{}{
"success": true,
"data": ms,
"platforms": getPltsLabel(),
})
})
GinApi(POST, "/api/master", func(c *gin.Context) {
m := Master{}
c.BindJSON(&m)
if m.ID == "" {
c.JSON(200, map[string]interface{}{
"success": false,
"errorMessage": "缺少号码字段",
})
return
}
if m.Platform == "" {
nk := Nickname{ID: m.ID}
nickname.First(&nk)
if nk.Platform != "" {
m.Platform = nk.Platform
}
}
if m.Platform == "" {
c.JSON(200, map[string]interface{}{
"success": false,
"errorMessage": "缺少平台字段",
})
return
}
v := MakeBucket(m.Platform)
masters := strings.Split(v.GetString("masters"), "&")
v.Set("masters", strings.Join(utils.Unique(masters, m.ID), "&"))
c.JSON(200, map[string]interface{}{
"success": true,
})
})
GinApi(DELETE, "/api/master", func(c *gin.Context) {
m := Master{}
c.BindJSON(&m)
if m.ID == "" {
c.JSON(200, map[string]interface{}{
"success": false,
"errorMessage": "缺少账号字段",
})
return
}
if m.Platform == "" {
nk := Nickname{ID: m.ID}
nickname.First(&nk)
if nk.Platform != "" {
m.Platform = nk.Platform
}
}
if m.Platform == "" {
c.JSON(200, map[string]interface{}{
"success": false,
"errorMessage": "缺少平台字段",
})
return
}
v := MakeBucket(m.Platform)
masters := strings.Split(v.GetString("masters"), "&")
v.Set("masters", strings.Join(utils.Remove(masters, m.ID), "&"))
c.JSON(200, map[string]interface{}{
"success": true,
})
})
}