longan 1 năm trước cách đây
mục cha
commit
a15f19cd1d
49 tập tin đã thay đổi với 2786 bổ sung60 xóa
  1. 8 0
      .idea/.gitignore
  2. 9 0
      .idea/lc-fangdaosha.iml
  3. 8 0
      .idea/modules.xml
  4. 6 0
      .idea/vcs.xml
  5. 178 0
      api/v1/app/camera.go
  6. 14 0
      api/v1/app/enter.go
  7. 51 0
      api/v1/app/event.go
  8. 99 0
      api/v1/app/gateway.go
  9. 45 0
      api/v1/app/picture.go
  10. 2 5
      config.yaml
  11. 35 11
      config/config.go
  12. 237 0
      doc/lc-base-frame/casbin_rule.sql
  13. 0 0
      doc/lc-base-frame/jwt_blacklists.sql
  14. 160 0
      doc/lc-base-frame/sys_apis.sql
  15. 4 0
      doc/lc-base-frame/sys_authorities.sql
  16. 1 0
      doc/lc-base-frame/sys_authority_btns.sql
  17. 54 0
      doc/lc-base-frame/sys_authority_menus.sql
  18. 8 0
      doc/lc-base-frame/sys_auto_code_histories.sql
  19. 2 0
      doc/lc-base-frame/sys_auto_codes.sql
  20. 2 0
      doc/lc-base-frame/sys_base_menu_btns.sql
  21. 2 0
      doc/lc-base-frame/sys_base_menu_parameters.sql
  22. 34 0
      doc/lc-base-frame/sys_base_menus.sql
  23. 0 0
      doc/lc-base-frame/sys_chat_gpt_options.sql
  24. 5 0
      doc/lc-base-frame/sys_data_authority_id.sql
  25. 7 0
      doc/lc-base-frame/sys_dictionaries.sql
  26. 29 0
      doc/lc-base-frame/sys_dictionary_details.sql
  27. 1126 0
      doc/lc-base-frame/sys_operation_records.sql
  28. 4 0
      doc/lc-base-frame/sys_user_authority.sql
  29. 2 0
      doc/lc-base-frame/sys_users.sql
  30. 0 3
      go.mod
  31. 0 17
      go.sum
  32. 4 24
      main.go
  33. 21 0
      model/app/camera.go
  34. 18 0
      model/app/event.go
  35. 26 0
      model/app/gateway.go
  36. 26 0
      model/app/picture.go
  37. 14 0
      model/app/request/camera.go
  38. 13 0
      model/app/request/event.go
  39. 13 0
      model/app/request/gateway.go
  40. 28 0
      router/app/camera.go
  41. 8 0
      router/app/enter.go
  42. 18 0
      router/app/event.go
  43. 22 0
      router/app/gateway.go
  44. 18 0
      router/app/picture.go
  45. 167 0
      service/app/camera.go
  46. 7 0
      service/app/enter.go
  47. 85 0
      service/app/event.go
  48. 136 0
      service/app/gateway.go
  49. 30 0
      service/app/picture.go

+ 8 - 0
.idea/.gitignore

@@ -0,0 +1,8 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Editor-based HTTP Client requests
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml

+ 9 - 0
.idea/lc-fangdaosha.iml

@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module type="WEB_MODULE" version="4">
+  <component name="Go" enabled="true" />
+  <component name="NewModuleRootManager">
+    <content url="file://$MODULE_DIR$" />
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+  </component>
+</module>

+ 8 - 0
.idea/modules.xml

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ProjectModuleManager">
+    <modules>
+      <module fileurl="file://$PROJECT_DIR$/.idea/lc-base-frame.iml" filepath="$PROJECT_DIR$/.idea/lc-base-frame.iml" />
+    </modules>
+  </component>
+</project>

+ 6 - 0
.idea/vcs.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="VcsDirectoryMappings">
+    <mapping directory="" vcs="Git" />
+  </component>
+</project>

+ 178 - 0
api/v1/app/camera.go

@@ -0,0 +1,178 @@
+package app
+
+import (
+	"context"
+	"fmt"
+	"github.com/flipped-aurora/gin-vue-admin/server/global"
+	"github.com/gin-gonic/gin"
+	"github.com/redis/go-redis/v9"
+	"github.com/sirupsen/logrus"
+	"go.uber.org/zap"
+	"lc-fangdaosha/model/app"
+	"lc-fangdaosha/model/common/request"
+	"lc-fangdaosha/model/common/response"
+	"lc-fangdaosha/service"
+	"net/http"
+	"strings"
+)
+
+type CameraApi struct {
+}
+
+var cameraService = service.ServiceGroupApp.AppServiceGroup.CameraService
+
+// CreateCamera 创建摄像机
+// @Tags Camera
+// @Summary 创建摄像机
+// @Security ApiKeyAuth
+// @accept application/json
+// @Produce application/json
+// @Param data body app.Camera true "创建摄像机"
+// @Success 200 {string} string "{"success":true,"data":{},"msg":"创建成功"}"
+// @Router /camera/createCamera [post]
+func (cameraApi *CameraApi) CreateCamera(c *gin.Context) {
+	var camera app.Camera
+	err := c.ShouldBindJSON(&camera)
+	if err != nil {
+		response.FailWithMessage(err.Error(), c)
+		return
+	}
+	if err := cameraService.CreateCamera(&camera); err != nil {
+		global.GVA_LOG.Error("创建失败!", zap.Error(err))
+		response.FailWithMessage("创建失败", c)
+	} else {
+		response.OkWithMessage("创建成功", c)
+	}
+}
+
+// DeleteCamera 删除摄像机
+// @Tags Camera
+// @Summary 删除摄像机
+// @Security ApiKeyAuth
+// @accept application/json
+// @Produce application/json
+// @Param data body app.Camera true "删除摄像机"
+// @Success 200 {string} string "{"success":true,"data":{},"msg":"删除成功"}"
+// @Router /camera/deleteCamera [delete]
+func (cameraApi *CameraApi) DeleteCamera(c *gin.Context) {
+	var camera app.Camera
+	err := c.ShouldBindJSON(&camera)
+	if err != nil {
+		response.FailWithMessage(err.Error(), c)
+		return
+	}
+	if err := cameraService.DeleteCamera(camera); err != nil {
+		global.GVA_LOG.Error("删除失败!", zap.Error(err))
+		response.FailWithMessage("删除失败", c)
+	} else {
+		response.OkWithMessage("删除成功", c)
+	}
+}
+
+// DeleteCameraByIds 批量删除摄像机
+// @Tags Camera
+// @Summary 批量删除摄像机
+// @Security ApiKeyAuth
+// @accept application/json
+// @Produce application/json
+// @Param data body request.IdsReq true "批量删除摄像机"
+// @Success 200 {string} string "{"success":true,"data":{},"msg":"批量删除成功"}"
+// @Router /camera/deleteCameraByIds [delete]
+func (cameraApi *CameraApi) DeleteCameraByIds(c *gin.Context) {
+	var IDS request.IdsReq
+	err := c.ShouldBindJSON(&IDS)
+	if err != nil {
+		response.FailWithMessage(err.Error(), c)
+		return
+	}
+
+	if err := cameraService.DeleteCameraByIds(IDS); err != nil {
+		global.GVA_LOG.Error("批量删除失败!", zap.Error(err))
+		response.FailWithMessage("批量删除失败", c)
+	} else {
+		response.OkWithMessage("批量删除成功", c)
+	}
+}
+
+// UpdateCamera 更新摄像机
+// @Tags Camera
+// @Summary 更新摄像机
+// @Security ApiKeyAuth
+// @accept application/json
+// @Produce application/json
+// @Param data body app.Camera true "更新摄像机"
+// @Success 200 {string} string "{"success":true,"data":{},"msg":"更新成功"}"
+// @Router /camera/updateCamera [put]
+func (cameraApi *CameraApi) UpdateCamera(c *gin.Context) {
+	var camera app.Camera
+	err := c.ShouldBindJSON(&camera)
+	if err != nil {
+		response.FailWithMessage(err.Error(), c)
+		return
+	}
+	if err := cameraService.UpdateCamera(camera); err != nil {
+		global.GVA_LOG.Error("更新失败!", zap.Error(err))
+		response.FailWithMessage("更新失败", c)
+	} else {
+		response.OkWithMessage("更新成功", c)
+	}
+}
+
+// FindCamera 用id查询摄像机
+// @Tags Camera
+// @Summary 用id查询摄像机
+// @Security ApiKeyAuth
+// @accept application/json
+// @Produce application/json
+// @Param data query app.Camera true "用id查询摄像机"
+// @Success 200 {string} string "{"success":true,"data":{},"msg":"查询成功"}"
+// @Router /camera/findCamera [get]
+func (cameraApi *CameraApi) FindCamera(c *gin.Context) {
+	var camera app.Camera
+	err := c.ShouldBindQuery(&camera)
+	if err != nil {
+		response.FailWithMessage(err.Error(), c)
+		return
+	}
+	if recamera, err := cameraService.GetCamera(camera.ID); err != nil {
+		global.GVA_LOG.Error("查询失败!", zap.Error(err))
+		response.FailWithMessage("查询失败", c)
+	} else {
+		response.OkWithData(gin.H{"recamera": recamera}, c)
+	}
+}
+
+// Status 获取摄像机的状态
+func (cameraApi *CameraApi) Status(c *gin.Context) {
+	topic := c.GetHeader("topic")
+	topics := strings.Split(topic, "/")
+	if len(topics) != 2 {
+		logrus.Error("前端http header : topic数据不对", zap.String("topic", topic))
+		response.FailWithMessage("topic头数据不对", c)
+	}
+	get, err := global.GVA_REDIS.Get(context.Background(), fmt.Sprintf("lcfns:status:%s:%s", topics[0], topics[1])).Result()
+	if err == redis.Nil {
+		//-1边缘端不在线
+		response.OkWithData(-1, c)
+	}
+	if err != nil {
+		response.FailWithMessage("redis 查询失败", c)
+	}
+	//摄像头:1在线,0不在线
+	response.OkWithData(get, c)
+}
+
+// RewindText 获取回话数据
+func (cameraApi *CameraApi) RewindText(ctx *gin.Context) {
+	streamId := ctx.Query("streamId")
+	date := ctx.Query("date")
+	operate, err := cameraService.GetRewindText(streamId, date)
+	if err != nil {
+		ctx.JSON(http.StatusOK, err)
+	}
+	if operate == "" {
+		ctx.JSON(http.StatusOK, nil)
+		return
+	}
+	response.OkWithData(operate, ctx)
+}

+ 14 - 0
api/v1/app/enter.go

@@ -0,0 +1,14 @@
+package app
+
+import "lc-fangdaosha/service"
+
+type ApiGroup struct {
+	CameraApi
+	GatewayApi
+	PictureApi
+	EventApi
+}
+
+var (
+	eventService = service.ServiceGroupApp.AppServiceGroup.EventService
+)

+ 51 - 0
api/v1/app/event.go

@@ -0,0 +1,51 @@
+package app
+
+import (
+	"github.com/gin-gonic/gin"
+	"github.com/sirupsen/logrus"
+	"lc-fangdaosha/global"
+	"lc-fangdaosha/model/app/request"
+	"lc-fangdaosha/model/common/response"
+	"lc-fangdaosha/model/system"
+	"lc-fangdaosha/utils"
+)
+
+type EventApi struct {
+}
+
+// List 获取事件信息列表
+func (ea *EventApi) List(c *gin.Context) {
+	var req request.Event
+	req.UId = utils.GetUserID(c)
+	err := c.ShouldBindJSON(&req)
+	if err != nil {
+		logrus.Error()
+	}
+	list, err := eventService.List(req)
+	if err != nil {
+		logrus.Error(err)
+		response.FailWithMessage("查询失败", c)
+		return
+	}
+	response.OkWithData(response.PageResult{
+		List:     list,
+		Total:    int64(len(list)),
+		Page:     req.Page,
+		PageSize: req.PageSize,
+	}, c)
+}
+
+// EventType 获取事件类型字典
+func (ea *EventApi) EventType(c *gin.Context) {
+	var dic []system.SysDictionaryDetail
+	err := global.Db.Select("label, value").
+		Table("`sys_dictionaries` JOIN `sys_dictionary_details`  ON `sys_dictionaries`.id = `sys_dictionary_details`.sys_dictionary_id").
+		Where("type = 'eventType'").
+		Find(&dic).Error
+	if err != nil {
+		logrus.Error(err)
+		response.Fail(c)
+		return
+	}
+	response.OkWithData(dic, c)
+}

+ 99 - 0
api/v1/app/gateway.go

@@ -0,0 +1,99 @@
+package app
+
+import (
+	"github.com/gin-gonic/gin"
+	"github.com/sirupsen/logrus"
+	"lc-fangdaosha/model/app"
+	"lc-fangdaosha/model/app/request"
+	"lc-fangdaosha/model/common/response"
+	"lc-fangdaosha/service"
+)
+
+type GatewayApi struct {
+}
+
+var gs = service.ServiceGroupApp.AppServiceGroup.GatewayService
+
+// List 获取网关列表
+func (api *GatewayApi) List(c *gin.Context) {
+	var req request.GatewayRequest
+	err := c.ShouldBindJSON(&req)
+	if err != nil {
+		logrus.Error("请求数据绑定错误", err)
+	}
+	list, err := gs.List(req)
+	if err != nil {
+		response.FailWithMessage(err.Error(), c)
+		return
+	}
+	response.OkWithDetailed(response.PageResult{
+		List:     list,
+		Total:    int64(len(list)),
+		Page:     req.Page,
+		PageSize: req.PageSize,
+	}, "获取成功", c)
+}
+
+// AdminSet 管理员设置osn和给网关分配用户
+func (api *GatewayApi) AdminSet(c *gin.Context) {
+	var data app.Gateway
+	err := c.ShouldBindJSON(&data)
+	if err != nil {
+		response.FailWithMessage(err.Error(), c)
+		return
+	}
+	err = gs.AdminSet(&data)
+	if err != nil {
+		response.FailWithDetailed(err.Error(), "设置失败", c)
+		return
+	}
+	response.OkWithMessage("设置成功", c)
+}
+
+// UserSet 用户设置网关名和描述信息
+func (api *GatewayApi) UserSet(c *gin.Context) {
+	var data app.Gateway
+	err := c.ShouldBindJSON(&data)
+	if err != nil {
+		response.FailWithMessage(err.Error(), c)
+		return
+	}
+	err = gs.Update(&data)
+	if err != nil {
+		response.FailWithDetailed(err.Error(), "设置失败", c)
+		return
+	}
+	response.OkWithMessage("设置成功", c)
+}
+
+// DeleteGateways 删除网关及其关联设备
+func (api *GatewayApi) DeleteGateways(c *gin.Context) {
+	var req app.Gateway
+	err := c.ShouldBindJSON(&req)
+	if err != nil {
+		response.FailWithDetailed(err.Error(), "请求参数错误", c)
+		return
+	}
+	err = gs.DeleteGateways(req)
+	if err != nil {
+		response.FailWithDetailed(err.Error(), "删除失败", c)
+		return
+	}
+	response.OkWithMessage("删除成功", c)
+}
+
+// UnbindGateways 解绑网关下的设备
+func (api *GatewayApi) UnbindGateways(c *gin.Context) {
+	var req app.Gateway
+	err := c.ShouldBindJSON(&req)
+	if err != nil {
+		response.FailWithDetailed(err.Error(), "请求参数错误", c)
+		return
+	}
+	err = gs.UnbindGateways(req)
+	if err != nil {
+		response.FailWithDetailed(err.Error(), "解绑失败", c)
+		return
+	}
+	response.OkWithMessage("解绑成功", c)
+}

+ 45 - 0
api/v1/app/picture.go

@@ -0,0 +1,45 @@
+package app
+
+import (
+	"github.com/gin-gonic/gin"
+	"github.com/sirupsen/logrus"
+	"lc-fangdaosha/global"
+	"lc-fangdaosha/model/app"
+	"lc-fangdaosha/model/common/response"
+)
+
+type PictureApi struct {
+}
+
+// GetPicture 获取图片信息
+func (pa *PictureApi) GetPicture(c *gin.Context) {
+	code := c.Query("picode")
+	var dataId int
+	err := global.Db.Select("p.data_id").
+		Table("event e JOIN picture p ON e.id = p.event_id").
+		Where("e.event_code = ?", code).
+		Find(&dataId).Error
+	if err != nil {
+		logrus.Error(err)
+		response.Fail(c)
+		return
+	}
+	var picData app.PictureData
+	err = global.Db.Select("id, data").
+		Model(&app.PictureData{}).
+		Where("id = ?", dataId).
+		Find(&picData).Error
+	if err != nil {
+		logrus.Error(err)
+		response.Fail(c)
+		return
+	}
+	c.Header("Content-Type", "image/jpeg;charset=UTF-8")
+
+	_, err = c.Writer.Write(picData.Data)
+	if err != nil {
+		logrus.Error(err)
+		response.Fail(c)
+		return
+	}
+}

+ 2 - 5
config.yaml

@@ -1,7 +1,7 @@
 #系统/后台相关
 system:
   env: public
-  addr: 9999
+  addr: 8889
   db-type: mysql
   oss-type: local
   use-multipoint: false
@@ -21,14 +21,11 @@ captcha:
   open-captcha: 0 #开启验证码 1关闭,0开启
   open-captcha-timeout: 3600  #有效期
 logrus:
-  stdout: true  #是否打印到控制台
-  max-age: 168 #保存时间168小时(7天) 单位小时
-  rotation-time: 24  #切割间隔 单位小时
 mysql:
   path: 127.0.0.1
   port: "3306"
   config: charset=utf8mb4&parseTime=True&loc=Local
-  db-name: fangdaosha
+  db-name: lcfns
   username: root
   password: root
   prefix: ""

+ 35 - 11
config/config.go

