From 12be09b4d525192a00496a5b1f96a8f9a1daef81 Mon Sep 17 00:00:00 2001 From: zhangwenjian Date: Fri, 26 Feb 2021 16:15:35 +0800 Subject: [PATCH] =?UTF-8?q?feat=E2=9C=A8=20=EF=BC=9A=E5=B7=A5=E4=BD=9C?= =?UTF-8?q?=E6=B5=81=E5=88=86=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/admin/apis/process/wf_classify.go | 189 ++++++++++++++++++++++++++ app/admin/models/wf_classify.go | 27 ++++ app/admin/router/wf_classify.go | 25 ++++ app/admin/service/dto/wf_classify.go | 97 +++++++++++++ app/admin/service/wf_classify.go | 119 ++++++++++++++++ template/v4/dto.go.template | 3 +- template/v4/model.go.template | 2 +- 7 files changed, 460 insertions(+), 2 deletions(-) create mode 100644 app/admin/apis/process/wf_classify.go create mode 100644 app/admin/models/wf_classify.go create mode 100644 app/admin/router/wf_classify.go create mode 100644 app/admin/service/dto/wf_classify.go create mode 100644 app/admin/service/wf_classify.go diff --git a/app/admin/apis/process/wf_classify.go b/app/admin/apis/process/wf_classify.go new file mode 100644 index 00000000..407c99d6 --- /dev/null +++ b/app/admin/apis/process/wf_classify.go @@ -0,0 +1,189 @@ +package process + +import ( + "github.com/gin-gonic/gin" + "go-admin/app/admin/service" + "net/http" + + "go-admin/app/admin/models" + "go-admin/app/admin/service/dto" + "go-admin/common/actions" + "go-admin/common/apis" + "go-admin/common/log" + "go-admin/tools" +) + +type WfProcessClassify struct { + apis.Api +} + +func (e *WfProcessClassify) GetWfProcessClassifyList(c *gin.Context) { + msgID := tools.GenerateMsgIDFromContext(c) + d := new(dto.WfProcessClassifySearch) + db, err := tools.GetOrm(c) + if err != nil { + log.Error(err) + return + } + + //查询列表 + err = d.Bind(c) + if err != nil { + e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败") + return + } + + //数据权限检查 + p := actions.GetPermissionFromContext(c) + + list := make([]models.WfProcessClassify, 0) + var count int64 + serviceStudent := service.WfProcessClassify{} + serviceStudent.MsgID = msgID + serviceStudent.Orm = db + err = serviceStudent.GetWfProcessClassifyPage(d, p, &list, &count) + if err != nil { + e.Error(c, http.StatusUnprocessableEntity, err, "查询失败") + return + } + + e.PageOK(c, list, int(count), d.GetPageIndex(), d.GetPageSize(), "查询成功") +} + +func (e *WfProcessClassify) GetWfProcessClassify(c *gin.Context) { + control := new(dto.WfProcessClassifyById) + db, err := tools.GetOrm(c) + if err != nil { + log.Error(err) + return + } + + msgID := tools.GenerateMsgIDFromContext(c) + //查看详情 + err = control.Bind(c) + if err != nil { + e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败") + return + } + var object models.WfProcessClassify + + //数据权限检查 + p := actions.GetPermissionFromContext(c) + + serviceWfProcessClassify := service.WfProcessClassify{} + serviceWfProcessClassify.MsgID = msgID + serviceWfProcessClassify.Orm = db + err = serviceWfProcessClassify.GetWfProcessClassify(control, p, &object) + if err != nil { + e.Error(c, http.StatusUnprocessableEntity, err, "查询失败") + return + } + + e.OK(c, object, "查看成功") +} + +func (e *WfProcessClassify) InsertWfProcessClassify(c *gin.Context) { + control := new(dto.WfProcessClassifyControl) + db, err := tools.GetOrm(c) + if err != nil { + log.Error(err) + return + } + + msgID := tools.GenerateMsgIDFromContext(c) + //新增操作 + err = control.Bind(c) + if err != nil { + e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败") + return + } + object, err := control.Generate() + if err != nil { + e.Error(c, http.StatusInternalServerError, err, "模型生成失败") + return + } + // 设置创建人 + object.SetCreateBy(tools.GetUserId(c)) + + serviceWfProcessClassify := service.WfProcessClassify{} + serviceWfProcessClassify.Orm = db + serviceWfProcessClassify.MsgID = msgID + err = serviceWfProcessClassify.InsertWfProcessClassify(object) + if err != nil { + log.Error(err) + e.Error(c, http.StatusInternalServerError, err, "创建失败") + return + } + + e.OK(c, object.GetId(), "创建成功") +} + +func (e *WfProcessClassify) UpdateWfProcessClassify(c *gin.Context) { + control := new(dto.WfProcessClassifyControl) + db, err := tools.GetOrm(c) + if err != nil { + log.Error(err) + return + } + + msgID := tools.GenerateMsgIDFromContext(c) + //更新操作 + err = control.Bind(c) + if err != nil { + e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败") + return + } + object, err := control.Generate() + if err != nil { + e.Error(c, http.StatusInternalServerError, err, "模型生成失败") + return + } + object.SetUpdateBy(tools.GetUserId(c)) + + //数据权限检查 + p := actions.GetPermissionFromContext(c) + + serviceWfProcessClassify := service.WfProcessClassify{} + serviceWfProcessClassify.Orm = db + serviceWfProcessClassify.MsgID = msgID + err = serviceWfProcessClassify.UpdateWfProcessClassify(object, p) + if err != nil { + log.Error(err) + return + } + e.OK(c, object.GetId(), "更新成功") +} + +func (e *WfProcessClassify) DeleteWfProcessClassify(c *gin.Context) { + control := new(dto.WfProcessClassifyById) + db, err := tools.GetOrm(c) + if err != nil { + log.Error(err) + return + } + + msgID := tools.GenerateMsgIDFromContext(c) + //删除操作 + err = control.Bind(c) + if err != nil { + log.Errorf("MsgID[%s] Bind error: %s", msgID, err) + e.Error(c, http.StatusUnprocessableEntity, err, "参数验证失败") + return + } + + // 设置编辑人 + control.SetUpdateBy(tools.GetUserId(c)) + + // 数据权限检查 + p := actions.GetPermissionFromContext(c) + + serviceWfProcessClassify := service.WfProcessClassify{} + serviceWfProcessClassify.Orm = db + serviceWfProcessClassify.MsgID = msgID + err = serviceWfProcessClassify.RemoveWfProcessClassify(control, p) + if err != nil { + log.Error(err) + return + } + e.OK(c, control.GetId(), "删除成功") +} diff --git a/app/admin/models/wf_classify.go b/app/admin/models/wf_classify.go new file mode 100644 index 00000000..3b0695f0 --- /dev/null +++ b/app/admin/models/wf_classify.go @@ -0,0 +1,27 @@ +package models + +import ( + // "gorm.io/gorm" + + "go-admin/common/models" +) + +type WfProcessClassify struct { + models.Model + models.ControlBy + + Name string `json:"name" gorm:"type:varchar(255);comment:名称"` +} + +func (WfProcessClassify) TableName() string { + return "wf_process_classify" +} + +func (e *WfProcessClassify) Generate() models.ActiveRecord { + o := *e + return &o +} + +func (e *WfProcessClassify) GetId() interface{} { + return e.Id +} \ No newline at end of file diff --git a/app/admin/router/wf_classify.go b/app/admin/router/wf_classify.go new file mode 100644 index 00000000..be038dae --- /dev/null +++ b/app/admin/router/wf_classify.go @@ -0,0 +1,25 @@ +package router + +import ( + "github.com/gin-gonic/gin" + "go-admin/app/admin/apis/process" + "go-admin/app/admin/middleware" + jwt "go-admin/pkg/jwtauth" +) + +func init() { + routerCheckRole = append(routerCheckRole, registerWfProcessClassifyRouter) +} + +// 需认证的路由代码 +func registerWfProcessClassifyRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) { + api := &process.WfProcessClassify{} + r := v1.Group("/process").Use(authMiddleware.MiddlewareFunc()).Use(middleware.AuthCheckRole()) + { + r.GET("", api.GetWfProcessClassifyList) + r.GET("/:id", api.GetWfProcessClassify) + r.POST("", api.InsertWfProcessClassify) + r.PUT("/:id", api.UpdateWfProcessClassify) + r.DELETE("", api.DeleteWfProcessClassify) + } +} diff --git a/app/admin/service/dto/wf_classify.go b/app/admin/service/dto/wf_classify.go new file mode 100644 index 00000000..18247384 --- /dev/null +++ b/app/admin/service/dto/wf_classify.go @@ -0,0 +1,97 @@ +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 WfProcessClassifySearch struct { + dto.Pagination `search:"-"` + Name string `form:"name" search:"type:contains;column:name;table:wf_process_classify" comment:"名称"` + + +} + +func (m *WfProcessClassifySearch) GetNeedSearch() interface{} { + return *m +} + +func (m *WfProcessClassifySearch) 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 +} + +type WfProcessClassifyControl struct { + + Id int `uri:"id" comment:"编码"` // 编码 + + Name string `json:"name" comment:"名称"` + +} + +func (s *WfProcessClassifyControl) 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 *WfProcessClassifyControl) Generate() (*models.WfProcessClassify, error) { + return &models.WfProcessClassify{ + + Model: common.Model{ Id: s.Id }, + Name: s.Name, + }, nil +} + +func (s *WfProcessClassifyControl) GetId() interface{} { + return s.Id +} + +type WfProcessClassifyById struct { + Id int `uri:"id"` + Ids []int `json:"ids"` +} + +func (s *WfProcessClassifyById) GetId() interface{} { + if len(s.Ids) > 0 { + s.Ids = append(s.Ids, s.Id) + return s.Ids + } + return s.Id +} + +func (s *WfProcessClassifyById) 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 *WfProcessClassifyById) SetUpdateBy(id int) { + +} \ No newline at end of file diff --git a/app/admin/service/wf_classify.go b/app/admin/service/wf_classify.go new file mode 100644 index 00000000..c890864a --- /dev/null +++ b/app/admin/service/wf_classify.go @@ -0,0 +1,119 @@ +package service + +import ( + "errors" + "go-admin/app/admin/models" + "go-admin/common/actions" + cDto "go-admin/common/dto" + "go-admin/common/log" + "go-admin/app/admin/service/dto" + "go-admin/common/service" + "gorm.io/gorm" +) + +type WfProcessClassify struct { + service.Service +} + +// GetWfProcessClassifyPage 获取WfProcessClassify列表 +func (e *WfProcessClassify) GetWfProcessClassifyPage(c *dto.WfProcessClassifySearch, p *actions.DataPermission, list *[]models.WfProcessClassify, count *int64) error { + var err error + var data models.WfProcessClassify + msgID := e.MsgID + + 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 { + log.Errorf("msgID[%s] db error:%s", msgID, err) + return err + } + return nil +} + +// GetWfProcessClassify 获取WfProcessClassify对象 +func (e *WfProcessClassify) GetWfProcessClassify(d *dto.WfProcessClassifyById, p *actions.DataPermission, model *models.WfProcessClassify) error { + var err error + var data models.WfProcessClassify + msgID := e.MsgID + + 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("查看对象不存在或无权查看") + log.Errorf("msgID[%s] db error:%s", msgID, err) + return err + } + if db.Error != nil { + log.Errorf("msgID[%s] db error:%s", msgID, err) + return err + } + return nil +} + +// InsertWfProcessClassify 创建WfProcessClassify对象 +func (e *WfProcessClassify) InsertWfProcessClassify(model *models.WfProcessClassify) error { + var err error + var data models.WfProcessClassify + msgID := e.MsgID + + err = e.Orm.Model(&data). + Create(model).Error + if err != nil { + log.Errorf("msgID[%s] db error:%s", msgID, err) + return err + } + return nil +} + +// UpdateWfProcessClassify 修改WfProcessClassify对象 +func (e *WfProcessClassify) UpdateWfProcessClassify(c *models.WfProcessClassify, p *actions.DataPermission) error { + var err error + var data models.WfProcessClassify + msgID := e.MsgID + + db := e.Orm.Model(&data). + Scopes( + actions.Permission(data.TableName(), p), + ).Where(c.GetId()).Updates(c) + if db.Error != nil { + log.Errorf("msgID[%s] db error:%s", msgID, err) + return err + } + if db.RowsAffected == 0 { + return errors.New("无权更新该数据") + + } + return nil +} + +// RemoveWfProcessClassify 删除WfProcessClassify +func (e *WfProcessClassify) RemoveWfProcessClassify(d *dto.WfProcessClassifyById, p *actions.DataPermission) error { + var err error + var data models.WfProcessClassify + msgID := e.MsgID + + db := e.Orm.Model(&data). + Scopes( + actions.Permission(data.TableName(), p), + ).Delete(&data, d.GetId()) + if db.Error != nil { + err = db.Error + log.Errorf("MsgID[%s] Delete error: %s", msgID, err) + return err + } + if db.RowsAffected == 0 { + err = errors.New("无权删除该数据") + return err + } + return nil +} \ No newline at end of file diff --git a/template/v4/dto.go.template b/template/v4/dto.go.template index 7fd61ab2..4351cc69 100644 --- a/template/v4/dto.go.template +++ b/template/v4/dto.go.template @@ -2,11 +2,12 @@ package dto import ( "github.com/gin-gonic/gin" - "gorm.io/gorm" + //"gorm.io/gorm" "go-admin/app/{{.PackageName}}/models" "go-admin/common/dto" "go-admin/common/log" + common "go-admin/common/models" "go-admin/tools" ) diff --git a/template/v4/model.go.template b/template/v4/model.go.template index e6dc8963..63ab38f1 100644 --- a/template/v4/model.go.template +++ b/template/v4/model.go.template @@ -1,7 +1,7 @@ package models import ( - "gorm.io/gorm" + // "gorm.io/gorm" "go-admin/common/models" )