This commit is contained in:
wenjianzhang
2021-05-10 17:04:33 +08:00
87 changed files with 956 additions and 888 deletions
+13 -4
View File
@@ -157,14 +157,22 @@ vi ./config/setting.yml
``` ```
#### 初始化数据库,以及服务启动 #### 初始化数据库,以及服务启动
``` ``` bash
# 首次配置需要初始化数据库资源信息 # 首次配置需要初始化数据库资源信息
./go-admin migrate -c config/settings.yml # macOS or linux 下使用
$ ./go-admin migrate -c=config/settings.dev.yml
# ⚠️注意:windows 下使用
$ ./go-admin.exe migrate -c=config/settings.dev.yml
# 启动项目,也可以用IDE进行调试 # 启动项目,也可以用IDE进行调试
./go-admin server -c config/settings.yml # macOS or linux 下使用
$ ./go-admin server -c config/settings.yml
# ⚠️注意:windows 下使用
$ ./go-admin.exe server -c config/settings.yml
``` ```
#### 使用docker 编译启动 #### 使用docker 编译启动
@@ -188,10 +196,11 @@ go generate
#### 交叉编译 #### 交叉编译
```bash ```bash
# windows
env GOOS=windows GOARCH=amd64 go build main.go env GOOS=windows GOARCH=amd64 go build main.go
# or # or
# linux
env GOOS=linux GOARCH=amd64 go build main.go env GOOS=linux GOARCH=amd64 go build main.go
``` ```
@@ -1,4 +1,4 @@
package system package apis
import ( import (
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
@@ -1,4 +1,4 @@
package system package apis
import ( import (
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
@@ -1,6 +1,7 @@
package sys_config package apis
import ( import (
"github.com/gin-gonic/gin/binding"
"net/http" "net/http"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
@@ -17,7 +18,7 @@ type SysConfig struct {
} }
func (e SysConfig) GetSysConfigList(c *gin.Context) { func (e SysConfig) GetSysConfigList(c *gin.Context) {
e.Context = c e.SetContext(c) //Context = c
log := e.GetLogger() log := e.GetLogger()
d := new(dto.SysConfigSearch) d := new(dto.SysConfigSearch)
db, err := e.GetOrm() db, err := e.GetOrm()
@@ -25,9 +26,9 @@ func (e SysConfig) GetSysConfigList(c *gin.Context) {
log.Error(err) log.Error(err)
return return
} }
err = e.Bind(d, binding.Query)
//查询列表 //查询列表
err = d.Bind(c) //err = d.Bind(c)
if err != nil { if err != nil {
log.Errorf("参数验证失败, error:%s", err) log.Errorf("参数验证失败, error:%s", err)
e.Error(500, err, "参数验证失败") e.Error(500, err, "参数验证失败")
@@ -58,7 +59,7 @@ func (e SysConfig) GetSysConfigBySysApp(c *gin.Context) {
log.Error(err) log.Error(err)
return return
} }
err = d.Bind(c) err = e.Bind(d, binding.Query)
if err != nil { if err != nil {
log.Errorf("参数验证失败, error:%s", err) log.Errorf("参数验证失败, error:%s", err)
e.Error(500, err, "参数验证失败") e.Error(500, err, "参数验证失败")
@@ -98,6 +99,7 @@ func (e SysConfig) GetSysConfig(c *gin.Context) {
return return
} }
//查看详情 //查看详情
err = e.Bind(control)
err = control.Bind(c) err = control.Bind(c)
if err != nil { if err != nil {
e.Error(http.StatusUnprocessableEntity, err, "参数验证失败") e.Error(http.StatusUnprocessableEntity, err, "参数验证失败")
@@ -132,7 +134,7 @@ func (e SysConfig) InsertSysConfig(c *gin.Context) {
} }
//新增操作 //新增操作
err = control.Bind(c) err = e.Bind(control, binding.JSON)
if err != nil { if err != nil {
e.Error(http.StatusUnprocessableEntity, err, "参数验证失败") e.Error(http.StatusUnprocessableEntity, err, "参数验证失败")
log.Errorf("Orm获取失败, error:%s", err) log.Errorf("Orm获取失败, error:%s", err)
@@ -175,7 +177,7 @@ func (e SysConfig) UpdateSysConfig(c *gin.Context) {
} }
//更新操作 //更新操作
err = control.Bind(c) err = e.Bind(control, binding.JSON)
if err != nil { if err != nil {
e.Error(http.StatusUnprocessableEntity, err, "参数验证失败") e.Error(http.StatusUnprocessableEntity, err, "参数验证失败")
@@ -216,19 +218,16 @@ func (e SysConfig) DeleteSysConfig(c *gin.Context) {
} }
//删除操作 //删除操作
err = control.Bind(c) err = e.Bind(control, binding.JSON)
if err != nil { if err != nil {
log.Errorf("Bind error: %s", err) log.Errorf("Bind error: %s", err)
e.Error(http.StatusUnprocessableEntity, err, "参数验证失败") e.Error(http.StatusUnprocessableEntity, err, "参数验证失败")
log.Errorf("Orm获取失败, error:%s", err)
e.Error(500, err, "Orm获取失败")
return return
} }
object, err := control.GenerateM() object, err := control.GenerateM()
if err != nil { if err != nil {
e.Error(http.StatusInternalServerError, err, "模型生成失败") e.Error(http.StatusInternalServerError, err, "模型生成失败")
log.Errorf("Orm获取失败, error:%s", err) log.Errorf("Orm获取失败, error:%s", err)
e.Error(500, err, "Orm获取失败")
return return
} }
@@ -242,7 +241,6 @@ func (e SysConfig) DeleteSysConfig(c *gin.Context) {
if err != nil { if err != nil {
e.Error(http.StatusUnprocessableEntity, err, "删除失败") e.Error(http.StatusUnprocessableEntity, err, "删除失败")
log.Errorf("Orm获取失败, error:%s", err) log.Errorf("Orm获取失败, error:%s", err)
e.Error(500, err, "Orm获取失败")
return return
} }
e.OK(object.GetId(), "删除成功") e.OK(object.GetId(), "删除成功")
@@ -1,4 +1,4 @@
package sys_dept package apis
import ( import (
"github.com/go-admin-team/go-admin-core/sdk/pkg" "github.com/go-admin-team/go-admin-core/sdk/pkg"
@@ -1,4 +1,4 @@
package dict package apis
import ( import (
"net/http" "net/http"
@@ -1,4 +1,4 @@
package dict package apis
import ( import (
"net/http" "net/http"
@@ -1,4 +1,4 @@
package sys_login_log package apis
import ( import (
"net/http" "net/http"
@@ -1,4 +1,4 @@
package sys_menu package apis
import ( import (
"net/http" "net/http"
@@ -1,4 +1,4 @@
package sys_opera_log package apis
import ( import (
"net/http" "net/http"
@@ -1,4 +1,4 @@
package sys_post package apis
import ( import (
"net/http" "net/http"
@@ -1,4 +1,4 @@
package sys_role package apis
import ( import (
"net/http" "net/http"
@@ -1,4 +1,4 @@
package sys_user package apis
import ( import (
"net/http" "net/http"
-98
View File
@@ -1,98 +0,0 @@
package system
import (
"fmt"
"net/http"
"strings"
"github.com/gin-gonic/gin"
"go-admin/app/admin/models"
"go-admin/app/admin/service"
"go-admin/app/admin/service/dto"
"go-admin/common/apis"
)
type SysSetting struct {
apis.Api
}
// @Summary 查询系统信息
// @Description 获取JSON
// @Tags 系统信息
// @Success 200 {string} string "{"code": 200, "message": "添加成功"}"
// @Success 200 {string} string "{"code": -1, "message": "添加失败"}"
// @Router /api/v1/setting [get]
func (e SysSetting) GetSetting(c *gin.Context) {
e.Context = c
log := e.GetLogger()
db, err := e.GetOrm()
if err != nil {
log.Error(err)
return
}
sysSettingService := service.SysSetting{}
sysSettingService.Log = log
sysSettingService.Orm = db
var model = models.SysSetting{}
err = sysSettingService.GetSysSetting(&model)
if err != nil {
e.Error(http.StatusInternalServerError, err, "查询失败")
return
}
if model.Logo != "" {
if !strings.HasPrefix(model.Logo, "http") {
model.Logo = fmt.Sprintf("http://%s/%s", c.Request.Host, model.Logo)
}
}
e.OK(model, "查询成功")
}
// @Summary 更新或提交系统信息
// @Description 获取JSON
// @Tags 系统信息
// @Param data body dto.SysSettingControl true "body"
// @Success 200 {string} string "{"code": 200, "message": "添加成功"}"
// @Success 200 {string} string "{"code": -1, "message": "添加失败"}"
// @Router /api/v1/system/setting [post]
func (e SysSetting) CreateOrUpdateSetting(c *gin.Context) {
control := new(dto.SysSettingControl)
e.Context = c
log := e.GetLogger()
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
}
sysSettingService := service.SysSetting{}
sysSettingService.Log = log
sysSettingService.Orm = db
err = sysSettingService.UpdateSysSetting(object)
if err != nil {
e.Error(http.StatusInternalServerError, err, "更新失败")
return
}
if object.Logo != "" {
if !strings.HasPrefix(object.Logo, "http") {
object.Logo = fmt.Sprintf("http://%s/%s", c.Request.Host, object.Logo)
}
}
e.OK(object, "提交成功")
}
+1
View File
@@ -10,6 +10,7 @@ import (
"go-admin/app/admin/models/tools" "go-admin/app/admin/models/tools"
) )
// GetDBColumnList 分页列表数据
// @Summary 分页列表数据 / page list data // @Summary 分页列表数据 / page list data
// @Description 数据库表列分页列表 / database table column page list // @Description 数据库表列分页列表 / database table column page list
// @Tags 工具 / Tools // @Tags 工具 / Tools
+1 -1
View File
@@ -12,6 +12,7 @@ import (
"go-admin/app/admin/models/tools" "go-admin/app/admin/models/tools"
) )
// GetDBTableList 分页列表数据
// @Summary 分页列表数据 / page list data // @Summary 分页列表数据 / page list data
// @Description 数据库表分页列表 / database table page list // @Description 数据库表分页列表 / database table page list
// @Tags 工具 / Tools // @Tags 工具 / Tools
@@ -32,7 +33,6 @@ func (e *Gen) GetDBTableList(c *gin.Context) {
err = errors.New("对不起,sqlite3 或 postgres 不支持代码生成!") err = errors.New("对不起,sqlite3 或 postgres 不支持代码生成!")
log.Warn(err) log.Warn(err)
e.Error(403, err, "") e.Error(403, err, "")
//c.JSON(http.StatusOK, res.ReturnError(500))
return return
} }
+12 -10
View File
@@ -21,7 +21,7 @@ type Gen struct {
apis.Api apis.Api
} }
func (e *Gen) Preview(c *gin.Context) { func (e Gen) Preview(c *gin.Context) {
e.Context = c e.Context = c
log := e.GetLogger() log := e.GetLogger()
table := tools.SysTables{} table := tools.SysTables{}
@@ -109,7 +109,7 @@ func (e *Gen) Preview(c *gin.Context) {
e.OK(mp, "") e.OK(mp, "")
} }
func (e *Gen) GenCodeV3(c *gin.Context) { func (e Gen) GenCode(c *gin.Context) {
e.Context = c e.Context = c
log := e.GetLogger() log := e.GetLogger()
table := tools.SysTables{} table := tools.SysTables{}
@@ -131,15 +131,15 @@ func (e *Gen) GenCodeV3(c *gin.Context) {
tab, _ := table.Get(db) tab, _ := table.Get(db)
if tab.IsActions == 1 { if tab.IsActions == 1 {
e.ActionsGenV3(c, tab) e.ActionsGen(c, tab)
} else { } else {
e.NOActionsGenV3(c, tab) e.NOActionsGen(c, tab)
} }
e.OK("", "Code generated successfully") e.OK("", "Code generated successfully")
} }
func (e *Gen) GenApiToFile(c *gin.Context) { func (e Gen) GenApiToFile(c *gin.Context) {
e.Context = c e.Context = c
log := e.GetLogger() log := e.GetLogger()
table := tools.SysTables{} table := tools.SysTables{}
@@ -164,7 +164,7 @@ func (e *Gen) GenApiToFile(c *gin.Context) {
e.OK("", "Code generated successfully") e.OK("", "Code generated successfully")
} }
func (e *Gen) NOActionsGenV3(c *gin.Context, tab tools.SysTables) { func (e Gen) NOActionsGen(c *gin.Context, tab tools.SysTables) {
e.Context = c e.Context = c
log := e.GetLogger() log := e.GetLogger()
@@ -249,7 +249,7 @@ func (e *Gen) NOActionsGenV3(c *gin.Context, tab tools.SysTables) {
} }
func (e *Gen) genApiToFile(c *gin.Context, tab tools.SysTables) { func (e Gen) genApiToFile(c *gin.Context, tab tools.SysTables) {
e.Context = c e.Context = c
log := e.GetLogger() log := e.GetLogger()
@@ -272,7 +272,8 @@ func (e *Gen) genApiToFile(c *gin.Context, tab tools.SysTables) {
} }
func (e *Gen) ActionsGenV3(c *gin.Context, tab tools.SysTables) { func (e Gen) ActionsGen(c *gin.Context, tab tools.SysTables) {
e.Context = c
log := api.GetRequestLogger(c) log := api.GetRequestLogger(c)
basePath := "template/v4/" basePath := "template/v4/"
routerFile := basePath + "actions/router_check_role.go.template" routerFile := basePath + "actions/router_check_role.go.template"
@@ -336,8 +337,9 @@ func (e *Gen) ActionsGenV3(c *gin.Context, tab tools.SysTables) {
pkg.FileCreate(b6, "./app/"+tab.PackageName+"/service/dto/"+tab.BusinessName+".go") pkg.FileCreate(b6, "./app/"+tab.PackageName+"/service/dto/"+tab.BusinessName+".go")
} }
func (e *Gen) GenMenuAndApi(c *gin.Context) { func (e Gen) GenMenuAndApi(c *gin.Context) {
log := api.GetRequestLogger(c) e.Context = c
log := e.GetLogger()
table := tools.SysTables{} table := tools.SysTables{}
timeNow := pkg.GetCurrentTime() timeNow := pkg.GetCurrentTime()
+1
View File
@@ -18,6 +18,7 @@ type SysTable struct {
apis.Api apis.Api
} }
// GetSysTableList 分页列表数据
// @Summary 分页列表数据 // @Summary 分页列表数据
// @Description 生成表分页列表 // @Description 生成表分页列表
// @Tags 工具 - 生成表 // @Tags 工具 - 生成表
-87
View File
@@ -1,87 +0,0 @@
package gorm
import (
"go-admin/app/admin/models/system"
"gorm.io/gorm"
)
func InitData(db *gorm.DB) {
list := []system.CasbinRule{
{"p", "admin", "/api/v1/menulist", "GET", "", "", ""},
{"p", "admin", "/api/v1/menu", "POST", "", "", ""},
{"p", "admin", "/api/v1/dict/databytype/", "GET", "", "", ""},
{"p", "admin", "/api/v1/menu", "PUT", "", "", ""},
{"p", "admin", "/api/v1/menu/:id", "DELETE", "", "", ""},
{"p", "admin", "/api/v1/sysUserList", "GET", "", "", ""},
{"p", "admin", "/api/v1/sysUser/:id", "GET", "", "", ""},
{"p", "admin", "/api/v1/sysUser/", "GET", "", "", ""},
{"p", "admin", "/api/v1/sysUser", "POST", "", "", ""},
{"p", "admin", "/api/v1/sysUser", "PUT", "", "", ""},
{"p", "admin", "/api/v1/sysUser/:id", "DELETE", "", "", ""},
{"p", "admin", "/api/v1/user/profile", "GET", "", "", ""},
{"p", "admin", "/api/v1/rolelist", "GET", "", "", ""},
{"p", "admin", "/api/v1/role/:id", "GET", "", "", ""},
{"p", "admin", "/api/v1/role", "POST", "", "", ""},
{"p", "admin", "/api/v1/role", "PUT", "", "", ""},
{"p", "admin", "/api/v1/role/:id", "DELETE", "", "", ""},
{"p", "admin", "/api/v1/configList", "GET", "", "", ""},
{"p", "admin", "/api/v1/config/:id", "GET", "", "", ""},
{"p", "admin", "/api/v1/config", "POST", "", "", ""},
{"p", "admin", "/api/v1/config", "PUT", "", "", ""},
{"p", "admin", "/api/v1/config/:id", "DELETE", "", "", ""},
{"p", "admin", "/api/v1/menurole", "GET", "", "", ""},
{"p", "admin", "/api/v1/roleMenuTreeselect/:id", "GET", "", "", ""},
{"p", "admin", "/api/v1/menuTreeselect", "GET", "", "", ""},
{"p", "admin", "/api/v1/rolemenu", "GET", "", "", ""},
{"p", "admin", "/api/v1/rolemenu", "POST", "", "", ""},
{"p", "admin", "/api/v1/rolemenu/:id", "DELETE", "", "", ""},
{"p", "admin", "/api/v1/deptList", "GET", "", "", ""},
{"p", "admin", "/api/v1/dept/:id", "GET", "", "", ""},
{"p", "admin", "/api/v1/dept", "POST", "", "", ""},
{"p", "admin", "/api/v1/dept", "PUT", "", "", ""},
{"p", "admin", "/api/v1/dept/:id", "DELETE", "", "", ""},
{"p", "admin", "/api/v1/dict/datalist", "GET", "", "", ""},
{"p", "admin", "/api/v1/dict/data/:id", "GET", "", "", ""},
{"p", "admin", "/api/v1/dict/databytype/:id", "GET", "", "", ""},
{"p", "admin", "/api/v1/dict/data", "POST", "", "", ""},
{"p", "admin", "/api/v1/dict/data/", "PUT", "", "", ""},
{"p", "admin", "/api/v1/dict/data/:id", "DELETE", "", "", ""},
{"p", "admin", "/api/v1/dict/typelist", "GET", "", "", ""},
{"p", "admin", "/api/v1/dict/type/:id", "GET", "", "", ""},
{"p", "admin", "/api/v1/dict/type", "POST", "", "", ""},
{"p", "admin", "/api/v1/dict/type", "PUT", "", "", ""},
{"p", "admin", "/api/v1/dict/type/:id", "DELETE", "", "", ""},
{"p", "admin", "/api/v1/postlist", "GET", "", "", ""},
{"p", "admin", "/api/v1/post/:id", "GET", "", "", ""},
{"p", "admin", "/api/v1/post", "POST", "", "", ""},
{"p", "admin", "/api/v1/post", "PUT", "", "", ""},
{"p", "admin", "/api/v1/post/:id", "DELETE", "", "", ""},
{"p", "admin", "/api/v1/menu/:id", "GET", "", "", ""},
{"p", "admin", "/api/v1/menuids", "GET", "", "", ""},
{"p", "admin", "/api/v1/loginloglist", "GET", "", "", ""},
{"p", "admin", "/api/v1/loginlog/:id", "DELETE", "", "", ""},
{"p", "admin", "/api/v1/operloglist", "GET", "", "", ""},
{"p", "admin", "/api/v1/getinfo", "GET", "", "", ""},
{"p", "admin", "/api/v1/roledatascope", "PUT", "", "", ""},
{"p", "admin", "/api/v1/roleDeptTreeselect/:id", "GET", "", "", ""},
{"p", "admin", "/api/v1/deptTree", "GET", "", "", ""},
{"p", "admin", "/api/v1/configKey/:id", "GET", "", "", ""},
{"p", "admin", "/api/v1/logout", "POST", "", "", ""},
{"p", "admin", "/api/v1/user/avatar", "POST", "", "", ""},
{"p", "admin", "/api/v1/user/pwd", "PUT", "", "", ""},
{"p", "admin", "/api/v1/dict/typeoptionselect", "GET", "", "", ""},
{"p", "admin", "/api/v1/sysjobList", "GET", "", "", ""},
{"p", "admin", "/api/v1/sysjob/:id", "GET", "", "", ""},
{"p", "admin", "/api/v1/sysjob", "POST", "", "", ""},
{"p", "admin", "/api/v1/sysjob", "PUT", "", "", ""},
{"p", "admin", "/api/v1/sysjob/:id", "DELETE", "", "", ""},
{"p", "admin", "/api/v1/syssettingList", "GET", "", "", ""},
{"p", "admin", "/api/v1/syssetting/:id", "GET", "", "", ""},
{"p", "admin", "/api/v1/syssetting", "POST", "", "", ""},
{"p", "admin", "/api/v1/syssetting", "PUT", "", "", ""},
{"p", "admin", "/api/v1/syssetting/:id", "DELETE", "", "", ""},
}
db.Table("sys_casbin_rule").Create(list)
}
-31
View File
@@ -1,31 +0,0 @@
package models
import (
"go-admin/common/models"
)
type SysFileInfo struct {
models.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:全地址"` //
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
}
-29
View File
@@ -1,29 +0,0 @@
package models
import (
"go-admin/common/models"
)
type SysCategory struct {
models.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:备注"` //
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
}
+6 -5
View File
@@ -1,10 +1,11 @@
package router package router
import ( import (
"go-admin/app/admin/apis"
middleware2 "go-admin/common/middleware"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
jwt "github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth" jwt "github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth"
"go-admin/app/admin/apis/system/sys_config"
"go-admin/common/middleware"
) )
func init() { func init() {
@@ -13,8 +14,8 @@ func init() {
// 需认证的路由代码 // 需认证的路由代码
func registerSysConfigRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) { func registerSysConfigRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) {
api := sys_config.SysConfig{} api := apis.SysConfig{}
r := v1.Group("/config").Use(authMiddleware.MiddlewareFunc()).Use(middleware.AuthCheckRole()) r := v1.Group("/config").Use(authMiddleware.MiddlewareFunc()).Use(middleware2.AuthCheckRole())
{ {
r.GET("", api.GetSysConfigList) r.GET("", api.GetSysConfigList)
@@ -34,4 +35,4 @@ func registerSysConfigRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMidd
r2.GET("", api.GetSysConfigBySysApp) r2.GET("", api.GetSysConfigBySysApp)
} }
} }
+5 -5
View File
@@ -3,8 +3,8 @@ package router
import ( import (
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
jwt "github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth" jwt "github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth"
"go-admin/app/admin/apis/system/sys_dept" "go-admin/app/admin/apis"
"go-admin/common/middleware" middleware2 "go-admin/common/middleware"
) )
func init() { func init() {
@@ -13,8 +13,8 @@ func init() {
// 需认证的路由代码 // 需认证的路由代码
func registerSysDeptRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) { func registerSysDeptRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) {
api := sys_dept.SysDept{} api := apis.SysDept{}
r := v1.Group("/dept").Use(authMiddleware.MiddlewareFunc()).Use(middleware.AuthCheckRole()) r := v1.Group("/dept").Use(authMiddleware.MiddlewareFunc()).Use(middleware2.AuthCheckRole())
{ {
r.GET("", api.GetSysDeptList) r.GET("", api.GetSysDeptList)
r.GET("/:id", api.GetSysDept) r.GET("/:id", api.GetSysDept)
@@ -28,4 +28,4 @@ func registerSysDeptRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddle
r1.GET("/deptTree", api.GetDeptTree) r1.GET("/deptTree", api.GetDeptTree)
} }
} }
+5 -5
View File
@@ -3,8 +3,8 @@ package router
import ( import (
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
jwt "github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth" jwt "github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth"
"go-admin/app/admin/apis/system/sys_login_log" "go-admin/app/admin/apis"
"go-admin/common/middleware" middleware2 "go-admin/common/middleware"
) )
func init() { func init() {
@@ -13,8 +13,8 @@ func init() {
// 需认证的路由代码 // 需认证的路由代码
func registerSysLoginLogRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) { func registerSysLoginLogRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) {
api := sys_login_log.SysLoginLog{} api := apis.SysLoginLog{}
r := v1.Group("/sys-login-log").Use(authMiddleware.MiddlewareFunc()).Use(middleware.AuthCheckRole()) r := v1.Group("/sys-login-log").Use(authMiddleware.MiddlewareFunc()).Use(middleware2.AuthCheckRole())
{ {
r.GET("", api.GetSysLoginLogList) r.GET("", api.GetSysLoginLogList)
r.GET("/:id", api.GetSysLoginLog) r.GET("/:id", api.GetSysLoginLog)
@@ -22,4 +22,4 @@ func registerSysLoginLogRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMi
r.PUT("/:id", api.UpdateSysLoginLog) r.PUT("/:id", api.UpdateSysLoginLog)
r.DELETE("", api.DeleteSysLoginLog) r.DELETE("", api.DeleteSysLoginLog)
} }
} }
+12 -5
View File
@@ -3,8 +3,8 @@ package router
import ( import (
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
jwt "github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth" jwt "github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth"
"go-admin/app/admin/apis/system/sys_menu" "go-admin/app/admin/apis"
"go-admin/common/middleware" middleware2 "go-admin/common/middleware"
) )
func init() { func init() {
@@ -13,8 +13,15 @@ func init() {
// 需认证的路由代码 // 需认证的路由代码
func registerSysMenuRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) { func registerSysMenuRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) {
api := sys_menu.SysMenu{} api := apis.SysMenu{}
r := v1.Group("/menu").Use(authMiddleware.MiddlewareFunc()).Use(middleware.AuthCheckRole()) //menu := v1.Group("/menu").Use(authMiddleware.MiddlewareFunc()).Use(middleware.AuthCheckRole())
//{
// menu.GET("/:id", system.GetMenu)
// menu.POST("", system.InsertMenu)
// menu.PUT("", system.UpdateMenu)
// menu.DELETE("/:id", system.DeleteMenu)
//}
r := v1.Group("/menu").Use(authMiddleware.MiddlewareFunc()).Use(middleware2.AuthCheckRole())
{ {
r.GET("", api.GetSysMenuList) r.GET("", api.GetSysMenuList)
r.GET("/:id", api.GetSysMenu) r.GET("/:id", api.GetSysMenu)
@@ -29,4 +36,4 @@ func registerSysMenuRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddle
r1.GET("/menuids", api.GetMenuIDS) r1.GET("/menuids", api.GetMenuIDS)
} }
} }
+5 -5
View File
@@ -3,8 +3,8 @@ package router
import ( import (
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
jwt "github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth" jwt "github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth"
"go-admin/app/admin/apis/system/sys_opera_log" "go-admin/app/admin/apis"
"go-admin/common/middleware" middleware2 "go-admin/common/middleware"
) )
func init() { func init() {
@@ -13,8 +13,8 @@ func init() {
// 需认证的路由代码 // 需认证的路由代码
func registerSysOperaLogRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) { func registerSysOperaLogRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) {
api := sys_opera_log.SysOperaLog{} api := apis.SysOperaLog{}
r := v1.Group("/sys-opera-log").Use(authMiddleware.MiddlewareFunc()).Use(middleware.AuthCheckRole()) r := v1.Group("/sys-opera-log").Use(authMiddleware.MiddlewareFunc()).Use(middleware2.AuthCheckRole())
{ {
r.GET("", api.GetSysOperaLogList) r.GET("", api.GetSysOperaLogList)
r.GET("/:id", api.GetSysOperaLog) r.GET("/:id", api.GetSysOperaLog)
@@ -22,4 +22,4 @@ func registerSysOperaLogRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMi
r.PUT("/:id", api.UpdateSysOperaLog) r.PUT("/:id", api.UpdateSysOperaLog)
r.DELETE("", api.DeleteSysOperaLog) r.DELETE("", api.DeleteSysOperaLog)
} }
} }
+5 -5
View File
@@ -3,8 +3,8 @@ package router
import ( import (
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
jwt "github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth" jwt "github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth"
"go-admin/app/admin/apis/system/sys_post" "go-admin/app/admin/apis"
"go-admin/common/middleware" middleware2 "go-admin/common/middleware"
) )
func init() { func init() {
@@ -13,8 +13,8 @@ func init() {
// 需认证的路由代码 // 需认证的路由代码
func registerSyPostRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) { func registerSyPostRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) {
api := sys_post.SysPost{} api := apis.SysPost{}
r := v1.Group("/post").Use(authMiddleware.MiddlewareFunc()).Use(middleware.AuthCheckRole()) r := v1.Group("/post").Use(authMiddleware.MiddlewareFunc()).Use(middleware2.AuthCheckRole())
{ {
r.GET("", api.GetSysPostList) r.GET("", api.GetSysPostList)
r.GET("/:id", api.GetSysPost) r.GET("/:id", api.GetSysPost)
@@ -22,4 +22,4 @@ func registerSyPostRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddlew
r.PUT("/:id", api.UpdateSysPost) r.PUT("/:id", api.UpdateSysPost)
r.DELETE("/:id", api.DeleteSysPost) r.DELETE("/:id", api.DeleteSysPost)
} }
} }
+5 -5
View File
@@ -3,8 +3,8 @@ package router
import ( import (
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
jwt "github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth" jwt "github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth"
"go-admin/app/admin/apis/system/sys_role" "go-admin/app/admin/apis"
"go-admin/common/middleware" middleware2 "go-admin/common/middleware"
) )
func init() { func init() {
@@ -13,8 +13,8 @@ func init() {
// 需认证的路由代码 // 需认证的路由代码
func registerSysRoleRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) { func registerSysRoleRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) {
api := sys_role.SysRole{} api := apis.SysRole{}
r := v1.Group("/role").Use(authMiddleware.MiddlewareFunc()).Use(middleware.AuthCheckRole()) r := v1.Group("/role").Use(authMiddleware.MiddlewareFunc()).Use(middleware2.AuthCheckRole())
{ {
r.GET("", api.GetSysRoleList) r.GET("", api.GetSysRoleList)
r.GET("/:id", api.GetSysRole) r.GET("/:id", api.GetSysRole)
@@ -23,4 +23,4 @@ func registerSysRoleRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddle
r.DELETE("", api.DeleteSysRole) r.DELETE("", api.DeleteSysRole)
} }
v1.PUT("/roledatascope", api.UpdateRoleDataScope) v1.PUT("/roledatascope", api.UpdateRoleDataScope)
} }
+30 -35
View File
@@ -1,6 +1,7 @@
package router package router
import ( import (
"go-admin/app/admin/apis"
"mime" "mime"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
@@ -9,12 +10,6 @@ import (
ginSwagger "github.com/swaggo/gin-swagger" ginSwagger "github.com/swaggo/gin-swagger"
"github.com/swaggo/gin-swagger/swaggerFiles" "github.com/swaggo/gin-swagger/swaggerFiles"
"go-admin/app/admin/apis/monitor"
"go-admin/app/admin/apis/public"
"go-admin/app/admin/apis/system"
"go-admin/app/admin/apis/system/dict"
"go-admin/app/admin/apis/system/sys_dept"
"go-admin/app/admin/apis/system/sys_menu"
"go-admin/app/admin/apis/tools" "go-admin/app/admin/apis/tools"
"go-admin/common/middleware" "go-admin/common/middleware"
"go-admin/common/middleware/handler" "go-admin/common/middleware/handler"
@@ -41,12 +36,15 @@ func sysBaseRouter(r *gin.RouterGroup) {
go ws.WebsocketManager.SendService() go ws.WebsocketManager.SendService()
go ws.WebsocketManager.SendAllService() go ws.WebsocketManager.SendAllService()
r.GET("/", system.HelloWorld) r.GET("/", apis.HelloWorld)
r.GET("/info", handler.Ping) r.GET("/info", handler.Ping)
} }
func sysStaticFileRouter(r *gin.RouterGroup) { func sysStaticFileRouter(r *gin.RouterGroup) {
mime.AddExtensionType(".js", "application/javascript") err := mime.AddExtensionType(".js", "application/javascript")
if err != nil {
return
}
r.Static("/static", "./static") r.Static("/static", "./static")
r.Static("/form-generator", "./static/form-generator") r.Static("/form-generator", "./static/form-generator")
} }
@@ -58,13 +56,13 @@ func sysSwaggerRouter(r *gin.RouterGroup) {
func sysNoCheckRoleRouter(r *gin.RouterGroup) { func sysNoCheckRoleRouter(r *gin.RouterGroup) {
v1 := r.Group("/api/v1") v1 := r.Group("/api/v1")
m := monitor.Monitor{} //m := apis2.Monitor{}
v1.GET("/monitor/server", m.ServerInfo) //v1.GET("/monitor/server", m.ServerInfo)
sys := system.System{} sys := apis.System{}
v1.GET("/getCaptcha", sys.GenerateCaptchaHandler) v1.GET("/getCaptcha", sys.GenerateCaptchaHandler)
gen := tools.Gen{} gen := tools.Gen{}
v1.GET("/gen/preview/:tableId", gen.Preview) v1.GET("/gen/preview/:tableId", gen.Preview)
v1.GET("/gen/toproject/:tableId", gen.GenCodeV3) v1.GET("/gen/toproject/:tableId", gen.GenCode)
v1.GET("/gen/apitofile/:tableId", gen.GenApiToFile) v1.GET("/gen/apitofile/:tableId", gen.GenApiToFile)
v1.GET("/gen/todb/:tableId", gen.GenMenuAndApi) v1.GET("/gen/todb/:tableId", gen.GenMenuAndApi)
@@ -73,8 +71,7 @@ func sysNoCheckRoleRouter(r *gin.RouterGroup) {
registerDBRouter(v1) registerDBRouter(v1)
registerSysTableRouter(v1) registerSysTableRouter(v1)
registerPublicRouter(v1) //registerPublicRouter(v1)
registerSysSettingRouter(v1)
} }
func registerDBRouter(api *gin.RouterGroup) { func registerDBRouter(api *gin.RouterGroup) {
@@ -118,8 +115,8 @@ func sysCheckRoleRouterInit(r *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddle
} }
func registerBaseRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) { func registerBaseRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) {
api := sys_menu.SysMenu{} api := apis.SysMenu{}
api2 := sys_dept.SysDept{} api2 := apis.SysDept{}
v1auth := v1.Group("").Use(authMiddleware.MiddlewareFunc()).Use(middleware.AuthCheckRole()) v1auth := v1.Group("").Use(authMiddleware.MiddlewareFunc()).Use(middleware.AuthCheckRole())
{ {
//v1auth.GET("/getinfo", system.GetInfo) //v1auth.GET("/getinfo", system.GetInfo)
@@ -169,8 +166,8 @@ func registerBaseRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddlewar
//} //}
func registerDictRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) { func registerDictRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) {
dictApi := dict.SysDictType{} dictApi := apis.SysDictType{}
dataApi := dict.SysDictData{} dataApi := apis.SysDictData{}
dicts := v1.Group("/dict").Use(authMiddleware.MiddlewareFunc()).Use(middleware.AuthCheckRole()) dicts := v1.Group("/dict").Use(authMiddleware.MiddlewareFunc()).Use(middleware.AuthCheckRole())
{ {
@@ -199,21 +196,19 @@ func registerDictRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddlewar
// dept.DELETE("/:id", system.DeleteDept) // dept.DELETE("/:id", system.DeleteDept)
// } // }
//} //}
func registerSysSettingRouter(v1 *gin.RouterGroup) { //func registerSysSettingRouter(v1 *gin.RouterGroup) {
api := system.SysSetting{} //
m := monitor.Monitor{} // //m := apis2.Monitor{}
setting := v1.Group("/setting") // setting := v1.Group("/setting")
{ // {
setting.GET("", api.GetSetting) // setting.GET("/serverInfo", m.ServerInfo)
setting.POST("", api.CreateOrUpdateSetting) // }
setting.GET("/serverInfo", m.ServerInfo) //}
}
}
func registerPublicRouter(v1 *gin.RouterGroup) { //func registerPublicRouter(v1 *gin.RouterGroup) {
p := v1.Group("/public") // p := v1.Group("/public")
{ // {
file := public.File{} // file := apis2.File{}
p.POST("/uploadFile", file.UploadFile) // p.POST("/uploadFile", file.UploadFile)
} // }
} //}
+4 -4
View File
@@ -3,7 +3,7 @@ package router
import ( import (
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
jwt "github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth" jwt "github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth"
"go-admin/app/admin/apis/sys_user" "go-admin/app/admin/apis"
"go-admin/common/actions" "go-admin/common/actions"
"go-admin/common/middleware" "go-admin/common/middleware"
) )
@@ -14,8 +14,8 @@ func init() {
// 需认证的路由代码 // 需认证的路由代码
func registerSysUserRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) { func registerSysUserRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) {
api := sys_user.SysUser{} api := apis.SysUser{}
r := v1.Group("/sysUser").Use(authMiddleware.MiddlewareFunc()).Use(middleware.AuthCheckRole()).Use(actions.PermissionAction()) r := v1.Group("/sysUser").Use(authMiddleware.MiddlewareFunc()).Use(middleware2.AuthCheckRole()).Use(actions.PermissionAction())
{ {
r.GET("", api.GetSysUserList) r.GET("", api.GetSysUserList)
r.GET("/:id", api.GetSysUser) r.GET("/:id", api.GetSysUser)
@@ -34,4 +34,4 @@ func registerSysUserRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddle
{ {
v1auth.GET("/getinfo", api.GetInfo) v1auth.GET("/getinfo", api.GetInfo)
} }
} }
+8 -8
View File
@@ -26,14 +26,14 @@ func (m *SysConfigSearch) GetNeedSearch() interface{} {
} }
// Bind 映射上下文中的结构体数据 // Bind 映射上下文中的结构体数据
func (m *SysConfigSearch) Bind(ctx *gin.Context) error { //func (m *SysConfigSearch) Bind(ctx *gin.Context) error {
log := api.GetRequestLogger(ctx) // log := api.GetRequestLogger(ctx)
err := ctx.ShouldBind(m) // err := ctx.ShouldBind(m)
if err != nil { // if err != nil {
log.Debugf("ShouldBind error: %s", err.Error()) // log.Debugf("ShouldBind error: %s", err.Error())
} // }
return err // return err
} //}
// SysConfigControl 增、改使用的结构体 // SysConfigControl 增、改使用的结构体
type SysConfigControl struct { type SysConfigControl struct {
+15 -17
View File
@@ -26,7 +26,7 @@ func (e *SysConfig) GetSysConfigPage(c *dto.SysConfigSearch, list *[]system.SysC
Find(list).Limit(-1).Offset(-1). Find(list).Limit(-1).Offset(-1).
Count(count).Error Count(count).Error
if err != nil { if err != nil {
e.Log.Errorf("db error:%s", err) e.Log.Errorf("Service GetSysConfigPage error:%s", err)
return err return err
} }
return nil return nil
@@ -42,7 +42,7 @@ func (e *SysConfig) GetSysConfigByKey(c *dto.SysConfigSearch, list *[]system.Sys
). ).
Find(list).Error Find(list).Error
if err != nil { if err != nil {
e.Log.Errorf("db error:%s", err) e.Log.Errorf("Service GetSysConfigByKey error:%s", err)
return err return err
} }
return nil return nil
@@ -50,19 +50,17 @@ func (e *SysConfig) GetSysConfigByKey(c *dto.SysConfigSearch, list *[]system.Sys
// GetSysConfig 获取SysConfig对象 // GetSysConfig 获取SysConfig对象
func (e *SysConfig) GetSysConfig(d *dto.SysConfigById, model *system.SysConfig) error { func (e *SysConfig) GetSysConfig(d *dto.SysConfigById, model *system.SysConfig) error {
var err error
var data system.SysConfig var data system.SysConfig
db := e.Orm.Model(&data). err := e.Orm.Model(&data).
First(model, d.GetId()) First(model, d.GetId()).Error
err = db.Error
if err != nil && errors.Is(err, gorm.ErrRecordNotFound) { if err != nil && errors.Is(err, gorm.ErrRecordNotFound) {
err = errors.New("查看对象不存在或无权查看") err = errors.New("查看对象不存在或无权查看")
e.Log.Errorf("db error:%s", err) e.Log.Errorf("Service GetSysConfigPage error:%s", err)
return err return err
} }
if db.Error != nil { if err != nil {
e.Log.Errorf("db error:%s", err) e.Log.Errorf("Service GetSysConfig error:%s", err)
return err return err
} }
return nil return nil
@@ -76,7 +74,7 @@ func (e *SysConfig) InsertSysConfig(model *system.SysConfig) error {
err = e.Orm.Model(&data). err = e.Orm.Model(&data).
Create(model).Error Create(model).Error
if err != nil { if err != nil {
e.Log.Errorf("db error:%s", err) e.Log.Errorf("Service InsertSysConfig error:%s", err)
return err return err
} }
return nil return nil
@@ -85,12 +83,12 @@ func (e *SysConfig) InsertSysConfig(model *system.SysConfig) error {
// UpdateSysConfig 修改SysConfig对象 // UpdateSysConfig 修改SysConfig对象
func (e *SysConfig) UpdateSysConfig(c *system.SysConfig) error { func (e *SysConfig) UpdateSysConfig(c *system.SysConfig) error {
var err error var err error
var data system.SysConfig
db := e.Orm.Model(&data). db := e.Orm.Model(c).
Where(c.GetId()).Updates(c) Where(c.GetId()).Updates(c)
if db.Error != nil { err = db.Error
e.Log.Errorf("db error:%s", err) if err != nil {
e.Log.Errorf("Service UpdateSysConfig error:%s", err)
return err return err
} }
if db.RowsAffected == 0 { if db.RowsAffected == 0 {
@@ -106,10 +104,10 @@ func (e *SysConfig) RemoveSysConfig(d *dto.SysConfigById, c *system.SysConfig) e
var data system.SysConfig var data system.SysConfig
db := e.Orm.Model(&data). db := e.Orm.Model(&data).
Where(d.GetId()).Delete(c) Where(d.Ids).Delete(c)
if db.Error != nil { if db.Error != nil {
err = db.Error err = db.Error
e.Log.Errorf("Delete error: %s", err) e.Log.Errorf("Service RemoveSysConfig error:%s", err)
return err return err
} }
if db.RowsAffected == 0 { if db.RowsAffected == 0 {
@@ -126,7 +124,7 @@ func (e *SysConfig) GetSysConfigByKEY(c *dto.SysConfigControl) error {
data.ConfigKey = c.ConfigKey data.ConfigKey = c.ConfigKey
err = e.Orm.Table(data.TableName()).Where("config_key = ?", data.ConfigKey).First(c).Error err = e.Orm.Table(data.TableName()).Where("config_key = ?", data.ConfigKey).First(c).Error
if err != nil { if err != nil {
e.Log.Errorf("db error:%s", err) e.Log.Errorf("Service GetSysConfigByKEY error:%s", err)
return err return err
} }
+1 -1
View File
@@ -75,7 +75,7 @@ func (e *SysDictData) Update(c *system.SysDictData) error {
db := e.Orm.Model(&data). db := e.Orm.Model(&data).
Where(c.GetId()).Updates(c) Where(c.GetId()).Updates(c)
if db.Error != nil { if err = db.Error; err != nil {
e.Log.Errorf("db error: %s", err) e.Log.Errorf("db error: %s", err)
return err return err
} }
+14 -19
View File
@@ -26,7 +26,7 @@ func (e *SysOperaLog) GetSysOperaLogPage(c *dto.SysOperaLogSearch, list *[]syste
Find(list).Limit(-1).Offset(-1). Find(list).Limit(-1).Offset(-1).
Count(count).Error Count(count).Error
if err != nil { if err != nil {
e.Log.Errorf(" db error:%s", err) e.Log.Errorf("Service GetSysOperaLogPage error:%s", err.Error())
return err return err
} }
return nil return nil
@@ -34,19 +34,17 @@ func (e *SysOperaLog) GetSysOperaLogPage(c *dto.SysOperaLogSearch, list *[]syste
// GetSysOperaLog 获取SysOperaLog对象 // GetSysOperaLog 获取SysOperaLog对象
func (e *SysOperaLog) GetSysOperaLog(d *dto.SysOperaLogById, model *system.SysOperaLog) error { func (e *SysOperaLog) GetSysOperaLog(d *dto.SysOperaLogById, model *system.SysOperaLog) error {
var err error
var data system.SysOperaLog var data system.SysOperaLog
db := e.Orm.Model(&data). err := e.Orm.Model(&data).
First(model, d.GetId()) First(model, d.GetId()).Error
err = db.Error
if err != nil && errors.Is(err, gorm.ErrRecordNotFound) { if err != nil && errors.Is(err, gorm.ErrRecordNotFound) {
err = errors.New("查看对象不存在或无权查看") err = errors.New("查看对象不存在或无权查看")
e.Log.Errorf(" db error:%s", err) e.Log.Errorf("Service GetSysOperaLog error:%s", err.Error())
return err return err
} }
if db.Error != nil { if err != nil {
e.Log.Errorf(" db error:%s", err) e.Log.Errorf("Service GetSysOperaLog error:%s", err.Error())
return err return err
} }
return nil return nil
@@ -60,7 +58,7 @@ func (e *SysOperaLog) InsertSysOperaLog(model *system.SysOperaLog) error {
err = e.Orm.Model(&data). err = e.Orm.Model(&data).
Create(model).Error Create(model).Error
if err != nil { if err != nil {
e.Log.Errorf(" db error:%s", err) e.Log.Errorf("Service InsertSysOperaLog error:%s", err.Error())
return err return err
} }
return nil return nil
@@ -69,12 +67,11 @@ func (e *SysOperaLog) InsertSysOperaLog(model *system.SysOperaLog) error {
// UpdateSysOperaLog 修改SysOperaLog对象 // UpdateSysOperaLog 修改SysOperaLog对象
func (e *SysOperaLog) UpdateSysOperaLog(c *system.SysOperaLog) error { func (e *SysOperaLog) UpdateSysOperaLog(c *system.SysOperaLog) error {
var err error var err error
var data system.SysOperaLog
db := e.Orm.Model(&data). db := e.Orm.Model(c).
Where(c.GetId()).Updates(c) Where(c.GetId()).Updates(c)
if db.Error != nil { if err = db.Error; err != nil {
e.Log.Errorf(" db error:%s", err) e.Log.Errorf("Service UpdateSysOperaLog error:%s", err.Error())
return err return err
} }
if db.RowsAffected == 0 { if db.RowsAffected == 0 {
@@ -90,14 +87,12 @@ func (e *SysOperaLog) RemoveSysOperaLog(d *dto.SysOperaLogById) error {
var data system.SysOperaLog var data system.SysOperaLog
db := e.Orm.Model(&data).Where(d.Ids).Delete(&data) db := e.Orm.Model(&data).Where(d.Ids).Delete(&data)
if db.Error != nil { if err = db.Error; err != nil {
err = db.Error e.Log.Errorf("Service RemoveSysOperaLog error:%s", err.Error())
e.Log.Errorf(" Delete error: %s", err)
return err return err
} }
if db.RowsAffected == 0 { if db.RowsAffected == 0 {
err = errors.New("无权删除该数据") return errors.New("无权删除该数据")
return err
} }
return nil return nil
} }
+7 -11
View File
@@ -41,21 +41,19 @@ func (e *SysUser) GetSysUserPage(c cDto.Index, p *actions.DataPermission, list *
// GetSysUser 获取SysUser对象 // GetSysUser 获取SysUser对象
func (e *SysUser) GetSysUser(d cDto.Control, p *actions.DataPermission, model *system.SysUser) error { func (e *SysUser) GetSysUser(d cDto.Control, p *actions.DataPermission, model *system.SysUser) error {
var err error
var data system.SysUser var data system.SysUser
db := e.Orm.Model(&data). err := e.Orm.Model(&data).
Scopes( Scopes(
actions.Permission(data.TableName(), p), actions.Permission(data.TableName(), p),
). ).
First(model, d.GetId()) First(model, d.GetId()).Error
err = db.Error
if err != nil && errors.Is(err, gorm.ErrRecordNotFound) { if err != nil && errors.Is(err, gorm.ErrRecordNotFound) {
err = errors.New("查看对象不存在或无权查看") err = errors.New("查看对象不存在或无权查看")
e.Log.Errorf("db error: %s", err) e.Log.Errorf("db error: %s", err)
return err return err
} }
if db.Error != nil { if err != nil {
e.Log.Errorf("db error: %s", err) e.Log.Errorf("db error: %s", err)
return err return err
} }
@@ -84,8 +82,8 @@ func (e *SysUser) UpdateSysUser(c common.ActiveRecord, p *actions.DataPermission
Scopes( Scopes(
actions.Permission(c.TableName(), p), actions.Permission(c.TableName(), p),
).Where(c.GetId()).Updates(c) ).Where(c.GetId()).Updates(c)
if db.Error != nil { if err = db.Error; err != nil {
e.Log.Errorf("db error: %s", err) e.Log.Errorf("Service UpdateSysUser error: %s", err)
return err return err
} }
if db.RowsAffected == 0 { if db.RowsAffected == 0 {
@@ -104,14 +102,12 @@ func (e *SysUser) RemoveSysUser(d cDto.Control, c common.ActiveRecord, p *action
Scopes( Scopes(
actions.Permission(data.TableName(), p), actions.Permission(data.TableName(), p),
).Where(d.GetId()).Delete(c) ).Where(d.GetId()).Delete(c)
if db.Error != nil { if err = db.Error; err != nil {
err = db.Error
e.Log.Errorf("Delete error: %s", err) e.Log.Errorf("Delete error: %s", err)
return err return err
} }
if db.RowsAffected == 0 { if db.RowsAffected == 0 {
err = errors.New("无权删除该数据") return errors.New("无权删除该数据")
return err
} }
return nil return nil
} }
-115
View File
@@ -1,115 +0,0 @@
package service
import (
"errors"
"gorm.io/gorm"
"go-admin/app/admin/models"
"go-admin/app/admin/service/dto"
"go-admin/common/actions"
cDto "go-admin/common/dto"
"go-admin/common/service"
)
type SysChinaAreaData struct {
service.Service
}
// GetSysChinaAreaDataPage 获取SysChinaAreaData列表
func (e *SysChinaAreaData) GetSysChinaAreaDataPage(c *dto.SysChinaAreaDataSearch, p *actions.DataPermission, list *[]models.SysChinaAreaData, count *int64) error {
var err error
var data models.SysChinaAreaData
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
}
// GetSysChinaAreaData 获取SysChinaAreaData对象
func (e *SysChinaAreaData) GetSysChinaAreaData(d *dto.SysChinaAreaDataById, p *actions.DataPermission, model *models.SysChinaAreaData) error {
var err error
var data models.SysChinaAreaData
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
}
// InsertSysChinaAreaData 创建SysChinaAreaData对象
func (e *SysChinaAreaData) InsertSysChinaAreaData(model *models.SysChinaAreaData) error {
var err error
var data models.SysChinaAreaData
err = e.Orm.Model(&data).
Create(model).Error
if err != nil {
e.Log.Errorf("db error:%s", err)
return err
}
return nil
}
// UpdateSysChinaAreaData 修改SysChinaAreaData对象
func (e *SysChinaAreaData) UpdateSysChinaAreaData(c *models.SysChinaAreaData, p *actions.DataPermission) error {
var err error
var data models.SysChinaAreaData
db := e.Orm.Model(&data).
Scopes(
actions.Permission(data.TableName(), p),
).Where(c.GetId()).Updates(c)
if db.Error != nil {
e.Log.Errorf("db error:%s", err)
return err
}
if db.RowsAffected == 0 {
return errors.New("无权更新该数据")
}
return nil
}
// RemoveSysChinaAreaData 删除SysChinaAreaData
func (e *SysChinaAreaData) RemoveSysChinaAreaData(d *dto.SysChinaAreaDataById, p *actions.DataPermission) error {
var err error
var data models.SysChinaAreaData
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
}
+29
View File
@@ -0,0 +1,29 @@
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
}
+42
View File
@@ -0,0 +1,42 @@
package router
import (
"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"
"github.com/go-admin-team/go-admin-core/sdk/pkg"
common "go-admin/common/middleware"
)
// InitRouter 路由初始化,不要怀疑,这里用到了
func InitRouter() {
var r *gin.Engine
h := sdk.Runtime.GetEngine()
if h == nil {
h = gin.New()
sdk.Runtime.SetEngine(h)
}
switch h.(type) {
case *gin.Engine:
r = h.(*gin.Engine)
default:
log.Fatal("not support other engine")
os.Exit(-1)
}
r.Use(common.Sentinel()).
Use(common.RequestId(pkg.TrafficKey))
common.InitMiddleware(r)
// the jwt middleware
authMiddleware, err := common.AuthInit()
if err != nil {
log.Fatalf("JWT Init Error, %s", err.Error())
}
// 注册业务路由
// TODO: 这里可存放业务路由,里边并无实际路由只有演示代码
initRouter(r, authMiddleware)
}
+43
View File
@@ -0,0 +1,43 @@
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)
}
}
@@ -2,11 +2,11 @@ package router
import ( import (
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
"go-admin/app/cms/models"
"go-admin/app/cms/service/dto"
"go-admin/common/middleware" "go-admin/common/middleware"
jwt "github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth" jwt "github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth"
"go-admin/app/admin/models"
"go-admin/app/admin/service/dto"
"go-admin/common/actions" "go-admin/common/actions"
) )
@@ -28,4 +28,4 @@ func registerSysCategoryRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMi
r.PUT("/:id", actions.PermissionAction(), actions.UpdateAction(new(dto.SysCategoryControl))) r.PUT("/:id", actions.PermissionAction(), actions.UpdateAction(new(dto.SysCategoryControl)))
r.DELETE("", actions.PermissionAction(), actions.DeleteAction(new(dto.SysCategoryById))) r.DELETE("", actions.PermissionAction(), actions.DeleteAction(new(dto.SysCategoryById)))
} }
} }
@@ -3,8 +3,8 @@ package router
import ( import (
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
jwt "github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth" jwt "github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth"
"go-admin/app/admin/models" "go-admin/app/cms/models"
"go-admin/app/admin/service/dto" "go-admin/app/cms/service/dto"
"go-admin/common/actions" "go-admin/common/actions"
"go-admin/common/middleware" "go-admin/common/middleware"
) )
@@ -2,20 +2,19 @@ package dto
import ( import (
"errors" "errors"
vd "github.com/bytedance/go-tagexpr/v2/validator"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
"github.com/go-admin-team/go-admin-core/sdk/api" "github.com/go-admin-team/go-admin-core/sdk/api"
"go-admin/app/cms/models"
"go-admin/app/admin/models"
"go-admin/common/dto" "go-admin/common/dto"
common "go-admin/common/models" common "go-admin/common/models"
) )
type SysCategorySearch struct { type SysCategorySearch struct {
dto.Pagination `search:"-"` dto.Pagination `search:"-"`
Name string `form:"name" search:"type:exact;column:name;table:sys_category" comment:"名称" vd:"?"` 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:"状态" vd:"?"` 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" vd:"?"` CateId int `form:"cateId" search:"type:exact;column:cate_id;table:sys_category" comment:"分类id"`
} }
func (m *SysCategorySearch) GetNeedSearch() interface{} { func (m *SysCategorySearch) GetNeedSearch() interface{} {
@@ -30,10 +29,6 @@ func (m *SysCategorySearch) Bind(ctx *gin.Context) error {
log.Debugf("ShouldBind error: %s", err.Error()) log.Debugf("ShouldBind error: %s", err.Error())
} }
if err = vd.Validate(m); err != nil {
log.Errorf("Validate error: %s", err.Error())
return err
}
return err return err
} }
@@ -43,12 +38,12 @@ func (m *SysCategorySearch) Generate() dto.Index {
} }
type SysCategoryControl struct { type SysCategoryControl struct {
ID int `uri:"Id" comment:"标识"` Id int `uri:"Id" comment:"标识"`
Name string `json:"name" comment:"名称" vd:"len($)>0 && $!=' '; msg:'invalid name: 不能是空字符串'"` Name string `json:"name" comment:"名称"`
Img string `json:"img" comment:"图标" vd:"?"` Img string `json:"img" comment:"图标"`
Sort int `json:"sort" comment:"排序" vd:"?"` Sort int `json:"sort" comment:"排序"`
Status int `json:"status" comment:"状态" vd:"$>0; msg:'invalid status: 状态无效'"` Status int `json:"status" comment:"状态"`
Remark string `json:"remark" comment:"备注" vd:"?"` Remark string `json:"remark" comment:"备注"`
} }
func (s *SysCategoryControl) Bind(ctx *gin.Context) error { func (s *SysCategoryControl) Bind(ctx *gin.Context) error {
@@ -63,10 +58,7 @@ func (s *SysCategoryControl) Bind(ctx *gin.Context) error {
log.Errorf("ShouldBind error: %s", err.Error()) log.Errorf("ShouldBind error: %s", err.Error())
err = errors.New("数据绑定出错") err = errors.New("数据绑定出错")
} }
if err1 := vd.Validate(s); err != nil {
log.Errorf("Validate error: %s", err1.Error())
return err1
}
return err return err
} }
@@ -77,7 +69,7 @@ func (s *SysCategoryControl) Generate() dto.Control {
func (s *SysCategoryControl) GenerateM() (common.ActiveRecord, error) { func (s *SysCategoryControl) GenerateM() (common.ActiveRecord, error) {
return &models.SysCategory{ return &models.SysCategory{
Model: common.Model{Id: s.ID}, Model: common.Model{Id: s.Id},
Name: s.Name, Name: s.Name,
Img: s.Img, Img: s.Img,
Sort: s.Sort, Sort: s.Sort,
@@ -87,11 +79,11 @@ func (s *SysCategoryControl) GenerateM() (common.ActiveRecord, error) {
} }
func (s *SysCategoryControl) GetId() interface{} { func (s *SysCategoryControl) GetId() interface{} {
return s.ID return s.Id
} }
type SysCategoryById struct { type SysCategoryById struct {
dto.ObjectById `vd:"?"` dto.ObjectById
} }
func (s *SysCategoryById) Generate() dto.Control { func (s *SysCategoryById) Generate() dto.Control {
@@ -101,4 +93,4 @@ func (s *SysCategoryById) Generate() dto.Control {
func (s *SysCategoryById) GenerateM() (common.ActiveRecord, error) { func (s *SysCategoryById) GenerateM() (common.ActiveRecord, error) {
return &models.SysCategory{}, nil return &models.SysCategory{}, nil
} }
@@ -3,8 +3,8 @@ package dto
import ( import (
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
"github.com/go-admin-team/go-admin-core/sdk/api" "github.com/go-admin-team/go-admin-core/sdk/api"
"go-admin/app/cms/models"
"go-admin/app/admin/models"
"go-admin/common/dto" "go-admin/common/dto"
common "go-admin/common/models" common "go-admin/common/models"
) )
@@ -34,7 +34,7 @@ func (m *SysContentSearch) Generate() dto.Index {
} }
type SysContentControl struct { type SysContentControl struct {
ID int `uri:"ID" comment:""` // Id int `uri:"Id" comment:""` //
CateId int `json:"cateId" comment:""` CateId int `json:"cateId" comment:""`
Name string `json:"name" comment:""` Name string `json:"name" comment:""`
Status int `json:"status" comment:""` Status int `json:"status" comment:""`
@@ -65,7 +65,7 @@ func (s *SysContentControl) Generate() dto.Control {
func (s *SysContentControl) GenerateM() (common.ActiveRecord, error) { func (s *SysContentControl) GenerateM() (common.ActiveRecord, error) {
return &models.SysContent{ return &models.SysContent{
Model: common.Model{s.ID}, Model: common.Model{s.Id},
CateId: s.CateId, CateId: s.CateId,
Name: s.Name, Name: s.Name,
Status: s.Status, Status: s.Status,
@@ -77,7 +77,7 @@ func (s *SysContentControl) GenerateM() (common.ActiveRecord, error) {
} }
func (s *SysContentControl) GetId() interface{} { func (s *SysContentControl) GetId() interface{} {
return s.ID return s.Id
} }
type SysContentById struct { type SysContentById struct {
@@ -1,13 +1,14 @@
package sys_job package apis
import ( import (
"go-admin/app/jobs/service"
"net/http" "net/http"
"go-admin/common/apis"
"go-admin/common/dto"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
"github.com/go-admin-team/go-admin-core/sdk" "github.com/go-admin-team/go-admin-core/sdk"
"go-admin/app/admin/service"
"go-admin/common/apis"
"go-admin/common/dto"
) )
type SysJob struct { type SysJob struct {
@@ -16,6 +17,7 @@ type SysJob struct {
// RemoveJobForService 调用service实现 // RemoveJobForService 调用service实现
func (e SysJob) RemoveJobForService(c *gin.Context) { func (e SysJob) RemoveJobForService(c *gin.Context) {
e.Context = c
log := e.GetLogger() log := e.GetLogger()
db, err := e.GetOrm() db, err := e.GetOrm()
if err != nil { if err != nil {
@@ -23,7 +25,7 @@ func (e SysJob) RemoveJobForService(c *gin.Context) {
return return
} }
var v dto.GeneralDelDto var v dto.GeneralDelDto
err = c.BindUri(&v) err = c.Bind(&v)
if err != nil { if err != nil {
log.Warnf("参数验证错误, error: %s", err) log.Warnf("参数验证错误, error: %s", err)
e.Error(http.StatusUnprocessableEntity, err, "参数验证失败") e.Error(http.StatusUnprocessableEntity, err, "参数验证失败")
@@ -44,7 +46,7 @@ func (e SysJob) RemoveJobForService(c *gin.Context) {
// StartJobForService 启动job service实现 // StartJobForService 启动job service实现
func (e SysJob) StartJobForService(c *gin.Context) { func (e SysJob) StartJobForService(c *gin.Context) {
e.Context = c e.SetContext(c)
log := e.GetLogger() log := e.GetLogger()
db, err := e.GetOrm() db, err := e.GetOrm()
if err != nil { if err != nil {
+3 -3
View File
@@ -4,6 +4,7 @@ import (
"fmt" "fmt"
log "github.com/go-admin-team/go-admin-core/logger" log "github.com/go-admin-team/go-admin-core/logger"
"github.com/go-admin-team/go-admin-core/sdk" "github.com/go-admin-team/go-admin-core/sdk"
models2 "go-admin/app/jobs/models"
"gorm.io/gorm" "gorm.io/gorm"
"sync" "sync"
"time" "time"
@@ -12,7 +13,6 @@ import (
"github.com/go-admin-team/go-admin-core/sdk/pkg" "github.com/go-admin-team/go-admin-core/sdk/pkg"
"github.com/go-admin-team/go-admin-core/sdk/pkg/cronjob" "github.com/go-admin-team/go-admin-core/sdk/pkg/cronjob"
"go-admin/app/admin/models"
) )
var timeFormat = "2006-01-02 15:04:05" var timeFormat = "2006-01-02 15:04:05"
@@ -108,8 +108,8 @@ func Setup(dbs map[string]*gorm.DB) {
func setup(key string, db *gorm.DB) { func setup(key string, db *gorm.DB) {
crontab := sdk.Runtime.GetCrontabKey(key) crontab := sdk.Runtime.GetCrontabKey(key)
sysJob := models.SysJob{} sysJob := models2.SysJob{}
jobList := make([]models.SysJob, 0) jobList := make([]models2.SysJob, 0)
err := sysJob.GetList(db, &jobList) err := sysJob.GetList(db, &jobList)
if err != nil { if err != nil {
fmt.Println(time.Now().Format(timeFormat), " [ERROR] JobCore init error", err) fmt.Println(time.Now().Format(timeFormat), " [ERROR] JobCore init error", err)
@@ -44,32 +44,6 @@ func (e *SysJob) SetUpdateBy(updateBy int) {
e.UpdateBy = updateBy e.UpdateBy = updateBy
} }
// 创建SysJob
//func (e *SysJob) Create() (err error) {
// return orm.Eloquent.Table(e.TableName()).Create(e).Error
//}
// 获取SysJob
//func (e *SysJob) Get(id interface{}) (err error) {
// return orm.Eloquent.Table(e.TableName()).First(e, id).Error
//}
// 获取SysJob带分页
//func (e *SysJob) GetPage(pageSize int, pageIndex int, v interface{}, list interface{}) (int, error) {
// table := orm.Eloquent.Table(e.TableName()).Scopes(dto.MakeCondition(v))
//
// // 数据权限控制(如果不需要数据权限请将此处去掉)
// //dataPermission := new(DataPermission)
// userid, _ := tools.StringToInt(e.DataScope)
//
// var count int64
//
// if err := table.Scopes(system.DataScopes(e.TableName(), userid), dto.Paginate(pageSize, pageIndex)).Find(list).Offset(-1).Limit(-1).Count(&count).Error; err != nil {
// return 0, err
// }
// return int(count), nil
//}
func (e *SysJob) GetList(tx *gorm.DB, list interface{}) (err error) { func (e *SysJob) GetList(tx *gorm.DB, list interface{}) (err error) {
return tx.Table(e.TableName()).Where("status = ?", 2).Find(list).Error return tx.Table(e.TableName()).Where("status = ?", 2).Find(list).Error
} }
@@ -85,25 +59,3 @@ func (e *SysJob) RemoveAllEntryID(tx *gorm.DB) (update SysJob, err error) {
} }
return return
} }
//func (e *SysJob) RemoveEntryID(entryID int) (update SysJob, err error) {
// if err = orm.Eloquent.Table(e.TableName()).Where("entry_id = ?", entryID).Updates(map[string]interface{}{"entry_id": 0}).Error; err != nil {
// return
// }
// return
//}
// 删除SysJob
//func (e *SysJob) Delete(id int) (success bool, err error) {
// if err = orm.Eloquent.Table(e.TableName()).Where(id).Delete(&SysJob{}).Error; err != nil {
// success = false
// return
// }
// success = true
// return
//}
//批量删除
//func (e *SysJob) BatchDelete(id []int) error {
// return orm.Eloquent.Table(e.TableName()).Where(id).Delete(&SysJob{}).Error
//}
+42
View File
@@ -0,0 +1,42 @@
package router
import (
"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"
"github.com/go-admin-team/go-admin-core/sdk/pkg"
common "go-admin/common/middleware"
)
// InitRouter 路由初始化,不要怀疑,这里用到了
func InitRouter() {
var r *gin.Engine
h := sdk.Runtime.GetEngine()
if h == nil {
h = gin.New()
sdk.Runtime.SetEngine(h)
}
switch h.(type) {
case *gin.Engine:
r = h.(*gin.Engine)
default:
log.Fatal("not support other engine")
os.Exit(-1)
}
r.Use(common.Sentinel()).
Use(common.RequestId(pkg.TrafficKey))
common.InitMiddleware(r)
// the jwt middleware
authMiddleware, err := common.AuthInit()
if err != nil {
log.Fatalf("JWT Init Error, %s", err.Error())
}
// 注册业务路由
// TODO: 这里可存放业务路由,里边并无实际路由只有演示代码
initRouter(r, authMiddleware)
}
+43
View File
@@ -0,0 +1,43 @@
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)
}
}
@@ -3,9 +3,9 @@ package router
import ( import (
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
jwt "github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth" jwt "github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth"
"go-admin/app/admin/apis/sys_job" "go-admin/app/jobs/apis"
"go-admin/app/admin/models" models2 "go-admin/app/jobs/models"
"go-admin/app/admin/service/dto" dto2 "go-admin/app/jobs/service/dto"
"go-admin/common/actions" "go-admin/common/actions"
"go-admin/common/middleware" "go-admin/common/middleware"
) )
@@ -19,19 +19,19 @@ func registerSysJobRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddlew
r := v1.Group("/sysjob").Use(authMiddleware.MiddlewareFunc()).Use(middleware.AuthCheckRole()) r := v1.Group("/sysjob").Use(authMiddleware.MiddlewareFunc()).Use(middleware.AuthCheckRole())
{ {
sysJob := &models.SysJob{} sysJob := &models2.SysJob{}
r.GET("", actions.PermissionAction(), actions.IndexAction(sysJob, new(dto.SysJobSearch), func() interface{} { r.GET("", actions.PermissionAction(), actions.IndexAction(sysJob, new(dto2.SysJobSearch), func() interface{} {
list := make([]models.SysJob, 0) list := make([]models2.SysJob, 0)
return &list return &list
})) }))
r.GET("/:id", actions.PermissionAction(), actions.ViewAction(new(dto.SysJobById), func() interface{} { r.GET("/:id", actions.PermissionAction(), actions.ViewAction(new(dto2.SysJobById), func() interface{} {
return &dto.SysJobItem{} return &dto2.SysJobItem{}
})) }))
r.POST("", actions.CreateAction(new(dto.SysJobControl))) r.POST("", actions.CreateAction(new(dto2.SysJobControl)))
r.PUT("", actions.PermissionAction(), actions.UpdateAction(new(dto.SysJobControl))) r.PUT("", actions.PermissionAction(), actions.UpdateAction(new(dto2.SysJobControl)))
r.DELETE("", actions.PermissionAction(), actions.DeleteAction(new(dto.SysJobById))) r.DELETE("", actions.PermissionAction(), actions.DeleteAction(new(dto2.SysJobById)))
} }
sysJob := sys_job.SysJob{} sysJob := apis.SysJob{}
v1.GET("/job/remove/:id", sysJob.RemoveJobForService) v1.GET("/job/remove/:id", sysJob.RemoveJobForService)
v1.GET("/job/start/:id", sysJob.StartJobForService) v1.GET("/job/start/:id", sysJob.StartJobForService)
@@ -3,8 +3,8 @@ package dto
import ( import (
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
"github.com/go-admin-team/go-admin-core/sdk/api" "github.com/go-admin-team/go-admin-core/sdk/api"
"go-admin/app/jobs/models"
"go-admin/app/admin/models"
"go-admin/common/dto" "go-admin/common/dto"
common "go-admin/common/models" common "go-admin/common/models"
) )
@@ -2,9 +2,9 @@ package service
import ( import (
"github.com/robfig/cron/v3" "github.com/robfig/cron/v3"
"go-admin/app/jobs/models"
"time" "time"
"go-admin/app/admin/models"
"go-admin/app/jobs" "go-admin/app/jobs"
"go-admin/common/dto" "go-admin/common/dto"
"go-admin/common/service" "go-admin/common/service"
@@ -1,4 +1,4 @@
package public package apis
import ( import (
"encoding/base64" "encoding/base64"
@@ -30,6 +30,7 @@ type File struct {
apis.Api apis.Api
} }
// UploadFile 上传图片
// @Summary 上传图片 // @Summary 上传图片
// @Description 获取JSON // @Description 获取JSON
// @Tags 公共接口 // @Tags 公共接口
@@ -40,31 +41,29 @@ type File struct {
// @Success 200 {string} string "{"code": -1, "message": "添加失败"}" // @Success 200 {string} string "{"code": -1, "message": "添加失败"}"
// @Router /api/v1/public/uploadFile [post] // @Router /api/v1/public/uploadFile [post]
func (e File) UploadFile(c *gin.Context) { func (e File) UploadFile(c *gin.Context) {
e.Context = c e.SetContext(c)
tag, _ := c.GetPostForm("type") tag, _ := c.GetPostForm("type")
urlPerfix := fmt.Sprintf("http://%s/", c.Request.Host) urlPrefix := fmt.Sprintf("http://%s/", c.Request.Host)
var fileResponse FileResponse var fileResponse FileResponse
if tag == "" { if tag == "" {
e.Error(500, nil, "缺少标识") e.Error(500, nil, "缺少标识")
//app.Error(c, 200, errors.New(""), "缺少标识")
return return
} else { } else {
switch tag { switch tag {
case "1": // 单图 case "1": // 单图
var done bool var done bool
fileResponse, done = e.singleFile(c, fileResponse, urlPerfix) fileResponse, done = e.singleFile(c, fileResponse, urlPrefix)
if done { if done {
return return
} }
e.OK(fileResponse, "上传成功") e.OK(fileResponse, "上传成功")
return return
case "2": // 多图 case "2": // 多图
multipartFile := e.multipleFile(c, urlPerfix) multipartFile := e.multipleFile(c, urlPrefix)
e.OK(multipartFile, "上传成功") e.OK(multipartFile, "上传成功")
return return
case "3": // base64 case "3": // base64
fileResponse = e.baseImg(c, fileResponse, urlPerfix) fileResponse = e.baseImg(c, fileResponse, urlPrefix)
e.OK(fileResponse, "上传成功") e.OK(fileResponse, "上传成功")
} }
} }
@@ -1,4 +1,4 @@
package monitor package apis
import ( import (
"runtime" "runtime"
@@ -24,6 +24,7 @@ type Monitor struct {
apis.Api apis.Api
} }
// ServerInfo 获取系统信息
// @Summary 系统信息 // @Summary 系统信息
// @Description 获取JSON // @Description 获取JSON
// @Tags 系统信息 // @Tags 系统信息
@@ -1,14 +1,14 @@
package sys_china_area_data package apis
import ( import (
models2 "go-admin/app/other/models"
service2 "go-admin/app/other/service"
dto2 "go-admin/app/other/service/dto"
"net/http" "net/http"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
"github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth/user" "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"
"go-admin/common/actions" "go-admin/common/actions"
"go-admin/common/apis" "go-admin/common/apis"
) )
@@ -18,9 +18,9 @@ type SysChinaAreaData struct {
} }
func (e SysChinaAreaData) GetSysChinaAreaDataList(c *gin.Context) { func (e SysChinaAreaData) GetSysChinaAreaDataList(c *gin.Context) {
e.Context = c e.SetContext(c)
log := e.GetLogger() log := e.GetLogger()
d := new(dto.SysChinaAreaDataSearch) d := new(dto2.SysChinaAreaDataSearch)
db, err := e.GetOrm() db, err := e.GetOrm()
if err != nil { if err != nil {
log.Error(err) log.Error(err)
@@ -37,9 +37,9 @@ func (e SysChinaAreaData) GetSysChinaAreaDataList(c *gin.Context) {
//数据权限检查 //数据权限检查
p := actions.GetPermissionFromContext(c) p := actions.GetPermissionFromContext(c)
list := make([]models.SysChinaAreaData, 0) list := make([]models2.SysChinaAreaData, 0)
var count int64 var count int64
serviceStudent := service.SysChinaAreaData{} serviceStudent := service2.SysChinaAreaData{}
serviceStudent.Log = log serviceStudent.Log = log
serviceStudent.Orm = db serviceStudent.Orm = db
err = serviceStudent.GetSysChinaAreaDataPage(d, p, &list, &count) err = serviceStudent.GetSysChinaAreaDataPage(d, p, &list, &count)
@@ -52,9 +52,9 @@ func (e SysChinaAreaData) GetSysChinaAreaDataList(c *gin.Context) {
} }
func (e SysChinaAreaData) GetSysChinaAreaData(c *gin.Context) { func (e SysChinaAreaData) GetSysChinaAreaData(c *gin.Context) {
e.Context = c e.SetContext(c)
log := e.GetLogger() log := e.GetLogger()
control := new(dto.SysChinaAreaDataById) control := new(dto2.SysChinaAreaDataById)
db, err := e.GetOrm() db, err := e.GetOrm()
if err != nil { if err != nil {
log.Error(err) log.Error(err)
@@ -67,12 +67,12 @@ func (e SysChinaAreaData) GetSysChinaAreaData(c *gin.Context) {
e.Error(http.StatusUnprocessableEntity, err, "参数验证失败") e.Error(http.StatusUnprocessableEntity, err, "参数验证失败")
return return
} }
var object models.SysChinaAreaData var object models2.SysChinaAreaData
//数据权限检查 //数据权限检查
p := actions.GetPermissionFromContext(c) p := actions.GetPermissionFromContext(c)
serviceSysChinaAreaData := service.SysChinaAreaData{} serviceSysChinaAreaData := service2.SysChinaAreaData{}
serviceSysChinaAreaData.Log = log serviceSysChinaAreaData.Log = log
serviceSysChinaAreaData.Orm = db serviceSysChinaAreaData.Orm = db
err = serviceSysChinaAreaData.GetSysChinaAreaData(control, p, &object) err = serviceSysChinaAreaData.GetSysChinaAreaData(control, p, &object)
@@ -85,9 +85,9 @@ func (e SysChinaAreaData) GetSysChinaAreaData(c *gin.Context) {
} }
func (e SysChinaAreaData) InsertSysChinaAreaData(c *gin.Context) { func (e SysChinaAreaData) InsertSysChinaAreaData(c *gin.Context) {
e.Context = c e.SetContext(c)
log := e.GetLogger() log := e.GetLogger()
control := new(dto.SysChinaAreaDataControl) control := new(dto2.SysChinaAreaDataControl)
db, err := e.GetOrm() db, err := e.GetOrm()
if err != nil { if err != nil {
log.Error(err) log.Error(err)
@@ -108,7 +108,7 @@ func (e SysChinaAreaData) InsertSysChinaAreaData(c *gin.Context) {
// 设置创建人 // 设置创建人
object.SetCreateBy(user.GetUserId(c)) object.SetCreateBy(user.GetUserId(c))
serviceSysChinaAreaData := service.SysChinaAreaData{} serviceSysChinaAreaData := service2.SysChinaAreaData{}
serviceSysChinaAreaData.Orm = db serviceSysChinaAreaData.Orm = db
serviceSysChinaAreaData.Log = log serviceSysChinaAreaData.Log = log
err = serviceSysChinaAreaData.InsertSysChinaAreaData(object) err = serviceSysChinaAreaData.InsertSysChinaAreaData(object)
@@ -122,9 +122,9 @@ func (e SysChinaAreaData) InsertSysChinaAreaData(c *gin.Context) {
} }
func (e SysChinaAreaData) UpdateSysChinaAreaData(c *gin.Context) { func (e SysChinaAreaData) UpdateSysChinaAreaData(c *gin.Context) {
e.Context = c e.SetContext(c)
log := e.GetLogger() log := e.GetLogger()
control := new(dto.SysChinaAreaDataControl) control := new(dto2.SysChinaAreaDataControl)
db, err := e.GetOrm() db, err := e.GetOrm()
if err != nil { if err != nil {
log.Error(err) log.Error(err)
@@ -147,7 +147,7 @@ func (e SysChinaAreaData) UpdateSysChinaAreaData(c *gin.Context) {
//数据权限检查 //数据权限检查
p := actions.GetPermissionFromContext(c) p := actions.GetPermissionFromContext(c)
serviceSysChinaAreaData := service.SysChinaAreaData{} serviceSysChinaAreaData := service2.SysChinaAreaData{}
serviceSysChinaAreaData.Orm = db serviceSysChinaAreaData.Orm = db
serviceSysChinaAreaData.Log = log serviceSysChinaAreaData.Log = log
err = serviceSysChinaAreaData.UpdateSysChinaAreaData(object, p) err = serviceSysChinaAreaData.UpdateSysChinaAreaData(object, p)
@@ -159,9 +159,9 @@ func (e SysChinaAreaData) UpdateSysChinaAreaData(c *gin.Context) {
} }
func (e SysChinaAreaData) DeleteSysChinaAreaData(c *gin.Context) { func (e SysChinaAreaData) DeleteSysChinaAreaData(c *gin.Context) {
e.Context = c e.SetContext(c)
log := e.GetLogger() log := e.GetLogger()
control := new(dto.SysChinaAreaDataById) control := new(dto2.SysChinaAreaDataById)
db, err := e.GetOrm() db, err := e.GetOrm()
if err != nil { if err != nil {
log.Error(err) log.Error(err)
@@ -182,7 +182,7 @@ func (e SysChinaAreaData) DeleteSysChinaAreaData(c *gin.Context) {
// 数据权限检查 // 数据权限检查
p := actions.GetPermissionFromContext(c) p := actions.GetPermissionFromContext(c)
serviceSysChinaAreaData := service.SysChinaAreaData{} serviceSysChinaAreaData := service2.SysChinaAreaData{}
serviceSysChinaAreaData.Orm = db serviceSysChinaAreaData.Orm = db
serviceSysChinaAreaData.Log = log serviceSysChinaAreaData.Log = log
err = serviceSysChinaAreaData.RemoveSysChinaAreaData(control, p) err = serviceSysChinaAreaData.RemoveSysChinaAreaData(control, p)
@@ -192,4 +192,4 @@ func (e SysChinaAreaData) DeleteSysChinaAreaData(c *gin.Context) {
return return
} }
e.OK(control.GetId(), "删除成功") e.OK(control.GetId(), "删除成功")
} }
@@ -1,4 +1,4 @@
package sys_file package apis
import ( import (
"net/http" "net/http"
@@ -7,9 +7,9 @@ import (
"github.com/go-admin-team/go-admin-core/sdk/pkg" "github.com/go-admin-team/go-admin-core/sdk/pkg"
"github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth/user" "github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth/user"
"go-admin/app/admin/models" "go-admin/app/other/models"
"go-admin/app/admin/service" "go-admin/app/other/service"
"go-admin/app/admin/service/dto" "go-admin/app/other/service/dto"
"go-admin/common/actions" "go-admin/common/actions"
"go-admin/common/apis" "go-admin/common/apis"
) )
@@ -33,7 +33,7 @@ func (e SysFileDir) GetSysFileDirList(c *gin.Context) {
log.Debugf("ShouldBind error: %s", err.Error()) log.Debugf("ShouldBind error: %s", err.Error())
} }
var list *[]models.SysFileDirL var list *[]models.SysFileDir
serviceStudent := service.SysFileDir{} serviceStudent := service.SysFileDir{}
serviceStudent.Log = log serviceStudent.Log = log
serviceStudent.Orm = db serviceStudent.Orm = db
@@ -115,7 +115,7 @@ func (e SysFileDir) InsertSysFileDir(c *gin.Context) {
return return
} }
e.OK(control.ID, "创建成功") e.OK(control.Id, "创建成功")
} }
func (e SysFileDir) UpdateSysFileDir(c *gin.Context) { func (e SysFileDir) UpdateSysFileDir(c *gin.Context) {
@@ -153,7 +153,7 @@ func (e SysFileDir) UpdateSysFileDir(c *gin.Context) {
e.Error(http.StatusInternalServerError, err, "更新失败") e.Error(http.StatusInternalServerError, err, "更新失败")
return return
} }
e.OK(control.ID, "更新成功") e.OK(control.Id, "更新成功")
} }
func (e SysFileDir) DeleteSysFileDir(c *gin.Context) { func (e SysFileDir) DeleteSysFileDir(c *gin.Context) {
@@ -1,14 +1,14 @@
package sys_file package apis
import ( import (
models2 "go-admin/app/other/models"
service2 "go-admin/app/other/service"
dto2 "go-admin/app/other/service/dto"
"net/http" "net/http"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
"github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth/user" "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"
"go-admin/common/actions" "go-admin/common/actions"
"go-admin/common/apis" "go-admin/common/apis"
) )
@@ -20,7 +20,7 @@ type SysFileInfo struct {
func (e SysFileInfo) GetSysFileInfoList(c *gin.Context) { func (e SysFileInfo) GetSysFileInfoList(c *gin.Context) {
e.Context = c e.Context = c
log := e.GetLogger() log := e.GetLogger()
search := new(dto.SysFileInfoSearch) search := new(dto2.SysFileInfoSearch)
db, err := e.GetOrm() db, err := e.GetOrm()
if err != nil { if err != nil {
log.Error(err) log.Error(err)
@@ -36,9 +36,9 @@ func (e SysFileInfo) GetSysFileInfoList(c *gin.Context) {
//数据权限检查 //数据权限检查
p := actions.GetPermissionFromContext(c) p := actions.GetPermissionFromContext(c)
list := make([]models.SysFileInfo, 0) list := make([]models2.SysFileInfo, 0)
var count int64 var count int64
serviceStudent := service.SysFileInfo{} serviceStudent := service2.SysFileInfo{}
serviceStudent.Log = log serviceStudent.Log = log
serviceStudent.Orm = db serviceStudent.Orm = db
err = serviceStudent.GetSysFileInfoPage(search, p, &list, &count) err = serviceStudent.GetSysFileInfoPage(search, p, &list, &count)
@@ -52,7 +52,7 @@ func (e SysFileInfo) GetSysFileInfoList(c *gin.Context) {
} }
func (e SysFileInfo) GetSysFileInfo(c *gin.Context) { func (e SysFileInfo) GetSysFileInfo(c *gin.Context) {
control := new(dto.SysFileInfoById) control := new(dto2.SysFileInfoById)
e.Context = c e.Context = c
log := e.GetLogger() log := e.GetLogger()
db, err := e.GetOrm() db, err := e.GetOrm()
@@ -69,12 +69,12 @@ func (e SysFileInfo) GetSysFileInfo(c *gin.Context) {
return return
} }
var object models.SysFileInfo var object models2.SysFileInfo
//数据权限检查 //数据权限检查
p := actions.GetPermissionFromContext(c) p := actions.GetPermissionFromContext(c)
serviceSysFileInfo := service.SysFileInfo{} serviceSysFileInfo := service2.SysFileInfo{}
serviceSysFileInfo.Log = log serviceSysFileInfo.Log = log
serviceSysFileInfo.Orm = db serviceSysFileInfo.Orm = db
err = serviceSysFileInfo.GetSysFileInfo(control, p, &object) err = serviceSysFileInfo.GetSysFileInfo(control, p, &object)
@@ -88,7 +88,7 @@ func (e SysFileInfo) GetSysFileInfo(c *gin.Context) {
} }
func (e SysFileInfo) InsertSysFileInfo(c *gin.Context) { func (e SysFileInfo) InsertSysFileInfo(c *gin.Context) {
control := new(dto.SysFileInfoControl) control := new(dto2.SysFileInfoControl)
e.Context = c e.Context = c
log := e.GetLogger() log := e.GetLogger()
db, err := e.GetOrm() db, err := e.GetOrm()
@@ -113,7 +113,7 @@ func (e SysFileInfo) InsertSysFileInfo(c *gin.Context) {
// 设置创建人 // 设置创建人
control.CreateBy = user.GetUserId(c) control.CreateBy = user.GetUserId(c)
serviceSysFileInfo := service.SysFileInfo{} serviceSysFileInfo := service2.SysFileInfo{}
serviceSysFileInfo.Orm = db serviceSysFileInfo.Orm = db
serviceSysFileInfo.Log = log serviceSysFileInfo.Log = log
err = serviceSysFileInfo.InsertSysFileInfo(control) err = serviceSysFileInfo.InsertSysFileInfo(control)
@@ -123,11 +123,11 @@ func (e SysFileInfo) InsertSysFileInfo(c *gin.Context) {
return return
} }
e.OK(control.ID, "创建成功") e.OK(control.Id, "创建成功")
} }
func (e SysFileInfo) UpdateSysFileInfo(c *gin.Context) { func (e SysFileInfo) UpdateSysFileInfo(c *gin.Context) {
control := new(dto.SysFileInfoControl) control := new(dto2.SysFileInfoControl)
e.Context = c e.Context = c
log := e.GetLogger() log := e.GetLogger()
db, err := e.GetOrm() db, err := e.GetOrm()
@@ -154,7 +154,7 @@ func (e SysFileInfo) UpdateSysFileInfo(c *gin.Context) {
//数据权限检查 //数据权限检查
p := actions.GetPermissionFromContext(c) p := actions.GetPermissionFromContext(c)
serviceSysFileInfo := service.SysFileInfo{} serviceSysFileInfo := service2.SysFileInfo{}
serviceSysFileInfo.Orm = db serviceSysFileInfo.Orm = db
serviceSysFileInfo.Log = log serviceSysFileInfo.Log = log
err = serviceSysFileInfo.UpdateSysFileInfo(control, p) err = serviceSysFileInfo.UpdateSysFileInfo(control, p)
@@ -163,11 +163,11 @@ func (e SysFileInfo) UpdateSysFileInfo(c *gin.Context) {
e.Error(http.StatusInternalServerError, err, "创建失败") e.Error(http.StatusInternalServerError, err, "创建失败")
return return
} }
e.OK(control.ID, "更新成功") e.OK(control.Id, "更新成功")
} }
func (e SysFileInfo) DeleteSysFileInfo(c *gin.Context) { func (e SysFileInfo) DeleteSysFileInfo(c *gin.Context) {
control := new(dto.SysFileInfoById) control := new(dto2.SysFileInfoById)
e.Context = c e.Context = c
log := e.GetLogger() log := e.GetLogger()
db, err := e.GetOrm() db, err := e.GetOrm()
@@ -196,7 +196,7 @@ func (e SysFileInfo) DeleteSysFileInfo(c *gin.Context) {
// 数据权限检查 // 数据权限检查
p := actions.GetPermissionFromContext(c) p := actions.GetPermissionFromContext(c)
serviceSysFileInfo := service.SysFileInfo{} serviceSysFileInfo := service2.SysFileInfo{}
serviceSysFileInfo.Orm = db serviceSysFileInfo.Orm = db
serviceSysFileInfo.Log = log serviceSysFileInfo.Log = log
err = serviceSysFileInfo.RemoveSysFileInfo(control, p) err = serviceSysFileInfo.RemoveSysFileInfo(control, p)
@@ -6,9 +6,8 @@ import (
type SysChinaAreaData struct { type SysChinaAreaData struct {
models.Model models.Model
PId string `json:"p_id" gorm:"size:11;comment:上级编码"`
PId string `json:"pId" gorm:"type:int(11);comment:上级编码"` Name string `json:"name" gorm:"size:128;comment:名称"`
Name string `json:"name" gorm:"type:varchar(128);comment:名称"`
models.ControlBy models.ControlBy
models.ModelTime models.ModelTime
} }
@@ -7,7 +7,7 @@ import (
type SysFileDir struct { type SysFileDir struct {
models.Model models.Model
Label string `json:"label" gorm:"type:varchar(255);comment:目录名称"` // 目录名称 Label string `json:"label" gorm:"type:varchar(255);comment:目录名称"` // 目录名称
PId int `json:"pId" gorm:"type:int(11);comment:上级目录"` // 上级目录 PId int `json:"p_id" gorm:"type:int(11);comment:上级目录"` // 上级目录
Sort string `json:"sort" gorm:"type:bigint(20);comment:排序"` // 排序 Sort string `json:"sort" gorm:"type:bigint(20);comment:排序"` // 排序
Path string `json:"path" gorm:"type:varchar(255);comment:路径"` // 路径 Path string `json:"path" gorm:"type:varchar(255);comment:路径"` // 路径
Children []SysFileDir `json:"children,omitempty" gorm:"-"` // 下级信息 Children []SysFileDir `json:"children,omitempty" gorm:"-"` // 下级信息
@@ -15,16 +15,16 @@ type SysFileDir struct {
models.ModelTime models.ModelTime
} }
type SysFileDirL struct { //type SysFileDirL struct {
models.Model // models.Model
Label string `json:"label" gorm:"type:varchar(255);comment:目录名称"` // 目录名称 // Label string `json:"label" gorm:"type:varchar(255);comment:目录名称"` // 目录名称
PId int `json:"pId" gorm:"type:int(11);comment:上级目录"` // 上级目录 // PId int `json:"pId" gorm:"type:int(11);comment:上级目录"` // 上级目录
Sort string `json:"sort" gorm:"type:bigint(20);comment:排序"` // 排序 // Sort string `json:"sort" gorm:"type:bigint(20);comment:排序"` // 排序
Path string `json:"path" gorm:"type:varchar(255);comment:路径"` // 路径 // Path string `json:"path" gorm:"type:varchar(255);comment:路径"` // 路径
models.ControlBy // models.ControlBy
models.ModelTime // models.ModelTime
Children []SysFileDirL `json:"children,omitempty" gorm:"-"` // 下级信息 // Children []SysFileDirL `json:"children,omitempty" gorm:"-"` // 下级信息
} //}
func (SysFileDir) TableName() string { /**/ func (SysFileDir) TableName() string { /**/
return "sys_file_dir" return "sys_file_dir"
+31
View File
@@ -0,0 +1,31 @@
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
}
+42
View File
@@ -0,0 +1,42 @@
package router
import (
"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"
"github.com/go-admin-team/go-admin-core/sdk/pkg"
common "go-admin/common/middleware"
)
// InitRouter 路由初始化,不要怀疑,这里用到了
func InitRouter() {
var r *gin.Engine
h := sdk.Runtime.GetEngine()
if h == nil {
h = gin.New()
sdk.Runtime.SetEngine(h)
}
switch h.(type) {
case *gin.Engine:
r = h.(*gin.Engine)
default:
log.Fatal("not support other engine")
os.Exit(-1)
}
r.Use(common.Sentinel()).
Use(common.RequestId(pkg.TrafficKey))
common.InitMiddleware(r)
// the jwt middleware
authMiddleware, err := common.AuthInit()
if err != nil {
log.Fatalf("JWT Init Error, %s", err.Error())
}
// 注册业务路由
// TODO: 这里可存放业务路由,里边并无实际路由只有演示代码
initRouter(r, authMiddleware)
}
@@ -20,10 +20,14 @@ func Monitor() {
switch h.(type) { switch h.(type) {
case *gin.Engine: case *gin.Engine:
r = h.(*gin.Engine) r = h.(*gin.Engine)
//开发环境启动监控指标
setHandle(r)
default: default:
log.Fatal("not support other engine") log.Fatal("not support other engine")
} }
//开发环境启动监控指标 }
func setHandle(r *gin.Engine) {
r.GET("/metrics", transfer.Handler(promhttp.Handler())) r.GET("/metrics", transfer.Handler(promhttp.Handler()))
//健康检查 //健康检查
r.GET("/health", func(c *gin.Context) { r.GET("/health", func(c *gin.Context) {
+43
View File
@@ -0,0 +1,43 @@
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)
}
}
@@ -3,8 +3,8 @@ package router
import ( import (
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
jwt "github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth" jwt "github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth"
"go-admin/app/admin/apis/sys_china_area_data" "go-admin/app/other/apis"
middleware2 "go-admin/common/middleware" "go-admin/common/middleware"
) )
func init() { func init() {
@@ -13,8 +13,8 @@ func init() {
// 需认证的路由代码 // 需认证的路由代码
func registerSysChinaAreaDataRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) { func registerSysChinaAreaDataRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) {
api := sys_china_area_data.SysChinaAreaData{} api := apis.SysChinaAreaData{}
r := v1.Group("/sys_china_area_data").Use(authMiddleware.MiddlewareFunc()).Use(middleware2.AuthCheckRole()) r := v1.Group("/sys_china_area_data").Use(authMiddleware.MiddlewareFunc()).Use(middleware.AuthCheckRole())
{ {
r.GET("", api.GetSysChinaAreaDataList) r.GET("", api.GetSysChinaAreaDataList)
r.GET("/:id", api.GetSysChinaAreaData) r.GET("/:id", api.GetSysChinaAreaData)
@@ -3,7 +3,7 @@ package router
import ( import (
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
jwt "github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth" jwt "github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth"
"go-admin/app/admin/apis/sys_file" "go-admin/app/other/apis"
"go-admin/common/middleware" "go-admin/common/middleware"
) )
@@ -13,8 +13,8 @@ func init() {
// 需认证的路由代码 // 需认证的路由代码
func registerSysFileDirRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) { func registerSysFileDirRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) {
api := sys_file.SysFileDir{} api := apis.SysFileDir{}
r := v1.Group("/sysfiledir").Use(authMiddleware.MiddlewareFunc()).Use(middleware.AuthCheckRole()) r := v1.Group("/file-dir").Use(authMiddleware.MiddlewareFunc()).Use(middleware.AuthCheckRole())
{ {
r.GET("", api.GetSysFileDirList) r.GET("", api.GetSysFileDirList)
r.GET("/:id", api.GetSysFileDir) r.GET("/:id", api.GetSysFileDir)
@@ -22,4 +22,4 @@ func registerSysFileDirRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMid
r.PUT("/:id", api.UpdateSysFileDir) r.PUT("/:id", api.UpdateSysFileDir)
r.DELETE("/:id", api.DeleteSysFileDir) r.DELETE("/:id", api.DeleteSysFileDir)
} }
} }
@@ -3,7 +3,7 @@ package router
import ( import (
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
jwt "github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth" jwt "github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth"
"go-admin/app/admin/apis/sys_file" "go-admin/app/other/apis"
"go-admin/common/middleware" "go-admin/common/middleware"
) )
@@ -13,8 +13,8 @@ func init() {
// 需认证的路由代码 // 需认证的路由代码
func registerSysFileInfoRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) { func registerSysFileInfoRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) {
api := sys_file.SysFileInfo{} api := apis.SysFileInfo{}
r := v1.Group("/sysfileinfo").Use(authMiddleware.MiddlewareFunc()).Use(middleware.AuthCheckRole()) r := v1.Group("/file-info").Use(authMiddleware.MiddlewareFunc()).Use(middleware.AuthCheckRole())
{ {
r.GET("", api.GetSysFileInfoList) r.GET("", api.GetSysFileInfoList)
r.GET("/:id", api.GetSysFileInfo) r.GET("/:id", api.GetSysFileInfo)
@@ -22,4 +22,4 @@ func registerSysFileInfoRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMi
r.PUT("/:id", api.UpdateSysFileInfo) r.PUT("/:id", api.UpdateSysFileInfo)
r.DELETE("/:id", api.DeleteSysFileInfo) r.DELETE("/:id", api.DeleteSysFileInfo)
} }
} }
@@ -1,12 +1,12 @@
package dto package dto
import ( import (
models2 "go-admin/app/other/models"
"time" "time"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
"github.com/go-admin-team/go-admin-core/sdk/api" "github.com/go-admin-team/go-admin-core/sdk/api"
"go-admin/app/admin/models"
"go-admin/common/dto" "go-admin/common/dto"
common "go-admin/common/models" common "go-admin/common/models"
) )
@@ -53,9 +53,8 @@ func (s *SysChinaAreaDataControl) Bind(ctx *gin.Context) error {
return err return err
} }
func (s *SysChinaAreaDataControl) Generate() (*models.SysChinaAreaData, error) { func (s *SysChinaAreaDataControl) Generate() (*models2.SysChinaAreaData, error) {
return &models.SysChinaAreaData{ return &models2.SysChinaAreaData{
Model: common.Model{Id: s.Id}, Model: common.Model{Id: s.Id},
PId: s.PId, PId: s.PId,
Name: s.Name, Name: s.Name,
@@ -3,8 +3,8 @@ package dto
import ( import (
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
"github.com/go-admin-team/go-admin-core/sdk/api" "github.com/go-admin-team/go-admin-core/sdk/api"
"go-admin/app/other/models"
"go-admin/app/admin/models"
"go-admin/common/dto" "go-admin/common/dto"
common "go-admin/common/models" common "go-admin/common/models"
) )
@@ -38,7 +38,7 @@ func (m *SysFileDirSearch) Generate() dto.Index {
} }
type SysFileDirControl struct { type SysFileDirControl struct {
ID int `uri:"Id" comment:"标识"` // 标识 Id int `uri:"Id" comment:"标识"` // 标识
Label string `json:"label" comment:"目录名称"` Label string `json:"label" comment:"目录名称"`
PId int `json:"pId" comment:"上级目录"` PId int `json:"pId" comment:"上级目录"`
Sort string `json:"sort" comment:"排序"` Sort string `json:"sort" comment:"排序"`
@@ -68,7 +68,7 @@ func (s *SysFileDirControl) Generate() dto.Control {
func (s *SysFileDirControl) GenerateM() (common.ActiveRecord, error) { func (s *SysFileDirControl) GenerateM() (common.ActiveRecord, error) {
return &models.SysFileDir{ return &models.SysFileDir{
Model: common.Model{Id: s.ID}, Model: common.Model{Id: s.Id},
Label: s.Label, Label: s.Label,
PId: s.PId, PId: s.PId,
//Sort: s.Sort, //Sort: s.Sort,
@@ -81,7 +81,7 @@ func (s *SysFileDirControl) GenerateM() (common.ActiveRecord, error) {
} }
func (s *SysFileDirControl) GetId() interface{} { func (s *SysFileDirControl) GetId() interface{} {
return s.ID return s.Id
} }
type SysFileDirById struct { type SysFileDirById struct {
@@ -1,7 +1,7 @@
package dto package dto
import ( import (
"go-admin/app/admin/models" "go-admin/app/other/models"
"go-admin/common/dto" "go-admin/common/dto"
common "go-admin/common/models" common "go-admin/common/models"
) )
@@ -20,7 +20,7 @@ func (m *SysFileInfoSearch) GetNeedSearch() interface{} {
} }
type SysFileInfoControl struct { type SysFileInfoControl struct {
ID int `uri:"id" comment:"标识"` // 标识 Id int `uri:"id" comment:"标识"` // 标识
Type string `json:"type" comment:"类型"` Type string `json:"type" comment:"类型"`
Name string `json:"name" comment:"名称"` Name string `json:"name" comment:"名称"`
Size string `json:"size" comment:"大小"` Size string `json:"size" comment:"大小"`
@@ -34,7 +34,7 @@ type SysFileInfoControl struct {
func (s *SysFileInfoControl) Generate() (*models.SysFileInfo, error) { func (s *SysFileInfoControl) Generate() (*models.SysFileInfo, error) {
return &models.SysFileInfo{ return &models.SysFileInfo{
Model: common.Model{Id: s.ID}, Model: common.Model{Id: s.Id},
Type: s.Type, Type: s.Type,
Name: s.Name, Name: s.Name,
Size: s.Size, Size: s.Size,
+106
View File
@@ -0,0 +1,106 @@
package service
import (
"errors"
models2 "go-admin/app/other/models"
dto2 "go-admin/app/other/service/dto"
"gorm.io/gorm"
"go-admin/common/actions"
cDto "go-admin/common/dto"
"go-admin/common/service"
)
type SysChinaAreaData struct {
service.Service
}
// GetSysChinaAreaDataPage 获取SysChinaAreaData列表
func (e *SysChinaAreaData) GetSysChinaAreaDataPage(c *dto2.SysChinaAreaDataSearch, p *actions.DataPermission, list *[]models2.SysChinaAreaData, count *int64) error {
var data models2.SysChinaAreaData
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("Service GetSysChinaAreaDataPage error:%s", err)
return err
}
return nil
}
// GetSysChinaAreaData 获取SysChinaAreaData对象
func (e *SysChinaAreaData) GetSysChinaAreaData(d *dto2.SysChinaAreaDataById, p *actions.DataPermission, model *models2.SysChinaAreaData) error {
var data models2.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
}
// InsertSysChinaAreaData 创建SysChinaAreaData对象
func (e *SysChinaAreaData) InsertSysChinaAreaData(model *models2.SysChinaAreaData) error {
var data models2.SysChinaAreaData
err := e.Orm.Model(&data).
Create(model).Error
if err != nil {
e.Log.Errorf("Service InsertSysChinaAreaData error:%s", err)
return err
}
return nil
}
// UpdateSysChinaAreaData 修改SysChinaAreaData对象
func (e *SysChinaAreaData) UpdateSysChinaAreaData(c *models2.SysChinaAreaData, p *actions.DataPermission) error {
db := e.Orm.Model(c).
Scopes(
actions.Permission(c.TableName(), p),
).Where(c.GetId()).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
}
// RemoveSysChinaAreaData 删除SysChinaAreaData
func (e *SysChinaAreaData) RemoveSysChinaAreaData(d *dto2.SysChinaAreaDataById, p *actions.DataPermission) error {
var data models2.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
}
@@ -3,11 +3,11 @@ package service
import ( import (
"errors" "errors"
"fmt" "fmt"
"go-admin/app/other/models"
"go-admin/app/other/service/dto"
"gorm.io/gorm" "gorm.io/gorm"
"go-admin/app/admin/models"
"go-admin/app/admin/service/dto"
"go-admin/common/actions" "go-admin/common/actions"
cDto "go-admin/common/dto" cDto "go-admin/common/dto"
"go-admin/common/service" "go-admin/common/service"
@@ -18,7 +18,7 @@ type SysFileDir struct {
} }
// GetSysFileDirPage 获取SysFileDir列表 // GetSysFileDirPage 获取SysFileDir列表
func (e *SysFileDir) GetSysFileDirPage(c *dto.SysFileDirSearch, list *[]models.SysFileDirL) error { func (e *SysFileDir) GetSysFileDirPage(c *dto.SysFileDirSearch, list *[]models.SysFileDir) error {
var err error var err error
var data models.SysFileDir var data models.SysFileDir
@@ -65,7 +65,7 @@ func (e *SysFileDir) InsertSysFileDir(model *dto.SysFileDirControl) error {
e.Log.Errorf("db error: %s", err) e.Log.Errorf("db error: %s", err)
return err return err
} }
path := fmt.Sprintf("/%d", model.ID) path := fmt.Sprintf("/%d", model.Id)
//db = e.Orm.Model(&data). //db = e.Orm.Model(&data).
// First(&data, model.GetId()) // First(&data, model.GetId())
//err = db.Error //err = db.Error
@@ -79,7 +79,7 @@ func (e *SysFileDir) InsertSysFileDir(model *dto.SysFileDirControl) error {
} }
//var mp = map[string]string{} //var mp = map[string]string{}
//mp["path"] = path //mp["path"] = path
if err = e.Orm.Model(&models.SysFileDir{}).Where("id = ?", model.ID).Update("path", path).Error; err != nil { if err = e.Orm.Model(&models.SysFileDir{}).Where("id = ?", model.Id).Update("path", path).Error; err != nil {
return err return err
} }
@@ -94,7 +94,7 @@ func (e *SysFileDir) UpdateSysFileDir(c *dto.SysFileDirControl, p *actions.DataP
db := e.Orm. db := e.Orm.
Scopes( Scopes(
actions.Permission(data.TableName(), p), actions.Permission(data.TableName(), p),
).Where(c.ID).Updates(data) ).Where(c.Id).Updates(data)
if db.Error != nil { if db.Error != nil {
e.Log.Errorf("db error: %s", err) e.Log.Errorf("db error: %s", err)
return err return err
@@ -126,10 +126,10 @@ func (e *SysFileDir) RemoveSysFileDir(d *dto.SysFileDirById, p *actions.DataPerm
return nil return nil
} }
func (e *SysFileDir) SetSysFileDir(c *dto.SysFileDirSearch) (*[]models.SysFileDirL, error) { func (e *SysFileDir) SetSysFileDir(c *dto.SysFileDirSearch) (*[]models.SysFileDir, error) {
var list []models.SysFileDirL var list []models.SysFileDir
err := e.GetSysFileDirPage(c, &list) err := e.GetSysFileDirPage(c, &list)
m := make([]models.SysFileDirL, 0) m := make([]models.SysFileDir, 0)
for i := 0; i < len(list); i++ { for i := 0; i < len(list); i++ {
if list[i].PId != 0 { if list[i].PId != 0 {
continue continue
@@ -140,21 +140,21 @@ func (e *SysFileDir) SetSysFileDir(c *dto.SysFileDirSearch) (*[]models.SysFileDi
return &m, err return &m, err
} }
func SysFileDirCall(list *[]models.SysFileDirL, m models.SysFileDirL) models.SysFileDirL { func SysFileDirCall(list *[]models.SysFileDir, m models.SysFileDir) models.SysFileDir {
listGroup := *list listGroup := *list
min := make([]models.SysFileDirL, 0) min := make([]models.SysFileDir, 0)
for j := 0; j < len(listGroup); j++ { for j := 0; j < len(listGroup); j++ {
if m.Id != listGroup[j].PId { if m.Id != listGroup[j].PId {
continue continue
} }
mi := models.SysFileDirL{} mi := models.SysFileDir{}
mi.Id = listGroup[j].Id mi.Id = listGroup[j].Id
mi.PId = listGroup[j].PId mi.PId = listGroup[j].PId
mi.Label = listGroup[j].Label mi.Label = listGroup[j].Label
//mi.Sort = listGroup[j].Sort //mi.Sort = listGroup[j].Sort
mi.CreatedAt = listGroup[j].CreatedAt mi.CreatedAt = listGroup[j].CreatedAt
mi.UpdatedAt = listGroup[j].UpdatedAt mi.UpdatedAt = listGroup[j].UpdatedAt
mi.Children = []models.SysFileDirL{} mi.Children = []models.SysFileDir{}
ms := SysFileDirCall(list, mi) ms := SysFileDirCall(list, mi)
min = append(min, ms) min = append(min, ms)
} }
@@ -2,11 +2,11 @@ package service
import ( import (
"errors" "errors"
models2 "go-admin/app/other/models"
dto2 "go-admin/app/other/service/dto"
"gorm.io/gorm" "gorm.io/gorm"
"go-admin/app/admin/models"
"go-admin/app/admin/service/dto"
"go-admin/common/actions" "go-admin/common/actions"
cDto "go-admin/common/dto" cDto "go-admin/common/dto"
"go-admin/common/service" "go-admin/common/service"
@@ -17,9 +17,9 @@ type SysFileInfo struct {
} }
// GetSysFileInfoPage 获取SysFileInfo列表 // GetSysFileInfoPage 获取SysFileInfo列表
func (e *SysFileInfo) GetSysFileInfoPage(c *dto.SysFileInfoSearch, p *actions.DataPermission, list *[]models.SysFileInfo, count *int64) error { func (e *SysFileInfo) GetSysFileInfoPage(c *dto2.SysFileInfoSearch, p *actions.DataPermission, list *[]models2.SysFileInfo, count *int64) error {
var err error var err error
var data models.SysFileInfo var data models2.SysFileInfo
err = e.Orm.Model(&data). err = e.Orm.Model(&data).
Scopes( Scopes(
@@ -37,9 +37,9 @@ func (e *SysFileInfo) GetSysFileInfoPage(c *dto.SysFileInfoSearch, p *actions.Da
} }
// GetSysFileInfo 获取SysFileInfo对象 // GetSysFileInfo 获取SysFileInfo对象
func (e *SysFileInfo) GetSysFileInfo(d *dto.SysFileInfoById, p *actions.DataPermission, model *models.SysFileInfo) error { func (e *SysFileInfo) GetSysFileInfo(d *dto2.SysFileInfoById, p *actions.DataPermission, model *models2.SysFileInfo) error {
var err error var err error
var data models.SysFileInfo var data models2.SysFileInfo
db := e.Orm.Model(&data). db := e.Orm.Model(&data).
Scopes( Scopes(
@@ -60,9 +60,9 @@ func (e *SysFileInfo) GetSysFileInfo(d *dto.SysFileInfoById, p *actions.DataPerm
} }
// InsertSysFileInfo 创建SysFileInfo对象 // InsertSysFileInfo 创建SysFileInfo对象
func (e *SysFileInfo) InsertSysFileInfo(model *dto.SysFileInfoControl) error { func (e *SysFileInfo) InsertSysFileInfo(model *dto2.SysFileInfoControl) error {
var err error var err error
var data *models.SysFileInfo var data *models2.SysFileInfo
data, err = model.Generate() data, err = model.Generate()
if err != nil { if err != nil {
@@ -80,9 +80,9 @@ func (e *SysFileInfo) InsertSysFileInfo(model *dto.SysFileInfoControl) error {
} }
// UpdateSysFileInfo 修改SysFileInfo对象 // UpdateSysFileInfo 修改SysFileInfo对象
func (e *SysFileInfo) UpdateSysFileInfo(c *dto.SysFileInfoControl, p *actions.DataPermission) error { func (e *SysFileInfo) UpdateSysFileInfo(c *dto2.SysFileInfoControl, p *actions.DataPermission) error {
var err error var err error
var data *models.SysFileInfo var data *models2.SysFileInfo
data, err = c.Generate() data, err = c.Generate()
if err != nil { if err != nil {
@@ -92,7 +92,7 @@ func (e *SysFileInfo) UpdateSysFileInfo(c *dto.SysFileInfoControl, p *actions.Da
err = e.Orm.Debug().Model(&data). err = e.Orm.Debug().Model(&data).
Scopes( Scopes(
actions.Permission(data.TableName(), p), actions.Permission(data.TableName(), p),
).Where("id = ?", c.ID).Updates(&data).Error ).Where("id = ?", c.Id).Updates(&data).Error
if err != nil { if err != nil {
e.Log.Errorf("db error: %s", err) e.Log.Errorf("db error: %s", err)
return err return err
@@ -105,9 +105,9 @@ func (e *SysFileInfo) UpdateSysFileInfo(c *dto.SysFileInfoControl, p *actions.Da
} }
// RemoveSysFileInfo 删除SysFileInfo // RemoveSysFileInfo 删除SysFileInfo
func (e *SysFileInfo) RemoveSysFileInfo(d *dto.SysFileInfoById, p *actions.DataPermission) error { func (e *SysFileInfo) RemoveSysFileInfo(d *dto2.SysFileInfoById, p *actions.DataPermission) error {
var err error var err error
var data models.SysFileInfo var data models2.SysFileInfo
db := e.Orm.Model(&data). db := e.Orm.Model(&data).
Scopes( Scopes(
+8
View File
@@ -0,0 +1,8 @@
package api
import "go-admin/app/cms/router"
func init() {
//注册路由 fixme 其他应用的路由,在本目录新建文件放在init方法
AppRouters = append(AppRouters, router.InitRouter)
}
+8
View File
@@ -0,0 +1,8 @@
package api
import "go-admin/app/jobs/router"
func init() {
//注册路由 fixme 其他应用的路由,在本目录新建文件放在init方法
AppRouters = append(AppRouters, router.InitRouter)
}
+8
View File
@@ -0,0 +1,8 @@
package api
import "go-admin/app/other/router"
func init() {
//注册路由 fixme 其他应用的路由,在本目录新建文件放在init方法
AppRouters = append(AppRouters, router.InitRouter)
}
+2 -1
View File
@@ -3,6 +3,7 @@ package api
import ( import (
"context" "context"
"fmt" "fmt"
router2 "go-admin/app/other/router"
"log" "log"
"net/http" "net/http"
"os" "os"
@@ -115,7 +116,7 @@ func run() error {
if config.ApplicationConfig.Mode == "dev" { if config.ApplicationConfig.Mode == "dev" {
//监控 //监控
AppRouters = append(AppRouters, router.Monitor) AppRouters = append(AppRouters, router2.Monitor)
} }
for _, f := range AppRouters { for _, f := range AppRouters {
+52 -1
View File
@@ -1,10 +1,12 @@
package apis package apis
import ( import (
"fmt"
"github.com/go-admin-team/go-admin-core/sdk/api"
"net/http" "net/http"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
"github.com/go-admin-team/go-admin-core/sdk/api" "github.com/gin-gonic/gin/binding"
"github.com/go-admin-team/go-admin-core/sdk/pkg" "github.com/go-admin-team/go-admin-core/sdk/pkg"
"github.com/go-admin-team/go-admin-core/sdk/pkg/logger" "github.com/go-admin-team/go-admin-core/sdk/pkg/logger"
"github.com/go-admin-team/go-admin-core/sdk/pkg/response" "github.com/go-admin-team/go-admin-core/sdk/pkg/response"
@@ -13,13 +15,62 @@ import (
type Api struct { type Api struct {
Context *gin.Context Context *gin.Context
Logger *logger.Logger
}
func (e Api) SetContext(c *gin.Context) {
fmt.Println(&c)
e.Context = c
fmt.Println(&e.Context)
} }
// GetLogger 获取上下文提供的日志 // GetLogger 获取上下文提供的日志
func (e Api) GetLogger() *logger.Logger { func (e Api) GetLogger() *logger.Logger {
return api.GetRequestLogger(e.Context) return api.GetRequestLogger(e.Context)
} }
//func (e Api) GetLogger() (*logger.Logger, error) {
// if e.Context == nil {
// return nil, errors.New("API context cannot be nil")
// }
// return api.GetRequestLogger(e.Context), nil
//}
func (e Api) Bind(d interface{}, bindings ...binding.Binding) error {
var err error
for i := range bindings {
switch bindings[i] {
case binding.JSON:
err = e.Context.ShouldBindWith(d, binding.JSON)
case binding.XML:
err = e.Context.ShouldBindWith(d, binding.XML)
case binding.Form:
err = e.Context.ShouldBindWith(d, binding.Form)
case binding.Query:
err = e.Context.ShouldBindWith(d, binding.Query)
case binding.FormPost:
err = e.Context.ShouldBindWith(d, binding.FormPost)
case binding.FormMultipart:
err = e.Context.ShouldBindWith(d, binding.FormMultipart)
case binding.ProtoBuf:
err = e.Context.ShouldBindWith(d, binding.ProtoBuf)
case binding.MsgPack:
err = e.Context.ShouldBindWith(d, binding.MsgPack)
case binding.YAML:
err = e.Context.ShouldBindWith(d, binding.YAML)
case binding.Header:
err = e.Context.ShouldBindWith(d, binding.Header)
default:
err = e.Context.ShouldBindUri(d)
}
if err != nil {
return err
}
}
return nil
}
// GetOrm 获取Orm DB // GetOrm 获取Orm DB
func (e Api) GetOrm() (*gorm.DB, error) { func (e Api) GetOrm() (*gorm.DB, error) {
db, err := pkg.GetOrm(e.Context) db, err := pkg.GetOrm(e.Context)
+7 -15
View File
@@ -1,18 +1,10 @@
package apis package apis
import (
"github.com/gin-gonic/gin"
"github.com/go-admin-team/go-admin-core/sdk"
"github.com/go-admin-team/go-admin-core/sdk/pkg"
"github.com/go-admin-team/go-admin-core/sdk/pkg/logger"
"strings"
)
// GetRequestLogger 获取上下文提供的日志 // GetRequestLogger 获取上下文提供的日志
func GetRequestLogger(c *gin.Context) *logger.Logger { //func GetRequestLogger(c *gin.Context) *logger.Logger {
requestId := pkg.GenerateMsgIDFromContext(c) // requestId := pkg.GenerateMsgIDFromContext(c)
log := sdk.Runtime.GetLogger().Fields(map[string]interface{}{ // log := sdk.Runtime.GetLogger().Fields(map[string]interface{}{
strings.ToLower(pkg.TrafficKey): requestId, // strings.ToLower(pkg.TrafficKey): requestId,
}) // })
return &logger.Logger{Logger: log} // return &logger.Logger{Logger: log}
} //}
+1 -1
View File
@@ -22,7 +22,7 @@ func (s *ObjectById) Bind(ctx *gin.Context) error {
return err return err
} }
if ctx.Request.Method == http.MethodDelete { if ctx.Request.Method == http.MethodDelete {
err = ctx.ShouldBind(&s.Ids) err = ctx.ShouldBind(&s)
if err != nil { if err != nil {
log.Warnf("ShouldBind error: %s", err.Error()) log.Warnf("ShouldBind error: %s", err.Error())
return err return err
+2 -2
View File
@@ -1,8 +1,8 @@
package global package global
const ( const (
// go-admin Version Info // Version go-admin version info
Version = "1.3.3" Version = "1.4.0"
) )
var ( var (
+15 -15
View File
@@ -6,26 +6,26 @@ import (
) )
type SysUser struct { type SysUser struct {
models.ControlBy
models.ModelTime
UserId int `gorm:"primaryKey;autoIncrement;comment:编码" json:"userId"` UserId int `gorm:"primaryKey;autoIncrement;comment:编码" json:"userId"`
Username string `json:"username" gorm:"type:varchar(64);comment:用户名"` Username string `json:"username" gorm:"size:64;comment:用户名"`
Password string `json:"-" gorm:"type:varchar(128);comment:密码"` Password string `json:"-" gorm:"size:128;comment:密码"`
NickName string `json:"nickName" gorm:"type:varchar(128);comment:昵称"` NickName string `json:"nickName" gorm:"size:128;comment:昵称"`
Phone string `json:"phone" gorm:"type:varchar(11);comment:手机号"` Phone string `json:"phone" gorm:"size:11;comment:手机号"`
RoleId int `json:"roleId" gorm:"type:bigint(20);comment:角色ID"` RoleId int `json:"roleId" gorm:"size:20;comment:角色ID"`
Salt string `json:"-" gorm:"type:varchar(255);comment:加盐"` Salt string `json:"-" gorm:"size:255;comment:加盐"`
Avatar string `json:"avatar" gorm:"type:varchar(255);comment:头像"` Avatar string `json:"avatar" gorm:"size:255;comment:头像"`
Sex string `json:"sex" gorm:"type:varchar(255);comment:性别"` Sex string `json:"sex" gorm:"size:255;comment:性别"`
Email string `json:"email" gorm:"type:varchar(128);comment:邮箱"` Email string `json:"email" gorm:"size:128;comment:邮箱"`
DeptId int `json:"deptId" gorm:"type:bigint(20);comment:部门"` DeptId int `json:"deptId" gorm:"size:20;comment:部门"`
PostId int `json:"postId" gorm:"type:bigint(20);comment:岗位"` PostId int `json:"postId" gorm:"size:20;comment:岗位"`
Remark string `json:"remark" gorm:"type:varchar(255);comment:备注"` Remark string `json:"remark" gorm:"size:255;comment:备注"`
Status string `json:"status" gorm:"type:varchar(4);comment:状态"` Status string `json:"status" gorm:"size:4;comment:状态"`
DeptIds []int `json:"deptIds" gorm:"-"` DeptIds []int `json:"deptIds" gorm:"-"`
PostIds []int `json:"postIds" gorm:"-"` PostIds []int `json:"postIds" gorm:"-"`
RoleIds []int `json:"roleIds" gorm:"-"` RoleIds []int `json:"roleIds" gorm:"-"`
//Dept *SysDept `json:"dept"` //Dept *SysDept `json:"dept"`
models.ControlBy
models.ModelTime
} }
func (SysUser) TableName() string { func (SysUser) TableName() string {
+3 -3
View File
@@ -1,13 +1,13 @@
package config package config
var ExtConfig Extand var ExtConfig Extend
// 扩展配置 // Extend 扩展配置
// extend: // extend:
// demo: // demo:
// name: demo-name // name: demo-name
// 使用方法: config.ExtConfig......即可!! // 使用方法: config.ExtConfig......即可!!
type Extand struct { type Extend struct {
// Demo Demo // 这里配置对应配置文件的结构即可 // Demo Demo // 这里配置对应配置文件的结构即可
} }
+1 -1
View File
@@ -9,7 +9,7 @@ require (
github.com/bytedance/go-tagexpr/v2 v2.7.10 github.com/bytedance/go-tagexpr/v2 v2.7.10
github.com/casbin/casbin/v2 v2.25.1 github.com/casbin/casbin/v2 v2.25.1
github.com/gin-gonic/gin v1.6.3 github.com/gin-gonic/gin v1.6.3
github.com/go-admin-team/go-admin-core v1.3.5-rc.0 github.com/go-admin-team/go-admin-core v1.3.5-rc.0.0.20210423072631-e3580b68ee26
github.com/go-admin-team/go-admin-core/sdk v1.3.0-rc.3.0.20210427015751-b42693c49c6c github.com/go-admin-team/go-admin-core/sdk v1.3.0-rc.3.0.20210427015751-b42693c49c6c
github.com/google/uuid v1.2.0 github.com/google/uuid v1.2.0
github.com/mssola/user_agent v0.5.2 github.com/mssola/user_agent v0.5.2
+12 -25
View File
@@ -2,7 +2,6 @@ package dto
import ( import (
"errors" "errors"
vd "github.com/bytedance/go-tagexpr/v2/validator"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
"github.com/go-admin-team/go-admin-core/sdk/api" "github.com/go-admin-team/go-admin-core/sdk/api"
@@ -12,13 +11,13 @@ import (
) )
type {{.ClassName}}Search struct { type {{.ClassName}}Search struct {
dto.Pagination `search:"-" vd:"-"` dto.Pagination `search:"-"`
{{ $tablename := .TBName -}} {{- $tablename := .TBName -}}
{{ range .Columns -}} {{- range .Columns -}}
{{$z := .IsQuery}} {{$z := .IsQuery}}
{{- if ($z) -}} {{- if ($z) }}
{{.GoField}} {{.GoType}} `form:"{{.JsonField}}" vd:"?" search:"type:{{if eq .QueryType "EQ"}}exact{{ else if eq .QueryType "NE"}}iexact{{ else if eq .QueryType "LIKE"}}contains{{ else if eq .QueryType "GT"}}gt{{ else if eq .QueryType "GTE"}}gte{{ else if eq .QueryType "LT"}}lt{{ else if eq .QueryType "LTE"}}lte{{- end }};column:{{.ColumnName}};table:{{$tablename}}" comment:"{{.ColumnComment}}"` {{.GoField}} {{.GoType}} `form:"{{.JsonField}}" search:"type:{{if eq .QueryType "EQ"}}exact{{ else if eq .QueryType "NE"}}iexact{{ else if eq .QueryType "LIKE"}}contains{{ else if eq .QueryType "GT"}}gt{{ else if eq .QueryType "GTE"}}gte{{ else if eq .QueryType "LT"}}lt{{ else if eq .QueryType "LTE"}}lte{{- end }};column:{{.ColumnName}};table:{{$tablename}}" comment:"{{.ColumnComment}}"`
{{ end -}} {{- end }}
{{- end }} {{- end }}
} }
@@ -37,26 +36,22 @@ func (m *{{.ClassName}}Search) Bind(ctx *gin.Context) error {
if err != nil { if err != nil {
log.Errorf("ShouldBind error: %s", err.Error()) log.Errorf("ShouldBind error: %s", err.Error())
} }
if err1 := vd.Validate(s); err != nil {
log.Errorf("Validate error: %s", err1.Error())
return err1
}
return err return err
} }
type {{.ClassName}}Control struct { type {{.ClassName}}Control struct {
{{ range .Columns -}} {{- range .Columns -}}
{{$x := .Pk}} {{$x := .Pk}}
{{- if ($x) }} {{- if ($x) }}
{{.GoField}} {{.GoType}} `uri:"{{.JsonField}}" comment:"{{.ColumnComment}}" vd:"?"` // {{.ColumnComment}} {{.GoField}} {{.GoType}} `uri:"{{.JsonField}}" comment:"{{.ColumnComment}}"` // {{.ColumnComment}}
{{- else if eq .GoField "CreatedAt" -}} {{- else if eq .GoField "CreatedAt" -}}
{{- else if eq .GoField "UpdatedAt" -}} {{- else if eq .GoField "UpdatedAt" -}}
{{- else if eq .GoField "DeletedAt" -}} {{- else if eq .GoField "DeletedAt" -}}
{{- else if eq .GoField "CreateBy" -}} {{- else if eq .GoField "CreateBy" -}}
{{- else if eq .GoField "UpdateBy" -}} {{- else if eq .GoField "UpdateBy" -}}
{{- else }} {{- else }}
{{.GoField}} {{.GoType}} `json:"{{.JsonField}}" comment:"{{.ColumnComment}}" vd:"?"` {{.GoField}} {{.GoType}} `json:"{{.JsonField}}" comment:"{{.ColumnComment}}"`
{{end -}} {{- end -}}
{{- end }} {{- end }}
} }
@@ -77,16 +72,12 @@ func (s *{{.ClassName}}Control) Bind(ctx *gin.Context) error {
log.Errorf("ShouldBind error: %s", err.Error()) log.Errorf("ShouldBind error: %s", err.Error())
err = errors.New("数据绑定出错") err = errors.New("数据绑定出错")
} }
if err1 := vd.Validate(s); err != nil {
log.Errorf("Validate error: %s", err1.Error())
return err1
}
return err return err
} }
func (s *{{.ClassName}}Control) GenerateM() (common.ActiveRecord, error) { func (s *{{.ClassName}}Control) GenerateM() (common.ActiveRecord, error) {
return &models.{{.ClassName}}{ return &models.{{.ClassName}}{
{{ range .Columns -}} {{- range .Columns -}}
{{$x := .Pk}} {{$x := .Pk}}
{{- if ($x) }} {{- if ($x) }}
Model: common.Model{ {{.GoField}}: s.{{.GoField}} }, Model: common.Model{ {{.GoField}}: s.{{.GoField}} },
@@ -97,7 +88,7 @@ func (s *{{.ClassName}}Control) GenerateM() (common.ActiveRecord, error) {
{{- else if eq .GoField "UpdateBy" -}} {{- else if eq .GoField "UpdateBy" -}}
{{- else }} {{- else }}
{{.GoField}}: s.{{.GoField}}, {{.GoField}}: s.{{.GoField}},
{{- end }} {{- end -}}
{{- end }} {{- end }}
}, nil }, nil
} }
@@ -130,10 +121,6 @@ func (s *{{.ClassName}}ById) Bind(ctx *gin.Context) error {
log.Errorf("ShouldBind error: %s", err.Error()) log.Errorf("ShouldBind error: %s", err.Error())
err = errors.New("数据绑定出错") err = errors.New("数据绑定出错")
} }
if err1 := vd.Validate(s); err != nil {
log.Errorf("Validate error: %s", err1.Error())
return err1
}
return err return err
} }
+55 -44
View File
@@ -18,22 +18,26 @@ type {{.ClassName}} struct {
apis.Api apis.Api
} }
// Get{{.ClassName}}List 获取{{.TableComment}}列表
// @Summary 获取{{.TableComment}}列表 // @Summary 获取{{.TableComment}}列表
// @Description 获取{{.TableComment}}列表 // @Description 获取{{.TableComment}}列表
// @Tags {{.TableComment}} // @Tags {{.TableComment}}
{{ $tablename := .TBName -}} {{- $tablename := .TBName -}}
{{ range .Columns -}} {{- range .Columns -}}
{{$z := .IsQuery}} {{$z := .IsQuery}}
{{- if ($z) -}}// @Param {{.JsonField}} query {{.GoType}} false "{{.ColumnComment}}"{{ end -}}{{- end }} {{- if ($z) }}
// @Param {{.JsonField}} query {{.GoType}} false "{{.ColumnComment}}"
{{- end -}}
{{- end }}
// @Param pageSize query int false "页条数" // @Param pageSize query int false "页条数"
// @Param pageIndex query int false "页码" // @Param pageIndex query int false "页码"
// @Success 200 {object} response.Response{data=response.Page{list=[]models.{{.ClassName}}}} "{"code": 200, "data": [...]}" // @Success 200 {object} response.Response{data=response.Page{list=[]models.{{.ClassName}}}} "{"code": 200, "data": [...]}"
// @Router /api/v1/{{.ModuleName}} [get] // @Router /api/v1/{{.ModuleName}} [get]
// @Security Bearer // @Security Bearer
// Get{{.ClassName}}List 获取{{.TableComment}}列表 func (e {{.ClassName}}) Get{{.ClassName}}List(c *gin.Context) {
func (e *{{.ClassName}}) Get{{.ClassName}}List(c *gin.Context) { e.SetContext(c)
log := e.GetLogger(c) log := e.GetLogger()
db, err := e.GetOrm(c) db, err := e.GetOrm()
if err != nil { if err != nil {
log.Error(err) log.Error(err)
return return
@@ -44,7 +48,7 @@ func (e *{{.ClassName}}) Get{{.ClassName}}List(c *gin.Context) {
err = d.Bind(c) err = d.Bind(c)
if err != nil { if err != nil {
log.Warnf("request body bind error, %s", err.Error()) log.Warnf("request body bind error, %s", err.Error())
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败") e.Error( http.StatusUnprocessableEntity, err, "参数验证失败")
return return
} }
@@ -59,13 +63,14 @@ func (e *{{.ClassName}}) Get{{.ClassName}}List(c *gin.Context) {
err = service{{.ClassName}}.Get{{.ClassName}}Page(d, p, &list, &count) err = service{{.ClassName}}.Get{{.ClassName}}Page(d, p, &list, &count)
if err != nil { if err != nil {
log.Errorf("Get {{.ClassName}} Page error, %s", err.Error()) log.Errorf("Get {{.ClassName}} Page error, %s", err.Error())
e.Error(c, http.StatusInternalServerError, err, "查询失败") e.Error( http.StatusInternalServerError, err, "查询失败")
return return
} }
e.PageOK(c, list, int(count), d.GetPageIndex(), d.GetPageSize(), "查询成功") e.PageOK( list, int(count), d.GetPageIndex(), d.GetPageSize(), "查询成功")
} }
// Get{{.ClassName}} 获取{{.TableComment}}
// @Summary 获取{{.TableComment}} // @Summary 获取{{.TableComment}}
// @Description 获取{{.TableComment}} // @Description 获取{{.TableComment}}
// @Tags {{.TableComment}} // @Tags {{.TableComment}}
@@ -73,10 +78,10 @@ func (e *{{.ClassName}}) Get{{.ClassName}}List(c *gin.Context) {
// @Success 200 {object} response.Response{data=models.{{.ClassName}}} "{"code": 200, "data": [...]}" // @Success 200 {object} response.Response{data=models.{{.ClassName}}} "{"code": 200, "data": [...]}"
// @Router /api/v1/{{.ModuleName}}/{id} [get] // @Router /api/v1/{{.ModuleName}}/{id} [get]
// @Security Bearer // @Security Bearer
// Get{{.ClassName}} 获取{{.TableComment}} func (e {{.ClassName}}) Get{{.ClassName}}(c *gin.Context) {
func (e *{{.ClassName}}) Get{{.ClassName}}(c *gin.Context) { e.SetContext(c)
log := e.GetLogger(c) log := e.GetLogger()
db, err := e.GetOrm(c) db, err := e.GetOrm()
if err != nil { if err != nil {
log.Error(err) log.Error(err)
return return
@@ -88,7 +93,7 @@ func (e *{{.ClassName}}) Get{{.ClassName}}(c *gin.Context) {
err = control.Bind(c) err = control.Bind(c)
if err != nil { if err != nil {
log.Warnf("request body bind error, %s", err.Error()) log.Warnf("request body bind error, %s", err.Error())
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败") e.Error( http.StatusUnprocessableEntity, err, "参数验证失败")
return return
} }
var object models.{{.ClassName}} var object models.{{.ClassName}}
@@ -102,25 +107,27 @@ func (e *{{.ClassName}}) Get{{.ClassName}}(c *gin.Context) {
err = service{{.ClassName}}.Get{{.ClassName}}(control, p, &object) err = service{{.ClassName}}.Get{{.ClassName}}(control, p, &object)
if err != nil { if err != nil {
log.Errorf("Get {{.ClassName}} error, %s", err.Error()) log.Errorf("Get {{.ClassName}} error, %s", err.Error())
e.Error(c, http.StatusInternalServerError, err, "查询失败") e.Error( http.StatusInternalServerError, err, "查询失败")
return return
} }
e.OK(c, object, "查看成功") e.OK( object, "查看成功")
} }
// Insert{{.ClassName}} 创建{{.TableComment}}
// @Summary 创建{{.TableComment}} // @Summary 创建{{.TableComment}}
// @Description 创建{{.TableComment}} // @Description 创建{{.TableComment}}
// @Tags {{.TableComment}} // @Tags {{.TableComment}}
// @Accept application/json // @Accept application/json
// @Product application/json // @Product application/json
// @Param data body dto.{{.ClassName}}Control true "data" // @Param data body dto.{{.ClassName}}Control true "data"
// @Success 200 {object} response.Response "{"code": 200, "message": "添加成功"}" // @Success 200 {object} response.Response "{"code": 200, "message": "添加成功"}"
// @Router /api/v1/{{.ModuleName}} [post] // @Router /api/v1/{{.ModuleName}} [post]
// Insert{{.ClassName}} 创建{{.TableComment}} // @Security Bearer
func (e *{{.ClassName}}) Insert{{.ClassName}}(c *gin.Context) { func (e {{.ClassName}}) Insert{{.ClassName}}(c *gin.Context) {
log := e.GetLogger(c) e.SetContext(c)
db, err := e.GetOrm(c) log := e.GetLogger()
db, err := e.GetOrm()
if err != nil { if err != nil {
log.Error(err) log.Error(err)
return return
@@ -132,13 +139,13 @@ func (e *{{.ClassName}}) Insert{{.ClassName}}(c *gin.Context) {
err = control.Bind(c) err = control.Bind(c)
if err != nil { if err != nil {
log.Warnf("request body bind error, %s", err.Error()) log.Warnf("request body bind error, %s", err.Error())
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败") e.Error( http.StatusUnprocessableEntity, err, "参数验证失败")
return return
} }
object, err := control.GenerateM() object, err := control.GenerateM()
if err != nil { if err != nil {
log.Errorf("generate {{.ClassName}} model error, %s", err.Error()) log.Errorf("generate {{.ClassName}} model error, %s", err.Error())
e.Error(c, http.StatusInternalServerError, err, "模型生成失败") e.Error( http.StatusInternalServerError, err, "模型生成失败")
return return
} }
// 设置创建人 // 设置创建人
@@ -150,25 +157,27 @@ func (e *{{.ClassName}}) Insert{{.ClassName}}(c *gin.Context) {
err = service{{.ClassName}}.Insert{{.ClassName}}(object.(*models.{{.ClassName}})) err = service{{.ClassName}}.Insert{{.ClassName}}(object.(*models.{{.ClassName}}))
if err != nil { if err != nil {
log.Errorf("Insert {{.ClassName}} error, %s", err.Error()) log.Errorf("Insert {{.ClassName}} error, %s", err.Error())
e.Error(c, http.StatusInternalServerError, err, "创建失败") e.Error( http.StatusInternalServerError, err, "创建失败")
return return
} }
e.OK(c, object.GetId(), "创建成功") e.OK( object.GetId(), "创建成功")
} }
// Update{{.ClassName}} 修改{{.TableComment}}
// @Summary 修改{{.TableComment}} // @Summary 修改{{.TableComment}}
// @Description 修改{{.TableComment}} // @Description 修改{{.TableComment}}
// @Tags {{.TableComment}} // @Tags {{.TableComment}}
// @Accept application/json // @Accept application/json
// @Product application/json // @Product application/json
// @Param data body dto.{{.ClassName}}Control true "body" // @Param data body dto.{{.ClassName}}Control true "body"
// @Success 200 {object} response.Response "{"code": 200, "message": "修改成功"}" // @Success 200 {object} response.Response "{"code": 200, "message": "修改成功"}"
// @Router /api/v1/{{.ModuleName}} [put] // @Router /api/v1/{{.ModuleName}}/{id} [put]
// Update{{.ClassName}} 修改{{.TableComment}} // @Security Bearer
func (e *{{.ClassName}}) Update{{.ClassName}}(c *gin.Context) { func (e {{.ClassName}}) Update{{.ClassName}}(c *gin.Context) {
log := e.GetLogger(c) e.SetContext(c)
db, err := e.GetOrm(c) log := e.GetLogger()
db, err := e.GetOrm()
if err != nil { if err != nil {
log.Error(err) log.Error(err)
return return
@@ -180,13 +189,13 @@ func (e *{{.ClassName}}) Update{{.ClassName}}(c *gin.Context) {
err = control.Bind(c) err = control.Bind(c)
if err != nil { if err != nil {
log.Warnf("request body bind error, %s", err.Error()) log.Warnf("request body bind error, %s", err.Error())
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败") e.Error( http.StatusUnprocessableEntity, err, "参数验证失败")
return return
} }
object, err := control.GenerateM() object, err := control.GenerateM()
if err != nil { if err != nil {
log.Errorf("generate {{.ClassName}} model error, %s", err.Error()) log.Errorf("generate {{.ClassName}} model error, %s", err.Error())
e.Error(c, http.StatusInternalServerError, err, "模型生成失败") e.Error( http.StatusInternalServerError, err, "模型生成失败")
return return
} }
object.SetUpdateBy(user.GetUserId(c)) object.SetUpdateBy(user.GetUserId(c))
@@ -200,22 +209,24 @@ func (e *{{.ClassName}}) Update{{.ClassName}}(c *gin.Context) {
err = service{{.ClassName}}.Update{{.ClassName}}(object.(*models.{{.ClassName}}), p) err = service{{.ClassName}}.Update{{.ClassName}}(object.(*models.{{.ClassName}}), p)
if err != nil { if err != nil {
log.Errorf("Update {{.ClassName}} error, %s", err.Error()) log.Errorf("Update {{.ClassName}} error, %s", err.Error())
e.Error(c, http.StatusInternalServerError, err, "更新失败") e.Error( http.StatusInternalServerError, err, "更新失败")
return return
} }
e.OK(c, object.GetId(), "更新成功") e.OK( object.GetId(), "更新成功")
} }
// Delete{{.ClassName}} 删除{{.TableComment}}
// @Summary 删除{{.TableComment}} // @Summary 删除{{.TableComment}}
// @Description 删除{{.TableComment}} // @Description 删除{{.TableComment}}
// @Tags {{.TableComment}} // @Tags {{.TableComment}}
// @Param ids body []int false "ids" // @Param ids body []int false "ids"
// @Success 200 {object} response.Response "{"code": 200, "message": "删除成功"}" // @Success 200 {object} response.Response "{"code": 200, "message": "删除成功"}"
// @Router /api/v1/{{.ModuleName}} [delete] // @Router /api/v1/{{.ModuleName}} [delete]
// Delete{{.ClassName}} 删除{{.TableComment}} // @Security Bearer
func (e *{{.ClassName}}) Delete{{.ClassName}}(c *gin.Context) { func (e {{.ClassName}}) Delete{{.ClassName}}(c *gin.Context) {
log := e.GetLogger(c) e.SetContext(c)
db, err := e.GetOrm(c) log := e.GetLogger()
db, err := e.GetOrm()
if err != nil { if err != nil {
log.Error(err) log.Error(err)
return return
@@ -227,7 +238,7 @@ func (e *{{.ClassName}}) Delete{{.ClassName}}(c *gin.Context) {
err = control.Bind(c) err = control.Bind(c)
if err != nil { if err != nil {
log.Warnf("request body bind error, %s", err.Error()) log.Warnf("request body bind error, %s", err.Error())
e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败") e.Error( http.StatusUnprocessableEntity, err, "参数验证失败")
return return
} }
@@ -243,8 +254,8 @@ func (e *{{.ClassName}}) Delete{{.ClassName}}(c *gin.Context) {
err = service{{.ClassName}}.Remove{{.ClassName}}(control, p) err = service{{.ClassName}}.Remove{{.ClassName}}(control, p)
if err != nil { if err != nil {
log.Errorf("Remove {{.ClassName}} error, %s", err.Error()) log.Errorf("Remove {{.ClassName}} error, %s", err.Error())
e.Error(c, http.StatusInternalServerError, err, "删除失败") e.Error( http.StatusInternalServerError, err, "删除失败")
return return
} }
e.OK(c, control.GetId(), "删除成功") e.OK( control.GetId(), "删除成功")
} }
+19 -29
View File
@@ -30,7 +30,7 @@ func (e *{{.ClassName}}) Get{{.ClassName}}Page(c *dto.{{.ClassName}}Search, p *a
Find(list).Limit(-1).Offset(-1). Find(list).Limit(-1).Offset(-1).
Count(count).Error Count(count).Error
if err != nil { if err != nil {
e.Log.Errorf("db error: %s", err) e.Log.Errorf("Service Get{{.ClassName}}Page error:%s", err)
return err return err
} }
return nil return nil
@@ -38,21 +38,19 @@ func (e *{{.ClassName}}) Get{{.ClassName}}Page(c *dto.{{.ClassName}}Search, p *a
// Get{{.ClassName}} 获取{{.ClassName}}对象 // Get{{.ClassName}} 获取{{.ClassName}}对象
func (e *{{.ClassName}}) Get{{.ClassName}}(d *dto.{{.ClassName}}ById, p *actions.DataPermission, model *models.{{.ClassName}}) error { func (e *{{.ClassName}}) Get{{.ClassName}}(d *dto.{{.ClassName}}ById, p *actions.DataPermission, model *models.{{.ClassName}}) error {
var err error
var data models.{{.ClassName}} var data models.{{.ClassName}}
db := e.Orm.Model(&data). err := e.Orm.Model(&data).
Scopes( Scopes(
actions.Permission(data.TableName(), p), actions.Permission(data.TableName(), p),
). ).
First(model, d.GetId()) First(model, d.GetId()).Error
err = db.Error
if err != nil && errors.Is(err, gorm.ErrRecordNotFound) { if err != nil && errors.Is(err, gorm.ErrRecordNotFound) {
err = errors.New("查看对象不存在或无权查看") err = errors.New("查看对象不存在或无权查看")
e.Log.Errorf("db error: %s", err) e.Log.Errorf("Service Get{{.ClassName}} error:%s", err)
return err return err
} }
if db.Error != nil { if err != nil {
e.Log.Errorf("db error:%s", err) e.Log.Errorf("db error:%s", err)
return err return err
} }
@@ -61,11 +59,9 @@ func (e *{{.ClassName}}) Get{{.ClassName}}(d *dto.{{.ClassName}}ById, p *actions
// Insert{{.ClassName}} 创建{{.ClassName}}对象 // Insert{{.ClassName}} 创建{{.ClassName}}对象
func (e *{{.ClassName}}) Insert{{.ClassName}}(c *models.{{.ClassName}}) error { func (e *{{.ClassName}}) Insert{{.ClassName}}(c *models.{{.ClassName}}) error {
var err error err := e.Orm.Create(c).Error
err = e.Orm.Create(c).Error
if err != nil { if err != nil {
e.Log.Errorf("db error: %s", err) e.Log.Errorf("Service Insert{{.ClassName}} error:%s", err)
return err return err
} }
return nil return nil
@@ -73,40 +69,34 @@ func (e *{{.ClassName}}) Insert{{.ClassName}}(c *models.{{.ClassName}}) error {
// Update{{.ClassName}} 修改{{.ClassName}}对象 // Update{{.ClassName}} 修改{{.ClassName}}对象
func (e *{{.ClassName}}) Update{{.ClassName}}(c *models.{{.ClassName}}, p *actions.DataPermission) error { func (e *{{.ClassName}}) Update{{.ClassName}}(c *models.{{.ClassName}}, p *actions.DataPermission) error {
var err error
db := e.Orm.Model(c). db := e.Orm.Model(c).
Scopes( Scopes(
actions.Permission(c.TableName(), p), actions.Permission(c.TableName(), p),
).Where(c.GetId()).Updates(c) ).Where(c.GetId()).Updates(c)
if db.Error != nil { if err := db.Error; err != nil {
e.Log.Errorf("db error: %s", err) e.Log.Errorf("Service Update{{.ClassName}} error:%s", err)
return err return err
} }
if db.RowsAffected == 0 { if db.RowsAffected == 0 {
return errors.New("无权更新该数据") return errors.New("无权更新该数据")
} }
return nil return nil
} }
// Remove{{.ClassName}} 删除{{.ClassName}} // Remove{{.ClassName}} 删除{{.ClassName}}
func (e *{{.ClassName}}) Remove{{.ClassName}}(d *dto.{{.ClassName}}ById, p *actions.DataPermission) error { func (e *{{.ClassName}}) Remove{{.ClassName}}(d *dto.{{.ClassName}}ById, p *actions.DataPermission) error {
var err error
var data models.{{.ClassName}} var data models.{{.ClassName}}
db := e.Orm.Model(&data). db := e.Orm.Model(&data).
Scopes( Scopes(
actions.Permission(data.TableName(), p), actions.Permission(data.TableName(), p),
).Delete(&data, d.GetId()) ).Delete(&data, d.GetId())
if db.Error != nil { if err := db.Error; err != nil {
err = db.Error e.Log.Errorf("Service Remove{{.ClassName}} error:%s", err)
e.Log.Errorf("Delete error: %s", err) return err
return err }
} if db.RowsAffected == 0 {
if db.RowsAffected == 0 { return errors.New("无权删除该数据")
err = errors.New("无权删除该数据") }
return err
}
return nil return nil
} }