longan 1 рік тому
батько
коміт
7c1e26ecfe

+ 4 - 2
api/v1/app/gateway.go

@@ -7,6 +7,7 @@ import (
 	"lcfns/model/app/request"
 	"lcfns/model/common/response"
 	"lcfns/service"
+	"lcfns/utils"
 	"strconv"
 )
 
@@ -18,8 +19,9 @@ var gs = service.ServiceGroupApp.AppServiceGroup.GatewayService
 // List all devices
 func (api *GatewayApi) List(c *gin.Context) {
 	var req request.GatewayRequest
-	v0 := c.Query("uid")
-	req.Uid, _ = strconv.Atoi(v0)
+	//v0 := c.Query("uid")
+	id := utils.GetUserID(c)
+	req.Uid = int(id)
 
 	req.Name = c.Query("gatewayName")
 

+ 10 - 9
gatewayServer/c2s.go

@@ -69,16 +69,15 @@ func c2s4001(adu AppDataUnit, c net.Conn) {
 	//1. 网关登录后检查是否已经注册到数据库,没有就要保存至数据库
 	gs := service.ServiceGroupApp.AppServiceGroup.GatewayService
 	gw, err := gs.CreateIfNotExist(adu.DevId)
-	if err != nil {
-		//if errors.Is(err, appService.ExistError) {
-		if err == appService.ExistError {
-			logrus.Infof("网关[%s]登录成功", adu.DevId)
-		} else {
-			//如果错误不是"已注册",退出
-			logrus.WithField("网关注册失败", adu.DevId).Error(err)
-			return
-		}
+	if err != nil && err != appService.ExistError {
+		logrus.WithField("网关注册失败", adu.DevId).Error(err)
+		return
+	}
+	if err == appService.ExistError {
+		gs.UpdateState(&appModel.Gateway{Isn: gw.Isn, State: 1})
+		logrus.Infof("网关[%s]登录成功", adu.DevId)
 	}
+
 	//配置端口转发  配置不成功
 	//go func() {
 	//	err = s2c8004Set(a.DevId, SubCodePortTrans, add1)
@@ -153,6 +152,8 @@ func c2s4002(adu AppDataUnit, c net.Conn) {
 	if err != nil {
 		logrus.Errorf("写入数据错误 %e\n", err)
 	}
+	//todo 更新网关摄像头和ip音柱的状态
+
 }
 
 // 查询参数响应

+ 6 - 3
gatewayServer/gatewayServer.go

@@ -2,6 +2,7 @@ package gatewayServer
 
 import (
 	"fmt"
+	"github.com/sirupsen/logrus"
 	"io"
 	"lcfns/global"
 	"log"
@@ -32,6 +33,8 @@ var n int32
 func handleConn(c net.Conn) {
 	defer func() {
 		atomic.AddInt32(&n, -1)
+		//gs := service.ServiceGroupApp.AppServiceGroup.GatewayService
+		//gs.UpdateState()
 	}()
 	atomic.AddInt32(&n, 1)
 	fmt.Printf("连接数 %d\n", atomic.LoadInt32(&n))
@@ -44,14 +47,14 @@ func handleConn(c net.Conn) {
 			n, err := c.Read(buf)
 			if err != nil {
 				if err == io.EOF {
-					log.Println("已到达文件结束")
+					logrus.Println("已到达文件结束")
 					break
 				}
-				log.Println("读数据失败", err)
+				logrus.Println("读数据失败", err)
 				break
 			}
 			if n == 0 {
-				log.Println("未读取到数据")
+				logrus.Println("未读取到数据")
 				break
 			}
 			dataChan <- buf[:n]

+ 1 - 0
model/app/response/gateway.go

@@ -2,6 +2,7 @@ package response
 
 type Gateways struct {
 	ID           int    `json:"id" gorm:"column:id"`
+	Uid          int    `json:"uid" gorm:"column:uid"`
 	GatewayName  string `json:"gatewayName" gorm:"column:gateway_name"`
 	Isn          string `json:"isn" gorm:"column:isn"`
 	Osn          string `json:"osn" gorm:"column:osn"`

+ 3 - 2
service/app/camera.go

@@ -31,8 +31,9 @@ func (cameraService *CameraService) CreateIfNotExist(info isapi.DeviceInfo, gwId
 		return err
 	}
 	if camera.SN != "" {
-		//已注册至数据库,绑定至网关
-		global.Db.Model(&app.Camera{}).Where("id = ?", camera.ID).Update("gid", gwId)
+		//已注册至数据库,绑定至网关,更新摄像头状态
+		var m = map[string]any{"gid": gwId, "state": 1}
+		global.Db.Model(&app.Camera{}).Where("id = ?", camera.ID).Updates(m)
 		return errors.New("摄像头已注册")
 	}
 	//注册

+ 9 - 3
service/app/gateway.go

@@ -39,14 +39,14 @@ func (gs *GatewayService) List(req request.GatewayRequest) (list []response.Gate
 	//	c.`name` AS camera_name, RIGHT(c.sn,9) AS sn,stream_id,stream_url,
 	//	l.device_id AS ls_id,l.`status` AS ls_status
 	//FROM gateway g LEFT JOIN camera c ON g.id = c.gid LEFT JOIN loudspeaker l ON  g.id = l.gid ;
-	db := global.Db.Select("g.id,g.gateway_name,g.isn,g.osn,g.state AS gateway_state,g.description," +
+	db := global.Db.Select("g.id,g.uid,g.gateway_name,g.isn,g.osn,g.state AS gateway_state,g.description," +
 		"c.name AS camera_name, RIGHT(c.sn,9) AS camera_sn,c.stream_id,c.stream_url,c.state AS camera_state," +
 		//"i.device_id AS ipcast_id," +
 		"i.state AS ipcast_state").
 		Table("gateway g LEFT JOIN camera c ON g.id = c.gid LEFT JOIN ipcast i ON  g.id = i.gid").
 		Where("g.is_deleted = 0")
 	//条件查询设备,网关名,网关osn,摄像头sn,ip音柱devid,
-	if req.Uid > 0 {
+	if req.Uid > 1 {
 		db.Where("g.uid = ?", req.Uid)
 	}
 	if req.Osn != "" {
@@ -61,7 +61,9 @@ func (gs *GatewayService) List(req request.GatewayRequest) (list []response.Gate
 	if req.Name != "" {
 		db.Where("gateway_name LIKE ?", "%"+req.Name+"%")
 	}
-	db.Offset(req.PageSize * (req.Page - 1)).Limit(req.PageSize)
+	if req.Page != 0 || req.PageSize != 0 {
+		db.Offset(req.PageSize * (req.Page - 1)).Limit(req.PageSize)
+	}
 	err = db.Debug().Find(&list).Error
 	return
 }
@@ -90,6 +92,10 @@ func (gs *GatewayService) Update(gw *app.Gateway) error {
 	return global.Db.Model(&app.Gateway{}).Where("id = ? AND is_deleted = 0", gw.ID).Updates(m).Debug().Error
 }
 
+func (gs *GatewayService) UpdateState(gw *app.Gateway) error {
+	return global.Db.Model(&app.Gateway{}).Where("isn = ? AND is_deleted = 0", gw.Isn).Update("state", gw.State).Debug().Error
+}
+
 // DeleteGateways 删除网关及关联设备
 func (gs *GatewayService) DeleteGateways(gw app.Gateway) (err error) {
 	devs := gs.DevIds(gw.ID)