Spaces:
Sleeping
Sleeping
| 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": "删除成功", | |
| }) | |
| } | |