diff --git a/README.md b/README.md index d6ef44d8..7d0626e6 100644 --- a/README.md +++ b/README.md @@ -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进行调试 -./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 编译启动 @@ -188,10 +196,11 @@ go generate #### 交叉编译 ```bash +# windows env GOOS=windows GOARCH=amd64 go build main.go # or - +# linux env GOOS=linux GOARCH=amd64 go build main.go ``` diff --git a/app/admin/apis/system/captcha.go b/app/admin/apis/captcha.go similarity index 97% rename from app/admin/apis/system/captcha.go rename to app/admin/apis/captcha.go index 511fb784..0b99d965 100644 --- a/app/admin/apis/system/captcha.go +++ b/app/admin/apis/captcha.go @@ -1,4 +1,4 @@ -package system +package apis import ( "github.com/gin-gonic/gin" diff --git a/app/admin/apis/system/index.go b/app/admin/apis/index.go similarity index 97% rename from app/admin/apis/system/index.go rename to app/admin/apis/index.go index 59997496..19d691d0 100644 --- a/app/admin/apis/system/index.go +++ b/app/admin/apis/index.go @@ -1,4 +1,4 @@ -package system +package apis import ( "github.com/gin-gonic/gin" diff --git a/app/admin/apis/system/sys_config/sys_config.go b/app/admin/apis/sys_config.go similarity index 95% rename from app/admin/apis/system/sys_config/sys_config.go rename to app/admin/apis/sys_config.go index 977de4f8..fdb1d307 100644 --- a/app/admin/apis/system/sys_config/sys_config.go +++ b/app/admin/apis/sys_config.go @@ -1,6 +1,7 @@ -package sys_config +package apis import ( + "github.com/gin-gonic/gin/binding" "net/http" "github.com/gin-gonic/gin" @@ -17,7 +18,7 @@ type SysConfig struct { } func (e SysConfig) GetSysConfigList(c *gin.Context) { - e.Context = c + e.SetContext(c) //Context = c log := e.GetLogger() d := new(dto.SysConfigSearch) db, err := e.GetOrm() @@ -25,9 +26,9 @@ func (e SysConfig) GetSysConfigList(c *gin.Context) { log.Error(err) return } - + err = e.Bind(d, binding.Query) //查询列表 - err = d.Bind(c) + //err = d.Bind(c) if err != nil { log.Errorf("参数验证失败, error:%s", err) e.Error(500, err, "参数验证失败") @@ -58,7 +59,7 @@ func (e SysConfig) GetSysConfigBySysApp(c *gin.Context) { log.Error(err) return } - err = d.Bind(c) + err = e.Bind(d, binding.Query) if err != nil { log.Errorf("参数验证失败, error:%s", err) e.Error(500, err, "参数验证失败") @@ -98,6 +99,7 @@ func (e SysConfig) GetSysConfig(c *gin.Context) { return } //查看详情 + err = e.Bind(control) err = control.Bind(c) if err != nil { 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 { e.Error(http.StatusUnprocessableEntity, 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 { 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 { log.Errorf("Bind error: %s", err) e.Error(http.StatusUnprocessableEntity, err, "参数验证失败") - log.Errorf("Orm获取失败, error:%s", err) - e.Error(500, err, "Orm获取失败") return } object, err := control.GenerateM() if err != nil { e.Error(http.StatusInternalServerError, err, "模型生成失败") log.Errorf("Orm获取失败, error:%s", err) - e.Error(500, err, "Orm获取失败") return } @@ -242,7 +241,6 @@ func (e SysConfig) DeleteSysConfig(c *gin.Context) { if err != nil { e.Error(http.StatusUnprocessableEntity, err, "删除失败") log.Errorf("Orm获取失败, error:%s", err) - e.Error(500, err, "Orm获取失败") return } e.OK(object.GetId(), "删除成功") diff --git a/app/admin/apis/system/sys_dept/sys_dept.go b/app/admin/apis/sys_dept.go similarity index 99% rename from app/admin/apis/system/sys_dept/sys_dept.go rename to app/admin/apis/sys_dept.go index 71cfa021..e7189563 100644 --- a/app/admin/apis/system/sys_dept/sys_dept.go +++ b/app/admin/apis/sys_dept.go @@ -1,4 +1,4 @@ -package sys_dept +package apis import ( "github.com/go-admin-team/go-admin-core/sdk/pkg" diff --git a/app/admin/apis/system/dict/sys_dict_data.go b/app/admin/apis/sys_dict_data.go similarity index 99% rename from app/admin/apis/system/dict/sys_dict_data.go rename to app/admin/apis/sys_dict_data.go index 94d16df7..d708bf72 100644 --- a/app/admin/apis/system/dict/sys_dict_data.go +++ b/app/admin/apis/sys_dict_data.go @@ -1,4 +1,4 @@ -package dict +package apis import ( "net/http" diff --git a/app/admin/apis/system/dict/sys_dict_type.go b/app/admin/apis/sys_dict_type.go similarity index 99% rename from app/admin/apis/system/dict/sys_dict_type.go rename to app/admin/apis/sys_dict_type.go index c2a05296..bc8fda22 100644 --- a/app/admin/apis/system/dict/sys_dict_type.go +++ b/app/admin/apis/sys_dict_type.go @@ -1,4 +1,4 @@ -package dict +package apis import ( "net/http" diff --git a/app/admin/apis/system/sys_login_log/sys_login_log.go b/app/admin/apis/sys_login_log.go similarity index 99% rename from app/admin/apis/system/sys_login_log/sys_login_log.go rename to app/admin/apis/sys_login_log.go index 2c3cbe3c..f604c585 100644 --- a/app/admin/apis/system/sys_login_log/sys_login_log.go +++ b/app/admin/apis/sys_login_log.go @@ -1,4 +1,4 @@ -package sys_login_log +package apis import ( "net/http" diff --git a/app/admin/apis/system/sys_menu/sys_menu.go b/app/admin/apis/sys_menu.go similarity index 99% rename from app/admin/apis/system/sys_menu/sys_menu.go rename to app/admin/apis/sys_menu.go index 7654b786..ca3ec62b 100644 --- a/app/admin/apis/system/sys_menu/sys_menu.go +++ b/app/admin/apis/sys_menu.go @@ -1,4 +1,4 @@ -package sys_menu +package apis import ( "net/http" diff --git a/app/admin/apis/system/sys_opera_log/sys_opera_log.go b/app/admin/apis/sys_opera_log.go similarity index 99% rename from app/admin/apis/system/sys_opera_log/sys_opera_log.go rename to app/admin/apis/sys_opera_log.go index 8a150276..2dbc31e5 100644 --- a/app/admin/apis/system/sys_opera_log/sys_opera_log.go +++ b/app/admin/apis/sys_opera_log.go @@ -1,4 +1,4 @@ -package sys_opera_log +package apis import ( "net/http" diff --git a/app/admin/apis/system/sys_post/sys_post.go b/app/admin/apis/sys_post.go similarity index 99% rename from app/admin/apis/system/sys_post/sys_post.go rename to app/admin/apis/sys_post.go index a4789bb4..6ec209f3 100644 --- a/app/admin/apis/system/sys_post/sys_post.go +++ b/app/admin/apis/sys_post.go @@ -1,4 +1,4 @@ -package sys_post +package apis import ( "net/http" diff --git a/app/admin/apis/system/sys_role/sys_role.go b/app/admin/apis/sys_role.go similarity index 99% rename from app/admin/apis/system/sys_role/sys_role.go rename to app/admin/apis/sys_role.go index 20544c10..a4f31f18 100644 --- a/app/admin/apis/system/sys_role/sys_role.go +++ b/app/admin/apis/sys_role.go @@ -1,4 +1,4 @@ -package sys_role +package apis import ( "net/http" diff --git a/app/admin/apis/sys_user/sys_user.go b/app/admin/apis/sys_user.go similarity index 99% rename from app/admin/apis/sys_user/sys_user.go rename to app/admin/apis/sys_user.go index 3a04a1a7..a8d2c196 100644 --- a/app/admin/apis/sys_user/sys_user.go +++ b/app/admin/apis/sys_user.go @@ -1,4 +1,4 @@ -package sys_user +package apis import ( "net/http" diff --git a/app/admin/apis/system/settings.go b/app/admin/apis/system/settings.go deleted file mode 100644 index af53e0eb..00000000 --- a/app/admin/apis/system/settings.go +++ /dev/null @@ -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, "提交成功") -} diff --git a/app/admin/apis/tools/dbcolumns.go b/app/admin/apis/tools/dbcolumns.go index aa4ca76e..1f82df95 100644 --- a/app/admin/apis/tools/dbcolumns.go +++ b/app/admin/apis/tools/dbcolumns.go @@ -10,6 +10,7 @@ import ( "go-admin/app/admin/models/tools" ) +// GetDBColumnList 分页列表数据 // @Summary 分页列表数据 / page list data // @Description 数据库表列分页列表 / database table column page list // @Tags 工具 / Tools diff --git a/app/admin/apis/tools/dbtables.go b/app/admin/apis/tools/dbtables.go index 12f6ae46..6c94aae8 100644 --- a/app/admin/apis/tools/dbtables.go +++ b/app/admin/apis/tools/dbtables.go @@ -12,6 +12,7 @@ import ( "go-admin/app/admin/models/tools" ) +// GetDBTableList 分页列表数据 // @Summary 分页列表数据 / page list data // @Description 数据库表分页列表 / database table page list // @Tags 工具 / Tools @@ -32,7 +33,6 @@ func (e *Gen) GetDBTableList(c *gin.Context) { err = errors.New("对不起,sqlite3 或 postgres 不支持代码生成!") log.Warn(err) e.Error(403, err, "") - //c.JSON(http.StatusOK, res.ReturnError(500)) return } diff --git a/app/admin/apis/tools/gen.go b/app/admin/apis/tools/gen.go index 44c58bc6..27f54c72 100644 --- a/app/admin/apis/tools/gen.go +++ b/app/admin/apis/tools/gen.go @@ -21,7 +21,7 @@ type Gen struct { apis.Api } -func (e *Gen) Preview(c *gin.Context) { +func (e Gen) Preview(c *gin.Context) { e.Context = c log := e.GetLogger() table := tools.SysTables{} @@ -109,7 +109,7 @@ func (e *Gen) Preview(c *gin.Context) { e.OK(mp, "") } -func (e *Gen) GenCodeV3(c *gin.Context) { +func (e Gen) GenCode(c *gin.Context) { e.Context = c log := e.GetLogger() table := tools.SysTables{} @@ -131,15 +131,15 @@ func (e *Gen) GenCodeV3(c *gin.Context) { tab, _ := table.Get(db) if tab.IsActions == 1 { - e.ActionsGenV3(c, tab) + e.ActionsGen(c, tab) } else { - e.NOActionsGenV3(c, tab) + e.NOActionsGen(c, tab) } e.OK("", "Code generated successfully!") } -func (e *Gen) GenApiToFile(c *gin.Context) { +func (e Gen) GenApiToFile(c *gin.Context) { e.Context = c log := e.GetLogger() table := tools.SysTables{} @@ -164,7 +164,7 @@ func (e *Gen) GenApiToFile(c *gin.Context) { 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 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 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) basePath := "template/v4/" 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") } -func (e *Gen) GenMenuAndApi(c *gin.Context) { - log := api.GetRequestLogger(c) +func (e Gen) GenMenuAndApi(c *gin.Context) { + e.Context = c + log := e.GetLogger() table := tools.SysTables{} timeNow := pkg.GetCurrentTime() diff --git a/app/admin/apis/tools/systables.go b/app/admin/apis/tools/systables.go index 9e95d83e..c0f4dfda 100644 --- a/app/admin/apis/tools/systables.go +++ b/app/admin/apis/tools/systables.go @@ -18,6 +18,7 @@ type SysTable struct { apis.Api } +// GetSysTableList 分页列表数据 // @Summary 分页列表数据 // @Description 生成表分页列表 // @Tags 工具 - 生成表 diff --git a/app/admin/models/gorm/data.go b/app/admin/models/gorm/data.go deleted file mode 100644 index 5f60479a..00000000 --- a/app/admin/models/gorm/data.go +++ /dev/null @@ -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) -} diff --git a/app/admin/models/sys_file_info.go b/app/admin/models/sys_file_info.go deleted file mode 100644 index 598969e0..00000000 --- a/app/admin/models/sys_file_info.go +++ /dev/null @@ -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 -} diff --git a/app/admin/models/syscategory.go b/app/admin/models/syscategory.go deleted file mode 100644 index 219394ca..00000000 --- a/app/admin/models/syscategory.go +++ /dev/null @@ -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 -} \ No newline at end of file diff --git a/app/admin/models/system/casbinrule.go b/app/admin/models/system/casbin_rule.go similarity index 100% rename from app/admin/models/system/casbinrule.go rename to app/admin/models/system/casbin_rule.go diff --git a/app/admin/router/sys_config.go b/app/admin/router/sys_config.go index 64dc6bf1..d53e73ee 100644 --- a/app/admin/router/sys_config.go +++ b/app/admin/router/sys_config.go @@ -1,10 +1,11 @@ package router import ( + "go-admin/app/admin/apis" + middleware2 "go-admin/common/middleware" + "github.com/gin-gonic/gin" 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() { @@ -13,8 +14,8 @@ func init() { // 需认证的路由代码 func registerSysConfigRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) { - api := sys_config.SysConfig{} - r := v1.Group("/config").Use(authMiddleware.MiddlewareFunc()).Use(middleware.AuthCheckRole()) + api := apis.SysConfig{} + r := v1.Group("/config").Use(authMiddleware.MiddlewareFunc()).Use(middleware2.AuthCheckRole()) { r.GET("", api.GetSysConfigList) @@ -34,4 +35,4 @@ func registerSysConfigRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMidd r2.GET("", api.GetSysConfigBySysApp) } -} \ No newline at end of file +} diff --git a/app/admin/router/sys_dept.go b/app/admin/router/sys_dept.go index a64d8468..6dbe23ac 100644 --- a/app/admin/router/sys_dept.go +++ b/app/admin/router/sys_dept.go @@ -3,8 +3,8 @@ package router import ( "github.com/gin-gonic/gin" jwt "github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth" - "go-admin/app/admin/apis/system/sys_dept" - "go-admin/common/middleware" + "go-admin/app/admin/apis" + middleware2 "go-admin/common/middleware" ) func init() { @@ -13,8 +13,8 @@ func init() { // 需认证的路由代码 func registerSysDeptRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) { - api := sys_dept.SysDept{} - r := v1.Group("/dept").Use(authMiddleware.MiddlewareFunc()).Use(middleware.AuthCheckRole()) + api := apis.SysDept{} + r := v1.Group("/dept").Use(authMiddleware.MiddlewareFunc()).Use(middleware2.AuthCheckRole()) { r.GET("", api.GetSysDeptList) r.GET("/:id", api.GetSysDept) @@ -28,4 +28,4 @@ func registerSysDeptRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddle r1.GET("/deptTree", api.GetDeptTree) } -} \ No newline at end of file +} diff --git a/app/admin/router/sys_login_log.go b/app/admin/router/sys_login_log.go index 8eb08e6a..b73d7b5a 100644 --- a/app/admin/router/sys_login_log.go +++ b/app/admin/router/sys_login_log.go @@ -3,8 +3,8 @@ package router import ( "github.com/gin-gonic/gin" jwt "github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth" - "go-admin/app/admin/apis/system/sys_login_log" - "go-admin/common/middleware" + "go-admin/app/admin/apis" + middleware2 "go-admin/common/middleware" ) func init() { @@ -13,8 +13,8 @@ func init() { // 需认证的路由代码 func registerSysLoginLogRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) { - api := sys_login_log.SysLoginLog{} - r := v1.Group("/sys-login-log").Use(authMiddleware.MiddlewareFunc()).Use(middleware.AuthCheckRole()) + api := apis.SysLoginLog{} + r := v1.Group("/sys-login-log").Use(authMiddleware.MiddlewareFunc()).Use(middleware2.AuthCheckRole()) { r.GET("", api.GetSysLoginLogList) r.GET("/:id", api.GetSysLoginLog) @@ -22,4 +22,4 @@ func registerSysLoginLogRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMi r.PUT("/:id", api.UpdateSysLoginLog) r.DELETE("", api.DeleteSysLoginLog) } -} \ No newline at end of file +} diff --git a/app/admin/router/sys_menu.go b/app/admin/router/sys_menu.go index b458e0e0..19f57f13 100644 --- a/app/admin/router/sys_menu.go +++ b/app/admin/router/sys_menu.go @@ -3,8 +3,8 @@ package router import ( "github.com/gin-gonic/gin" jwt "github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth" - "go-admin/app/admin/apis/system/sys_menu" - "go-admin/common/middleware" + "go-admin/app/admin/apis" + middleware2 "go-admin/common/middleware" ) func init() { @@ -13,8 +13,15 @@ func init() { // 需认证的路由代码 func registerSysMenuRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) { - api := sys_menu.SysMenu{} - r := v1.Group("/menu").Use(authMiddleware.MiddlewareFunc()).Use(middleware.AuthCheckRole()) + api := apis.SysMenu{} + //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("/:id", api.GetSysMenu) @@ -29,4 +36,4 @@ func registerSysMenuRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddle r1.GET("/menuids", api.GetMenuIDS) } -} \ No newline at end of file +} diff --git a/app/admin/router/sys_opera_log.go b/app/admin/router/sys_opera_log.go index 4744e67c..998d2c93 100644 --- a/app/admin/router/sys_opera_log.go +++ b/app/admin/router/sys_opera_log.go @@ -3,8 +3,8 @@ package router import ( "github.com/gin-gonic/gin" jwt "github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth" - "go-admin/app/admin/apis/system/sys_opera_log" - "go-admin/common/middleware" + "go-admin/app/admin/apis" + middleware2 "go-admin/common/middleware" ) func init() { @@ -13,8 +13,8 @@ func init() { // 需认证的路由代码 func registerSysOperaLogRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) { - api := sys_opera_log.SysOperaLog{} - r := v1.Group("/sys-opera-log").Use(authMiddleware.MiddlewareFunc()).Use(middleware.AuthCheckRole()) + api := apis.SysOperaLog{} + r := v1.Group("/sys-opera-log").Use(authMiddleware.MiddlewareFunc()).Use(middleware2.AuthCheckRole()) { r.GET("", api.GetSysOperaLogList) r.GET("/:id", api.GetSysOperaLog) @@ -22,4 +22,4 @@ func registerSysOperaLogRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMi r.PUT("/:id", api.UpdateSysOperaLog) r.DELETE("", api.DeleteSysOperaLog) } -} \ No newline at end of file +} diff --git a/app/admin/router/sys_post.go b/app/admin/router/sys_post.go index 242cae66..eeed976d 100644 --- a/app/admin/router/sys_post.go +++ b/app/admin/router/sys_post.go @@ -3,8 +3,8 @@ package router import ( "github.com/gin-gonic/gin" jwt "github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth" - "go-admin/app/admin/apis/system/sys_post" - "go-admin/common/middleware" + "go-admin/app/admin/apis" + middleware2 "go-admin/common/middleware" ) func init() { @@ -13,8 +13,8 @@ func init() { // 需认证的路由代码 func registerSyPostRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) { - api := sys_post.SysPost{} - r := v1.Group("/post").Use(authMiddleware.MiddlewareFunc()).Use(middleware.AuthCheckRole()) + api := apis.SysPost{} + r := v1.Group("/post").Use(authMiddleware.MiddlewareFunc()).Use(middleware2.AuthCheckRole()) { r.GET("", api.GetSysPostList) r.GET("/:id", api.GetSysPost) @@ -22,4 +22,4 @@ func registerSyPostRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddlew r.PUT("/:id", api.UpdateSysPost) r.DELETE("/:id", api.DeleteSysPost) } -} \ No newline at end of file +} diff --git a/app/admin/router/sys_role.go b/app/admin/router/sys_role.go index 8a6753b0..5ba9ec5f 100644 --- a/app/admin/router/sys_role.go +++ b/app/admin/router/sys_role.go @@ -3,8 +3,8 @@ package router import ( "github.com/gin-gonic/gin" jwt "github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth" - "go-admin/app/admin/apis/system/sys_role" - "go-admin/common/middleware" + "go-admin/app/admin/apis" + middleware2 "go-admin/common/middleware" ) func init() { @@ -13,8 +13,8 @@ func init() { // 需认证的路由代码 func registerSysRoleRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) { - api := sys_role.SysRole{} - r := v1.Group("/role").Use(authMiddleware.MiddlewareFunc()).Use(middleware.AuthCheckRole()) + api := apis.SysRole{} + r := v1.Group("/role").Use(authMiddleware.MiddlewareFunc()).Use(middleware2.AuthCheckRole()) { r.GET("", api.GetSysRoleList) r.GET("/:id", api.GetSysRole) @@ -23,4 +23,4 @@ func registerSysRoleRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddle r.DELETE("", api.DeleteSysRole) } v1.PUT("/roledatascope", api.UpdateRoleDataScope) -} \ No newline at end of file +} diff --git a/app/admin/router/sys_router.go b/app/admin/router/sys_router.go index b059f7f0..ab6793c0 100644 --- a/app/admin/router/sys_router.go +++ b/app/admin/router/sys_router.go @@ -1,6 +1,7 @@ package router import ( + "go-admin/app/admin/apis" "mime" "github.com/gin-gonic/gin" @@ -9,12 +10,6 @@ import ( ginSwagger "github.com/swaggo/gin-swagger" "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/common/middleware" "go-admin/common/middleware/handler" @@ -41,12 +36,15 @@ func sysBaseRouter(r *gin.RouterGroup) { go ws.WebsocketManager.SendService() go ws.WebsocketManager.SendAllService() - r.GET("/", system.HelloWorld) + r.GET("/", apis.HelloWorld) r.GET("/info", handler.Ping) } 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("/form-generator", "./static/form-generator") } @@ -58,13 +56,13 @@ func sysSwaggerRouter(r *gin.RouterGroup) { func sysNoCheckRoleRouter(r *gin.RouterGroup) { v1 := r.Group("/api/v1") - m := monitor.Monitor{} - v1.GET("/monitor/server", m.ServerInfo) - sys := system.System{} + //m := apis2.Monitor{} + //v1.GET("/monitor/server", m.ServerInfo) + sys := apis.System{} v1.GET("/getCaptcha", sys.GenerateCaptchaHandler) gen := tools.Gen{} 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/todb/:tableId", gen.GenMenuAndApi) @@ -73,8 +71,7 @@ func sysNoCheckRoleRouter(r *gin.RouterGroup) { registerDBRouter(v1) registerSysTableRouter(v1) - registerPublicRouter(v1) - registerSysSettingRouter(v1) + //registerPublicRouter(v1) } 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) { - api := sys_menu.SysMenu{} - api2 := sys_dept.SysDept{} + api := apis.SysMenu{} + api2 := apis.SysDept{} v1auth := v1.Group("").Use(authMiddleware.MiddlewareFunc()).Use(middleware.AuthCheckRole()) { //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) { - dictApi := dict.SysDictType{} - dataApi := dict.SysDictData{} + dictApi := apis.SysDictType{} + dataApi := apis.SysDictData{} 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) // } //} -func registerSysSettingRouter(v1 *gin.RouterGroup) { - api := system.SysSetting{} - m := monitor.Monitor{} - setting := v1.Group("/setting") - { - setting.GET("", api.GetSetting) - setting.POST("", api.CreateOrUpdateSetting) - setting.GET("/serverInfo", m.ServerInfo) - } -} +//func registerSysSettingRouter(v1 *gin.RouterGroup) { +// +// //m := apis2.Monitor{} +// setting := v1.Group("/setting") +// { +// setting.GET("/serverInfo", m.ServerInfo) +// } +//} -func registerPublicRouter(v1 *gin.RouterGroup) { - p := v1.Group("/public") - { - file := public.File{} - p.POST("/uploadFile", file.UploadFile) - } -} +//func registerPublicRouter(v1 *gin.RouterGroup) { +// p := v1.Group("/public") +// { +// file := apis2.File{} +// p.POST("/uploadFile", file.UploadFile) +// } +//} diff --git a/app/admin/router/sys_user.go b/app/admin/router/sys_user.go index 26c210c7..570e7c12 100644 --- a/app/admin/router/sys_user.go +++ b/app/admin/router/sys_user.go @@ -3,7 +3,7 @@ package router import ( "github.com/gin-gonic/gin" 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/middleware" ) @@ -14,8 +14,8 @@ func init() { // 需认证的路由代码 func registerSysUserRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) { - api := sys_user.SysUser{} - r := v1.Group("/sysUser").Use(authMiddleware.MiddlewareFunc()).Use(middleware.AuthCheckRole()).Use(actions.PermissionAction()) + api := apis.SysUser{} + r := v1.Group("/sysUser").Use(authMiddleware.MiddlewareFunc()).Use(middleware2.AuthCheckRole()).Use(actions.PermissionAction()) { r.GET("", api.GetSysUserList) r.GET("/:id", api.GetSysUser) @@ -34,4 +34,4 @@ func registerSysUserRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddle { v1auth.GET("/getinfo", api.GetInfo) } -} \ No newline at end of file +} diff --git a/app/admin/service/dto/sys_config.go b/app/admin/service/dto/sys_config.go index be498452..f5bd85ff 100644 --- a/app/admin/service/dto/sys_config.go +++ b/app/admin/service/dto/sys_config.go @@ -26,14 +26,14 @@ func (m *SysConfigSearch) GetNeedSearch() interface{} { } // Bind 映射上下文中的结构体数据 -func (m *SysConfigSearch) Bind(ctx *gin.Context) error { - log := api.GetRequestLogger(ctx) - err := ctx.ShouldBind(m) - if err != nil { - log.Debugf("ShouldBind error: %s", err.Error()) - } - return err -} +//func (m *SysConfigSearch) Bind(ctx *gin.Context) error { +// log := api.GetRequestLogger(ctx) +// err := ctx.ShouldBind(m) +// if err != nil { +// log.Debugf("ShouldBind error: %s", err.Error()) +// } +// return err +//} // SysConfigControl 增、改使用的结构体 type SysConfigControl struct { diff --git a/app/admin/service/sys_config.go b/app/admin/service/sys_config.go index c4d1756c..73e23e43 100644 --- a/app/admin/service/sys_config.go +++ b/app/admin/service/sys_config.go @@ -26,7 +26,7 @@ func (e *SysConfig) GetSysConfigPage(c *dto.SysConfigSearch, list *[]system.SysC Find(list).Limit(-1).Offset(-1). Count(count).Error if err != nil { - e.Log.Errorf("db error:%s", err) + e.Log.Errorf("Service GetSysConfigPage error:%s", err) return err } return nil @@ -42,7 +42,7 @@ func (e *SysConfig) GetSysConfigByKey(c *dto.SysConfigSearch, list *[]system.Sys ). Find(list).Error if err != nil { - e.Log.Errorf("db error:%s", err) + e.Log.Errorf("Service GetSysConfigByKey error:%s", err) return err } return nil @@ -50,19 +50,17 @@ func (e *SysConfig) GetSysConfigByKey(c *dto.SysConfigSearch, list *[]system.Sys // GetSysConfig 获取SysConfig对象 func (e *SysConfig) GetSysConfig(d *dto.SysConfigById, model *system.SysConfig) error { - var err error var data system.SysConfig - db := e.Orm.Model(&data). - First(model, d.GetId()) - err = db.Error + err := e.Orm.Model(&data). + First(model, d.GetId()).Error if err != nil && errors.Is(err, gorm.ErrRecordNotFound) { err = errors.New("查看对象不存在或无权查看") - e.Log.Errorf("db error:%s", err) + e.Log.Errorf("Service GetSysConfigPage error:%s", err) return err } - if db.Error != nil { - e.Log.Errorf("db error:%s", err) + if err != nil { + e.Log.Errorf("Service GetSysConfig error:%s", err) return err } return nil @@ -76,7 +74,7 @@ func (e *SysConfig) InsertSysConfig(model *system.SysConfig) error { err = e.Orm.Model(&data). Create(model).Error if err != nil { - e.Log.Errorf("db error:%s", err) + e.Log.Errorf("Service InsertSysConfig error:%s", err) return err } return nil @@ -85,12 +83,12 @@ func (e *SysConfig) InsertSysConfig(model *system.SysConfig) error { // UpdateSysConfig 修改SysConfig对象 func (e *SysConfig) UpdateSysConfig(c *system.SysConfig) error { var err error - var data system.SysConfig - db := e.Orm.Model(&data). + db := e.Orm.Model(c). Where(c.GetId()).Updates(c) - if db.Error != nil { - e.Log.Errorf("db error:%s", err) + err = db.Error + if err != nil { + e.Log.Errorf("Service UpdateSysConfig error:%s", err) return err } if db.RowsAffected == 0 { @@ -106,10 +104,10 @@ func (e *SysConfig) RemoveSysConfig(d *dto.SysConfigById, c *system.SysConfig) e var data system.SysConfig db := e.Orm.Model(&data). - Where(d.GetId()).Delete(c) + Where(d.Ids).Delete(c) if db.Error != nil { err = db.Error - e.Log.Errorf("Delete error: %s", err) + e.Log.Errorf("Service RemoveSysConfig error:%s", err) return err } if db.RowsAffected == 0 { @@ -126,7 +124,7 @@ func (e *SysConfig) GetSysConfigByKEY(c *dto.SysConfigControl) error { data.ConfigKey = c.ConfigKey err = e.Orm.Table(data.TableName()).Where("config_key = ?", data.ConfigKey).First(c).Error if err != nil { - e.Log.Errorf("db error:%s", err) + e.Log.Errorf("Service GetSysConfigByKEY error:%s", err) return err } diff --git a/app/admin/service/sys_dict_data.go b/app/admin/service/sys_dict_data.go index 92179020..4af36da3 100644 --- a/app/admin/service/sys_dict_data.go +++ b/app/admin/service/sys_dict_data.go @@ -75,7 +75,7 @@ func (e *SysDictData) Update(c *system.SysDictData) error { db := e.Orm.Model(&data). Where(c.GetId()).Updates(c) - if db.Error != nil { + if err = db.Error; err != nil { e.Log.Errorf("db error: %s", err) return err } diff --git a/app/admin/service/sys_opera_log.go b/app/admin/service/sys_opera_log.go index 5dccf3ca..cb81586b 100644 --- a/app/admin/service/sys_opera_log.go +++ b/app/admin/service/sys_opera_log.go @@ -26,7 +26,7 @@ func (e *SysOperaLog) GetSysOperaLogPage(c *dto.SysOperaLogSearch, list *[]syste Find(list).Limit(-1).Offset(-1). Count(count).Error if err != nil { - e.Log.Errorf(" db error:%s", err) + e.Log.Errorf("Service GetSysOperaLogPage error:%s", err.Error()) return err } return nil @@ -34,19 +34,17 @@ func (e *SysOperaLog) GetSysOperaLogPage(c *dto.SysOperaLogSearch, list *[]syste // GetSysOperaLog 获取SysOperaLog对象 func (e *SysOperaLog) GetSysOperaLog(d *dto.SysOperaLogById, model *system.SysOperaLog) error { - var err error var data system.SysOperaLog - db := e.Orm.Model(&data). - First(model, d.GetId()) - err = db.Error + err := e.Orm.Model(&data). + First(model, d.GetId()).Error if err != nil && errors.Is(err, gorm.ErrRecordNotFound) { err = errors.New("查看对象不存在或无权查看") - e.Log.Errorf(" db error:%s", err) + e.Log.Errorf("Service GetSysOperaLog error:%s", err.Error()) return err } - if db.Error != nil { - e.Log.Errorf(" db error:%s", err) + if err != nil { + e.Log.Errorf("Service GetSysOperaLog error:%s", err.Error()) return err } return nil @@ -60,7 +58,7 @@ func (e *SysOperaLog) InsertSysOperaLog(model *system.SysOperaLog) error { err = e.Orm.Model(&data). Create(model).Error if err != nil { - e.Log.Errorf(" db error:%s", err) + e.Log.Errorf("Service InsertSysOperaLog error:%s", err.Error()) return err } return nil @@ -69,12 +67,11 @@ func (e *SysOperaLog) InsertSysOperaLog(model *system.SysOperaLog) error { // UpdateSysOperaLog 修改SysOperaLog对象 func (e *SysOperaLog) UpdateSysOperaLog(c *system.SysOperaLog) error { var err error - var data system.SysOperaLog - db := e.Orm.Model(&data). + db := e.Orm.Model(c). Where(c.GetId()).Updates(c) - if db.Error != nil { - e.Log.Errorf(" db error:%s", err) + if err = db.Error; err != nil { + e.Log.Errorf("Service UpdateSysOperaLog error:%s", err.Error()) return err } if db.RowsAffected == 0 { @@ -90,14 +87,12 @@ func (e *SysOperaLog) RemoveSysOperaLog(d *dto.SysOperaLogById) error { var data system.SysOperaLog db := e.Orm.Model(&data).Where(d.Ids).Delete(&data) - if db.Error != nil { - err = db.Error - e.Log.Errorf(" Delete error: %s", err) + if err = db.Error; err != nil { + e.Log.Errorf("Service RemoveSysOperaLog error:%s", err.Error()) return err } if db.RowsAffected == 0 { - err = errors.New("无权删除该数据") - return err + return errors.New("无权删除该数据") } return nil -} +} \ No newline at end of file diff --git a/app/admin/service/sys_user.go b/app/admin/service/sys_user.go index 8681a291..2962f1a6 100644 --- a/app/admin/service/sys_user.go +++ b/app/admin/service/sys_user.go @@ -41,21 +41,19 @@ func (e *SysUser) GetSysUserPage(c cDto.Index, p *actions.DataPermission, list * // GetSysUser 获取SysUser对象 func (e *SysUser) GetSysUser(d cDto.Control, p *actions.DataPermission, model *system.SysUser) error { - var err error var data system.SysUser - db := e.Orm.Model(&data). + err := e.Orm.Model(&data). Scopes( actions.Permission(data.TableName(), p), ). - First(model, d.GetId()) - err = db.Error + 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 db.Error != nil { + if err != nil { e.Log.Errorf("db error: %s", err) return err } @@ -84,8 +82,8 @@ func (e *SysUser) UpdateSysUser(c common.ActiveRecord, p *actions.DataPermission Scopes( actions.Permission(c.TableName(), p), ).Where(c.GetId()).Updates(c) - if db.Error != nil { - e.Log.Errorf("db error: %s", err) + if err = db.Error; err != nil { + e.Log.Errorf("Service UpdateSysUser error: %s", err) return err } if db.RowsAffected == 0 { @@ -104,14 +102,12 @@ func (e *SysUser) RemoveSysUser(d cDto.Control, c common.ActiveRecord, p *action Scopes( actions.Permission(data.TableName(), p), ).Where(d.GetId()).Delete(c) - if db.Error != nil { - err = db.Error + if err = db.Error; err != nil { e.Log.Errorf("Delete error: %s", err) return err } if db.RowsAffected == 0 { - err = errors.New("无权删除该数据") - return err + return errors.New("无权删除该数据") } return nil } diff --git a/app/admin/service/syschinaareadata.go b/app/admin/service/syschinaareadata.go deleted file mode 100644 index 5c7fa68c..00000000 --- a/app/admin/service/syschinaareadata.go +++ /dev/null @@ -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 -} diff --git a/app/cms/models/sys_category.go b/app/cms/models/sys_category.go new file mode 100644 index 00000000..76f3c9b8 --- /dev/null +++ b/app/cms/models/sys_category.go @@ -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 +} diff --git a/app/admin/models/syscontent.go b/app/cms/models/sys_content.go similarity index 100% rename from app/admin/models/syscontent.go rename to app/cms/models/sys_content.go diff --git a/app/cms/router/init_router.go b/app/cms/router/init_router.go new file mode 100644 index 00000000..7054bf56 --- /dev/null +++ b/app/cms/router/init_router.go @@ -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) +} \ No newline at end of file diff --git a/app/cms/router/router.go b/app/cms/router/router.go new file mode 100644 index 00000000..a99da845 --- /dev/null +++ b/app/cms/router/router.go @@ -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) + } +} \ No newline at end of file diff --git a/app/admin/router/sys_category.go b/app/cms/router/sys_category.go similarity index 94% rename from app/admin/router/sys_category.go rename to app/cms/router/sys_category.go index 65650162..7cb4280f 100644 --- a/app/admin/router/sys_category.go +++ b/app/cms/router/sys_category.go @@ -2,11 +2,11 @@ package router import ( "github.com/gin-gonic/gin" + "go-admin/app/cms/models" + "go-admin/app/cms/service/dto" "go-admin/common/middleware" jwt "github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth" - "go-admin/app/admin/models" - "go-admin/app/admin/service/dto" "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.DELETE("", actions.PermissionAction(), actions.DeleteAction(new(dto.SysCategoryById))) } -} \ No newline at end of file +} diff --git a/app/admin/router/sys_content.go b/app/cms/router/sys_content.go similarity index 94% rename from app/admin/router/sys_content.go rename to app/cms/router/sys_content.go index fe135197..82cb2eec 100644 --- a/app/admin/router/sys_content.go +++ b/app/cms/router/sys_content.go @@ -3,8 +3,8 @@ package router import ( "github.com/gin-gonic/gin" 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/app/cms/models" + "go-admin/app/cms/service/dto" "go-admin/common/actions" "go-admin/common/middleware" ) diff --git a/app/admin/service/dto/sys_category.go b/app/cms/service/dto/sys_category.go similarity index 65% rename from app/admin/service/dto/sys_category.go rename to app/cms/service/dto/sys_category.go index 88ca2585..aad12559 100644 --- a/app/admin/service/dto/sys_category.go +++ b/app/cms/service/dto/sys_category.go @@ -2,20 +2,19 @@ package dto import ( "errors" - vd "github.com/bytedance/go-tagexpr/v2/validator" "github.com/gin-gonic/gin" "github.com/go-admin-team/go-admin-core/sdk/api" + "go-admin/app/cms/models" - "go-admin/app/admin/models" "go-admin/common/dto" common "go-admin/common/models" ) type SysCategorySearch struct { dto.Pagination `search:"-"` - Name string `form:"name" search:"type:exact;column:name;table:sys_category" comment:"名称" vd:"?"` - Status string `form:"status" search:"type:exact;column:status;table:sys_category" comment:"状态" vd:"?"` - CateId int `form:"cateId" search:"type:exact;column:cate_id;table:sys_category" comment:"分类id" 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:"状态"` + CateId int `form:"cateId" search:"type:exact;column:cate_id;table:sys_category" comment:"分类id"` } func (m *SysCategorySearch) GetNeedSearch() interface{} { @@ -30,10 +29,6 @@ func (m *SysCategorySearch) Bind(ctx *gin.Context) 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 } @@ -43,12 +38,12 @@ func (m *SysCategorySearch) Generate() dto.Index { } type SysCategoryControl struct { - ID int `uri:"Id" comment:"标识"` - Name string `json:"name" comment:"名称" vd:"len($)>0 && $!=' '; msg:'invalid name: 不能是空字符串'"` - Img string `json:"img" comment:"图标" vd:"?"` - Sort int `json:"sort" comment:"排序" vd:"?"` - Status int `json:"status" comment:"状态" vd:"$>0; msg:'invalid status: 状态无效'"` - Remark string `json:"remark" comment:"备注" vd:"?"` + Id int `uri:"Id" comment:"标识"` + Name string `json:"name" comment:"名称"` + Img string `json:"img" comment:"图标"` + Sort int `json:"sort" comment:"排序"` + Status int `json:"status" comment:"状态"` + Remark string `json:"remark" comment:"备注"` } func (s *SysCategoryControl) Bind(ctx *gin.Context) error { @@ -63,10 +58,7 @@ func (s *SysCategoryControl) Bind(ctx *gin.Context) error { log.Errorf("ShouldBind error: %s", err.Error()) err = errors.New("数据绑定出错") } - if err1 := vd.Validate(s); err != nil { - log.Errorf("Validate error: %s", err1.Error()) - return err1 - } + return err } @@ -77,7 +69,7 @@ func (s *SysCategoryControl) Generate() dto.Control { func (s *SysCategoryControl) GenerateM() (common.ActiveRecord, error) { return &models.SysCategory{ - Model: common.Model{Id: s.ID}, + Model: common.Model{Id: s.Id}, Name: s.Name, Img: s.Img, Sort: s.Sort, @@ -87,11 +79,11 @@ func (s *SysCategoryControl) GenerateM() (common.ActiveRecord, error) { } func (s *SysCategoryControl) GetId() interface{} { - return s.ID + return s.Id } type SysCategoryById struct { - dto.ObjectById `vd:"?"` + dto.ObjectById } func (s *SysCategoryById) Generate() dto.Control { @@ -101,4 +93,4 @@ func (s *SysCategoryById) Generate() dto.Control { func (s *SysCategoryById) GenerateM() (common.ActiveRecord, error) { return &models.SysCategory{}, nil -} \ No newline at end of file +} diff --git a/app/admin/service/dto/sys_content.go b/app/cms/service/dto/sys_content.go similarity index 94% rename from app/admin/service/dto/sys_content.go rename to app/cms/service/dto/sys_content.go index 0a639793..43f986a1 100644 --- a/app/admin/service/dto/sys_content.go +++ b/app/cms/service/dto/sys_content.go @@ -3,8 +3,8 @@ package dto import ( "github.com/gin-gonic/gin" "github.com/go-admin-team/go-admin-core/sdk/api" + "go-admin/app/cms/models" - "go-admin/app/admin/models" "go-admin/common/dto" common "go-admin/common/models" ) @@ -34,7 +34,7 @@ func (m *SysContentSearch) Generate() dto.Index { } type SysContentControl struct { - ID int `uri:"ID" comment:""` // + Id int `uri:"Id" comment:""` // CateId int `json:"cateId" comment:""` Name string `json:"name" comment:""` Status int `json:"status" comment:""` @@ -65,7 +65,7 @@ func (s *SysContentControl) Generate() dto.Control { func (s *SysContentControl) GenerateM() (common.ActiveRecord, error) { return &models.SysContent{ - Model: common.Model{s.ID}, + Model: common.Model{s.Id}, CateId: s.CateId, Name: s.Name, Status: s.Status, @@ -77,7 +77,7 @@ func (s *SysContentControl) GenerateM() (common.ActiveRecord, error) { } func (s *SysContentControl) GetId() interface{} { - return s.ID + return s.Id } type SysContentById struct { diff --git a/app/admin/apis/sys_job/sys_job.go b/app/jobs/apis/sys_job.go similarity index 95% rename from app/admin/apis/sys_job/sys_job.go rename to app/jobs/apis/sys_job.go index 95b65b8c..6f22db3d 100644 --- a/app/admin/apis/sys_job/sys_job.go +++ b/app/jobs/apis/sys_job.go @@ -1,13 +1,14 @@ -package sys_job +package apis import ( + "go-admin/app/jobs/service" "net/http" + "go-admin/common/apis" + "go-admin/common/dto" + "github.com/gin-gonic/gin" "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 { @@ -16,6 +17,7 @@ type SysJob struct { // RemoveJobForService 调用service实现 func (e SysJob) RemoveJobForService(c *gin.Context) { + e.Context = c log := e.GetLogger() db, err := e.GetOrm() if err != nil { @@ -23,7 +25,7 @@ func (e SysJob) RemoveJobForService(c *gin.Context) { return } var v dto.GeneralDelDto - err = c.BindUri(&v) + err = c.Bind(&v) if err != nil { log.Warnf("参数验证错误, error: %s", err) e.Error(http.StatusUnprocessableEntity, err, "参数验证失败") @@ -44,7 +46,7 @@ func (e SysJob) RemoveJobForService(c *gin.Context) { // StartJobForService 启动job service实现 func (e SysJob) StartJobForService(c *gin.Context) { - e.Context = c + e.SetContext(c) log := e.GetLogger() db, err := e.GetOrm() if err != nil { diff --git a/app/jobs/jobbase.go b/app/jobs/jobbase.go index 3a212279..3e09b888 100644 --- a/app/jobs/jobbase.go +++ b/app/jobs/jobbase.go @@ -4,6 +4,7 @@ import ( "fmt" log "github.com/go-admin-team/go-admin-core/logger" "github.com/go-admin-team/go-admin-core/sdk" + models2 "go-admin/app/jobs/models" "gorm.io/gorm" "sync" "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/cronjob" - "go-admin/app/admin/models" ) 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) { crontab := sdk.Runtime.GetCrontabKey(key) - sysJob := models.SysJob{} - jobList := make([]models.SysJob, 0) + sysJob := models2.SysJob{} + jobList := make([]models2.SysJob, 0) err := sysJob.GetList(db, &jobList) if err != nil { fmt.Println(time.Now().Format(timeFormat), " [ERROR] JobCore init error", err) diff --git a/app/admin/models/sysjob.go b/app/jobs/models/sys_job.go similarity index 56% rename from app/admin/models/sysjob.go rename to app/jobs/models/sys_job.go index bc88025a..5a62f9d0 100644 --- a/app/admin/models/sysjob.go +++ b/app/jobs/models/sys_job.go @@ -44,32 +44,6 @@ func (e *SysJob) SetUpdateBy(updateBy int) { 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) { 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 } - -//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 -//} diff --git a/app/jobs/router/int_router.go b/app/jobs/router/int_router.go new file mode 100644 index 00000000..7054bf56 --- /dev/null +++ b/app/jobs/router/int_router.go @@ -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) +} \ No newline at end of file diff --git a/app/jobs/router/router.go b/app/jobs/router/router.go new file mode 100644 index 00000000..a99da845 --- /dev/null +++ b/app/jobs/router/router.go @@ -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) + } +} \ No newline at end of file diff --git a/app/admin/router/sys_job.go b/app/jobs/router/sys_job.go similarity index 67% rename from app/admin/router/sys_job.go rename to app/jobs/router/sys_job.go index b9898040..1cab08f7 100644 --- a/app/admin/router/sys_job.go +++ b/app/jobs/router/sys_job.go @@ -3,9 +3,9 @@ package router import ( "github.com/gin-gonic/gin" jwt "github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth" - "go-admin/app/admin/apis/sys_job" - "go-admin/app/admin/models" - "go-admin/app/admin/service/dto" + "go-admin/app/jobs/apis" + models2 "go-admin/app/jobs/models" + dto2 "go-admin/app/jobs/service/dto" "go-admin/common/actions" "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()) { - sysJob := &models.SysJob{} - r.GET("", actions.PermissionAction(), actions.IndexAction(sysJob, new(dto.SysJobSearch), func() interface{} { - list := make([]models.SysJob, 0) + sysJob := &models2.SysJob{} + r.GET("", actions.PermissionAction(), actions.IndexAction(sysJob, new(dto2.SysJobSearch), func() interface{} { + list := make([]models2.SysJob, 0) return &list })) - r.GET("/:id", actions.PermissionAction(), actions.ViewAction(new(dto.SysJobById), func() interface{} { - return &dto.SysJobItem{} + r.GET("/:id", actions.PermissionAction(), actions.ViewAction(new(dto2.SysJobById), func() interface{} { + return &dto2.SysJobItem{} })) - r.POST("", actions.CreateAction(new(dto.SysJobControl))) - r.PUT("", actions.PermissionAction(), actions.UpdateAction(new(dto.SysJobControl))) - r.DELETE("", actions.PermissionAction(), actions.DeleteAction(new(dto.SysJobById))) + r.POST("", actions.CreateAction(new(dto2.SysJobControl))) + r.PUT("", actions.PermissionAction(), actions.UpdateAction(new(dto2.SysJobControl))) + 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/start/:id", sysJob.StartJobForService) diff --git a/app/admin/service/dto/sys_job.go b/app/jobs/service/dto/sys_job.go similarity index 99% rename from app/admin/service/dto/sys_job.go rename to app/jobs/service/dto/sys_job.go index 6953cab8..c66bcbdf 100644 --- a/app/admin/service/dto/sys_job.go +++ b/app/jobs/service/dto/sys_job.go @@ -3,8 +3,8 @@ package dto import ( "github.com/gin-gonic/gin" "github.com/go-admin-team/go-admin-core/sdk/api" + "go-admin/app/jobs/models" - "go-admin/app/admin/models" "go-admin/common/dto" common "go-admin/common/models" ) diff --git a/app/admin/service/sys_job.go b/app/jobs/service/sys_job.go similarity index 98% rename from app/admin/service/sys_job.go rename to app/jobs/service/sys_job.go index dde262d7..3722636b 100644 --- a/app/admin/service/sys_job.go +++ b/app/jobs/service/sys_job.go @@ -2,9 +2,9 @@ package service import ( "github.com/robfig/cron/v3" + "go-admin/app/jobs/models" "time" - "go-admin/app/admin/models" "go-admin/app/jobs" "go-admin/common/dto" "go-admin/common/service" diff --git a/app/admin/apis/public/file.go b/app/other/apis/file.go similarity index 94% rename from app/admin/apis/public/file.go rename to app/other/apis/file.go index 42a4aca7..76e40e26 100644 --- a/app/admin/apis/public/file.go +++ b/app/other/apis/file.go @@ -1,4 +1,4 @@ -package public +package apis import ( "encoding/base64" @@ -30,6 +30,7 @@ type File struct { apis.Api } +// UploadFile 上传图片 // @Summary 上传图片 // @Description 获取JSON // @Tags 公共接口 @@ -40,31 +41,29 @@ type File struct { // @Success 200 {string} string "{"code": -1, "message": "添加失败"}" // @Router /api/v1/public/uploadFile [post] func (e File) UploadFile(c *gin.Context) { - e.Context = c - + e.SetContext(c) tag, _ := c.GetPostForm("type") - urlPerfix := fmt.Sprintf("http://%s/", c.Request.Host) + urlPrefix := fmt.Sprintf("http://%s/", c.Request.Host) var fileResponse FileResponse if tag == "" { e.Error(500, nil, "缺少标识") - //app.Error(c, 200, errors.New(""), "缺少标识") return } else { switch tag { case "1": // 单图 var done bool - fileResponse, done = e.singleFile(c, fileResponse, urlPerfix) + fileResponse, done = e.singleFile(c, fileResponse, urlPrefix) if done { return } e.OK(fileResponse, "上传成功") return case "2": // 多图 - multipartFile := e.multipleFile(c, urlPerfix) + multipartFile := e.multipleFile(c, urlPrefix) e.OK(multipartFile, "上传成功") return case "3": // base64 - fileResponse = e.baseImg(c, fileResponse, urlPerfix) + fileResponse = e.baseImg(c, fileResponse, urlPrefix) e.OK(fileResponse, "上传成功") } } diff --git a/app/admin/apis/monitor/server.go b/app/other/apis/server.go similarity index 97% rename from app/admin/apis/monitor/server.go rename to app/other/apis/server.go index 9e5b2329..0b2c4ee9 100644 --- a/app/admin/apis/monitor/server.go +++ b/app/other/apis/server.go @@ -1,4 +1,4 @@ -package monitor +package apis import ( "runtime" @@ -24,6 +24,7 @@ type Monitor struct { apis.Api } +// ServerInfo 获取系统信息 // @Summary 系统信息 // @Description 获取JSON // @Tags 系统信息 diff --git a/app/admin/apis/sys_china_area_data/sys_china_area_data.go b/app/other/apis/sys_china_area_data.go similarity index 82% rename from app/admin/apis/sys_china_area_data/sys_china_area_data.go rename to app/other/apis/sys_china_area_data.go index 80599aa4..eb56e619 100644 --- a/app/admin/apis/sys_china_area_data/sys_china_area_data.go +++ b/app/other/apis/sys_china_area_data.go @@ -1,14 +1,14 @@ -package sys_china_area_data +package apis import ( + models2 "go-admin/app/other/models" + service2 "go-admin/app/other/service" + dto2 "go-admin/app/other/service/dto" "net/http" "github.com/gin-gonic/gin" "github.com/go-admin-team/go-admin-core/sdk/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/apis" ) @@ -18,9 +18,9 @@ type SysChinaAreaData struct { } func (e SysChinaAreaData) GetSysChinaAreaDataList(c *gin.Context) { - e.Context = c + e.SetContext(c) log := e.GetLogger() - d := new(dto.SysChinaAreaDataSearch) + d := new(dto2.SysChinaAreaDataSearch) db, err := e.GetOrm() if err != nil { log.Error(err) @@ -37,9 +37,9 @@ func (e SysChinaAreaData) GetSysChinaAreaDataList(c *gin.Context) { //数据权限检查 p := actions.GetPermissionFromContext(c) - list := make([]models.SysChinaAreaData, 0) + list := make([]models2.SysChinaAreaData, 0) var count int64 - serviceStudent := service.SysChinaAreaData{} + serviceStudent := service2.SysChinaAreaData{} serviceStudent.Log = log serviceStudent.Orm = db 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) { - e.Context = c + e.SetContext(c) log := e.GetLogger() - control := new(dto.SysChinaAreaDataById) + control := new(dto2.SysChinaAreaDataById) db, err := e.GetOrm() if err != nil { log.Error(err) @@ -67,12 +67,12 @@ func (e SysChinaAreaData) GetSysChinaAreaData(c *gin.Context) { e.Error(http.StatusUnprocessableEntity, err, "参数验证失败") return } - var object models.SysChinaAreaData + var object models2.SysChinaAreaData //数据权限检查 p := actions.GetPermissionFromContext(c) - serviceSysChinaAreaData := service.SysChinaAreaData{} + serviceSysChinaAreaData := service2.SysChinaAreaData{} serviceSysChinaAreaData.Log = log serviceSysChinaAreaData.Orm = db err = serviceSysChinaAreaData.GetSysChinaAreaData(control, p, &object) @@ -85,9 +85,9 @@ func (e SysChinaAreaData) GetSysChinaAreaData(c *gin.Context) { } func (e SysChinaAreaData) InsertSysChinaAreaData(c *gin.Context) { - e.Context = c + e.SetContext(c) log := e.GetLogger() - control := new(dto.SysChinaAreaDataControl) + control := new(dto2.SysChinaAreaDataControl) db, err := e.GetOrm() if err != nil { log.Error(err) @@ -108,7 +108,7 @@ func (e SysChinaAreaData) InsertSysChinaAreaData(c *gin.Context) { // 设置创建人 object.SetCreateBy(user.GetUserId(c)) - serviceSysChinaAreaData := service.SysChinaAreaData{} + serviceSysChinaAreaData := service2.SysChinaAreaData{} serviceSysChinaAreaData.Orm = db serviceSysChinaAreaData.Log = log err = serviceSysChinaAreaData.InsertSysChinaAreaData(object) @@ -122,9 +122,9 @@ func (e SysChinaAreaData) InsertSysChinaAreaData(c *gin.Context) { } func (e SysChinaAreaData) UpdateSysChinaAreaData(c *gin.Context) { - e.Context = c + e.SetContext(c) log := e.GetLogger() - control := new(dto.SysChinaAreaDataControl) + control := new(dto2.SysChinaAreaDataControl) db, err := e.GetOrm() if err != nil { log.Error(err) @@ -147,7 +147,7 @@ func (e SysChinaAreaData) UpdateSysChinaAreaData(c *gin.Context) { //数据权限检查 p := actions.GetPermissionFromContext(c) - serviceSysChinaAreaData := service.SysChinaAreaData{} + serviceSysChinaAreaData := service2.SysChinaAreaData{} serviceSysChinaAreaData.Orm = db serviceSysChinaAreaData.Log = log err = serviceSysChinaAreaData.UpdateSysChinaAreaData(object, p) @@ -159,9 +159,9 @@ func (e SysChinaAreaData) UpdateSysChinaAreaData(c *gin.Context) { } func (e SysChinaAreaData) DeleteSysChinaAreaData(c *gin.Context) { - e.Context = c + e.SetContext(c) log := e.GetLogger() - control := new(dto.SysChinaAreaDataById) + control := new(dto2.SysChinaAreaDataById) db, err := e.GetOrm() if err != nil { log.Error(err) @@ -182,7 +182,7 @@ func (e SysChinaAreaData) DeleteSysChinaAreaData(c *gin.Context) { // 数据权限检查 p := actions.GetPermissionFromContext(c) - serviceSysChinaAreaData := service.SysChinaAreaData{} + serviceSysChinaAreaData := service2.SysChinaAreaData{} serviceSysChinaAreaData.Orm = db serviceSysChinaAreaData.Log = log err = serviceSysChinaAreaData.RemoveSysChinaAreaData(control, p) @@ -192,4 +192,4 @@ func (e SysChinaAreaData) DeleteSysChinaAreaData(c *gin.Context) { return } e.OK(control.GetId(), "删除成功") -} +} \ No newline at end of file diff --git a/app/admin/apis/sys_file/sys_file_dir.go b/app/other/apis/sys_file_dir.go similarity index 95% rename from app/admin/apis/sys_file/sys_file_dir.go rename to app/other/apis/sys_file_dir.go index d275638c..3d1a38db 100644 --- a/app/admin/apis/sys_file/sys_file_dir.go +++ b/app/other/apis/sys_file_dir.go @@ -1,4 +1,4 @@ -package sys_file +package apis import ( "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/jwtauth/user" - "go-admin/app/admin/models" - "go-admin/app/admin/service" - "go-admin/app/admin/service/dto" + "go-admin/app/other/models" + "go-admin/app/other/service" + "go-admin/app/other/service/dto" "go-admin/common/actions" "go-admin/common/apis" ) @@ -33,7 +33,7 @@ func (e SysFileDir) GetSysFileDirList(c *gin.Context) { log.Debugf("ShouldBind error: %s", err.Error()) } - var list *[]models.SysFileDirL + var list *[]models.SysFileDir serviceStudent := service.SysFileDir{} serviceStudent.Log = log serviceStudent.Orm = db @@ -115,7 +115,7 @@ func (e SysFileDir) InsertSysFileDir(c *gin.Context) { return } - e.OK(control.ID, "创建成功") + e.OK(control.Id, "创建成功") } func (e SysFileDir) UpdateSysFileDir(c *gin.Context) { @@ -153,7 +153,7 @@ func (e SysFileDir) UpdateSysFileDir(c *gin.Context) { e.Error(http.StatusInternalServerError, err, "更新失败") return } - e.OK(control.ID, "更新成功") + e.OK(control.Id, "更新成功") } func (e SysFileDir) DeleteSysFileDir(c *gin.Context) { diff --git a/app/admin/apis/sys_file/sys_file_info.go b/app/other/apis/sys_file_info.go similarity index 86% rename from app/admin/apis/sys_file/sys_file_info.go rename to app/other/apis/sys_file_info.go index 637743bf..95537a0c 100644 --- a/app/admin/apis/sys_file/sys_file_info.go +++ b/app/other/apis/sys_file_info.go @@ -1,14 +1,14 @@ -package sys_file +package apis import ( + models2 "go-admin/app/other/models" + service2 "go-admin/app/other/service" + dto2 "go-admin/app/other/service/dto" "net/http" "github.com/gin-gonic/gin" "github.com/go-admin-team/go-admin-core/sdk/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/apis" ) @@ -20,7 +20,7 @@ type SysFileInfo struct { func (e SysFileInfo) GetSysFileInfoList(c *gin.Context) { e.Context = c log := e.GetLogger() - search := new(dto.SysFileInfoSearch) + search := new(dto2.SysFileInfoSearch) db, err := e.GetOrm() if err != nil { log.Error(err) @@ -36,9 +36,9 @@ func (e SysFileInfo) GetSysFileInfoList(c *gin.Context) { //数据权限检查 p := actions.GetPermissionFromContext(c) - list := make([]models.SysFileInfo, 0) + list := make([]models2.SysFileInfo, 0) var count int64 - serviceStudent := service.SysFileInfo{} + serviceStudent := service2.SysFileInfo{} serviceStudent.Log = log serviceStudent.Orm = db 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) { - control := new(dto.SysFileInfoById) + control := new(dto2.SysFileInfoById) e.Context = c log := e.GetLogger() db, err := e.GetOrm() @@ -69,12 +69,12 @@ func (e SysFileInfo) GetSysFileInfo(c *gin.Context) { return } - var object models.SysFileInfo + var object models2.SysFileInfo //数据权限检查 p := actions.GetPermissionFromContext(c) - serviceSysFileInfo := service.SysFileInfo{} + serviceSysFileInfo := service2.SysFileInfo{} serviceSysFileInfo.Log = log serviceSysFileInfo.Orm = db err = serviceSysFileInfo.GetSysFileInfo(control, p, &object) @@ -88,7 +88,7 @@ func (e SysFileInfo) GetSysFileInfo(c *gin.Context) { } func (e SysFileInfo) InsertSysFileInfo(c *gin.Context) { - control := new(dto.SysFileInfoControl) + control := new(dto2.SysFileInfoControl) e.Context = c log := e.GetLogger() db, err := e.GetOrm() @@ -113,7 +113,7 @@ func (e SysFileInfo) InsertSysFileInfo(c *gin.Context) { // 设置创建人 control.CreateBy = user.GetUserId(c) - serviceSysFileInfo := service.SysFileInfo{} + serviceSysFileInfo := service2.SysFileInfo{} serviceSysFileInfo.Orm = db serviceSysFileInfo.Log = log err = serviceSysFileInfo.InsertSysFileInfo(control) @@ -123,11 +123,11 @@ func (e SysFileInfo) InsertSysFileInfo(c *gin.Context) { return } - e.OK(control.ID, "创建成功") + e.OK(control.Id, "创建成功") } func (e SysFileInfo) UpdateSysFileInfo(c *gin.Context) { - control := new(dto.SysFileInfoControl) + control := new(dto2.SysFileInfoControl) e.Context = c log := e.GetLogger() db, err := e.GetOrm() @@ -154,7 +154,7 @@ func (e SysFileInfo) UpdateSysFileInfo(c *gin.Context) { //数据权限检查 p := actions.GetPermissionFromContext(c) - serviceSysFileInfo := service.SysFileInfo{} + serviceSysFileInfo := service2.SysFileInfo{} serviceSysFileInfo.Orm = db serviceSysFileInfo.Log = log err = serviceSysFileInfo.UpdateSysFileInfo(control, p) @@ -163,11 +163,11 @@ func (e SysFileInfo) UpdateSysFileInfo(c *gin.Context) { e.Error(http.StatusInternalServerError, err, "创建失败") return } - e.OK(control.ID, "更新成功") + e.OK(control.Id, "更新成功") } func (e SysFileInfo) DeleteSysFileInfo(c *gin.Context) { - control := new(dto.SysFileInfoById) + control := new(dto2.SysFileInfoById) e.Context = c log := e.GetLogger() db, err := e.GetOrm() @@ -196,7 +196,7 @@ func (e SysFileInfo) DeleteSysFileInfo(c *gin.Context) { // 数据权限检查 p := actions.GetPermissionFromContext(c) - serviceSysFileInfo := service.SysFileInfo{} + serviceSysFileInfo := service2.SysFileInfo{} serviceSysFileInfo.Orm = db serviceSysFileInfo.Log = log err = serviceSysFileInfo.RemoveSysFileInfo(control, p) diff --git a/app/admin/models/syschinaareadata.go b/app/other/models/sys_china_area_data.go similarity index 70% rename from app/admin/models/syschinaareadata.go rename to app/other/models/sys_china_area_data.go index 019b041f..e9bf7658 100644 --- a/app/admin/models/syschinaareadata.go +++ b/app/other/models/sys_china_area_data.go @@ -6,9 +6,8 @@ import ( type SysChinaAreaData struct { models.Model - - PId string `json:"pId" gorm:"type:int(11);comment:上级编码"` - Name string `json:"name" gorm:"type:varchar(128);comment:名称"` + PId string `json:"p_id" gorm:"size:11;comment:上级编码"` + Name string `json:"name" gorm:"size:128;comment:名称"` models.ControlBy models.ModelTime } diff --git a/app/admin/models/sys_file_dir.go b/app/other/models/sys_file_dir.go similarity index 53% rename from app/admin/models/sys_file_dir.go rename to app/other/models/sys_file_dir.go index 246b14c7..b8ea46ee 100644 --- a/app/admin/models/sys_file_dir.go +++ b/app/other/models/sys_file_dir.go @@ -7,7 +7,7 @@ import ( type SysFileDir struct { models.Model 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:排序"` // 排序 Path string `json:"path" gorm:"type:varchar(255);comment:路径"` // 路径 Children []SysFileDir `json:"children,omitempty" gorm:"-"` // 下级信息 @@ -15,16 +15,16 @@ type SysFileDir struct { models.ModelTime } -type SysFileDirL struct { - models.Model - Label string `json:"label" gorm:"type:varchar(255);comment:目录名称"` // 目录名称 - PId int `json:"pId" gorm:"type:int(11);comment:上级目录"` // 上级目录 - Sort string `json:"sort" gorm:"type:bigint(20);comment:排序"` // 排序 - Path string `json:"path" gorm:"type:varchar(255);comment:路径"` // 路径 - models.ControlBy - models.ModelTime - Children []SysFileDirL `json:"children,omitempty" gorm:"-"` // 下级信息 -} +//type SysFileDirL struct { +// models.Model +// Label string `json:"label" gorm:"type:varchar(255);comment:目录名称"` // 目录名称 +// PId int `json:"pId" gorm:"type:int(11);comment:上级目录"` // 上级目录 +// Sort string `json:"sort" gorm:"type:bigint(20);comment:排序"` // 排序 +// Path string `json:"path" gorm:"type:varchar(255);comment:路径"` // 路径 +// models.ControlBy +// models.ModelTime +// Children []SysFileDirL `json:"children,omitempty" gorm:"-"` // 下级信息 +//} func (SysFileDir) TableName() string { /**/ return "sys_file_dir" diff --git a/app/other/models/sys_file_info.go b/app/other/models/sys_file_info.go new file mode 100644 index 00000000..be9ed7a1 --- /dev/null +++ b/app/other/models/sys_file_info.go @@ -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 +} diff --git a/app/other/router/init_router.go b/app/other/router/init_router.go new file mode 100644 index 00000000..7054bf56 --- /dev/null +++ b/app/other/router/init_router.go @@ -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) +} \ No newline at end of file diff --git a/app/admin/router/monitor.go b/app/other/router/monitor.go similarity index 88% rename from app/admin/router/monitor.go rename to app/other/router/monitor.go index b6cf2fab..f3c6c788 100644 --- a/app/admin/router/monitor.go +++ b/app/other/router/monitor.go @@ -20,10 +20,14 @@ func Monitor() { switch h.(type) { case *gin.Engine: r = h.(*gin.Engine) + //开发环境启动监控指标 + setHandle(r) default: log.Fatal("not support other engine") } - //开发环境启动监控指标 +} + +func setHandle(r *gin.Engine) { r.GET("/metrics", transfer.Handler(promhttp.Handler())) //健康检查 r.GET("/health", func(c *gin.Context) { diff --git a/app/other/router/router.go b/app/other/router/router.go new file mode 100644 index 00000000..a99da845 --- /dev/null +++ b/app/other/router/router.go @@ -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) + } +} \ No newline at end of file diff --git a/app/admin/router/syschinaareadata.go b/app/other/router/sys_china_area_data.go similarity index 77% rename from app/admin/router/syschinaareadata.go rename to app/other/router/sys_china_area_data.go index 0dca1098..3a23d25c 100644 --- a/app/admin/router/syschinaareadata.go +++ b/app/other/router/sys_china_area_data.go @@ -3,8 +3,8 @@ package router import ( "github.com/gin-gonic/gin" jwt "github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth" - "go-admin/app/admin/apis/sys_china_area_data" - middleware2 "go-admin/common/middleware" + "go-admin/app/other/apis" + "go-admin/common/middleware" ) func init() { @@ -13,8 +13,8 @@ func init() { // 需认证的路由代码 func registerSysChinaAreaDataRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) { - api := sys_china_area_data.SysChinaAreaData{} - r := v1.Group("/sys_china_area_data").Use(authMiddleware.MiddlewareFunc()).Use(middleware2.AuthCheckRole()) + api := apis.SysChinaAreaData{} + r := v1.Group("/sys_china_area_data").Use(authMiddleware.MiddlewareFunc()).Use(middleware.AuthCheckRole()) { r.GET("", api.GetSysChinaAreaDataList) r.GET("/:id", api.GetSysChinaAreaData) diff --git a/app/admin/router/sys_file_dir.go b/app/other/router/sys_file_dir.go similarity index 76% rename from app/admin/router/sys_file_dir.go rename to app/other/router/sys_file_dir.go index aeef2c7d..156175cb 100644 --- a/app/admin/router/sys_file_dir.go +++ b/app/other/router/sys_file_dir.go @@ -3,7 +3,7 @@ package router import ( "github.com/gin-gonic/gin" 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" ) @@ -13,8 +13,8 @@ func init() { // 需认证的路由代码 func registerSysFileDirRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) { - api := sys_file.SysFileDir{} - r := v1.Group("/sysfiledir").Use(authMiddleware.MiddlewareFunc()).Use(middleware.AuthCheckRole()) + api := apis.SysFileDir{} + r := v1.Group("/file-dir").Use(authMiddleware.MiddlewareFunc()).Use(middleware.AuthCheckRole()) { r.GET("", api.GetSysFileDirList) r.GET("/:id", api.GetSysFileDir) @@ -22,4 +22,4 @@ func registerSysFileDirRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMid r.PUT("/:id", api.UpdateSysFileDir) r.DELETE("/:id", api.DeleteSysFileDir) } -} \ No newline at end of file +} diff --git a/app/admin/router/sys_file_info.go b/app/other/router/sys_file_info.go similarity index 76% rename from app/admin/router/sys_file_info.go rename to app/other/router/sys_file_info.go index 3c014357..09c0f62a 100644 --- a/app/admin/router/sys_file_info.go +++ b/app/other/router/sys_file_info.go @@ -3,7 +3,7 @@ package router import ( "github.com/gin-gonic/gin" 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" ) @@ -13,8 +13,8 @@ func init() { // 需认证的路由代码 func registerSysFileInfoRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) { - api := sys_file.SysFileInfo{} - r := v1.Group("/sysfileinfo").Use(authMiddleware.MiddlewareFunc()).Use(middleware.AuthCheckRole()) + api := apis.SysFileInfo{} + r := v1.Group("/file-info").Use(authMiddleware.MiddlewareFunc()).Use(middleware.AuthCheckRole()) { r.GET("", api.GetSysFileInfoList) r.GET("/:id", api.GetSysFileInfo) @@ -22,4 +22,4 @@ func registerSysFileInfoRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMi r.PUT("/:id", api.UpdateSysFileInfo) r.DELETE("/:id", api.DeleteSysFileInfo) } -} \ No newline at end of file +} diff --git a/app/admin/service/dto/syschinaareadata.go b/app/other/service/dto/sys_china_area_data.go similarity index 93% rename from app/admin/service/dto/syschinaareadata.go rename to app/other/service/dto/sys_china_area_data.go index 773571e8..63ab10ba 100644 --- a/app/admin/service/dto/syschinaareadata.go +++ b/app/other/service/dto/sys_china_area_data.go @@ -1,12 +1,12 @@ package dto import ( + models2 "go-admin/app/other/models" "time" "github.com/gin-gonic/gin" "github.com/go-admin-team/go-admin-core/sdk/api" - "go-admin/app/admin/models" "go-admin/common/dto" common "go-admin/common/models" ) @@ -53,9 +53,8 @@ func (s *SysChinaAreaDataControl) Bind(ctx *gin.Context) error { return err } -func (s *SysChinaAreaDataControl) Generate() (*models.SysChinaAreaData, error) { - return &models.SysChinaAreaData{ - +func (s *SysChinaAreaDataControl) Generate() (*models2.SysChinaAreaData, error) { + return &models2.SysChinaAreaData{ Model: common.Model{Id: s.Id}, PId: s.PId, Name: s.Name, diff --git a/app/admin/service/dto/sys_file_dir.go b/app/other/service/dto/sys_file_dir.go similarity index 94% rename from app/admin/service/dto/sys_file_dir.go rename to app/other/service/dto/sys_file_dir.go index 834258cf..dab253ba 100644 --- a/app/admin/service/dto/sys_file_dir.go +++ b/app/other/service/dto/sys_file_dir.go @@ -3,8 +3,8 @@ package dto import ( "github.com/gin-gonic/gin" "github.com/go-admin-team/go-admin-core/sdk/api" + "go-admin/app/other/models" - "go-admin/app/admin/models" "go-admin/common/dto" common "go-admin/common/models" ) @@ -38,7 +38,7 @@ func (m *SysFileDirSearch) Generate() dto.Index { } type SysFileDirControl struct { - ID int `uri:"Id" comment:"标识"` // 标识 + Id int `uri:"Id" comment:"标识"` // 标识 Label string `json:"label" comment:"目录名称"` PId int `json:"pId" comment:"上级目录"` Sort string `json:"sort" comment:"排序"` @@ -68,7 +68,7 @@ func (s *SysFileDirControl) Generate() dto.Control { func (s *SysFileDirControl) GenerateM() (common.ActiveRecord, error) { return &models.SysFileDir{ - Model: common.Model{Id: s.ID}, + Model: common.Model{Id: s.Id}, Label: s.Label, PId: s.PId, //Sort: s.Sort, @@ -81,7 +81,7 @@ func (s *SysFileDirControl) GenerateM() (common.ActiveRecord, error) { } func (s *SysFileDirControl) GetId() interface{} { - return s.ID + return s.Id } type SysFileDirById struct { diff --git a/app/admin/service/dto/sys_file_info.go b/app/other/service/dto/sys_file_info.go similarity index 92% rename from app/admin/service/dto/sys_file_info.go rename to app/other/service/dto/sys_file_info.go index ba6e4bdc..955555a9 100644 --- a/app/admin/service/dto/sys_file_info.go +++ b/app/other/service/dto/sys_file_info.go @@ -1,7 +1,7 @@ package dto import ( - "go-admin/app/admin/models" + "go-admin/app/other/models" "go-admin/common/dto" common "go-admin/common/models" ) @@ -20,7 +20,7 @@ func (m *SysFileInfoSearch) GetNeedSearch() interface{} { } type SysFileInfoControl struct { - ID int `uri:"id" comment:"标识"` // 标识 + Id int `uri:"id" comment:"标识"` // 标识 Type string `json:"type" comment:"类型"` Name string `json:"name" comment:"名称"` Size string `json:"size" comment:"大小"` @@ -34,7 +34,7 @@ type SysFileInfoControl struct { func (s *SysFileInfoControl) Generate() (*models.SysFileInfo, error) { return &models.SysFileInfo{ - Model: common.Model{Id: s.ID}, + Model: common.Model{Id: s.Id}, Type: s.Type, Name: s.Name, Size: s.Size, diff --git a/app/other/service/sys_china_area_data.go b/app/other/service/sys_china_area_data.go new file mode 100644 index 00000000..c2a4ec49 --- /dev/null +++ b/app/other/service/sys_china_area_data.go @@ -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 +} \ No newline at end of file diff --git a/app/admin/service/sys_file_dir.go b/app/other/service/sys_file_dir.go similarity index 86% rename from app/admin/service/sys_file_dir.go rename to app/other/service/sys_file_dir.go index 541eec50..422252f9 100644 --- a/app/admin/service/sys_file_dir.go +++ b/app/other/service/sys_file_dir.go @@ -3,11 +3,11 @@ package service import ( "errors" "fmt" + "go-admin/app/other/models" + "go-admin/app/other/service/dto" "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" @@ -18,7 +18,7 @@ type SysFileDir struct { } // 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 data models.SysFileDir @@ -65,7 +65,7 @@ func (e *SysFileDir) InsertSysFileDir(model *dto.SysFileDirControl) error { e.Log.Errorf("db error: %s", err) return err } - path := fmt.Sprintf("/%d", model.ID) + path := fmt.Sprintf("/%d", model.Id) //db = e.Orm.Model(&data). // First(&data, model.GetId()) //err = db.Error @@ -79,7 +79,7 @@ func (e *SysFileDir) InsertSysFileDir(model *dto.SysFileDirControl) error { } //var mp = map[string]string{} //mp["path"] = path - if err = e.Orm.Model(&models.SysFileDir{}).Where("id = ?", model.ID).Update("path", path).Error; err != nil { + if err = e.Orm.Model(&models.SysFileDir{}).Where("id = ?", model.Id).Update("path", path).Error; err != nil { return err } @@ -94,7 +94,7 @@ func (e *SysFileDir) UpdateSysFileDir(c *dto.SysFileDirControl, p *actions.DataP db := e.Orm. Scopes( actions.Permission(data.TableName(), p), - ).Where(c.ID).Updates(data) + ).Where(c.Id).Updates(data) if db.Error != nil { e.Log.Errorf("db error: %s", err) return err @@ -126,10 +126,10 @@ func (e *SysFileDir) RemoveSysFileDir(d *dto.SysFileDirById, p *actions.DataPerm return nil } -func (e *SysFileDir) SetSysFileDir(c *dto.SysFileDirSearch) (*[]models.SysFileDirL, error) { - var list []models.SysFileDirL +func (e *SysFileDir) SetSysFileDir(c *dto.SysFileDirSearch) (*[]models.SysFileDir, error) { + var list []models.SysFileDir err := e.GetSysFileDirPage(c, &list) - m := make([]models.SysFileDirL, 0) + m := make([]models.SysFileDir, 0) for i := 0; i < len(list); i++ { if list[i].PId != 0 { continue @@ -140,21 +140,21 @@ func (e *SysFileDir) SetSysFileDir(c *dto.SysFileDirSearch) (*[]models.SysFileDi 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 - min := make([]models.SysFileDirL, 0) + min := make([]models.SysFileDir, 0) for j := 0; j < len(listGroup); j++ { if m.Id != listGroup[j].PId { continue } - mi := models.SysFileDirL{} + mi := models.SysFileDir{} mi.Id = listGroup[j].Id mi.PId = listGroup[j].PId mi.Label = listGroup[j].Label //mi.Sort = listGroup[j].Sort mi.CreatedAt = listGroup[j].CreatedAt mi.UpdatedAt = listGroup[j].UpdatedAt - mi.Children = []models.SysFileDirL{} + mi.Children = []models.SysFileDir{} ms := SysFileDirCall(list, mi) min = append(min, ms) } diff --git a/app/admin/service/sys_file_info.go b/app/other/service/sys_file_info.go similarity index 71% rename from app/admin/service/sys_file_info.go rename to app/other/service/sys_file_info.go index d72db34c..de840abd 100644 --- a/app/admin/service/sys_file_info.go +++ b/app/other/service/sys_file_info.go @@ -2,11 +2,11 @@ package service import ( "errors" + models2 "go-admin/app/other/models" + dto2 "go-admin/app/other/service/dto" "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" @@ -17,9 +17,9 @@ type SysFileInfo struct { } // 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 data models.SysFileInfo + var data models2.SysFileInfo err = e.Orm.Model(&data). Scopes( @@ -37,9 +37,9 @@ func (e *SysFileInfo) GetSysFileInfoPage(c *dto.SysFileInfoSearch, p *actions.Da } // 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 data models.SysFileInfo + var data models2.SysFileInfo db := e.Orm.Model(&data). Scopes( @@ -60,9 +60,9 @@ func (e *SysFileInfo) GetSysFileInfo(d *dto.SysFileInfoById, p *actions.DataPerm } // InsertSysFileInfo 创建SysFileInfo对象 -func (e *SysFileInfo) InsertSysFileInfo(model *dto.SysFileInfoControl) error { +func (e *SysFileInfo) InsertSysFileInfo(model *dto2.SysFileInfoControl) error { var err error - var data *models.SysFileInfo + var data *models2.SysFileInfo data, err = model.Generate() if err != nil { @@ -80,9 +80,9 @@ func (e *SysFileInfo) InsertSysFileInfo(model *dto.SysFileInfoControl) error { } // 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 data *models.SysFileInfo + var data *models2.SysFileInfo data, err = c.Generate() if err != nil { @@ -92,7 +92,7 @@ func (e *SysFileInfo) UpdateSysFileInfo(c *dto.SysFileInfoControl, p *actions.Da err = e.Orm.Debug().Model(&data). Scopes( actions.Permission(data.TableName(), p), - ).Where("id = ?", c.ID).Updates(&data).Error + ).Where("id = ?", c.Id).Updates(&data).Error if err != nil { e.Log.Errorf("db error: %s", err) return err @@ -105,9 +105,9 @@ func (e *SysFileInfo) UpdateSysFileInfo(c *dto.SysFileInfoControl, p *actions.Da } // 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 data models.SysFileInfo + var data models2.SysFileInfo db := e.Orm.Model(&data). Scopes( diff --git a/cmd/api/cms.go b/cmd/api/cms.go new file mode 100644 index 00000000..563565c6 --- /dev/null +++ b/cmd/api/cms.go @@ -0,0 +1,8 @@ +package api + +import "go-admin/app/cms/router" + +func init() { + //注册路由 fixme 其他应用的路由,在本目录新建文件放在init方法 + AppRouters = append(AppRouters, router.InitRouter) +} \ No newline at end of file diff --git a/cmd/api/jobs.go b/cmd/api/jobs.go new file mode 100644 index 00000000..37de4ee5 --- /dev/null +++ b/cmd/api/jobs.go @@ -0,0 +1,8 @@ +package api + +import "go-admin/app/jobs/router" + +func init() { + //注册路由 fixme 其他应用的路由,在本目录新建文件放在init方法 + AppRouters = append(AppRouters, router.InitRouter) +} \ No newline at end of file diff --git a/cmd/api/other.go b/cmd/api/other.go new file mode 100644 index 00000000..f9c990f5 --- /dev/null +++ b/cmd/api/other.go @@ -0,0 +1,8 @@ +package api + +import "go-admin/app/other/router" + +func init() { + //注册路由 fixme 其他应用的路由,在本目录新建文件放在init方法 + AppRouters = append(AppRouters, router.InitRouter) +} \ No newline at end of file diff --git a/cmd/api/server.go b/cmd/api/server.go index 48b13d67..58cd32f7 100644 --- a/cmd/api/server.go +++ b/cmd/api/server.go @@ -3,6 +3,7 @@ package api import ( "context" "fmt" + router2 "go-admin/app/other/router" "log" "net/http" "os" @@ -115,7 +116,7 @@ func run() error { if config.ApplicationConfig.Mode == "dev" { //监控 - AppRouters = append(AppRouters, router.Monitor) + AppRouters = append(AppRouters, router2.Monitor) } for _, f := range AppRouters { diff --git a/common/apis/api.go b/common/apis/api.go index 3c14fb73..ba93ecd4 100644 --- a/common/apis/api.go +++ b/common/apis/api.go @@ -1,10 +1,12 @@ package apis import ( + "fmt" + "github.com/go-admin-team/go-admin-core/sdk/api" "net/http" "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/logger" "github.com/go-admin-team/go-admin-core/sdk/pkg/response" @@ -13,13 +15,62 @@ import ( type Api struct { Context *gin.Context + Logger *logger.Logger +} + +func (e Api) SetContext(c *gin.Context) { + fmt.Println(&c) + e.Context = c + fmt.Println(&e.Context) } // GetLogger 获取上下文提供的日志 func (e Api) GetLogger() *logger.Logger { + 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 func (e Api) GetOrm() (*gorm.DB, error) { db, err := pkg.GetOrm(e.Context) diff --git a/common/apis/request_logger.go b/common/apis/request_logger.go index 71f7a7ef..d3df51c4 100644 --- a/common/apis/request_logger.go +++ b/common/apis/request_logger.go @@ -1,18 +1,10 @@ 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 获取上下文提供的日志 -func GetRequestLogger(c *gin.Context) *logger.Logger { - requestId := pkg.GenerateMsgIDFromContext(c) - log := sdk.Runtime.GetLogger().Fields(map[string]interface{}{ - strings.ToLower(pkg.TrafficKey): requestId, - }) - return &logger.Logger{Logger: log} -} +//func GetRequestLogger(c *gin.Context) *logger.Logger { +// requestId := pkg.GenerateMsgIDFromContext(c) +// log := sdk.Runtime.GetLogger().Fields(map[string]interface{}{ +// strings.ToLower(pkg.TrafficKey): requestId, +// }) +// return &logger.Logger{Logger: log} +//} \ No newline at end of file diff --git a/common/dto/generate.go b/common/dto/generate.go index 74c976b5..c5ed7fae 100644 --- a/common/dto/generate.go +++ b/common/dto/generate.go @@ -22,7 +22,7 @@ func (s *ObjectById) Bind(ctx *gin.Context) error { return err } if ctx.Request.Method == http.MethodDelete { - err = ctx.ShouldBind(&s.Ids) + err = ctx.ShouldBind(&s) if err != nil { log.Warnf("ShouldBind error: %s", err.Error()) return err diff --git a/common/global/adm.go b/common/global/adm.go index 8757d137..1e9d1f9c 100644 --- a/common/global/adm.go +++ b/common/global/adm.go @@ -1,8 +1,8 @@ package global const ( - // go-admin Version Info - Version = "1.3.3" + // Version go-admin version info + Version = "1.4.0" ) var ( diff --git a/common/middleware/handler/user.go b/common/middleware/handler/user.go index 346d59d0..64477377 100644 --- a/common/middleware/handler/user.go +++ b/common/middleware/handler/user.go @@ -6,26 +6,26 @@ import ( ) type SysUser struct { - models.ControlBy - models.ModelTime UserId int `gorm:"primaryKey;autoIncrement;comment:编码" json:"userId"` - Username string `json:"username" gorm:"type:varchar(64);comment:用户名"` - Password string `json:"-" gorm:"type:varchar(128);comment:密码"` - NickName string `json:"nickName" gorm:"type:varchar(128);comment:昵称"` - Phone string `json:"phone" gorm:"type:varchar(11);comment:手机号"` - RoleId int `json:"roleId" gorm:"type:bigint(20);comment:角色ID"` - Salt string `json:"-" gorm:"type:varchar(255);comment:加盐"` - Avatar string `json:"avatar" gorm:"type:varchar(255);comment:头像"` - Sex string `json:"sex" gorm:"type:varchar(255);comment:性别"` - Email string `json:"email" gorm:"type:varchar(128);comment:邮箱"` - DeptId int `json:"deptId" gorm:"type:bigint(20);comment:部门"` - PostId int `json:"postId" gorm:"type:bigint(20);comment:岗位"` - Remark string `json:"remark" gorm:"type:varchar(255);comment:备注"` - Status string `json:"status" gorm:"type:varchar(4);comment:状态"` + Username string `json:"username" gorm:"size:64;comment:用户名"` + Password string `json:"-" gorm:"size:128;comment:密码"` + NickName string `json:"nickName" gorm:"size:128;comment:昵称"` + Phone string `json:"phone" gorm:"size:11;comment:手机号"` + RoleId int `json:"roleId" gorm:"size:20;comment:角色ID"` + Salt string `json:"-" gorm:"size:255;comment:加盐"` + Avatar string `json:"avatar" gorm:"size:255;comment:头像"` + Sex string `json:"sex" gorm:"size:255;comment:性别"` + Email string `json:"email" gorm:"size:128;comment:邮箱"` + DeptId int `json:"deptId" gorm:"size:20;comment:部门"` + PostId int `json:"postId" gorm:"size:20;comment:岗位"` + Remark string `json:"remark" gorm:"size:255;comment:备注"` + Status string `json:"status" gorm:"size:4;comment:状态"` DeptIds []int `json:"deptIds" gorm:"-"` PostIds []int `json:"postIds" gorm:"-"` RoleIds []int `json:"roleIds" gorm:"-"` //Dept *SysDept `json:"dept"` + models.ControlBy + models.ModelTime } func (SysUser) TableName() string { diff --git a/config/extend.go b/config/extend.go index e477fbf9..0d4c9622 100644 --- a/config/extend.go +++ b/config/extend.go @@ -1,13 +1,13 @@ package config -var ExtConfig Extand +var ExtConfig Extend -// 扩展配置 +// Extend 扩展配置 // extend: // demo: // name: demo-name // 使用方法: config.ExtConfig......即可!! -type Extand struct { +type Extend struct { // Demo Demo // 这里配置对应配置文件的结构即可 } diff --git a/go.mod b/go.mod index 2adfaa40..d1c744e1 100644 --- a/go.mod +++ b/go.mod @@ -9,7 +9,7 @@ require ( github.com/bytedance/go-tagexpr/v2 v2.7.10 github.com/casbin/casbin/v2 v2.25.1 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/google/uuid v1.2.0 github.com/mssola/user_agent v0.5.2 diff --git a/template/v4/dto.go.template b/template/v4/dto.go.template index 5b9ce208..dc594e3d 100644 --- a/template/v4/dto.go.template +++ b/template/v4/dto.go.template @@ -2,7 +2,6 @@ package dto import ( "errors" - vd "github.com/bytedance/go-tagexpr/v2/validator" "github.com/gin-gonic/gin" "github.com/go-admin-team/go-admin-core/sdk/api" @@ -12,13 +11,13 @@ import ( ) type {{.ClassName}}Search struct { - dto.Pagination `search:"-" vd:"-"` - {{ $tablename := .TBName -}} - {{ range .Columns -}} + dto.Pagination `search:"-"` + {{- $tablename := .TBName -}} + {{- range .Columns -}} {{$z := .IsQuery}} - {{- 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}}"` - {{ end -}} + {{- if ($z) }} + {{.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 }} } @@ -37,26 +36,22 @@ func (m *{{.ClassName}}Search) Bind(ctx *gin.Context) error { if err != nil { 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 } type {{.ClassName}}Control struct { - {{ range .Columns -}} + {{- range .Columns -}} {{$x := .Pk}} {{- 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 "UpdatedAt" -}} {{- else if eq .GoField "DeletedAt" -}} {{- else if eq .GoField "CreateBy" -}} {{- else if eq .GoField "UpdateBy" -}} {{- else }} - {{.GoField}} {{.GoType}} `json:"{{.JsonField}}" comment:"{{.ColumnComment}}" vd:"?"` - {{end -}} + {{.GoField}} {{.GoType}} `json:"{{.JsonField}}" comment:"{{.ColumnComment}}"` + {{- end -}} {{- end }} } @@ -77,16 +72,12 @@ func (s *{{.ClassName}}Control) Bind(ctx *gin.Context) error { log.Errorf("ShouldBind error: %s", err.Error()) err = errors.New("数据绑定出错") } - if err1 := vd.Validate(s); err != nil { - log.Errorf("Validate error: %s", err1.Error()) - return err1 - } return err } func (s *{{.ClassName}}Control) GenerateM() (common.ActiveRecord, error) { return &models.{{.ClassName}}{ - {{ range .Columns -}} + {{- range .Columns -}} {{$x := .Pk}} {{- if ($x) }} Model: common.Model{ {{.GoField}}: s.{{.GoField}} }, @@ -97,7 +88,7 @@ func (s *{{.ClassName}}Control) GenerateM() (common.ActiveRecord, error) { {{- else if eq .GoField "UpdateBy" -}} {{- else }} {{.GoField}}: s.{{.GoField}}, - {{- end }} + {{- end -}} {{- end }} }, nil } @@ -130,10 +121,6 @@ func (s *{{.ClassName}}ById) Bind(ctx *gin.Context) error { log.Errorf("ShouldBind error: %s", err.Error()) err = errors.New("数据绑定出错") } - if err1 := vd.Validate(s); err != nil { - log.Errorf("Validate error: %s", err1.Error()) - return err1 - } return err } diff --git a/template/v4/no_actions/apis.go.template b/template/v4/no_actions/apis.go.template index 4af74e22..47b69f4c 100644 --- a/template/v4/no_actions/apis.go.template +++ b/template/v4/no_actions/apis.go.template @@ -18,22 +18,26 @@ type {{.ClassName}} struct { apis.Api } +// Get{{.ClassName}}List 获取{{.TableComment}}列表 // @Summary 获取{{.TableComment}}列表 // @Description 获取{{.TableComment}}列表 // @Tags {{.TableComment}} -{{ $tablename := .TBName -}} -{{ range .Columns -}} +{{- $tablename := .TBName -}} +{{- range .Columns -}} {{$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 pageIndex query int false "页码" // @Success 200 {object} response.Response{data=response.Page{list=[]models.{{.ClassName}}}} "{"code": 200, "data": [...]}" // @Router /api/v1/{{.ModuleName}} [get] // @Security Bearer -// Get{{.ClassName}}List 获取{{.TableComment}}列表 -func (e *{{.ClassName}}) Get{{.ClassName}}List(c *gin.Context) { - log := e.GetLogger(c) - db, err := e.GetOrm(c) +func (e {{.ClassName}}) Get{{.ClassName}}List(c *gin.Context) { + e.SetContext(c) + log := e.GetLogger() + db, err := e.GetOrm() if err != nil { log.Error(err) return @@ -44,7 +48,7 @@ func (e *{{.ClassName}}) Get{{.ClassName}}List(c *gin.Context) { err = d.Bind(c) if err != nil { log.Warnf("request body bind error, %s", err.Error()) - e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败") + e.Error( http.StatusUnprocessableEntity, err, "参数验证失败") return } @@ -59,13 +63,14 @@ func (e *{{.ClassName}}) Get{{.ClassName}}List(c *gin.Context) { err = service{{.ClassName}}.Get{{.ClassName}}Page(d, p, &list, &count) if err != nil { log.Errorf("Get {{.ClassName}} Page error, %s", err.Error()) - e.Error(c, http.StatusInternalServerError, err, "查询失败") + e.Error( http.StatusInternalServerError, err, "查询失败") 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}} // @Description 获取{{.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": [...]}" // @Router /api/v1/{{.ModuleName}}/{id} [get] // @Security Bearer -// Get{{.ClassName}} 获取{{.TableComment}} -func (e *{{.ClassName}}) Get{{.ClassName}}(c *gin.Context) { - log := e.GetLogger(c) - db, err := e.GetOrm(c) +func (e {{.ClassName}}) Get{{.ClassName}}(c *gin.Context) { + e.SetContext(c) + log := e.GetLogger() + db, err := e.GetOrm() if err != nil { log.Error(err) return @@ -88,7 +93,7 @@ func (e *{{.ClassName}}) Get{{.ClassName}}(c *gin.Context) { err = control.Bind(c) if err != nil { log.Warnf("request body bind error, %s", err.Error()) - e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败") + e.Error( http.StatusUnprocessableEntity, err, "参数验证失败") return } var object models.{{.ClassName}} @@ -102,25 +107,27 @@ func (e *{{.ClassName}}) Get{{.ClassName}}(c *gin.Context) { err = service{{.ClassName}}.Get{{.ClassName}}(control, p, &object) if err != nil { log.Errorf("Get {{.ClassName}} error, %s", err.Error()) - e.Error(c, http.StatusInternalServerError, err, "查询失败") + e.Error( http.StatusInternalServerError, err, "查询失败") return } - e.OK(c, object, "查看成功") + e.OK( object, "查看成功") } +// Insert{{.ClassName}} 创建{{.TableComment}} // @Summary 创建{{.TableComment}} // @Description 创建{{.TableComment}} // @Tags {{.TableComment}} -// @Accept application/json +// @Accept application/json // @Product application/json // @Param data body dto.{{.ClassName}}Control true "data" // @Success 200 {object} response.Response "{"code": 200, "message": "添加成功"}" // @Router /api/v1/{{.ModuleName}} [post] -// Insert{{.ClassName}} 创建{{.TableComment}} -func (e *{{.ClassName}}) Insert{{.ClassName}}(c *gin.Context) { - log := e.GetLogger(c) - db, err := e.GetOrm(c) +// @Security Bearer +func (e {{.ClassName}}) Insert{{.ClassName}}(c *gin.Context) { + e.SetContext(c) + log := e.GetLogger() + db, err := e.GetOrm() if err != nil { log.Error(err) return @@ -132,13 +139,13 @@ func (e *{{.ClassName}}) Insert{{.ClassName}}(c *gin.Context) { err = control.Bind(c) if err != nil { log.Warnf("request body bind error, %s", err.Error()) - e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败") + e.Error( http.StatusUnprocessableEntity, err, "参数验证失败") return } object, err := control.GenerateM() if err != nil { log.Errorf("generate {{.ClassName}} model error, %s", err.Error()) - e.Error(c, http.StatusInternalServerError, err, "模型生成失败") + e.Error( http.StatusInternalServerError, err, "模型生成失败") return } // 设置创建人 @@ -150,25 +157,27 @@ func (e *{{.ClassName}}) Insert{{.ClassName}}(c *gin.Context) { err = service{{.ClassName}}.Insert{{.ClassName}}(object.(*models.{{.ClassName}})) if err != nil { log.Errorf("Insert {{.ClassName}} error, %s", err.Error()) - e.Error(c, http.StatusInternalServerError, err, "创建失败") + e.Error( http.StatusInternalServerError, err, "创建失败") return } - e.OK(c, object.GetId(), "创建成功") + e.OK( object.GetId(), "创建成功") } +// Update{{.ClassName}} 修改{{.TableComment}} // @Summary 修改{{.TableComment}} // @Description 修改{{.TableComment}} // @Tags {{.TableComment}} -// @Accept application/json +// @Accept application/json // @Product application/json // @Param data body dto.{{.ClassName}}Control true "body" // @Success 200 {object} response.Response "{"code": 200, "message": "修改成功"}" -// @Router /api/v1/{{.ModuleName}} [put] -// Update{{.ClassName}} 修改{{.TableComment}} -func (e *{{.ClassName}}) Update{{.ClassName}}(c *gin.Context) { - log := e.GetLogger(c) - db, err := e.GetOrm(c) +// @Router /api/v1/{{.ModuleName}}/{id} [put] +// @Security Bearer +func (e {{.ClassName}}) Update{{.ClassName}}(c *gin.Context) { + e.SetContext(c) + log := e.GetLogger() + db, err := e.GetOrm() if err != nil { log.Error(err) return @@ -180,13 +189,13 @@ func (e *{{.ClassName}}) Update{{.ClassName}}(c *gin.Context) { err = control.Bind(c) if err != nil { log.Warnf("request body bind error, %s", err.Error()) - e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败") + e.Error( http.StatusUnprocessableEntity, err, "参数验证失败") return } object, err := control.GenerateM() if err != nil { log.Errorf("generate {{.ClassName}} model error, %s", err.Error()) - e.Error(c, http.StatusInternalServerError, err, "模型生成失败") + e.Error( http.StatusInternalServerError, err, "模型生成失败") return } 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) if err != nil { log.Errorf("Update {{.ClassName}} error, %s", err.Error()) - e.Error(c, http.StatusInternalServerError, err, "更新失败") + e.Error( http.StatusInternalServerError, err, "更新失败") return } - e.OK(c, object.GetId(), "更新成功") + e.OK( object.GetId(), "更新成功") } +// Delete{{.ClassName}} 删除{{.TableComment}} // @Summary 删除{{.TableComment}} // @Description 删除{{.TableComment}} // @Tags {{.TableComment}} // @Param ids body []int false "ids" // @Success 200 {object} response.Response "{"code": 200, "message": "删除成功"}" // @Router /api/v1/{{.ModuleName}} [delete] -// Delete{{.ClassName}} 删除{{.TableComment}} -func (e *{{.ClassName}}) Delete{{.ClassName}}(c *gin.Context) { - log := e.GetLogger(c) - db, err := e.GetOrm(c) +// @Security Bearer +func (e {{.ClassName}}) Delete{{.ClassName}}(c *gin.Context) { + e.SetContext(c) + log := e.GetLogger() + db, err := e.GetOrm() if err != nil { log.Error(err) return @@ -227,7 +238,7 @@ func (e *{{.ClassName}}) Delete{{.ClassName}}(c *gin.Context) { err = control.Bind(c) if err != nil { log.Warnf("request body bind error, %s", err.Error()) - e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败") + e.Error( http.StatusUnprocessableEntity, err, "参数验证失败") return } @@ -243,8 +254,8 @@ func (e *{{.ClassName}}) Delete{{.ClassName}}(c *gin.Context) { err = service{{.ClassName}}.Remove{{.ClassName}}(control, p) if err != nil { log.Errorf("Remove {{.ClassName}} error, %s", err.Error()) - e.Error(c, http.StatusInternalServerError, err, "删除失败") + e.Error( http.StatusInternalServerError, err, "删除失败") return } - e.OK(c, control.GetId(), "删除成功") -} + e.OK( control.GetId(), "删除成功") +} \ No newline at end of file diff --git a/template/v4/no_actions/service.go.template b/template/v4/no_actions/service.go.template index 943a3ea7..aaa60a80 100644 --- a/template/v4/no_actions/service.go.template +++ b/template/v4/no_actions/service.go.template @@ -30,7 +30,7 @@ func (e *{{.ClassName}}) Get{{.ClassName}}Page(c *dto.{{.ClassName}}Search, p *a Find(list).Limit(-1).Offset(-1). Count(count).Error if err != nil { - e.Log.Errorf("db error: %s", err) + e.Log.Errorf("Service Get{{.ClassName}}Page error:%s", err) return err } return nil @@ -38,21 +38,19 @@ func (e *{{.ClassName}}) Get{{.ClassName}}Page(c *dto.{{.ClassName}}Search, p *a // Get{{.ClassName}} 获取{{.ClassName}}对象 func (e *{{.ClassName}}) Get{{.ClassName}}(d *dto.{{.ClassName}}ById, p *actions.DataPermission, model *models.{{.ClassName}}) error { - var err error var data models.{{.ClassName}} - db := e.Orm.Model(&data). + err := e.Orm.Model(&data). Scopes( actions.Permission(data.TableName(), p), ). - First(model, d.GetId()) - err = db.Error + First(model, d.GetId()).Error if err != nil && errors.Is(err, gorm.ErrRecordNotFound) { err = errors.New("查看对象不存在或无权查看") - e.Log.Errorf("db error: %s", err) + e.Log.Errorf("Service Get{{.ClassName}} error:%s", err) return err } - if db.Error != nil { + if err != nil { e.Log.Errorf("db error:%s", err) return err } @@ -61,11 +59,9 @@ func (e *{{.ClassName}}) Get{{.ClassName}}(d *dto.{{.ClassName}}ById, p *actions // Insert{{.ClassName}} 创建{{.ClassName}}对象 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 { - e.Log.Errorf("db error: %s", err) + e.Log.Errorf("Service Insert{{.ClassName}} error:%s", err) return err } return nil @@ -73,40 +69,34 @@ func (e *{{.ClassName}}) Insert{{.ClassName}}(c *models.{{.ClassName}}) error { // Update{{.ClassName}} 修改{{.ClassName}}对象 func (e *{{.ClassName}}) Update{{.ClassName}}(c *models.{{.ClassName}}, p *actions.DataPermission) error { - var err error - db := e.Orm.Model(c). Scopes( actions.Permission(c.TableName(), p), ).Where(c.GetId()).Updates(c) - if db.Error != nil { - e.Log.Errorf("db error: %s", err) - return err - } + if err := db.Error; err != nil { + e.Log.Errorf("Service Update{{.ClassName}} error:%s", err) + return err + } if db.RowsAffected == 0 { return errors.New("无权更新该数据") - } return nil } // Remove{{.ClassName}} 删除{{.ClassName}} func (e *{{.ClassName}}) Remove{{.ClassName}}(d *dto.{{.ClassName}}ById, p *actions.DataPermission) error { - var err error var data models.{{.ClassName}} 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 - } + if err := db.Error; err != nil { + e.Log.Errorf("Service Remove{{.ClassName}} error:%s", err) + return err + } + if db.RowsAffected == 0 { + return errors.New("无权删除该数据") + } return nil -} +} \ No newline at end of file