| 
					
				 | 
			
			
				@@ -0,0 +1,75 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+from hub import methods, Global 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import threading 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import time 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import json 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import os 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+class UserWorkRecord(object): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    users = dict()  # {<user_uuid>: {log_uuid: <UserWorkRecordList.uuid>, start_at, end_at}} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @classmethod 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    def init(cls): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        """初始化""" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for item in Global.mdb.get_all('UserWorkRecordList', sort_field=[('start_at', -1)]): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if item.get('user_uuid') not in cls.users: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                cls.users[item.get('user_uuid')] = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    'log_uuid': str(item.get('_id')), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    'start_at': item.get('start_at'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    'end_at': item.get('end_at'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if item.get('user_uuid') in cls.users: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                continue 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @classmethod 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    def get_log_uuid(cls, user_uuid, log_time): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        UserWorkRecordList: 用户操作记录 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        UserWorkRecordList.uuid: 记录标识 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        UserWorkRecordList.user_uuid: 用户标识 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        UserWorkRecordList.start_at: 操作开始时间 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        UserWorkRecordList.end_at: 操作结束时间 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        # --- check --- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if not user_uuid or not log_time: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            methods.debug_log(f"UserWorkRecord|40", f"#error40") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return 'error40' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        # --- check --- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        r1 = user_uuid not in cls.users 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        r2 = log_time > cls.users[user_uuid].get('end_at') + 600  # 距离上次操作间隔600s,当做新的记录 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if r1 or r2: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            # --- add --- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            data = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                'user_uuid': user_uuid, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                'start_at': log_time, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                'end_at': log_time, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            log_uuid = Global.mdb.add('UserWorkRecordList') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            # --- update --- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            cls.users[user_uuid] = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                'log_uuid': log_uuid, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                'start_at': log_time, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                'end_at': log_time, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return log_uuid 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        # --- check --- 距离上次操作间隔300s,更新一下结束时间 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if log_time > cls.users[user_uuid].get('end_at') + 300: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            # --- update --- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            log_uuid = ls.users[user_uuid].get('log_uuid') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            Global.mdb.update_one_by_id('UserWorkRecordList', log_uuid, {'end_at': log_time}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            # --- update --- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            cls.users[user_uuid]['end_at'] = log_time 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return log_uuid 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        # --- check --- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        methods.debug_log(f"UserWorkRecord|74", f"#error74") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return 'error74' 
			 |