Browse Source

优化分享设备排序

locky 1 week ago
parent
commit
3bc152b28a
2 changed files with 21 additions and 10 deletions
  1. 8 6
      Controller/DeviceShare.py
  2. 13 4
      Controller/shareUserPermission.py

+ 8 - 6
Controller/DeviceShare.py

@@ -15,6 +15,7 @@
 import json
 import json
 import time
 import time
 
 
+from django.db.models import Max
 from django.views.generic.base import View
 from django.views.generic.base import View
 
 
 from Ansjer.config import SERVER_DOMAIN, LOGGER
 from Ansjer.config import SERVER_DOMAIN, LOGGER
@@ -174,10 +175,6 @@ class DeviceShareView(View):
         room_id = request_dict.get('roomId', None)
         room_id = request_dict.get('roomId', None)
         if not shareToken:
         if not shareToken:
             return response.json(444, {'param': 'shareToken'})
             return response.json(444, {'param': 'shareToken'})
-            # try:
-            #     data = jwt.decode(shareToken, '.#^^&', algorithms='HS256')
-            # except Exception as e:
-            #     return response.json(10, repr(e))
         try:
         try:
             redisObj = RedisObject()
             redisObj = RedisObject()
             data_str = redisObj.get_data(key=shareToken)
             data_str = redisObj.get_data(key=shareToken)
@@ -214,7 +211,13 @@ class DeviceShareView(View):
                         primaryMaster = sharerUser.phone
                         primaryMaster = sharerUser.phone
                     else:
                     else:
                         return response.json(178)
                         return response.json(178)
-                    print(primaryMaster)
+
+                    # 获取当前用户下最大 sort_order
+                    sort_order = Device_Info.objects.filter(userID_id=userID).aggregate(
+                        Max('sort_order'))['sort_order__max'] or 0
+                    # 排序到最前
+                    sharerDvqs.sort_order = sort_order + 1
+
                     sharerDvqs.primaryMaster = primaryMaster
                     sharerDvqs.primaryMaster = primaryMaster
                     sharerDvqs.data_joined = None
                     sharerDvqs.data_joined = None
                     sharerDvqs.save()
                     sharerDvqs.save()
@@ -268,7 +271,6 @@ class DeviceShareView(View):
                         values('bucket__content', 'status', 'channel', 'endTime', 'uid')
                         values('bucket__content', 'status', 'channel', 'endTime', 'uid')
                     res = dvql[0]
                     res = dvql[0]
                     res['vod'] = list(ubqs)
                     res['vod'] = list(ubqs)
-                    # redisObj.del_data(key=shareToken)
                     return response.json(0, res)
                     return response.json(0, res)
             else:
             else:
                 return response.json(174)
                 return response.json(174)

+ 13 - 4
Controller/shareUserPermission.py

@@ -11,7 +11,7 @@ from Model.models import Device_User, Device_Info, Role, UserExModel, UidSetMode
 from Service.CommonService import CommonService
 from Service.CommonService import CommonService
 from Object.ResponseObject import ResponseObject
 from Object.ResponseObject import ResponseObject
 from Object.TokenObject import TokenObject
 from Object.TokenObject import TokenObject
-from django.db.models import Q
+from django.db.models import Q, Max
 from Service.ModelService import ModelService
 from Service.ModelService import ModelService
 from Object.RedisObject import RedisObject
 from Object.RedisObject import RedisObject
 
 
@@ -201,6 +201,9 @@ class shareUserEquipmentView(View):
         now_time = int(time.time())
         now_time = int(time.time())
         dictLen = 0
         dictLen = 0
         if sharedAll:
         if sharedAll:
+            # 获取当前用户下最大 sort_order
+            sort_order = Device_Info.objects.filter(userID_id=GuestID).aggregate(
+                Max('sort_order'))['sort_order__max'] or 0
             for equipment in Master:
             for equipment in Master:
                 eqDict = equipment.model_to_dict(exclude=['id', 'data_joined', 'primaryUserID'])
                 eqDict = equipment.model_to_dict(exclude=['id', 'data_joined', 'primaryUserID'])
 
 
