ModelService.py 5.3 KB

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