Files
withdrawcase/withdrawcase.py
jefferyzhao 8dc0d7adde first commit
2025-08-01 10:19:51 +08:00

97 lines
3.7 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from flask import Flask, request, redirect, abort, session, jsonify, json
from utils import *
import os, _thread, urllib, re
from flask_cors import CORS
import logging
from logging.handlers import TimedRotatingFileHandler
import datetime
# 初始化Flask应用
app = Flask(__name__)
app.config['SECRET_KEY'] = os.urandom(24)
CORS(app, supports_credentials=True)
def setup_logging():
"""配置日志系统,按天分割日志文件"""
# 创建日志目录
log_dir = "logs"
os.makedirs(log_dir, exist_ok=True)
# 设置日志格式
log_format = '%(asctime)s - %(name)s - %(levelname)s - %(message)s'
formatter = logging.Formatter(log_format)
# 创建按天轮转的文件处理器
file_handler = TimedRotatingFileHandler(
filename=os.path.join(log_dir, 'withdrawcase.log'),
when='midnight', # 每天午夜轮转
interval=1, # 每天一个文件
backupCount=30, # 保留30天的日志
encoding='utf-8'
)
file_handler.setFormatter(formatter)
file_handler.setLevel(logging.INFO)
# 创建控制台处理器
console_handler = logging.StreamHandler()
console_handler.setFormatter(formatter)
console_handler.setLevel(logging.DEBUG)
# 获取根logger并配置
logger = logging.getLogger()
logger.setLevel(logging.DEBUG)
logger.addHandler(file_handler)
logger.addHandler(console_handler)
# 初始化日志配置
setup_logging()
# 获取当前模块的 logger
logger = logging.getLogger(__name__)
logger.info("App started") # 会输出到文件和控制台
@app.route('/withdrawACase', methods=['POST'])
def withdrawCase():
try:
# 直接解析二进制数据为 JSON不需要手动 decode + loads
data = request.get_json() # Flask 提供的便捷方法
if data is None:
raise ValueError("Request data is not valid JSON")
# 安全获取 'data' 字段
result = data.get('data')
if result is None:
raise ValueError("Missing 'data' field in JSON")
withdrawal_opinion =result['withdrawal_opinion']
withdrawal_type = result['withdrawal_type']
withdrawal_reason = result['withdrawal_reason']
leader_opinion = result['leader_opinion']
reportno = result['reportno']
logger.info(f"收到请求 - withdrawal_opinion: {withdrawal_opinion}, "
f"withdrawal_type: {withdrawal_type},withdrawal_reason: {withdrawal_reason},reportno: {reportno}")
if withdrawal_opinion == "同意" and withdrawal_type:
# 调用函数
if withdrawal_type == "超出统筹服务范围" and leader_opinion in ("内保理赔", "机构审批统筹处理"):
# 处理超出统筹服务范围的撤案
logger.info(f"案件 {reportno}超出统筹服务范围,{leader_opinion}")
return jsonify({"status": "success", "message": "Case withdrawn successfully."})
else:
logger.info(f"案件 {reportno}开始撤案")
if withdraw_a_case(reportno, withdrawal_reason) ==1:
return jsonify({"status": "success", "message": "Case withdrawn successfully."})
else:
return jsonify({"status": "fail", "message": "Case mismatch."})
else:
logger.warning("案件不匹配 - withdrawal conditions not met")
return jsonify({"status": "success", "message": "Case mismatch."})
except Exception as e:
logger.error(f"Error in withdrawCase: {str(e)}", exc_info=True)
return jsonify({"status": "error", "message": str(e)})
if __name__ == '__main__':
app.run(host="0.0.0.0", port=3012, processes=True)