267 lines
6.2 KiB
Go
267 lines
6.2 KiB
Go
package orders
|
|
|
|
import (
|
|
"strconv"
|
|
"time"
|
|
|
|
common "com.snow.auto_monitor/app/http/controllers"
|
|
transEnt "com.snow.auto_monitor/app/http/entities/transfersys"
|
|
orderMod "com.snow.auto_monitor/app/models/orders"
|
|
proServ "com.snow.auto_monitor/app/services/product"
|
|
transServ "com.snow.auto_monitor/app/services/transfersys"
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
func GetOrder(c *gin.Context) {
|
|
//队列里取出一个订单
|
|
item, err := transServ.ReadGroup(0)
|
|
if err != nil {
|
|
common.Error(c, 400, err.Error())
|
|
return
|
|
}
|
|
//标记订单已经去除
|
|
err = orderMod.GetInstance().OrderOutQueue(item.Id)
|
|
if err != nil {
|
|
common.Error(c, 400, err.Error())
|
|
return
|
|
}
|
|
var response *transEnt.GetOrderResp = nil
|
|
//获取产品信息
|
|
product, err := proServ.GetById(item.ProductId)
|
|
if err != nil {
|
|
common.Error(c, 400, "产品不存在")
|
|
return
|
|
}
|
|
if item != nil {
|
|
response = &transEnt.GetOrderResp{
|
|
Id: item.Id,
|
|
OrderNo: item.OrderNo,
|
|
MerchantId: item.MerchantId,
|
|
ProductId: item.ProductId,
|
|
ProductUrl: product.ProductUrl,
|
|
QueueNo: item.QueueNo,
|
|
OutTradeNo: item.OutTradeNo,
|
|
RechargeAccount: item.RechargeAccount,
|
|
AccountType: item.AccountType,
|
|
Number: item.Number,
|
|
NotifyUrl: item.NotifyUrl,
|
|
ExtendParameter: item.ExtendParameter,
|
|
Status: item.Status,
|
|
TransferStatus: item.TransferStatus,
|
|
FailReason: item.FailReason,
|
|
CreatedAt: item.CreatedAt.Format(time.RFC3339),
|
|
}
|
|
} else {
|
|
c.JSON(500, gin.H{
|
|
"code": 500,
|
|
"message": "no data",
|
|
})
|
|
return
|
|
}
|
|
common.Success(c, response)
|
|
}
|
|
|
|
func GetOrderFromQueue(c *gin.Context) {
|
|
request := new(transEnt.GetOrderReq)
|
|
err := common.GenRequest(c, request)
|
|
if err != nil {
|
|
common.Error(c, 400, err.Error())
|
|
return
|
|
}
|
|
|
|
var queue_no int64 = 0
|
|
if request.QueueNo != 0 {
|
|
queue_no = request.QueueNo
|
|
}
|
|
|
|
//队列里取出一个订单
|
|
item, err := transServ.ReadGroup(queue_no)
|
|
if err != nil {
|
|
common.Error(c, 400, err.Error())
|
|
return
|
|
}
|
|
//标记订单已经去除
|
|
err = orderMod.GetInstance().OrderOutQueue(item.Id)
|
|
if err != nil {
|
|
common.Error(c, 400, err.Error())
|
|
return
|
|
}
|
|
var response *transEnt.GetOrderResp = nil
|
|
//获取产品信息
|
|
product, err := proServ.GetById(item.ProductId)
|
|
if err != nil {
|
|
common.Error(c, 400, "产品不存在")
|
|
return
|
|
}
|
|
if item != nil {
|
|
response = &transEnt.GetOrderResp{
|
|
Id: item.Id,
|
|
OrderNo: item.OrderNo,
|
|
MerchantId: item.MerchantId,
|
|
ProductId: item.ProductId,
|
|
ProductUrl: product.ProductUrl,
|
|
QueueNo: item.QueueNo,
|
|
OutTradeNo: item.OutTradeNo,
|
|
RechargeAccount: item.RechargeAccount,
|
|
AccountType: item.AccountType,
|
|
Number: item.Number,
|
|
NotifyUrl: item.NotifyUrl,
|
|
ExtendParameter: item.ExtendParameter,
|
|
Status: item.Status,
|
|
TransferStatus: item.TransferStatus,
|
|
FailReason: item.FailReason,
|
|
CreatedAt: item.CreatedAt.Format(time.RFC3339),
|
|
}
|
|
} else {
|
|
c.JSON(500, gin.H{
|
|
"code": 500,
|
|
"message": "no data",
|
|
})
|
|
return
|
|
}
|
|
common.Success(c, response)
|
|
}
|
|
|
|
func GetOrderFromQueues(c *gin.Context) {
|
|
request := new(transEnt.GetOrderFromQueuesReq)
|
|
err := common.GenRequest(c, request)
|
|
if err != nil {
|
|
common.Error(c, 400, err.Error())
|
|
return
|
|
}
|
|
|
|
var queue_nos []int64
|
|
if len(request.QueueNos) > 0 {
|
|
queue_nos = request.QueueNos
|
|
} else {
|
|
common.Error(c, 400, "队列号不能为空")
|
|
return
|
|
}
|
|
|
|
var item *orderMod.Orders
|
|
for _, ord := range queue_nos {
|
|
//队列里取出一个订单
|
|
item, err = transServ.ReadGroup(ord)
|
|
if err != nil {
|
|
continue
|
|
}
|
|
//标记订单已经去除
|
|
err = orderMod.GetInstance().OrderOutQueue(item.Id)
|
|
if err != nil {
|
|
common.Error(c, 400, err.Error())
|
|
return
|
|
}
|
|
break
|
|
}
|
|
if err != nil {
|
|
common.Error(c, 400, err.Error())
|
|
return
|
|
}
|
|
|
|
var response *transEnt.GetOrderResp = nil
|
|
//获取产品信息
|
|
product, err := proServ.GetById(item.ProductId)
|
|
if err != nil {
|
|
common.Error(c, 400, "产品不存在")
|
|
return
|
|
}
|
|
if item != nil {
|
|
response = &transEnt.GetOrderResp{
|
|
Id: item.Id,
|
|
OrderNo: item.OrderNo,
|
|
MerchantId: item.MerchantId,
|
|
ProductId: item.ProductId,
|
|
ProductUrl: product.ProductUrl,
|
|
QueueNo: item.QueueNo,
|
|
OutTradeNo: item.OutTradeNo,
|
|
RechargeAccount: item.RechargeAccount,
|
|
AccountType: item.AccountType,
|
|
Number: item.Number,
|
|
NotifyUrl: item.NotifyUrl,
|
|
ExtendParameter: item.ExtendParameter,
|
|
Status: item.Status,
|
|
TransferStatus: item.TransferStatus,
|
|
FailReason: item.FailReason,
|
|
CreatedAt: item.CreatedAt.Format(time.RFC3339),
|
|
}
|
|
} else {
|
|
c.JSON(500, gin.H{
|
|
"code": 500,
|
|
"message": "no data",
|
|
})
|
|
return
|
|
}
|
|
common.Success(c, response)
|
|
}
|
|
|
|
func FinishOrder(c *gin.Context) {
|
|
request := new(transEnt.FinishOrderReq)
|
|
err := common.GenRequest(c, request)
|
|
if err != nil {
|
|
common.Error(c, 400, err.Error())
|
|
return
|
|
}
|
|
|
|
status := 5
|
|
if request.Result == "success" {
|
|
status = 1
|
|
} else if request.Result == "fail" {
|
|
status = 4
|
|
}
|
|
|
|
orders := &orderMod.Orders{
|
|
Id: request.Id,
|
|
ProductId: request.ProductId,
|
|
MerchantId: request.MerchantId,
|
|
DeviceNo: request.DeviceNo,
|
|
TransferStatus: int64(status),
|
|
FailReason: request.FailReason,
|
|
}
|
|
|
|
affected, err := transServ.FinishOrder(orders)
|
|
if err != nil || affected == 0 {
|
|
common.Error(c, 400, "完成订单失败")
|
|
return
|
|
}
|
|
|
|
err = transServ.AddCallback(strconv.Itoa(int(orders.Id)))
|
|
if err != nil {
|
|
common.Error(c, 400, "添加回调失败")
|
|
return
|
|
}
|
|
|
|
response := &transEnt.FinishOrderResp{
|
|
Id: orders.Id,
|
|
}
|
|
|
|
common.Success(c, response)
|
|
}
|
|
|
|
func SetOrderMobile(c *gin.Context) {
|
|
request := new(transEnt.SetOrderMobileReq)
|
|
err := common.GenRequest(c, request)
|
|
if err != nil {
|
|
common.Error(c, 400, err.Error())
|
|
return
|
|
}
|
|
|
|
orders := &orderMod.Orders{
|
|
Id: request.Id,
|
|
ProductId: request.ProductId,
|
|
MerchantId: request.MerchantId,
|
|
DeviceNo: request.DeviceNo,
|
|
}
|
|
|
|
affected, err := transServ.SetOrderMobile(orders)
|
|
if err != nil || affected == 0 {
|
|
common.Error(c, 400, "设置订单失败:"+err.Error())
|
|
return
|
|
}
|
|
|
|
response := &transEnt.SetOrderMobileResp{
|
|
Id: orders.Id,
|
|
}
|
|
|
|
common.Success(c, response)
|
|
}
|