balance_monitoring_request.py 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. # -*- encoding=utf8 -*-
  2. import os
  3. import time
  4. import json
  5. import pymysql
  6. import logging
  7. import requests
  8. from decimal import *
  9. from flask_sqlalchemy import SQLAlchemy
  10. from flask import request,Flask,jsonify
  11. """
  12. #配置输出日志格式
  13. LOG_FORMAT = '%(asctime)s %(filename)s[line:%(lineno)d] %(name)s %(levelname)s %(pathname)s %(message)s'
  14. #配置输出时间格式
  15. DATE_FORMAT = '%Y-%m-%d %H-%M-%S %a'
  16. logging.basicConfig(level = logging.INFO,
  17. format = LOG_FORMAT,
  18. datefmt = DATE_FORMAT,
  19. filename = r"../logs/balance_run.log")
  20. """
  21. app = Flask(__name__)
  22. class Config(object):
  23. #sqlalchemy的配置参数
  24. DIALECT = 'mysql'
  25. DRIVER='pymysql'
  26. USERNAME = 'root'
  27. PASSWORD = 'nibuzhidaowozhidao'
  28. HOST = '127.0.0.1'
  29. PORT = 9001
  30. DATABASE = 'monitoring'
  31. #SQLALCHEMY_DATABASE_URI = "mysql+ pymysql://root:nibuzhidaowozhidao@120.78.198.155:9001/monitoring?charset=utf8"
  32. SQLALCHEMY_DATABASE_URI = "{}+{}://{}:{}@{}:{}/{}?charset=utf8".format(DIALECT,DRIVER,USERNAME,PASSWORD,HOST,PORT,DATABASE)
  33. #设置sqlalchemy自动跟踪数据库
  34. SQLALCHEMY_TRACK_MODIFICATIONS = True
  35. app.config.from_object(Config)
  36. db = SQLAlchemy(app)
  37. #print(db)
  38. #创建数据库模型类
  39. class Monitor(db.Model):
  40. __tablename__ = 'balance_monitoring'
  41. id = db.Column(db.Integer,primary_key=True,autoincrement=True)
  42. msg = db.Column(db.String(512))
  43. group_name = db.Column(db.String(128))
  44. status = db.Column(db.Integer)
  45. timestamp = db.Column(db.BigInteger)
  46. @app.route('/balance/monitoring/chanel', methods=['GET'])
  47. def chanelBalanceMonitoring():
  48. #print(11)
  49. monitor_list = Monitor.query.filter_by(status = 1).all()
  50. result = []
  51. if(len(monitor_list) > 0):
  52. for i in range(len(monitor_list)):
  53. monitor = monitor_list[i]
  54. result.append([monitor.msg,monitor.group_name])
  55. monitor.status = 2
  56. db.session.add(monitor)
  57. db.session.commit()
  58. #print(result)
  59. return jsonify(result)
  60. @app.route('/monitor/balance',methods=['POST'])
  61. def monitorBalance():
  62. param = request.json
  63. phone = param['phone']
  64. balance = round(param['balance'],2)
  65. fail_count = len(param['failList'])
  66. #print(phone)
  67. #print(balance)
  68. #print(fail_count)
  69. timestamp = time.time()
  70. str_time = time.strftime('%H:%M',time.localtime(timestamp))
  71. #str_time_int = int(str(time.strftime('%H:%M:%S',time.localtime(timestamp))).split(':')[-1])
  72. str_time_int = int(str(str_time).split(':')[-1])
  73. msg = ""
  74. if(fail_count >= 7 ):
  75. msg = str_time + ': {} 余额为 {},失败次数为 {},请及时处理'.format(phone,balance,fail_count)
  76. elif balance > 0 and fail_count < 7 :
  77. msg = str_time + ': {} 余额为 {},请及时处理'.format(phone,balance)
  78. #cursor = mon_conn.cursor()
  79. if len(msg) > 0 :
  80. #monitor = Monitor(msg = msg, group_name = "补单余额监控群", status = 1, timestamp = timestamp)
  81. monitor = db.session.query(Monitor).filter(Monitor.msg.like('%{}%'.format(phone))).first()
  82. monitor.msg = msg
  83. monitor.status = 1
  84. db.session.add(monitor)
  85. db.session.commit()
  86. return 'SUCCESS'
  87. if __name__ == '__main__':
  88. app.config['JSON_AS_ASCII'] = False
  89. #app.config['JSONIFY_MIMETYPE'] ="application/json;charset=utf-8"
  90. app.run(host="0.0.0.0", port=9888,debug=True)