Example #1
0
 /**
  * 取得一个订单的输出 Txt
  *
  *
  */
 private function getOrderTxt($orderReferInfo, $orderGoodsArray)
 {
     $retTxt = '';
     $orderGoodsNameStr = '';
     $coupon = $orderReferInfo['surplus'] + $orderReferInfo['bonus'];
     // 商品总价
     $orderAmount = $orderReferInfo['goods_amount'] - $orderReferInfo['discount'] - $orderReferInfo['extra_discount'] - $orderReferInfo['refund'];
     // 商品总的额外退款金额
     $orderExtraRefund = 0;
     // 订单状态
     $orderStatus = 'refund';
     switch ($orderReferInfo['pay_status']) {
         case OrderBasicService::PS_UNPAYED:
             $orderStatus = 'unpay';
             break;
         case OrderBasicService::PS_PAYED:
             $orderStatus = 'pay';
             break;
         default:
             $orderStatus = 'refund';
     }
     // 对订单中每个商品单独计算
     foreach ($orderGoodsArray as $orderGoodsItem) {
         $orderGoodsNameStr .= '{(' . $orderGoodsItem['goods_id'] . ')' . $orderGoodsItem['goods_name'] . '[' . $orderGoodsItem['goods_number'] . ' 件]},';
         if (OrderGoodsService::OGS_UNPAY != $orderGoodsItem['order_goods_status'] && OrderGoodsService::OGS_PAY != $orderGoodsItem['order_goods_status']) {
             // 有一个 order_goods 是退款状态,整个订单就是退款状态
             $orderStatus = 'refund';
         }
         // 累计额外退款的总金额
         $orderExtraRefund += $orderGoodsItem['extra_refund'];
     }
     $orderGoodsNameStr = str_replace('|', '_', $orderGoodsNameStr);
     $orderGoodsNameStr = mb_substr($orderGoodsNameStr, 0, 240);
     $referParamArray = json_decode($orderReferInfo['refer_param'], true);
     // CPS 应付总价
     $orderAmountOfCps = $orderAmount - $coupon - $orderExtraRefund;
     $orderAmountOfCps = $orderAmountOfCps > 0 ? $orderAmountOfCps : 0;
     // QQ订单要多输出一条记录
     if ('qqlogin' == $orderReferInfo['login_type']) {
         // 取得QQ登陆用户的信息
         static $userBasicService = null;
         if (null == $userBasicService) {
             $userBasicService = new UserBasicService();
         }
         $userInfo = $userBasicService->loadUserById($orderReferInfo['user_id']);
         //取得 QQ 用户的 openId ,QQ登陆的用户 sns_login 例子  qq:476BA0B2332440759D485548637DFCDD
         $qqUserOpenId = $userInfo->sns_login;
         $qqUserOpenId = substr($qqUserOpenId, strpos($qqUserOpenId, ':') + 1);
         //输出 QQ 登陆的记录
         $retTxt .= $referParamArray['wi'] . "||" . date("Y-m-d H:i:s", Time::gmTimeToLocalTime($orderReferInfo['add_time'])) . "||" . $orderReferInfo['order_id'] . "||" . Money::toSmartyDisplay($orderAmountOfCps) . "||" . $orderGoodsNameStr . "||" . $orderStatus . "||" . $orderStatus . "||alipay" . "||" . Money::toSmartyDisplay($orderReferInfo['shipping_fee']) . "||" . Money::toSmartyDisplay($coupon) . "||0" . "||" . $qqUserOpenId . "||" . 'bangzhufu' . "||" . 'qqlogin003' . "||" . date("Y-m-d H:i:s", Time::gmTimeToLocalTime($orderReferInfo['update_time'])) . "\n";
     }
     if ('YIQIFACPS' != $orderReferInfo['utm_source']) {
         // 不是亿起发的订单
         goto out;
     }
     //输出 亿起发 的订单记录
     $retTxt .= $referParamArray['wi'] . "||" . date("Y-m-d H:i:s", Time::gmTimeToLocalTime($orderReferInfo['add_time'])) . "||" . $orderReferInfo['order_id'] . "||" . Money::toSmartyDisplay($orderAmountOfCps) . "||" . $orderGoodsNameStr . "||" . $orderStatus . "||" . $orderStatus . "||alipay" . "||" . Money::toSmartyDisplay($orderReferInfo['shipping_fee']) . "||" . Money::toSmartyDisplay($coupon) . "||0" . "||" . "||" . "||" . "||" . date("Y-m-d H:i:s", Time::gmTimeToLocalTime($orderReferInfo['update_time'])) . "\n";
     out:
     return $retTxt;
 }
