sys_config.go 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. package service
  2. import (
  3. "context"
  4. "dashoo.cn/micro/app/dao"
  5. "dashoo.cn/micro/app/model"
  6. "dashoo.cn/opms_libary/myerrors"
  7. "github.com/gogf/gf/util/gconv"
  8. )
  9. type ConfigService struct {
  10. *contextService
  11. Dao *dao.SysConfigDao
  12. }
  13. func NewConfigService(ctx context.Context) (svc *ConfigService, err error) {
  14. svc = new(ConfigService)
  15. if svc.contextService, err = svc.Init(ctx); err != nil {
  16. return nil, err
  17. }
  18. svc.Dao = dao.NewSysConfigDao(svc.Tenant)
  19. svc.Table = svc.Dao.Table
  20. return svc, nil
  21. }
  22. func (s *ConfigService) GetList(req *model.SysConfigSearchReq) (total int, list []*model.SysConfig, err error) {
  23. m := s.Dao.Ctx(req.Ctx)
  24. if req != nil {
  25. if req.ConfigName != "" {
  26. m = m.Where("config_name like ?", "%"+req.ConfigName+"%")
  27. }
  28. if req.ConfigType != "" {
  29. m = m.Where("config_type = ", gconv.Int(req.ConfigType))
  30. }
  31. if req.ConfigKey != "" {
  32. m = m.Where("config_key like ?", "%"+req.ConfigKey+"%")
  33. }
  34. if req.BeginTime != "" {
  35. m = m.Where("create_time >= ? ", req.BeginTime)
  36. }
  37. if req.EndTime != "" {
  38. m = m.Where("create_time<=?", req.EndTime)
  39. }
  40. }
  41. total, err = m.Count()
  42. if err != nil {
  43. return
  44. }
  45. err = m.Page(req.GetPage()).Scan(&list)
  46. if err != nil {
  47. return
  48. }
  49. return
  50. }
  51. func (s *ConfigService) GetEntityById(id int64) (config *model.SysConfig, err error) {
  52. config, err = s.Dao.WherePri(id).One()
  53. return
  54. }
  55. // GetEntityByKey 通过key获取参数(从缓存获取)
  56. func (s *ConfigService) GetEntityByKey(key string) (config *model.SysConfig, err error) {
  57. if key == "" {
  58. err = myerrors.TipsError("参数key不能为空")
  59. return
  60. }
  61. config, err = s.GetByKey(key)
  62. if err != nil {
  63. return
  64. }
  65. return
  66. }
  67. // GetByKey 通过key获取参数(从数据库获取)
  68. func (s *ConfigService) GetByKey(key string) (config *model.SysConfig, err error) {
  69. config, err = s.Dao.Where(s.Dao.Columns.ConfigKey, key).One()
  70. return
  71. }
  72. // CheckConfigKeyUniqueAll 验证参数键名是否存在
  73. func (s *ConfigService) CheckConfigKeyUniqueAll(configKey string) error {
  74. entity, err := s.Dao.Fields(s.Dao.Columns.Id).Where(s.Dao.Columns.ConfigKey, configKey).FindOne()
  75. if err != nil {
  76. return myerrors.TipsError("参数键名校验数据失败")
  77. }
  78. if entity != nil {
  79. return myerrors.ValidError("参数键名已经存在")
  80. }
  81. return nil
  82. }
  83. // CheckConfigKeyUnique 检查键是否已经存在
  84. func (s *ConfigService) CheckConfigKeyUnique(configKey string, configId int64) error {
  85. entity, err := s.Dao.Fields(s.Dao.Columns.Id).Where(s.Dao.Columns.ConfigKey, configKey).WhereNot(s.Dao.Columns.Id, configId).FindOne()
  86. if err != nil {
  87. return myerrors.TipsError("参数键名校验数据失败")
  88. }
  89. if entity != nil {
  90. return myerrors.ValidError("参数键名已经存在")
  91. }
  92. return nil
  93. }
  94. // Create 添加操作
  95. func (s *ConfigService) Create(req *model.CreateSysConfigReq) (err error) {
  96. err = s.CheckConfigKeyUniqueAll(req.ConfigKey)
  97. if err != nil {
  98. return err
  99. }
  100. data := new(model.SysConfig)
  101. if err := gconv.Struct(req, data); err != nil {
  102. return err
  103. }
  104. SetCreatedInfo(data, s.GetCxtUserId(), s.GetCxtUserName())
  105. _, err = s.Dao.Insert(data)
  106. return
  107. }
  108. // UpdateById 修改系统参数
  109. func (s *ConfigService) UpdateById(req *model.UpdateSysConfigReq) (err error) {
  110. err = s.CheckConfigKeyUnique(req.ConfigKey, req.Id)
  111. if err != nil {
  112. return err
  113. }
  114. data := new(model.SysConfig)
  115. if err := gconv.Struct(req, data); err != nil {
  116. return err
  117. }
  118. SetUpdatedInfo(data, s.GetCxtUserId(), s.GetCxtUserName())
  119. _, err = s.Dao.FieldsEx(UpdateFieldEx...).WherePri(req.Id).Data(data).Update()
  120. return
  121. }
  122. // DeleteByIds 删除
  123. func (s *ConfigService) DeleteByIds(ids []int64) error {
  124. _, err := s.Dao.WhereIn(s.Dao.Columns.Id, ids).Delete()
  125. return err
  126. }