feat:增加swag的依赖和用户接口显示 (#345)

feat:增加swag的依赖和用户接口显示
This commit is contained in:
南宫乘风 2024-05-20 21:55:42 +08:00 committed by GitHub
parent 3b3a3d4aae
commit a114b67e68
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
19 changed files with 8662 additions and 33 deletions

View File

@ -65,7 +65,15 @@ func Run(c *gin.Context, req interface{}, fn func() (interface{}, interface{}))
tools.Success(c, data) tools.Success(c, data)
} }
// Demo
// @Summary 健康检测
// @Tags 基础管理
// @Produce json
// @Description 健康检测
// @Success 200 {object} response.ResponseBody
// @router /base/ping [get]
func Demo(c *gin.Context) { func Demo(c *gin.Context) {
// 健康检测
CodeDebug() CodeDebug()
c.JSON(http.StatusOK, tools.H{"code": 200, "msg": "ok", "data": "pong"}) c.JSON(http.StatusOK, tools.H{"code": 200, "msg": "ok", "data": "pong"})
} }

View File

@ -10,6 +10,14 @@ import (
type ApiController struct{} type ApiController struct{}
// List 记录列表 // List 记录列表
// @Summary 获取API接口列表
// Description: 获取API接口列表
// @Tags 接口管理
// @Accept application/json
// @Produce application/json
// @Success 200 {object} response.ResponseBody
// @Router /api/list [get]
// @Security ApiKeyAuth
func (m *ApiController) List(c *gin.Context) { func (m *ApiController) List(c *gin.Context) {
req := new(request.ApiListReq) req := new(request.ApiListReq)
Run(c, req, func() (interface{}, interface{}) { Run(c, req, func() (interface{}, interface{}) {
@ -18,6 +26,14 @@ func (m *ApiController) List(c *gin.Context) {
} }
// GetTree 接口树 // GetTree 接口树
// @Summary 获取API接口树
// Description: 获取API接口树
// @Tags 接口管理
// @Accept application/json
// @Produce application/json
// @Success 200 {object} response.ResponseBody
// @Router /api/tree [get]
// @Security ApiKeyAuth
func (m *ApiController) GetTree(c *gin.Context) { func (m *ApiController) GetTree(c *gin.Context) {
req := new(request.ApiGetTreeReq) req := new(request.ApiGetTreeReq)
Run(c, req, func() (interface{}, interface{}) { Run(c, req, func() (interface{}, interface{}) {
@ -26,6 +42,15 @@ func (m *ApiController) GetTree(c *gin.Context) {
} }
// Add 新建记录 // Add 新建记录
// @Summary 新建API接口
// @Tags 接口管理
// Description: 新建API接口
// @Accept application/json
// @Produce application/json
// @Param data body request.ApiAddReq true "新建API"
// @Success 200 {object} response.ResponseBody
// @Router /api/add [post]
// @Security ApiKeyAuth
func (m *ApiController) Add(c *gin.Context) { func (m *ApiController) Add(c *gin.Context) {
req := new(request.ApiAddReq) req := new(request.ApiAddReq)
Run(c, req, func() (interface{}, interface{}) { Run(c, req, func() (interface{}, interface{}) {
@ -34,6 +59,15 @@ func (m *ApiController) Add(c *gin.Context) {
} }
// Update 更新记录 // Update 更新记录
// @Summary 更新API接口
// @Tags 接口管理
// Description: 更新API接口
// @Accept application/json
// @Produce application/json
// @Param data body request.ApiUpdateReq true "更新API"
// @Success 200 {object} response.ResponseBody
// @Router /api/update [post]
// @Security ApiKeyAuth
func (m *ApiController) Update(c *gin.Context) { func (m *ApiController) Update(c *gin.Context) {
req := new(request.ApiUpdateReq) req := new(request.ApiUpdateReq)
Run(c, req, func() (interface{}, interface{}) { Run(c, req, func() (interface{}, interface{}) {
@ -42,6 +76,15 @@ func (m *ApiController) Update(c *gin.Context) {
} }
// Delete 删除记录 // Delete 删除记录
// @Summary 删除API接口
// @Tags 接口管理
// Description: 删除API接口
// @Accept application/json
// @Produce application/json
// @Param data body request.ApiDeleteReq true "删除API"
// @Success 200 {object} response.ResponseBody
// @Router /api/delete [post]
// @Security ApiKeyAuth
func (m *ApiController) Delete(c *gin.Context) { func (m *ApiController) Delete(c *gin.Context) {
req := new(request.ApiDeleteReq) req := new(request.ApiDeleteReq)
Run(c, req, func() (interface{}, interface{}) { Run(c, req, func() (interface{}, interface{}) {

View File

@ -10,6 +10,14 @@ import (
type BaseController struct{} type BaseController struct{}
// SendCode 给用户邮箱发送验证码 // SendCode 给用户邮箱发送验证码
// @Summary 发送验证码
// @Description 向指定邮箱发送验证码
// @Tags 基础管理
// @Accept application/json
// @Produce application/json
// @Param data body request.BaseSendCodeReq true "发送验证码请求数据"
// @Success 200 {object} response.ResponseBody
// @Router /base/sendcode [post]
func (m *BaseController) SendCode(c *gin.Context) { func (m *BaseController) SendCode(c *gin.Context) {
req := new(request.BaseSendCodeReq) req := new(request.BaseSendCodeReq)
Run(c, req, func() (interface{}, interface{}) { Run(c, req, func() (interface{}, interface{}) {
@ -18,6 +26,14 @@ func (m *BaseController) SendCode(c *gin.Context) {
} }
// ChangePwd 用户通过邮箱修改密码 // ChangePwd 用户通过邮箱修改密码
// @Summary 用户通过邮箱修改密码
// @Description 使用邮箱验证码修改密码
// @Tags 基础管理
// @Accept application/json
// @Produce application/json
// @Param data body request.BaseChangePwdReq true "发送验证码请求数据"
// @Success 200 {object} response.ResponseBody
// @Router /base/changePwd [post]
func (m *BaseController) ChangePwd(c *gin.Context) { func (m *BaseController) ChangePwd(c *gin.Context) {
req := new(request.BaseChangePwdReq) req := new(request.BaseChangePwdReq)
Run(c, req, func() (interface{}, interface{}) { Run(c, req, func() (interface{}, interface{}) {
@ -26,6 +42,13 @@ func (m *BaseController) ChangePwd(c *gin.Context) {
} }
// Dashboard 系统首页展示数据 // Dashboard 系统首页展示数据
// @Summary 获取仪表盘数据
// @Description 获取系统仪表盘概览数据
// @Tags 基础管理
// @Accept application/json
// @Produce application/json
// @Success 200 {object} response.ResponseBody
// @Router /base/dashboard [get]
func (m *BaseController) Dashboard(c *gin.Context) { func (m *BaseController) Dashboard(c *gin.Context) {
req := new(request.BaseDashboardReq) req := new(request.BaseDashboardReq)
Run(c, req, func() (interface{}, interface{}) { Run(c, req, func() (interface{}, interface{}) {
@ -33,7 +56,15 @@ func (m *BaseController) Dashboard(c *gin.Context) {
}) })
} }
// EncryptPasswd 生成加密密码 // EncryptPasswd 密码加密
// @Summary 密码加密
// @Description 将明文密码加密
// @Tags 基础管理
// @Accept application/json
// @Produce application/json
// @Param passwd query string true "需要加密的明文密码"
// @Success 200 {object} response.ResponseBody
// @Router /base/encryptpwd [get]
func (m *BaseController) EncryptPasswd(c *gin.Context) { func (m *BaseController) EncryptPasswd(c *gin.Context) {
req := new(request.EncryptPasswdReq) req := new(request.EncryptPasswdReq)
Run(c, req, func() (interface{}, interface{}) { Run(c, req, func() (interface{}, interface{}) {
@ -42,6 +73,14 @@ func (m *BaseController) EncryptPasswd(c *gin.Context) {
} }
// DecryptPasswd 密码解密为明文 // DecryptPasswd 密码解密为明文
// @Summary 密码解密
// @Description 将加密后的密码解密为明文
// @Tags 基础管理
// @Accept application/json
// @Produce application/json
// @Param passwd query string true "需要解密的加密密码"
// @Success 200 {object} response.ResponseBody
// @Router /base/decryptpwd [get]
func (m *BaseController) DecryptPasswd(c *gin.Context) { func (m *BaseController) DecryptPasswd(c *gin.Context) {
req := new(request.DecryptPasswdReq) req := new(request.DecryptPasswdReq)
Run(c, req, func() (interface{}, interface{}) { Run(c, req, func() (interface{}, interface{}) {

View File

@ -10,6 +10,14 @@ import (
type FieldRelationController struct{} type FieldRelationController struct{}
// List 记录列表 // List 记录列表
// @Summary 获字段关系管理列表
// Description: 获字段关系管理列表
// @Tags 字段关系管理
// @Accept application/json
// @Produce application/json
// @Success 200 {object} response.ResponseBody
// @Router /fieldrelation/list [get]
// @Security ApiKeyAuth
func (m *FieldRelationController) List(c *gin.Context) { func (m *FieldRelationController) List(c *gin.Context) {
req := new(request.FieldRelationListReq) req := new(request.FieldRelationListReq)
Run(c, req, func() (interface{}, interface{}) { Run(c, req, func() (interface{}, interface{}) {
@ -18,6 +26,15 @@ func (m *FieldRelationController) List(c *gin.Context) {
} }
// Add 新建记录 // Add 新建记录
// @Summary 新建字段关系管理记录
// Description: 新建字段关系管理记录
// @Tags 字段关系管理
// @Accept application/json
// @Produce application/json
// @Param data body request.FieldRelationAddReq true "新建字段关系管理记录"
// @Success 200 {object} response.ResponseBody
// @Router /fieldrelation/add [post]
// @Security ApiKeyAuth
func (m *FieldRelationController) Add(c *gin.Context) { func (m *FieldRelationController) Add(c *gin.Context) {
req := new(request.FieldRelationAddReq) req := new(request.FieldRelationAddReq)
Run(c, req, func() (interface{}, interface{}) { Run(c, req, func() (interface{}, interface{}) {
@ -26,6 +43,15 @@ func (m *FieldRelationController) Add(c *gin.Context) {
} }
// Update 更新记录 // Update 更新记录
// @Summary 更新字段关系管理记录
// Description: 更新字段关系管理记录
// @Tags 字段关系管理
// @Accept application/json
// @Produce application/json
// @Param data body request.FieldRelationUpdateReq true "更新字段关系管理记录"
// @Success 200 {object} response.ResponseBody
// @Router /fieldrelation/update [post]
// @Security ApiKeyAuth
func (m *FieldRelationController) Update(c *gin.Context) { func (m *FieldRelationController) Update(c *gin.Context) {
req := new(request.FieldRelationUpdateReq) req := new(request.FieldRelationUpdateReq)
Run(c, req, func() (interface{}, interface{}) { Run(c, req, func() (interface{}, interface{}) {
@ -34,6 +60,15 @@ func (m *FieldRelationController) Update(c *gin.Context) {
} }
// Delete 删除记录 // Delete 删除记录
// @Summary 删除字段关系管理记录
// Description: 删除字段关系管理记录
// @Tags 字段关系管理
// @Accept application/json
// @Produce application/json
// @Param data body request.FieldRelationDeleteReq true "删除字段关系管理记录"
// @Success 200 {object} response.ResponseBody
// @Router /fieldrelation/delete [post]
// @Security ApiKeyAuth
func (m *FieldRelationController) Delete(c *gin.Context) { func (m *FieldRelationController) Delete(c *gin.Context) {
req := new(request.FieldRelationDeleteReq) req := new(request.FieldRelationDeleteReq)
Run(c, req, func() (interface{}, interface{}) { Run(c, req, func() (interface{}, interface{}) {

View File

@ -10,6 +10,14 @@ import (
type GroupController struct{} type GroupController struct{}
// List 记录列表 // List 记录列表
// @Summary 获取分组记录列表
// @Description 获取分组记录列表
// @Tags 分组管理
// @Accept application/json
// @Produce application/json
// @Success 200 {object} response.ResponseBody
// @Router /group/list [get]
// @Security ApiKeyAuth
func (m *GroupController) List(c *gin.Context) { func (m *GroupController) List(c *gin.Context) {
req := new(request.GroupListReq) req := new(request.GroupListReq)
Run(c, req, func() (interface{}, interface{}) { Run(c, req, func() (interface{}, interface{}) {
@ -18,6 +26,16 @@ func (m *GroupController) List(c *gin.Context) {
} }
// UserInGroup 在分组内的用户 // UserInGroup 在分组内的用户
// @Summary 获取分组内用户
// @Description 获取分组内用户
// @Tags 分组管理
// @Accept application/json
// @Produce application/json
// @Param groupId query int true "分组ID"
// @Param nickname query string false "昵称"
// @Success 200 {object} response.ResponseBody
// @Router /group/useringroup [get]
// @Security ApiKeyAuth
func (m *GroupController) UserInGroup(c *gin.Context) { func (m *GroupController) UserInGroup(c *gin.Context) {
req := new(request.UserInGroupReq) req := new(request.UserInGroupReq)
Run(c, req, func() (interface{}, interface{}) { Run(c, req, func() (interface{}, interface{}) {
@ -26,6 +44,16 @@ func (m *GroupController) UserInGroup(c *gin.Context) {
} }
// UserNoInGroup 不在分组的用户 // UserNoInGroup 不在分组的用户
// @Summary 不在分组的用户
// @Description 不在分组的用户
// @Tags 分组管理
// @Accept application/json
// @Produce application/json
// @Param groupId query int true "分组ID"
// @Param nickname query string false "昵称"
// @Success 200 {object} response.ResponseBody
// @Router /group/usernoingroup [get]
// @Security ApiKeyAuth
func (m *GroupController) UserNoInGroup(c *gin.Context) { func (m *GroupController) UserNoInGroup(c *gin.Context) {
req := new(request.UserNoInGroupReq) req := new(request.UserNoInGroupReq)
Run(c, req, func() (interface{}, interface{}) { Run(c, req, func() (interface{}, interface{}) {
@ -34,6 +62,14 @@ func (m *GroupController) UserNoInGroup(c *gin.Context) {
} }
// GetTree 接口树 // GetTree 接口树
// @Summary 获取分组接口树
// @Description 获取分组接口树
// @Tags 分组管理
// @Accept application/json
// @Produce application/json
// @Success 200 {object} response.ResponseBody
// @Router /group/tree [get]
// @Security ApiKeyAuth
func (m *GroupController) GetTree(c *gin.Context) { func (m *GroupController) GetTree(c *gin.Context) {
req := new(request.GroupListReq) req := new(request.GroupListReq)
Run(c, req, func() (interface{}, interface{}) { Run(c, req, func() (interface{}, interface{}) {
@ -41,7 +77,16 @@ func (m *GroupController) GetTree(c *gin.Context) {
}) })
} }
// Add 新建记录 // Add 新建分组记录
// @Summary 添加分组记录
// @Description 添加分组记录
// @Tags 分组管理
// @Accept application/json
// @Produce application/json
// @Param data body request.GroupAddReq true "添加用户记录的结构体"
// @Success 200 {object} response.ResponseBody
// @Router /group/add [post]
// @Security ApiKeyAuth
func (m *GroupController) Add(c *gin.Context) { func (m *GroupController) Add(c *gin.Context) {
req := new(request.GroupAddReq) req := new(request.GroupAddReq)
Run(c, req, func() (interface{}, interface{}) { Run(c, req, func() (interface{}, interface{}) {
@ -50,6 +95,15 @@ func (m *GroupController) Add(c *gin.Context) {
} }
// Update 更新记录 // Update 更新记录
// @Summary 更新分组记录
// @Description 更新分组记录
// @Tags 分组管理
// @Accept application/json
// @Produce application/json
// @Param data body request.GroupUpdateReq true "更新用户记录的结构体"
// @Success 200 {object} response.ResponseBody
// @Router /group/update [post]
// @Security ApiKeyAuth
func (m *GroupController) Update(c *gin.Context) { func (m *GroupController) Update(c *gin.Context) {
req := new(request.GroupUpdateReq) req := new(request.GroupUpdateReq)
Run(c, req, func() (interface{}, interface{}) { Run(c, req, func() (interface{}, interface{}) {
@ -58,6 +112,15 @@ func (m *GroupController) Update(c *gin.Context) {
} }
// Delete 删除记录 // Delete 删除记录
// @Summary 删除分组记录
// @Description 删除分组记录
// @Tags 分组管理
// @Accept application/json
// @Produce application/json
// @Param data body request.GroupDeleteReq true "删除用户记录的结构体"
// @Success 200 {object} response.ResponseBody
// @Router /group/delete [post]
// @Security ApiKeyAuth
func (m *GroupController) Delete(c *gin.Context) { func (m *GroupController) Delete(c *gin.Context) {
req := new(request.GroupDeleteReq) req := new(request.GroupDeleteReq)
Run(c, req, func() (interface{}, interface{}) { Run(c, req, func() (interface{}, interface{}) {
@ -66,6 +129,15 @@ func (m *GroupController) Delete(c *gin.Context) {
} }
// AddUser 添加用户 // AddUser 添加用户
// @Summary 添加用户
// @Description 添加用户
// @Tags 分组管理
// @Accept application/json
// @Produce application/json
// @Param data body request.GroupAddUserReq true "添加用户记录的结构体"
// @Success 200 {object} response.ResponseBody
// @Router /group/adduser [post]
// @Security ApiKeyAuth
func (m *GroupController) AddUser(c *gin.Context) { func (m *GroupController) AddUser(c *gin.Context) {
req := new(request.GroupAddUserReq) req := new(request.GroupAddUserReq)
Run(c, req, func() (interface{}, interface{}) { Run(c, req, func() (interface{}, interface{}) {
@ -74,6 +146,15 @@ func (m *GroupController) AddUser(c *gin.Context) {
} }
// RemoveUser 移除用户 // RemoveUser 移除用户
// @Summary 移除用户
// @Description 移除用户
// @Tags 分组管理
// @Accept application/json
// @Produce application/json
// @Param data body request.GroupRemoveUserReq true "移除用户记录的结构体"
// @Success 200 {object} response.ResponseBody
// @Router /group/removeuser [post]
// @Security ApiKeyAuth
func (m *GroupController) RemoveUser(c *gin.Context) { func (m *GroupController) RemoveUser(c *gin.Context) {
req := new(request.GroupRemoveUserReq) req := new(request.GroupRemoveUserReq)
Run(c, req, func() (interface{}, interface{}) { Run(c, req, func() (interface{}, interface{}) {
@ -81,7 +162,15 @@ func (m *GroupController) RemoveUser(c *gin.Context) {
}) })
} }
//同步钉钉部门信息 // SyncDingTalkDepts 同步钉钉部门信息
// @Summary 同步钉钉部门信息
// @Description 同步钉钉部门信息
// @Tags 分组管理
// @Accept application/json
// @Produce application/json
// @Success 200 {object} response.ResponseBody
// @Router /group/syncDingTalkDepts [post]
// @Security ApiKeyAuth
func (m *GroupController) SyncDingTalkDepts(c *gin.Context) { func (m *GroupController) SyncDingTalkDepts(c *gin.Context) {
req := new(request.SyncDingTalkDeptsReq) req := new(request.SyncDingTalkDeptsReq)
Run(c, req, func() (interface{}, interface{}) { Run(c, req, func() (interface{}, interface{}) {
@ -89,7 +178,15 @@ func (m *GroupController) SyncDingTalkDepts(c *gin.Context) {
}) })
} }
//同步企业微信部门信息 // SyncWeComDepts 同步企业微信部门信息
// @Summary 同步企业微信部门信息
// @Description 同步企业微信部门信息
// @Tags 分组管理
// @Accept application/json
// @Produce application/json
// @Success 200 {object} response.ResponseBody
// @Router /group/syncWeComDepts [post]
// @Security ApiKeyAuth
func (m *GroupController) SyncWeComDepts(c *gin.Context) { func (m *GroupController) SyncWeComDepts(c *gin.Context) {
req := new(request.SyncWeComDeptsReq) req := new(request.SyncWeComDeptsReq)
Run(c, req, func() (interface{}, interface{}) { Run(c, req, func() (interface{}, interface{}) {
@ -97,7 +194,15 @@ func (m *GroupController) SyncWeComDepts(c *gin.Context) {
}) })
} }
//同步飞书部门信息 // SyncFeiShuDepts 同步飞书部门信息
// @Summary 同步飞书部门信息
// @Description 同步飞书部门信息
// @Tags 分组管理
// @Accept application/json
// @Produce application/json
// @Success 200 {object} response.ResponseBody
// @Router /group/syncFeiShuDepts [post]
// @Security ApiKeyAuth
func (m *GroupController) SyncFeiShuDepts(c *gin.Context) { func (m *GroupController) SyncFeiShuDepts(c *gin.Context) {
req := new(request.SyncFeiShuDeptsReq) req := new(request.SyncFeiShuDeptsReq)
Run(c, req, func() (interface{}, interface{}) { Run(c, req, func() (interface{}, interface{}) {
@ -105,7 +210,15 @@ func (m *GroupController) SyncFeiShuDepts(c *gin.Context) {
}) })
} }
//同步原ldap部门信息 // SyncOpenLdapDepts 同步原ldap部门信息
// @Summary 同步原ldap部门信息
// @Description 同步原ldap部门信息
// @Tags 分组管理
// @Accept application/json
// @Produce application/json
// @Success 200 {object} response.ResponseBody
// @Router /group/syncOpenLdapDepts [post]
// @Security ApiKeyAuth
func (m *GroupController) SyncOpenLdapDepts(c *gin.Context) { func (m *GroupController) SyncOpenLdapDepts(c *gin.Context) {
req := new(request.SyncOpenLdapDeptsReq) req := new(request.SyncOpenLdapDeptsReq)
Run(c, req, func() (interface{}, interface{}) { Run(c, req, func() (interface{}, interface{}) {
@ -113,7 +226,15 @@ func (m *GroupController) SyncOpenLdapDepts(c *gin.Context) {
}) })
} }
//同步Sql中的分组信息到ldap // SyncSqlGroups 同步Sql中的分组信息到ldap
// @Summary 同步Sql中的分组信息到ldap
// @Description 同步Sql中的分组信息到ldap
// @Tags 分组管理
// @Accept application/json
// @Produce application/json
// @Success 200 {object} response.ResponseBody
// @Router /group/syncSqlGroups [post]
// @Security ApiKeyAuth
func (m *GroupController) SyncSqlGroups(c *gin.Context) { func (m *GroupController) SyncSqlGroups(c *gin.Context) {
req := new(request.SyncSqlGrooupsReq) req := new(request.SyncSqlGrooupsReq)
Run(c, req, func() (interface{}, interface{}) { Run(c, req, func() (interface{}, interface{}) {

View File

@ -10,6 +10,13 @@ import (
type MenuController struct{} type MenuController struct{}
// GetTree 菜单树 // GetTree 菜单树
// @Summary 获取菜单树
// @Tags 菜单管理
// @Accept application/json
// @Produce application/json
// @Success 200 {object} response.ResponseBody
// @Router /menu/tree [get]
// @Security ApiKeyAuth
func (m *MenuController) GetTree(c *gin.Context) { func (m *MenuController) GetTree(c *gin.Context) {
req := new(request.MenuGetTreeReq) req := new(request.MenuGetTreeReq)
Run(c, req, func() (interface{}, interface{}) { Run(c, req, func() (interface{}, interface{}) {
@ -17,7 +24,15 @@ func (m *MenuController) GetTree(c *gin.Context) {
}) })
} }
// GetUserMenuTreeByUserId 获取用户菜单树 // GetAccessTree GetUserMenuTreeByUserId 获取用户菜单树
// @Summary 获取用户菜单树
// @Tags 菜单管理
// @Accept application/json
// @Produce application/json
// @Param id query int true "分组ID"
// @Success 200 {object} response.ResponseBody
// @Router /menu/access/tree [get]
// @Security ApiKeyAuth
func (m *MenuController) GetAccessTree(c *gin.Context) { func (m *MenuController) GetAccessTree(c *gin.Context) {
req := new(request.MenuGetAccessTreeReq) req := new(request.MenuGetAccessTreeReq)
Run(c, req, func() (interface{}, interface{}) { Run(c, req, func() (interface{}, interface{}) {
@ -26,6 +41,14 @@ func (m *MenuController) GetAccessTree(c *gin.Context) {
} }
// Add 新建 // Add 新建
// @Summary 新建菜单
// @Tags 菜单管理
// @Accept application/json
// @Produce application/json
// @Param data body request.MenuAddReq true "新建菜单"
// @Success 200 {object} response.ResponseBody
// @Router /menu/add [post]
// @Security ApiKeyAuth
func (m *MenuController) Add(c *gin.Context) { func (m *MenuController) Add(c *gin.Context) {
req := new(request.MenuAddReq) req := new(request.MenuAddReq)
Run(c, req, func() (interface{}, interface{}) { Run(c, req, func() (interface{}, interface{}) {
@ -34,6 +57,14 @@ func (m *MenuController) Add(c *gin.Context) {
} }
// Update 更新记录 // Update 更新记录
// @Summary 更新菜单
// @Tags 菜单管理
// @Accept application/json
// @Produce application/json
// @Param data body request.MenuUpdateReq true "更新菜单"
// @Success 200 {object} response.ResponseBody
// @Router /menu/update [post]
// @Security ApiKeyAuth
func (m *MenuController) Update(c *gin.Context) { func (m *MenuController) Update(c *gin.Context) {
req := new(request.MenuUpdateReq) req := new(request.MenuUpdateReq)
Run(c, req, func() (interface{}, interface{}) { Run(c, req, func() (interface{}, interface{}) {
@ -42,6 +73,14 @@ func (m *MenuController) Update(c *gin.Context) {
} }
// Delete 删除记录 // Delete 删除记录
// @Summary 删除菜单
// @Tags 菜单管理
// @Accept application/json
// @Produce application/json
// @Param data body request.MenuDeleteReq true "删除菜单"
// @Success 200 {object} response.ResponseBody
// @Router /menu/delete [post]
// @Security ApiKeyAuth
func (m *MenuController) Delete(c *gin.Context) { func (m *MenuController) Delete(c *gin.Context) {
req := new(request.MenuDeleteReq) req := new(request.MenuDeleteReq)
Run(c, req, func() (interface{}, interface{}) { Run(c, req, func() (interface{}, interface{}) {

View File

@ -10,6 +10,21 @@ import (
type OperationLogController struct{} type OperationLogController struct{}
// List 记录列表 // List 记录列表
// @Summary 获取操作日志记录列表
// Description: 获取操作日志记录列表
// @Tags 操作日志管理
// @Accept application/json
// @Produce application/json
// @Param username query string false "用户名"
// @Param ip query string false "IP地址"
// @Param path query string false "路径"
// @Param method query string false "方法"
// @Param status query int false "状态码"
// @Param pageNum query int false "页码"
// @Param pageSize query int false "每页数量"
// @Success 200 {object} response.ResponseBody
// @Router /log/operation/list [get]
// @Security ApiKeyAuth
func (m *OperationLogController) List(c *gin.Context) { func (m *OperationLogController) List(c *gin.Context) {
req := new(request.OperationLogListReq) req := new(request.OperationLogListReq)
Run(c, req, func() (interface{}, interface{}) { Run(c, req, func() (interface{}, interface{}) {
@ -18,6 +33,15 @@ func (m *OperationLogController) List(c *gin.Context) {
} }
// Delete 删除记录 // Delete 删除记录
// @Summary 删除操作日志记录
// Description: 删除操作日志记录
// @Tags 操作日志管理
// @Accept application/json
// @Produce application/json
// @Param data body request.OperationLogDeleteReq true "删除日志的ID"
// @Success 200 {object} response.ResponseBody
// @Router /log/operation/delete [post]
// @Security ApiKeyAuth
func (m *OperationLogController) Delete(c *gin.Context) { func (m *OperationLogController) Delete(c *gin.Context) {
req := new(request.OperationLogDeleteReq) req := new(request.OperationLogDeleteReq)
Run(c, req, func() (interface{}, interface{}) { Run(c, req, func() (interface{}, interface{}) {
@ -26,6 +50,14 @@ func (m *OperationLogController) Delete(c *gin.Context) {
} }
// Clean 清空记录 // Clean 清空记录
// @Summary 清空操作日志记录
// Description: 清空操作日志记录
// @Tags 操作日志管理
// @Accept application/json
// @Produce application/json
// @Success 200 {object} response.ResponseBody
// @Router /log/operation/clean [delete]
// @Security ApiKeyAuth
func (m *OperationLogController) Clean(c *gin.Context) { func (m *OperationLogController) Clean(c *gin.Context) {
req := new(request.OperationLogListReq) req := new(request.OperationLogListReq)
Run(c, req, func() (interface{}, interface{}) { Run(c, req, func() (interface{}, interface{}) {

View File

@ -9,7 +9,15 @@ import (
type RoleController struct{} type RoleController struct{}
// List 记录列表 // List 角色记录列表
// @Summary 获取角色记录列表
// @Description 获取角色记录列表
// @Tags 角色管理
// @Accept application/json
// @Produce application/json
// @Success 200 {object} response.ResponseBody
// @Router /role/list [get]
// @Security ApiKeyAuth
func (m *RoleController) List(c *gin.Context) { func (m *RoleController) List(c *gin.Context) {
req := new(request.RoleListReq) req := new(request.RoleListReq)
Run(c, req, func() (interface{}, interface{}) { Run(c, req, func() (interface{}, interface{}) {
@ -18,6 +26,15 @@ func (m *RoleController) List(c *gin.Context) {
} }
// Add 新建 // Add 新建
// @Summary 新建角色记录
// @Description 新建角色记录
// @Tags 角色管理
// @Accept application/json
// @Produce application/json
// @Param data body request.RoleAddReq true "添加角色记录的结构体"
// @Success 200 {object} response.ResponseBody
// @Router /role/add [post]
// @Security ApiKeyAuth
func (m *RoleController) Add(c *gin.Context) { func (m *RoleController) Add(c *gin.Context) {
req := new(request.RoleAddReq) req := new(request.RoleAddReq)
Run(c, req, func() (interface{}, interface{}) { Run(c, req, func() (interface{}, interface{}) {
@ -26,6 +43,15 @@ func (m *RoleController) Add(c *gin.Context) {
} }
// Update 更新记录 // Update 更新记录
// @Summary 更新角色记录
// @Description 更新角色记录
// @Tags 角色管理
// @Accept application/json
// @Produce application/json
// @Param data body request.RoleUpdateReq true "更新角色记录的结构体"
// @Success 200 {object} response.ResponseBody
// @Router /role/update [post]
// @Security ApiKeyAuth
func (m *RoleController) Update(c *gin.Context) { func (m *RoleController) Update(c *gin.Context) {
req := new(request.RoleUpdateReq) req := new(request.RoleUpdateReq)
Run(c, req, func() (interface{}, interface{}) { Run(c, req, func() (interface{}, interface{}) {
@ -34,6 +60,15 @@ func (m *RoleController) Update(c *gin.Context) {
} }
// Delete 删除记录 // Delete 删除记录
// @Summary 删除角色记录
// @Description 删除角色记录
// @Tags 角色管理
// @Accept application/json
// @Produce application/json
// @Param data body request.RoleDeleteReq true "删除角色记录的结构体"
// @Success 200 {object} response.ResponseBody
// @Router /role/delete [post]
// @Security ApiKeyAuth
func (m *RoleController) Delete(c *gin.Context) { func (m *RoleController) Delete(c *gin.Context) {
req := new(request.RoleDeleteReq) req := new(request.RoleDeleteReq)
Run(c, req, func() (interface{}, interface{}) { Run(c, req, func() (interface{}, interface{}) {
@ -42,6 +77,15 @@ func (m *RoleController) Delete(c *gin.Context) {
} }
// GetMenuList 获取菜单列表 // GetMenuList 获取菜单列表
// @Summary 获取菜单列表
// @Description 获取菜单列表
// @Tags 角色管理
// @Accept application/json
// @Produce application/json
// @Param roleId query int true "角色ID"
// @Success 200 {object} response.ResponseBody
// @Router /role/getmenulist [get]
// @Security ApiKeyAuth
func (m *RoleController) GetMenuList(c *gin.Context) { func (m *RoleController) GetMenuList(c *gin.Context) {
req := new(request.RoleGetMenuListReq) req := new(request.RoleGetMenuListReq)
Run(c, req, func() (interface{}, interface{}) { Run(c, req, func() (interface{}, interface{}) {
@ -50,6 +94,15 @@ func (m *RoleController) GetMenuList(c *gin.Context) {
} }
// GetApiList 获取接口列表 // GetApiList 获取接口列表
// @Summary 获取接口列表
// @Description 获取接口列表
// @Tags 角色管理
// @Accept application/json
// @Produce application/json
// @Param roleId query int true "角色ID"
// @Success 200 {object} response.ResponseBody
// @Router /role/getapilist [get]
// @Security ApiKeyAuth
func (m *RoleController) GetApiList(c *gin.Context) { func (m *RoleController) GetApiList(c *gin.Context) {
req := new(request.RoleGetApiListReq) req := new(request.RoleGetApiListReq)
Run(c, req, func() (interface{}, interface{}) { Run(c, req, func() (interface{}, interface{}) {
@ -58,6 +111,15 @@ func (m *RoleController) GetApiList(c *gin.Context) {
} }
// UpdateMenus 更新菜单 // UpdateMenus 更新菜单
// @Summary 更新菜单
// @Description 更新菜单
// @Tags 角色管理
// @Accept application/json
// @Produce application/json
// @Param data body request.RoleUpdateMenusReq true "更新菜单的结构体"
// @Success 200 {object} response.ResponseBody
// @Router /role/updatemenus [post]
// @Security ApiKeyAuth
func (m *RoleController) UpdateMenus(c *gin.Context) { func (m *RoleController) UpdateMenus(c *gin.Context) {
req := new(request.RoleUpdateMenusReq) req := new(request.RoleUpdateMenusReq)
Run(c, req, func() (interface{}, interface{}) { Run(c, req, func() (interface{}, interface{}) {
@ -66,6 +128,15 @@ func (m *RoleController) UpdateMenus(c *gin.Context) {
} }
// UpdateApis 更新接口 // UpdateApis 更新接口
// @Summary 更新接口
// @Description 更新接口
// @Tags 角色管理
// @Accept application/json
// @Produce application/json
// @Param data body request.RoleUpdateApisReq true "更新接口的结构体"
// @Success 200 {object} response.ResponseBody
// @Router /role/updateapis [post]
// @Security ApiKeyAuth
func (m *RoleController) UpdateApis(c *gin.Context) { func (m *RoleController) UpdateApis(c *gin.Context) {
req := new(request.RoleUpdateApisReq) req := new(request.RoleUpdateApisReq)
Run(c, req, func() (interface{}, interface{}) { Run(c, req, func() (interface{}, interface{}) {

View File

@ -9,7 +9,16 @@ import (
type UserController struct{} type UserController struct{}
// Add 添加记录 // Add 添加用户记录
// @Summary 添加用户记录
// @Description 添加用户记录
// @Tags 用户管理
// @Accept application/json
// @Produce application/json
// @Param data body request.UserAddReq true "添加用户记录的结构体"
// @Success 200 {object} response.ResponseBody
// @Router /user/add [post]
// @Security ApiKeyAuth
func (m *UserController) Add(c *gin.Context) { func (m *UserController) Add(c *gin.Context) {
req := new(request.UserAddReq) req := new(request.UserAddReq)
Run(c, req, func() (interface{}, interface{}) { Run(c, req, func() (interface{}, interface{}) {
@ -17,7 +26,16 @@ func (m *UserController) Add(c *gin.Context) {
}) })
} }
// Update 更新记录 // Update 更新用户记录
// @Summary 更新用户记录
// @Description 添加用户记录
// @Tags 用户管理
// @Accept application/json
// @Produce application/json
// @Param data body request.UserUpdateReq true "更改用户记录的结构体"
// @Success 200 {object} response.ResponseBody
// @Router /user/update [post]
// @Security ApiKeyAuth
func (m *UserController) Update(c *gin.Context) { func (m *UserController) Update(c *gin.Context) {
req := new(request.UserUpdateReq) req := new(request.UserUpdateReq)
Run(c, req, func() (interface{}, interface{}) { Run(c, req, func() (interface{}, interface{}) {
@ -26,6 +44,14 @@ func (m *UserController) Update(c *gin.Context) {
} }
// List 记录列表 // List 记录列表
// @Summary 获取所有用户记录列表
// @Description 获取所有用户记录列表
// @Tags 用户管理
// @Accept application/json
// @Produce application/json
// @Success 200 {object} response.ResponseBody
// @Router /user/list [get]
// @Security ApiKeyAuth
func (m *UserController) List(c *gin.Context) { func (m *UserController) List(c *gin.Context) {
req := new(request.UserListReq) req := new(request.UserListReq)
Run(c, req, func() (interface{}, interface{}) { Run(c, req, func() (interface{}, interface{}) {
@ -33,7 +59,16 @@ func (m *UserController) List(c *gin.Context) {
}) })
} }
// Delete 删除记录 // Delete 删除用户记录
// @Summary 删除用户记录
// @Description 删除用户记录
// @Tags 用户管理
// @Accept application/json
// @Produce application/json
// @Param data body request.UserDeleteReq true "删除用户记录的结构体ID"
// @Success 200 {object} response.ResponseBody
// @Router /user/delete [post]
// @Security ApiKeyAuth
func (m UserController) Delete(c *gin.Context) { func (m UserController) Delete(c *gin.Context) {
req := new(request.UserDeleteReq) req := new(request.UserDeleteReq)
Run(c, req, func() (interface{}, interface{}) { Run(c, req, func() (interface{}, interface{}) {
@ -42,6 +77,15 @@ func (m UserController) Delete(c *gin.Context) {
} }
// ChangePwd 更新密码 // ChangePwd 更新密码
// @Summary 更新密码
// @Description 更新密码
// @Tags 用户管理
// @Accept application/json
// @Produce application/json
// @Param data body request.UserChangePwdReq true "更改用户密码的结构体"
// @Success 200 {object} response.ResponseBody
// @Router /user/changePwd [post]
// @Security ApiKeyAuth
func (m UserController) ChangePwd(c *gin.Context) { func (m UserController) ChangePwd(c *gin.Context) {
req := new(request.UserChangePwdReq) req := new(request.UserChangePwdReq)
Run(c, req, func() (interface{}, interface{}) { Run(c, req, func() (interface{}, interface{}) {
@ -50,6 +94,15 @@ func (m UserController) ChangePwd(c *gin.Context) {
} }
// ChangeUserStatus 更改用户状态 // ChangeUserStatus 更改用户状态
// @Summary 更改用户状态
// @Description 更改用户状态
// @Tags 用户管理
// @Accept application/json
// @Produce application/json
// @Param data body request.UserChangeUserStatusReq true "更改用户状态的结构体"
// @Success 200 {object} response.ResponseBody
// @Router /user/changeUserStatus [post]
// @Security ApiKeyAuth
func (m UserController) ChangeUserStatus(c *gin.Context) { func (m UserController) ChangeUserStatus(c *gin.Context) {
req := new(request.UserChangeUserStatusReq) req := new(request.UserChangeUserStatusReq)
Run(c, req, func() (interface{}, interface{}) { Run(c, req, func() (interface{}, interface{}) {
@ -58,6 +111,14 @@ func (m UserController) ChangeUserStatus(c *gin.Context) {
} }
// GetUserInfo 获取当前登录用户信息 // GetUserInfo 获取当前登录用户信息
// @Summary 获取当前登录用户信息
// @Description 获取当前登录用户信息
// @Tags 用户管理
// @Accept application/json
// @Produce application/json
// @Success 200 {object} response.ResponseBody
// @Router /user/info [get]
// @Security ApiKeyAuth
func (uc UserController) GetUserInfo(c *gin.Context) { func (uc UserController) GetUserInfo(c *gin.Context) {
req := new(request.UserGetUserInfoReq) req := new(request.UserGetUserInfoReq)
Run(c, req, func() (interface{}, interface{}) { Run(c, req, func() (interface{}, interface{}) {
@ -65,7 +126,16 @@ func (uc UserController) GetUserInfo(c *gin.Context) {
}) })
} }
// 同步钉钉用户信息 // SyncDingTalkUsers 同步钉钉用户信息
// @Summary 同步钉钉用户信息
// @Description 同步钉钉用户信息
// @Tags 用户管理
// @Accept application/json
// @Produce application/json
// @Param data body request.SyncDingUserReq true "同步钉钉用户信息"
// @Success 200 {object} response.ResponseBody
// @Router /user/syncDingTalkUsers [post]
// @Security ApiKeyAuth
func (uc UserController) SyncDingTalkUsers(c *gin.Context) { func (uc UserController) SyncDingTalkUsers(c *gin.Context) {
req := new(request.SyncDingUserReq) req := new(request.SyncDingUserReq)
Run(c, req, func() (interface{}, interface{}) { Run(c, req, func() (interface{}, interface{}) {
@ -73,7 +143,16 @@ func (uc UserController) SyncDingTalkUsers(c *gin.Context) {
}) })
} }
// 同步企业微信用户信息 // SyncWeComUsers 同步企业微信用户信息
// @Summary 同步企业微信用户信息
// @Description 同步企业微信用户信息
// @Tags 用户管理
// @Accept application/json
// @Produce application/json
// @Param data body request.SyncWeComUserReq true "同步企业微信用户信息"
// @Success 200 {object} response.ResponseBody
// @Router /user/syncWeComUsers [post]
// @Security ApiKeyAuth
func (uc UserController) SyncWeComUsers(c *gin.Context) { func (uc UserController) SyncWeComUsers(c *gin.Context) {
req := new(request.SyncWeComUserReq) req := new(request.SyncWeComUserReq)
Run(c, req, func() (interface{}, interface{}) { Run(c, req, func() (interface{}, interface{}) {
@ -81,7 +160,16 @@ func (uc UserController) SyncWeComUsers(c *gin.Context) {
}) })
} }
// 同步飞书用户信息 // SyncFeiShuUsers 同步飞书用户信息
// @Summary 同步飞书用户信息
// @Description 同步飞书用户信息
// @Tags 用户管理
// @Accept application/json
// @Produce application/json
// @Param data body request.SyncFeiShuUserReq true "同步飞书用户信息"
// @Success 200 {object} response.ResponseBody
// @Router /user/syncFeiShuUsers [post]
// @Security ApiKeyAuth
func (uc UserController) SyncFeiShuUsers(c *gin.Context) { func (uc UserController) SyncFeiShuUsers(c *gin.Context) {
req := new(request.SyncFeiShuUserReq) req := new(request.SyncFeiShuUserReq)
Run(c, req, func() (interface{}, interface{}) { Run(c, req, func() (interface{}, interface{}) {
@ -89,7 +177,16 @@ func (uc UserController) SyncFeiShuUsers(c *gin.Context) {
}) })
} }
// 同步ldap用户信息 // SyncOpenLdapUsers 同步ldap用户信息
// @Summary 同步ldap用户信息
// @Description 同步ldap用户信息
// @Tags 用户管理
// @Accept application/json
// @Produce application/json
// @Param data body request.SyncOpenLdapUserReq true "同步ldap用户信息"
// @Success 200 {object} response.ResponseBody
// @Router /user/syncOpenLdapUsers [post]
// @Security ApiKeyAuth
func (uc UserController) SyncOpenLdapUsers(c *gin.Context) { func (uc UserController) SyncOpenLdapUsers(c *gin.Context) {
req := new(request.SyncOpenLdapUserReq) req := new(request.SyncOpenLdapUserReq)
Run(c, req, func() (interface{}, interface{}) { Run(c, req, func() (interface{}, interface{}) {
@ -97,7 +194,16 @@ func (uc UserController) SyncOpenLdapUsers(c *gin.Context) {
}) })
} }
// 同步sql用户信息到ldap // SyncSqlUsers 同步sql用户信息到ldap
// @Summary 同步sql用户信息到ldap
// @Description 同步sql用户信息到ldap
// @Tags 用户管理
// @Accept application/json
// @Produce application/json
// @Param data body request.SyncSqlUserReq true "更改用户状态的结构体"
// @Success 200 {object} response.ResponseBody
// @Router /user/syncSqlUsers [post]
// @Security ApiKeyAuth
func (uc UserController) SyncSqlUsers(c *gin.Context) { func (uc UserController) SyncSqlUsers(c *gin.Context) {
req := new(request.SyncSqlUserReq) req := new(request.SyncSqlUserReq)
Run(c, req, func() (interface{}, interface{}) { Run(c, req, func() (interface{}, interface{}) {

3033
docs/docs.go Normal file

File diff suppressed because it is too large Load Diff

3009
docs/swagger.json Normal file

File diff suppressed because it is too large Load Diff

1950
docs/swagger.yaml Normal file

File diff suppressed because it is too large Load Diff

33
go.mod
View File

@ -17,6 +17,9 @@ require (
github.com/patrickmn/go-cache v2.1.0+incompatible github.com/patrickmn/go-cache v2.1.0+incompatible
github.com/robfig/cron/v3 v3.0.0 github.com/robfig/cron/v3 v3.0.0
github.com/spf13/viper v1.11.0 github.com/spf13/viper v1.11.0
github.com/swaggo/files v1.0.1
github.com/swaggo/gin-swagger v1.6.0
github.com/swaggo/swag v1.16.2
github.com/thoas/go-funk v0.7.0 github.com/thoas/go-funk v0.7.0
github.com/zhaoyunxing92/dingtalk/v2 v2.1.1-0.20231013102126-c1568b7fbac5 github.com/zhaoyunxing92/dingtalk/v2 v2.1.1-0.20231013102126-c1568b7fbac5
go.uber.org/zap v1.19.1 go.uber.org/zap v1.19.1
@ -35,13 +38,22 @@ require (
require ( require (
github.com/BurntSushi/toml v1.1.0 // indirect github.com/BurntSushi/toml v1.1.0 // indirect
github.com/KyleBanks/depth v1.2.1 // indirect
github.com/PuerkitoBio/purell v1.1.1 // indirect
github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 // indirect
github.com/dustin/go-humanize v1.0.1 // indirect github.com/dustin/go-humanize v1.0.1 // indirect
github.com/glebarez/go-sqlite v1.20.3 // indirect github.com/glebarez/go-sqlite v1.20.3 // indirect
github.com/go-openapi/jsonpointer v0.19.5 // indirect
github.com/go-openapi/jsonreference v0.19.6 // indirect
github.com/go-openapi/spec v0.20.4 // indirect
github.com/go-openapi/swag v0.19.15 // indirect
github.com/golang-sql/sqlexp v0.1.0 // indirect github.com/golang-sql/sqlexp v0.1.0 // indirect
github.com/golang/mock v1.6.0 // indirect github.com/golang/mock v1.6.0 // indirect
github.com/google/go-cmp v0.5.9 // indirect github.com/google/go-cmp v0.5.9 // indirect
github.com/google/uuid v1.3.0 // indirect github.com/google/uuid v1.3.0 // indirect
github.com/josharian/intern v1.0.0 // indirect
github.com/lib/pq v1.10.4 // indirect github.com/lib/pq v1.10.4 // indirect
github.com/mailru/easyjson v0.7.6 // indirect
github.com/microsoft/go-mssqldb v0.17.0 // indirect github.com/microsoft/go-mssqldb v0.17.0 // indirect
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
github.com/modern-go/reflect2 v1.0.2 // indirect github.com/modern-go/reflect2 v1.0.2 // indirect
@ -51,6 +63,8 @@ require (
github.com/tidwall/match v1.1.1 // indirect github.com/tidwall/match v1.1.1 // indirect
github.com/tidwall/pretty v1.2.0 // indirect github.com/tidwall/pretty v1.2.0 // indirect
github.com/wenerme/go-req v0.0.0-20210907160348-d822e81276bb // indirect github.com/wenerme/go-req v0.0.0-20210907160348-d822e81276bb // indirect
golang.org/x/net v0.8.0 // indirect
golang.org/x/tools v0.7.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect
modernc.org/libc v1.22.2 // indirect modernc.org/libc v1.22.2 // indirect
modernc.org/mathutil v1.5.0 // indirect modernc.org/mathutil v1.5.0 // indirect
@ -94,9 +108,9 @@ require (
github.com/ugorji/go/codec v1.2.3 // indirect github.com/ugorji/go/codec v1.2.3 // indirect
go.uber.org/atomic v1.7.0 // indirect go.uber.org/atomic v1.7.0 // indirect
go.uber.org/multierr v1.6.0 // indirect go.uber.org/multierr v1.6.0 // indirect
golang.org/x/crypto v0.0.0-20221005025214-4161e89ecf1b // indirect golang.org/x/crypto v0.5.0 // indirect
golang.org/x/sys v0.5.0 // indirect golang.org/x/sys v0.6.0 // indirect
golang.org/x/text v0.3.7 // indirect golang.org/x/text v0.8.0 // indirect
google.golang.org/protobuf v1.28.0 // indirect google.golang.org/protobuf v1.28.0 // indirect
gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc // indirect gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc // indirect
gopkg.in/ini.v1 v1.66.4 // indirect gopkg.in/ini.v1 v1.66.4 // indirect
@ -104,3 +118,16 @@ require (
gorm.io/driver/postgres v1.4.5 // indirect gorm.io/driver/postgres v1.4.5 // indirect
gorm.io/driver/sqlserver v1.4.1 // indirect gorm.io/driver/sqlserver v1.4.1 // indirect
) )
exclude (
github.com/gin-gonic/gin v1.9.0
github.com/go-playground/locales v0.14.1
github.com/go-playground/universal-translator v0.18.1
github.com/go-playground/validator/v10 v10.11.2
github.com/pelletier/go-toml/v2 v2.0.6
github.com/ugorji/go/codec v1.2.9
golang.org/x/crypto v0.14.0
golang.org/x/sys v0.13.0
golang.org/x/text v0.13.0
google.golang.org/protobuf v1.28.1
)

63
go.sum
View File

@ -48,8 +48,14 @@ github.com/BurntSushi/toml v1.1.0/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbi
github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible h1:1G1pk05UrOh0NlF1oeaaix1x8XzrfjIDK47TY0Zehcw= github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible h1:1G1pk05UrOh0NlF1oeaaix1x8XzrfjIDK47TY0Zehcw=
github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0=
github.com/KyleBanks/depth v1.2.1 h1:5h8fQADFrWtarTdtDudMmGsC7GPbOAu6RVB3ffsVFHc=
github.com/KyleBanks/depth v1.2.1/go.mod h1:jzSb9d0L43HxTQfT+oSA1EEp2q+ne2uh6XgeJcm8brE=
github.com/Masterminds/semver/v3 v3.1.1 h1:hLg3sBzpNErnxhQtUy/mmLR2I9foDujNK030IGemrRc= github.com/Masterminds/semver/v3 v3.1.1 h1:hLg3sBzpNErnxhQtUy/mmLR2I9foDujNK030IGemrRc=
github.com/Masterminds/semver/v3 v3.1.1/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs= github.com/Masterminds/semver/v3 v3.1.1/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs=
github.com/PuerkitoBio/purell v1.1.1 h1:WEQqlqaGbrPkxLJWfBwQmfEAE1Z7ONdDLqrN38tNFfI=
github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0=
github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 h1:d+Bc7a5rLufV/sSk/8dngufqelfh6jnri85riMAaF/M=
github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE=
github.com/appleboy/gin-jwt/v2 v2.6.4 h1:4YlMh3AjCFnuIRiL27b7TXns7nLx8tU/TiSgh40RRUI= github.com/appleboy/gin-jwt/v2 v2.6.4 h1:4YlMh3AjCFnuIRiL27b7TXns7nLx8tU/TiSgh40RRUI=
github.com/appleboy/gin-jwt/v2 v2.6.4/go.mod h1:CZpq1cRw+kqi0+yD2CwVw7VGXrrx4AqBdeZnwxVmoAs= github.com/appleboy/gin-jwt/v2 v2.6.4/go.mod h1:CZpq1cRw+kqi0+yD2CwVw7VGXrrx4AqBdeZnwxVmoAs=
github.com/appleboy/gofight/v2 v2.1.2 h1:VOy3jow4vIK8BRQJoC/I9muxyYlJ2yb9ht2hZoS3rf4= github.com/appleboy/gofight/v2 v2.1.2 h1:VOy3jow4vIK8BRQJoC/I9muxyYlJ2yb9ht2hZoS3rf4=
@ -97,6 +103,7 @@ github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.m
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
github.com/fsnotify/fsnotify v1.5.4 h1:jRbGcIw6P2Meqdwuo0H1p6JVLbL5DHKAKlYndzMwVZI= github.com/fsnotify/fsnotify v1.5.4 h1:jRbGcIw6P2Meqdwuo0H1p6JVLbL5DHKAKlYndzMwVZI=
github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU= github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU=
github.com/gin-contrib/gzip v0.0.6 h1:NjcunTcGAj5CO1gn4N8jHOSIeRFHIbn51z6K+xaN4d4=
github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE= github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE=
github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI=
github.com/gin-gonic/gin v1.6.3 h1:ahKqKTFpO5KTPHxWZjEdPScmYaGtLo8Y4DMHoEsnp14= github.com/gin-gonic/gin v1.6.3 h1:ahKqKTFpO5KTPHxWZjEdPScmYaGtLo8Y4DMHoEsnp14=
@ -116,6 +123,16 @@ github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vb
github.com/go-ldap/ldap/v3 v3.4.2 h1:zFZKcXKLqZpFMrMQGHeHWKXbDTdNCmhGY9AK41zPh+8= github.com/go-ldap/ldap/v3 v3.4.2 h1:zFZKcXKLqZpFMrMQGHeHWKXbDTdNCmhGY9AK41zPh+8=
github.com/go-ldap/ldap/v3 v3.4.2/go.mod h1:iYS1MdmrmceOJ1QOTnRXrIs7i3kloqtmGQjRvjKpyMg= github.com/go-ldap/ldap/v3 v3.4.2/go.mod h1:iYS1MdmrmceOJ1QOTnRXrIs7i3kloqtmGQjRvjKpyMg=
github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A=
github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg=
github.com/go-openapi/jsonpointer v0.19.5 h1:gZr+CIYByUqjcgeLXnQu2gHYQC9o73G2XUeOFYEICuY=
github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg=
github.com/go-openapi/jsonreference v0.19.6 h1:UBIxjkht+AWIgYzCDSv2GN+E/togfwXUJFRTWhl2Jjs=
github.com/go-openapi/jsonreference v0.19.6/go.mod h1:diGHMEHg2IqXZGKxqyvWdfWU/aim5Dprw5bqpKkTvns=
github.com/go-openapi/spec v0.20.4 h1:O8hJrt0UMnhHcluhIdUgCLRWyM2x7QkBXRvOs7m+O1M=
github.com/go-openapi/spec v0.20.4/go.mod h1:faYFR1CvsJZ0mNsmsphTMSoRrNV3TEDoAM7FOEWeq8I=
github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk=
github.com/go-openapi/swag v0.19.15 h1:D2NRCBzS9/pEY3gP9Nl8aDqGUcPFrwG2p+CNFrLyrCM=
github.com/go-openapi/swag v0.19.15/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ=
github.com/go-playground/assert/v2 v2.0.1 h1:MsBgLAaY856+nPRTKrp3/OZK38U/wa0CcBYNjji3q3A= github.com/go-playground/assert/v2 v2.0.1 h1:MsBgLAaY856+nPRTKrp3/OZK38U/wa0CcBYNjji3q3A=
github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4=
github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8=
@ -286,6 +303,8 @@ github.com/jinzhu/now v1.1.1/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/
github.com/jinzhu/now v1.1.4/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= github.com/jinzhu/now v1.1.4/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8=
github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ= github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ=
github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8=
github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY=
github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y=
github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
@ -320,6 +339,10 @@ github.com/lib/pq v1.10.4 h1:SO9z7FRPzA03QhHKJrH5BXA6HU1rS4V2nIVrrNC1iYk=
github.com/lib/pq v1.10.4/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/lib/pq v1.10.4/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o=
github.com/magiconair/properties v1.8.6 h1:5ibWZ6iY0NctNGWo87LalDlEZ6R41TqbbDamhfG/Qzo= github.com/magiconair/properties v1.8.6 h1:5ibWZ6iY0NctNGWo87LalDlEZ6R41TqbbDamhfG/Qzo=
github.com/magiconair/properties v1.8.6/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= github.com/magiconair/properties v1.8.6/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60=
github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
github.com/mailru/easyjson v0.7.6 h1:8yTIVnZgCoiM1TgqoeTl+LfU5Jg6/xL3QhGQnimLYnA=
github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ= github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ=
github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
@ -346,6 +369,7 @@ github.com/modocache/gover v0.0.0-20171022184752-b58185e213c5/go.mod h1:caMODM3P
github.com/montanaflynn/stats v0.6.6/go.mod h1:etXPPgVO6n31NxCd9KQUMvCM+ve0ruNzt6R8Bnaayow= github.com/montanaflynn/stats v0.6.6/go.mod h1:etXPPgVO6n31NxCd9KQUMvCM+ve0ruNzt6R8Bnaayow=
github.com/mozillazg/go-pinyin v0.19.0 h1:p+J8/kjJ558KPvVGYLvqBhxf8jbZA2exSLCs2uUVN8c= github.com/mozillazg/go-pinyin v0.19.0 h1:p+J8/kjJ558KPvVGYLvqBhxf8jbZA2exSLCs2uUVN8c=
github.com/mozillazg/go-pinyin v0.19.0/go.mod h1:iR4EnMMRXkfpFVV5FMi4FNB6wGq9NV6uDWbUuPhP4Yc= github.com/mozillazg/go-pinyin v0.19.0/go.mod h1:iR4EnMMRXkfpFVV5FMi4FNB6wGq9NV6uDWbUuPhP4Yc=
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
github.com/patrickmn/go-cache v2.1.0+incompatible h1:HRMgzkcYKYpi3C8ajMPV8OFXaaRUnok+kx1WdO15EQc= github.com/patrickmn/go-cache v2.1.0+incompatible h1:HRMgzkcYKYpi3C8ajMPV8OFXaaRUnok+kx1WdO15EQc=
github.com/patrickmn/go-cache v2.1.0+incompatible/go.mod h1:3Qf8kWWT7OJRJbdiICTKqZju1ZixQ/KpMGzzAfe6+WQ= github.com/patrickmn/go-cache v2.1.0+incompatible/go.mod h1:3Qf8kWWT7OJRJbdiICTKqZju1ZixQ/KpMGzzAfe6+WQ=
github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8= github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8=
@ -404,10 +428,16 @@ github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.7.4/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.7.4/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk=
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk=
github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s= github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s=
github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw=
github.com/swaggo/files v1.0.1 h1:J1bVJ4XHZNq0I46UU90611i9/YzdrF7x92oX1ig5IdE=
github.com/swaggo/files v1.0.1/go.mod h1:0qXmMNH6sXNf+73t65aKeB+ApmgxdnkQzVTAj2uaMUg=
github.com/swaggo/gin-swagger v1.6.0 h1:y8sxvQ3E20/RCyrXeFfg60r6H0Z+SwpTjMYsMm+zy8M=
github.com/swaggo/gin-swagger v1.6.0/go.mod h1:BG00cCEy294xtVpyIAHG6+e2Qzj/xKlRdOqDkvq0uzo=
github.com/swaggo/swag v1.16.2 h1:28Pp+8DkQoV+HLzLx8RGJZXNGKbFqnuvSbAAtoxiY04=
github.com/swaggo/swag v1.16.2/go.mod h1:6YzXnDcpr0767iOejs318CwYkCQqyGer6BizOg03f+E=
github.com/thoas/go-funk v0.7.0 h1:GmirKrs6j6zJbhJIficOsz2aAI7700KsU/5YrdHRM1Y= github.com/thoas/go-funk v0.7.0 h1:GmirKrs6j6zJbhJIficOsz2aAI7700KsU/5YrdHRM1Y=
github.com/thoas/go-funk v0.7.0/go.mod h1:+IWnUfUmFO1+WVYQWQtIJHeRRdaIyyYglZN7xzUPe4Q= github.com/thoas/go-funk v0.7.0/go.mod h1:+IWnUfUmFO1+WVYQWQtIJHeRRdaIyyYglZN7xzUPe4Q=
github.com/tidwall/gjson v1.6.0/go.mod h1:P256ACg0Mn+j1RXIDXoss50DeIABTYK1PULOJHhxOls= github.com/tidwall/gjson v1.6.0/go.mod h1:P256ACg0Mn+j1RXIDXoss50DeIABTYK1PULOJHhxOls=
@ -433,9 +463,8 @@ github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de
github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
github.com/zenazn/goji v0.9.0/go.mod h1:7S9M489iMyHBNxwZnk9/EHS098H4/F6TATF2mIxtB1Q= github.com/zenazn/goji v0.9.0/go.mod h1:7S9M489iMyHBNxwZnk9/EHS098H4/F6TATF2mIxtB1Q=
github.com/zhaoyunxing92/dingtalk/v2 v2.0.7-0.20220601083444-173c10c3f835 h1:T6/rI54b4nVpQlIDv0iB0hTff4hzlXe63QcBcZ3u73s=
github.com/zhaoyunxing92/dingtalk/v2 v2.0.7-0.20220601083444-173c10c3f835/go.mod h1:MSvHUbYR94ffuWbJKFb8yHYyHg3qC/kQ3Hqpr6lK5ko=
github.com/zhaoyunxing92/dingtalk/v2 v2.1.1-0.20231013102126-c1568b7fbac5 h1:Ur2sZLt+zwZeYw3aNi/YhsreTnXqIeM7YrmaSH3obmA= github.com/zhaoyunxing92/dingtalk/v2 v2.1.1-0.20231013102126-c1568b7fbac5 h1:Ur2sZLt+zwZeYw3aNi/YhsreTnXqIeM7YrmaSH3obmA=
github.com/zhaoyunxing92/dingtalk/v2 v2.1.1-0.20231013102126-c1568b7fbac5/go.mod h1:MSvHUbYR94ffuWbJKFb8yHYyHg3qC/kQ3Hqpr6lK5ko= github.com/zhaoyunxing92/dingtalk/v2 v2.1.1-0.20231013102126-c1568b7fbac5/go.mod h1:MSvHUbYR94ffuWbJKFb8yHYyHg3qC/kQ3Hqpr6lK5ko=
go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=
@ -478,11 +507,13 @@ golang.org/x/crypto v0.0.0-20201203163018-be400aefbc4c/go.mod h1:jdWPYTVW3xRLrWP
golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
golang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
golang.org/x/crypto v0.0.0-20220511200225-c6db032c6c88/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220511200225-c6db032c6c88/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
golang.org/x/crypto v0.0.0-20221005025214-4161e89ecf1b h1:huxqepDufQpLLIRXiVkTvnxrzJlpwmIWAObmcCcUFr0=
golang.org/x/crypto v0.0.0-20221005025214-4161e89ecf1b/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20221005025214-4161e89ecf1b/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
golang.org/x/crypto v0.5.0 h1:U/0M97KRkSFvyD/3FSmdP5W5swImpNgle/EHFhOsQPE=
golang.org/x/crypto v0.5.0/go.mod h1:NK/OQwhpMQP3MwtdjgLlYHnH9ebylxKWv3e0fK+mkQU=
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
@ -517,6 +548,8 @@ golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
golang.org/x/mod v0.9.0 h1:KENHtAZL2y3NLMYZeHY9DW8HW8V+kQyJsY/V9JlKvCs=
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
@ -551,8 +584,13 @@ golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v
golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
golang.org/x/net v0.0.0-20210421230115-4e50805a0758/go.mod h1:72T/g9IO56b78aLF+1Kcs5dz7/ng1VjMUvfKvpfy+jM=
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
golang.org/x/net v0.8.0 h1:Zrh2ngAOFYneWTAIAPethzeaQLuHwhuBkuV6ZiRnUaQ=
golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
@ -573,6 +611,7 @@ golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJ
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
@ -615,6 +654,7 @@ golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7w
golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210420072515-93ed5bcd2bfe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
@ -624,12 +664,16 @@ golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBc
golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220224120231-95c6836cb0e7/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220224120231-95c6836cb0e7/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.5.0 h1:MUK/U/4lj1t1oPg0HfuXDN/Z1wv31ZJ/YcPiGccS4DU=
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.6.0 h1:MVltZSvRTcU2ljQOhs94SXPftV6DCNnZViHeQps87pQ=
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
@ -637,8 +681,10 @@ golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk=
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
golang.org/x/text v0.8.0 h1:57P1ETyNKtuIjB4SRd15iJxuhj8Gc416Y78H3qgMh68=
golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
@ -696,6 +742,9 @@ golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4f
golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0=
golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
golang.org/x/tools v0.7.0 h1:W4OVu8VVOaIO0yzWMNdepAulS7YfoS3Zabrm8DOXXU4=
golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s=
golang.org/x/xerrors v0.0.0-20190410155217-1f06c39b4373/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20190410155217-1f06c39b4373/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20190513163551-3ee3066db522/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20190513163551-3ee3066db522/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
@ -798,6 +847,7 @@ gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc h1:2gG
gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc/go.mod h1:m7x9LTH6d71AHyAX77c9yqWCCa3UKHcVEj9y7hAtKDk= gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc/go.mod h1:m7x9LTH6d71AHyAX77c9yqWCCa3UKHcVEj9y7hAtKDk=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
@ -814,6 +864,7 @@ gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=

View File

@ -83,5 +83,5 @@ func (l OperationLogLogic) Clean(c *gin.Context, req interface{}) (data interfac
if err != nil { if err != nil {
return err, nil return err, nil
} }
return "操作日志情况完成", nil return "操作日志清空完成", nil
} }

14
main.go
View File

@ -17,6 +17,20 @@ import (
"github.com/eryajf/go-ldap-admin/service/isql" "github.com/eryajf/go-ldap-admin/service/isql"
) )
// @title Go Ldap Admin
// @version 1.0
// @description 基于Go+Vue实现的openLDAP后台管理项目
// @termsOfService https://github.com/eryajf/go-ldap-admin
// @contact.name 项目作者:二丫讲梵 、 swagger作者南宫乘风
// @contact.url https://github.com/eryajf/go-ldap-admin
// @contact.email https://github.com/eryajf/go-ldap-admin
// @host 127.0.0.1:8888
// @BasePath /api
// @securityDefinitions.apikey ApiKeyAuth
// @in header
// @name Authorization
func main() { func main() {
// 加载配置文件到全局配置结构体 // 加载配置文件到全局配置结构体

View File

@ -0,0 +1,15 @@
package response
/**
* @Author: 南宫乘风
* @Description:
* @File: responsebody.go
* @Email: 1794748404@qq.com
* @Date: 2024-05-17 16:24
*/
type ResponseBody struct {
Code int `json:"code"`
Msg string `json:"msg"`
Data interface{} `json:"data"`
}

View File

@ -6,11 +6,13 @@ import (
"time" "time"
"github.com/eryajf/go-ldap-admin/config" "github.com/eryajf/go-ldap-admin/config"
_ "github.com/eryajf/go-ldap-admin/docs"
"github.com/eryajf/go-ldap-admin/middleware" "github.com/eryajf/go-ldap-admin/middleware"
"github.com/eryajf/go-ldap-admin/public/common" "github.com/eryajf/go-ldap-admin/public/common"
"github.com/eryajf/go-ldap-admin/public/static" "github.com/eryajf/go-ldap-admin/public/static"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
swaggerFiles "github.com/swaggo/files"
ginSwagger "github.com/swaggo/gin-swagger"
) )
// 初始化 // 初始化
@ -53,10 +55,10 @@ func InitRoutes() *gin.Engine {
common.Log.Panicf("初始化JWT中间件失败%v", err) common.Log.Panicf("初始化JWT中间件失败%v", err)
panic(fmt.Sprintf("初始化JWT中间件失败%v", err)) panic(fmt.Sprintf("初始化JWT中间件失败%v", err))
} }
// swag
// 路由分组 r.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))
apiGroup := r.Group("/" + config.Conf.System.UrlPathPrefix) apiGroup := r.Group("/" + config.Conf.System.UrlPathPrefix)
// swag
// 注册路由 // 注册路由
InitBaseRoutes(apiGroup, authMiddleware) // 注册基础路由, 不需要jwt认证中间件,不需要casbin中间件 InitBaseRoutes(apiGroup, authMiddleware) // 注册基础路由, 不需要jwt认证中间件,不需要casbin中间件
InitUserRoutes(apiGroup, authMiddleware) // 注册用户路由, jwt认证中间件,casbin鉴权中间件 InitUserRoutes(apiGroup, authMiddleware) // 注册用户路由, jwt认证中间件,casbin鉴权中间件

View File

@ -1,12 +1,46 @@
package routes package routes
import ( import (
"github.com/eryajf/go-ldap-admin/controller"
jwt "github.com/appleboy/gin-jwt/v2" jwt "github.com/appleboy/gin-jwt/v2"
"github.com/eryajf/go-ldap-admin/controller"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
) )
// LoginHandler
// @Summary 登录接口 (手动加上: Bearer + token(密码加密接口))
// @Description 用户登录
// @Tags 基础管理
// @Accept application/json
// @Produce application/json
// @Param data body request.RegisterAndLoginReq true "用户登录信息账号和密码"
// @Success 200 {object} response.ResponseBody
// @Router /base/login [post]
func LoginHandler() {}
// LogoutHandler
// @Summary 退出登录
// @Description 用户退出登录
// @Tags 基础管理
// @Accept application/json
// @Produce application/json
// @Success 200 {object} response.ResponseBody
// @Router /base/logout [post]
func LogoutHandler() {
}
// RefreshHandler
// @Summary 刷新 Token
// @Description 使用旧的 Token 获取新的 Token
// @Tags 基础管理
// @Accept application/json
// @Produce application/json
// @Param Authorization header string true "Bearer 旧的 Token"
// @Success 200 {object} response.ResponseBody
// @Router /base/refreshToken [post]
func RefreshHandler() {
}
// 注册基础路由 // 注册基础路由
func InitBaseRoutes(r *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) gin.IRoutes { func InitBaseRoutes(r *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) gin.IRoutes {
base := r.Group("/base") base := r.Group("/base")