InitController.py 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. # @Author : Rocky
  2. # @File : InitController.py
  3. # @Time : 2023/4/11 17:26
  4. import logging
  5. from django.contrib.auth.hashers import check_password
  6. from django.db import transaction
  7. from django.http import HttpResponse
  8. from django.views import View
  9. from Model.models import Device_User, Device_Info, Order_Model, UidPushModel, UserExModel, UserOauth2Model, \
  10. UidUserModel, GrantCodeModel, UserAppFrequencyModel, \
  11. AppLogModel, UserFamily, FamilyMember, FamilyMemberJoin, SmartScene, DeviceSuperPassword, SceneLog
  12. from Object.RedisObject import RedisObject
  13. from Object.ResponseObject import ResponseObject
  14. from Service.CommonService import CommonService
  15. class InitView(View):
  16. def get(self, request, *args, **kwargs):
  17. request.encoding = 'utf-8'
  18. operation = kwargs.get('operation')
  19. return self.validation(request.GET, operation)
  20. def post(self, request, *args, **kwargs):
  21. request.encoding = 'utf-8'
  22. operation = kwargs.get('operation')
  23. return self.validation(request.POST, operation)
  24. def validation(self, request_dict, operation):
  25. if operation == 'health-check': # 负载均衡器健康检测接口
  26. return self.health_check(request_dict)
  27. elif operation == 'health-check-server': # 负载均衡器健康检测接口-server
  28. return self.health_check_server(request_dict)
  29. elif operation == 'health-check-push': # 负载均衡器健康检测接口-push
  30. return self.health_check_push(request_dict)
  31. elif operation == 'delete-account': # 网页删除账号
  32. return self.delete_account(request_dict)
  33. @staticmethod
  34. def health_check(request_dict):
  35. try:
  36. redis_obj = RedisObject()
  37. redis_obj.set_data('health_check', 1)
  38. response = ResponseObject()
  39. Device_Info.objects.filter().values('id').first()
  40. SceneLog.objects.filter().values('id').first()
  41. return response.json(0)
  42. except Exception as e:
  43. return HttpResponse(repr(e), status=500)
  44. @staticmethod
  45. def health_check_server(request_dict):
  46. try:
  47. redis_obj = RedisObject()
  48. redis_obj.set_data('health_check', 1)
  49. response = ResponseObject()
  50. Device_Info.objects.filter().values('id').first()
  51. return response.json(0)
  52. except Exception as e:
  53. return HttpResponse(repr(e), status=500)
  54. @staticmethod
  55. def health_check_push(request_dict):
  56. try:
  57. redis_obj = RedisObject()
  58. redis_obj.set_data('health_check', 1)
  59. response = ResponseObject()
  60. SceneLog.objects.filter().values('id').first()
  61. return response.json(0)
  62. except Exception as e:
  63. return HttpResponse(repr(e), status=500)
  64. @staticmethod
  65. def delete_account(request_dict):
  66. """
  67. 网页删除账号
  68. @param request_dict:输入
  69. @request_dict username:用户名
  70. @request_dict password:用户密码
  71. @return 输出
  72. """
  73. LOGGER = logging.getLogger('info')
  74. username = request_dict.get('username', None)
  75. password = request_dict.get('password', None)
  76. password_version = request_dict.get('pwdVersion', 'V1')
  77. response = ResponseObject()
  78. device_user_qs = Device_User.objects.filter(username=username).values('password', 'userID')
  79. if not device_user_qs.exists():
  80. return response.json(104)
  81. cipher_password, user_id = device_user_qs[0]['password'], device_user_qs[0]['userID']
  82. if password_version == 'V1':
  83. check_flag = check_password(password, cipher_password)
  84. else:
  85. check_flag = CommonService.check_password(password, cipher_password)
  86. if not check_flag:
  87. return response.json(111)
  88. try:
  89. with transaction.atomic():
  90. # 解绑用户与设备
  91. uid_push_qs = UidPushModel.objects.filter(userID=user_id)
  92. if uid_push_qs.exists():
  93. uid_push_qs.delete()
  94. # 删除用户扩展信息
  95. user_ex_qs = UserExModel.objects.filter(userID=user_id)
  96. if user_ex_qs.exists():
  97. user_ex_qs.delete()
  98. # 用户oauth2信息
  99. user_oauth2_qs = UserOauth2Model.objects.filter(userID=user_id)
  100. if user_oauth2_qs.exists():
  101. user_oauth2_qs.delete()
  102. # 删除用户设备ap
  103. uid_user_qs = UidUserModel.objects.filter(userID=user_id)
  104. if uid_user_qs.exists():
  105. uid_user_qs.delete()
  106. # 删除用户授权码
  107. grant_code_qs = GrantCodeModel.objects.filter(userID=user_id)
  108. if grant_code_qs.exists():
  109. grant_code_qs.delete()
  110. # 删除用户使用APP频率
  111. user_app_Frequency_qs = UserAppFrequencyModel.objects.filter(user_id=user_id)
  112. if user_app_Frequency_qs.exists():
  113. user_app_Frequency_qs.delete()
  114. # 删除APP(设备)日志表
  115. app_log_qs = AppLogModel.objects.filter(user_id=user_id)
  116. if app_log_qs.exists():
  117. app_log_qs.delete()
  118. # 删除家庭成员
  119. family_qs = FamilyMember.objects.filter(user_id=user_id)
  120. if family_qs.exists():
  121. family_qs.delete()
  122. # 删除家庭成员加入
  123. family_join_qs = FamilyMemberJoin.objects.filter(user_id=user_id)
  124. if family_join_qs.exists():
  125. family_join_qs.delete()
  126. # 删除用户家庭
  127. user_family_qs = UserFamily.objects.filter(user_id=user_id)
  128. if user_family_qs.exists():
  129. user_family_qs.delete()
  130. # 删除智能场景
  131. smart_scene_qs = SmartScene.objects.filter(user_id=user_id)
  132. if smart_scene_qs.exists():
  133. smart_scene_qs.delete()
  134. # 删除超级密码请求信息
  135. device_super_qs = DeviceSuperPassword.objects.filter(userID=user_id)
  136. if device_super_qs.exists():
  137. device_super_qs.delete()
  138. # 删除设备信息
  139. device_info_qs = Device_Info.objects.filter(userID=user_id)
  140. if device_info_qs.exists():
  141. device_info_qs.delete()
  142. # 删除用户订单信息
  143. order_uid_qs = Order_Model.objects.filter(userID=user_id)
  144. if order_uid_qs.exists():
  145. order_uid_qs.delete()
  146. Device_User.objects.filter(userID=user_id).delete()
  147. LOGGER.info('{}已注销'.format(username))
  148. return response.json(0)
  149. except Exception as e:
  150. print(e)
  151. return response.json(500)