Эх сурвалжийг харах

云存储用户信息查询优化,设备转移、套餐转移添加日志

peng 3 жил өмнө
parent
commit
1e3593921e

+ 34 - 39
AdminController/ServeManagementController.py

@@ -843,31 +843,6 @@ class serveManagement(View):
             uid_bucket_qs = uid_bucket_qs.order_by('-addTime')[(page - 1) * line:page * line]
 
             for uid_bucket in uid_bucket_qs:
-                # 套餐到期时间累加未使用套餐
-                unused_qs = Unused_Uid_Meal.objects.filter(uid=uid_bucket.uid).values('num', 'expire')
-                if unused_qs.exists():
-                    addMonth = 0
-                    for unused in unused_qs:
-                        addMonth += unused['num'] * unused['expire']
-                    endTime = CommonService.calcMonthLater(addMonth, uid_bucket.endTime)
-                    endTime = time.strftime("%Y--%m--%d %H:%M:%S", time.localtime(endTime))
-                else:
-                    endTime = time.strftime("%Y--%m--%d %H:%M:%S", time.localtime(uid_bucket.endTime))
-
-                uid = uid_bucket.uid.upper()
-                data = {
-                    'id': uid_bucket.id,
-                    'uid': uid,
-                    'channel': uid_bucket.channel,
-                    'status': uid_bucket.status,
-                    'endTime': endTime,
-                    'addTime': time.strftime(
-                        "%Y--%m--%d %H:%M:%S",
-                        time.localtime(
-                            uid_bucket.addTime)),
-                    'use_status': uid_bucket.use_status,
-                    'has_unused': uid_bucket.has_unused}
-
                 for order in order_qs.filter(
                         uid_bucket_id=uid_bucket.id).values(
                         'uid_bucket_id',
@@ -880,22 +855,42 @@ class serveManagement(View):
                         'userID__phone',
                         'userID__userEmail',
                         'userID__data_joined'):
-                    data['desc'] = order['desc']
-                    data['payType'] = order['payType']
-                    data['price'] = order['price']
-                    data['username'] = order['userID__username']
-                    data['phone'] = order['userID__phone']
-                    data['userEmail'] = order['userID__userEmail']
-                    data['data_joined'] = order['userID__data_joined'].strftime(
-                        "%Y-%m-%d %H:%M:%S")
-                    data['playcount'] = cg_qs.filter(
-                        operation='cloudstorage/queryvodlist', uid=order['UID']).count()
+                    # 套餐到期时间累加未使用套餐
+                    unused_qs = Unused_Uid_Meal.objects.filter(uid=uid_bucket.uid).values('num', 'expire')
+                    if unused_qs.exists():
+                        addMonth = 0
+                        for unused in unused_qs:
+                            addMonth += unused['num'] * unused['expire']
+                        endTime = CommonService.calcMonthLater(addMonth, uid_bucket.endTime)
+                        endTime = time.strftime("%Y--%m--%d %H:%M:%S", time.localtime(endTime))
+                    else:
+                        endTime = time.strftime("%Y--%m--%d %H:%M:%S", time.localtime(uid_bucket.endTime))
+
+                    uid = uid_bucket.uid.upper()
+                    data = {
+                        'id': uid_bucket.id,
+                        'uid': uid,
+                        'channel': uid_bucket.channel,
+                        'status': uid_bucket.status,
+                        'endTime': endTime,
+                        'addTime': time.strftime("%Y--%m--%d %H:%M:%S", time.localtime(uid_bucket.addTime)),
+                        'use_status': uid_bucket.use_status,
+                        'has_unused': uid_bucket.has_unused,
+                        'desc': order['desc'],
+                        'payType': order['payType'],
+                        'price': order['price'],
+                        'username': order['userID__username'],
+                        'phone': order['userID__phone'],
+                        'userEmail': order['userID__userEmail'],
+                        'data_joined': order['userID__data_joined'].strftime("%Y-%m-%d %H:%M:%S"),
+                        'playcount': cg_qs.filter(operation='cloudstorage/queryvodlist', uid=order['UID']).count()
+                    }
 
-                if uid in uid_set_dict:
-                    data['ucode'] = uid_set_dict[uid]['ucode']
-                    data['version'] = uid_set_dict[uid]['version']
+                    if uid in uid_set_dict:
+                        data['ucode'] = uid_set_dict[uid]['ucode']
+                        data['version'] = uid_set_dict[uid]['version']
 
-                list_data.append(data)
+                    list_data.append(data)
             return response.json(
                 0, {'list': list_data, 'total': count})
         except Exception as e:

