/* * @description: 树结构数据库操作相关 * @Author: CP * @Date: 2020-09-11 14:49:27 * @FilePath: \construction_management\dao\tree_dao.go */ package dao import ( "github.com/go-xorm/xorm" "go.mod/models" ) //数据库操作引擎 type TreeDao struct { engine *xorm.Engine } //获得一个DAO对象 func NewTreeDao(engine *xorm.Engine) *TreeDao { return &TreeDao{ engine: engine, } } //id获得数据 func (d *TreeDao) Get(id int) *models.CmTree { data := &models.CmTree{Id: id} //Get取到值后,会自动赋值到data中 ok, err := d.engine.Get(data) if ok && err == nil { return data } else { data.Id = 0 return data } } func (d *TreeDao) GetBidsection(id int) []models.CmTree { datalist := make([]models.CmTree, 0) err := d.engine. Asc("serial"). Where("parent_id=? and isfolder=0", id). Find(&datalist) if err != nil { return datalist } else { return datalist } } // 获得某一深度的 结构数据(不包含子集) 正序 func (d *TreeDao) GetAllDepth(depth int, projectId int) []models.CmTree { datalist := make([]models.CmTree, 0) err := d.engine. Asc("serial"). Where("depth=? and project_id=?", depth, projectId). Find(&datalist) if err != nil { return datalist } else { return datalist } } // 获得项目文件夹 func (d *TreeDao) GetAllTree(projectId int) []models.CmTree { datalist := make([]models.CmTree, 0) err := d.engine. Asc("id"). Where("project_id=?", projectId). Find(&datalist) if err != nil { return datalist } else { return datalist } } //创建 func (d *TreeDao) Create(data *models.CmTree) error { _, err := d.engine.Insert(data) return err } // 更新 func (d *TreeDao) Update(data *models.CmTree, columns []string) error { _, err := d.engine.Id(data.Id).MustCols(columns...).Update(data) return err }