簡化傳參

This commit is contained in:
2023-05-16 02:56:25 +08:00
parent a6a8f257a4
commit 9681b09b05
4 changed files with 42 additions and 49 deletions

View File

@@ -2,9 +2,7 @@ package routers
import (
"crypto/md5"
"encoding/json"
"fmt"
"io/ioutil"
"main/configs"
"main/models"
"main/utils"
@@ -32,42 +30,26 @@ func UsersGet(w http.ResponseWriter, r *http.Request) {
// 創建用戶
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)
var form map[string]interface{} = utils.BodyRead(r)
if form["name"] == nil || form["email"] == nil || form["password"] == nil {
w.WriteHeader(http.StatusBadRequest)
w.Write([]byte("400 - name, email, password cannot be empty"))
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))),
Name: form["name"].(string),
Email: form["email"].(string),
Password: fmt.Sprintf("%x", md5.Sum([]byte(form["password"].(string)+slat))),
Slat: slat,
}
// 寫入數據庫
if err := configs.ORMDB().Create(&user).Error; err != nil {
fmt.Println(err)
w.WriteHeader(http.StatusBadRequest)
w.Write([]byte("400 - " + err.Error()))
return
}
// 返回信息
w.Header().Set("Content-Type", "application/json; charset=utf-8")
w.Write(utils.ToJSON(user))
@@ -76,39 +58,32 @@ func UsersPost(w http.ResponseWriter, r *http.Request) {
// 獲取用戶
func UsersItemGet(w http.ResponseWriter, r *http.Request) {
user := models.User{ID: utils.ParamInt(mux.Vars(r)["id"], 0)}
configs.ORMDB().First(&user)
if err := configs.ORMDB().First(&user).Error; err != nil {
w.WriteHeader(http.StatusNotFound)
w.Write([]byte("404 - " + err.Error()))
return
}
w.Header().Set("Content-Type", "application/json; charset=utf-8")
w.Write(utils.ToJSON(user))
}
// 更新用戶
func UsersItemPatch(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
}
form := utils.BodyRead(r)
user := models.User{ID: utils.ParamInt(mux.Vars(r)["id"], 0)}
configs.ORMDB().First(&user)
if form.Name != "" {
user.Name = form.Name
if name, ok := form["name"]; ok {
user.Name = name.(string)
}
if form.Email != "" {
user.Email = form.Email
if email, ok := form["email"]; ok {
user.Email = email.(string)
}
if form.Password != "" {
if password, ok := form["password"]; ok {
user.Slat = uuid.New().String()
user.Password = fmt.Sprintf("%x", md5.Sum([]byte(form.Password+user.Slat)))
user.Password = fmt.Sprintf("%x", md5.Sum([]byte(password.(string)+user.Slat)))
}
if admin, ok := form["admin"]; ok {
user.Admin = admin.(bool)
}
configs.ORMDB().Save(&user)
w.Header().Set("Content-Type", "application/json; charset=utf-8")