合并login

Change-Id: Ie06ed019cbb00d52e0b9e1f3c7a56c947b57a42c
diff --git a/Merge/back_trm/app/routes.py b/Merge/back_trm/app/routes.py
index 41b022b..625ea6d 100644
--- a/Merge/back_trm/app/routes.py
+++ b/Merge/back_trm/app/routes.py
@@ -5,8 +5,10 @@
 from config import Config
 from flask import jsonify,request
 
+
 main = Blueprint('main', __name__)
 
+
 @main.route('/sgiveadmin',methods=['POST','GET'])
 def giveadmin():
     data=request.get_json()
@@ -17,12 +19,23 @@
     f=Fpost(session)
     checres=f.checkid(data['userid'],'superadmin')
     if(not checres):
+        f.recordlog(data['userid'],
+                     'error', 
+                     '系统需要超级管理员才能执行修改用户角色的操作,但是当前用户不是超级管理员',
+                     request.remote_addr)
         return jsonify({'status': 'error', 'message': 'Unauthorized'})
     
     res=f.giveadmin(data['targetid'])
     if not res:
+        f.recordlog(data['userid'],
+                     'error', 
+                     f"尝试修改用户{data['targetid']}角色为admin失败,用户不存在",
+                     request.remote_addr)
         return jsonify({'status': 'error', 'message': 'User not found'})
-    
+    f.recordlog(data['userid'],
+                    'behavior', 
+                    f'用户角色为admin修改成功,用户ID: {data["targetid"]} 被修改为管理员',
+                    request.remote_addr)
     return jsonify({'status': 'success', 'message': 'User role updated to admin'})
 
 @main.route('/sgiveuser',methods=['POST','GET'])
@@ -35,12 +48,23 @@
     f=Fpost(session)
     checres=f.checkid(data['userid'],'superadmin')
     if(not checres):
+        f.recordlog(data['userid'],
+                     'error', 
+                     '系统需要超级管理员才能执行修改用户角色的操作,但是当前用户不是超级管理员',
+                     request.remote_addr)
         return jsonify({'status': 'error', 'message': 'Unauthorized'})
     
     res=f.giveuser(data['targetid'])
     if not res:
+        f.recordlog(data['userid'],
+                     'error', 
+                     f"尝试修改用户{data['targetid']}为user失败,用户不存在",
+                     request.remote_addr)
         return jsonify({'status': 'error', 'message': 'User not found'})
-    
+    f.recordlog(data['userid'],
+                    'behavior', 
+                    f'用户角色修改成功,用户ID: {data["targetid"]} 被修改为普通用户',
+                    request.remote_addr)
     return jsonify({'status': 'success', 'message': 'User role updated to user'})
 
 
@@ -54,12 +78,23 @@
     f=Fpost(session)
     checres=f.checkid(data['userid'],'superadmin')
     if(not checres):
+        f.recordlog(data['userid'],
+                     'error', 
+                     '系统需要超级管理员才能执行修改用户角色的操作,但是当前用户不是超级管理员',
+                     request.remote_addr)
         return jsonify({'status': 'error', 'message': 'Unauthorized'})
     
     res=f.givesuperadmin(data['targetid'])
     if not res:
+        f.recordlog(data['userid'],
+                     'error', 
+                     f'尝试修改用户{data["targetid"]}角色为superadmin失败,用户不存在',
+                     request.remote_addr)
         return jsonify({'status': 'error', 'message': 'User not found'})
-    
+    f.recordlog(data['userid'],
+                    'behavior', 
+                    f'用户角色修改成功,用户ID: {data["targetid"]} 被修改为超级管理员',
+                    request.remote_addr)
     return jsonify({'status': 'success', 'message': 'User role updated to superadmin'})
 
 @main.route('/sgetuserlist',methods=['POST','GET'])
@@ -72,6 +107,10 @@
     f=Fpost(session)
     checres=f.checkid(data['userid'],'superadmin')
     if(not checres):
+        f.recordlog(data['userid'],
+                     'error', 
+                     '系统需要超级管理员才能执行获取用户列表的操作,但是当前用户不是超级管理员',
+                     request.remote_addr)
         return jsonify({'status': 'error', 'message': 'Unauthorized'})
     res=f.getuserlist()
     respons=[]
@@ -81,6 +120,11 @@
             'username': datai[1],
             'role': datai[2]
         })
+
+    f.recordlog(data['userid'],
+                    'access', 
+                    '获取用户列表成功',
+                    request.remote_addr)
     return jsonify(respons)
 
 @main.route('/apostlist',methods=['POST','GET'])
@@ -93,6 +137,10 @@
     f=Fpost(session)
     checres=f.checkid(data['userid'],'admin')
     if(not checres):
+        f.recordlog(data['userid'],
+                     'error', 
+                     '系统需要管理员才能执行获取帖子列表的操作,但是当前用户不是管理员',
+                     request.remote_addr)
         return jsonify({'status': 'error', 'message': 'Unauthorized'})
     res=f.getlist()
     respons=[]
@@ -102,6 +150,10 @@
             'title': datai[1],
             'status': datai[2]
         })
+    f.recordlog(data['userid'],
+                 'access', 
+                 '获取帖子列表成功',
+                 request.remote_addr)
     return jsonify(respons)
 
 @main.route('/agetpost',methods=['POST','GET'])
@@ -113,9 +165,22 @@
     f=Fpost(session)
     checres=f.checkid(data['userid'],'admin')
     if(not checres):
+        f.recordlog(data['userid'],
+                     'error', 
+                     '系统需要管理员才能执行获取帖子详情的操作,但是当前用户不是管理员',
+                     request.remote_addr)
         return jsonify({'status': 'error', 'message': 'Unauthorized'})
     res=f.getpost(data['postid'])
