public function setFather($fid) { //$result=$this->find()->select()->join('INNER JOIN','users u1',['u1.phone'=>$fatherphone])->join('LEFT JOIN','users u2','u3.phone = u1.fatherid')->join('Left JOIN','users u3','u3.phone = u2.fatherid')->one(); $f = Users::findOne(['id' => $fid]); // if($f['status']!=2){ // return true; // } $result = (new \yii\db\Query())->select('u1.id as f, u2.id as gf ,u3.id as ggf')->from('users u1')->where('u1.id=:id', [':id' => $fid])->join('LEFT JOIN', 'users u2', 'u2.id = u1.fatherid')->join('Left JOIN', 'users u3', 'u3.id = u2.fatherid')->one(); // var_dump($result); // return true; if ($result) { $this->fatherid = strval($fid); Users::updateAllCounters(['directalliancecount' => 1, 'allalliancecount' => 1], ['id' => $result['f']]); Users::updateAllCounters(['allalliancecount' => 1], ['id' => $result['gf']]); Users::updateAllCounters(['allalliancecount' => 1], ['id' => $result['ggf']]); return true; } else { return false; } }
public function actionRewardout() { $data = Yii::$app->request->post(); if (empty($data['count']) || empty($data['cardid']) || empty($data['phone'])) { return array('flag' => 0, 'msg' => 'no enough arg!'); } $user = Users::findOne(['phone' => $data['phone']]); if ($user['alliancerewards'] < 10) { return array('flag' => 0, 'msg' => 'reward not enough!'); } if ($user['status'] < 1) { return array('flag' => 0, 'msg' => 'have not real auth!'); } if ($user['status'] == 2) { return array('flag' => 0, 'msg' => 'have been get!'); } if (Traderecords::findOne(['userid' => $user['id'], 'type' => 0])) { return array('flag' => 0, 'msg' => 'have been get!'); } $model = new Traderecords(); $model->userid = $user['id']; $model->type = 0; $model->description = '自己人联盟联盟奖励提取'; $model->cardid = $data['cardid']; $model->count = $data['count']; $model->ishandled = 1; $model->created_at = time(); try { $result = $model->getDb()->transaction(function ($db) use($model, $user) { if (!$model->save()) { throw new Exception("save traderecord fail"); } $sub = $model['count'] * -1; $rows = Users::updateAllCounters(['alliancerewards' => $sub, 'status' => 1], 'id = ' . $user['id'] . ' and alliancerewards >= ' . $model['count']); if ($rows != 1) { throw new Exception("update user fail"); } }); } catch (\Exception $e) { return array('flag' => 0, 'error' => $e->getMessage(), 'msg' => 'reward out fail!'); } return array('flag' => 1, 'msg' => 'money out success!'); }