go18/devcloud/mcenter/apps/user/interface.go
2025-05-31 12:03:22 +08:00

84 lines
2.0 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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"`
}