Example #1
0
 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();
     }
 }