added user management

This commit is contained in:
Marvin Zhang
2019-07-27 00:56:37 +08:00
parent 087e8e65aa
commit b0cce2f781
2 changed files with 90 additions and 2 deletions

View File

@@ -20,6 +20,19 @@ type User struct {
UpdateTs time.Time `json:"update_ts" bson:"update_ts"`
}
func (user *User) Save() error {
s, c := database.GetCol("users")
defer s.Close()
user.UpdateTs = time.Now()
if err := c.UpdateId(user.Id, user); err != nil {
debug.PrintStack()
return err
}
return nil
}
func (user *User) Add() error {
s, c := database.GetCol("users")
defer s.Close()
@@ -81,7 +94,7 @@ func GetUserByUsername(username string) (User, error) {
}
func GetUserList(filter interface{}, skip int, limit int, sortKey string) ([]User, error) {
s, c := database.GetCol("tasks")
s, c := database.GetCol("users")
defer s.Close()
var users []User
@@ -103,3 +116,35 @@ func GetUserListTotal(filter interface{}) (int, error) {
}
return result, nil
}
func UpdateUser(id bson.ObjectId, item User) error {
s, c := database.GetCol("users")
defer s.Close()
var result User
if err := c.FindId(id).One(&result); err != nil {
debug.PrintStack()
return err
}
if err := item.Save(); err != nil {
return err
}
return nil
}
func RemoveUser(id bson.ObjectId) error {
s, c := database.GetCol("users")
defer s.Close()
var result User
if err := c.FindId(id).One(&result); err != nil {
return err
}
if err := c.RemoveId(id); err != nil {
return err
}
return nil
}

View File

@@ -60,12 +60,17 @@ func GetUserList(c *gin.Context) {
}
// 获取总用户数
total, err := model.GetTaskListTotal(nil)
total, err := model.GetUserListTotal(nil)
if err != nil {
HandleError(http.StatusInternalServerError, c, err)
return
}
// 去除密码
for i := range users {
users[i].Password = ""
}
c.JSON(http.StatusOK, ListResponse{
Status: "ok",
Message: "success",
@@ -100,9 +105,47 @@ func PutUser(c *gin.Context) {
}
func PostUser(c *gin.Context) {
id := c.Param("id")
if !bson.IsObjectIdHex(id) {
HandleErrorF(http.StatusBadRequest, c, "invalid id")
}
var item model.User
if err := c.ShouldBindJSON(&item); err != nil {
HandleError(http.StatusBadRequest, c, err)
return
}
if err := model.UpdateUser(bson.ObjectIdHex(id), item); err != nil {
HandleError(http.StatusInternalServerError, c, err)
return
}
c.JSON(http.StatusOK, Response{
Status: "ok",
Message: "success",
})
}
func DeleteUser(c *gin.Context) {
id := c.Param("id")
if !bson.IsObjectIdHex(id) {
HandleErrorF(http.StatusBadRequest, c, "invalid id")
return
}
// 从数据库中删除该爬虫
if err := model.RemoveUser(bson.ObjectIdHex(id)); err != nil {
HandleError(http.StatusInternalServerError, c, err)
return
}
c.JSON(http.StatusOK, Response{
Status: "ok",
Message: "success",
})
}
func Login(c *gin.Context) {