Beispiel #1
0
 public function actionReturnRateMonth()
 {
     $id = wanhunet::$app->request->post('id');
     /** @var InvestMonth[] $investMonths */
     $investMonths = InvestMonth::find()->joinWith(['investList' => function ($query) {
         /** @var \yii\db\ActiveQuery $query */
         $query->joinWith(['member' => function ($query) {
             /** @var \yii\db\ActiveQuery $query */
             $query->select(Member::$SELECT_ROW);
         }, 'invest']);
     }])->orderBy('id desc')->where(['m_status' => InvestMonth::STATUS_ACTIVE])->andWhere([InvestMonth::tableName() . '.id' => $id])->andWhere(['<=', 'm_time', time()])->asArray()->all();
     $members = [];
     $assetMoneys = [];
     $ims = [];
     $investOver = [];
     foreach ($investMonths as $investMonth) {
         $memberId = $investMonth['investList']['member']['id'];
         if (isset($members[$memberId])) {
             $memberAsset =& $members[$memberId];
         } else {
             $asset = $asset = Asset::find()->where(['user_id' => $memberId])->asArray()->one();
             $members[$memberId] = $asset['money'];
             $memberAsset =& $members[$memberId];
         }
         if (InvestMonth::find()->where(['invest_list_id' => $investMonth['invest_list_id'], 'm_status' => InvestMonth::STATUS_ACTIVE])->count() == 1) {
             $investOver[] = $investMonth['investList']['id'];
             $step = $investMonth['investList']['investment_sum'] + $investMonth['m_step'];
         } else {
             $step = $investMonth['m_step'];
         }
         $memberAsset += $step;
         $assetMoneys[] = [$memberId, $step, AssetMoney::STATUS_INC, AssetMoney::TYPE_MONEY, wanhunet::$app->controller->getRoute(), $memberId, json_encode([mb_substr($investMonth['investList']['invest']['title'], 0, 5, 'utf-8') . '第' . $investMonth['m_date'] . '个月的返息']), time(), time()];
         $ims[$investMonth['id']] = ['m_status' => InvestMonth::STATUS_DELETED];
     }
     $batchInsertRows = ['user_id', 'step', 'status', 'type', 'action', 'action_uid', 'llinfo', 'created_at', 'updated_at'];
     $connection = wanhunet::$app->db;
     foreach ($members as $user_id => $amemberAsset) {
         $connection->createCommand()->update(Asset::tableName(), ['money' => $amemberAsset], ['user_id' => $user_id])->execute();
     }
     foreach ($ims as $im_id => $im) {
         $connection->createCommand()->update(InvestMonth::tableName(), $im, ['id' => $im_id])->execute();
     }
     foreach ($investOver as $in) {
         $connection->createCommand()->update(InvestList::tableName(), ['status' => InvestList::STATUS_ORDER_TRIAL], ['id' => $in])->execute();
     }
     if (count($assetMoneys) > 0) {
         $connection->createCommand()->batchInsert(AssetMoney::tableName(), $batchInsertRows, $assetMoneys)->execute();
     }
 }