config_service.go 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. package service
  2. import (
  3. "ulink-admin/frame"
  4. "ulink-admin/modules/system/dao"
  5. "ulink-admin/modules/system/models/model"
  6. "ulink-admin/modules/system/models/req"
  7. "ulink-admin/pkg/cache"
  8. )
  9. type ConfigService struct {
  10. ConfigDao *dao.ConfigDao `inject:""`
  11. }
  12. // GetConfigKey 根据键名查询参数配置信息
  13. func (s ConfigService) GetConfigKey(param string) *model.SysConfig {
  14. //从缓存中取出数据判断是否存在,存在直接使用,不存在就从数据库查询
  15. key := cache.GetRedisConfigByKey(param)
  16. if key != nil {
  17. return key
  18. }
  19. configKey := s.ConfigDao.GetConfigKey(param)
  20. if configKey.Id > 0 {
  21. cache.SetRedisConfig(configKey)
  22. return configKey
  23. }
  24. return nil
  25. }
  26. // Find 分页查询数据
  27. func (s ConfigService) Find(query *req.ConfigQuery) (*[]model.SysConfig, int64) {
  28. return s.ConfigDao.List(query)
  29. }
  30. // Add 添加数据
  31. func (s ConfigService) Add(config *model.SysConfig) {
  32. //检验key是否存在
  33. if s.ConfigDao.Exist(model.SysConfig{}.TableName(), "config_key=?", config.ConfigKey) {
  34. frame.Throw(frame.BUSINESS_CODE, "新增参数'"+config.ConfigName+"'失败,参数键名已存在")
  35. }
  36. s.ConfigDao.Insert(config)
  37. //进行缓存数据添加
  38. cache.SetDictCache(config.ConfigKey, config.MarshalDictObj(config))
  39. }
  40. // GetInfo 查询数据
  41. func (s ConfigService) GetInfo(id int64) *model.SysConfig {
  42. config := new(model.SysConfig)
  43. s.ConfigDao.GetById(id, config)
  44. return config
  45. }
  46. // Update 修改数据
  47. func (s ConfigService) Update(config *model.SysConfig) {
  48. //检验key是否存在
  49. if s.ConfigDao.Exist(model.SysConfig{}.TableName(), "config_key=? and id!=?", config.ConfigKey, config.Id) {
  50. frame.Throw(frame.BUSINESS_CODE, "新增参数'"+config.ConfigName+"'失败,参数键名已存在")
  51. }
  52. s.ConfigDao.Update(config)
  53. cache.SetDictCache(config.ConfigKey, config.MarshalDictObj(config))
  54. }
  55. // Remove 批量删除
  56. func (s ConfigService) Remove(list []int64) {
  57. //进行校验,查看是否可以删除
  58. byIds := s.ConfigDao.CheckConfigByIds(list)
  59. for _, config := range *byIds {
  60. if config.ConfigType == "Y" {
  61. frame.Throw(frame.BUSINESS_CODE, "内置参数"+config.ConfigName+"不能删除")
  62. }
  63. }
  64. s.ConfigDao.Delete(&model.SysConfig{}, list)
  65. //刷新缓存
  66. strs := make([]string, 0)
  67. for _, config := range *byIds {
  68. strs = append(strs, config.ConfigKey)
  69. }
  70. cache.RemoveList(strs)
  71. }
  72. // CheckConfigByIds 根据id集合查询
  73. func (s ConfigService) CheckConfigByIds(list []int64) *[]model.SysConfig {
  74. return s.ConfigDao.CheckConfigByIds(list)
  75. }
  76. // FindAll 查询所有数据
  77. func (s ConfigService) FindAll() *[]model.SysConfig {
  78. return s.ConfigDao.FindAll()
  79. }