user UpdatedAt
This commit is contained in:
		@@ -6,17 +6,18 @@ import (
 | 
			
		||||
	"main/models"
 | 
			
		||||
	"main/utils"
 | 
			
		||||
	"net/http"
 | 
			
		||||
	"time"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// 獲取當前賬戶信息(重寫, 爲輸出增加sid字段)
 | 
			
		||||
func AccountGet(w http.ResponseWriter, r *http.Request) {
 | 
			
		||||
	var account struct {
 | 
			
		||||
		ID        int    `json:"id"`
 | 
			
		||||
		Name      string `json:"name"`
 | 
			
		||||
		Email     string `json:"email"`
 | 
			
		||||
		SessionID string `json:"session_id"`
 | 
			
		||||
		CreatedAt string `json:"created_at"`
 | 
			
		||||
		UpdatedAt string `json:"updated_at"`
 | 
			
		||||
		ID        int       `json:"id"`
 | 
			
		||||
		Name      string    `json:"name"`
 | 
			
		||||
		Email     string    `json:"email"`
 | 
			
		||||
		SessionID string    `json:"session_id"`
 | 
			
		||||
		CreatedAt time.Time `json:"created_at"`
 | 
			
		||||
		UpdatedAt time.Time `json:"updated_at"`
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// 獲取Cookie
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										106
									
								
								routers/dataset.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										106
									
								
								routers/dataset.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,106 @@
 | 
			
		||||
package routers
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"encoding/json"
 | 
			
		||||
	"io/ioutil"
 | 
			
		||||
	"main/configs"
 | 
			
		||||
	"main/models"
 | 
			
		||||
	"main/utils"
 | 
			
		||||
	"net/http"
 | 
			
		||||
	"time"
 | 
			
		||||
 | 
			
		||||
	"github.com/gorilla/mux"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
type Dataset struct {
 | 
			
		||||
	ID        int       `json:"id" gorm:"primary_key"`
 | 
			
		||||
	Name      string    `json:"name"`
 | 
			
		||||
	Type      string    `json:"type"`
 | 
			
		||||
	Info      string    `json:"info"`
 | 
			
		||||
	CreatedAt time.Time `json:"created_at" gorm:"default:CURRENT_TIMESTAMP;autoCreateTime"`
 | 
			
		||||
	UpdatedAt time.Time `json:"updated_at" gorm:"default:CURRENT_TIMESTAMP;autoUpdateTime"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func init() {
 | 
			
		||||
	configs.ORMDB().AutoMigrate(&Dataset{})
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func DatasetsGet(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 dataset_list []Dataset
 | 
			
		||||
	db := configs.ORMDB()
 | 
			
		||||
	db.Offset((listview.Page - 1) * listview.PageSize).Limit(listview.PageSize).Find(&dataset_list)
 | 
			
		||||
	for _, dataset := range dataset_list {
 | 
			
		||||
		listview.List = append(listview.List, dataset)
 | 
			
		||||
	}
 | 
			
		||||
	db.Model(&Dataset{}).Count(&listview.Total)
 | 
			
		||||
	listview.Next = listview.Page*listview.PageSize < int(listview.Total)
 | 
			
		||||
	listview.WriteJSON(w)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func DatasetsPost(w http.ResponseWriter, r *http.Request) {
 | 
			
		||||
	dataset := Dataset{}
 | 
			
		||||
	if err := configs.ORMDB().Create(&dataset).Error; err != nil {
 | 
			
		||||
		w.WriteHeader(http.StatusInternalServerError)
 | 
			
		||||
		w.Write([]byte("500 - Internal Server Error"))
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
	w.Header().Set("Content-Type", "application/json; charset=utf-8")
 | 
			
		||||
	w.Write(utils.ToJSON(dataset))
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 獲取數據集
 | 
			
		||||
func DatasetsItemGet(w http.ResponseWriter, r *http.Request) {
 | 
			
		||||
	dataset := Dataset{ID: utils.ParamInt(mux.Vars(r)["dataset_id"], 0)}
 | 
			
		||||
	if err := configs.ORMDB().Find(&dataset).Error; err != nil {
 | 
			
		||||
		w.WriteHeader(http.StatusNotFound)
 | 
			
		||||
		w.Write([]byte("404 - Not Found"))
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
	w.Header().Set("Content-Type", "application/json; charset=utf-8")
 | 
			
		||||
	w.Write(utils.ToJSON(dataset))
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func DatasetsItemPatch(w http.ResponseWriter, r *http.Request) {
 | 
			
		||||
	dataset := Dataset{ID: utils.ParamInt(mux.Vars(r)["dataset_id"], 0)}
 | 
			
		||||
	// 取出更新数据
 | 
			
		||||
	var dataset_new Dataset
 | 
			
		||||
	body, err := ioutil.ReadAll(r.Body)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		w.WriteHeader(http.StatusInternalServerError)
 | 
			
		||||
		w.Write([]byte("500 - Internal Server Error"))
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
	defer r.Body.Close()
 | 
			
		||||
	if err = json.Unmarshal(body, &dataset_new); err != nil {
 | 
			
		||||
		w.WriteHeader(http.StatusInternalServerError)
 | 
			
		||||
		w.Write([]byte("500 - Internal Server Error"))
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// 合併字段
 | 
			
		||||
	if dataset_new.Name != "" {
 | 
			
		||||
		dataset.Name = dataset_new.Name
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// 執行更新
 | 
			
		||||
	if err := configs.ORMDB().Model(&dataset).Updates(dataset_new).Error; err != nil {
 | 
			
		||||
		w.WriteHeader(http.StatusNotFound)
 | 
			
		||||
		w.Write([]byte("404 - Not Found"))
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
	w.Header().Set("Content-Type", "application/json; charset=utf-8")
 | 
			
		||||
	w.Write(utils.ToJSON(dataset))
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func DatasetsItemDelete(w http.ResponseWriter, r *http.Request) {
 | 
			
		||||
	dataset := Dataset{ID: utils.ParamInt(mux.Vars(r)["dataset_id"], 0)}
 | 
			
		||||
	if err := configs.ORMDB().Delete(&dataset).Error; err != nil {
 | 
			
		||||
		w.WriteHeader(http.StatusNotFound)
 | 
			
		||||
		w.Write([]byte("404 - Not Found"))
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
	w.WriteHeader(http.StatusNoContent)
 | 
			
		||||
}
 | 
			
		||||
@@ -8,7 +8,6 @@ import (
 | 
			
		||||
	"main/models"
 | 
			
		||||
	"main/utils"
 | 
			
		||||
	"net/http"
 | 
			
		||||
	"time"
 | 
			
		||||
 | 
			
		||||
	"github.com/gorilla/mux"
 | 
			
		||||
)
 | 
			
		||||
@@ -74,7 +73,6 @@ func ImagesItemPatch(w http.ResponseWriter, r *http.Request) {
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
	image.ID = utils.ParamInt(mux.Vars(r)["id"], 0)
 | 
			
		||||
	image.UpdatedAt = time.Now().Format("2006-01-02 15:04:05")
 | 
			
		||||
	if err := configs.ORMDB().Model(&image).Updates(image).Error; err != nil {
 | 
			
		||||
		log.Println(err)
 | 
			
		||||
		return
 | 
			
		||||
 
 | 
			
		||||
@@ -10,7 +10,6 @@ import (
 | 
			
		||||
	"main/utils"
 | 
			
		||||
	"net/http"
 | 
			
		||||
	"strconv"
 | 
			
		||||
	"time"
 | 
			
		||||
 | 
			
		||||
	"github.com/gorilla/mux"
 | 
			
		||||
	"github.com/gorilla/websocket"
 | 
			
		||||
@@ -144,9 +143,6 @@ func ModelItemPatch(w http.ResponseWriter, r *http.Request) {
 | 
			
		||||
		model.Image = model_new.Image
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// 更新時間
 | 
			
		||||
	model.UpdatedAt = time.Now().Format("2006-01-02 15:04:05")
 | 
			
		||||
 | 
			
		||||
	// 執行更新
 | 
			
		||||
	if err := configs.ORMDB().Save(&model).Error; err != nil {
 | 
			
		||||
		log.Println(err)
 | 
			
		||||
 
 | 
			
		||||
@@ -9,7 +9,6 @@ import (
 | 
			
		||||
	"main/models"
 | 
			
		||||
	"main/utils"
 | 
			
		||||
	"net/http"
 | 
			
		||||
	"time"
 | 
			
		||||
 | 
			
		||||
	"github.com/google/uuid"
 | 
			
		||||
	"github.com/gorilla/mux"
 | 
			
		||||
@@ -57,13 +56,13 @@ func UsersPost(w http.ResponseWriter, r *http.Request) {
 | 
			
		||||
	// 創建用戶
 | 
			
		||||
	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"),
 | 
			
		||||
		Name:     form.Name,
 | 
			
		||||
		Email:    form.Email,
 | 
			
		||||
		Password: fmt.Sprintf("%x", md5.Sum([]byte(form.Password+slat))),
 | 
			
		||||
		Slat:     slat,
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// 寫入數據庫
 | 
			
		||||
	if err := configs.ORMDB().Create(&user).Error; err != nil {
 | 
			
		||||
		fmt.Println(err)
 | 
			
		||||
		return
 | 
			
		||||
@@ -84,21 +83,34 @@ func UsersItemGet(w http.ResponseWriter, r *http.Request) {
 | 
			
		||||
 | 
			
		||||
// 更新用戶
 | 
			
		||||
func UsersItemPatch(w http.ResponseWriter, r *http.Request) {
 | 
			
		||||
	user := models.User{ID: utils.ParamInt(mux.Vars(r)["id"], 0)}
 | 
			
		||||
	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, &user); err != nil {
 | 
			
		||||
	if err = json.Unmarshal(body, &form); err != nil {
 | 
			
		||||
		fmt.Println(err)
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
	if err := configs.ORMDB().Save(&user).Error; err != nil {
 | 
			
		||||
		fmt.Println(err)
 | 
			
		||||
		return
 | 
			
		||||
	user := models.User{ID: utils.ParamInt(mux.Vars(r)["id"], 0)}
 | 
			
		||||
	configs.ORMDB().First(&user)
 | 
			
		||||
	if form.Name != "" {
 | 
			
		||||
		user.Name = form.Name
 | 
			
		||||
	}
 | 
			
		||||
	if form.Email != "" {
 | 
			
		||||
		user.Email = form.Email
 | 
			
		||||
	}
 | 
			
		||||
	if form.Password != "" {
 | 
			
		||||
		user.Slat = uuid.New().String()
 | 
			
		||||
		user.Password = fmt.Sprintf("%x", md5.Sum([]byte(form.Password+user.Slat)))
 | 
			
		||||
	}
 | 
			
		||||
	configs.ORMDB().Save(&user)
 | 
			
		||||
	w.Header().Set("Content-Type", "application/json; charset=utf-8")
 | 
			
		||||
	w.Write(utils.ToJSON(user))
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user