pro_project.go 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. package dao
  2. import (
  3. "server/global"
  4. "server/model/common/request"
  5. "time"
  6. )
  7. type Project struct {
  8. global.GVA_MODEL
  9. ProjectName string `gorm:"type:varchar(64)" json:"projectName"` //项目名称
  10. StartTime time.Time `gorm:"type:date" json:"startTime" time_format:"date"` //开始时间
  11. Remark string `gorm:"type:varchar(64);default:''" json:"remark"` //备注
  12. Users []SysUser `json:"users" gorm:"many2many:user_project;"`
  13. }
  14. func (Project) TableName() string {
  15. return "project"
  16. }
  17. func (p Project) AddProject() error {
  18. return global.GVA_DB.Model(&Project{}).Create(&p).Error
  19. }
  20. func (p Project) DelProject(id int) error {
  21. err := global.GVA_DB.Model(&p).Where("id = ?", id).Delete(&p).Error
  22. return err
  23. }
  24. func (p Project) UpdateProject() error {
  25. return global.GVA_DB.Model(&Project{}).Debug().Where("id = ?", p.GVA_MODEL.ID).Updates(map[string]interface{}{
  26. "project_name": p.ProjectName,
  27. "start_time": p.StartTime,
  28. "remark": p.Remark,
  29. }).Error
  30. }
  31. // 根据用户ID查询对应的项目
  32. func (p Project) GetProjectListByUserID(info request.PageInfo, userid uint) (projectList []Project, total int64, err error) {
  33. limit := info.PageSize
  34. offset := info.PageSize * (info.Page - 1)
  35. db := global.GVA_DB.Model(&Project{}).
  36. Joins("JOIN user_project ON project.id = user_project.project_id").
  37. Where("user_project.sys_user_id = ?", userid)
  38. err = db.Count(&total).Error
  39. err = db.Limit(limit).Offset(offset).Scan(&projectList).Error
  40. return
  41. }
  42. // 查询项目列表
  43. func (p Project) GetProjectAndDetails(info request.PageInfo) (projectList []Project, total int64, err error) {
  44. limit := info.PageSize
  45. offset := info.PageSize * (info.Page - 1)
  46. db := global.GVA_DB.Model(&Project{}).Find(&projectList)
  47. err = db.Count(&total).Error
  48. err = db.Limit(limit).Offset(offset).Scan(&projectList).Error
  49. return
  50. }
  51. // 增加user_project记录
  52. func AddUserProjectRelation(userID, projectID uint) error {
  53. return global.GVA_DB.Table("user_project").Exec("INSERT INTO user_project (sys_user_id, project_id) VALUES (?, ?)", userID, projectID).Error
  54. }
  55. // 获取所有项目列表
  56. func GetProjectList() (projectList []Project, err error) {
  57. err = global.GVA_DB.Model(&Project{}).Find(&projectList).Error
  58. return projectList, err
  59. }
  60. func GetProjectListByUserIDNoPage(userid uint) (projectList []Project, err error) {
  61. db := global.GVA_DB.Model(&Project{}).
  62. Joins("JOIN user_project ON project.id = user_project.project_id").
  63. Where("user_project.sys_user_id = ?", userid).Scan(&projectList).Error
  64. return projectList, db
  65. }
  66. func DelOldProjectsByUserId(userId uint) error {
  67. db := global.GVA_DB.Table("user_project").Exec("DELETE FROM user_project WHERE sys_user_id = ?", userId).Error
  68. return db
  69. }
  70. // 批量新增新的项目id
  71. func ChangeProjects(up []request.UserProject) error {
  72. return global.GVA_DB.Table("user_project").Create(&up).Error
  73. }