cconcentrator.go 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211
  1. package controllers
  2. import (
  3. "fmt"
  4. "strings"
  5. "github.com/astaxie/beego"
  6. validation "github.com/go-ozzo/ozzo-validation/v4"
  7. "lc/common/models"
  8. )
  9. // ConcentratorController 长和zigbee集控器
  10. type ConcentratorController struct {
  11. BaseController
  12. }
  13. type ReqConcentrator struct {
  14. Code string `json:"code"` //设备编号,禁止修改
  15. GID string `json:"gid"` //网关ID
  16. Tenant string `json:"tenant"` //租户ID
  17. Name string `json:"name"` //设备名称
  18. Brand int `json:"brand"` //品牌
  19. Model int `json:"model"` //型号
  20. NetID int `json:"netid"` //网络号,zigbee灯控专用,其他类型灯控置0
  21. Channel int `json:"channel"` //通道号,zigbee灯控专用,其他类型灯控置0
  22. State int `json:"state"` //1启用,0禁用
  23. }
  24. func (a ReqConcentrator) 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.NetID, validation.Required, validation.Min(1)),
  30. validation.Field(&a.Channel, validation.Required, validation.Min(1)),
  31. validation.Field(&a.State, validation.In(0, 1)),
  32. )
  33. }
  34. type Concentrator struct {
  35. Code string `json:"code"` //设备编号,禁止修改
  36. GID string `json:"gid"` //网关ID
  37. Name string `json:"name"` //设备名称
  38. Brand int `json:"brand"` //品牌
  39. Model int `json:"model"` //型号
  40. NetID int `json:"netid"` //网络号,zigbee灯控专用,其他类型灯控置0
  41. Channel int `json:"channel"` //通道号,zigbee灯控专用,其他类型灯控置0
  42. State int `json:"state"` //1启用,0禁用
  43. }
  44. func (a Concentrator) Validate() error {
  45. return validation.ValidateStruct(&a,
  46. validation.Field(&a.Code, validation.Required, validation.Length(4, 32)),
  47. validation.Field(&a.GID, validation.Required, validation.Length(4, 32)),
  48. validation.Field(&a.NetID, validation.Required, validation.Min(1)),
  49. validation.Field(&a.Channel, validation.Required, validation.Min(1)),
  50. validation.Field(&a.State, validation.In(0, 1)),
  51. )
  52. }
  53. type ReqImportConcentrator struct {
  54. Tenant string `json:"tenant"` //租户ID
  55. List []Concentrator `json:"list"` //灯控列表
  56. }
  57. func (a ReqImportConcentrator) Validate() error {
  58. return validation.ValidateStruct(&a,
  59. validation.Field(&a.Tenant, validation.Required, validation.Length(4, 32)),
  60. validation.Field(&a.List, validation.Required),
  61. )
  62. }
  63. // CreateConcentrator @Title 创建长和zigbee集控器
  64. // @Description 创建长和zigbee集控器
  65. // @Param body controllers.ReqConcentrator true "数据"
  66. // @Success 0 {int} BaseResponse.Code "成功"
  67. // @Failure 1 {int} BaseResponse.Code "失败"
  68. // @router /v1/create [post]
  69. func (o *ConcentratorController) CreateConcentrator() {
  70. var obj ReqConcentrator
  71. if err := json.Unmarshal(o.Ctx.Input.RequestBody, &obj); err != nil {
  72. beego.Debug(string(o.Ctx.Input.RequestBody))
  73. o.Response(Failure, fmt.Sprintf("数据包解析错误:%s", err.Error()), nil)
  74. return
  75. }
  76. if err := obj.Validate(); err != nil {
  77. beego.Error(fmt.Sprintf("请求参数验证失败:%s", err.Error()))
  78. o.Response(Failure, fmt.Sprintf("请求参数验证失败:%s", err.Error()), nil)
  79. return
  80. }
  81. oo := models.DeviceConcentrator{
  82. ID: obj.Code, //设备ID,DID
  83. Name: obj.Name, //集控器名称
  84. GID: obj.GID, //网关ID
  85. Brand: obj.Brand, //品牌
  86. Model: obj.Model, //型号
  87. Netid: obj.NetID, //网络号,zigbee灯控专用,其他类型灯控置0
  88. Channel: obj.Channel, //通道号,zigbee灯控专用,其他类型灯控置0
  89. Tenant: obj.Tenant, //租户ID
  90. State: obj.State, //1启用,0禁用
  91. }
  92. if err := oo.SaveFromWeb(); err != nil {
  93. o.Response(Failure, fmt.Sprintf("数据插入失败:%s", err.Error()), nil)
  94. return
  95. }
  96. o.Response(Success, "成功", oo.ID)
  97. }
  98. // UpdateConcentrator @Title 更新长和zigbee集控器
  99. // @Description 更新长和zigbee集控器
  100. // @Param body body controllers.ReqConcentrator true "数据"
  101. // @Success 0 {int} BaseResponse.Code "成功"
  102. // @Failure 1 {int} BaseResponse.Code "失败"
  103. // @router /v1/update [post]
  104. func (o *ConcentratorController) UpdateConcentrator() {
  105. var obj ReqConcentrator
  106. if err := json.Unmarshal(o.Ctx.Input.RequestBody, &obj); err != nil {
  107. beego.Debug(string(o.Ctx.Input.RequestBody))
  108. o.Response(Failure, fmt.Sprintf("数据包解析错误:%s", err.Error()), nil)
  109. return
  110. }
  111. if err := obj.Validate(); err != nil {
  112. beego.Error(fmt.Sprintf("请求参数验证失败:%s", err.Error()))
  113. o.Response(Failure, fmt.Sprintf("请求参数验证失败:%s", err.Error()), nil)
  114. return
  115. }
  116. oo := models.DeviceConcentrator{
  117. ID: obj.Code, //设备ID,DID
  118. Name: obj.Name, //灯控名称
  119. GID: obj.GID, //网关ID
  120. Brand: obj.Brand, //品牌
  121. Model: obj.Model, //型号
  122. Netid: obj.NetID, //网络号,zigbee灯控专用,其他类型灯控置0
  123. Channel: obj.Channel, //通道号,zigbee灯控专用,其他类型灯控置0
  124. Tenant: obj.Tenant, //租户ID
  125. State: obj.State, //1启用,0禁用
  126. }
  127. if err := oo.SaveFromWeb(); err != nil {
  128. o.Response(Failure, fmt.Sprintf("数据更新失败:%s", err.Error()), nil)
  129. return
  130. }
  131. o.Response(Success, "成功", oo.ID)
  132. }
  133. // DeleteConcentrator @Title 删除长和zigbee集控器
  134. // @Description 删除长和zigbee集控器
  135. // @Param code query string true "设备ID"
  136. // @Success 0 {int} BaseResponse.Code "成功"
  137. // @Failure 1 {int} BaseResponse.Code "失败"
  138. // @router /v1/delete [post]
  139. func (o *ConcentratorController) DeleteConcentrator() {
  140. code := strings.Trim(o.GetString("code"), " ")
  141. if err := validation.Validate(code, validation.Required, validation.Length(4, 100)); err != nil {
  142. beego.Error(fmt.Sprintf("请求参数验证失败:%s", err.Error()))
  143. o.Response(Failure, fmt.Sprintf("请求参数验证失败:%s", err.Error()), nil)
  144. return
  145. }
  146. c := models.DeviceConcentrator{
  147. ID: code,
  148. }
  149. if err := c.Delete(); err != nil {
  150. beego.Error(fmt.Sprintf("删除失败:%s", err.Error()))
  151. o.Response(Failure, fmt.Sprintf("数据删除失败:%s", err.Error()), nil)
  152. return
  153. }
  154. o.Response(Success, "成功", c.ID)
  155. }
  156. // ImportConcentrator @Title 导入长和zigbee集控器
  157. // @Description 导入长和zigbee集控器
  158. // @Param body controllers.ReqImportConcentrator true "数据"
  159. // @Success 0 {int} BaseResponse.Code "成功"
  160. // @Failure 1 {int} BaseResponse.Code "失败"
  161. // @router /v1/import [post]
  162. func (o *ConcentratorController) ImportConcentrator() {
  163. var obj ReqImportConcentrator
  164. if err := json.Unmarshal(o.Ctx.Input.RequestBody, &obj); err != nil {
  165. beego.Debug(string(o.Ctx.Input.RequestBody))
  166. o.Response(Failure, fmt.Sprintf("数据包解析错误:%s", err.Error()), nil)
  167. return
  168. }
  169. if err := obj.Validate(); err != nil {
  170. beego.Error(fmt.Sprintf("请求参数验证失败:%s", err.Error()))
  171. o.Response(Failure, fmt.Sprintf("请求参数验证失败:%s", err.Error()), nil)
  172. return
  173. }
  174. var resp []RespImport
  175. for _, v := range obj.List {
  176. var aresp RespImport
  177. aresp.Code = v.Code
  178. oo := models.DeviceConcentrator{
  179. ID: v.Code, //设备ID,DID
  180. Name: v.Name, //集控器名称
  181. GID: v.GID, //网关ID
  182. Brand: v.Brand, //品牌
  183. Model: v.Model, //型号
  184. Netid: v.NetID, //网络号,zigbee灯控专用,其他类型灯控置0
  185. Channel: v.Channel, //通道号,zigbee灯控专用,其他类型灯控置0
  186. Tenant: obj.Tenant, //租户ID
  187. State: v.State, //1启用,0禁用
  188. }
  189. err := oo.SaveFromWeb()
  190. if err != nil {
  191. aresp.Error = err.Error()
  192. beego.Error(fmt.Sprintf("zigbee集控器数据导入失败,code=%s,失败原因:%s", v.Code, err.Error()))
  193. }
  194. resp = append(resp, aresp)
  195. }
  196. o.Response(Success, "成功", resp)
  197. }