Skip to content

Commit

Permalink
Merge pull request #47 from NpoolPlatform/feat/support-reward-event
Browse files Browse the repository at this point in the history
Feat/support reward event
  • Loading branch information
EntropyPool authored Sep 26, 2024
2 parents 8c1e605 + 97e758a commit 38be055
Show file tree
Hide file tree
Showing 6 changed files with 120 additions and 15 deletions.
8 changes: 4 additions & 4 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,16 @@ go 1.17

require (
github.com/NpoolPlatform/account-middleware v0.0.0-20240711084532-91d043378264
github.com/NpoolPlatform/appuser-middleware v0.0.0-20240119021359-948c8504d662
github.com/NpoolPlatform/appuser-middleware v0.0.0-20240926060520-1949246cf711
github.com/NpoolPlatform/basal-middleware v0.0.0-20231015112137-254853c60eec
github.com/NpoolPlatform/chain-middleware v0.0.0-20240711085642-93249f191575
github.com/NpoolPlatform/dtm-cluster v0.0.0-20240508013939-4ccc5836ba1f
github.com/NpoolPlatform/go-service-framework v0.0.0-20240510075442-89278cb5cf47
github.com/NpoolPlatform/good-middleware v0.0.0-20240725012824-d2f509d8c77d
github.com/NpoolPlatform/inspire-middleware v0.0.0-20240711084912-bda64205c476
github.com/NpoolPlatform/ledger-middleware v0.0.0-20240711091502-eaf1d4c83d6d
github.com/NpoolPlatform/inspire-middleware v0.0.0-20240926040710-f354d0cc54d1
github.com/NpoolPlatform/ledger-middleware v0.0.0-20240926060549-586842176038
github.com/NpoolPlatform/libent-cruder v0.0.0-20240514082633-598d5fc7b1e3
github.com/NpoolPlatform/message v0.0.0-20240726120313-a06f4fbfcf9a
github.com/NpoolPlatform/message v0.0.0-20240926035258-262baa9486ff
github.com/NpoolPlatform/order-middleware v0.0.0-20240819115146-5cac3951a887
github.com/NpoolPlatform/sphinx-proxy v0.0.0-20231201062049-852b1487d4a9
github.com/dtm-labs/dtm v1.17.1
Expand Down
16 changes: 8 additions & 8 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -50,8 +50,8 @@ github.com/DATA-DOG/go-sqlmock v1.5.0 h1:Shsta01QNfFxHCfpW6YH2STWB0MudeXXEWMr20O
github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ=
github.com/NpoolPlatform/account-middleware v0.0.0-20240711084532-91d043378264 h1:pBMc55bIG0IYkVKuCGS7NN2U0TfdPYXgUHjzDDJQ3JY=
github.com/NpoolPlatform/account-middleware v0.0.0-20240711084532-91d043378264/go.mod h1:alPiYbL6fKVGbsr7Q3YXTlPGmtKI6V+6b/8qtnn8xP0=
github.com/NpoolPlatform/appuser-middleware v0.0.0-20240119021359-948c8504d662 h1:t8u7hIcPbnH/W7rWOOqmvubagdO9lwR2CcteDAnJuD8=
github.com/NpoolPlatform/appuser-middleware v0.0.0-20240119021359-948c8504d662/go.mod h1:NiRL9uaGlrIqtQWQmKW2Zt33AkTTImg/AFSJNJf0BNE=
github.com/NpoolPlatform/appuser-middleware v0.0.0-20240926060520-1949246cf711 h1:0veSRFL+e4LbKqxyw7extdOMGvGc4r1bILGBChZ4eOI=
github.com/NpoolPlatform/appuser-middleware v0.0.0-20240926060520-1949246cf711/go.mod h1:xkkC7ov3shzQWqDy4PAicYZkM0LhWllFHp1ldCLjMgg=
github.com/NpoolPlatform/basal-middleware v0.0.0-20231015112137-254853c60eec h1:YftnEsNtCsUz3iAKsI2bwt7+AuA7Ygx3GfYV6h38s9U=
github.com/NpoolPlatform/basal-middleware v0.0.0-20231015112137-254853c60eec/go.mod h1:WlyWMkHKHeW9PuST/CvRAw9pkhfrr/XS8VDISBaKdGA=
github.com/NpoolPlatform/chain-middleware v0.0.0-20240711085642-93249f191575 h1:8n1hkIlgbTdxiMAXhCkyh8zn5xbRhGPTzEPLn6fcMeo=
Expand All @@ -62,14 +62,14 @@ github.com/NpoolPlatform/go-service-framework v0.0.0-20240510075442-89278cb5cf47
github.com/NpoolPlatform/go-service-framework v0.0.0-20240510075442-89278cb5cf47/go.mod h1:8ZqSAAL4eLX/09HLWwDzQY0fMORy8nqHj3kwiUHEyS4=
github.com/NpoolPlatform/good-middleware v0.0.0-20240725012824-d2f509d8c77d h1:VMTrfk6Qz1Sm1mYdoh9DKEjooklj2RpmhnNk2sPMdHk=
github.com/NpoolPlatform/good-middleware v0.0.0-20240725012824-d2f509d8c77d/go.mod h1:cV7wd2i7r94cJ+ZX3PCampfNW0yHL0YpMPItwEPTS1g=
github.com/NpoolPlatform/inspire-middleware v0.0.0-20240711084912-bda64205c476 h1:bUqDtpw7xL6t9bSwUUl0qFLj1OecznDPSFELruIJvK0=
github.com/NpoolPlatform/inspire-middleware v0.0.0-20240711084912-bda64205c476/go.mod h1:vziZVuiHCb7M6J+Dceyt9JWwBuDZTWAx4TYJI1z1rRw=
github.com/NpoolPlatform/ledger-middleware v0.0.0-20240711091502-eaf1d4c83d6d h1:J++/Q4S3wJMdP3k+sh2wpU/MHlHbMqNPcz1F0u0Ar+k=
github.com/NpoolPlatform/ledger-middleware v0.0.0-20240711091502-eaf1d4c83d6d/go.mod h1:3nEfFBxMHW5HW/Dy/tti1nhqa0sUWZzwSykWem4MuIg=
github.com/NpoolPlatform/inspire-middleware v0.0.0-20240926040710-f354d0cc54d1 h1:R5XhulOQUmGy8uV8amIiGzd3NAR0d9UPo8mGkc3Ql3g=
github.com/NpoolPlatform/inspire-middleware v0.0.0-20240926040710-f354d0cc54d1/go.mod h1:lWKXMaaeSUZh05hsXbEpHRTGGW2Cd+/6ilING0iWBMs=
github.com/NpoolPlatform/ledger-middleware v0.0.0-20240926060549-586842176038 h1:xjshRV0l9W4Hb8KOVCJ55meEeBtlfrwXgmF1MYe79Ng=
github.com/NpoolPlatform/ledger-middleware v0.0.0-20240926060549-586842176038/go.mod h1:bjdVCKi0/kYKXqxCHIcVBJvniP0m59GTwQ2/lzMeVT8=
github.com/NpoolPlatform/libent-cruder v0.0.0-20240514082633-598d5fc7b1e3 h1:/KSPKS4kVn031QTPpdxjPnp+Yykmde25Zya0krZdk/Y=
github.com/NpoolPlatform/libent-cruder v0.0.0-20240514082633-598d5fc7b1e3/go.mod h1:EXCihQpRNNyWaPu1IphiZFLTyyUK/CJMZdW4My7y48Q=
github.com/NpoolPlatform/message v0.0.0-20240726120313-a06f4fbfcf9a h1:Utkp0TVDuBBRzRzKnyD4bJYQTtCZwqLu72E6adVBB5E=
github.com/NpoolPlatform/message v0.0.0-20240726120313-a06f4fbfcf9a/go.mod h1:PxJpF0vSSOke+NJskbRBRQ2fK2K3SRe8zaEja+GxSHk=
github.com/NpoolPlatform/message v0.0.0-20240926035258-262baa9486ff h1:K2Fh03naaUmiP8KO8XkwfS6V3avoYNyGyIrUtr78VBc=
github.com/NpoolPlatform/message v0.0.0-20240926035258-262baa9486ff/go.mod h1:PxJpF0vSSOke+NJskbRBRQ2fK2K3SRe8zaEja+GxSHk=
github.com/NpoolPlatform/order-middleware v0.0.0-20240819115146-5cac3951a887 h1:hd0XDzfCqbVIRoU3KbHSp8+KoGJeF/GsQAguRWoiF10=
github.com/NpoolPlatform/order-middleware v0.0.0-20240819115146-5cac3951a887/go.mod h1:iTqulYg3MXnZyWX7mLHKmnM2IOVhd/U3eux6EjzGEh0=
github.com/NpoolPlatform/sphinx-proxy v0.0.0-20231201062049-852b1487d4a9 h1:TljSgLyyHCAi/8cCOCf8WyOenmnbDJvqku627x4udyo=
Expand Down
4 changes: 2 additions & 2 deletions pkg/fee/query.go
Original file line number Diff line number Diff line change
Expand Up @@ -175,8 +175,8 @@ func (h *queryHandler) formalize() {
}
appFee, ok := h.appFees[fee.AppGoodID]
if ok {
info.GoodName = appFee.Name
info.AppGoodName = appFee.Name
info.GoodName = appFee.GoodName
info.AppGoodName = appFee.AppGoodName
info.DurationDisplayType = appFee.DurationDisplayType
info.Durations, info.DurationUnit = ordergwcommon.GoodDurationDisplayType2Unit(
appFee.DurationDisplayType, info.DurationSeconds,
Expand Down
96 changes: 96 additions & 0 deletions pkg/powerrental/basecreate.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,19 @@ package powerrental

import (
"context"
"fmt"
"time"

dtmcli "github.com/NpoolPlatform/dtm-cluster/pkg/dtm"
timedef "github.com/NpoolPlatform/go-service-framework/pkg/const/time"
"github.com/NpoolPlatform/go-service-framework/pkg/logger"
"github.com/NpoolPlatform/go-service-framework/pkg/pubsub"
wlog "github.com/NpoolPlatform/go-service-framework/pkg/wlog"
apppowerrentalmwcli "github.com/NpoolPlatform/good-middleware/pkg/client/app/powerrental"
apppowerrentalsimulatemwcli "github.com/NpoolPlatform/good-middleware/pkg/client/app/powerrental/simulate"
goodcoinmwcli "github.com/NpoolPlatform/good-middleware/pkg/client/good/coin"
goodmwsvcname "github.com/NpoolPlatform/good-middleware/pkg/servicename"
eventmwli "github.com/NpoolPlatform/inspire-middleware/pkg/client/event"
cruder "github.com/NpoolPlatform/libent-cruder/pkg/cruder"
goodtypes "github.com/NpoolPlatform/message/npool/basetypes/good/v1"
types "github.com/NpoolPlatform/message/npool/basetypes/order/v1"
Expand All @@ -20,6 +24,7 @@ import (
apppowerrentalmwpb "github.com/NpoolPlatform/message/npool/good/mw/v1/app/powerrental"
apppowerrentalsimulatemwpb "github.com/NpoolPlatform/message/npool/good/mw/v1/app/powerrental/simulate"
goodcoinmwpb "github.com/NpoolPlatform/message/npool/good/mw/v1/good/coin"
eventmwpb "github.com/NpoolPlatform/message/npool/inspire/mw/v1/event"
feeordermwpb "github.com/NpoolPlatform/message/npool/order/mw/v1/fee"
paymentmwpb "github.com/NpoolPlatform/message/npool/order/mw/v1/payment"
powerrentalordermwpb "github.com/NpoolPlatform/message/npool/order/mw/v1/powerrental"
Expand Down Expand Up @@ -48,6 +53,97 @@ type baseCreateHandler struct {
orderStartAt uint32
}

func (h *baseCreateHandler) checkExistEventGood(ctx context.Context) (bool, error) {
ev, err := eventmwli.GetEventOnly(ctx, &eventmwpb.Conds{
AppID: &basetypes.StringVal{Op: cruder.EQ, Value: *h.OrderCheckHandler.AppCheckHandler.AppID},
EventType: &basetypes.Uint32Val{Op: cruder.EQ, Value: uint32(basetypes.UsedFor_Purchase)},
})
if err != nil {
return false, wlog.Errorf("invalid event")
}
if ev == nil {
return false, wlog.Errorf("invalid event")
}
fmt.Println("event: ", ev)
if ev.GoodID == nil || ev.AppGoodID == nil {
return false, nil
}
if *ev.GoodID == uuid.Nil.String() && *ev.AppGoodID == uuid.Nil.String() {
return false, nil
}
return true, nil
}

//nolint:dupl
func (h *baseCreateHandler) rewardPurchase(existGoodID bool) {
if err := pubsub.WithPublisher(func(publisher *pubsub.Publisher) error {
goodID := uuid.Nil.String()
req := &eventmwpb.CalcluateEventRewardsRequest{
AppID: *h.OrderCheckHandler.AppCheckHandler.AppID,
UserID: *h.OrderCheckHandler.UserID,
EventType: basetypes.UsedFor_Purchase,
Consecutive: 1,
Amount: h.powerRentalOrderReq.PaymentAmountUSD,
AppGoodID: &goodID,
GoodID: &goodID,
}
if existGoodID {
req.GoodID = &h.appPowerRental.GoodID
req.AppGoodID = &h.appPowerRental.AppGoodID
}
return publisher.Update(
basetypes.MsgID_CalculateEventRewardReq.String(),
nil,
nil,
nil,
req,
)
}); err != nil {
logger.Sugar().Errorw(
"rewardPurchase",
"AppID", *h.OrderCheckHandler.AppCheckHandler.AppID,
"UserID", *h.OrderCheckHandler.UserID,
"Amount", h.powerRentalOrderReq.PaymentAmountUSD,
"Error", err,
)
}
}

//nolint:dupl
func (h *baseCreateHandler) rewardAffiliatePurchase(existGoodID bool) {
if err := pubsub.WithPublisher(func(publisher *pubsub.Publisher) error {
goodID := uuid.Nil.String()
req := &eventmwpb.CalcluateEventRewardsRequest{
AppID: *h.OrderCheckHandler.AppCheckHandler.AppID,
UserID: *h.OrderCheckHandler.UserID,
EventType: basetypes.UsedFor_AffiliatePurchase,
Consecutive: 1,
Amount: h.powerRentalOrderReq.PaymentAmountUSD,
AppGoodID: &goodID,
GoodID: &goodID,
}
if existGoodID {
req.GoodID = &h.appPowerRental.GoodID
req.AppGoodID = &h.appPowerRental.AppGoodID
}
return publisher.Update(
basetypes.MsgID_CalculateEventRewardReq.String(),
nil,
nil,
nil,
req,
)
}); err != nil {
logger.Sugar().Errorw(
"rewardAffiliatePurchase",
"AppID", *h.OrderCheckHandler.AppCheckHandler.AppID,
"UserID", *h.OrderCheckHandler.UserID,
"Amount", h.powerRentalOrderReq.PaymentAmountUSD,
"Error", err,
)
}
}

func (h *baseCreateHandler) getAppGoods(ctx context.Context) error {
if err := h.GetAppGoods(ctx); err != nil {
return wlog.WrapError(err)
Expand Down
9 changes: 9 additions & 0 deletions pkg/powerrental/create.go
Original file line number Diff line number Diff line change
Expand Up @@ -155,5 +155,14 @@ func (h *Handler) CreatePowerRentalOrder(ctx context.Context) (*npool.PowerRenta
return nil, wlog.WrapError(err)
}

if !handler.OrderOpHandler.Simulate && *h.OrderType == types.OrderType_Normal {
existGoodID, err := handler.checkExistEventGood(ctx)
if err != nil {
return nil, wlog.WrapError(err)
}
handler.rewardPurchase(existGoodID)
handler.rewardAffiliatePurchase(existGoodID)
}

return h.GetPowerRentalOrder(ctx)
}
2 changes: 1 addition & 1 deletion pkg/powerrental/query.go
Original file line number Diff line number Diff line change
Expand Up @@ -259,7 +259,7 @@ func (h *queryHandler) formalize() {
}
info.FeeDurations = append(info.FeeDurations, &feeordergwpb.FeeDuration{
AppGoodID: feeDuration.AppGoodID,
AppGoodName: appFee.Name,
AppGoodName: appFee.AppGoodName,
TotalDurationSeconds: feeDuration.TotalDurationSeconds,
})
}
Expand Down

0 comments on commit 38be055

Please sign in to comment.