image_record.go 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. package levelMonitor
  2. import (
  3. "errors"
  4. "go.uber.org/zap"
  5. "gorm.io/gorm"
  6. "log-server/global"
  7. "log-server/model/common/request"
  8. "log-server/model/levelMonitor"
  9. levelRequest "log-server/model/levelMonitor/request"
  10. "time"
  11. )
  12. type ImageRecordService struct {
  13. }
  14. //创建图片记录
  15. func (s *ImageRecordService) CreateImageRecord (record levelMonitor.ImageRecord) (err error) {
  16. //获取今日日期
  17. date := time.Now().Format("2006-01-02")
  18. var entity levelMonitor.ImageRecord
  19. //创建日期赋值
  20. record.CreateDate = date
  21. record.Status = 2
  22. //查找数据库是否存在此账号此游戏今日记录
  23. err = global.GVA_DB.Model(&levelMonitor.ImageRecord{}).Where("task_id = ? and account = ? and create_date = ?", record.TaskId, record.Account, date).First(&entity).Error
  24. if !errors.Is(err , gorm.ErrRecordNotFound) {
  25. return errors.New("此记录已存在,请勿重复添加")
  26. }
  27. return global.GVA_DB.Model(&levelMonitor.ImageRecord{}).Omit("create_time", "update_time").Create(&record).Error
  28. }
  29. //删除三日前的图片记录
  30. func (s *ImageRecordService) DeleteExpireImageRecord() () {
  31. markTime := time.Now().Add(-time.Hour * 48).Format("2006-01-02")
  32. err := global.GVA_DB.Model(&levelMonitor.ImageRecord{}).Delete("create_date < ?", markTime).Error
  33. if err != nil {
  34. global.GVA_LOG.Info("删除图片信息失败:" + err.Error() + time.Now().Format("2006-01-02 15:04:05"))
  35. }
  36. return
  37. }
  38. //获取图片记录列表
  39. func (s *ImageRecordService) GetImageRecordList(record levelRequest.ImageRecordRequest, info request.PageInfo, order string, desc bool) (recordList []levelMonitor.ImageRecord, total int64, err error) {
  40. limit := info.PageSize
  41. offset := info.PageSize * (info.Page - 1)
  42. db := global.GVA_DB.Model(&levelMonitor.ImageRecord{})
  43. startDate := time.Now().Format("2006-01-02")
  44. endDate := time.Now().Format("2006-01-02")
  45. if len(record.Date) == 2 {
  46. startDate = record.Date[0]
  47. endDate = record.Date[1]
  48. }
  49. //筛选日期
  50. db = db.Where("create_date >= ? and create_date <= ?", startDate, endDate)
  51. if record.TaskId != 0 {
  52. db = db.Where("task_id = ?", record.TaskId)
  53. }
  54. err = db.Count(&total).Error
  55. if err != nil {
  56. return recordList, total, err
  57. } else {
  58. db = db.Limit(limit).Offset(offset)
  59. if order != "" {
  60. var OrderStr string
  61. // 设置有效排序key 防止sql注入
  62. // 感谢 Tom4t0 提交漏洞信息
  63. orderMap := make(map[string]bool, 4)
  64. orderMap["task_id"] = true
  65. orderMap["create_date"] = true
  66. orderMap["create_time"] = true
  67. orderMap["update_time"] = true
  68. if orderMap[order] {
  69. if desc {
  70. OrderStr = order + " desc"
  71. } else {
  72. OrderStr = order
  73. }
  74. } else { // didn't matched any order key in `orderMap`
  75. global.GVA_LOG.Error("获取失败!", zap.Error(err))
  76. return recordList, total, err
  77. }
  78. err = db.Order(OrderStr).Find(&recordList).Error
  79. } else {
  80. err = db.Order("id desc").Find(&recordList).Error
  81. }
  82. }
  83. //遍历更改日期格式
  84. for i, _ := range recordList {
  85. recordList[i].CreateDate = recordList[i].CreateDate[:10]
  86. }
  87. return recordList, total, err
  88. }