package dao import ( "gorm.io/gorm" "server/global" ) type Process struct { global.GVA_MODEL ProcessName string `json:"processName" form:"processName" gorm:"comment:审批流程名称"` ProcessContent string `json:"processContent" form:"processContent" gorm:"审批流程内容"` ProcessType string `json:"processType" form:"processType" gorm:"审批流程类型"` Nodes []Node `json:"nodes" form:"nodes" gorm:"many2many:process_nodes;"` } func (Process) TableName() string { return "process" } func QueryAllProcess() (processes []Process, err error) { err = global.GVA_DB.Model(&Process{}).Find(&processes).Error return processes, err } func QueryProcessList(limit, offset int) (processes []Process, total int64, err error) { // 创建db db := global.GVA_DB.Model(&Process{}) // 如果有条件搜索 下方会自动创建搜索语句 err = db.Count(&total).Error if err != nil { return } err = db.Order("id desc").Limit(limit).Offset(offset).Find(&processes).Error return processes, total, err } func QueryProcessById(id int) (process Process, err error) { err = global.GVA_DB.Model(&Process{}).Where("id = ?", id).Find(&process).Error return process, err } func CreateProcess(process Process, nodes []ProcessNodes) error { return global.GVA_DB.Transaction(func(tx *gorm.DB) error { txErr := tx.Model(&Process{}).Create(&process).Error if txErr != nil { return txErr } for i, _ := range nodes { nodes[i].ProcessId = int(process.ID) } txErr = tx.Model(&ProcessNodes{}).Create(&nodes).Error if txErr != nil { return txErr } return nil }) } func UpdateProcess(process Process, nodes []ProcessNodes) error { return global.GVA_DB.Transaction(func(tx *gorm.DB) error { txErr := tx.Model(&Process{}).Select("*").Omit("created_at").Where("id = ?", process.ID).Updates(&process).Error if txErr != nil { return txErr } txErr = tx.Model(&ProcessNodes{}).Unscoped().Where("process_id = ?", process.ID).Delete(&ProcessNodes{}).Error if txErr != nil { return txErr } txErr = tx.Model(&ProcessNodes{}).Create(&nodes).Error if txErr != nil { return txErr } return nil }) } func (p Process) DeleteProcess() error { err := global.GVA_DB.Unscoped().Delete(&p).Error return err }