feat(log): add endpoints for retrieving and resetting subscribe traffic logs
This commit is contained in:
parent
ec4e95451b
commit
062533412a
@ -164,6 +164,15 @@ type (
|
||||
List []UserLoginLog `json:"list"`
|
||||
Total int64 `json:"total"`
|
||||
}
|
||||
GetUserSubscribeResetTrafficLogsRequest {
|
||||
Page int `form:"page"`
|
||||
Size int `form:"size"`
|
||||
UserSubscribeId int64 `form:"user_subscribe_id"`
|
||||
}
|
||||
GetUserSubscribeResetTrafficLogsResponse {
|
||||
List []ResetSubscribeTrafficLog `json:"list"`
|
||||
Total int64 `json:"total"`
|
||||
}
|
||||
DeleteUserSubscribeRequest {
|
||||
UserSubscribeId int64 `json:"user_subscribe_id"`
|
||||
}
|
||||
@ -251,6 +260,10 @@ service ppanel {
|
||||
@handler GetUserSubscribeLogs
|
||||
get /subscribe/logs (GetUserSubscribeLogsRequest) returns (GetUserSubscribeLogsResponse)
|
||||
|
||||
@doc "Get user subcribe reset traffic logs"
|
||||
@handler GetUserSubscribeResetTrafficLogs
|
||||
get /subscribe/reset/logs (GetUserSubscribeResetTrafficLogsRequest) returns (GetUserSubscribeResetTrafficLogsResponse)
|
||||
|
||||
@doc "Get user subcribe traffic logs"
|
||||
@handler GetUserSubscribeTrafficLogs
|
||||
get /subscribe/traffic_logs (GetUserSubscribeTrafficLogsRequest) returns (GetUserSubscribeTrafficLogsResponse)
|
||||
|
||||
@ -35,6 +35,15 @@ type (
|
||||
Amount int64 `json:"amount"`
|
||||
CreatedAt int64 `json:"created_at"`
|
||||
}
|
||||
ResetSubscribeTrafficLogRequest {
|
||||
Page int `form:"page"`
|
||||
Size int `form:"size"`
|
||||
UserSubscribeId int64 `form:"user_subscribe_id"`
|
||||
}
|
||||
ResetSubscribeTrafficLogResponse {
|
||||
List []ResetSubscribeTrafficLog `json:"list"`
|
||||
Total int64 `json:"total"`
|
||||
}
|
||||
QueryUserCommissionLogListRequest {
|
||||
Page int `form:"page"`
|
||||
Size int `form:"size"`
|
||||
@ -136,6 +145,10 @@ service ppanel {
|
||||
@handler Unsubscribe
|
||||
post /unsubscribe (UnsubscribeRequest)
|
||||
|
||||
@doc "Reset Subscribe Traffic Log"
|
||||
@handler ResetSubscribeTrafficLog
|
||||
get /subscribe/reset/log (ResetSubscribeTrafficLogRequest) returns (ResetSubscribeTrafficLogResponse)
|
||||
|
||||
@doc "Query User Balance Log"
|
||||
@handler QueryUserBalanceLog
|
||||
get /balance_log returns (QueryUserBalanceLogListResponse)
|
||||
|
||||
@ -754,5 +754,12 @@ type (
|
||||
Linux string `json:"linux,omitempty"`
|
||||
Harmony string `json:"harmony,omitempty"`
|
||||
}
|
||||
ResetSubscribeTrafficLog {
|
||||
Id int64 `json:"id"`
|
||||
Type uint8 `json:"type"`
|
||||
UserSubscribeId int64 `json:"user_subscribe_id"`
|
||||
OrderNo string `json:"order_no,omitempty"`
|
||||
ResetAt int64 `json:"reset_at"`
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
@ -0,0 +1,26 @@
|
||||
package user
|
||||
|
||||
import (
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/perfect-panel/server/internal/logic/admin/user"
|
||||
"github.com/perfect-panel/server/internal/svc"
|
||||
"github.com/perfect-panel/server/internal/types"
|
||||
"github.com/perfect-panel/server/pkg/result"
|
||||
)
|
||||
|
||||
// Get user subcribe reset traffic logs
|
||||
func GetUserSubscribeResetTrafficLogsHandler(svcCtx *svc.ServiceContext) func(c *gin.Context) {
|
||||
return func(c *gin.Context) {
|
||||
var req types.GetUserSubscribeResetTrafficLogsRequest
|
||||
_ = c.ShouldBind(&req)
|
||||
validateErr := svcCtx.Validate(&req)
|
||||
if validateErr != nil {
|
||||
result.ParamErrorResult(c, validateErr)
|
||||
return
|
||||
}
|
||||
|
||||
l := user.NewGetUserSubscribeResetTrafficLogsLogic(c.Request.Context(), svcCtx)
|
||||
resp, err := l.GetUserSubscribeResetTrafficLogs(&req)
|
||||
result.HttpResult(c, resp, err)
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,26 @@
|
||||
package user
|
||||
|
||||
import (
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/perfect-panel/server/internal/logic/public/user"
|
||||
"github.com/perfect-panel/server/internal/svc"
|
||||
"github.com/perfect-panel/server/internal/types"
|
||||
"github.com/perfect-panel/server/pkg/result"
|
||||
)
|
||||
|
||||
// Reset Subscribe Traffic Log
|
||||
func ResetSubscribeTrafficLogHandler(svcCtx *svc.ServiceContext) func(c *gin.Context) {
|
||||
return func(c *gin.Context) {
|
||||
var req types.ResetSubscribeTrafficLogRequest
|
||||
_ = c.ShouldBind(&req)
|
||||
validateErr := svcCtx.Validate(&req)
|
||||
if validateErr != nil {
|
||||
result.ParamErrorResult(c, validateErr)
|
||||
return
|
||||
}
|
||||
|
||||
l := user.NewResetSubscribeTrafficLogLogic(c.Request.Context(), svcCtx)
|
||||
resp, err := l.ResetSubscribeTrafficLog(&req)
|
||||
result.HttpResult(c, resp, err)
|
||||
}
|
||||
}
|
||||
@ -525,6 +525,9 @@ func RegisterHandlers(router *gin.Engine, serverCtx *svc.ServiceContext) {
|
||||
// Get user subcribe logs
|
||||
adminUserGroupRouter.GET("/subscribe/logs", adminUser.GetUserSubscribeLogsHandler(serverCtx))
|
||||
|
||||
// Get user subcribe reset traffic logs
|
||||
adminUserGroupRouter.GET("/subscribe/reset/logs", adminUser.GetUserSubscribeResetTrafficLogsHandler(serverCtx))
|
||||
|
||||
// Get user subcribe traffic logs
|
||||
adminUserGroupRouter.GET("/subscribe/traffic_logs", adminUser.GetUserSubscribeTrafficLogsHandler(serverCtx))
|
||||
}
|
||||
@ -759,6 +762,9 @@ func RegisterHandlers(router *gin.Engine, serverCtx *svc.ServiceContext) {
|
||||
// Query User Subscribe
|
||||
publicUserGroupRouter.GET("/subscribe", publicUser.QueryUserSubscribeHandler(serverCtx))
|
||||
|
||||
// Reset Subscribe Traffic Log
|
||||
publicUserGroupRouter.GET("/subscribe/reset/log", publicUser.ResetSubscribeTrafficLogHandler(serverCtx))
|
||||
|
||||
// Get Subscribe Log
|
||||
publicUserGroupRouter.GET("/subscribe_log", publicUser.GetSubscribeLogHandler(serverCtx))
|
||||
|
||||
|
||||
@ -0,0 +1,62 @@
|
||||
package user
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/perfect-panel/server/internal/model/log"
|
||||
"github.com/perfect-panel/server/internal/svc"
|
||||
"github.com/perfect-panel/server/internal/types"
|
||||
"github.com/perfect-panel/server/pkg/logger"
|
||||
"github.com/perfect-panel/server/pkg/xerr"
|
||||
"github.com/pkg/errors"
|
||||
)
|
||||
|
||||
type GetUserSubscribeResetTrafficLogsLogic struct {
|
||||
logger.Logger
|
||||
ctx context.Context
|
||||
svcCtx *svc.ServiceContext
|
||||
}
|
||||
|
||||
// Get user subcribe reset traffic logs
|
||||
func NewGetUserSubscribeResetTrafficLogsLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GetUserSubscribeResetTrafficLogsLogic {
|
||||
return &GetUserSubscribeResetTrafficLogsLogic{
|
||||
Logger: logger.WithContext(ctx),
|
||||
ctx: ctx,
|
||||
svcCtx: svcCtx,
|
||||
}
|
||||
}
|
||||
|
||||
func (l *GetUserSubscribeResetTrafficLogsLogic) GetUserSubscribeResetTrafficLogs(req *types.GetUserSubscribeResetTrafficLogsRequest) (resp *types.GetUserSubscribeResetTrafficLogsResponse, err error) {
|
||||
data, total, err := l.svcCtx.LogModel.FilterSystemLog(l.ctx, &log.FilterParams{
|
||||
Page: req.Page,
|
||||
Size: req.Size,
|
||||
Type: log.TypeResetSubscribe.Uint8(),
|
||||
ObjectID: req.UserSubscribeId,
|
||||
})
|
||||
if err != nil {
|
||||
l.Errorf("[ResetSubscribeTrafficLog] failed to filter system log: %v", err)
|
||||
return nil, errors.Wrapf(xerr.NewErrCode(xerr.DatabaseQueryError), "FilterSystemLog failed, err: %v", err)
|
||||
}
|
||||
|
||||
var list []types.ResetSubscribeTrafficLog
|
||||
|
||||
for _, item := range data {
|
||||
var content log.ResetSubscribe
|
||||
if err = content.Unmarshal([]byte(item.Content)); err != nil {
|
||||
l.Errorf("[ResetSubscribeTrafficLog] failed to unmarshal log: %v", err)
|
||||
continue
|
||||
}
|
||||
list = append(list, types.ResetSubscribeTrafficLog{
|
||||
Id: item.Id,
|
||||
Type: content.Type,
|
||||
OrderNo: content.OrderNo,
|
||||
ResetAt: content.ResetAt,
|
||||
UserSubscribeId: item.ObjectID,
|
||||
})
|
||||
}
|
||||
|
||||
return &types.GetUserSubscribeResetTrafficLogsResponse{
|
||||
Total: total,
|
||||
List: list,
|
||||
}, nil
|
||||
}
|
||||
63
internal/logic/public/user/resetSubscribeTrafficLogLogic.go
Normal file
63
internal/logic/public/user/resetSubscribeTrafficLogLogic.go
Normal file
@ -0,0 +1,63 @@
|
||||
package user
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/perfect-panel/server/internal/model/log"
|
||||
"github.com/perfect-panel/server/pkg/xerr"
|
||||
"github.com/pkg/errors"
|
||||
|
||||
"github.com/perfect-panel/server/internal/svc"
|
||||
"github.com/perfect-panel/server/internal/types"
|
||||
"github.com/perfect-panel/server/pkg/logger"
|
||||
)
|
||||
|
||||
type ResetSubscribeTrafficLogLogic struct {
|
||||
logger.Logger
|
||||
ctx context.Context
|
||||
svcCtx *svc.ServiceContext
|
||||
}
|
||||
|
||||
// NewResetSubscribeTrafficLogLogic Reset Subscribe Traffic Log
|
||||
func NewResetSubscribeTrafficLogLogic(ctx context.Context, svcCtx *svc.ServiceContext) *ResetSubscribeTrafficLogLogic {
|
||||
return &ResetSubscribeTrafficLogLogic{
|
||||
Logger: logger.WithContext(ctx),
|
||||
ctx: ctx,
|
||||
svcCtx: svcCtx,
|
||||
}
|
||||
}
|
||||
|
||||
func (l *ResetSubscribeTrafficLogLogic) ResetSubscribeTrafficLog(req *types.ResetSubscribeTrafficLogRequest) (resp *types.ResetSubscribeTrafficLogResponse, err error) {
|
||||
data, total, err := l.svcCtx.LogModel.FilterSystemLog(l.ctx, &log.FilterParams{
|
||||
Page: req.Page,
|
||||
Size: req.Size,
|
||||
Type: log.TypeResetSubscribe.Uint8(),
|
||||
ObjectID: req.UserSubscribeId,
|
||||
})
|
||||
if err != nil {
|
||||
l.Errorf("[ResetSubscribeTrafficLog] failed to filter system log: %v", err)
|
||||
return nil, errors.Wrapf(xerr.NewErrCode(xerr.DatabaseQueryError), "FilterSystemLog failed, err: %v", err)
|
||||
}
|
||||
|
||||
var list []types.ResetSubscribeTrafficLog
|
||||
|
||||
for _, item := range data {
|
||||
var content log.ResetSubscribe
|
||||
if err = content.Unmarshal([]byte(item.Content)); err != nil {
|
||||
l.Errorf("[ResetSubscribeTrafficLog] failed to unmarshal log: %v", err)
|
||||
continue
|
||||
}
|
||||
list = append(list, types.ResetSubscribeTrafficLog{
|
||||
Id: item.Id,
|
||||
Type: content.Type,
|
||||
OrderNo: content.OrderNo,
|
||||
ResetAt: content.ResetAt,
|
||||
UserSubscribeId: item.ObjectID,
|
||||
})
|
||||
}
|
||||
|
||||
return &types.ResetSubscribeTrafficLogResponse{
|
||||
Total: total,
|
||||
List: list,
|
||||
}, nil
|
||||
}
|
||||
@ -956,6 +956,17 @@ type GetUserSubscribeLogsResponse struct {
|
||||
Total int64 `json:"total"`
|
||||
}
|
||||
|
||||
type GetUserSubscribeResetTrafficLogsRequest struct {
|
||||
Page int `form:"page"`
|
||||
Size int `form:"size"`
|
||||
UserSubscribeId int64 `form:"user_subscribe_id"`
|
||||
}
|
||||
|
||||
type GetUserSubscribeResetTrafficLogsResponse struct {
|
||||
List []ResetSubscribeTrafficLog `json:"list"`
|
||||
Total int64 `json:"total"`
|
||||
}
|
||||
|
||||
type GetUserSubscribeTrafficLogsRequest struct {
|
||||
Page int `form:"page"`
|
||||
Size int `form:"size"`
|
||||
@ -1416,6 +1427,25 @@ type ResetPasswordRequest struct {
|
||||
CfToken string `json:"cf_token,optional"`
|
||||
}
|
||||
|
||||
type ResetSubscribeTrafficLog struct {
|
||||
Id int64 `json:"id"`
|
||||
Type uint8 `json:"type"`
|
||||
UserSubscribeId int64 `json:"user_subscribe_id"`
|
||||
OrderNo string `json:"order_no,omitempty"`
|
||||
ResetAt int64 `json:"reset_at"`
|
||||
}
|
||||
|
||||
type ResetSubscribeTrafficLogRequest struct {
|
||||
Page int `form:"page"`
|
||||
Size int `form:"size"`
|
||||
UserSubscribeId int64 `form:"user_subscribe_id"`
|
||||
}
|
||||
|
||||
type ResetSubscribeTrafficLogResponse struct {
|
||||
List []ResetSubscribeTrafficLog `json:"list"`
|
||||
Total int64 `json:"total"`
|
||||
}
|
||||
|
||||
type ResetTrafficOrderRequest struct {
|
||||
UserSubscribeID int64 `json:"user_subscribe_id"`
|
||||
Payment int64 `json:"payment"`
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user