panlei
2019-07-01 898b4344a98fc49c83f9dae64195f33db302181c
加缓存
3个文件已修改
88 ■■■■ 已修改文件
cache/cache.go 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
main.go 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruleserver/ruleToformula.go 66 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cache/cache.go
@@ -70,14 +70,16 @@
    var api dbapi.CameraApi
    data := api.FindAllPolygons()
    for _, item := range data {
        cameraId :=item.CameraId
        arr, b := cMap.Get(PREFIX_POLYGON + cameraId)
        if b {
            list := arr.([]protomsg.CameraPolygon)
            list = append(list,item)
            cMap.Set(PREFIX_POLYGON + cameraId,list)
        } else {
            cMap.Set(PREFIX_POLYGON + cameraId,[]protomsg.CameraPolygon{ item })
        if item.Type != "line" {
            cameraId :=item.CameraId
            arr, b := cMap.Get(PREFIX_POLYGON + cameraId)
            if b {
                list := arr.([]protomsg.CameraPolygon)
                list = append(list,item)
                cMap.Set(PREFIX_POLYGON + cameraId,list)
            } else {
                cMap.Set(PREFIX_POLYGON + cameraId,[]protomsg.CameraPolygon{ item })
            }
        }
    }
}
main.go
@@ -21,8 +21,8 @@
)
var dbIp = flag.String("dbIp","127.0.0.1","dbserver ip")
var dbPort = flag.Int("dbPort",8001,"default dbPort=8001")
var surveyPort = flag.Int("surveyPort",40007,"survey port")
var pubPort = flag.Int("pubPort",50007,"pubsub port")
var surveyPort = flag.Int("surveyPort",40007,"survey port") //心跳
var pubPort = flag.Int("pubPort",50007,"pubsub port") //数据更新
var initchan = make(chan bool)
func main() {
    flag.Parse()
ruleserver/ruleToformula.go
@@ -4,12 +4,12 @@
    "encoding/json"
    "fmt"
    "log"
    "ruleprocess/cache"
    "sort"
    "strconv"
    "strings"
    "time"
    "basic.com/dbapi.git"
    "basic.com/pubsub/protomsg.git"
    "github.com/knetic/govaluate"
)
@@ -159,19 +159,21 @@
// 根据摄像机id拿到摄像机所有区域
func GetPolygons(cameraId string) []protomsg.CameraPolygon {
    var api dbapi.CameraApi
    data := api.FindAllPolygons()
    //fmt.Println("查到的所有区域:", data)
    // 根据id从map中拿到区域
    //var api dbapi.CameraApi
    //data := api.FindAllPolygons()
    ////fmt.Println("查到的所有区域:", data)
    //// 根据id从map中拿到区域
    var cameraPolygons []protomsg.CameraPolygon
    for _, item := range data {
        if item.CameraId == cameraId && item.Type != "line" {
            // 需要根据比例把前台画的区域的坐标转化为相应摄像机拍摄的图像的大小   x坐标分别*image.width/页面区域宽  y坐标分别*image.height/页面区域高
            // 前台宽高固定
            //log.Println("------------符合条件的区域:",item)
            cameraPolygons = append(cameraPolygons, item)
        }
    }
    //for _, item := range data {
    //    if item.CameraId == cameraId && item.Type != "line" {
    //        // 需要根据比例把前台画的区域的坐标转化为相应摄像机拍摄的图像的大小   x坐标分别*image.width/页面区域宽  y坐标分别*image.height/页面区域高
    //        // 前台宽高固定
    //        //log.Println("------------符合条件的区域:",item)
    //        cameraPolygons = append(cameraPolygons, item)
    //    }
    //}
    cameraPolygons = cache.GetPolygonsByCameraId(cameraId)
    //log.Println("根据摄像机id查到的区域", cameraPolygons, "--区域数量为:", len(cameraPolygons))
    return cameraPolygons
}
@@ -410,16 +412,17 @@
func GetRuleGroup(cameraId string) []*protomsg.TaskGroupArgs {
    // 查询数据库
    // 第一步查出跟这个摄像机相关的group_id(大规则)
    var api dbapi.CameraTaskArgsApi
    all := api.FindAll()
    //fmt.Println("所有规则:", all)
    var taskArgs []*protomsg.TaskGroupArgs
    for _, camArg := range all {
        if camArg.CameraId == cameraId {
            taskArgs = camArg.TaskArgs
        }
    }
    return taskArgs
    //var api dbapi.CameraTaskArgsApi
    //
    ////fmt.Println("所有规则:", all)
    //var taskArgs []*protomsg.TaskGroupArgs
    //for _, camArg := range all {
    //    if camArg.CameraId == cameraId {
    //        taskArgs = camArg.TaskArgs
    //    }
    //}
    all := cache.GetCameraTaskRulesByCameraId(cameraId)
    return all
}
// 联动任务的处理
@@ -784,14 +787,15 @@
// 取出某个时间规则的第几天的规则段集合
func GetTimeById(id string, index int) []TimeRange {
    var cameraTimeRule protomsg.CameraTimerule
    var api dbapi.CameraApi
    _, rules := api.FindAllTimeRules()
    for _, rule := range rules {
        if rule.Id == id {
            cameraTimeRule = rule
        }
    }
    //var cameraTimeRule protomsg.CameraTimerule
    //var api dbapi.CameraApi
    //_, rules := api.FindAllTimeRules()
    //for _, rule := range rules {
    //    if rule.Id == id {
    //        cameraTimeRule = rule
    //    }
    //}
    _,cameraTimeRule := cache.GetTimeRuleById(id)
    var timeRangeList []day
    json.Unmarshal([]byte(cameraTimeRule.TimeRule), &timeRangeList)
    for _, timerange := range timeRangeList {