package controllers
|
|
import (
|
"basic.com/pubsub/protomsg.git"
|
"basic.com/valib/bhomeclient.git"
|
"basic.com/valib/bhomedbapi.git"
|
"basic.com/valib/logger.git"
|
"encoding/json"
|
"strconv"
|
"strings"
|
"vamicro/sync-service/models"
|
"vamicro/sync-service/service"
|
"vamicro/sync-service/vo"
|
)
|
|
type CameraPolygonController struct {
|
|
}
|
|
// @Summary 根据cameraId查询摄像机多边形
|
// @Description 根据cameraId查询摄像机多边形
|
// @Accept json
|
// @Produce json
|
// @Tags 摄像机多边形
|
// @Param cameraId query 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/polygon/findByCameraId [get]
|
func (cpc CameraPolygonController) FindByCameraId(h *bhomeclient.WrapperHandler, c *bhomeclient.Request) *bhomeclient.Reply {
|
cameraId := c.Query("cameraId")
|
if cameraId == "" {
|
return &bhomeclient.Reply{ Success: false, Msg: "参数有误"}
|
}
|
var sv service.CameraPolygonService
|
voInfo := sv.FindByCameraId(cameraId)
|
return &bhomeclient.Reply{ Success: true, Data: voInfo}
|
}
|
|
type CPN struct {
|
models.CameraPolygon
|
CameraName string `json:"camera_name"`
|
}
|
|
// @Summary 查找所有多边形,返回的是数据库的结构
|
// @Description 查找所有多边形,返回的是数据库的结构
|
// @Produce json
|
// @Tags 摄像机多边形
|
// @Success 200 {string} json "{"code":200, success:true, msg:"", data:""}"
|
// @Failure 500 {string} json "{"code":500, success:false, msg:"", data:""}"
|
// @Router /data/api-v/polygon/findAll [get]
|
func (cpc CameraPolygonController) FindAll(h *bhomeclient.WrapperHandler, c *bhomeclient.Request) *bhomeclient.Reply{
|
m := make(map[string]string)
|
idNameM := make(map[string]string)
|
|
var cameraE models.Camera
|
cams, _ := cameraE.FindAll()
|
if cams ==nil {
|
cams = make([]models.Camera,0)
|
}
|
var stackApi bhomedbapi.FileStackApi
|
flag, stackList := stackApi.FindAllDoingStacks()
|
if flag && stackList !=nil {
|
for _,f :=range stackList {
|
cams = append(cams, models.Camera{
|
Id: f.Id,
|
Name: f.Name,
|
})
|
}
|
}
|
for _,c :=range cams {
|
idNameM[c.Id] = c.Name
|
}
|
|
var model models.CameraPolygon
|
polygons := model.FindAll()
|
|
var result []CPN
|
var arr []CPN //全部区域
|
for _,p :=range polygons {
|
if nn,exist := idNameM[p.CameraId];exist {
|
me := models.CameraPolygon{
|
Id: p.CameraId,
|
CameraId: p.CameraId,
|
Name: models.CAMERAPOLYGON_AREA_ALL,
|
Polygon: "",
|
DirectionLine: "",
|
Type: models.TYPE_POLYGON,
|
DefenceState: 1,
|
}
|
|
cpn := CPN{}
|
cpn.CameraPolygon = me
|
cpn.CameraName = nn
|
if _,ok := m[p.CameraId];!ok {
|
arr = append(arr, cpn)
|
}
|
|
m[p.CameraId] = p.CameraId
|
}
|
|
cpR := CPN{}
|
cpR.CameraPolygon = p
|
if rName, ex := idNameM[p.CameraId];ex {
|
cpR.CameraName = rName
|
}
|
result = append(result, cpR)
|
}
|
|
|
if cams != nil {
|
for _,cam :=range cams {
|
if _,ok := m[cam.Id];!ok {
|
m[cam.Id] = cam.Id
|
|
me := models.CameraPolygon{
|
Id: cam.Id,
|
CameraId: cam.Id,
|
Name: models.CAMERAPOLYGON_AREA_ALL,
|
Polygon: "",
|
DirectionLine: "",
|
Type: models.TYPE_POLYGON,
|
DefenceState: 1,
|
}
|
|
cpn := CPN{}
|
cpn.CameraPolygon = me
|
if nn,exist := idNameM[cam.Id];exist {
|
cpn.CameraName = nn
|
}
|
arr = append(arr, cpn)
|
}
|
}
|
}
|
|
result = append(result, arr...)//每一个摄像机都有一个默认的全部区域
|
|
return &bhomeclient.Reply{ Success: true, Data: result}
|
}
|
|
// @Summary 添加或更新摄像机多边形
|
// @Description 添加或更新摄像机多边形
|
// @Accept json
|
// @Produce json
|
// @Tags 摄像机多边形
|
// @Param cameraPolygon body vo.CameraPolygonVo 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/polygon/save [post]
|
func (cpc CameraPolygonController) Save(h *bhomeclient.WrapperHandler, c *bhomeclient.Request) *bhomeclient.Reply{
|
var cPolygon vo.CameraPolygonVo
|
|
if err := c.BindJSON(&cPolygon);err !=nil {
|
return &bhomeclient.Reply{ Success: false, Msg: "参数有误"}
|
}
|
if cPolygon.CameraId == "" {
|
return &bhomeclient.Reply{ Success: false, Msg: "摄像机id不能为空"}
|
}
|
|
var sv service.CameraPolygonService
|
delS, delF := sv.Save(cPolygon)
|
var msg =""
|
if len(delS) >0 {
|
msg += "删除成功:"+strings.Join(delS,",")
|
}
|
if len(delF) >0 {
|
if msg !=""{
|
msg +=";删除失败:"+strings.Join(delF,",")
|
} else {
|
msg +="删除失败:"+strings.Join(delF,",")
|
}
|
}
|
if msg ==""{
|
msg = "保存成功"
|
}
|
logger.Debug("polygon=>Save.msg:",msg)
|
return &bhomeclient.Reply{ Success: true, Data: msg}
|
}
|
|
// @Summary 根据多边形id更新布撤防状态
|
// @Description 根据多边形id更新布撤防状态
|
// @Produce json
|
// @Tags 摄像机多边形
|
// @Param polygonId query string true "多边形id"
|
// @Param defence_state query int true "布撤防状态(0:撤销,1:布防)"
|
// @Success 200 {string} json "{"code":200, success:true, msg:"", data:""}"
|
// @Failure 500 {string} json "{"code":500, success:false, msg:"", data:""}"
|
// @Router /data/api-v/polygon/updateDefenceStateByPolygonId [get]
|
func (cpc CameraPolygonController)UpdateDefenceStateByPolygonId(h *bhomeclient.WrapperHandler, c *bhomeclient.Request) *bhomeclient.Reply {
|
polygonId := c.Query("polygonId")//多边形id
|
defenceState,err := strconv.Atoi(c.Query("defence_state"))//布撤防状态
|
logger.Debug("polygonId:", polygonId)
|
logger.Debug("defence_state:",defenceState)
|
if err !=nil || polygonId=="" || (defenceState !=0 && defenceState !=1){
|
return &bhomeclient.Reply{ Success: false, Msg: "参数有误"}
|
}
|
var model models.CameraPolygon
|
if model.UpdateDefenceStateByPolygonId(polygonId,defenceState) {
|
cpc.addDbChangeMsg(h.Bk, protomsg.TableChanged_T_CameraPolygon, polygonId, protomsg.DbAction_Update, "")
|
return &bhomeclient.Reply{ Success: true, Msg: "更新成功"}
|
} else {
|
return &bhomeclient.Reply{ Success: false, Msg: "更新失败"}
|
}
|
}
|
|
// @Summary 根据摄像机id更新布撤防状态
|
// @Description 根据摄像机id更新布撤防状态
|
// @Produce json
|
// @Tags 摄像机多边形
|
// @Param cameraId query string true "摄像机id"
|
// @Param defence_state query int true "布撤防状态(0:撤销,1:布防)"
|
// @Success 200 {string} json "{"code":200, success:true, msg:"", data:""}"
|
// @Failure 500 {string} json "{"code":500, success:false, msg:"", data:""}"
|
// @Router /data/api-v/polygon/updateDefenceStateByCameraId [get]
|
func (cpc CameraPolygonController)UpdateDefenceStateByCameraId(h *bhomeclient.WrapperHandler, c *bhomeclient.Request) *bhomeclient.Reply {
|
cameraId := c.Query("cameraId")//多边形id
|
defenceState,err := strconv.Atoi(c.Query("defence_state"))//布撤防状态
|
if err !=nil || cameraId=="" || (defenceState !=0 && defenceState !=1){
|
return &bhomeclient.Reply{ Success: false, Msg: "参数有误"}
|
}
|
var model models.CameraPolygon
|
if model.UpdateDefenceStateByCameraId(cameraId,defenceState) {
|
cpc.addDbChangeMsg(h.Bk, protomsg.TableChanged_T_CameraPolygon, "", protomsg.DbAction_Update, "")
|
return &bhomeclient.Reply{ Success: true, Msg: "更新成功"}
|
} else {
|
return &bhomeclient.Reply{ Success: false, Msg: "更新失败"}
|
}
|
}
|
|
func (cpc CameraPolygonController) addDbChangeMsg(bk bhomeclient.Broker, tChanged protomsg.TableChanged,id string,action protomsg.DbAction,info string){
|
dbMsg := protomsg.DbChangeMessage{
|
Table:tChanged,
|
Id:id,
|
Action:action,
|
Info: info,
|
}
|
pb,_ := json.Marshal(dbMsg)
|
bk.Publish(service.ProcName, pb)
|
}
|