EquipmentSensor.py 9.3 KB

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