155 lines
3.6 KiB
Go
155 lines
3.6 KiB
Go
package gateway
|
|
|
|
import (
|
|
"fmt"
|
|
"gateway/internal/config"
|
|
"gateway/internal/models/merchant"
|
|
"gateway/internal/models/order"
|
|
"gateway/internal/models/response"
|
|
"gateway/internal/schema/query"
|
|
"gateway/internal/service"
|
|
"gateway/internal/utils"
|
|
"strconv"
|
|
"strings"
|
|
|
|
"github.com/astaxie/beego/logs"
|
|
"github.com/beego/beego/v2/server/web"
|
|
"github.com/bytedance/sonic"
|
|
)
|
|
|
|
type OrderController struct {
|
|
web.Controller
|
|
}
|
|
|
|
func (c *OrderController) OrderQuery() {
|
|
bankOrderId := c.GetString("bankOrderId")
|
|
logs.Debug(fmt.Sprintf("获取到boss后台的银行id = %s", bankOrderId))
|
|
qy := query.SupplierOrderQueryResult(bankOrderId)
|
|
c.Ctx.WriteString(qy)
|
|
return
|
|
}
|
|
|
|
func (c *OrderController) OrderUpdate() {
|
|
bankOrderId := c.GetString("bankOrderId")
|
|
solveType := c.GetString("solveType")
|
|
orderInfo := order.GetOrderByBankOrderId(bankOrderId)
|
|
orderInfo.Operator = c.GetString("operator")
|
|
flag := false
|
|
if orderInfo.BankOrderId == "" {
|
|
logs.Error("该订单不存在,bankOrderId=", bankOrderId)
|
|
} else {
|
|
switch solveType {
|
|
case config.SUCCESS:
|
|
flag = service.SolvePaySuccess(bankOrderId, orderInfo.FactAmount, orderInfo.BankTransId)
|
|
case config.FAIL:
|
|
flag = service.SolvePayFail(bankOrderId, orderInfo.BankTransId)
|
|
case config.FREEZE_AMOUNT:
|
|
// 将这笔订单进行冻结
|
|
flag = service.SolveOrderFreeze(bankOrderId)
|
|
case config.UNFREEZE_AMOUNT:
|
|
// 将这笔订单金额解冻
|
|
flag = service.SolveOrderUnfreeze(bankOrderId)
|
|
case config.REFUND:
|
|
if orderInfo.Status == config.SUCCESS {
|
|
flag = service.SolveRefund(bankOrderId)
|
|
}
|
|
case config.ORDERROLL:
|
|
if orderInfo.Status == config.SUCCESS {
|
|
flag = service.SolveOrderRoll(bankOrderId)
|
|
}
|
|
default:
|
|
logs.Error("不存在这样的处理类型")
|
|
}
|
|
if flag {
|
|
c.Ctx.WriteString(config.SUCCESS)
|
|
} else {
|
|
c.Ctx.WriteString(config.FAIL)
|
|
}
|
|
}
|
|
c.StopRun()
|
|
}
|
|
|
|
func (c *OrderController) MerchantQuery() {
|
|
appKey := strings.TrimSpace(c.GetString("appKey"))
|
|
orderNo := strings.TrimSpace(c.GetString("orderNo"))
|
|
timestamp := strings.TrimSpace(c.GetString("timestamp"))
|
|
sign := strings.TrimSpace(c.GetString("sign"))
|
|
|
|
if appKey == "" || orderNo == "" || timestamp == "" || sign == "" {
|
|
resp := response.Resp{
|
|
Code: -1,
|
|
Msg: "参数错误",
|
|
}
|
|
_ = c.JSONResp(resp)
|
|
_ = c.ServeJSON()
|
|
return
|
|
}
|
|
|
|
merchantInfo := merchant.GetMerchantByPasskey(appKey)
|
|
|
|
if merchantInfo.Id == 0 {
|
|
resp := response.Resp{
|
|
Code: -1,
|
|
Msg: "key错误",
|
|
}
|
|
_ = c.JSONResp(resp)
|
|
_ = c.ServeJSON()
|
|
return
|
|
}
|
|
|
|
params := map[string]string{}
|
|
params["appKey"] = appKey
|
|
params["orderNo"] = orderNo
|
|
params["timestamp"] = timestamp
|
|
|
|
tmpSign := utils.GetMD5SignMF(params, merchantInfo.MerchantSecret)
|
|
if tmpSign != sign {
|
|
resp := response.Resp{
|
|
Code: -1,
|
|
Msg: "签名错误",
|
|
}
|
|
_ = c.JSONResp(resp)
|
|
_ = c.ServeJSON()
|
|
return
|
|
}
|
|
|
|
orderInfo := order.GetOrderByMerchantOrderId(orderNo)
|
|
if orderInfo.Id == 0 {
|
|
resp := response.Resp{
|
|
Code: -1,
|
|
Msg: "订单不存在",
|
|
}
|
|
_ = c.JSONResp(resp)
|
|
_ = c.ServeJSON()
|
|
return
|
|
}
|
|
|
|
exValue, err := sonic.GetFromString(orderInfo.ExValue)
|
|
if err != nil {
|
|
resp := response.Resp{
|
|
Code: -1,
|
|
Msg: "内部错误",
|
|
}
|
|
_ = c.JSONResp(resp)
|
|
_ = c.ServeJSON()
|
|
return
|
|
}
|
|
|
|
cardNo, _ := exValue.Get("cardNo").String()
|
|
cardPwd, _ := exValue.Get("data").String()
|
|
resp := response.Resp{
|
|
Code: 0,
|
|
Msg: "订单获取成功",
|
|
Data: response.OrderQueryResp{
|
|
OrderNo: orderInfo.BankOrderId,
|
|
CardNo: cardNo,
|
|
CardPwd: cardPwd,
|
|
Status: orderInfo.Status,
|
|
FaceVal: orderInfo.FactAmount,
|
|
Amount: strconv.FormatFloat(orderInfo.ShowAmount, 'f', -1, 64),
|
|
},
|
|
}
|
|
_ = c.JSONResp(resp)
|
|
_ = c.ServeJSON()
|
|
}
|