common.go 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. //@Author : KaiShin
  2. //@Time : 2021/11/1
  3. package logic
  4. import (
  5. "crypto/md5"
  6. "encoding/json"
  7. "fmt"
  8. "gopkg.in/fsnotify.v1"
  9. "io"
  10. "io/ioutil"
  11. "log"
  12. "strings"
  13. "sync"
  14. )
  15. func GetSyncMapKeys(mm *sync.Map) []interface{} {
  16. var keyList []interface{}
  17. mm.Range(func(key, value interface{}) bool {
  18. keyList = append(keyList, key)
  19. return true
  20. })
  21. return keyList
  22. }
  23. func GetSyncMapValues(mm *sync.Map) []interface{} {
  24. var valList []interface{}
  25. mm.Range(func(key, value interface{}) bool {
  26. valList = append(valList, value)
  27. return true
  28. })
  29. return valList
  30. }
  31. func PreCheckConfig(path string) {
  32. _, err := ioutil.ReadFile(path)
  33. if err != nil {
  34. log.Println("<PreCheckConfig> err:", err)
  35. log.Println("<PreCheckConfig> load conf failed, wait file create...")
  36. watch, err := fsnotify.NewWatcher()
  37. if err != nil {
  38. log.Fatal(err)
  39. }
  40. defer watch.Close()
  41. // 获取当前目录的上一级
  42. prePath := strings.Split(path, "/")
  43. err = watch.Add(prePath[0])
  44. if err != nil {
  45. log.Fatal(err)
  46. }
  47. select {
  48. case ev := <-watch.Events:
  49. {
  50. log.Println("<PreCheckConfig> ev.Op: ", ev.Op)
  51. if ev.Op&fsnotify.Create == fsnotify.Create {
  52. break
  53. }
  54. if ev.Op&fsnotify.Write == fsnotify.Write {
  55. break
  56. }
  57. }
  58. }
  59. log.Printf("<PreCheckConfig> %s has bean created", path)
  60. }
  61. }
  62. func Md5(str string) string {
  63. w := md5.New()
  64. io.WriteString(w, str)
  65. md5str := fmt.Sprintf("%x", w.Sum(nil))
  66. return md5str
  67. }
  68. func CleanContent(chatStr string) string {
  69. cleanStr := strings.Replace(chatStr, " ", "", -1)
  70. cleanStr = strings.Replace(cleanStr, "\n", "", -1)
  71. cleanStr = strings.Replace(cleanStr, "\x0B", "", -1)
  72. cleanStr = strings.Replace(cleanStr, "\t", "", -1)
  73. return cleanStr
  74. }
  75. func StructToMap(v interface{}) map[string]interface{} {
  76. m := make(map[string]interface{})
  77. data, _ := json.Marshal(v)
  78. err := json.Unmarshal(data, &m)
  79. if err != nil {
  80. return nil
  81. }
  82. return m
  83. }