浏览代码

重构网页删除账号接口

guanhailong 2 年之前
父节点
当前提交
56f1ea50d5
共有 1 个文件被更改,包括 80 次插入20 次删除
  1. 80 20
      Controller/InitController.py

+ 80 - 20
Controller/InitController.py

@@ -1,11 +1,15 @@
 # @Author    : Rocky
 # @File      : InitController.py
 # @Time      : 2023/4/11 17:26
+import logging
+
 from django.contrib.auth.hashers import check_password
-from django.http import HttpResponse
+from django.db import transaction
 from django.views import View
 
-from Model.models import Device_User, Device_Info, Order_Model, UID_Bucket, Unused_Uid_Meal
+from Model.models import Device_User, Device_Info, Order_Model, \
+    UidPushModel, UserExModel, UserOauth2Model, UidUserModel, GrantCodeModel, UserAppFrequencyModel, \
+    AppLogModel, UserFamily, FamilyMember, FamilyMemberJoin, SmartScene, DeviceSuperPassword
 from Object.ResponseObject import ResponseObject
 
 
@@ -22,9 +26,9 @@ class InitView(View):
         return self.validation(request.POST, operation)
 
     def validation(self, request_dict, operation):
-        if operation == 'health-check':         # 负载均衡器健康检测接口
+        if operation == 'health-check':  # 负载均衡器健康检测接口
             return self.health_check(request_dict)
-        elif operation == 'delete-account':     # 网页删除账号
+        elif operation == 'delete-account':  # 网页删除账号
             return self.delete_account(request_dict)
 
     @staticmethod
@@ -34,10 +38,17 @@ class InitView(View):
 
     @staticmethod
     def delete_account(request_dict):
+        """
+        网页删除账号
+        @param request_dict:输入
+        @request_dict username:用户名
+        @request_dict password:用户密码
+        @return 输出
+        """
+        LOGGER = logging.getLogger('info')
         username = request_dict.get('username', None)
         password = request_dict.get('password', None)
         response = ResponseObject()
-
         device_user_qs = Device_User.objects.filter(username=username).values('password', 'userID')
         if not device_user_qs.exists():
             return response.json(104)
@@ -45,18 +56,67 @@ class InitView(View):
         cipher_password, user_id = device_user_qs[0]['password'], device_user_qs[0]['userID']
         if not check_password(password, cipher_password):
             return response.json(111)
-
-        device_info_qs = Device_Info.objects.filter(userID=user_id)
-        if device_info_qs.exists():
-            return response.json(10047)
-
-        uid_list = Order_Model.objects.filter(userID=user_id, status=1).values_list('UID').distinct().order_by('UID')
-        uid_bucket_qs = UID_Bucket.objects.filter(uid__in=uid_list, use_status=1)
-        if uid_bucket_qs.exists():
-            return response.json(10046)
-
-        unused_uid_meal_qs = Unused_Uid_Meal.objects.filter(uid__in=uid_list)
-        if unused_uid_meal_qs.exists():
-            return response.json(10046)
-        device_user_qs.delete()
-        return response.json(0)
+        try:
+            with transaction.atomic():
+                #  解绑用户与设备
+                uid_push_qs = UidPushModel.objects.filter(userID=user_id)
+                if uid_push_qs.exists():
+                    uid_push_qs.delete()
+                #  删除用户扩展信息
+                user_ex_qs = UserExModel.objects.filter(userID=user_id)
+                if user_ex_qs.exists():
+                    user_ex_qs.delete()
+                #  用户oauth2信息
+                user_oauth2_qs = UserOauth2Model.objects.filter(userID=user_id)
+                if user_oauth2_qs.exists():
+                    user_oauth2_qs.delete()
+                # 删除用户设备ap
+                uid_user_qs = UidUserModel.objects.filter(userID=user_id)
+                if uid_user_qs.exists():
+                    uid_user_qs.delete()
+                # 删除用户授权码
+                grant_code_qs = GrantCodeModel.objects.filter(userID=user_id)
+                if grant_code_qs.exists():
+                    grant_code_qs.delete()
+                #  删除用户使用APP频率
+                user_app_Frequency_qs = UserAppFrequencyModel.objects.filter(user_id=user_id)
+                if user_app_Frequency_qs.exists():
+                    user_app_Frequency_qs.delete()
+                #  删除APP(设备)日志表
+                app_log_qs = AppLogModel.objects.filter(user_id=user_id)
+                if app_log_qs.exists():
+                    app_log_qs.delete()
+                # 删除家庭成员
+                family_qs = FamilyMember.objects.filter(user_id=user_id)
+                if family_qs.exists():
+                    family_qs.delete()
+                # 删除家庭成员加入
+                family_join_qs = FamilyMemberJoin.objects.filter(user_id=user_id)
+                if family_join_qs.exists():
+                    family_join_qs.delete()
+                # 删除用户家庭
+                user_family_qs = UserFamily.objects.filter(user_id=user_id)
+                if user_family_qs.exists():
+                    user_family_qs.delete()
+                # 删除智能场景
+                smart_scene_qs = SmartScene.objects.filter(user_id=user_id)
+                if smart_scene_qs.exists():
+                    smart_scene_qs.delete()
+                # 删除超级密码请求信息
+                device_super_qs = DeviceSuperPassword.objects.filter(userID=user_id)
+                if device_super_qs.exists():
+                    device_super_qs.delete()
+                #  删除设备信息
+                device_info_qs = Device_Info.objects.filter(userID=user_id)
+                if device_info_qs.exists():
+                    device_info_qs.delete()
+                # 删除用户订单信息
+                order_uid_qs = Order_Model.objects.filter(userID=user_id)
+                if order_uid_qs.exists():
+                    order_uid_qs.delete()
+                Device_User.objects.filter(userID=user_id).delete()
+                LOGGER.info('{}已注销'.format(username))
+                return response.json(0)
+        except Exception as e:
+            print(e)
+            return response.json(500)