From 9303b69ea569bcb5e581147543a3fd58e90d0d25 Mon Sep 17 00:00:00 2001
From: sunty <1172534965@qq.com>
Date: 星期四, 20 八月 2020 20:05:23 +0800
Subject: [PATCH] add get buckets contrl

---
 controllers/cameraTask.go |  227 +++++++++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 205 insertions(+), 22 deletions(-)

diff --git a/controllers/cameraTask.go b/controllers/cameraTask.go
index 4080663..7ae01fb 100644
--- a/controllers/cameraTask.go
+++ b/controllers/cameraTask.go
@@ -2,10 +2,16 @@
 
 import (
 	"basic.com/dbapi.git"
-	"webserver/extend/code"
-	"webserver/extend/util"
+	"basic.com/pubsub/esutil.git"
+	"encoding/json"
 	"fmt"
 	"github.com/gin-gonic/gin"
+	"strconv"
+	"webserver/cache"
+	"webserver/extend/code"
+	"webserver/extend/config"
+	"webserver/extend/util"
+	"webserver/models"
 )
 
 type CameraTaskController struct {
@@ -19,7 +25,7 @@
 
 type CameraTaskVo struct {
 	Id          string `json:"id"`
-	CameraIds   string `json:"camera_ids"`
+	CameraId   string `json:"camera_id"`
 	TaskId      string `json:"task_id"` //浠诲姟id  鏉ヨ嚜浜庝换鍔¤〃
 	TimeRule    string `json:"time_rule"`
 	ReactRule   string `json:"react_rule"`
@@ -29,7 +35,7 @@
 	Enable      int    `json:"enable"`                //榛樿鍚敤
 	Sort        int    `json:"sort"`    //浠诲姟鎺掑簭
 	IsFull      int    `json:"is_full"` //鍙傛暟鏄惁璁剧疆瀹屾暣
-	LinkGroupId string `json:"link_group_id"` //鑱斿姩浠诲姟缁�
+	LinkTaskId string `json:"link_task_id"` //鑱斿姩浠诲姟缁�
 }
 
 type CameraTaskSaveArg struct {
@@ -63,6 +69,17 @@
 	GroupId string `json:"group_id"`
 }
 
+type LinkCameraTasksVo struct {
+
+}
+
+type CameraTaskInfoVo struct {
+	Camera models.Camera `json:"camera"`
+	Tasks []models.Task `json:"tasks"`
+	Polygon CameraPolygonVo `json:"polygon"`
+}
+
+// @Security ApiKeyAuth
 // @Summary 鏌ヨ鎵�鏈変换鍔�
 // @Description "鏌ヨ鎵�鏈変换鍔�"
 // @Accept json
@@ -72,18 +89,94 @@
 // @Success 200 {string} json "{"code":200, success:true,  msg:"璇锋眰澶勭悊鎴愬姛", data:"鎵�鏈変换鍔′俊鎭�"}"
 // @Failure 500 {string} json "{"code":500, success:false   msg:"",data:"閿欒淇℃伅鍐呭"}"
 // @Router /data/api-v/camera/alltask [post]
-func (controller CameraTaskController) FindTasksByCameraIds(c *gin.Context){
+func (ctc CameraTaskController) FindTasksByCameraIds(c *gin.Context){
 	var mulCamera MultiCamera
 	c.BindJSON(&mulCamera)
 	var api dbapi.CameraTaskApi
 	flag, data := api.FindTasksByCameraIds(mulCamera.CameraIds)
 	if flag {
-		util.ResponseFormat(c,code.Success,data)
+		bytes, _ := json.Marshal(data)
+		var camTInfo []CameraTaskInfoVo
+		json.Unmarshal(bytes, &camTInfo)
+
+		//澶勭悊宸茶鍒犻櫎鐨勪换鍔�
+
+		var delTasks []models.Task
+		var taskApi dbapi.TaskApi
+		taskInfos := taskApi.FindAll()
+		m := make(map[string]string)
+		for _,ti :=range taskInfos{
+			if ti.Task.Taskid != FaceExtract_VirtualTaskId{
+				m[ti.Task.Taskid] = ti.Task.Taskid
+			}
+		}
+		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
+						delTasks = append(delTasks, models.Task{
+							Taskid:	taskId,
+							Taskname: tM["taskName"].(string),
+							DelFlag: true,
+						})
+					}
+				}
+			}
+		}
+		var result []CameraTaskInfoVo
+		if camTInfo != nil {
+			for _, camIn := range camTInfo {
+				nIfn := CameraTaskInfoVo{
+					Camera: camIn.Camera,
+					Polygon: camIn.Polygon,
+					Tasks: append(camIn.Tasks, delTasks...),
+				}
+				result = append(result, nIfn)
+			}
+		}
+
+		util.ResponseFormat(c,code.Success, result)
 	} else {
 		util.ResponseFormat(c,code.ComError,data)
 	}
 }
 
