device.go 9.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342
  1. package apis
  2. import (
  3. "fmt"
  4. "IotAdmin/core/sdk/api"
  5. "IotAdmin/core/sdk/pkg/jwt-auth/user"
  6. _ "IotAdmin/core/sdk/pkg/response"
  7. "github.com/gin-gonic/gin"
  8. "IotAdmin/app/iot/models"
  9. "IotAdmin/app/iot/service"
  10. "IotAdmin/app/iot/service/dto"
  11. "IotAdmin/common/permission"
  12. )
  13. // IotDeviceApi 设备接口
  14. type IotDeviceApi struct {
  15. api.Api
  16. }
  17. // GetPage 获取设备列表
  18. // @Summary 获取设备列表
  19. // @Description 获取设备列表
  20. // @Tags 设备管理
  21. // @Param groupId query int false "分组ID"
  22. // @Param sn query string false "设备编码"
  23. // @Param name query string false "设备名称"
  24. // @Param type query int false "设备类型 1:网关 2:表计"
  25. // @Param protocol query string false "表计协议"
  26. // @Param pageSize query int false "页条数"
  27. // @Param pageIndex query int false "页码"
  28. // @Success 200 {object} response.Response{data=response.Page{list=[]models.IotDevice}} "{"code": 200, "data": [...]}"
  29. // @Router /api/iot-device [get]
  30. // @Security Bearer
  31. func (e IotDeviceApi) GetPage(c *gin.Context) {
  32. req := dto.IotDeviceGetPageReq{}
  33. s := service.IotDeviceService{}
  34. err := e.MakeContext(c).MakeOrm().Bind(&req).MakeService(&s.Service).
  35. Errors
  36. if err != nil {
  37. e.Logger.Error(err)
  38. e.Error(500, err, err.Error())
  39. return
  40. }
  41. p := permission.GetPermissionFromContext(c)
  42. if req.OrgId != 0 {
  43. // 传入orgId ,就查询该组织及以下的数据
  44. p.DataScope = permission.DataPermissionSelfOrgChildren
  45. p.OrgId = req.OrgId
  46. }
  47. list := make([]models.IotDevice, 0)
  48. var count int64
  49. err = s.GetPage(&req, p, &list, &count)
  50. if err != nil {
  51. e.Error(500, err, fmt.Sprintf("获取设备失败,\r\n失败信息 %s", err.Error()))
  52. return
  53. }
  54. e.PageOK(list, int(count), req.GetPageIndex(), req.GetPageSize(), "查询成功")
  55. }
  56. // Get 获取设备
  57. // @Summary 获取设备
  58. // @Description 获取设备
  59. // @Tags 设备管理
  60. // @Param id path int false "id"
  61. // @Success 200 {object} response.Response{data=models.IotDevice} "{"code": 200, "data": [...]}"
  62. // @Router /api/iot-device/{id} [get]
  63. // @Security Bearer
  64. func (e IotDeviceApi) Get(c *gin.Context) {
  65. req := dto.IotDeviceGetReq{}
  66. s := service.IotDeviceService{}
  67. err := e.MakeContext(c).
  68. MakeOrm().
  69. Bind(&req).
  70. MakeService(&s.Service).
  71. Errors
  72. if err != nil {
  73. e.Logger.Error(err)
  74. e.Error(500, err, err.Error())
  75. return
  76. }
  77. var object models.IotDevice
  78. p := permission.GetPermissionFromContext(c)
  79. err = s.Get(&req, p, &object)
  80. if err != nil {
  81. e.Error(500, err, fmt.Sprintf("获取设备失败,\r\n失败信息 %s", err.Error()))
  82. return
  83. }
  84. e.OK(object, "查询成功")
  85. }
  86. // Insert 添加设备
  87. // @Summary 添加设备
  88. // @Description 添加设备
  89. // @Tags 设备管理
  90. // @Accept application/json
  91. // @Product application/json
  92. // @Param data body dto.IotDeviceInsertReq true "data"
  93. // @Success 200 {object} response.Response "{"code": 200, "message": "添加成功"}"
  94. // @Router /api/iot-device [post]
  95. // @Security Bearer
  96. func (e IotDeviceApi) Insert(c *gin.Context) {
  97. req := dto.IotDeviceInsertReq{}
  98. s := service.IotDeviceService{}
  99. err := e.MakeContext(c).
  100. MakeOrm().
  101. Bind(&req).
  102. MakeService(&s.Service).
  103. Errors
  104. if err != nil {
  105. e.Logger.Error(err)
  106. e.Error(500, err, err.Error())
  107. return
  108. }
  109. // 设置创建人
  110. req.SetCreateBy(user.GetUserId(c))
  111. p := permission.GetPermissionFromContext(c)
  112. err = s.Insert(&req, p)
  113. if err != nil {
  114. e.Error(500, err, fmt.Sprintf("添加设备失败,\r\n失败信息 %s", err.Error()))
  115. return
  116. }
  117. e.OK(req.GetId(), "添加成功")
  118. }
  119. // Update 修改设备
  120. // @Summary 修改设备
  121. // @Description 修改设备
  122. // @Tags 设备管理
  123. // @Accept application/json
  124. // @Product application/json
  125. // @Param id path int true "id"
  126. // @Param data body dto.IotDeviceUpdateReq true "body"
  127. // @Success 200 {object} response.Response "{"code": 200, "message": "修改成功"}"
  128. // @Router /api/iot-device/{id} [put]
  129. // @Security Bearer
  130. func (e IotDeviceApi) Update(c *gin.Context) {
  131. req := dto.IotDeviceUpdateReq{}
  132. s := service.IotDeviceService{}
  133. err := e.MakeContext(c).
  134. MakeOrm().
  135. Bind(&req).
  136. MakeService(&s.Service).
  137. Errors
  138. if err != nil {
  139. e.Logger.Error(err)
  140. e.Error(500, err, err.Error())
  141. return
  142. }
  143. req.SetUpdateBy(user.GetUserId(c))
  144. p := permission.GetPermissionFromContext(c)
  145. err = s.Update(&req, p)
  146. if err != nil {
  147. e.Error(500, err, fmt.Sprintf("修改设备失败,\r\n失败信息 %s", err.Error()))
  148. return
  149. }
  150. e.OK(req.GetId(), "修改成功")
  151. }
  152. // Delete 删除设备
  153. // @Summary 删除设备
  154. // @Description 删除设备
  155. // @Tags 设备管理
  156. // @Param data body dto.IotDeviceDeleteReq true "body"
  157. // @Success 200 {object} response.Response "{"code": 200, "message": "删除成功"}"
  158. // @Router /api/iot-device [delete]
  159. // @Security Bearer
  160. func (e IotDeviceApi) Delete(c *gin.Context) {
  161. s := service.IotDeviceService{}
  162. req := dto.IotDeviceDeleteReq{}
  163. err := e.MakeContext(c).
  164. MakeOrm().
  165. Bind(&req).
  166. MakeService(&s.Service).
  167. Errors
  168. if err != nil {
  169. e.Logger.Error(err)
  170. e.Error(500, err, err.Error())
  171. return
  172. }
  173. // req.SetUpdateBy(user.GetUserId(c))
  174. p := permission.GetPermissionFromContext(c)
  175. err = s.Remove(&req, p)
  176. if err != nil {
  177. e.Error(500, err, fmt.Sprintf("删除设备失败,\r\n失败信息 %s", err.Error()))
  178. return
  179. }
  180. e.OK(req.GetId(), "删除成功")
  181. }
  182. // Refresh 刷新设备列表
  183. // @Summary 刷新设备列表
  184. // @Description 刷新设备列表
  185. // @Tags 设备管理
  186. // @Param data body dto.IotDeviceDeleteReq true "body"
  187. // @Success 200 {object} response.Response "{"code": 200, "message": "刷新成功"}"
  188. // @Router /api/iot-device/refresh [post]
  189. // @Security Bearer
  190. func (e IotDeviceApi) Refresh(c *gin.Context) {
  191. s := service.IotDeviceService{}
  192. err := e.MakeContext(c).MakeOrm().MakeService(&s.Service).Errors
  193. if err != nil {
  194. e.Logger.Error(err)
  195. e.Error(500, err, err.Error())
  196. return
  197. }
  198. err = s.Refresh()
  199. if err != nil {
  200. return
  201. }
  202. e.OK("", "刷新成功")
  203. }
  204. // GetDeviceProtocols 获取表计协议列表
  205. // @Summary 获取表计协议列表
  206. // @Description 获取表计协议列表
  207. // @Tags 设备管理
  208. // @Success 200 {object} response.Response{data=models.IotDevice} "{"code": 200, "data": [...]}"
  209. // @Router /api/iot-device/device-protocol [get]
  210. // @Security Bearer
  211. func (e IotDeviceApi) GetDeviceProtocols(c *gin.Context) {
  212. s := &service.IotDeviceService{}
  213. err := e.MakeContext(c).MakeOrm().MakeService(&s.Service).Errors
  214. if err != nil {
  215. e.Logger.Error(err)
  216. e.Error(500, err, err.Error())
  217. return
  218. }
  219. list := make([]string, 0)
  220. s.GetDeviceProtocols(&list)
  221. e.OK(list, "查询成功")
  222. }
  223. // GetReportProtocols 获取上报协议列表
  224. // @Summary 获取上报协议列表
  225. // @Description 获取上报协议列表
  226. // @Tags 设备管理
  227. // @Success 200 {object} response.Response{data=models.IotDevice} "{"code": 200, "data": [...]}"
  228. // @Router /api/iot-device/report-protocol [get]
  229. // @Security Bearer
  230. func (e IotDeviceApi) GetReportProtocols(c *gin.Context) {
  231. s := &service.IotDeviceService{}
  232. err := e.MakeContext(c).MakeOrm().MakeService(&s.Service).Errors
  233. if err != nil {
  234. e.Logger.Error(err)
  235. e.Error(500, err, err.Error())
  236. return
  237. }
  238. list := make([]string, 0)
  239. s.GetReportProtocols(&list)
  240. e.OK(list, "查询成功")
  241. }
  242. // GetDeviceConfig 获取表计硬件配置
  243. // @Summary 获取表计硬件配置
  244. // @Description 获取表计硬件配置
  245. // @Tags 设备管理
  246. // @Success 200 {object} response.Response{data=models.IotDevice} "{"code": 200, "data": [...]}"
  247. // @Router /api/iot-device/config/{id} [get]
  248. // @Security Bearer
  249. func (e IotDeviceApi) GetDeviceConfig(c *gin.Context) {
  250. s := &service.IotDeviceService{}
  251. req := dto.IotDeviceGetReq{}
  252. err := e.MakeContext(c).MakeOrm().Bind(&req).MakeService(&s.Service).Errors
  253. if err != nil {
  254. e.Logger.Error(err)
  255. e.Error(500, err, err.Error())
  256. return
  257. }
  258. data := make(map[string]interface{})
  259. p := permission.GetPermissionFromContext(c)
  260. err = s.GetDeviceConfig(&req, p, &data)
  261. if err != nil {
  262. e.Error(500, err, err.Error())
  263. return
  264. }
  265. e.OK(data, "查询成功")
  266. }
  267. // SetDeviceConfig 设置表计硬件配置
  268. // @Summary 设置表计硬件配置
  269. // @Description 设置表计硬件配置
  270. // @Tags 设备管理
  271. // @Success 200 {object} response.Response{data=models.IotDevice} "{"code": 200, "message": "设置成功"}"
  272. // @Router /api/iot-device/config [put]
  273. // @Security Bearer
  274. func (e IotDeviceApi) SetDeviceConfig(c *gin.Context) {
  275. s := &service.IotDeviceService{}
  276. req := dto.IotDeviceSetConfigReq{}
  277. err := e.MakeContext(c).MakeOrm().Bind(&req).MakeService(&s.Service).Errors
  278. if err != nil {
  279. e.Logger.Error(err)
  280. e.Error(500, err, err.Error())
  281. return
  282. }
  283. p := permission.GetPermissionFromContext(c)
  284. err = s.SetDeviceConfig(&req, p)
  285. if err != nil {
  286. e.Error(500, err, err.Error())
  287. return
  288. }
  289. e.OK(nil, "设置成功")
  290. }
  291. // GetDeviceLastData 查询表计最新数据
  292. // @Summary 查询表计最新数据
  293. // @Description 查询表计最新数据
  294. // @Tags 设备管理
  295. // @Success 200 {object} response.Response{data=models.IotDevice} "{"code": 200, "data": [...]}"
  296. // @Router /api/iot-device/data/{id} [get]
  297. // @Security Bearer
  298. func (e IotDeviceApi) GetDeviceLastData(c *gin.Context) {
  299. s := &service.IotDeviceService{}
  300. req := dto.IotDeviceGetReq{}
  301. err := e.MakeContext(c).MakeOrm().Bind(&req).MakeService(&s.Service).Errors
  302. if err != nil {
  303. e.Logger.Error(err)
  304. e.Error(500, err, err.Error())
  305. return
  306. }
  307. data := make(map[string]interface{})
  308. p := permission.GetPermissionFromContext(c)
  309. err = s.GetDeviceLastData(&req, p, &data)
  310. if err != nil {
  311. e.Error(500, err, err.Error())
  312. return
  313. }
  314. e.OK(data, "查询成功")
  315. }