Authored by yyq

web skc @ by yangyang

<?php
namespace Guang;
use Api\Yohobuy;
use LibModels\Web\Guang\InfoData;
use LibModels\Web\Product\SearchData;
use Plugin\Images;
use WebPlugin\Helpers;
use WebPlugin\HelperSearch;
/**
* 逛-文章页
*/
class InfoModel
{
/**
* 获取详情页数据
* @param $id 文章id
* @param $uid 用户id
* @param $udid 客户端标示
* @param $page 评论分页
* @param $gender 性别
* @param $channel 频道
* @param $limit 评论每页显示条数
* @return array
*/
public static function articleInfo($id, $uid, $udid, $page, $gender, $channel, $limit)
{
$result = array();
//文章相关信息
$articleInfo = InfoData::getArticleInfo($id);
if (isset($articleInfo['code']) && $articleInfo['code'] == 200 && isset($articleInfo['data']) && !empty($articleInfo['data'])) {
//作者
if (isset($articleInfo['data']['author_id']) && !empty($articleInfo['data']['author_id'])) {
$url['author'] = InfoData::author($articleInfo['data']['author_id'], true);
}
//文章内容
$url['contents'] = InfoData::articleContent($id, true);
//热门标签
$url['hotTags'] = InfoData::tagTop(1, 20, true);
//评论
$url['comments'] = InfoData::comment($id, $page, $limit, true);
//基本信息
$url['baseInfo'] = InfoData::baseInfo($id, $uid, $udid, true);
//相关品牌
$url['brands'] = InfoData::relateBrand($id, true);
//相关文章
if (isset($articleInfo['data']['tag']) && !empty($articleInfo['data']['tag'])) {
$url['relate'] = InfoData::relateList($id, $articleInfo['data']['tag'], 3, true);
}
//推荐文章
$url['recommend'] = InfoData::recommend($gender, 1, 10, true);
$data = Yohobuy::getMulti($url);
$result = self::formatInfo($articleInfo['data'], $data, $channel, $limit);
}
return $result;
}
/**
* 格式化逛详情页数据
* @param $article 文章信息
* @param $data 作者信息、文章内容、热门标签、评论、相关文章、推荐文章
* @param $channel 频道
* @param $limit 评论一页显示记录数
* @return array
*/
public static function formatInfo($article, $data, $channel, $limit)
{
$result['content'] = $other = array();
//推荐商品列表
$goods = $goodsGroup = array();
$result['pathNav'] = self::getCenterCrumb($article['article_title'], $channel);
//文章头部信息
$result['header']['title'] = $article['article_title'];
$result['header']['avatar'] = isset($data['author']['avatar']) && !empty($data['author']['avatar']) ? $data['author']['avatar'] : '';
$result['header']['name'] = isset($data['author']['name']) && !empty($data['author']['name']) ? $data['author']['name'] : '';
$result['header']['authorUrl'] = isset($data['author']['name']) && !empty($data['author']['name']) ? Helpers::url('/Index/editor', array('author_id'=>$article['author_id']), 'guang') : '';
$result['header']['intro'] = isset($data['author']['author_desc']) && !empty($data['author']['author_desc']) ? $data['author']['author_desc'] : '';
$result['header']['time'] = date('Y年m月d日 H:i', $article['publish_time']);
$result['header']['click'] = $article['pageViews'];
$result['header']['commentNum'] = $data['comments']['total'];
$result['header']['shareImg'] = Images::getImageUrl($article['cover_image'], 600, 600);
$result['header']['desc'] = $article['article_summary'];
$result['header']['weixinUrl'] = $article['url'];
//文章详细
if (isset($data['contents']) && !empty($data['contents'])) {
foreach ($data['contents'] as $key => $val) {
foreach ($val as $type => $con) {
if ($type === 'goods') {
$goods = array_merge_recursive($goods, self::goods($con['data']));
} elseif ($type === 'goodsGroup') {
$goodsGroup = array_merge_recursive($goodsGroup, self::goodsGroup($con['data']));
} else {
$other = is_callable("self::$type") ? self::$type($con['data']) : '';
array_push($result['content'], $other);
}
}
}
}
if (!empty($goods)) {
$result['content'][]['relatedReco'] = array('recos'=>$goods);
}
if (!empty($goodsGroup)) {
$result['content'][]['relatedReco'] = $goodsGroup;
}
//赞、收藏
if (isset($data['baseInfo']) && !empty($data['baseInfo'])) {
$result['userInfo']['isLike'] = $data['baseInfo']['isPraise'] == 'Y' ? true : false;
$result['userInfo']['likeNum'] = $data['baseInfo']['praise_num'];
$result['userInfo']['isCollected'] = $data['baseInfo']['isFavor'] == 'Y' ? true : false;;
}
//文章tags
if (isset($article['tags']) && !empty($article['tags'])) {
foreach ($article['tags'] as $tagKey => $tagsValue) {
$result['tag'][$tagKey]['name'] = $tagsValue['name'];
$result['tag'][$tagKey]['url'] = Helpers::url('/tags/index', array('query' => $tagsValue['name']),'guang');
}
}
//相关品牌
if (isset($data['brands']) && !empty($data['brands'])) {
$result['brands'] = $data['brands'];
}
//相关文章
if (isset($data['relate']) && !empty($data['relate'])) {
foreach ($data['relate'] as $key => $val) {
$result['relatedPost'][$key]['title'] = $val['title'];
$result['relatedPost'][$key]['thumb'] = Images::getImageUrl($val['thumb'], 264, 173, 1);
$result['relatedPost'][$key]['url'] = Helpers::url('/'.$val['id'].'.html', array(), 'guang');
}
}
//精彩推荐
if (isset($data['recommend']) && !empty($data['recommend'])) {
foreach ($data['recommend'] as $key => $val) {
$result['exRecos'][$key]['title'] = $val['title'];
$result['exRecos'][$key]['img'] = isset($val['src']) ? Images::getImageUrl($val['src'], 90, 60) : '';
$result['exRecos'][$key]['url'] = Helpers::url('/'.$val['id'].'.html', array(), 'guang');
}
}
//热门标签
if (isset($data['hotTags']) && !empty($data['hotTags'])) {
foreach ($data['hotTags'] as $key => $val) {
$result['hotTags'][$key]['tagName'] = $val['tag_name'];
$result['hotTags'][$key]['url'] = Helpers::url('/tags/index',array('query'=>$val['tag_name']), 'guang');
}
}
//评论
if (isset($data['comments']) && !empty($data['comments']) && isset($data['comments']['total'])) {
$result['comment']['commentNum'] = $data['comments']['total'];
$result['comment']['commentPager'] = HelperSearch::pager($data['comments']['total'], $limit);
if ($data['comments']['total'] > 0 && !empty($data['comments']['list'])){
foreach ($data['comments']['list'] as $key => $val) {
$result['comment']['list'][$key]['avatar'] = Images::getImageUrl($val['avator'], 100, 100);
$result['comment']['list'][$key]['name'] = $val['username'];
$result['comment']['list'][$key]['content'] = $val['content'];
$result['comment']['list'][$key]['time'] = $val['create_time'];
}
}
}
return $result;
}
/**
* 逛详情文本
* @param $con
* @return mixed
*/
public static function text($con)
{
return $con;
}
/**
* 逛详情单张图片
* @param $con
* @return array
*/
public static function singleImage($con)
{
return array('pic' => Images::getImageUrl($con[0]['src'], 640, 640));
}
/**
* 逛详情商品组
* @param $goodsGroup
* @return mixed
*/
public static function goodsGroup($goodsGroup)
{
$result = $groupSkn = array();
foreach ($goodsGroup as $key => $val) {
if (!isset($val['list']) || empty($val['list'])) {
continue;
}
$productSkn = array();
foreach ($val['list'] as $k => $v) {
$groupSkn[$key][] = $v['id'];
$productSkn[] = $v['id'];
}
if (!empty($productSkn)) {
$product = SearchData::searchElasticByCondition(array('query' => implode(',', $productSkn)));
if (isset($product['data']['product_list'])) {
$result[$key]['recos'] = array_slice(self::formatProduct($product['data']['product_list']), 0, 4);
}
}
}
return $result;
}
/**
* 逛详情商品列表
* @param $goods
* @return array
*/
public static function goods($goods)
{
$result = $productSkn = array();
foreach ($goods as $key => $val) {
$productSkn[] = $val['id'];
}
if (!empty($productSkn)) {
$product = SearchData::searchElasticByCondition(array('query'=> implode(',', $productSkn)));
if (isset($product['data']['product_list'])) {
$result = self::formatProduct($product['data']['product_list']);
}
} else {
return array();
}
return $result;
}
/**
* 逛详情两张小图
* @param $pic
* @return array
*/
public static function smallPic($pic)
{
$result = array();
foreach ($pic as $key => $val) {
if ($key < 2) {
$result['smallPic'][] = Images::getImageUrl($val['src'], 600, 600);
}
}
return $result;
}
/**
* 逛详情链接
* @param $link
* @return array
*/
public static function link($link)
{
$result = array();
return $result;
}
/**
* 逛-面包屑
* name 当前停留面包屑名称
* nav 逛 之后的面包屑
*/
public static function getCenterCrumb($name, $channel)
{
//根据频道判断home页地址
switch ($channel) {
case 'boys':
$home = Helpers::url('', '', 'default');
break;
case 'girls':
$home = Helpers::url('/woman', '', 'new');
break;
case 'lifestyle':
$home = Helpers::url('/lifestyle', '', 'new');
break;
case 'kids':
$home = Helpers::url('/kids', '', 'new');
break;
default:
$home = Helpers::url('', '', 'default');
break;
}
$retNav = array(
array(
'name' => strtoupper($channel) . '首页',
'href' => $home
),
array(
'name' => '逛',
'href' => Helpers::url('', '', 'guang')
)
);
$retNav[] = array(
'name' => $name
);
return $retNav;
}
/**
* 文章评论列表
* @param $id
* @param $page
* @param $limit
* @return array
*/
public static function commentList($id, $page, $limit)
{
$result = array();
$data = InfoData::comment($id, $page, $limit);
//评论
if (isset($data['code']) && $data['code'] == 200) {
$result['comment']['commentNum'] = $data['data']['total'];
$result['comment']['commentPager'] = HelperSearch::pager($data['data']['total'], $limit);
if ($data['data']['total'] > 0 && !empty($data['data']['list'])){
foreach ($data['data']['list'] as $key => $val) {
$result['comment']['list'][$key]['avatar'] = Images::getImageUrl($val['avator'], 100, 100);
$result['comment']['list'][$key]['name'] = $val['username'];
$result['comment']['list'][$key]['content'] = $val['content'];
$result['comment']['list'][$key]['time'] = $val['create_time'];
}
}
}
return $result;
}
/**
* 格式化推荐商品
* @param $product
* @return arr
*/
public static function formatProduct($product)
{
$result = array();
foreach ($product as $key => $val) {
if (empty($val['default_images'])) {
$val['default_images'] = $val['goods_list'][0]['images_url'];
}
$result[$key]['thumb'] = Images::getImageUrl($val['default_images'],235,314);
$result[$key]['name'] = $val['product_name'];
//市场价不等于售价时显示
if ($val['market_price'] != $val['sales_price']) {
$result[$key]['marketPrice'] = $val['market_price'];
}
$result[$key]['salePrice'] = $val['sales_price'];
$result[$key]['url'] = Helpers::getUrlBySkc($val['product_id'], $val['goods_list'][0]['goods_id'], $val['cn_alphabet']);;
}
return $result;
}
}
<?php
namespace Guang;
use Api\Yohobuy;
use LibModels\Web\Guang\InfoData;
use LibModels\Web\Product\SearchData;
use Plugin\Images;
use WebPlugin\Helpers;
use WebPlugin\HelperSearch;
/**
* 逛-文章页
*/
class InfoModel
{
/**
* 获取详情页数据
* @param $id 文章id
* @param $uid 用户id
* @param $udid 客户端标示
* @param $page 评论分页
* @param $gender 性别
* @param $channel 频道
* @param $limit 评论每页显示条数
* @return array
*/
public static function articleInfo($id, $uid, $udid, $page, $gender, $channel, $limit)
{
$result = array();
//文章相关信息
$articleInfo = InfoData::getArticleInfo($id);
if (isset($articleInfo['code']) && $articleInfo['code'] == 200 && isset($articleInfo['data']) && !empty($articleInfo['data'])) {
//作者
if (isset($articleInfo['data']['author_id']) && !empty($articleInfo['data']['author_id'])) {
$url['author'] = InfoData::author($articleInfo['data']['author_id'], true);
}
//文章内容
$url['contents'] = InfoData::articleContent($id, true);
//热门标签
$url['hotTags'] = InfoData::tagTop(1, 20, true);
//评论
$url['comments'] = InfoData::comment($id, $page, $limit, true);
//基本信息
$url['baseInfo'] = InfoData::baseInfo($id, $uid, $udid, true);
//相关品牌
$url['brands'] = InfoData::relateBrand($id, true);
//相关文章
if (isset($articleInfo['data']['tag']) && !empty($articleInfo['data']['tag'])) {
$url['relate'] = InfoData::relateList($id, $articleInfo['data']['tag'], 3, true);
}
//推荐文章
$url['recommend'] = InfoData::recommend($gender, 1, 10, true);
$data = Yohobuy::getMulti($url);
$result = self::formatInfo($articleInfo['data'], $data, $channel, $limit);
}
return $result;
}
/**
* 格式化逛详情页数据
* @param $article 文章信息
* @param $data 作者信息、文章内容、热门标签、评论、相关文章、推荐文章
* @param $channel 频道
* @param $limit 评论一页显示记录数
* @return array
*/
public static function formatInfo($article, $data, $channel, $limit)
{
$result['content'] = $other = array();
//推荐商品列表
$goods = $goodsGroup = array();
$result['pathNav'] = self::getCenterCrumb($article['article_title'], $channel);
//文章头部信息
$result['header']['title'] = $article['article_title'];
$result['header']['avatar'] = isset($data['author']['avatar']) && !empty($data['author']['avatar']) ? $data['author']['avatar'] : '';
$result['header']['name'] = isset($data['author']['name']) && !empty($data['author']['name']) ? $data['author']['name'] : '';
$result['header']['authorUrl'] = isset($data['author']['name']) && !empty($data['author']['name']) ? Helpers::url('/Index/editor', array('author_id'=>$article['author_id']), 'guang') : '';
$result['header']['intro'] = isset($data['author']['author_desc']) && !empty($data['author']['author_desc']) ? $data['author']['author_desc'] : '';
$result['header']['time'] = date('Y年m月d日 H:i', $article['publish_time']);
$result['header']['click'] = $article['pageViews'];
$result['header']['commentNum'] = $data['comments']['total'];
$result['header']['shareImg'] = Images::getImageUrl($article['cover_image'], 600, 600);
$result['header']['desc'] = $article['article_summary'];
$result['header']['weixinUrl'] = $article['url'];
//文章详细
if (isset($data['contents']) && !empty($data['contents'])) {
foreach ($data['contents'] as $key => $val) {
foreach ($val as $type => $con) {
if ($type === 'goods') {
$goods = array_merge_recursive($goods, self::goods($con['data']));
} elseif ($type === 'goodsGroup') {
$goodsGroup = array_merge_recursive($goodsGroup, self::goodsGroup($con['data']));
} else {
$other = is_callable("self::$type") ? self::$type($con['data']) : '';
array_push($result['content'], $other);
}
}
}
}
if (!empty($goods)) {
$result['content'][]['relatedReco'] = array('recos'=>$goods);
}
if (!empty($goodsGroup)) {
$result['content'][]['relatedReco'] = $goodsGroup;
}
//赞、收藏
if (isset($data['baseInfo']) && !empty($data['baseInfo'])) {
$result['userInfo']['isLike'] = $data['baseInfo']['isPraise'] == 'Y' ? true : false;
$result['userInfo']['likeNum'] = $data['baseInfo']['praise_num'];
$result['userInfo']['isCollected'] = $data['baseInfo']['isFavor'] == 'Y' ? true : false;;
}
//文章tags
if (isset($article['tags']) && !empty($article['tags'])) {
foreach ($article['tags'] as $tagKey => $tagsValue) {
$result['tag'][$tagKey]['name'] = $tagsValue['name'];
$result['tag'][$tagKey]['url'] = Helpers::url('/tags/index', array('query' => $tagsValue['name']),'guang');
}
}
//相关品牌
if (isset($data['brands']) && !empty($data['brands'])) {
$result['brands'] = $data['brands'];
}
//相关文章
if (isset($data['relate']) && !empty($data['relate'])) {
foreach ($data['relate'] as $key => $val) {
$result['relatedPost'][$key]['title'] = $val['title'];
$result['relatedPost'][$key]['thumb'] = Images::getImageUrl($val['thumb'], 264, 173, 1);
$result['relatedPost'][$key]['url'] = Helpers::url('/'.$val['id'].'.html', array(), 'guang');
}
}
//精彩推荐
if (isset($data['recommend']) && !empty($data['recommend'])) {
foreach ($data['recommend'] as $key => $val) {
$result['exRecos'][$key]['title'] = $val['title'];
$result['exRecos'][$key]['img'] = isset($val['src']) ? Images::getImageUrl($val['src'], 90, 60) : '';
$result['exRecos'][$key]['url'] = Helpers::url('/'.$val['id'].'.html', array(), 'guang');
}
}
//热门标签
if (isset($data['hotTags']) && !empty($data['hotTags'])) {
foreach ($data['hotTags'] as $key => $val) {
$result['hotTags'][$key]['tagName'] = $val['tag_name'];
$result['hotTags'][$key]['url'] = Helpers::url('/tags/index',array('query'=>$val['tag_name']), 'guang');
}
}
//评论
if (isset($data['comments']) && !empty($data['comments']) && isset($data['comments']['total'])) {
$result['comment']['commentNum'] = $data['comments']['total'];
$result['comment']['commentPager'] = HelperSearch::pager($data['comments']['total'], $limit);
if ($data['comments']['total'] > 0 && !empty($data['comments']['list'])){
foreach ($data['comments']['list'] as $key => $val) {
$result['comment']['list'][$key]['avatar'] = Images::getImageUrl($val['avator'], 100, 100);
$result['comment']['list'][$key]['name'] = $val['username'];
$result['comment']['list'][$key]['content'] = $val['content'];
$result['comment']['list'][$key]['time'] = $val['create_time'];
}
}
}
return $result;
}
/**
* 逛详情文本
* @param $con
* @return mixed
*/
public static function text($con)
{
return $con;
}
/**
* 逛详情单张图片
* @param $con
* @return array
*/
public static function singleImage($con)
{
return array('pic' => Images::getImageUrl($con[0]['src'], 640, 640));
}
/**
* 逛详情商品组
* @param $goodsGroup
* @return mixed
*/
public static function goodsGroup($goodsGroup)
{
$result = $groupSkn = array();
foreach ($goodsGroup as $key => $val) {
if (!isset($val['list']) || empty($val['list'])) {
continue;
}
$productSkn = array();
foreach ($val['list'] as $k => $v) {
$groupSkn[$key][] = $v['id'];
$productSkn[] = $v['id'];
$arr[$v['id']]=$v['src'];
}
if (!empty($productSkn)) {
$product = SearchData::searchElasticByCondition(array('query' => implode(',', $productSkn)));
if (isset($product['data']['product_list'])) {
$result[$key]['recos'] = array_slice(self::formatProduct($product['data']['product_list'], $arr), 0, 4);
}
}
}
return $result;
}
/**
* 逛详情商品列表
* @param $goods
* @return array
*/
public static function goods($goods)
{
$result = $productSkn = array();
foreach ($goods as $key => $val) {
$productSkn[] = $val['id'];
$arr[$val['id']]=$val['src'];
}
if (!empty($productSkn)) {
$product = SearchData::searchElasticByCondition(array('query'=> implode(',', $productSkn)));
if (isset($product['data']['product_list'])) {
$result = self::formatProduct($product['data']['product_list'], $arr);
}
} else {
return array();
}
return $result;
}
/**
* 逛详情两张小图
* @param $pic
* @return array
*/
public static function smallPic($pic)
{
$result = array();
foreach ($pic as $key => $val) {
if ($key < 2) {
$result['smallPic'][] = Images::getImageUrl($val['src'], 600, 600);
}
}
return $result;
}
/**
* 逛详情链接
* @param $link
* @return array
*/
public static function link($link)
{
$result = array();
return $result;
}
/**
* 逛-面包屑
* name 当前停留面包屑名称
* nav 逛 之后的面包屑
*/
public static function getCenterCrumb($name, $channel)
{
//根据频道判断home页地址
switch ($channel) {
case 'boys':
$home = Helpers::url('', '', 'default');
break;
case 'girls':
$home = Helpers::url('/woman', '', 'new');
break;
case 'lifestyle':
$home = Helpers::url('/lifestyle', '', 'new');
break;
case 'kids':
$home = Helpers::url('/kids', '', 'new');
break;
default:
$home = Helpers::url('', '', 'default');
break;
}
$retNav = array(
array(
'name' => strtoupper($channel) . '首页',
'href' => $home
),
array(
'name' => '逛',
'href' => Helpers::url('', '', 'guang')
)
);
$retNav[] = array(
'name' => $name
);
return $retNav;
}
/**
* 文章评论列表
* @param $id
* @param $page
* @param $limit
* @return array
*/
public static function commentList($id, $page, $limit)
{
$result = array();
$data = InfoData::comment($id, $page, $limit);
//评论
if (isset($data['code']) && $data['code'] == 200) {
$result['comment']['commentNum'] = $data['data']['total'];
$result['comment']['commentPager'] = HelperSearch::pager($data['data']['total'], $limit);
if ($data['data']['total'] > 0 && !empty($data['data']['list'])){
foreach ($data['data']['list'] as $key => $val) {
$result['comment']['list'][$key]['avatar'] = Images::getImageUrl($val['avator'], 100, 100);
$result['comment']['list'][$key]['name'] = $val['username'];
$result['comment']['list'][$key]['content'] = $val['content'];
$result['comment']['list'][$key]['time'] = $val['create_time'];
}
}
}
return $result;
}
/**
* 格式化推荐商品
* @param $product
* @return arr
*/
public static function formatProduct($product, $arr)
{
$result = array();
foreach ($arr as $k => $v) {
foreach ($product as $key => $val) {
$goods = array();
$goods['thumb'] = Images::getImageUrl($val['default_images'],235,314);
$goods['name'] = $val['product_name'];
//市场价不等于售价时显示
if ($val['market_price'] != $val['sales_price']) {
$goods['marketPrice'] = $val['market_price'];
}
$goods['salePrice'] = $val['sales_price'];
$goods['url'] = Helpers::getUrlBySkc($val['product_id'], $val['goods_list'][0]['goods_id'], $val['cn_alphabet']);;
if ($k == $val['product_skn']) {
$goods['thumb'] = Images::getImageUrl($v,235,314);
$result[] = $goods;
}
}
}
return $result;
}
}
... ...