mirror of
https://github.com/go-admin-team/go-admin.git
synced 2026-09-21 10:13:01 +00:00
feat✨ :工作流分类
This commit is contained in:
@@ -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(), "删除成功")
|
||||||
|
}
|
||||||
@@ -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
|
||||||
|
}
|
||||||
@@ -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)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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) {
|
||||||
|
|
||||||
|
}
|
||||||
@@ -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
|
||||||
|
}
|
||||||
@@ -2,11 +2,12 @@ package dto
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
"gorm.io/gorm"
|
//"gorm.io/gorm"
|
||||||
|
|
||||||
"go-admin/app/{{.PackageName}}/models"
|
"go-admin/app/{{.PackageName}}/models"
|
||||||
"go-admin/common/dto"
|
"go-admin/common/dto"
|
||||||
"go-admin/common/log"
|
"go-admin/common/log"
|
||||||
|
common "go-admin/common/models"
|
||||||
"go-admin/tools"
|
"go-admin/tools"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
package models
|
package models
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"gorm.io/gorm"
|
// "gorm.io/gorm"
|
||||||
|
|
||||||
"go-admin/common/models"
|
"go-admin/common/models"
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user