package routers import ( "crypto/md5" "encoding/json" "fmt" "io/ioutil" "main/configs" "main/models" "main/utils" "net/http" "time" "github.com/google/uuid" "github.com/gorilla/mux" ) // 獲取用戶列表 func UsersGet(w http.ResponseWriter, r *http.Request) { var listview models.ListView listview.Page = utils.ParamInt(r.URL.Query().Get("page"), 1) listview.PageSize = utils.ParamInt(r.URL.Query().Get("pageSize"), 10) var user_list []models.User db := configs.ORMDB() db.Offset((listview.Page - 1) * listview.PageSize).Limit(listview.PageSize).Find(&user_list) for _, user := range user_list { listview.List = append(listview.List, user) } db.Model(&models.User{}).Count(&listview.Total) listview.Next = listview.Page*listview.PageSize < int(listview.Total) listview.WriteJSON(w) } // 創建用戶 func UsersPost(w http.ResponseWriter, r *http.Request) { var form struct { Name string `json:"name"` Email string `json:"email"` Password string `json:"password"` } body, err := ioutil.ReadAll(r.Body) if err != nil { fmt.Println(err) return } defer r.Body.Close() if err = json.Unmarshal(body, &form); err != nil { fmt.Println(err) return } if form.Name == "" || form.Email == "" || form.Password == "" { fmt.Println("name, email, password cannot be empty") return } // 創建用戶 var slat string = uuid.New().String() var user models.User = models.User{ Name: form.Name, Email: form.Email, Password: fmt.Sprintf("%x", md5.Sum([]byte(form.Password+slat))), Slat: slat, CreatedAt: time.Now().Format("2006-01-02 15:04:05"), UpdatedAt: time.Now().Format("2006-01-02 15:04:05"), } if err := configs.ORMDB().Create(&user).Error; err != nil { fmt.Println(err) return } // 返回信息 w.Header().Set("Content-Type", "application/json; charset=utf-8") w.Write(utils.ToJSON(user)) } // 獲取用戶 func UsersItemGet(w http.ResponseWriter, r *http.Request) { user := models.User{ID: utils.ParamInt(mux.Vars(r)["id"], 0)} configs.ORMDB().First(&user) w.Header().Set("Content-Type", "application/json; charset=utf-8") w.Write(utils.ToJSON(user)) } // 更新用戶 func UsersItemPatch(w http.ResponseWriter, r *http.Request) { user := models.User{ID: utils.ParamInt(mux.Vars(r)["id"], 0)} body, err := ioutil.ReadAll(r.Body) if err != nil { fmt.Println(err) return } defer r.Body.Close() if err = json.Unmarshal(body, &user); err != nil { fmt.Println(err) return } if err := configs.ORMDB().Save(&user).Error; err != nil { fmt.Println(err) return } w.Header().Set("Content-Type", "application/json; charset=utf-8") w.Write(utils.ToJSON(user)) } // 刪除用戶 func UsersItemDelete(w http.ResponseWriter, r *http.Request) { user := models.User{ID: utils.ParamInt(mux.Vars(r)["id"], 0)} configs.ORMDB().Delete(&user) w.Header().Set("Content-Type", "application/json; charset=utf-8") w.Write(utils.ToJSON(user)) }