views.py 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. #!/usr/bin/python
  2. # -*- coding=utf-8 -*-
  3. # @Create Time: 2024-01-08 15:46:48
  4. # @Last Modified time: 2024-01-31 11:27:23
  5. import threading
  6. import pandas as pd
  7. from typing import Optional
  8. from datetime import datetime
  9. from pydantic import BaseModel
  10. from flask import request, jsonify
  11. from flask_pydantic import validate
  12. from multiprocessing.connection import Client
  13. from . import main
  14. from .preprocess import parse_url
  15. from ..models import *
  16. from ..tasks import tasks
  17. # client = Client(('127.0.0.1', 35010))
  18. g = dict()
  19. class RecodModel(BaseModel):
  20. record_Time: datetime
  21. current_Url: str
  22. full_Url: Optional[str] = None
  23. sim_Url: Optional[str] = None
  24. user_Id: str
  25. device_Id: Optional[str] = None
  26. request_Method: str
  27. event_Type: str
  28. form_Data: Optional[str] = None
  29. json_Data: Optional[str] = None
  30. value_Data: Optional[str] = None
  31. status_Code: Optional[int] = None
  32. target_Url: Optional[str] = None
  33. iframe_Url: Optional[str] = None
  34. button_Text: Optional[str] = None
  35. @main.route('/record', methods=['GET', 'POST'])
  36. @validate()
  37. def record(body: RecodModel):
  38. """接收采集数据,记录临时表
  39. """
  40. # 1、先收集原始数据,BaseModel接收,dict传输,dataframe缓存,DM存储
  41. tasks.predict(g, item=body.dict())
  42. # try:
  43. # # --- 采集原始表 --- #
  44. # record = Record()
  45. # record.Record_Time = body.record_Time
  46. # record.Current_Url = body.current_Url
  47. # record.Full_Url = body.full_Url
  48. # record.User_Id = body.user_Id
  49. # record.Request_Method = body.request_Method
  50. # record.Event_Type = body.event_Type
  51. # record.Target_Url = body.target_Url
  52. # record.Button_Text = body.button_Text
  53. # db.session.add(record)
  54. # db.session.commit()
  55. # print(body.dict())
  56. # client.send(body.dict())
  57. # response = client.recv()
  58. # # --- 采集总量 +1 --- #
  59. # try:
  60. # tc = TotalCount.query.filter_by(Name = '采集量').one()
  61. # tc.add_one()
  62. # db.session.add(tc)
  63. # db.session.commit()
  64. # except Exception as e:
  65. # db.session.rollback()
  66. # print('--->', e)
  67. # # --- 登录人数 +1 --- #
  68. # pl = PersonLogin.query.filter_by(User_Id = body.user_Id)
  69. # if pl.count() == 0:
  70. # try:
  71. # db.session.add(PersonLogin(user_id = body.user_Id))
  72. # db.session.commit()
  73. # except Exception as e:
  74. # db.session.rollback()
  75. # print('--->', e)
  76. # # --- 解析访问域 --- #
  77. # df = pd.DataFrame([body.dict()])
  78. # result = parser.process(df)
  79. # try:
  80. # if result.get("domain") == "人资域":
  81. # PersonLogin.query.filter_by(User_Id = body.user_Id).update({"RZ_Visit": True})
  82. # elif result.get("domain") == "资产域":
  83. # PersonLogin.query.filter_by(User_Id = body.user_Id).update({"ZC_Visit": True})
  84. # elif result.get("domain") == "财务域":
  85. # PersonLogin.query.filter_by(User_Id = body.user_Id).update({"CW_Visit": True})
  86. # elif result.get("domain") == "营销域":
  87. # PersonLogin.query.filter_by(User_Id = body.user_Id).update({"YX_Visit": True})
  88. # db.session.commit()
  89. # except Exception as e:
  90. # db.session.rollback()
  91. # print('--->', e)
  92. # except Exception as e:
  93. # db.session.rollback()
  94. # print('--->', e)
  95. # return jsonify({"status": "failed"})
  96. return jsonify({"status": "success"})
  97. @main.route('/screen3', methods=['GET', 'POST'])
  98. def screen3():
  99. user_id = request.args.get('user_id') or 'fuli@mz.gd.csg.cn'
  100. for item in g[user_id].getActionByDateRange().itertuples():
  101. row = {
  102. "Record_Time": item[0], "Current_Url": item.cur_url + '?' + item.cur_que,
  103. "Target_Url": item.tar_url + '?' + item.tar_que, "User_Id": user_id,
  104. "Request_Method": item.req_met, "Form_Data": item.for_dat,
  105. "Button_Text": item.but_txt, "Is_Op": item.is_op,
  106. }
  107. print(item.cur_url, item.tar_url)
  108. parser = tasks.UrlParser()
  109. result = parser.process(row)
  110. try:
  111. print(tasks.ResultJson(time=result['time'], user_id=result['user'], domain=result['domain'],
  112. title1=result['一级标题'], title2=result['二级标题'], title3=result['三级标题'], text=result['text'], is_op=item.is_op, is_bus=False).to_json())
  113. except Exception as e:
  114. print(e)
  115. # tasks.postback(result)
  116. return jsonify({})