""" 定时任务管理控制器模块 ============================================================= 提供定时任务(Job)相关的API接口。 """ import logging from flask import Blueprint from application.middleware.check_demo import check_demo from application.middleware.check_permission import check_permission from application.services import job from utils.request import parse_batch_ids job_blue = Blueprint('job', __name__, url_prefix='/job') from utils import R # ============================================================ # 任务分页查询 # ============================================================ @job_blue.route('/page', methods=["GET"]) @check_permission("sys:job:page") def page(): """查询定时任务分页数据""" result = job.get_job_page() return result # ============================================================ # 任务详情查询 # ============================================================ @job_blue.route('/detail/', methods=["GET"]) @check_permission("sys:job:detail") def detail(id): """查询定时任务详情""" data = job.get_job_detail(id) if data: return R.ok(data=data) return R.failed("任务不存在") # ============================================================ # 任务添加 # ============================================================ @job_blue.route('/add', methods=["POST"]) @check_permission("sys:job:add") @check_demo def add(): """添加定时任务""" result = job.add_job() return result # ============================================================ # 任务更新 # ============================================================ @job_blue.route('/update', methods=["PUT"]) @check_permission("sys:job:update") @check_demo def update(): """更新定时任务""" result = job.update_job() return result # ============================================================ # 任务删除 # ============================================================ @job_blue.route('/delete/', methods=["DELETE"]) @check_permission("sys:job:delete") @check_demo def delete(id): """删除定时任务""" result = job.delete_jobs(id) return result # ============================================================ # 任务批量删除 # ============================================================ @job_blue.route('/batchDelete', methods=["DELETE"]) @check_permission("sys:job:batch_delete") @check_demo def batch_delete(): """批量删除定时任务""" id_str, err = parse_batch_ids() if err: return err return job.delete_jobs(id_str) # ============================================================ # 任务状态设置 # ============================================================ @job_blue.route('/status', methods=["POST"]) @check_permission("sys:job:status") @check_demo def status(): """设置任务状态""" result = job.update_job_status() return result # ============================================================ # 暂停任务 # ============================================================ @job_blue.route('/pause/', methods=["GET"]) @check_permission("sys:job:pause") @check_demo def pause(id): """暂停任务""" result = job.pause_job(id) return result # ============================================================ # 恢复任务 # ============================================================ @job_blue.route('/resume/', methods=["GET"]) @check_permission("sys:job:resume") @check_demo def resume(id): """恢复任务""" result = job.resume_job(id) return result # ============================================================ # 立即执行 # ============================================================ @job_blue.route('/runOnce/', methods=["GET"]) @check_permission("sys:job:runOnce") @check_demo def run_once(id): """立即执行一次任务""" result = job.run_job_once(id) return result # ============================================================ # 重新加载调度器 # ============================================================ @job_blue.route('/reload', methods=["GET"]) @check_permission("sys:job:reload") @check_demo def reload(): """重新加载所有任务到调度器""" result = job.reload_all_jobs() return result # ============================================================ # 发送测试短信 # ============================================================ @job_blue.route('/sendSms', methods=["POST"]) @check_permission("sys:job:sendSms") def sendSms(): """ 发送测试短信 Request Body: { "phone": "13800138000", "template_code": "SMS_123456", "template_params": {"code": "123456"} } """ from application.services import sms_svc from utils.request import get_json_data data = get_json_data() if not data: return R.failed("参数不能为空") phone = data.get('phone') template_code = data.get('template_code') template_params = data.get('template_params') if not phone or not template_code: return R.failed("手机号和模板CODE不能为空") success = sms_svc.send_sms( phone=phone, template_code=template_code, template_params=template_params, ) if success: return R.ok(msg="短信发送成功") return R.failed("短信发送失败,请检查配置")