project.go 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. package db
  2. import (
  3. "context"
  4. "fmt"
  5. "github.com/sirupsen/logrus"
  6. "gorm.io/gorm"
  7. "reflect"
  8. "youngee_b_api/model/common_model"
  9. "youngee_b_api/model/gorm_model"
  10. )
  11. func CreateProject(ctx context.Context, projectInfo gorm_model.ProjectInfo) (*int64, error) {
  12. db := GetWriteDB(ctx)
  13. err := db.Create(&projectInfo).Error
  14. if err != nil {
  15. return nil, err
  16. }
  17. return &projectInfo.ProjectID, nil
  18. }
  19. func GetFullProjectList(ctx context.Context, enterpriseID int64, pageSize, pageNum int32, condition *common_model.ProjectCondition) ([]*gorm_model.ProjectInfo, int64, error) {
  20. db := GetReadDB(ctx)
  21. // 根据企业id过滤
  22. db = db.Debug().Model(gorm_model.ProjectInfo{}).Where("enterprise_id = ?", enterpriseID)
  23. logrus.Printf("db:%V", db)
  24. // 根据Project条件过滤
  25. conditionType := reflect.TypeOf(condition).Elem()
  26. conditionValue := reflect.ValueOf(condition).Elem()
  27. for i := 0; i < conditionType.NumField(); i++ {
  28. field := conditionType.Field(i)
  29. tag := field.Tag.Get("condition")
  30. value := conditionValue.FieldByName(field.Name)
  31. db = db.Where(fmt.Sprintf("%s = ?", tag), value)
  32. }
  33. logrus.Printf("db:%V", db)
  34. // 查询总数
  35. var total int64
  36. var fullProjects []*gorm_model.ProjectInfo
  37. if err := db.Count(&total).Error; err != nil {
  38. logrus.WithContext(ctx).Errorf("[GetFullProjectList] error query mysql total, err:%+v", err)
  39. return nil, 0, err
  40. }
  41. // 查询该页数据
  42. limit := pageNum
  43. offset := pageSize * pageNum // assert pageNum start with 0
  44. err := db.Order("updated_at desc").Limit(int(limit)).Offset(int(offset)).Find(&fullProjects).Error
  45. if err != nil {
  46. logrus.WithContext(ctx).Errorf("[GetFullProjectList] error query mysql total, err:%+v", err)
  47. return nil, 0, err
  48. }
  49. return fullProjects, total, nil
  50. }
  51. func GetProjectDetail(ctx context.Context, projectID int64) (*gorm_model.ProjectInfo, error) {
  52. db := GetReadDB(ctx)
  53. var ProjectDetail *gorm_model.ProjectInfo
  54. err := db.Where("project_id = ?", projectID).First(&ProjectDetail).Error
  55. if err != nil {
  56. if err == gorm.ErrRecordNotFound {
  57. return nil, nil
  58. } else {
  59. return nil, err
  60. }
  61. }
  62. fmt.Printf("look %+v", ProjectDetail.EnterpriseID)
  63. return ProjectDetail, nil
  64. }
  65. func GetProjectPhoto(ctx context.Context, ProjectID int64) ([]gorm_model.ProjectPhoto, error) {
  66. db := GetReadDB(ctx)
  67. ProjectPhoto := []gorm_model.ProjectPhoto{}
  68. err := db.Where("project_id=?", ProjectID).Find(&ProjectPhoto).Error
  69. if err != nil {
  70. return nil, err
  71. }
  72. return ProjectPhoto, nil
  73. }
  74. func GetRecruitStrategys(ctx context.Context, ProjectID int64) ([]gorm_model.RecruitStrategy, error) {
  75. db := GetReadDB(ctx)
  76. RecruitStrategys := []gorm_model.RecruitStrategy{}
  77. err := db.Where("project_id=?", ProjectID).Find(&RecruitStrategys).Error
  78. if err != nil {
  79. return nil, err
  80. }
  81. return RecruitStrategys, nil
  82. }