Skip to content

Commit

Permalink
增加事务
Browse files Browse the repository at this point in the history
  • Loading branch information
phper-hejing committed Jan 10, 2020
1 parent efd3d7b commit d3a1e0f
Show file tree
Hide file tree
Showing 54 changed files with 1,503,638 additions and 5,877 deletions.
38 changes: 38 additions & 0 deletions api/csvInfo.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
package api

import (
"encoding/csv"
"encoding/json"
"fmt"
"github.com/donnie4w/go-logger/logger"
"os"
"strings"
)

type CsvInfoMessage struct {
Message
}

func (csvInfoMessage CsvInfoMessage) Do() {
pathArr := strings.Split(csvInfoMessage.Request.RequestURI, "/")
fileName := pathArr[len(pathArr)-1]
filePath := fmt.Sprintf("%s/%s", UPLOAD_PATH, fileName)
f, err := os.Open(filePath)
csv := csv.NewReader(f)
record, err := csv.ReadAll()
if err != nil {
logger.Debug(err)
return
}
fileData := make([][]string, 0)
for _, v := range record[:5] {
fileData = append(fileData, v)
}

uploadResp := UploadResp{
FileName: fileName,
FileData: fileData,
}
resp, _ := json.Marshal(uploadResp)
csvInfoMessage.Message.ResponseWriter.Write(resp)
}
133 changes: 133 additions & 0 deletions api/data.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,133 @@
package api

import (
"encoding/json"
"errors"
"fmt"
"github.com/donnie4w/go-logger/logger"
"insane/utils"
"io/ioutil"
"os"
)

type DataMessage struct {
Message
}

type dataRequest struct {
Type string `json:"type"` // get | getAll | save
FileId string `json:"fileId"`
FileName string `json:"fileName"`
FileType string `json:"fileType"`
Data map[string]interface{} `json:"data"`
}

const (
DATA_PATH = "./data"
TYPE_SAVE = "save"
TYPE_GET = "get"
TYPE_GET_ALL = "getAll"
TYPE_DELETE = "delete"
FILE_TYPE_TEST_DATA = "test_data"
FILE_TYPE_TEST_SCRIPT = "test_script"
FILE_TYPE_TEST_TASK = "test_task"
)

func (dataMessage DataMessage) Do() {
var dataReq dataRequest
var err error
defer func() {
if err != nil {
dataMessage.Message.ResponseWriter.WriteHeader(500)
}
}()

body, err := ioutil.ReadAll(dataMessage.Message.Request.Body)
if err != nil {
logger.Debug(err)
return
}
err = json.Unmarshal(body, &dataReq)
if err != nil {
logger.Debug(err)
return
}
if dataReq.FileType == "" || dataReq.Type == "" {
err = errors.New("type或者fileType不能为空")
logger.Debug(err)
return
}

if dataReq.Type == TYPE_GET_ALL {
var getAllData = make([]string, 0)
dir, err := os.OpenFile(fmt.Sprintf("%s/%s", DATA_PATH, dataReq.FileType), os.O_RDONLY, os.ModeDir)
if err != nil {
logger.Debug(err)
return
}
defer dir.Close()
dirInfo, _ := dir.Readdir(-1)
for _, fileInfo := range dirInfo {
file, err := os.Open(fmt.Sprintf("%s/%s/%s", DATA_PATH, dataReq.FileType, fileInfo.Name()))
if err != nil {
logger.Debug(err)
return
}
dataByte, err := ioutil.ReadAll(file)
if err != nil {
logger.Debug(err)
return
}
getAllData = append(getAllData, string(dataByte))
file.Close()
}
dataJson, err := json.Marshal(getAllData)
dataMessage.Message.ResponseWriter.Write(dataJson)
return
}

if dataReq.Type == TYPE_DELETE {
if dataReq.FileName == "" {
err = errors.New("文件不能为空")
logger.Debug(err)
return
}
os.Remove(fmt.Sprintf("%s/%s/%s", DATA_PATH, dataReq.FileType, dataReq.FileName))
dataMessage.Message.ResponseWriter.Write([]byte(`{"status":"success"}`))
return
}

fileName := dataReq.FileName
if fileName == "" {
fileName = fmt.Sprintf("%d.json", utils.Now())
}
f, err := os.OpenFile(fmt.Sprintf("%s/%s/%s", DATA_PATH, dataReq.FileType, fileName), os.O_TRUNC|os.O_CREATE, 0666)
defer f.Close()

if dataReq.Type == TYPE_SAVE {

if dataReq.FileId != "" {
os.Remove(fmt.Sprintf("%s/%s/%s", DATA_PATH, dataReq.FileType, dataReq.FileId))
}

dataByte, err := json.Marshal(dataReq.Data)
if err != nil {
logger.Debug(err)
return
}
f.Write(dataByte)
dataMessage.Message.ResponseWriter.Write([]byte(`{"status":"success"}`))
return
}

if dataReq.Type == TYPE_GET {
dataByte, err := ioutil.ReadAll(f)
if err != nil {
logger.Debug(err)
return
}
dataMessage.Message.ResponseWriter.Write(dataByte)
return
}

}
24 changes: 7 additions & 17 deletions api/httpwrap.go
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package api

import (
"encoding/json"
"github.com/donnie4w/go-logger/logger"
"github.com/gorilla/websocket"
"insane/server"
Expand All @@ -12,20 +11,20 @@ import (
)

type IMessage interface {
Init(http.ResponseWriter, *http.Request)
Init(http.ResponseWriter, *http.Request, bool)
Do()
}

type Message struct {
Request *http.Request
ResponseWriter http.ResponseWriter
WsConn *websocket.Conn
InsaneRequest *server.Request
InsaneRequest *server.InsaneRequest
}

var upgrader = websocket.Upgrader{} // use default options

func (imsg *Message) Init(writer http.ResponseWriter, request *http.Request) {
func (imsg *Message) Init(writer http.ResponseWriter, request *http.Request, isParseBody bool) {

// 是否是websocket请求
var wsConn *websocket.Conn
Expand All @@ -42,24 +41,15 @@ func (imsg *Message) Init(writer http.ResponseWriter, request *http.Request) {
}
}

// 是否是multipart
isParseBody := true
HeaderContentType := strings.ToLower(request.Header.Get("content-type"))
if strings.Contains(HeaderContentType, "multipart") {
isParseBody = false
}

insaneReq := server.GenerateRequest()
insaneReq := server.GenerateInsaneRequest()
if isParseBody {
// 解析请求参数
body, err := ioutil.ReadAll(request.Body)
if err != nil {
logger.Debug(err)
}
if len(body) != 0 {
if err := json.Unmarshal(body, insaneReq); err != nil {
logger.Debug(err)
}
insaneReq.Parse(body)
}
}

Expand All @@ -69,7 +59,7 @@ func (imsg *Message) Init(writer http.ResponseWriter, request *http.Request) {
imsg.WsConn = wsConn
}

func HandleMessage(imsg IMessage) http.HandlerFunc {
func HandleMessage(imsg IMessage, isParseBody bool) http.HandlerFunc {
return func(writer http.ResponseWriter, request *http.Request) {

writer.Header().Set("Access-Control-Allow-Origin", "*")
Expand All @@ -82,7 +72,7 @@ func HandleMessage(imsg IMessage) http.HandlerFunc {
return
}

imsg.Init(writer, request)
imsg.Init(writer, request, isParseBody)
imsg.Do()
}
}
Expand Down
88 changes: 0 additions & 88 deletions api/report.go

This file was deleted.

Loading

0 comments on commit d3a1e0f

Please sign in to comment.