| | |
| | | // @Description 算法保存 |
| | | // @Accept json |
| | | // @Produce json |
| | | // @Tags sdk |
| | | // @Tags 算法 |
| | | // @Param reqMap body controllers.SdkVo true "人脸检测" |
| | | // @Success 200 {string} json "{"code":200, msg:"请求处理成功",data:"",success:true}" |
| | | // @Failure 500 {string} json "{"code":500, msg:"请求失败",data:"",success:false}" |
| | |
| | | // @Summary 查找所有算法 |
| | | // @Description 查找所有算法 |
| | | // @Produce json |
| | | // @Tags sdk |
| | | // @Tags 算法 |
| | | // @Param sdkName query string false "可选参数" |
| | | // @Success 200 {string} json "{"code":200, msg:"请求处理成功",data:"算法列表",success:true}" |
| | | // @Failure 500 {string} json "{"code":500, msg:"请求失败",data:"[]",success:false}" |
| | |
| | | // @Summary 根据id获取算法信息 |
| | | // @Description 根据id获取算法信息 |
| | | // @Produce json |
| | | // @Tags sdk |
| | | // @Tags 算法 |
| | | // @Param id query string true "算法id,必填" |
| | | // @Success 200 {string} json "{"code":200, msg:"请求处理成功",data:"算法信息",success:true}" |
| | | // @Failure 500 {string} json "{"code":500, msg:"请求失败",data:"",success:false}" |
| | |
| | | // @Summary 根据taskId获取算法信息 |
| | | // @Description 根据taskId获取算法信息 |
| | | // @Produce json |
| | | // @Tags sdk |
| | | // @Tags 算法 |
| | | // @Param taskId query string true "taskId,必填" |
| | | // @Success 200 {string} json "{"code":200, msg:"请求处理成功",data:"算法信息",success:true}" |
| | | // @Failure 500 {string} json "{"code":500, msg:"请求失败",data:"",success:false}" |
| | |
| | | // @Description 算法安装包上传(分块检查) |
| | | // @Accept multipart/form-data |
| | | // @Produce json |
| | | // @Tags sdk |
| | | // @Tags 算法 |
| | | // @Param chunkNumber formData int true "当前是第几个分块" |
| | | // @Param chunkSize formData int true "每一块的大小" |
| | | // @Param currentChunkSize formData int true "当前块的大小" |
| | |
| | | // @Description 算法安装包上传 |
| | | // @Accept multipart/form-data |
| | | // @Produce json |
| | | // @Tags sysset |
| | | // @Tags 算法 |
| | | // @Param chunkNumber formData int true "当前是第几个分块" |
| | | // @Param chunkSize formData int true "每一块的大小" |
| | | // @Param currentChunkSize formData int true "当前块的大小" |
| | |
| | | // @Summary 从商城下载或升级算法 |
| | | // @Description 从商城下载或升级算法 |
| | | // @Produce json |
| | | // @Tags sysset |
| | | // @Tags 算法 |
| | | // @Param path query string true "算法id" |
| | | // @Success 200 {string} json "{"code":200, msg:"", success:true}" |
| | | // @Failure 500 {string} json "{"code":500, msg:"", success:false}" |
| | |
| | | util.ResponseFormat(c, &code.Code{http.StatusBadRequest, false, err.Error()}, err.Error()) |
| | | } |
| | | } |
| | | |
| | | // @Security ApiKeyAuth |
| | | // @Summary 使用激活码激活安装算法 |
| | | // @Description 使用激活码激活安装算法 |
| | | // @Produce json |
| | | // @Tags 算法 |
| | | // @Param code query string true "激活码" |
| | | // @Success 200 {string} json "{"code":200, msg:"", success:true}" |
| | | // @Failure 500 {string} json "{"code":500, msg:"", success:false}" |
| | | // @Router /data/api-v/sdk/active [get] |
| | | func (sc SdkController) Active(c *gin.Context) { |
| | | cod := c.GetString("code") |
| | | if cod == "" { |
| | | util.ResponseFormat(c, code.RequestParamError, "激活码不能为空") |
| | | return |
| | | } |
| | | var sv service.SdkInstallService |
| | | err := sv.Active(cod) |
| | | if err == nil { |
| | | util.ResponseFormat(c,code.Success, "激活成功") |
| | | } else { |
| | | util.ResponseFormat(c,code.ComError, err.Error()) |
| | | } |
| | | } |
| | |
| | | package controllers |
| | | |
| | | import ( |
| | | "basic.com/dbapi.git" |
| | | "basic.com/pubsub/esutil.git" |
| | | "github.com/gin-gonic/gin" |
| | | "strconv" |
| | | "time" |
| | | "webserver/cache" |
| | | "webserver/extend/code" |
| | | "webserver/extend/config" |
| | | "webserver/extend/util" |
| | | ) |
| | | |
| | |
| | | // @Router /data/api-v/task/aggregateTaskList [GET] |
| | | func (tc TaskController) AggregateTaskList(c *gin.Context) { |
| | | // 显示所有任务: 获取信息 |
| | | //var taskApi dbapi.TaskApi |
| | | // |
| | | //taskInfos := taskApi.FindAll() |
| | | //m := make(map[string]string) |
| | | //var arr []protomsg.TaskSdkInfo |
| | | //for _,ti :=range taskInfos{ |
| | | // if ti.Task.Taskid != FaceExtract_VirtualTaskId{ |
| | | // arr = append(arr,ti) |
| | | // m[ti.Task.Taskid] = ti.Task.Taskid |
| | | // } |
| | | //} |
| | | //var tasks []TaskSdkVo |
| | | //dataBytes, err := json.Marshal(arr) |
| | | //if err !=nil { |
| | | // util.ResponseFormat(c,code.ComError,[]TaskSdkVo{}) |
| | | //} else { |
| | | // if err := json.Unmarshal(dataBytes, &tasks);err !=nil { |
| | | // util.ResponseFormat(c,code.ComError,[]TaskSdkVo{}) |
| | | // } else { |
| | | // //处理已被删除的任务 |
| | | // localConf, _ := cache.GetServerInfo() |
| | | // if localConf.AlarmIp != "" && localConf.ServerId != "" && localConf.AlarmPort>0 { |
| | | // indexName := config.EsInfo.EsIndex.AiOcean.IndexName |
| | | // esTaskM, e := esutil.AggregateTaskList(localConf.AlarmIp, strconv.Itoa(int(localConf.AlarmPort)), indexName, localConf.ServerId) |
| | | // if e==nil && esTaskM !=nil { |
| | | // for _,tM :=range esTaskM { |
| | | // if _,ok := m[tM["taskId"].(string)];!ok {//表示此任务已被删除 |
| | | // taskId := tM["taskId"].(string) |
| | | // m[taskId] = taskId |
| | | // tasks = append(tasks, TaskSdkVo{ |
| | | // Task:TaskVo{ |
| | | // Taskid: taskId, |
| | | // Taskname: tM["taskName"].(string), |
| | | // DelFlag: true, |
| | | // }, |
| | | // Sdks:[]SdkVo{}, |
| | | // }) |
| | | // } |
| | | // } |
| | | // } |
| | | // } |
| | | // |
| | | // util.ResponseFormat(c,code.Success,tasks) |
| | | // } |
| | | //} |
| | | util.ResponseFormat(c,code.Success,[]interface{}{}) |
| | | var api dbapi.CameraRuleApi |
| | | |
| | | var result []SceneIfDelResult |
| | | m := make(map[string]string) |
| | | if b, allRules := api.FindAll(); b { |
| | | for _,cg :=range allRules { |
| | | for _,g := range cg.Rules { |
| | | m[g.Id] = g.SceneName |
| | | result = append(result, SceneIfDelResult{ |
| | | Id: g.Id, |
| | | Name: g.SceneName, |
| | | IsDelete: false, |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | |
| | | localConf, _ := cache.GetServerInfo() |
| | | if localConf.AlarmIp != "" && localConf.ServerId != "" && localConf.AlarmPort>0 { |
| | | indexName := config.EsInfo.EsIndex.AiOcean.IndexName |
| | | esTaskM, e := esutil.AggregateTaskList(localConf.AlarmIp, strconv.Itoa(int(localConf.AlarmPort)), indexName, localConf.ServerId) |
| | | if e==nil && esTaskM !=nil { |
| | | for _,tM :=range esTaskM { |
| | | if _,ok := m[tM["taskId"].(string)];!ok {//表示此任务已被删除 |
| | | taskId := tM["taskId"].(string) |
| | | taskName := tM["taskName"].(string) |
| | | m[taskId] = taskName |
| | | result = append(result, SceneIfDelResult{ |
| | | Id: taskId, |
| | | Name: taskName, |
| | | IsDelete: true, |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | } |
| | | util.ResponseFormat(c, code.Success, result) |
| | | } |
| | | |
| | | //// @Security ApiKeyAuth |
| | |
| | | sdkApi.GET("/sdkDownload", sdkController.SdkDownLoad) |
| | | sdkApi.GET("/upload", sdkController.Upload) |
| | | sdkApi.POST("/upload", sdkController.UploadPack) |
| | | sdkApi.GET("/active", sdkController.Active) |
| | | } |
| | | |
| | | //算法参数 |
| | |
| | | |
| | | import ( |
| | | "basic.com/dbapi.git" |
| | | "basic.com/valib/licence.git" |
| | | "basic.com/valib/logger.git" |
| | | "encoding/json" |
| | | "errors" |
| | |
| | | "strings" |
| | | "webserver/extend/config" |
| | | "webserver/extend/util" |
| | | reqUtil "webserver/extend/util" |
| | | ) |
| | | |
| | | type SdkInstallService struct { |
| | | |
| | | } |
| | | |
| | | func (sv SdkInstallService) Active(cod string) error { |
| | | //使用激活码激活算法 |
| | | url := "http://"+config.ShopConf.Url+"/data/api-s/sdk/activeByAINode" |
| | | machineCode := licence.GetMachineCode() |
| | | if machineCode == "" { |
| | | logger.Debug("获取机器码失败") |
| | | return errors.New("获取机器码失败") |
| | | } |
| | | paramBody := map[string]interface{}{ |
| | | "code": cod, |
| | | "machineCode": machineCode, |
| | | } |
| | | header := map[string]string { |
| | | "Authorization": token, |
| | | } |
| | | respBody, err := reqUtil.DoPostRequest(url, reqUtil.CONTENT_TYPE_JSON, paramBody, nil, header) |
| | | if err != nil { |
| | | logger.Debug("DoPostRequest err:", err) |
| | | return err |
| | | } |
| | | var res dbapi.Result |
| | | if err = json.Unmarshal(respBody, &res); err != nil { |
| | | logger.Debug("unmarshal err:", err) |
| | | return err |
| | | } |
| | | if !res.Success { |
| | | logger.Debug("res.Data:", res.Data) |
| | | return errors.New("请求商城失败") |
| | | } |
| | | |
| | | return nil |
| | | } |
| | | |
| | | //算法安装包安装 |
| | | func (sv SdkInstallService) SdkInstall(identifier string,filename string) (bool,error) { |
| | | configPatchPath := "" |