cache_cmd.go 9.1 KB

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