emsparaRepo.go 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. package redis
  2. import (
  3. "context"
  4. "encoding/json"
  5. "fmt"
  6. "fwh-toolbox-server/cache"
  7. "fwh-toolbox-server/domain"
  8. "time"
  9. rds "github.com/redis/go-redis/v9"
  10. )
  11. var (
  12. emsparaCtx = context.Background()
  13. emsparaKeyPrefix = "fwhtoolbox:emspara:"
  14. emsparaVidKey = emsparaKeyPrefix + "VID"
  15. emsparaPidKey = emsparaKeyPrefix + "PID"
  16. )
  17. func UpdateEmspara(vidMacros []domain.ParamsVidMacroModel, pidMacros []domain.ParamsPidMacroModel) error {
  18. ctx, cancel := context.WithTimeout(emsparaCtx, 5*time.Second)
  19. defer cancel()
  20. _, err := cache.Pipeline(ctx, func(p rds.Pipeliner) error {
  21. p.Del(ctx, emsparaVidKey) // 清空VID原数据
  22. p.Del(ctx, emsparaPidKey) // 清空PID原数据
  23. // 插入VID数据
  24. for _, m := range vidMacros {
  25. val, err := json.Marshal(map[string]string{
  26. "name": m.MacroName,
  27. "desc": m.Description,
  28. })
  29. if err != nil {
  30. return err
  31. }
  32. p.HSet(ctx, emsparaVidKey, m.ID, val)
  33. }
  34. // 插入PID数据
  35. for _, m := range pidMacros {
  36. val, err := json.Marshal(map[string]string{
  37. "name": m.MacroName,
  38. "desc": m.Description,
  39. })
  40. if err != nil {
  41. return err
  42. }
  43. p.HSet(ctx, emsparaPidKey, m.ID, val)
  44. }
  45. return nil
  46. })
  47. return err
  48. }
  49. func GetEmsparaVidInfo(id uint) (string, string, error) {
  50. ctx, cancel := context.WithTimeout(emsparaCtx, 5*time.Second)
  51. defer cancel()
  52. v, err := cache.HGet(ctx, emsparaVidKey, fmt.Sprintf("%d", id))
  53. if err != nil {
  54. return "", "", err
  55. }
  56. var m map[string]string
  57. if err := json.Unmarshal([]byte(v), &m); err != nil {
  58. return "", "", err
  59. }
  60. return m["name"], m["desc"], nil
  61. }
  62. func GetEmsparaPidInfo(id uint) (string, string, error) {
  63. ctx, cancel := context.WithTimeout(emsparaCtx, 5*time.Second)
  64. defer cancel()
  65. v, err := cache.HGet(ctx, emsparaPidKey, fmt.Sprintf("%d", id))
  66. if err != nil {
  67. return "", "", err
  68. }
  69. var m map[string]string
  70. if err := json.Unmarshal([]byte(v), &m); err != nil {
  71. return "", "", err
  72. }
  73. return m["name"], m["desc"], nil
  74. }