EquipmentSensor.py 9.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218
  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. tko.valid()
  66. response.lang = tko.lang
  67. if tko.code == 0:
  68. userID = tko.userID
  69. if userID is not None:
  70. operation = request_dict.get('operation', None)
  71. if operation == 'add':
  72. return self.add_sensor(request_dict, userID,response)
  73. elif operation == 'delete':
  74. return self.delete_sensor(request_dict, userID,response)
  75. elif operation == 'update':
  76. return self.update_sensor(request_dict, userID,response)
  77. elif operation == 'query':
  78. return self.query_sensor(request_dict, userID,response)
  79. elif operation == 'queryall':
  80. return self.admin_query_all_sensor(request_dict, userID,response)
  81. else:
  82. return response.json(309)
  83. else:
  84. return response.json(tko.code)
  85. else:
  86. return response.json(309)
  87. def add_sensor(self, request_dict,userID,response):
  88. # 设备PK
  89. did = request_dict.get('did', None)
  90. name = request_dict.get('name', None)
  91. status = request_dict.get('status', None)
  92. type = request_dict.get('type', None)
  93. if did is not None and name is not None and status is not None and type is not None:
  94. is_user = ModelService.check_user_own_device(userID=userID,deviceID=did)
  95. if is_user is True:
  96. try:
  97. device_info = Device_Info.objects.get(id=did)
  98. except Exception as e:
  99. errorInfo = traceback.format_exc()
  100. print('database error: %s' % errorInfo)
  101. return response.json(424)
  102. else:
  103. if device_info:
  104. equipment_sensor = Equipment_Sensor(name=name, status=status, type=type, uid=device_info.UID)
  105. equipment_sensor.save()
  106. if equipment_sensor.id:
  107. return response.json(0,
  108. {'id': equipment_sensor.id,
  109. 'status': equipment_sensor.status,
  110. 'name': equipment_sensor.name,
  111. 'type': equipment_sensor.type})
  112. else:
  113. return response.json(4)
  114. else:
  115. return response.json(14)
  116. return response.json(444)
  117. def delete_sensor(self, request_dict,userID,response):
  118. # deletelist
  119. did = request_dict.get('did',None)
  120. id_list = request_dict.getlist('id', None)
  121. if len(id_list)>0 and id_list is not None and did is not None:
  122. is_user = ModelService.check_user_own_device(userID=userID, deviceID=did)
  123. is_superadmin = ModelService.check_permission(userID=userID, permID=10)
  124. if is_user is True or is_superadmin is True:
  125. try:
  126. device_info = Device_Info.objects.get(id=did)
  127. except Exception as e:
  128. errorInfo = traceback.format_exc()
  129. print('database error: %s' % errorInfo)
  130. return response.json(424)
  131. else:
  132. if device_info:
  133. for id in id_list:
  134. Equipment_Sensor.objects.filter(id=id, uid=device_info.UID).delete()
  135. return response.json(0)
  136. else:
  137. return response.json(14)
  138. return response.json(444)
  139. def update_sensor(self,request_dict,userID,response):
  140. id = request_dict.get('id', None)
  141. did = request_dict.get('did',None)
  142. status = request_dict.get('status', None)
  143. name = request_dict.get('name', None)
  144. if id is not None and status is not None:
  145. is_user = ModelService.check_user_own_device(userID=userID, deviceID=did)
  146. is_superadmin = ModelService.check_permission(userID=userID, permID=50)
  147. if is_user is True or is_superadmin is True:
  148. try:
  149. device_info = Device_Info.objects.get(id=did)
  150. except Exception as e:
  151. errorInfo = traceback.format_exc()
  152. print('database error: %s' % errorInfo)
  153. return response.json(424)
  154. else:
  155. is_update = Equipment_Sensor.objects.filter(id=id, uid=device_info.UID).update(status=status,
  156. name=name)
  157. if is_update:
  158. return response.json(0, {'id': id, 'status': status,
  159. 'name': name})
  160. return response.json(4)
  161. else:
  162. return response.json(14)
  163. else:
  164. return response.json(444)
  165. def query_sensor(self,request_dict,userID,response):
  166. did = request_dict.get('did', None)
  167. if did is not None:
  168. is_user = ModelService.check_user_own_device(userID=userID, deviceID=did)
  169. is_superadmin = ModelService.check_permission(userID=userID,permID=30)
  170. if is_user is True or is_superadmin is True:
  171. try:
  172. device_info = Device_Info.objects.get(id=did)
  173. except Exception as e:
  174. errorInfo = traceback.format_exc()
  175. print('database error: %s' % errorInfo)
  176. return response.json(424)
  177. else:
  178. equipment_sensor_queryset = Equipment_Sensor.objects.filter(uid=device_info.UID)
  179. if equipment_sensor_queryset.exists():
  180. send_json = CommonService.qs_to_dict(equipment_sensor_queryset)
  181. return response.json(0, send_json)
  182. else:
  183. return response.json(0, {})
  184. return response.json(14)
  185. else:
  186. return response.json(444)
  187. def admin_query_all_sensor(self,request_dict,userID,response):
  188. page = int(request_dict.get('page', None))
  189. line = int(request_dict.get('line', None))
  190. if userID is not None:
  191. is_own = ModelService.check_permission(userID=userID, permID=30)
  192. if is_own is True:
  193. equipment_sensor_queryset = Equipment_Sensor.objects.all()
  194. if equipment_sensor_queryset.exists():
  195. equipment_stream_count = equipment_sensor_queryset.count()
  196. equipment_stream_res = equipment_sensor_queryset[(page - 1) * line:page * line]
  197. send_json = CommonService.qs_to_dict(equipment_stream_res)
  198. send_json['count'] = equipment_stream_count
  199. return response.json(0, send_json)
  200. else:
  201. return response.json(0, {})
  202. return response.json(612)
  203. else:
  204. return response.json(444)