sys_config.go 3.6 KB

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