手把手开发Admin 系列五(规划api篇)

文档:https://docs.arklnk.com

前端:https://github.com/arklnk/ark-admin-vuenext

后端:https://github.com/arklnk/ark-admin-zero

go-zero:https://go-zero.dev/cn

演示: http://arkadmin.si-yee.com

账号密码备注
demo123456演示账号

编写api文件

配置管理

字典管理

路径:app/core/cmd/api/desc/config/dict.api

syntax = "v1"

info(
	title: "字典"
	desc: "字典"
	author: "Trevor"
	email: "trevorlan@163.com"
)

type (
	ConfigDict {
		Id        uint64 `json:"id"`
		ParentId  uint64 `json:"parentId"`
		Name      string `json:"name"`
		Type      uint64 `json:"type"`
		UniqueKey string `json:"uniqueKey"`
		Value     string `json:"value"`
		OrderNum  uint64 `json:"orderNum"`
		Remark    string `json:"remark"`
		Status    uint64 `json:"status"`
	}
	ConfigDictListResp {
		DictList []ConfigDict `json:"list"`
	}
)

type (
	ConfigDictPageReq {
		Page     uint64 `form:"page"      validate:"number,gte=1"`
		Limit    uint64 `form:"limit"     validate:"number,gte=1"`
		ParentId uint64 `form:"parentId"  validate:"number,gte=0"`
	}
	ConfigDictPagination {
		Page  uint64 `json:"page"`
		Limit uint64 `json:"limit"`
		Total uint64 `json:"total"`
	}
	ConfigDictPageResp {
		ConfigDictList []ConfigDict         `json:"list"`
		Pagination     ConfigDictPagination `json:"pagination"`
	}
)

type (
	AddConfigDictReq {
		ParentId  uint64 `json:"parentId"   validate:"number,gte=0"`
		Name      string `json:"name"       validate:"min=2,max=50"`
		Type      uint64 `json:"type"       validate:"number,gte=1,lte=12"`
		UniqueKey string `json:"uniqueKey"  validate:"min=2,max=50"`
		Value     string `json:"value"      validate:"max=2048"`
		OrderNum  uint64 `json:"orderNum"   validate:"gte=0,lte=9999"`
		Remark    string `json:"remark"     validate:"max=200"`
		Status    uint64 `json:"status"     validate:"number,gte=0,lte=1"`
	}
)

type (
	DeleteConfigDictReq {
		Id uint64 `json:"id"  validate:"number,gte=1"`
	}
)

type (
	UpdateConfigDictReq {
		Id        uint64 `json:"id"        validate:"number,gte=1"`
		ParentId  uint64 `json:"parentId"  validate:"number,gte=0"`
		Name      string `json:"name"      validate:"min=2,max=50"`
		Type      uint64 `json:"type"      validate:"number,gte=1,lte=12"`
		Value     string `json:"value"     validate:"max=2048"`
		OrderNum  uint64 `json:"orderNum"  validate:"gte=0,lte=9999"`
		Remark    string `json:"remark"    validate:"max=200"`
		Status    uint64 `json:"status"    validate:"number,gte=0,lte=1"`
	}
)

@server(
	jwt: JwtAuth
	group : config/dict
	prefix : /config/dict
	middleware: PermMenuAuth
)
service core-api {
	@doc(
		summary: "字典列表"
	)
	@handler GetConfigDictList
	get /list returns (ConfigDictListResp)
	
	@doc(
		summary: "分页字典数据"
	)
	@handler GetConfigDictPage
	get /data/page (ConfigDictPageReq) returns (ConfigDictPageResp)
	
	@doc(
		summary: "新增字典"
	)
	@handler AddConfigDict
	post /add (AddConfigDictReq)
	
	@doc(
		summary: "删除字典"
	)
	@handler DeleteConfigDict
	post /delete (DeleteConfigDictReq)
	
	@doc(
		summary: "更新字典"
	)
	@handler UpdateConfigDict
	post /update (UpdateConfigDictReq)
}

日志管理

登录日志

路径:app/core/cmd/api/desc/log/log.api

syntax = "v1"

info(
	title: "日志"
	desc: "日志"
	author: "Trevor"
	email: "trevorlan@163.com"
)

type (
	LogLogin {
		Id         uint64 `json:"id"`
		Account    string `json:"account"`
		Ip         string `json:"ip"`
		Uri        string `json:"uri"`
		Status     uint64 `json:"status"`
		CreateTime string `json:"createTime"`
	}
	LogLoginPageReq {
		Page  uint64 `form:"page"   validate:"number,gte=1"`
		Limit uint64 `form:"limit"  validate:"number,gte=1"`
	}
	LogLoginPagePagination {
		Page  uint64 `json:"page"`
		Limit uint64 `json:"limit"`
		Total uint64 `json:"total"`
	}
	LogLoginPageResp {
		LogLoginList []LogLogin             `json:"list"`
		Pagination   LogLoginPagePagination `json:"pagination"`
	}
)

@server(
	jwt: JwtAuth
	group : log/login
	prefix : /log/login
	middleware: PermMenuAuth
)
service core-api {
	@doc(
		summary: "分页日志"
	)
	@handler GetLogLoginPage
	get /page (LogLoginPageReq) returns (LogLoginPageResp)
}

系统管理

部门管理

路径:app/core/cmd/api/desc/sys/dept.api

syntax = "v1"

info(
	title: "部门"
	desc: "部门"
	author: "Trevor"
	email: "trevorlan@163.com"
)

type (
	Dept {
		Id        uint64 `json:"id"`
		ParentId  uint64 `json:"parentId"`
		Name      string `json:"name"`
		FullName  string `json:"fullName"`
		UniqueKey string `json:"uniqueKey"`
		Type      uint64 `json:"type"`
		Status    uint64 `json:"status"`
		OrderNum  uint64 `json:"orderNum"`
		Remark    string `json:"remark"`
	}
	SysDeptListResp {
		DeptList []Dept `json:"list"`
	}
)

type (
	AddSysDeptReq {
		ParentId  uint64 `json:"parentId"   validate:"number,gte=0"`
		Name      string `json:"name"       validate:"min=2,max=50"`
		FullName  string `json:"fullName"   validate:"omitempty,min=2,max=50"`
		UniqueKey string `json:"uniqueKey"  validate:"min=2,max=50"`
		Type      uint64 `json:"type"       validate:"number,gte=1,lte=3"`
		Status    uint64 `json:"status"     validate:"number,gte=0,lte=1"`
		OrderNum  uint64 `json:"orderNum"   validate:"number,gte=0,lte=9999"`
		Remark    string `json:"remark"     validate:"max=200"`
	}
)

type (
	DeleteSysDeptReq {
		Id uint64 `json:"id"  validate:"number,gte=1"`
	}
)

type (
	UpdateSysDeptReq {
		Id        uint64 `json:"id"         validate:"number,gte=1"`
		ParentId  uint64 `json:"parentId"   validate:"number,gte=0"`
		Name      string `json:"name"       validate:"min=2,max=50"`
		FullName  string `json:"fullName"   validate:"omitempty,min=2,max=50"`
		UniqueKey string `json:"uniqueKey"  validate:"min=2,max=50"`
		Type      uint64 `json:"type"       validate:"number,gte=1,lte=3"`
		Status    uint64 `json:"status"     validate:"number,gte=0,lte=1"`
		OrderNum  uint64 `json:"orderNum"   validate:"number,gte=0,lte=9999"`
		Remark    string `json:"remark"     validate:"max=200"`
	}
)

@server(
	jwt: JwtAuth
	group : sys/dept
	prefix : /sys/dept
	middleware: PermMenuAuth
)
service core-api {
	@doc(
		summary: "部门列表"
	)
	@handler GetSysDeptList
	get /list returns (SysDeptListResp)
	
	@doc(
		summary: "新增部门"
	)
	@handler AddSysDept
	post /add (AddSysDeptReq)
	
	@doc(
		summary: "删除部门"
	)
	@handler DeleteSysDept
	post /delete (DeleteSysDeptReq)
	
	@doc(
		summary: "更新部门"
	)
	@handler UpdateSysDept
	post /update (UpdateSysDeptReq)
}
岗位管理

路径:app/core/cmd/api/desc/sys/job.api

syntax = "v1"

info(
	title: "岗位"
	desc: "岗位"
	author: "Trevor"
	email: "trevorlan@163.com"
)

type (
	Job {
		Id       uint64 `json:"id"`
		Name     string `json:"name"`
		Status   uint64 `json:"status"`
		OrderNum uint64 `json:"orderNum"`
	}
	SysJobPageReq {
		Page  uint64 `form:"page"   validate:"number,gte=1"`
		Limit uint64 `form:"limit"  validate:"number,gte=1"`
	}
	SysJobPagePagination {
		Page  uint64 `json:"page"`
		Limit uint64 `json:"limit"`
		Total uint64 `json:"total"`
	}
	SysJobPageResp {
		JobList    []Job                `json:"list"`
		Pagination SysJobPagePagination `json:"pagination"`
	}
)

type (
	AddSysJobReq {
		Name     string `json:"name"      validate:"min=2,max=50"`
		Status   uint64 `json:"status"    validate:"number,gte=0,lte=1"`
		OrderNum uint64 `json:"orderNum"  validate:"number,gte=0,lte=9999"`
	}
)

type (
	DeleteSysJobReq {
		Id uint64 `json:"id"  validate:"number,gte=1"`
	}
)

type (
	UpdateSysJobReq {
		Id       uint64 `json:"id"        validate:"number,gte=1"`
		Name     string `json:"name"      validate:"min=2,max=50"`
		Status   uint64 `json:"status"    validate:"number,gte=0,lte=1"`
		OrderNum uint64 `json:"orderNum"  validate:"number,gte=0,lte=9999"`
	}
)

@server(
	jwt: JwtAuth
	group : sys/job
	prefix : /sys/job
	middleware: PermMenuAuth
)
service core-api {
	@doc(
		summary: "分页岗位"
	)
	@handler GetSysJobPage
	get /page (SysJobPageReq) returns (SysJobPageResp)
	
	@doc(
		summary: "新增岗位"
	)
	@handler AddSysJob
	post /add (AddSysJobReq)
	
	@doc(
		summary: "删除岗位"
	)
	@handler DeleteSysJob
	post /delete (DeleteSysJobReq)
	
	@doc(
		summary: "更新岗位"
	)
	@handler UpdateSysJob
	post /update (UpdateSysJobReq)
}
菜单管理

路径:app/core/cmd/api/desc/sys/menu.api

syntax = "v1"

info(
	title: "权限菜单"
	desc: "权限菜单"
	author: "Trevor"
	email: "trevorlan@163.com"
)

type (
	PermMenu {
		Id           uint64   `json:"id"`
		ParentId     uint64   `json:"parentId"`
		Name         string   `json:"name"`
		Router       string   `json:"router"`
		Perms        []string `json:"perms"`
		Type         uint64   `json:"type"`
		Icon         string   `json:"icon"`
		OrderNum     uint64   `json:"orderNum"`
		ViewPath     string   `json:"viewPath"`
		IsShow       uint64   `json:"isShow"`
		ActiveRouter string   `json:"activeRouter"`
	    Has          uint64   `json:"has"`
	}
	SysPermMenuListResp {
		PermMenuList []PermMenu `json:"list"`
	}
)

type (
	AddSysPermMenuReq {
		ParentId     uint64   `json:"parentId"      validate:"number,gte=0"`
		Name         string   `json:"name"          validate:"min=2,max=50"`
		Router       string   `json:"router"        validate:"omitempty,max=1024"`
		Perms        []string `json:"perms"         validate:"omitempty,unique"`
		Type         uint64   `json:"type"          validate:"number,gte=0,lte=2"`
		Icon         string   `json:"icon"          validate:"omitempty,max=200"`
		OrderNum     uint64   `json:"orderNum"      validate:"number,gte=0,lte=9999"`
		ViewPath     string   `json:"viewPath"      validate:"omitempty,max=1024"`
		IsShow       uint64   `json:"isShow"        validate:"number,gte=0,lte=1"`
		ActiveRouter string   `json:"activeRouter"  validate:"omitempty,max=1024"`
	}
)

type (
	DeleteSysPermMenuReq {
		Id uint64 `json:"id"  validate:"number,gte=1"`
	}
)

type (
	UpdateSysPermMenuReq {
		Id           uint64   `json:"id"            validate:"number,gte=1"`
		ParentId     uint64   `json:"parentId"      validate:"number,gte=0"`
		Name         string   `json:"name"          validate:"min=2,max=50"`
		Router       string   `json:"router"        validate:"omitempty,max=1024"`
		Perms        []string `json:"perms"         validate:"omitempty,unique"`
		Type         uint64   `json:"type"          validate:"number,gte=0,lte=2"`
		Icon         string   `json:"icon"          validate:"omitempty,max=200"`
		OrderNum     uint64   `json:"orderNum"      validate:"number,gte=0,lte=9999"`
		ViewPath     string   `json:"viewPath"      validate:"omitempty,max=1024"`
		IsShow       uint64   `json:"isShow"        validate:"number,gte=0,lte=1"`
		ActiveRouter string   `json:"activeRouter"  validate:"omitempty,max=1024"`
	}
)

@server(
	jwt: JwtAuth
	group : sys/menu
	prefix : /sys/perm/menu
	middleware: PermMenuAuth
)
service core-api {
	@doc(
		summary: "权限菜单列表"
	)
	@handler GetSysPermMenuList
	get /list returns (SysPermMenuListResp)
	
	@doc(
		summary: "新增权限菜单"
	)
	@handler AddSysPermMenu
	post /add (AddSysPermMenuReq)
	
	@doc(
		summary: "删除权限菜单"
	)
	@handler DeleteSysPermMenu
	post /delete (DeleteSysPermMenuReq)
	
	@doc(
		summary: "更新权限菜单"
	)
	@handler UpdateSysPermMenu
	post /update (UpdateSysPermMenuReq)
}
职称管理

路径:app/core/cmd/api/desc/sys/profession.api

syntax = "v1"

info(
	title: "职称"
	desc: "职称"
	author: "Trevor"
	email: "trevorlan@163.com"
)

type (
	Profession {
		Id       uint64 `json:"id"`
		Name     string `json:"name"`
		Status   uint64 `json:"status"`
		OrderNum uint64 `json:"orderNum"`
	}
	SysProfessionPageReq {
		Page  uint64 `form:"page"   validate:"number,gte=1"`
		Limit uint64 `form:"limit"  validate:"number,gte=1"`
	}
	ProfessionPagePagination {
		Page  uint64 `json:"page"`
		Limit uint64 `json:"limit"`
		Total uint64 `json:"total"`
	}
	SysProfessionPageResp {
		ProfessionList []Profession             `json:"list"`
		Pagination     ProfessionPagePagination `json:"pagination"`
	}
)

type (
	AddSysProfessionReq {
		Name     string `json:"name"      validate:"min=2,max=50"`
		Status   uint64 `json:"status"    validate:"number,gte=0,lte=1"`
		OrderNum uint64 `json:"orderNum"  validate:"number,gte=0,lte=9999"`
	}
)

type (
	DeleteSysProfessionReq {
		Id uint64 `json:"id"  validate:"number,gte=1"`
	}
)

type (
	UpdateSysProfessionReq {
		Id       uint64 `json:"id"        validate:"number,gte=1"`
		Name     string `json:"name"      validate:"min=2,max=50"`
		Status   uint64 `json:"status"    validate:"number,gte=0,lte=1"`
		OrderNum uint64 `json:"orderNum"  validate:"number,gte=0,lte=9999"`
	}
)

@server(
	jwt: JwtAuth
	group : sys/profession
	prefix : /sys/profession
	middleware: PermMenuAuth
)
service core-api {
	@doc(
		summary: "分页职称"
	)
	@handler GetSysProfessionPage
	get /page (SysProfessionPageReq) returns (SysProfessionPageResp)
	
	@doc(
		summary: "新增职称"
	)
	@handler AddSysProfession
	post /add (AddSysProfessionReq)
	
	@doc(
		summary: "删除职称"
	)
	@handler DeleteSysProfession
	post /delete (DeleteSysProfessionReq)
	
	@doc(
		summary: "更新职称"
	)
	@handler UpdateSysProfession
	post /update (UpdateSysProfessionReq)
}
角色管理

路径:app/core/cmd/api/desc/sys/role.api

syntax = "v1"

info(
	title: "角色"
	desc: "角色"
	author: "Trevor"
	email: "trevorlan@163.com"
)

type (
	Role {
		Id          uint64   `json:"id"`
		ParentId    uint64   `json:"parentId"`
		Name        string   `json:"name"`
		UniqueKey   string   `json:"uniqueKey"`
		PermMenuIds []uint64 `json:"permMenuIds"`
		Remark      string   `json:"remark"`
		Status      uint64   `json:"status"`
		OrderNum    uint64   `json:"orderNum"`
	}
	SysRoleListResp {
		RoleList []Role `json:"list"`
	}
)

