sys_config.go 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. package service
  2. import (
  3. "dashoo.cn/micro/app/common/global"
  4. comModel "dashoo.cn/micro/app/common/model"
  5. comService "dashoo.cn/micro/app/common/service"
  6. "dashoo.cn/micro/app/dao"
  7. "dashoo.cn/micro/app/model"
  8. "github.com/gogf/gf/errors/gerror"
  9. "github.com/gogf/gf/frame/g"
  10. "github.com/gogf/gf/util/gconv"
  11. )
  12. type sysConfig struct {
  13. }
  14. var SysConfig = new(sysConfig)
  15. func (s *sysConfig) SelectListByPage(req *model.SysConfigSearchReq) (total, page int, list []*model.SysConfig, err error) {
  16. m := dao.SysConfig.Ctx(req.Ctx)
  17. if req != nil {
  18. if req.ConfigName != "" {
  19. m = m.Where("config_name like ?", "%"+req.ConfigName+"%")
  20. }
  21. if req.ConfigType != "" {
  22. m = m.Where("config_type = ", gconv.Int(req.ConfigType))
  23. }
  24. if req.ConfigKey != "" {
  25. m = m.Where("config_key like ?", "%"+req.ConfigKey+"%")
  26. }
  27. if req.BeginTime != "" {
  28. m = m.Where("create_time >= ? ", req.BeginTime)
  29. }
  30. if req.EndTime != "" {
  31. m = m.Where("create_time<=?", req.EndTime)
  32. }
  33. }
  34. total, err = m.Count()
  35. if err != nil {
  36. g.Log().Error(err)
  37. err = gerror.New("获取总行数失败")
  38. return
  39. }
  40. if req.PageNum == 0 {
  41. req.PageNum = 1
  42. }
  43. page = req.PageNum
  44. if req.PageSize == 0 {
  45. req.PageSize = comModel.PageSize
  46. }
  47. err = m.Page(page, req.PageSize).Order("config_id asc").Scan(&list)
  48. if err != nil {
  49. g.Log().Error(err)
  50. err = gerror.New("获取数据失败")
  51. return
  52. }
  53. return
  54. }
  55. // CheckConfigKeyUniqueAll 验证参数键名是否存在
  56. func (s *sysConfig) CheckConfigKeyUniqueAll(configKey string) error {
  57. entity, err := dao.SysConfig.Fields(dao.SysConfig.Columns.Id).FindOne(dao.SysConfig.Columns.ConfigKey, configKey)
  58. if err != nil {
  59. g.Log().Error(err)
  60. return gerror.New("校验数据失败")
  61. }
  62. if entity != nil {
  63. return gerror.New("参数键名已经存在")
  64. }
  65. return nil
  66. }
  67. // AddSave 添加操作
  68. func (s *sysConfig) AddSave(req *model.SysConfigAddReq) (err error) {
  69. _, err = dao.SysConfig.Insert(req)
  70. return
  71. }
  72. func (s *sysConfig) GetById(id int) (data *model.SysConfig, err error) {
  73. err = dao.SysConfig.WherePri(id).Scan(&data)
  74. return
  75. }
  76. // CheckConfigKeyUnique 检查键是否已经存在
  77. func (s *sysConfig) CheckConfigKeyUnique(configKey string, configId int64) error {
  78. entity, err := dao.SysConfig.Fields(dao.SysConfig.Columns.Id).
  79. FindOne(dao.SysConfig.Columns.ConfigKey+"=? and "+dao.SysConfig.Columns.Id+"!=?",
  80. configKey, configId)
  81. if err != nil {
  82. g.Log().Error(err)
  83. return gerror.New("校验数据失败")
  84. }
  85. if entity != nil {
  86. return gerror.New("参数键名已经存在")
  87. }
  88. return nil
  89. }
  90. // EditSave 修改系统参数
  91. func (s *sysConfig) EditSave(req *model.SysConfigEditReq) (err error) {
  92. _, err = dao.SysConfig.FieldsEx(dao.SysConfig.Columns.Id, dao.SysConfig.Columns.CreatedBy).
  93. WherePri(req.ConfigId).Data(req).Update()
  94. return
  95. }
  96. // DeleteByIds 删除
  97. func (s *sysConfig) DeleteByIds(ids []int) error {
  98. _, err := dao.SysConfig.Delete(dao.SysConfig.Columns.Id+" in (?)", ids)
  99. if err != nil {
  100. g.Log().Error(err)
  101. return gerror.New("删除失败")
  102. }
  103. return nil
  104. }
  105. // GetConfigByKey 通过key获取参数(从缓存获取)
  106. func (s *sysConfig) GetConfigByKey(key string) (config *model.SysConfig, err error) {
  107. if key == "" {
  108. err = gerror.New("参数key不能为空")
  109. return
  110. }
  111. cache := comService.Cache.New()
  112. cf := cache.Get(global.SysConfigTag + key)
  113. if cf != nil {
  114. err = gconv.Struct(cf, &config)
  115. return
  116. }
  117. config, err = s.GetByKey(key)
  118. if err != nil {
  119. return
  120. }
  121. if config != nil {
  122. cache.Set(global.SysConfigTag+key, config, 0, global.SysConfigTag)
  123. }
  124. return
  125. }
  126. // GetByKey 通过key获取参数(从数据库获取)
  127. func (s *sysConfig) GetByKey(key string) (config *model.SysConfig, err error) {
  128. err = dao.SysConfig.Where("config_key", key).Scan(&config)
  129. if err != nil {
  130. g.Log().Error(err)
  131. err = gerror.New("获取配置失败")
  132. }
  133. return
  134. }