Compare commits

...
Author SHA1 Message Date
wenjianzhang acee466fc8 Merge pull request #467 from go-admin-team/dev
Dev(#457)
2021-06-30 02:04:10 +08:00
zhangwenjian 862f24d8a7 refactor🎨: 移除服务管理 2021-06-30 01:52:47 +08:00
wenjianzhang e2cb033670 refactor🎨: 增加server manager,提升服务启动流程规范
feature ✨ 增加server manager,提升服务启动流程规范
2021-06-29 16:58:50 +08:00
zhangwenjian 029c505501 refactor🎨: 修改包引用 2021-06-29 16:46:00 +08:00
zhangwenjian dd5f0c52fb refactor🎨: 修改错误信息提示 2021-06-29 16:33:03 +08:00
zhangwenjian f80e64688e refactor🎨: 修改请求参数命名 2021-06-29 16:32:44 +08:00
zhangwenjian 3fd34db3c1 docs📝: 修改接口文档 2021-06-29 16:30:47 +08:00
zhangwenjian 0607d462d0 docs📝: 修改config接口文档 2021-06-29 16:28:08 +08:00
zhangwenjian 7f8c302405 refactor🎨: 调整index to go-admin 接口 2021-06-29 16:27:10 +08:00
zhangwenjian c82c58443c refactor🎨: 验证码文档修改,去掉token验证 2021-06-29 16:26:27 +08:00
zhangwenjian 9591be883f refactor🎨:登陆模块接口文档整理 2021-06-25 11:34:26 +08:00
zhangwenjian acdcd0c867 refactor🎨:接口文档重新生成 2021-06-25 11:33:55 +08:00
zhangwenjian 0f623521c4 refactor🎨:代码生成功能迁移 2021-06-25 11:33:41 +08:00
wenjianzhang 91b93a3f48 refactor🎨:模版升级 2021-06-24 20:21:40 +08:00
wenjianzhang 32d123eb89 refactor🎨:格式化函数名称 2021-06-24 20:18:20 +08:00
wenjianzhang 2025809d91 refactor🎨:修改Syspost模块功能 2021-06-24 20:17:58 +08:00
wenjianzhang d552875e8a Merge pull request #461 from go-admin-team/dev
Dev
2021-06-23 12:21:13 +08:00
wenjianzhang 6994857f4b Merge pull request #460 from Cassuis/dev
bugfix:修正用户修改密码put接口url错误导致的无法修改密码问题,修正初始化SQL异常导致部分表无缺省参数问题
2021-06-23 12:08:37 +08:00
Vincent 7ac941c1d0 bugfix:
1.修正用户修改密码put接口url错误导致的无法修改密码问题
2.修正初始化SQL异常导致部分表无缺省参数问题
2021-06-23 09:46:51 +08:00
wenjianzhang af68778436 Merge pull request #455 from go-admin-team/dev
docs📝:  更新swagger文档
2021-06-20 00:59:39 +08:00
zhangwenjian 1ab11c46ba docs📝: 更新swagger文档 2021-06-20 00:51:55 +08:00
wenjianzhang add355637d Merge pull request #450 from go-admin-team/dev
merge Dev
2021-06-20 00:51:05 +08:00
zhangwenjian 65380695f2 refactor🎨:格式化函数名称 2021-06-20 00:43:17 +08:00
zhangwenjian a6116ede02 refactor🎨: 修改字典类型status为int 2021-06-20 00:39:43 +08:00
zhangwenjian dafa627e31 refactor🎨:升级依赖版本 2021-06-20 00:15:54 +08:00
zhangwenjian 993115c8ae fix🐛: 修复获取部门数据查询参数问题 2021-06-20 00:15:34 +08:00
zhangwenjian b97b3bc6d8 refactor🎨:部门创建添加事务,已经修改status字段为int类型 2021-06-20 00:14:45 +08:00
zhangwenjian 636294b6f5 refactor🎨: 岗位删除修改为data传值方式 2021-06-20 00:13:17 +08:00
zhangwenjian 37fe63126c fix🐛: 修复2.0 字典类型删除接口500并没有提示消息 (#452) 2021-06-18 22:24:10 +08:00
zhangwenjian 9ace1d8201 fix🐛: 修复2.0 字典数据删除404 (#451) 2021-06-18 22:23:37 +08:00
zhangwenjian 25472887c9 refactor🎨:移除内容管理、行政区管理和资源管理 2021-06-18 21:34:57 +08:00
zhangwenjian 5e7d2614b3 refactor🎨:修改版本号 2021-06-17 22:14:07 +08:00
zhangwenjian 484246e146 refactor🎨:更新数据初始化sql 2021-06-17 22:10:10 +08:00
zhangwenjian 65fb965f66 refactor🎨:修改行政区数据sql 2021-06-17 21:46:42 +08:00
zhangwenjian 493d714723 refactor🎨:修改行政区数据sql 2021-06-17 21:46:19 +08:00
zhangwenjian a911e73238 refactor🎨:调整行政区命名 2021-06-17 21:45:37 +08:00
zhangwenjian dff133bbbc refactor🎨:注释数据权限控制历史版本方法 2021-06-17 21:11:58 +08:00
zhangwenjian 60d9c59544 refactor🎨:删除历史版本菜单、角色、角色部门关系、角色菜单关系业务 2021-06-17 21:11:09 +08:00
zhangwenjian 185df737c8 refactor🎨:调整管理员和字典相关结构体字段顺序 2021-06-17 21:10:12 +08:00
zhangwenjian a0b7d9969a Revert "refactor🎨:注释未使用的对象"
This reverts commit 3358eeb54c.
2021-06-17 11:28:51 +08:00
zhangwenjian 3358eeb54c refactor🎨:注释未使用的对象 2021-06-17 11:28:37 +08:00
wenjianzhang d32751ea5d refactor🎨:文件上传修改为本地路径 2021-06-16 18:34:51 +08:00
wenjianzhang 8f637e02d0 refactor🎨:菜单、角色、用户模块调整 2021-06-16 18:34:25 +08:00
wenjianzhang e4ffd1df14 refactor🎨:注释返回数据记录 2021-06-16 18:33:56 +08:00
wenjianzhang 869bea2163 refactor🎨:系统监控接口 2021-06-16 18:33:14 +08:00
linwenxiang 7e9919e3ae feature ✨ 增加server manager,提升服务启动流程规范 2021-06-16 10:13:26 +08:00
wenjianzhang 5afe67bd1b refactor🎨:更新角色模块 2021-06-15 19:03:37 +08:00
wenjianzhang 13f09d6059 refactor🎨:数据迁移结构体重命名 2021-06-15 19:02:57 +08:00
119 changed files with 3701 additions and 4707 deletions
+6
View File
@@ -10,6 +10,12 @@ type System struct {
api.Api
}
// GenerateCaptchaHandler 获取验证码
// @Summary 获取验证码
// @Description 获取验证码
// @Tags 登陆
// @Success 200 {object} response.Response{data=string,id=string,msg=string} "{"code": 200, "data": [...]}"
// @Router /api/v1/captcha [get]
func (e System) GenerateCaptchaHandler(c *gin.Context) {
err := e.MakeContext(c).Errors
if err != nil {
@@ -33,7 +33,7 @@ $(function(){
</html>
`
func HelloWorld(c *gin.Context) {
func GoAdmin(c *gin.Context) {
c.Header("Content-Type", "text/html; charset=utf-8")
c.String(200, INDEX)
}
+5 -6
View File
@@ -32,7 +32,7 @@ type SysApi struct {
// @Security Bearer
func (e SysApi) GetPage(c *gin.Context) {
s := service.SysApi{}
req := dto.SysApiSearch{}
req := dto.SysApiGetPageReq{}
err := e.MakeContext(c).
MakeOrm().
Bind(&req, binding.Form).
@@ -64,7 +64,7 @@ func (e SysApi) GetPage(c *gin.Context) {
// @Router /api/v1/sys-api/{id} [get]
// @Security Bearer
func (e SysApi) Get(c *gin.Context) {
req := dto.SysApiById{}
req := dto.SysApiGetReq{}
s := service.SysApi{}
err := e.MakeContext(c).
MakeOrm().
@@ -97,7 +97,7 @@ func (e SysApi) Get(c *gin.Context) {
// @Router /api/v1/sys-api/{id} [put]
// @Security Bearer
func (e SysApi) Update(c *gin.Context) {
req := dto.SysApiControl{}
req := dto.SysApiUpdateReq{}
s := service.SysApi{}
err := e.MakeContext(c).
MakeOrm().
@@ -127,18 +127,17 @@ func (e SysApi) Update(c *gin.Context) {
// @Router /api/v1/sys-api [delete]
// @Security Bearer
func (e SysApi) DeleteSysApi(c *gin.Context) {
req := dto.SysApiById{}
req := dto.SysApiDeleteReq{}
s := service.SysApi{}
err := e.MakeContext(c).
MakeOrm().
Bind(&req, binding.Form).
Bind(&req).
MakeService(&s.Service).
Errors
if err != nil {
e.Logger.Error(err)
return
}
req.SetUpdateBy(user.GetUserId(c))
p := actions.GetPermissionFromContext(c)
err = s.Remove(&req, p)
if err != nil {
+2 -3
View File
@@ -180,12 +180,11 @@ func (e SysConfig) Delete(c *gin.Context) {
}
// GetSysConfigBySysApp 获取系统配置信息
// @Summary 获取系统前台配置信息,主要注意这里不在验证数据权限
// @Description 获取系统配置信息,主要注意这里不在验证数据权限
// @Summary 获取系统前台配置信息,主要注意这里不在验证权限
// @Description 获取系统配置信息,主要注意这里不在验证权限
// @Tags 配置管理
// @Success 200 {object} response.Response{data=map[string]string} "{"code": 200, "data": [...]}"
// @Router /api/v1/app-config [get]
// @Security Bearer
func (e SysConfig) GetSysConfigBySysApp(c *gin.Context) {
req := dto.SysConfigSearch{}
s := service.SysConfig{}
+4 -3
View File
@@ -32,7 +32,7 @@ func (e SysDept) GetPage(c *gin.Context) {
req := dto.SysDeptSearch{}
err := e.MakeContext(c).
MakeOrm().
Bind(&req, binding.Form).
Bind(&req).
MakeService(&s.Service).
Errors
if err != nil {
@@ -98,7 +98,7 @@ func (e SysDept) Insert(c *gin.Context) {
req := dto.SysDeptControl{}
err := e.MakeContext(c).
MakeOrm().
Bind(&req, binding.JSON, nil).
Bind(&req, binding.JSON).
MakeService(&s.Service).
Errors
if err != nil {
@@ -134,7 +134,7 @@ func (e SysDept) Update(c *gin.Context) {
req := dto.SysDeptControl{}
err := e.MakeContext(c).
MakeOrm().
Bind(&req, binding.JSON, nil).
Bind(&req).
MakeService(&s.Service).
Errors
if err != nil {
@@ -159,6 +159,7 @@ func (e SysDept) Update(c *gin.Context) {
// @Success 200 {string} string "{"code": 200, "message": "删除成功"}"
// @Success 200 {string} string "{"code": -1, "message": "删除失败"}"
// @Router /api/v1/dept [delete]
// @Security Bearer
func (e SysDept) Delete(c *gin.Context) {
s := service.SysDept{}
req := dto.SysDeptById{}
+9 -11
View File
@@ -1,14 +1,12 @@
package apis
import (
"github.com/gin-gonic/gin/binding"
"go-admin/app/admin/models"
"net/http"
"github.com/gin-gonic/gin"
"github.com/gin-gonic/gin/binding"
"github.com/go-admin-team/go-admin-core/sdk/api"
"github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth/user"
_ "github.com/go-admin-team/go-admin-core/sdk/pkg/response"
"go-admin/app/admin/models"
"go-admin/app/admin/service"
"go-admin/app/admin/service/dto"
@@ -55,7 +53,7 @@ func (e SysDictData) GetPage(c *gin.Context) {
e.PageOK(list, int(count), req.GetPageIndex(), req.GetPageSize(), "查询成功")
}
// GetSysDictData
// Get
// @Summary 通过编码获取字典数据
// @Description 获取JSON
// @Tags 字典数据
@@ -82,14 +80,14 @@ func (e SysDictData) Get(c *gin.Context) {
err = s.Get(&req, &object)
if err != nil {
e.Logger.Warnf("Get error: %s", err.Error())
e.Error(http.StatusInternalServerError, err, "查询失败")
e.Error(500, err, "查询失败")
return
}
e.OK(object, "查询成功")
}
// InsertSysDictData
// Insert
// @Summary 添加字典数据
// @Description 获取JSON
// @Tags 字典数据
@@ -123,7 +121,7 @@ func (e SysDictData) Insert(c *gin.Context) {
e.OK(req.GetId(), "创建成功")
}
// UpdateSysDictData
// Update
// @Summary 修改字典数据
// @Description 获取JSON
// @Tags 字典数据
@@ -156,14 +154,14 @@ func (e SysDictData) Update(c *gin.Context) {
e.OK(req.GetId(), "更新成功")
}
// DeleteSysDictData
// Delete
// @Summary 删除字典数据
// @Description 删除数据
// @Tags 字典数据
// @Param dictCode path int true "dictCode"
// @Param dictCode body dto.SysDictDataById true "body"
// @Success 200 {string} string "{"code": 200, "message": "删除成功"}"
// @Success 200 {string} string "{"code": -1, "message": "删除失败"}"
// @Router /api/v1/dict/data/{dictCode} [delete]
// @Router /api/v1/dict/data [delete]
// @Security Bearer
func (e SysDictData) Delete(c *gin.Context) {
s := service.SysDictData{}
+8 -8
View File
@@ -1,14 +1,13 @@
package apis
import (
"github.com/gin-gonic/gin/binding"
"go-admin/app/admin/models"
"net/http"
"fmt"
"github.com/gin-gonic/gin"
"github.com/gin-gonic/gin/binding"
"github.com/go-admin-team/go-admin-core/sdk/api"
"github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth/user"
_ "github.com/go-admin-team/go-admin-core/sdk/pkg/response"
"go-admin/app/admin/models"
"go-admin/app/admin/service"
"go-admin/app/admin/service/dto"
@@ -111,7 +110,7 @@ func (e SysDictType) Insert(c *gin.Context) {
err = s.Insert(&req)
if err != nil {
e.Logger.Error(err)
e.Error(500, err, "创建失败")
e.Error(500, err,fmt.Sprintf(" 创建字典类型失败,详情:%s", err.Error()))
return
}
e.OK(req.GetId(), "创建成功")
@@ -137,7 +136,7 @@ func (e SysDictType) Update(c *gin.Context) {
MakeService(&s.Service).
Errors
if err != nil {
e.Error(http.StatusInternalServerError, err, err.Error())
e.Error(500, err, err.Error())
e.Logger.Error(err)
return
}
@@ -157,7 +156,8 @@ func (e SysDictType) Update(c *gin.Context) {
// @Param dictId path int true "dictId"
// @Success 200 {string} string "{"code": 200, "message": "删除成功"}"
// @Success 200 {string} string "{"code": -1, "message": "删除失败"}"
// @Router /api/v1/dict/type/{dictId} [delete]
// @Router /api/v1/dict/type [delete]
// @Security Bearer
func (e SysDictType) Delete(c *gin.Context) {
s := service.SysDictType{}
req := dto.SysDictTypeById{}
@@ -206,7 +206,7 @@ func (e SysDictType) GetAll(c *gin.Context) {
list := make([]models.SysDictType, 0)
err = s.GetAll(&req, &list)
if err != nil {
e.Error(500, err, "查询失败")
e.Error(500, err, err.Error())
return
}
e.OK(list, "查询成功")
+3 -2
View File
@@ -51,7 +51,7 @@ func (e SysLoginLog) GetPage(c *gin.Context) {
e.PageOK(list, int(count), req.GetPageIndex(), req.GetPageSize(), "查询成功")
}
// GetSysLoginLog 登录日志通过id获取
// Get 登录日志通过id获取
// @Summary 登录日志通过id获取
// @Description 获取JSON
// @Tags 登录日志
@@ -81,13 +81,14 @@ func (e SysLoginLog) Get(c *gin.Context) {
e.OK(object, "查询成功")
}
// DeleteSysLoginLog 登录日志删除
// Delete 登录日志删除
// @Summary 登录日志删除
// @Description 登录日志删除
// @Tags 登录日志
// @Param data body dto.SysLoginLogById true "body"
// @Success 200 {object} response.Response "{"code": 200, "data": [...]}"
// @Router /api/v1/sys-login-log [delete]
// @Security Bearer
func (e SysLoginLog) Delete(c *gin.Context) {
s := service.SysLoginLog{}
req := dto.SysLoginLogById{}
+42 -36
View File
@@ -1,13 +1,11 @@
package apis
import (
"github.com/gin-gonic/gin/binding"
"go-admin/app/admin/models"
"net/http"
"github.com/gin-gonic/gin"
"github.com/gin-gonic/gin/binding"
"github.com/go-admin-team/go-admin-core/sdk/api"
"github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth/user"
"go-admin/app/admin/models"
"go-admin/app/admin/service"
"go-admin/app/admin/service/dto"
@@ -153,6 +151,7 @@ func (e SysMenu) Update(c *gin.Context) {
// @Param data body dto.SysMenuById true "body"
// @Success 200 {object} response.Response "{"code": 200, "data": [...]}"
// @Router /api/v1/menu [delete]
// @Security Bearer
func (e SysMenu) Delete(c *gin.Context) {
control := new(dto.SysMenuById)
s := new(service.SysMenu)
@@ -169,7 +168,7 @@ func (e SysMenu) Delete(c *gin.Context) {
err = s.Remove(control).Error
if err != nil {
e.Logger.Errorf("RemoveSysMenu error, %s", err)
e.Error(http.StatusInternalServerError, err, "删除失败")
e.Error(500, err, "删除失败")
return
}
e.OK(control.GetId(), "删除成功")
@@ -197,43 +196,50 @@ func (e SysMenu) GetMenuRole(c *gin.Context) {
result, err := s.SetMenuRole(user.GetRoleName(c))
if err != nil {
e.Error(http.StatusInternalServerError, err, "查询失败")
e.Error(500, err, "查询失败")
return
}
e.OK(result, "")
}
// GetMenuIDS 获取角色对应的菜单id数组
// @Summary 获取角色对应的菜单id数组,设置角色权限使用
// @Description 获取JSON
// @Tags 菜单
// @Param id path int true "id"
// @Success 200 {object} response.Response "{"code": 200, "data": [...]}"
// @Router /api/v1/menuids/{id} [get]
// @Security Bearer
func (e SysMenu) GetMenuIDS(c *gin.Context) {
s := new(service.SysMenu)
err := e.MakeContext(c).
MakeOrm().
MakeService(&s.Service).
Errors
if err != nil {
e.Logger.Error(err)
e.Error(500, err, err.Error())
return
}
var data models.RoleMenu
data.RoleName = c.GetString("role")
data.UpdateBy = user.GetUserId(c)
result, err := data.GetIDS(s.Orm)
if err != nil {
e.Logger.Errorf("GetIDS error, %s", err.Error())
e.Error(500, err, "获取失败")
return
}
e.OK(result, "")
}
//// GetMenuIDS 获取角色对应的菜单id数组
//// @Summary 获取角色对应的菜单id数组,设置角色权限使用
//// @Description 获取JSON
//// @Tags 菜单
//// @Param id path int true "id"
//// @Success 200 {object} response.Response "{"code": 200, "data": [...]}"
//// @Router /api/v1/menuids/{id} [get]
//// @Security Bearer
//func (e SysMenu) GetMenuIDS(c *gin.Context) {
// s := new(service.SysMenu)
// r := service.SysRole{}
// m := dto.SysRoleByName{}
// err := e.MakeContext(c).
// MakeOrm().
// Bind(&m, binding.JSON).
// MakeService(&s.Service).
// MakeService(&r.Service).
// Errors
// if err != nil {
// e.Logger.Error(err)
// e.Error(500, err, err.Error())
// return
// }
// var data models.SysRole
// err = r.GetWithName(&m, &data).Error
//
// //data.RoleName = c.GetString("role")
// //data.UpdateBy = user.GetUserId(c)
// //result, err := data.GetIDS(s.Orm)
//
// if err != nil {
// e.Logger.Errorf("GetIDS error, %s", err.Error())
// e.Error(500, err, "获取失败")
// return
// }
// e.OK(result, "")
//}
// GetMenuTreeSelect 根据角色ID查询菜单下拉树结构
// @Summary 角色修改使用的菜单列表
+5 -6
View File
@@ -2,12 +2,10 @@ package apis
import (
"fmt"
"github.com/gin-gonic/gin/binding"
"go-admin/app/admin/models"
"net/http"
"github.com/gin-gonic/gin"
"github.com/gin-gonic/gin/binding"
"github.com/go-admin-team/go-admin-core/sdk/api"
"go-admin/app/admin/models"
"go-admin/app/admin/service"
"go-admin/app/admin/service/dto"
)
@@ -33,7 +31,7 @@ type SysOperaLog struct {
// @Security Bearer
func (e SysOperaLog) GetPage(c *gin.Context) {
s := service.SysOperaLog{}
req := new(dto.SysOperaLogSearch)
req := new(dto.SysOperaLogGetPageReq)
err := e.MakeContext(c).
MakeOrm().
Bind(req, binding.Form).
@@ -50,7 +48,7 @@ func (e SysOperaLog) GetPage(c *gin.Context) {
err = s.GetPage(req, &list, &count)
if err != nil {
e.Error(http.StatusUnprocessableEntity, err, "查询失败")
e.Error(500, err, "查询失败")
return
}
@@ -95,6 +93,7 @@ func (e SysOperaLog) Get(c *gin.Context) {
// @Param data body dto.SysOperaLogById true "body"
// @Success 200 {object} response.Response "{"code": 200, "data": [...]}"
// @Router /api/v1/sys-opera-log [delete]
// @Security Bearer
func (e SysOperaLog) Delete(c *gin.Context) {
s := new(service.SysOperaLog)
req := dto.SysOperaLogById{}
+26 -26
View File
@@ -1,10 +1,9 @@
package apis
import (
"github.com/gin-gonic/gin/binding"
"net/http"
"fmt"
"github.com/gin-gonic/gin"
"github.com/gin-gonic/gin/binding"
"github.com/go-admin-team/go-admin-core/sdk/api"
"github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth/user"
_ "github.com/go-admin-team/go-admin-core/sdk/pkg/response"
@@ -31,7 +30,7 @@ type SysPost struct {
// @Security Bearer
func (e SysPost) GetPage(c *gin.Context) {
s := service.SysPost{}
req := dto.SysPostSearch{}
req := dto.SysPostPageReq{}
err := e.MakeContext(c).
MakeOrm().
Bind(&req, binding.Form).
@@ -46,9 +45,9 @@ func (e SysPost) GetPage(c *gin.Context) {
list := make([]models.SysPost, 0)
var count int64
err = s.GetSysPostPage(&req, &list, &count)
err = s.GetPage(&req, &list, &count)
if err != nil {
e.Error(http.StatusUnprocessableEntity, err, "查询失败")
e.Error(500, err, "查询失败")
return
}
@@ -59,13 +58,13 @@ func (e SysPost) GetPage(c *gin.Context) {
// @Summary 获取岗位信息
// @Description 获取JSON
// @Tags 岗位
// @Param postId path int true "postId"
// @Param id path int true "编码"
// @Success 200 {object} response.Response "{"code": 200, "data": [...]}"
// @Router /api/v1/post/{postId} [get]
// @Security Bearer
func (e SysPost) Get(c *gin.Context) {
s := service.SysPost{}
req := dto.SysPostById{}
req := dto.SysPostGetReq{}
err := e.MakeContext(c).
MakeOrm().
Bind(&req, nil).
@@ -78,9 +77,9 @@ func (e SysPost) Get(c *gin.Context) {
}
var object models.SysPost
err = s.GetSysPost(&req, &object)
err = s.Get(&req, &object)
if err != nil {
e.Error(500, err, "查询失败")
e.Error(500, err, fmt.Sprintf("岗位信息获取失败!错误详情:%s", err.Error()))
return
}
@@ -93,14 +92,14 @@ func (e SysPost) Get(c *gin.Context) {
// @Tags 岗位
// @Accept application/json
// @Product application/json
// @Param data body dto.SysPostControl true "data"
// @Param data body dto.SysPostInsertReq true "data"
// @Success 200 {string} string "{"code": 200, "message": "添加成功"}"
// @Success 200 {string} string "{"code": -1, "message": "添加失败"}"
// @Router /api/v1/post [post]
// @Security Bearer
func (e SysPost) Insert(c *gin.Context) {
s := service.SysPost{}
req := dto.SysPostControl{}
req := dto.SysPostInsertReq{}
err := e.MakeContext(c).
MakeOrm().
Bind(&req, binding.JSON).
@@ -112,9 +111,9 @@ func (e SysPost) Insert(c *gin.Context) {
return
}
req.SetCreateBy(user.GetUserId(c))
err = s.InsertSysPost(&req)
err = s.Insert(&req)
if err != nil {
e.Error(500, err, "创建失败")
e.Error(500, err, fmt.Sprintf("新建岗位失败!错误详情:%s", err.Error()))
return
}
e.OK(req.GetId(), "创建成功")
@@ -126,14 +125,14 @@ func (e SysPost) Insert(c *gin.Context) {
// @Tags 岗位
// @Accept application/json
// @Product application/json
// @Param data body dto.SysPostControl true "body"
// @Param data body dto.SysPostUpdateReq true "body"
// @Success 200 {string} string "{"code": 200, "message": "添加成功"}"
// @Success 200 {string} string "{"code": -1, "message": "添加失败"}"
// @Router /api/v1/post/ [put]
// @Router /api/v1/post/{id} [put]
// @Security Bearer
func (e SysPost) Update(c *gin.Context) {
s := service.SysPost{}
req := dto.SysPostControl{}
req := dto.SysPostUpdateReq{}
err := e.MakeContext(c).
MakeOrm().
Bind(&req, binding.JSON, nil).
@@ -147,9 +146,9 @@ func (e SysPost) Update(c *gin.Context) {
req.SetUpdateBy(user.GetUserId(c))
err = s.UpdateSysPost(&req)
err = s.Update(&req)
if err != nil {
e.Logger.Error(err)
e.Error(500, err, fmt.Sprintf("岗位更新失败!错误详情:%s", err.Error()))
return
}
e.OK(req.GetId(), "更新成功")
@@ -159,16 +158,17 @@ func (e SysPost) Update(c *gin.Context) {
// @Summary 删除岗位
// @Description 删除数据
// @Tags 岗位
// @Param id path int true "id"
// @Param id body dto.SysPostDeleteReq true "请求参数"
// @Success 200 {string} string "{"code": 200, "message": "删除成功"}"
// @Success 500 {string} string "{"code": 500, "message": "删除失败"}"
// @Router /api/v1/post/{postId} [delete]
// @Router /api/v1/post [delete]
// @Security Bearer
func (e SysPost) Delete(c *gin.Context) {
s := service.SysPost{}
req := dto.SysPostById{}
req := dto.SysPostDeleteReq{}
err := e.MakeContext(c).
MakeOrm().
Bind(&req, binding.JSON, nil).
Bind(&req, binding.JSON).
MakeService(&s.Service).
Errors
if err != nil {
@@ -177,10 +177,10 @@ func (e SysPost) Delete(c *gin.Context) {
return
}
req.SetUpdateBy(user.GetUserId(c))
err = s.RemoveSysPost(&req)
err = s.Remove(&req)
if err != nil {
e.Logger.Error(err)
e.Error(500, err, fmt.Sprintf("岗位删除失败!错误详情:%s", err.Error()))
return
}
e.OK(req.GetId(), "删除成功")
}
}
+7 -7
View File
@@ -170,7 +170,7 @@ func (e SysRole) Update(c *gin.Context) {
}
_, err = global.LoadPolicy(c)
if err != nil {
e.Error(http.StatusInternalServerError, err, "")
e.Error(500, err, "")
return
}
e.OK(req.GetId(), "更新成功")
@@ -227,12 +227,12 @@ func (e SysRole) Update2Status(c *gin.Context) {
req := dto.UpdateStatusReq{}
err := e.MakeContext(c).
MakeOrm().
Bind(&req, nil, binding.JSON).
Bind(&req).
MakeService(&s.Service).
Errors
if err != nil {
e.Logger.Error(err)
e.Error(500, err, fmt.Sprintf("更新角色状态失败,失败原因:%s ", err.Error()))
e.Error(500, err, fmt.Sprintf("更新角色状态失败,失败原因:%s ", err.Error()))
return
}
req.SetUpdateBy(user.GetUserId(c))
@@ -255,7 +255,7 @@ func (e SysRole) Update2Status(c *gin.Context) {
// @Router /api/v1/role-status/{id} [put]
// @Security Bearer
func (e SysRole) Update2DataScope(c *gin.Context) {
s := &service.SysRole{}
s := service.SysRole{}
req := dto.RoleDataScopeReq{}
err := e.MakeContext(c).
MakeOrm().
@@ -273,10 +273,10 @@ func (e SysRole) Update2DataScope(c *gin.Context) {
DeptIds: req.DeptIds,
}
data.UpdateBy = user.GetUserId(c)
err = s.UpdateDataScope(data)
err = s.UpdateDataScope(&req).Error
if err != nil {
e.Error(http.StatusInternalServerError, err, "")
e.Error(500, err, fmt.Sprintf("更新角色数据权限失败!错误详情:%s", err.Error()))
return
}
e.OK(nil, "操作成功")
}
}
+23 -16
View File
@@ -30,10 +30,10 @@ type SysUser struct {
// @Security Bearer
func (e SysUser) GetPage(c *gin.Context) {
s := service.SysUser{}
req := dto.SysUserSearch{}
req := dto.SysUserGetPageReq{}
err := e.MakeContext(c).
MakeOrm().
Bind(&req, binding.Form).
Bind(&req).
MakeService(&s.Service).
Errors
if err != nil {
@@ -48,7 +48,7 @@ func (e SysUser) GetPage(c *gin.Context) {
list := make([]models.SysUser, 0)
var count int64
err = s.GetSysUserPage(&req, p, &list, &count)
err = s.GetPage(&req, p, &list, &count)
if err != nil {
e.Error(500, err, "查询失败")
return
@@ -63,7 +63,7 @@ func (e SysUser) GetPage(c *gin.Context) {
// @Tags 用户
// @Param userId path int true "用户编码"
// @Success 200 {object} response.Response "{"code": 200, "data": [...]}"
// @Router /api/v1/sysUser/{userId} [get]
// @Router /api/v1/sys-user/{userId} [get]
// @Security Bearer
func (e SysUser) Get(c *gin.Context) {
s := service.SysUser{}
@@ -81,7 +81,7 @@ func (e SysUser) Get(c *gin.Context) {
var object models.SysUser
//数据权限检查
p := actions.GetPermissionFromContext(c)
err = s.GetSysUser(&req, p, &object)
err = s.Get(&req, p, &object)
if err != nil {
e.Error(http.StatusUnprocessableEntity, err, "查询失败")
return
@@ -97,7 +97,8 @@ func (e SysUser) Get(c *gin.Context) {
// @Product application/json
// @Param data body dto.SysUserControl true "用户数据"
// @Success 200 {object} response.Response "{"code": 200, "data": [...]}"
// @Router /api/v1/sysUser [post]
// @Router /api/v1/sys-user [post]
// @Security Bearer
func (e SysUser) Insert(c *gin.Context) {
s := service.SysUser{}
req := dto.SysUserControl{}
@@ -113,7 +114,7 @@ func (e SysUser) Insert(c *gin.Context) {
}
// 设置创建人
req.SetCreateBy(user.GetUserId(c))
err = s.InsertSysUser(&req)
err = s.Insert(&req)
if err != nil {
e.Logger.Error(err)
e.Error(500, err, err.Error())
@@ -132,12 +133,13 @@ func (e SysUser) Insert(c *gin.Context) {
// @Param data body dto.SysUserControl true "body"
// @Success 200 {object} response.Response "{"code": 200, "data": [...]}"
// @Router /api/v1/sys-user/{userId} [put]
// @Security Bearer
func (e SysUser) Update(c *gin.Context) {
s := service.SysUser{}
req := dto.SysUserControl{}
err := e.MakeContext(c).
MakeOrm().
Bind(&req, binding.JSON, nil).
Bind(&req).
MakeService(&s.Service).
Errors
if err != nil {
@@ -151,7 +153,7 @@ func (e SysUser) Update(c *gin.Context) {
//数据权限检查
p := actions.GetPermissionFromContext(c)
err = s.UpdateSysUser(&req, p)
err = s.Update(&req, p)
if err != nil {
e.Logger.Error(err)
return
@@ -166,6 +168,7 @@ func (e SysUser) Update(c *gin.Context) {
// @Param userId path int true "userId"
// @Success 200 {object} response.Response "{"code": 200, "data": [...]}"
// @Router /api/v1/sys-user/{userId} [delete]
// @Security Bearer
func (e SysUser) Delete(c *gin.Context) {
s := service.SysUser{}
req := dto.SysUserById{}
@@ -186,7 +189,7 @@ func (e SysUser) Delete(c *gin.Context) {
// 数据权限检查
p := actions.GetPermissionFromContext(c)
err = s.RemoveSysUser(&req, p)
err = s.Remove(&req, p)
if err != nil {
e.Logger.Error(err)
return
@@ -202,6 +205,7 @@ func (e SysUser) Delete(c *gin.Context) {
// @Param file formData file true "file"
// @Success 200 {object} response.Response "{"code": 200, "data": [...]}"
// @Router /api/v1/user/avatar [post]
// @Security Bearer
func (e SysUser) InsetAvatar(c *gin.Context) {
s := service.SysUser{}
req := dto.SysUserControl{}
@@ -233,7 +237,7 @@ func (e SysUser) InsetAvatar(c *gin.Context) {
req.UserId = p.UserId
req.Avatar = "/" + filPath
err = s.UpdateSysUser(&req, p)
err = s.Update(&req, p)
if err != nil {
e.Logger.Error(err)
return
@@ -250,6 +254,7 @@ func (e SysUser) InsetAvatar(c *gin.Context) {
// @Param data body dto.UpdateSysUserStatusReq true "body"
// @Success 200 {object} response.Response "{"code": 200, "data": [...]}"
// @Router /api/v1/user/status [put]
// @Security Bearer
func (e SysUser) UpdateStatus(c *gin.Context) {
s := service.SysUser{}
req := dto.UpdateSysUserStatusReq{}
@@ -286,6 +291,7 @@ func (e SysUser) UpdateStatus(c *gin.Context) {
// @Param data body dto.ResetSysUserPwdReq true "body"
// @Success 200 {object} response.Response "{"code": 200, "data": [...]}"
// @Router /api/v1/user/pwd/reset [put]
// @Security Bearer
func (e SysUser) ResetPwd(c *gin.Context) {
s := service.SysUser{}
req := dto.ResetSysUserPwdReq{}
@@ -321,7 +327,7 @@ func (e SysUser) ResetPwd(c *gin.Context) {
// @Product application/json
// @Param data body dto.PassWord true "body"
// @Success 200 {object} response.Response "{"code": 200, "data": [...]}"
// @Router /api/v1/user/pwd [post]
// @Router /api/v1/user/pwd/set [put]
// @Security Bearer
func (e SysUser) UpdatePwd(c *gin.Context) {
s := service.SysUser{}
@@ -397,8 +403,10 @@ func (e SysUser) GetProfile(c *gin.Context) {
func (e SysUser) GetInfo(c *gin.Context) {
req := dto.SysUserById{}
s := service.SysUser{}
r := service.SysRole{}
err := e.MakeContext(c).
MakeOrm().
MakeService(&r.Service).
MakeService(&s.Service).
Errors
if err != nil {
@@ -413,21 +421,20 @@ func (e SysUser) GetInfo(c *gin.Context) {
permissions[0] = "*:*:*"
var buttons = make([]string, 1)
buttons[0] = "*:*:*"
RoleMenu := models.RoleMenu{}
RoleMenu.RoleId = user.GetRoleId(c)
var mp = make(map[string]interface{})
mp["roles"] = roles
if user.GetRoleName(c) == "admin" || user.GetRoleName(c) == "系统管理员" {
mp["permissions"] = permissions
mp["buttons"] = buttons
} else {
list, _ := RoleMenu.GetPermis(e.Orm)
list, _ := r.GetById(user.GetRoleId(c))
mp["permissions"] = list
mp["buttons"] = list
}
sysUser := models.SysUser{}
req.Id = user.GetUserId(c)
err = s.GetSysUser(&req, p, &sysUser)
err = s.Get(&req, p, &sysUser)
if err != nil {
e.Error(http.StatusUnauthorized, err, "登录失败")
return
+30 -30
View File
@@ -49,33 +49,33 @@ func (e *DataPermission) GetDataScope(tableName string, db *gorm.DB) (*gorm.DB,
return db, nil
}
func DataScopes(tableName string, userId int) func(db *gorm.DB) *gorm.DB {
return func(db *gorm.DB) *gorm.DB {
user := new(SysUser)
role := new(SysRole)
user.UserId = userId
err := db.Find(user, userId).Error
if err != nil {
db.Error = errors.New("获取用户数据出错 msg:" + err.Error())
return db
}
err = db.Find(role, user.RoleId).Error
if err != nil {
db.Error = errors.New("获取用户数据出错 msg:" + err.Error())
return db
}
if role.DataScope == "2" {
return db.Where(tableName+".create_by in (select sys_user.user_id from sys_role_dept left join sys_user on sys_user.dept_id=sys_role_dept.dept_id where sys_role_dept.role_id = ?)", user.RoleId)
}
if role.DataScope == "3" {
return db.Where(tableName+".create_by in (SELECT user_id from sys_user where dept_id = ? )", user.DeptId)
}
if role.DataScope == "4" {
return db.Where(tableName+".create_by in (SELECT user_id from sys_user where sys_user.dept_id in(select dept_id from sys_dept where dept_path like ? ))", "%"+pkg.IntToString(user.DeptId)+"%")
}
if role.DataScope == "5" || role.DataScope == "" {
return db.Where(tableName+".create_by = ?", userId)
}
return db
}
}
//func DataScopes(tableName string, userId int) func(db *gorm.DB) *gorm.DB {
// return func(db *gorm.DB) *gorm.DB {
// user := new(SysUser)
// role := new(SysRole)
// user.UserId = userId
// err := db.Find(user, userId).Error
// if err != nil {
// db.Error = errors.New("获取用户数据出错 msg:" + err.Error())
// return db
// }
// err = db.Find(role, user.RoleId).Error
// if err != nil {
// db.Error = errors.New("获取用户数据出错 msg:" + err.Error())
// return db
// }
// if role.DataScope == "2" {
// return db.Where(tableName+".create_by in (select sys_user.user_id from sys_role_dept left join sys_user on sys_user.dept_id=sys_role_dept.dept_id where sys_role_dept.role_id = ?)", user.RoleId)
// }
// if role.DataScope == "3" {
// return db.Where(tableName+".create_by in (SELECT user_id from sys_user where dept_id = ? )", user.DeptId)
// }
// if role.DataScope == "4" {
// return db.Where(tableName+".create_by in (SELECT user_id from sys_user where sys_user.dept_id in(select dept_id from sys_dept where dept_path like ? ))", "%"+pkg.IntToString(user.DeptId)+"%")
// }
// if role.DataScope == "5" || role.DataScope == "" {
// return db.Where(tableName+".create_by = ?", userId)
// }
// return db
// }
//}
-154
View File
@@ -1,154 +0,0 @@
package models
//type Menu struct {
// MenuId int `json:"menuId" gorm:"primaryKey;autoIncrement"`
// MenuName string `json:"menuName" gorm:"size:128;"`
// Title string `json:"title" gorm:"size:128;"`
// Icon string `json:"icon" gorm:"size:128;"`
// Path string `json:"path" gorm:"size:128;"`
// Paths string `json:"paths" gorm:"size:128;"`
// MenuType string `json:"menuType" gorm:"size:1;"`
// Action string `json:"action" gorm:"size:16;"`
// Permission string `json:"permission" gorm:"size:255;"`
// ParentId int `json:"parentId" gorm:"size:11;"`
// NoCache bool `json:"noCache" gorm:"size:8;"`
// Breadcrumb string `json:"breadcrumb" gorm:"size:255;"`
// Component string `json:"component" gorm:"size:255;"`
// Sort int `json:"sort" gorm:"size:4;"`
// Visible string `json:"visible" gorm:"size:1;"`
// CreateBy string `json:"createBy" gorm:"size:128;"`
// UpdateBy string `json:"updateBy" gorm:"size:128;"`
// IsFrame string `json:"isFrame" gorm:"size:1;DEFAULT:0;"`
// DataScope string `json:"dataScope" gorm:"-"`
// Params string `json:"params" gorm:"-"`
// RoleId int `gorm:"-"`
// Children []Menu `json:"children" gorm:"-"`
// IsSelect bool `json:"is_select" gorm:"-"`
//
// models.ModelTime
//}
//
//func (Menu) TableName() string {
// return "sys_menu"
//}
//
//type MenuLable struct {
// Id int `json:"id" gorm:"-"`
// Label string `json:"label" gorm:"-"`
// Children []MenuLable `json:"children" gorm:"-"`
//}
//
//type Menus struct {
// MenuId int `json:"menuId" gorm:"column:menu_id;primaryKey;autoIncrement;"`
// MenuName string `json:"menuName" gorm:"column:menu_name"`
// Title string `json:"title" gorm:"column:title"`
// Icon string `json:"icon" gorm:"column:icon"`
// Path string `json:"path" gorm:"column:path"`
// MenuType string `json:"menuType" gorm:"column:menu_type"`
// Action string `json:"action" gorm:"column:action"`
// Permission string `json:"permission" gorm:"column:permission"`
// ParentId int `json:"parentId" gorm:"column:parent_id"`
// NoCache bool `json:"noCache" gorm:"column:no_cache"`
// Breadcrumb string `json:"breadcrumb" gorm:"column:breadcrumb"`
// Component string `json:"component" gorm:"column:component"`
// Sort int `json:"sort" gorm:"column:sort"`
//
// Visible string `json:"visible" gorm:"column:visible"`
// Children []Menu `json:"children" gorm:"-"`
//
// CreateBy string `json:"createBy" gorm:"column:create_by"`
// UpdateBy string `json:"updateBy" gorm:"column:update_by"`
// DataScope string `json:"dataScope" gorm:"-"`
// Params string `json:"params" gorm:"-"`
// BaseModel
//}
//
//func (Menus) TableName() string {
// return "sys_menu"
//}
//
//type MenuRole struct {
// Menus
// IsSelect bool `json:"is_select" gorm:"-"`
//}
//
//type MS []Menu
//
//func (e *Menu) Get(tx *gorm.DB) (Menus []Menu, err error) {
// table := tx.Table(e.TableName())
// if e.MenuName != "" {
// table = table.Where("menu_name = ?", e.MenuName)
// }
// if e.Path != "" {
// table = table.Where("path = ?", e.Path)
// }
// if e.Action != "" {
// table = table.Where("action = ?", e.Action)
// }
// if e.MenuType != "" {
// table = table.Where("menu_type = ?", e.MenuType)
// }
//
// if err = table.Order("sort").Find(&Menus).Error; err != nil {
// return
// }
// return
//}
//
//func (e *Menu) GetPage(tx *gorm.DB) (Menus []Menu, err error) {
// table := tx.Table(e.TableName())
// if e.MenuName != "" {
// table = table.Where("menu_name = ?", e.MenuName)
// }
// if e.Title != "" {
// table = table.Where("title = ?", e.Title)
// }
// if e.Visible != "" {
// table = table.Where("visible = ?", e.Visible)
// }
// if e.MenuType != "" {
// table = table.Where("menu_type = ?", e.MenuType)
// }
//
// // 数据权限控制
// dataPermission := new(DataPermission)
// dataPermission.UserId, _ = pkg.StringToInt(e.DataScope)
// table, err = dataPermission.GetDataScope("sys_menu", table)
// if err != nil {
// return nil, err
// }
// if err = table.Order("sort").Find(&Menus).Error; err != nil {
// return
// }
// return
//}
//
//func (e *Menu) Create(tx *gorm.DB) (id int, err error) {
// result := tx.Table(e.TableName()).Create(&e)
// if result.Error != nil {
// err = result.Error
// return
// }
// err = InitPaths(tx, e)
// if err != nil {
// return
// }
// id = e.MenuId
// return
//}
//
//func InitPaths(tx *gorm.DB, menu *Menu) (err error) {
// parentMenu := new(Menu)
// if menu.ParentId != 0 {
// tx.Table("sys_menu").Where("menu_id = ?", menu.ParentId).First(parentMenu)
// if parentMenu.Paths == "" {
// err = errors.New("父级paths异常,请尝试对当前节点父级菜单进行更新操作!")
// return
// }
// menu.Paths = parentMenu.Paths + "/" + pkg.IntToString(menu.MenuId)
// } else {
// menu.Paths = "/0/" + pkg.IntToString(menu.MenuId)
// }
// tx.Table("sys_menu").Where("menu_id = ?", menu.MenuId).Update("paths", menu.Paths)
// return
//}
-241
View File
@@ -1,241 +0,0 @@
package models
//type SysRole struct {
// RoleId int `json:"roleId" gorm:"primaryKey;autoIncrement"` // 角色编码
// RoleName string `json:"roleName" gorm:"size:128;"` // 角色名称
// Status string `json:"status" gorm:"size:4;"` //
// RoleKey string `json:"roleKey" gorm:"size:128;"` //角色代码
// RoleSort int `json:"roleSort" gorm:""` //角色排序
// Flag string `json:"flag" gorm:"size:128;"` //
// Remark string `json:"remark" gorm:"size:255;"` //备注
// Admin bool `json:"admin" gorm:"size:4;"`
// DataScope string `json:"dataScope" gorm:"size:128;"`
// models.ModelTime
// models.ControlBy
//
// Params string `json:"params" gorm:"-"`
// MenuIds []int `json:"menuIds" gorm:"-"`
// DeptIds []int `json:"deptIds" gorm:"-"`
//}
//
//func (SysRole) TableName() string {
// return "sys_role"
//}
type MenuIdList struct {
MenuId int `json:"menuId"`
}
//func (role *SysRole) GetById(tx *gorm.DB, id interface{}) error {
// return tx.First(role, id).Error
//}
//
//func (role *SysRole) GetPage(pageSize int, pageIndex int) ([]SysRole, int, error) {
// var doc []SysRole
//
// table := orm.Eloquent.Table("sys_role")
// if role.RoleId != 0 {
// table = table.Where("role_id = ?", role.RoleId)
// }
// if role.RoleName != "" {
// table = table.Where("role_name = ?", role.RoleName)
// }
// if role.Status != "" {
// table = table.Where("status = ?", role.Status)
// }
// if role.RoleKey != "" {
// table = table.Where("role_key = ?", role.RoleKey)
// }
//
// // 数据权限控制
// dataPermission := new(DataPermission)
// dataPermission.UserId, _ = tools.StringToInt(role.DataScope)
// table, err := dataPermission.GetDataScope("sys_role", table)
// if err != nil {
// return nil, 0, err
// }
// var count int64
//
// if err := table.Order("role_sort").Offset((pageIndex - 1) * pageSize).Limit(pageSize).Find(&doc).Offset(-1).Limit(-1).Count(&count).Error; err != nil {
// return nil, 0, err
// }
// //table.Where("`deleted_at` IS NULL").Count(&count)
// return doc, int(count), nil
//}
//
//func (role *SysRole) Get() (SysRole SysRole, err error) {
// table := orm.Eloquent.Table("sys_role")
// if role.RoleId != 0 {
// table = table.Where("role_id = ?", role.RoleId)
// }
// if role.RoleName != "" {
// table = table.Where("role_name = ?", role.RoleName)
// }
// if err = table.First(&SysRole).Error; err != nil {
// return
// }
//
// return
//}
//
//func (role *SysRole) GetOne(sysRole *SysRole) (err error) {
// table := orm.Eloquent.Table("sys_role")
// if role.RoleId != 0 {
// table = table.Where("role_id = ?", role.RoleId)
// }
// if role.RoleName != "" {
// table = table.Where("role_name = ?", role.RoleName)
// }
// if err = table.First(sysRole).Error; err != nil {
// return
// }
//
// return
//}
//
//func (role *SysRole) GetList() (SysRole []SysRole, err error) {
// table := orm.Eloquent.Table("sys_role")
// if role.RoleId != 0 {
// table = table.Where("role_id = ?", role.RoleId)
// }
// if role.RoleName != "" {
// table = table.Where("role_name = ?", role.RoleName)
// }
// if err = table.Order("role_sort").Find(&SysRole).Error; err != nil {
// return
// }
//
// return
//}
//
//// 获取角色对应的菜单ids
//func (role *SysRole) GetRoleMeunId() ([]int, error) {
// menuIds := make([]int, 0)
// menuList := make([]MenuIdList, 0)
// if err := orm.Eloquent.Table("sys_role_menu").
// Select("sys_role_menu.menu_id").
// Where("role_id = ? ", role.RoleId).
// Where(" sys_role_menu.menu_id not in(select sys_menu.parent_id from sys_role_menu " +
// "LEFT JOIN sys_menu on sys_menu.menu_id=sys_role_menu.menu_id where role_id =? and parent_id is not null)", role.RoleId).
// Find(&menuList).Error; err != nil {
// return nil, err
// }
//
// for i := 0; i < len(menuList); i++ {
// menuIds = append(menuIds, menuList[i].MenuId)
// }
// return menuIds, nil
//}
//
//func (role *SysRole) Insert() (id int, err error) {
// var i int64
// orm.Eloquent.Table(role.TableName()).Where("role_name=? or role_key = ?", role.RoleName, role.RoleKey).Count(&i)
// if i > 0 {
// return 0, errors.New("角色名称或者角色标识已经存在!")
// }
// role.UpdateBy = ""
// result := orm.Eloquent.Table(role.TableName()).Create(&role)
// if result.Error != nil {
// err = result.Error
// return
// }
// id = role.RoleId
// return
//}
//
//type DeptIdList struct {
// DeptId int `json:"DeptId"`
//}
//
//func (role *SysRole) GetRoleDeptId() ([]int, error) {
// deptIds := make([]int, 0)
// deptList := make([]DeptIdList, 0)
// if err := orm.Eloquent.Table("sys_role_dept").Select("sys_role_dept.dept_id").Joins("LEFT JOIN sys_dept on sys_dept.dept_id=sys_role_dept.dept_id").Where("role_id = ? ", role.RoleId).Where(" sys_role_dept.dept_id not in(select sys_dept.parent_id from sys_role_dept LEFT JOIN sys_dept on sys_dept.dept_id=sys_role_dept.dept_id where role_id =? )", role.RoleId).Find(&deptList).Error; err != nil {
// return nil, err
// }
//
// for i := 0; i < len(deptList); i++ {
// deptIds = append(deptIds, deptList[i].DeptId)
// }
//
// return deptIds, nil
//}
//
////修改
//func (role *SysRole) Update(id int) (update SysRole, err error) {
// if err = orm.Eloquent.Table(role.TableName()).First(&update, id).Error; err != nil {
// return
// }
//
// if role.RoleName != "" && role.RoleName != update.RoleName {
// return update, errors.New("角色名称不允许修改!")
// }
//
// if role.RoleKey != "" && role.RoleKey != update.RoleKey {
// return update, errors.New("角色标识不允许修改!")
// }
//
// //参数1:是要修改的数据
// //参数2:是修改的数据
// if err = orm.Eloquent.Table(role.TableName()).Model(&update).Updates(&role).Error; err != nil {
// return
// }
// return
//}
//
////批量删除
//func (role *SysRole) BatchDelete(id []int) (Result bool, err error) {
// tx := orm.Eloquent.Begin()
//
// defer func() {
// if r := recover(); r != nil {
// tx.Rollback()
// }
// }()
//
// if err := tx.Error; err != nil {
// return false, err
// }
// // 查询角色
// var roles []SysRole
// if err := tx.Table("sys_role").Where("role_id in (?)", id).Find(&roles).Error; err != nil {
// tx.Rollback()
// return false, err
// }
//
// var count int64
// if err := tx.Table("sys_user").Where("role_id in (?)", id).Count(&count).Error; err != nil {
// tx.Rollback()
// return false, err
// }
// if count > 0 {
// tx.Rollback()
// return false, errors.New("存在绑定用户,请解绑后重试")
// }
//
// // 删除角色
// if err = tx.Table(role.TableName()).Where("role_id in (?)", id).Unscoped().Delete(&SysRole{}).Error; err != nil {
// tx.Rollback()
// return false, err
// }
//
// // 删除角色菜单
// if err := tx.Table("sys_role_menu").Where("role_id in (?)", id).Delete(&RoleMenu{}).Error; err != nil {
// tx.Rollback()
// return false, err
// }
//
// // 删除casbin配置
// for i := 0; i < len(roles); i++ {
// if err := tx.Table("sys_casbin_rule").Where("v0 in (?)", roles[0].RoleKey).Delete(&CasbinRule{}).Error; err != nil {
// tx.Rollback()
// return false, err
// }
// }
//
// if err := tx.Commit().Error; err != nil {
// return false, err
// }
//
// return true, nil
//}
-11
View File
@@ -1,11 +0,0 @@
package models
//sys_role_dept
type SysRoleDept struct {
RoleId int `gorm:"size:11;primaryKey"`
DeptId int `gorm:"size:11;primaryKey"`
}
func (SysRoleDept) TableName() string {
return "sys_role_dept"
}
-171
View File
@@ -1,171 +0,0 @@
package models
import (
"fmt"
"github.com/casbin/casbin/v2"
"github.com/go-admin-team/go-admin-core/sdk/pkg"
"gorm.io/gorm"
"go-admin/common/models"
)
type RoleMenu struct {
RoleId int `gorm:""`
MenuId int `gorm:""`
RoleName string `gorm:"size:128"`
models.ControlBy
}
func (RoleMenu) TableName() string {
return "sys_role_menu"
}
type MenuPath struct {
Path string `json:"path"`
}
func (rm *RoleMenu) Get(tx *gorm.DB) ([]RoleMenu, error) {
var r []RoleMenu
table := tx.Table("sys_role_menu")
if rm.RoleId != 0 {
table = table.Where("role_id = ?", rm.RoleId)
}
if err := table.Find(&r).Error; err != nil {
return nil, err
}
return r, nil
}
func (rm *RoleMenu) GetPermis(tx *gorm.DB) ([]string, error) {
var r []SysMenu
table := tx.Select("sys_menu.permission").Table("sys_menu").Joins("left join sys_role_menu on sys_menu.menu_id = sys_role_menu.menu_id")
table = table.Where("role_id = ?", rm.RoleId)
table = table.Where("sys_menu.menu_type in('F','C')")
if err := table.Find(&r).Error; err != nil {
return nil, err
}
var list []string
for i := 0; i < len(r); i++ {
list = append(list, r[i].Permission)
}
return list, nil
}
func (rm *RoleMenu) GetIDS(tx *gorm.DB) ([]MenuPath, error) {
var r []MenuPath
table := tx.Select("sys_menu.path").Table("sys_role_menu")
table = table.Joins("left join sys_role on sys_role.role_id=sys_role_menu.role_id")
table = table.Joins("left join sys_menu on sys_menu.id=sys_role_menu.menu_id")
table = table.Where("sys_role.role_name = ? and sys_menu.type=1", rm.RoleName)
if err := table.Find(&r).Error; err != nil {
return nil, err
}
return r, nil
}
func (rm *RoleMenu) DeleteRoleMenu(tx *gorm.DB, roleId int) error {
if err := tx.Table("sys_role_dept").Where("role_id = ?", roleId).Delete(&rm).Error; err != nil {
return err
}
if err := tx.Table("sys_role_menu").Where("role_id = ?", roleId).Delete(&rm).Error; err != nil {
return err
}
var role SysRole
if err := tx.Table("sys_role").Where("role_id = ?", roleId).First(&role).Error; err != nil {
return err
}
sql3 := "delete from sys_casbin_rule where v0= '" + role.RoleKey + "';"
if err := tx.Exec(sql3).Error; err != nil {
return err
}
return nil
}
// 该方法即将弃用
func (rm *RoleMenu) BatchDeleteRoleMenu(tx *gorm.DB, roleIds []int) error {
if err := tx.Table("sys_role_menu").Where("role_id in (?)", roleIds).Delete(&rm).Error; err != nil {
return err
}
var role []SysRole
if err := tx.Table("sys_role").Where("role_id in (?)", roleIds).Find(&role).Error; err != nil {
return err
}
sql := ""
for i := 0; i < len(role); i++ {
sql += "delete from sys_casbin_rule where v0= '" + role[i].RoleName + "';"
}
if err := tx.Exec(sql).Error; err != nil {
return err
}
if err := tx.Commit().Error; err != nil {
return err
}
return nil
}
func (rm *RoleMenu) Insert(tx *gorm.DB, enforcer *casbin.SyncedEnforcer, roleId int, menuId []int) error {
var err error
var (
role SysRole
menu []SysMenu
casbinRules []CasbinRule // casbinRule 待插入队列
)
// 在事务中做一些数据库操作(从这一点使用'tx',而不是'db')
if err = tx.Table("sys_role").Where("role_id = ?", roleId).First(&role).Error; err != nil {
return err
}
if err = tx.Table("sys_menu").Where("menu_id in (?)", menuId).Find(&menu).Error; err != nil {
return err
}
//ORM不支持批量插入所以需要拼接 sql 串
sysRoleMenuSql := "INSERT INTO `sys_role_menu` (`role_id`,`menu_id`,`role_name`) VALUES "
for i, m := range menu {
// 拼装'role_menu'表批量插入SQL语句
sysRoleMenuSql += fmt.Sprintf("(%d,%d,'%s')", role.RoleId, m.MenuId, role.RoleKey)
if i == len(menu)-1 {
sysRoleMenuSql += ";" //最后一条数据 以分号结尾
} else {
sysRoleMenuSql += ","
}
if m.MenuType == "A" {
// 加入队列
casbinRules = append(casbinRules,
CasbinRule{
V0: role.RoleKey,
V1: m.Path,
V2: m.Action,
})
}
}
// 执行批量插入sys_role_menu
if err = tx.Exec(sysRoleMenuSql).Error; err != nil {
return err
}
// 执行批量插入sys_casbin_rule
if len(casbinRules) > 0 {
if err = tx.Create(&casbinRules).Error; err != nil {
return err
}
}
return nil
}
func (rm *RoleMenu) Delete(tx *gorm.DB, RoleId string, MenuID string) (bool, error) {
rm.RoleId, _ = pkg.StringToInt(RoleId)
table := tx.Table("sys_role_menu").Where("role_id = ?", RoleId)
if MenuID != "" {
table = table.Where("menu_id = ?", MenuID)
}
if err := table.Delete(&rm).Error; err != nil {
return false, err
}
return true, nil
}
+2 -2
View File
@@ -7,11 +7,11 @@ type SysDept struct {
ParentId int `json:"parentId" gorm:""` //上级部门
DeptPath string `json:"deptPath" gorm:"size:255;"` //
DeptName string `json:"deptName" gorm:"size:128;"` //部门名称
Sort int `json:"sort" gorm:""` //排序
Sort int `json:"sort" gorm:"size:4;"` //排序
Leader string `json:"leader" gorm:"size:128;"` //负责人
Phone string `json:"phone" gorm:"size:11;"` //手机
Email string `json:"email" gorm:"size:64;"` //邮箱
Status string `json:"status" gorm:"size:4;"` //状态
Status int `json:"status" gorm:"size:4;"` //状态
models.ControlBy
models.ModelTime
DataScope string `json:"dataScope" gorm:"-"`
+3 -4
View File
@@ -5,9 +5,6 @@ import (
)
type SysDictData struct {
models.ControlBy
models.ModelTime
DictCode int `json:"dictCode" gorm:"primaryKey;column:dict_code;autoIncrement;comment:主键编码"`
DictSort int `json:"dictSort" gorm:"size:20;comment:DictSort"`
DictLabel string `json:"dictLabel" gorm:"size:128;comment:DictLabel"`
@@ -16,9 +13,11 @@ type SysDictData struct {
CssClass string `json:"cssClass" gorm:"size:128;comment:CssClass"`
ListClass string `json:"listClass" gorm:"size:128;comment:ListClass"`
IsDefault string `json:"isDefault" gorm:"size:8;comment:IsDefault"`
Status string `json:"status" gorm:"size:4;comment:Status"`
Status int `json:"status" gorm:"size:4;comment:Status"`
Default string `json:"default" gorm:"size:8;comment:Default"`
Remark string `json:"remark" gorm:"size:255;comment:Remark"`
models.ControlBy
models.ModelTime
}
func (SysDictData) TableName() string {
+3 -4
View File
@@ -5,14 +5,13 @@ import (
)
type SysDictType struct {
models.ControlBy
models.ModelTime
ID int `json:"id" gorm:"primaryKey;column:dict_id;autoIncrement;comment:主键编码"`
DictName string `json:"dictName" gorm:"size:128;comment:DictName"`
DictType string `json:"dictType" gorm:"size:128;comment:DictType"`
Status string `json:"status" gorm:"size:4;comment:Status"`
Status int `json:"status" gorm:"size:4;comment:Status"`
Remark string `json:"remark" gorm:"size:255;comment:Remark"`
models.ControlBy
models.ModelTime
}
func (SysDictType) TableName() string {
+8 -4
View File
@@ -57,24 +57,28 @@ func SaveOperaLog(message storage.Messager) (err error) {
if db == nil {
err = errors.New("db not exist")
log.Errorf("host[%s]'s %s", message.GetPrefix(), err.Error())
return err
// Log writing to the database ignores error
return nil
}
var rb []byte
rb, err = json.Marshal(message.GetValues())
if err != nil {
log.Errorf("json Marshal error, %s", err.Error())
return err
// Log writing to the database ignores error
return nil
}
var l SysOperaLog
err = json.Unmarshal(rb, &l)
if err != nil {
log.Errorf("json Unmarshal error, %s", err.Error())
return err
// Log writing to the database ignores error
return nil
}
err = db.Create(&l).Error
if err != nil {
log.Errorf("db create error, %s", err.Error())
return err
// Log writing to the database ignores error
return nil
}
return nil
}
+1
View File
@@ -15,6 +15,7 @@ type SysRole struct {
Params string `json:"params" gorm:"-"`
MenuIds []int `json:"menuIds" gorm:"-"`
DeptIds []int `json:"deptIds" gorm:"-"`
SysDept []SysDept `json:"sysDept" gorm:"many2many:sys_role_dept;foreignKey:RoleId;joinForeignKey:role_id;references:DeptId;joinReferences:dept_id;"`
SysMenu *[]SysMenu `json:"sysMenu" gorm:"many2many:sys_role_menu;foreignKey:RoleId;joinForeignKey:role_id;references:MenuId;joinReferences:menu_id;"`
models.ControlBy
models.ModelTime
+2 -2
View File
@@ -7,8 +7,6 @@ import (
)
type SysUser struct {
models.ControlBy
models.ModelTime
UserId int `gorm:"primaryKey;autoIncrement;comment:编码" json:"userId"`
Username string `json:"username" gorm:"size:64;comment:用户名"`
Password string `json:"-" gorm:"size:128;comment:密码"`
@@ -27,6 +25,8 @@ type SysUser struct {
PostIds []int `json:"postIds" gorm:"-"`
RoleIds []int `json:"roleIds" gorm:"-"`
Dept *SysDept `json:"dept"`
models.ControlBy
models.ModelTime
}
func (SysUser) TableName() string {
+1 -1
View File
@@ -20,6 +20,6 @@ func registerSyPostRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddlew
r.GET("/:id", api.Get)
r.POST("", api.Insert)
r.PUT("/:id", api.Update)
r.DELETE("/:id", api.Delete)
r.DELETE("", api.Delete)
}
}
+21 -11
View File
@@ -1,6 +1,7 @@
package router
import (
"github.com/go-admin-team/go-admin-core/sdk/config"
"go-admin/app/admin/apis"
"mime"
@@ -21,7 +22,9 @@ func InitSysRouter(r *gin.Engine, authMiddleware *jwt.GinJWTMiddleware) *gin.Rou
// 静态文件
sysStaticFileRouter(g)
// swagger;注意:生产环境可以注释掉
sysSwaggerRouter(g)
if config.ApplicationConfig.Mode != "prod" {
sysSwaggerRouter(g)
}
// 需要认证
sysCheckRoleRouterInit(g, authMiddleware)
return g
@@ -33,7 +36,9 @@ func sysBaseRouter(r *gin.RouterGroup) {
go ws.WebsocketManager.SendService()
go ws.WebsocketManager.SendAllService()
r.GET("/", apis.HelloWorld)
if config.ApplicationConfig.Mode != "prod" {
r.GET("/", apis.GoAdmin)
}
r.GET("/info", handler.Ping)
}
@@ -43,7 +48,9 @@ func sysStaticFileRouter(r *gin.RouterGroup) {
return
}
r.Static("/static", "./static")
r.Static("/form-generator", "./static/form-generator")
if config.ApplicationConfig.Mode != "prod" {
r.Static("/form-generator", "./static/form-generator")
}
}
func sysSwaggerRouter(r *gin.RouterGroup) {
@@ -51,16 +58,19 @@ func sysSwaggerRouter(r *gin.RouterGroup) {
}
func sysCheckRoleRouterInit(r *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) {
r.Group("").Use(authMiddleware.MiddlewareFunc()).GET("/ws/:id/:channel", ws.WebsocketManager.WsClient)
r.Group("").Use(authMiddleware.MiddlewareFunc()).GET("/wslogout/:id/:channel", ws.WebsocketManager.UnWsClient)
v1 := r.Group("/api/v1")
wss:=r.Group("").Use(authMiddleware.MiddlewareFunc())
{
wss.GET("/ws/:id/:channel", ws.WebsocketManager.WsClient)
wss.GET("/wslogout/:id/:channel", ws.WebsocketManager.UnWsClient)
}
v1.POST("/login", authMiddleware.LoginHandler)
// Refresh time can be longer than token timeout
v1.GET("/refresh_token", authMiddleware.RefreshHandler)
//registerPageRouter(v1, authMiddleware)
v1 := r.Group("/api/v1")
{
v1.POST("/login", authMiddleware.LoginHandler)
// Refresh time can be longer than token timeout
v1.GET("/refresh_token", authMiddleware.RefreshHandler)
}
registerBaseRouter(v1, authMiddleware)
//registerDictRouter(v1, authMiddleware)
}
func registerBaseRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) {
+1 -1
View File
@@ -28,7 +28,7 @@ func registerSysUserRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddle
{
user.GET("/profile", api.GetProfile)
user.POST("/avatar", api.InsetAvatar)
user.PUT("/pwd", api.UpdatePwd)
user.PUT("/pwd/set", api.UpdatePwd)
user.PUT("/pwd/reset", api.ResetPwd)
user.PUT("/status", api.UpdateStatus)
}
+36 -23
View File
@@ -6,7 +6,8 @@ import (
common "go-admin/common/models"
)
type SysApiSearch struct {
// SysApiGetPageReq 功能列表请求参数
type SysApiGetPageReq struct {
dto.Pagination `search:"-"`
Title string `form:"title" search:"type:contains;column:title;table:sys_api" comment:"标题"`
Path string `form:"path" search:"type:contains;column:path;table:sys_api" comment:"地址"`
@@ -21,11 +22,35 @@ type SysApiOrder struct {
CreatedAtOrder string `search:"type:order;column:created_at;table:sys_api" form:"createdAtOrder"`
}
func (m *SysApiSearch) GetNeedSearch() interface{} {
func (m *SysApiGetPageReq) GetNeedSearch() interface{} {
return *m
}
type SysApiControl struct {
// SysApiInsertReq 功能创建请求参数
type SysApiInsertReq struct {
Id int `json:"-" comment:"编码"` // 编码
Handle string `json:"handle" comment:"handle"`
Title string `json:"title" comment:"标题"`
Path string `json:"path" comment:"地址"`
Type string `json:"type" comment:""`
Action string `json:"action" comment:"类型"`
common.ControlBy
}
func (s *SysApiInsertReq) Generate(model *models.SysApi) {
model.Handle = s.Handle
model.Title = s.Title
model.Path = s.Path
model.Type = s.Type
model.Action = s.Action
}
func (s *SysApiInsertReq) GetId() interface{} {
return s.Id
}
// SysApiUpdateReq 功能更新请求参数
type SysApiUpdateReq struct {
Id int `uri:"id" comment:"编码"` // 编码
Handle string `json:"handle" comment:"handle"`
Title string `json:"title" comment:"标题"`
@@ -35,7 +60,7 @@ type SysApiControl struct {
common.ControlBy
}
func (s *SysApiControl) Generate(model *models.SysApi) {
func (s *SysApiUpdateReq) Generate(model *models.SysApi) {
if s.Id != 0 {
model.Id = s.Id
}
@@ -46,28 +71,16 @@ func (s *SysApiControl) Generate(model *models.SysApi) {
model.Action = s.Action
}
func (s *SysApiControl) GetId() interface{} {
func (s *SysApiUpdateReq) GetId() interface{} {
return s.Id
}
type SysApiById struct {
dto.ObjectById
common.ControlBy
// SysApiGetReq 功能获取请求参数
type SysApiGetReq struct {
dto.ObjectGetReq
}
func (s *SysApiById) GetId() interface{} {
if len(s.Ids) > 0 {
s.Ids = append(s.Ids, s.Id)
return s.Ids
}
return s.Id
}
func (s *SysApiById) Generate() dto.Control {
o := *s
return &o
}
func (s *SysApiById) GenerateM() (common.ActiveRecord, error) {
return &models.SysApi{}, nil
// SysApiDeleteReq 功能删除请求参数
type SysApiDeleteReq struct {
dto.ObjectDeleteReq
}
+10 -11
View File
@@ -25,18 +25,17 @@ func (m *SysDeptSearch) GetNeedSearch() interface{} {
return *m
}
// SysDeptControl 增、改使用的结构体
type SysDeptControl struct {
DeptId int `uri:"id" comment:"编码"` // 编码
ParentId int `form:"parentId" comment:"上级部门"` //上级部门
DeptPath string `form:"deptPath" comment:""` //路径
DeptName string `form:"deptName" comment:"部门名称"` //部门名称
Sort int `form:"sort" comment:"排序"` //排序
Leader string `form:"leader" comment:"负责人"` //负责人
Phone string `form:"phone" comment:"手机"` //手机
Email string `form:"email" comment:"邮箱"` //邮箱
Status string `form:"status" comment:"状态"` //状态
DeptId int `uri:"id" comment:"编码"` // 编码
ParentId int `json:"parentId" comment:"上级部门" vd:"?"` //上级部门
DeptPath string `json:"deptPath" comment:""` //路径
DeptName string `json:"deptName" comment:"部门名称" vd:"len($)>0"` //部门名称
Sort int `json:"sort" comment:"排序" vd:"?"` //排序
Leader string `json:"leader,required" comment:"负责人" vd:"@:len($)>0;msg:validation failed:该字段不能为空"` //负责人
Phone string `json:"phone" comment:"手机" vd:"?"` //手机
Email string `json:"email" comment:"邮箱" vd:"?"` //邮箱
Status int `json:"status" comment:"状态" vd:"$>0"` //状态
common.ControlBy
}
@@ -87,4 +86,4 @@ type DeptLabel struct {
Id int `gorm:"-" json:"id"`
Label string `gorm:"-" json:"label"`
Children []DeptLabel `gorm:"-" json:"children"`
}
}
+2 -2
View File
@@ -28,7 +28,7 @@ type SysDictDataControl struct {
CssClass string `json:"cssClass" comment:""`
ListClass string `json:"listClass" comment:""`
IsDefault string `json:"isDefault" comment:""`
Status string `json:"status" comment:""`
Status int `json:"status" comment:""`
Default string `json:"default" comment:""`
Remark string `json:"remark" comment:""`
common.ControlBy
@@ -56,7 +56,7 @@ func (s *SysDictDataControl) GetId() interface{} {
type SysDictDataById struct {
Id int `uri:"dictCode"`
Ids []int `json:"ids"`
common.ControlBy
common.ControlBy `json:"-"`
}
func (s *SysDictDataById) GetId() interface{} {
+1 -1
View File
@@ -27,7 +27,7 @@ type SysDictTypeControl struct {
Id int `uri:"id"`
DictName string `json:"dictName"`
DictType string `json:"dictType"`
Status string `json:"status"`
Status int `json:"status"`
Remark string `json:"remark"`
common.ControlBy
}
+2 -2
View File
@@ -8,7 +8,7 @@ import (
common "go-admin/common/models"
)
type SysOperaLogSearch struct {
type SysOperaLogGetPageReq struct {
dto.Pagination `search:"-"`
Title string `form:"title" search:"type:contains;column:title;table:sys_opera_log" comment:"操作模块"`
Method string `form:"method" search:"type:contains;column:method;table:sys_opera_log" comment:"函数"`
@@ -25,7 +25,7 @@ type SysOperaLogOrder struct {
CreatedAtOrder string `search:"type:order;column:created_at;table:sys_opera_log" form:"createdAtOrder"`
}
func (m *SysOperaLogSearch) GetNeedSearch() interface{} {
func (m *SysOperaLogGetPageReq) GetNeedSearch() interface{} {
return *m
}
+56 -30
View File
@@ -7,8 +7,8 @@ import (
"go-admin/common/dto"
)
// SysPostSearch 列表或者搜索使用结构体
type SysPostSearch struct {
// SysPostPageReq 列表或者搜索使用结构体
type SysPostPageReq struct {
dto.Pagination `search:"-"`
PostId int `form:"postId" search:"type:exact;column:post_id;table:sys_post" comment:"id"` // id
PostName string `form:"postName" search:"type:contains;column:post_name;table:sys_post" comment:"名称"` // 名称
@@ -18,26 +18,22 @@ type SysPostSearch struct {
Remark string `form:"remark" search:"type:exact;column:remark;table:sys_post" comment:"备注"` // 备注
}
func (m *SysPostSearch) GetNeedSearch() interface{} {
func (m *SysPostPageReq) GetNeedSearch() interface{} {
return *m
}
// SysPostControl 增、改使用的结构体
type SysPostControl struct {
PostId int `uri:"id" comment:"id"` // id
PostName string `form:"postName" comment:"名称"` // 名称
PostCode string `form:"postCode" comment:"编码"` // 编码
Sort int `form:"sort" comment:"排序"` // 排序
Status int `form:"status" comment:"状态"` // 状态
Remark string `form:"remark" comment:"备注"` // 备注
// SysPostInsertReq 增使用的结构体
type SysPostInsertReq struct {
PostId int `uri:"id" comment:"id"`
PostName string `form:"postName" comment:"名称"`
PostCode string `form:"postCode" comment:"编码"`
Sort int `form:"sort" comment:"排序"`
Status int `form:"status" comment:"状态"`
Remark string `form:"remark" comment:"备注"`
common.ControlBy
}
// Generate 结构体数据转化 从 SysConfigControl 至 system.SysConfig 对应的模型
func (s *SysPostControl) Generate(model *models.SysPost) {
if s.PostId != 0 {
model.PostId = s.PostId
}
func (s *SysPostInsertReq) Generate(model *models.SysPost) {
model.PostName = s.PostName
model.PostCode = s.PostCode
model.Sort = s.Sort
@@ -52,18 +48,28 @@ func (s *SysPostControl) Generate(model *models.SysPost) {
}
// GetId 获取数据对应的ID
func (s *SysPostControl) GetId() interface{} {
func (s *SysPostInsertReq) GetId() interface{} {
return s.PostId
}
// SysPostById 获取单个或者删除的结构体
type SysPostById struct {
Id int `uri:"id"`
Ids []int `json:"ids"`
// SysPostUpdateReq 改使用的结构体
type SysPostUpdateReq struct {
PostId int `uri:"id" comment:"id"`
PostName string `form:"postName" comment:"名称"`
PostCode string `form:"postCode" comment:"编码"`
Sort int `form:"sort" comment:"排序"`
Status int `form:"status" comment:"状态"`
Remark string `form:"remark" comment:"备注"`
common.ControlBy
}
func (s *SysPostById) Generate(model *models.SysPost) {
func (s *SysPostUpdateReq) Generate(model *models.SysPost) {
model.PostId = s.PostId
model.PostName = s.PostName
model.PostCode = s.PostCode
model.Sort = s.Sort
model.Status = s.Status
model.Remark = s.Remark
if s.ControlBy.UpdateBy != 0 {
model.UpdateBy = s.UpdateBy
}
@@ -72,14 +78,34 @@ func (s *SysPostById) Generate(model *models.SysPost) {
}
}
func (s *SysPostById) GetId() interface{} {
if len(s.Ids) > 0 {
s.Ids = append(s.Ids, s.Id)
return s.Ids
}
func (s *SysPostUpdateReq) GetId() interface{} {
return s.PostId
}
// SysPostGetReq 获取单个的结构体
type SysPostGetReq struct {
Id int `uri:"id"`
}
func (s *SysPostGetReq) GetId() interface{} {
return s.Id
}
func (s *SysPostById) GenerateM() (*models.SysPost, error) {
return &models.SysPost{}, nil
}
// SysPostDeleteReq 删除的结构体
type SysPostDeleteReq struct {
Ids []int `json:"ids"`
common.ControlBy
}
func (s *SysPostDeleteReq) Generate(model *models.SysPost) {
if s.ControlBy.UpdateBy != 0 {
model.UpdateBy = s.UpdateBy
}
if s.ControlBy.CreateBy != 0 {
model.CreateBy = s.CreateBy
}
}
func (s *SysPostDeleteReq) GetId() interface{} {
return s.Ids
}
+17 -3
View File
@@ -46,6 +46,8 @@ type SysRoleControl struct {
DataScope string `form:"dataScope"`
SysMenu []models.SysMenu `form:"sysMenu"`
MenuIds []int `form:"menuIds"`
SysDept []models.SysDept `form:"sysDept"`
DeptIds []int `form:"deptIds"`
common.ControlBy
}
@@ -71,6 +73,7 @@ func (s *SysRoleControl) Generate(model *models.SysRole) {
model.Admin = s.Admin
model.DataScope = s.DataScope
model.SysMenu = &s.SysMenu
model.SysDept = s.SysDept
}
@@ -80,8 +83,8 @@ func (s *SysRoleControl) GetId() interface{} {
}
type UpdateStatusReq struct {
RoleId int `form:"roleId" comment:"角色编码"` // 角色编码
Status string `form:"status" comment:"状态"` // 状态
RoleId int `form:"roleId" comment:"角色编码"` // 角色编码
Status string `form:"status" comment:"状态"` // 状态
common.ControlBy
}
@@ -96,6 +99,9 @@ func (s *UpdateStatusReq) GetId() interface{} {
return s.RoleId
}
type SysRoleByName struct {
RoleName string `form:"role"` // 角色编码
}
// SysRoleById 获取单个或者删除的结构体
type SysRoleById struct {
@@ -126,6 +132,14 @@ type RoleDataScopeReq struct {
DeptIds []int `json:"deptIds"`
}
func (s *RoleDataScopeReq) Generate(model *models.SysRole) {
if s.RoleId != 0 {
model.RoleId = s.RoleId
}
model.DataScope = s.DataScope
model.DeptIds = s.DeptIds
}
type DeptIdList struct {
DeptId int `json:"DeptId"`
}
}
+2 -2
View File
@@ -7,7 +7,7 @@ import (
common "go-admin/common/models"
)
type SysUserSearch struct {
type SysUserGetPageReq struct {
dto.Pagination `search:"-"`
UserId int `form:"userId" search:"type:exact;column:user_id;table:sys_user" comment:"用户ID"`
Username string `form:"username" search:"type:contains;column:username;table:sys_user" comment:"用户名"`
@@ -33,7 +33,7 @@ type DeptJoin struct {
DeptId string `search:"type:contains;column:dept_path;table:sys_dept" form:"deptId"`
}
func (m *SysUserSearch) GetNeedSearch() interface{} {
func (m *SysUserGetPageReq) GetNeedSearch() interface{} {
return *m
}
+4 -4
View File
@@ -19,7 +19,7 @@ type SysApi struct {
}
// GetPage 获取SysApi列表
func (e *SysApi) GetPage(c *dto.SysApiSearch, p *actions.DataPermission, list *[]models.SysApi, count *int64) error {
func (e *SysApi) GetPage(c *dto.SysApiGetPageReq, p *actions.DataPermission, list *[]models.SysApi, count *int64) error {
var err error
var data models.SysApi
@@ -39,7 +39,7 @@ func (e *SysApi) GetPage(c *dto.SysApiSearch, p *actions.DataPermission, list *[
}
// Get 获取SysApi对象with id
func (e *SysApi) Get(d *dto.SysApiById, p *actions.DataPermission, model *models.SysApi) *SysApi {
func (e *SysApi) Get(d *dto.SysApiGetReq, p *actions.DataPermission, model *models.SysApi) *SysApi {
var data models.SysApi
err := e.Orm.Model(&data).
Scopes(
@@ -61,7 +61,7 @@ func (e *SysApi) Get(d *dto.SysApiById, p *actions.DataPermission, model *models
}
// Update 修改SysApi对象
func (e *SysApi) Update(c *dto.SysApiControl, p *actions.DataPermission) error {
func (e *SysApi) Update(c *dto.SysApiUpdateReq, p *actions.DataPermission) error {
var model = models.SysApi{}
db := e.Orm.Debug().First(&model, c.GetId())
if db.RowsAffected == 0 {
@@ -78,7 +78,7 @@ func (e *SysApi) Update(c *dto.SysApiControl, p *actions.DataPermission) error {
}
// Remove 删除SysApi
func (e *SysApi) Remove(d *dto.SysApiById, p *actions.DataPermission) error {
func (e *SysApi) Remove(d *dto.SysApiDeleteReq, p *actions.DataPermission) error {
var data models.SysApi
db := e.Orm.Model(&data).
+22 -6
View File
@@ -61,7 +61,15 @@ func (e *SysDept) Insert(c *dto.SysDeptControl) error {
var err error
var data models.SysDept
c.Generate(&data)
err = e.Orm.Create(data).Error
tx := e.Orm.Debug().Begin()
defer func() {
if err != nil {
tx.Rollback()
} else {
tx.Commit()
}
}()
err = tx.Create(&data).Error
if err != nil {
e.Log.Errorf("db error:%s", err)
return err
@@ -69,14 +77,14 @@ func (e *SysDept) Insert(c *dto.SysDeptControl) error {
deptPath := pkg.IntToString(data.DeptId) + "/"
if data.ParentId != 0 {
var deptP models.SysDept
e.Orm.First(&deptP, data.ParentId)
tx.First(&deptP, data.ParentId)
deptPath = deptP.DeptPath + deptPath
} else {
deptPath = "/0/" + deptPath
}
var mp = map[string]string{}
mp["dept_path"] = deptPath
if err := e.Orm.Update("dept_path", deptPath).Error; err != nil {
if err := tx.Model(&data).Update("dept_path", deptPath).Error; err != nil {
e.Log.Errorf("db error:%s", err)
return err
}
@@ -87,19 +95,27 @@ func (e *SysDept) Insert(c *dto.SysDeptControl) error {
func (e *SysDept) Update(c *dto.SysDeptControl) error {
var err error
var model = models.SysDept{}
e.Orm.First(&model, c.GetId())
tx := e.Orm.Debug().Begin()
defer func() {
if err != nil {
tx.Rollback()
} else {
tx.Commit()
}
}()
tx.First(&model, c.GetId())
c.Generate(&model)
deptPath := pkg.IntToString(model.DeptId) + "/"
if model.ParentId != 0 {
var deptP models.SysDept
e.Orm.First(&deptP, model.ParentId)
tx.First(&deptP, model.ParentId)
deptPath = deptP.DeptPath + deptPath
} else {
deptPath = "/0/" + deptPath
}
model.DeptPath = deptPath
db := e.Orm.Save(&model)
db := tx.Save(&model)
if db.Error != nil {
e.Log.Errorf("UpdateSysDept error:%s", err)
return err
+6 -1
View File
@@ -2,7 +2,7 @@ package service
import (
"errors"
"fmt"
"github.com/go-admin-team/go-admin-core/sdk/service"
"gorm.io/gorm"
@@ -57,6 +57,11 @@ func (e *SysDictType) Insert(c *dto.SysDictTypeControl) error {
var err error
var data models.SysDictType
c.Generate(&data)
var count int64
e.Orm.Model(&data).Where("dict_type = ?", data.DictType).Count(&count)
if count > 0 {
return errors.New(fmt.Sprintf("当前字典类型[%s]已经存在!", data.DictType))
}
err = e.Orm.Create(&data).Error
if err != nil {
e.Log.Errorf("db error: %s", err)
+1 -1
View File
@@ -16,7 +16,7 @@ type SysOperaLog struct {
}
// GetPage 获取SysOperaLog列表
func (e *SysOperaLog) GetPage(c *dto.SysOperaLogSearch, list *[]models.SysOperaLog, count *int64) error {
func (e *SysOperaLog) GetPage(c *dto.SysOperaLogGetPageReq, list *[]models.SysOperaLog, count *int64) error {
var err error
var data models.SysOperaLog
+14 -15
View File
@@ -15,8 +15,8 @@ type SysPost struct {
service.Service
}
// GetSysPostPage 获取SysPost列表
func (e *SysPost) GetSysPostPage(c *dto.SysPostSearch, list *[]models.SysPost, count *int64) error {
// GetPage 获取SysPost列表
func (e *SysPost) GetPage(c *dto.SysPostPageReq, list *[]models.SysPost, count *int64) error {
var err error
var data models.SysPost
@@ -28,14 +28,14 @@ func (e *SysPost) GetSysPostPage(c *dto.SysPostSearch, list *[]models.SysPost, c
Find(list).Limit(-1).Offset(-1).
Count(count).Error
if err != nil {
e.Log.Errorf("db error:%s", err)
e.Log.Errorf("db error:%s \r", err)
return err
}
return nil
}
// GetSysPost 获取SysPost对象
func (e *SysPost) GetSysPost(d *dto.SysPostById, model *models.SysPost) error {
// Get 获取SysPost对象
func (e *SysPost) Get(d *dto.SysPostGetReq, model *models.SysPost) error {
var err error
var data models.SysPost
@@ -54,13 +54,12 @@ func (e *SysPost) GetSysPost(d *dto.SysPostById, model *models.SysPost) error {
return nil
}
// InsertSysPost 创建SysPost对象
func (e *SysPost) InsertSysPost(model *dto.SysPostControl) error {
// Insert 创建SysPost对象
func (e *SysPost) Insert(c *dto.SysPostInsertReq) error {
var err error
var data models.SysPost
err = e.Orm.Model(&data).
Create(model).Error
c.Generate(&data)
err = e.Orm.Create(&data).Error
if err != nil {
e.Log.Errorf("db error:%s", err)
return err
@@ -68,8 +67,8 @@ func (e *SysPost) InsertSysPost(model *dto.SysPostControl) error {
return nil
}
// UpdateSysPost 修改SysPost对象
func (e *SysPost) UpdateSysPost(c *dto.SysPostControl) error {
// Update 修改SysPost对象
func (e *SysPost) Update(c *dto.SysPostUpdateReq) error {
var err error
var model = models.SysPost{}
e.Orm.First(&model, c.GetId())
@@ -87,8 +86,8 @@ func (e *SysPost) UpdateSysPost(c *dto.SysPostControl) error {
return nil
}
// RemoveSysPost 删除SysPost
func (e *SysPost) RemoveSysPost(d *dto.SysPostById) error {
// Remove 删除SysPost
func (e *SysPost) Remove(d *dto.SysPostDeleteReq) error {
var err error
var data models.SysPost
@@ -103,4 +102,4 @@ func (e *SysPost) RemoveSysPost(d *dto.SysPostById) error {
return err
}
return nil
}
}
+69 -43
View File
@@ -2,6 +2,7 @@ package service
import (
"errors"
"gorm.io/gorm/clause"
"github.com/casbin/casbin/v2"
@@ -152,10 +153,8 @@ func (e *SysRole) Update(c *dto.SysRoleControl, cb *casbin.SyncedEnforcer) error
}
// Remove 删除SysRole
func (e *SysRole) Remove(d *dto.SysRoleById) error {
func (e *SysRole) Remove(c *dto.SysRoleById) error {
var err error
var data models.SysRole
tx := e.Orm.Begin()
defer func() {
if err != nil {
@@ -164,31 +163,21 @@ func (e *SysRole) Remove(d *dto.SysRoleById) error {
tx.Commit()
}
}()
var model = models.SysRole{}
tx.Preload("SysMenu").Preload("SysDept").First(&model, c.GetId())
db := tx.Select(clause.Associations).Delete(&model)
s := SysRoleMenu{}
s.Orm = tx
s.Log = e.Log
for _, roleId := range d.Ids {
err = s.DeleteRoleMenu(tx, roleId)
if err != nil {
e.Log.Errorf("insert role menu error, %", err.Error())
return err
}
}
db := tx.Model(&data).Delete(&data, d.Ids)
if db.Error != nil {
err = db.Error
e.Log.Errorf("Delete error: %s", err)
e.Log.Errorf("db error:%s", err)
return err
}
if db.RowsAffected == 0 {
err = errors.New("无权删除该数据")
return err
return errors.New("无权更新该数据")
}
return nil
}
// 获取角色对应的菜单ids
// GetRoleMenuId 获取角色对应的菜单ids
func (e *SysRole) GetRoleMenuId(roleId int) ([]int, error) {
menuIds := make([]int, 0)
model := models.SysRole{}
@@ -203,7 +192,8 @@ func (e *SysRole) GetRoleMenuId(roleId int) ([]int, error) {
return menuIds, nil
}
func (e *SysRole) UpdateDataScope(c *models.SysRole) (err error) {
func (e *SysRole) UpdateDataScope(c *dto.RoleDataScopeReq) *SysRole {
var err error
tx := e.Orm.Begin()
defer func() {
if err != nil {
@@ -212,36 +202,34 @@ func (e *SysRole) UpdateDataScope(c *models.SysRole) (err error) {
tx.Commit()
}
}()
err = tx.Model(&models.SysRole{}).Where("role_id = ?", c.RoleId).Select("data_scope", "update_by").Updates(c).Error
var dlist = make([]models.SysDept, 0)
var model = models.SysRole{}
tx.Preload("SysDept").First(&model, c.RoleId)
tx.Where("id in ?", c.DeptIds).Find(&dlist)
err = tx.Model(&model).Association("SysDept").Delete(model.SysDept)
if err != nil {
return err
e.Log.Errorf("delete SysDept error:%s", err)
_ = e.AddError(err)
return e
}
err = tx.Where("role_id = ?", c.RoleId).Delete(&models.SysRoleDept{}).Error
if err != nil {
return err
c.Generate(&model)
model.SysDept = dlist
db := tx.Model(&model).Session(&gorm.Session{FullSaveAssociations: true}).Debug().Save(&model)
if db.Error != nil {
e.Log.Errorf("db error:%s", err)
_ = e.AddError(err)
return e
}
if c.DataScope == "2" {
deptRoles := make([]models.SysRoleDept, len(c.DeptIds))
for i := range c.DeptIds {
deptRoles[i] = models.SysRoleDept{
RoleId: c.RoleId,
DeptId: c.DeptIds[i],
}
}
err = tx.Create(&deptRoles).Error
if err != nil {
return err
}
if db.RowsAffected == 0 {
_ = e.AddError(errors.New("无权更新该数据"))
return e
}
return err
return e
}
// UpdateStatus 修改SysRole对象status
func (e *SysRole) UpdateStatus(c *dto.UpdateStatusReq) error {
var err error
tx := e.Orm.Debug().Begin()
defer func() {
if err != nil {
@@ -254,7 +242,6 @@ func (e *SysRole) UpdateStatus(c *dto.UpdateStatusReq) error {
tx.First(&model, c.GetId())
c.Generate(&model)
db := tx.Session(&gorm.Session{FullSaveAssociations: true}).Debug().Save(&model)
if db.Error != nil {
e.Log.Errorf("db error:%s", err)
return err
@@ -262,6 +249,45 @@ func (e *SysRole) UpdateStatus(c *dto.UpdateStatusReq) error {
if db.RowsAffected == 0 {
return errors.New("无权更新该数据")
}
return nil
}
// GetWithName 获取SysRole对象
func (e *SysRole) GetWithName(d *dto.SysRoleByName, model *models.SysRole) *SysRole {
var err error
db := e.Orm.Where("role_name = ?", d.RoleName).First(model)
err = db.Error
if err != nil && errors.Is(err, gorm.ErrRecordNotFound) {
err = errors.New("查看对象不存在或无权查看")
e.Log.Errorf("db error:%s", err)
_ = e.AddError(err)
return e
}
if err != nil {
e.Log.Errorf("db error:%s", err)
_ = e.AddError(err)
return e
}
model.MenuIds, err = e.GetRoleMenuId(model.RoleId)
if err != nil {
e.Log.Errorf("get menuIds error, %s", err.Error())
_ = e.AddError(err)
return e
}
return e
}
// GetById 获取SysRole对象
func (e *SysRole) GetById(roleId int) ([]string, error) {
permissions := make([]string, 0)
model := models.SysRole{}
model.RoleId = roleId
if err := e.Orm.Model(&model).Preload("SysMenu").First(&model).Error; err != nil {
return nil, err
}
l := *model.SysMenu
for i := 0; i < len(l); i++ {
permissions = append(permissions, l[i].Permission)
}
return permissions, nil
}
+41 -45
View File
@@ -1,11 +1,7 @@
package service
import (
log "github.com/go-admin-team/go-admin-core/logger"
"github.com/go-admin-team/go-admin-core/sdk/service"
"gorm.io/gorm"
"go-admin/app/admin/models"
)
// SysRoleMenu 即将弃用结构体
@@ -71,44 +67,44 @@ type SysRoleMenu struct {
// return
//}
func (e *SysRoleMenu) DeleteRoleMenu(tx *gorm.DB, roleId int) (err error) {
msgID := e.MsgID
err = tx.Where("role_id = ?", roleId).
Delete(&models.SysRoleDept{}).Error
if err != nil {
log.Errorf("msgID[%s] delete role's dept error, %s", msgID, err.Error())
return
}
err = tx.Where("role_id = ?", roleId).
Delete(&models.RoleMenu{}).Error
if err != nil {
log.Errorf("msgID[%s] delete role's menu error, %s", msgID, err.Error())
return
}
var role models.SysRole
err = tx.Where("role_id = ?", roleId).
First(&role).Error
if err != nil {
log.Errorf("msgID[%s] get role error, %s", msgID, err.Error())
return
}
err = tx.Where("v0 = ?", role.RoleKey).
Delete(&models.CasbinRule{}).Error
if err != nil {
log.Errorf("msgID[%s] delete casbin rule error, %s", msgID, err.Error())
return
}
return
}
func (e *SysRoleMenu) GetIDS(tx *gorm.DB, roleName string) ([]models.MenuPath, error) {
var r []models.MenuPath
table := tx.Select("sys_menu.path").Table("sys_role_menu")
table = table.Joins("left join sys_role on sys_role.role_id=sys_role_menu.role_id")
table = table.Joins("left join sys_menu on sys_menu.id=sys_role_menu.menu_id")
table = table.Where("sys_role.role_name = ? and sys_menu.type=1", roleName)
if err := table.Find(&r).Error; err != nil {
return nil, err
}
return r, nil
}
//func (e *SysRoleMenu) DeleteRoleMenu(tx *gorm.DB, roleId int) (err error) {
// msgID := e.MsgID
// err = tx.Where("role_id = ?", roleId).
// Delete(&models.SysRoleDept{}).Error
// if err != nil {
// log.Errorf("msgID[%s] delete role's dept error, %s", msgID, err.Error())
// return
// }
// err = tx.Where("role_id = ?", roleId).
// Delete(&models.RoleMenu{}).Error
// if err != nil {
// log.Errorf("msgID[%s] delete role's menu error, %s", msgID, err.Error())
// return
// }
// var role models.SysRole
// err = tx.Where("role_id = ?", roleId).
// First(&role).Error
// if err != nil {
// log.Errorf("msgID[%s] get role error, %s", msgID, err.Error())
// return
// }
// err = tx.Where("v0 = ?", role.RoleKey).
// Delete(&models.CasbinRule{}).Error
// if err != nil {
// log.Errorf("msgID[%s] delete casbin rule error, %s", msgID, err.Error())
// return
// }
// return
//}
//
//func (e *SysRoleMenu) GetIDS(tx *gorm.DB, roleName string) ([]models.MenuPath, error) {
// var r []models.MenuPath
// table := tx.Select("sys_menu.path").Table("sys_role_menu")
// table = table.Joins("left join sys_role on sys_role.role_id=sys_role_menu.role_id")
// table = table.Joins("left join sys_menu on sys_menu.id=sys_role_menu.menu_id")
// table = table.Where("sys_role.role_name = ? and sys_menu.type=1", roleName)
// if err := table.Find(&r).Error; err != nil {
// return nil, err
// }
// return r, nil
//}
+10 -10
View File
@@ -18,8 +18,8 @@ type SysUser struct {
service.Service
}
// GetSysUserPage 获取SysUser列表
func (e *SysUser) GetSysUserPage(c *dto.SysUserSearch, p *actions.DataPermission, list *[]models.SysUser, count *int64) error {
// GetPage 获取SysUser列表
func (e *SysUser) GetPage(c *dto.SysUserGetPageReq, p *actions.DataPermission, list *[]models.SysUser, count *int64) error {
var err error
var data models.SysUser
@@ -38,8 +38,8 @@ func (e *SysUser) GetSysUserPage(c *dto.SysUserSearch, p *actions.DataPermission
return nil
}
// GetSysUser 获取SysUser对象
func (e *SysUser) GetSysUser(d *dto.SysUserById, p *actions.DataPermission, model *models.SysUser) error {
// Get 获取SysUser对象
func (e *SysUser) Get(d *dto.SysUserById, p *actions.DataPermission, model *models.SysUser) error {
var data models.SysUser
err := e.Orm.Model(&data).Debug().
@@ -59,8 +59,8 @@ func (e *SysUser) GetSysUser(d *dto.SysUserById, p *actions.DataPermission, mode
return nil
}
// InsertSysUser 创建SysUser对象
func (e *SysUser) InsertSysUser(c *dto.SysUserControl) error {
// Insert 创建SysUser对象
func (e *SysUser) Insert(c *dto.SysUserControl) error {
var err error
var data models.SysUser
var i int64
@@ -83,8 +83,8 @@ func (e *SysUser) InsertSysUser(c *dto.SysUserControl) error {
return nil
}
// UpdateSysUser 修改SysUser对象
func (e *SysUser) UpdateSysUser(c *dto.SysUserControl, p *actions.DataPermission) error {
// Update 修改SysUser对象
func (e *SysUser) Update(c *dto.SysUserControl, p *actions.DataPermission) error {
var err error
var model models.SysUser
db := e.Orm.Scopes(
@@ -154,8 +154,8 @@ func (e *SysUser) ResetSysUserPwd(c *dto.ResetSysUserPwdReq, p *actions.DataPerm
return nil
}
// RemoveSysUser 删除SysUser
func (e *SysUser) RemoveSysUser(c *dto.SysUserById, p *actions.DataPermission) error {
// Remove 删除SysUser
func (e *SysUser) Remove(c *dto.SysUserById, p *actions.DataPermission) error {
var err error
var data models.SysUser
-29
View File
@@ -1,29 +0,0 @@
package models
import (
"go-admin/common/models"
)
type SysCategory struct {
models.Model
Name string `json:"name" gorm:"size:255;comment:名称"` //
Img string `json:"img" gorm:"size:255;comment:图标"` //
Sort int `json:"sort" gorm:"size:4;comment:排序"` //
Status int `json:"status" gorm:"size:1;comment:状态"` //
Remark string `json:"remark" gorm:"size:255;comment:备注"` //
models.ControlBy
models.ModelTime
}
func (SysCategory) TableName() string {
return "sys_category"
}
func (e *SysCategory) Generate() models.ActiveRecord {
o := *e
return &o
}
func (e *SysCategory) GetId() interface{} {
return e.Id
}
-33
View File
@@ -1,33 +0,0 @@
package models
import (
"go-admin/common/models"
)
type SysContent struct {
models.Model
CateId int `json:"cateId" gorm:"size:11;comment:分类id"`
Name string `json:"name" gorm:"size:255;comment:名称"`
Status int `json:"status" gorm:"size:1;comment:状态"`
Img string `json:"img" gorm:"size:255;comment:图片"`
Content string `json:"content" gorm:"type:text;comment:内容"`
Remark string `json:"remark" gorm:"size:255;comment:备注"`
Sort int `json:"sort" gorm:"size:4;comment:排序"`
models.ControlBy
models.ModelTime
}
// TableName
func (SysContent) TableName() string {
return "sys_content"
}
// Generate
func (e *SysContent) Generate() models.ActiveRecord {
o := *e
return &o
}
func (e *SysContent) GetId() interface{} {
return e.Id
}
-36
View File
@@ -1,36 +0,0 @@
package router
import (
_ "github.com/go-admin-team/go-admin-core/sdk/pkg"
"os"
"github.com/gin-gonic/gin"
log "github.com/go-admin-team/go-admin-core/logger"
"github.com/go-admin-team/go-admin-core/sdk"
common "go-admin/common/middleware"
)
// InitRouter 路由初始化,不要怀疑,这里用到了
func InitRouter() {
var r *gin.Engine
h := sdk.Runtime.GetEngine()
if h == nil {
log.Fatal("not found engine...")
os.Exit(-1)
}
switch h.(type) {
case *gin.Engine:
r = h.(*gin.Engine)
default:
log.Fatal("not support other engine")
os.Exit(-1)
}
// the jwt middleware
authMiddleware, err := common.AuthInit()
if err != nil {
log.Fatalf("JWT Init Error, %s", err.Error())
}
// 注册业务路由
initRouter(r, authMiddleware)
}
-42
View File
@@ -1,42 +0,0 @@
package router
import (
"github.com/gin-gonic/gin"
jwt "github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth"
)
var (
routerNoCheckRole = make([]func(*gin.RouterGroup), 0)
routerCheckRole = make([]func(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware), 0)
)
// initRouter 路由示例
func initRouter(r *gin.Engine, authMiddleware *jwt.GinJWTMiddleware) *gin.Engine {
// 无需认证的路由
noCheckRoleRouter(r)
// 需要认证的路由
checkRoleRouter(r, authMiddleware)
return r
}
// noCheckRoleRouter 无需认证的路由示例
func noCheckRoleRouter(r *gin.Engine) {
// 可根据业务需求来设置接口版本
v1 := r.Group("/api/v1")
for _, f := range routerNoCheckRole {
f(v1)
}
}
// checkRoleRouter 需要认证的路由示例
func checkRoleRouter(r *gin.Engine, authMiddleware *jwt.GinJWTMiddleware) {
// 可根据业务需求来设置接口版本
v1 := r.Group("/api/v1")
for _, f := range routerCheckRole {
f(v1, authMiddleware)
}
}
-31
View File
@@ -1,31 +0,0 @@
package router
import (
"github.com/gin-gonic/gin"
"go-admin/app/cms/models"
"go-admin/app/cms/service/dto"
"go-admin/common/middleware"
jwt "github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth"
"go-admin/common/actions"
)
func init() {
routerCheckRole = append(routerCheckRole, registerSysCategoryRouter)
}
// 需认证的路由代码
func registerSysCategoryRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) {
r := v1.Group("/syscategory").Use(authMiddleware.MiddlewareFunc()).Use(middleware.AuthCheckRole())
{
model := &models.SysCategory{}
r.GET("", actions.PermissionAction(), actions.IndexAction(model, new(dto.SysCategorySearch), func() interface{} {
list := make([]models.SysCategory, 0)
return &list
}))
r.GET("/:id", actions.PermissionAction(), actions.ViewAction(new(dto.SysCategoryById), nil))
r.POST("", actions.CreateAction(new(dto.SysCategoryControl)))
r.PUT("/:id", actions.PermissionAction(), actions.UpdateAction(new(dto.SysCategoryControl)))
r.DELETE("", actions.PermissionAction(), actions.DeleteAction(new(dto.SysCategoryById)))
}
}
-31
View File
@@ -1,31 +0,0 @@
package router
import (
"github.com/gin-gonic/gin"
jwt "github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth"
"go-admin/app/cms/models"
"go-admin/app/cms/service/dto"
"go-admin/common/actions"
"go-admin/common/middleware"
)
func init() {
routerCheckRole = append(routerCheckRole, registerSysContentRouter)
}
// 需认证的路由代码
func registerSysContentRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) {
r := v1.Group("/syscontent").Use(authMiddleware.MiddlewareFunc()).Use(middleware.AuthCheckRole())
{
model := &models.SysContent{}
r.GET("", actions.PermissionAction(), actions.IndexAction(model, new(dto.SysContentSearch), func() interface{} {
list := make([]models.SysContent, 0)
return &list
}))
r.GET("/:id", actions.PermissionAction(), actions.ViewAction(new(dto.SysContentById), nil))
r.POST("", actions.CreateAction(new(dto.SysContentControl)))
r.PUT("/:id", actions.PermissionAction(), actions.UpdateAction(new(dto.SysContentControl)))
r.DELETE("", actions.PermissionAction(), actions.DeleteAction(new(dto.SysContentById)))
}
}
-96
View File
@@ -1,96 +0,0 @@
package dto
import (
"errors"
"github.com/gin-gonic/gin"
"github.com/go-admin-team/go-admin-core/sdk/api"
"go-admin/app/cms/models"
"go-admin/common/dto"
common "go-admin/common/models"
)
type SysCategorySearch struct {
dto.Pagination `search:"-"`
Name string `form:"name" search:"type:exact;column:name;table:sys_category" comment:"名称"`
Status string `form:"status" search:"type:exact;column:status;table:sys_category" comment:"状态"`
CateId int `form:"cateId" search:"type:exact;column:cate_id;table:sys_category" comment:"分类id"`
}
func (m *SysCategorySearch) GetNeedSearch() interface{} {
return *m
}
func (m *SysCategorySearch) Bind(ctx *gin.Context) error {
log := api.GetRequestLogger(ctx)
err := ctx.ShouldBind(m)
if err != nil {
log.Debugf("ShouldBind error: %s", err.Error())
}
return err
}
func (m *SysCategorySearch) Generate() dto.Index {
o := *m
return &o
}
type SysCategoryControl struct {
Id int `uri:"Id" comment:"标识"`
Name string `json:"name" comment:"名称"`
Img string `json:"img" comment:"图标"`
Sort int `json:"sort" comment:"排序"`
Status int `json:"status" comment:"状态"`
Remark string `json:"remark" comment:"备注"`
}
func (s *SysCategoryControl) Bind(ctx *gin.Context) error {
log := api.GetRequestLogger(ctx)
err := ctx.ShouldBindUri(s)
if err != nil {
log.Errorf("ShouldBindUri error: %s", err.Error())
return errors.New("数据绑定出错")
}
err = ctx.ShouldBind(s)
if err != nil {
log.Errorf("ShouldBind error: %s", err.Error())
err = errors.New("数据绑定出错")
}
return err
}
func (s *SysCategoryControl) Generate() dto.Control {
cp := *s
return &cp
}
func (s *SysCategoryControl) GenerateM() (common.ActiveRecord, error) {
return &models.SysCategory{
Model: common.Model{Id: s.Id},
Name: s.Name,
Img: s.Img,
Sort: s.Sort,
Status: s.Status,
Remark: s.Remark,
}, nil
}
func (s *SysCategoryControl) GetId() interface{} {
return s.Id
}
type SysCategoryById struct {
dto.ObjectById
}
func (s *SysCategoryById) Generate() dto.Control {
cp := *s
return &cp
}
func (s *SysCategoryById) GenerateM() (common.ActiveRecord, error) {
return &models.SysCategory{}, nil
}
-95
View File
@@ -1,95 +0,0 @@
package dto
import (
"github.com/gin-gonic/gin"
"github.com/go-admin-team/go-admin-core/sdk/api"
"go-admin/app/cms/models"
"go-admin/common/dto"
common "go-admin/common/models"
)
type SysContentSearch struct {
dto.Pagination `search:"-"`
CateId string `form:"cateId" search:"type:exact;column:cate_id;table:sys_content" comment:"分类"`
Name string `form:"name" search:"type:contains;column:name;table:sys_content" comment:"名称"`
Status string `form:"status" search:"type:exact;column:status;table:sys_content" comment:"状态"`
}
func (m *SysContentSearch) GetNeedSearch() interface{} {
return *m
}
func (m *SysContentSearch) Bind(ctx *gin.Context) error {
log := api.GetRequestLogger(ctx)
err := ctx.ShouldBind(m)
if err != nil {
log.Debugf("ShouldBind error: %s", err.Error())
}
return err
}
func (m *SysContentSearch) Generate() dto.Index {
o := *m
return &o
}
type SysContentControl struct {
Id int `uri:"Id" comment:""` //
CateId int `json:"cateId" comment:""`
Name string `json:"name" comment:""`
Status int `json:"status" comment:""`
Img string `json:"img" comment:""`
Content string `json:"content" comment:""`
Remark string `json:"remark" comment:""`
Sort int `json:"sort" comment:""`
}
func (s *SysContentControl) Bind(ctx *gin.Context) error {
log := api.GetRequestLogger(ctx)
err := ctx.ShouldBindUri(s)
if err != nil {
log.Debugf("ShouldBindUri error: %s", err.Error())
return err
}
err = ctx.ShouldBind(s)
if err != nil {
log.Debugf("ShouldBind error: %s", err.Error())
}
return err
}
func (s *SysContentControl) Generate() dto.Control {
cp := *s
return &cp
}
func (s *SysContentControl) GenerateM() (common.ActiveRecord, error) {
return &models.SysContent{
Model: common.Model{s.Id},
CateId: s.CateId,
Name: s.Name,
Status: s.Status,
Img: s.Img,
Content: s.Content,
Remark: s.Remark,
Sort: s.Sort,
}, nil
}
func (s *SysContentControl) GetId() interface{} {
return s.Id
}
type SysContentById struct {
dto.ObjectById
}
func (s *SysContentById) Generate() dto.Control {
cp := *s
return &cp
}
func (s *SysContentById) GenerateM() (common.ActiveRecord, error) {
return &models.SysContent{}, nil
}
+2 -2
View File
@@ -33,7 +33,7 @@ func (e SysJob) RemoveJobForService(c *gin.Context) {
err = s.RemoveJob(&v)
if err != nil {
e.Logger.Errorf("RemoveJob error, %s", err.Error())
e.Error(http.StatusInternalServerError, err, "")
e.Error(500, err, "")
return
}
e.OK(nil, s.Msg)
@@ -62,7 +62,7 @@ func (e SysJob) StartJobForService(c *gin.Context) {
err = s.StartJob(&v)
if err != nil {
log.Errorf("GetCrontabKey error, %s", err.Error())
e.Error(http.StatusInternalServerError, err, "")
e.Error(500, err, "")
return
}
e.OK(nil, s.Msg)
+14 -13
View File
@@ -40,6 +40,7 @@ type File struct {
// @Success 200 {string} string "{"code": 200, "message": "添加成功"}"
// @Success 200 {string} string "{"code": -1, "message": "添加失败"}"
// @Router /api/v1/public/uploadFile [post]
// @Security Bearer
func (e File) UploadFile(c *gin.Context) {
e.MakeContext(c)
tag, _ := c.GetPostForm("type")
@@ -101,8 +102,8 @@ func (e File) baseImg(c *gin.Context, fileResponse FileResponse, urlPerfix strin
return fileResponse
}
if source != "1" {
fileResponse.Path = "https://youshikeji.oss-cn-shanghai.aliyuncs.com/img/" + fileName
fileResponse.FullPath = "https://youshikeji.oss-cn-shanghai.aliyuncs.com/img/" + fileName
fileResponse.Path = "/static/uploadfile/" + fileName
fileResponse.FullPath = "/static/uploadfile/" + fileName
}
return fileResponse
}
@@ -135,8 +136,8 @@ func (e File) multipleFile(c *gin.Context, urlPerfix string) []FileResponse {
Type: fileType,
}
if source != "1" {
fileResponse.Path = "https://youshikeji.oss-cn-shanghai.aliyuncs.com/img/" + fileName
fileResponse.FullPath = "https://youshikeji.oss-cn-shanghai.aliyuncs.com/img/" + fileName
fileResponse.Path = "/static/uploadfile/" + fileName
fileResponse.FullPath = "/static/uploadfile/" + fileName
}
multipartFile = append(multipartFile, fileResponse)
}
@@ -171,14 +172,14 @@ func (e File) singleFile(c *gin.Context, fileResponse FileResponse, urlPerfix st
Name: files.Filename,
Type: fileType,
}
source, _ := c.GetPostForm("source")
err = thirdUpload(source, fileName, singleFile)
if err != nil {
e.Error(200, errors.New(""), "上传第三方失败")
return FileResponse{}, true
}
fileResponse.Path = "https://youshikeji.oss-cn-shanghai.aliyuncs.com/img/" + fileName
fileResponse.FullPath = "https://youshikeji.oss-cn-shanghai.aliyuncs.com/img/" + fileName
//source, _ := c.GetPostForm("source")
//err = thirdUpload(source, fileName, singleFile)
//if err != nil {
// e.Error(200, errors.New(""), "上传第三方失败")
// return FileResponse{}, true
//}
fileResponse.Path = "/static/uploadfile/" + fileName
fileResponse.FullPath = "/static/uploadfile/" + fileName
return fileResponse, false
}
@@ -200,4 +201,4 @@ func ossUpload(name string, path string) error {
func qiniuUpload(name string, path string) error {
oss := file_store.ALiYunOSS{}
return oss.UpLoad(name, path)
}
}
-178
View File
@@ -1,178 +0,0 @@
package apis
import (
"github.com/gin-gonic/gin/binding"
"go-admin/app/other/models"
"go-admin/app/other/service"
"go-admin/app/other/service/dto"
"net/http"
"github.com/gin-gonic/gin"
"github.com/go-admin-team/go-admin-core/sdk/api"
"github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth/user"
"go-admin/common/actions"
)
type SysChinaAreaData struct {
api.Api
}
func (e SysChinaAreaData) GetPage(c *gin.Context) {
s := service.SysChinaAreaData{}
req := dto.SysChinaAreaDataSearch{}
err := e.MakeContext(c).
MakeOrm().
Bind(&req, binding.Form).
MakeService(&s.Service).
Errors
if err != nil {
e.Logger.Error(err)
e.Error(500, err, err.Error())
return
}
list := make([]models.SysChinaAreaData, 0)
err = s.GetPage(&req, &list).Error
if err != nil {
e.Logger.Error(err)
e.Error(http.StatusInternalServerError, err, "查询失败")
return
}
e.OK(list, "查询成功")
}
func (e SysChinaAreaData) Get(c *gin.Context) {
s := service.SysChinaAreaData{}
req := dto.SysChinaAreaDataById{}
err := e.MakeContext(c).
MakeOrm().
Bind(&req, nil).
MakeService(&s.Service).
Errors
if err != nil {
e.Logger.Error(err)
e.Error(500, err, err.Error())
return
}
var object models.SysChinaAreaData
p := actions.GetPermissionFromContext(c)
err = s.Get(&req, p, &object)
if err != nil {
e.Error(http.StatusUnprocessableEntity, err, "查询失败")
return
}
e.OK(object, "查询成功")
}
func (e SysChinaAreaData) Insert(c *gin.Context) {
e.MakeContext(c)
log := e.GetLogger()
control := new(dto.SysChinaAreaDataControl)
db, err := e.GetOrm()
if err != nil {
log.Error(err)
return
}
//新增操作
err = control.Bind(c)
if err != nil {
e.Error(http.StatusUnprocessableEntity, err, "参数验证失败")
return
}
object, err := control.Generate()
if err != nil {
e.Error(http.StatusInternalServerError, err, "模型生成失败")
return
}
// 设置创建人
object.SetCreateBy(user.GetUserId(c))
serviceSysChinaAreaData := service.SysChinaAreaData{}
serviceSysChinaAreaData.Orm = db
serviceSysChinaAreaData.Log = log
err = serviceSysChinaAreaData.Insert(object)
if err != nil {
log.Error(err)
e.Error(http.StatusInternalServerError, err, "创建失败")
return
}
e.OK(object.GetId(), "创建成功")
}
func (e SysChinaAreaData) Update(c *gin.Context) {
e.MakeContext(c)
log := e.GetLogger()
control := new(dto.SysChinaAreaDataControl)
db, err := e.GetOrm()
if err != nil {
log.Error(err)
return
}
//更新操作
err = control.Bind(c)
if err != nil {
e.Error(http.StatusUnprocessableEntity, err, "参数验证失败")
return
}
object, err := control.Generate()
if err != nil {
e.Error(http.StatusInternalServerError, err, "模型生成失败")
return
}
object.SetUpdateBy(user.GetUserId(c))
//数据权限检查
p := actions.GetPermissionFromContext(c)
serviceSysChinaAreaData := service.SysChinaAreaData{}
serviceSysChinaAreaData.Orm = db
serviceSysChinaAreaData.Log = log
err = serviceSysChinaAreaData.Update(object, p)
if err != nil {
log.Error(err)
return
}
e.OK(object.GetId(), "更新成功")
}
func (e SysChinaAreaData) Delete(c *gin.Context) {
e.MakeContext(c)
log := e.GetLogger()
control := new(dto.SysChinaAreaDataById)
db, err := e.GetOrm()
if err != nil {
log.Error(err)
return
}
//删除操作
err = control.Bind(c)
if err != nil {
log.Errorf("Bind error: %s", err)
e.Error(http.StatusUnprocessableEntity, err, "参数验证失败")
return
}
// 设置编辑人
control.SetUpdateBy(user.GetUserId(c))
// 数据权限检查
p := actions.GetPermissionFromContext(c)
serviceSysChinaAreaData := service.SysChinaAreaData{}
serviceSysChinaAreaData.Orm = db
serviceSysChinaAreaData.Log = log
err = serviceSysChinaAreaData.Remove(control, p)
if err != nil {
log.Errorf("RemoveSysChinaAreaData error, %s", err)
e.Error(http.StatusInternalServerError, err, "删除失败")
return
}
e.OK(control.GetId(), "删除成功")
}
-198
View File
@@ -1,198 +0,0 @@
package apis
import (
"net/http"
"github.com/gin-gonic/gin"
"github.com/go-admin-team/go-admin-core/sdk/api"
"github.com/go-admin-team/go-admin-core/sdk/pkg"
"github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth/user"
"go-admin/app/other/models"
"go-admin/app/other/service"
"go-admin/app/other/service/dto"
"go-admin/common/actions"
)
type SysFileDir struct {
api.Api
}
func (e SysFileDir) GetPage(c *gin.Context) {
e.Context = c
log := e.GetLogger()
search := new(dto.SysFileDirSearch)
db, err := e.GetOrm()
if err != nil {
log.Error(err)
return
}
err = c.ShouldBind(search)
if err != nil {
log.Debugf("ShouldBind error: %s", err.Error())
}
var list *[]models.SysFileDir
serviceStudent := service.SysFileDir{}
serviceStudent.Log = log
serviceStudent.Orm = db
list, err = serviceStudent.SetSysFileDir(search)
if err != nil {
log.Errorf("SetSysFileDir error, %s", err)
e.Error(http.StatusUnprocessableEntity, err, "查询失败")
return
}
e.OK(list, "查询成功")
}
func (e SysFileDir) Get(c *gin.Context) {
control := new(dto.SysFileDirById)
e.Context = c
log := e.GetLogger()
db, err := e.GetOrm()
if err != nil {
log.Error(err)
return
}
//查看详情
err = c.ShouldBindUri(control)
if err != nil {
log.Warnf("ShouldBindUri error: %s", err.Error())
e.Error(http.StatusUnprocessableEntity, err, "参数验证失败")
}
var object models.SysFileDir
serviceSysFileDir := service.SysFileDir{}
serviceSysFileDir.Log = log
serviceSysFileDir.Orm = db
err = serviceSysFileDir.GetSysFileDir(control, &object)
if err != nil {
log.Errorf("GetSysFileDir error, %s", err)
e.Error(http.StatusInternalServerError, err, "查询失败")
return
}
e.OK(object, "查询成功")
}
func (e SysFileDir) Insert(c *gin.Context) {
control := new(dto.SysFileDirControl)
e.Context = c
log := e.GetLogger()
db, err := e.GetOrm()
if err != nil {
log.Error(err)
return
}
//新增操作
err = c.ShouldBindUri(control)
if err != nil {
log.Warnf("ShouldBindUri error: %s", err.Error())
e.Error(http.StatusUnprocessableEntity, err, "参数验证失败")
return
}
err = c.ShouldBind(control)
if err != nil {
log.Warnf("ShouldBind error: %s", err.Error())
e.Error(http.StatusUnprocessableEntity, err, "参数验证失败")
return
}
// 设置创建人
control.CreateBy = user.GetUserId(c)
serviceSysFileDir := service.SysFileDir{}
serviceSysFileDir.Orm = db
serviceSysFileDir.Log = log
err = serviceSysFileDir.InsertSysFileDir(control)
if err != nil {
log.Errorf("InsertSysFileDir error, %s", err)
e.Error(http.StatusInternalServerError, err, "创建失败")
return
}
e.OK(control.Id, "创建成功")
}
func (e SysFileDir) Update(c *gin.Context) {
control := new(dto.SysFileDirControl)
e.Context = c
log := e.GetLogger()
db, err := e.GetOrm()
if err != nil {
log.Error(err)
return
}
err = c.ShouldBindUri(control)
if err != nil {
log.Warnf("ShouldBindUri error: %s", err.Error())
e.Error(http.StatusUnprocessableEntity, err, "参数验证失败")
}
err = c.ShouldBind(control)
if err != nil {
log.Warnf("ShouldBind error: %#v", err.Error())
e.Error(http.StatusUnprocessableEntity, err, "参数验证失败")
}
// 设置创建人
control.UpdateBy = user.GetUserId(c)
//数据权限检查
p := actions.GetPermissionFromContext(c)
serviceSysFileDir := service.SysFileDir{}
serviceSysFileDir.Orm = db
serviceSysFileDir.Log = log
err = serviceSysFileDir.Update(control, p)
if err != nil {
log.Errorf("UpdateSysFileDir error, %s", err)
e.Error(http.StatusInternalServerError, err, "更新失败")
return
}
e.OK(control.Id, "更新成功")
}
func (e SysFileDir) Delete(c *gin.Context) {
control := new(dto.SysFileDirById)
e.Context = c
log := e.GetLogger()
db, err := e.GetOrm()
if err != nil {
log.Error(err)
return
}
msgID := pkg.GenerateMsgIDFromContext(c)
//删除操作
err = c.ShouldBindUri(control)
if err != nil {
log.Warnf("MsgID[%s] ShouldBindUri error: %s", msgID, err.Error())
e.Error(http.StatusUnprocessableEntity, err, "参数验证失败")
}
err = c.ShouldBind(control)
if err != nil {
log.Warnf("MsgID[%s] ShouldBind error: %#v", msgID, err.Error())
e.Error(http.StatusUnprocessableEntity, err, "参数验证失败")
}
// 设置编辑人
control.UpdateBy = user.GetUserId(c)
// 数据权限检查
p := actions.GetPermissionFromContext(c)
serviceSysFileDir := service.SysFileDir{}
serviceSysFileDir.Orm = db
serviceSysFileDir.MsgID = msgID
err = serviceSysFileDir.RemoveSysFileDir(control, p)
if err != nil {
log.Errorf("RemoveSysFileDir error, %s", err)
e.Error(http.StatusInternalServerError, err, "删除失败")
return
}
e.OK(control.Id, "删除成功")
}
-209
View File
@@ -1,209 +0,0 @@
package apis
import (
models2 "go-admin/app/other/models"
service2 "go-admin/app/other/service"
dto2 "go-admin/app/other/service/dto"
"net/http"
"github.com/gin-gonic/gin"
"github.com/go-admin-team/go-admin-core/sdk/api"
"github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth/user"
"go-admin/common/actions"
)
type SysFileInfo struct {
api.Api
}
func (e SysFileInfo) GetPage(c *gin.Context) {
e.Context = c
log := e.GetLogger()
search := new(dto2.SysFileInfoSearch)
db, err := e.GetOrm()
if err != nil {
log.Error(err)
return
}
err = c.ShouldBind(search)
if err != nil {
log.Warnf("参数验证错误, error: %s", err)
e.Error(http.StatusUnprocessableEntity, err, "参数验证失败")
return
}
//数据权限检查
p := actions.GetPermissionFromContext(c)
list := make([]models2.SysFileInfo, 0)
var count int64
serviceStudent := service2.SysFileInfo{}
serviceStudent.Log = log
serviceStudent.Orm = db
err = serviceStudent.GetSysFileInfoPage(search, p, &list, &count)
if err != nil {
log.Errorf("GetSysFileInfoPage error, %s", err.Error())
e.Error(http.StatusInternalServerError, err, "查询失败")
return
}
e.PageOK(list, int(count), search.PageIndex, search.PageSize, "查询成功")
}
func (e SysFileInfo) Get(c *gin.Context) {
control := new(dto2.SysFileInfoById)
e.Context = c
log := e.GetLogger()
db, err := e.GetOrm()
if err != nil {
log.Error(err)
return
}
//查看详情
err = c.ShouldBindUri(control)
if err != nil {
log.Warnf("参数验证错误, error:%s", err)
e.Error(http.StatusUnprocessableEntity, err, "参数验证失败")
return
}
var object models2.SysFileInfo
//数据权限检查
p := actions.GetPermissionFromContext(c)
serviceSysFileInfo := service2.SysFileInfo{}
serviceSysFileInfo.Log = log
serviceSysFileInfo.Orm = db
err = serviceSysFileInfo.GetSysFileInfo(control, p, &object)
if err != nil {
log.Errorf("GetSysFileInfo error, %s", err.Error())
e.Error(http.StatusInternalServerError, err, "查询失败")
return
}
e.OK(object, "查询成功")
}
func (e SysFileInfo) Insert(c *gin.Context) {
control := new(dto2.SysFileInfoControl)
e.Context = c
log := e.GetLogger()
db, err := e.GetOrm()
if err != nil {
log.Error(err)
return
}
//新增操作
err = c.ShouldBindUri(control)
if err != nil {
log.Warnf("参数验证错误, error: %s", err)
e.Error(http.StatusUnprocessableEntity, err, "参数验证失败")
return
}
err = c.ShouldBind(control)
if err != nil {
log.Warnf("参数验证错误, error: %s", err)
e.Error(http.StatusUnprocessableEntity, err, "参数验证失败")
return
}
// 设置创建人
control.CreateBy = user.GetUserId(c)
serviceSysFileInfo := service2.SysFileInfo{}
serviceSysFileInfo.Orm = db
serviceSysFileInfo.Log = log
err = serviceSysFileInfo.InsertSysFileInfo(control)
if err != nil {
log.Errorf("InsertSysFileInfo error: %s", err)
e.Error(http.StatusInternalServerError, err, "创建失败")
return
}
e.OK(control.Id, "创建成功")
}
func (e SysFileInfo) Update(c *gin.Context) {
control := new(dto2.SysFileInfoControl)
e.Context = c
log := e.GetLogger()
db, err := e.GetOrm()
if err != nil {
log.Error(err)
return
}
err = c.ShouldBindUri(control)
if err != nil {
log.Warnf("参数验证错误, error: %s", err)
e.Error(http.StatusUnprocessableEntity, err, "参数验证失败")
return
}
err = c.ShouldBind(control)
if err != nil {
log.Warnf("参数验证错误, error:%s", err)
e.Error(http.StatusUnprocessableEntity, err, "参数验证失败")
return
}
// 设置创建人
control.UpdateBy = user.GetUserId(c)
//数据权限检查
p := actions.GetPermissionFromContext(c)
serviceSysFileInfo := service2.SysFileInfo{}
serviceSysFileInfo.Orm = db
serviceSysFileInfo.Log = log
err = serviceSysFileInfo.UpdateSysFileInfo(control, p)
if err != nil {
log.Errorf("UpdateSysFileInfo error: %s", err)
e.Error(http.StatusInternalServerError, err, "创建失败")
return
}
e.OK(control.Id, "更新成功")
}
func (e SysFileInfo) Delete(c *gin.Context) {
control := new(dto2.SysFileInfoById)
e.Context = c
log := e.GetLogger()
db, err := e.GetOrm()
if err != nil {
log.Error(err)
return
}
//删除操作
err = c.ShouldBindUri(control)
if err != nil {
log.Warnf("参数验证错误, error: %s", err)
e.Error(422, err, "参数验证失败")
return
}
err = c.ShouldBind(control)
if err != nil {
log.Warnf("参数验证错误, error: %s", err)
e.Error(422, err, "参数验证失败")
return
}
// 设置编辑人
control.UpdateBy = user.GetUserId(c)
// 数据权限检查
p := actions.GetPermissionFromContext(c)
serviceSysFileInfo := service2.SysFileInfo{}
serviceSysFileInfo.Orm = db
serviceSysFileInfo.Log = log
err = serviceSysFileInfo.RemoveSysFileInfo(control, p)
if err != nil {
log.Errorf("RemoveSysFileInfo error: %s", err)
e.Error(http.StatusInternalServerError, err, "创建失败")
return
}
e.OK(control.Id, "删除成功")
}
+1
View File
@@ -29,6 +29,7 @@ type ServerMonitor struct {
// @Tags 系统信息
// @Success 200 {object} response.Response "{"code": 200, "data": [...]}"
// @Router /api/v1/server-monitor [get]
// @Security Bearer
func (e ServerMonitor) ServerInfo(c *gin.Context) {
e.Context = c
@@ -1,19 +1,17 @@
package tools
import (
"net/http"
"github.com/gin-gonic/gin"
"github.com/go-admin-team/go-admin-core/sdk/pkg"
_ "github.com/go-admin-team/go-admin-core/sdk/pkg/response"
"go-admin/app/admin/models/tools"
"go-admin/app/other/models/tools"
)
// GetDBColumnList 分页列表数据
// @Summary 分页列表数据 / page list data
// @Description 数据库表列分页列表 / database table column page list
// @Tags 工具 / Tools
// @Tags 工具 / 生成工具
// @Param tableName query string false "tableName / 数据表名称"
// @Param pageSize query int false "pageSize / 页条数"
// @Param pageIndex query int false "pageIndex / 页码"
@@ -38,7 +36,7 @@ func (e *Gen) GetDBColumnList(c *gin.Context) {
db, err := pkg.GetOrm(c)
if err != nil {
log.Errorf("get db connection error, %s", err.Error())
e.Error(http.StatusInternalServerError, err, "数据库连接获取失败")
e.Error(500, err, "数据库连接获取失败")
return
}
@@ -2,20 +2,18 @@ package tools
import (
"errors"
"net/http"
"github.com/gin-gonic/gin"
"github.com/go-admin-team/go-admin-core/sdk/config"
"github.com/go-admin-team/go-admin-core/sdk/pkg"
_ "github.com/go-admin-team/go-admin-core/sdk/pkg/response"
"go-admin/app/admin/models/tools"
"go-admin/app/other/models/tools"
)
// GetDBTableList 分页列表数据
// @Summary 分页列表数据 / page list data
// @Description 数据库表分页列表 / database table page list
// @Tags 工具 / Tools
// @Tags 工具 / 生成工具
// @Param tableName query string false "tableName / 数据表名称"
// @Param pageSize query int false "pageSize / 页条数"
// @Param pageIndex query int false "pageIndex / 页码"
@@ -47,7 +45,7 @@ func (e *Gen) GetDBTableList(c *gin.Context) {
db, err := pkg.GetOrm(c)
if err != nil {
log.Errorf("get db connection error, %s", err.Error())
e.Error(http.StatusInternalServerError, err, "数据库连接获取失败")
e.Error(500, err, "数据库连接获取失败")
return
}
@@ -2,9 +2,9 @@ package tools
import (
"bytes"
"fmt"
"go-admin/app/admin/service"
"go-admin/app/admin/service/dto"
"net/http"
"strconv"
"strings"
"text/template"
@@ -15,7 +15,7 @@ import (
"github.com/go-admin-team/go-admin-core/sdk/config"
"github.com/go-admin-team/go-admin-core/sdk/pkg"
"go-admin/app/admin/models/tools"
"go-admin/app/other/models/tools"
)
type Gen struct {
@@ -29,57 +29,57 @@ func (e Gen) Preview(c *gin.Context) {
id, err := pkg.StringToInt(c.Param("tableId"))
if err != nil {
log.Error(err)
e.Error(500, err, "")
e.Error(500, err, fmt.Sprintf("tableId接收失败!错误详情:%s", err.Error()))
return
}
table.TableId = id
t1, err := template.ParseFiles("template/v4/model.go.template")
if err != nil {
log.Error(err)
e.Error(500, err, "")
e.Error(500, err, fmt.Sprintf("model模版读取失败!错误详情:%s", err.Error()))
return
}
t2, err := template.ParseFiles("template/v4/no_actions/apis.go.template")
if err != nil {
log.Error(err)
e.Error(500, err, "")
e.Error(500, err, fmt.Sprintf("api模版读取失败!错误详情:%s", err.Error()))
return
}
t3, err := template.ParseFiles("template/v4/js.go.template")
if err != nil {
log.Error(err)
e.Error(500, err, "")
e.Error(500, err, fmt.Sprintf("js模版读取失败!错误详情:%s", err.Error()))
return
}
t4, err := template.ParseFiles("template/v4/vue.go.template")
if err != nil {
log.Error(err)
e.Error(500, err, "")
e.Error(500, err, fmt.Sprintf("vue模版读取失败!错误详情:%s", err.Error()))
return
}
t5, err := template.ParseFiles("template/v4/no_actions/router_check_role.go.template")
if err != nil {
log.Error(err)
e.Error(500, err, "")
e.Error(500, err, fmt.Sprintf("路由模版读取失败!错误详情:%s", err.Error()))
return
}
t6, err := template.ParseFiles("template/v4/dto.go.template")
if err != nil {
log.Error(err)
e.Error(500, err, "")
e.Error(500, err, fmt.Sprintf("dto模版读取失败!错误详情:%s", err.Error()))
return
}
t7, err := template.ParseFiles("template/v4/no_actions/service.go.template")
if err != nil {
log.Error(err)
e.Error(500, err, "")
e.Error(500, err, fmt.Sprintf("service模版读取失败!错误详情:%s", err.Error()))
return
}
db, err := pkg.GetOrm(c)
if err != nil {
log.Errorf("get db connection error, %s", err.Error())
e.Error(http.StatusInternalServerError, err, "数据库连接获取失败")
e.Error(500, err, fmt.Sprintf("数据库链接获取失败!错误详情:%s", err.Error()))
return
}
@@ -117,14 +117,14 @@ func (e Gen) GenCode(c *gin.Context) {
id, err := pkg.StringToInt(c.Param("tableId"))
if err != nil {
log.Error(err)
e.Error(500, err, "")
e.Error(500, err, fmt.Sprintf("tableId参数接收失败!错误详情:%s", err.Error()))
return
}
db, err := pkg.GetOrm(c)
if err != nil {
log.Errorf("get db connection error, %s", err.Error())
e.Error(http.StatusInternalServerError, err, "数据库连接获取失败")
e.Error(500, err, fmt.Sprintf("数据库链接获取失败!错误详情:%s", err.Error()))
return
}
@@ -147,14 +147,14 @@ func (e Gen) GenApiToFile(c *gin.Context) {
id, err := pkg.StringToInt(c.Param("tableId"))
if err != nil {
log.Error(err)
e.Error(500, err, "")
e.Error(500, err, fmt.Sprintf("tableId参数获取失败!错误详情:%s", err.Error()))
return
}
db, err := pkg.GetOrm(c)
if err != nil {
log.Errorf("get db connection error, %s", err.Error())
e.Error(http.StatusInternalServerError, err, "数据库连接获取失败")
e.Error(500, err, fmt.Sprintf("数据库链接获取失败!错误详情:%s", err.Error()))
return
}
@@ -179,43 +179,43 @@ func (e Gen) NOActionsGen(c *gin.Context, tab tools.SysTables) {
t1, err := template.ParseFiles(basePath + "model.go.template")
if err != nil {
log.Error(err)
e.Error(500, err, "")
e.Error(500, err, fmt.Sprintf("model模版读取失败!错误详情:%s", err.Error()))
return
}
t2, err := template.ParseFiles(basePath + "no_actions/apis.go.template")
if err != nil {
log.Error(err)
e.Error(500, err, "")
e.Error(500, err, fmt.Sprintf("api模版读取失败!错误详情:%s", err.Error()))
return
}
t3, err := template.ParseFiles(routerFile)
if err != nil {
log.Error(err)
e.Error(500, err, "")
e.Error(500, err, fmt.Sprintf("路由模版失败!错误详情:%s", err.Error()))
return
}
t4, err := template.ParseFiles(basePath + "js.go.template")
if err != nil {
log.Error(err)
e.Error(500, err, "")
e.Error(500, err, fmt.Sprintf("js模版解析失败!错误详情:%s", err.Error()))
return
}
t5, err := template.ParseFiles(basePath + "vue.go.template")
if err != nil {
log.Error(err)
e.Error(500, err, "")
e.Error(500, err, fmt.Sprintf("vue模版解析失败!错误详情:%s", err.Error()))
return
}
t6, err := template.ParseFiles(basePath + "dto.go.template")
if err != nil {
log.Error(err)
e.Error(500, err, "")
e.Error(500, err, fmt.Sprintf("dto模版解析失败失败!错误详情:%s", err.Error()))
return
}
t7, err := template.ParseFiles(basePath + "no_actions/service.go.template")
if err != nil {
log.Error(err)
e.Error(500, err, "")
e.Error(500, err, fmt.Sprintf("service模版失败!错误详情:%s", err.Error()))
return
}
@@ -265,7 +265,7 @@ func (e Gen) genApiToFile(c *gin.Context, tab tools.SysTables) {
t1, err := template.ParseFiles(basePath + "api_migrate.template")
if err != nil {
e.Logger.Error(err)
e.Error(500, err, "")
e.Error(500, err, fmt.Sprintf("数据迁移模版解析失败!错误详情:%s", err.Error()))
return
}
i := strconv.FormatInt(time.Now().UnixNano()/1e6, 10)
@@ -299,31 +299,31 @@ func (e Gen) ActionsGen(c *gin.Context, tab tools.SysTables) {
t1, err := template.ParseFiles(basePath + "model.go.template")
if err != nil {
e.Logger.Error(err)
e.Error(500, err, "")
e.Error(500, err, fmt.Sprintf("model模版解析失败!错误详情:%s", err.Error()))
return
}
t3, err := template.ParseFiles(routerFile)
if err != nil {
e.Logger.Error(err)
e.Error(500, err, "")
e.Error(500, err, fmt.Sprintf("路由模版解析失败!错误详情:%s", err.Error()))
return
}
t4, err := template.ParseFiles(basePath + "js.go.template")
if err != nil {
e.Logger.Error(err)
e.Error(500, err, "")
e.Error(500, err, fmt.Sprintf("js模版解析失败!错误详情:%s", err.Error()))
return
}
t5, err := template.ParseFiles(basePath + "vue.go.template")
if err != nil {
e.Logger.Error(err)
e.Error(500, err, "")
e.Error(500, err, fmt.Sprintf("vue模版解析失败!错误详情:%s", err.Error()))
return
}
t6, err := template.ParseFiles(basePath + "dto.go.template")
if err != nil {
e.Logger.Error(err)
e.Error(500, err, "")
e.Error(500, err, fmt.Sprintf("dto模版解析失败!错误详情:%s", err.Error()))
return
}
@@ -352,7 +352,7 @@ func (e Gen) ActionsGen(c *gin.Context, tab tools.SysTables) {
}
func (e Gen) GenMenuAndApi(c *gin.Context) {
s:=service.SysMenu{}
s := service.SysMenu{}
err := e.MakeContext(c).
MakeOrm().
MakeService(&s.Service).
@@ -365,8 +365,11 @@ func (e Gen) GenMenuAndApi(c *gin.Context) {
table := tools.SysTables{}
id, err := pkg.StringToInt(c.Param("tableId"))
pkg.HasError(err, "", -1)
if err != nil{
e.Logger.Error(err)
e.Error(500,err,fmt.Sprintf("tableId参数解析失败!错误详情:%s", err.Error()))
return
}
table.TableId = id
tab, _ := table.Get(e.Orm)
@@ -472,6 +475,5 @@ func (e Gen) GenMenuAndApi(c *gin.Context) {
MDelete.UpdateBy = 1
s.Insert(&MDelete)
e.OK("", "数据生成成功!")
}
@@ -1,7 +1,6 @@
package tools
import (
"net/http"
"strings"
"github.com/gin-gonic/gin"
@@ -10,23 +9,23 @@ import (
_ "github.com/go-admin-team/go-admin-core/sdk/pkg/response"
"gorm.io/gorm"
"go-admin/app/admin/models/tools"
"go-admin/app/other/models/tools"
)
type SysTable struct {
api.Api
}
// GetSysTableList 分页列表数据
// GetPage 分页列表数据
// @Summary 分页列表数据
// @Description 生成表分页列表
// @Tags 工具 - 生成表
// @Tags 工具 / 生成工具
// @Param tableName query string false "tableName / 数据表名称"
// @Param pageSize query int false "pageSize / 页条数"
// @Param pageIndex query int false "pageIndex / 页码"
// @Success 200 {object} response.Response "{"code": 200, "data": [...]}"
// @Router /api/v1/sys/tables/page [get]
func (e SysTable) GetSysTableList(c *gin.Context) {
func (e SysTable) GetPage(c *gin.Context) {
e.Context = c
log := e.GetLogger()
var data tools.SysTables
@@ -45,7 +44,7 @@ func (e SysTable) GetSysTableList(c *gin.Context) {
db, err := e.GetOrm()
if err != nil {
log.Errorf("get db connection error, %s", err.Error())
e.Error(http.StatusInternalServerError, err, "数据库连接获取失败")
e.Error(500, err, "数据库连接获取失败")
return
}
@@ -60,20 +59,21 @@ func (e SysTable) GetSysTableList(c *gin.Context) {
e.PageOK(result, count, pageIndex, pageSize, "查询成功")
}
// Get
// @Summary 获取配置
// @Description 获取JSON
// @Tags 工具 - 生成表
// @Tags 工具 / 生成工具
// @Param configKey path int true "configKey"
// @Success 200 {object} response.Response "{"code": 200, "data": [...]}"
// @Router /api/v1/sys/tables/info/{tableId} [get]
// @Security Bearer
func (e SysTable) GetSysTables(c *gin.Context) {
func (e SysTable) Get(c *gin.Context) {
e.Context = c
log := e.GetLogger()
db, err := e.GetOrm()
if err != nil {
log.Errorf("get db connection error, %s", err.Error())
e.Error(http.StatusInternalServerError, err, "数据库连接获取失败")
e.Error(500, err, "数据库连接获取失败")
return
}
@@ -98,7 +98,7 @@ func (e SysTable) GetSysTablesInfo(c *gin.Context) {
db, err := e.GetOrm()
if err != nil {
log.Errorf("get db connection error, %s", err.Error())
e.Error(http.StatusInternalServerError, err, "数据库连接获取失败")
e.Error(500, err, "数据库连接获取失败")
return
}
@@ -127,7 +127,7 @@ func (e SysTable) GetSysTablesTree(c *gin.Context) {
db, err := e.GetOrm()
if err != nil {
log.Errorf("get db connection error, %s", err.Error())
e.Error(http.StatusInternalServerError, err, "数据库连接获取失败")
e.Error(500, err, "数据库连接获取失败")
return
}
@@ -142,9 +142,10 @@ func (e SysTable) GetSysTablesTree(c *gin.Context) {
e.OK(result, "")
}
// Insert
// @Summary 添加表结构
// @Description 添加表结构
// @Tags 工具 - 生成表
// @Tags 工具 / 生成工具
// @Accept application/json
// @Product application/json
// @Param tables query string false "tableName / 数据表名称"
@@ -152,13 +153,13 @@ func (e SysTable) GetSysTablesTree(c *gin.Context) {
// @Success 200 {string} string "{"code": -1, "message": "添加失败"}"
// @Router /api/v1/sys/tables/info [post]
// @Security Bearer
func (e SysTable) InsertSysTable(c *gin.Context) {
func (e SysTable) Insert(c *gin.Context) {
e.Context = c
log := e.GetLogger()
db, err := e.GetOrm()
if err != nil {
log.Errorf("get db connection error, %s", err.Error())
e.Error(http.StatusInternalServerError, err, "数据库连接获取失败")
e.Error(500, err, "数据库连接获取失败")
return
}
@@ -222,7 +223,7 @@ func genTableInit(tx *gorm.DB, tablesList []string, i int, c *gin.Context) (tool
data.IsLogicalDelete = "1"
data.LogicalDelete = true
data.LogicalDeleteColumn = "is_del"
data.IsActions = 1
data.IsActions = 2
data.IsDataScope = 1
data.IsAuth = 1
@@ -287,9 +288,10 @@ func genTableInit(tx *gorm.DB, tablesList []string, i int, c *gin.Context) (tool
return data, err
}
// Update
// @Summary 修改表结构
// @Description 修改表结构
// @Tags 工具 - 生成表
// @Tags 工具 / 生成工具
// @Accept application/json
// @Product application/json
// @Param data body tools.SysTables true "body"
@@ -297,7 +299,7 @@ func genTableInit(tx *gorm.DB, tablesList []string, i int, c *gin.Context) (tool
// @Success 200 {string} string "{"code": -1, "message": "添加失败"}"
// @Router /api/v1/sys/tables/info [put]
// @Security Bearer
func (e SysTable) UpdateSysTable(c *gin.Context) {
func (e SysTable) Update(c *gin.Context) {
var data tools.SysTables
err := c.Bind(&data)
pkg.HasError(err, "数据解析失败", 500)
@@ -307,7 +309,7 @@ func (e SysTable) UpdateSysTable(c *gin.Context) {
db, err := e.GetOrm()
if err != nil {
log.Errorf("get db connection error, %s", err.Error())
e.Error(http.StatusInternalServerError, err, "数据库连接获取失败")
e.Error(500, err, "数据库连接获取失败")
return
}
@@ -321,20 +323,21 @@ func (e SysTable) UpdateSysTable(c *gin.Context) {
e.OK(result, "修改成功")
}
// Delete
// @Summary 删除表结构
// @Description 删除表结构
// @Tags 工具 - 生成表
// @Tags 工具 / 生成工具
// @Param tableId path int true "tableId"
// @Success 200 {string} string "{"code": 200, "message": "删除成功"}"
// @Success 200 {string} string "{"code": -1, "message": "删除失败"}"
// @Router /api/v1/sys/tables/info/{tableId} [delete]
func (e SysTable) DeleteSysTables(c *gin.Context) {
func (e SysTable) Delete(c *gin.Context) {
e.Context = c
log := e.GetLogger()
db, err := e.GetOrm()
if err != nil {
log.Errorf("get db connection error, %s", err.Error())
e.Error(http.StatusInternalServerError, err, "数据库连接获取失败")
e.Error(500, err, "数据库连接获取失败")
return
}
@@ -347,4 +350,4 @@ func (e SysTable) DeleteSysTables(c *gin.Context) {
return
}
e.OK(nil, "删除成功")
}
}
-27
View File
@@ -1,27 +0,0 @@
package models
import (
"go-admin/common/models"
)
type SysChinaAreaData struct {
Id int `json:"id" gorm:"primaryKey;comment:主键编码"`
PId int `json:"pId" gorm:"size:11;comment:上级编码"`
Name string `json:"name" gorm:"size:128;comment:名称"`
Children []SysChinaAreaData `json:"children,omitempty" gorm:"-"`
models.ControlBy
models.ModelTime
}
func (SysChinaAreaData) TableName() string {
return "sys_china_area_data"
}
func (e *SysChinaAreaData) Generate() models.ActiveRecord {
o := *e
return &o
}
func (e *SysChinaAreaData) GetId() interface{} {
return e.Id
}
-40
View File
@@ -1,40 +0,0 @@
package models
import (
"go-admin/common/models"
)
type SysFileDir struct {
models.Model
Label string `json:"label" gorm:"type:varchar(255);comment:目录名称"` // 目录名称
PId int `json:"p_id" gorm:"type:int(11);comment:上级目录"` // 上级目录
Sort string `json:"sort" gorm:"type:bigint(20);comment:排序"` // 排序
Path string `json:"path" gorm:"type:varchar(255);comment:路径"` // 路径
Children []SysFileDir `json:"children,omitempty" gorm:"-"` // 下级信息
models.ControlBy
models.ModelTime
}
//type SysFileDirL struct {
// models.Model
// Label string `json:"label" gorm:"type:varchar(255);comment:目录名称"` // 目录名称
// PId int `json:"pId" gorm:"type:int(11);comment:上级目录"` // 上级目录
// Sort string `json:"sort" gorm:"type:bigint(20);comment:排序"` // 排序
// Path string `json:"path" gorm:"type:varchar(255);comment:路径"` // 路径
// models.ControlBy
// models.ModelTime
// Children []SysFileDirL `json:"children,omitempty" gorm:"-"` // 下级信息
//}
func (SysFileDir) TableName() string { /**/
return "sys_file_dir"
}
func (e *SysFileDir) Generate() models.ActiveRecord {
o := *e
return &o
}
func (e *SysFileDir) GetId() interface{} {
return e.Id
}
-31
View File
@@ -1,31 +0,0 @@
package models
import (
"go-admin/common/models"
)
type SysFileInfo struct {
models.Model
Type string `json:"type" gorm:"size:255;comment:类型"` //
Name string `json:"name" gorm:"size:255;comment:名称"` //
Size string `json:"size" gorm:"size:11;comment:大小"` //
PId int `json:"p_id" gorm:"size:11;comment:目录"` //
Source string `json:"source" gorm:"size:255;comment:来源"` //
Url string `json:"url" gorm:"size:255;comment:地址"` //
FullUrl string `json:"full_url" gorm:"size:255;comment:全地址"` //
models.ControlBy
models.ModelTime
}
func (SysFileInfo) TableName() string {
return "sys_file_info"
}
func (e *SysFileInfo) Generate() models.ActiveRecord {
o := *e
return &o
}
func (e *SysFileInfo) GetId() interface{} {
return e.Id
}
+7 -3
View File
@@ -2,15 +2,19 @@ package router
import (
"github.com/gin-gonic/gin"
jwt "github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth"
"go-admin/app/other/apis"
)
func init() {
routerNoCheckRole = append(routerNoCheckRole, registerFileRouter)
routerCheckRole = append(routerCheckRole, registerFileRouter)
}
// 需认证的路由代码
func registerFileRouter(v1 *gin.RouterGroup) {
func registerFileRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) {
var api = apis.File{}
v1.POST("/public/uploadFile", api.UploadFile)
r := v1.Group("").Use(authMiddleware.MiddlewareFunc())
{
r.POST("/public/uploadFile", api.UploadFile)
}
}
@@ -4,7 +4,7 @@ import (
"github.com/gin-gonic/gin"
jwt "github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth"
"go-admin/app/admin/apis"
"go-admin/app/admin/apis/tools"
"go-admin/app/other/apis/tools"
)
func init() {
@@ -15,7 +15,7 @@ func sysNoCheckRoleRouter(v1 *gin.RouterGroup ,authMiddleware *jwt.GinJWTMiddlew
r1 := v1.Group("")
{
sys := apis.System{}
r1.GET("/getCaptcha", sys.GenerateCaptchaHandler)
r1.GET("/captcha", sys.GenerateCaptchaHandler)
}
r := v1.Group("").Use(authMiddleware.MiddlewareFunc())
@@ -43,13 +43,13 @@ func registerSysTableRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddl
tables := v1.Group("/sys/tables")
{
sysTable := tools.SysTable{}
tables.Group("").Use(authMiddleware.MiddlewareFunc()).GET("/page", sysTable.GetSysTableList)
tables.Group("").Use(authMiddleware.MiddlewareFunc()).GET("/page", sysTable.GetPage)
tablesInfo := tables.Group("/info").Use(authMiddleware.MiddlewareFunc())
{
tablesInfo.POST("", sysTable.InsertSysTable)
tablesInfo.PUT("", sysTable.UpdateSysTable)
tablesInfo.DELETE("/:tableId", sysTable.DeleteSysTables)
tablesInfo.GET("/:tableId", sysTable.GetSysTables)
tablesInfo.POST("", sysTable.Insert)
tablesInfo.PUT("", sysTable.Update)
tablesInfo.DELETE("/:tableId", sysTable.Delete)
tablesInfo.GET("/:tableId", sysTable.Get)
tablesInfo.GET("", sysTable.GetSysTablesInfo)
}
}
+7 -9
View File
@@ -1,7 +1,6 @@
package router
import (
"github.com/go-admin-team/go-admin-core/sdk/config"
"net/http"
"github.com/gin-gonic/gin"
@@ -15,11 +14,10 @@ func init() {
// 需认证的路由代码
func registerMonitorRouter(v1 *gin.RouterGroup) {
if config.ApplicationConfig.Mode == "dev" {
v1.GET("/metrics", transfer.Handler(promhttp.Handler()))
//健康检查
v1.GET("/health", func(c *gin.Context) {
c.Status(http.StatusOK)
})
}
}
v1.GET("/metrics", transfer.Handler(promhttp.Handler()))
//健康检查
v1.GET("/health", func(c *gin.Context) {
c.Status(http.StatusOK)
})
}
-25
View File
@@ -1,25 +0,0 @@
package router
import (
"github.com/gin-gonic/gin"
jwt "github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth"
"go-admin/app/other/apis"
"go-admin/common/middleware"
)
func init() {
routerCheckRole = append(routerCheckRole, registerSysChinaAreaDataRouter)
}
// 需认证的路由代码
func registerSysChinaAreaDataRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) {
api := apis.SysChinaAreaData{}
r := v1.Group("/sys-area-data").Use(authMiddleware.MiddlewareFunc()).Use(middleware.AuthCheckRole())
{
r.GET("", api.GetPage)
r.GET("/:id", api.Get)
r.POST("", api.Insert)
r.PUT("/:id", api.Update)
r.DELETE("", api.Delete)
}
}
-25
View File
@@ -1,25 +0,0 @@
package router
import (
"github.com/gin-gonic/gin"
jwt "github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth"
"go-admin/app/other/apis"
"go-admin/common/middleware"
)
func init() {
routerCheckRole = append(routerCheckRole, registerSysFileDirRouter)
}
// 需认证的路由代码
func registerSysFileDirRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) {
api := apis.SysFileDir{}
r := v1.Group("/file-dir").Use(authMiddleware.MiddlewareFunc()).Use(middleware.AuthCheckRole())
{
r.GET("", api.GetPage)
r.GET("/:id", api.Get)
r.POST("", api.Insert)
r.PUT("/:id", api.Update)
r.DELETE("/:id", api.Delete)
}
}
-25
View File
@@ -1,25 +0,0 @@
package router
import (
"github.com/gin-gonic/gin"
jwt "github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth"
"go-admin/app/other/apis"
"go-admin/common/middleware"
)
func init() {
routerCheckRole = append(routerCheckRole, registerSysFileInfoRouter)
}
// 需认证的路由代码
func registerSysFileInfoRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) {
api := apis.SysFileInfo{}
r := v1.Group("/file-info").Use(authMiddleware.MiddlewareFunc()).Use(middleware.AuthCheckRole())
{
r.GET("", api.GetPage)
r.GET("/:id", api.Get)
r.POST("", api.Insert)
r.PUT("/:id", api.Update)
r.DELETE("/:id", api.Delete)
}
}
@@ -1,96 +0,0 @@
package dto
import (
"go-admin/app/other/models"
"time"
"github.com/gin-gonic/gin"
"github.com/go-admin-team/go-admin-core/sdk/api"
"go-admin/common/dto"
)
type SysChinaAreaDataSearch struct {
dto.Pagination `search:"-"`
PId string `form:"pId" search:"type:exact;column:p_id;table:sys_china_area_data" comment:"上级编码"`
Name string `form:"name" search:"type:exact;column:name;table:sys_china_area_data" comment:"名称"`
}
func (m *SysChinaAreaDataSearch) GetNeedSearch() interface{} {
return *m
}
func (m *SysChinaAreaDataSearch) Bind(ctx *gin.Context) error {
log := api.GetRequestLogger(ctx)
err := ctx.ShouldBind(m)
if err != nil {
log.Debugf("ShouldBind error: %s", err.Error())
}
return err
}
type SysChinaAreaDataControl struct {
Id int `uri:"id" comment:"编码"` // 编码
PId int `json:"pId" comment:"上级编码"`
Name string `json:"name" comment:"名称"`
CreateTime time.Time `json:"createTime" comment:""`
UpdateTime time.Time `json:"updateTime" comment:""`
DeleteTime time.Time `json:"deleteTime" comment:""`
}
func (s *SysChinaAreaDataControl) Bind(ctx *gin.Context) error {
log := api.GetRequestLogger(ctx)
err := ctx.ShouldBindUri(s)
if err != nil {
log.Debugf("ShouldBindUri error: %s", err.Error())
return err
}
err = ctx.ShouldBind(s)
if err != nil {
log.Debugf("ShouldBind error: %s", err.Error())
}
return err
}
func (s *SysChinaAreaDataControl) Generate() (*models.SysChinaAreaData, error) {
return &models.SysChinaAreaData{
Id: s.Id,
PId: s.PId,
Name: s.Name,
}, nil
}
func (s *SysChinaAreaDataControl) GetId() interface{} {
return s.Id
}
type SysChinaAreaDataById struct {
Id int `uri:"id"`
Ids []int `json:"ids"`
}
func (s *SysChinaAreaDataById) GetId() interface{} {
if len(s.Ids) > 0 {
s.Ids = append(s.Ids, s.Id)
return s.Ids
}
return s.Id
}
func (s *SysChinaAreaDataById) Bind(ctx *gin.Context) error {
log := api.GetRequestLogger(ctx)
err := ctx.ShouldBindUri(s)
if err != nil {
log.Debugf("ShouldBindUri error: %s", err.Error())
return err
}
err = ctx.ShouldBind(s)
if err != nil {
log.Debugf("ShouldBind error: %s", err.Error())
}
return err
}
func (s *SysChinaAreaDataById) SetUpdateBy(id int) {
}
-99
View File
@@ -1,99 +0,0 @@
package dto
import (
"github.com/gin-gonic/gin"
"github.com/go-admin-team/go-admin-core/sdk/api"
"go-admin/app/other/models"
"go-admin/common/dto"
common "go-admin/common/models"
)
type SysFileDirSearch struct {
dto.Pagination `search:"-"`
ID int `form:"Id" search:"type:exact;column:id;table:sys_file_dir" comment:"标识"`
Label string `form:"label" search:"type:exact;column:label;table:sys_file_dir" comment:"目录名称"`
PId string `form:"pId" search:"type:exact;column:p_id;table:sys_file_dir" comment:"上级目录"`
//Sort string `form:"sort" search:"type:exact;column:sort;table:sys_file_dir" comment:"排序"`
Path string `form:"path" search:"type:exact;column:path;table:sys_file_dir" comment:"路径"`
}
func (m *SysFileDirSearch) GetNeedSearch() interface{} {
return *m
}
func (m *SysFileDirSearch) Bind(ctx *gin.Context) error {
log := api.GetRequestLogger(ctx)
err := ctx.ShouldBind(m)
if err != nil {
log.Debugf("ShouldBind error: %s", err.Error())
}
return err
}
func (m *SysFileDirSearch) Generate() dto.Index {
o := *m
return &o
}
type SysFileDirControl struct {
Id int `uri:"Id" comment:"标识"` // 标识
Label string `json:"label" comment:"目录名称"`
PId int `json:"pId" comment:"上级目录"`
Sort string `json:"sort" comment:"排序"`
Path string `json:"path" comment:"路径"`
CreateBy int `json:"-"`
UpdateBy int `json:"-"`
}
func (s *SysFileDirControl) Bind(ctx *gin.Context) error {
log := api.GetRequestLogger(ctx)
err := ctx.ShouldBindUri(s)
if err != nil {
log.Debugf("ShouldBindUri error: %s", err.Error())
return err
}
err = ctx.ShouldBind(s)
if err != nil {
log.Debugf("ShouldBind error: %s", err.Error())
}
return err
}
func (s *SysFileDirControl) Generate() dto.Control {
cp := *s
return &cp
}
func (s *SysFileDirControl) GenerateM() (common.ActiveRecord, error) {
return &models.SysFileDir{
Model: common.Model{Id: s.Id},
Label: s.Label,
PId: s.PId,
//Sort: s.Sort,
Path: s.Path,
ControlBy: common.ControlBy{
CreateBy: s.CreateBy,
UpdateBy: s.UpdateBy,
},
}, nil
}
func (s *SysFileDirControl) GetId() interface{} {
return s.Id
}
type SysFileDirById struct {
dto.ObjectById
UpdateBy int `json:"-"`
}
func (s *SysFileDirById) Generate() dto.Control {
cp := *s
return &cp
}
func (s *SysFileDirById) GenerateM() (common.ActiveRecord, error) {
return &models.SysFileDir{}, nil
}
-52
View File
@@ -1,52 +0,0 @@
package dto
import (
"go-admin/app/other/models"
"go-admin/common/dto"
common "go-admin/common/models"
)
type SysFileInfoSearch struct {
dto.Pagination `search:"-"`
ID int `form:"Id" search:"type:exact;column:id;table:sys_file_info" comment:"标识"`
Type string `form:"type" search:"type:exact;column:type;table:sys_file_info" comment:"类型"`
Name string `form:"name" search:"type:exact;column:name;table:sys_file_info" comment:"名称"`
PId string `form:"pId" search:"type:exact;column:p_id;table:sys_file_info" comment:"目录"`
Source string `form:"source" search:"type:exact;column:source;table:sys_file_info" comment:"来源"`
}
func (m *SysFileInfoSearch) GetNeedSearch() interface{} {
return *m
}
type SysFileInfoControl struct {
Id int `uri:"id" comment:"标识"` // 标识
Type string `json:"type" comment:"类型"`
Name string `json:"name" comment:"名称"`
Size string `json:"size" comment:"大小"`
PId int `json:"pId" comment:"目录"`
Source string `json:"source" comment:"来源"`
Url string `json:"url" comment:"地址"`
FullUrl string `json:"fullUrl" comment:"全地址"`
CreateBy int `json:"-"`
UpdateBy int `json:"-"`
}
func (s *SysFileInfoControl) Generate() (*models.SysFileInfo, error) {
return &models.SysFileInfo{
Model: common.Model{Id: s.Id},
Type: s.Type,
Name: s.Name,
Size: s.Size,
PId: s.PId,
Source: s.Source,
Url: s.Url,
FullUrl: s.FullUrl,
ControlBy: common.ControlBy{CreateBy: s.CreateBy, UpdateBy: s.UpdateBy},
}, nil
}
type SysFileInfoById struct {
dto.ObjectById
UpdateBy int `json:"-"`
}
-129
View File
@@ -1,129 +0,0 @@
package service
import (
"errors"
"github.com/go-admin-team/go-admin-core/sdk/service"
"gorm.io/gorm"
"go-admin/app/other/models"
"go-admin/app/other/service/dto"
"go-admin/common/actions"
cDto "go-admin/common/dto"
)
type SysChinaAreaData struct {
service.Service
}
// GetPage 获取SysChinaAreaData列表
func (e *SysChinaAreaData) GetPage(c *dto.SysChinaAreaDataSearch, list *[]models.SysChinaAreaData) *SysChinaAreaData {
var data models.SysChinaAreaData
var areaDataList []models.SysChinaAreaData
err := e.Orm.Model(&data).
Scopes(
cDto.MakeCondition(c.GetNeedSearch()),
).
Find(&areaDataList).Error
if err != nil {
e.Log.Errorf("Service GetSysChinaAreaDataPage error:%s", err)
_ = e.AddError(err)
return e
}
for i := 0; i < len(areaDataList); i++ {
if areaDataList[i].PId != 86 {
continue
}
menusInfo := areaDataCall(&areaDataList, areaDataList[i])
*list = append(*list, menusInfo)
}
return e
}
// areaDataCall 构建树
func areaDataCall(areaDataList *[]models.SysChinaAreaData, areaData models.SysChinaAreaData) models.SysChinaAreaData {
list := *areaDataList
min := make([]models.SysChinaAreaData, 0)
for j := 0; j < len(list); j++ {
if areaData.Id != list[j].PId {
continue
}
mi := models.SysChinaAreaData{}
mi = list[j]
mi.Children = []models.SysChinaAreaData{}
ms := areaDataCall(areaDataList, mi)
min = append(min, ms)
}
areaData.Children = min
return areaData
}
// Get 获取SysChinaAreaData对象
func (e *SysChinaAreaData) Get(d *dto.SysChinaAreaDataById, p *actions.DataPermission, model *models.SysChinaAreaData) error {
var data models.SysChinaAreaData
err := e.Orm.Model(&data).
Scopes(
actions.Permission(data.TableName(), p),
).
First(model, d.GetId()).Error
if err != nil && errors.Is(err, gorm.ErrRecordNotFound) {
err = errors.New("查看对象不存在或无权查看")
e.Log.Errorf("db error:%s", err)
return err
}
if err != nil {
e.Log.Errorf("Service GetSysChinaAreaData error:%s", err)
return err
}
return nil
}
// Insert 创建SysChinaAreaData对象
func (e *SysChinaAreaData) Insert(model *models.SysChinaAreaData) error {
var data models.SysChinaAreaData
err := e.Orm.Model(&data).
Create(model).Error
if err != nil {
e.Log.Errorf("Service InsertSysChinaAreaData error:%s", err)
return err
}
return nil
}
// Update 修改SysChinaAreaData对象
func (e *SysChinaAreaData) Update(c *models.SysChinaAreaData, p *actions.DataPermission) error {
db := e.Orm.Model(&models.SysChinaAreaData{
Id: c.GetId().(int),
}).
Scopes(
actions.Permission(c.TableName(), p),
).Updates(c)
if err := db.Error; err != nil {
e.Log.Errorf("Service UpdateSysChinaAreaData error: %s", err)
return err
}
if db.RowsAffected == 0 {
return errors.New("无权更新该数据")
}
return nil
}
// Remove 删除SysChinaAreaData
func (e *SysChinaAreaData) Remove(d *dto.SysChinaAreaDataById, p *actions.DataPermission) error {
var data models.SysChinaAreaData
db := e.Orm.Model(&data).
Scopes(
actions.Permission(data.TableName(), p),
).Delete(&data, d.GetId())
if err := db.Error; err != nil {
e.Log.Errorf("Service RemoveSysChinaAreaData error: %s", err)
return err
}
if db.RowsAffected == 0 {
return errors.New("无权删除该数据")
}
return nil
}
-169
View File
@@ -1,169 +0,0 @@
package service
import (
"errors"
"fmt"
common "go-admin/common/models"
"github.com/go-admin-team/go-admin-core/sdk/service"
"gorm.io/gorm"
"go-admin/app/other/models"
"go-admin/app/other/service/dto"
"go-admin/common/actions"
cDto "go-admin/common/dto"
)
type SysFileDir struct {
service.Service
}
// GetSysFileDirPage 获取SysFileDir列表
func (e *SysFileDir) GetSysFileDirPage(c *dto.SysFileDirSearch, list *[]models.SysFileDir) error {
var err error
var data models.SysFileDir
err = e.Orm.Model(&data).
Scopes(
cDto.MakeCondition(c.GetNeedSearch()),
).
Find(list). //Limit(-1).Offset(-1).
Error
if err != nil {
e.Log.Errorf("db error: %s", err)
return err
}
return nil
}
// GetSysFileDir 获取SysFileDir对象
func (e *SysFileDir) GetSysFileDir(d cDto.Control, model *models.SysFileDir) error {
var err error
var data models.SysFileDir
db := e.Orm.Model(&data).
First(model, d.GetId())
err = db.Error
if err != nil && errors.Is(err, gorm.ErrRecordNotFound) {
err = errors.New("查看对象不存在或无权查看")
e.Log.Errorf("db error: %s", err)
return err
}
if db.Error != nil {
e.Log.Errorf("db error:%s", err)
return err
}
return nil
}
// InsertSysFileDir 创建SysFileDir对象
func (e *SysFileDir) InsertSysFileDir(model *dto.SysFileDirControl) error {
var err error
data, _ := model.GenerateM()
err = e.Orm.Create(data).Error
if err != nil {
e.Log.Errorf("db error: %s", err)
return err
}
path := fmt.Sprintf("/%d", model.Id)
//db = e.Orm.Model(&data).
// First(&data, model.GetId())
//err = db.Error
if model.PId != 0 {
var dept models.SysFileDir
e.Orm.Model(&models.SysFileDir{}).Where("id = ?", model.PId).First(&dept)
path = dept.Path + path
} else {
path = "/0" + path
}
//var mp = map[string]string{}
//mp["path"] = path
if err = e.Orm.Model(&models.SysFileDir{}).Where("id = ?", model.Id).Update("path", path).Error; err != nil {
return err
}
return nil
}
// UpdateSysFileDir 修改SysFileDir对象
func (e *SysFileDir) Update(c *dto.SysFileDirControl, p *actions.DataPermission) error {
var err error
data, _ := c.GenerateM()
db := e.Orm.Model(&models.SysFileDir{Model: common.Model{Id: c.GetId().(int)}}).
Scopes(
actions.Permission(data.TableName(), p),
).Updates(data)
if db.Error != nil {
e.Log.Errorf("db error: %s", err)
return err
}
if db.RowsAffected == 0 {
return errors.New("无权更新该数据")
}
return nil
}
// RemoveSysFileDir 删除SysFileDir
func (e *SysFileDir) RemoveSysFileDir(d *dto.SysFileDirById, p *actions.DataPermission) error {
var err error
var data models.SysFileDir
db := e.Orm.Model(&data).
Scopes(
actions.Permission(data.TableName(), p),
).Delete(&data, d.Id)
if db.Error != nil {
err = db.Error
e.Log.Errorf("Delete error: %s", err)
return err
}
if db.RowsAffected == 0 {
err = errors.New("无权删除该数据")
return err
}
return nil
}
func (e *SysFileDir) SetSysFileDir(c *dto.SysFileDirSearch) (*[]models.SysFileDir, error) {
var list []models.SysFileDir
err := e.GetSysFileDirPage(c, &list)
m := make([]models.SysFileDir, 0)
for i := 0; i < len(list); i++ {
if list[i].PId != 0 {
continue
}
info := SysFileDirCall(&list, list[i])
m = append(m, info)
}
return &m, err
}
func SysFileDirCall(list *[]models.SysFileDir, m models.SysFileDir) models.SysFileDir {
listGroup := *list
min := make([]models.SysFileDir, 0)
for j := 0; j < len(listGroup); j++ {
if m.Id != listGroup[j].PId {
continue
}
mi := models.SysFileDir{}
mi.Id = listGroup[j].Id
mi.PId = listGroup[j].PId
mi.Label = listGroup[j].Label
//mi.Sort = listGroup[j].Sort
mi.CreatedAt = listGroup[j].CreatedAt
mi.UpdatedAt = listGroup[j].UpdatedAt
mi.Children = []models.SysFileDir{}
ms := SysFileDirCall(list, mi)
min = append(min, ms)
}
if len(min) > 0 {
m.Children = min
} else {
m.Children = nil
}
return m
}
-130
View File
@@ -1,130 +0,0 @@
package service
import (
"errors"
common "go-admin/common/models"
"go-admin/app/other/models"
"go-admin/app/other/service/dto"
"go-admin/common/actions"
cDto "go-admin/common/dto"
"github.com/go-admin-team/go-admin-core/sdk/service"
"gorm.io/gorm"
)
type SysFileInfo struct {
service.Service
}
// GetSysFileInfoPage 获取SysFileInfo列表
func (e *SysFileInfo) GetSysFileInfoPage(c *dto.SysFileInfoSearch, p *actions.DataPermission, list *[]models.SysFileInfo, count *int64) error {
var err error
var data models.SysFileInfo
err = e.Orm.Model(&data).
Scopes(
cDto.MakeCondition(c.GetNeedSearch()),
cDto.Paginate(c.GetPageSize(), c.GetPageIndex()),
actions.Permission(data.TableName(), p),
).
Find(list).Limit(-1).Offset(-1).
Count(count).Error
if err != nil {
e.Log.Errorf("db error: %s", err)
return err
}
return nil
}
// GetSysFileInfo 获取SysFileInfo对象
func (e *SysFileInfo) GetSysFileInfo(d *dto.SysFileInfoById, p *actions.DataPermission, model *models.SysFileInfo) error {
var err error
var data models.SysFileInfo
db := e.Orm.Model(&data).
Scopes(
actions.Permission(data.TableName(), p),
).
First(model, d.GetId())
err = db.Error
if err != nil && errors.Is(err, gorm.ErrRecordNotFound) {
err = errors.New("查看对象不存在或无权查看")
e.Log.Errorf("db error: %s", err)
return err
}
if db.Error != nil {
e.Log.Errorf("db error: %s", err)
return err
}
return nil
}
// InsertSysFileInfo 创建SysFileInfo对象
func (e *SysFileInfo) InsertSysFileInfo(model *dto.SysFileInfoControl) error {
var err error
var data *models.SysFileInfo
data, err = model.Generate()
if err != nil {
e.Log.Errorf("db error: %s", err)
return err
}
err = e.Orm.Model(&data).
Create(data).Error
if err != nil {
e.Log.Errorf("db error: %s", err)
return err
}
return nil
}
// UpdateSysFileInfo 修改SysFileInfo对象
func (e *SysFileInfo) UpdateSysFileInfo(c *dto.SysFileInfoControl, p *actions.DataPermission) error {
var err error
var data *models.SysFileInfo
data, err = c.Generate()
if err != nil {
e.Log.Errorf("db error: %s", err)
return err
}
err = e.Orm.Debug().Model(&models.SysFileInfo{Model: common.Model{
Id: c.Id,
}}).
Scopes(
actions.Permission(data.TableName(), p),
).Updates(&data).Error
if err != nil {
e.Log.Errorf("db error: %s", err)
return err
}
if err == gorm.ErrRecordNotFound {
return errors.New("无权更新该数据")
}
return nil
}
// RemoveSysFileInfo 删除SysFileInfo
func (e *SysFileInfo) RemoveSysFileInfo(d *dto.SysFileInfoById, p *actions.DataPermission) error {
var err error
var data models.SysFileInfo
db := e.Orm.Model(&data).
Scopes(
actions.Permission(data.TableName(), p),
).Delete(&data, d.GetId())
if db.Error != nil {
err = db.Error
e.Log.Errorf("Delete error: %s", err)
return err
}
if db.RowsAffected == 0 {
err = errors.New("无权删除该数据")
return err
}
return nil
}
-8
View File
@@ -1,8 +0,0 @@
package api
import "go-admin/app/cms/router"
func init() {
//注册路由 fixme 其他应用的路由,在本目录新建文件放在init方法
AppRouters = append(AppRouters, router.InitRouter)
}
@@ -1,13 +0,0 @@
package models
type SysChinaAreaData struct {
Id int `json:"id" gorm:"primaryKey;comment:主键编码"`
PId int `json:"pId" gorm:"size:11;comment:上级编码"`
Name string `json:"name" gorm:"size:128;comment:名称"`
ControlBy
ModelTime
}
func (SysChinaAreaData) TableName() string {
return "sys_china_area_data"
}
+5 -5
View File
@@ -2,12 +2,12 @@ package models
type SysConfig struct {
Model
ConfigName string `json:"configName" gorm:"type:varchar(128);comment:ConfigName"` //
ConfigKey string `json:"configKey" gorm:"type:varchar(128);comment:ConfigKey"` //
ConfigValue string `json:"configValue" gorm:"type:varchar(255);comment:ConfigValue"` //
ConfigName string `json:"configName" gorm:"type:varchar(128);comment:ConfigName"`
ConfigKey string `json:"configKey" gorm:"type:varchar(128);comment:ConfigKey"`
ConfigValue string `json:"configValue" gorm:"type:varchar(255);comment:ConfigValue"`
ConfigType string `json:"configType" gorm:"type:varchar(64);comment:ConfigType"`
IsFrontend int `json:"isFrontend" gorm:"type:varchar(64);comment:是否前台"` //
Remark string `json:"remark" gorm:"type:varchar(128);comment:Remark"` //
IsFrontend int `json:"isFrontend" gorm:"type:varchar(64);comment:是否前台"`
Remark string `json:"remark" gorm:"type:varchar(128);comment:Remark"`
ControlBy
ModelTime
}
+2 -2
View File
@@ -5,11 +5,11 @@ type SysDept struct {
ParentId int `json:"parentId" gorm:""` //上级部门
DeptPath string `json:"deptPath" gorm:"size:255;"` //
DeptName string `json:"deptName" gorm:"size:128;"` //部门名称
Sort int `json:"sort" gorm:""` //排序
Sort int `json:"sort" gorm:"size:4;"` //排序
Leader string `json:"leader" gorm:"size:128;"` //负责人
Phone string `json:"phone" gorm:"size:11;"` //手机
Email string `json:"email" gorm:"size:64;"` //邮箱
Status string `json:"status" gorm:"size:4;"` //状态
Status int `json:"status" gorm:"size:4;"` //状态
ControlBy
ModelTime
}
@@ -9,7 +9,7 @@ type DictData struct {
CssClass string `gorm:"size:128;" json:"cssClass"` //
ListClass string `gorm:"size:128;" json:"listClass"` //
IsDefault string `gorm:"size:8;" json:"isDefault"` //
Status string `gorm:"size:4;" json:"status"` //状态
Status int `gorm:"size:4;" json:"status"` //状态
Default string `gorm:"size:8;" json:"default"` //
Remark string `gorm:"size:255;" json:"remark"` //备注
ControlBy
@@ -4,7 +4,7 @@ type DictType struct {
DictId int `gorm:"primaryKey;autoIncrement;" json:"dictId"`
DictName string `gorm:"size:128;" json:"dictName"` //字典名称
DictType string `gorm:"size:128;" json:"dictType"` //字典类型
Status string `gorm:"size:4;" json:"status"` //状态
Status int `gorm:"size:4;" json:"status"` //状态
Remark string `gorm:"size:255;" json:"remark"` //备注
ControlBy
ModelTime
@@ -1,16 +0,0 @@
package models
type SysFileDir struct {
Model
Label string `json:"label" gorm:"type:varchar(255);comment:目录名称"` // 目录名称
PId int `json:"pId" gorm:"type:int(11);comment:上级目录"` // 上级目录
Sort string `json:"sort" gorm:"type:bigint(20);comment:排序"` // 排序
Path string `json:"path" gorm:"type:varchar(255);comment:路径"` // 路径
Children []SysFileDir `json:"children,omitempty" gorm:"-"` // 下级信息
ControlBy
ModelTime
}
func (SysFileDir) TableName() string { /**/
return "sys_file_dir"
}
@@ -1,18 +0,0 @@
package models
type SysFileInfo struct {
Model
Type string `json:"type" gorm:"type:varchar(255);comment:类型"` //
Name string `json:"name" gorm:"type:varchar(255);comment:名称"` //
Size string `json:"size" gorm:"type:int(11);comment:大小"` //
PId int `json:"pId" gorm:"type:int(11);comment:目录"` //
Source string `json:"source" gorm:"type:varchar(255);comment:来源"` //
Url string `json:"url" gorm:"type:varchar(255);comment:地址"` //
FullUrl string `json:"fullUrl" gorm:"type:varchar(255);comment:全地址"` //
ControlBy
ModelTime
}
func (SysFileInfo) TableName() string {
return "sys_file_info"
}
+1 -1
View File
@@ -28,7 +28,7 @@ func (SysUser) TableName() string {
return "sys_user"
}
//加密
// Encrypt 加密
func (e *SysUser) Encrypt() (err error) {
if e.Password == "" {
return
@@ -1,16 +0,0 @@
package models
type SysCategory struct {
Model
Name string `json:"name" gorm:"type:varchar(255);comment:名称"` //
Img string `json:"img" gorm:"type:varchar(255);comment:图标"` //
Sort int `json:"sort" gorm:"type:int(4);comment:排序"` //
Status int `json:"status" gorm:"type:int(1);comment:状态"` //
Remark string `json:"remark" gorm:"type:varchar(255);comment:备注"` //
ControlBy
ModelTime
}
func (SysCategory) TableName() string {
return "sys_category"
}
@@ -1,19 +0,0 @@
package models
type SysContent struct {
Model
CateId int `json:"cateId" gorm:"type:int(11);comment:分类id"`
Name string `json:"name" gorm:"type:varchar(255);comment:名称"`
Status int `json:"status" gorm:"type:int(1);comment:状态"`
Img string `json:"img" gorm:"type:varchar(255);comment:图片"`
Content string `json:"content" gorm:"type:text;comment:内容"`
Remark string `json:"remark" gorm:"type:varchar(255);comment:备注"`
Sort int `json:"sort" gorm:"type:int(4);comment:排序"`
ControlBy
ModelTime
}
// TableName
func (SysContent) TableName() string {
return "sys_content"
}
-12
View File
@@ -1,12 +0,0 @@
package models
type SysSetting struct {
SettingsId int `json:"settings_id" gorm:"primary_key;AUTO_INCREMENT"`
Name string `json:"name" gorm:"type:varchar(256);"`
Logo string `json:"logo" gorm:"type:varchar(256);"`
ModelTime
}
func (SysSetting) TableName() string {
return "sys_setting"
}
@@ -32,14 +32,8 @@ func _1599190683659Tables(db *gorm.DB, version string) error {
new(models.SysPost),
new(models.DictData),
new(models.DictType),
new(models.SysChinaAreaData),
new(models.SysJob),
new(models.SysConfig),
new(models.SysSetting),
new(models.SysFileDir),
new(models.SysFileInfo),
new(models.SysCategory),
new(models.SysContent),
new(models.SysApi),
)
if err != nil {
+2 -2
View File
@@ -33,14 +33,14 @@ func CreateAction(control dto.Control) gin.HandlerFunc {
var object models.ActiveRecord
object, err = req.GenerateM()
if err != nil {
response.Error(c, http.StatusInternalServerError, err, "模型生成失败")
response.Error(c, 500, err, "模型生成失败")
return
}
object.SetCreateBy(user.GetUserId(c))
err = db.WithContext(c).Create(object).Error
if err != nil {
log.Errorf("Create error: %s", err)
response.Error(c, http.StatusInternalServerError, err, "创建失败")
response.Error(c, 500, err, "创建失败")
return
}
response.OK(c, object.GetId(), "创建成功")
+2 -2
View File
@@ -34,7 +34,7 @@ func DeleteAction(control dto.Control) gin.HandlerFunc {
var object models.ActiveRecord
object, err = req.GenerateM()
if err != nil {
response.Error(c, http.StatusInternalServerError, err, "模型生成失败")
response.Error(c, 500, err, "模型生成失败")
return
}
@@ -48,7 +48,7 @@ func DeleteAction(control dto.Control) gin.HandlerFunc {
).Where(req.GetId()).Delete(object)
if db.Error != nil {
log.Errorf("MsgID[%s] Delete error: %s", msgID, err)
response.Error(c, http.StatusInternalServerError, err, "删除失败")
response.Error(c, 500, err, "删除失败")
return
}
if db.RowsAffected == 0 {
+1 -1
View File
@@ -49,7 +49,7 @@ func IndexAction(m models.ActiveRecord, d dto.Index, f func() interface{}) gin.H
Count(&count).Error
if err != nil && !errors.Is(err, gorm.ErrRecordNotFound) {
log.Errorf("MsgID[%s] Index error: %s", msgID, err)
response.Error(c, http.StatusInternalServerError, err, "查询失败")
response.Error(c, 500, err, "查询失败")
return
}
response.PageOK(c, list, int(count), req.GetPageIndex(), req.GetPageSize(), "查询成功")
+1 -2
View File
@@ -2,7 +2,6 @@ package actions
import (
"errors"
"net/http"
"github.com/gin-gonic/gin"
log "github.com/go-admin-team/go-admin-core/logger"
@@ -34,7 +33,7 @@ func PermissionAction() gin.HandlerFunc {
p, err = newDataPermission(db, userId)
if err != nil {
log.Errorf("MsgID[%s] PermissionAction error: %s", msgID, err)
response.Error(c, http.StatusInternalServerError, err, "权限范围鉴定错误")
response.Error(c, 500, err, "权限范围鉴定错误")
c.Abort()
return
}

Some files were not shown because too many files have changed in this diff Show More