tree_dao.go 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. /*
  2. * @description: 树结构数据库操作相关
  3. * @Author: CP
  4. * @Date: 2020-09-11 14:49:27
  5. * @FilePath: \construction_management\dao\tree_dao.go
  6. */
  7. package dao
  8. import (
  9. "github.com/go-xorm/xorm"
  10. "go.mod/models"
  11. )
  12. //数据库操作引擎
  13. type TreeDao struct {
  14. engine *xorm.Engine
  15. }
  16. //获得一个DAO对象
  17. func NewTreeDao(engine *xorm.Engine) *TreeDao {
  18. return &TreeDao{
  19. engine: engine,
  20. }
  21. }
  22. //id获得数据
  23. func (d *TreeDao) Get(id int) *models.CmTree {
  24. data := &models.CmTree{Id: id}
  25. //Get取到值后,会自动赋值到data中
  26. ok, err := d.engine.Get(data)
  27. if ok && err == nil {
  28. return data
  29. } else {
  30. data.Id = 0
  31. return data
  32. }
  33. }
  34. func (d *TreeDao) GetBidsection(id int) []models.CmTree {
  35. datalist := make([]models.CmTree, 0)
  36. err := d.engine.
  37. Asc("serial").
  38. Where("parent_id=? and isfolder=0", id).
  39. Find(&datalist)
  40. if err != nil {
  41. return datalist
  42. } else {
  43. return datalist
  44. }
  45. }
  46. // 获得某一深度的 结构数据(不包含子集) 正序
  47. func (d *TreeDao) GetAllDepth(depth int, projectId int) []models.CmTree {
  48. datalist := make([]models.CmTree, 0)
  49. err := d.engine.
  50. Asc("serial").
  51. Where("depth=? and project_id=?", depth, projectId).
  52. Find(&datalist)
  53. if err != nil {
  54. return datalist
  55. } else {
  56. return datalist
  57. }
  58. }
  59. // 获得项目文件夹
  60. func (d *TreeDao) GetAllTree(projectId int) []models.CmTree {
  61. datalist := make([]models.CmTree, 0)
  62. err := d.engine.
  63. Asc("id").
  64. Where("project_id=?", projectId).
  65. Find(&datalist)
  66. if err != nil {
  67. return datalist
  68. } else {
  69. return datalist
  70. }
  71. }
  72. //创建
  73. func (d *TreeDao) Create(data *models.CmTree) error {
  74. _, err := d.engine.Insert(data)
  75. return err
  76. }
  77. // 更新
  78. func (d *TreeDao) Update(data *models.CmTree, columns []string) error {
  79. _, err := d.engine.Id(data.Id).MustCols(columns...).Update(data)
  80. return err
  81. }