+// @Security ApiKeyAuth
+// @Summary 鎽勫儚鏈烘坊鍔犱竴涓换鍔�
+// @Description 鎽勫儚鏈烘坊鍔犱竴涓换鍔�
+// @Accept x-www-form-urlencoded
+// @Produce json
+// @Tags CameraTask
+// @Param cameraId formData string true "鎽勫儚鏈篿d"
+// @Param taskId formData string true "浠诲姟id"
+// @Success 200 {string} json "{"code":200, success:true, msg:"璇锋眰澶勭悊鎴愬姛", data:"鍗曚釜鎽勫儚鏈虹殑鍏ㄩ儴淇℃伅"}"
+// @Failure 500 {string} json "{"code":500, success:false, msg:"",data:"閿欒淇℃伅鍐呭"}"
+// @Router /data/api-v/cameraTask/addTask [post]
+func (ctc CameraTaskController) AddTask(c *gin.Context) {
+	cameraId := c.PostForm("cameraId")
+	taskId := c.PostForm("taskId")
+	if cameraId == "" || taskId == "" {
+		util.ResponseFormat(c,code.RequestParamError,"鍙傛暟鏈夎")
+		return
+	}
+	var api dbapi.CameraTaskApi
+	if b,data := api.AddTask(cameraId, taskId);b {
+		util.ResponseFormat(c,code.AddSuccess, data)
+	} else {
+		if data.(string) == "姝ゅ浗鏍囨憚鍍忔満宸插湪鍏跺畠鏈嶅姟鍣ㄩ厤缃换鍔★紒" {
+			util.ResponseFormat(c,code.AddTaskErr, data)
+		} else {
+			util.ResponseFormat(c,code.ComError, data)
+		}
+	}
+}
+
+// @Security ApiKeyAuth
 // @Summary 鏌ヨ鎵�鏈変换鍔�
 // @Description "鏌ヨ鎵�鏈変换鍔�"
 // @Produce json
@@ -92,7 +185,7 @@
 // @Success 200 {string} json "{"code":200, success:true, msg:"", data:""}"
 // @Failure 500 {string} json "{"code":500, success:false, msg:"", data:""}"
 // @Router /data/api-v/camera/task/{cameraId} [get]
