order.go 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. package model
  2. import "time"
  3. type OrderStatus string
  4. const (
  5. StatusPending OrderStatus = "pending"
  6. StatusAccepted OrderStatus = "accepted"
  7. StatusCanceled OrderStatus = "canceled"
  8. )
  9. type Order struct {
  10. ID string `json:"id"`
  11. Status OrderStatus `json:"status"`
  12. ServiceTime time.Time `json:"service_time"`
  13. Duration int `json:"duration"`
  14. Address string `json:"address"`
  15. ProviderID *string `json:"provider_id"`
  16. CreatedAt time.Time `json:"created_at"`
  17. UpdatedAt time.Time `json:"updated_at"`
  18. }
  19. type CreateOrderRequest struct {
  20. ServiceTime time.Time `json:"service_time" binding:"required"`
  21. Duration int `json:"duration" binding:"required,gt=0"`
  22. Address string `json:"address" binding:"required"`
  23. }
  24. type AcceptOrderRequest struct {
  25. ProviderID string `json:"provider_id" binding:"required"`
  26. }
  27. type CancelOrderRequest struct{}
  28. type AppError struct {
  29. Code string `json:"error"`
  30. Message string `json:"message"`
  31. HTTPStatus int `json:"-"`
  32. }
  33. func NewAppError(code, message string, httpStatus int) *AppError {
  34. return &AppError{Code: code, Message: message, HTTPStatus: httpStatus}
  35. }
  36. func (e *AppError) Error() string {
  37. return e.Message
  38. }
  39. // 预定义错误
  40. var (
  41. ErrNotFound = NewAppError("not_found", "订单不存在", 404)
  42. ErrConflict = NewAppError("conflict", "订单已被其他服务者接单", 409)
  43. ErrInvalidState = func(op string) *AppError {
  44. return NewAppError("invalid_state", "订单已取消,无法" + op, 400)
  45. }
  46. ErrStatusConflict = NewAppError("conflict", "订单状态已变更,请重试", 409)
  47. )