user

package
v0.0.0-...-28af436 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 4, 2023 License: MIT Imports: 5 Imported by: 0

Documentation

Overview

这是一个user的领域包

用于定义对象模型, 也可以认为model这个文件,用于存入数据库的对象(po)

Index

Constants

View Source
const (
	AppName = "user"
)

Variables

This section is empty.

Functions

This section is empty.

Types

type CreateUserRequest

type CreateUserRequest struct {
	// 创建用户名密码
	// 有些时候这个字段的名称和数据库的名称不一样,就可以使用gorm:定义这个结构体里面的对象的这个字段和数据库对应
	Username string `json:"username" gorm:"column:username"`
	Password string `json:"password"`
	// 用户角色(写死)
	// 使用方法:CreateBlog(check user Role)
	Role Role `json:"role"`

	Label map[string]string `json:"label" gorm:"serializer:json"` // 直接序列化为json存储到lable字段里面去
	// contains filtered or unexported fields
}

Service这个接口需要用到一个数据结构 这个结构体的数据一般是由用户传递进来的,这个用户可能是管理员

func NewCreateUserRequest

func NewCreateUserRequest() *CreateUserRequest

构造函数

func (*CreateUserRequest) PasswordHash

func (req *CreateUserRequest) PasswordHash()

func (*CreateUserRequest) SetIsHashed

func (req *CreateUserRequest) SetIsHashed()

func (*CreateUserRequest) Validate

func (req *CreateUserRequest) Validate() error

type DeleteUserRequest

type DeleteUserRequest struct {
	Id int `json:"id"`
}

删除用户的请求

func (*DeleteUserRequest) IdString

func (req *DeleteUserRequest) IdString() string

type DescribeBy

type DescribeBy int

为DescribeUserRequest定义一个枚举

const (
	DESCRIBE_BY_ID DescribeBy = iota
	DESCRIBE_BY_USERNAME
)

type DescribeUserRequest

type DescribeUserRequest struct {
	DescribeBy    DescribeBy `json:"describe_by"`
	DescribeValue string     `json:"describe_value"`
}

同时支持通过Id来查询,也要支持通过Username来查询

func NewDescribeUserRequestById

func NewDescribeUserRequestById(id string) *DescribeUserRequest

func NewDescribeUserRequestByUsername

func NewDescribeUserRequestByUsername(username string) *DescribeUserRequest

type Role

type Role int

比如一个系统要给用户一个角色(用于权限划分) 定义用户时,定义一个枚举 Go的语法是没有声明枚举的,我们通常定义一个常量,或者一个类型比如: 定义一个类型type ROLE int 来表示枚举类型

const (
	// 创建者, 负责博客创作
	ROLE_AUTHOR Role = iota
	// 审核员
	ROLE_AUDITOR
	// 系统管理员
	ROLE_ADMIN
)

一般枚举类型,都是使用全大写(不成文的规定)

type Service

type Service interface {
	// 创建用户
	// 第一个参数context.Context
	// 第二个参数,是创建这个用户的具体请求,一般把他命名为*CreateUserRequest结构体(需要自己定义)
	// 最后返回User对象,这个对象往往是一个模型,一般放到模型库中../model.go中
	CreateUser(context.Context, *CreateUserRequest) (*User, error)

	// 删除用户
	DeleteUser(context.Context, *DeleteUserRequest) error

	// 查询用户 User.Checkpassword(xxx)
	DescribeUserRequest(context.Context, *DescribeUserRequest) (*User, error)
}

定义user这个包的能力,就是接口定义 定义接口有一个关键的点就是站在使用者的角度来定义的,userSvc.Create(ctx, req), usersvc.DeleteUser(id), 接口的兼容性,接口定义好了就不要试图随意修改接口

type User

type User struct {
	// 通用信息
	*common.Meta

	// 用户传递进来的请求,通过嵌套的方式
	*CreateUserRequest
}

这个对象后面是要把他丢到数据库里做保存的

func NewUser

func NewUser(req *CreateUserRequest) *User

User的构造函数

func (*User) Checkpassword

func (u *User) Checkpassword(password string) error

判断用户密码是否正确

func (*User) String

func (u *User) String() string

打印成一个json(好看点) 为User对象实现一个string方法

func (*User) TableName

func (u *User) TableName() string

声明你这个对象存储在user表里面 orm 复制调用Tablename() 来动态获取你这个对象要存储的表的名称

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL