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

144 阅读11分钟

文档:docs.arklnk.com

前端:github.com/arklnk/ark-…

后端:github.com/arklnk/ark-…

go-zero:go-zero.dev/cn

演示: 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

编写业务逻辑

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

文档:docs.arklnk.com

前端:github.com/arklnk/ark-…

后端:github.com/arklnk/ark-…

go-zero:go-zero.dev/cn

演示: arkadmin.si-yee.com

账号密码备注
demo123456演示账号