app-cloudep-trade-service/internal/logic/orderservice/get_order_logic.go

90 lines
2.5 KiB
Go

package orderservicelogic
import (
"app-cloudep-trade-service/internal/domain/usecase"
"context"
ers "code.30cm.net/digimon/library-go/errs"
"app-cloudep-trade-service/gen_result/pb/trade"
"app-cloudep-trade-service/internal/svc"
"github.com/zeromicro/go-zero/core/logx"
)
type GetOrderLogic struct {
ctx context.Context
svcCtx *svc.ServiceContext
logx.Logger
}
func NewGetOrderLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GetOrderLogic {
return &GetOrderLogic{
ctx: ctx,
svcCtx: svcCtx,
Logger: logx.WithContext(ctx),
}
}
type GetOrderQuery struct {
BusinessID string `json:"business_id" validate:"required"`
}
// GetOrder 取得訂單詳情
func (l *GetOrderLogic) GetOrder(in *trade.GetOrderReq) (*trade.GetOrderResp, error) {
// 驗證資料
if err := l.svcCtx.Validate.ValidateAll(&GetOrderQuery{
BusinessID: in.GetBusinessId(),
}); err != nil {
// 錯誤代碼 06-011-00
return nil, ers.InvalidFormat(err.Error())
}
o, err := l.svcCtx.OrderUseCase.GetOrder(l.ctx, usecase.GetOrderQuery{
BusinessID: in.GetBusinessId(),
})
if err != nil {
return nil, err
}
return &trade.GetOrderResp{
UpdateTime: o.UpdateTime,
CreateTime: o.CreateTime,
BusinessId: o.BusinessID,
OrderType: int32(o.OrderType),
OrderStatus: int32(o.OrderStatus),
Brand: o.Brand,
OrderUid: o.OrderUID,
ReferenceId: o.ReferenceID,
Count: o.Count,
OrderFee: o.OrderFee,
Amount: o.Amount,
// 下面的為未來擴充用的欄位
ReferenceBrand: o.ReferenceBrand,
ReferenceUid: o.ReferenceUID,
WalletStatus: o.WalletStatus,
ThreePartyStatus: o.ThreePartyStatus,
DirectionType: o.DirectionType,
CryptoType: o.CryptoType,
ThirdPartyFee: o.ThirdPartyFee,
CryptoToUsdtRate: o.CryptoToUsdtRate,
FiatToUsdRate: o.FiatToUsdRate,
FeeCryptoToUsdtRate: o.FeeCryptoToUsdtRate,
UsdtToCryptoTypeRate: o.UsdtToCryptoTypeRate,
PaymentFiat: o.PaymentFiat,
PaymentUnitPrice: o.PaymentUnitPrice,
PaymentTemplateId: o.PaymentTemplateID,
OrderArrivalTime: o.OrderArrivalTime,
OrderPaymentTime: o.OrderPaymentTime,
UnpaidTimeoutSecond: o.UnpaidTimeoutSecond,
ChainType: o.ChainType,
TxHash: o.TxHash,
FromAddress: o.FromAddress,
ToAddress: o.ToAddress,
ChainFee: o.ChainFee,
ChainFeeCrypto: o.ChainFeeCrypto,
Memo: o.Memo,
OrderNote: o.OrderNote,
}, nil
}