From 88d229d880079db1d31af1d4cbed3b8eb12fd47d Mon Sep 17 00:00:00 2001
From: sunty <1172534965@qq.com>
Date: 星期五, 28 六月 2019 14:31:08 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.1.14:10010/r/webserver
---
controllers/fileController.go | 18 +
controllers/camera.go | 137 ++++++++-
controllers/pollConfig.go | 110 ++++++++
controllers/eventPush.go | 191 ++++++++++++++
main.go | 3
controllers/dictionary.go | 32 ++
service/FaceSdkService.go | 180 +++++++++++++
middlewares/auth/jwt.go | 47 +-
router/router.go | 27 ++
9 files changed, 695 insertions(+), 50 deletions(-)
diff --git a/controllers/camera.go b/controllers/camera.go
index 7d73101..9cf2351 100644
--- a/controllers/camera.go
+++ b/controllers/camera.go
@@ -3,6 +3,7 @@
import (
"encoding/json"
"fmt"
+ "strconv"
"github.com/gin-gonic/gin"
@@ -14,20 +15,25 @@
type CameraController struct{}
type CameraVo struct {
- Id string `json:"id"`
- Name string `json:"name"`
- Type int `json:"type" `
- Addr string `json:"addr"`
- Areaid uint `json:"areaid"`
- Longitude float64 `json:"longitude"`
- Latitude float64 `json:"latitude"`
- Rtsp string `json:"rtsp"`
- Ip string `json:"ip"`
- Port int `json:"port"`
- Username string `json:"username"`
- Password string `json:"password"`
- Brand string `json:"brand"`
- Reserved string `json:"reserved"`
+ Id string `json:"id"`
+ Name string `json:"name"`
+ Type int `json:"type" `
+ Addr string `json:"addr"`
+ Areaid uint `json:"areaid"`
+ Longitude float64 `json:"longitude"`
+ Latitude float64 `json:"latitude"`
+ Rtsp string `json:"rtsp"`
+ Ip string `json:"ip"`
+ Port int `json:"port"`
+ Username string `json:"username"`
+ Password string `json:"password"`
+ Brand string `json:"brand"`
+ Reserved string `json:"reserved"`
+
+ IsRunning bool `json:"is_running"` //鏄惁姝e湪瑙g爜
+ RunEnable bool `json:"run_enable"` //鎺у埗瀹炴椂澶勭悊鎴栬疆璇㈠鐞嗙殑寮�鍏�
+ RunType int `json:"run_type"` //澶勭悊绫诲瀷锛�0锛氳疆璇紝1锛氬疄鏃�
+ RunServerId string `json:"run_server_id"` //褰撳墠姝e湪澶勭悊鐨勫垎鏋愭湇鍔″櫒id
}
// @Summary 娣诲姞鎽勫儚鏈�
@@ -49,7 +55,7 @@
return
}
cam.Id = util.PseudoUuid()
- paramBody :=util.Struct2Map(cam)
+ paramBody := util.Struct2Map(cam)
if api.CameraAdd(paramBody) {
util.ResponseFormat(c, code.Success, cam)
return
@@ -76,7 +82,7 @@
util.ResponseFormat(c, code.RequestParamError, "鍙傛暟閿欒")
return
}
- paramBody :=util.Struct2Map(cam)
+ paramBody := util.Struct2Map(cam)
if api.CameraAdd(paramBody) {
util.ResponseFormat(c, code.Success, cam)
return
@@ -97,11 +103,11 @@
var api dbapi.CameraApi
cid := c.Param("cid")
- if api.CameraDelete(cid){
+ if api.CameraDelete(cid) {
util.ResponseFormat(c, code.Success, "鍒犻櫎鎴愬姛")
return
}
- util.ResponseFormat(c, code.ComError,"鍒犻櫎澶辫触")
+ util.ResponseFormat(c, code.ComError, "鍒犻櫎澶辫触")
}
// @Summary 鏄剧ず鎽勫儚鏈�
@@ -115,9 +121,9 @@
func (ac CameraController) CameraSel(c *gin.Context) {
var api dbapi.CameraApi
cid := c.Param("cid")
- camera,err := api.GetCameraById(cid)
- if err !=nil {
- util.ResponseFormat(c,code.ComError,"鏌ヨ澶辫触")
+ camera, err := api.GetCameraById(cid)
+ if err != nil {
+ util.ResponseFormat(c, code.ComError, "鏌ヨ澶辫触")
return
}
@@ -187,3 +193,92 @@
fmt.Println(cameraId)
fmt.Println(areaId)
}
+
+// @Summary 鑾峰彇杩愯绫诲瀷鑾峰彇鎽勫儚鏈哄垪琛�
+// @Description 鑾峰彇杩愯绫诲瀷鑾峰彇鎽勫儚鏈哄垪琛�
+// @Produce json
+// @Tags camera
+// @Param runType query int true "0锛氭煡杞锛�1锛氭煡瀹炴椂"
+// @Param cameraName query string false "鏌ヨ鏉′欢"
+// @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/getCamerasByRunType [get]
+func (cc CameraController) GetCamerasByRunType(c *gin.Context) {
+
+ runTypeStr := c.Query("runType")
+ cameraName := c.Query("cameraName")
+ fmt.Println("runType:", runTypeStr)
+ fmt.Println("cameraName:", cameraName)
+ runType, err := strconv.Atoi(runTypeStr)
+ if err != nil || (runType != 0 && runType != 1) {
+ util.ResponseFormat(c, code.RequestParamError, "鍙傛暟鏈夎")
+ return
+ }
+ var api dbapi.CameraApi
+ b, list := api.GetCamerasByRunType(runType, cameraName)
+ if b {
+ dataBytes, _ := json.Marshal(list)
+ var cams []CameraVo
+ json.Unmarshal(dataBytes, &cams)
+ util.ResponseFormat(c, code.Success, cams)
+ } else {
+ util.ResponseFormat(c, code.ComError, err)
+ }
+}
+
+// @Summary 鍒囨崲鎽勫儚鏈鸿繍琛屽疄鏃舵垨杞鐨勫紑鍏�
+// @Description 鍒囨崲鎽勫儚鏈鸿繍琛屽疄鏃舵垨杞鐨勫紑鍏�
+// @Produce json
+// @Tags camera
+// @Param cameraId query string true "鎽勫儚鏈篿d"
+// @Param runEnable query bool true "寮�鍚細true锛屽叧闂細false"
+// @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/updateRunEnable [post]
+func (cc CameraController) UpdateRunEnable(c *gin.Context) {
+ cameraId := c.PostForm("cameraId")
+ enableStr := c.PostForm("runEnable")
+ runEnable, err := strconv.ParseBool(enableStr)
+ if cameraId == "" || err != nil {
+ util.ResponseFormat(c, code.RequestParamError, "鍙傛暟鏈夎")
+ return
+ }
+
+ var api dbapi.CameraApi
+ b, data := api.UpdateRunEnable(cameraId, runEnable)
+ fmt.Println("data:", data)
+ if b {
+ util.ResponseFormat(c, code.Success, data)
+ } else {
+ util.ResponseFormat(c, code.ComError, "鏇存柊澶辫触")
+ }
+}
+
+type CameraChangeRunVo struct {
+ CameraIds []string `json:"camera_ids"`
+ RunType int `json:"run_type"`
+}
+
+// @Summary 鎽勫儚鏈鸿疆璇㈠拰瀹炴椂鐘舵�佸垏鎹�
+// @Description 鎽勫儚鏈鸿疆璇㈠拰瀹炴椂鐘舵�佸垏鎹�
+// @Produce json
+// @Tags camera
+// @Param changeRunBody body controllers.CameraChangeRunVo 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/camera/changeRunType [post]
+func (cc CameraController) ChangeRunType(c *gin.Context) {
+ var ccrVo CameraChangeRunVo
+ if err := c.BindJSON(&ccrVo); err != nil {
+ util.ResponseFormat(c, code.RequestParamError, "鍙傛暟鏈夎")
+ return
+ }
+ paramBody := util.Struct2Map(ccrVo)
+ var api dbapi.CameraApi
+ b, data := api.ChangeRunType(paramBody)
+ if b {
+ util.ResponseFormat(c, code.Success, data)
+ } else {
+ util.ResponseFormat(c, code.ComError, "鏇存柊澶辫触")
+ }
+}
diff --git a/controllers/dictionary.go b/controllers/dictionary.go
index 4c66dd2..a68bc28 100644
--- a/controllers/dictionary.go
+++ b/controllers/dictionary.go
@@ -2,13 +2,12 @@
import (
"basic.com/dbapi.git"
+ "github.com/gin-gonic/gin"
"webserver/extend/code"
"webserver/extend/util"
- "github.com/gin-gonic/gin"
)
type DictionaryController struct {
-
}
// @Summary 鏍规嵁绫诲瀷鏌ユ壘瀛楀吀
@@ -23,8 +22,31 @@
var api dbapi.DicApi
flag, data := api.FindByType("")
if flag {
- util.ResponseFormat(c,code.Success,data)
+ util.ResponseFormat(c, code.Success, data)
} else {
- util.ResponseFormat(c,code.ComError,data)
+ util.ResponseFormat(c, code.ComError, data)
}
-}
\ No newline at end of file
+}
+
+// @Summary 鏍规嵁鐖禝D鏌ユ壘瀛楀吀
+// @Description 鏍规嵁鐖禝D鏌ユ壘瀛楀吀
+// @Produce json
+// @Tags 瀛楀吀
+// @Param parentId query string false "parentId"
+// @Success 200 {string} json "{"code":200, success:true, msg:"璇锋眰澶勭悊鎴愬姛", data:"鎴愬姛淇℃伅"}"
+// @Failure 500 {string} json "{"code":500, success:false, msg:"",data:"閿欒淇℃伅鍐呭"}"
+// @Router /data/api-v/dictionary/findByParentId [get]
+func (controller DictionaryController) FindByParentId(c *gin.Context) {
+ parentId := c.Query("parentId")
+ if parentId == "" {
+ util.ResponseFormat(c, code.RequestParamError, "鍙傛暟鏈夎")
+ return
+ }
+ var api dbapi.DicApi
+ flag, data := api.FindByParentId(parentId)
+ if flag {
+ util.ResponseFormat(c, code.Success, data)
+ } else {
+ util.ResponseFormat(c, code.ComError, "鏌ヨ澶辫触")
+ }
+}
diff --git a/controllers/eventPush.go b/controllers/eventPush.go
new file mode 100644
index 0000000..18f8a49
--- /dev/null
+++ b/controllers/eventPush.go
@@ -0,0 +1,191 @@
+package controllers
+
+import (
+ "basic.com/dbapi.git"
+ "github.com/gin-gonic/gin"
+ "webserver/extend/code"
+ "webserver/extend/util"
+)
+
+type EventPushController struct {
+}
+
+type EventPushVo struct {
+ Id string `json:"id"`
+ Name string `json:"name"`
+ TimeStart string `json:"time_start"`
+ TimeEnd string `json:"time_end"`
+ IsSatisfyAll bool `json:"is_satisfy_all"`
+ RuleText string `json:"rule_text"`
+ Enable bool `json:"enable"`
+ LinkType string `json:"link_type"`
+ LinkDevice string `json:"link_device"`
+
+ IpPorts []EventPushServerPortVo `json:"ip_ports"`
+ Urls []EventUrlVo `json:"urls"`
+ Rules []EventPushRuleVo `json:"rules"`
+}
+
+type EventPushRuleVo struct {
+ Id string `json:"id"`
+ TopicType string `json:"topic_type"` //鍙傛暟涓婚,鐩墠鍒嗕负浜旂被锛堟憚鍍忔満銆佸簳搴撱�佷换鍔°�佷汉鍛樸�佹姤璀︾瓑绾э級
+ TopicArg string `json:"topic_arg"` //涓婚瀵瑰簲鐨勫叿浣撳弬鏁�
+ Operator string `json:"operator"`
+ OperatorType string `json:"operator_type"`
+ RuleValue string `json:"rule_value"`
+ EventPushId string `json:"event_push_id"`
+}
+
+type EventPushServerPortVo struct {
+ ServerIp string `json:"server_ip"`
+ Port int `json:"port"`
+ Enable bool `json:"enable"`
+}
+
+type EventUrlVo struct {
+ Url string `json:"url"`
+ Enable bool `json:"enable"`
+}
+
+// @Summary 浜嬩欢鎺ㄩ�佷繚瀛�
+// @Description 浜嬩欢鎺ㄩ�佷繚瀛�
+// @Tags 浜嬩欢鎺ㄩ��
+// @Param SaveArgs body controllers.EventPushVo 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/eventPush/save [post]
+func (epc EventPushController) Save(c *gin.Context) {
+ var saveBody EventPushVo
+ if err := c.BindJSON(&saveBody); err != nil {
+ util.ResponseFormat(c, code.RequestParamError, "鍙傛暟鏈夎")
+ return
+ }
+ var api dbapi.EventPushApi
+ paramBody := util.Struct2Map(saveBody)
+ flag, data := api.Save(paramBody)
+ if flag {
+ util.ResponseFormat(c, code.Success, data)
+ } else {
+ util.ResponseFormat(c, code.ComError, data)
+ }
+}
+
+// @Summary 鏍规嵁浜嬩欢鎺ㄩ�佷富棰樼殑涓�绾у拰浜岀骇閫夐」鑾峰彇鏈�鍚庝笅鎷夎彍鍗曞垪琛�
+// @Description 鏍规嵁浜嬩欢鎺ㄩ�佷富棰樼殑涓�绾у拰浜岀骇閫夐」鑾峰彇鏈�鍚庝笅鎷夎彍鍗曞垪琛�
+// @Produce json
+// @Tags 浜嬩欢鎺ㄩ��
+// @Param topic query string true "涓�绾т富棰橀�夐」,渚嬪锛歝amera(鎽勫儚鏈�)"
+// @Param type query string true "瀛愰�夐」绫诲瀷锛屼緥濡傦細name锛堝悕绉帮級鎴朼ddr锛堜綅缃級"
+// @Success 200 {string} json "{"code":200, success:true, msg:"", data:""}"
+// @Failure 500 {string} json "{"code":500, success:false, msg:"",data:""}"
+// @Router /data/api-v/eventPush/findByEventTopic [get]
+func (epc EventPushController) FindByEventTopic(c *gin.Context) {
+ topic := c.Query("topic")
+ childType := c.Query("type")
+ if topic == "" {
+ util.ResponseFormat(c, code.RequestParamError, "鍙傛暟鏈夎")
+ return
+ }
+ var api dbapi.EventPushApi
+ flag, data := api.FindByEventTopic(topic, childType)
+ if flag {
+ util.ResponseFormat(c, code.Success, data)
+ } else {
+ util.ResponseFormat(c, code.ComError, data)
+ }
+}
+
+// @Summary 鏌ュ叏閮�
+// @Description 鏌ュ叏閮�
+// @Produce json
+// @Tags 浜嬩欢鎺ㄩ��
+// @Param name query string false "浜嬩欢鍚嶇О"
+// @Success 200 {string} json "{"code":200, success:true, msg:"", data:""}"
+// @Failure 500 {string} json "{"code":500, success:false, msg:"",data:""}"
+// @Router /data/api-v/eventPush/findAll [get]
+func (controller EventPushController) FindAll(c *gin.Context) {
+ name := c.Query("name")
+ var api dbapi.EventPushApi
+ flag, data := api.FindAll(name)
+ if flag {
+ util.ResponseFormat(c, code.Success, data)
+ } else {
+ util.ResponseFormat(c, code.ComError, "")
+ }
+}
+
+// @Summary 浜嬩欢鎺ㄩ�佺紪杈�
+// @Description 浜嬩欢鎺ㄩ�佺紪杈�
+// @Produce json
+// @Tags 浜嬩欢鎺ㄩ��
+// @Param id 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/eventPush/getById [get]
+func (controller EventPushController) GetById(c *gin.Context) {
+ id := c.Query("id")
+ if id == "" {
+ util.ResponseFormat(c, code.RequestParamError, "鍙傛暟鏈夎")
+ return
+ }
+ var api dbapi.EventPushApi
+ flag, data := api.GetById(id)
+ if flag {
+ util.ResponseFormat(c, code.Success, data)
+ } else {
+ util.ResponseFormat(c, code.ComError, "")
+ }
+}
+
+type ChangeStatusVo struct {
+ Id string `json:"id"`
+ Enable bool `json:"enable"`
+}
+
+// @Summary 鏀瑰彉enable鐘舵��
+// @Description 鏀瑰彉enable鐘舵��
+// @Produce json
+// @Tags 浜嬩欢鎺ㄩ��
+// @Param statusBody body controllers.ChangeStatusVo 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/eventPush/changeStatus [post]
+func (controller EventPushController) ChangeStatus(c *gin.Context) {
+ var statusBody ChangeStatusVo
+ err := c.BindJSON(&statusBody)
+ if err != nil {
+ util.ResponseFormat(c, code.RequestParamError, "鍙傛暟鏈夎")
+ return
+ }
+ var api dbapi.EventPushApi
+ flag, data := api.ChangeStatus(statusBody.Id, statusBody.Enable)
+ if flag {
+ util.ResponseFormat(c, code.Success, data)
+ } else {
+ util.ResponseFormat(c, code.ComError, data)
+ }
+}
+
+// @Summary 鏍规嵁id鍒犻櫎
+// @Description 鏍规嵁id鍒犻櫎
+// @Accept x-www-form-urlencoded
+// @Produce json
+// @Tags 浜嬩欢鎺ㄩ��
+// @Param id 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/eventPush/delete [post]
+func (controller EventPushController) Delete(c *gin.Context) {
+ id := c.PostForm("id")
+ if id == "" {
+ util.ResponseFormat(c, code.RequestParamError, "鍙傛暟鏈夎")
+ return
+ }
+ var api dbapi.EventPushApi
+ flag, data := api.Delete(id)
+ if flag {
+ util.ResponseFormat(c, code.Success, data)
+ } else {
+ util.ResponseFormat(c, code.ComError, data)
+ }
+}
diff --git a/controllers/fileController.go b/controllers/fileController.go
index 33a2d81..e175f30 100644
--- a/controllers/fileController.go
+++ b/controllers/fileController.go
@@ -85,6 +85,24 @@
}
}
+// @Description 浜哄憳鐓х墖涓婁紶骞惰幏鍙栫壒寰佸��
+// @Router /data/api-v/dbperson/fileUploadTest [POST]
+func (controller FileController) UploadPersonTest(c *gin.Context) {
+ file, header, err := c.Request.FormFile("file") //image杩欎釜鏄痷plaodify鍙傛暟瀹氫箟涓殑 'fileObjName':'image'
+ if err != nil {
+ util.ResponseFormat(c, code.RequestParamError, "鍙傛暟鏈夎")
+ return
+ }
+ //鏂囦欢鐨勫悕绉�
+ filename := header.Filename
+ fmt.Println(file, err, filename)
+ if err != nil {
+ log.Fatal(err)
+ filename = uuid.NewV4().String()
+ }
+
+}
+
/*// 瀵逛笂闈㈢殑缂栫爜缁撴灉杩涜base64瑙g爜
decodeBytes, err := base64.StdEncoding.DecodeString(encodeString)
if err != nil {
diff --git a/controllers/pollConfig.go b/controllers/pollConfig.go
new file mode 100644
index 0000000..014a071
--- /dev/null
+++ b/controllers/pollConfig.go
@@ -0,0 +1,110 @@
+package controllers
+
+import (
+ "basic.com/dbapi.git"
+ "github.com/gin-gonic/gin"
+ "strconv"
+ "webserver/extend/code"
+ "webserver/extend/util"
+)
+
+type PollConfigController struct {
+}
+
+type PollConfig struct {
+ ServerId string `json:"server_id"` //鏈嶅姟鍣╥d
+ PollPeriod int `json:"poll_period"` //杞鍛ㄦ湡
+ Delay int `json:"delay"` //寤舵椂鏃堕棿
+ Enable bool `json:"enable"` //鏄惁鍚敤杞
+}
+
+// @Summary 淇濆瓨杞鍛ㄦ湡
+// @Description 淇濆瓨杞鍛ㄦ湡
+// @Produce json
+// @Tags 杞閰嶇疆
+// @Param period query int 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/pollConfig/savePollPeriod [post]
+func (controller PollConfigController) SavePollPeriod(c *gin.Context) {
+ periodStr := c.PostForm("period")
+ period, err := strconv.Atoi(periodStr)
+ if periodStr == "" || err != nil {
+ util.ResponseFormat(c, code.RequestParamError, "鍙傛暟鏈夎")
+ return
+ }
+ var api dbapi.SysSetApi
+ b, data := api.SavePollPeriod(period)
+ if b {
+ util.ResponseFormat(c, code.Success, data)
+ } else {
+ util.ResponseFormat(c, code.ComError, "淇濆瓨澶辫触")
+ }
+}
+
+// @Summary 淇濆瓨杞寤舵椂
+// @Description 淇濆瓨杞寤舵椂
+// @Produce json
+// @Tags 杞閰嶇疆
+// @Param delay query int 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/pollConfig/savePollDelay [post]
+func (controller PollConfigController) SavePollDelay(c *gin.Context) {
+ delayStr := c.PostForm("delay")
+ delay, err := strconv.Atoi(delayStr)
+ if delayStr == "" || err != nil {
+ util.ResponseFormat(c, code.RequestParamError, "鍙傛暟鏈夎")
+ return
+ }
+ var api dbapi.SysSetApi
+ b, data := api.SavePollDelay(delay)
+ if b {
+ util.ResponseFormat(c, code.Success, data)
+ } else {
+ util.ResponseFormat(c, code.ComError, "淇濆瓨澶辫触")
+ }
+}
+
+// @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/pollConfig/getPollConfig [get]
+func (controller PollConfigController) GetPollConfig(c *gin.Context) {
+ var api dbapi.SysSetApi
+ b, data := api.GetPollConfig()
+ if b {
+ util.ResponseFormat(c, code.Success, data)
+ } else {
+ util.ResponseFormat(c, code.ComError, "鏌ヨ澶辫触")
+ }
+}
+
+type PollEnableVo struct {
+ Enable bool `json:"enable"`
+}
+
+// @Summary 鍒囨崲杞寮�鍏�
+// @Description 鍒囨崲杞寮�鍏�
+// @Produce json
+// @Tags 杞閰嶇疆
+// @Param argBody body controllers.PollEnableVo 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/pollConfig/updateEnable [post]
+func (controller PollConfigController) UpdateEnable(c *gin.Context) {
+ var argBody PollEnableVo
+ if err := c.BindJSON(&argBody); err != nil {
+ util.ResponseFormat(c, code.RequestParamError, "鍙傛暟鏈夎")
+ return
+ }
+ var api dbapi.SysSetApi
+ if api.UpdatePollEnable(argBody.Enable) {
+ util.ResponseFormat(c, code.Success, "淇敼鎴愬姛")
+ } else {
+ util.ResponseFormat(c, code.ComError, "淇敼澶辫触")
+ }
+}
diff --git a/main.go b/main.go
index 14eb75e..58ed362 100644
--- a/main.go
+++ b/main.go
@@ -6,10 +6,13 @@
"webserver/extend/config"
"webserver/models"
"webserver/router"
+ "webserver/service"
)
func main() {
+ service.TestPushImgMsg()
+
envirment := flag.String("e", "dev", "")
flag.Usage = func() {
glog.Exit("flag parse usage !")
diff --git a/middlewares/auth/jwt.go b/middlewares/auth/jwt.go
index c7074e2..0187b2f 100644
--- a/middlewares/auth/jwt.go
+++ b/middlewares/auth/jwt.go
@@ -2,7 +2,6 @@
import (
"encoding/json"
- "errors"
jwtLib "github.com/dgrijalva/jwt-go"
"github.com/dgrijalva/jwt-go/request"
"github.com/gin-gonic/gin"
@@ -14,14 +13,14 @@
type jwtAuthManager struct {
secret string
expire time.Duration
- alg string
+ alg string
}
-func NewJwtAuthDriver() *jwtAuthManager{
+func NewJwtAuthDriver() *jwtAuthManager {
return &jwtAuthManager{
- secret:TokenKey,
- expire:time.Hour*8,
- alg:"HS256",
+ secret: TokenKey,
+ expire: time.Hour * 8,
+ alg: "HS256",
}
}
@@ -35,44 +34,44 @@
if len(t) < 2 {
return false
}
- var keyFunc = func(token *jwtLib.Token) (interface{},error) {
+ var keyFunc = func(token *jwtLib.Token) (interface{}, error) {
b := []byte(jwtAuth.secret)
- return b,nil
+ return b, nil
}
- authJwtToken, err:= request.ParseFromRequest(c.Request,request.OAuth2Extractor,keyFunc)
- if err !=nil {
+ authJwtToken, err := request.ParseFromRequest(c.Request, request.OAuth2Extractor, keyFunc)
+ if err != nil {
return false
}
- c.Set("User",map[string]interface{}{
- "token":authJwtToken,
+ c.Set("User", map[string]interface{}{
+ "token": authJwtToken,
})
return authJwtToken.Valid
}
-func (jwtAuth *jwtAuthManager) User(c *gin.Context) interface{}{
+func (jwtAuth *jwtAuthManager) User(c *gin.Context) interface{} {
var jwtToken *jwtLib.Token
- if jwtUser, exist := c.Get("User");!exist{
- tokenStr :=strings.Replace(c.Request.Header.Get("Authorization"),"Bearer ","",-1)
- if tokenStr == ""{
+ if jwtUser, exist := c.Get("User"); !exist {
+ tokenStr := strings.Replace(c.Request.Header.Get("Authorization"), "Bearer ", "", -1)
+ if tokenStr == "" {
return map[interface{}]interface{}{}
}
var err error
- jwtToken,err = jwtLib.Parse(tokenStr, func(token *jwtLib.Token) (interface{}, error) {
- b :=[]byte(jwtAuth.secret)
- return b,nil
+ jwtToken, err = jwtLib.Parse(tokenStr, func(token *jwtLib.Token) (interface{}, error) {
+ b := []byte(jwtAuth.secret)
+ return b, nil
})
- if err !=nil {
- panic(err)
+ if err != nil {
+ return nil
}
} else {
jwtToken = jwtUser.(map[string]interface{})["token"].(*jwtLib.Token)
}
- if claims,ok :=jwtToken.Claims.(jwtLib.MapClaims);ok && jwtToken.Valid{
+ if claims, ok := jwtToken.Claims.(jwtLib.MapClaims); ok && jwtToken.Valid {
var user map[string]interface{}
if err := json.Unmarshal([]byte(claims["user"].(string)), &user); err != nil {
- panic(err)
+ return nil
}
c.Set("User", map[string]interface{}{
"token": jwtToken,
@@ -80,7 +79,7 @@
})
return user
} else {
- panic(errors.New("decode jwt user claims fail"))
+ return nil
}
}
diff --git a/router/router.go b/router/router.go
index 145b718..c8cdc34 100644
--- a/router/router.go
+++ b/router/router.go
@@ -7,6 +7,8 @@
"github.com/szuecs/gin-glog"
"time"
"webserver/controllers"
+
+ _ "webserver/docs"
)
func NewRouter() *gin.Engine {
@@ -32,6 +34,9 @@
cameraTaskArgsController := new(controllers.CameraTaskArgsController)
dicController := new(controllers.DictionaryController)
userController := new(controllers.UserController)
+ eventPushController := new(controllers.EventPushController)
+ pollConfigController := new(controllers.PollConfigController)
+ fileController := new(controllers.FileController)
urlPrefix := "/data/api-v" // wp 娣诲姞 璺緞 鍓嶇紑
userApi := r.Group(urlPrefix + "/user")
@@ -63,6 +68,9 @@
camera.GET("/delTask/:cameraId/:taskId", cameraController.CameraDelTask)
camera.POST("/saveTask", cameraController.CameraTaskSave)
camera.GET("/getRulesByCameraAndTask", cameraTaskArgsController.FindByCameraAndTask)
+ camera.GET("/getCamerasByRunType", cameraController.GetCamerasByRunType)
+ camera.POST("/updateRunEnable", cameraController.UpdateRunEnable)
+ camera.POST("/changeRunType", cameraController.ChangeRunType)
}
cameraTaskArgsApi := r.Group(urlPrefix + "/cameraTaskArgs")
@@ -133,6 +141,8 @@
vdbperson.POST("/deleteDbPersonById/:uuid", dbPersonCont.DeleteDbPerson)
vdbperson.POST("/deleteMoreDbPerson", dbPersonCont.DeleteMoreDbPerson)
vdbperson.PUT("/addDbPerson", dbPersonCont.AddDbPerson)
+
+ vdbperson.POST("/fileUploadTest", fileController.UploadPersonTest)
}
// 绯荤粺璁剧疆 鎿嶄綔
@@ -166,6 +176,23 @@
dicApi := r.Group(urlPrefix + "/dictionary")
{
dicApi.GET("/findByType", dicController.FindByType)
+ dicApi.GET("/findByParentId", dicController.FindByParentId)
+ }
+ eventPushApi := r.Group(urlPrefix + "/eventPush")
+ {
+ eventPushApi.POST("/save", eventPushController.Save)
+ eventPushApi.GET("/findByEventTopic", eventPushController.FindByEventTopic)
+ eventPushApi.GET("/findAll", eventPushController.FindAll)
+ eventPushApi.GET("/getById", eventPushController.GetById)
+ eventPushApi.POST("/changeStatus", eventPushController.ChangeStatus)
+ eventPushApi.POST("/delete", eventPushController.Delete)
+ }
+ pollCApi := r.Group(urlPrefix + "/pollConfig")
+ {
+ pollCApi.POST("/savePollPeriod", pollConfigController.SavePollPeriod)
+ pollCApi.POST("/savePollDelay", pollConfigController.SavePollDelay)
+ pollCApi.GET("/getPollConfig", pollConfigController.GetPollConfig)
+ pollCApi.POST("/updateEnable", pollConfigController.UpdateEnable)
}
// 鏂囦欢 涓婁紶
diff --git a/service/FaceSdkService.go b/service/FaceSdkService.go
new file mode 100644
index 0000000..6609997
--- /dev/null
+++ b/service/FaceSdkService.go
@@ -0,0 +1,180 @@
+package service
+
+import (
+ "basic.com/pubsub/protomsg.git"
+ "basic.com/valib/deliver.git"
+ "encoding/base64"
+ "fmt"
+ "github.com/gogo/protobuf/proto"
+ "github.com/pierrec/lz4"
+ "github.com/satori/go.uuid"
+ "gocv.io/x/gocv"
+ "time"
+)
+
+const (
+ Ipc_Push_Ext = "_2.ipc"
+ Ipc_Pull_Ext = "_1.ipc"
+ Ipc_Url_Pre = "ipc:///tmp///"
+ Virtual_FaceTaskId = "92496BDF-2BFA-98F2-62E8-96DD9866ABD2"
+ Virtual_FaceSdkId = "virtual-faceextract-sdk-pull"
+ Url_Service_PUSH = Ipc_Url_Pre + Virtual_FaceSdkId + Ipc_Push_Ext
+ Url_Service_PULL = Ipc_Url_Pre + Virtual_FaceSdkId + Ipc_Pull_Ext
+)
+
+var imgPushChan chan []byte
+var client_push deliver.Deliver
+var client_pull deliver.Deliver
+
+func TestPushImgMsg() {
+ InitService()
+
+ i := readImgFile()
+
+ fmt.Printf("width:%d,height:%d,data.length:%d,timestamp:%s,id:%d\n", i.Width, i.Height, len(i.Data), i.Timestamp, i.Id)
+ if b, err := proto.Marshal(&i); err != nil {
+ fmt.Println("protoImage marshal err")
+ return
+ } else {
+ bc := make([]byte, len(b))
+ ht := make([]int, 64<<10)
+ n, err := lz4.CompressBlock(b, bc, ht)
+ if err != nil {
+ fmt.Println(err)
+ }
+ if n >= len(b) {
+ fmt.Println("image is not compressible")
+ }
+ bc = bc[:n]
+ for {
+ PushImgMsg(bc)
+ fmt.Println("pushed img")
+ time.Sleep(5 * time.Second)
+ }
+
+ }
+}
+
+func readImgFile() protomsg.Image {
+ var i protomsg.Image
+ timeUnix := time.Now().Unix()
+ formatTimeStr := time.Unix(timeUnix, 0).Format("2006-01-02 15:04:05")
+ filePath := "/home/user/workspace/timg.jpg"
+
+ picMat := gocv.IMRead(filePath, gocv.IMReadColor)
+
+ defer picMat.Close()
+
+ if picMat.Empty() {
+ fmt.Println("file not exist")
+ return i
+ }
+ height := int32(picMat.Rows())
+ width := int32(picMat.Cols())
+ data := picMat.ToBytes()
+ //wrMat,_ := gocv.NewMatFromBytes(picMat.Rows(),picMat.Cols(),gocv.MatTypeCV8UC3,data)
+ //
+ //gocv.IMWrite("xxx.jpg", wrMat)
+
+ i = protomsg.Image{
+ Width: width,
+ Height: height,
+ Timestamp: formatTimeStr,
+ Data: data,
+ Id: timeUnix,
+ }
+ i.Cid = uuid.NewV4().String() //鏁版嵁鍞竴id
+ fmt.Println("gocv read img completed")
+ return i
+}
+
+func PushImgMsg(is []byte) {
+ imgPushChan <- is
+}
+
+var resultMap map[string]protomsg.SdkMessage
+
+func InitService() {
+ fmt.Println("service init!")
+ imgPushChan = make(chan []byte)
+ resultMap = make(map[string]protomsg.SdkMessage, 0)
+ client_push = deliver.NewClient(deliver.PushPull, Url_Service_PUSH)
+ client_pull = deliver.NewClient(deliver.PushPull, Url_Service_PULL)
+ defer func() {
+ client_push.Close()
+ client_pull.Close()
+ }()
+ go thSend()
+
+ go thRecv()
+}
+
+func thSend() {
+ for {
+ select {
+ case d := <-imgPushChan:
+ fmt.Println("imgPushChan in")
+ err := client_push.Send(d)
+ if err != nil {
+ fmt.Println("img Send err:", err)
+ }
+ default:
+ //fmt.Println("no img in")
+ }
+ }
+}
+
+func thRecv() {
+ for {
+ resultBytes, err := client_pull.Recv()
+ if err != nil {
+ fmt.Println("pull err:", err)
+ continue
+ }
+ rMsg := protomsg.SdkMessage{}
+ if err := proto.Unmarshal(resultBytes, &rMsg); err == nil {
+ fmt.Println("received MSG:", rMsg.Cid)
+ perId := rMsg.Cid //鏁版嵁id
+ if rMsg.Tasklab != nil && rMsg.Tasklab.Taskid == Virtual_FaceTaskId {
+ sdkInfos := rMsg.Tasklab.Sdkinfos
+ fmt.Println("Len(sdkInfos)=", len(sdkInfos))
+ for _, swt := range sdkInfos {
+ fmt.Println("sdkName:", swt.SdkName)
+ if swt.Sdktype == "FaceDetect" {
+ fmt.Println("浜鸿劯妫�娴嬬粨鏋�")
+ var pfp protomsg.ParamFacePos
+ err := proto.Unmarshal(swt.Sdkdata, &pfp)
+ if err != nil {
+ fmt.Println("faceDetect result unmarshal err:", err)
+ } else {
+ for _, face := range pfp.Faces {
+ fmt.Println("FacePos:", face.Pos)
+ fmt.Println("ThftResult:", face.Result)
+ }
+ }
+ }
+ if swt.Sdktype == "FaceExtract" {
+ fmt.Println("sdkData.len:", len(swt.Sdkdata))
+ var pff protomsg.ParamFaceFeature
+ if err := proto.Unmarshal(swt.Sdkdata, &pff); err != nil {
+ //fmt.Println("ParamFaceFeature unmarshal err:",err)
+ } else {
+ fmt.Println("鐩爣鏁帮細", len(pff.ExtComp))
+ for _, fea := range pff.ExtComp {
+ base64Fea := base64.StdEncoding.EncodeToString(fea.Feats)
+ fmt.Println("perId:", perId)
+ fmt.Println("faceFeature:", base64Fea)
+ }
+ }
+ break
+ }
+ }
+
+ }
+ //resultMap[rMsg.Cid] = rMsg
+ } else {
+ fmt.Println("recv msg Err:", err)
+ }
+
+ }
+}
--
Gitblit v1.8.0