go基于结构的CRUD(JSON)

go基于结构的CRUD(JSON)

以采购订单为例。

//代码由代码工厂自动生成
//2022-08-20 16:24:24
package model

import (
    "strconv"
    "database/sql"
    "github.com/gin-gonic/gin/binding"
    "strings"
    "svrGIN/public"
    "github.com/gin-gonic/gin"
)

func SelectTcgddtcgdd2(ctx *gin.Context) {
    var arr Tcgddtcgdd2
    var rows *sql.Rows
    var err error
    var r Res
    rows, err = db.Query("select * from Tcgdd")
    if err != nil {
        r.Status = 500
        r.Message = "fail"
        r.Exception = err.Error()
        ctx.JSON(500, &r)
        public.Log("SelectTcgddtcgdd2()" + err.Error())
        return
    }
    defer rows.Close()
    for rows.Next() {
        var row Tcgdd
        rows.Scan(&row.Billid,&row.Adddate,&row.Supplierid,&row.Suppliername,&row.Warehouseid,&row.Warehousename,&row.Makerid,&row.Note,&row.Shenhe,&row.Maker)
        arr.TCGDD = append(arr.TCGDD, &row)
    }
    rows, err = db.Query("select * from Tcgdd2")
    if err != nil {
        r.Status = 500
        r.Message = "fail"
        r.Exception = err.Error()
        ctx.JSON(500, &r)
        public.Log("SelectTcgddtcgdd2()" + err.Error())
        return
    }
    defer rows.Close()
    for rows.Next() {
        var row Tcgdd2
        rows.Scan(&row.Billid,&row.Recno,&row.Goodsid,&row.Goodsname,&row.Gg,&row.Dw,&row.Dj,&row.Qty,&row.Amount)
        arr.TCGDD2 = append(arr.TCGDD2, &row)
    }
    arr.Status = 200
    arr.Message = "success"
    ctx.JSON(200, &arr)
}

func InsertTcgddtcgdd2(ctx *gin.Context) {
    var arr Tcgddtcgdd2
    var r Res
    ctx.ShouldBindBodyWith(&arr, binding.JSON)
    tx, _ := db.Begin()
    for _, row := range arr.TCGDD {
        s := "insert into Tcgdd(Billid,Adddate,Supplierid,Suppliername,Warehouseid,Warehousename,Makerid,Note,Shenhe,Maker) values ("+public.SqlStr(row.Billid)+","+public.SqlStr(row.Adddate)+","+public.SqlStr(row.Supplierid)+","+public.SqlStr(row.Suppliername)+","+public.SqlStr(row.Warehouseid)+","+public.SqlStr(row.Warehousename)+","+public.SqlStr(row.Makerid)+","+public.SqlStr(row.Note)+","+public.SqlStr(row.Shenhe)+","+public.SqlStr(row.Maker)+")"
        _, err := tx.Exec(s)
        if err != nil {
            tx.Rollback()
            r.Status = 500
            r.Message = "fail"
            r.Exception = err.Error()
            ctx.JSON(500, &r)
            public.Log("InsertTcgddtcgdd2()" + err.Error())
            return
        }
    }
    for _, row := range arr.TCGDD2 {
        s := "insert into Tcgdd2(Billid,Recno,Goodsid,Goodsname,Gg,Dw,Dj,Qty,Amount) values ("+public.SqlStr(row.Billid)+","+string(row.Recno)+","+public.SqlStr(row.Goodsid)+","+public.SqlStr(row.Goodsname)+","+public.SqlStr(row.Gg)+","+public.SqlStr(row.Dw)+","+strconv.FormatFloat(row.Dj, 'f', 4, 30)+","+strconv.FormatFloat(row.Qty, 'f', 4, 30)+","+strconv.FormatFloat(row.Amount, 'f', 4, 30)+")"
        _, err := tx.Exec(s)
        if err != nil {
            tx.Rollback()
            r.Status = 500
            r.Message = "fail"
            r.Exception = err.Error()
            ctx.JSON(500, &r)
            public.Log("InsertTcgddtcgdd2()" + err.Error())
            return
        }
    }
    tx.Commit()
    r.Status = 200
    r.Message = "success"
    ctx.JSON(200, &r)
}

