123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. package card
  2. import (
  3. "spaceofcheng/services/models/model"
  4. "spaceofcheng/services/utils"
  5. "strconv"
  6. "github.com/go-xorm/xorm"
  7. )
  8. // RecordDAO 当前数据库操作对象
  9. type RecordDAO struct {
  10. ctx *utils.Context
  11. db *xorm.Session
  12. }
  13. // NewRecordDAO New Inst
  14. func NewRecordDAO(ctx *utils.Context) *RecordDAO {
  15. return &RecordDAO{
  16. ctx: ctx,
  17. db: ctx.DB,
  18. }
  19. }
  20. // RecordInfo 卡
  21. type RecordInfo struct {
  22. model.TaCouponGiveRecord `xorm:"extends"`
  23. CustomerName string
  24. Phone string
  25. RecommendName string
  26. }
  27. // getRecordList 根据条件查询赠送记录
  28. func (c *RecordDAO) GetRecordList(startDate string, endDate string, person string, page int, pageSize int) ([]RecordInfo, error) {
  29. var info []RecordInfo
  30. sql := "select tc.customer_name,tc.phone,tc.recommend_name,tgr.* from ta_coupon_give_record tgr LEFT JOIN ta_customer tc on tgr.to_id = tc.customer_id"
  31. if startDate != "" || endDate != "" || person != "" {
  32. sql = sql + ` WHERE`
  33. }
  34. // 传入了开始时间的时候
  35. if startDate != "" {
  36. sql = sql + ` DATE_FORMAT(tgr.create_date,'%Y-%m-%d') >= DATE_FORMAT('` + startDate + `','%Y-%m-%d')`
  37. }
  38. // 传入了结束时间的时候
  39. if endDate != "" {
  40. // 传入了开始时间的时候,添加 and
  41. if startDate != "" {
  42. sql = sql + ` and`
  43. }
  44. sql = sql + ` DATE_FORMAT(tgr.create_date,'%Y-%m-%d') <= DATE_FORMAT('` + endDate + `','%Y-%m-%d')`
  45. }
  46. if person != "" {
  47. // 传入了 开始时间 或者 结束时间 的时候,添加 and
  48. if startDate != "" || endDate != "" {
  49. sql = sql + ` and`
  50. }
  51. sql = sql + ` tc.recommend_name like '%` + person + `%'`
  52. }
  53. sql = sql + ` ORDER BY tgr.create_date desc limit ` + strconv.Itoa((page-1)*pageSize) + `, ` + strconv.Itoa(pageSize)
  54. err := c.db.SQL(sql).Find(&info)
  55. if err != nil {
  56. return nil, err
  57. }
  58. return info, err
  59. }
  60. // GetRecordCount 获取count
  61. func (c *RecordDAO) GetRecordCount(startDate string, endDate string, person string) (int, error) {
  62. var info []RecordInfo
  63. sql := "select tc.customer_name,tc.phone,tc.recommend_name,tgr.* from ta_coupon_give_record tgr LEFT JOIN ta_customer tc on tgr.to_id = tc.customer_id"
  64. if startDate != "" || endDate != "" || person != "" {
  65. sql = sql + ` WHERE`
  66. }
  67. // 传入了开始时间的时候
  68. if startDate != "" {
  69. sql = sql + ` DATE_FORMAT(tgr.create_date,'%Y-%m-%d') >= DATE_FORMAT('` + startDate + `','%Y-%m-%d')`
  70. }
  71. // 传入了结束时间的时候
  72. if endDate != "" {
  73. // 传入了开始时间的时候,添加 and
  74. if startDate != "" {
  75. sql = sql + ` and`
  76. }
  77. sql = sql + ` DATE_FORMAT(tgr.create_date,'%Y-%m-%d') <= DATE_FORMAT('` + endDate + `','%Y-%m-%d')`
  78. }
  79. if person != "" {
  80. // 传入了 开始时间 或者 结束时间 的时候,添加 and
  81. if startDate != "" || endDate != "" {
  82. sql = sql + ` and`
  83. }
  84. sql = sql + ` tc.recommend_name like '%` + person + `%'`
  85. }
  86. err := c.db.SQL(sql).Find(&info)
  87. if err != nil {
  88. return 0, err
  89. }
  90. return len(info), err
  91. }