-
+    if not res:
+        f.recordlog(data['userid'],
+                     'error', 
+                     f'尝试获取帖子{data["postid"]}失败,帖子不存在',
+                     request.remote_addr)
+        return jsonify({'status': 'error', 'message': 'Post not found'})
+    f.recordlog(data['userid'],
+                 'access', 
+                 f'获取帖子详情成功,帖子ID: {data["postid"]}',
+                 request.remote_addr)
     return jsonify(res.to_dict() if res else {})
 
 @main.route('/areview',methods=['POST','GET'])
@@ -127,12 +192,23 @@
     f=Fpost(session)
     checres=f.checkid(data['userid'],'admin')
     if(not checres):
+        f.recordlog(data['userid'],
+                     'error', 
+                     '系统需要管理员才能执行帖子审核的操作,但是当前用户不是管理员',
+                     request.remote_addr)
         return jsonify({'status': 'error', 'message': 'Unauthorized'})
     
     res=f.review(data['postid'],data['status'])
     if not res:
+        f.recordlog(data['userid'],
+                     'error', 
+                     f'尝试审核帖子{data["postid"]}失败,帖子不存在',
+                     request.remote_addr)
         return jsonify({'status': 'error', 'message': 'Post not found'})
-    
+    f.recordlog(data['userid'],
+                 'behavior', 
+                 f'帖子审核成功,帖子ID: {data["postid"]} 状态更新为 {data["status"]}',
+                 request.remote_addr)
     return jsonify({'status': 'success', 'message': 'Post reviewed successfully'})
 
 
@@ -146,10 +222,102 @@
     f=Fpost(session)
     checres=f.checkid(data['userid'],'admin')
     if(not checres):
+        f.recordlog(data['userid'],
+                     'error', 
+                     '系统需要管理员才能执行Nginx认证的操作,但是当前用户不是管理员',
+                     request.remote_addr)
         return jsonify({'status': 'error', 'message': 'Unauthorized'})
     
     res=f.nginxauth(data['postid'],data['status'])
     if not res:
+        f.recordlog(data['userid'],
+                     'error', 
+                     f'尝试更新Nginx认证状态失败,帖子{data["postid"]}不存在',
+                     request.remote_addr)
         return jsonify({'status': 'error', 'message': 'Post not found'})
+    f.recordlog(data['userid'],
+                 'behavior', 
+                 f'Nginx认证状态更新成功,帖子ID: {data["postid"]} 状态更新为 {data["status"]}',
+                 request.remote_addr)
+    return jsonify({'status': 'success', 'message': 'Nginx auth updated successfully'})
+
+@main.route('/getsyscost',methods=['POST','GET'])
+def getsyscost():
+    data=request.get_json()
+    engine=create_engine(Config.SQLURL)
+    SessionLocal = sessionmaker(bind=engine)
+    session = SessionLocal()
+    f=Fpost(session)
+    checres=f.checkid(data['userid'],'superadmin')
+    if(not checres):
+        f.recordlog(data['userid'],
+                     'error', 
+                     '系统需要管理员才能执行获取系统性能消耗的操作,但是当前用户不是管理员',
+                     request.remote_addr)
+        return jsonify({'status': 'error', 'message': 'Unauthorized'})
     
-    return jsonify({'status': 'success', 'message': 'Nginx auth updated successfully'})
\ No newline at end of file
+    res=f.getsyscost()
+    if not res:
+        f.recordlog(data['userid'],
+                     'error', 
+                     '尝试获取系统性能消耗数据失败,数据不存在',
+                     request.remote_addr)
+        return jsonify({'status': 'error', 'message': 'No performance data found'})
+    
+    f.recordlog(data['userid'],
+                 'access', 
+                 '获取系统性能消耗数据成功',
+                 request.remote_addr)
+    resdata = []
+    for datai in res:
+        resdata.append({
+            'id': datai.id,
+            'record_time': datai.record_time.isoformat(),
+            'endpoint': datai.endpoint,
+            'elapsed_time': datai.elapsed_time,
+            'cpu_user': datai.cpu_user,
+            'cpu_system': datai.cpu_system,
+            'memory_rss': datai.memory_rss
+        })
+    return jsonify(resdata)
+@main.route('/getrecordlog',methods=['POST','GET'])
+def getrecordlog():
+    data=request.get_json()
+    engine=create_engine(Config.SQLURL)
+    SessionLocal = sessionmaker(bind=engine)
+    session = SessionLocal()
+    f=Fpost(session)
+    checres=f.checkid(data['userid'],'admin')
+    if(not checres):
+        f.recordlog(data['userid'],
+                     'error', 
+                     '系统需要管理员才能执行获取日志的操作,但是当前用户不是管理员',
+                     request.remote_addr)
+        return jsonify({'status': 'error', 'message': 'Unauthorized'})
+    
+    res=f.getrecordlog()
+    if not res:
+        f.recordlog(data['userid'],
+                     'error', 
+                     '尝试获取日志失败,日志不存在',
+                     request.remote_addr)
+        return jsonify({'status': 'error', 'message': 'No logs found'})
+    
+    f.recordlog(data['userid'],
+                 'access', 
+                 '获取日志成功',
+                 request.remote_addr)
+    
+    resdata = []
+    for datai in res:
+        resdata.append({
+            'id': datai.id,
+            'user_id': datai.user_id,
+            'type': datai.type,
+            'content': datai.content,
+            'ip': datai.ip,
+            'created_at': datai.created_at.isoformat()
+        })
+    
+    return jsonify(resdata)
+