177 lines
4.1 KiB
Go
177 lines
4.1 KiB
Go
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
|
|
}
|