You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

123 lines
3.9 KiB

package service
import (
"encoding/json"
"errors"
"log"
"strconv"
"tyj_admin/api/v1/game"
"tyj_admin/internal/harmonyos"
)
func HarmonyOrderLookup(req *game.GetHarmonyOrderReq) (res *game.GetHarmonyOrderRes, err error) {
res = new(game.GetHarmonyOrderRes)
bodyMap := make(map[string]interface{})
bodyMap["orderNo"] = req.Order
orderService := &harmonyos.OrderLookup{}
orderInfoStr, err := orderService.OrderQuery(bodyMap)
if err != nil {
log.Printf("HarmonyOrderLookup======>.OrderStatusQuery : %v - err:%s", req.Order, err.Error())
return
}
orderInfo := &game.HarmonyLookup{}
if err = json.Unmarshal([]byte(orderInfoStr), &orderInfo); err != nil {
log.Printf("HarmonyOrderLookup======>.Unmarshal : %v", orderInfoStr)
return
}
res.OrderStatus = orderInfo.OrderStatus
if orderInfo.OrderStatus != 1 {
err = errors.New("交易号无效")
return
}
jwsChecker := &harmonyos.JWSChecker{}
purchaseOrderStr, err := jwsChecker.CheckAndDecodeJWS(orderInfo.JwsPurchaseOrder)
if err != nil {
log.Printf("HarmonyOrderLookup======>.jwsChecker.CheckAndDecodeJWS : err: %s, %s", err.Error(), purchaseOrderStr)
return
}
purchaseOrder := game.PurchaseOrderPayload{}
if err = json.Unmarshal([]byte(purchaseOrderStr), &purchaseOrder); err != nil {
log.Printf("HarmonyOrderLookup======>.CheckAndDecodeJWS Unmarshal: %v, Err: %s", purchaseOrderStr, err)
return
}
res.PurchaseOrderInfo = purchaseOrder
return
}
func HarmonyOrders(req *game.GetHarmonyOrdersReq) (res *game.GetHarmonyOrdersRes, err error) {
res = new(game.GetHarmonyOrdersRes)
bodyMap := map[string]interface{}{
"startTime": req.StartTime,
"endTime": req.EndTime,
}
if len(req.ContinuationToken) > 0 {
bodyMap["continuationToken"] = req.ContinuationToken
}
orderService := &harmonyos.OrderLookup{}
orderInfoStr, err := orderService.OrdersQuery(bodyMap)
if err != nil {
log.Printf("HarmonyOrders======>.StartTime: %d, EndTime : %d - err:%s", req.StartTime, req.EndTime, err.Error())
return
}
if err = json.Unmarshal([]byte(orderInfoStr), &res); err != nil {
log.Printf("HarmonyOrders======>.Unmarshal : %v", orderInfoStr)
return
}
return
}
func HarmonyUserOrders(req *game.GetHarmonyUserOrdersReq) (res *game.GetHarmonyUserOrdersRes, err error) {
res = new(game.GetHarmonyUserOrdersRes)
bodyMap := make(map[string]interface{})
bodyMap["purchaseOrderId"] = req.PurchaseOrderId
if req.ProductType != "" {
bodyMap["productType"], err = strconv.Atoi(req.ProductType)
}
if req.StartTime != 0 {
bodyMap["startTime"] = req.StartTime
}
if req.EndTime != 0 {
bodyMap["endTime"] = req.EndTime
}
if len(req.ProductIdList) > 0 {
bodyMap["productIdList"] = req.ProductIdList
}
if len(req.ContinuationToken) > 0 {
bodyMap["continuationToken"] = req.ContinuationToken
}
orderService := &harmonyos.OrderLookup{}
orderInfoStr, err := orderService.UserOrdersQuery(bodyMap)
if err != nil {
log.Printf("HarmonyUserOrders======>.purchaseOrderId: %s, - err:%s", req.PurchaseOrderId, err.Error())
return
}
orderInfo := game.HarmonyUserOrders{}
if err = json.Unmarshal([]byte(orderInfoStr), &orderInfo); err != nil {
log.Printf("HarmonyUserOrders======>.Unmarshal : %v", orderInfoStr)
return
}
res.ResponseCode = orderInfo.ResponseCode
res.ResponseMessage = orderInfo.ResponseMessage
res.ContinuationToken = orderInfo.ContinuationToken
for _, v := range orderInfo.JwsPurchaseOrderList {
jwsChecker := &harmonyos.JWSChecker{}
purchaseOrderStr, err1 := jwsChecker.CheckAndDecodeJWS(v)
if err1 != nil {
err = err1
log.Printf("HarmonyUserOrders======>.jwsChecker.CheckAndDecodeJWS : err: %s, %s", err.Error(), purchaseOrderStr)
continue
}
purchaseOrder := game.PurchaseOrderPayload{}
if err = json.Unmarshal([]byte(purchaseOrderStr), &purchaseOrder); err != nil {
log.Printf("HarmonyUserOrders======>.CheckAndDecodeJWS Unmarshal: %v, Err: %s", purchaseOrderStr, err)
continue
}
res.OrderInfoList = append(res.OrderInfoList, purchaseOrder)
}
return
}