record.go 4.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. package cases
  2. import (
  3. "spaceofcheng/services/models"
  4. "spaceofcheng/services/models/goods"
  5. "spaceofcheng/services/models/model"
  6. "spaceofcheng/services/utils"
  7. "strconv"
  8. "strings"
  9. "time"
  10. )
  11. // CaseRecord 月订单记录
  12. type CaseRecord struct {
  13. model.SysCaseRecord `xorm:"extends"`
  14. ActrualNum int
  15. OverNum int
  16. LeftNum int
  17. }
  18. const (
  19. ISOVER = 1
  20. ISNOOVER = 0
  21. )
  22. // GetCaseRecord 获取案场月记录
  23. func (m *CaseDAO) GetCaseRecord(caseids string, page, pageSize int) ([]CaseRecord, error) {
  24. var records []CaseRecord
  25. sql := `select * from sys_case_record where case_id in ('` + strings.Replace(caseids, ",", "','", -1) + `') and status=` + strconv.Itoa(models.STATUS_NORMAL) + ` order by create_date desc limit ` + strconv.Itoa((page-1)*pageSize) + `, ` + strconv.Itoa(pageSize)
  26. err := m.db.Sql(sql).Find(&records)
  27. if err != nil {
  28. return nil, err
  29. }
  30. for inx, record := range records {
  31. orders := new(model.TaGoodsOrders)
  32. total, err := m.db.Where("case_id=?", record.CaseId).
  33. And("status=?", models.STATUS_NORMAL).
  34. And("user_type in ('"+goods.USERTPE_SALES+"','"+goods.USERTYPE_MANAGER+"')").
  35. And("date_format(create_date,'%Y-%m')=?", record.Month).
  36. And("make_status !=?", "cancel").
  37. And("pay_type = ?", models.CONSUME_INNER).
  38. Sums(orders, "orders_num")
  39. if err != nil {
  40. return nil, err
  41. }
  42. records[inx].ActrualNum = int(total[0])
  43. var overnum int
  44. var leftnum int
  45. if records[inx].ActrualNum > record.Num {
  46. overnum = records[inx].ActrualNum - record.Num
  47. } else {
  48. leftnum = record.Num - records[inx].ActrualNum
  49. }
  50. records[inx].OverNum = overnum
  51. records[inx].LeftNum = leftnum
  52. }
  53. return records, err
  54. }
  55. // GetCaseRecordCount 获取月记录
  56. func (m *CaseDAO) GetCaseRecordCount(caseids string) (int, error) {
  57. var records []CaseRecord
  58. sql := `select * from sys_case_record where case_id in ('` + strings.Replace(caseids, ",", "','", -1) + `') and status>` + strconv.Itoa(models.STATUS_DEL)
  59. err := m.db.Sql(sql).Find(&records)
  60. if err != nil {
  61. return 0, err
  62. }
  63. return len(records), nil
  64. }
  65. // AddRecord 新增案场月记录信息
  66. func (m *CaseDAO) AddRecord(record model.SysCaseRecord) (*model.SysCaseRecord, error) {
  67. record.CreateDate = time.Now()
  68. record.RecordId = utils.GetGUID()
  69. record.Status = models.STATUS_NORMAL
  70. record.IsOver = ISOVER
  71. _, err := m.db.Insert(record)
  72. return &record, err
  73. }
  74. // GetRecordByMonth 根据月份获取月记录信息
  75. func (m *CaseDAO) GetRecordByMonth(caseid, month string) (*model.SysCaseRecord, error) {
  76. var record []model.SysCaseRecord
  77. sql := `select * from sys_case_record where case_id=? and status=? and month=?`
  78. err := m.db.Sql(sql, caseid, models.STATUS_NORMAL, month).Find(&record)
  79. if err != nil {
  80. return nil, err
  81. }
  82. if len(record) > 0 {
  83. return &record[0], nil
  84. }
  85. return nil, nil
  86. }
  87. // GetRecordByID 根据id获取月记录
  88. func (m *CaseDAO) GetRecordByID(recordid string) (*CaseRecord, error) {
  89. var records []CaseRecord
  90. sql := `select * from sys_case_record where record_id='` + recordid + `'`
  91. err := m.db.Sql(sql).Find(&records)
  92. if err != nil {
  93. return nil, err
  94. }
  95. if len(records) > 0 {
  96. var record = records[0]
  97. info, err := m.GetRecordWithNum(record)
  98. return info, err
  99. }
  100. return nil, nil
  101. }
  102. // GetRecordWithNum 获取月记录对应信息
  103. func (m *CaseDAO) GetRecordWithNum(record CaseRecord) (*CaseRecord, error) {
  104. orders := new(model.TaGoodsOrders)
  105. total, err := m.db.Where("case_id=?", record.CaseId).And("status=?", models.STATUS_NORMAL).And("user_type=?", goods.USERTPE_SALES).And("date_format(create_date,'%Y-%m')=?", record.Month).Sums(orders, "orders_num")
  106. if err != nil {
  107. return nil, err
  108. }
  109. record.ActrualNum = int(total[0])
  110. var overnum int
  111. var leftnum int
  112. if record.ActrualNum > record.Num {
  113. overnum = record.ActrualNum - record.Num
  114. } else {
  115. leftnum = record.Num - record.ActrualNum
  116. }
  117. record.OverNum = overnum
  118. record.LeftNum = leftnum
  119. return &record, err
  120. }
  121. // GetRecordByCase 获取案场当月记录信息
  122. func (m *CaseDAO) GetRecordByCase(caseid string) (*CaseRecord, error) {
  123. var records []CaseRecord
  124. sql := `select * from sys_case_record where month = date_format(NOW(),'%Y-%m') and case_id='` + caseid + `'`
  125. err := m.db.Sql(sql).Find(&records)
  126. if err != nil {
  127. return nil, err
  128. }
  129. if len(records) > 0 {
  130. var record = records[0]
  131. info, err := m.GetRecordWithNum(record)
  132. return info, err
  133. }
  134. return nil, nil
  135. }