up_stats_history.go 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. package upcrm
  2. import (
  3. "time"
  4. "go-common/app/admin/main/up/model/upcrmmodel"
  5. "go-common/library/log"
  6. "github.com/jinzhu/gorm"
  7. )
  8. const (
  9. upstatshistory = "up_stats_history"
  10. //ISO8601DATE only date format
  11. ISO8601DATE = "2006-01-02"
  12. )
  13. //GetUpStatLastDate get last update date from db
  14. func (d *Dao) GetUpStatLastDate(date time.Time) (lastday time.Time, err error) {
  15. var lasthistory upcrmmodel.UpStatsHistory
  16. err = d.crmdb.Table(upstatshistory).Select("generate_date").Order("generate_date desc").Limit(1).Find(&lasthistory).Error
  17. if err != nil {
  18. log.Error("get last date fail for up stat history, err=%+v", err)
  19. return
  20. }
  21. lastday = lasthistory.GenerateDate.Time()
  22. return
  23. }
  24. //QueryYesterday query yesterday db
  25. func (d *Dao) QueryYesterday(date time.Time) (res []*upcrmmodel.UpStatsHistory, err error) {
  26. err = d.crmdb.Table(upstatshistory).Where("generate_date = ? AND type in ( ?, ?, ? )", date.Format(ISO8601DATE), upcrmmodel.ActivityType, upcrmmodel.IncrType, upcrmmodel.TotalType).Find(&res).Error
  27. if err == gorm.ErrRecordNotFound {
  28. err = nil
  29. return
  30. }
  31. if err != nil {
  32. return nil, err
  33. }
  34. return
  35. }
  36. //QueryTrend query db
  37. func (d *Dao) QueryTrend(statType int, currentDate time.Time, days int) (res []*upcrmmodel.UpStatsHistory, err error) {
  38. // 这种type有3种子类型,需要加起来
  39. if statType == upcrmmodel.ActivityType {
  40. days *= 3
  41. }
  42. err = d.crmdb.Table(upstatshistory).Where("type = ? AND generate_date <=?", statType, currentDate.Format(ISO8601DATE)).Order("generate_date desc").Limit(days).Find(&res).Error
  43. if err == gorm.ErrRecordNotFound {
  44. err = nil
  45. return
  46. }
  47. if err != nil {
  48. return nil, err
  49. }
  50. return
  51. }
  52. //QueryDetail query db
  53. func (d *Dao) QueryDetail(startDate time.Time, endDate time.Time) (res []*upcrmmodel.UpStatsHistory, err error) {
  54. err = d.crmdb.Table(upstatshistory).Where("generate_date BETWEEN ? AND ?", startDate.Format(ISO8601DATE), endDate.Format(ISO8601DATE)).Order("generate_date Desc").Find(&res).Error
  55. if err == gorm.ErrRecordNotFound {
  56. err = nil
  57. return
  58. }
  59. if err != nil {
  60. return nil, err
  61. }
  62. return
  63. }