OperatingLogs.py 3.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. import json
  2. import threading
  3. import datetime
  4. import time
  5. from bson import utc
  6. from Model.models import EquipmentLogModel
  7. from Service.CommonService import CommonService
  8. from Service.MiscellService import MiscellService
  9. from Service.TemplateService import TemplateService
  10. def add_access_log(request, status_code):
  11. # 增加多进程 异步
  12. asy = threading.Thread(target=addLog, args=(request, status_code))
  13. asy.start()
  14. def addLog(request, status_code):
  15. request_path = request.path.strip().strip('/')
  16. if 'equipment' in request.path:
  17. global request_dict
  18. try:
  19. if request.method == 'GET':
  20. request_dict = request.GET
  21. elif request.method == 'POST':
  22. request_dict = request.POST
  23. # api_list = TemplateService.log_api()
  24. print('status_code:', status_code)
  25. api_list = [
  26. 'equipment/add',
  27. 'equipment/delete',
  28. 'equipment/flowUpdate',
  29. 'v3/equipment/add',
  30. 'v3/equipment/modify',
  31. ]
  32. # 接口中文化
  33. jiekou = {
  34. 'equipment/add': 'v1添加设备',
  35. 'equipment/delete': 'v1删除设备',
  36. 'equipment/flowUpdate': '更新设备的版本信息',
  37. 'v3/equipment/add': 'v3添加设备信息',
  38. 'v3/equipment/modify': 'v3编辑设备信息'
  39. }
  40. if request_path in api_list:
  41. user = MiscellService.get_access_name(request_dict=request_dict)
  42. clientIP = CommonService.get_ip_address(request)
  43. # now_time = datetime.datetime.utcnow().replace(tzinfo=utc).astimezone(utc)
  44. nowtime = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
  45. beijing = datetime.timezone(datetime.timedelta(hours=8))
  46. utc = datetime.timezone.utc # 获取 UTC 的时区对象
  47. beijing_time = datetime.datetime.utcnow().replace(tzinfo=utc).astimezone(beijing) # 强制转换加上 UTC 时区。此处敲黑板,需要特别注意。
  48. # content:从前端获取到的参数数据,对获取到的数据进行处理
  49. content = json.dumps(request_dict)
  50. d = eval(content)
  51. if 'uid' not in d:
  52. d['uid'] = ''
  53. if 'NickName' not in d:
  54. d['NickName'] = ''
  55. if 'equipmentid' not in d:
  56. d['equipmentid'] = ''
  57. if 'UID' in d:
  58. d['uid'] = d['UID']
  59. if 'id' in d:
  60. d['equipmentid'] = d['id']
  61. password = request_dict.get('userPwd', None)
  62. if password is not None:
  63. request_dict = dict(request_dict)
  64. request_dict.pop('userPwd')
  65. if user != '':
  66. user = user
  67. else:
  68. print('空')
  69. user = '空'
  70. # 数据拼接
  71. caozuo = '用户账号为:[' + user + ']' + '在' + str(beijing_time) + '进行' + str(jiekou[request_path])
  72. # + ',' + '设备uid或主键id为:' + str(d['uid']) + str(d['equipmentid'])
  73. print('request_dict:', d)
  74. add_data = {
  75. 'user': user,
  76. 'uid': d['uid'],
  77. 'equipmentid': d['equipmentid'],
  78. 'NickName': d['NickName'],
  79. 'ip': clientIP,
  80. 'time': beijing_time,
  81. 'url': request.path,
  82. 'operatingcontent': caozuo,
  83. }
  84. print('操作数据:', add_data)
  85. # 设备日志添加
  86. EquipmentLogModel.objects.create(**add_data)
  87. except Exception as e:
  88. print(repr(e))
  89. pass