deviceBindingController.js 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. exports.DeviceBindingController = void 0;
  4. const deviceBinding_1 = require("../models/deviceBinding");
  5. const device_1 = require("../models/device");
  6. const helpers_1 = require("../utils/helpers");
  7. class DeviceBindingController {
  8. static async getAllBindings(req, res) {
  9. try {
  10. const bindings = await deviceBinding_1.DeviceBindingModel.getAll();
  11. res.json({
  12. success: true,
  13. data: bindings,
  14. message: '获取设备绑定关系成功'
  15. });
  16. }
  17. catch (error) {
  18. console.error('获取设备绑定关系失败:', error);
  19. res.status(500).json({
  20. success: false,
  21. message: '获取设备绑定关系失败',
  22. error: error.message
  23. });
  24. }
  25. }
  26. static async getDevicesByRoom(req, res) {
  27. try {
  28. const { roomId } = req.params;
  29. const roomIdStr = (0, helpers_1.toString)(roomId);
  30. if (!roomIdStr || isNaN(parseInt(roomIdStr))) {
  31. res.status(400).json({
  32. success: false,
  33. message: '房间ID无效'
  34. });
  35. return;
  36. }
  37. const devices = await deviceBinding_1.DeviceBindingModel.getByRoomId(parseInt(roomIdStr));
  38. res.json({
  39. success: true,
  40. data: devices,
  41. message: '获取房间设备成功'
  42. });
  43. }
  44. catch (error) {
  45. console.error('获取房间设备失败:', error);
  46. res.status(500).json({
  47. success: false,
  48. message: '获取房间设备失败',
  49. error: error.message
  50. });
  51. }
  52. }
  53. static async getAvailableDevices(req, res) {
  54. try {
  55. const devices = await deviceBinding_1.DeviceBindingModel.getAvailableDevices();
  56. res.json({
  57. success: true,
  58. data: devices,
  59. message: '获取可绑定设备成功'
  60. });
  61. }
  62. catch (error) {
  63. console.error('获取可绑定设备失败:', error);
  64. res.status(500).json({
  65. success: false,
  66. message: '获取可绑定设备失败',
  67. error: error.message
  68. });
  69. }
  70. }
  71. static async getAllDevicesWithBindingStatus(req, res) {
  72. try {
  73. const page = parseInt((0, helpers_1.toString)(req.query.page)) || 1;
  74. const pageSize = parseInt((0, helpers_1.toString)(req.query.pageSize)) || 10;
  75. const status = (0, helpers_1.toString)(req.query.status);
  76. const room_id = req.query.room_id ? parseInt((0, helpers_1.toString)(req.query.room_id)) : undefined;
  77. const search = (0, helpers_1.toString)(req.query.search);
  78. const filters = {
  79. ...(status && { status }),
  80. ...(room_id && { room_id }),
  81. ...(search && { search })
  82. };
  83. const { devices, total } = await deviceBinding_1.DeviceBindingModel.getAllDevicesWithBindingStatus(page, pageSize, filters);
  84. res.json({
  85. success: true,
  86. data: {
  87. devices,
  88. pagination: {
  89. current: page,
  90. pageSize,
  91. total
  92. }
  93. },
  94. message: '获取设备绑定状态成功'
  95. });
  96. }
  97. catch (error) {
  98. console.error('获取设备绑定状态失败:', error);
  99. res.status(500).json({
  100. success: false,
  101. message: '获取设备绑定状态失败',
  102. error: error.message
  103. });
  104. }
  105. }
  106. static async bindDevice(req, res) {
  107. try {
  108. const { device_clientid, room_id, device_name, device_type, properties } = req.body;
  109. if (!device_clientid || !room_id) {
  110. res.status(400).json({
  111. success: false,
  112. message: '设备客户端ID和房间ID为必填项'
  113. });
  114. return;
  115. }
  116. const device = await device_1.DeviceModel.getByClientId(device_clientid);
  117. if (!device) {
  118. res.status(404).json({
  119. success: false,
  120. message: '设备不存在'
  121. });
  122. return;
  123. }
  124. const binding = await deviceBinding_1.DeviceBindingModel.bindDevice(device_clientid, room_id);
  125. res.status(201).json({
  126. success: true,
  127. data: binding,
  128. message: '设备绑定成功'
  129. });
  130. }
  131. catch (error) {
  132. console.error('设备绑定失败:', error);
  133. res.status(500).json({
  134. success: false,
  135. message: '设备绑定失败',
  136. error: error.message
  137. });
  138. }
  139. }
  140. static async unbindDevice(req, res) {
  141. try {
  142. const { deviceClientId } = req.params;
  143. const deviceClientIdStr = (0, helpers_1.toString)(deviceClientId);
  144. if (!deviceClientIdStr) {
  145. res.status(400).json({
  146. success: false,
  147. message: '设备客户端ID为必填项'
  148. });
  149. return;
  150. }
  151. const success = await deviceBinding_1.DeviceBindingModel.unbindDevice(deviceClientIdStr);
  152. if (!success) {
  153. res.status(404).json({
  154. success: false,
  155. message: '设备绑定关系不存在'
  156. });
  157. return;
  158. }
  159. res.json({
  160. success: true,
  161. message: '设备解绑成功'
  162. });
  163. }
  164. catch (error) {
  165. console.error('设备解绑失败:', error);
  166. res.status(500).json({
  167. success: false,
  168. message: '设备解绑失败',
  169. error: error.message
  170. });
  171. }
  172. }
  173. static async updateBinding(req, res) {
  174. try {
  175. const { id } = req.params;
  176. const { room_id, device_name, device_type, properties } = req.body;
  177. const idStr = (0, helpers_1.toString)(id);
  178. if (!idStr || isNaN(parseInt(idStr))) {
  179. res.status(400).json({
  180. success: false,
  181. message: '绑定ID无效'
  182. });
  183. return;
  184. }
  185. const binding = await deviceBinding_1.DeviceBindingModel.updateBinding(parseInt(idStr), {
  186. room_id,
  187. device_name,
  188. device_type,
  189. properties
  190. });
  191. res.json({
  192. success: true,
  193. data: binding,
  194. message: '设备绑定更新成功'
  195. });
  196. }
  197. catch (error) {
  198. console.error('更新设备绑定失败:', error);
  199. res.status(500).json({
  200. success: false,
  201. message: '更新设备绑定失败',
  202. error: error.message
  203. });
  204. }
  205. }
  206. static async getRoomDevicesWithDetails(req, res) {
  207. try {
  208. const { roomId } = req.params;
  209. const roomIdStr = (0, helpers_1.toString)(roomId);
  210. if (!roomIdStr || isNaN(parseInt(roomIdStr))) {
  211. res.status(400).json({
  212. success: false,
  213. message: '房间ID无效'
  214. });
  215. return;
  216. }
  217. const devices = await deviceBinding_1.DeviceBindingModel.getRoomDevicesWithDetails(parseInt(roomIdStr));
  218. res.json({
  219. success: true,
  220. data: devices,
  221. message: '获取房间设备详情成功'
  222. });
  223. }
  224. catch (error) {
  225. console.error('获取房间设备详情失败:', error);
  226. res.status(500).json({
  227. success: false,
  228. message: '获取房间设备详情失败',
  229. error: error.message
  230. });
  231. }
  232. }
  233. }
  234. exports.DeviceBindingController = DeviceBindingController;
  235. //# sourceMappingURL=deviceBindingController.js.map