type (
	AddSysRoleReq {
		ParentId    uint64   `json:"parentId"     validate:"number,gte=0"`
		Name        string   `json:"name"         validate:"min=2,max=50"`
		UniqueKey   string   `json:"uniqueKey"    validate:"min=2,max=50"`
		PermMenuIds []uint64 `json:"permMenuIds"  validate:"omitempty,unique"`
		Remark      string   `json:"remark"       validate:"max=200"`
		Status      uint64   `json:"status"       validate:"number,gte=0,lte=1"`
		OrderNum    uint64   `json:"orderNum"     validate:"number,gte=0,lte=9999"`
	}
)

type (
	DeleteSysRoleReq {
		Id uint64 `json:"id"  validate:"number,gte=2"`
	}
)

type (
	UpdateSysRoleReq {
		Id          uint64   `json:"id"           validate:"number,gte=1"`
		ParentId    uint64   `json:"parentId"     validate:"number,gte=0"`
		UniqueKey   string   `json:"uniqueKey"    validate:"min=2,max=50"`
		Name        string   `json:"name"         validate:"min=2,max=50"`
		PermMenuIds []uint64 `json:"permMenuIds"  validate:"omitempty,unique"`
		Remark      string   `json:"remark"       validate:"max=200"`
		Status      uint64   `json:"status"       validate:"number,gte=0,lte=1"`
		OrderNum    uint64   `json:"orderNum"     validate:"number,gte=0,lte=9999"`
	}
)

@server(
	jwt: JwtAuth
	group : sys/role
	prefix : /sys/role
	middleware: PermMenuAuth
)
service core-api {
	@doc(
		summary: "角色列表"
	)
	@handler GetSysRoleList
	get /list returns (SysRoleListResp)
	
	@doc(
		summary: "新增角色"
	)
	@handler AddSysRole
	post /add (AddSysRoleReq)
	
	@doc(
		summary: "删除角色"
	)
	@handler DeleteSysRole
	post /delete (DeleteSysRoleReq)
	
	@doc(
		summary: "更新角色"
	)
	@handler UpdateSysRole
	post /update (UpdateSysRoleReq)
}
用户管理

路径:app/core/cmd/api/desc/sys/user.api

syntax = "v1"

info(
	title: "用户"
	desc: "用户"
	author: "Trevor"
	email: "trevorlan@163.com"
)

type (
	UserProfession {
		Id   uint64 `json:"id"`
		Name string `json:"name"`
	}
	UserJob {
		Id   uint64 `json:"id"`
		Name string `json:"name"`
	}
	UserDept {
		Id   uint64 `json:"id"`
		Name string `json:"name"`
	}
	UserRole {
		Id   uint64 `json:"id"`
		Name string `json:"name"`
	}
	User {
		Id         uint64         `json:"id"`
		Account    string         `json:"account"`
		Username   string         `json:"username"`
		Nickname   string         `json:"nickname"`
		Gender     uint64         `json:"gender"`
		Email      string         `json:"email"`
		Mobile     string         `json:"mobile"`
		Profession UserProfession `json:"profession"`
		Job        UserJob        `json:"job"`
		Dept       UserDept       `json:"dept"`
		Roles      []UserRole     `json:"roles"`
		Status     uint64         `json:"status"`
		OrderNum   uint64         `json:"orderNum"`
		Remark     string         `json:"remark"`
	}
	SysUserPageReq {
		Page   uint64 `form:"page"    validate:"number,gte=1"`
		Limit  uint64 `form:"limit"   validate:"number,gte=1"`
		DeptId uint64 `form:"deptId"  validate:"number,gte=0"`
	}
	UserPagePagination {
		Page  uint64 `json:"page"`
		Limit uint64 `json:"limit"`
		Total uint64 `json:"total"`
	}
	SysUserPageResp {
		UserList   []User             `json:"list"`
		Pagination UserPagePagination `json:"pagination"`
	}
)