@@ -211,6 +214,7 @@ class shareUserEquipmentView(View):
                     dictLen += 1
                     dictLen += 1
                     continue
                     continue
                 else:
                 else:
+                    sort_order += 1
                     uid_push_list.append(eqDict.get('UID', None))
                     uid_push_list.append(eqDict.get('UID', None))
                     puserId = eqDict.pop('userID')
                     puserId = eqDict.pop('userID')
                     eqDict['primaryUserID'] = puserId
                     eqDict['primaryUserID'] = puserId
@@ -218,13 +222,17 @@ class shareUserEquipmentView(View):
                     eqDict['isShare'] = True
                     eqDict['isShare'] = True
                     eqDict['userID_id'] = GuestID
                     eqDict['userID_id'] = GuestID
                     eqDict['id'] = CommonService.getUserID(getUser=False)
                     eqDict['id'] = CommonService.getUserID(getUser=False)
+                    # 排序到最前
+                    eqDict['sort_order'] = sort_order
                     querysetList.append(Device_Info(**eqDict))
                     querysetList.append(Device_Info(**eqDict))
         else:
         else:
             content = kwargs.get('content', None)
             content = kwargs.get('content', None)
             if content != None:
             if content != None:
                 contentDict = json.loads(content)
                 contentDict = json.loads(content)
                 uidlist = UID = contentDict.get('UID', None)
                 uidlist = UID = contentDict.get('UID', None)
-                print(uidlist)
+                # 获取当前用户下最大 sort_order
+                sort_order = Device_Info.objects.filter(userID_id=GuestID).aggregate(
+                    Max('sort_order'))['sort_order__max'] or 0
                 for equipment in Master:
                 for equipment in Master:
                     eqDict = equipment.model_to_dict(exclude=['id', 'data_joined', 'primaryUserID'])
                     eqDict = equipment.model_to_dict(exclude=['id', 'data_joined', 'primaryUserID'])
 
 
@@ -235,6 +243,7 @@ class shareUserEquipmentView(View):
                         if shareEquipment:
                         if shareEquipment:
                             dictLen += 1
                             dictLen += 1
                         else:
                         else:
+                            sort_order += 1
                             uid_push_list.append(eqDict.get('UID', None))
                             uid_push_list.append(eqDict.get('UID', None))
                             puserId = eqDict.pop('userID')
                             puserId = eqDict.pop('userID')
                             eqDict['primaryUserID'] = puserId
                             eqDict['primaryUserID'] = puserId
@@ -242,6 +251,8 @@ class shareUserEquipmentView(View):
                             eqDict['isShare'] = True
                             eqDict['isShare'] = True
                             eqDict['userID_id'] = GuestID
                             eqDict['userID_id'] = GuestID
                             eqDict['id'] = CommonService.getUserID(getUser=False)
                             eqDict['id'] = CommonService.getUserID(getUser=False)
+                            # 排序到最前
+                            eqDict['sort_order'] = sort_order
                             querysetList.append(Device_Info(**eqDict))
                             querysetList.append(Device_Info(**eqDict))
                     else:
                     else:
                         continue
                         continue
@@ -290,8 +301,6 @@ class shareUserEquipmentView(View):
                             res = {'error_UID': UID, 'Sharing': len(querysetList)}
                             res = {'error_UID': UID, 'Sharing': len(querysetList)}
                         else:
                         else:
                             res = {'Sharing': len(querysetList)}
                             res = {'Sharing': len(querysetList)}
-                # redisObj = RedisObject(db=8)
-                # redisObj.del_data(key='uid_qs_' + GuestID)
                 return response.json(0, res)
                 return response.json(0, res)