public function actionCheckBuyEndDate() { //所要执行的任务,如数据符合某条件更新,删除,修改 // echo "查询产品用户购买产品结束日期\n"; // 持有中2的到期后改为已结束3 $condition_syz = array('condition' => "buy_status = :buy_status", 'params' => array(":buy_status" => FConfig::item("config.buy_status.syz"))); $res_cyz = $this->userProductBuy_model->findAll($condition_syz); foreach ($res_cyz as $val_cyz) { $publish = $val_cyz->publish; $product = $publish->product; //创建时间y-m-d + N $buy_time = strtotime($val_cyz->create_time); if ($product->invest_start_type == 1) { if ($product->invest_date_type == 1) { $start_timestamp = strtotime("+{$product->invest_days} day", $buy_time); $end_time = date('Y-m-d', strtotime("+{$product->earn_days} days", $start_timestamp)); $start_time = date('Y-m-d', $start_timestamp); } elseif ($product->invest_date_type == 2) { $invest_days = $product->invest_days; $i = 0; $start_timestamp = strtotime("+1 day", $buy_time); for ($j = 0; $j < 15; $j++) { $is = FHelper::isHoliday($start_timestamp); if ($is) { $start_timestamp = strtotime("+1 day", $start_timestamp); } else { $i++; $start_timestamp = strtotime("+1 day", $start_timestamp); } if ($i == $invest_days) { $start_timestamp = strtotime("-1 day", $start_timestamp); break; } } $end_time = date('Y-m-d', strtotime("+{$product->earn_days} days", $start_timestamp)); $start_time = date('Y-m-d', $start_timestamp); } } else { $start_time = $product->invest_start_date; $end_time = $product->invest_end_date; } if ($end_time <= date('Y-m-d')) { $transaction = Yii::app()->db->beginTransaction(); $earn_val = sprintf("%.2f", floatval($val_cyz->buy_val) * floatval($product->yield_rate_year) * $product->earn_days / (360 * 100)); $result_cyz = $this->userProductBuy_model->updateByPk($val_cyz->id, array('buy_status' => 3, 'earn_val' => $earn_val)); Yii::log("已结束:用户ID:{$val_cyz->user_id}:产品ID:{$product->id}:发布ID:{$publish->id}:购买时间:{$val_cyz->create_time}:结束日:{$end_time}", CLogger::LEVEL_INFO, 'buy.actionCheckBuyStatus'); if ($result_cyz) { $userInfoRes = $this->userInfo_model->find('user_id=:user_id', array(':user_id' => $val_cyz->user_id)); if ($userInfoRes) { $sumVal = floatval($userInfoRes->account_val) + floatval($val_cyz->buy_val) + floatval($earn_val); $updateAttr = array("account_val" => $sumVal); $result = $this->userInfo_model->updateByPk($userInfoRes->id, $updateAttr); if (!$result) { Yii::log("充值失败", CLogger::LEVEL_ERROR, 'buy.actionCheckBuyStatus'); $transaction->rollback(); } else { $transaction->commit(); } } } else { $transaction->rollback(); Yii::log("修改交易记录失败", CLogger::LEVEL_ERROR, 'order.frontReceive'); } } else { $result_cyz = 3; Yii::log("起息结束未到期:用户ID:{$val_cyz->user_id}:产品ID:{$product->id}:发布ID:{$publish->id}:购买时间:{$val_cyz->create_time}:结束日:{$end_time}", CLogger::LEVEL_INFO, 'buy.actionCheckBuyStatus'); } $now_time = date('Y-m-d H:i:s'); $condition_arr = array('user_id' => $val_cyz->user_id, 'product_id' => $product->id, 'p_id' => $publish->id, 'user_buy_time' => $val_cyz->create_time, 'invest_start_time' => $start_time, 'invest_end_time' => $end_time, 'op_time' => $now_time, 'buy_log_status' => $result_cyz); $buyLogs = new BuyLogs(); $buyLogs->attributes = $condition_arr; $buyLogs->save(); } }