| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- package handler
- import (
- "net/http"
- "job-cheng-xing/model"
- "job-cheng-xing/service"
- "github.com/gin-gonic/gin"
- )
- type OrderHandler struct {
- svc *service.OrderService
- }
- func NewOrderHandler(svc *service.OrderService) *OrderHandler {
- return &OrderHandler{svc: svc}
- }
- func (h *OrderHandler) CreateOrder(c *gin.Context) {
- var req model.CreateOrderRequest
- if err := c.ShouldBindJSON(&req); err != nil {
- c.JSON(http.StatusBadRequest, gin.H{
- "error": "validation",
- "message": "请求参数无效:" + err.Error(),
- })
- return
- }
- order, err := h.svc.CreateOrder(req)
- if err != nil {
- handleError(c, err)
- return
- }
- c.JSON(http.StatusCreated, order)
- }
- func (h *OrderHandler) AcceptOrder(c *gin.Context) {
- id := c.Param("id")
- var req model.AcceptOrderRequest
- if err := c.ShouldBindJSON(&req); err != nil {
- c.JSON(http.StatusBadRequest, gin.H{
- "error": "validation",
- "message": "请求参数无效:" + err.Error(),
- })
- return
- }
- order, err := h.svc.AcceptOrder(id, req.ProviderID)
- if err != nil {
- handleError(c, err)
- return
- }
- c.JSON(http.StatusOK, gin.H{
- "message": "接单成功",
- "order": order,
- })
- }
- func (h *OrderHandler) CancelOrder(c *gin.Context) {
- id := c.Param("id")
- order, err := h.svc.CancelOrder(id)
- if err != nil {
- handleError(c, err)
- return
- }
- c.JSON(http.StatusOK, gin.H{
- "message": "取消成功",
- "order": order,
- })
- }
- func handleError(c *gin.Context, err error) {
- if appErr, ok := err.(*model.AppError); ok {
- c.JSON(appErr.HTTPStatus, gin.H{
- "error": appErr.Code,
- "message": appErr.Message,
- })
- return
- }
- c.JSON(http.StatusInternalServerError, gin.H{
- "error": "internal",
- "message": "服务器内部错误",
- })
- }
|