qixiaoning
2025-08-21 e38654fe9eff4562da4f18f8f018aed7879d493c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
package main
 
import (
    "basic.com/valib/bhomeclient.git"
    "basic.com/valib/bhomedbapi.git"
    "basic.com/valib/logger.git"
    "basic.com/valib/version.git"
    "context"
    "flag"
    "os"
    "os/signal"
    "syscall"
    "vamicro/config"
    "vamicro/scene-service/controllers"
    "vamicro/scene-service/models"
 
    "net/http"
    _ "net/http/pprof"
)
 
var (
    procName = "scene-service"
    proc     = &bhomeclient.ProcInfo{
        Name: procName, //进程名称
        ID:   procName, //进程id
        Info: "",       //进程的描述信息,用于区分同一进程名称下多个进程
    }
    env = flag.String("e", "pro", "")
)
 
func init() {
    flag.Parse()
    config.Init(*env)
    // 日志初始化
    var logFile = config.LogConf.Path + "vamicro-" + procName + ".log"
    logger.InitLogger(logFile, config.LogConf.Level, config.LogConf.MaxSize, config.LogConf.MaxBackups, config.LogConf.MaxAge)
    logger.Info("log init success !")
}
 
func main() {
    // pprof 用于分析性能
    go func() {
        logger.Info(http.ListenAndServe("0.0.0.0:6089", nil))
    }()
 
    flag.Parse()
    vaversion.Usage()
 
    models.Init()
    defer models.CloseDB()
    ctx, cancel := context.WithCancel(context.Background())
    fm, pubTopics := initFuncMap()
    var reg = &bhomeclient.RegisterInfo{
        Proc:     *proc,
        Channel:  nil,
        PubTopic: pubTopics,
        SubTopic: []string{},
    }
 
    q := make(chan os.Signal, 1)
    signal.Notify(q, os.Interrupt, os.Kill, syscall.SIGTERM)
 
    ms, err := bhomeclient.NewMicroNode(ctx, q, config.Server.AnalyServerId, reg, logger.Debug)
    if err != nil {
        return
    }
 
    bhomedbapi.InitLog(logger.Debug)
    bhomedbapi.InitGetNetNode(ms.GetLocalNetNodeByTopic)
    bhomedbapi.InitDoReq(ms.RequestOnly)
 
    go ms.StartServer(fm)
 
    <-q
 
    ms.DeRegister()
    cancel()
    ms.Free()
}
 
const urlPrefix = "/data/api-v"
 
func initFuncMap() (map[string]bhomeclient.MicroFunc, []string) {
    funcMap := make(map[string]bhomeclient.MicroFunc)
    crc := new(controllers.CameraRuleController)
    ctc := new(controllers.CameraTimeRuleController)
    cpc := new(controllers.CameraPolygonController)
    cgc := new(controllers.CameraGroupController)
    tc := new(controllers.CameraTaskController)
 
    funcMap[urlPrefix+"/camera/rule/findAll"] = crc.FindAll
    funcMap[urlPrefix+"/camera/rule/save"] = crc.Save
    funcMap[urlPrefix+"/camera/rule/saveLinkRulesByGroup"] = crc.SaveLinkRulesByGroup
    funcMap[urlPrefix+"/camera/rule/getLinkRulesByCameraIds"] = crc.GetLinkRulesByCameraIds
    funcMap[urlPrefix+"/camera/rule/findByCameraId"] = crc.FindByCameraId
    funcMap[urlPrefix+"/camera/rule/existRunningTask"] = crc.ExistRunningTask
    funcMap[urlPrefix+"/camera/pasteRules"] = crc.PasteRules
    funcMap[urlPrefix+"/camera/rule/updateAlarmLevel"] = crc.UpdateAlarmLevel
    funcMap[urlPrefix+"/camera/rule/deleteGroup"] = crc.DeleteByGroup
    funcMap[urlPrefix+"/camera/findAllCameraLink"] = crc.FindAllCameraLink
    funcMap[urlPrefix+"/camera/rule/findAllTaskById"] = crc.FindAllTaskById
    funcMap[urlPrefix+"/camera/findLinksByCameraIds"] = crc.FindLinksByCameraIds
    funcMap[urlPrefix+"/camera/rule/dispatch"] = crc.Dispatch
    funcMap[urlPrefix+"/camera/rule/syncDelBySaas"] = crc.SyncDelBySaas
 
    funcMap[urlPrefix+"/camera/alltask"] = tc.FindTasksByCameraIds
 
    /****************时间设置******************/
    funcMap[urlPrefix+"/cameraTimerule/save"] = ctc.Save
    funcMap[urlPrefix+"/cameraTimerule/delete"] = ctc.Delete
    funcMap[urlPrefix+"/cameraTimerule/findAll"] = ctc.FindAll
 
    /*********************区域配置***********************/
    funcMap[urlPrefix+"/polygon/save"] = cpc.Save
    //funcMap[urlPrefix+"/polygon/delete"] = cpc.Delete
    funcMap[urlPrefix+"/polygon/findByCameraId"] = cpc.FindByCameraId
    funcMap[urlPrefix+"/polygon/findAll"] = cpc.FindAll
    funcMap[urlPrefix+"/polygon/updateDefenceStateByPolygonId"] = cpc.UpdateDefenceStateByPolygonId
    funcMap[urlPrefix+"/polygon/updateDefenceStateByCameraId"] = cpc.UpdateDefenceStateByCameraId
    funcMap[urlPrefix+"/polygon/findByCamGroup"] = cpc.FindByCamGroup
 
    /*************************saas同步***************************/
    funcMap[urlPrefix+"/polygon/getSyncSceneData"] = cpc.GetSyncSceneData
 
    /**********************关联区域*************************/
    funcMap[urlPrefix+"/polygon/relation/findAll"] = cpc.FindAllRelation
    funcMap[urlPrefix+"/polygon/relations"] = cpc.Relations
    funcMap[urlPrefix+"/polygon/relation/save"] = cpc.SaveRelation
    funcMap[urlPrefix+"/polygon/relation/del"] = cpc.DelRelation
    funcMap[urlPrefix+"/polygon/relation/findByGroup"] = cpc.FindRelationByGroup
 
    /**********************太原营业厅需求*************************/
    acpC := new(controllers.AreaCamPgnController)
    funcMap[urlPrefix+"/acp/findAll"] = acpC.FindAll
    funcMap[urlPrefix+"/acp/save"] = acpC.Save
    funcMap[urlPrefix+"/acp/delete"] = acpC.Delete
 
    /*************************全景图***************************/
    funcMap[urlPrefix+"/panorama/show"] = cpc.ShowPanorama     //获取全景图地址
    funcMap[urlPrefix+"/panorama/upload"] = cpc.UploadPanorama //上传新的全景图地址
 
    funcMap[urlPrefix+"/camera/group/findAll"] = cgc.FindAll
    funcMap[urlPrefix+"/camera/group/save"] = cgc.Save
    funcMap[urlPrefix+"/camera/group/del"] = cgc.Delete
 
    var pubTopics []string
    for key, _ := range funcMap {
        pubTopics = append(pubTopics, key)
    }
    return funcMap, pubTopics
}