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.
176 lines
4.1 KiB
176 lines
4.1 KiB
package dao |
|
|
|
import ( |
|
"context" |
|
|
|
archive "go-common/app/service/main/archive/api" |
|
ugcpay "go-common/app/service/main/ugcpay/api/grpc/v1" |
|
|
|
"go-common/app/interface/main/ugcpay/model" |
|
) |
|
|
|
// TradeCreate create trade order for mid |
|
func (d *Dao) TradeCreate(ctx context.Context, platform string, mid int64, oid int64, otype string, currency string) (orderID string, payData string, err error) { |
|
var ( |
|
req = &ugcpay.TradeCreateReq{ |
|
Platform: platform, |
|
Mid: mid, |
|
Oid: oid, |
|
Otype: otype, |
|
Currency: currency, |
|
} |
|
reply *ugcpay.TradeCreateResp |
|
) |
|
if reply, err = d.ugcpayAPI.TradeCreate(ctx, req); err != nil { |
|
return |
|
} |
|
orderID = reply.OrderId |
|
payData = reply.PayData |
|
return |
|
} |
|
|
|
// TradeQuery query trade order by orderID |
|
func (d *Dao) TradeQuery(ctx context.Context, orderID string) (order *model.TradeOrder, err error) { |
|
var ( |
|
req = &ugcpay.TradeOrderReq{ |
|
Id: orderID, |
|
} |
|
reply *ugcpay.TradeOrderResp |
|
) |
|
if reply, err = d.ugcpayAPI.TradeQuery(ctx, req); err != nil { |
|
return |
|
} |
|
order = &model.TradeOrder{ |
|
OrderID: reply.OrderId, |
|
MID: reply.Mid, |
|
Biz: reply.Biz, |
|
Platform: reply.Platform, |
|
OID: reply.Oid, |
|
OType: reply.Otype, |
|
Fee: reply.Fee, |
|
Currency: reply.Currency, |
|
PayID: reply.PayId, |
|
State: reply.State, |
|
Reason: reply.Reason, |
|
} |
|
return |
|
} |
|
|
|
// TradeConfirm confirm trade order by orderID |
|
func (d *Dao) TradeConfirm(ctx context.Context, orderID string) (order *model.TradeOrder, err error) { |
|
var ( |
|
req = &ugcpay.TradeOrderReq{ |
|
Id: orderID, |
|
} |
|
reply *ugcpay.TradeOrderResp |
|
) |
|
if reply, err = d.ugcpayAPI.TradeConfirm(ctx, req); err != nil { |
|
return |
|
} |
|
order = &model.TradeOrder{ |
|
OrderID: reply.OrderId, |
|
MID: reply.Mid, |
|
Biz: reply.Biz, |
|
Platform: reply.Platform, |
|
OID: reply.Oid, |
|
OType: reply.Otype, |
|
Fee: reply.Fee, |
|
Currency: reply.Currency, |
|
PayID: reply.PayId, |
|
State: reply.State, |
|
Reason: reply.Reason, |
|
} |
|
return |
|
} |
|
|
|
// TradeCancel cancel trade order by orderID |
|
func (d *Dao) TradeCancel(ctx context.Context, orderID string) (err error) { |
|
var ( |
|
req = &ugcpay.TradeOrderReq{ |
|
Id: orderID, |
|
} |
|
) |
|
if _, err = d.ugcpayAPI.TradeCancel(ctx, req); err != nil { |
|
return |
|
} |
|
return |
|
} |
|
|
|
// Income |
|
|
|
// IncomeAssetOverview . |
|
func (d *Dao) IncomeAssetOverview(ctx context.Context, mid int64) (inc *model.IncomeAssetOverview, err error) { |
|
var ( |
|
req = &ugcpay.IncomeUserAssetOverviewReq{ |
|
Mid: mid, |
|
} |
|
reply *ugcpay.IncomeUserAssetOverviewResp |
|
) |
|
if reply, err = d.ugcpayAPI.IncomeUserAssetOverview(ctx, req); err != nil { |
|
return |
|
} |
|
inc = &model.IncomeAssetOverview{ |
|
Total: reply.Total, |
|
TotalBuyTimes: reply.TotalBuyTimes, |
|
MonthNew: reply.MonthNew, |
|
DayNew: reply.DayNew, |
|
} |
|
return |
|
} |
|
|
|
// IncomeUserAssetList . |
|
func (d *Dao) IncomeUserAssetList(ctx context.Context, mid int64, ver int64, ps, pn int64) (inc *model.IncomeAssetMonthly, err error) { |
|
var ( |
|
req = &ugcpay.IncomeUserAssetListReq{ |
|
Mid: mid, |
|
Ver: ver, |
|
Ps: ps, |
|
Pn: pn, |
|
} |
|
reply *ugcpay.IncomeUserAssetListResp |
|
) |
|
if reply, err = d.ugcpayAPI.IncomeUserAssetList(ctx, req); err != nil { |
|
return |
|
} |
|
inc = &model.IncomeAssetMonthly{ |
|
List: make([]*model.IncomeAssetMonthlyByContent, 0), |
|
Page: &model.Page{ |
|
Num: reply.Page.Num, |
|
Size: reply.Page.Size_, |
|
Total: reply.Page.Total, |
|
}, |
|
} |
|
for _, c := range reply.List { |
|
inc.List = append(inc.List, &model.IncomeAssetMonthlyByContent{ |
|
OID: c.Oid, |
|
OType: c.Otype, |
|
Currency: c.Currency, |
|
Price: c.Price, |
|
TotalBuyTimes: c.TotalBuyTimes, |
|
NewBuyTimes: c.NewBuyTimes, |
|
TotalErrTimes: c.TotalErrTimes, |
|
NewErrTimes: c.NewErrTimes, |
|
}) |
|
} |
|
return |
|
} |
|
|
|
// archive |
|
|
|
// ArchiveTitles 通过 aid list 获取稿件标题 |
|
func (d *Dao) ArchiveTitles(ctx context.Context, aids []int64) (arcTitles map[int64]string, err error) { |
|
var ( |
|
req = &archive.ArcsRequest{ |
|
Aids: aids, |
|
} |
|
reply *archive.ArcsReply |
|
) |
|
if reply, err = d.archiveAPI.Arcs(ctx, req); err != nil { |
|
return |
|
} |
|
arcTitles = make(map[int64]string) |
|
for aid, a := range reply.Arcs { |
|
arcTitles[aid] = a.Title |
|
} |
|
return |
|
}
|
|
|