摄像机相关接口跳转,推送配置修改,系统权限菜单修改
| | |
| | | lists := convertResultToMap(result)
|
| | | layout := "2006-01-02 15:04:05.999999"
|
| | |
|
| | | var temp1 time.Time
|
| | | var temp2 time.Time
|
| | | // var temp1 time.Time
|
| | | // var temp2 time.Time
|
| | |
|
| | | //排序
|
| | | // //排序
|
| | | // sort.Slice(lists, func(i, j int) bool {
|
| | | // //return lists[i].DetectTime > lists[j].:DetectTime
|
| | | // temp1, _ = time.Parse(layout, lists[i].DetectTime)
|
| | | // temp2, _ = time.Parse(layout, lists[j].DetectTime)
|
| | | // return temp1.After(temp2)
|
| | | // })
|
| | |
|
| | | sort.Slice(lists, func(i, j int) bool {
|
| | | //return lists[i].DetectTime > lists[j].:DetectTime
|
| | | temp1, _ = time.Parse(layout, lists[i].DetectTime)
|
| | | temp2, _ = time.Parse(layout, lists[j].DetectTime)
|
| | | return temp1.After(temp2)
|
| | | t1, err1 := time.Parse(layout, lists[i].DetectTime)
|
| | | t2, err2 := time.Parse(layout, lists[j].DetectTime)
|
| | |
|
| | | // 错误处理:解析错误的时间排在后面
|
| | | if err1 != nil || err2 != nil {
|
| | | return err1 == nil && err2 != nil
|
| | | }
|
| | |
|
| | | return t1.After(t2)
|
| | | })
|
| | |
|
| | | items := Paginate(lists, int(pageNum), int(pageSize))
|
| | |
| | | return result.RowsAffected > 0 |
| | | } |
| | | |
| | | func (camera *Camera) DelLink(id int64) (err error) { |
| | | |
| | | //删除关联检测内容 |
| | | dbdel1 := db.Exec("delete from mal_task_check_link where task_id=?", id) |
| | | err = dbdel1.Error |
| | | if err != nil || dbdel1.RowsAffected == 0 { |
| | | return err |
| | | } |
| | | //删除关联预警规则 |
| | | dbdel2 := db.Exec("delete from mal_task_rule_link where task_id=?", id) |
| | | err = dbdel2.Error |
| | | if err != nil || dbdel2.RowsAffected == 0 { |
| | | return err |
| | | } |
| | | //删除关联摄像机任务 |
| | | dbdel3 := db.Exec("delete from mal_task_video_link where task_id=?", id) |
| | | err = dbdel3.Error |
| | | if err != nil || dbdel3.RowsAffected == 0 { |
| | | return err |
| | | } |
| | | //删除关联工作时间 |
| | | dbdel4 := db.Exec("delete from mal_task_work_time_link where task_id=?", id) |
| | | err = dbdel4.Error |
| | | if err != nil || dbdel4.RowsAffected == 0 { |
| | | return err |
| | | } |
| | | //删除关联知识库 |
| | | dbdel5 := db.Exec("delete from mal_knowledge_link where task_id=?", id) |
| | | err = dbdel5.Error |
| | | if err != nil || dbdel5.RowsAffected == 0 { |
| | | return err |
| | | } |
| | | return |
| | | } |
| | | |
| | | func (camera *Camera) Delete(cid string) (int64, error) { |
| | | var err error |
| | | tx := GetDB().Begin() |
| | |
| | | IsDelete int8 `json:"isDelete"` |
| | | } |
| | | |
| | | type TaskIdM struct { |
| | | ID int64 `gorm:"column:task_id" json:"id"` |
| | | } |
| | | |
| | | type TaskM struct { |
| | | TaskId int64 `db:"task_id" json:"taskId"` |
| | | TaskName string `db:"task_name" json:"taskName"` |
| | | TaskDescription string `db:"task_description" json:"taskDescription"` |
| | | EventName string `db:"event_name" json:"eventName"` |
| | | } |
| | | |
| | | // 训练模型标签 |
| | | type TrainTags struct { |
| | | Id int64 `gorm:"primaryKey;autoIncrement;column:id" json:"id"` |
| | | Createtime string `gorm:"type:varchar(50);column:create_time;default:''" json:"create_time"` |
| | | } |
| | | |
| | | func (TrainTags) TableName() string { |
| | | return "mal_train_tags" |
| | | } |
| | | |
| | | // 视频 |
| | |
| | | } |
| | | |
| | | // 根据cid查询视频 |
| | | func GetTaskTotal(cid string) (total int, err error) { |
| | | sql := "select count(1) as total from mal_task_video_link where video_id='" + cid + "'" |
| | | err = db.Raw(sql).Count(&total).Error |
| | | if err != nil { |
| | | return 0, err |
| | | func GetTaskTotal(cid string) (items []TaskIdM, err error) { |
| | | sqlStr := "select task_id from mal_task_video_link where video_id='" + cid + "'" |
| | | if err := db.Raw(sqlStr).Scan(&items).Error; err != nil { |
| | | fmt.Println(err.Error()) |
| | | return nil, err |
| | | } |
| | | return total, nil |
| | | return |
| | | } |
| | |
| | | if b, err := sv.CameraUpdate(camVo); b { |
| | | //更新分辨率 |
| | | if ok { |
| | | // |
| | | logger.Debug("DoPostRequest:", camVo) |
| | | if cam.IsRunning && (cam.ResolutionWidth != camVo.ResolutionWidth && cam.ResolutionHeight != camVo.ResolutionHeight) { |
| | | header := map[string]string{} |
| | |
| | | "videoType": 0, |
| | | } |
| | | res, err := util.DoPostRequest("http://127.0.0.1:8088/v1/task/openAnalysis", util.CONTENT_TYPE_JSON, paramBody, nil, header, time.Second*10) |
| | | if err != nil { |
| | | logger.Debug("DoPostRequest err:", err) |
| | | } |
| | | logger.Debug("DoPostRequest:", res) |
| | | } |
| | | //更新状态 |
| | | if cam.IsRunning { |
| | | header := map[string]string{} |
| | | paramBody := map[string]interface{}{ |
| | | "state": 1, |
| | | } |
| | | res, err := util.DoPostRequest("http://127.0.0.1:8088/v1/task/updateAllStatus?state=1", util.CONTENT_TYPE_JSON, paramBody, nil, header, time.Second*10) |
| | | if err != nil { |
| | | logger.Debug("DoPostRequest err:", err) |
| | | } |
| | |
| | | } |
| | | |
| | | //判断是否有配置任务 |
| | | total, _ := models.GetTaskTotal(cid) |
| | | if total > 0 { |
| | | return &bhomeclient.Reply{Success: false, Msg: "请先删除配置的任务"} |
| | | } |
| | | // total, _ := models.GetTaskTotal(cid) |
| | | // if total > 0 { |
| | | // return &bhomeclient.Reply{Success: false, Msg: "请先删除配置的任务"} |
| | | // } |
| | | |
| | | rows, _ := cam.Delete(cid) |
| | | if rows == 0 { |
| | | return &bhomeclient.Reply{Success: true, Msg: "记录不存在"} |
| | | } |
| | | |
| | | //删除任务 |
| | | items, _ := models.GetTaskTotal(cid) |
| | | if len(items) > 0 { |
| | | for _, item := range items { |
| | | cam.DelLink(item.ID) |
| | | } |
| | | } |
| | | |
| | | pMsg := protomsg.DbChangeMessage{ //需要重新计算算力占用情况 |
| | | Table: protomsg.TableChanged_T_Camera, |
| | | Action: protomsg.DbAction_Delete, |
| | |
| | | if len(TaskName) > 0 { |
| | | quotedNames := make([]string, len(TaskName)) |
| | | for i, name := range TaskName { |
| | | quotedNames[i] = "'" + name + "'" // 每个元素加单引号 |
| | | quotedNames[i] = " task_name like '%%" + name + "%%' " // 每个元素加单引号 |
| | | } |
| | | filter += fmt.Sprintf(" and %s in [%s]", "task_name", strings.Join(quotedNames, ",")) |
| | | filter += " and (" + strings.Join(quotedNames, "or") + ")" |
| | | } else { |
| | | if Warning > 0 { |
| | | return &bhomeclient.Reply{Success: true, Msg: "获取成功", Data: nil} |
| | |
| | | func Init() { |
| | | db, err = gorm.Open(config.DBconf.Name, "../config/camera-service.db") |
| | | |
| | | |
| | | if err != nil { |
| | | logger.Debug("db open error ", err) |
| | | } |
| | | db.LogMode(true) |
| | | //db.SetLogger(&DbLogger{}) |
| | | db.AutoMigrate(&commonModels.Area{}, &commonModels.Camera{}, &commonModels.CameraArea{}, |
| | | &commonModels.Sensor{}, &commonModels.CameraSensor{}) |
| | | // err1 := db.Debug().AutoMigrate(&commonModels.Area{}, &commonModels.Camera{}, &commonModels.CameraArea{}, |
| | | // &commonModels.Sensor{}, &commonModels.CameraSensor{}, &commonModels.TrainTags{}) |
| | | err1 := db.Debug().AutoMigrate(&commonModels.TrainTags{}) |
| | | if err1 != nil { |
| | | logger.Debug("自动迁移失败 ", err1) |
| | | } |
| | | |
| | | commonModels.SetDB(db) |
| | | } |
| | | |
| | |
| | | {Checked: true, Id: "camera_id", Name: "摄像机ID", Alias: "camera_id"}, |
| | | {Checked: true, Id: "camera_name", Name: "摄像机名称", Alias: "camera_name"}, |
| | | {Checked: true, Id: "camera_addr", Name: "摄像机地址", Alias: "camera_addr"}, |
| | | {Checked: true, Id: "camera_rtsp", Name: "RTSP地址", Alias: "camera_rtsp"}, |
| | | }, |
| | | } |
| | | // sceneInfoSet := vo.PushSetMenu{ |
| | |
| | | {Checked: true, Id: "is_warning", Name: "是否预警", Alias: "is_warning"}, |
| | | }, |
| | | } |
| | | // detectAreaSet := vo.PushSetMenu{ |
| | | // Id: "detectAreaInfo", |
| | | // Name: "检测区域", |
| | | // Alias: "detectAreaInfo", |
| | | // Checked: true, |
| | | // Children: []vo.PushSetMenu{ |
| | | // {Checked: true, Id: "targetInfo.#.areaId", Name: "检测区域id", Alias: "areaId"}, |
| | | // {Checked: true, Id: "targetInfo.#.areaName", Name: "检测区域名称", Alias: "areaName"}, |
| | | // }, |
| | | // } |
| | | // targetSet := vo.PushSetMenu{ |
| | | // Id: "targetInfo", |
| | | // Name: "目标", |
| | | // Alias: "targetInfo", |
| | | // Checked: true, |
| | | // Children: []vo.PushSetMenu{ |
| | | // {Checked: true, Id: "targetInfo.#.attribute", Name: "算法属性", Alias: "attribute"}, |
| | | // {Checked: true, Id: "targetInfo.#.targetLocation", Name: "目标坐标", Alias: "targetLocation"}, |
| | | // {Checked: true, Id: "targetInfo.#.targetScore", Name: "目标置信度", Alias: "targetScore"}, |
| | | // {Checked: true, Id: "targetInfo.#.targetType", Name: "目标类别", Alias: "targetType"}, |
| | | // }, |
| | | // } |
| | | detectAreaSet := vo.PushSetMenu{ |
| | | Id: "areaInfo", |
| | | Name: "检测区域", |
| | | Alias: "areaInfo", |
| | | Checked: true, |
| | | Children: []vo.PushSetMenu{ |
| | | {Checked: true, Id: "area_id", Name: "检测区域id", Alias: "area_id"}, |
| | | {Checked: true, Id: "area_name", Name: "检测区域名称", Alias: "area_name"}, |
| | | {Checked: true, Id: "proportion", Name: "检测区域占比", Alias: "proportion"}, |
| | | }, |
| | | } |
| | | KnowLedgeSet := vo.PushSetMenu{ |
| | | Id: "knowLedgeInfo", |
| | | Name: "知识库", |
| | | Alias: "knowLedgeInfo", |
| | | Checked: true, |
| | | Children: []vo.PushSetMenu{ |
| | | {Checked: true, Id: "knowledge_id", Name: "ID", Alias: "knowledge_id"}, |
| | | {Checked: true, Id: "knowledge_name", Name: "知识库名称", Alias: "knowledge_name"}, |
| | | {Checked: true, Id: "knowledge_doc", Name: "知识库文档", Alias: "knowledge_doc"}, |
| | | }, |
| | | } |
| | | targetSet := vo.PushSetMenu{ |
| | | Id: "targetInfo", |
| | | Name: "目标", |
| | | Alias: "targetInfo", |
| | | Checked: true, |
| | | Children: []vo.PushSetMenu{ |
| | | {Checked: true, Id: "attribute", Name: "属性", Alias: "attribute"}, |
| | | {Checked: true, Id: "target_location", Name: "目标坐标", Alias: "target_location"}, |
| | | {Checked: true, Id: "target_score", Name: "目标置信度", Alias: "target_score"}, |
| | | {Checked: true, Id: "target_type", Name: "目标类别", Alias: "target_type"}, |
| | | }, |
| | | } |
| | | // dtSet := vo.PushSetMenu{ |
| | | // Id: "tableInfo", |
| | | // Name: "底库信息", |
| | |
| | | // }, |
| | | // } |
| | | // set = append(set, camInfoSet, sceneInfoSet, serverSet, dataSet, detectAreaSet, targetSet, dtSet, dbpInfo) |
| | | set = append(set, camInfoSet, taskInfoSet, serverSet, dataSet) |
| | | set = append(set, camInfoSet, taskInfoSet, serverSet, dataSet, detectAreaSet, KnowLedgeSet, targetSet) |
| | | |
| | | return &bhomeclient.Reply{Success: true, Data: set} |
| | | } |
| | |
| | | // "analysis": "算法处理单元", |
| | | "apiserver": "basic接口服务", |
| | | "decoder": "视频解码服务", |
| | | "elasticsearch": "分布式数据搜索引擎", |
| | | // "elasticsearch": "分布式数据搜索引擎", |
| | | // "faceDetect": "人脸识别服务", |
| | | "file-service": "文件服务", |
| | | "pollcontrol": "轮询管理", |
| | | // "pollcontrol": "轮询管理", |
| | | "pushServer": "规则处理单元", |
| | | // "dataProcess": "规则处理单元", |
| | | "schedule": "调度进程", |
| | | // "sdkCompare": "人脸比对服务", |
| | | "sshd": "ssh服务端", |
| | | "videopublish": "实时视频推流服务", |
| | | "videosvr.out": "国标上级服务", |
| | | "zlmediaKit": "实时视频推流服务", |
| | | "wvp": "国标上级服务", |
| | | "weed": "分布式文件系统", |
| | | } |
| | | |
| | |
| | | apps := dbApi.FindAppMap() |
| | | for k, v := range dbApi.FindAppMap() { |
| | | if v.ProcName != "" { |
| | | installedAppMap[v.ProcName] = apps[k] |
| | | installedAppMap[v.Id] = apps[k] |
| | | } |
| | | } |
| | | |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | // 统计正在运行的应用信息 |
| | | ps, _ := process.Processes() |
| | | for _, p := range ps { |
| | | if name, err := p.Name(); err == nil { |
| | | if app, isExist := installedAppMap[name]; isExist { |
| | | proc := Proc{ |
| | | Name: app.Name, |
| | | Pid: p.Pid, |
| | | Desc: app.Title, |
| | | } |
| | | |
| | | proc.Cpu, _ = p.CPUPercent() |
| | | proc.Mem, _ = p.MemoryPercent() |
| | | proc.Gpu = gpuPer.Get(int(p.Pid)) |
| | | |
| | | procs = append(procs, proc) |
| | | |
| | | delete(installedAppMap, name) |
| | | } |
| | | } |
| | | } |
| | | |
| | | // 追加未启动的应用 |
| | | for _, v := range installedAppMap { |
| | | proc := Proc{ |
| | | Name: v.Name, |
| | | Pid: 0, |
| | | Desc: v.Title, |
| | | } |
| | | |
| | | proc.Cpu = 0 |
| | | proc.Mem = 0 |
| | | proc.Gpu = 0 |
| | | for _, p := range ps { |
| | | if name, err := p.Name(); err == nil { |
| | | if name == v.ProcName { |
| | | proc.Pid = p.Pid |
| | | proc.Cpu, _ = p.CPUPercent() |
| | | proc.Mem, _ = p.MemoryPercent() |
| | | proc.Gpu = gpuPer.Get(int(p.Pid)) |
| | | } |
| | | } |
| | | } |
| | | |
| | | procs = append(procs, proc) |
| | | } |
| | |
| | | } |
| | | } |
| | | |
| | | if k == "elasticsearch" { |
| | | if k == "zlmediaKit" { |
| | | cmdLine, _ := p.Cmdline() |
| | | if strings.Contains(cmdLine, "MediaServer") { |
| | | proc.Pid = p.Pid |
| | | |
| | | break |
| | | } |
| | | } |
| | | if k == "wvp" { |
| | | cmdLine, _ := p.Cmdline() |
| | | if strings.Contains(cmdLine, k) { |
| | | proc.Pid = p.Pid |
| | |
| | | audioPath, err := sv.UploadVoice(file.Bytes, filename) |
| | | if err != nil { |
| | | if err.Error() == "audio format error" { |
| | | return &bhomeclient.Reply{Msg: "声音只允许mp3,wav,wma的格式"} |
| | | return &bhomeclient.Reply{Msg: "声音只允许mp3,wav的格式"} |
| | | } else { |
| | | return &bhomeclient.Reply{Msg: "声音上传失败:" + err.Error()} |
| | | } |
| | |
| | | func (sv SysService) UploadVoice(fileBytes []byte, filename string) (string, error) { |
| | | fileExt := path.Ext(filename) |
| | | fileExt = strings.ToLower(fileExt) |
| | | if fileExt != ".mp3" && fileExt != ".wma" && fileExt != ".wav" { |
| | | if fileExt != ".mp3" && fileExt != ".wav" { |
| | | return "", errors.New("audio format error") |
| | | } |
| | | var sApi bhomedbapi.SysSetApi |
| | |
| | | package service |
| | | |
| | | import ( |
| | | "basic.com/valib/bhomedbapi.git" |
| | | "basic.com/valib/logger.git" |
| | | "github.com/satori/go.uuid" |
| | | "strings" |
| | | "vamicro/system-service/models" |
| | | |
| | | "basic.com/valib/bhomedbapi.git" |
| | | "basic.com/valib/logger.git" |
| | | uuid "github.com/satori/go.uuid" |
| | | ) |
| | | |
| | | //初始化应用权限 |
| | |
| | | } |
| | | if a.Package == "search" { //统计查询 |
| | | sort = 2 |
| | | sqls = append(sqls, "INSERT INTO sys_menu(`id`,`parent_id`,`parent_ids`,`type`,`name`,`module`,`permission`,`sort`,`icon`,`url`,`enable`,`del_flag`) select '"+uuid.NewV4().String()+"', '"+a.Id+"', ',0,"+a.Id+",', 1, '摄像机', 'SEARCH', 'search:camera', 1, NULL, NULL, 1, 0 where not exists (select 1 from sys_menu where permission='search:camera');") |
| | | sqls = append(sqls, "INSERT INTO sys_menu(`id`,`parent_id`,`parent_ids`,`type`,`name`,`module`,`permission`,`sort`,`icon`,`url`,`enable`,`del_flag`) select '"+uuid.NewV4().String()+"', '"+a.Id+"', ',0,"+a.Id+",', 1, '数据栈', 'SEARCH', 'search:stack', 2, NULL, NULL, 1, 0 where not exists (select 1 from sys_menu where permission='search:stack');") |
| | | // sqls = append(sqls, "INSERT INTO sys_menu(`id`,`parent_id`,`parent_ids`,`type`,`name`,`module`,`permission`,`sort`,`icon`,`url`,`enable`,`del_flag`) select '"+uuid.NewV4().String()+"', '"+a.Id+"', ',0,"+a.Id+",', 1, '摄像机', 'SEARCH', 'search:camera', 1, NULL, NULL, 1, 0 where not exists (select 1 from sys_menu where permission='search:camera');") |
| | | // sqls = append(sqls, "INSERT INTO sys_menu(`id`,`parent_id`,`parent_ids`,`type`,`name`,`module`,`permission`,`sort`,`icon`,`url`,`enable`,`del_flag`) select '"+uuid.NewV4().String()+"', '"+a.Id+"', ',0,"+a.Id+",', 1, '数据栈', 'SEARCH', 'search:stack', 2, NULL, NULL, 1, 0 where not exists (select 1 from sys_menu where permission='search:stack');") |
| | | } else if a.Package == "cameraAccess" { //摄像机配置 |
| | | sort = 3 |
| | | sqls = append(sqls, "INSERT INTO sys_menu(`id`,`parent_id`,`parent_ids`,`type`,`name`,`module`,`permission`,`sort`,`icon`,`url`,`enable`,`del_flag`) select '"+uuid.NewV4().String()+"', '"+a.Id+"', ',0,"+a.Id+",', 1, '摄像机信息', 'CAMERAACCESS', 'cameraAccess:cameraInfo', 1, NULL, NULL, 1, 0 where not exists (select 1 from sys_menu where permission='cameraAccess:cameraInfo');") |
| | | sqls = append(sqls, "INSERT INTO sys_menu(`id`,`parent_id`,`parent_ids`,`type`,`name`,`module`,`permission`,`sort`,`icon`,`url`,`enable`,`del_flag`) select '"+uuid.NewV4().String()+"', '"+a.Id+"', ',0,"+a.Id+",', 1, '独立场景', 'CAMERAACCESS', 'cameraAccess:selfRule', 2, NULL, NULL, 1, 0 where not exists (select 1 from sys_menu where permission='cameraAccess:selfRule');") |
| | | sqls = append(sqls, "INSERT INTO sys_menu(`id`,`parent_id`,`parent_ids`,`type`,`name`,`module`,`permission`,`sort`,`icon`,`url`,`enable`,`del_flag`) select '"+uuid.NewV4().String()+"', '"+a.Id+"', ',0,"+a.Id+",', 1, '联动场景', 'CAMERAACCESS', 'cameraAccess:linkRule', 3, NULL, NULL, 1, 0 where not exists (select 1 from sys_menu where permission='cameraAccess:linkRule');") |
| | | sqls = append(sqls, "INSERT INTO sys_menu(`id`,`parent_id`,`parent_ids`,`type`,`name`,`module`,`permission`,`sort`,`icon`,`url`,`enable`,`del_flag`) select '"+uuid.NewV4().String()+"', '"+a.Id+"', ',0,"+a.Id+",', 1, 'AI任务', 'CAMERAACCESS', 'cameraAccess:aiTask', 2, NULL, NULL, 1, 0 where not exists (select 1 from sys_menu where permission='cameraAccess:aiTask');") |
| | | // sqls = append(sqls, "INSERT INTO sys_menu(`id`,`parent_id`,`parent_ids`,`type`,`name`,`module`,`permission`,`sort`,`icon`,`url`,`enable`,`del_flag`) select '"+uuid.NewV4().String()+"', '"+a.Id+"', ',0,"+a.Id+",', 1, '联动场景', 'CAMERAACCESS', 'cameraAccess:linkRule', 3, NULL, NULL, 1, 0 where not exists (select 1 from sys_menu where permission='cameraAccess:linkRule');") |
| | | } else if a.Package == "analysisPower" { //算力管理 |
| | | sort = 5 |
| | | sqls = append(sqls, "INSERT INTO sys_menu(`id`,`parent_id`,`parent_ids`,`type`,`name`,`module`,`permission`,`sort`,`icon`,`url`,`enable`,`del_flag`) select '"+uuid.NewV4().String()+"', '"+a.Id+"', ',0,"+a.Id+",', 1, '设置', 'ANALYSISPOWER', 'analysisPower:set', 1, NULL, NULL, 1, 0 where not exists (select 1 from sys_menu where permission='analysisPower:set');") |
| | |
| | | sqls = append(sqls, "INSERT INTO sys_menu(`id`,`parent_id`,`parent_ids`,`type`,`name`,`module`,`permission`,`sort`,`icon`,`url`,`enable`,`del_flag`) select '"+uuid.NewV4().String()+"', '"+a.Id+"', ',0,"+a.Id+",', 1, '查看', 'LIBRARY', 'library:show', 2, NULL, NULL, 1, 0 where not exists (select 1 from sys_menu where permission='library:show');") |
| | | } else if a.Package == "algorithmManage" { // 应用中心 |
| | | sort = 7 |
| | | sqls = append(sqls, "INSERT INTO sys_menu(`id`,`parent_id`,`parent_ids`,`type`,`name`,`module`,`permission`,`sort`,`icon`,`url`,`enable`,`del_flag`) select '"+uuid.NewV4().String()+"', '"+a.Id+"', ',0,"+a.Id+",', 1, '已安装', 'ALGORITHMMANAGE', 'algorithmManage:installed', 1, NULL, NULL, 1, 0 where not exists (select 1 from sys_menu where permission='algorithmManage:installed');") |
| | | sqls = append(sqls, "INSERT INTO sys_menu(`id`,`parent_id`,`parent_ids`,`type`,`name`,`module`,`permission`,`sort`,`icon`,`url`,`enable`,`del_flag`) select '"+uuid.NewV4().String()+"', '"+a.Id+"', ',0,"+a.Id+",', 1, '离线升级/安装', 'ALGORITHMMANAGE', 'algorithmManage:insOffLine', 2, NULL, NULL, 1, 0 where not exists (select 1 from sys_menu where permission='algorithmManage:insOffLine');") |
| | | sqls = append(sqls, "INSERT INTO sys_menu(`id`,`parent_id`,`parent_ids`,`type`,`name`,`module`,`permission`,`sort`,`icon`,`url`,`enable`,`del_flag`) select '"+uuid.NewV4().String()+"', '"+a.Id+"', ',0,"+a.Id+",', 1, '应用中心购买', 'ALGORITHMMANAGE', 'algorithmManage:buy', 3, NULL, NULL, 1, 0 where not exists (select 1 from sys_menu where permission='algorithmManage:buy');") |
| | | sqls = append(sqls, "INSERT INTO sys_menu(`id`,`parent_id`,`parent_ids`,`type`,`name`,`module`,`permission`,`sort`,`icon`,`url`,`enable`,`del_flag`) select '"+uuid.NewV4().String()+"', '"+a.Id+"', ',0,"+a.Id+",', 1, '应用中心', 'ALGORITHMMANAGE', 'algorithmManage:main', 1, NULL, NULL, 1, 0 where not exists (select 1 from sys_menu where permission='algorithmManage:main');") |
| | | |
| | | sqls = append(sqls, "INSERT INTO sys_menu(`id`,`parent_id`,`parent_ids`,`type`,`name`,`module`,`permission`,`sort`,`icon`,`url`,`enable`,`del_flag`) select '"+uuid.NewV4().String()+"', '"+a.Id+"', ',0,"+a.Id+",', 1, '已激活', 'ALGORITHMMANAGE', 'algorithmManage:installed', 2, NULL, NULL, 1, 0 where not exists (select 1 from sys_menu where permission='algorithmManage:installed');") |
| | | sqls = append(sqls, "INSERT INTO sys_menu(`id`,`parent_id`,`parent_ids`,`type`,`name`,`module`,`permission`,`sort`,`icon`,`url`,`enable`,`del_flag`) select '"+uuid.NewV4().String()+"', '"+a.Id+"', ',0,"+a.Id+",', 1, '离线升级/安装', 'ALGORITHMMANAGE', 'algorithmManage:insOffLine', 3, NULL, NULL, 1, 0 where not exists (select 1 from sys_menu where permission='algorithmManage:insOffLine');") |
| | | sqls = append(sqls, "INSERT INTO sys_menu(`id`,`parent_id`,`parent_ids`,`type`,`name`,`module`,`permission`,`sort`,`icon`,`url`,`enable`,`del_flag`) select '"+uuid.NewV4().String()+"', '"+a.Id+"', ',0,"+a.Id+",', 1, '更新', 'ALGORITHMMANAGE', 'algorithmManage:buy', 4, NULL, NULL, 1, 0 where not exists (select 1 from sys_menu where permission='algorithmManage:buy');") |
| | | } else if a.Package == "datapush" { //数据推送 |
| | | sort = 8 |
| | | } else if a.Package == "settings" { //系统设置 |
| | |
| | | sqls = append(sqls, "INSERT INTO sys_menu(`id`,`parent_id`,`parent_ids`,`type`,`name`,`module`,`permission`,`sort`,`icon`,`url`,`enable`,`del_flag`) select '"+uuid.NewV4().String()+"', '"+a.Id+"', ',0,"+a.Id+",', 1, '键盘和语言', 'SETTINGS', 'settings:keyboard', 5, NULL, NULL, 1, 0 where not exists (select 1 from sys_menu where permission='settings:keyboard');") |
| | | sqls = append(sqls, "INSERT INTO sys_menu(`id`,`parent_id`,`parent_ids`,`type`,`name`,`module`,`permission`,`sort`,`icon`,`url`,`enable`,`del_flag`) select '"+uuid.NewV4().String()+"', '"+a.Id+"', ',0,"+a.Id+",', 1, '通用设置', 'SETTINGS', 'settings:common', 6, NULL, NULL, 1, 0 where not exists (select 1 from sys_menu where permission='settings:common');") |
| | | sqls = append(sqls, "INSERT INTO sys_menu(`id`,`parent_id`,`parent_ids`,`type`,`name`,`module`,`permission`,`sort`,`icon`,`url`,`enable`,`del_flag`) select '"+uuid.NewV4().String()+"', '"+a.Id+"', ',0,"+a.Id+",', 1, '设备信息', 'SETTINGS', 'settings:sysInfo', 7, NULL, NULL, 1, 0 where not exists (select 1 from sys_menu where permission='settings:sysInfo');") |
| | | /*sqls = append(sqls, "INSERT INTO sys_menu(`id`,`parent_id`,`parent_ids`,`type`,`name`,`module`,`permission`,`sort`,`icon`,`url`,`enable`,`del_flag`) select '"+uuid.NewV4().String()+"', '"+a.Id+"', ',0,"+a.Id+",', 1, '权限管理', 'SETTINGS', 'settings:permission', 4, NULL, NULL, 1, 0 where not exists (select 1 from sys_menu where permission='settings:permission');")*/ |
| | | sqls = append(sqls, "INSERT INTO sys_menu(`id`,`parent_id`,`parent_ids`,`type`,`name`,`module`,`permission`,`sort`,`icon`,`url`,`enable`,`del_flag`) select '"+uuid.NewV4().String()+"', '"+a.Id+"', ',0,"+a.Id+",', 1, '权限管理', 'SETTINGS', 'settings:permission', 8, NULL, NULL, 1, 0 where not exists (select 1 from sys_menu where permission='settings:permission');") |
| | | sqls = append(sqls, "INSERT INTO sys_menu(`id`,`parent_id`,`parent_ids`,`type`,`name`,`module`,`permission`,`sort`,`icon`,`url`,`enable`,`del_flag`) select '"+uuid.NewV4().String()+"', '"+a.Id+"', ',0,"+a.Id+",', 1, '设备管理', 'SETTINGS', 'settings:device', 9, NULL, NULL, 1, 0 where not exists (select 1 from sys_menu where permission='settings:device');") |
| | | sqls = append(sqls, "INSERT INTO sys_menu(`id`,`parent_id`,`parent_ids`,`type`,`name`,`module`,`permission`,`sort`,`icon`,`url`,`enable`,`del_flag`) select '"+uuid.NewV4().String()+"', '"+a.Id+"', ',0,"+a.Id+",', 1, '检测内容', 'SETTINGS', 'settings:content', 10, NULL, NULL, 1, 0 where not exists (select 1 from sys_menu where permission='settings:content');") |
| | | sqls = append(sqls, "INSERT INTO sys_menu(`id`,`parent_id`,`parent_ids`,`type`,`name`,`module`,`permission`,`sort`,`icon`,`url`,`enable`,`del_flag`) select '"+uuid.NewV4().String()+"', '"+a.Id+"', ',0,"+a.Id+",', 1, '预警规则', 'SETTINGS', 'settings:rule', 11, NULL, NULL, 1, 0 where not exists (select 1 from sys_menu where permission='settings:rule');") |
| | | |
| | | /*sqls = append(sqls, "INSERT INTO sys_menu(`id`,`parent_id`,`parent_ids`,`type`,`name`,`module`,`permission`,`sort`,`icon`,`url`,`enable`,`del_flag`) select '"+uuid.NewV4().String()+"', '"+a.Id+"', ',0,"+a.Id+",', 1, '广播设置', 'SETTINGS', 'settings:broadcast', 5, NULL, NULL, 1, 0 where not exists (select 1 from sys_menu where permission='settings:broadcast');")*/ |
| | | } else if a.Package == "vindicate" { //系统维护 |
| | | sort = 10 |
| | | sqls = append(sqls, "INSERT INTO sys_menu(`id`,`parent_id`,`parent_ids`,`type`,`name`,`module`,`permission`,`sort`,`icon`,`url`,`enable`,`del_flag`) select '"+uuid.NewV4().String()+"', '"+a.Id+"', ',0,"+a.Id+",', 1, '设备维护', 'VINDICATE', 'vindicate:device', 1, NULL, NULL, 1, 0 where not exists (select 1 from sys_menu where permission='vindicate:device');") |
| | | sqls = append(sqls, "INSERT INTO sys_menu(`id`,`parent_id`,`parent_ids`,`type`,`name`,`module`,`permission`,`sort`,`icon`,`url`,`enable`,`del_flag`) select '"+uuid.NewV4().String()+"', '"+a.Id+"', ',0,"+a.Id+",', 1, '数据库维护', 'VINDICATE', 'vindicate:db', 2, NULL, NULL, 1, 0 where not exists (select 1 from sys_menu where permission='vindicate:db');") |
| | | // sqls = append(sqls, "INSERT INTO sys_menu(`id`,`parent_id`,`parent_ids`,`type`,`name`,`module`,`permission`,`sort`,`icon`,`url`,`enable`,`del_flag`) select '"+uuid.NewV4().String()+"', '"+a.Id+"', ',0,"+a.Id+",', 1, '设备维护', 'VINDICATE', 'vindicate:device', 1, NULL, NULL, 1, 0 where not exists (select 1 from sys_menu where permission='vindicate:device');") |
| | | // sqls = append(sqls, "INSERT INTO sys_menu(`id`,`parent_id`,`parent_ids`,`type`,`name`,`module`,`permission`,`sort`,`icon`,`url`,`enable`,`del_flag`) select '"+uuid.NewV4().String()+"', '"+a.Id+"', ',0,"+a.Id+",', 1, '数据库维护', 'VINDICATE', 'vindicate:db', 2, NULL, NULL, 1, 0 where not exists (select 1 from sys_menu where permission='vindicate:db');") |
| | | sqls = append(sqls, "INSERT INTO sys_menu(`id`,`parent_id`,`parent_ids`,`type`,`name`,`module`,`permission`,`sort`,`icon`,`url`,`enable`,`del_flag`) select '"+uuid.NewV4().String()+"', '"+a.Id+"', ',0,"+a.Id+",', 1, '更新设置', 'VINDICATE', 'vindicate:update', 1, NULL, NULL, 1, 0 where not exists (select 1 from sys_menu where permission='vindicate:update');") |
| | | sqls = append(sqls, "INSERT INTO sys_menu(`id`,`parent_id`,`parent_ids`,`type`,`name`,`module`,`permission`,`sort`,`icon`,`url`,`enable`,`del_flag`) select '"+uuid.NewV4().String()+"', '"+a.Id+"', ',0,"+a.Id+",', 1, '系统清理', 'VINDICATE', 'vindicate:clear', 2, NULL, NULL, 1, 0 where not exists (select 1 from sys_menu where permission='vindicate:clear');") |
| | | sqls = append(sqls, "INSERT INTO sys_menu(`id`,`parent_id`,`parent_ids`,`type`,`name`,`module`,`permission`,`sort`,`icon`,`url`,`enable`,`del_flag`) select '"+uuid.NewV4().String()+"', '"+a.Id+"', ',0,"+a.Id+",', 1, '重启设置', 'VINDICATE', 'vindicate:restart', 3, NULL, NULL, 1, 0 where not exists (select 1 from sys_menu where permission='vindicate:restart');") |
| | | sqls = append(sqls, "INSERT INTO sys_menu(`id`,`parent_id`,`parent_ids`,`type`,`name`,`module`,`permission`,`sort`,`icon`,`url`,`enable`,`del_flag`) select '"+uuid.NewV4().String()+"', '"+a.Id+"', ',0,"+a.Id+",', 1, '备份还原', 'VINDICATE', 'vindicate:backup', 4, NULL, NULL, 1, 0 where not exists (select 1 from sys_menu where permission='vindicate:backup');") |
| | | sqls = append(sqls, "INSERT INTO sys_menu(`id`,`parent_id`,`parent_ids`,`type`,`name`,`module`,`permission`,`sort`,`icon`,`url`,`enable`,`del_flag`) select '"+uuid.NewV4().String()+"', '"+a.Id+"', ',0,"+a.Id+",', 1, '系统信息', 'VINDICATE', 'vindicate:sysinfo', 5, NULL, NULL, 1, 0 where not exists (select 1 from sys_menu where permission='vindicate:sysinfo');") |
| | | |
| | | } else if a.Package == "syslog" { |
| | | sort = 11 |
| | | } else if a.Package == "knowledge" { |
| | | sort = 12 |
| | | sqls = append(sqls, "INSERT INTO sys_menu(`id`,`parent_id`,`parent_ids`,`type`,`name`,`module`,`permission`,`sort`,`icon`,`url`,`enable`,`del_flag`) select '"+uuid.NewV4().String()+"', '"+a.Id+"', ',0,"+a.Id+",', 1, '设置', 'KNOWLEDGE', 'knowledge:set', 1, NULL, NULL, 1, 0 where not exists (select 1 from sys_menu where permission='knowledge:set');") |
| | | sqls = append(sqls, "INSERT INTO sys_menu(`id`,`parent_id`,`parent_ids`,`type`,`name`,`module`,`permission`,`sort`,`icon`,`url`,`enable`,`del_flag`) select '"+uuid.NewV4().String()+"', '"+a.Id+"', ',0,"+a.Id+",', 1, '查看', 'KNOWLEDGE', 'knowledge:show', 2, NULL, NULL, 1, 0 where not exists (select 1 from sys_menu where permission='knowledge:show');") |
| | | |
| | | } else if a.Package == "dataStack" { |
| | | sort = 13 |
| | | sqls = append(sqls, "INSERT INTO sys_menu(`id`,`parent_id`,`parent_ids`,`type`,`name`,`module`,`permission`,`sort`,`icon`,`url`,`enable`,`del_flag`) select '"+uuid.NewV4().String()+"', '"+a.Id+"', ',0,"+a.Id+",', 1, '数据栈配置', 'DATASTACK', 'dataStack:cameraInfo', 1, NULL, NULL, 1, 0 where not exists (select 1 from sys_menu where permission='dataStack:cameraInfo');") |
| | | sqls = append(sqls, "INSERT INTO sys_menu(`id`,`parent_id`,`parent_ids`,`type`,`name`,`module`,`permission`,`sort`,`icon`,`url`,`enable`,`del_flag`) select '"+uuid.NewV4().String()+"', '"+a.Id+"', ',0,"+a.Id+",', 1, '数据栈信息', 'DATASTACK', 'dataStack:selfRule', 2, NULL, NULL, 1, 0 where not exists (select 1 from sys_menu where permission='dataStack:selfRule');") |
| | | |
| | | } |
| | | |
| | | menu := models.SysMenu{} |
| | |
| | | package sys |
| | | |
| | | import ( |
| | | "errors" |
| | | "fmt" |
| | | "io/ioutil" |
| | | "os" |
| | |
| | | "vamicro/extend/util" |
| | | |
| | | "basic.com/valib/gogpu.git" |
| | | "basic.com/valib/logger.git" |
| | | "github.com/shirou/gopsutil/cpu" |
| | | "github.com/shirou/gopsutil/disk" |
| | | "github.com/shirou/gopsutil/host" |
| | |
| | | return util.Struct2Map(Stat) |
| | | } |
| | | |
| | | func GetGpu(key string) (vGpu []string, err error) { |
| | | resultMsg, e := util.ExeCmd("dlsmi --query-gpu=" + key) |
| | | if e != nil { |
| | | return vGpu, errors.New("无可用GPU!请检查是否正常安显卡及显卡驱动,通过dlsmi查询状态") |
| | | } |
| | | vGpu = strings.Split(string(resultMsg), "\n") |
| | | if len(vGpu) == 0 { |
| | | return vGpu, errors.New("无可用GPU!请检查是否正常安显卡及显卡驱动,通过dlsmi查询状态") |
| | | } |
| | | return vGpu, nil |
| | | } |
| | | |
| | | func GetDeviceInfo() map[string]interface{} { |
| | | cmd := exec.Command("/bin/sh", "-c", "lsblk -d | grep -v part | grep -v SWAP | grep -v M | grep disk | awk '{printf $4\" \"}'") |
| | | disks, _ := cmd.Output() |
| | | cpu, _ := cpu.Info() |
| | | gpuInfo, err := gogpu.Info() |
| | | var gpuMemTotal int64 |
| | | if err == nil { |
| | | for _, gpu := range gpuInfo.Info { |
| | | gpuMemTotal = gpuMemTotal + gpu.GpuMemoryTotal |
| | | |
| | | var gpuStr string |
| | | |
| | | //获取型号 |
| | | gpuName, _ := GetGpu("name") |
| | | if len(gpuName) > 0 { |
| | | var gpuArr []string = []string{} |
| | | gpuTotal, _ := GetGpu("memory.total") |
| | | for i, name := range gpuName { |
| | | //i>0跳过header |
| | | if i > 0 && len(name) > 0 { |
| | | gpuArr = append(gpuArr, fmt.Sprintf("%s %s", name, gpuTotal[i])) |
| | | } |
| | | } else { |
| | | logger.Debug("gpu error " + err.Error()) |
| | | } |
| | | gpu := gpuMemTotal |
| | | gpuStr = strings.Join(gpuArr, ",") |
| | | } |
| | | |
| | | mem, _ := mem.VirtualMemory() |
| | | host, _ := host.Info() |
| | | |
| | | return util.Struct2Map(map[string]interface{}{ |
| | | "cpu": cpu, |
| | | "gpu": gpu, |
| | | "gpu": gpuStr, |
| | | "mem": mem, |
| | | "host": host, |
| | | "disk": string(disks), |
| | |
| | | |
| | | go ms.StartServer(fm) |
| | | |
| | | go service.SelfUpdateStart(ctx, ms) //自动更新 |
| | | // go service.SelfUpdateStart(ctx, ms) //自动更新 |
| | | |
| | | go service.NoticeTick(ctx) //更新提醒 |
| | | |