scrm-go

activity_service.go 3.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. package marketing_tool_service
  2. import (
  3. "SCRM/models"
  4. "SCRM/service"
  5. "time"
  6. "github.com/jinzhu/gorm"
  7. )
  8. func GetValidActivities(orgID int64, appID int64, keyWord string, page int, count int) ([]*models.Activity, int64, error) {
  9. if count <= 0 {
  10. return []*models.Activity{}, 0, nil
  11. }
  12. if page < 1 {
  13. page = 1
  14. }
  15. var activities []*models.Activity
  16. var totalCount int64
  17. db := service.PatientReadDB().Model(&models.Activity{}).Where("user_org_id = ? AND user_app_id = ? AND status <> 9", orgID, appID)
  18. if len(keyWord) > 0 {
  19. likeParam := "%" + keyWord + "%"
  20. db = db.Where("title LIKE ?", likeParam)
  21. }
  22. err := db.
  23. Count(&totalCount).
  24. Order("ctime desc").Limit(count).Offset((page - 1) * count).Find(&activities).
  25. Error
  26. if err == nil {
  27. return activities, totalCount, nil
  28. } else {
  29. return nil, 0, err
  30. }
  31. }
  32. func GetActivitiesWithStatus(orgID int64, appID int64, keyWord string, status int, page int, count int) ([]*models.Activity, int64, error) {
  33. if count <= 0 {
  34. return []*models.Activity{}, 0, nil
  35. }
  36. if page < 1 {
  37. page = 1
  38. }
  39. var activities []*models.Activity
  40. var totalCount int64
  41. db := service.PatientReadDB().Model(&models.Activity{}).Where("user_org_id = ? AND user_app_id = ? AND status = ?", orgID, appID, status)
  42. if len(keyWord) > 0 {
  43. likeParam := "%" + keyWord + "%"
  44. db = db.Where("title LIKE ?", likeParam)
  45. }
  46. err := db.
  47. Count(&totalCount).
  48. Order("ctime desc").Limit(count).Offset((page - 1) * count).Find(&activities).
  49. Error
  50. if err == nil {
  51. return activities, totalCount, nil
  52. } else {
  53. return nil, 0, err
  54. }
  55. }
  56. func GetDidEndedActivities(orgID int64, appID int64, keyWord string, page int, count int) ([]*models.Activity, int64, error) {
  57. if count <= 0 {
  58. return []*models.Activity{}, 0, nil
  59. }
  60. if page < 1 {
  61. page = 1
  62. }
  63. var activities []*models.Activity
  64. var totalCount int64
  65. now := time.Now().Unix()
  66. db := service.PatientReadDB().Model(&models.Activity{}).Where("user_org_id = ? AND user_app_id = ? AND status = 1 AND start_time < ?", orgID, appID, now)
  67. if len(keyWord) > 0 {
  68. likeParam := "%" + keyWord + "%"
  69. db = db.Where("title LIKE ?", likeParam)
  70. }
  71. err := db.
  72. Count(&totalCount).
  73. Order("ctime desc").Limit(count).Offset((page - 1) * count).Find(&activities).
  74. Error
  75. if err == nil {
  76. return activities, totalCount, nil
  77. } else {
  78. return nil, 0, err
  79. }
  80. }
  81. func GetActivityWithID(orgID int64, activityID int64) (*models.Activity, error) {
  82. var activity models.Activity
  83. err := service.PatientReadDB().Model(&models.Activity{}).Where("user_org_id = ? and id = ?", orgID, activityID).First(&activity).Error
  84. if err != nil {
  85. if err == gorm.ErrRecordNotFound {
  86. return nil, nil
  87. } else {
  88. return nil, err
  89. }
  90. }
  91. return &activity, nil
  92. }
  93. func GetActivityParagraphByActivityID(activityID int64) (*models.ActivityParagraph, error) {
  94. var paragraph models.ActivityParagraph
  95. err :=
  96. service.PatientReadDB().Model(&models.ActivityParagraph{}).
  97. Where("activity_id = ? and status = 1", activityID).
  98. First(&paragraph).
  99. Error
  100. if err != nil {
  101. if err == gorm.ErrRecordNotFound {
  102. return nil, nil
  103. } else {
  104. return nil, err
  105. }
  106. }
  107. return &paragraph, nil
  108. }