"""PPT/海报管理后台路由。""" from flask import Blueprint, request, jsonify from insurance.admin.ppt_admin_service import PptAdminService from insurance.middleware.auth_middleware import permission_required ppt_admin_bp = Blueprint("ppt_admin", __name__) ppt_admin_service = PptAdminService() # ---- 保司管理 ---- @ppt_admin_bp.route("/companies", methods=["GET"]) @permission_required("config_manage") def list_companies(): params = { "page": request.args.get("page", 1, type=int), "page_size": request.args.get("page_size", 20, type=int), "status": request.args.get("status", type=int), "keyword": request.args.get("keyword", ""), } return jsonify(ppt_admin_service.list_companies(params)) @ppt_admin_bp.route("/companies", methods=["POST"]) @permission_required("config_manage") def create_company(): return jsonify(ppt_admin_service.create_company(request.get_json(force=True))) @ppt_admin_bp.route("/companies/", methods=["PUT"]) @permission_required("config_manage") def update_company(company_id): return jsonify(ppt_admin_service.update_company(company_id, request.get_json(force=True))) @ppt_admin_bp.route("/companies//status", methods=["PUT"]) @permission_required("config_manage") def update_company_status(company_id): return jsonify(ppt_admin_service.update_company_status(company_id, request.get_json(force=True))) # ---- 产品管理 ---- @ppt_admin_bp.route("/products", methods=["GET"]) @permission_required("config_manage") def list_products(): params = { "page": request.args.get("page", 1, type=int), "page_size": request.args.get("page_size", 20, type=int), "company_id": request.args.get("company_id", ""), "plan_type": request.args.get("plan_type", ""), "status": request.args.get("status", type=int), } return jsonify(ppt_admin_service.list_products(params)) @ppt_admin_bp.route("/products", methods=["POST"]) @permission_required("config_manage") def create_product(): return jsonify(ppt_admin_service.create_product(request.get_json(force=True))) @ppt_admin_bp.route("/products/", methods=["PUT"]) @permission_required("config_manage") def update_product(product_id): return jsonify(ppt_admin_service.update_product(product_id, request.get_json(force=True))) @ppt_admin_bp.route("/products//status", methods=["PUT"]) @permission_required("config_manage") def update_product_status(product_id): return jsonify(ppt_admin_service.update_product_status(product_id, request.get_json(force=True))) @ppt_admin_bp.route("/products//manual/upload", methods=["POST"]) @permission_required("config_manage") def upload_manual(product_id): file = request.files.get("file") if not file: return jsonify({"code": 1001, "message": "请上传文件", "data": None}) return jsonify(ppt_admin_service.upload_manual(product_id, file)) @ppt_admin_bp.route("/products//manual/parse", methods=["POST"]) @permission_required("config_manage") def parse_manual(product_id): return jsonify(ppt_admin_service.parse_manual(product_id)) @ppt_admin_bp.route("/products//manual/review", methods=["PUT"]) @permission_required("config_manage") def review_manual(product_id): return jsonify(ppt_admin_service.review_manual(product_id, request.get_json(force=True))) # ---- PPT 模板管理 ---- @ppt_admin_bp.route("/templates", methods=["GET"]) @permission_required("config_manage") def list_templates(): params = { "page": request.args.get("page", 1, type=int), "page_size": request.args.get("page_size", 20, type=int), "plan_type": request.args.get("plan_type", ""), "status": request.args.get("status", type=int), } return jsonify(ppt_admin_service.list_templates(params)) @ppt_admin_bp.route("/templates", methods=["POST"]) @permission_required("config_manage") def create_template(): return jsonify(ppt_admin_service.create_template(request.get_json(force=True))) @ppt_admin_bp.route("/templates/", methods=["PUT"]) @permission_required("config_manage") def update_template(template_id): return jsonify(ppt_admin_service.update_template(template_id, request.get_json(force=True))) @ppt_admin_bp.route("/templates//status", methods=["PUT"]) @permission_required("config_manage") def update_template_status(template_id): return jsonify(ppt_admin_service.update_template_status(template_id, request.get_json(force=True))) # ---- 海报模板管理 ---- @ppt_admin_bp.route("/poster-templates", methods=["GET"]) @permission_required("config_manage") def list_poster_templates(): params = { "page": request.args.get("page", 1, type=int), "page_size": request.args.get("page_size", 20, type=int), "status": request.args.get("status", type=int), } return jsonify(ppt_admin_service.list_poster_templates(params)) @ppt_admin_bp.route("/poster-templates", methods=["POST"]) @permission_required("config_manage") def create_poster_template(): return jsonify(ppt_admin_service.create_poster_template(request.get_json(force=True))) @ppt_admin_bp.route("/poster-templates/", methods=["PUT"]) @permission_required("config_manage") def update_poster_template(template_id): return jsonify(ppt_admin_service.update_poster_template(template_id, request.get_json(force=True))) @ppt_admin_bp.route("/poster-templates//status", methods=["PUT"]) @permission_required("config_manage") def update_poster_template_status(template_id): return jsonify(ppt_admin_service.update_poster_template_status(template_id, request.get_json(force=True))) # ---- 文案模板管理 ---- @ppt_admin_bp.route("/copy-templates", methods=["GET"]) @permission_required("config_manage") def list_copy_templates(): params = { "page": request.args.get("page", 1, type=int), "page_size": request.args.get("page_size", 20, type=int), "status": request.args.get("status", type=int), } return jsonify(ppt_admin_service.list_copy_templates(params)) @ppt_admin_bp.route("/copy-templates", methods=["POST"]) @permission_required("config_manage") def create_copy_template(): return jsonify(ppt_admin_service.create_copy_template(request.get_json(force=True))) @ppt_admin_bp.route("/copy-templates/", methods=["PUT"]) @permission_required("config_manage") def update_copy_template(template_id): return jsonify(ppt_admin_service.update_copy_template(template_id, request.get_json(force=True))) @ppt_admin_bp.route("/copy-templates/", methods=["DELETE"]) @permission_required("config_manage") def delete_copy_template(template_id): return jsonify(ppt_admin_service.delete_copy_template(template_id)) # ---- 历史记录管理 ---- @ppt_admin_bp.route("/history", methods=["GET"]) @permission_required("config_manage") def list_history(): params = { "page": request.args.get("page", 1, type=int), "page_size": request.args.get("page_size", 20, type=int), "user_id": request.args.get("user_id", ""), "company_id": request.args.get("company_id", ""), "action_type": request.args.get("action_type", ""), } return jsonify(ppt_admin_service.list_history(params)) @ppt_admin_bp.route("/history/", methods=["DELETE"]) @permission_required("config_manage") def delete_history(history_id): return jsonify(ppt_admin_service.delete_history(history_id)) @ppt_admin_bp.route("/history/export", methods=["GET"]) @permission_required("config_manage") def export_history(): from flask import Response params = { "user_id": request.args.get("user_id", ""), "company_id": request.args.get("company_id", ""), "action_type": request.args.get("action_type", ""), } csv_content = ppt_admin_service.export_history_csv(params) return Response( csv_content, mimetype="text/csv", headers={"Content-Disposition": "attachment; filename=ppt_history.csv"}, ) # ---- 系统配置 ---- @ppt_admin_bp.route("/settings", methods=["GET"]) @permission_required("config_manage") def get_settings(): return jsonify(ppt_admin_service.get_settings()) @ppt_admin_bp.route("/settings", methods=["PUT"]) @permission_required("config_manage") def update_settings(): updated_by = getattr(request, "user_id", "") return jsonify(ppt_admin_service.update_settings(request.get_json(force=True), updated_by))