package models import ( "lapp_-wy/db" "lapp_-wy/utils" "errors" ) type WfApprovalmodel struct { Approvalmodelid int `json:"approvalmodelid" xorm:"not null pk autoincr INT(11)"` Active int `json:"active" xorm:"default NULL INT(2)"` Descr string `json:"descr" xorm:"default 'NULL' VARCHAR(255)"` Control int `json:"control" xorm:"default NULL INT(2)"` Lastmodif string `json:"lastmodif" xorm:"default 'NULL' VARCHAR(14)"` Lastuser string `json:"lastuser" xorm:"default 'NULL' VARCHAR(20)"` Credatuz string `json:"credatuz" xorm:"default 'NULL' VARCHAR(14)"` Valst []WfApprovalmodelSteplst `json:"valst" xorm:"-"` } func (t *WfApprovalmodel) TableName() string { return "wf_approvalmodel" } // 清除string字段的右侧空格 func (t *WfApprovalmodel) Clipped() { utils.TrimStruct(t, *t) } //增 func (t *WfApprovalmodel) Add() error { engine := db.MasterEngine() countrole := new(WfApprovalmodel) affw, err := engine.Table("wf_approvalmodel").ID(t.Approvalmodelid).Count(countrole) if err != nil { return err } if affw > 0 { return errors.New("数据已经存在!") } session := engine.NewSession() defer session.Close() // add Begin() before any action err = session.Begin() if err != nil { session.Rollback() return err } _, err = session.Table("wf_approvalmodel").Insert(t) if err != nil { session.Rollback() return err } //批量删除 _, err = session.Table("wf_approvalmodel_steplst").Where("approvalmodelid = ?", t.Approvalmodelid).Delete(&WfApprovalmodelSteplst{}) if err != nil { session.Rollback() return err } //删除 _, err = session.Table("wf_approver").Where("approvalmodelid = ?", t.Approvalmodelid).Delete(&WfApprover{}) if err != nil { session.Rollback() return err } //批量插入 alldata := make([]WfApprovalmodelSteplst, 0) alluser := make([]WfApprover, 0) for _, v := range t.Valst { onedata := WfApprovalmodelSteplst{} onedata.Descr = v.Descr onedata.Approvallevel = v.Approvallevel onedata.Approvalmodelid = t.Approvalmodelid onedata.Autoapproval = v.Autoapproval onedata.Control = v.Control onedata.Daystoautoapproval = v.Daystoautoapproval onedata.Daystowarn = v.Daystowarn onedata.Necessaryapprovalnum = v.Necessaryapprovalnum onedata.Overvoteprevlevel = v.Overvoteprevlevel onedata.Notetype = v.Notetype alldata = append(alldata, onedata) for _, vv := range v.UsersValst { one := WfApprover{} one.Approvalmodelid = t.Approvalmodelid one.Approvallevel = v.Approvallevel one.Approver = vv.Approver one.Mustapproval = vv.Mustapproval alluser = append(alluser, one) } } _, err = session.Table("wf_approvalmodel_steplst").Insert(&alldata) if err != nil { session.Rollback() return err } _, err = session.Table("wf_approver").Insert(&alluser) if err != nil { session.Rollback() return err } err = session.Commit() if err != nil { return err } return nil } //删 func (t *WfApprovalmodel) Del() bool { e := db.MasterEngine() _, err := e.ID(t.Approvalmodelid).Delete(&WfApprovalmodel{}) if err != nil { return false } countrole := new(WfApprovalmodelSteplst) affw, _ := e.Table("wf_approvalmodel_steplst").Where("approvalmodelid = ?", t.Approvalmodelid).Count(countrole) if affw > 0 { _, err = e.Where("approvalmodelid = ?", t.Approvalmodelid).Delete(&WfApprovalmodelSteplst{}) if err != nil { return false } //删除 _, err = e.Table("wf_approver").Where("approvalmodelid = ?", t.Approvalmodelid).Delete(&WfApprover{}) if err != nil { return false } } return true } //改 func (t *WfApprovalmodel) Update() bool { engine := db.MasterEngine() columns := []string{"active","descr","control","lastmodif","lastuser","credatuz"} session := engine.NewSession() defer session.Close() // add Begin() before any action err := session.Begin() if err != nil { session.Rollback() return false } _, err = session.Table("wf_approvalmodel").ID(t.Approvalmodelid).MustCols(columns...).Update(t) if err != nil { return false } //批量删除 _, err = session.Table("wf_approvalmodel_steplst").Where("approvalmodelid = ?", t.Approvalmodelid).Delete(&WfApprovalmodelSteplst{}) if err != nil { session.Rollback() return false } //删除 _, err = session.Table("wf_approver").Where("approvalmodelid = ?", t.Approvalmodelid).Delete(&WfApprover{}) if err != nil { session.Rollback() return false } //批量插入 alldata := make([]WfApprovalmodelSteplst, 0) alluser := make([]WfApprover, 0) for _, v := range t.Valst { onedata := WfApprovalmodelSteplst{} onedata.Descr = v.Descr onedata.Approvallevel = v.Approvallevel onedata.Approvalmodelid = t.Approvalmodelid onedata.Autoapproval = v.Autoapproval onedata.Control = v.Control onedata.Daystoautoapproval = v.Daystoautoapproval onedata.Daystowarn = v.Daystowarn onedata.Necessaryapprovalnum = v.Necessaryapprovalnum onedata.Overvoteprevlevel = v.Overvoteprevlevel onedata.Notetype = v.Notetype alldata = append(alldata, onedata) for _, vv := range v.UsersValst { one := WfApprover{} one.Approvalmodelid = t.Approvalmodelid one.Approvallevel = v.Approvallevel one.Approver = vv.Approver one.Mustapproval = vv.Mustapproval alluser = append(alluser, one) } } _, err = session.Table("wf_approvalmodel_steplst").Insert(&alldata) if err != nil { session.Rollback() return false } _, err = session.Table("wf_approver").Insert(&alluser) if err != nil { session.Rollback() return false } err = session.Commit() if err != nil { return false } return true } //查 func (t *WfApprovalmodel) SelectOne() (WfApprovalmodel, error) { e := db.MasterEngine() var data WfApprovalmodel _, err := e.Table("wf_approvalmodel").ID(t.Approvalmodelid).Get(&data) if err != nil { return data, err } var datalist []WfApprovalmodelSteplst err = e.Table("wf_approvalmodel_steplst").Where("approvalmodelid = ?", t.Approvalmodelid).Find(&datalist) if err != nil { return data, err } for k,v := range datalist{ var dataAPP []WfApprover err = e.Table("wf_approver").Where("approvalmodelid = ? and approvallevel = ?", t.Approvalmodelid,v.Approvallevel).Find(&dataAPP) if err != nil { continue } datalist[k].UsersValst = dataAPP } data.Valst = datalist return data, nil } //分页 func (t *WfApprovalmodel) GetPage(pageSize int, pageIndex int) ([]WfApprovalmodel, int, error) { data := make([]WfApprovalmodel, 0) e := db.MasterEngine() query := e.Table("wf_approvalmodel").Where("1=1") table := e.Table("wf_approvalmodel").Where("1=1") if !utils.ValueIsEmpty(t.Descr) { descr := "%" + t.Descr + "%" query = query.And("descr like ?", descr) table = table.And("descr like ?", descr) } Offset := (pageIndex - 1) * pageSize err := query.Limit(pageSize, Offset).Desc("credatuz").Find(&data) pcount := new(WfApprovalmodel) count, err := table.Count(pcount) if err != nil { return data, 0, err } return data, int(count), nil } func (t *WfApprovalmodel) AllModels() (models []WfApprovalmodel, err error) { e := db.MasterEngine() err = e.Table(t.TableName()).Select("approvalmodelid,descr").Where("active = ?",1).Find(&models) if err != nil { return nil,err } return models,nil }