cache_cmd.go 9.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316
  1. package cache
  2. import (
  3. "context"
  4. "encoding/json"
  5. "errors"
  6. "fmt"
  7. "github.com/go-redis/redis/v8"
  8. "log"
  9. "strings"
  10. "sync"
  11. "time"
  12. apiViewModel "xps/pkg/api/viewmodel"
  13. bizViewModel "xps/pkg/biz/viewmodel"
  14. modelViewModel "xps/pkg/model/viewmodel"
  15. sysViewModel "xps/pkg/system/viewmodel"
  16. )
  17. var ErrRedisInit = errors.New("缓存初始化失败")
  18. var (
  19. once sync.Once
  20. cacheClient redis.UniversalClient
  21. )
  22. var CONFIG = Redis{
  23. DB: 0,
  24. Addr: "127.0.0.1:6379",
  25. Password: "",
  26. PoolSize: 0,
  27. }
  28. func init() {
  29. if Instance() == nil {
  30. log.Fatal(ErrRedisInit)
  31. }
  32. // 初始化配置数据到缓存
  33. InitCacheData()
  34. }
  35. func Instance() redis.UniversalClient {
  36. once.Do(func() {
  37. universalOptions := &redis.UniversalOptions{
  38. Addrs: strings.Split(CONFIG.Addr, ","),
  39. Password: CONFIG.Password,
  40. PoolSize: int(CONFIG.PoolSize),
  41. IdleTimeout: 300 * time.Second,
  42. }
  43. cacheClient = redis.NewUniversalClient(universalOptions)
  44. })
  45. return cacheClient
  46. }
  47. func SetUserData(userId int64, userData *sysViewModel.UserData) error {
  48. keyStr := fmt.Sprintf("user_%d", userId)
  49. return SetCache(keyStr, userData, 0)
  50. }
  51. func GetUserData(userId int64) (*sysViewModel.UserData, error) {
  52. keyStr := fmt.Sprintf("user_%d", userId)
  53. userData := &sysViewModel.UserData{}
  54. err := Instance().Get(context.Background(), keyStr).Scan(userData)
  55. if err != nil {
  56. return nil, err
  57. }
  58. return userData, nil
  59. }
  60. func DeleteUserData(userId int64) (int64, error) {
  61. keyStr := fmt.Sprintf("user_%d", userId)
  62. return Instance().Del(context.Background(), keyStr).Result()
  63. }
  64. func SetModelObject(objectCode string, data *modelViewModel.ModelObjectInfo) error {
  65. keyStr := fmt.Sprintf("model_object_%s", objectCode)
  66. return SetCache(keyStr, data, 0)
  67. }
  68. func GetModelObject(objectCode string) (*modelViewModel.ModelObjectInfo, error) {
  69. keyStr := fmt.Sprintf("model_object_%s", objectCode)
  70. modelObjectInfo := &modelViewModel.ModelObjectInfo{}
  71. err := Instance().Get(context.Background(), keyStr).Scan(modelObjectInfo)
  72. if err != nil {
  73. return nil, err
  74. }
  75. return modelObjectInfo, nil
  76. }
  77. func SetModelObjectAttrs(objectCode string, data []modelViewModel.ModelObjectAttrInfo) error {
  78. keyStr := fmt.Sprintf("model_object_attr_%s", objectCode)
  79. dataList, _ := json.Marshal(data)
  80. err := Instance().Set(context.Background(), keyStr, dataList, 0).Err()
  81. if err != nil {
  82. return err
  83. }
  84. return nil
  85. }
  86. func GetModelObjectAttrs(objectCode string) ([]modelViewModel.ModelObjectAttrInfo, error) {
  87. keyStr := fmt.Sprintf("model_object_attr_%s", objectCode)
  88. bytes, err := Instance().Get(context.Background(), keyStr).Bytes()
  89. if err != nil {
  90. return nil, err
  91. }
  92. modelObjectAttrInfo := make([]modelViewModel.ModelObjectAttrInfo, 0)
  93. err = json.Unmarshal(bytes, &modelObjectAttrInfo)
  94. if err != nil {
  95. return nil, err
  96. }
  97. return modelObjectAttrInfo, nil
  98. }
  99. // SetModelObjectOAM : Model Object OAM
  100. func SetModelObjectOAM(objectCode, oamCode string, data *modelViewModel.ModelObjectOAMInfo) error {
  101. keyStr := fmt.Sprintf("model_object_oam_%s_%s", objectCode, oamCode)
  102. return SetCache(keyStr, data, 0)
  103. }
  104. // GetModelObjectOAM : Model Object OAM
  105. func GetModelObjectOAM(objectCode, oamCode string) (*modelViewModel.ModelObjectOAMInfo, error) {
  106. keyStr := fmt.Sprintf("model_object_oam_%s_%s", objectCode, oamCode)
  107. oamData := &modelViewModel.ModelObjectOAMInfo{}
  108. err := Instance().Get(context.Background(), keyStr).Scan(oamData)
  109. if err != nil {
  110. return nil, err
  111. }
  112. return oamData, nil
  113. }
  114. // SetBizObject : Biz Object
  115. func SetBizObject(objectCode string, data *bizViewModel.BizObjectInfo) error {
  116. keyStr := fmt.Sprintf("biz_object_%s", objectCode)
  117. return SetCache(keyStr, data, 0)
  118. }
  119. // GetBizObject : Biz Object
  120. func GetBizObject(objectCode string) (*bizViewModel.BizObjectInfo, error) {
  121. keyStr := fmt.Sprintf("biz_object_%s", objectCode)
  122. bizObjectInfo := &bizViewModel.BizObjectInfo{}
  123. err := Instance().Get(context.Background(), keyStr).Scan(bizObjectInfo)
  124. if err != nil {
  125. return nil, err
  126. }
  127. return bizObjectInfo, nil
  128. }
  129. // SetBizObjectAttrs : Biz Object Attrs
  130. func SetBizObjectAttrs(objectCode string, data []bizViewModel.BizObjectAttrInfo) error {
  131. keyStr := fmt.Sprintf("biz_object_attrs_%s", objectCode)
  132. dataList, _ := json.Marshal(data)
  133. err := Instance().Set(context.Background(), keyStr, dataList, 0).Err()
  134. if err != nil {
  135. return err
  136. }
  137. return nil
  138. }
  139. // GetBizObjectAttrs : Biz Object Attrs
  140. func GetBizObjectAttrs(objectCode string) ([]bizViewModel.BizObjectAttrInfo, error) {
  141. keyStr := fmt.Sprintf("biz_object_attrs_%s", objectCode)
  142. bytes, err := Instance().Get(context.Background(), keyStr).Bytes()
  143. if err != nil {
  144. return nil, err
  145. }
  146. bizObjectAttrs := make([]bizViewModel.BizObjectAttrInfo, 0)
  147. err2 := json.Unmarshal(bytes, &bizObjectAttrs)
  148. if err2 != nil {
  149. return nil, err2
  150. }
  151. return bizObjectAttrs, nil
  152. }
  153. // SetBizObjectOAM : Biz Object OAM
  154. func SetBizObjectOAM(objectCode, oamCode string, data *bizViewModel.BizObjectOAMInfo) error {
  155. keyStr := fmt.Sprintf("biz_object_oam_%s_%s", objectCode, oamCode)
  156. return SetCache(keyStr, data, 0)
  157. }
  158. // GetBizObjectOAM : Biz Object OAM
  159. func GetBizObjectOAM(objectCode, oamCode string) (*bizViewModel.BizObjectOAMInfo, error) {
  160. keyStr := fmt.Sprintf("biz_object_oam_%s_%s", objectCode, oamCode)
  161. oamData := &bizViewModel.BizObjectOAMInfo{}
  162. err := Instance().Get(context.Background(), keyStr).Scan(oamData)
  163. if err != nil {
  164. return nil, err
  165. }
  166. return oamData, nil
  167. }
  168. // SetBizObjectOAMRules : Biz Object OAM Rules
  169. func SetBizObjectOAMRules(objectCode, oamCode string, data []bizViewModel.BizObjectOAMRuleInfo) error {
  170. keyStr := fmt.Sprintf("biz_object_oam_rules_%s_%s", objectCode, oamCode)
  171. dataList, _ := json.Marshal(data)
  172. err := Instance().Set(context.Background(), keyStr, dataList, 0).Err()
  173. if err != nil {
  174. return err
  175. }
  176. return nil
  177. }
  178. // GetBizObjectOAMRules : Biz Object OAM Rules
  179. func GetBizObjectOAMRules(objectCode, oamCode string) ([]bizViewModel.BizObjectOAMRuleInfo, error) {
  180. keyStr := fmt.Sprintf("biz_object_oam_rules_%s_%s", objectCode, oamCode)
  181. bytes, err1 := Instance().Get(context.Background(), keyStr).Bytes()
  182. if err1 != nil {
  183. return nil, err1
  184. }
  185. dataList := make([]bizViewModel.BizObjectOAMRuleInfo, 0)
  186. err2 := json.Unmarshal(bytes, &dataList)
  187. if err2 != nil {
  188. return nil, err2
  189. }
  190. return dataList, nil
  191. }
  192. // SetBizObjectOAMParams : Biz Object OAM Params
  193. func SetBizObjectOAMParams(objectCode, oamCode string, data []bizViewModel.BizObjectOAMParamsInfo) error {
  194. keyStr := fmt.Sprintf("biz_object_oam_params_%s_%s", objectCode, oamCode)
  195. dataList, _ := json.Marshal(data)
  196. err := Instance().Set(context.Background(), keyStr, dataList, 0).Err()
  197. if err != nil {
  198. return err
  199. }
  200. return nil
  201. }
  202. // GetBizObjectOAMParams : Biz Object OAM Params
  203. func GetBizObjectOAMParams(objectCode, oamCode string) ([]bizViewModel.BizObjectOAMParamsInfo, error) {
  204. keyStr := fmt.Sprintf("biz_object_oam_params_%s_%s", objectCode, oamCode)
  205. bytes, err1 := Instance().Get(context.Background(), keyStr).Bytes()
  206. if err1 != nil {
  207. return nil, err1
  208. }
  209. dataList := make([]bizViewModel.BizObjectOAMParamsInfo, 0)
  210. err2 := json.Unmarshal(bytes, &dataList)
  211. if err2 != nil {
  212. return nil, err2
  213. }
  214. return dataList, nil
  215. }
  216. // SetBizObjectOAMMapping : Biz Object OAM Mapping
  217. func SetBizObjectOAMMapping(objectCode, oamCode string, data []bizViewModel.BizObjectOAMMappingInfo) error {
  218. keyStr := fmt.Sprintf("biz_object_oam_mapping_%s_%s", objectCode, oamCode)
  219. dataList, _ := json.Marshal(data)
  220. err := Instance().Set(context.Background(), keyStr, dataList, 0).Err()
  221. if err != nil {
  222. return err
  223. }
  224. return nil
  225. }
  226. // GetBizObjectOAMMapping : Biz Object OAM Mapping
  227. func GetBizObjectOAMMapping(objectCode, oamCode string) ([]bizViewModel.BizObjectOAMMappingInfo, error) {
  228. keyStr := fmt.Sprintf("biz_object_oam_mapping_%s_%s", objectCode, oamCode)
  229. bytes, err1 := Instance().Get(context.Background(), keyStr).Bytes()
  230. if err1 != nil {
  231. return nil, err1
  232. }
  233. dataList := make([]bizViewModel.BizObjectOAMMappingInfo, 0)
  234. err2 := json.Unmarshal(bytes, &dataList)
  235. if err2 != nil {
  236. return nil, err2
  237. }
  238. return dataList, nil
  239. }
  240. // SetBizObjectMapping : Biz Object Mapping
  241. func SetBizObjectMapping(objectCode string, data []bizViewModel.BizObjectMappingInfo) error {
  242. keyStr := fmt.Sprintf("biz_object_mapping_%s", objectCode)
  243. dataList, _ := json.Marshal(data)
  244. err := Instance().Set(context.Background(), keyStr, dataList, 0).Err()
  245. if err != nil {
  246. return err
  247. }
  248. return nil
  249. }
  250. // GetBizObjectMapping : Biz Object Mapping
  251. func GetBizObjectMapping(objectCode string) ([]bizViewModel.BizObjectMappingInfo, error) {
  252. keyStr := fmt.Sprintf("biz_object_mapping_%s", objectCode)
  253. bytes, err1 := Instance().Get(context.Background(), keyStr).Bytes()
  254. if err1 != nil {
  255. return nil, err1
  256. }
  257. dataList := make([]bizViewModel.BizObjectMappingInfo, 0)
  258. err2 := json.Unmarshal(bytes, &dataList)
  259. if err2 != nil {
  260. return nil, err2
  261. }
  262. return dataList, nil
  263. }
  264. func SetApiData(objectCode, oamCode string, data *apiViewModel.ApiInfo) error {
  265. keyStr := fmt.Sprintf("api_%s_%s", objectCode, oamCode)
  266. return SetCache(keyStr, data, 0)
  267. }
  268. func GetApiData(objectCode, oamCode string) (*apiViewModel.ApiInfo, error) {
  269. keyStr := fmt.Sprintf("api_%s_%s", objectCode, oamCode)
  270. apiData := &apiViewModel.ApiInfo{}
  271. err := Instance().Get(context.Background(), keyStr).Scan(apiData)
  272. if err != nil {
  273. return nil, err
  274. }
  275. return apiData, nil
  276. }