package logic import ( "context" "errors" "juwan-backend/app/order/rpc/internal/models" "juwan-backend/app/order/rpc/internal/svc" "juwan-backend/app/order/rpc/pb" "github.com/zeromicro/go-zero/core/logx" ) type UpdateOrderStateLogsLogic struct { ctx context.Context svcCtx *svc.ServiceContext logx.Logger } func NewUpdateOrderStateLogsLogic(ctx context.Context, svcCtx *svc.ServiceContext) *UpdateOrderStateLogsLogic { return &UpdateOrderStateLogsLogic{ ctx: ctx, svcCtx: svcCtx, Logger: logx.WithContext(ctx), } } func (l *UpdateOrderStateLogsLogic) UpdateOrderStateLogs(in *pb.UpdateOrderStateLogsReq) (*pb.UpdateOrderStateLogsResp, error) { if in == nil { return nil, errors.New("order state log is required") } builder := l.svcCtx.OrderModelsRW.OrderStateLogs.UpdateOneID(in.Id) if in.OrderId != nil { builder = builder.SetOrderID(*in.OrderId) } if in.FromStatus != nil { builder = builder.SetFromStatus(*in.FromStatus) } if in.ToStatus != nil { builder = builder.SetToStatus(*in.ToStatus) } if in.Action != nil { builder = builder.SetAction(*in.Action) } if in.ActorId != nil { builder = builder.SetActorID(*in.ActorId) } if in.ActorRole != nil { builder = builder.SetActorRole(*in.ActorRole) } if in.Metadata != nil { metadata, err := parseJSONMap(*in.Metadata) if err != nil { return nil, err } builder = builder.SetMetadata(metadata) } if _, err := builder.Save(l.ctx); err != nil { if models.IsNotFound(err) { return nil, errors.New("order state log not found") } return nil, err } return &pb.UpdateOrderStateLogsResp{}, nil }