cgateway.go 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. package controllers
  2. import (
  3. "fmt"
  4. "strings"
  5. "github.com/astaxie/beego"
  6. "lc/common/models"
  7. )
  8. type GatewayController struct {
  9. BaseController
  10. }
  11. type ReqGateway struct {
  12. Code string `json:"code"` //设备编号,禁止修改
  13. Tenant string `json:"tenant"` //租户ID
  14. Name string `json:"name"` //设备名称
  15. Brand int `json:"brand"` //品牌
  16. Model int `json:"model"` //型号
  17. State int `json:"state"` //1启用,0禁用
  18. }
  19. type Gateway struct {
  20. Code string `json:"code"` //设备编号,禁止修改
  21. Name string `json:"name"` //设备名称
  22. Brand int `json:"brand"` //品牌
  23. Model int `json:"model"` //型号
  24. State int `json:"state"` //1启用,0禁用
  25. }
  26. type ReqImportGateway struct {
  27. Tenant string `json:"tenant"` //租户ID
  28. List []Gateway `json:"list"` //网关列表
  29. }
  30. type RespImport struct {
  31. Code string `json:"code"`
  32. Error string `json:"error"`
  33. }
  34. // CreateGateway @Title 创建网关设备
  35. // @Description 创建网关设备
  36. // @Param body controllers.ReqGateway true "数据"
  37. // @Success 0 {int} BaseResponse.Code "成功"
  38. // @Failure 1 {int} BaseResponse.Code "失败"
  39. // @router /v1/create [post]
  40. func (o *GatewayController) CreateGateway() {
  41. var obj ReqGateway
  42. if err := json.Unmarshal(o.Ctx.Input.RequestBody, &obj); err != nil {
  43. beego.Debug(string(o.Ctx.Input.RequestBody))
  44. o.Response(Failure, fmt.Sprintf("数据包解析错误:%s", err.Error()), nil)
  45. return
  46. }
  47. oo := models.Gateway{
  48. ID: obj.Code,
  49. Name: obj.Name,
  50. Tenant: obj.Tenant,
  51. Brand: obj.Brand,
  52. Model: obj.Model,
  53. State: obj.State,
  54. }
  55. if err := oo.SaveFromWeb(); err != nil {
  56. o.Response(Failure, fmt.Sprintf("数据插入失败:%s", err.Error()), nil)
  57. return
  58. }
  59. o.Response(Success, "成功", oo.ID)
  60. }
  61. // UpdateGateway @Title 更新网关设备
  62. // @Description 更新网关设备
  63. // @Param body controllers.ReqGateway true "数据"
  64. // @Success 0 {int} BaseResponse.Code "成功"
  65. // @Failure 1 {int} BaseResponse.Code "失败"
  66. // @router /v1/update [post]
  67. func (o *GatewayController) UpdateGateway() {
  68. var obj ReqGateway
  69. if err := json.Unmarshal(o.Ctx.Input.RequestBody, &obj); err != nil {
  70. beego.Debug(string(o.Ctx.Input.RequestBody))
  71. o.Response(Failure, fmt.Sprintf("数据包解析错误:%s", err.Error()), nil)
  72. return
  73. }
  74. oo := models.Gateway{
  75. ID: obj.Code,
  76. Name: obj.Name,
  77. Tenant: obj.Tenant,
  78. Brand: obj.Brand,
  79. Model: obj.Model,
  80. State: obj.State,
  81. }
  82. if err := oo.SaveFromWeb(); err != nil {
  83. o.Response(Failure, fmt.Sprintf("数据更新失败:%s", err.Error()), nil)
  84. return
  85. }
  86. o.Response(Success, "成功", oo.ID)
  87. }
  88. // DeleteGateway @Title 删除网关设备
  89. // @Description 删除网关设备
  90. // @Param code query string true "设备ID"
  91. // @Success 0 {int} BaseResponse.Code "成功"
  92. // @Failure 1 {int} BaseResponse.Code "失败"
  93. // @router /v1/delete [post]
  94. func (o *GatewayController) DeleteGateway() {
  95. code := strings.Trim(o.GetString("code"), " ")
  96. if len(code) == 0 {
  97. o.Response(Failure, "code为空", nil)
  98. return
  99. }
  100. c := models.Gateway{
  101. ID: code,
  102. }
  103. if err := c.Delete(); err != nil {
  104. beego.Error(fmt.Sprintf("删除失败:%s", err.Error()))
  105. o.Response(Failure, fmt.Sprintf("数据删除失败:%s", err.Error()), nil)
  106. return
  107. }
  108. o.Response(Success, "成功", c.ID)
  109. }
  110. // ImportGateway @Title 批量导入网关设备
  111. // @Description 批量导入网关设备
  112. // @Param body controllers.ReqImportGateway true "数据"
  113. // @Success 0 {int} BaseResponse.Code "成功"
  114. // @Failure 1 {int} BaseResponse.Code "失败"
  115. // @router /v1/import [post]
  116. func (o *GatewayController) ImportGateway() {
  117. var obj ReqImportGateway
  118. if err := json.Unmarshal(o.Ctx.Input.RequestBody, &obj); err != nil {
  119. beego.Debug(string(o.Ctx.Input.RequestBody))
  120. o.Response(Failure, fmt.Sprintf("数据包解析错误:%s", err.Error()), nil)
  121. return
  122. }
  123. var resp []RespImport
  124. for _, v := range obj.List {
  125. var aresp RespImport
  126. aresp.Code = v.Code
  127. oo := models.Gateway{
  128. ID: v.Code,
  129. Name: v.Name,
  130. Tenant: obj.Tenant,
  131. Brand: v.Brand,
  132. Model: v.Model,
  133. State: v.State,
  134. }
  135. err := oo.SaveFromWeb()
  136. if err != nil {
  137. aresp.Error = err.Error()
  138. beego.Error(fmt.Sprintf("zigbee集控器数据导入失败,code=%s,失败原因:%s", v.Code, err.Error()))
  139. }
  140. resp = append(resp, aresp)
  141. }
  142. o.Response(Success, "成功", resp)
  143. }