diff --git a/app/.DS_Store b/app/.DS_Store index ac5007a..06449a5 100644 Binary files a/app/.DS_Store and b/app/.DS_Store differ diff --git a/app/http/controllers/orders/orders.go b/app/http/controllers/orders/orders.go index a2e03e0..62bfa53 100644 --- a/app/http/controllers/orders/orders.go +++ b/app/http/controllers/orders/orders.go @@ -230,6 +230,33 @@ func Cancel(c *gin.Context) { common.Success(c, response) } +func DangerousConfirm(c *gin.Context) { + request := new(orderEnt.CancelReq) + err := common.GenRequest(c, request) + if err != nil { + common.Error(c, errorcode.ParamError) + return + } + + affected, err := orderServ.DangerousConfirm(request.Id) + if err != nil || affected == 0 { + common.Error(c, 400, err.Error()) + return + } + + err = transServ.AddCallback(strconv.Itoa(int(request.Id))) + if err != nil { + common.Error(c, 400, "添加回调失败") + return + } + + response := &orderEnt.CancelResp{ + Id: request.Id, + } + + common.Success(c, response) +} + func DangerousCancel(c *gin.Context) { request := new(orderEnt.CancelReq) err := common.GenRequest(c, request) diff --git a/app/http/routes/route.go b/app/http/routes/route.go index 7d94bc6..8af2ddf 100644 --- a/app/http/routes/route.go +++ b/app/http/routes/route.go @@ -77,6 +77,7 @@ func RegisterRoute(router *gin.Engine) { orders.POST("/search", ordersCon.Search) orders.POST("/cancel", ordersCon.Cancel) orders.POST("/dangerous_cancel", ordersCon.DangerousCancel) + orders.POST("/dangerous_confirm", ordersCon.DangerousConfirm) // orders.POST("/create", ordersCon.Create) // orders.POST("/update", ordersCon.Update) // orders.POST("/delete", ordersCon.Delete) diff --git a/app/models/orders/orders.go b/app/models/orders/orders.go index 628af93..75073b1 100644 --- a/app/models/orders/orders.go +++ b/app/models/orders/orders.go @@ -337,6 +337,41 @@ func (m *ordersModel) CancelOrder(orderId int64) (affected int64, err error) { return } +func (m *ordersModel) DangerousConfirm(orderId int64) (affected int64, err error) { + orders := &Orders{} + + session := m.GetDb().NewSession() + defer session.Close() + // add Begin() before any action + if err = session.Begin(); err != nil { + orders = nil + return + } + + orders = &Orders{} + has, err := session.ID(orderId).Get(orders) + if err != nil || !has { + orders = nil + return + } + + orders.Status = 1 + orders.TransferStatus = 1 // 1.成功 2.充值中 3. 等待充值 4.充值失败 5.异常需要人工处理 6.取消订单 7.订单入队 + orders.FailReason = "风险确认" + affected, err = session.ForUpdate().ID(orders.Id).Where("transfer_status not in (1,4,6)").Update(orders) + if err != nil || affected == 0 { + err = errors.New("订单正在充值或者已经完成") + orders = nil + return + } + err = session.Commit() + if err != nil { + session.Rollback() + return + } + return +} + func (m *ordersModel) DangerousCancel(orderId int64) (affected int64, err error) { orders := &Orders{} @@ -357,7 +392,7 @@ func (m *ordersModel) DangerousCancel(orderId int64) (affected int64, err error) orders.Status = 5 orders.TransferStatus = 6 // 1.成功 2.充值中 3. 等待充值 4.充值失败 5.异常需要人工处理 6.取消订单 7.订单入队 - orders.FailReason = "订单取消" + orders.FailReason = "风险取消" affected, err = session.ForUpdate().ID(orders.Id).Where("transfer_status not in (1,4,6)").Update(orders) if err != nil || affected == 0 { err = errors.New("订单正在充值或者已经完成") diff --git a/app/services/.DS_Store b/app/services/.DS_Store new file mode 100644 index 0000000..2cfcd9f Binary files /dev/null and b/app/services/.DS_Store differ diff --git a/app/services/orders/orders.go b/app/services/orders/orders.go index 5d783bf..791261f 100644 --- a/app/services/orders/orders.go +++ b/app/services/orders/orders.go @@ -77,6 +77,11 @@ func Cancel(id int64) (affected int64, err error) { return } +func DangerousConfirm(id int64) (affected int64, err error) { + affected, err = models.GetInstance().DangerousConfirm(id) + return +} + func DangerousCancel(id int64) (affected int64, err error) { affected, err = models.GetInstance().DangerousCancel(id) return