package order import ( "fusenapi/model/gmodel" ) type AmountCurrencyReq struct { ExchangeRate int64 `json:"exchange_rate"` // 换算汇率 CurrentAmount int64 `json:"current_amount"` // 当前金额 OriginalAmount int64 `json:"original_amount"` // 原始金额 CurrentCurrency string `json:"current_currency"` // 当前货币 OriginalCurrency string `json:"original_currency"` // 原始货币 } // 汇率换算 func GetAmountCurrency(req *AmountCurrencyReq) gmodel.AmountCurrency { if req.CurrentAmount != 0 { if req.CurrentCurrency == req.OriginalCurrency { req.CurrentAmount = req.OriginalAmount } else { req.CurrentAmount = req.OriginalAmount * req.ExchangeRate } } return gmodel.AmountCurrency{ ExchangeRate: req.ExchangeRate, CurrentAmount: req.CurrentAmount, OriginalAmount: req.OriginalAmount, CurrentCurrency: req.CurrentCurrency, OriginalCurrency: req.OriginalCurrency, } } type GetAmountInfoReq struct { ExchangeRate int64 Initiate int64 Current int64 Change int64 ChangeRemark string Metadata map[string]interface{} CurrentCurrency string OriginalCurrency string } // Change AmountCurrency `json:"change,omitempty"` // 变动金额 // ChangeRemark string `json:"change_remark,omitempty"` // 变动备注 // Current AmountCurrency `json:"current"` // 当前金额 // Initiate AmountCurrency `json:"initiate"` // 初始金额 // Metadata map[string]interface{} `json:"metadata"` // 额外明细 func GetAmountInfo(req GetAmountInfoReq) gmodel.AmountInfo { return gmodel.AmountInfo{ Change: GetAmountCurrency(&AmountCurrencyReq{ ExchangeRate: req.ExchangeRate, CurrentAmount: req.Change, OriginalAmount: req.Change, CurrentCurrency: req.OriginalCurrency, OriginalCurrency: req.OriginalCurrency, }), ChangeRemark: req.ChangeRemark, Current: GetAmountCurrency(&AmountCurrencyReq{ ExchangeRate: req.ExchangeRate, CurrentAmount: req.Current, OriginalAmount: req.Current, CurrentCurrency: req.OriginalCurrency, OriginalCurrency: req.OriginalCurrency, }), Initiate: GetAmountCurrency(&AmountCurrencyReq{ ExchangeRate: req.ExchangeRate, CurrentAmount: req.Initiate, OriginalAmount: req.Initiate, CurrentCurrency: req.OriginalCurrency, OriginalCurrency: req.OriginalCurrency, }), Metadata: req.Metadata, } }