84 lines
2.0 KiB
Go
84 lines
2.0 KiB
Go
|
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"`
|
|||
|
}
|