sublinker / api /sub.go
YimoEx
init
bb9df9e
package api
import (
"strconv"
"strings"
"sublink/models"
"time"
"github.com/gin-gonic/gin"
)
func SubTotal(c *gin.Context) {
var Sub models.Subcription
subs, err := Sub.List()
count := len(subs)
if err != nil {
c.JSON(500, gin.H{
"msg": "取得订阅总数失败",
})
return
}
c.JSON(200, gin.H{
"code": "00000",
"data": count,
"msg": "取得订阅总数",
})
}
// 获取订阅列表
func SubGet(c *gin.Context) {
var Sub models.Subcription
Subs, err := Sub.List()
if err != nil {
c.JSON(500, gin.H{
"msg": "node list error",
})
return
}
c.JSON(200, gin.H{
"code": "00000",
"data": Subs,
"msg": "node get",
})
}
// 添加节点
func SubAdd(c *gin.Context) {
var sub models.Subcription
name := c.PostForm("name")
config := c.PostForm("config")
nodes := c.PostForm("nodes")
if name == "" || nodes == "" {
c.JSON(400, gin.H{
"msg": "订阅名称 or 节点不能为空",
})
return
}
sub.Nodes = []models.Node{}
for _, v := range strings.Split(nodes, ",") {
var node models.Node
node.Name = v
err := node.Find()
if err != nil {
continue
}
sub.Nodes = append(sub.Nodes, node)
}
sub.Config = config
sub.Name = name
sub.CreateDate = time.Now().Format("2006-01-02 15:04:05")
err := sub.Add()
if err != nil {
c.JSON(400, gin.H{
"msg": "添加失败",
})
return
}
err = sub.AddNode() //创建多对多关系
if err != nil {
c.JSON(400, gin.H{
"msg": err.Error(),
})
return
}
c.JSON(200, gin.H{
"code": "00000",
"msg": "添加成功",
})
}
// 更新节点
func SubUpdate(c *gin.Context) {
var sub models.Subcription
name := c.PostForm("name")
oldname := c.PostForm("oldname")
config := c.PostForm("config")
nodes := c.PostForm("nodes")
if name == "" || nodes == "" {
c.JSON(400, gin.H{
"msg": "订阅名称 or 节点不能为空",
})
return
}
// 查找旧节点
sub.Name = oldname
err := sub.Find()
if err != nil {
c.JSON(400, gin.H{
"msg": err.Error(),
})
return
}
// 更新节点
sub.Config = config
sub.Name = name
sub.CreateDate = time.Now().Format("2006-01-02 15:04:05")
sub.Nodes = []models.Node{}
for _, v := range strings.Split(nodes, ",") {
var node models.Node
node.Name = v
err := node.Find()
if err != nil {
continue
}
sub.Nodes = append(sub.Nodes, node)
}
err = sub.Update()
if err != nil {
c.JSON(400, gin.H{
"msg": "更新失败",
})
return
}
err = sub.UpdateNodes() //更新多对多关系
if err != nil {
c.JSON(400, gin.H{
"msg": err.Error(),
})
return
}
c.JSON(200, gin.H{
"code": "00000",
"msg": "更新成功",
})
}
// 删除节点
func SubDel(c *gin.Context) {
var sub models.Subcription
id := c.Query("id")
if id == "" {
c.JSON(400, gin.H{
"msg": "id 不能为空",
})
return
}
x, _ := strconv.Atoi(id)
sub.ID = x
err := sub.Find()
if err != nil {
c.JSON(400, gin.H{
"msg": "查找失败",
})
return
}
err = sub.Del()
if err != nil {
c.JSON(400, gin.H{
"msg": "删除失败",
})
return
}
c.JSON(200, gin.H{
"code": "00000",
"msg": "删除成功",
})
}