type (
	AddSysUserReq {
		Account      string   `json:"account"       validate:"min=4,max=50"`
		Username     string   `json:"username"      validate:"min=2,max=50"`
		Nickname     string   `json:"nickname"      validate:"omitempty,min=2,max=50"`
		Gender       uint64   `json:"gender"        validate:"number,gte=0,lte=2"`
		Email        string   `json:"email"         validate:"omitempty,email"`
		Mobile       string   `json:"mobile"        validate:"omitempty,min=11"`
		ProfessionId uint64   `json:"professionId"  validate:"number,gte=1"`
		JobId        uint64   `json:"jobId"         validate:"number,gte=1"`
		DeptId       uint64   `json:"deptId"        validate:"number,gte=1"`
		RoleIds      []uint64 `json:"roleIds"       validate:"unique"`
		Status       uint64   `json:"status"        validate:"number,gte=0,lte=1"`
		OrderNum     uint64   `json:"orderNum"      validate:"number,gte=0,lte=9999"`
		Remark       string   `json:"remark"        validate:"max=200"`
	}
)

type (
	DeleteSysUserReq {
		Id uint64 `json:"id"  validate:"number,gte=2"`
	}
)

type (
	UpdateSysUserReq {
		Id           uint64   `json:"id"            validate:"number,gte=2"`
		Username     string   `json:"username"      validate:"min=2,max=50"`
		Nickname     string   `json:"nickname"      validate:"omitempty,min=2,max=50"`
		Gender       uint64   `json:"gender"        validate:"number,gte=0,lte=2"`
		Email        string   `json:"email"         validate:"omitempty,email"`
		Mobile       string   `json:"mobile"        validate:"omitempty,min=11"`
		ProfessionId uint64   `json:"professionId"  validate:"number,gte=1"`
		JobId        uint64   `json:"jobId"         validate:"number,gte=1"`
		DeptId       uint64   `json:"deptId"        validate:"number,gte=1"`
		RoleIds      []uint64 `json:"roleIds"       validate:"unique"`
		Status       uint64   `json:"status"        validate:"number,gte=0,lte=1"`
		OrderNum     uint64   `json:"orderNum"      validate:"number,gte=0,lte=9999"`
		Remark       string   `json:"remark"        validate:"max=200"`
	}
)

type (
	UpdateSysUserPasswordReq {
		Id       uint64 `json:"id"        validate:"number,gte=2"`
		Password string `json:"password"  validate:"min=6,max=12"`
	}
)

type (
	GetSysUserRdpjInfoReq {
		UserId uint64 `form:"userId"  validate:"number,gte=0"`
	}
	Rdpj {
		Id   uint64 `json:"id"`
		Name string `json:"name"`
	}
	DeptTree {
		Id       uint64 `json:"id"`
		ParentId uint64 `json:"parentId"`
		Name     string `json:"name"`
	}
	RoleTree {
		Id       uint64 `json:"id"`
		ParentId uint64 `json:"parentId"`
		Name     string `json:"name"`
	    Has      uint64 `json:"has"`
	}
	GetSysUserRdpjInfoResp {
		Role       []RoleTree `json:"role"`
		Dept       []DeptTree `json:"dept"`
		Profession []Rdpj     `json:"profession"`
		Job        []Rdpj     `json:"job"`
	}
)

@server(
	jwt: JwtAuth
	group : sys/user
	prefix : /sys/user
	middleware: PermMenuAuth
)
service core-api {
	@doc(
		summary: "分页用户"
	)
	@handler GetSysUserPage
	get /page (SysUserPageReq) returns (SysUserPageResp)
	
	@doc(
		summary: "新增用户"
	)
	@handler AddSysUser
	post /add (AddSysUserReq)
	
	@doc(
		summary: "删除用户"
	)
	@handler DeleteSysUser
	post /delete (DeleteSysUserReq)
	
	@doc(
		summary: "更新用户"
	)
	@handler UpdateSysUser
	post /update (UpdateSysUserReq)
	
	@doc(
		summary: "更新用户密码"
	)
	@handler UpdateSysUserPassword
	post /password/update (UpdateSysUserPasswordReq)
	
	@doc(
		summary: "角色部门职称岗位信息"
	)
	@handler GetSysUserRdpjInfo
	get /rdpj/info (GetSysUserRdpjInfoReq) returns (GetSysUserRdpjInfoResp)
}

用户模块

通用操作

路径:app/core/cmd/api/desc/user/user.api

syntax = "v1"

info(
	title: "个人中心"
	desc: "个人中心"
	author: "Trevor"
	email: "trevorlan@163.com"
)

