/** * Get channel by channelId, if the $one is true,this api only return a array,otherwise it will return multi arrays * @param $channelId, array, channel id array * @param $one, boolean, * @return array */ public function getById($channelId, $one = true) { if ($one) { return ModelChannel::findOne(['channelId' => ['$in' => $channelId]]); } else { return ModelChannel::findAll(['channelId' => ['$in' => $channelId]]); } }
/** * Get channel_id -> name map * @return array * @example ['54dbfc44e4b09d7f7799e96d' => 'hankliu62', '54d9c475e4b0abe717853ee6' => '群游汇'] */ private function _getChannelNameMap() { $channelNameMap = []; $channels = Channel::findAll([]); foreach ($channels as $channel) { $channelNameMap[$channel->channelId] = $channel->name; } return $channelNameMap; }
/** * get coupon qrcode info,this function will return three arrays, * 1.old qrcode,2.new qrcode,3.show qrcode to fronted * @param $params, array * @param $coupon, object * @param $exitsQrcode, array */ public static function getCouponQrcode($params, $coupon, $existsQrcode) { $data = $result = []; $channels = array_unique($params['channels']); $channelInfos = Channel::findAll(['channelId' => ['$in' => $channels]]); $existsChannelInfos = []; foreach ($channelInfos as $channelInfo) { $existsChannelInfos[$channelInfo['channelId']] = $channelInfo; } foreach ($channels as $channel) { //if the qrcode is exists in any channel,not need to create a new qrcode for this channel if (isset($existsQrcode[$channel])) { $qrcodeId = $existsQrcode[$channel]['id']; $origin = $existsQrcode[$channel]['origin']; $channelName = $existsQrcode[$channel]['channelName']; $qiniuKey = $existsQrcode[$channel]['qiniuKey']; unset($existsQrcode[$channel]); } else { //redirect url $mainDomain = Yii::$app->request->hostInfo; $content = $mainDomain . '/api/mobile/coupon?channelId=' . $channel . '&couponId=' . $params['couponId']; $qrcode = Yii::$app->qrcode->create($content, Coupon::COUPON_QRCODE_RECEIVED, $coupon->_id, $coupon->accountId, false); $qrcodeId = $qrcode->_id; $origin = $existsChannelInfos[$channel]['origin']; $channelName = $existsChannelInfos[$channel]['name']; $qiniuKey = $qrcode->qiniuKey; } $data[] = ['id' => $qrcodeId, 'origin' => $origin, 'channelName' => $channelName, 'channelId' => $channel, 'qiniuKey' => $qiniuKey]; $result[$origin][] = ['id' => (string) $qrcodeId, 'origin' => $origin, 'channelName' => $channelName, 'fileName' => $qiniuKey, 'channelId' => $channel, 'url' => Yii::$app->qrcode->getUrl($qiniuKey)]; } return [$existsQrcode, $data, $result]; }