前面幾天已經寫了好幾支API,有三支比較小的API,在這快速把它帶過,不然後面前端跟上線的篇幅會被壓縮到
[GET] api/user/logout
後端直接把cookie token這個key清空就好~
hander/user.go
// GetUserLogout GetUserLogout
func GetUserLogout(c *gin.Context) {
c.SetCookie(jwt.Key, "", -1, "/", config.Val.Domain, false, true)
res.Success(c, gin.H{})
}
[GET] api/task/done
回傳值:
{
"data": {
"groups": [
{
"id": 1,
"name": "A"
}
]
},
"result": true
}
hander/api.go
// GetGroupsName GetGroupsName
func GetGroupsName(c *gin.Context) {
userID := c.GetString("user_id")
groups, err := model.TaskModel.GetGroup(userID)
if err != nil {
log.WithFields(log.Fields{
"user_id": userID,
"origin_err": err.Error(),
}).Error("GetGroup error")
res.SystemError(c, res.ErrSystemCode, gin.H{})
return
}
type groupNameList struct {
ID int `json:"id"`
Name string `json:"name"`
}
data := []groupNameList{}
for _, g := range groups {
data = append(data, groupNameList{
ID: g.ID,
Name: g.Name,
})
}
res.Success(c, gin.H{
"groups": data,
})
}
任務可以打勾把狀態改為完成,在清單上就不會再出現,但報表一樣會統計它的時間。
[PUT] api/task/done
hander/api.go
// TaskDone TaskDone
func TaskDone(c *gin.Context) {
var params struct {
ID int `json:"id" binding:"required"`
}
if err := c.ShouldBindJSON(¶ms); err != nil {
res.BadRequest(c, res.ErrParamsCode, gin.H{
"msg": err.Error(),
})
return
}
if err := model.TaskModel.Done(params.ID, c.GetString("user_id")); err != nil {
log.WithFields(log.Fields{
"origin_err": err.Error(),
}).Error("db error")
res.SystemError(c, res.ErrSystemCode, gin.H{})
return
}
res.Success(c, gin.H{})
}
今天的commit
明天開始會進行前端的開發囉~