Authored by 王水玲

星潮bug 修改

... ... @@ -6,10 +6,8 @@
'use strict';
const mRoot = '../models';
const library = '../../../library';
const _ = require('lodash');
const starModel = require(`${mRoot}/star`);
const helpers = require(`${library}/helpers`);
// const headerModel = require('../../../doraemon/models/header');
... ... @@ -54,20 +52,35 @@ const processPublicData = (req, title) => {
* @param {[object]} res
* @return {[type]}
*/
exports.index = (req, res) => {
exports.index = (req, res, next) => {
const pageHeadTab = _.cloneDeep(headTab);
pageHeadTab[0].cur = true;
pageHeadTab[2].url += (req.query.uid || 0);
res.render('star/index', _.assign({
page: 'star',
isStarIndexPage: true,
headTab: pageHeadTab
}, processPublicData(req, '星潮教室')));
// res.render('star/index', _.assign({
// page: 'star',
// isStarIndexPage: true,
// headTab: pageHeadTab
// }, processPublicData(req, '星潮教室')));
starModel.getIndexData((req.query.uid || 0)).then((result) => {
res.render('star/index', _.assign({
page: 'star',
isStarIndexPage: true,
headTab: pageHeadTab,
content: {
focus: true,
data: result.ads
},
starAvatar: result.starAvatar.concat(result.starAvatar).concat(result.starAvatar), // 需要优化,数组重复三次
articles: result.articles
}, processPublicData(req, '星潮教室')));
}).catch(next);
};
exports.getIndexHtml = (req, res, next) => {
starModel.getIndexData().then((result) => {
starModel.getIndexData((req.query.uid || 0)).then((result) => {
res.render('star/index-html', _.assign({
layout: false,
content: {
... ... @@ -150,14 +163,24 @@ exports.collocationList = (req, res, next) => {
* @return {[type]}
*/
exports.setFavorite = (req, res, next) => {
let params = req.body;
let uid = req.body.uid || 0; // 客户端访问,不能使用 cookie
let url = '/guang/star/collocation';
let urlEncode = '';
let url = '';
let params = {
articleId: req.body.articleId,
type: req.body.type
};
if (req.body.pageType === '1') {
url = `/guang/star/collocation?uid=${uid}`;
urlEncode = '\/guang\/star\/collocation';
} else {
url = `/guang/star/detail?tag=${req.body.tag}&uid=${uid}`;
urlEncode = '\/guang\/star\/detail';
}
starModel.setFavorite(params, uid).then((result) => {
if (result.code === 400) {
urlEncode = '\/guang\/star\/collocation';
result.data = `${url}?openby:yohobuy={"action":"go.weblogin","params":{"jumpurl":{"url":"http:\/\/m.yohobuy.com${urlEncode}","param":{"from":"app"}},"requesturl":{"url":"","param":{}},"priority":"N"}}`; // eslint-disable-line
}
res.json(result);
... ...
... ... @@ -14,8 +14,6 @@ const logger = require(`${library}/logger`);
const camelCase = require(`${library}/camel-case`);
const helpers = require(`${library}/helpers`);
const _ = require('lodash');
const url = require('url');
const qs = require('querystring');
const serviceAPI = new ServiceAPI();
const api = new API();
... ... @@ -30,7 +28,8 @@ const contentCode = {
*/
const _getResources = (page) => {
return serviceAPI.get('operations/api/v5/resource/get', sign.apiSign({
content_code: contentCode[page]
content_code: contentCode[page],
client_type: 'iphone'
})).then((result) => {
if (result && result.code === 200) {
return resourcesProcess(result.data);
... ... @@ -46,7 +45,7 @@ const _getResources = (page) => {
* @param {[array]} list
* @return {[array]}
*/
const _processIndexData = (list) => {
const _processIndexData = (list, uid) => {
const formatData = {
ads: [],
starAvatar: [],
... ... @@ -59,12 +58,9 @@ const _processIndexData = (list) => {
// 首页资源位数据处理
if (list.ads) {
_.forEach(list.ads.data, (data) => {
let urlObj = url.parse(data.url);
let appUrl = `&openby:yohobuy{"action":"go.h5","params":{"id":"","share":"","shareparam":{},"islogin":"N","type":0,"updateflag":"N","url":"${ urlObj.protocol + '//' + urlObj.host + urlObj.pathname}","param":${JSON.stringify(qs.parse(urlObj.query))}}}`.replace(/\//g, '\/'); // eslint-disable-line
formatData.ads.push({
src: data.src,
url: data.url + appUrl
url: data.url
});
});
}
... ... @@ -82,18 +78,15 @@ const _processIndexData = (list) => {
_.forEach(data.ext.tags, (tags) => {
avatar.tags.push({
avatarUrl: `/guang/star/detail?tag=${tags.tagName}&openby:yohobuy{"action":"go.h5","params":{"id":"","share":"","shareparam":{},"islogin":"N","type":0,"updateflag":"N","url":"http://m.yohobuy.com/guang/star/detail","param":{"tag":"${tags.tagName}"}}}`, // eslint-disable-line
avatarUrl: `/guang/star/detail?tag=${tags.tagName}&uid=${uid}&openby:yohobuy{"action":"go.h5","params":{"id":"","share":"","shareparam":{},"islogin":"N","type":0,"updateflag":"N","url":"http://m.yohobuy.com/guang/star/detail","param":{"tag":"${tags.tagName}"}}}`, // eslint-disable-line
cover: tags.cover,
tagName: tags.tagName
});
});
let urlObj = url.parse(data.url);
let appUrl = `&openby:yohobuy{"action":"go.h5","params":{"id":"","share":"","shareparam":{},"islogin":"N","type":0,"updateflag":"N","url":"${ urlObj.protocol + '//' + urlObj.host + urlObj.pathname}","param":${JSON.stringify(qs.parse(urlObj.query))}}}`.replace(/\//g, '\/'); // eslint-disable-line
formatData.articles.push(_.merge({
id: data.id,
url: data.url + appUrl,
url: data.url,
title: data.title,
articeTxt: data.intro,
src: data.src,
... ... @@ -107,7 +100,7 @@ const _processIndexData = (list) => {
// 首页明星头像数据处理
if (list.tags) {
_.forEach(list.tags, (data) => {
let url = `/guang/star/detail?tag=${data.tagName}&openby:yohobuy{"action":"go.h5","params":{"id":"","share":"","shareparam":{},"islogin":"N","type":0,"updateflag":"N","url":"http://m.yohobuy.com/guang/star/detail","param":{"tag":"${data.tagName}"}}}`; // eslint-disable-line
let url = `/guang/star/detail?tag=${data.tagName}&uid=${uid}&openby:yohobuy{"action":"go.h5","params":{"id":"","share":"","shareparam":{},"islogin":"N","type":0,"updateflag":"N","url":"http://m.yohobuy.com/guang/star/detail","param":{"tag":"${data.tagName}"}}}`; // eslint-disable-line
formatData.starAvatar.push({
url: url,
... ... @@ -140,11 +133,6 @@ const _processDetailData = (list) => {
data.share.url = _processShareUrl(data);
}
let urlObj = url.parse(data.url);
let qsObj = qs.parse(urlObj.query);
let appUrl = `&openby:yohobuy{"action":"go.h5","params":{"shareparam":{"id":"${qsObj.id}"},"share":"/guang/api/v1/share/guang","id":"${qsObj.id}","islogin":"N","type":1,"updateflag":"N","url":"${ urlObj.protocol + '//' + urlObj.host + urlObj.pathname}","param":${JSON.stringify(qs.parse(urlObj.query))}}}`.replace(/\//g, '\/'); // eslint-disable-line
data.url += appUrl;
if (key < 4) {
data.islazy = true;
}
... ... @@ -183,13 +171,14 @@ const _processCollocationData = (list) => {
/**
* 星潮首页
*/
const getIndexData = () => {
const getIndexData = (uid) => {
return api.get('', sign.apiSign({
method: 'app.starClass.index',
code: '8adc27fcf5676f356602889afcfd2a8e'
code: '8adc27fcf5676f356602889afcfd2a8e',
client_type: 'iphone'
})).then((result) => {
if (result && result.code === 200) {
return _processIndexData(result.data);
return _processIndexData(result.data, uid);
} else {
logger.error('星潮教室首页数据返回 code 不是 200');
return {};
... ... @@ -205,7 +194,8 @@ const getDetailData = (params) => {
method: 'app.starClass.lastTagArticle',
tag: params.tag,
page: params.page || 1,
size: 10
size: 10,
client_type: 'iphone'
})).then((result) => {
if (result && result.code === 200) {
if (params.page > result.data.totalPage) {
... ...
... ... @@ -2,5 +2,6 @@
{{> star/head-tab}}
<div class="swiper-num"></div>
<div class="star-main">
{{> star/index-html}}
</div>
</div>
... ...
... ... @@ -10,11 +10,11 @@ var $ = require('yoho-jquery'),
require('../common');
// 星搭配收藏请求
$('.collocation-list').on('click', '.collection', function() {
$('.collocation-list,.detail-list').on('click', '.collection', function() {
var $that = $(this),
$icon = $that.find('.collected-ico');
var type;
var type, pageType, tag;
if ($icon.hasClass('collected')) {
type = 'del';
... ... @@ -22,13 +22,23 @@ $('.collocation-list').on('click', '.collection', function() {
type = 'fav';
}
if ($(this).parents('.collocation-list').length > 0) {
pageType = '1';
tag = '';
} else {
pageType = '2';
tag = $('.detail-list').data('name');
}
$.ajax({
type: 'POST',
url: '/guang/star/setFavorite',
data: {
articleId: $that.parents('li').attr('articleId'),
type: type,
uid: window.queryString.uid
uid: window.queryString.uid,
pageType: pageType,
tag: tag
},
success: function(data) {
var code = data.code;
... ...
... ... @@ -13,7 +13,8 @@ var $ = require('yoho-jquery'),
PullRefresh = require('../plugin/pull-refresh');
var $window = $(window),
stopLoading = false;
stopLoading = false,
$starMain = $('.star-main');
/*
$headTab = $('.head-tab'),
... ... @@ -228,11 +229,34 @@ function setIndexAction() {
});
}
function initAction() {
$avatar = $('.avatar');
$starArticle = $('.star-article');
bannerLen = $avatar.find('.swiper-slide').length;
if ($avatarClone) {
$avatarClone.remove();
}
$starMain.before($('.avatar-swiper').clone().addClass('avatar-clone').hide());
$avatarClone = $('.avatar-clone');
// 限制标题字数
$('.cont-area').each(function() {
txtLimit($(this), '.title', '.cont-txt');
});
lazyLoad($('img.lazy'));
setTimeout(function() {
setIndexAction();
}, 100);
}
// 首页数据请求
getIndexHtml = function() {
var $starMain = $('.star-main');
loading.showLoadingMask();
$.ajax({
url: '/guang/star/getIndexHtml',
... ... @@ -246,38 +270,18 @@ getIndexHtml = function() {
}
$starMain.html(data);
$avatar = $('.avatar');
$starArticle = $('.star-article');
bannerLen = $avatar.find('.swiper-slide').length;
if ($avatarClone) {
$avatarClone.remove();
}
$starMain.before($('.avatar-swiper').clone().addClass('avatar-clone').hide());
$avatarClone = $('.avatar-clone');
// 限制标题字数
$('.cont-area').each(function() {
txtLimit($(this), '.title', '.cont-txt');
});
lazyLoad($('img.lazy'));
setTimeout(function() {
setIndexAction();
loading.hideLoadingMask();
}, 100);
initAction();
loading.hideLoadingMask();
},
error: function() {
tip.show('网络断开连接了~');
}
});
};
initAction();
getIndexHtml();
// getIndexHtml();
// 明星动态文章图片相关操作
/*
... ...
... ... @@ -103,6 +103,8 @@
color: #b0b0b0;
height: 32px;
line-height: 32px;
position: relative;
top: -1px;
}
}
}
... ...
... ... @@ -23,7 +23,8 @@
}
.head-tab {
position: relative;
position: fixed;
top: 0;
width: 100%;
height: 88px;
background: #000;
... ... @@ -119,6 +120,10 @@
height: 180px;
}
.star-main {
margin-top: 88px;
}
.avatar-swiper {
overflow: hidden;
margin-top: 30px;
... ... @@ -394,7 +399,9 @@
.swiper-num {
width: 55px;
display: none;
position: fixed;
top: 0;
z-index: -1;
}
}
... ...