Commit 6698a57c authored by wangzhengwen's avatar wangzhengwen

项目编辑,项目超时定时任务

parent cfb0f1f2
......@@ -316,6 +316,17 @@ class Project extends BaseController
unset($data['project_id']);
$data['put_end_time'] = strtotime($data['put_end_time']);
$project = ProjectModel::where(['id' => $id, 'user_id' => $request->userId])->find();
if (!$project)
{
return $this->returnMsg('项目不存在');
}
if ($project->sh_status==2)
{
return $this->returnMsg('项目已审核不能编辑');
}
$res = ProjectModel::where(['id' => $id, 'user_id' => $request->userId])->update($data);
return $this->returnMsg('success', 1, $res);
......
<?php
namespace app\api\controller\task;
use app\api\service\ProjectService;
class Project
{
public function run()
{
$res = ProjectService::handleProjectAfterTimeout();;
return json(['code'=>1,'msg'=>$res]);
}
}
\ No newline at end of file
......@@ -103,4 +103,97 @@ class ProjectService
}
}
//订单招募超时
public static function handleProjectAfterTimeout()
{
// 初始化返回数据和日志
$result = [
'status' => true,
'code' => 200,
'message' => '操作成功',
'data' => [
'processed_count' => 0,
'success_count' => 0
]
];
try {
// 获取当前时间戳
$currentTime = time();
// 记录开始日志
trace('开始执行项目招募超时处理,当前时间:'.date('Y-m-d H:i:s', $currentTime), 'project');
// 查询符合条件的项目
$projects = Project::where('status', 1)
->where('put_end_time', '<', $currentTime)
->select();
$totalCount = $projects->count();
$result['data']['processed_count'] = $totalCount;
// 记录查询到的项目数量
trace("共找到{$totalCount}个需要处理的超时项目", 'project');
// 如果没有符合条件的项目,直接返回
if ($totalCount === 0) {
$result['message'] = '没有需要处理的超时项目';
trace('没有需要处理的超时项目,任务结束', 'project');
return $result;
}
$successCount = 0;
// 遍历并更新项目状态
foreach ($projects as $project) {
try {
$project->status = 6; // 项目招募已结束
$project->updatetime = $currentTime;
if ($project->save()) {
$successCount++;
// 记录单个项目处理成功日志
trace("项目ID:{$project->id} 处理成功,状态已更新为招募结束", 'project');
// 这里可以添加其他逻辑,比如发送通知等
// $this->sendNotification($project);
} else {
// 记录单个项目处理失败日志
trace("项目ID:{$project->id} 处理失败,保存时出错", 'error');
}
} catch (\Exception $e) {
// 记录单个项目处理异常日志
trace("项目ID:{$project->id} 处理异常:".$e->getMessage(), 'error');
}
}
$result['data']['success_count'] = $successCount;
// 如果有部分失败的情况
if ($successCount < $totalCount) {
$failCount = $totalCount - $successCount;
$result['message'] = "处理完成,成功{$successCount}个,失败{$failCount}个";
trace("处理完成,成功{$successCount}个,失败{$failCount}个", 'project');
} else {
$result['message'] = "所有{$successCount}个项目处理成功";
trace("所有{$successCount}个项目处理成功", 'project');
}
} catch (\Exception $e) {
// 记录全局异常
trace("项目招募超时处理出现全局异常:".$e->getMessage(), 'error');
$result = [
'status' => false,
'code' => 500,
'message' => '处理过程中出现异常:'.$e->getMessage(),
'data' => $result['data']
];
}
trace('项目招募超时处理任务结束', 'project');
return $result;
}
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment