下订单页面逻辑优化
parent
4905972568
commit
1e51ee8ed3
|
|
@ -57,34 +57,18 @@ class Buy extends Common
|
|||
// 商品校验
|
||||
if(isset($ret['code']) && $ret['code'] == 0)
|
||||
{
|
||||
// 用户默认地址
|
||||
$address = UserService::UserDefaultAddress(['user'=>$this->user]);
|
||||
|
||||
// 商品/基础信息
|
||||
$base = [
|
||||
'total_price' => empty($ret['data']) ? 0 : array_sum(array_column($ret['data'], 'total_price')),
|
||||
'total_stock' => empty($ret['data']) ? 0 : array_sum(array_column($ret['data'], 'stock')),
|
||||
'address' => empty($address['data']) ? null : $address['data'],
|
||||
];
|
||||
|
||||
// 支付方式
|
||||
$payment_list = PaymentService::BuyPaymentList(['is_enable'=>1, 'is_open_user'=>1]);
|
||||
|
||||
// 扩展展示数据
|
||||
$extension_list = [
|
||||
// ['name'=>'感恩节9折', 'tips'=>'-¥23元'],
|
||||
// ['name'=>'运费', 'tips'=>'+¥10元'],
|
||||
];
|
||||
|
||||
// 数据返回组装
|
||||
$result = [
|
||||
'goods_list' => $ret['data'],
|
||||
'goods_list' => $ret['data']['goods'],
|
||||
'payment_list' => $payment_list,
|
||||
'base' => $base,
|
||||
'extension_list' => $extension_list,
|
||||
'base' => $ret['data']['base'],
|
||||
'extension_data' => $ret['data']['extension_data'],
|
||||
'common_order_is_booking' => (int) MyC('common_order_is_booking', 0),
|
||||
];
|
||||
return DataReturn('success', 0, $result);
|
||||
return DataReturn('操作成功', 0, $result);
|
||||
}
|
||||
return $ret;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -55,7 +55,7 @@ class Buy extends Common
|
|||
return redirect(MyUrl('index/buy/index'));
|
||||
} else {
|
||||
// 获取商品列表
|
||||
$params = session('buy_post_data');
|
||||
$params = array_merge(input(), session('buy_post_data'));
|
||||
$params['user'] = $this->user;
|
||||
$ret = BuyService::BuyTypeGoodsList($params);
|
||||
|
||||
|
|
@ -68,15 +68,9 @@ class Buy extends Common
|
|||
// 支付方式
|
||||
$this->assign('payment_list', PaymentService::BuyPaymentList(['is_enable'=>1, 'is_open_user'=>1]));
|
||||
|
||||
// 商品/基础信息
|
||||
$base = [
|
||||
'total_price' => empty($ret['data']) ? 0 : array_sum(array_column($ret['data'], 'total_price')),
|
||||
'total_stock' => empty($ret['data']) ? 0 : array_sum(array_column($ret['data'], 'stock')),
|
||||
'address' => UserService::UserDefaultAddress(['user'=>$this->user])['data'],
|
||||
];
|
||||
$this->assign('base', $base);
|
||||
$this->assign('goods_list', $ret['data']);
|
||||
|
||||
$this->assign('base', $ret['data']['base']);
|
||||
$this->assign('goods_list', $ret['data']['goods']);
|
||||
$this->assign('extension_data', $ret['data']['extension_data']);
|
||||
$this->assign('params', $params);
|
||||
return $this->fetch();
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@
|
|||
{{if !empty($user_address_list)}}
|
||||
<ul class="address-list">
|
||||
{{foreach $user_address_list as $address}}
|
||||
<li class="{{if isset($address['is_default']) and $address['is_default'] eq 1}}address-default{{/if}}" id="data-list-{{$address.id}}" data-value="{{$address.id}}">
|
||||
<li class="{{if (isset($params['address_id']) and $params['address_id'] eq $address['id']) or (!isset($params['address_id']) and $params['address_id'] neq $address['id'] and isset($address['is_default']) and $address['is_default'] eq 1)}}address-default{{/if}}" id="data-list-{{$address.id}}" data-value="{{$address.id}}">
|
||||
<div class="address-left">
|
||||
<div class="user-base">
|
||||
{{if !empty($address.alias)}}
|
||||
|
|
|
|||
|
|
@ -509,6 +509,61 @@ class BuyService
|
|||
} else {
|
||||
$ret = DataReturn('参数有误', -1);
|
||||
}
|
||||
|
||||
// 数据组装
|
||||
if($ret['code'] == 0)
|
||||
{
|
||||
// 商品数据
|
||||
$goods = $ret['data'];
|
||||
|
||||
// 用户默认地址
|
||||
$address_params = [
|
||||
'user' => $params['user'],
|
||||
];
|
||||
if(!empty($params['address_id']))
|
||||
{
|
||||
$address_params['where'] = ['id' => $params['address_id']];
|
||||
}
|
||||
$address = UserService::UserDefaultAddress($address_params);
|
||||
|
||||
// 商品/基础信息
|
||||
$total_price = empty($goods) ? 0 : array_sum(array_column($goods, 'total_price'));
|
||||
$base = [
|
||||
'total_price' => $total_price,
|
||||
'actual_price' => $total_price,
|
||||
'total_stock' => empty($goods) ? 0 : array_sum(array_column($goods, 'stock')),
|
||||
'address' => empty($address['data']) ? null : $address['data'],
|
||||
];
|
||||
|
||||
// 扩展展示数据
|
||||
// name 名称
|
||||
// price 金额
|
||||
// type 类型(0减少, 1增加)
|
||||
// tips 提示信息
|
||||
$extension_data = [
|
||||
[
|
||||
'name' => '感恩节9折',
|
||||
'price' => 23,
|
||||
'type' => 0,
|
||||
'tips' => '-¥23元'
|
||||
],
|
||||
[
|
||||
'name' => '运费',
|
||||
'price' => 10,
|
||||
'type' => 1,
|
||||
'tips' => '+¥10元'
|
||||
],
|
||||
];
|
||||
|
||||
// 返回数据
|
||||
$result = [
|
||||
'goods' => $goods,
|
||||
'base' => $base,
|
||||
'extension_data' => $extension_data,
|
||||
];
|
||||
return DataReturn('操作成功', 0, $result);
|
||||
}
|
||||
|
||||
return $ret;
|
||||
}
|
||||
|
||||
|
|
@ -638,7 +693,7 @@ class BuyService
|
|||
{
|
||||
return $goods;
|
||||
}
|
||||
$check = self::BuyGoodsCheck(['goods'=>$goods['data']]);
|
||||
$check = self::BuyGoodsCheck(['goods'=>$goods['data']['goods']]);
|
||||
if(!isset($check['code']) || $check['code'] != 0)
|
||||
{
|
||||
return $check;
|
||||
|
|
@ -689,7 +744,7 @@ class BuyService
|
|||
$order_id = Db::name('Order')->insertGetId($order);
|
||||
if($order_id > 0)
|
||||
{
|
||||
foreach($goods['data'] as $v)
|
||||
foreach($goods['data']['goods'] as $v)
|
||||
{
|
||||
$detail = [
|
||||
'order_id' => $order_id,
|
||||
|
|
|
|||
|
|
@ -466,7 +466,7 @@ class UserService
|
|||
}
|
||||
|
||||
// 获取用户地址
|
||||
$params['where'] = ['is_default'=>1];
|
||||
$params['where'] = empty($params['where']) ? ['is_default'=>1] : $params['where'];
|
||||
$ret = self::UserAddressList($params);
|
||||
if(!empty($ret['data'][0]))
|
||||
{
|
||||
|
|
|
|||
|
|
@ -46,8 +46,8 @@
|
|||
<textarea onInput="bind_user_note_event" maxlength="60" auto-height placeholder="留言" class="spacing-mb" />
|
||||
|
||||
<!-- 扩展数据展示 -->
|
||||
<view a:if="{{extension_list.length > 0}}" class="extension-list spacing-mb">
|
||||
<view a:for="{{extension_list}}" class="item oh">
|
||||
<view a:if="{{extension_data.length > 0}}" class="extension-list spacing-mb">
|
||||
<view a:for="{{extension_data}}" class="item oh">
|
||||
<text class="cr-666">{{item.name}}
|
||||
</text>
|
||||
<text class="text-tips fr">{{item.tips}}
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ Page({
|
|||
total_price: 0,
|
||||
user_note_value: '',
|
||||
is_first: 1,
|
||||
extension_list: [],
|
||||
extension_data: [],
|
||||
payment_id: 0,
|
||||
common_order_is_booking: 0,
|
||||
},
|
||||
|
|
@ -87,7 +87,7 @@ Page({
|
|||
this.setData({
|
||||
goods_list: data.goods_list,
|
||||
total_price: data.base.total_price,
|
||||
extension_list: data.extension_list || [],
|
||||
extension_data: data.extension_data || [],
|
||||
data_list_loding_status: 3,
|
||||
common_order_is_booking: data.common_order_is_booking || 0,
|
||||
});
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ Page({
|
|||
total_price: 0,
|
||||
user_note_value: '',
|
||||
is_first: 1,
|
||||
extension_list: [],
|
||||
extension_data: [],
|
||||
payment_id: 0,
|
||||
common_order_is_booking: 0,
|
||||
},
|
||||
|
|
@ -85,7 +85,7 @@ Page({
|
|||
this.setData({
|
||||
goods_list: data.goods_list,
|
||||
total_price: data.base.total_price,
|
||||
extension_list: data.extension_list || [],
|
||||
extension_data: data.extension_data || [],
|
||||
data_list_loding_status: 3,
|
||||
common_order_is_booking: data.common_order_is_booking || 0,
|
||||
});
|
||||
|
|
|
|||
|
|
@ -45,8 +45,8 @@
|
|||
<textarea bindinput="bind_user_note_event" maxlength="60" auto-height placeholder="留言" class="content-textarea bg-white spacing-mb" />
|
||||
|
||||
<!-- 扩展数据展示 -->
|
||||
<view wx:if="{{extension_list.length > 0}}" class="extension-list spacing-mb">
|
||||
<view wx:for="{{extension_list}}" wx:key="key" class="item oh">
|
||||
<view wx:if="{{extension_data.length > 0}}" class="extension-list spacing-mb">
|
||||
<view wx:for="{{extension_data}}" wx:key="key" class="item oh">
|
||||
<text class="cr-666">{{item.name}}
|
||||
</text>
|
||||
<text class="text-tips fr">{{item.tips}}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
{
|
||||
"defaultTitle": "加载中...",
|
||||
"navigationBarTitleText": "加载中...",
|
||||
"enablePullDownRefresh": false
|
||||
}
|
||||
|
|
@ -1055,6 +1055,81 @@ function FullscreenEscEvent()
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* url参数替换,参数不存在则添加
|
||||
* @author Devil
|
||||
* @blog http://gong.gg/
|
||||
* @version 1.0.0
|
||||
* @date 2019-03-20
|
||||
* @desc description
|
||||
* @param {[string]} field [字段名称]
|
||||
* @param {[string]} value [字段值]
|
||||
* @param {[string]} url [自定义url]
|
||||
*/
|
||||
function UrlFieldReplace(field, value, url)
|
||||
{
|
||||
// 当前页面url地址
|
||||
url = url || window.location.href;
|
||||
|
||||
// 锚点
|
||||
var anchor = '';
|
||||
if(url.indexOf('#') >= 0)
|
||||
{
|
||||
anchor = url.substr(url.indexOf('#'));
|
||||
url = url.substr(0, url.indexOf('#'));
|
||||
}
|
||||
|
||||
if(url.indexOf('?') >= 0)
|
||||
{
|
||||
var str = url.substr(0, url.lastIndexOf('.'));
|
||||
var ext = url.substr(url.lastIndexOf('.'));
|
||||
if(str.indexOf(field) >= 0)
|
||||
{
|
||||
var first = str.substr(0, str.lastIndexOf(field));
|
||||
var last = str.substr(str.lastIndexOf(field));
|
||||
last = last.replace(new RegExp(field+'/', 'g'), '');
|
||||
last = (last.indexOf('/') >= 0) ? last.substr(last.indexOf('/')) : '';
|
||||
url = first+field+'/'+value+last+ext;
|
||||
} else {
|
||||
if(ext.indexOf('?') >= 0)
|
||||
{
|
||||
var p = '';
|
||||
exts = ext.substr(ext.indexOf('?')+1);
|
||||
if(ext.indexOf(field) >= 0)
|
||||
{
|
||||
var params_all = exts.split('&');
|
||||
for(var i in params_all)
|
||||
{
|
||||
var temp = params_all[i].split('=');
|
||||
|
||||
if(temp.length >= 2)
|
||||
{
|
||||
if(i > 0)
|
||||
{
|
||||
p += '&';
|
||||
}
|
||||
if(temp[0] == field)
|
||||
{
|
||||
p += field+'='+value;
|
||||
} else {
|
||||
p += params_all[i];
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
p = exts+'&'+field+'='+value;
|
||||
}
|
||||
url = str+(ext.substr(0, ext.indexOf('?')))+'?'+p;
|
||||
} else {
|
||||
url = str+'/'+field+'/'+value+ext;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
url += '?'+field+'='+value;
|
||||
}
|
||||
return url+anchor;
|
||||
}
|
||||
|
||||
|
||||
// 公共数据操作
|
||||
$(function()
|
||||
|
|
@ -1723,7 +1798,6 @@ $(function()
|
|||
// 文件上传
|
||||
upload_editor.addListener("beforeInsertFile", function(t, result)
|
||||
{
|
||||
console.log(t, result, 'file');
|
||||
var fileHtml = '';
|
||||
for(var i in result){
|
||||
fileHtml += '<li><a href="'+result[i].url+'" target="_blank">'+result[i].url+'</a></li>';
|
||||
|
|
|
|||
|
|
@ -1,32 +1,12 @@
|
|||
if(store.enabled)
|
||||
{
|
||||
// 选择缓存key
|
||||
var store_address_key = 'store-buy-address-selected-index';
|
||||
var store_use_new_address_status_key = 'store-buy-use-new-address-status-count';
|
||||
var store_payment_key = 'store-buy-payment-selected-index';
|
||||
}
|
||||
|
||||
$(function()
|
||||
{
|
||||
// 底部地址同步显示
|
||||
function address_sync_view()
|
||||
{
|
||||
var $address = $('ul.address-list li.address-default');
|
||||
if($address.length > 0)
|
||||
{
|
||||
var user = $address.find('.user-base span.user').text();
|
||||
var phone = $address.find('.user-base span.phone').text();
|
||||
var province = $address.find('.region .province').text();
|
||||
var city = $address.find('.region .city').text();
|
||||
var dist = $address.find('.region .dist').text();
|
||||
var street = $address.find('.region .street').text();
|
||||
|
||||
$('.buy-address-detail').text(province+' '+city+' '+dist+' '+street);
|
||||
$('.buy-footer-address .buy-user').text(user);
|
||||
$('.buy-footer-address .buy-phone').text(phone);
|
||||
}
|
||||
}
|
||||
|
||||
// 选中处理
|
||||
if(store.enabled)
|
||||
{
|
||||
|
|
@ -37,20 +17,11 @@ $(function()
|
|||
// 如果新的地址大于使用新地址标记数量则使用第一个地址
|
||||
if(store_address_use_status < $('ul.address-list li').length)
|
||||
{
|
||||
store.set(store_address_key, 0);
|
||||
store.set(store_use_new_address_status_key, undefined);
|
||||
window.location.href = UrlFieldReplace('address_id', $('ul.address-list li:first').data('value'));
|
||||
}
|
||||
}
|
||||
|
||||
// 地址
|
||||
var store_address_value = store.get(store_address_key);
|
||||
if(store_address_value !== undefined)
|
||||
{
|
||||
$('ul.address-list li').eq(store_address_value).addClass('address-default').siblings().removeClass('address-default');
|
||||
|
||||
// 底部地址同步
|
||||
address_sync_view();
|
||||
}
|
||||
// 支付方式
|
||||
var store_payment_value = store.get(store_payment_key);
|
||||
if(store_payment_value !== undefined)
|
||||
|
|
@ -59,23 +30,34 @@ $(function()
|
|||
}
|
||||
}
|
||||
|
||||
// 地址不为空,并且未设置默认,并且没有选择 默认选中第一个
|
||||
if($('ul.address-list li').length > 0 && $('ul.address-list li.address-default').length == 0)
|
||||
{
|
||||
$('ul.address-list li').eq(0).addClass('address-default');
|
||||
|
||||
// 底部地址同步
|
||||
address_sync_view();
|
||||
}
|
||||
|
||||
// 地址选择
|
||||
$('ul.address-list li').on('click', function()
|
||||
$('ul.address-list li').on('click', function(e)
|
||||
{
|
||||
$(this).addClass('address-default').siblings().removeClass('address-default');
|
||||
store.set(store_address_key, $(this).index());
|
||||
if($(window).width() < 640)
|
||||
{
|
||||
if(!$('.address').hasClass('mobile-address'))
|
||||
{
|
||||
$('.address').addClass('mobile-address');
|
||||
$(document.body).css({"overflow": "hidden", "position":"fixed"});
|
||||
e.stopPropagation();
|
||||
}
|
||||
} else {
|
||||
// 底部地址同步
|
||||
window.location.href = UrlFieldReplace('address_id', $(this).data('value'));
|
||||
}
|
||||
});
|
||||
|
||||
// 底部地址同步
|
||||
address_sync_view();
|
||||
// 手机模式下选择地址
|
||||
$('.address').on('click', 'ul.address-list li', function()
|
||||
{
|
||||
window.location.href = UrlFieldReplace('address_id', $(this).data('value'));
|
||||
});
|
||||
|
||||
// 设为默认地址
|
||||
$('.address-default-submit').on('click', function(e)
|
||||
{
|
||||
ConfirmNetworkAjax($(this));
|
||||
e.stopPropagation();
|
||||
});
|
||||
|
||||
// 混合列表选择
|
||||
|
|
@ -123,34 +105,6 @@ $(function()
|
|||
e.stopPropagation();
|
||||
});
|
||||
|
||||
|
||||
// 手机模式下选择地址
|
||||
$('ul.address-list li').on('click', function(e)
|
||||
{
|
||||
if($(window).width() < 640)
|
||||
{
|
||||
if(!$('.address').hasClass('mobile-address'))
|
||||
{
|
||||
$('.address').addClass('mobile-address');
|
||||
$(document.body).css({"overflow": "hidden", "position":"fixed"});
|
||||
e.stopPropagation();
|
||||
}
|
||||
}
|
||||
});
|
||||
$('.address').on('click', 'ul.address-list li', function()
|
||||
{
|
||||
$('.address').removeClass('mobile-address');
|
||||
$(document.body).css({"overflow": "auto", "position":"unset"});
|
||||
$('body').scrollTop(0);
|
||||
});
|
||||
|
||||
// 设为默认地址
|
||||
$('.address-default-submit').on('click', function(e)
|
||||
{
|
||||
ConfirmNetworkAjax($(this));
|
||||
e.stopPropagation();
|
||||
});
|
||||
|
||||
// 提交订单
|
||||
$('.nav-buy .btn-go').on('click', function()
|
||||
{
|
||||
|
|
|
|||
Loading…
Reference in New Issue