index.go 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. package priority
  2. import (
  3. "os"
  4. "pbx-api-gin/pkg/lfshook"
  5. "strconv"
  6. "github.com/sirupsen/logrus"
  7. "gopkg.in/ini.v1"
  8. )
  9. var ICPAnswer = 0
  10. var OCCAnswer = 0
  11. var RunningTypePriority = 0
  12. var RunningType = ""
  13. var SpecialVoice = 0
  14. var RunningPATaskChan = ""
  15. type BroadcastResumeParas struct {
  16. FileName string `json:"filename"`
  17. Count int `json:"count"`
  18. Delay int `json:"delay"`
  19. BroadcastType string `json:"broadcastType"`
  20. }
  21. var ResumeEmgPara BroadcastResumeParas
  22. type PriorityAll struct {
  23. ManuPa string `json:"manualPa"`
  24. CabCab string `json:"cabCab"`
  25. PADICP string `json:"padIcp"`
  26. PADTMS string `json:"padTms"`
  27. PADOCC string `json:"padOcc"`
  28. CPA string `json:"cpa"`
  29. EMG string `json:"emg"`
  30. SPC string `json:"spc"`
  31. DCS string `json:"dcs"`
  32. STN string `json:"stn"`
  33. CHK string `json:"chk"`
  34. VOL string `json:"vol"`
  35. }
  36. var Priority PriorityAll
  37. func GetPriority() {
  38. filePath := "/etc/asterisk/priority.conf"
  39. _, err := os.Stat(filePath)
  40. if err != nil {
  41. logrus.Error(err)
  42. return
  43. }
  44. iniFile, err := ini.Load(filePath)
  45. if err != nil {
  46. logrus.Error(err)
  47. return
  48. }
  49. Priority.CHK = iniFile.Section("general").Key("CHK").Value()
  50. Priority.STN = iniFile.Section("general").Key("STN").Value()
  51. Priority.DCS = iniFile.Section("general").Key("DCS").Value()
  52. Priority.SPC = iniFile.Section("general").Key("SPC").Value()
  53. Priority.EMG = iniFile.Section("general").Key("EMG").Value()
  54. Priority.CPA = iniFile.Section("general").Key("CPA").Value()
  55. Priority.PADOCC = iniFile.Section("general").Key("PAD-OCC").Value()
  56. Priority.PADTMS = iniFile.Section("general").Key("PAD-TMS").Value()
  57. Priority.PADICP = iniFile.Section("general").Key("PAD-ICP").Value()
  58. Priority.CabCab = iniFile.Section("general").Key("CabCab").Value()
  59. Priority.ManuPa = iniFile.Section("general").Key("ManuPa").Value()
  60. Priority.VOL = iniFile.Section("general").Key("VOL").Value()
  61. }
  62. func GetPriorityByKey(key string) string {
  63. switch key {
  64. case "VOL":
  65. return Priority.VOL
  66. case "CHK":
  67. return Priority.CHK
  68. case "STN":
  69. return Priority.STN
  70. case "DCS":
  71. return Priority.DCS
  72. case "SPC":
  73. return Priority.SPC
  74. case "EMG":
  75. return Priority.EMG
  76. case "CPA":
  77. return Priority.CPA
  78. case "PAD-OCC":
  79. return Priority.PADOCC
  80. case "PAD-TMS":
  81. return Priority.PADTMS
  82. case "PAD-ICP":
  83. return Priority.PADICP
  84. case "CabCab":
  85. return Priority.CabCab
  86. case "ManuPa":
  87. return Priority.ManuPa
  88. default:
  89. return ""
  90. }
  91. }
  92. // check priority , if the running priority is lowwer than the to run priority
  93. func CheckPriority(runType string) bool {
  94. lfshook.NewLogger().Logger.Infof("=========Check Pri runType:%s====RunningTypePriority:%d====SpecialVoice:%d========", runType, RunningTypePriority, SpecialVoice)
  95. //check special voice
  96. if SpecialVoice == 1 {
  97. return false
  98. }
  99. //no any runing task
  100. if RunningTypePriority == 0 {
  101. return true
  102. }
  103. //get the priority to run in the config file
  104. ret, err := strconv.Atoi(GetPriorityByKey(runType))
  105. if err != nil {
  106. lfshook.NewLogger().Logger.Infof("=========Check Pri GetPriorityByKey err:%+v", err)
  107. return false
  108. }
  109. if ret == RunningTypePriority && runType == "VOL" {
  110. return true
  111. }
  112. if ret == RunningTypePriority && runType == "CHK" {
  113. return true
  114. }
  115. //if the running task priority is lowwer
  116. if ret < RunningTypePriority && ret != 0 {
  117. return true
  118. }
  119. return false
  120. }
  121. // Clean all priority tag
  122. func CleanPriorityTag() {
  123. ICPAnswer = 0
  124. OCCAnswer = 0
  125. RunningTypePriority = 0
  126. RunningType = ""
  127. SpecialVoice = 0
  128. RunningPATaskChan = ""
  129. }