flask_app.py 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277
  1. from flask import Flask, request
  2. from mvp import Mvp
  3. import json
  4. from test_info import TestInfo
  5. from tongce import TongCe
  6. from apscheduler_elab import Config
  7. from flask_apscheduler import APScheduler
  8. from email_util import EmailUtil
  9. import decimal
  10. from report_push import ReportPush
  11. from jianye_report import JianYeReport
  12. app = Flask(__name__)
  13. app.config.from_object(Config())
  14. @app.route('/score', methods=['GET', 'POST'])
  15. def score():
  16. """
  17. 父选项对应的标准化值
  18. :return:
  19. """
  20. city = request.args.get('city', default=None, type=str)
  21. age = request.args.get('age', default=None, type=str)
  22. crowd = request.args.get('crowd', default=None, type=str)
  23. print(city, age, crowd)
  24. mvp = Mvp()
  25. scores = mvp.query_behavioral_info(city, age, crowd)
  26. mvp.close()
  27. return json.dumps(scores, ensure_ascii=False)
  28. @app.route('/scores', methods=['GET', 'POST'])
  29. def scores():
  30. mvp = Mvp()
  31. data = mvp.scores()
  32. return json.dumps(data, ensure_ascii=False)
  33. @app.route('/infos', methods=["GET", 'POST'])
  34. def get_city_age_crowd():
  35. """
  36. 测试数据中城市 年龄 人群分类信息
  37. :return:
  38. """
  39. mvp = Mvp()
  40. infos = {'城市': mvp.citys, '年龄段': mvp.age, '人群分类': mvp.crowd}
  41. mvp.close()
  42. return json.dumps(infos, ensure_ascii=False)
  43. @app.route('/crowd_people', methods=['GET', 'POST'])
  44. def crowd_people():
  45. """
  46. 人群分类人数统计
  47. :return:
  48. """
  49. mvp = Mvp()
  50. people_count = mvp.get_crowd_people()
  51. mvp.close()
  52. return json.dumps(people_count, ensure_ascii=False)
  53. @app.route('/set_behavior_tag', methods=['GET', 'POST'])
  54. def set_behavior_tag():
  55. """
  56. 模块标准化值
  57. :return:
  58. """
  59. mvp = Mvp()
  60. mvp.close()
  61. return json.dumps(mvp.module_scores, ensure_ascii=False)
  62. @app.route('/insert_into', methods=['GET', 'POST'])
  63. def insert_info():
  64. mvp = Mvp()
  65. mvp.insert()
  66. query_data = mvp.query_data()
  67. mvp.close()
  68. return json.dumps(query_data, ensure_ascii=False)
  69. @app.route('/shanghai_85', methods=['GET', 'POST'])
  70. def shanghai_85():
  71. mvp = Mvp()
  72. data = mvp.shanghai_85_module_score_insert()
  73. mvp.close()
  74. return json.dumps(data, ensure_ascii=False)
  75. @app.route('/tag_tree', methods=['GET', 'POST'])
  76. def tag_tree():
  77. mvp = Mvp()
  78. tags = mvp.tag_data
  79. mvp.close()
  80. return json.dumps(tags, ensure_ascii=False)
  81. @app.route('/update_data', methods=['GET', 'POST'])
  82. def update_data():
  83. message = None
  84. global mvp
  85. try:
  86. mvp = Mvp()
  87. message = mvp.update_data()
  88. except Exception as e:
  89. message['error'] = str(e)
  90. return json.dumps(message, ensure_ascii=False)
  91. finally:
  92. mvp.close()
  93. return json.dumps(message, ensure_ascii=False)
  94. @app.route('/people', methods=['GET', 'POST'])
  95. def people():
  96. mvp = Mvp()
  97. mvp.close()
  98. return json.dumps(mvp.people_data(), ensure_ascii=False)
  99. @app.route('/update_gender')
  100. def update_gender_rate():
  101. mvp = Mvp()
  102. try:
  103. mvp.update_gender_rate(ids=1)
  104. mvp.close()
  105. except Exception as e:
  106. mvp.close()
  107. return str(e)
  108. return '人群性别比列更新完成...'
  109. @app.route('/test_api', methods=['GET', 'POST'])
  110. def test_api():
  111. return '成功'
  112. @app.route('/testcase_info', methods=['GET', 'POST'])
  113. def testcase_info():
  114. testcase_id = request.args.get('id', default=0, type=int)
  115. ti = TestInfo()
  116. result = ti.test_detail_info(testcase_id)
  117. return json.dumps(result, ensure_ascii=False)
  118. @app.route('/get_uuids', methods=['GET', 'POST'])
  119. def get_uuids():
  120. city = request.args.get('city', default=None, type=str)
  121. age = request.args.get('age', default=None, type=str)
  122. crowd = request.args.get('crowd', default=None, type=str)
  123. mvp = Mvp()
  124. uuids = mvp.people_filter(city, age, crowd)
  125. mvp.close()
  126. return json.dumps(uuids, ensure_ascii=False)
  127. @app.route('/tongce', methods=['GET', 'POST'])
  128. def tongce():
  129. response = {}
  130. try:
  131. tongce = TongCe()
  132. result = tongce.tongce()
  133. response['code'] = 0
  134. response['message'] = '成功'
  135. response['data'] = result
  136. except Exception as e:
  137. response['code'] = 1
  138. response['message'] = '失败:' + str(e)
  139. return json.dumps(response, ensure_ascii=False)
  140. return json.dumps(response, ensure_ascii=False)
  141. @app.route('/tongce_data', methods=['GET', 'POST'])
  142. def tongce_data():
  143. response = {}
  144. tongce = TongCe()
  145. try:
  146. result = tongce.lingdi_data_scores()
  147. response['code'] = 0
  148. response['message'] = '成功'
  149. response['data'] = result
  150. except Exception as e:
  151. response['code'] = 1
  152. response['message'] = '失败:' + str(e)
  153. return json.dumps(response, ensure_ascii=False)
  154. finally:
  155. tongce.close()
  156. return json.dumps(response, ensure_ascii=False)
  157. @app.route('/update_rule', methods=['GET', 'POST'])
  158. def tongce_update_rule():
  159. try:
  160. tongce = TongCe()
  161. tongce.table_type_insert()
  162. except Exception as e:
  163. return str(e)
  164. return '更新成功!! 1'
  165. @app.route('/send_mail', methods=['GET', 'POST'])
  166. def send_mail():
  167. mail = EmailUtil()
  168. mail.send_test()
  169. return '<h1>邮件发送成功</h1>'
  170. @app.route('/update_other_city', methods=['GET', 'POST'])
  171. def update_other_city():
  172. response = {}
  173. try:
  174. tongce = TongCe()
  175. result = tongce.other_city_clean()
  176. response['code'] = 0
  177. response['message'] = '成功'
  178. response['data'] = result
  179. except Exception as e:
  180. response['code'] = 1
  181. response['message'] = '失败:' + str(e)
  182. return json.dumps(response, ensure_ascii=False)
  183. return json.dumps(response, ensure_ascii=False)
  184. @app.route('/report_test', methods=['GET', 'POST'])
  185. def report_test():
  186. global result
  187. try:
  188. task_id = request.args.get('id', default=0, type=int)
  189. report_push = ReportPush('bi_report')
  190. result = report_push.report_push_test(task_id)
  191. except Exception as e:
  192. print(str(e))
  193. result['error'] = str(e)
  194. finally:
  195. return json.dumps(result, ensure_ascii=False, cls=DecimalEncoder)
  196. @app.route('/report_jianye', methods=['GET', 'POST'])
  197. def report_jianye():
  198. report_jianye = JianYeReport()
  199. task_id = request.args.get('id', default=0, type=int)
  200. result = report_jianye.send_mail_to_customer(task_id)
  201. report_jianye.db.close()
  202. return json.dumps(result, ensure_ascii=False, cls=DecimalEncoder)
  203. @app.route('/debug_test', methods=['GET', 'POST'])
  204. def debug_func():
  205. result = {}
  206. rj = JianYeReport()
  207. try:
  208. rj.brand_data()
  209. result['success'] = True
  210. except Exception as e:
  211. result['error'] = str(e)
  212. finally:
  213. return json.dumps(result, ensure_ascii=False, cls=DecimalEncoder)
  214. class DecimalEncoder(json.JSONEncoder):
  215. def default(self, o):
  216. if isinstance(o, decimal.Decimal):
  217. return float(o)
  218. super(DecimalEncoder, self).default(o)
  219. if __name__ == '__main__':
  220. scheduler = APScheduler()
  221. scheduler.init_app(app)
  222. scheduler.start()
  223. app.run(
  224. host='0.0.0.0',
  225. port=5001
  226. )