scrm-go

sms_service.go 1.1KB

1234567891011121314151617181920212223242526272829303132
  1. package sms_service
  2. import (
  3. "SCRM/models"
  4. "SCRM/service"
  5. )
  6. func GetBatchSendRecords(orgID int64, page int, count int) ([]*SMSBatchListViewModel, int, error) {
  7. if count <= 0 {
  8. return []*SMSBatchListViewModel{}, 0, nil
  9. }
  10. var viewModels []*SMSBatchListViewModel = make([]*SMSBatchListViewModel, 0)
  11. readDB := service.PatientReadDB()
  12. var total int
  13. getTotalErr := readDB.Model(&models.SMSBatch{}).Where("org_id = ?", orgID).Count(&total).Error
  14. if getTotalErr != nil {
  15. return nil, 0, getTotalErr
  16. }
  17. rows, err := readDB.Raw("SELECT b.full_content, b.status, (SELECT COUNT(id) AS c FROM sgj_patient_sms_send_status WHERE batch_id = b.id) AS total_count, (SELECT COUNT(id) AS c FROM sgj_patient_sms_send_status WHERE batch_id = b.id AND STATUS = '1') AS success_count FROM sgj_patient_sms_batch AS b WHERE b.org_id = ? ORDER BY b.id LIMIT ? OFFSET ?;", orgID, count, (page-1)*count).Rows()
  18. defer rows.Close()
  19. if err != nil {
  20. return nil, 0, err
  21. }
  22. for rows.Next() {
  23. var viewModel SMSBatchListViewModel
  24. readDB.ScanRows(rows, &viewModel)
  25. viewModels = append(viewModels, &viewModel)
  26. }
  27. return viewModels, total, nil
  28. }