@@ -27,13 +27,15 @@ func initConfig() config {
 }
 
 type config struct {
-	System  System  `mapstructure:"system" json:"system" yaml:"system"`
-	JWT     JWT     `mapstructure:"jwt" json:"jwt" yaml:"jwt"`
-	Captcha Captcha `mapstructure:"captcha" json:"captcha" yaml:"captcha"`
-	Cors    CORS    `mapstructure:"cors" json:"cors" yaml:"cors"`
-	Mysql   Mysql   `mapstructure:"mysql" json:"mysql" yaml:"mysql"`
-	Redis   Redis   `mapstructure:"redis" json:"redis" yaml:"redis"`
-	Logrus  Logrus  `mapstructure:"logrus" json:"logrus" yaml:"logrus"`
+	System                   System                   `mapstructure:"system" json:"system" yaml:"system"`
+	JWT                      JWT                      `mapstructure:"jwt" json:"jwt" yaml:"jwt"`
+	Captcha                  Captcha                  `mapstructure:"captcha" json:"captcha" yaml:"captcha"`
+	Cors                     CORS                     `mapstructure:"cors" json:"cors" yaml:"cors"`
+	Mysql                    Mysql                    `mapstructure:"mysql" json:"mysql" yaml:"mysql"`
+	Redis                    Redis                    `mapstructure:"redis" json:"redis" yaml:"redis"`
+	HttpHostNotificationList HttpHostNotificationList `mapstructure:"HttpHostNotificationList" yaml:"HttpHostNotificationList" xml:"HttpHostNotificationList"`
+	Foreign                  Foreign                  `mapstructure:"foreign" yaml:"foreign" json:"foreign"`
+	Hikvision                Hikvision                `mapstructure:"hikvision" yaml:"hikvision" json:"hikvision"`
 }
 
 type System struct {
@@ -109,8 +111,30 @@ type Redis struct {
 	Password string `mapstructure:"password" json:"password" yaml:"password"` // 密码
 }
 
-type Logrus struct {
-	StdOut       bool  `ymal:"stdout"`
-	MaxAge       int64 `yaml:"max-age"`
-	RotationTime int   `yaml:"rotation-time"`
+// 事件监听服务器列表
+type HttpHostNotificationList struct {
+	HttpHostNotification []HttpHostNotification `yaml:"HttpHostNotification"`
+}
+
+type HttpHostNotification struct {
+	ID                       string `xml:"id" yaml:"id"`
+	URL                      string `xml:"url" yaml:"url"`                                           //路径
+	ProtocolType             string `xml:"protocolType" yaml:"protocolType"`                         //协议类型 HTTP
+	ParameterFormatType      string `xml:"parameterFormatType" yaml:"parameterFormatType"`           //数据格式 XML
+	AddressingFormatType     string `xml:"addressingFormatType" yaml:"addressingFormatType"`         //地址格式 ipaddress
+	Ipaddress                string `xml:"ipAddress" yaml:"ipaddress"`                               //服务器ip地址
+	PortNo                   int    `xml:"portNo" yaml:"portNo"`                                     //端口
+	HttpBroken               string `xml:"httpBroken" yaml:"httpBroken"`                             //true
+	HttpAuthenticationMethod string `xml:"httpAuthenticationMethod" yaml:"httpAuthenticationMethod"` //none
+}
+
+type Foreign struct {
+	SecurityRewindUrl string `mapstructure:"securityRewindUrl" yaml:"securityRewindUrl"`
+	GatewayServer     string `mapstructure:"getawayServer" yaml:"gatewayServer"`
+}
+
+type Hikvision struct {
+	User          string `yaml:"user"`
+	Password      string `yaml:"password"`
+	StreamBaseUrl string `mapstructure:"streamBaseUrl" yaml:"streamBaseUrl"`
 }

+ 237 - 0
doc/lc-base-frame/casbin_rule.sql

@@ -0,0 +1,237 @@
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2045, 'p', '2', '/jwt/jsonInBlacklist', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2051, 'p', '2', '/menu/getMenu', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2044, 'p', '2', '/test', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2046, 'p', '2', '/user/admin_register', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2049, 'p', '2', '/user/changePassword', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2048, 'p', '2', '/user/getUserInfo', 'GET', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2050, 'p', '2', '/user/setUserAuthority', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2047, 'p', '2', '/user/setUserInfo', 'PUT', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2571, 'p', '888', '/api/createApi', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2572, 'p', '888', '/api/deleteApi', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2577, 'p', '888', '/api/deleteApisByIds', 'DELETE', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2575, 'p', '888', '/api/getAllApis', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2576, 'p', '888', '/api/getApiById', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2574, 'p', '888', '/api/getApiList', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2573, 'p', '888', '/api/updateApi', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2578, 'p', '888', '/authority/copyAuthority', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2579, 'p', '888', '/authority/createAuthority', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2580, 'p', '888', '/authority/deleteAuthority', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2582, 'p', '888', '/authority/getAuthorityList', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2583, 'p', '888', '/authority/setDataAuthority', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2581, 'p', '888', '/authority/updateAuthority', 'PUT', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2647, 'p', '888', '/authorityBtn/canRemoveAuthorityBtn', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2646, 'p', '888', '/authorityBtn/getAuthorityBtn', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2645, 'p', '888', '/authorityBtn/setAuthorityBtn', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2619, 'p', '888', '/autoCode/createPackage', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2616, 'p', '888', '/autoCode/createPlug', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2613, 'p', '888', '/autoCode/createTemp', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2621, 'p', '888', '/autoCode/delPackage', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2625, 'p', '888', '/autoCode/delSysHistory', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2615, 'p', '888', '/autoCode/getColumn', 'GET', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2611, 'p', '888', '/autoCode/getDB', 'GET', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2622, 'p', '888', '/autoCode/getMeta', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2620, 'p', '888', '/autoCode/getPackage', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2624, 'p', '888', '/autoCode/getSysHistory', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2612, 'p', '888', '/autoCode/getTables', 'GET', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2617, 'p', '888', '/autoCode/installPlugin', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2614, 'p', '888', '/autoCode/preview', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2618, 'p', '888', '/autoCode/pubPlug', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2623, 'p', '888', '/autoCode/rollback', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2652, 'p', '888', '/camera/createCamera', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2653, 'p', '888', '/camera/deleteCamera', 'DELETE', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2654, 'p', '888', '/camera/deleteCameraByIds', 'DELETE', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2656, 'p', '888', '/camera/findCamera', 'GET', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2657, 'p', '888', '/camera/getCameraList', 'GET', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2680, 'p', '888', '/camera/rewind', 'GET', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2658, 'p', '888', '/camera/rewind', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2655, 'p', '888', '/camera/updateCamera', 'PUT', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2585, 'p', '888', '/casbin/getPolicyPathByAuthorityId', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2584, 'p', '888', '/casbin/updateCasbin', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2649, 'p', '888', '/chatGpt/createSK', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2651, 'p', '888', '/chatGpt/deleteSK', 'DELETE', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2650, 'p', '888', '/chatGpt/getSK', 'GET', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2648, 'p', '888', '/chatGpt/getTable', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2608, 'p', '888', '/customer/customer', 'DELETE', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2609, 'p', '888', '/customer/customer', 'GET', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2607, 'p', '888', '/customer/customer', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2606, 'p', '888', '/customer/customer', 'PUT', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2610, 'p', '888', '/customer/customerList', 'GET', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2644, 'p', '888', '/email/emailTest', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2685, 'p', '888', '/event/dictionary', 'GET', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2683, 'p', '888', '/event/list', 'GET', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2596, 'p', '888', '/fileUploadAndDownload/breakpointContinue', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2597, 'p', '888', '/fileUploadAndDownload/breakpointContinueFinish', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2600, 'p', '888', '/fileUploadAndDownload/deleteFile', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2601, 'p', '888', '/fileUploadAndDownload/editFileName', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2595, 'p', '888', '/fileUploadAndDownload/findFile', 'GET', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2602, 'p', '888', '/fileUploadAndDownload/getFileList', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2598, 'p', '888', '/fileUploadAndDownload/removeChunk', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2599, 'p', '888', '/fileUploadAndDownload/upload', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2678, 'p', '888', '/gateways/adminSet', 'PUT', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2677, 'p', '888', '/gateways/all', 'GET', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2681, 'p', '888', '/gateways/delete', 'DELETE', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2682, 'p', '888', '/gateways/unbind', 'PUT', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2679, 'p', '888', '/gateways/userSet', 'PUT', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2663, 'p', '888', '/ISAPI/Smart/channels/1/calibrations/FieldDetection', 'GET', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2664, 'p', '888', '/ISAPI/Smart/channels/1/calibrations/FieldDetection', 'PUT', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2668, 'p', '888', '/ISAPI/Smart/channels/1/calibrations/linedetection', 'GET', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2669, 'p', '888', '/ISAPI/Smart/channels/1/calibrations/linedetection', 'PUT', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2673, 'p', '888', '/ISAPI/Smart/channels/1/calibrations/regionEntrance', 'GET', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2674, 'p', '888', '/ISAPI/Smart/channels/1/calibrations/regionEntrance', 'PUT', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2665, 'p', '888', '/ISAPI/Smart/FieldDetection/1', 'GET', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2666, 'p', '888', '/ISAPI/Smart/FieldDetection/1', 'PUT', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2662, 'p', '888', '/ISAPI/Smart/FieldDetection/1/capabilities', 'GET', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2670, 'p', '888', '/ISAPI/Smart/LineDetection/1', 'GET', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2671, 'p', '888', '/ISAPI/Smart/LineDetection/1', 'PUT', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2667, 'p', '888', '/ISAPI/Smart/LineDetection/1/capabilities', 'GET', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2675, 'p', '888', '/ISAPI/Smart/regionEntrance/1', 'GET', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2676, 'p', '888', '/ISAPI/Smart/regionEntrance/1', 'PUT', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2672, 'p', '888', '/ISAPI/Smart/regionEntrance/1/capabilities', 'GET', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2660, 'p', '888', '/ISAPI/System/capabilities', 'GET', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2659, 'p', '888', '/ISAPI/System/deviceInfo', 'GET', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2661, 'p', '888', '/ISAPI/System/Network/mailing/1', 'PUT', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2559, 'p', '888', '/jwt/jsonInBlacklist', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2586, 'p', '888', '/menu/addBaseMenu', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2594, 'p', '888', '/menu/addMenuAuthority', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2588, 'p', '888', '/menu/deleteBaseMenu', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2590, 'p', '888', '/menu/getBaseMenuById', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2592, 'p', '888', '/menu/getBaseMenuTree', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2587, 'p', '888', '/menu/getMenu', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2593, 'p', '888', '/menu/getMenuAuthority', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2591, 'p', '888', '/menu/getMenuList', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2589, 'p', '888', '/menu/updateBaseMenu', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2684, 'p', '888', '/picture/get', 'GET', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2642, 'p', '888', '/simpleUploader/checkFileMd5', 'GET', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2643, 'p', '888', '/simpleUploader/mergeFileMd5', 'GET', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2641, 'p', '888', '/simpleUploader/upload', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2631, 'p', '888', '/sysDictionary/createSysDictionary', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2632, 'p', '888', '/sysDictionary/deleteSysDictionary', 'DELETE', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2634, 'p', '888', '/sysDictionary/findSysDictionary', 'GET', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2635, 'p', '888', '/sysDictionary/getSysDictionaryList', 'GET', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2633, 'p', '888', '/sysDictionary/updateSysDictionary', 'PUT', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2627, 'p', '888', '/sysDictionaryDetail/createSysDictionaryDetail', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2628, 'p', '888', '/sysDictionaryDetail/deleteSysDictionaryDetail', 'DELETE', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2629, 'p', '888', '/sysDictionaryDetail/findSysDictionaryDetail', 'GET', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2630, 'p', '888', '/sysDictionaryDetail/getSysDictionaryDetailList', 'GET', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2626, 'p', '888', '/sysDictionaryDetail/updateSysDictionaryDetail', 'PUT', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2636, 'p', '888', '/sysOperationRecord/createSysOperationRecord', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2639, 'p', '888', '/sysOperationRecord/deleteSysOperationRecord', 'DELETE', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2640, 'p', '888', '/sysOperationRecord/deleteSysOperationRecordByIds', 'DELETE', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2637, 'p', '888', '/sysOperationRecord/findSysOperationRecord', 'GET', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2638, 'p', '888', '/sysOperationRecord/getSysOperationRecordList', 'GET', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2603, 'p', '888', '/system/getServerInfo', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2604, 'p', '888', '/system/getSystemConfig', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2605, 'p', '888', '/system/setSystemConfig', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2686, 'p', '888', '/user/addEmails', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2561, 'p', '888', '/user/admin_register', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2567, 'p', '888', '/user/changePassword', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2687, 'p', '888', '/user/confirm', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2560, 'p', '888', '/user/deleteUser', 'DELETE', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2565, 'p', '888', '/user/getUserInfo', 'GET', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2562, 'p', '888', '/user/getUserList', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2570, 'p', '888', '/user/ids', 'GET', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2569, 'p', '888', '/user/resetPassword', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2564, 'p', '888', '/user/setSelfInfo', 'PUT', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2566, 'p', '888', '/user/setUserAuthorities', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2568, 'p', '888', '/user/setUserAuthority', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2563, 'p', '888', '/user/setUserInfo', 'PUT', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (2688, 'p', '888', '/user/unbindEmail', 'PUT', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (95, 'p', '8881', '/api/createApi', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (98, 'p', '8881', '/api/deleteApi', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (100, 'p', '8881', '/api/getAllApis', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (97, 'p', '8881', '/api/getApiById', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (96, 'p', '8881', '/api/getApiList', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (99, 'p', '8881', '/api/updateApi', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (101, 'p', '8881', '/authority/createAuthority', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (102, 'p', '8881', '/authority/deleteAuthority', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (103, 'p', '8881', '/authority/getAuthorityList', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (104, 'p', '8881', '/authority/setDataAuthority', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (122, 'p', '8881', '/casbin/getPolicyPathByAuthorityId', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (121, 'p', '8881', '/casbin/updateCasbin', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (128, 'p', '8881', '/customer/customer', 'DELETE', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (129, 'p', '8881', '/customer/customer', 'GET', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (126, 'p', '8881', '/customer/customer', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (127, 'p', '8881', '/customer/customer', 'PUT', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (130, 'p', '8881', '/customer/customerList', 'GET', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (119, 'p', '8881', '/fileUploadAndDownload/deleteFile', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (120, 'p', '8881', '/fileUploadAndDownload/editFileName', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (118, 'p', '8881', '/fileUploadAndDownload/getFileList', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (117, 'p', '8881', '/fileUploadAndDownload/upload', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (123, 'p', '8881', '/jwt/jsonInBlacklist', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (107, 'p', '8881', '/menu/addBaseMenu', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (109, 'p', '8881', '/menu/addMenuAuthority', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (111, 'p', '8881', '/menu/deleteBaseMenu', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (113, 'p', '8881', '/menu/getBaseMenuById', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (108, 'p', '8881', '/menu/getBaseMenuTree', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (105, 'p', '8881', '/menu/getMenu', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (110, 'p', '8881', '/menu/getMenuAuthority', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (106, 'p', '8881', '/menu/getMenuList', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (112, 'p', '8881', '/menu/updateBaseMenu', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (124, 'p', '8881', '/system/getSystemConfig', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (125, 'p', '8881', '/system/setSystemConfig', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (94, 'p', '8881', '/user/admin_register', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (114, 'p', '8881', '/user/changePassword', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (131, 'p', '8881', '/user/getUserInfo', 'GET', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (115, 'p', '8881', '/user/getUserList', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (116, 'p', '8881', '/user/setUserAuthority', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (1716, 'p', '9528', '/api/createApi', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (1717, 'p', '9528', '/api/deleteApi', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (1720, 'p', '9528', '/api/getAllApis', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (1721, 'p', '9528', '/api/getApiById', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (1719, 'p', '9528', '/api/getApiList', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (1718, 'p', '9528', '/api/updateApi', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (1722, 'p', '9528', '/authority/createAuthority', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (1723, 'p', '9528', '/authority/deleteAuthority', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (1724, 'p', '9528', '/authority/getAuthorityList', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (1725, 'p', '9528', '/authority/setDataAuthority', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (1748, 'p', '9528', '/autoCode/createTemp', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (1752, 'p', '9528', '/camera/rewind', 'GET', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (1727, 'p', '9528', '/casbin/getPolicyPathByAuthorityId', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (1726, 'p', '9528', '/casbin/updateCasbin', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (1745, 'p', '9528', '/customer/customer', 'DELETE', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (1746, 'p', '9528', '/customer/customer', 'GET', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (1744, 'p', '9528', '/customer/customer', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (1743, 'p', '9528', '/customer/customer', 'PUT', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (1747, 'p', '9528', '/customer/customerList', 'GET', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (1738, 'p', '9528', '/fileUploadAndDownload/deleteFile', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (1739, 'p', '9528', '/fileUploadAndDownload/editFileName', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (1740, 'p', '9528', '/fileUploadAndDownload/getFileList', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (1737, 'p', '9528', '/fileUploadAndDownload/upload', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (1750, 'p', '9528', '/gateways/all', 'GET', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (1751, 'p', '9528', '/gateways/userSet', 'PUT', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (1757, 'p', '9528', '/ISAPI/Smart/channels/1/calibrations/FieldDetection', 'GET', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (1758, 'p', '9528', '/ISAPI/Smart/channels/1/calibrations/FieldDetection', 'PUT', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (1762, 'p', '9528', '/ISAPI/Smart/channels/1/calibrations/linedetection', 'GET', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (1763, 'p', '9528', '/ISAPI/Smart/channels/1/calibrations/linedetection', 'PUT', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (1767, 'p', '9528', '/ISAPI/Smart/channels/1/calibrations/regionEntrance', 'GET', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (1768, 'p', '9528', '/ISAPI/Smart/channels/1/calibrations/regionEntrance', 'PUT', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (1759, 'p', '9528', '/ISAPI/Smart/FieldDetection/1', 'GET', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (1760, 'p', '9528', '/ISAPI/Smart/FieldDetection/1', 'PUT', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (1756, 'p', '9528', '/ISAPI/Smart/FieldDetection/1/capabilities', 'GET', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (1764, 'p', '9528', '/ISAPI/Smart/LineDetection/1', 'GET', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (1765, 'p', '9528', '/ISAPI/Smart/LineDetection/1', 'PUT', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (1761, 'p', '9528', '/ISAPI/Smart/LineDetection/1/capabilities', 'GET', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (1769, 'p', '9528', '/ISAPI/Smart/regionEntrance/1', 'GET', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (1770, 'p', '9528', '/ISAPI/Smart/regionEntrance/1', 'PUT', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (1766, 'p', '9528', '/ISAPI/Smart/regionEntrance/1/capabilities', 'GET', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (1754, 'p', '9528', '/ISAPI/System/capabilities', 'GET', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (1753, 'p', '9528', '/ISAPI/System/deviceInfo', 'GET', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (1755, 'p', '9528', '/ISAPI/System/Network/mailing/1', 'PUT', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (1709, 'p', '9528', '/jwt/jsonInBlacklist', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (1728, 'p', '9528', '/menu/addBaseMenu', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (1736, 'p', '9528', '/menu/addMenuAuthority', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (1730, 'p', '9528', '/menu/deleteBaseMenu', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (1732, 'p', '9528', '/menu/getBaseMenuById', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (1734, 'p', '9528', '/menu/getBaseMenuTree', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (1729, 'p', '9528', '/menu/getMenu', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (1735, 'p', '9528', '/menu/getMenuAuthority', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (1733, 'p', '9528', '/menu/getMenuList', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (1731, 'p', '9528', '/menu/updateBaseMenu', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (1741, 'p', '9528', '/system/getSystemConfig', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (1742, 'p', '9528', '/system/setSystemConfig', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (1710, 'p', '9528', '/user/admin_register', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (1713, 'p', '9528', '/user/changePassword', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (1712, 'p', '9528', '/user/getUserInfo', 'GET', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (1711, 'p', '9528', '/user/getUserList', 'POST', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (1715, 'p', '9528', '/user/ids', 'GET', '', '', '');
+INSERT INTO `casbin_rule` (`id`, `ptype`, `v0`, `v1`, `v2`, `v3`, `v4`, `v5`) VALUES (1714, 'p', '9528', '/user/setUserAuthority', 'POST', '', '', '');

+ 0 - 0
doc/lc-base-frame/jwt_blacklists.sql


+ 160 - 0
doc/lc-base-frame/sys_apis.sql

@@ -0,0 +1,160 @@
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (1, '2023-08-14 16:16:30.769', '2023-08-14 16:16:30.769', NULL, '/jwt/jsonInBlacklist', 'jwt加入黑名单(退出,必选)', 'jwt', 'POST');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (2, '2023-08-14 16:16:30.769', '2023-08-14 16:16:30.769', NULL, '/user/deleteUser', '删除用户', '系统用户', 'DELETE');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (3, '2023-08-14 16:16:30.769', '2023-08-14 16:16:30.769', NULL, '/user/admin_register', '用户注册', '系统用户', 'POST');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (4, '2023-08-14 16:16:30.769', '2023-08-14 16:16:30.769', NULL, '/user/getUserList', '获取用户列表', '系统用户', 'POST');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (5, '2023-08-14 16:16:30.769', '2023-08-14 16:16:30.769', NULL, '/user/setUserInfo', '设置用户信息', '系统用户', 'PUT');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (6, '2023-08-14 16:16:30.769', '2023-08-14 16:16:30.769', NULL, '/user/setSelfInfo', '设置自身信息(必选)', '系统用户', 'PUT');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (7, '2023-08-14 16:16:30.769', '2023-08-14 16:16:30.769', NULL, '/user/getUserInfo', '获取自身信息(必选)', '系统用户', 'GET');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (8, '2023-08-14 16:16:30.769', '2023-08-14 16:16:30.769', NULL, '/user/setUserAuthorities', '设置权限组', '系统用户', 'POST');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (9, '2023-08-14 16:16:30.769', '2023-08-14 16:16:30.769', NULL, '/user/changePassword', '修改密码(建议选择)', '系统用户', 'POST');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (10, '2023-08-14 16:16:30.769', '2023-08-14 16:16:30.769', NULL, '/user/setUserAuthority', '修改用户角色(必选)', '系统用户', 'POST');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (11, '2023-08-14 16:16:30.769', '2023-08-14 16:16:30.769', NULL, '/user/resetPassword', '重置用户密码', '系统用户', 'POST');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (12, '2023-08-14 16:16:30.769', '2023-08-14 16:16:30.769', NULL, '/api/createApi', '创建api', 'api', 'POST');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (13, '2023-08-14 16:16:30.769', '2023-08-14 16:16:30.769', NULL, '/api/deleteApi', '删除Api', 'api', 'POST');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (14, '2023-08-14 16:16:30.769', '2023-08-14 16:16:30.769', NULL, '/api/updateApi', '更新Api', 'api', 'POST');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (15, '2023-08-14 16:16:30.769', '2023-08-14 16:16:30.769', NULL, '/api/getApiList', '获取api列表', 'api', 'POST');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (16, '2023-08-14 16:16:30.769', '2023-08-14 16:16:30.769', NULL, '/api/getAllApis', '获取所有api', 'api', 'POST');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (17, '2023-08-14 16:16:30.769', '2023-08-14 16:16:30.769', NULL, '/api/getApiById', '获取api详细信息', 'api', 'POST');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (18, '2023-08-14 16:16:30.769', '2023-08-14 16:16:30.769', NULL, '/api/deleteApisByIds', '批量删除api', 'api', 'DELETE');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (19, '2023-08-14 16:16:30.769', '2023-08-14 16:16:30.769', NULL, '/authority/copyAuthority', '拷贝角色', '角色', 'POST');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (20, '2023-08-14 16:16:30.769', '2023-08-14 16:16:30.769', NULL, '/authority/createAuthority', '创建角色', '角色', 'POST');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (21, '2023-08-14 16:16:30.769', '2023-08-14 16:16:30.769', NULL, '/authority/deleteAuthority', '删除角色', '角色', 'POST');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (22, '2023-08-14 16:16:30.769', '2023-08-14 16:16:30.769', NULL, '/authority/updateAuthority', '更新角色信息', '角色', 'PUT');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (23, '2023-08-14 16:16:30.769', '2023-08-14 16:16:30.769', NULL, '/authority/getAuthorityList', '获取角色列表', '角色', 'POST');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (24, '2023-08-14 16:16:30.769', '2023-08-14 16:16:30.769', NULL, '/authority/setDataAuthority', '设置角色资源权限', '角色', 'POST');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (25, '2023-08-14 16:16:30.769', '2023-08-14 16:16:30.769', NULL, '/casbin/updateCasbin', '更改角色api权限', 'casbin', 'POST');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (26, '2023-08-14 16:16:30.769', '2023-08-14 16:16:30.769', NULL, '/casbin/getPolicyPathByAuthorityId', '获取权限列表', 'casbin', 'POST');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (27, '2023-08-14 16:16:30.769', '2023-08-14 16:16:30.769', NULL, '/menu/addBaseMenu', '新增菜单', '菜单', 'POST');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (28, '2023-08-14 16:16:30.769', '2023-08-14 16:16:30.769', NULL, '/menu/getMenu', '获取菜单树(必选)', '菜单', 'POST');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (29, '2023-08-14 16:16:30.769', '2023-08-14 16:16:30.769', NULL, '/menu/deleteBaseMenu', '删除菜单', '菜单', 'POST');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (30, '2023-08-14 16:16:30.769', '2023-08-14 16:16:30.769', NULL, '/menu/updateBaseMenu', '更新菜单', '菜单', 'POST');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (31, '2023-08-14 16:16:30.769', '2023-08-14 16:16:30.769', NULL, '/menu/getBaseMenuById', '根据id获取菜单', '菜单', 'POST');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (32, '2023-08-14 16:16:30.769', '2023-08-14 16:16:30.769', NULL, '/menu/getMenuList', '分页获取基础menu列表', '菜单', 'POST');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (33, '2023-08-14 16:16:30.769', '2023-08-14 16:16:30.769', NULL, '/menu/getBaseMenuTree', '获取用户动态路由', '菜单', 'POST');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (34, '2023-08-14 16:16:30.769', '2023-08-14 16:16:30.769', NULL, '/menu/getMenuAuthority', '获取指定角色menu', '菜单', 'POST');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (35, '2023-08-14 16:16:30.769', '2023-08-14 16:16:30.769', NULL, '/menu/addMenuAuthority', '增加menu和角色关联关系', '菜单', 'POST');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (36, '2023-08-14 16:16:30.769', '2023-08-14 16:16:30.769', NULL, '/fileUploadAndDownload/findFile', '寻找目标文件(秒传)', '分片上传', 'GET');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (37, '2023-08-14 16:16:30.769', '2023-08-14 16:16:30.769', NULL, '/fileUploadAndDownload/breakpointContinue', '断点续传', '分片上传', 'POST');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (38, '2023-08-14 16:16:30.769', '2023-08-14 16:16:30.769', NULL, '/fileUploadAndDownload/breakpointContinueFinish', '断点续传完成', '分片上传', 'POST');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (39, '2023-08-14 16:16:30.769', '2023-08-14 16:16:30.769', NULL, '/fileUploadAndDownload/removeChunk', '上传完成移除文件', '分片上传', 'POST');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (40, '2023-08-14 16:16:30.769', '2023-08-14 16:16:30.769', NULL, '/fileUploadAndDownload/upload', '文件上传示例', '文件上传与下载', 'POST');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (41, '2023-08-14 16:16:30.769', '2023-08-14 16:16:30.769', NULL, '/fileUploadAndDownload/deleteFile', '删除文件', '文件上传与下载', 'POST');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (42, '2023-08-14 16:16:30.769', '2023-08-14 16:16:30.769', NULL, '/fileUploadAndDownload/editFileName', '文件名或者备注编辑', '文件上传与下载', 'POST');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (43, '2023-08-14 16:16:30.769', '2023-08-14 16:16:30.769', NULL, '/fileUploadAndDownload/getFileList', '获取上传文件列表', '文件上传与下载', 'POST');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (44, '2023-08-14 16:16:30.769', '2023-08-14 16:16:30.769', NULL, '/system/getServerInfo', '获取服务器信息', '系统服务', 'POST');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (45, '2023-08-14 16:16:30.769', '2023-08-14 16:16:30.769', NULL, '/system/getSystemConfig', '获取配置文件内容', '系统服务', 'POST');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (46, '2023-08-14 16:16:30.769', '2023-08-14 16:16:30.769', NULL, '/system/setSystemConfig', '设置配置文件内容', '系统服务', 'POST');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (47, '2023-08-14 16:16:30.769', '2023-08-14 16:16:30.769', NULL, '/customer/customer', '更新客户', '客户', 'PUT');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (48, '2023-08-14 16:16:30.769', '2023-08-14 16:16:30.769', NULL, '/customer/customer', '创建客户', '客户', 'POST');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (49, '2023-08-14 16:16:30.769', '2023-08-14 16:16:30.769', NULL, '/customer/customer', '删除客户', '客户', 'DELETE');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (50, '2023-08-14 16:16:30.769', '2023-08-14 16:16:30.769', NULL, '/customer/customer', '获取单一客户', '客户', 'GET');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (51, '2023-08-14 16:16:30.769', '2023-08-14 16:16:30.769', NULL, '/customer/customerList', '获取客户列表', '客户', 'GET');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (52, '2023-08-14 16:16:30.769', '2023-08-14 16:16:30.769', NULL, '/autoCode/getDB', '获取所有数据库', '代码生成器', 'GET');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (53, '2023-08-14 16:16:30.769', '2023-08-14 16:16:30.769', NULL, '/autoCode/getTables', '获取数据库表', '代码生成器', 'GET');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (54, '2023-08-14 16:16:30.769', '2023-08-14 16:16:30.769', NULL, '/autoCode/createTemp', '自动化代码', '代码生成器', 'POST');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (55, '2023-08-14 16:16:30.769', '2023-08-14 16:16:30.769', NULL, '/autoCode/preview', '预览自动化代码', '代码生成器', 'POST');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (56, '2023-08-14 16:16:30.769', '2023-08-14 16:16:30.769', NULL, '/autoCode/getColumn', '获取所选table的所有字段', '代码生成器', 'GET');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (57, '2023-08-14 16:16:30.769', '2023-08-14 16:16:30.769', NULL, '/autoCode/createPlug', '自动创建插件包', '代码生成器', 'POST');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (58, '2023-08-14 16:16:30.769', '2023-08-14 16:16:30.769', NULL, '/autoCode/installPlugin', '安装插件', '代码生成器', 'POST');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (59, '2023-08-14 16:16:30.769', '2023-08-14 16:16:30.769', NULL, '/autoCode/pubPlug', '打包插件', '代码生成器', 'POST');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (60, '2023-08-14 16:16:30.769', '2023-08-14 16:16:30.769', NULL, '/autoCode/createPackage', '生成包(package)', '包(pkg)生成器', 'POST');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (61, '2023-08-14 16:16:30.769', '2023-08-14 16:16:30.769', NULL, '/autoCode/getPackage', '获取所有包(package)', '包(pkg)生成器', 'POST');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (62, '2023-08-14 16:16:30.769', '2023-08-14 16:16:30.769', NULL, '/autoCode/delPackage', '删除包(package)', '包(pkg)生成器', 'POST');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (63, '2023-08-14 16:16:30.769', '2023-08-14 16:16:30.769', NULL, '/autoCode/getMeta', '获取meta信息', '代码生成器历史', 'POST');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (64, '2023-08-14 16:16:30.769', '2023-08-14 16:16:30.769', NULL, '/autoCode/rollback', '回滚自动生成代码', '代码生成器历史', 'POST');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (65, '2023-08-14 16:16:30.769', '2023-08-14 16:16:30.769', NULL, '/autoCode/getSysHistory', '查询回滚记录', '代码生成器历史', 'POST');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (66, '2023-08-14 16:16:30.769', '2023-08-14 16:16:30.769', NULL, '/autoCode/delSysHistory', '删除回滚记录', '代码生成器历史', 'POST');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (67, '2023-08-14 16:16:30.769', '2023-08-14 16:16:30.769', NULL, '/sysDictionaryDetail/updateSysDictionaryDetail', '更新字典内容', '系统字典详情', 'PUT');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (68, '2023-08-14 16:16:30.769', '2023-08-14 16:16:30.769', NULL, '/sysDictionaryDetail/createSysDictionaryDetail', '新增字典内容', '系统字典详情', 'POST');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (69, '2023-08-14 16:16:30.769', '2023-08-14 16:16:30.769', NULL, '/sysDictionaryDetail/deleteSysDictionaryDetail', '删除字典内容', '系统字典详情', 'DELETE');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (70, '2023-08-14 16:16:30.769', '2023-08-14 16:16:30.769', NULL, '/sysDictionaryDetail/findSysDictionaryDetail', '根据ID获取字典内容', '系统字典详情', 'GET');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (71, '2023-08-14 16:16:30.769', '2023-08-14 16:16:30.769', NULL, '/sysDictionaryDetail/getSysDictionaryDetailList', '获取字典内容列表', '系统字典详情', 'GET');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (72, '2023-08-14 16:16:30.769', '2023-08-14 16:16:30.769', NULL, '/sysDictionary/createSysDictionary', '新增字典', '系统字典', 'POST');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (73, '2023-08-14 16:16:30.769', '2023-08-14 16:16:30.769', NULL, '/sysDictionary/deleteSysDictionary', '删除字典', '系统字典', 'DELETE');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (74, '2023-08-14 16:16:30.769', '2023-08-14 16:16:30.769', NULL, '/sysDictionary/updateSysDictionary', '更新字典', '系统字典', 'PUT');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (75, '2023-08-14 16:16:30.769', '2023-08-14 16:16:30.769', NULL, '/sysDictionary/findSysDictionary', '根据ID获取字典', '系统字典', 'GET');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (76, '2023-08-14 16:16:30.769', '2023-08-14 16:16:30.769', NULL, '/sysDictionary/getSysDictionaryList', '获取字典列表', '系统字典', 'GET');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (77, '2023-08-14 16:16:30.769', '2023-08-14 16:16:30.769', NULL, '/sysOperationRecord/createSysOperationRecord', '新增操作记录', '操作记录', 'POST');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (78, '2023-08-14 16:16:30.769', '2023-08-14 16:16:30.769', NULL, '/sysOperationRecord/findSysOperationRecord', '根据ID获取操作记录', '操作记录', 'GET');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (79, '2023-08-14 16:16:30.769', '2023-08-14 16:16:30.769', NULL, '/sysOperationRecord/getSysOperationRecordList', '获取操作记录列表', '操作记录', 'GET');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (80, '2023-08-14 16:16:30.769', '2023-08-14 16:16:30.769', NULL, '/sysOperationRecord/deleteSysOperationRecord', '删除操作记录', '操作记录', 'DELETE');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (81, '2023-08-14 16:16:30.769', '2023-08-14 16:16:30.769', NULL, '/sysOperationRecord/deleteSysOperationRecordByIds', '批量删除操作历史', '操作记录', 'DELETE');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (82, '2023-08-14 16:16:30.769', '2023-08-14 16:16:30.769', NULL, '/simpleUploader/upload', '插件版分片上传', '断点续传(插件版)', 'POST');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (83, '2023-08-14 16:16:30.769', '2023-08-14 16:16:30.769', NULL, '/simpleUploader/checkFileMd5', '文件完整度验证', '断点续传(插件版)', 'GET');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (84, '2023-08-14 16:16:30.769', '2023-08-14 16:16:30.769', NULL, '/simpleUploader/mergeFileMd5', '上传完成合并文件', '断点续传(插件版)', 'GET');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (85, '2023-08-14 16:16:30.769', '2023-08-14 16:16:30.769', NULL, '/email/emailTest', '发送测试邮件', 'email', 'POST');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (86, '2023-08-14 16:16:30.769', '2023-08-14 16:16:30.769', NULL, '/email/emailSend', '发送邮件示例', 'email', 'POST');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (87, '2023-08-14 16:16:30.769', '2023-08-14 16:16:30.769', NULL, '/authorityBtn/setAuthorityBtn', '设置按钮权限', '按钮权限', 'POST');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (88, '2023-08-14 16:16:30.769', '2023-08-14 16:16:30.769', NULL, '/authorityBtn/getAuthorityBtn', '获取已有按钮权限', '按钮权限', 'POST');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (89, '2023-08-14 16:16:30.769', '2023-08-14 16:16:30.769', NULL, '/authorityBtn/canRemoveAuthorityBtn', '删除按钮', '按钮权限', 'POST');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (90, '2023-08-14 16:16:30.769', '2023-08-14 16:16:30.769', NULL, '/chatGpt/getTable', '通过gpt获取内容', '万用表格', 'POST');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (91, '2023-08-14 16:16:30.769', '2023-08-14 16:16:30.769', NULL, '/chatGpt/createSK', '录入sk', '万用表格', 'POST');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (92, '2023-08-14 16:16:30.769', '2023-08-14 16:16:30.769', NULL, '/chatGpt/getSK', '获取sk', '万用表格', 'GET');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (93, '2023-08-14 16:16:30.769', '2023-08-14 16:16:30.769', NULL, '/chatGpt/deleteSK', '删除sk', '万用表格', 'DELETE');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (94, '2023-08-15 09:12:57.647', '2023-08-15 09:12:57.647', '2023-08-30 14:31:45.669', '/eh/createEdgeHost', '新增边缘端主机', '边缘端主机', 'POST');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (95, '2023-08-15 09:12:57.648', '2023-08-15 09:12:57.648', '2023-08-30 14:31:45.669', '/eh/deleteEdgeHost', '删除边缘端主机', '边缘端主机', 'DELETE');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (96, '2023-08-15 09:12:57.649', '2023-08-15 09:12:57.649', '2023-08-30 14:31:45.669', '/eh/deleteEdgeHostByIds', '批量删除边缘端主机', '边缘端主机', 'DELETE');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (97, '2023-08-15 09:12:57.649', '2023-08-15 09:12:57.649', '2023-08-30 14:31:45.669', '/eh/updateEdgeHost', '更新边缘端主机', '边缘端主机', 'PUT');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (98, '2023-08-15 09:12:57.650', '2023-08-15 09:12:57.650', '2023-08-30 14:31:45.669', '/eh/findEdgeHost', '根据ID获取边缘端主机', '边缘端主机', 'GET');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (99, '2023-08-15 09:12:57.651', '2023-08-15 09:12:57.651', '2023-08-30 14:31:45.669', '/eh/getEdgeHostList', '获取边缘端主机列表', '边缘端主机', 'GET');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (100, '2023-08-15 09:18:30.516', '2023-08-15 09:18:30.516', '2023-08-30 14:31:14.100', '/ec/createEdgeCamera', '新增摄像头', '摄像头', 'POST');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (101, '2023-08-15 09:18:30.516', '2023-08-15 09:18:30.516', '2023-08-30 14:31:14.100', '/ec/deleteEdgeCamera', '删除摄像头', '摄像头', 'DELETE');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (102, '2023-08-15 09:18:30.517', '2023-08-15 09:18:30.517', '2023-08-30 14:31:14.100', '/ec/deleteEdgeCameraByIds', '批量删除摄像头', '摄像头', 'DELETE');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (103, '2023-08-15 09:18:30.518', '2023-08-15 09:18:30.518', '2023-08-30 14:31:14.100', '/ec/updateEdgeCamera', '更新摄像头', '摄像头', 'PUT');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (104, '2023-08-15 09:18:30.518', '2023-08-15 09:18:30.518', '2023-08-30 14:31:14.100', '/ec/findEdgeCamera', '根据ID获取摄像头', '摄像头', 'GET');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (105, '2023-08-15 09:18:30.519', '2023-08-15 09:18:30.519', '2023-08-30 14:31:14.100', '/ec/getEdgeCameraList', '获取摄像头列表', '摄像头', 'GET');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (106, '2023-08-28 11:12:43.553', '2023-08-28 11:12:43.553', NULL, '/camera/createCamera', '新增摄像头', '摄像头', 'POST');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (107, '2023-08-28 11:12:43.634', '2023-08-28 11:12:43.634', NULL, '/camera/deleteCamera', '删除摄像头', '摄像头', 'DELETE');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (108, '2023-08-28 11:12:43.635', '2023-08-28 11:12:43.635', NULL, '/camera/deleteCameraByIds', '批量删除摄像头', '摄像头', 'DELETE');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (109, '2023-08-28 11:12:43.635', '2023-08-28 11:12:43.635', NULL, '/camera/updateCamera', '更新摄像头', '摄像头', 'PUT');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (110, '2023-08-28 11:12:43.636', '2023-08-28 11:12:43.636', NULL, '/camera/findCamera', '根据ID获取摄像头', '摄像头', 'GET');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (111, '2023-08-28 11:12:43.636', '2023-08-28 11:12:43.636', NULL, '/camera/getCameraList', '获取摄像头列表', '摄像头', 'GET');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (112, '2023-08-30 11:21:30.151', '2023-08-30 11:21:30.151', '2023-08-30 14:32:55.846', '/edge/createEdge', '新增边缘端', '边缘端', 'POST');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (113, '2023-08-30 11:21:30.151', '2023-08-30 11:21:30.151', '2023-08-30 14:32:55.846', '/edge/deleteEdge', '删除边缘端', '边缘端', 'DELETE');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (114, '2023-08-30 11:21:30.152', '2023-08-30 11:21:30.152', '2023-08-30 14:32:55.846', '/edge/deleteEdgeByIds', '批量删除边缘端', '边缘端', 'DELETE');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (115, '2023-08-30 11:21:30.152', '2023-08-30 11:21:30.152', '2023-08-30 14:32:55.846', '/edge/updateEdge', '更新边缘端', '边缘端', 'PUT');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (116, '2023-08-30 11:21:30.153', '2023-08-30 11:21:30.153', '2023-08-30 14:32:55.846', '/edge/findEdge', '根据ID获取边缘端', '边缘端', 'GET');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (117, '2023-08-30 11:21:30.153', '2023-08-30 11:21:30.153', '2023-08-30 14:32:55.846', '/edge/getEdgeList', '获取边缘端列表', '边缘端', 'GET');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (118, '2023-08-30 14:35:14.201', '2023-08-30 14:35:14.201', '2023-10-11 11:15:02.484', '/edge/createEdge', '新增项目名', '项目名', 'POST');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (119, '2023-08-30 14:35:14.202', '2023-08-30 14:35:14.202', '2023-10-11 11:15:31.287', '/edge/deleteEdge', '删除项目名', '项目名', 'DELETE');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (120, '2023-08-30 14:35:14.202', '2023-08-30 14:35:14.202', '2023-10-11 11:15:24.151', '/edge/deleteEdgeByIds', '批量删除项目名', '项目名', 'DELETE');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (121, '2023-08-30 14:35:14.203', '2023-08-30 14:35:14.203', '2023-10-11 11:15:24.151', '/edge/updateEdge', '更新项目名', '项目名', 'PUT');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (122, '2023-08-30 14:35:14.204', '2023-08-30 14:35:14.204', '2023-10-11 11:15:24.151', '/edge/findEdge', '根据ID获取项目名', '项目名', 'GET');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (123, '2023-08-30 14:35:14.205', '2023-08-30 14:35:14.205', '2023-10-11 11:15:24.151', '/edge/getEdgeList', '获取项目名列表', '项目名', 'GET');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (124, '2023-09-06 16:42:07.666', '2023-09-06 16:42:07.666', '2023-10-12 15:27:28.179', '/camera/cameras', '获取摄像头集合', 'app', 'GET');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (125, '2023-09-20 09:24:45.435', '2023-09-20 09:26:27.728', NULL, '/camera/rewind', '回放', '摄像头', 'POST');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (126, '2023-09-27 16:59:47.998', '2023-09-27 16:59:47.998', NULL, '/ISAPI/System/deviceInfo', '获取设备信息', 'isapi', 'GET');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (127, '2023-09-27 21:45:23.869', '2023-09-27 21:45:23.869', NULL, '/ISAPI/System/capabilities', '系统能力', 'isapi', 'GET');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (128, '2023-09-27 21:46:31.579', '2023-09-27 21:46:31.579', NULL, '/ISAPI/System/Network/mailing/1', '添加邮箱', 'isapi', 'PUT');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (129, '2023-09-27 21:48:59.118', '2023-09-27 21:51:22.338', NULL, '/ISAPI/Smart/FieldDetection/1/capabilities', '查询进入区域参数能力', 'isapi', 'GET');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (130, '2023-09-27 21:49:34.389', '2023-09-27 21:50:25.668', NULL, '/ISAPI/Smart/channels/1/calibrations/FieldDetection', '查询FieldDetection目标参数', 'isapi', 'GET');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (131, '2023-09-27 21:51:09.965', '2023-09-27 21:51:09.965', NULL, '/ISAPI/Smart/channels/1/calibrations/FieldDetection', '配置FieldDetection目标参数', 'isapi', 'PUT');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (132, '2023-09-27 21:52:15.697', '2023-09-27 21:52:15.697', NULL, '/ISAPI/Smart/FieldDetection/1', '查询FieldDetection参数', 'isapi', 'GET');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (133, '2023-09-27 21:52:38.766', '2023-09-27 21:52:38.766', NULL, '/ISAPI/Smart/FieldDetection/1', '配置FieldDetection参数', 'isapi', 'PUT');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (134, '2023-09-27 21:53:29.238', '2023-09-27 21:53:29.238', NULL, '/ISAPI/Smart/LineDetection/1/capabilities', '查询LineDetection能力', 'isapi', 'GET');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (135, '2023-09-27 21:53:53.848', '2023-09-27 21:53:53.848', NULL, '/ISAPI/Smart/channels/1/calibrations/linedetection', '查询linedetection目标参数', 'isapi', 'GET');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (136, '2023-09-27 21:54:15.721', '2023-09-27 21:54:15.721', NULL, '/ISAPI/Smart/channels/1/calibrations/linedetection', '配置linedetection目标参数', 'isapi', 'PUT');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (137, '2023-09-27 21:54:39.044', '2023-09-27 21:54:39.044', NULL, '/ISAPI/Smart/LineDetection/1', '查询LineDetection参数', 'isapi', 'GET');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (138, '2023-09-27 21:55:09.863', '2023-09-27 21:55:09.863', NULL, '/ISAPI/Smart/LineDetection/1', '配置LineDetection参数', 'isapi', 'PUT');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (139, '2023-09-27 21:55:43.498', '2023-09-27 21:55:43.498', NULL, '/ISAPI/Smart/regionEntrance/1/capabilities', '查询regionEntrance能力', 'isapi', 'GET');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (140, '2023-09-27 21:56:07.032', '2023-09-27 21:56:07.032', NULL, '/ISAPI/Smart/channels/1/calibrations/regionEntrance', '查询regionEntrance目标参数', 'isapi', 'GET');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (141, '2023-09-27 21:56:31.496', '2023-09-27 21:56:31.496', NULL, '/ISAPI/Smart/channels/1/calibrations/regionEntrance', '配置regionEntrance目标参数', 'isapi', 'PUT');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (142, '2023-09-27 21:56:53.227', '2023-09-27 21:56:53.227', NULL, '/ISAPI/Smart/regionEntrance/1', '查询regionEntrance参数', 'isapi', 'GET');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (143, '2023-09-27 21:57:13.526', '2023-09-27 21:57:13.526', NULL, '/ISAPI/Smart/regionEntrance/1', '配置regionEntrance参数', 'isapi', 'PUT');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (144, '2023-10-11 11:16:35.567', '2023-10-11 11:20:11.171', NULL, '/gateways/all', '获取设备列表', 'app', 'GET');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (145, '2023-10-11 11:18:02.988', '2023-10-11 11:18:02.988', NULL, '/gateways/adminSet', '管理员设置信息', 'app', 'PUT');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (146, '2023-10-11 11:18:20.970', '2023-10-11 11:18:20.970', NULL, '/gateways/userSet', '用户设置信息', 'app', 'PUT');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (147, '2023-10-11 16:53:34.767', '2023-10-11 16:53:34.767', NULL, '/camera/rewind', '获取回放视频url', 'app', 'GET');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (148, '2023-10-11 17:04:20.869', '2023-10-11 17:04:20.869', NULL, '/user/ids', '查询用户id列表', '系统用户', 'GET');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (149, '2023-10-12 11:41:35.467', '2023-10-12 11:41:35.467', NULL, '/gateways/delete', '删除网关及关联设备', 'app', 'DELETE');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (150, '2023-10-12 14:17:38.125', '2023-10-12 14:17:38.125', NULL, '/gateways/unbind', '解绑网关', 'app', 'PUT');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (151, '2023-10-12 15:56:26.379', '2023-10-12 15:56:26.379', '2023-10-12 15:58:02.240', '111', '11', '1', 'POST');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (152, '2023-10-12 15:57:30.674', '2023-10-12 15:57:30.674', '2023-10-12 15:58:02.240', '/test', '测试添加api', '1', 'POST');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (153, '2023-10-12 15:57:46.700', '2023-10-12 15:57:46.700', '2023-10-12 15:58:02.240', '2', '2', '1', 'GET');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (154, '2023-10-12 16:17:24.864', '2023-10-12 16:23:01.530', NULL, '/test', '测试修改api', '1', 'POST');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (155, '2023-10-13 10:57:01.356', '2023-10-13 10:57:01.356', NULL, '/event/list', '事件列表', 'app', 'GET');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (156, '2023-10-13 16:05:49.382', '2023-10-13 16:05:49.382', NULL, '/picture/get', '获取图片', 'app', 'GET');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (157, '2023-10-13 20:17:51.550', '2023-10-13 20:18:34.496', NULL, '/event/dictionary', '获取事件类型字典', 'app', 'GET');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (158, '2023-10-14 10:05:44.690', '2023-10-14 10:07:19.971', NULL, '/user/addEmails', '添加报警邮箱', 'app', 'POST');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (159, '2023-10-14 10:06:10.699', '2023-10-14 10:06:10.699', NULL, '/user/confirm', '邮箱确认', 'app', 'POST');
+INSERT INTO `sys_apis` (`id`, `created_at`, `updated_at`, `deleted_at`, `path`, `description`, `api_group`, `method`) VALUES (160, '2023-10-14 16:55:08.167', '2023-10-14 16:55:08.167', NULL, '/user/unbindEmail', '解绑邮箱', 'app', 'PUT');

+ 4 - 0
doc/lc-base-frame/sys_authorities.sql

@@ -0,0 +1,4 @@
+INSERT INTO `sys_authorities` (`created_at`, `updated_at`, `deleted_at`, `authority_id`, `authority_name`, `parent_id`, `default_router`) VALUES ('2023-10-12 16:47:57.841', '2023-10-12 17:13:33.677', NULL, 2, '普通管理员1', 0, 'dashboard');
+INSERT INTO `sys_authorities` (`created_at`, `updated_at`, `deleted_at`, `authority_id`, `authority_name`, `parent_id`, `default_router`) VALUES ('2023-08-14 16:16:30.979', '2023-09-02 09:57:35.499', NULL, 888, '超级管理员', 0, 'dashboard');
+INSERT INTO `sys_authorities` (`created_at`, `updated_at`, `deleted_at`, `authority_id`, `authority_name`, `parent_id`, `default_router`) VALUES ('2023-08-14 16:16:30.979', '2023-08-14 16:16:31.582', NULL, 8881, '普通用户子角色', 888, 'dashboard');
+INSERT INTO `sys_authorities` (`created_at`, `updated_at`, `deleted_at`, `authority_id`, `authority_name`, `parent_id`, `default_router`) VALUES ('2023-08-14 16:16:30.979', '2023-08-14 16:16:31.532', NULL, 9528, '测试角色', 0, 'dashboard');

+ 1 - 0
doc/lc-base-frame/sys_authority_btns.sql

@@ -0,0 +1 @@
+INSERT INTO `sys_authority_btns` (`authority_id`, `sys_menu_id`, `sys_base_menu_btn_id`) VALUES (888, 32, 1);

+ 54 - 0
doc/lc-base-frame/sys_authority_menus.sql

@@ -0,0 +1,54 @@
+INSERT INTO `sys_authority_menus` (`sys_base_menu_id`, `sys_authority_authority_id`) VALUES (1, 2);
+INSERT INTO `sys_authority_menus` (`sys_base_menu_id`, `sys_authority_authority_id`) VALUES (1, 888);
+INSERT INTO `sys_authority_menus` (`sys_base_menu_id`, `sys_authority_authority_id`) VALUES (1, 8881);
+INSERT INTO `sys_authority_menus` (`sys_base_menu_id`, `sys_authority_authority_id`) VALUES (1, 9528);
+INSERT INTO `sys_authority_menus` (`sys_base_menu_id`, `sys_authority_authority_id`) VALUES (2, 888);
+INSERT INTO `sys_authority_menus` (`sys_base_menu_id`, `sys_authority_authority_id`) VALUES (2, 8881);
+INSERT INTO `sys_authority_menus` (`sys_base_menu_id`, `sys_authority_authority_id`) VALUES (2, 9528);
+INSERT INTO `sys_authority_menus` (`sys_base_menu_id`, `sys_authority_authority_id`) VALUES (3, 888);
+INSERT INTO `sys_authority_menus` (`sys_base_menu_id`, `sys_authority_authority_id`) VALUES (4, 888);
+INSERT INTO `sys_authority_menus` (`sys_base_menu_id`, `sys_authority_authority_id`) VALUES (4, 8881);
+INSERT INTO `sys_authority_menus` (`sys_base_menu_id`, `sys_authority_authority_id`) VALUES (5, 888);
+INSERT INTO `sys_authority_menus` (`sys_base_menu_id`, `sys_authority_authority_id`) VALUES (5, 8881);
+INSERT INTO `sys_authority_menus` (`sys_base_menu_id`, `sys_authority_authority_id`) VALUES (6, 888);
+INSERT INTO `sys_authority_menus` (`sys_base_menu_id`, `sys_authority_authority_id`) VALUES (6, 8881);
+INSERT INTO `sys_authority_menus` (`sys_base_menu_id`, `sys_authority_authority_id`) VALUES (7, 888);
+INSERT INTO `sys_authority_menus` (`sys_base_menu_id`, `sys_authority_authority_id`) VALUES (7, 8881);
+INSERT INTO `sys_authority_menus` (`sys_base_menu_id`, `sys_authority_authority_id`) VALUES (8, 888);
+INSERT INTO `sys_authority_menus` (`sys_base_menu_id`, `sys_authority_authority_id`) VALUES (8, 8881);
+INSERT INTO `sys_authority_menus` (`sys_base_menu_id`, `sys_authority_authority_id`) VALUES (8, 9528);
+INSERT INTO `sys_authority_menus` (`sys_base_menu_id`, `sys_authority_authority_id`) VALUES (9, 888);
+INSERT INTO `sys_authority_menus` (`sys_base_menu_id`, `sys_authority_authority_id`) VALUES (9, 8881);
+INSERT INTO `sys_authority_menus` (`sys_base_menu_id`, `sys_authority_authority_id`) VALUES (10, 888);
+INSERT INTO `sys_authority_menus` (`sys_base_menu_id`, `sys_authority_authority_id`) VALUES (10, 8881);
+INSERT INTO `sys_authority_menus` (`sys_base_menu_id`, `sys_authority_authority_id`) VALUES (11, 888);
+INSERT INTO `sys_authority_menus` (`sys_base_menu_id`, `sys_authority_authority_id`) VALUES (11, 8881);
+INSERT INTO `sys_authority_menus` (`sys_base_menu_id`, `sys_authority_authority_id`) VALUES (12, 888);
+INSERT INTO `sys_authority_menus` (`sys_base_menu_id`, `sys_authority_authority_id`) VALUES (13, 888);
+INSERT INTO `sys_authority_menus` (`sys_base_menu_id`, `sys_authority_authority_id`) VALUES (13, 8881);
+INSERT INTO `sys_authority_menus` (`sys_base_menu_id`, `sys_authority_authority_id`) VALUES (14, 888);
+INSERT INTO `sys_authority_menus` (`sys_base_menu_id`, `sys_authority_authority_id`) VALUES (14, 8881);
+INSERT INTO `sys_authority_menus` (`sys_base_menu_id`, `sys_authority_authority_id`) VALUES (15, 888);
+INSERT INTO `sys_authority_menus` (`sys_base_menu_id`, `sys_authority_authority_id`) VALUES (15, 8881);
+INSERT INTO `sys_authority_menus` (`sys_base_menu_id`, `sys_authority_authority_id`) VALUES (16, 888);
+INSERT INTO `sys_authority_menus` (`sys_base_menu_id`, `sys_authority_authority_id`) VALUES (16, 8881);
+INSERT INTO `sys_authority_menus` (`sys_base_menu_id`, `sys_authority_authority_id`) VALUES (17, 888);
+INSERT INTO `sys_authority_menus` (`sys_base_menu_id`, `sys_authority_authority_id`) VALUES (17, 8881);
+INSERT INTO `sys_authority_menus` (`sys_base_menu_id`, `sys_authority_authority_id`) VALUES (18, 888);
+INSERT INTO `sys_authority_menus` (`sys_base_menu_id`, `sys_authority_authority_id`) VALUES (19, 888);
+INSERT INTO `sys_authority_menus` (`sys_base_menu_id`, `sys_authority_authority_id`) VALUES (20, 888);
+INSERT INTO `sys_authority_menus` (`sys_base_menu_id`, `sys_authority_authority_id`) VALUES (21, 888);
+INSERT INTO `sys_authority_menus` (`sys_base_menu_id`, `sys_authority_authority_id`) VALUES (22, 888);
+INSERT INTO `sys_authority_menus` (`sys_base_menu_id`, `sys_authority_authority_id`) VALUES (23, 2);
+INSERT INTO `sys_authority_menus` (`sys_base_menu_id`, `sys_authority_authority_id`) VALUES (23, 888);
+INSERT INTO `sys_authority_menus` (`sys_base_menu_id`, `sys_authority_authority_id`) VALUES (24, 888);
+INSERT INTO `sys_authority_menus` (`sys_base_menu_id`, `sys_authority_authority_id`) VALUES (25, 888);
+INSERT INTO `sys_authority_menus` (`sys_base_menu_id`, `sys_authority_authority_id`) VALUES (26, 888);
+INSERT INTO `sys_authority_menus` (`sys_base_menu_id`, `sys_authority_authority_id`) VALUES (27, 888);
+INSERT INTO `sys_authority_menus` (`sys_base_menu_id`, `sys_authority_authority_id`) VALUES (28, 888);
+INSERT INTO `sys_authority_menus` (`sys_base_menu_id`, `sys_authority_authority_id`) VALUES (29, 888);
+INSERT INTO `sys_authority_menus` (`sys_base_menu_id`, `sys_authority_authority_id`) VALUES (30, 888);
+INSERT INTO `sys_authority_menus` (`sys_base_menu_id`, `sys_authority_authority_id`) VALUES (31, 888);
+INSERT INTO `sys_authority_menus` (`sys_base_menu_id`, `sys_authority_authority_id`) VALUES (32, 888);
+INSERT INTO `sys_authority_menus` (`sys_base_menu_id`, `sys_authority_authority_id`) VALUES (33, 888);
+INSERT INTO `sys_authority_menus` (`sys_base_menu_id`, `sys_authority_authority_id`) VALUES (34, 888);

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 8 - 0
doc/lc-base-frame/sys_auto_code_histories.sql


+ 2 - 0
doc/lc-base-frame/sys_auto_codes.sql

@@ -0,0 +1,2 @@
+INSERT INTO `sys_auto_codes` (`id`, `created_at`, `updated_at`, `deleted_at`, `package_name`, `label`, `desc`) VALUES (1, '2023-08-15 09:12:49.618', '2023-08-15 09:12:49.618', '2023-08-30 11:05:47.442', 'edge', '', '');
+INSERT INTO `sys_auto_codes` (`id`, `created_at`, `updated_at`, `deleted_at`, `package_name`, `label`, `desc`) VALUES (2, '2023-08-30 11:07:05.917', '2023-08-30 11:07:05.917', NULL, 'app', '', '');

+ 2 - 0
doc/lc-base-frame/sys_base_menu_btns.sql

@@ -0,0 +1,2 @@
+INSERT INTO `sys_base_menu_btns` (`id`, `created_at`, `updated_at`, `deleted_at`, `name`, `desc`, `sys_base_menu_id`) VALUES (1, '2023-08-30 11:41:03.787', '2023-08-30 11:41:03.787', NULL, '', '', 32);
+INSERT INTO `sys_base_menu_btns` (`id`, `created_at`, `updated_at`, `deleted_at`, `name`, `desc`, `sys_base_menu_id`) VALUES (2, '2023-08-30 14:41:13.050', '2023-08-30 14:41:13.050', NULL, '', '', 33);

+ 2 - 0
doc/lc-base-frame/sys_base_menu_parameters.sql

@@ -0,0 +1,2 @@
+INSERT INTO `sys_base_menu_parameters` (`id`, `created_at`, `updated_at`, `deleted_at`, `sys_base_menu_id`, `type`, `key`, `value`) VALUES (1, '2023-08-30 14:11:32.999', '2023-08-30 14:11:32.999', NULL, 32, 'query', '', '');
+INSERT INTO `sys_base_menu_parameters` (`id`, `created_at`, `updated_at`, `deleted_at`, `sys_base_menu_id`, `type`, `key`, `value`) VALUES (2, '2023-08-30 14:41:13.050', '2023-08-30 14:41:13.050', NULL, 33, 'query', '', '');

+ 34 - 0
doc/lc-base-frame/sys_base_menus.sql

@@ -0,0 +1,34 @@
+INSERT INTO `sys_base_menus` (`id`, `created_at`, `updated_at`, `deleted_at`, `menu_level`, `parent_id`, `path`, `name`, `hidden`, `component`, `sort`, `active_name`, `keep_alive`, `default_menu`, `title`, `icon`, `close_tab`) VALUES (1, '2023-08-14 16:16:31.250', '2023-08-14 16:16:31.250', NULL, 0, '0', 'dashboard', 'dashboard', 0, 'view/dashboard/index.vue', 1, '', 0, 0, '仪表盘', 'odometer', 0);
+INSERT INTO `sys_base_menus` (`id`, `created_at`, `updated_at`, `deleted_at`, `menu_level`, `parent_id`, `path`, `name`, `hidden`, `component`, `sort`, `active_name`, `keep_alive`, `default_menu`, `title`, `icon`, `close_tab`) VALUES (2, '2023-08-14 16:16:31.250', '2023-08-14 16:16:31.250', NULL, 0, '0', 'about', 'about', 0, 'view/about/index.vue', 9, '', 0, 0, '关于我们', 'info-filled', 0);
+INSERT INTO `sys_base_menus` (`id`, `created_at`, `updated_at`, `deleted_at`, `menu_level`, `parent_id`, `path`, `name`, `hidden`, `component`, `sort`, `active_name`, `keep_alive`, `default_menu`, `title`, `icon`, `close_tab`) VALUES (3, '2023-08-14 16:16:31.250', '2023-08-14 16:16:31.250', NULL, 0, '0', 'admin', 'superAdmin', 0, 'view/superAdmin/index.vue', 3, '', 0, 0, '超级管理员', 'user', 0);
+INSERT INTO `sys_base_menus` (`id`, `created_at`, `updated_at`, `deleted_at`, `menu_level`, `parent_id`, `path`, `name`, `hidden`, `component`, `sort`, `active_name`, `keep_alive`, `default_menu`, `title`, `icon`, `close_tab`) VALUES (4, '2023-08-14 16:16:31.250', '2023-08-14 16:16:31.250', NULL, 0, '3', 'authority', 'authority', 0, 'view/superAdmin/authority/authority.vue', 1, '', 0, 0, '角色管理', 'avatar', 0);
+INSERT INTO `sys_base_menus` (`id`, `created_at`, `updated_at`, `deleted_at`, `menu_level`, `parent_id`, `path`, `name`, `hidden`, `component`, `sort`, `active_name`, `keep_alive`, `default_menu`, `title`, `icon`, `close_tab`) VALUES (5, '2023-08-14 16:16:31.250', '2023-08-14 16:16:31.250', NULL, 0, '3', 'menu', 'menu', 0, 'view/superAdmin/menu/menu.vue', 2, '', 1, 0, '菜单管理', 'tickets', 0);
+INSERT INTO `sys_base_menus` (`id`, `created_at`, `updated_at`, `deleted_at`, `menu_level`, `parent_id`, `path`, `name`, `hidden`, `component`, `sort`, `active_name`, `keep_alive`, `default_menu`, `title`, `icon`, `close_tab`) VALUES (6, '2023-08-14 16:16:31.250', '2023-08-14 16:16:31.250', NULL, 0, '3', 'api', 'api', 0, 'view/superAdmin/api/api.vue', 3, '', 1, 0, 'api管理', 'platform', 0);
+INSERT INTO `sys_base_menus` (`id`, `created_at`, `updated_at`, `deleted_at`, `menu_level`, `parent_id`, `path`, `name`, `hidden`, `component`, `sort`, `active_name`, `keep_alive`, `default_menu`, `title`, `icon`, `close_tab`) VALUES (7, '2023-08-14 16:16:31.250', '2023-08-14 16:16:31.250', NULL, 0, '3', 'user', 'user', 0, 'view/superAdmin/user/user.vue', 4, '', 0, 0, '用户管理', 'coordinate', 0);
+INSERT INTO `sys_base_menus` (`id`, `created_at`, `updated_at`, `deleted_at`, `menu_level`, `parent_id`, `path`, `name`, `hidden`, `component`, `sort`, `active_name`, `keep_alive`, `default_menu`, `title`, `icon`, `close_tab`) VALUES (8, '2023-08-14 16:16:31.250', '2023-08-14 16:16:31.250', NULL, 0, '3', 'dictionary', 'dictionary', 0, 'view/superAdmin/dictionary/sysDictionary.vue', 5, '', 0, 0, '字典管理', 'notebook', 0);
+INSERT INTO `sys_base_menus` (`id`, `created_at`, `updated_at`, `deleted_at`, `menu_level`, `parent_id`, `path`, `name`, `hidden`, `component`, `sort`, `active_name`, `keep_alive`, `default_menu`, `title`, `icon`, `close_tab`) VALUES (9, '2023-08-14 16:16:31.250', '2023-08-14 16:16:31.250', NULL, 0, '3', 'dictionaryDetail/:id', 'dictionaryDetail', 1, 'view/superAdmin/dictionary/sysDictionaryDetail.vue', 1, 'dictionary', 0, 0, '字典详情-${id}', 'list', 0);
+INSERT INTO `sys_base_menus` (`id`, `created_at`, `updated_at`, `deleted_at`, `menu_level`, `parent_id`, `path`, `name`, `hidden`, `component`, `sort`, `active_name`, `keep_alive`, `default_menu`, `title`, `icon`, `close_tab`) VALUES (10, '2023-08-14 16:16:31.250', '2023-08-14 16:16:31.250', NULL, 0, '3', 'operation', 'operation', 0, 'view/superAdmin/operation/sysOperationRecord.vue', 6, '', 0, 0, '操作历史', 'pie-chart', 0);
+INSERT INTO `sys_base_menus` (`id`, `created_at`, `updated_at`, `deleted_at`, `menu_level`, `parent_id`, `path`, `name`, `hidden`, `component`, `sort`, `active_name`, `keep_alive`, `default_menu`, `title`, `icon`, `close_tab`) VALUES (11, '2023-08-14 16:16:31.250', '2023-08-14 16:16:31.250', NULL, 0, '0', 'person', 'person', 1, 'view/person/person.vue', 4, '', 0, 0, '个人信息', 'message', 0);
+INSERT INTO `sys_base_menus` (`id`, `created_at`, `updated_at`, `deleted_at`, `menu_level`, `parent_id`, `path`, `name`, `hidden`, `component`, `sort`, `active_name`, `keep_alive`, `default_menu`, `title`, `icon`, `close_tab`) VALUES (12, '2023-08-14 16:16:31.250', '2023-08-14 16:16:31.250', NULL, 0, '0', 'example', 'example', 0, 'view/example/index.vue', 7, '', 0, 0, '示例文件', 'management', 0);
+INSERT INTO `sys_base_menus` (`id`, `created_at`, `updated_at`, `deleted_at`, `menu_level`, `parent_id`, `path`, `name`, `hidden`, `component`, `sort`, `active_name`, `keep_alive`, `default_menu`, `title`, `icon`, `close_tab`) VALUES (13, '2023-08-14 16:16:31.250', '2023-08-14 16:16:31.250', NULL, 0, '12', 'upload', 'upload', 0, 'view/example/upload/upload.vue', 5, '', 0, 0, '媒体库(上传下载)', 'upload', 0);
+INSERT INTO `sys_base_menus` (`id`, `created_at`, `updated_at`, `deleted_at`, `menu_level`, `parent_id`, `path`, `name`, `hidden`, `component`, `sort`, `active_name`, `keep_alive`, `default_menu`, `title`, `icon`, `close_tab`) VALUES (14, '2023-08-14 16:16:31.250', '2023-08-14 16:16:31.250', NULL, 0, '12', 'breakpoint', 'breakpoint', 0, 'view/example/breakpoint/breakpoint.vue', 6, '', 0, 0, '断点续传', 'upload-filled', 0);
+INSERT INTO `sys_base_menus` (`id`, `created_at`, `updated_at`, `deleted_at`, `menu_level`, `parent_id`, `path`, `name`, `hidden`, `component`, `sort`, `active_name`, `keep_alive`, `default_menu`, `title`, `icon`, `close_tab`) VALUES (15, '2023-08-14 16:16:31.250', '2023-08-14 16:16:31.250', NULL, 0, '12', 'customer', 'customer', 0, 'view/example/customer/customer.vue', 7, '', 0, 0, '客户列表(资源示例)', 'avatar', 0);
+INSERT INTO `sys_base_menus` (`id`, `created_at`, `updated_at`, `deleted_at`, `menu_level`, `parent_id`, `path`, `name`, `hidden`, `component`, `sort`, `active_name`, `keep_alive`, `default_menu`, `title`, `icon`, `close_tab`) VALUES (16, '2023-08-14 16:16:31.250', '2023-08-14 16:16:31.250', NULL, 0, '0', 'systemTools', 'systemTools', 0, 'view/systemTools/index.vue', 5, '', 0, 0, '系统工具', 'tools', 0);
+INSERT INTO `sys_base_menus` (`id`, `created_at`, `updated_at`, `deleted_at`, `menu_level`, `parent_id`, `path`, `name`, `hidden`, `component`, `sort`, `active_name`, `keep_alive`, `default_menu`, `title`, `icon`, `close_tab`) VALUES (17, '2023-08-14 16:16:31.250', '2023-08-14 16:16:31.250', NULL, 0, '16', 'autoCode', 'autoCode', 0, 'view/systemTools/autoCode/index.vue', 1, '', 1, 0, '代码生成器', 'cpu', 0);
+INSERT INTO `sys_base_menus` (`id`, `created_at`, `updated_at`, `deleted_at`, `menu_level`, `parent_id`, `path`, `name`, `hidden`, `component`, `sort`, `active_name`, `keep_alive`, `default_menu`, `title`, `icon`, `close_tab`) VALUES (18, '2023-08-14 16:16:31.250', '2023-08-14 16:16:31.250', NULL, 0, '16', 'formCreate', 'formCreate', 0, 'view/systemTools/formCreate/index.vue', 2, '', 1, 0, '表单生成器', 'magic-stick', 0);
+INSERT INTO `sys_base_menus` (`id`, `created_at`, `updated_at`, `deleted_at`, `menu_level`, `parent_id`, `path`, `name`, `hidden`, `component`, `sort`, `active_name`, `keep_alive`, `default_menu`, `title`, `icon`, `close_tab`) VALUES (19, '2023-08-14 16:16:31.250', '2023-08-14 16:16:31.250', NULL, 0, '16', 'system', 'system', 0, 'view/systemTools/system/system.vue', 3, '', 0, 0, '系统配置', 'operation', 0);
+INSERT INTO `sys_base_menus` (`id`, `created_at`, `updated_at`, `deleted_at`, `menu_level`, `parent_id`, `path`, `name`, `hidden`, `component`, `sort`, `active_name`, `keep_alive`, `default_menu`, `title`, `icon`, `close_tab`) VALUES (20, '2023-08-14 16:16:31.250', '2023-08-14 16:16:31.250', NULL, 0, '16', 'autoCodeAdmin', 'autoCodeAdmin', 0, 'view/systemTools/autoCodeAdmin/index.vue', 1, '', 0, 0, '自动化代码管理', 'magic-stick', 0);
+INSERT INTO `sys_base_menus` (`id`, `created_at`, `updated_at`, `deleted_at`, `menu_level`, `parent_id`, `path`, `name`, `hidden`, `component`, `sort`, `active_name`, `keep_alive`, `default_menu`, `title`, `icon`, `close_tab`) VALUES (21, '2023-08-14 16:16:31.250', '2023-08-14 16:16:31.250', NULL, 0, '16', 'autoCodeEdit/:id', 'autoCodeEdit', 1, 'view/systemTools/autoCode/index.vue', 0, '', 0, 0, '自动化代码-${id}', 'magic-stick', 0);
+INSERT INTO `sys_base_menus` (`id`, `created_at`, `updated_at`, `deleted_at`, `menu_level`, `parent_id`, `path`, `name`, `hidden`, `component`, `sort`, `active_name`, `keep_alive`, `default_menu`, `title`, `icon`, `close_tab`) VALUES (22, '2023-08-14 16:16:31.250', '2023-08-14 16:16:31.250', NULL, 0, '16', 'autoPkg', 'autoPkg', 0, 'view/systemTools/autoPkg/autoPkg.vue', 0, '', 0, 0, '自动化package', 'folder', 0);
+INSERT INTO `sys_base_menus` (`id`, `created_at`, `updated_at`, `deleted_at`, `menu_level`, `parent_id`, `path`, `name`, `hidden`, `component`, `sort`, `active_name`, `keep_alive`, `default_menu`, `title`, `icon`, `close_tab`) VALUES (23, '2023-08-14 16:16:31.250', '2023-08-14 16:16:31.250', NULL, 0, '0', 'https://www.gin-vue-admin.com', 'https://www.gin-vue-admin.com', 0, '/', 0, '', 0, 0, '官方网站', 'home-filled', 0);
+INSERT INTO `sys_base_menus` (`id`, `created_at`, `updated_at`, `deleted_at`, `menu_level`, `parent_id`, `path`, `name`, `hidden`, `component`, `sort`, `active_name`, `keep_alive`, `default_menu`, `title`, `icon`, `close_tab`) VALUES (24, '2023-08-14 16:16:31.250', '2023-08-14 16:16:31.250', NULL, 0, '0', 'state', 'state', 0, 'view/system/state.vue', 8, '', 0, 0, '服务器状态', 'cloudy', 0);
+INSERT INTO `sys_base_menus` (`id`, `created_at`, `updated_at`, `deleted_at`, `menu_level`, `parent_id`, `path`, `name`, `hidden`, `component`, `sort`, `active_name`, `keep_alive`, `default_menu`, `title`, `icon`, `close_tab`) VALUES (25, '2023-08-14 16:16:31.250', '2023-08-14 16:16:31.250', NULL, 0, '0', 'plugin', 'plugin', 0, 'view/routerHolder.vue', 6, '', 0, 0, '插件系统', 'cherry', 0);
+INSERT INTO `sys_base_menus` (`id`, `created_at`, `updated_at`, `deleted_at`, `menu_level`, `parent_id`, `path`, `name`, `hidden`, `component`, `sort`, `active_name`, `keep_alive`, `default_menu`, `title`, `icon`, `close_tab`) VALUES (26, '2023-08-14 16:16:31.250', '2023-08-14 16:16:31.250', NULL, 0, '25', 'https://plugin.gin-vue-admin.com/', 'https://plugin.gin-vue-admin.com/', 0, 'https://plugin.gin-vue-admin.com/', 0, '', 0, 0, '插件市场', 'shop', 0);
+INSERT INTO `sys_base_menus` (`id`, `created_at`, `updated_at`, `deleted_at`, `menu_level`, `parent_id`, `path`, `name`, `hidden`, `component`, `sort`, `active_name`, `keep_alive`, `default_menu`, `title`, `icon`, `close_tab`) VALUES (27, '2023-08-14 16:16:31.250', '2023-08-14 16:16:31.250', NULL, 0, '25', 'installPlugin', 'installPlugin', 0, 'view/systemTools/installPlugin/index.vue', 1, '', 0, 0, '插件安装', 'box', 0);
+INSERT INTO `sys_base_menus` (`id`, `created_at`, `updated_at`, `deleted_at`, `menu_level`, `parent_id`, `path`, `name`, `hidden`, `component`, `sort`, `active_name`, `keep_alive`, `default_menu`, `title`, `icon`, `close_tab`) VALUES (28, '2023-08-14 16:16:31.250', '2023-08-14 16:16:31.250', NULL, 0, '25', 'autoPlug', 'autoPlug', 0, 'view/systemTools/autoPlug/autoPlug.vue', 2, '', 0, 0, '插件模板', 'folder', 0);
+INSERT INTO `sys_base_menus` (`id`, `created_at`, `updated_at`, `deleted_at`, `menu_level`, `parent_id`, `path`, `name`, `hidden`, `component`, `sort`, `active_name`, `keep_alive`, `default_menu`, `title`, `icon`, `close_tab`) VALUES (29, '2023-08-14 16:16:31.250', '2023-08-14 16:16:31.250', NULL, 0, '25', 'pubPlug', 'pubPlug', 0, 'view/systemTools/pubPlug/pubPlug.vue', 3, '', 0, 0, '打包插件', 'files', 0);
+INSERT INTO `sys_base_menus` (`id`, `created_at`, `updated_at`, `deleted_at`, `menu_level`, `parent_id`, `path`, `name`, `hidden`, `component`, `sort`, `active_name`, `keep_alive`, `default_menu`, `title`, `icon`, `close_tab`) VALUES (30, '2023-08-14 16:16:31.250', '2023-08-14 16:16:31.250', NULL, 0, '25', 'plugin-email', 'plugin-email', 0, 'plugin/email/view/index.vue', 4, '', 0, 0, '邮件插件', 'message', 0);
+INSERT INTO `sys_base_menus` (`id`, `created_at`, `updated_at`, `deleted_at`, `menu_level`, `parent_id`, `path`, `name`, `hidden`, `component`, `sort`, `active_name`, `keep_alive`, `default_menu`, `title`, `icon`, `close_tab`) VALUES (31, '2023-08-14 16:16:31.250', '2023-08-14 16:16:31.250', NULL, 0, '16', 'chatTable', 'chatTable', 0, 'view/chatgpt/chatTable.vue', 6, '', 0, 0, '万用表格', 'chat-dot-square', 0);
+INSERT INTO `sys_base_menus` (`id`, `created_at`, `updated_at`, `deleted_at`, `menu_level`, `parent_id`, `path`, `name`, `hidden`, `component`, `sort`, `active_name`, `keep_alive`, `default_menu`, `title`, `icon`, `close_tab`) VALUES (32, '2023-08-16 08:51:08.400', '2023-08-30 14:21:05.322', NULL, 0, '0', 'camera', 'camera', 0, 'view/camera/camera.vue', 0, '', 0, 0, '监控管理', 'camera', 0);
+INSERT INTO `sys_base_menus` (`id`, `created_at`, `updated_at`, `deleted_at`, `menu_level`, `parent_id`, `path`, `name`, `hidden`, `component`, `sort`, `active_name`, `keep_alive`, `default_menu`, `title`, `icon`, `close_tab`) VALUES (33, '2023-08-30 14:41:13.050', '2023-08-30 14:45:25.389', NULL, 0, '0', 'edge', 'edge', 0, 'view/edge/edge.vue', 0, '', 0, 0, '项目', 'aim', 0);
+INSERT INTO `sys_base_menus` (`id`, `created_at`, `updated_at`, `deleted_at`, `menu_level`, `parent_id`, `path`, `name`, `hidden`, `component`, `sort`, `active_name`, `keep_alive`, `default_menu`, `title`, `icon`, `close_tab`) VALUES (34, '2023-09-02 09:56:43.237', '2023-09-02 09:56:43.237', NULL, 0, '0', 'monitor', 'monitor', 0, 'view/monitor/monitor.vue', 9, '', 0, 0, '视频监测', 'camera', 0);

+ 0 - 0
doc/lc-base-frame/sys_chat_gpt_options.sql


+ 5 - 0
doc/lc-base-frame/sys_data_authority_id.sql

@@ -0,0 +1,5 @@
+INSERT INTO `sys_data_authority_id` (`sys_authority_authority_id`, `data_authority_id_authority_id`) VALUES (888, 888);
+INSERT INTO `sys_data_authority_id` (`sys_authority_authority_id`, `data_authority_id_authority_id`) VALUES (888, 8881);
+INSERT INTO `sys_data_authority_id` (`sys_authority_authority_id`, `data_authority_id_authority_id`) VALUES (888, 9528);
+INSERT INTO `sys_data_authority_id` (`sys_authority_authority_id`, `data_authority_id_authority_id`) VALUES (9528, 8881);
+INSERT INTO `sys_data_authority_id` (`sys_authority_authority_id`, `data_authority_id_authority_id`) VALUES (9528, 9528);

+ 7 - 0
doc/lc-base-frame/sys_dictionaries.sql

@@ -0,0 +1,7 @@
+INSERT INTO `sys_dictionaries` (`id`, `created_at`, `updated_at`, `deleted_at`, `name`, `type`, `status`, `desc`) VALUES (1, '2023-08-14 16:16:31.066', '2023-08-14 16:16:31.091', NULL, '性别', 'gender', 1, '性别字典');
+INSERT INTO `sys_dictionaries` (`id`, `created_at`, `updated_at`, `deleted_at`, `name`, `type`, `status`, `desc`) VALUES (2, '2023-08-14 16:16:31.066', '2023-08-14 16:16:31.130', NULL, '数据库int类型', 'int', 1, 'int类型对应的数据库类型');
+INSERT INTO `sys_dictionaries` (`id`, `created_at`, `updated_at`, `deleted_at`, `name`, `type`, `status`, `desc`) VALUES (3, '2023-08-14 16:16:31.066', '2023-08-14 16:16:31.148', NULL, '数据库时间日期类型', 'time.Time', 1, '数据库时间日期类型');
+INSERT INTO `sys_dictionaries` (`id`, `created_at`, `updated_at`, `deleted_at`, `name`, `type`, `status`, `desc`) VALUES (4, '2023-08-14 16:16:31.066', '2023-08-14 16:16:31.174', NULL, '数据库浮点型', 'float64', 1, '数据库浮点型');
+INSERT INTO `sys_dictionaries` (`id`, `created_at`, `updated_at`, `deleted_at`, `name`, `type`, `status`, `desc`) VALUES (5, '2023-08-14 16:16:31.066', '2023-08-14 16:16:31.199', NULL, '数据库字符串', 'string', 1, '数据库字符串');
+INSERT INTO `sys_dictionaries` (`id`, `created_at`, `updated_at`, `deleted_at`, `name`, `type`, `status`, `desc`) VALUES (6, '2023-08-14 16:16:31.066', '2023-08-14 16:16:31.224', NULL, '数据库bool类型', 'bool', 1, '数据库bool类型');
+INSERT INTO `sys_dictionaries` (`id`, `created_at`, `updated_at`, `deleted_at`, `name`, `type`, `status`, `desc`) VALUES (7, '2023-10-13 14:06:17.312', '2023-10-13 14:06:17.312', NULL, '事件类型', 'eventType', 1, '报警事件类型');

+ 29 - 0
doc/lc-base-frame/sys_dictionary_details.sql

@@ -0,0 +1,29 @@
+INSERT INTO `sys_dictionary_details` (`id`, `created_at`, `updated_at`, `deleted_at`, `label`, `value`, `status`, `sort`, `sys_dictionary_id`) VALUES (1, '2023-08-14 16:16:31.092', '2023-08-14 16:16:31.092', NULL, '男', 1, 1, 1, 1);
+INSERT INTO `sys_dictionary_details` (`id`, `created_at`, `updated_at`, `deleted_at`, `label`, `value`, `status`, `sort`, `sys_dictionary_id`) VALUES (2, '2023-08-14 16:16:31.092', '2023-08-14 16:16:31.092', NULL, '女', 2, 1, 2, 1);
+INSERT INTO `sys_dictionary_details` (`id`, `created_at`, `updated_at`, `deleted_at`, `label`, `value`, `status`, `sort`, `sys_dictionary_id`) VALUES (3, '2023-08-14 16:16:31.130', '2023-08-14 16:16:31.130', NULL, 'smallint', 1, 1, 1, 2);
+INSERT INTO `sys_dictionary_details` (`id`, `created_at`, `updated_at`, `deleted_at`, `label`, `value`, `status`, `sort`, `sys_dictionary_id`) VALUES (4, '2023-08-14 16:16:31.130', '2023-08-14 16:16:31.130', NULL, 'mediumint', 2, 1, 2, 2);
+INSERT INTO `sys_dictionary_details` (`id`, `created_at`, `updated_at`, `deleted_at`, `label`, `value`, `status`, `sort`, `sys_dictionary_id`) VALUES (5, '2023-08-14 16:16:31.130', '2023-08-14 16:16:31.130', NULL, 'int', 3, 1, 3, 2);
+INSERT INTO `sys_dictionary_details` (`id`, `created_at`, `updated_at`, `deleted_at`, `label`, `value`, `status`, `sort`, `sys_dictionary_id`) VALUES (6, '2023-08-14 16:16:31.130', '2023-08-14 16:16:31.130', NULL, 'bigint', 4, 1, 4, 2);
+INSERT INTO `sys_dictionary_details` (`id`, `created_at`, `updated_at`, `deleted_at`, `label`, `value`, `status`, `sort`, `sys_dictionary_id`) VALUES (7, '2023-08-14 16:16:31.149', '2023-08-14 16:16:31.149', NULL, 'date', 0, 1, 0, 3);
+INSERT INTO `sys_dictionary_details` (`id`, `created_at`, `updated_at`, `deleted_at`, `label`, `value`, `status`, `sort`, `sys_dictionary_id`) VALUES (8, '2023-08-14 16:16:31.149', '2023-08-14 16:16:31.149', NULL, 'time', 1, 1, 1, 3);
+INSERT INTO `sys_dictionary_details` (`id`, `created_at`, `updated_at`, `deleted_at`, `label`, `value`, `status`, `sort`, `sys_dictionary_id`) VALUES (9, '2023-08-14 16:16:31.149', '2023-08-14 16:16:31.149', NULL, 'year', 2, 1, 2, 3);
+INSERT INTO `sys_dictionary_details` (`id`, `created_at`, `updated_at`, `deleted_at`, `label`, `value`, `status`, `sort`, `sys_dictionary_id`) VALUES (10, '2023-08-14 16:16:31.149', '2023-08-14 16:16:31.149', NULL, 'datetime', 3, 1, 3, 3);
+INSERT INTO `sys_dictionary_details` (`id`, `created_at`, `updated_at`, `deleted_at`, `label`, `value`, `status`, `sort`, `sys_dictionary_id`) VALUES (11, '2023-08-14 16:16:31.149', '2023-08-14 16:16:31.149', NULL, 'timestamp', 5, 1, 5, 3);
+INSERT INTO `sys_dictionary_details` (`id`, `created_at`, `updated_at`, `deleted_at`, `label`, `value`, `status`, `sort`, `sys_dictionary_id`) VALUES (12, '2023-08-14 16:16:31.175', '2023-08-14 16:16:31.175', NULL, 'float', 0, 1, 0, 4);
+INSERT INTO `sys_dictionary_details` (`id`, `created_at`, `updated_at`, `deleted_at`, `label`, `value`, `status`, `sort`, `sys_dictionary_id`) VALUES (13, '2023-08-14 16:16:31.175', '2023-08-14 16:16:31.175', NULL, 'double', 1, 1, 1, 4);
+INSERT INTO `sys_dictionary_details` (`id`, `created_at`, `updated_at`, `deleted_at`, `label`, `value`, `status`, `sort`, `sys_dictionary_id`) VALUES (14, '2023-08-14 16:16:31.175', '2023-08-14 16:16:31.175', NULL, 'decimal', 2, 1, 2, 4);
+INSERT INTO `sys_dictionary_details` (`id`, `created_at`, `updated_at`, `deleted_at`, `label`, `value`, `status`, `sort`, `sys_dictionary_id`) VALUES (15, '2023-08-14 16:16:31.199', '2023-08-14 16:16:31.199', NULL, 'char', 0, 1, 0, 5);
+INSERT INTO `sys_dictionary_details` (`id`, `created_at`, `updated_at`, `deleted_at`, `label`, `value`, `status`, `sort`, `sys_dictionary_id`) VALUES (16, '2023-08-14 16:16:31.199', '2023-08-14 16:16:31.199', NULL, 'varchar', 1, 1, 1, 5);
+INSERT INTO `sys_dictionary_details` (`id`, `created_at`, `updated_at`, `deleted_at`, `label`, `value`, `status`, `sort`, `sys_dictionary_id`) VALUES (17, '2023-08-14 16:16:31.199', '2023-08-14 16:16:31.199', NULL, 'tinyblob', 2, 1, 2, 5);
+INSERT INTO `sys_dictionary_details` (`id`, `created_at`, `updated_at`, `deleted_at`, `label`, `value`, `status`, `sort`, `sys_dictionary_id`) VALUES (18, '2023-08-14 16:16:31.199', '2023-08-14 16:16:31.199', NULL, 'tinytext', 3, 1, 3, 5);
+INSERT INTO `sys_dictionary_details` (`id`, `created_at`, `updated_at`, `deleted_at`, `label`, `value`, `status`, `sort`, `sys_dictionary_id`) VALUES (19, '2023-08-14 16:16:31.199', '2023-08-14 16:16:31.199', NULL, 'text', 4, 1, 4, 5);
+INSERT INTO `sys_dictionary_details` (`id`, `created_at`, `updated_at`, `deleted_at`, `label`, `value`, `status`, `sort`, `sys_dictionary_id`) VALUES (20, '2023-08-14 16:16:31.199', '2023-08-14 16:16:31.199', NULL, 'blob', 5, 1, 5, 5);
+INSERT INTO `sys_dictionary_details` (`id`, `created_at`, `updated_at`, `deleted_at`, `label`, `value`, `status`, `sort`, `sys_dictionary_id`) VALUES (21, '2023-08-14 16:16:31.199', '2023-08-14 16:16:31.199', NULL, 'mediumblob', 6, 1, 6, 5);
+INSERT INTO `sys_dictionary_details` (`id`, `created_at`, `updated_at`, `deleted_at`, `label`, `value`, `status`, `sort`, `sys_dictionary_id`) VALUES (22, '2023-08-14 16:16:31.199', '2023-08-14 16:16:31.199', NULL, 'mediumtext', 7, 1, 7, 5);
+INSERT INTO `sys_dictionary_details` (`id`, `created_at`, `updated_at`, `deleted_at`, `label`, `value`, `status`, `sort`, `sys_dictionary_id`) VALUES (23, '2023-08-14 16:16:31.199', '2023-08-14 16:16:31.199', NULL, 'longblob', 8, 1, 8, 5);
+INSERT INTO `sys_dictionary_details` (`id`, `created_at`, `updated_at`, `deleted_at`, `label`, `value`, `status`, `sort`, `sys_dictionary_id`) VALUES (24, '2023-08-14 16:16:31.199', '2023-08-14 16:16:31.199', NULL, 'longtext', 9, 1, 9, 5);
+INSERT INTO `sys_dictionary_details` (`id`, `created_at`, `updated_at`, `deleted_at`, `label`, `value`, `status`, `sort`, `sys_dictionary_id`) VALUES (25, '2023-08-14 16:16:31.225', '2023-08-14 16:16:31.225', NULL, 'tinyint', 0, 1, 0, 6);
+INSERT INTO `sys_dictionary_details` (`id`, `created_at`, `updated_at`, `deleted_at`, `label`, `value`, `status`, `sort`, `sys_dictionary_id`) VALUES (26, '2023-10-13 14:08:06.925', '2023-10-13 14:08:06.925', NULL, '遮盖报警', 1, 1, 1, 7);
+INSERT INTO `sys_dictionary_details` (`id`, `created_at`, `updated_at`, `deleted_at`, `label`, `value`, `status`, `sort`, `sys_dictionary_id`) VALUES (27, '2023-10-13 14:08:24.151', '2023-10-13 14:08:24.151', NULL, '进入区域', 2, 1, 2, 7);
+INSERT INTO `sys_dictionary_details` (`id`, `created_at`, `updated_at`, `deleted_at`, `label`, `value`, `status`, `sort`, `sys_dictionary_id`) VALUES (28, '2023-10-13 14:08:40.068', '2023-10-13 14:08:40.068', NULL, '区域入侵', 3, 1, 3, 7);
+INSERT INTO `sys_dictionary_details` (`id`, `created_at`, `updated_at`, `deleted_at`, `label`, `value`, `status`, `sort`, `sys_dictionary_id`) VALUES (29, '2023-10-13 14:08:55.249', '2023-10-13 14:08:55.249', NULL, '越界侦测', 4, 1, 4, 7);

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 1126 - 0
doc/lc-base-frame/sys_operation_records.sql


+ 4 - 0
doc/lc-base-frame/sys_user_authority.sql

@@ -0,0 +1,4 @@
+INSERT INTO `sys_user_authority` (`sys_user_id`, `sys_authority_authority_id`) VALUES (1, 888);
+INSERT INTO `sys_user_authority` (`sys_user_id`, `sys_authority_authority_id`) VALUES (1, 8881);
+INSERT INTO `sys_user_authority` (`sys_user_id`, `sys_authority_authority_id`) VALUES (1, 9528);
+INSERT INTO `sys_user_authority` (`sys_user_id`, `sys_authority_authority_id`) VALUES (2, 888);

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 2 - 0
doc/lc-base-frame/sys_users.sql


+ 0 - 3
go.mod

@@ -57,8 +57,6 @@ require (
 	github.com/klauspost/compress v1.13.6 // indirect
 	github.com/klauspost/cpuid/v2 v2.2.4 // indirect
 	github.com/leodido/go-urn v1.2.4 // indirect
-	github.com/lestrrat/go-file-rotatelogs v0.0.0-20180223000712-d3151e2a480f // indirect
-	github.com/lestrrat/go-strftime v0.0.0-20180220042222-ba3bf9c1d042 // indirect
 	github.com/magiconair/properties v1.8.7 // indirect
 	github.com/mattn/go-isatty v0.0.19 // indirect
 	github.com/microsoft/go-mssqldb v1.1.0 // indirect
@@ -67,7 +65,6 @@ require (
 	github.com/modern-go/reflect2 v1.0.2 // indirect
 	github.com/montanaflynn/stats v0.7.0 // indirect
 	github.com/pelletier/go-toml/v2 v2.0.8 // indirect
-	github.com/pkg/errors v0.9.1 // indirect
 	github.com/qiniu/qmgo v1.1.8 // indirect
 	github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect
 	github.com/robfig/cron/v3 v3.0.1 // indirect

+ 0 - 17
go.sum

@@ -117,7 +117,6 @@ github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LB
 github.com/go-sql-driver/mysql v1.7.0/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI=
 github.com/go-sql-driver/mysql v1.7.1 h1:lUIinVbN1DY0xBg0eMOzmmtGoHwWBbvnWubQUrtU8EI=
 github.com/go-sql-driver/mysql v1.7.1/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI=
-github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
 github.com/go-test/deep v1.1.0 h1:WOcxcdHcvdgThNXjw0t76K42FXTU7HpNQWHpA2HHNlg=
 github.com/go-test/deep v1.1.0/go.mod h1:5C2ZWiW0ErCdrYzpqxLbTX7MG14M9iiw8DgHncVwcsE=
 github.com/goccy/go-json v0.10.2 h1:CrxCmQqYDkv1z7lO7Wbh2HN93uovUHgrECaO5ZrCXAU=
@@ -207,16 +206,10 @@ github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4=
 github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ=
 github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
 github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
-github.com/jackc/chunkreader/v2 v2.0.1/go.mod h1:odVSm741yZoC3dpHEUXIqA9tQRhFrgOHwnPIn9lDKlk=
-github.com/jackc/pgconn v1.13.0/go.mod h1:AnowpAqO4CMIIJNZl2VJp+KrkAZciAkhEl0W0JIobpI=
-github.com/jackc/pgio v1.0.0/go.mod h1:oP+2QK2wFfUWgr+gxjoBH9KGBb31Eio69xUb0w5bYf8=
 github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM=
 github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg=
-github.com/jackc/pgproto3/v2 v2.3.1/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA=
 github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a h1:bbPeKD0xmW/Y25WS6cokEszi5g+S0QxI/d45PkRi7Nk=
 github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM=
-github.com/jackc/pgtype v1.12.0/go.mod h1:LUMuVrfsFfdKGLw+AFFVv6KtHOFMwRgDDzBt76IqCA4=
-github.com/jackc/pgx/v4 v4.17.2/go.mod h1:lcxIZN44yMIrWI78a5CpucdD14hX0SBDbNRvjDBItsw=
 github.com/jackc/pgx/v5 v5.3.1 h1:Fcr8QJ1ZeLi5zsPZqQeUZhNhxfkkKBOgJuYkJHoBOtU=
 github.com/jackc/pgx/v5 v5.3.1/go.mod h1:t3JDKnCBlYIc0ewLF0Q7B8MXmoIaBOZj/ic7iHozM/8=
 github.com/jcmturner/aescts/v2 v2.0.0/go.mod h1:AiaICIRyfYg35RUkr8yESTqvSy7csK90qZ5xfvvsoNs=
@@ -246,17 +239,11 @@ github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
 github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
 github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
 github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
-github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
 github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw=
 github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII=
 github.com/leodido/go-urn v1.2.4 h1:XlAE/cm/ms7TE/VMVoduSpNBoyc2dOxHs5MZSwAN63Q=
 github.com/leodido/go-urn v1.2.4/go.mod h1:7ZrI8mTSeBSHl/UaRyKQW1qZeMgak41ANeCNaVckg+4=
-github.com/lestrrat/go-file-rotatelogs v0.0.0-20180223000712-d3151e2a480f h1:sgUSP4zdTUZYZgAGGtN5Lxk92rK+JUFOwf+FT99EEI4=
-github.com/lestrrat/go-file-rotatelogs v0.0.0-20180223000712-d3151e2a480f/go.mod h1:UGmTpUd3rjbtfIpwAPrcfmGf/Z1HS95TATB+m57TPB8=
-github.com/lestrrat/go-strftime v0.0.0-20180220042222-ba3bf9c1d042 h1:Bvq8AziQ5jFF4BHGAEDSqwPW1NJS3XshxbRCxtjFAZc=
-github.com/lestrrat/go-strftime v0.0.0-20180220042222-ba3bf9c1d042/go.mod h1:TPpsiPUEh0zFL1Snz4crhMlBe60PYxRHr5oFF3rRYg0=
 github.com/lib/pq v1.10.2 h1:AqzbZs4ZoCBp+GtejcpCpcxM3zlSMx29dXbUSeVtJb8=
-github.com/lib/pq v1.10.2/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o=
 github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY=
 github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0=
 github.com/mattn/go-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APPA=
@@ -277,13 +264,11 @@ github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe/go.mod h1:wL8QJ
 github.com/montanaflynn/stats v0.7.0 h1:r3y12KyNxj/Sb/iOE46ws+3mS1+MZca1wlHQFPsY/JU=
 github.com/montanaflynn/stats v0.7.0/go.mod h1:etXPPgVO6n31NxCd9KQUMvCM+ve0ruNzt6R8Bnaayow=
 github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE=
-github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU=
 github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE=
 github.com/onsi/gomega v1.18.1 h1:M1GfJqGRrBrrGGsbxzV5dqM2U2ApXefZCQpkukxYRLE=
 github.com/pelletier/go-toml/v2 v2.0.8 h1:0ctb6s9mE31h0/lhu+J6OPmVeDxJn+kYnJc2jZR9tGQ=
 github.com/pelletier/go-toml/v2 v2.0.8/go.mod h1:vuYfssBdrU2XDZ9bYydBu6t+6a6PYNcZljzZR9VXg+4=
 github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8/go.mod h1:HKlIX3XHQyzLZPlr7++PzdhaXEj94dEiJgZDTsxEqUI=
-github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
 github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
 github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg=
 github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
@@ -710,14 +695,12 @@ google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqw
 gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
 gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
 gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
-gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
 gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
 gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA=
 gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
 gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce h1:+JknDZhAj8YMt7GC73Ei8pv4MzjDUNPHgQWJdtMAaDU=
 gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce/go.mod h1:5AcXVHNjg+BDxry382+8OKon8SEWiKktQR07RKPsv1c=
 gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ=
-gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
 gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
 gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
 gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=

+ 4 - 24
main.go

@@ -3,20 +3,20 @@ package main
 import (
 	"fmt"
 	"github.com/gin-gonic/gin"
-	rotatelogs "github.com/lestrrat/go-file-rotatelogs"
 	"github.com/sirupsen/logrus"
-	"io"
+
 	"lc-fangdaosha/global"
 	"lc-fangdaosha/initialize"
 	"lc-fangdaosha/service/system"
 	"net/http"
 	"os"
-	"path"
 	"time"
 )
 
 func main() {
-	initLogrus()
+	logrus.SetLevel(logrus.DebugLevel)
+	logrus.SetOutput(os.Stdout)
+	logrus.SetReportCaller(true)
 	initialize.OtherInit() //初始化缓存
 	//initialize.Redis()
 	global.Db = initialize.Gorm() //初始化数据库orm
@@ -53,23 +53,3 @@ func initServer(address string, router *gin.Engine) server {
 		MaxHeaderBytes: 1 << 20,
 	}
 }
-
-func initLogrus() {
-	err := os.MkdirAll("./log", os.ModeDir)
-	if err != nil {
-		panic(err)
-	}
-	fileName := path.Join("./log", "info")
-	writer, _ := rotatelogs.New(
-		fileName+".%Y%m%d.log",
-		rotatelogs.WithMaxAge(time.Duration(global.Config.Logrus.MaxAge)*time.Hour),             // 文件最大保存时间
-		rotatelogs.WithRotationTime(time.Duration(global.Config.Logrus.RotationTime)*time.Hour), // 日志切割时间间隔
-	)
-	logrus.SetLevel(logrus.DebugLevel)
-	if global.Config.Logrus.StdOut {
-		logrus.SetOutput(io.MultiWriter(os.Stdout, writer))
-	} else {
-		logrus.SetOutput(writer)
-	}
-	logrus.SetReportCaller(true)
-}

+ 21 - 0
model/app/camera.go

@@ -0,0 +1,21 @@
+package app
+
+import "lc-fangdaosha/global"
+
+// 摄像机 结构体  Camera
+type Camera struct {
+	global.GVA_MODEL
+	Name       string `json:"name" form:"name" gorm:"column:name;comment:摄像机名称;"`                              //摄像机名称
+	Gid        uint   `json:"gid" form:"gid" gorm:"column:gid;comment:网关id;size:unit;"`                        //网关id
+	SN         string `json:"sn" form:"sn" gorm:"column:sn;comment:摄像机序列号;"`                                   //摄像机序列号
+	MacAddress string `json:"macAddress" form:"macAddress" gorm:"column:mac_address;comment:摄像机地址;"`           //摄像机地址
+	IsDeleted  uint   `json:"isDeleted" form:"isDeleted" gorm:"column:is_deleted;comment:是否已删除;size:unit;"`    //是否已删除
+	IsRegisted uint   `json:"isRegisted" form:"isRegisted" gorm:"column:is_registed;comment:是否已注册;size:unit;"` //是否已注册
+	StreamId   string `json:"streamId" form:"streamId" gorm:"column:stream_id;comment:流id;"`                   //流id
+	StreamUrl  string `json:"streamUrl" form:"streamUrl" gorm:"column:stream_url;comment:流地址;"`                //流地址
+}
+
+// TableName 摄像机 Camera自定义表名 camera
+func (Camera) TableName() string {
+	return "camera"
+}

+ 18 - 0
model/app/event.go

@@ -0,0 +1,18 @@
+package app
+
+import "time"
+
+type Event struct {
+	ID         int       `json:"id" gorm:"column:id"`
+	EventType  string    `json:"eventType" gorm:"column:event_type"`
+	EventCode  string    `json:"eventCode" gorm:"column:event_code"`
+	MacAddress string    `json:"macAddress" gorm:"column:mac_address"`
+	CreatedAt  time.Time `json:"startTime" gorm:"column:start_time"`
+	HandleTime time.Time `json:"handleTime" gorm:"column:handle_time"`
+	HandleBy   int       `json:"handleBy" gorm:"column:handle_by"`
+}
+
+// TableName Event 表名
+func (Event) TableName() string {
+	return "event"
+}

+ 26 - 0
model/app/gateway.go

@@ -0,0 +1,26 @@
+package app
+
+import "lc-fangdaosha/global"
+
+// 网关 结构体  Gateway
+type Gateway struct {
+	global.GVA_MODEL
+	Uid         int    `json:"uid" form:"uid" gorm:"column:uid;comment:用户id;"`                          //用户id
+	GatewayName string `json:"gatewayName" form:"gatewayName" gorm:"column:gateway_name;comment:网关名称;"` //网关名称
+	Isn         string `json:"isn" form:"isn" gorm:"column:isn;comment:内部序列号;"`                         //内部序列号
+	Osn         string `json:"osn" form:"osn" gorm:"column:osn;comment:外部序列号;"`                         //外部序列号
+	IsDeleted   int    `json:"isDeleted" form:"isDeleted" gorm:"column:is_deleted;comment:是否已删除;"`      //是否已删除
+	Description string `json:"description" form:"description" gorm:"column:description;comment:描述;"`    //描述
+}
+
+// TableName 网关 Gateway自定义表名 gateway
+func (Gateway) TableName() string {
+	return "gateway"
+}
+
+type Devices struct {
+	Gid uint   `json:"gid"`
+	Osn string `json:"osn"`
+	Cid uint   `json:"cid"`
+	Csn string `json:"csn"`
+}

+ 26 - 0
model/app/picture.go

@@ -0,0 +1,26 @@
+package app
+
+import "time"
+
+type Picture struct {
+	ID      int       `json:"id" gorm:"id"`
+	EventId int       `json:"eventId" gorm:"event_id"`
+	Name    string    `json:"name" gorm:"name"`
+	Time    time.Time `json:"time" gorm:"time"`
+	Mime    string    `json:"mime" gorm:"mime"`
+	Size    int       `json:"size" gorm:"size"`
+	DataId  int       `json:"dataId" gorm:"data_id"`
+}
+
+func (Picture) TableName() string {
+	return "picture"
+}
+
+type PictureData struct {
+	ID   int    `json:"id" gorm:"id"`
+	Data []byte `json:"data" gorm:"data"`
+}
+
+func (PictureData) TableName() string {
+	return "picture_data"
+}

+ 14 - 0
model/app/request/camera.go

@@ -0,0 +1,14 @@
+package request
+
+import (
+	"lc-fangdaosha/model/app"
+	"lc-fangdaosha/model/common/request"
+	"time"
+)
+
+type CameraSearch struct {
+	app.Camera
+	StartCreatedAt *time.Time `json:"startCreatedAt" form:"startCreatedAt"`
+	EndCreatedAt   *time.Time `json:"endCreatedAt" form:"endCreatedAt"`
+	request.PageInfo
+}

+ 13 - 0
model/app/request/event.go

@@ -0,0 +1,13 @@
+package request
+
+import "lc-fangdaosha/model/common/request"
+
+type Event struct {
+	UId         uint
+	GatewayName string `json:"gatewayName"`
+	EventType   uint   `json:"eventType"`
+	EventCode   string `json:"eventCode"`
+	CreatedAt   string `json:"startTime"`
+	IsHandled   *bool  `json:"isHandled"`
+	request.PageInfo
+}

+ 13 - 0
model/app/request/gateway.go

@@ -0,0 +1,13 @@
+package request
+
+import (
+	"lc-fangdaosha/model/common/request"
+)
+
+type GatewayRequest struct {
+	Uid      int    `json:"uid"`
+	Name     string `json:"gatewayName"`
+	Osn      string `json:"osn"`
+	CameraSn string `json:"cameraSn"`
+	request.PageInfo
+}

+ 28 - 0
router/app/camera.go

@@ -0,0 +1,28 @@
+package app
+
+import (
+	"github.com/gin-gonic/gin"
+	v1 "lc-fangdaosha/api/v1"
+	"lc-fangdaosha/middleware"
+)
+
+type CameraRouter struct {
+}
+
+// InitCameraRouter 初始化摄像机路由信息
+func (s *CameraRouter) InitCameraRouter(Router *gin.RouterGroup) {
+	cameraRouter := Router.Group("camera").Use(middleware.OperationRecord())
+	cameraRouterWithoutRecord := Router.Group("camera")
+	var cameraApi = v1.ApiGroupApp.AppApiGroup.CameraApi
+	{
+		cameraRouter.POST("createCamera", cameraApi.CreateCamera)             // 新建摄像机
+		cameraRouter.DELETE("deleteCamera", cameraApi.DeleteCamera)           // 删除摄像机
+		cameraRouter.DELETE("deleteCameraByIds", cameraApi.DeleteCameraByIds) // 批量删除摄像机
+		cameraRouter.PUT("updateCamera", cameraApi.UpdateCamera)              // 更新摄像机
+		cameraRouter.GET("rewind", cameraApi.RewindText)                      //获取回话数据
+	}
+	{
+		cameraRouterWithoutRecord.GET("findCamera", cameraApi.FindCamera) // 根据ID获取摄像机
+
+	}
+}

+ 8 - 0
router/app/enter.go

@@ -0,0 +1,8 @@
+package app
+
+type RouterGroup struct {
+	CameraRouter
+	GatewayRouter
+	PictureRouter
+	EventRouter
+}

+ 18 - 0
router/app/event.go

@@ -0,0 +1,18 @@
+package app
+
+import (
+	"github.com/gin-gonic/gin"
+	v1 "lc-fangdaosha/api/v1"
+)
+
+type EventRouter struct {
+}
+
+func (c *EventRouter) InitInfoRouter(Router *gin.RouterGroup) {
+	var eApi = v1.ApiGroupApp.AppApiGroup.EventApi
+	gwGroup := Router.Group("event")
+	{
+		gwGroup.GET("list", eApi.List)            //获取事件列表
+		gwGroup.GET("dictionary", eApi.EventType) //获取事件类型字典
+	}
+}

+ 22 - 0
router/app/gateway.go

@@ -0,0 +1,22 @@
+package app
+
+import (
+	"github.com/gin-gonic/gin"
+	v1 "lc-fangdaosha/api/v1"
+)
+
+type GatewayRouter struct {
+}
+
+// InitGatewayRouter 初始化网关路由信息
+func (s *GatewayRouter) InitGatewayRouter(Router *gin.RouterGroup) {
+	var gwApi = v1.ApiGroupApp.AppApiGroup.GatewayApi
+	gwGroup := Router.Group("gateways")
+	{
+		gwGroup.GET("all", gwApi.List)                 //获取网关列表
+		gwGroup.PUT("adminSet", gwApi.AdminSet)        //管理员设置osn和给网关分配用户
+		gwGroup.PUT("userSet", gwApi.UserSet)          //用户设置网关名和描述信息
+		gwGroup.DELETE("delete", gwApi.DeleteGateways) //删除网关及其关联设备
+		gwGroup.PUT("unbind", gwApi.UnbindGateways)    //解绑网关下的设备
+	}
+}

+ 18 - 0
router/app/picture.go

@@ -0,0 +1,18 @@
+package app
+
+import (
+	"github.com/gin-gonic/gin"
+	v1 "lc-fangdaosha/api/v1"
+)
+
+type PictureRouter struct {
+}
+
+// InitInfoRouter 初始化图片路由
+func (p *PictureRouter) InitInfoRouter(Router *gin.RouterGroup) {
+	var pApi = v1.ApiGroupApp.AppApiGroup.PictureApi
+	picGroup := Router.Group("picture")
+	{
+		picGroup.GET("get", pApi.GetPicture) //获取图片信息
+	}
+}

+ 167 - 0
service/app/camera.go

@@ -0,0 +1,167 @@
+package app
+
+import (
+	"errors"
+	"fmt"
+	"github.com/sirupsen/logrus"
+	"gorm.io/gorm"
+	"io/ioutil"
+	"lc-fangdaosha/global"
+	"lc-fangdaosha/isapi"
+	"lc-fangdaosha/model/app"
+	appReq "lc-fangdaosha/model/app/request"
+	"lc-fangdaosha/model/common/request"
+	"net/http"
+	"net/url"
+)
+
+type CameraService struct {
+}
+
+// CreateCamera 创建摄像机记录
+// Author [piexlmax](https://github.com/piexlmax)
+func (cameraService *CameraService) CreateCamera(camera *app.Camera) (err error) {
+	err = global.Db.Create(camera).Error
+	return err
+}
+
+// 判断摄像机是否已注册
+func (cameraService *CameraService) CreateIfNotExist(info isapi.DeviceInfo, gwId uint) (err error) {
+	var camera app.Camera
+	err = global.Db.Select("id,sn").Model(&app.Camera{}).Where("sn = ? AND is_deleted = 0", info.SerialNumber).Scan(&camera).Debug().Error
+	if err != nil {
+		return err
+	}
+	fmt.Println(camera)
+	if camera.SN != "" {
+		//已注册至数据库,绑定至网关
+		global.Db.Model(&app.Camera{}).Where("id = ?", camera.ID).Update("gid", gwId)
+		return errors.New("摄像头已注册")
+	}
+	//注册
+	var ca = &app.Camera{SN: info.SerialNumber, Gid: gwId, MacAddress: info.MacAddress}
+	err = global.Db.Create(ca).Debug().Error
+	if err != nil {
+		return err
+	}
+	logrus.Infof("摄像头注册成功:%s", info.SerialNumber)
+	return nil
+}
+
+// DeleteCamera 删除摄像机记录
+// Author [piexlmax](https://github.com/piexlmax)
+func (cameraService *CameraService) DeleteCamera(camera app.Camera) (err error) {
+	err = global.Db.Transaction(func(tx *gorm.DB) error {
+		if err := tx.Debug().Model(&app.Camera{}).Where("id = ?", camera.ID).Update("is_deleted", 1).Error; err != nil {
+			return err
+		}
+		if err = tx.Debug().Delete(&camera).Error; err != nil {
+			return err
+		}
+		return nil
+	})
+	return err
+}
+
+// DeleteCameraByIds 批量删除摄像机记录
+// Author [piexlmax](https://github.com/piexlmax)
+func (cameraService *CameraService) DeleteCameraByIds(ids request.IdsReq) (err error) {
+	err = global.Db.Transaction(func(tx *gorm.DB) error {
+		if err := tx.Model(&app.Camera{}).Where("id in ?", ids.Ids).Update("is_deleted", 1).Error; err != nil {
+			return err
+		}
+		if err := tx.Where("id in ?", ids.Ids).Delete(&app.Camera{}).Error; err != nil {
+			return err
+		}
+		return nil
+	})
+	return err
+}
+
+// UpdateCamera 更新摄像机记录
+// Author [piexlmax](https://github.com/piexlmax)
+func (cameraService *CameraService) UpdateCamera(camera app.Camera) (err error) {
+	fmt.Println("camera", camera)
+	err = global.Db.Debug().Omit("id, created_at, deleted_at, gid, name, sn,mac_address, deleted_by").Save(&camera).Error
+	return err
+}
+
+// GetCamera 根据id获取摄像机记录
+// Author [piexlmax](https://github.com/piexlmax)
+func (cameraService *CameraService) GetCamera(id uint) (camera app.Camera, err error) {
+	err = global.Db.Where("id = ? AND is_deleted = 0", id).First(&camera).Error
+	return
+}
+
+// GetCameraByGid 根据网关id获取摄像机
+func (cameraService *CameraService) GetCameraByGid(id string) (cameras []app.Camera, err error) {
+	err = global.Db.Where("gid = ? AND is_deleted = 0", id).Find(&cameras).Debug().Error
+	return
+}
+
+// GetCameraByDeviceId 根据设备id获取摄像机
+func (cameraService *CameraService) GetCameraByDeviceId(devId string) (camera app.Camera, err error) {
+	err = global.Db.Where("sn = ? AND is_deleted = 0", devId).Find(&camera).Debug().Error
+	return
+}
+
+// 获取摄像机的注册id
+func (cameraService *CameraService) SetCameraRegisted(devId string) (err error) {
+	return global.Db.Table("camera").Where("sn = ? AND is_deleted = 0", devId).Update("is_registed", 1).Debug().Error
+}
+
+// GetCameraInfoList 分页获取摄像机记录
+// Author [piexlmax](https://github.com/piexlmax)
+func (cameraService *CameraService) GetCameraInfoList(info appReq.CameraSearch) (list []app.Camera, total int64, err error) {
+	limit := info.PageSize
+	offset := info.PageSize * (info.Page - 1)
+	// 创建db
+	db := global.Db.Model(&app.Camera{})
+	var cameras []app.Camera
+	// 如果有条件搜索 下方会自动创建搜索语句
+	if info.StartCreatedAt != nil && info.EndCreatedAt != nil {
+		db = db.Where("created_at BETWEEN ? AND ?", info.StartCreatedAt, info.EndCreatedAt)
+	}
+	err = db.Count(&total).Error
+	if err != nil {
+		return
+	}
+
+	if limit != 0 {
+		db = db.Limit(limit).Offset(offset)
+	}
+
+	err = db.Find(&cameras).Error
+	return cameras, total, err
+}
+
+// GetRewindText  请求回话加密数据
+func (cameraService *CameraService) GetRewindText(stearmId string, date string) (string, error) {
+	baseurl := global.Config.Foreign.SecurityRewindUrl
+	api := baseurl + "/list/%v/%v"
+	url2 := fmt.Sprintf(api, stearmId, url.QueryEscape(date))
+	return getRewindApi(url2)
+}
+
+// getRewindApi 公用请求接口
+func getRewindApi(url string) (string, error) {
+	method := "GET"
+
+	client := &http.Client{}
+	req, err := http.NewRequest(method, url, nil)
+
+	if err != nil {
+		return "", nil
+	}
+	res, err := client.Do(req)
+	if err != nil {
+		return "", nil
+	}
+	defer res.Body.Close()
+
+	body, err := ioutil.ReadAll(res.Body)
+	if err != nil {
+		return "", nil
+	}
+	return string(body), err
+}

+ 7 - 0
service/app/enter.go

@@ -0,0 +1,7 @@
+package app
+
+type ServiceGroup struct {
+	CameraService
+	GatewayService
+	EventService
+}

+ 85 - 0
service/app/event.go

@@ -0,0 +1,85 @@
+package app
+
+import (
+	"fmt"
+	"github.com/sirupsen/logrus"
+	"lc-fangdaosha/global"
+	"lc-fangdaosha/model/app"
+	"lc-fangdaosha/model/app/request"
+	"lc-fangdaosha/model/app/response"
+)
+
+var picService = PictureService{}
+
+type EventService struct {
+}
+
+// List 获取事件列表
+func (EventService) List(req request.Event) (events []response.Event, err error) {
+	fmt.Printf("参数:%+v\n", req)
+	//查找用户所有摄像头的mac_address:
+	var macs []string
+	sub := global.Db.Select("c.mac_address").
+		Table("gateway g JOIN camera c ON g.id = c.gid").
+		Where("g.uid = ?", req.UId).
+		Find(&macs)
+	//查询事件
+	db := global.Db.Select("e.id,e.event_type,e.event_code,e.start_time,e.handle_time,g.gateway_name").
+		Table("event e JOIN camera c ON e.mac_address = c.mac_address JOIN gateway g ON c.gid = g.id")
+	if req.EventType > 0 && req.EventType <= 4 { //todo 未生效
+		db.Where("e.event_type = ?", eMap[req.EventType])
+	}
+	if req.IsHandled != nil && *req.IsHandled {
+		db.Where("NOT ISNULL(e.handle_time)")
+	}
+	if req.CreatedAt != "" {
+		db.Where("e.start_time > ?", req.CreatedAt)
+	}
+	if req.GatewayName != "" {
+		db.Where("g.gateway_name LIKE ?", "%"+req.GatewayName+"%")
+	}
+	err = db.Where("e.mac_address IN (?)", sub).
+		Offset((req.Page - 1) * req.PageSize).
+		Limit(req.PageSize).
+		Find(&events).Debug().Error
+	if err != nil {
+		logrus.Error(err)
+		return nil, err
+	}
+	for i, v := range events {
+		events[i].EventType = sMap[v.EventType]
+		events[i].PictureUrl = "http:192.168.110.165:9000/picture/get?picode=" + v.EventCode
+	}
+	return events, err
+}
+
+// Create 创建事件
+func (EventService) Create(event app.Event) error {
+	return global.Db.Omit("handle_time").Create(&event).Debug().Error
+}
+
+// Save 保存事件
+func (EventService) Save(event *app.Event, pic *app.Picture, picData *app.PictureData) {
+	err := global.Db.Omit("handle_time").Create(event).Error
+	if err != nil {
+		logrus.Error("事件保存失败", err)
+		return
+	}
+	pic.EventId = event.ID
+	picService.SaveEventPicture(pic, picData)
+}
+
+// 事件类型
+var eMap = map[uint]string{
+	1: "shelteralarm",
+	2: "regionEntrance",
+	3: "fielddetection",
+	4: "linedetection",
+}
+
+var sMap = map[string]string{
+	"shelteralarm":   "遮盖报警",
+	"regionEntrance": "进入区域",
+	"fielddetection": "区域入侵",
+	"linedetection":  "越界侦测",
+}

+ 136 - 0
service/app/gateway.go

@@ -0,0 +1,136 @@
+package app
+
+import (
+	"errors"
+	"github.com/sirupsen/logrus"
+	"gorm.io/gorm"
+	"lc-fangdaosha/global"
+	"lc-fangdaosha/model/app"
+	"lc-fangdaosha/model/app/request"
+	"lc-fangdaosha/model/app/response"
+)
+
+var ExistError = errors.New("已存在")
+
+type GatewayService struct {
+}
+
+// CreateIfNotExist 创建
+func (gs *GatewayService) CreateIfNotExist(isn string) (*app.Gateway, error) {
+	var gate *app.Gateway
+	err := global.Db.Select("id, isn").Model(&app.Gateway{}).Where("isn = ? AND is_deleted = 0", isn).Scan(&gate).Debug().Error
+	if err != nil {
+		return nil, err
+	}
+	if gate != nil {
+		return gate, ExistError
+	}
+	var gateway = &app.Gateway{Isn: isn}
+	err = global.Db.Create(gateway).Debug().Error
+	if err != nil {
+		return nil, err
+	}
+	logrus.Infof("网关[%s]注册成功", isn)
+	return gateway, nil
+}
+
+// List 该用户下所有设备数据
+func (gs *GatewayService) List(req request.GatewayRequest) (list []response.Gateways, err error) {
+	db := global.Db.Select("g.id,g.gateway_name,g.osn,g.description,c.name AS camera_name, RIGHT(c.sn,9) AS camera_sn,c.stream_id,c.stream_url,i.device_id AS ipcast_id,i.state AS ipcast_state").
+		Table("gateway g LEFT JOIN camera c ON g.id = c.gid").
+		Where("g.is_deleted = 0")
+	//条件查询设备,网关名,网关osn,摄像头sn
+	if req.Uid > 0 {
+		db.Where("g.uid = ?", req.Uid)
+	}
+	if req.Osn != "" {
+		db.Where("g.osn = ?", req.Osn)
+	}
+	if req.CameraSn != "" {
+		db.Where("c.camera_sn LIKE ?", "%"+req.CameraSn)
+	}
+	if req.Name != "" {
+		db.Where("gateway_name LIKE ?", "%"+req.Name+"%")
+	}
+	db.Offset(req.PageSize * (req.Page - 1)).Limit(req.PageSize)
+	err = db.Debug().Find(&list).Error
+	return
+}
+
+// AdminSet 用于后台给网关配置osn或分配用户,只有超级管理员才有权限
+func (gs *GatewayService) AdminSet(gw *app.Gateway) error {
+	var m = make(map[string]any)
+	if gw.Uid != 0 {
+		m["uid"] = gw.Uid
+	}
+	if gw.Osn != "" {
+		m["osn"] = gw.Osn
+	}
+	return global.Db.Model(&app.Gateway{}).Where("id = ? AND is_deleted = 0", gw.ID).Updates(m).Debug().Error
+}
+
+// Update 由于普通用户配置网关名和描述信息
+func (gs *GatewayService) Update(gw *app.Gateway) error {
+	var m = make(map[string]any)
+	if gw.GatewayName != "" {
+		m["gateway_name"] = gw.GatewayName
+	}
+	if gw.Description != "" {
+		m["description"] = gw.Description
+	}
+	return global.Db.Model(&app.Gateway{}).Where("id = ? AND is_deleted = 0", gw.ID).Updates(m).Debug().Error
+}
+
+// DeleteGateways 删除网关及关联设备
+func (gs *GatewayService) DeleteGateways(gw app.Gateway) (err error) {
+	devs := gs.DevIds(gw.ID)
+	err = global.Db.Transaction(func(tx *gorm.DB) error {
+		//删除网关
+		if err := tx.Debug().Model(&app.Gateway{}).Where("id = ?", gw.ID).Update("is_deleted", 1).Error; err != nil {
+			return err
+		}
+		if err = tx.Debug().Delete(&gw).Error; err != nil {
+			return err
+		}
+		return nil
+	})
+	//删除摄像头
+	cs := CameraService{}
+	if devs.Cid != 0 {
+		var c app.Camera
+		c.ID = devs.Cid
+		err = cs.DeleteCamera(c)
+		if err != nil {
+			logrus.Error("删除摄像头失败", err)
+		}
+	}
+
+	return err
+}
+
+// UnbindGateways 解绑网关下面的设备
+func (gs *GatewayService) UnbindGateways(gw app.Gateway) error {
+	devs := gs.DevIds(gw.ID)
+	var err error
+	if devs.Cid != 0 {
+		if err1 := global.Db.Model(&app.Camera{}).Where("id = ?", devs.Cid).Update("gid", 0).Error; err1 != nil {
+			logrus.WithFields(logrus.Fields{"网关": devs.Osn, "摄像头": devs.Csn}).Error("解绑失败", err)
+			err = errors.Join(err1)
+		}
+	}
+
+	if err == nil {
+		logrus.WithFields(logrus.Fields{"网关": devs.Osn, "摄像头": devs.Csn}).Info("解绑成功")
+	}
+	return err
+}
+
+// DevIds 获取设备的id
+func (gs *GatewayService) DevIds(id uint) (devs app.Devices) {
+	//查询网关及关联设备的id
+	global.Db.Select("g.id AS gid,g.osn,c.id AS cid,RIGHT(c.sn,9) AS csn,i.id AS iid").
+		Table("gateway g LEFT JOIN camera c ON g.id = c.gid").
+		Where("g.id = ?", id).
+		Find(&devs)
+	return
+}

+ 30 - 0
service/app/picture.go

@@ -0,0 +1,30 @@
+package app
+
+import (
+	"github.com/sirupsen/logrus"
+	"gorm.io/gorm"
+	"lc-fangdaosha/global"
+	"lc-fangdaosha/model/app"
+)
+
+type PictureService struct {
+}
+
+// SaveEventPicture 保存事件图片
+func (ps *PictureService) SaveEventPicture(pic *app.Picture, picData *app.PictureData) {
+	err := global.Db.Transaction(func(tx *gorm.DB) error {
+		err := global.Db.Create(picData).Error
+		if err != nil {
+			return err
+		}
+		pic.DataId = picData.ID
+		err = global.Db.Create(pic).Error
+		if err != nil {
+			return err
+		}
+		return nil
+	})
+	if err != nil {
+		logrus.WithField("eventId", pic.EventId).Error("图片保存失败")
+	}
+}