package marketing_tool_service import ( "SCRM/models" "SCRM/service" "time" ) func GetValidActivities(orgID int64, appID int64, keyWord string, page int, count int) ([]*models.Activity, int64, error) { if count <= 0 { return []*models.Activity{}, 0, nil } if page < 1 { page = 1 } var activities []*models.Activity var totalCount int64 db := service.PatientReadDB().Model(&models.Activity{}).Where("user_org_id = ? AND user_app_id = ? AND status <> 9", orgID, appID) if len(keyWord) > 0 { likeParam := "%" + keyWord + "%" db = db.Where("title LIKE ?", likeParam) } err := db. Count(&totalCount). Order("ctime desc").Limit(count).Offset((page - 1) * count).Find(&activities). Error if err == nil { return activities, totalCount, nil } else { return nil, 0, err } } func GetActivitiesWithStatus(orgID int64, appID int64, keyWord string, status int, page int, count int) ([]*models.Activity, int64, error) { if count <= 0 { return []*models.Activity{}, 0, nil } if page < 1 { page = 1 } var activities []*models.Activity var totalCount int64 db := service.PatientReadDB().Model(&models.Activity{}).Where("user_org_id = ? AND user_app_id = ? AND status = ?", orgID, appID, status) if len(keyWord) > 0 { likeParam := "%" + keyWord + "%" db = db.Where("title LIKE ?", likeParam) } err := db. Count(&totalCount). Order("ctime desc").Limit(count).Offset((page - 1) * count).Find(&activities). Error if err == nil { return activities, totalCount, nil } else { return nil, 0, err } } func GetDidEndedActivities(orgID int64, appID int64, keyWord string, page int, count int) ([]*models.Activity, int64, error) { if count <= 0 { return []*models.Activity{}, 0, nil } if page < 1 { page = 1 } var activities []*models.Activity var totalCount int64 now := time.Now().Unix() db := service.PatientReadDB().Model(&models.Activity{}).Where("user_org_id = ? AND user_app_id = ? AND status = 1 AND start_time < ?", orgID, appID, now) if len(keyWord) > 0 { likeParam := "%" + keyWord + "%" db = db.Where("title LIKE ?", likeParam) } err := db. Count(&totalCount). Order("ctime desc").Limit(count).Offset((page - 1) * count).Find(&activities). Error if err == nil { return activities, totalCount, nil } else { return nil, 0, err } }