cits.go 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. package controllers
  2. import (
  3. "fmt"
  4. "github.com/astaxie/beego"
  5. validation "github.com/go-ozzo/ozzo-validation/v4"
  6. "github.com/go-ozzo/ozzo-validation/v4/is"
  7. "lc/common/models"
  8. )
  9. type ItsController struct {
  10. BaseController
  11. }
  12. type ReqIts struct {
  13. Tenant string `json:"tenant"` //租户ID
  14. Code string `json:"code"` //设备编号,禁止修改
  15. GID string `json:"gid"` //网关ID
  16. Name string `json:"name"` //设备名称
  17. Brand string `json:"brand"` //品牌
  18. Model string `json:"model"` //型号
  19. IP string `json:"ip"` //IP地址
  20. Port int `json:"port"` //端口
  21. SuggestSpeed int `json:"suggestspeed"` //建议速度,提示限速
  22. State int `json:"state"` //1启用,0禁用
  23. }
  24. func (a ReqIts) Validate() error {
  25. return validation.ValidateStruct(&a,
  26. validation.Field(&a.Code, validation.Required, validation.Length(4, 32)),
  27. validation.Field(&a.GID, validation.Required, validation.Length(4, 32)),
  28. validation.Field(&a.Tenant, validation.Required, validation.Length(4, 8)),
  29. validation.Field(&a.IP, validation.Required, is.IP),
  30. validation.Field(&a.Port, validation.Required, validation.Min(80), validation.Max(65535)),
  31. validation.Field(&a.SuggestSpeed, validation.Required, validation.Min(15), validation.Max(120)),
  32. validation.Field(&a.State, validation.In(0, 1)),
  33. )
  34. }
  35. // CreateIts @Title 创建抓拍单元
  36. // @Description 创建抓拍单元
  37. // @Param body controllers.ReqIts true "数据"
  38. // @Success 0 {int} BaseResponse.Code "成功"
  39. // @Failure 1 {int} BaseResponse.Code "失败"
  40. // @router /v1/create [post]
  41. func (o *ItsController) CreateIts() {
  42. var obj ReqIts
  43. if err := json.Unmarshal(o.Ctx.Input.RequestBody, &obj); err != nil {
  44. beego.Debug(string(o.Ctx.Input.RequestBody))
  45. o.Response(Failure, fmt.Sprintf("数据包解析错误:%s", err.Error()), nil)
  46. return
  47. }
  48. if err := obj.Validate(); err != nil {
  49. beego.Error(fmt.Sprintf("请求参数验证失败:%s", err.Error()))
  50. o.Response(Failure, fmt.Sprintf("请求参数验证失败:%s", err.Error()), nil)
  51. return
  52. }
  53. oo := models.ItsDevice{
  54. ID: obj.Code, //设备ID,DID
  55. Name: obj.Name, //集控器名称
  56. GID: obj.GID, //网关ID
  57. Brand: obj.Brand, //品牌
  58. Model: obj.Model, //型号
  59. DevType: 5, //5抓拍单元
  60. IP: obj.IP, //抓拍单元IP
  61. Port: uint16(obj.Port), //抓拍单元端口
  62. Tenant: obj.Tenant, //租户ID
  63. SuggestSpeed: obj.SuggestSpeed, //建议速度阈值
  64. State: obj.State, //1启用,0禁用
  65. }
  66. if err := oo.SaveFromWeb(); err != nil {
  67. o.Response(Failure, fmt.Sprintf("数据插入失败:%s", err.Error()), nil)
  68. return
  69. }
  70. o.Response(Success, "成功", oo.ID)
  71. }
  72. // UpdateIts @Title 更新抓拍单元
  73. // @Description 更新抓拍单元
  74. // @Param body controllers.ReqConcentrator true "数据"
  75. // @Success 0 {int} BaseResponse.Code "成功"
  76. // @Failure 1 {int} BaseResponse.Code "失败"
  77. // @router /v1/update [post]
  78. func (o *ItsController) UpdateIts() {
  79. var obj ReqIts
  80. if err := json.Unmarshal(o.Ctx.Input.RequestBody, &obj); err != nil {
  81. beego.Debug(string(o.Ctx.Input.RequestBody))
  82. o.Response(Failure, fmt.Sprintf("数据包解析错误:%s", err.Error()), nil)
  83. return
  84. }
  85. if err := obj.Validate(); err != nil {
  86. beego.Error(fmt.Sprintf("请求参数验证失败:%s", err.Error()))
  87. o.Response(Failure, fmt.Sprintf("请求参数验证失败:%s", err.Error()), nil)
  88. return
  89. }
  90. oo := models.ItsDevice{
  91. ID: obj.Code, //设备ID,DID
  92. Name: obj.Name, //集控器名称
  93. GID: obj.GID, //网关ID
  94. Brand: obj.Brand, //品牌
  95. Model: obj.Model, //型号
  96. DevType: 5, //5,抓拍单元
  97. IP: obj.IP, //抓拍单元IP
  98. Port: uint16(obj.Port), //抓拍单元端口
  99. Tenant: obj.Tenant, //租户ID
  100. SuggestSpeed: obj.SuggestSpeed, //建议速度阈值
  101. State: obj.State, //1启用,0禁用
  102. }
  103. if err := oo.SaveFromWeb(); err != nil {
  104. o.Response(Failure, fmt.Sprintf("数据更新失败:%s", err.Error()), nil)
  105. return
  106. }
  107. o.Response(Success, "成功", oo.ID)
  108. }
  109. // DeleteIts @Title 删除抓拍单元
  110. // @Description 删除抓拍单元
  111. // @Param id query int true "设备ID"
  112. // @Success 0 {int} BaseResponse.Code "成功"
  113. // @Failure 1 {int} BaseResponse.Code "失败"
  114. // @router /v1/delete [post]
  115. func (o *ItsController) DeleteIts() {
  116. id := o.GetString("code")
  117. if id == "" {
  118. beego.Error("缺查询参数id")
  119. o.Response(Failure, "缺查询参数id", nil)
  120. return
  121. }
  122. c := models.ItsDevice{ID: id}
  123. if err := c.Delete(); err != nil {
  124. beego.Error(fmt.Sprintf("删除失败:%s", err.Error()))
  125. o.Response(Failure, fmt.Sprintf("数据删除失败:%s", err.Error()), nil)
  126. return
  127. }
  128. o.Response(Success, "成功", c.ID)
  129. }