package order import ( "context" "github.com/gogf/gf/v2/errors/gerror" "github.com/gogf/gf/v2/frame/g" "github.com/gogf/gf/v2/util/gconv" "jyOrderManager/internal/model" "time" ) // SaveOrUpdateReturnPlant 保存更新回款计划 func SaveOrUpdateReturnPlant(ctx context.Context, orderCode string, orderMoney int, plant model.ReturnPlant) error { num, err := g.DB().GetCount(ctx, "SELECT * from return_money_plant where order_code = ?", orderCode) if err != nil { return gerror.Wrapf(err, "查询回款计划异常") } data := g.Map{} if len(plant.PlantList) > 1 { var ( totalMoney int checkMoney int ) for _, m := range plant.PlantList { var ( code = gconv.String(m["code"]) money = gconv.Int(m["money"]) ) if code == "合计" { checkMoney = money } else { totalMoney += money } } if totalMoney != checkMoney || orderMoney != checkMoney { return gerror.New("回款计划金额异常") } data = g.Map{ "day_num": plant.DayNum, "plantList": gconv.String(plant.PlantList), } } else if plant.ExpectTime != "" { if _, err := time.Parse(time.DateOnly, plant.ExpectTime); err != nil { return gerror.Wrap(err, "预计回款时间格式异常") } data = g.Map{ "day_num": plant.DayNum, "expect_time": plant.ExpectTime, "plantList": "", } } else { return gerror.New("回款计划字段异常") } data["order_code"] = orderCode if num > 0 { //更新 if _, err := g.DB().Update(ctx, "return_money_plant", data, "order_code=?", orderCode); err != nil { return gerror.Wrap(err, "更新回款计划异常") } } else { //新增 data["create_time"] = time.Now().Format("2006-01-02 15:04:05") if _, err := g.DB().Save(ctx, "return_money_plant", data); err != nil { return gerror.Wrap(err, "保存回款计划异常") } } return err }