package material import ( "reflect" "zhiyuan/models/calc" "zhiyuan/pkg/app" "zhiyuan/pkg/db" "zhiyuan/pkg/utils" "zhiyuan/services/calculate" "github.com/gin-gonic/gin" ) func CalcList(c *gin.Context) { db.ModelList(reflect.TypeOf(calc.Calculate{}), map[string]interface{}{"state": 1}, c) } func CalcInfo(c *gin.Context) { id := utils.ToInt(c.Param("id")) if id <= 0 { app.ErrorMsg(c, "id must be a number", nil) return } calc := calc.GetCalculateModel(int64(id), false) app.Success(c, calc) } func Calc(c *gin.Context) { var form calculate.OrderFrom if app.Bind(c, &form) != nil { return } order, err := form.CreateOrder() if err != nil { app.ErrorMsg(c, err.Error(), nil) return } order.AdminId = int64(c.GetInt("adminID")) context := calculate.NewContext(order, c) context.Eval() err = order.Save() if err != nil { app.ErrorMsg(c, err.Error(), nil) return } app.Success(c, gin.H{"id": order.ID}) } func OrderInfo(c *gin.Context) { id := utils.ToInt(c.Param("id")) if id <= 0 { app.ErrorMsg(c, "id must be a number", nil) return } var model calc.Order db.GetModel(map[string]interface{}{"id": id}, &model) if model.ID == 0 { app.ErrorMsg(c, "订单不存在", nil) return } order, err := calculate.LoadOrder(model) if err != nil { app.ErrorMsg(c, err.Error(), nil) return } calc := order.Calc.FilterShow() from := order.GetFrom(false) app.Success(c, gin.H{"calc": calc, "from": from}) } func OrderEdit(c *gin.Context) { id := utils.ToInt(c.Param("id")) if id <= 0 { app.ErrorMsg(c, "id must be a number", nil) return } var form calculate.OrderFrom if app.Bind(c, &form) != nil { return } order, err := form.CreateOrder() if err != nil { app.ErrorMsg(c, err.Error(), nil) return } var model calc.Order db.GetModel(map[string]interface{}{"id": id}, &model) if model.ID == 0 { app.ErrorMsg(c, "订单不存在", nil) return } order.ID = model.ID order.AdminId = model.AdminId context := calculate.NewContext(order, c) context.Eval() err = order.Save() if err != nil { app.ErrorMsg(c, err.Error(), nil) return } app.Success(c, nil) }