diff --git a/app.py b/app.py index ce91257..714d01f 100644 --- a/app.py +++ b/app.py @@ -34,14 +34,15 @@ app.logger.addHandler(handler) app.logger.setLevel(logging.INFO) +# H5 项目接口 @app.route('/h5', methods=['GET']) def get_h5_account_info(): - sql_str = "select account_id,keep_rate,task_total,account_name,is_active, countries, link_url from account_h5_info" + sql_str = "select offer_id,keep_rate,task_total,account_name,is_active, countries, link_url from account_h5_info" try: result = db.execute_query(sql_str) return render_template('account_h5_info.html', users=[ - {'account_id': str(x[0]), 'keep_rate': x[1], "task_total": x[2], "account_name": x[3], + {'offer_id': str(x[0]), 'keep_rate': x[1], "task_total": x[2], "account_name": x[3], "countries": x[5], "link_url": x[6], "is_active": x[4]} for x in result]) @@ -63,21 +64,21 @@ def add_h5_user(): retry_count = 0 success = False while not success and retry_count < max_retries: + offer_id = uuid.uuid4().int try: - account_id = uuid.uuid4().int sql_str = """INSERT INTO account_h5_info - (account_id, keep_rate, task_total, + (offer_id, keep_rate, task_total, account_name, countries, link_url) VALUES (%s, %s, %s, %s, %s, %s)""" - db.execute_single(sql_str, (account_id, keep_rate, + db.execute_single(sql_str, (offer_id, keep_rate, task_total, account_name, countries, link_url)) - sql_str = "insert into h5_new_task_record_info(account_id, task_total) values (%s, %s)" - db.execute_single(sql_str, (account_id, task_total)) + sql_str = "insert into h5_new_task_record_info(offer_id, task_total) values (%s, %s) ON DUPLICATE KEY UPDATE task_total = task_total;" + db.execute_single(sql_str, (offer_id, task_total)) success = True return redirect(url_for('get_h5_account_info')) except Exception as e: - if "Duplicate entry" in str(e) and "account_id" in str(e): + if "Duplicate entry" in str(e) and str(offer_id) in str(e): retry_count += 1 app.logger.warning(f"UUID冲突,正在重试({retry_count}/{max_retries})") continue @@ -95,9 +96,9 @@ def add_h5_user(): @app.route('/edit_user', methods=['GET', 'POST']) def edit_user(): - account_id = request.args.get('account_id') + offer_id = request.args.get('offer_id') if request.method == 'POST': - account_id = request.form['account_id'] + offer_id = request.form['offer_id'] keep_rate = request.form['keep_rate'] task_total = int(request.form['task_total']) account_name = request.form['account_name'] @@ -105,15 +106,15 @@ def edit_user(): link_url = request.form['link_url'] is_active = request.form['is_active'] update_time = datetime.now() - sql_str = "UPDATE account_h5_info set keep_rate=%s, task_total=%s, account_name=%s ,is_active=%s ,countries=%s, link_url=%s,update_time=%s where account_id=%s" - db.execute_single(sql_str, (keep_rate, task_total, account_name, is_active, countries, link_url, update_time, account_id)) - sql_str = "insert into h5_new_task_record_info(account_id, task_total) values (%s, %s)" - db.execute_single(sql_str, (account_id, task_total)) + sql_str = "UPDATE account_h5_info set keep_rate=%s, task_total=%s, account_name=%s ,is_active=%s ,countries=%s, link_url=%s,update_time=%s where offer_id=%s" + db.execute_single(sql_str, (keep_rate, task_total, account_name, is_active, countries, link_url, update_time, offer_id)) + sql_str = "insert into h5_new_task_record_info(offer_id, task_total) values (%s, %s) ON DUPLICATE KEY UPDATE task_total = task_total" + db.execute_single(sql_str, (offer_id, task_total)) return redirect(url_for('get_h5_account_info')) - sql_str = "select account_id,keep_rate,task_total,account_name,is_active,countries, link_url from account_h5_info where account_id=%s" - result = db.execute_query(sql_str, (account_id,)) + sql_str = "select offer_id,keep_rate,task_total,account_name,is_active,countries, link_url from account_h5_info where offer_id=%s" + result = db.execute_query(sql_str, (offer_id,)) return render_template('edit_h5_user.html', - users={'account_id': result[0][0], 'keep_rate': result[0][1], 'task_total': result[0][2], + users={'offer_id': result[0][0], 'keep_rate': result[0][1], 'task_total': result[0][2], 'account_name': result[0][3], "is_active": result[0][4], "countries": result[0][5], "link_url": result[0][6]}) @@ -164,18 +165,18 @@ def get_browser_info(): @app.route('/upload_task_status', methods=['GET']) def upload_task_status(): - account_id = request.args.get('accountId') + offer_id = request.args.get('offerId') task_id = request.args.get('taskId') task_status = request.args.get("taskStatus") - app.logger.info("upload_task_status {},{},{}".format(task_status, task_id, account_id)) + app.logger.info("upload_task_status {},{},{}".format(task_status, task_id, offer_id)) try: - sql_str = "UPDATE task_execute_status SET task_status=%s WHERE account_id=%s and task_id=%s" - db.execute_update(sql_str, (task_status, account_id, task_id)) + sql_str = "UPDATE task_execute_status SET task_status=%s WHERE offer_id=%s and task_id=%s" + db.execute_update(sql_str, (task_status, offer_id, task_id)) return jsonify({'status': 'ok'}) except Exception as e: - if account_id in str(e): - sql_str = "insert into task_execute_status(account_id,task_id,task_status) values(%s,%s,%s)" - db.execute_single(sql_str, (account_id, task_id, task_status)) + if offer_id in str(e): + sql_str = "insert into task_execute_status(offer_id,task_id,task_status) values(%s,%s,%s)" + db.execute_single(sql_str, (offer_id, task_id, task_status)) return jsonify({'status': 'ok'}) app.logger.info("{}".format(str(e))) return jsonify({'status': "error", "message": str(e)}) @@ -183,45 +184,44 @@ def upload_task_status(): @app.route('/h5_issue_task', methods=['GET']) def issue_task(): - sql_str = "select account_id,keep_rate,task_total,account_name,is_active,countries,link_url from account_h5_info where is_active=1 ORDER BY RAND() LIMIT 1" + sql_str = "select offer_id,keep_rate,task_total,account_name,is_active,countries,link_url from account_h5_info where is_active=1 ORDER BY RAND() LIMIT 1" result = db.execute_query(sql_str, ) if result: + offer_id = result[0][0] countries = result[0][-2] link_url = result[0][-1] task_total = int(result[0][2]) - app.logger.info("账户:{}需要执行新增任务总数为:{}".format(account_id, task_total)) + app.logger.info("账户:{}需要执行新增任务总数为:{}".format(offer_id, task_total)) now_date = datetime.now().strftime("%Y-%m-%d") - sql_str = "select execute_task_number,id from task_execute_info where account_id=%s and save_date=%s" - result = db.execute_query(sql_str, (account_id, now_date)) + sql_str = "select execute_task_number,id from task_execute_info where offer_id=%s and save_date=%s" + result = db.execute_query(sql_str, (offer_id, now_date)) execute_task_number = 0 if result: execute_task_number = result[0][0] must_task_number = math.ceil((task_total / 24) * int(datetime.today().hour)) - app.logger.info("账户:{}已执行任务个数为:{}".format(account_id, execute_task_number)) - app.logger.info("账户:{} 按照计划应该执行行任务个数为:{}".format(account_id, must_task_number)) + app.logger.info("账户:{}已执行任务个数为:{}".format(offer_id, execute_task_number)) + app.logger.info("账户:{} 按照计划应该执行行任务个数为:{}".format(offer_id, must_task_number)) if execute_task_number >= must_task_number * 1.2: app.logger.info( - "账户:{},已经执行新增任务{}个,执行速度过快,需要暂停执行".format(str(account_id), execute_task_number)) + "账户:{},已经执行新增任务{}个,执行速度过快,需要暂停执行".format(str(offer_id), execute_task_number)) return jsonify({"message": "账户:{} 执行任务过快,暂停执行".format(account_izd)}), 403 execute_task_number += 1 if result: - sql_str = "UPDATE task_execute_info SET execute_task_number = %s,update_time=%s WHERE account_id = %s and save_date=%s" - db.execute_update(sql_str, (execute_task_number, datetime.now(), account_id, now_date)) + sql_str = "UPDATE task_execute_info SET execute_task_number = %s,update_time=%s WHERE offer_id = %s and save_date=%s" + db.execute_update(sql_str, (execute_task_number, datetime.now(), offer_id, now_date)) else: - sql_str = "insert into task_execute_info(account_id,execute_task_number,save_date) values(%s, %s, %s)" - db.execute_update(sql_str, (account_id, execute_task_number, now_date)) + sql_str = "insert into task_execute_info(offer_id,execute_task_number,save_date) values(%s, %s, %s)" + db.execute_update(sql_str, (offer_id, execute_task_number, now_date)) sql_str = "select browser_info from task_h5_browser_info ORDER BY RAND() LIMIT 1" result = db.execute_query(sql_str) if result: task_id = uuid.uuid4().hex # 将任务,记录到对应表中 - sql_str = "insert into task_execute_status(account_id,task_id,task_status) values(%s,%s)" - db.execute_single(sql_str, (account_id, task_id)) + sql_str = "insert into task_execute_status(offer_id,task_id) values(%s,%s)" + db.execute_single(sql_str, (offer_id, task_id)) return jsonify({"link_url": link_url, "task_id": task_id, - "countries": countries, "file_name": f"{account_id}/main.js", "browser_info": json.loads(result[0][0])}) - else: - app.logger.info("未获取到账户:{} 相关配置信息".format(account_id)) + "countries": countries, "file_name": f"{offer_id}/main.js", "browser_info": json.loads(result[0][0])}) return jsonify({'status': 'error', 'msg': '传入账号错误'}) @@ -229,9 +229,9 @@ def issue_task(): def upload_file(): file = request.files['file'] file_name = file.filename - account_id = request.args.get('accountId') - app.logger.info("接口upload_file 传入accountId 为:{}".format(account_id)) - path = os.path.join(os.getcwd(), f"file/h5/{account_id}") + offer_id = request.args.get('offerId') + app.logger.info("接口upload_file 传入 offerId 为:{}".format(offer_id)) + path = os.path.join(os.getcwd(), f"file/h5/{offer_id}") if not os.path.exists(path): os.makedirs(path) file_path = os.path.join(path, file_name)