+ 1 - 0
Ansjer/urls.py

@@ -43,6 +43,7 @@ urlpatterns = [
     url(r'^account/email-re-pwd$', UserController.EmailResetPwdView.as_view()),
     url(r'^account/refreshTk$', UserController.refreshTokenView.as_view()),
     url(r'^v3/account/refreshTk$', UserController.refreshTokenViewV3.as_view()),
+    url(r'^v3/account/deleteUser$', UserController.DeleteUser.as_view()),
     url(r'^favicon.ico$', UserManger.success, name=u'favicon.ico'),
     url(r'^account/showUserMore$', UserManger.showUserMoreView.as_view()),
     url(r'^account/perfectUserInfo$', UserManger.perfectUserInfoView.as_view()),

+ 40 - 9
Controller/CloudTransfer.py

@@ -5,6 +5,7 @@
 @File :CloudTransfer.py
 @IDE :PyCharm
 """
+import json
 import time
 
 from django.db import transaction
@@ -12,7 +13,7 @@ from django.db.models import Q
 from django.views.generic.base import View
 
 from Model.models import Device_User, Device_Info, Order_Model, UID_Bucket, StsCrdModel, VodHlsModel, Unused_Uid_Meal, \
-    VodBucketModel, UnicomDeviceInfo
+    VodBucketModel, UnicomDeviceInfo, LogModel
 from Object.ResponseObject import ResponseObject
 from Object.TokenObject import TokenObject
 from Service.CommonService import CommonService
@@ -44,13 +45,13 @@ class cloudTestView(View):
                 return response.json(tko.code)
             userID = tko.userID
             if operation == 'deviceTransfer':
-                return self.deviceTransfer(request_dict, response)
+                return self.deviceTransfer(request, request_dict, response)
             elif operation == 'mealTransfer':
-                return self.mealTransfer(request_dict, response, userID)
+                return self.mealTransfer(request, request_dict, response, userID)
             elif operation == 'expireMeal':
                 return self.expireMeal(request_dict, response)
 
-    def deviceTransfer(self, request_dict, response):
+    def deviceTransfer(self, request, request_dict, response):
         # 设备转移,一个用户下的设备转移到另一个用户
         oldUserID = request_dict.get("oldUserID", None)
         username = request_dict.get("username", None)
@@ -61,10 +62,10 @@ class cloudTestView(View):
         try:
             # 查询该userID下是否存在此设备
             old_deviceInfo_qs = Device_Info.objects.filter(userID_id=oldUserID, UID=uid, isExist=1) \
-                .values('isShare', 'vodPrimaryUserID', 'serial_number')
+                .values('isShare', 'vodPrimaryUserID', 'serial_number', 'userID__username')
             if not old_deviceInfo_qs.exists():
                 return response.json(10008)
-
+            old_user_name = old_deviceInfo_qs[0]['userID__username']
             newUserID = ModelService.get_userID_byname(username)  # 根据username获取userID
             if newUserID is None:  # 没有此用户
                 return response.json(104)
@@ -116,6 +117,19 @@ class cloudTestView(View):
                 if u_dev_info_qs.exists():
                     now_time = int(time.time())
                     u_dev_info_qs.update(user_id=newUserID, updated_time=now_time)
+                # 记录设备转移日志
+                ip = CommonService.get_ip_address(request)
+                content = json.loads(json.dumps(request_dict))
+                log = {
+                    'ip': ip,
+                    'user_id': 1,
+                    'status': 200,
+                    'time': int(time.time()),
+                    'url': 'cloudTransfer/deviceTransfer',
+                    'content': json.dumps(content),
+                    'operation': '用户{}的设备{}转移给了用户{}'.format(old_user_name, uid, newUserName),
+                }
+                LogModel.objects.create(**log)
                 # UIDMainUser.objects.filter(UID=uid).delete()
                 # uid_main_dict = {
                 #     'UID': uid,
@@ -129,7 +143,7 @@ class cloudTestView(View):
         else:
             return response.json(0)
 
-    def mealTransfer(self, request_dict, response, userID):
+    def mealTransfer(self, request, request_dict, response, userID):
         # 云存套餐转移,同一用户下不同设备间的云存套餐转移
         old_uid = request_dict.get("old_uid", None)
         new_uid = request_dict.get("new_uid", None)
@@ -138,7 +152,8 @@ class cloudTestView(View):
         try:
             # 查询两个UID是否在同一账号下
             old_deviceInfo_qs = Device_Info.objects.filter(userID_id=userID, UID=old_uid).values('isExist',
-                                                                                                 'vodPrimaryUserID')
+                                                                                                 'vodPrimaryUserID',
+                                                                                                 'userID__username')
             new_deviceInfo_qs = Device_Info.objects.filter(userID_id=userID, UID=new_uid).values('isExist')
             if not (old_deviceInfo_qs.exists() and new_deviceInfo_qs.exists()):
                 return response.json(10010)
@@ -157,7 +172,8 @@ class cloudTestView(View):
             # 查询转出设备正在使用的套餐
             old_using_uid_bucket = UID_Bucket.objects.filter(uid=old_uid, endTime__gte=nowTime).values('id',
                                                                                                        'bucket_id',
-                                                                                                       'has_unused').order_by(
+                                                                                                       'has_unused',
+                                                                                                       'bucket__content').order_by(
                 'addTime')
             if not old_using_uid_bucket.exists():
                 return response.json(10013)
@@ -205,6 +221,21 @@ class cloudTestView(View):
                 UID_Bucket.objects.filter(id=old_using_uid_bucket_id).update(uid=new_uid, has_unused=0)
                 StsCrdModel.objects.filter(uid=old_uid).delete()  # 删除转出设备stscrd表关联数据
 
+                # 记录套餐转移日志
+                ip = CommonService.get_ip_address(request)
+                content = json.loads(json.dumps(request_dict))
+                log = {
+                    'ip': ip,
+                    'user_id': 1,
+                    'status': 200,
+                    'time': int(time.time()),
+                    'url': 'cloudTransfer/mealTransfer',
+                    'content': json.dumps(content),
+                    'operation': '用户{}的设备{}的套餐{}转移给设备{}'.format(old_deviceInfo_qs[0]['userID__username'], old_uid,
+                                                                old_using_uid_bucket[0]['bucket__content'], new_uid),
+                }
+                LogModel.objects.create(**log)
+
         except Exception as e:
             # print(e)
             return response.json(500, repr(e))

+ 34 - 1
Controller/UserController.py

@@ -37,7 +37,7 @@ from jwt.algorithms import RSAAlgorithm
 from ratelimit.decorators import ratelimit
 
 from Ansjer.config import AuthCode_Expire, SERVER_DOMAIN, APNS_CONFIG, JPUSH_CONFIG, FCM_CONFIG, TUTK_PUSH_DOMAIN
-from Ansjer.config import BASE_DIR
+from Ansjer.config import BASE_DIR, CONFIG_US, CONFIG_EUR, CONFIG_INFO, SERVER_DOMAIN_US, SERVER_DOMAIN_EUR
 from Controller.CheckUserData import DataValid, date_handler, RandomStr
 from Model.models import Device_User, Role, UidPushModel, UserOauth2Model, UserExModel, Device_Info, UidSetModel, \
     UserAppFrequencyModel, CountryIPModel, CountryModel, UidChannelSetModel, Order_Model, UID_Bucket, Unused_Uid_Meal, \
@@ -707,6 +707,14 @@ class refreshTokenViewV3(TemplateView):
             userID = tko.userID
             tko.lang = lang
 
+            # 删除不同区域相同用户
+            headers = {'Authorization': token}
+            if CONFIG_INFO == CONFIG_US:
+                url = SERVER_DOMAIN_EUR + 'v3/account/deleteUser'
+                # requests.get(url=url, headers=headers)
+            elif CONFIG_INFO == CONFIG_EUR:
+                url = SERVER_DOMAIN_US + 'v3/account/deleteUser'
+                # requests.get(url=url, headers=headers)
             if password:  # 检验密码
                 password = password.strip()
                 # 解密
@@ -4227,3 +4235,28 @@ class InitUserInformationView(View):
             return response.json(0)
         else:
             return response.json(444)
+
+
+class DeleteUser(View):
+
+    def get(self, request, *args, **kwargs):
+        request.encoding = 'utf-8'
+        request_dict = request.GET
+        return self.validate(request, request_dict)
+
+    def post(self, request, *args, **kwargs):
+        request.encoding = 'utf-8'
+        request_dict = request.POST
+        return self.validate(request, request_dict)
+
+    def validate(self, request, request_dict):
+        token_code, user_id, response = CommonService.verify_token_get_user_id(request_dict, request)
+
+        if token_code != 0:
+            return response.json(token_code)
+        user_qs = Device_User.objects.filter(userID=user_id)
+        if user_qs.exists():
+            user_qs.delete()
+        return response.json(0)
+
+