新增修改更新api

This commit is contained in:
jiayuqi7813
2022-07-01 02:08:07 +08:00
parent d0b5c96f23
commit 99ae909180
5 changed files with 118 additions and 25 deletions

View File

@@ -6,6 +6,7 @@ import (
"main.go/api"
db "main.go/database"
. "main.go/type"
"strconv"
"strings"
)
@@ -22,9 +23,8 @@ type CrDb struct {
Visible int `json:"visible"`
}
//NewChallenge 新建一个题目
func NewChallenge(c *gin.Context){
func NewChallenge(c *gin.Context) {
var request ChallengeRequest
if err := c.ShouldBindJSON(&request); err != nil {
fmt.Println(err)
@@ -77,3 +77,48 @@ func addChallenge(c *Challenge) error {
}
return nil
}
// DelChallenge 删除题目
func DelChallenge(c *gin.Context) {
api.Link()
DB := db.DBsnctf
id := c.Param("id")
err := DB.Table("challenge").Where("id = ?", id).Delete(&Challenge{}).Error
if err != nil {
c.JSON(400, gin.H{"code": 400, "msg": "Delete challenge failure!"})
return
}
c.JSON(200, gin.H{"code": 200, "msg": "Delete challenge success!"})
}
// EditChallenge 修改题目
func EditChallenge(c *gin.Context) {
api.Link()
DB := db.DBsnctf
id := c.Param("id")
cid, _ := strconv.Atoi(id)
var request ChallengeRequest
if err := c.ShouldBindJSON(&request); err != nil {
c.JSON(400, gin.H{"code": 400, "msg": "Request format wrong!"})
return
}
challenge := &Challenge{
ID: cid,
Name: request.Name,
Score: request.Score,
Flag: request.Flag,
Description: request.Description,
Attachment: request.Attachment,
Category: request.Category,
Tags: request.Tags,
Hints: request.Hints,
Visible: request.Visible,
}
err := DB.Table("challenge").Where("id = ?", cid).Updates(challenge).Error
if err != nil {
c.JSON(400, gin.H{"code": 400, "msg": "Update challenge failure!"})
return
}
c.JSON(200, gin.H{"code": 200, "msg": "Update challenge success!"})
}

View File

@@ -1,9 +1,11 @@
package api
import (
"fmt"
"github.com/gin-gonic/gin"
. "main.go/type"
db "main.go/database"
"main.go/tools"
. "main.go/type"
)
// GetAllNotices 获取所有的公告
@@ -17,7 +19,6 @@ func GetAllNotices(c *gin.Context) {
c.JSON(200, gin.H{"code": 200, "data": notices})
}
func getAllNotices(notices *[]Notice) error {
Link()
DB := db.DBsnctf
@@ -37,3 +38,41 @@ func getAllNotices(notices *[]Notice) error {
}
return rows.Err()
}
// AddNewNotices 新增公告
func AddNewNotices(c *gin.Context) {
Link()
DB := db.DBsnctf
var request NoticeRequest
if err := c.ShouldBindJSON(&request); err != nil {
fmt.Println(err)
c.JSON(400, gin.H{"code": 400, "msg": "Request format wrong!"})
return
}
addtime := tools.Timestamp()
notice := &Notice{
Title: request.Title,
Content: request.Content,
CreatedAt: addtime,
}
err := DB.Table("notice").Create(&notice).Error
if err != nil {
c.JSON(400, gin.H{"code": 400, "msg": "error for database"})
return
}
c.JSON(200, gin.H{"code": 200, "msg": "success!"})
}
// DelNotice 删除公告
func DelNotice(c *gin.Context) {
Link()
DB := db.DBsnctf
noticeid := c.Param("id")
err := DB.Table("notice").Where("id = ?", noticeid).Delete(&Notice{}).Error
if err != nil {
c.JSON(400, gin.H{"code": 400, "msg": "error for database"})
return
}
c.JSON(200, gin.H{"code": 200, "msg": "success!"})
}

View File

@@ -56,7 +56,6 @@ func Initrouter() {
personal.GET("/score/self", api.GetSelfScoreAndRank)
// 获取所有用户信息
personal.GET("/users", api.GetAllUserInfo)
// 校内排行api暂时留空
}
// 管理员api需要用户登陆且Role=1才能访问
@@ -65,7 +64,19 @@ func Initrouter() {
{
// 创建新题目
manager.POST("/challenge", admin.NewChallenge)
// 删除题目 暂未测试
manager.DELETE("/challenge/:id", admin.DelChallenge)
// 更新题目信息 暂未测试
manager.PUT("/challenge/:id", admin.EditChallenge)
//创建新公告
manager.POST("/notice", api.AddNewNotices)
//删除公告 暂未测试
manager.DELETE("/notice/:id", api.DelNotice)
}
router.Run(":9000")
err := router.Run(":9000")
if err != nil {
return
}
}

BIN
snctf.db

Binary file not shown.

View File

@@ -28,8 +28,6 @@ func Token() string {
func Timestamp() int {
// time_zone := time.FixedZone("UTC", 0)
// t := time.Now().In(time_zone).Unix()
t := time.Now().Unix()
t := time.Now().UnixNano() / 1e6
return int(t)
}