process.go 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. package dao
  2. import (
  3. "gorm.io/gorm"
  4. "server/global"
  5. )
  6. type Process struct {
  7. global.GVA_MODEL
  8. ProcessName string `json:"processName" form:"processName" gorm:"comment:审批流程名称"`
  9. ProcessContent string `json:"processContent" form:"processContent" gorm:"审批流程内容"`
  10. ProcessType string `json:"processType" form:"processType" gorm:"审批流程类型"`
  11. Nodes []Node `json:"nodes" form:"nodes" gorm:"many2many:process_nodes;"`
  12. }
  13. func (Process) TableName() string {
  14. return "process"
  15. }
  16. func QueryAllProcess() (processes []Process, err error) {
  17. err = global.GVA_DB.Model(&Process{}).Find(&processes).Error
  18. return processes, err
  19. }
  20. func QueryProcessList(limit, offset int) (processes []Process, total int64, err error) {
  21. // 创建db
  22. db := global.GVA_DB.Model(&Process{})
  23. // 如果有条件搜索 下方会自动创建搜索语句
  24. err = db.Count(&total).Error
  25. if err != nil {
  26. return
  27. }
  28. err = db.Order("id desc").Limit(limit).Offset(offset).Find(&processes).Error
  29. return processes, total, err
  30. }
  31. func QueryProcessById(id int) (process Process, err error) {
  32. err = global.GVA_DB.Model(&Process{}).Where("id = ?", id).Find(&process).Error
  33. return process, err
  34. }
  35. func CreateProcess(process Process, nodes []ProcessNodes) error {
  36. return global.GVA_DB.Transaction(func(tx *gorm.DB) error {
  37. txErr := tx.Model(&Process{}).Create(&process).Error
  38. if txErr != nil {
  39. return txErr
  40. }
  41. for i, _ := range nodes {
  42. nodes[i].ProcessId = int(process.ID)
  43. }
  44. txErr = tx.Model(&ProcessNodes{}).Create(&nodes).Error
  45. if txErr != nil {
  46. return txErr
  47. }
  48. return nil
  49. })
  50. }
  51. func UpdateProcess(process Process, nodes []ProcessNodes) error {
  52. return global.GVA_DB.Transaction(func(tx *gorm.DB) error {
  53. txErr := tx.Model(&Process{}).Select("*").Omit("created_at").Where("id = ?", process.ID).Updates(&process).Error
  54. if txErr != nil {
  55. return txErr
  56. }
  57. txErr = tx.Model(&ProcessNodes{}).Unscoped().Where("process_id = ?", process.ID).Delete(&ProcessNodes{}).Error
  58. if txErr != nil {
  59. return txErr
  60. }
  61. txErr = tx.Model(&ProcessNodes{}).Create(&nodes).Error
  62. if txErr != nil {
  63. return txErr
  64. }
  65. return nil
  66. })
  67. }
  68. func (p Process) DeleteProcess() error {
  69. err := global.GVA_DB.Unscoped().Delete(&p).Error
  70. return err
  71. }