Authored by cailing

Merge branch 'feature/rebuy' into release/4.6

再次购买解决冲突
# Conflicts:
#	library/LibModels/Wap/Home/OrderData.php
#	static/js/me/order-detail.js
#	static/sass/me/_order.css
... ... @@ -199,4 +199,19 @@ class OrderData
return Yohobuy::get(Yohobuy::API_URL, $param);
}
/** 再次购买
* @param type $uid
* @param type $orderCode
* @return type
*/
public static function reAddData($uid, $orderCode)
{
$param = Yohobuy::param();
$param['method'] = 'app.Shopping.readd';
$param['uid'] = $uid;
$param['order_code'] = $orderCode;
$param['client_secret'] = Sign::getSign($param);
return Yohobuy::get(Yohobuy::API_URL, $param);
}
}
... ...
... ... @@ -8,70 +8,16 @@ var $ = require('jquery'),
lazyLoad = require('yoho.lazyload'),
Hammer = require('yoho.hammer'),
dialog = require('./dialog'),
tip = require('../plugin/tip'),
orderId = $('#order-detail').data('id'),
$countDownHours = $('.hours'),
$countdownContainer = $('.count-down'),
Swiper = require('yoho.iswiper'),
$ownerInfo = $('.owner-info'),
$reaMask = $('.reason-mask'),
reasonSwiper,
optHammer;
tip = require('../plugin/tip');
var orderId = $('#order-detail').data('id');
var optHammer;
lazyLoad({
try_again_css: 'order-failure'
});
function downCount(options) {
var difference = options,// difference of dates
interval;
/**
* Main downCount function that calculates everything
*/
function countdown() {
// basic math variables
var _second = 1000,
_minute = _second * 60,
_hour = _minute * 60,
_day = _hour * 24,
hours,
minutes,
seconds;
// calculate dates
hours = Math.floor((difference % _day) / _hour),
minutes = Math.floor((difference % _hour) / _minute),
seconds = Math.floor((difference % _minute) / _second);
// fix dates so that it will show two digets
hours = (String(hours).length >= 2) ? hours : '0' + hours;
minutes = (String(minutes).length >= 2) ? minutes : '0' + minutes;
seconds = (String(seconds).length >= 2) ? seconds : '0' + seconds;
// set to DOM
$countdownContainer.removeClass('hide');
if (hours === '00') {
$countDownHours.text('剩余' + minutes + ':' + seconds);
} else {
$countDownHours.text('剩余' + hours + ':' + minutes + ':' + seconds);
}
difference -= 1000;
if (difference < 0) {
clearInterval(interval);// stop timer
return;
}
}
if (difference !== '' && difference > 0) {
interval = setInterval(countdown, 1000);// start
}
}
downCount($countDownHours.text());
//订单删除
optHammer = new Hammer(document.getElementsByClassName('opt')[0]);
optHammer.on('tap', function(e) {
... ... @@ -109,85 +55,50 @@ optHammer.on('tap', function(e) {
});
});
} else if ($cur.hasClass('btn-cancel')) {
$reaMask.css('visibility', 'visible');
}
});
if ($ownerInfo.data('changeable') === true) {
$ownerInfo.find('.rest').show();
$ownerInfo.on('touchend', function() {
location.href = $ownerInfo.data('url');
});
}
$(function() {
reasonSwiper = new Swiper('.box-main', {
initialSlide: 0,
centeredSlides: true,
slidesPerView: 5,
direction: 'vertical',
onSlideChangeStart: function(reasonSwiper) {
var activeIndex = reasonSwiper.activeIndex,
slides = reasonSwiper.slides,
i = 0;
if (slides.length !== 1) {
if (activeIndex === 0) {
for (i = 1; i < slides.length; i++) {
$(slides[i]).css('transform', '');
}
} else if (activeIndex === slides.length - 1) {
for (i = 0; i < activeIndex; i++) {
$(slides[i]).css('transform', 'rotateX(' + (30 + (activeIndex - i) * 12) + 'deg)');
}
} else {
for (i = 0; i < activeIndex; i++) {
$(slides[i]).css('transform', 'rotateX(' + (30 + (activeIndex - i) * 12) + 'deg)');
}
for (i = activeIndex + 1; i < slides.length; i++) {
$(slides[i]).css('transform', '');
}
//取消订单
dialog.showDialog({
dialogText: '确定取消订单吗?',
hasFooter: {
leftBtnText: '取消',
rightBtnText: '确定'
}
}, function() {
$.ajax({
type: 'GET',
url: '/home/cancelOrder',
data: {
id: orderId
}
}).then(function(res) {
$('#dialog-wrapper').hide();
if ($.type(res) !== 'object') {
return;
}
if (res.message) {
tip.show(res.message);
}
setTimeout(function() {
window.location.href = '/home/orders';
}, 2000);
}).fail(function() {
tip.show('网络错误');
});
});
} else if ($cur.hasClass('btn-rebuy')) {
$.ajax({
type: 'GET',
url: '/home/readd',
data: {
orderCode: orderId
},
success: function(res) {
tip.show(res.message);
location.href = '/cart/index/index';
},
error: function(res) {
tip.show(res.message);
}
$(slides[activeIndex]).css('transform', '');
}
});
});
$reaMask.find('.box-cmp').on('touchend', function(e) {
var selSolid = reasonSwiper.slides[reasonSwiper.activeIndex],
reason = $(selSolid).text(),
reasonId = $(selSolid).data('reasonId');
$.ajax({
type: 'GET',
url: '/home/cancelOrder',
data: {
id: orderId,
reason: reason,
reasonId: reasonId
}
}).then(function(res) {
$reaMask.fadeOut();
if ($.type(res) !== 'object') {
return;
}
if (res.message) {
tip.show(res.message);
}
setTimeout(function() {
window.location.href = '/home/orders';
}, 2000);
}).fail(function() {
tip.show('网络错误');
});
});
$reaMask.on('touchend', function(event) {
if (event.target.className !== 'reason-mask') {
return false;
});
}
$reaMask.css('visibility', 'hidden');
event.stopPropagation();
});
... ...
... ... @@ -223,6 +223,21 @@ orderHammer.on('tap', function(e) {
//Location to order detail
url = $order.data('href');
location.href = url;
} else if ($cur.closest('.rebuy').length > 0) {
$.ajax({
type: 'GET',
url: '/home/readd',
data: {
orderCode: id
},
success: function(res) {
tip.show(res.message);
location.href = '/cart/index/index';
},
error: function(res) {
tip.show(res.message);
}
});
}
});
... ...
... ... @@ -267,4 +267,8 @@
}
}
.btn-rebuy {
margin-left: 10px;
}
}
... ...
... ... @@ -161,6 +161,8 @@
font-size: 24px;
line-height: 24px;
}
.rebuy {
margin-left: 20px;
}
}
}
... ...
... ... @@ -96,6 +96,7 @@
{{#unless unreceived}}
{{#unless unpaid}}
<span class="btn btn-del">删除订单</span>
<span class="btn btn-rebuy">再次购买</span>
{{/unless}}
{{/unless}}
... ...
... ... @@ -20,6 +20,7 @@
{{#unless unreceived}}
<div class="order-opt">
<span class="btn del">删除订单</span>
<span class="btn rebuy">再次购买</span>
</div>
{{/unless}}
{{/unless}}
... ...
... ... @@ -829,6 +829,40 @@ class HomeController extends AbstractAction
//渲染模板
$this->_view->display('order-content', $order);
}
/**
* 我的订单——再次购买
*/
public function reAddAction()
{
$result = array('code' => 401, 'message' => '商品加入购物车失败', 'data' => '');
do {
/* 判断是不是AJAX请求 */
if (!$this->isAjax()) {
break;
}
//获取相关参数
$uid = $this->getUid(true);
$orderCode = $this->get('orderCode', '');
if (!$uid || !$orderCode) {
$result = array('code' => 400, 'message' => '缺失参数', 'data' => '');
break;
}
$reAddData = OrderData::reAddData($uid, $orderCode);
if(!isset($reAddData['code']) || $reAddData['code'] != 200){
break;
}
$result = array('code' => 200, 'message' => '商品已重新加入购物车', 'data' => $reAddData['data']);
if (!isset($result['code'])) {
break;
}
}
while (false);
$this->echoJson($result);
}
/*
* 我的订单-取消订单
... ... @@ -1063,6 +1097,8 @@ class HomeController extends AbstractAction
/* 判断订单信息是否存在 */
$orderDetail = OrderModel::orderDetail($orderCode, $this->_uid, $this->_usession);
// $readd = OrderData::reAddData($this->_uid, 1611143210);
// print_r($readd);
if (empty($orderDetail)) {
$this->error();
}
... ...