cradar.go 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219
  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 RadarController struct {
  10. BaseController
  11. }
  12. type ReqRadar 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 int `json:"brand"` //品牌
  18. Model int `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 ReqRadar) 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(0), validation.Max(300)),
  32. validation.Field(&a.State, validation.In(0, 1)),
  33. )
  34. }
  35. type ReqImportRadar struct {
  36. Tenant string `json:"tenant"` //租户ID
  37. List []Radar `json:"list"` //列表
  38. }
  39. func (a ReqImportRadar) Validate() error {
  40. var rules []*validation.FieldRules
  41. rules = append(rules, validation.Field(&a.Tenant, validation.Required, validation.Length(4, 8)))
  42. rules = append(rules, validation.Field(&a.List, validation.Required))
  43. return validation.ValidateStruct(&a, rules...)
  44. }
  45. type Radar struct {
  46. Code string `json:"code"` //设备编号,禁止修改
  47. GID string `json:"gid"` //网关ID
  48. Name string `json:"name"` //设备名称
  49. Brand int `json:"brand"` //品牌
  50. Model int `json:"model"` //型号
  51. IP string `json:"ip"` //IP地址
  52. Port int `json:"port"` //端口
  53. SuggestSpeed int `json:"suggestspeed"` //建议速度,提示限速
  54. State int `json:"state"` //1启用,0禁用
  55. }
  56. func (a Radar) Validate() error {
  57. return validation.ValidateStruct(&a,
  58. validation.Field(&a.Code, validation.Required, validation.Length(4, 32)),
  59. validation.Field(&a.GID, validation.Required, validation.Length(4, 32)),
  60. validation.Field(&a.IP, validation.Required, is.IP),
  61. validation.Field(&a.Port, validation.Required, validation.Min(80), validation.Max(65535)),
  62. validation.Field(&a.SuggestSpeed, validation.Required, validation.Min(0), validation.Max(300)),
  63. validation.Field(&a.State, validation.In(0, 1)),
  64. )
  65. }
  66. // CreateRadar @Title 创建雷达
  67. // @Description 创建雷达
  68. // @Param body controllers.ReqRadar true "数据"
  69. // @Success 0 {int} BaseResponse.Code "成功"
  70. // @Failure 1 {int} BaseResponse.Code "失败"
  71. // @router /v1/create [post]
  72. func (o *RadarController) CreateRadar() {
  73. var obj ReqRadar
  74. if err := json.Unmarshal(o.Ctx.Input.RequestBody, &obj); err != nil {
  75. beego.Debug(string(o.Ctx.Input.RequestBody))
  76. o.Response(Failure, fmt.Sprintf("数据包解析错误:%s", err.Error()), nil)
  77. return
  78. }
  79. if err := obj.Validate(); err != nil {
  80. beego.Error(fmt.Sprintf("请求参数验证失败:%s", err.Error()))
  81. o.Response(Failure, fmt.Sprintf("请求参数验证失败:%s", err.Error()), nil)
  82. return
  83. }
  84. oo := models.RadarDevice{
  85. ID: obj.Code, //设备ID,DID
  86. Name: obj.Name, //集控器名称
  87. GID: obj.GID, //网关ID
  88. Brand: obj.Brand, //品牌
  89. Model: obj.Model, //型号
  90. DevType: models.Radar, //6雷达
  91. IP: obj.IP, //雷达IP
  92. Port: uint16(obj.Port), //雷达端口
  93. Tenant: obj.Tenant, //租户ID
  94. SuggestSpeed: obj.SuggestSpeed, //建议速度阈值
  95. State: obj.State, //1启用,0禁用
  96. }
  97. if err := oo.SaveFromWeb(); err != nil {
  98. o.Response(Failure, fmt.Sprintf("数据插入失败:%s", err.Error()), nil)
  99. return
  100. }
  101. o.Response(Success, "成功", oo.ID)
  102. }
  103. // UpdateRadar @Title 更新雷达
  104. // @Description 更新雷达
  105. // @Param body controllers.ReqConcentrator true "数据"
  106. // @Success 0 {int} BaseResponse.Code "成功"
  107. // @Failure 1 {int} BaseResponse.Code "失败"
  108. // @router /v1/update [post]
  109. func (o *RadarController) UpdateRadar() {
  110. var obj ReqRadar
  111. if err := json.Unmarshal(o.Ctx.Input.RequestBody, &obj); err != nil {
  112. beego.Debug(string(o.Ctx.Input.RequestBody))
  113. o.Response(Failure, fmt.Sprintf("数据包解析错误:%s", err.Error()), nil)
  114. return
  115. }
  116. if err := obj.Validate(); err != nil {
  117. beego.Error(fmt.Sprintf("请求参数验证失败:%s", err.Error()))
  118. o.Response(Failure, fmt.Sprintf("请求参数验证失败:%s", err.Error()), nil)
  119. return
  120. }
  121. oo := models.RadarDevice{
  122. ID: obj.Code, //设备ID,DID
  123. Name: obj.Name, //设备名称
  124. GID: obj.GID, //网关ID
  125. Brand: obj.Brand, //品牌
  126. Model: obj.Model, //型号
  127. DevType: models.Radar, //6,雷达
  128. IP: obj.IP, //雷达IP
  129. Port: uint16(obj.Port), //雷达端口
  130. Tenant: obj.Tenant, //租户ID
  131. SuggestSpeed: obj.SuggestSpeed, //建议速度阈值
  132. State: obj.State, //1启用,0禁用
  133. }
  134. if err := oo.SaveFromWeb(); err != nil {
  135. o.Response(Failure, fmt.Sprintf("数据更新失败:%s", err.Error()), nil)
  136. return
  137. }
  138. o.Response(Success, "成功", oo.ID)
  139. }
  140. // DeleteRadar @Title 删除雷达
  141. // @Description 删除雷达
  142. // @Param id query int true "设备ID"
  143. // @Success 0 {int} BaseResponse.Code "成功"
  144. // @Failure 1 {int} BaseResponse.Code "失败"
  145. // @router /v1/delete [post]
  146. func (o *RadarController) DeleteRadar() {
  147. id := o.GetString("code")
  148. if id == "" {
  149. beego.Error("缺查询参数id")
  150. o.Response(Failure, "缺查询参数id", nil)
  151. return
  152. }
  153. c := models.RadarDevice{ID: id}
  154. if err := c.Delete(); err != nil {
  155. beego.Error(fmt.Sprintf("删除失败:%s", err.Error()))
  156. o.Response(Failure, fmt.Sprintf("数据删除失败:%s", err.Error()), nil)
  157. return
  158. }
  159. o.Response(Success, "成功", c.ID)
  160. }
  161. // ImportRadar @Title 导入雷达
  162. // @Description 导入雷达
  163. // @Param body controllers.ReqImportCamera true "数据"
  164. // @Success 0 {int} BaseResponse.Code "成功"
  165. // @Failure 1 {int} BaseResponse.Code "失败"
  166. // @router /v1/import [post]
  167. func (o *RadarController) ImportRadar() {
  168. var obj ReqImportRadar
  169. if err := json.Unmarshal(o.Ctx.Input.RequestBody, &obj); err != nil {
  170. beego.Debug(string(o.Ctx.Input.RequestBody))
  171. o.Response(Failure, fmt.Sprintf("数据包解析错误:%s", err.Error()), nil)
  172. return
  173. }
  174. if err := obj.Validate(); err != nil {
  175. beego.Error(fmt.Sprintf("请求参数验证失败:%s", err.Error()))
  176. o.Response(Failure, fmt.Sprintf("请求参数验证失败:%s", err.Error()), nil)
  177. return
  178. }
  179. var resp []RespImport
  180. for _, v := range obj.List {
  181. var rsp RespImport
  182. rsp.Code = v.Code
  183. oo := models.RadarDevice{
  184. ID: v.Code, //设备ID,DID
  185. Name: v.Name, //设备名称
  186. GID: v.GID, //网关ID
  187. Brand: v.Brand, //品牌
  188. Model: v.Model, //型号
  189. DevType: models.Radar, //6,雷达
  190. IP: v.IP, //雷达IP
  191. Port: uint16(v.Port), //雷达端口
  192. SuggestSpeed: v.SuggestSpeed, //建议速度阈值
  193. Tenant: obj.Tenant,
  194. State: v.State, //1启用,0禁用
  195. }
  196. err := oo.SaveFromWeb()
  197. if err != nil {
  198. rsp.Error = err.Error()
  199. beego.Error(fmt.Sprintf("数据导入失败,code=%s,失败原因:%s", v.Code, err.Error()))
  200. }
  201. resp = append(resp, rsp)
  202. }
  203. o.Response(Success, "成功", resp)
  204. }