log_env.go 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. package log
  2. import (
  3. "errors"
  4. "gorm.io/gorm"
  5. "log-server/global"
  6. "log-server/model/log"
  7. "log-server/model/log/request"
  8. "log-server/model/log/response"
  9. "time"
  10. )
  11. type ServiceLogEnv struct {
  12. }
  13. func (s *ServiceLogEnv) CreateEnv(env log.EnvLog) (err error) {
  14. env.CreateTime = time.Now().Format("2006-01-02 15:04:05")
  15. env.UpdateTime = time.Now().Format("2006-01-02 15:04:05")
  16. if !errors.Is(global.GVA_DB.Where("coding = ?", env.Coding).First(&log.EnvLog{}).Error, gorm.ErrRecordNotFound) {
  17. return errors.New("存在相同coding")
  18. }
  19. return global.GVA_DB.Create(&env).Error
  20. }
  21. func (s *ServiceLogEnv) UpdateEnv(requestCoding request.EnvLogRequest) (err error) {
  22. logCoding := new(log.EnvLog)
  23. err = global.GVA_DB.Where("id = ?", requestCoding.Id).First(logCoding).Error
  24. if err != nil {
  25. return err
  26. }
  27. var coding = make(map[string]interface{})
  28. coding["coding"] = requestCoding.Coding
  29. coding["describe"] = requestCoding.Describe
  30. coding["update_time"] = time.Now().Format("2006-01-02 15:04:05")
  31. err = global.GVA_DB.Model(&log.CodingLog{}).Where("id", requestCoding.Id).Updates(coding).Error
  32. return err
  33. }
  34. func (s *ServiceLogEnv) GetEnvById(id int) (coding response.EnvLogReply, err error) {
  35. var api log.EnvLog
  36. err = global.GVA_DB.Where("id = ?", id).First(&api).Error
  37. if err != nil {
  38. return
  39. }
  40. coding.Id = api.Id
  41. coding.Coding = api.Coding
  42. coding.Describe = api.Describe
  43. coding.UpdateTime = api.UpdateTime
  44. coding.CreateTime = api.CreateTime
  45. return
  46. }
  47. func (s *ServiceLogEnv) GetEnvList(order string, desc bool) (list interface{}, total int64, err error) {
  48. db := global.GVA_DB.Model(&log.EnvLog{})
  49. var apiList []log.EnvLog
  50. err = db.Count(&total).Error
  51. if err != nil {
  52. return apiList, total, err
  53. } else {
  54. if order != "" {
  55. var OrderStr string
  56. // 设置有效排序key 防止sql注入
  57. // 感谢 Tom4t0 提交漏洞信息
  58. orderMap := make(map[string]bool, 4)
  59. orderMap["id"] = true
  60. if orderMap[order] {
  61. if desc {
  62. OrderStr = order + " desc"
  63. } else {
  64. OrderStr = order
  65. }
  66. } else { // didn't matched any order key in `orderMap`
  67. //global.GVA_LOG.Error(fmt.Sprintf("非法的排序字段: %v", order))
  68. return apiList, total, err
  69. }
  70. err = db.Order(OrderStr).Find(&apiList).Error
  71. } else {
  72. err = db.Order("id").Find(&apiList).Error
  73. }
  74. }
  75. var apisReply []*response.EnvLogReply
  76. if len(apiList) != 0 {
  77. for _, apiInfo := range apiList {
  78. coding := new(response.EnvLogReply)
  79. coding.Id = apiInfo.Id
  80. coding.Coding = apiInfo.Coding
  81. coding.Describe = apiInfo.Describe
  82. coding.UpdateTime = apiInfo.UpdateTime
  83. coding.CreateTime = apiInfo.CreateTime
  84. apisReply = append(apisReply, coding)
  85. }
  86. }
  87. return apisReply, total, err
  88. }