add: get device list
This commit is contained in:
parent
8c776cdbac
commit
9ea5c626e9
18
internal/handler/public/user/getDeviceListHandler.go
Normal file
18
internal/handler/public/user/getDeviceListHandler.go
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
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/pkg/result"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Get Device List
|
||||||
|
func GetDeviceListHandler(svcCtx *svc.ServiceContext) func(c *gin.Context) {
|
||||||
|
return func(c *gin.Context) {
|
||||||
|
|
||||||
|
l := user.NewGetDeviceListLogic(c.Request.Context(), svcCtx)
|
||||||
|
resp, err := l.GetDeviceList()
|
||||||
|
result.HttpResult(c, resp, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
26
internal/handler/public/user/unbindDeviceHandler.go
Normal file
26
internal/handler/public/user/unbindDeviceHandler.go
Normal file
@ -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"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Unbind Device
|
||||||
|
func UnbindDeviceHandler(svcCtx *svc.ServiceContext) func(c *gin.Context) {
|
||||||
|
return func(c *gin.Context) {
|
||||||
|
var req types.UnbindDeviceRequest
|
||||||
|
_ = c.ShouldBind(&req)
|
||||||
|
validateErr := svcCtx.Validate(&req)
|
||||||
|
if validateErr != nil {
|
||||||
|
result.ParamErrorResult(c, validateErr)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
l := user.NewUnbindDeviceLogic(c.Request.Context(), svcCtx)
|
||||||
|
err := l.UnbindDevice(&req)
|
||||||
|
result.HttpResult(c, nil, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
39
internal/logic/public/user/getDeviceListLogic.go
Normal file
39
internal/logic/public/user/getDeviceListLogic.go
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
package user
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
|
||||||
|
"github.com/perfect-panel/server/internal/model/user"
|
||||||
|
"github.com/perfect-panel/server/internal/svc"
|
||||||
|
"github.com/perfect-panel/server/internal/types"
|
||||||
|
"github.com/perfect-panel/server/pkg/constant"
|
||||||
|
"github.com/perfect-panel/server/pkg/logger"
|
||||||
|
"github.com/perfect-panel/server/pkg/tool"
|
||||||
|
)
|
||||||
|
|
||||||
|
type GetDeviceListLogic struct {
|
||||||
|
logger.Logger
|
||||||
|
ctx context.Context
|
||||||
|
svcCtx *svc.ServiceContext
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get Device List
|
||||||
|
func NewGetDeviceListLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GetDeviceListLogic {
|
||||||
|
return &GetDeviceListLogic{
|
||||||
|
Logger: logger.WithContext(ctx),
|
||||||
|
ctx: ctx,
|
||||||
|
svcCtx: svcCtx,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (l *GetDeviceListLogic) GetDeviceList() (resp *types.GetDeviceListResponse, err error) {
|
||||||
|
userInfo := l.ctx.Value(constant.CtxKeyUser).(*user.User)
|
||||||
|
list, count, err := l.svcCtx.UserModel.QueryDeviceList(l.ctx, userInfo.Id)
|
||||||
|
userRespList := make([]types.UserDevice, 0)
|
||||||
|
tool.DeepCopy(&userRespList, list)
|
||||||
|
resp = &types.GetDeviceListResponse{
|
||||||
|
Total: count,
|
||||||
|
List: userRespList,
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
42
internal/logic/public/user/unbindDeviceLogic.go
Normal file
42
internal/logic/public/user/unbindDeviceLogic.go
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
package user
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
|
||||||
|
"github.com/perfect-panel/server/internal/model/user"
|
||||||
|
"github.com/perfect-panel/server/internal/svc"
|
||||||
|
"github.com/perfect-panel/server/internal/types"
|
||||||
|
"github.com/perfect-panel/server/pkg/constant"
|
||||||
|
"github.com/perfect-panel/server/pkg/logger"
|
||||||
|
"github.com/perfect-panel/server/pkg/xerr"
|
||||||
|
"github.com/pkg/errors"
|
||||||
|
)
|
||||||
|
|
||||||
|
type UnbindDeviceLogic struct {
|
||||||
|
logger.Logger
|
||||||
|
ctx context.Context
|
||||||
|
svcCtx *svc.ServiceContext
|
||||||
|
}
|
||||||
|
|
||||||
|
// Unbind Device
|
||||||
|
func NewUnbindDeviceLogic(ctx context.Context, svcCtx *svc.ServiceContext) *UnbindDeviceLogic {
|
||||||
|
return &UnbindDeviceLogic{
|
||||||
|
Logger: logger.WithContext(ctx),
|
||||||
|
ctx: ctx,
|
||||||
|
svcCtx: svcCtx,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (l *UnbindDeviceLogic) UnbindDevice(req *types.UnbindDeviceRequest) error {
|
||||||
|
userInfo := l.ctx.Value(constant.CtxKeyUser).(*user.User)
|
||||||
|
device, err := l.svcCtx.UserModel.FindOneDevice(l.ctx, req.Id)
|
||||||
|
if err != nil {
|
||||||
|
return errors.Wrapf(xerr.NewErrCode(xerr.DeviceNotExist), "find device")
|
||||||
|
}
|
||||||
|
|
||||||
|
if device.UserId != userInfo.Id {
|
||||||
|
return errors.Wrapf(xerr.NewErrCode(xerr.InvalidParams), "device not belong to user")
|
||||||
|
}
|
||||||
|
|
||||||
|
return l.svcCtx.UserModel.DeleteDevice(l.ctx, req.Id)
|
||||||
|
}
|
||||||
@ -95,6 +95,7 @@ type customUserLogicModel interface {
|
|||||||
FindUserAuthMethodByPlatform(ctx context.Context, userId int64, platform string) (*AuthMethods, error)
|
FindUserAuthMethodByPlatform(ctx context.Context, userId int64, platform string) (*AuthMethods, error)
|
||||||
FindOneByEmail(ctx context.Context, email string) (*User, error)
|
FindOneByEmail(ctx context.Context, email string) (*User, error)
|
||||||
FindOneDevice(ctx context.Context, id int64) (*Device, error)
|
FindOneDevice(ctx context.Context, id int64) (*Device, error)
|
||||||
|
QueryDeviceList(ctx context.Context, userid int64) ([]*Device, int64, error)
|
||||||
QueryDevicePageList(ctx context.Context, userid, subscribeId int64, page, size int) ([]*Device, int64, error)
|
QueryDevicePageList(ctx context.Context, userid, subscribeId int64, page, size int) ([]*Device, int64, error)
|
||||||
UpdateDevice(ctx context.Context, data *Device, tx ...*gorm.DB) error
|
UpdateDevice(ctx context.Context, data *Device, tx ...*gorm.DB) error
|
||||||
FindOneDeviceByIdentifier(ctx context.Context, id string) (*Device, error)
|
FindOneDeviceByIdentifier(ctx context.Context, id string) (*Device, error)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user