Example #2
0
    private function getGoodsItemXml($goodsItem, $currentGmTime)
    {
        $goodsViewUrl = RouteHelper::makeUrl('/Goods/View', array('goods_id' => $goodsItem['goods_id']), false, true);
        // 如果没有 update_time 就用 add_time 代替
        $goodsItem['update_time'] = $goodsItem['update_time'] > 0 ? $goodsItem['update_time'] : $goodsItem['add_time'];
        $goodsLastModTime = date('Y-m-d\\TH:i:sP', Time::gmTimeToLocalTime($goodsItem['update_time']));
        $priority = 0.4;
        $timeDiff = $currentGmTime - $goodsItem['update_time'];
        if ($timeDiff > 259200) {
            // 3天前的修改,优先级降低
            $priority = 0.4;
        } else {
            if ($timeDiff > 86400) {
                // 1 天到 3 天的修改
                $priority = 0.8;
            } else {
                // 最新修改,优先级最高
                $priority = 1.0;
            }
        }
        $xmlitem = <<<XMLITEM
\t    <url>
\t    <loc><![CDATA[{$goodsViewUrl}]]></loc>
\t    <lastmod>{$goodsLastModTime}</lastmod>
\t    <changefreq>always</changefreq>
\t    <priority>{$priority}</priority>
        </url>
XMLITEM;
        return $xmlitem;
    }
Example #3
0
 public function getOrderReferNotifyUrl($f3, $orderRefer)
 {
     if (!('YIQIFACPS' == $orderRefer->utm_source || 'qqlogin' == $orderRefer->login_type && empty($orderRefer->utm_source))) {
         // 不是亿起发的订单,或者不是QQ登陆订单
         return null;
     }
     $notifyUrlArray = array();
     // 取得记录的 亿起发 参数
     $referParamArray = json_decode($orderRefer->refer_param, true);
     // 取得订单信息
     $orderBasicService = new OrderBasicService();
     $orderInfo = $orderBasicService->loadOrderInfoById($orderRefer->order_id);
     // 取得订单商品详情
     $orderGoodsArray = $orderBasicService->fetchOrderGoodsArray($orderRefer->order_id);
     // 计算佣金
     $orderGoodsNameStr = '';
     $coupon = $orderInfo->surplus + $orderInfo->bonus;
     // 商品总价
     $orderAmount = $orderInfo->goods_amount - $orderInfo->discount - $orderInfo->extra_discount - $orderInfo->refund;
     // 商品总的额外退款金额
     $orderExtraRefund = 0;
     // 对订单中每个商品单独计算
     foreach ($orderGoodsArray as $orderGoodsItem) {
         $orderGoodsNameStr .= '{(' . $orderGoodsItem['goods_id'] . ')' . $orderGoodsItem['goods_name'] . '[' . $orderGoodsItem['goods_number'] . ' 件]},';
         // 累计额外退款的总金额
         $orderExtraRefund += $orderGoodsItem['extra_refund'];
     }
     // CPS 应付总价
     $orderAmountOfCps = $orderAmount - $coupon - $orderExtraRefund;
     $orderAmountOfCps = $orderAmountOfCps > 0 ? $orderAmountOfCps : 0;
     $orderGoodsNameStr = str_replace('|', '_', $orderGoodsNameStr);
     $orderGoodsNameStr = mb_substr($orderGoodsNameStr, 0, 240);
     // 推送QQ登陆订单
     if ('qqlogin' == $orderRefer->login_type) {
         // 取得QQ登陆用户的信息
         $userBasicService = new UserBasicService();
         $userInfo = $userBasicService->loadUserById($orderInfo->user_id);
         //取得 QQ 用户的 openId ,QQ登陆的用户 sns_login 例子  qq:476BA0B2332440759D485548637DFCDD
         $qqUserOpenId = $userInfo->sns_login;
         $qqUserOpenId = substr($qqUserOpenId, strpos($qqUserOpenId, ':') + 1);
         // QQ 登陆需要额外推单
         $param = "cid=6406" . "&wid=435983" . "&qqoid=" . $qqUserOpenId . "&qqmid=bangzhufu" . "&ct=qqlogin003" . "&on=" . $orderInfo->order_id . "&ta=1" . "&dt=" . YiqifaCpsRefer::$notifyParamDt . "&pp=" . Money::toSmartyDisplay($orderAmountOfCps) . "&sd=" . urlencode(date("Y-m-d H:i:s", Time::gmTimeToLocalTime($orderInfo->add_time))) . "&os=pay" . "&ps=pay" . "&pw=alipay" . "&far=" . Money::toSmartyDisplay($orderInfo->shipping_fee) . "&fav=" . Money::toSmartyDisplay($coupon) . "&fac=0" . "&encoding=utf-8";
         // QQ 登陆订单推送
         $notifyUrlArray[] = YiqifaCpsRefer::yiqifaNotifyGateway . $param;
     }
     if ('YIQIFACPS' != $orderRefer->utm_source) {
         // 不是亿起发的订单
         goto out;
     }
     // 亿起发 正常 CPS 推单
     $param = "cid=" . $referParamArray['cid'] . "&wi=" . $referParamArray['wi'] . "&on=" . $orderInfo->order_id . "&ta=1" . "&pna=" . urlencode($orderGoodsNameStr) . "&dt=" . YiqifaCpsRefer::$notifyParamDt . "&pp=" . Money::toSmartyDisplay($orderAmountOfCps) . "&sd=" . urlencode(date("Y-m-d H:i:s", Time::gmTimeToLocalTime($orderInfo->add_time))) . "&os=pay" . "&ps=pay" . "&pw=alipay" . "&far=" . Money::toSmartyDisplay($orderInfo->shipping_fee) . "&fav=" . Money::toSmartyDisplay($coupon) . "&fac=0" . "&encoding=utf-8";
     // 亿起发订单推送
     $notifyUrlArray[] = YiqifaCpsRefer::yiqifaNotifyGateway . $param;
     out:
     return $notifyUrlArray;
 }
