project.go 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. package dao
  2. import (
  3. "github.com/shopspring/decimal"
  4. "gorm.io/gorm"
  5. "server/global"
  6. )
  7. type Project struct {
  8. global.GVA_MODEL
  9. Code string `json:"code" form:"code" gorm:"comment:项目编号"`
  10. Name string `json:"name" form:"name" gorm:"comment:项目名称"`
  11. Principal uint `json:"principal" form:"principal" gorm:"comment:负责人"`
  12. Price decimal.Decimal `json:"price" form:"price" gorm:"type:decimal(10,2);not null"`
  13. Illustrate string `json:"illustrate" form:"illustrate" gorm:"comment:说明"`
  14. Source string `json:"source" form:"source" gorm:"comment:来源"`
  15. Progress int `json:"progress" form:"progress" gorm:"comment:进度"`
  16. State int `json:"state" form:"state" gorm:"comment:状态"`
  17. Files []ProjectFile `json:"files" form:"files" gorm:"-"`
  18. }
  19. func (Project) TableName() string {
  20. return "project"
  21. }
  22. // TODO:项目查询
  23. // QueryProjectList 查询项目列表
  24. func QueryProjectList(limit, offset, state int, name, time string) (project []*Project, total int64, err error) {
  25. // 创建db
  26. db := global.GVA_DB.Model(&Project{})
  27. // 如果有条件搜索 下方会自动创建搜索语句
  28. if state != 0 {
  29. db = db.Where("state = ?", state)
  30. }
  31. if name != "" {
  32. db = db.Where("name LIKE ?", "%"+name+"%")
  33. }
  34. if time != "" {
  35. db = db.Where("WHERE DATE_FORMAT(created_at, '%Y-%m') = ?", time)
  36. }
  37. err = db.Count(&total).Error
  38. if err != nil {
  39. return
  40. }
  41. err = db.Order("id desc").Limit(limit).Offset(offset).Find(&project).Error
  42. return project, total, err
  43. }
  44. // QueryProjectByCode 查询单个项目 按编号
  45. func QueryProjectByCode(code string) (project Project, err error) {
  46. err = global.GVA_DB.Model(&Project{}).Where("code = ?", code).First(&project).Error
  47. return
  48. }
  49. // TODO:项目新增
  50. // CreateProject 新增项目
  51. func (p Project) CreateProject() error {
  52. return global.GVA_DB.Transaction(func(tx *gorm.DB) error {
  53. txErr := tx.Model(&Project{}).Create(&p).Error
  54. if txErr != nil {
  55. return txErr
  56. }
  57. for _, file := range p.Files {
  58. txErr := tx.Model(&ProjectFile{}).Create(&file).Error
  59. if txErr != nil {
  60. return txErr
  61. }
  62. }
  63. return txErr
  64. })
  65. }
  66. // TODO:项目修改
  67. // UpdateProject 修改项目
  68. func (p Project) UpdateProject() error {
  69. return global.GVA_DB.Model(&p).Updates(p).Error
  70. }
  71. // TODO:项目删除
  72. // DeleteProject 删除项目
  73. func DeleteProject(code string) error {
  74. return global.GVA_DB.Unscoped().Where("code = ?", code).Delete(&Project{}).Error
  75. }