Authored by 2586703@qq.com

Merge branch 'develop' of http://git.dev.yoho.cn/web/yohood into develop

... ... @@ -64,8 +64,7 @@ define('yohood', function(require, exports) {
}
//设置商品滚动条
function setGoodsSwiper() {
var goodsSwiper,
limitedPrev,
var limitedPrev,
limitedNext,
swiperLen;
//限量商品滑动
... ...
... ... @@ -10,7 +10,8 @@ class Controller_News extends Controller_Abstract
$requestTag = trim($this->_request->tag);//标签
$limit = 40;
$tag = $requestTag;
if($this->_platform == 'android' || $this->_platform == 'iphone')
$exceptTags = array('手机视频');
/*if($this->_platform == 'android' || $this->_platform == 'iphone')
{
$exceptTags = array('视频');
if($requestTag == '视频')
... ... @@ -21,7 +22,7 @@ class Controller_News extends Controller_Abstract
else
{
$exceptTags = array('手机视频');
}
}*/
$total = Facade_News::getTotal($tag, $exceptTags);
$page = new Lib_Helper_Pagination($total, $limit);
if ($tag)
... ... @@ -67,7 +68,8 @@ class Controller_News extends Controller_Abstract
public function indexMobileAction()
{
$requestTag = $tag = trim($this->_request->tag);//标签
$exceptTags = array('视频');
// $exceptTags = array('视频');
$exceptTags = array('手机视频');
$limit = 8;
$total = Facade_News::getTotal($tag, $exceptTags);
$page = new Lib_Helper_Pagination($total, $limit);
... ... @@ -89,7 +91,7 @@ class Controller_News extends Controller_Abstract
$tags[$tagKey] = $temp[$tagKey];
}
}
$tags['视频'] = $temp['手机视频'];
// $tags['视频'] = $temp['手机视频'];
$this->_view['tags'] = $tags;
foreach($this->_view['tags'] as $val)
{
... ... @@ -97,7 +99,7 @@ class Controller_News extends Controller_Abstract
}
$this->_view['current_tag'] = $requestTag;
$this->_view['isAjax'] = $this->_request->isAjax();
$this->_view['total'] = $total;
$this->_view['pageTotal'] = $total;
$this->_view['limit'] = $limit;
$this->_view['page'] = $page->getCurrentPage();
}
... ... @@ -202,12 +204,17 @@ EOT;
}
if($this->_platform == 'android' || $this->_platform == 'iphone')
{
$exceptTags = array('视频');
$news[] = Facade_News::getSameNewsById($id, $exceptTags);
$temp = Facade_News::getList(array(), 0, 5, $exceptTags);
unset($temp[$id]);
$news = array_merge($news, $temp);
$news = array_slice(array_filter($news), 0, 3);
//$exceptTags = array('视频');
$exceptTags = array('手机视频');
$temp = Facade_News::getSameNewsById($id, $exceptTags);
$temp2 = Facade_News::getLatestNews(array(), 0, 5, $exceptTags);
unset($temp2[$id]);
if(!empty($temp))
{
$news = array($temp['id'] => $temp);
}
$news = array_slice(array_filter($news + $temp2), 0, 3);
$this->_view['wechat'] = array();//Lib_Wechat_JSSDK::getSignPackage();
}
$info['title'] = strip_tags($info['title']);
$info['pics'] = array_filter(explode('|', $info['pics']));
... ... @@ -231,11 +238,14 @@ EOT;
$tag = '视频';
$exceptTags = array('手机视频');
$recom = array();
$recom[] = Facade_News::getSameNewsById($id, $exceptTags);
$temp = Facade_News::getList(array(), 0, 5, $exceptTags);
unset($temp[$id]);
$recom = array_merge($recom, $temp);
$recom = array_slice(array_filter($recom), 0, 3);
$temp = Facade_News::getSameNewsById($id, $exceptTags);
$temp2 = Facade_News::getLatestNews(array(), 0, 5, $exceptTags);
unset($temp2[$id]);
if(!empty($temp))
{
$recom = array($temp['id'] => $temp);
}
$recom = array_slice(array_filter($recom + $temp2), 0, 3);
$hotVideo = array_values(Facade_News::getListByDateHits($tag, 0, 5, $exceptTags));
$lastVideo = array_values(Facade_News::getLatestNews($tag, 0, 5, $exceptTags));
$list['recom'] = $recom;
... ...
... ... @@ -72,7 +72,7 @@ class Controller_Show extends Controller_Abstract
'offset'=> $offset,
'limit' => $limit,
);
$data = Util_Curl::get('http://www.yohoshow.com/api/yohood/topic?'.http_build_query($params));
$data = Util_Curl::get('http://show.test.yoho.cn/api/yohood/topic?'.http_build_query($params));
$data = json_decode($data, true);
if(!empty($data['data']))
{
... ...
... ... @@ -273,7 +273,7 @@ class Facade_News
$news = array();
if(!empty($ids))
{
$news = self::service()->getNewsByOrderId($ids, $exceptTags);
$news = self::service()->getNewsByIds($ids, $exceptTags);
}
return $news;
}
... ...
... ... @@ -11,7 +11,7 @@ class Lib_Utils_Cache_Data
{
private static $_key = 'yh_cache_data_';
private static $_cache = null;
private static $_options = array('domain' => 'wwww', 'class' => 'text');
private static $_options = array('domain' => 'yoho', 'class' => 'text');
/**
* @return object 缓存操作对象
... ...
<?php
class Lib_Wechat_JSSDK {
public static $appId = YOHO_WECHAT_APPID;
public static $appSecret = YOHO_WECHAT_APPSECRET;
public static function getSignPackage()
{
$jsapiTicket = self::getJsApiTicket();
// 注意 URL 一定要动态获取,不能 hardcode.
/* $protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";
$url = "$protocol$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]"; */
// 确保你获取用来签名的url是动态获取的,动态页面可参见实例代码中php的实现方式。如果是html的静态页面在前端通过ajax将url传到后台签名,前端需要用js获取当前页面除去'#'hash部分的链接(可用location.href.split('#')[0]获取),因为页面一旦分享,微信客户端会在你的链接末尾加入其它参数,如果不是动态获取当前链接,将导致分享后的页面签名失败。
$url = $_REQUEST['pageurl'];
$timestamp = time();
$nonceStr = self::createNonceStr();
// 这里参数的顺序要按照 key 值 ASCII 码升序排序
$string = "jsapi_ticket=$jsapiTicket&noncestr=$nonceStr&timestamp=$timestamp&url=$url";
$signature = sha1($string);
$signPackage = array(
"appId" => self::$appId,
"nonceStr" => $nonceStr,
"timestamp" => $timestamp,
"url" => $url,
"signature" => $signature,
"rawString" => $string
);
return $signPackage;
}
public static function createNonceStr($length = 16)
{
$chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
$str = "";
for ($i = 0; $i < $length; $i++) {
$str .= substr($chars, mt_rand(0, strlen($chars) - 1), 1);
}
return $str;
}
public static function getJsApiTicket()
{
// jsapi_ticket 应该全局存储与更新,以下代码以写入到文件中做示例
$jsapi_ticket = Lib_Utils_Cache_Data::get("WEICHAT_JSAPI_TICK_1");
if (empty($jsapi_ticket))
{
//$accessToken = $this->getAccessToken();
$accessToken = self::getAccessToken();
// 如果是企业号用以下 URL 获取 ticket
// $url = "https://qyapi.weixin.qq.com/cgi-bin/get_jsapi_ticket?access_token=$accessToken";
$url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?type=jsapi&access_token=$accessToken";
$res = json_decode(self::httpGet($url));
$ticket = $res->ticket;
if ($ticket)
{
Lib_Utils_Cache_Data::set("WEICHAT_JSAPI_TICK_1", $ticket, 3600);
}
}
else
{
$ticket = $jsapi_ticket;
}
return $ticket;
}
public static function getAccessToken()
{
$http_url = 'https://api.weixin.qq.com/cgi-bin/token?';
$params = array('appid'=> self::$appId,'secret' => self::$appSecret,'grant_type'=>'client_credential');
$access_token = Lib_Utils_Cache_Data::get("WEICHAT_ACCESSTOKEN");
if(empty( $access_token ))
{
$result = json_decode(self::httpGet($http_url.http_build_query($params)), true);
$access_token = $result['access_token'];
$expire = $result['expires_in'];
Lib_Utils_Cache_Data::set("WEICHAT_ACCESSTOKEN", $access_token, 3600);
}
if($access_token)
{
return $access_token;
}
else
{
return '';
}
}
public static function httpGet($url)
{
$curl = curl_init();
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_TIMEOUT, 500);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_URL, $url);
$res = curl_exec($curl);
curl_close($curl);
return $res;
}
}
... ...
... ... @@ -256,7 +256,7 @@ class Service_News extends Lib_Service
* @param array $exceptTags
* @return int
*/
public function getNewsByOrderId($ids, $exceptTags)
public function getNewsByIds($ids, $exceptTags)
{
$exceptWhere = "1";
if(is_numeric($ids))
... ... @@ -269,7 +269,7 @@ class Service_News extends Lib_Service
$exceptTags = implode("','", $exceptTags);
$exceptWhere = " `tag` NOT IN ('$exceptTags') ";
}
return self::service(self::ROUTER)->tag(self::$_tag)->fetchRow('getNewsByOrderId', array('order_ids' => $ids),
return self::service(self::ROUTER)->tag(self::$_tag)->fetchRow('getNewsByIds', array(),
array('where'=> $exceptWhere, 'ids'=> $ids));
}
... ... @@ -284,7 +284,8 @@ class Service_News extends Lib_Service
*/
public static function getLatestNews($tag, $offset, $limit, $exceptTags = array())
{
$exceptWhere = "1";
$exceptWhere = '1';
$where = '1';
if(is_array($exceptTags) && !empty($exceptTags))
{
$exceptTags = implode("','", $exceptTags);
... ...
... ... @@ -45,8 +45,8 @@
<select id="getListByHits">
SELECT * FROM tbl_news WHERE `tag` = :tag AND #where# ORDER BY hits DESC LIMIT :offset, :limit
</select>
<select id="getNewsByOrderId">
SELECT * FROM tbl_news WHERE #where# AND id IN (#ids#) ORDER BY FIND_IN_SET(id, :order_ids)
<select id="getNewsByIds">
SELECT * FROM tbl_news WHERE #where# AND id IN (#ids#) ORDER BY create_time DESC
</select>
<select id="getLatestNews">
SELECT * FROM `tbl_news` #where# order by create_time DESC LIMIT :offset, :limit
... ...
... ... @@ -45,7 +45,7 @@
<div class="overlay"></div>
</div>
<?php $this->_js('index.js', array(
SITE_JS . '/lib/seajs.js',
SITE_JS . '/lib/seajs.js'
));?>
<script type="text/javascript">
seajs.use('mobile',function(mobile){
... ...
... ... @@ -70,7 +70,7 @@
<div id="share" class="share" cover-url="<?php
$thumb = empty($this->view->info['client_thumb']) ? $this->view->info['thumb'] : $this->view->info['client_thumb'];
echo Lib_Images::getImageUrl($thumb, 'source','fragmentimg');?>"
data-link="<?php echo SITE_MAIN.'/news/detail/id/'.$this->view->info['id'];?>">
data-link="<?php echo SITE_MAIN.'/news/detail/id/'.$this->view->info['id'];?>" wechatAppId="" wechatTimestamp="" wechatNonceStr="" wechatSignature="">
<ul class="clearfix">
<li class="yohoo-share-button-sina"><a href="javascript:;"></a></li>
<li class="yohoo-share-button-qq"><a href="javascript:;"></a></li>
... ... @@ -79,9 +79,47 @@
</div>
<?php $this->_endblock();?>
<?php $this->_block('js');?>
<script type="text/javascript" charset="utf-8" src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>
<script type="text/javascript">
seajs.use(['zepto', 'mobile'],function($, mobile) {
var shareData = {
title: '',
desc: '',
imgUrl: '',
link: '',
};
// wx.config({
// debug: false,
// appId: '',
// timestamp: '',
// nonceStr: '',
// signature: '',
// jsApiList: ['checkJsApi','onMenuShareTimeline','onMenuShareAppMessage','onMenuShareQQ',
// 'onMenuShareWeibo','hideMenuItems','showMenuItems','hideAllNonBaseMenuItem','showAllNonBaseMenuItem',
// 'translateVoice','startRecord','stopRecord','onRecordEnd','playVoice','pauseVoice','stopVoice',
// 'uploadVoice','downloadVoice','chooseImage','previewImage','uploadImage','downloadImage',
// 'getNetworkType','openLocation','getLocation','hideOptionMenu','showOptionMenu','closeWindow',
// 'scanQRCode','chooseWXPay','openProductSpecificView','addCard','chooseCard','openCard'
// ]
// });
// // 2.1 “分享给朋友”
// wx.onMenuShareAppMessage(shareData);
// // 2.2 “分享到朋友圈”
// wx.onMenuShareTimeline(shareData);
// // 2.3 “分享到QQ”
// wx.onMenuShareQQ(shareData);
// // 2.4 “分享到微博”
// wx.onMenuShareWeibo(shareData);
seajs.use(['jquery', 'mobile'],function($, mobile) {
mobile.detail();
var shareUrl = $(".share").attr("data-link"),
shareCover = $(".share").attr("cover-url"),
detailTitle = $('.detail-title').find('.title'),
detailSubtitle = $('.detail-title').find('.subtitle'),
wechatAppId = $(".share").attr("wechatAppId"),
wechatTimestamp = $(".share").attr("wechatTimestamp"),
wechatNonceStr = $(".share").attr("wechatNonceStr"),
wechatSignature = $(".share").attr("wechatSignature");
});
</script>
<?php $this->_endblock();?>
... ...
... ... @@ -19,7 +19,7 @@
</div>
<div class="news-main content-main current">
<div class="news-content">
<div class="main-layout clearfix" total="<?php echo $this->view->total;?>" page="<?php echo $this->view->page;?>"
<div class="main-layout clearfix" total="<?php echo $this->view->pageTotal;?>" page="<?php echo $this->view->page;?>"
total_times="3" current_tag="<?php echo $this->view->current_tag;?>" limit="<?php echo $this->view->limit;?>">
<?php $this->_widget('news_listmobile', array('list'=> $this->view->list));?>
</div>
... ...