| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- package priority
- import (
- "os"
- "pbx-api-gin/pkg/lfshook"
- "strconv"
- "github.com/sirupsen/logrus"
- "gopkg.in/ini.v1"
- )
- var ICPAnswer = 0
- var OCCAnswer = 0
- var RunningTypePriority = 0
- var RunningType = ""
- var SpecialVoice = 0
- var RunningPATaskChan = ""
- type PriorityAll struct {
- ManuPa string `json:"manualPa"`
- CabCab string `json:"cabCab"`
- PADICP string `json:"padIcp"`
- PADTMS string `json:"padTms"`
- PADOCC string `json:"padOcc"`
- CPA string `json:"cpa"`
- EMG string `json:"emg"`
- SPC string `json:"spc"`
- DCS string `json:"dcs"`
- STN string `json:"stn"`
- CHK string `json:"chk"`
- VOL string `json:"vol"`
- }
- var Priority PriorityAll
- func GetPriority() {
- filePath := "/etc/asterisk/priority.conf"
- _, err := os.Stat(filePath)
- if err != nil {
- logrus.Error(err)
- return
- }
- iniFile, err := ini.Load(filePath)
- if err != nil {
- logrus.Error(err)
- return
- }
- Priority.CHK = iniFile.Section("general").Key("CHK").Value()
- Priority.STN = iniFile.Section("general").Key("STN").Value()
- Priority.DCS = iniFile.Section("general").Key("DCS").Value()
- Priority.SPC = iniFile.Section("general").Key("SPC").Value()
- Priority.EMG = iniFile.Section("general").Key("EMG").Value()
- Priority.CPA = iniFile.Section("general").Key("CPA").Value()
- Priority.PADOCC = iniFile.Section("general").Key("PAD-OCC").Value()
- Priority.PADTMS = iniFile.Section("general").Key("PAD-TMS").Value()
- Priority.PADICP = iniFile.Section("general").Key("PAD-ICP").Value()
- Priority.CabCab = iniFile.Section("general").Key("CabCab").Value()
- Priority.ManuPa = iniFile.Section("general").Key("ManuPa").Value()
- Priority.VOL = iniFile.Section("general").Key("VOL").Value()
- }
- func GetPriorityByKey(key string) string {
- filePath := "/etc/asterisk/priority.conf"
- _, err := os.Stat(filePath)
- if err != nil {
- logrus.Error(err)
- return ""
- }
- iniFile, err := ini.Load(filePath)
- if err != nil {
- logrus.Error(err)
- return ""
- }
- return iniFile.Section("general").Key(key).Value()
- }
- // check priority , if the running priority is lowwer than the to run priority
- func CheckPriority(runType string) bool {
- lfshook.NewLogger().Logger.Infof("=========Check Pri runType:%s====RunningTypePriority:%d============", runType, RunningTypePriority)
- //check special voice
- if SpecialVoice == 1 {
- return false
- }
- //no any runing task
- if RunningTypePriority == 0 {
- return true
- }
- //get the priority to run in the config file
- ret, err := strconv.Atoi(GetPriorityByKey(runType))
- if err != nil {
- logrus.Error(err)
- return false
- }
- lfshook.NewLogger().Logger.Infof("=========Check Pri GetPriorityByKey:%d============", ret)
- //if the running task priority is lowwer
- if ret < RunningTypePriority && ret != 0 {
- return true
- }
- return false
- }
- // Clean all priority tag
- func CleanPriorityTag() {
- ICPAnswer = 0
- OCCAnswer = 0
- RunningTypePriority = 0
- RunningType = ""
- SpecialVoice = 0
- RunningPATaskChan = ""
- }
|