type (
	LoginReq {
		CaptchaId  string `json:"captchaId"`
		VerifyCode string `json:"verifyCode"`
		Account    string `json:"account"`
		Password   string `json:"password"`
	}
	LoginResp {
		Token string `json:"token"`
	}
)

type (
	UserInfoResp {
		Username string `json:"username"`
		Avatar   string `json:"avatar"`
	}
)

type (
	UserProfileInfoResp {
		Username string `json:"username"`
		Nickname string `json:"nickname"`
		Gender   uint64 `json:"gender"`
		Email    string `json:"email"`
		Mobile   string `json:"mobile"`
		Remark   string `json:"remark"`
		Avatar   string `json:"avatar"`
	}
)

type (
	UpdateProfileReq {
		Username string `json:"username"  validate:"required,min=2,max=12"`
		Nickname string `json:"nickname"  validate:"omitempty,min=2,max=12"`
		Gender   uint64 `json:"gender"    validate:"gte=0,lte=2"`
		Email    string `json:"email"     validate:"omitempty,email"`
		Mobile   string `json:"mobile"    validate:"omitempty,len=11"`
		Avatar   string `json:"avatar"    validate:"required,url"`
	}
)

type (
	Menu {
		Id           uint64 `json:"id"`
		ParentId     uint64 `json:"parentId"`
		Name         string `json:"name"`
		Router       string `json:"router"`
		Type         uint64 `json:"type"`
		Icon         string `json:"icon"`
		OrderNum     uint64 `json:"orderNum"`
		ViewPath     string `json:"viewPath"`
		IsShow       uint64 `json:"isShow"`
		ActiveRouter string `json:"activeRouter"`
	}
	UserPermMenuResp {
		Menus []Menu   `json:"menus"`
		Perms []string `json:"perms"`
	}
)

type (
	UpdatePasswordReq {
		OldPassword string `json:"oldPassword"  validate:"min=6,max=12"`
		NewPassword string `json:"newPassword"  validate:"min=6,max=12"`
	}
)

type (
	LoginCaptchaResp {
		CaptchaId  string `json:"captchaId"`
		VerifyCode string `json:"verifyCode"`
	}
)

type (
	GenerateAvatarResp {
		AvatarUrl string `json:"avatarUrl"`
	}
)

@server(
	group : user
	prefix : /user
)
service core-api {
	@doc(
		summary: "登录"
	)
	@handler Login
	post /login (LoginReq) returns (LoginResp)
	
	@doc(
		summary: "登录验证码"
	)
	@handler GetLoginCaptcha
	get /login/captcha returns (LoginCaptchaResp)

	@doc(
		summary: "退出"
	)
	@handler Logout
	post /logout
}

@server(
	jwt: JwtAuth
	group : user
	prefix : /user
)
service core-api {
	@doc(
		summary: "登录信息"
	)
	@handler GetUserInfo
	get /info returns (UserInfoResp)
	
	@doc(
		summary: "权限菜单"
	)
	@handler GetUserPermMenu
	get /permmenu returns (UserPermMenuResp)
	
	@doc(
		summary: "用户资料"
	)
	@handler GetUserProfileInfo
	get /profile/info returns (UserProfileInfoResp)
	
	@doc(
		summary: "更新用户资料"
	)
	@handler UpdateUserProfile
	post /profile/update (UpdateProfileReq)
	
	@doc(
		summary: "更新密码"
	)
	@handler UpdateUserPassword
	post /password/update (UpdatePasswordReq)
	
	@doc(
		summary: "生成头像"
	)
	@handler GetGenerateAvatar
	get /avatar/generate returns (GenerateAvatarResp)
}

生成api

由于自定义了goctl模板,所以在使用goctl生成api时,请指定goctl模板路径为:dev/goctl

例如(在项目根目录下执行)

goctl api go -api app/core/cmd/api/core.api -dir app/core/cmd/api -home ./dev/goctl

编写业务逻辑

业务逻辑篇幅过长,详细请参考:

文档:https://docs.arklnk.com

前端:https://github.com/arklnk/ark-admin-vuenext

后端:https://github.com/arklnk/ark-admin-zero

go-zero:https://go-zero.dev/cn

演示: http://arkadmin.si-yee.com

账号密码备注
demo123456演示账号
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值