Example #4
0
    /**
     * 输出文章的列表
     *
     * @param $f3
     * @param $pageNo
     */
    public function outputArticleViewListXml($f3, $pageNo)
    {
        global $smarty;
        // 缓存 1 小时
        enableSmartyCache(true, 3600, \Smarty::CACHING_LIFETIME_CURRENT);
        $smartyCacheId = 'Api|' . md5(__NAMESPACE__ . '\\' . __CLASS__ . '\\' . __METHOD__ . '\\' . $pageNo);
        // 判断是否有缓存
        if ($smarty->isCached('empty.tpl', $smartyCacheId)) {
            goto out_display;
        }
        // 查询商品
        $articleArray = SearchHelper::search(SearchHelper::Module_Article, 'a.article_id, a.update_time', QueryBuilder::buildSearchParamArray(array('a.is_open' => 1)), array(array('a.article_id', 'desc')), $pageNo * $this->pageSize, $this->pageSize);
        $xmlItems = '';
        if (empty($articleArray)) {
            goto out;
        }
        foreach ($articleArray as $articleItem) {
            $articleViewUrl = RouteHelper::makeUrl('/Article/View', array('article_id' => $articleItem['article_id']), false, true);
            $articleLastModTime = date('Y-m-d\\TH:i:sP', Time::gmTimeToLocalTime($articleItem['update_time']));
            $xmlItems .= <<<XMLITEM
\t    <url>
\t    <loc><![CDATA[{$articleViewUrl}]]></loc>
\t    <lastmod>{$articleLastModTime}</lastmod>
\t    <changefreq>always</changefreq>
        </url>
XMLITEM;
        }
        out:
        $apiXml = <<<XML
<?xml version="1.0" encoding="utf-8" ?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" >
\t{$xmlItems}
</urlset>
XML;
        unset($xmlItems);
        $smarty->assign('outputContent', $apiXml);
        out_display:
        header('Content-Type:text/xml;charset=utf-8');
        header("Cache-Control: no-cache, must-revalidate");
        // HTTP/1.1 //查询信息
        $smarty->display('empty.tpl', $smartyCacheId);
    }