diff --git a/backend/__debug_bin601502269 b/backend/__debug_bin3098822796 similarity index 83% rename from backend/__debug_bin601502269 rename to backend/__debug_bin3098822796 index 51d415e..2709cfa 100755 Binary files a/backend/__debug_bin601502269 and b/backend/__debug_bin3098822796 differ diff --git a/backend/modules/middlewares/mid_response.go b/backend/modules/middlewares/mid_response.go index eb9551d..7a944b2 100644 --- a/backend/modules/middlewares/mid_response.go +++ b/backend/modules/middlewares/mid_response.go @@ -11,7 +11,8 @@ func (f *Middlewares) ProcessResponse(c fiber.Ctx) error { log.WithField("module", "middleware.ProcessResponse").Debug("Begin") defer log.WithField("module", "middleware.ProcessResponse").Debug("END") - if err := c.Next(); err != nil { + err := c.Next() + if err != nil { log.WithError(err).Error("process response error") if e, ok := err.(errorx.Response); ok { @@ -29,5 +30,5 @@ func (f *Middlewares) ProcessResponse(c fiber.Ctx) error { return errorx.Wrap(err).Response(c) } - return nil + return err } diff --git a/backend/modules/users/controller.go b/backend/modules/users/controller.go index 32b982d..d38a901 100644 --- a/backend/modules/users/controller.go +++ b/backend/modules/users/controller.go @@ -33,3 +33,19 @@ func (c *Controller) Charge(ctx fiber.Ctx) error { return ctx.JSON(nil) } + +// Info +func (c *Controller) Info(ctx fiber.Ctx) error { + claim := fiber.Locals[*jwt.Claims](ctx, consts.CtxKeyClaim) + log.Debug(claim) + + info := &UserInfo{} + + balance, err := c.svc.GetTenantUserBalance(ctx.Context(), claim.TenantID, claim.UserID) + if err != nil { + return err + } + info.Balance = balance + + return ctx.JSON(info) +} diff --git a/backend/modules/users/dto.go b/backend/modules/users/dto.go new file mode 100644 index 0000000..9fabe38 --- /dev/null +++ b/backend/modules/users/dto.go @@ -0,0 +1,5 @@ +package users + +type UserInfo struct { + Balance int64 `json:"balance"` +} diff --git a/backend/modules/users/router.go b/backend/modules/users/router.go index 4451767..8a7c808 100755 --- a/backend/modules/users/router.go +++ b/backend/modules/users/router.go @@ -26,6 +26,6 @@ func (r *Router) Name() string { func (r *Router) Register(router fiber.Router) { group := router.Group(r.Name()) - group.Get("", r.controller.List) + group.Get("info", r.controller.Info) group.Patch("charge/:code", r.controller.Charge) } diff --git a/backend/modules/users/service.go b/backend/modules/users/service.go index 8c39d17..6abf677 100644 --- a/backend/modules/users/service.go +++ b/backend/modules/users/service.go @@ -174,13 +174,13 @@ func (svc *Service) TenantHasUser(ctx context.Context, userID, tenantID int64) ( log.Debug(stmt.DebugSql()) var result struct { - cnt int64 + Cnt int64 } if err := stmt.QueryContext(ctx, db.FromContext(ctx, svc.db), &result); err != nil { return false, errors.Wrap(err, "failed to query user-tenant relation") } - return result.cnt > 0, nil + return result.Cnt > 0, nil } // CreateTenantUser @@ -268,7 +268,7 @@ func (svc *Service) GenerateChargeCode(ctx context.Context, tenantID, chargeAmou if err != nil { return "", errors.Wrap(err, "failed to encode charge code") } - log.Infof("generate charge code: %s", code) + log.Infof("generate charge code: %s, info: %+v", code, []int64{tenantID, chargeAmount, timestamp}) return code, nil } @@ -379,3 +379,20 @@ func (svc *Service) Charge(ctx context.Context, claim *jwt.Claims, code string) return nil } + +// GetTenantUserBalance +func (svc *Service) GetTenantUserBalance(ctx context.Context, tenantID, userID int64) (int64, error) { + log := svc.log.WithField("method", "GetTenantUserBalance") + + tbl := table.UsersTenants + stmt := tbl.SELECT(tbl.Balance.AS("balance")).WHERE(tbl.TenantID.EQ(Int64(tenantID)).AND(tbl.UserID.EQ(Int64(userID)))) + log.Debug(stmt.DebugSql()) + + var result struct { + Balance int64 + } + if err := stmt.QueryContext(ctx, db.FromContext(ctx, svc.db), &result); err != nil { + return 0, errors.Wrap(err, "failed to query user balance") + } + return result.Balance, nil +} diff --git a/backend/modules/users/service_test.go b/backend/modules/users/service_test.go index e64b7b4..0a37f76 100644 --- a/backend/modules/users/service_test.go +++ b/backend/modules/users/service_test.go @@ -44,7 +44,7 @@ func Test_DiscoverMedias(t *testing.T) { func (t *ServiceTestSuite) Test_Charge() { Convey("Charge", t.T(), func() { - code, err := t.Svc.GenerateChargeCode(context.Background(), 1, 100) + code, err := t.Svc.GenerateChargeCode(context.Background(), 2, 100) So(err, ShouldBeNil) code = "b8TDWf59wvPw" @@ -57,3 +57,12 @@ func (t *ServiceTestSuite) Test_Charge() { So(err, ShouldBeNil) }) } + +// Test_GetTenantUserBalance +func (t *ServiceTestSuite) Test_GetTenantUserBalance() { + Convey("GetTenantUserBalance", t.T(), func() { + balance, err := t.Svc.GetTenantUserBalance(context.Background(), 1, 1) + So(err, ShouldBeNil) + So(balance, ShouldNotEqual, 0) + }) +} diff --git a/backend/pkg/errorx/error.go b/backend/pkg/errorx/error.go index f0debd7..797b45a 100644 --- a/backend/pkg/errorx/error.go +++ b/backend/pkg/errorx/error.go @@ -22,7 +22,7 @@ func (r Response) Error() string { } func (r Response) Response(ctx fiber.Ctx) error { - return ctx.Status(r.Code).JSON(r) + return ctx.Status(r.StatusCode).JSON(r) } var ( diff --git a/frontend/src/router/index.js b/frontend/src/router/index.js index 6673be8..6f344ad 100644 --- a/frontend/src/router/index.js +++ b/frontend/src/router/index.js @@ -28,7 +28,7 @@ const router = createRouter({ // route level code-splitting // this generates a separate chunk (About.[hash].js) for this route // which is lazy-loaded when the route is visited. - component: () => import('../views/tabs/MeView.vue'), + component: () => import('../views/tabs/UserView.vue'), }, ] }, diff --git a/frontend/src/views/tabs/MeView.vue b/frontend/src/views/tabs/MeView.vue deleted file mode 100644 index 3fa2807..0000000 --- a/frontend/src/views/tabs/MeView.vue +++ /dev/null @@ -1,5 +0,0 @@ - - - This is an about page - - diff --git a/frontend/src/views/tabs/UserView.vue b/frontend/src/views/tabs/UserView.vue new file mode 100644 index 0000000..9521bd1 --- /dev/null +++ b/frontend/src/views/tabs/UserView.vue @@ -0,0 +1,86 @@ + + + + + + + + + 确认充值 + + + + + + + + + + + + + \ No newline at end of file