EquipmentSensor.py 9.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217
  1. from django.views.generic.base import View
  2. from django.utils.decorators import method_decorator
  3. from django.views.decorators.csrf import csrf_exempt
  4. from Service.ModelService import ModelService
  5. from Service.CommonService import CommonService
  6. from Model.models import Device_Info, Equipment_Sensor
  7. import traceback
  8. from Object.TokenObject import TokenObject
  9. from Object.ResponseObject import ResponseObject
  10. '''
  11. 增加,关联设备传感器:
  12. params:{
  13. did:设备主键did
  14. name:传感器名称
  15. status:设备状态值
  16. type:设备类型
  17. token:令牌
  18. operation:add
  19. }
  20. http://192.168.136.40:8077/equipment/sensor?token=test&name=1&status=1&did=138001380001515727362917767&type=1&operation=add
  21. 删除设备关联的传感器:
  22. params:{
  23. id:传感器主键id
  24. token:令牌
  25. operation:delete
  26. did:设备主键did
  27. }
  28. http://192.168.136.40:8077/equipment/sensor?token=test&id=2&id=3&operation=delete&did=did
  29. 改,状态名称:
  30. params:{
  31. id:传感器主键id
  32. token:令牌
  33. status:状态值
  34. operation:update
  35. name:name
  36. did:设备主键did
  37. }
  38. http://192.168.136.40:8077/equipment/sensor?token=test&id=19&did=138001380001515727362917767&status=1&name=555&operation=update
  39. 查找当前指定用户所有传感器
  40. params:{
  41. token:令牌
  42. operation:query
  43. did:设备主键did
  44. }
  45. http://192.168.136.40:8077/equipment/sensor?token=test&operation=query&did=138001380001515727362917767
  46. 后台
  47. 查找所有传感器信息
  48. http://192.168.136.40:8077/equipment/sensor?token=test&page=1&line=5&operation=queryall
  49. '''
  50. class EquipmentSensor(View):
  51. @method_decorator(csrf_exempt)
  52. def dispatch(self, *args, **kwargs):
  53. return super(EquipmentSensor, self).dispatch(*args, **kwargs)
  54. def get(self, request, *args, **kwargs):
  55. request.encoding = 'utf-8'
  56. return self.validation(request_dict=request.GET)
  57. def post(self, request, *args, **kwargs):
  58. request.encoding = 'utf-8'
  59. return self.validation(request_dict=request.POST)
  60. def validation(self, request_dict, *args, **kwargs):
  61. response = ResponseObject()
  62. token = request_dict.get('token', None)
  63. if token is not None:
  64. tko = TokenObject(token)
  65. response.lang = tko.lang
  66. if tko.code == 0:
  67. userID = tko.userID
  68. if userID is not None:
  69. operation = request_dict.get('operation', None)
  70. if operation == 'add':
  71. return self.add_sensor(request_dict, userID,response)
  72. elif operation == 'delete':
  73. return self.delete_sensor(request_dict, userID,response)
  74. elif operation == 'update':
  75. return self.update_sensor(request_dict, userID,response)
  76. elif operation == 'query':
  77. return self.query_sensor(request_dict, userID,response)
  78. elif operation == 'queryall':
  79. return self.admin_query_all_sensor(request_dict, userID,response)
  80. else:
  81. return response.json(309)
  82. else:
  83. return response.json(tko.code)
  84. else:
  85. return response.json(309)
  86. def add_sensor(self, request_dict,userID,response):
  87. # 设备PK
  88. did = request_dict.get('did', None)
  89. name = request_dict.get('name', None)
  90. status = request_dict.get('status', None)
  91. type = request_dict.get('type', None)
  92. if did is not None and name is not None and status is not None and type is not None:
  93. is_user = ModelService.check_user_own_device(userID=userID,deviceID=did)
  94. if is_user is True:
  95. try:
  96. device_info = Device_Info.objects.get(id=did)
  97. except Exception as e:
  98. errorInfo = traceback.format_exc()
  99. print('database error: %s' % errorInfo)
  100. return response.json(424)
  101. else:
  102. if device_info:
  103. equipment_sensor = Equipment_Sensor(name=name, status=status, type=type, uid=device_info.UID)
  104. equipment_sensor.save()
  105. if equipment_sensor.id:
  106. return response.json(0,
  107. {'id': equipment_sensor.id,
  108. 'status': equipment_sensor.status,
  109. 'name': equipment_sensor.name,
  110. 'type': equipment_sensor.type})
  111. else:
  112. return response.json(178)
  113. else:
  114. return response.json(14)
  115. return response.json(444)
  116. def delete_sensor(self, request_dict,userID,response):
  117. # deletelist
  118. did = request_dict.get('did',None)
  119. id_list = request_dict.getlist('id', None)
  120. if len(id_list)>0 and id_list is not None and did is not None:
  121. is_user = ModelService.check_user_own_device(userID=userID, deviceID=did)
  122. is_superadmin = ModelService.check_perm(userID=userID, permID=10)
  123. if is_user is True or is_superadmin is True:
  124. try:
  125. device_info = Device_Info.objects.get(id=did)
  126. except Exception as e:
  127. errorInfo = traceback.format_exc()
  128. print('database error: %s' % errorInfo)
  129. return response.json(424)
  130. else:
  131. if device_info:
  132. for id in id_list:
  133. Equipment_Sensor.objects.filter(id=id, uid=device_info.UID).delete()
  134. return response.json(0)
  135. else:
  136. return response.json(14)
  137. return response.json(444)
  138. def update_sensor(self,request_dict,userID,response):
  139. id = request_dict.get('id', None)
  140. did = request_dict.get('did',None)
  141. status = request_dict.get('status', None)
  142. name = request_dict.get('name', None)
  143. if id is not None and status is not None:
  144. is_user = ModelService.check_user_own_device(userID=userID, deviceID=did)
  145. is_superadmin = ModelService.check_perm(userID=userID, permID=50)
  146. if is_user is True or is_superadmin is True:
  147. try:
  148. device_info = Device_Info.objects.get(id=did)
  149. except Exception as e:
  150. errorInfo = traceback.format_exc()
  151. print('database error: %s' % errorInfo)
  152. return response.json(424)
  153. else:
  154. is_update = Equipment_Sensor.objects.filter(id=id, uid=device_info.UID).update(status=status,
  155. name=name)
  156. if is_update:
  157. return response.json(0, {'id': id, 'status': status,
  158. 'name': name})
  159. return response.json(178)
  160. else:
  161. return response.json(14)
  162. else:
  163. return response.json(444)
  164. def query_sensor(self,request_dict,userID,response):
  165. did = request_dict.get('did', None)
  166. if did is not None:
  167. is_user = ModelService.check_user_own_device(userID=userID, deviceID=did)
  168. is_superadmin = ModelService.check_perm(userID=userID,permID=30)
  169. if is_user is True or is_superadmin is True:
  170. try:
  171. device_info = Device_Info.objects.get(id=did)
  172. except Exception as e:
  173. errorInfo = traceback.format_exc()
  174. print('database error: %s' % errorInfo)
  175. return response.json(424)
  176. else:
  177. equipment_sensor_queryset = Equipment_Sensor.objects.filter(uid=device_info.UID)
  178. if equipment_sensor_queryset.exists():
  179. send_json = CommonService.qs_to_dict(equipment_sensor_queryset)
  180. return response.json(0, send_json)
  181. else:
  182. return response.json(0, {})
  183. return response.json(14)
  184. else:
  185. return response.json(444)
  186. def admin_query_all_sensor(self,request_dict,userID,response):
  187. page = int(request_dict.get('page', None))
  188. line = int(request_dict.get('line', None))
  189. if userID is not None:
  190. is_own = ModelService.check_perm(userID=userID, permID=30)
  191. if is_own is True:
  192. equipment_sensor_queryset = Equipment_Sensor.objects.all()
  193. if equipment_sensor_queryset.exists():
  194. equipment_stream_count = equipment_sensor_queryset.count()
  195. equipment_stream_res = equipment_sensor_queryset[(page - 1) * line:page * line]
  196. send_json = CommonService.qs_to_dict(equipment_stream_res)
  197. send_json['count'] = equipment_stream_count
  198. return response.json(0, send_json)
  199. else:
  200. return response.json(0, {})
  201. return response.json(404)
  202. else:
  203. return response.json(444)