ModelService.py 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  1. import logging
  2. import requests
  3. from Model.models import *
  4. from Service.CommonService import CommonService
  5. import json
  6. from django.db.models import Q
  7. # 针对模型封装的复用性代码
  8. class ModelService:
  9. # 获取当前用户角色名
  10. @staticmethod
  11. def getRole(rid):
  12. return Role.objects.get(rid=rid).roleName
  13. # 获取用户所有权限
  14. @staticmethod
  15. def own_permission(userID):
  16. permission = Device_User.objects.get(userID=userID).role.values_list('permission', flat=True)
  17. if permission:
  18. return list(permission)
  19. return []
  20. # 获取用户角色相关
  21. @staticmethod
  22. def own_role(userID):
  23. try:
  24. role_qs = Device_User.objects.get(userID=userID).role.values('rid', 'roleName')
  25. if role_qs.exists():
  26. return {'rid': role_qs[0]['rid'], 'roleName': role_qs[0]['roleName']}
  27. except Exception as e:
  28. pass
  29. return {'rid': '', 'roleName': ''}
  30. # 检测权限有无
  31. @staticmethod
  32. def check_perm(userID, permID):
  33. try:
  34. perm_list = Device_User.objects.get(userID=userID).role.values_list('permission', flat=True)
  35. if perm_list:
  36. if permID in perm_list:
  37. return True
  38. except Exception as e:
  39. return False
  40. return False
  41. # 根据设备主键ID判断是否拥有该设备
  42. @staticmethod
  43. def check_user_own_device(userID, deviceID):
  44. try:
  45. dvqs = Device_Info.objects.filter(userID_id=userID).values_list('id', flat=True)
  46. if dvqs:
  47. if deviceID in dvqs:
  48. return True
  49. except Exception as e:
  50. return False
  51. return False
  52. # 根据设设备唯一名称UID判断是否拥有该设备
  53. @staticmethod
  54. def check_own_device(userID, UID):
  55. dvqs = Device_Info.objects.filter(userID_id=userID, UID=UID)
  56. if dvqs.exists():
  57. return True
  58. return False
  59. # 根据userID获取用户名
  60. @staticmethod
  61. def get_user_name(userID):
  62. try:
  63. if userID:
  64. device_user = Device_User.objects.get(userID=userID)
  65. return device_user.username
  66. else:
  67. return ''
  68. except Exception as e:
  69. return ''
  70. @staticmethod
  71. def get_user_mark(userID):
  72. if userID:
  73. qs = Device_User.objects.filter(userID=userID).values('username', 'userEmail', 'phone')
  74. if qs[0]['username']:
  75. return qs[0]['username']
  76. elif qs[0]['userEmail']:
  77. return qs[0]['userEmail']
  78. elif qs[0]['phone']:
  79. return qs[0]['phone']
  80. else:
  81. return ''
  82. else:
  83. return ''
  84. # 根据username获取userID
  85. @staticmethod
  86. def get_userID_byname(username):
  87. try:
  88. device_user = Device_User.objects.get(Q(username=username) | Q(userEmail=username) | Q(phone=username))
  89. except Exception as e:
  90. return None
  91. else:
  92. return device_user.userID
  93. # 访问日志添加
  94. @staticmethod
  95. def addAccessLog(data):
  96. try:
  97. access_log = Access_Log.objects.create(**data)
  98. except Exception as e:
  99. return False
  100. else:
  101. return True
  102. # 访问日志批量添加
  103. @staticmethod
  104. def add_batch_log(data_list):
  105. try:
  106. if data_list:
  107. querysetlist = []
  108. for i in data_list:
  109. data = json.loads(i.decode('utf-8'))
  110. querysetlist.append(Access_Log(**data))
  111. Access_Log.objects.bulk_create(querysetlist)
  112. else:
  113. return
  114. except Exception as e:
  115. print('ggga')
  116. print(repr(e))
  117. return False
  118. else:
  119. return True
  120. # 通过用户名获取userIDLIST
  121. @staticmethod
  122. def get_user_list_by_username(username):
  123. userID_list = Device_User.objects.filter(Q(username=username) | Q(userEmail=username) | Q(phone=username)). \
  124. values_list('userID', flat=True)
  125. return userID_list
  126. @staticmethod
  127. def del_eq_info(userID, uid):
  128. notify_alexa_delete(userID, uid)
  129. ei_qs = Equipment_Info.objects.filter(userID_id=userID, devUid=uid)
  130. ei_qs.delete()
  131. # ei_count = ei_qs.count()
  132. # while (ei_count > 1000):
  133. # ei_qs[0:1000].delete()
  134. # 根据设备主键ID判断是否拥有该设备
  135. # 获取绑定用户设备列表
  136. @staticmethod
  137. def get_uid_list(userID):
  138. uid_list = Device_Info.objects.filter(userID_id=userID).values_list('UID', flat=True)
  139. return list(uid_list)
  140. @staticmethod
  141. def notify_alexa_add(uid, userID, nickname):
  142. url = 'https://www.zositech.xyz/deviceStatus/addOrUpdate'
  143. data = {
  144. 'UID': uid,
  145. 'userID': userID,
  146. 'uid_nick': nickname
  147. }
  148. try:
  149. res = requests.post(url, data=data, timeout=10)
  150. except Exception as e:
  151. print(repr(e))
  152. def notify_alexa_delete(userID, UID):
  153. url = 'https://www.zositech.xyz/deviceStatus/delete'
  154. data = {
  155. 'userID': userID,
  156. 'UID': UID
  157. }
  158. try:
  159. requests.post(url=url, data=data, timeout=5)
  160. except Exception as e:
  161. print(repr(e))