From 5eab820067841b832481716f579e296a04a90fdc Mon Sep 17 00:00:00 2001 From: wucongxing8150 <815046773@qq.com> Date: Thu, 22 Aug 2024 11:28:19 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E4=BA=86=E4=B8=8A=E4=BC=A0?= =?UTF-8?q?=E5=8D=95=E9=A1=B9=E7=AD=94=E6=A1=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/controller/OrderSingle.go | 79 +++++++++++++++++++++++++++++++++++ api/requests/OrderSingle.go | 12 ++++-- api/router/router.go | 2 + 3 files changed, 90 insertions(+), 3 deletions(-) diff --git a/api/controller/OrderSingle.go b/api/controller/OrderSingle.go index fac7c2c..07bd380 100644 --- a/api/controller/OrderSingle.go +++ b/api/controller/OrderSingle.go @@ -366,3 +366,82 @@ func (b *OrderSingle) GetOrderSinglePayStatus(c *gin.Context) { responses.OkWithData(g, c) } + +// PutOrderSingleAnswer 上传单项答案 +func (b *OrderSingle) PutOrderSingleAnswer(c *gin.Context) { + orderSingleRequest := requests.OrderSingleRequest{} + req := orderSingleRequest.PutOrderSingleAnswer + if err := c.ShouldBind(&req); err != nil { + responses.FailWithMessage(err.Error(), c) + return + } + + // 参数验证 + if err := global.Validate.Struct(req); err != nil { + responses.FailWithMessage(utils.Translate(err), c) + return + } + + userId := c.GetInt64("UserId") + + id := c.Param("order_id") + if id == "" { + responses.FailWithMessage("缺少参数", c) + return + } + + // 将 id 转换为 int64 类型 + orderId, err := strconv.ParseInt(id, 10, 64) + if err != nil { + responses.Fail(c) + return + } + + // 获取订单数据 + orderSingleDao := dao.OrderSingleDao{} + maps := make(map[string]interface{}) + maps["user_id"] = userId + maps["order_id"] = orderId + orderSingle, err := orderSingleDao.GetOrderSingle(maps) + if err != nil { + responses.FailWithMessage("订单异常", c) + return + } + + // 检测订单状态 + if orderSingle.OrderStatus != 2 { + responses.FailWithMessage("订单未完成", c) + return + } + + // 检测订单支付状态 + if orderSingle.PayStatus != 2 { + responses.FailWithMessage("订单未完成支付", c) + return + } + + // 检测订单退款状态 + if orderSingle.RefundStatus != 0 { + responses.FailWithMessage("订单存在退款", c) + return + } + + // 开始事务 + tx := global.Db.Begin() + defer func() { + if r := recover(); r != nil { + tx.Rollback() + } + }() + + orderSingleData := make(map[string]interface{}) + orderSingleData["answer"] = req.Answer + err = orderSingleDao.EditOrderSingleById(tx, orderSingle.OrderId, orderSingleData) + if err != nil { + responses.FailWithMessage("操作失败", c) + return + } + + tx.Commit() + responses.Ok(c) +} diff --git a/api/requests/OrderSingle.go b/api/requests/OrderSingle.go index aa62828..585c4be 100644 --- a/api/requests/OrderSingle.go +++ b/api/requests/OrderSingle.go @@ -1,9 +1,10 @@ package requests type OrderSingleRequest struct { - GetOrderSinglePage // 获取单项订单列表-分页 - AddOrderSingle // 创建单项订单 - GetOrderSinglePay // 获取单项订单支付数据 + GetOrderSinglePage // 获取单项订单列表-分页 + AddOrderSingle // 创建单项订单 + GetOrderSinglePay // 获取单项订单支付数据 + PutOrderSingleAnswer // 上传单项答案 } // GetOrderSinglePage 获取单项订单列表-分页 @@ -33,3 +34,8 @@ type AddOrderSingle struct { type GetOrderSinglePay struct { ClientType int `json:"client_type" form:"client_type" label:"客户端类型" validate:"required,oneof=1 2"` // 客户端类型(1:h5 2:app) } + +// PutOrderSingleAnswer 上传单项答案 +type PutOrderSingleAnswer struct { + Answer int `json:"answer" form:"answer" label:"答案" validate:"required"` +} diff --git a/api/router/router.go b/api/router/router.go index 3ea3114..e308284 100644 --- a/api/router/router.go +++ b/api/router/router.go @@ -294,6 +294,8 @@ func privateRouter(r *gin.Engine, api controller.Api) { // 查询订单支付状态-单项 singleGroup.GET("/pay/status/:order_id", api.OrderSingle.GetOrderSinglePayStatus) + // 上传单项答案 + singleGroup.POST("/answer/:order_id", api.OrderSingle.PutOrderSingleAnswer) } // 会员订单