refactor: 优化内容分类管理

This commit is contained in:
zhangwenjian
2020-10-23 23:32:44 +08:00
parent e53cc4a9b5
commit ac5b10e6c0
9 changed files with 536 additions and 219 deletions
-83
View File
@@ -1,83 +0,0 @@
package syscategory
import (
"github.com/gin-gonic/gin"
"github.com/gin-gonic/gin/binding"
"go-admin/app/admin/models"
"go-admin/tools"
"go-admin/tools/app"
"go-admin/tools/app/msg"
)
func GetSysCategoryList(c *gin.Context) {
var data models.SysCategory
var err error
var pageSize = 10
var pageIndex = 1
if size := c.Request.FormValue("pageSize"); size != "" {
pageSize, err = tools.StringToInt(size)
}
if index := c.Request.FormValue("pageIndex"); index != "" {
pageIndex, err = tools.StringToInt(index)
}
data.Name = c.Request.FormValue("name")
data.Status = c.Request.FormValue("status")
data.DataScope = tools.GetUserIdStr(c)
result, count, err := data.GetPage(pageSize, pageIndex)
tools.HasError(err, "", -1)
app.PageOK(c, result, count, pageIndex, pageSize, "")
}
func GetSysCategory(c *gin.Context) {
var data models.SysCategory
data.Id, _ = tools.StringToInt(c.Param("id"))
result, err := data.Get()
tools.HasError(err, "抱歉未找到相关信息", -1)
app.OK(c, result, "")
}
// @Summary 添加分类
// @Description 获取JSON
// @Tags 分类
// @Accept application/json
// @Product application/json
// @Param data body models.SysCategory true "data"
// @Success 200 {string} string "{"code": 200, "message": "添加成功"}"
// @Success 200 {string} string "{"code": -1, "message": "添加失败"}"
// @Router /api/v1/syscategory [post]
func InsertSysCategory(c *gin.Context) {
var data models.SysCategory
err := c.ShouldBindJSON(&data)
data.CreateBy = tools.GetUserIdStr(c)
tools.HasError(err, "", 500)
result, err := data.Create()
tools.HasError(err, "", -1)
app.OK(c, result, "")
}
func UpdateSysCategory(c *gin.Context) {
var data models.SysCategory
err := c.BindWith(&data, binding.JSON)
tools.HasError(err, "数据解析失败", -1)
data.UpdateBy = tools.GetUserIdStr(c)
result, err := data.Update(data.Id)
tools.HasError(err, "", -1)
app.OK(c, result, "")
}
func DeleteSysCategory(c *gin.Context) {
var data models.SysCategory
data.UpdateBy = tools.GetUserIdStr(c)
IDS := tools.IdsStrToIdsIntGroup("id", c)
_, err := data.BatchDelete(IDS)
tools.HasError(err, msg.DeletedFail, 500)
app.OK(c, nil, msg.DeletedSuccess)
}
+17 -108
View File
@@ -1,122 +1,31 @@
package models
import (
orm "go-admin/common/global"
"go-admin/tools"
"gorm.io/gorm"
"go-admin/common/models"
)
type SysCategory struct {
Id int `json:"id" gorm:"type:int(11);primary_key;AUTO_INCREMENT"` // 分类Id
Name string `json:"name" gorm:"type:varchar(255);"` // 名称
Img string `json:"img" gorm:"type:varchar(255);"` // 图片
Sort string `json:"sort" gorm:"type:int(4);"` // 排序
Status string `json:"status" gorm:"type:int(1);"` // 状态
Remark string `json:"remark" gorm:"type:varchar(255);"` // 备注
CreateBy string `json:"createBy" gorm:"type:varchar(64);"` // 创建者
UpdateBy string `json:"updateBy" gorm:"type:varchar(64);"` // 更新者
DataScope string `json:"dataScope" gorm:"-"`
Params string `json:"params" gorm:"-"`
BaseModel
gorm.Model
models.ControlBy
Name string `json:"name" gorm:"type:varchar(255);comment:名称"` //
Img string `json:"img" gorm:"type:varchar(255);comment:图标"` //
Sort string `json:"sort" gorm:"type:int(4);comment:排序"` //
Status string `json:"status" gorm:"type:int(1);comment:状态"` //
Remark string `json:"remark" gorm:"type:varchar(255);comment:备注"` //
}
func (SysCategory) TableName() string {
return "sys_category"
return "sys_category"
}
// 创建SysCategory
func (e *SysCategory) Create() (SysCategory, error) {
var doc SysCategory
result := orm.Eloquent.Table(e.TableName()).Create(&e)
if result.Error != nil {
err := result.Error
return doc, err
}
doc = *e
return doc, nil
func (e *SysCategory) Generate() models.ActiveRecord {
o := *e
return &o
}
// 获取SysCategory
func (e *SysCategory) Get() (SysCategory, error) {
var doc SysCategory
table := orm.Eloquent.Table(e.TableName())
if e.Id != 0 {
table = table.Where("id = ?", e.Id)
}
if e.Name != "" {
table = table.Where("name = ?", e.Name)
}
if e.Status != "" {
table = table.Where("status = ?", e.Status)
}
if err := table.First(&doc).Error; err != nil {
return doc, err
}
return doc, nil
}
// 获取SysCategory带分页
func (e *SysCategory) GetPage(pageSize int, pageIndex int) ([]SysCategory, int, error) {
var doc []SysCategory
table := orm.Eloquent.Table(e.TableName())
if e.Name != "" {
table = table.Where("name = ?", e.Name)
}
if e.Status != "" {
table = table.Where("status = ?", e.Status)
}
// 数据权限控制(如果不需要数据权限请将此处去掉)
dataPermission := new(DataPermission)
dataPermission.UserId, _ = tools.StringToInt(e.DataScope)
table, err := dataPermission.GetDataScope(e.TableName(), table)
if err != nil {
return nil, 0, err
}
var count int64
if err := table.Offset((pageIndex - 1) * pageSize).Limit(pageSize).Find(&doc).Offset(-1).Limit(-1).Count(&count).Error; err != nil {
return nil, 0, err
}
//table.Where("`deleted_at` IS NULL").Count(&count)
return doc, int(count), nil
}
// 更新SysCategory
func (e *SysCategory) Update(id int) (update SysCategory, err error) {
if err = orm.Eloquent.Table(e.TableName()).Where("id = ?", id).First(&update).Error; err != nil {
return
}
//参数1:是要修改的数据
//参数2:是修改的数据
if err = orm.Eloquent.Table(e.TableName()).Model(&update).Updates(&e).Error; err != nil {
return
}
return
}
// 删除SysCategory
func (e *SysCategory) Delete(id int) (success bool, err error) {
if err = orm.Eloquent.Table(e.TableName()).Where("id = ?", id).Delete(&SysCategory{}).Error; err != nil {
success = false
return
}
success = true
return
}
//批量删除
func (e *SysCategory) BatchDelete(id []int) (Result bool, err error) {
if err = orm.Eloquent.Table(e.TableName()).Where("id in (?)", id).Delete(&SysCategory{}).Error; err != nil {
return
}
Result = true
return
func (e *SysCategory) GetId() interface{} {
return e.ID
}
-2
View File
@@ -51,7 +51,5 @@ func examplesCheckRoleRouter(r *gin.Engine, authMiddleware *jwtauth.GinJWTMiddle
}
// {{认证路由自动补充在此处请勿删除}}
registerSysContentRouter(v1, authMiddleware)
registerSysCategoryRouter(v1, authMiddleware)
}
+31
View File
@@ -0,0 +1,31 @@
package router
import (
"github.com/gin-gonic/gin"
"go-admin/app/admin/middleware"
"go-admin/app/admin/models"
"go-admin/app/admin/service/dto"
"go-admin/common/actions"
jwt "go-admin/pkg/jwtauth"
)
func init() {
routerCheckRole = append(routerCheckRole, registerSysCategoryRouter)
}
// 需认证的路由代码
func registerSysCategoryRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) {
r := v1.Group("/syscategory").Use(authMiddleware.MiddlewareFunc()).Use(middleware.AuthCheckRole())
{
model := &models.SysCategory{}
r.GET("", actions.PermissionAction(), actions.IndexAction(model, new(dto.SysCategorySearch), func() interface{} {
list := make([]models.SysCategory, 0)
return &list
}))
r.GET("/:id", actions.PermissionAction(), actions.ViewAction(new(dto.SysCategoryById), nil))
r.POST("", actions.CreateAction(new(dto.SysCategoryControl)))
r.PUT("/:id", actions.PermissionAction(), actions.UpdateAction(new(dto.SysCategoryControl)))
r.DELETE("", actions.PermissionAction(), actions.DeleteAction(new(dto.SysCategoryById)))
}
}
-26
View File
@@ -1,26 +0,0 @@
package router
import (
"github.com/gin-gonic/gin"
"go-admin/app/admin/apis/syscategory"
"go-admin/app/admin/middleware"
jwt "go-admin/pkg/jwtauth"
)
// 需认证的路由代码
func registerSysCategoryRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) {
r := v1.Group("/syscategory").Use(authMiddleware.MiddlewareFunc()).Use(middleware.AuthCheckRole())
{
r.GET("/:id", syscategory.GetSysCategory)
r.POST("", syscategory.InsertSysCategory)
r.PUT("", syscategory.UpdateSysCategory)
r.DELETE("/:id", syscategory.DeleteSysCategory)
}
l := v1.Group("").Use(authMiddleware.MiddlewareFunc()).Use(middleware.AuthCheckRole())
{
l.GET("/syscategoryList", syscategory.GetSysCategoryList)
}
}
+5
View File
@@ -7,6 +7,11 @@ import (
jwt "go-admin/pkg/jwtauth"
)
func init() {
routerCheckRole = append(routerCheckRole, registerSysContentRouter)
}
// 需认证的路由代码
func registerSysContentRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) {
+107
View File
@@ -0,0 +1,107 @@
package dto
import (
"github.com/gin-gonic/gin"
"gorm.io/gorm"
"go-admin/app/admin/models"
"go-admin/common/dto"
"go-admin/common/log"
common "go-admin/common/models"
"go-admin/tools"
)
type SysCategorySearch struct {
dto.Pagination `search:"-"`
Name string `form:"name" search:"type:exact;column:name;table:sys_category" comment:"名称"`
Status string `form:"status" search:"type:exact;column:status;table:sys_category" comment:"状态"`
}
func (m *SysCategorySearch) GetNeedSearch() interface{} {
return *m
}
func (m *SysCategorySearch) Bind(ctx *gin.Context) error {
msgID := tools.GenerateMsgIDFromContext(ctx)
err := ctx.ShouldBind(m)
if err != nil {
log.Debugf("MsgID[%s] ShouldBind error: %s", msgID, err.Error())
}
return err
}
func (m *SysCategorySearch) Generate() dto.Index {
o := *m
return &o
}
type SysCategoryControl struct {
ID uint `uri:"ID" comment:"标识"` // 标识
Name string `json:"name" comment:"名称"`
Img string `json:"img" comment:"图标"`
Sort string `json:"sort" comment:"排序"`
Status string `json:"status" comment:"状态"`
Remark string `json:"remark" comment:"备注"`
}
func (s *SysCategoryControl) Bind(ctx *gin.Context) error {
msgID := tools.GenerateMsgIDFromContext(ctx)
err := ctx.ShouldBindUri(s)
if err != nil {
log.Debugf("MsgID[%s] ShouldBindUri error: %s", msgID, err.Error())
return err
}
err = ctx.ShouldBind(s)
if err != nil {
log.Debugf("MsgID[%s] ShouldBind error: %#v", msgID, err.Error())
}
return err
}
func (s *SysCategoryControl) Generate() dto.Control {
cp := *s
return &cp
}
func (s *SysCategoryControl) GenerateM() (common.ActiveRecord, error) {
return &models.SysCategory{
Model: gorm.Model{ID: s.ID},
Name: s.Name,
Img: s.Img,
Sort: s.Sort,
Status: s.Status,
Remark: s.Remark,
}, nil
}
func (s *SysCategoryControl) GetId() interface{} {
return s.ID
}
type SysCategoryById struct {
dto.ObjectById
}
func (s *SysCategoryById) Generate() dto.Control {
cp := *s
return &cp
}
func (s *SysCategoryById) GenerateM() (common.ActiveRecord, error) {
return &models.SysCategory{}, nil
}