| | |
| | | func (slf OperationController) Add(c *gin.Context) { |
| | | var reqParams request.AddOperation |
| | | var params models.Operation |
| | | |
| | | if err := c.BindJSON(&reqParams); err != nil { |
| | | util.ResponseFormat(c, code.RequestParamError, "参数解析失败,数据类型错误") |
| | | return |
| | |
| | | util.ResponseFormat(c, code.RequestParamError, "单号已存在") |
| | | return |
| | | } |
| | | err = models.WithTransaction(func(db *gorm.DB) error { |
| | | if err := models.NewOperationSearch().Create(¶ms); err != nil { |
| | | return err |
| | | } |
| | | od := params.Details |
| | | for _, v := range od { |
| | | material, err := models.NewMaterialSearch().SetID(v.ProductId).First() |
| | | if err != nil { |
| | | return err |
| | | } |
| | | material.Cost = v.Cost |
| | | material.SalePrice = v.SalePrice |
| | | if err := models.NewMaterialSearch().SetOrm(db).Update(material); err != nil { |
| | | return err |
| | | } |
| | | } |
| | | return nil |
| | | }) |
| | | |
| | | if err := models.NewOperationSearch().Create(¶ms); err != nil { |
| | | if err != nil { |
| | | logx.Errorf("Operation create err: %v", err) |
| | | util.ResponseFormat(c, code.SaveFail, "添加失败:"+err.Error()) |
| | | return |
| | |
| | | if err := models.NewOperationSearch().SetOrm(tx).SetID(params.Id).Save(¶ms); err != nil { |
| | | return err |
| | | } |
| | | od := params.Details |
| | | for _, v := range od { |
| | | material, err := models.NewMaterialSearch().SetID(v.ProductId).First() |
| | | if err != nil { |
| | | return err |
| | | } |
| | | material.Cost = v.Cost |
| | | material.SalePrice = v.SalePrice |
| | | if err := models.NewMaterialSearch().SetOrm(tx).Update(material); err != nil { |
| | | return err |
| | | } |
| | | } |
| | | return nil |
| | | }); err != nil { |
| | | util.ResponseFormat(c, code.RequestParamError, "修改失败:"+err.Error()) |