go18/devcloud/mcenter/apps/user/interface.go

84 lines
2.0 KiB
Go
Raw Normal View History

2025-05-31 12:03:22 +08:00
package user
import (
"context"
"slices"
"github.com/infraboard/mcube/v2/http/request"
"github.com/infraboard/mcube/v2/ioc"
"github.com/infraboard/mcube/v2/types"
)
const (
APP_NAME = "user"
)
func GetService() Service {
return ioc.Controller().Get(APP_NAME).(Service)
}
// 定义User包的能力 就是接口定义
// 站在使用放的角度来定义的 userSvc.Create(ctx, req), userSvc.DeleteUser(id)
// 接口定义好了,不要试图 随意修改接口, 要保证接口的兼容性
type Service interface {
// 创建用户
CreateUser(context.Context, *CreateUserRequest) (*User, error)
// 删除用户
DeleteUser(context.Context, *DeleteUserRequest) (*User, error)
// 查询用户详情
DescribeUser(context.Context, *DescribeUserRequest) (*User, error)
// 查询用户列表
QueryUser(context.Context, *QueryUserRequest) (*types.Set[*User], error)
}
func NewQueryUserRequest() *QueryUserRequest {
return &QueryUserRequest{
PageRequest: request.NewDefaultPageRequest(),
UserIds: []uint64{},
}
}
type QueryUserRequest struct {
*request.PageRequest
UserIds []uint64 `form:"user" json:"user"`
}
func (r *QueryUserRequest) AddUser(userIds ...uint64) *QueryUserRequest {
for _, uid := range userIds {
if !slices.Contains(r.UserIds, uid) {
r.UserIds = append(r.UserIds, uid)
}
}
return r
}
func NewDescribeUserRequestById(id string) *DescribeUserRequest {
return &DescribeUserRequest{
DescribeValue: id,
}
}
func NewDescribeUserRequestByUserName(username string) *DescribeUserRequest {
return &DescribeUserRequest{
DescribeBy: DESCRIBE_BY_USERNAME,
DescribeValue: username,
}
}
// 同时支持通过Id来查询也要支持通过username来查询
type DescribeUserRequest struct {
DescribeBy DESCRIBE_BY `json:"describe_by"`
DescribeValue string `json:"describe_value"`
}
func NewDeleteUserRequest(id string) *DeleteUserRequest {
return &DeleteUserRequest{
Id: id,
}
}
// 删除用户的请求
type DeleteUserRequest struct {
Id string `json:"id"`
}