func UpdateTcgddtcgdd2(ctx *gin.Context) {
    var arr Tcgddtcgdd2
    var r Res
    var s string
    var err error
    ctx.ShouldBindBodyWith(&arr, binding.JSON)
    tx, _ := db.Begin()
    for _, row := range arr.TCGDD {
        s = "update Tcgdd set Billid="+public.SqlStr(row.Billid)+",Adddate="+public.SqlStr(row.Adddate)+",Supplierid="+public.SqlStr(row.Supplierid)+",Suppliername="+public.SqlStr(row.Suppliername)+",Warehouseid="+public.SqlStr(row.Warehouseid)+",Warehousename="+public.SqlStr(row.Warehousename)+",Makerid="+public.SqlStr(row.Makerid)+",Note="+public.SqlStr(row.Note)+",Shenhe="+public.SqlStr(row.Shenhe)+",Maker="+public.SqlStr(row.Maker)+" where billid="+public.SqlStr(row.Billid)
        _, err = tx.Exec(s)
        if err != nil {
            tx.Rollback()
            r.Status = 500
            r.Message = "fail"
            r.Exception = err.Error()
            ctx.JSON(500, &r)
            public.Log("UpdateTcgddtcgdd2()" + err.Error())
            return
        }
    }
    for _, row := range arr.TCGDD2 {
        s = "update Tcgdd2 set Billid="+public.SqlStr(row.Billid)+",Recno="+string(row.Recno)+",Goodsid="+public.SqlStr(row.Goodsid)+",Goodsname="+public.SqlStr(row.Goodsname)+",Gg="+public.SqlStr(row.Gg)+",Dw="+public.SqlStr(row.Dw)+",Dj="+strconv.FormatFloat(row.Dj, 'f', 4, 30)+",Qty="+strconv.FormatFloat(row.Qty, 'f', 4, 30)+",Amount="+strconv.FormatFloat(row.Amount, 'f', 4, 30)+" where billid="+public.SqlStr(row.Billid)+" and recno="+string(row.Recno)
        _, err = tx.Exec(s)
        if err != nil {
            tx.Rollback()
            r.Status = 500
            r.Message = "fail"
            r.Exception = err.Error()
            ctx.JSON(500, &r)
            public.Log("UpdateTcgddtcgdd2()" + err.Error())
            return
        }
    }
    tx.Commit()
    r.Status = 200
    r.Message = "success"
    ctx.JSON(200, &r)
}

func DeleteTcgddtcgdd2(ctx *gin.Context) {
    var r Res
    var s string
    var err error
    where := ctx.Param("where")
    where = strings.Trim(where, "/")
    tx, _ := db.Begin()
    s = "delete from Tcgdd where " + where
    _, err = tx.Exec(s)
    if err != nil {
        tx.Rollback()
        r.Status = 500
        r.Message = "fail"
        r.Exception = err.Error()
        ctx.JSON(500, &r)
        public.Log("DeleteTcgddtcgdd2()" + err.Error())
        return
    }
    s = "delete from Tcgdd2 where " + where
    _, err = tx.Exec(s)
    if err != nil {
        tx.Rollback()
        r.Status = 500
        r.Message = "fail"
        r.Exception = err.Error()
        ctx.JSON(500, &r)
        public.Log("DeleteTcgddtcgdd2()" + err.Error())
        return
    }
    tx.Commit()
    r.Status = 200
    r.Message = "success"
    ctx.JSON(200, &r)
}

 

posted @ 2022-08-20 16:27  delphi中间件  阅读(83)  评论(0编辑  收藏  举报