簡化傳參
This commit is contained in:
		@@ -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")
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user