package biapprove import ( "eta_gn/eta_api/global" "fmt" "strings" "time" ) type BiApproveNode struct { BiApproveNodeId int `gorm:"column:bi_approve_node_id;primaryKey"` BiApproveFlowId int `gorm:"column:bi_approve_flow_id"` PrevNodeId int `gorm:"column:prev_node_id"` NextNodeId int `gorm:"column:next_node_id"` NodeType int `gorm:"column:node_type"` ApproveType int `gorm:"column:approve_type"` Users string `gorm:"column:users"` CurrVersion int `gorm:"column:curr_version"` CreatedTime time.Time `gorm:"column:created_time"` } var BiApproveNodeCols = struct { BiApproveNodeId string BiApproveFlowId string PrevNodeId string NextNodeId string NodeType string ApproveType string Users string CurrVersion string CreatedTime string }{ BiApproveNodeId: "bi_approve_node_id", BiApproveFlowId: "bi_approve_flow_id", PrevNodeId: "prev_node_id", NextNodeId: "next_node_id", NodeType: "node_type", ApproveType: "approve_type", Users: "users", CurrVersion: "curr_version", CreatedTime: "created_time", } func (b *BiApproveNode) TableName() string { return "bi_approve_node" } func (m *BiApproveNode) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*BiApproveNode, err error) { fields := strings.Join(fieldArr, ",") if len(fieldArr) == 0 { fields = `*` } order := `ORDER BY created_time DESC, bi_approve_node_id ASC` if orderRule != "" { order = ` ORDER BY ` + orderRule } sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s`, fields, m.TableName(), condition, order) err = global.DmSQL["rddp"].Raw(sql, pars...).Find(&items).Error return } func UpdateNextNodes(nodes []*BiApproveNode) (err error) { if len(nodes) == 0 { return } updateCols := []string{"NextNodeId"} for _, v := range nodes { e := global.DmSQL["rddp"].Select(updateCols).Updates(v).Error if e != nil { err = fmt.Errorf("prev node update err: %v", e) return } } return } func GetBiApproveNodeByCondition(condition string, pars []interface{}) (node []*BiApproveNode, err error) { o := global.DmSQL["rddp"] sql := "SELECT * FROM bi_approve_node WHERE 1=1 " if condition != "" { sql += condition } err = o.Raw(sql, pars...).Find(&node).Error return } func GetBiApproveNodeByFlowIdAndVersionId(flowId int, versionId int) (node []*BiApproveNode, err error) { err = global.DmSQL["rddp"].Model(&BiApproveNode{}).Where("bi_approve_flow_id =? AND curr_version =?", flowId, versionId).Scan(&node).Error return }