-func (controller CameraTaskController) CameraTaskAll(c *gin.Context) {
+func (ctc CameraTaskController) CameraTaskAll(c *gin.Context) {
 	cameraId := c.Param("cameraId")
 	if cameraId == "" {
 		util.ResponseFormat(c,code.RequestParamError,"鎽勫儚鏈篿d涓嶈兘涓虹┖")
@@ -107,7 +200,7 @@
 	}
 }
 
-
+// @Security ApiKeyAuth
 // @Summary 鎽勫儚鏈轰繚瀛樹换鍔�
 // @Description 鎽勫儚鏈轰繚瀛樹换鍔�
 // @Accept json
@@ -117,7 +210,7 @@
 // @Success 200 {string} json "{"code":200, success:true, msg:"璇锋眰澶勭悊鎴愬姛", data:"娣诲姞鐨勪换鍔′俊鎭�"}"
 // @Failure 500 {string} json "{"code":500, success:false, msg:"",data:"閿欒淇℃伅鍐呭"}"
 // @Router /data/api-v/camera/saveTask [post]
-func (ac CameraController) CameraTaskSave(c *gin.Context) {
+func (cc CameraController) CameraTaskSave(c *gin.Context) {
 	var saveBody CameraTaskSaveArg
 	err := c.BindJSON(&saveBody)
 	if err != nil {
@@ -136,6 +229,36 @@
 	}
 }
 
+type PasteRuleArg struct {
+	SourceId string `json:"sourceId" binding:"required"`
+	TargetIds []string `json:"targetIds" binging:"required"`
+}
+
+// @Summary 澶嶅埗鎽勫儚鏈鸿鍒欏埌閫夊畾鐨勫涓憚鍍忔満
+// @Description 澶嶅埗鎽勫儚鏈鸿鍒欏埌閫夊畾鐨勫涓憚鍍忔満
+// @Accept json
+// @Produce json
+// @Tags CameraTask
+// @Param args body controllers.PasteRuleArg true "瑙勫垯澶嶅埗鍙傛暟"
+// @Success 200 {string} json "{"code":200, success:true, msg:"", data:""}"
+// @Failure 500 {string} json "{"code":500, success:false, msg:"",data:""}"
+// @Router /data/api-v/camera/pasteRules [post]
+func (ctc CameraTaskController) PasteRules(c *gin.Context) {
+	var reqBody PasteRuleArg
+	err := c.BindJSON(&reqBody)
+	if err != nil {
+		util.ResponseFormat(c, code.RequestParamError, "")
+		return
+	}
+	var api dbapi.CameraTaskApi
+	if api.PasteRules(reqBody.SourceId, reqBody.TargetIds) {
+		util.ResponseFormat(c,code.Success,"")
+	} else {
+		util.ResponseFormat(c,code.ComError,"")
+	}
+}
+
+// @Security ApiKeyAuth
 // @Summary 鍒犻櫎鎽勫儚鏈虹殑浠诲姟
 // @Description 鍒犻櫎鎽勫儚鏈虹殑浠诲姟
 // @Produce json
@@ -145,7 +268,7 @@
 // @Success 200 {string} json "{"code":200, success:true,  msg:"璇锋眰澶勭悊鎴愬姛", data:"鍒犻櫎鐨勬憚鍍忔満淇℃伅"}"
 // @Failure 500 {string} json "{"code":500, success:false,   msg:"",data:"閿欒淇℃伅鍐呭"}"
 // @Router /data/api-v/camera/delTask/{cameraId}/{taskId} [delete]
-func (ac CameraController) CameraDelTask(c *gin.Context) {
+func (cc CameraController) CameraDelTask(c *gin.Context) {
 	cameraId := c.Param("cameraId")
 	taskId := c.Param("taskId")
 	if cameraId == "" || taskId == "" {
@@ -162,40 +285,100 @@
 	}
 }
 
-type TransAndAlarmLevelVo struct {
+type DataTransVo struct {
 	CameraIds []string `json:"camera_ids"`
 	TaskId string `json:"task_id"`
 	IsDataTrans int `json:"is_data_trans"`
-	GroupLevels []GroupAlarmLevelVo `json:"group_levels"`
 }
 type GroupAlarmLevelVo struct {
 	GroupId string `json:"group_id"`
 	AlarmLevel int `json:"alarm_level"`
 }
 
-// @Summary 淇濆瓨浠诲姟鏄惁涓嬩紶鏁版嵁浠ュ強缁勬姤璀︾瓑绾�
-// @Description 淇濆瓨浠诲姟鏄惁涓嬩紶鏁版嵁浠ュ強缁勬姤璀︾瓑绾�
+// @Security ApiKeyAuth
+// @Summary 淇濆瓨浠诲姟鏄惁涓嬩紶鏁版嵁
+// @Description 淇濆瓨浠诲姟鏄惁涓嬩紶鏁版嵁
 // @Accept json
 // @Produce json
 // @Tags CameraTask
-// @Param TransAndAlarmLevel body controllers.TransAndAlarmLevelVo true "璇锋眰鍙傛暟缁撴瀯"
+// @Param TransAndAlarmLevel body controllers.DataTransVo true "璇锋眰鍙傛暟缁撴瀯"
 // @Success 200 {string} json "{"code":200, success:true, msg:"", data:""}"
 // @Failure 500 {string} json "{"code":500, success:false, msg:"", data:""}"
-// @Router /data/api-v/cameraTask/saveTransAndAlarmLevel [post]
-func (controller CameraTaskController) SaveTransAndAlarmLevel(c *gin.Context) {
-	var vo TransAndAlarmLevelVo
-	if err := c.BindJSON(&vo);err!=nil {
+// @Router /data/api-v/cameraTask/saveIsDataTrans [post]
+func (ctc CameraTaskController) SaveIsDataTrans(c *gin.Context) {
+	var transVo DataTransVo
+	if err := c.BindJSON(&transVo);err!=nil {
 		util.ResponseFormat(c,code.RequestParamError,"鍙傛暟鏈夎")
 		return
 	}
-	fmt.Println("SaveTransAndAlarmLevel.vo:",vo)
 	var api dbapi.CameraTaskApi
-	paramBody := util.Struct2Map(vo)
+	paramBody := util.Struct2Map(transVo)
 
-	flag ,data := api.SaveTransAndAlarmLevel(paramBody)
+	flag ,data := api.SaveIsDataTrans(paramBody)
 	if flag {
 		util.ResponseFormat(c,code.Success,data)
 	} else {
 		util.ResponseFormat(c,code.ComError,data)
 	}
+}
+
+// @Security ApiKeyAuth
+// @Summary 淇濆瓨瑙勫垯缁勬姤璀︾瓑绾�
+// @Description 淇濆瓨瑙勫垯缁勬姤璀︾瓑绾�
+// @Accept json
+// @Produce json
+// @Tags CameraTask
+// @Param GroupLevel body controllers.GroupAlarmLevelVo true "alarmLevel"
+// @Success 200 {string} json "{"code":200, success:true, msg:"", data:""}"
+// @Failure 500 {string} json "{"code":500, success:false, msg:"", data:""}"
+// @Router /data/api-v/cameraTask/saveAlarmLevelByGroup [post]
+func (ctc CameraTaskController) SaveAlarmLevelByGroup(c *gin.Context) {
+	var groupLevelVo GroupAlarmLevelVo
+	if err := c.BindJSON(&groupLevelVo);err !=nil {
+		util.ResponseFormat(c,code.RequestParamError,"鍙傛暟鏈夎")
+		return
+	}
+
+	var api dbapi.CameraTaskApi
+	flag,data := api.SaveAlarmLevelByGroup(groupLevelVo.GroupId,groupLevelVo.AlarmLevel)
+	if flag {
+		util.ResponseFormat(c,code.Success,data)
+	} else {
+		util.ResponseFormat(c,code.ComError,data)
+	}
+}
+
+type CameraTaskStatusVo struct {
+	CameraId string `json:"cameraId"`
+	TaskId string `json:"taskId"`
+	Status int `json:"status"`
+}
+
+// @Security ApiKeyAuth
+// @Summary 鏇存柊浠诲姟鐘舵��
+// @Description 鏇存柊浠诲姟鐘舵��
+// @Accept json
+// @Produce json
+// @Tags CameraTask
+// @Param CameraTaskStatus body controllers.CameraTaskStatusVo true "鍙傛暟缁撴瀯浣�"
+// @Success 200 {string} json "{"code":200, success:true, msg:"", data:""}"
+// @Failure 500 {string} json "{"code":500, success:false, msg:"", data:""}"
+// @Router /data/api-v/cameraTask/updateCameraTaskStatus [post]
+func (ctc CameraTaskController) UpdateCameraTaskStatus(c *gin.Context) {
+	var paramVo CameraTaskStatusVo
+	if err := c.BindJSON(&paramVo);err !=nil {
+		util.ResponseFormat(c,code.RequestParamError,"鍙傛暟鏈夎")
+		return
+	}
+	var api dbapi.CameraTaskApi
+	flag, data := api.UpdateCameraTaskStatus(paramVo.CameraId, paramVo.TaskId, paramVo.Status)
+	if flag {
+		if data.(string) == "姝や换鍔′负鍋滅敤鐘舵�侊紝璇峰湪浠诲姟绠$悊涓紑鍚紒"{
+			util.ResponseFormat(c,code.TaskStoped,data)
+		} else {
+			util.ResponseFormat(c,code.UpdateSuccess,data)
+		}
+	} else {
+		util.ResponseFormat(c,code.ComError,data)
+	}
 }
\ No newline at end of file

--
Gitblit v1.8.0