private function preProcessDrawMembers($condition, $accountId)
 {
     $rows = array();
     $scores = EarlybirdSmsUtil::getExchangeGoodsScore($condition['startDate'], $condition['endDate'], $accountId);
     asort($scores);
     foreach ($scores as $key => $value) {
         $row = array();
         if (abs($value) >= $condition['pointsThree']) {
             $member = Member::findByPk(new \MongoId($key));
             if (!$member->isDeleted) {
                 $row['id'] = $key;
                 $row['exchangeGoodsScore'] = abs($value);
                 $row['cardNumber'] = $member->cardNumber;
                 //拿到符合一等奖条件的人
                 if (abs($value) >= $condition['pointsOne']) {
                     //eg: points>=2000
                     $row['prizeName'] = $condition['prizeNameOne'];
                     $row['prizeLevel'] = '一等獎資格';
                 }
                 //拿到符合二等奖条件的人
                 if (abs($value) < $condition['pointsOne'] && abs($value) >= $condition['pointsTwo']) {
                     //eg: 1000<=points<2000
                     $row['prizeName'] = $condition['prizeNameTwo'];
                     $row['prizeLevel'] = '二等獎資格';
                 }
                 //拿到符合三等奖条件的人
                 if (abs($value) < $condition['pointsTwo'] && abs($value) >= $condition['pointsThree']) {
                     //eg: 200<=points<1000
                     $row['prizeName'] = $condition['prizeNameThree'];
                     $row['prizeLevel'] = '三等獎資格';
                 }
                 if (!empty($member->properties)) {
                     foreach ($member->properties as $property) {
                         if ($property['name'] == 'tel') {
                             $row['mobile'] = "'" . $property['value'];
                         }
                         if ($property['name'] == 'name') {
                             $row['name'] = $property['value'];
                         }
                     }
                 }
             }
         }
         $rows[] = $row;
         unset($row, $member);
     }
     return $rows;
 }
 public function actionDrawPrize()
 {
     $params = $this->getParams();
     $accountId = $this->getAccountId();
     if (empty($params) || count($params) < 8) {
         throw new BadRequestHttpException('params are missing');
     }
     //拿到所有活动期间兑换过奖品的人 array('560399d6475df4c7378b4572'=>-200)
     $scores = EarlybirdSmsUtil::getExchangeGoodsScore($params['startDate'], $params['endDate'], $accountId);
     $scoresOne = array();
     $scoresTwo = array();
     $scoresThree = array();
     foreach ($scores as $key => $value) {
         $member = Member::findByPk(new \MongoId($key));
         if (!$member->isDeleted) {
             //拿到符合一等奖条件的人
             if (abs($value) >= $params['pointsOne']) {
                 //eg: points>=2000
                 $scoresOne[] = $key;
             }
             //拿到符合二等奖条件的人
             if (abs($value) < $params['pointsOne'] && abs($value) >= $params['pointsTwo']) {
                 //eg: 1000<=points<2000
                 $scoresTwo[] = $key;
             }
             //拿到符合三等奖条件的人
             if (abs($value) < $params['pointsTwo'] && abs($value) >= $params['pointsThree']) {
                 //eg: 200<=points<1000
                 $scoresThree[] = $key;
             }
         }
         unset($member);
     }
     shuffle($scoresOne);
     //抽奖 (随机打乱阵列)
     shuffle($scoresTwo);
     shuffle($scoresThree);
     $prizeOneIds = null;
     $prizeTwoIds = null;
     $prizeThreeIds = null;
     //抽一等奖
     if (count($scoresOne) < $params['quantityOne']) {
         $prizeOneIds = $scoresOne;
     } else {
         $prizeOneIds = array_slice($scoresOne, 0, $params['quantityOne']);
     }
     //抽二等奖
     if (count($scoresTwo) < $params['quantityTwo']) {
         $prizeTwoIds = $scoresTwo;
     } else {
         $prizeTwoIds = array_slice($scoresTwo, 0, $params['quantityTwo']);
     }
     //抽三等奖
     if (count($scoresThree) < $params['quantityThree']) {
         $prizeThreeIds = $scoresThree;
     } else {
         $prizeThreeIds = array_slice($scoresThree, 0, $params['quantityThree']);
     }
     unset($scoresOne, $scoresTwo, $scoresThree);
     //通过中奖者memberId获取中奖者信息
     $prizeOneMembers = array();
     $prizeTwoMembers = array();
     $prizeThreeMembers = array();
     foreach ($prizeOneIds as $key => $value) {
         $prizeOneMembers[] = $this->_getMemberInfo($value, 'one', $scores);
     }
     foreach ($prizeTwoIds as $key => $value) {
         $prizeTwoMembers[] = $this->_getMemberInfo($value, 'two', $scores);
     }
     foreach ($prizeThreeIds as $key => $value) {
         $prizeThreeMembers[] = $this->_getMemberInfo($value, 'three', $scores);
     }
     unset($prizeOneIds, $prizeTwoIds, $prizeThreeIds, $scores);
     //保存抽奖记录
     if (empty($prizeOneMembers) && empty($prizeTwoMembers) && empty($prizeThreeMembers)) {
         Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
         return ['code' => 1000];
     }
     $recordId = EarlyBirdDrawRecord::createDrawRecord($params);
     $this->_saveWinner($prizeOneMembers, $recordId, $params['prizeNameOne']);
     $this->_saveWinner($prizeTwoMembers, $recordId, $params['prizeNameTwo']);
     $this->_saveWinner($prizeThreeMembers, $recordId, $params['prizeNameThree']);
     // return ['prizeOne'=>$prizeOneMembers, 'prizeTwo'=>$prizeTwoMembers, 'prizeThree'=>$prizeThreeMembers];
 }