订单自提模式优化
parent
87d7c6ce83
commit
6e2793ba64
|
|
@ -197,7 +197,7 @@ class Order extends Common
|
|||
}
|
||||
|
||||
/**
|
||||
* [Delivery 订单发货]
|
||||
* [Delivery 订单发货/取货]
|
||||
* @author Devil
|
||||
* @blog http://gong.gg/
|
||||
* @version 0.0.1
|
||||
|
|
|
|||
|
|
@ -233,6 +233,24 @@
|
|||
{{if empty($v['order_no'])}}<span class="cr-ddd">未填写</span>{{else /}}{{$v.order_no}}{{/if}}
|
||||
</dd>
|
||||
|
||||
<dt>订单模式</dt>
|
||||
<dd>
|
||||
{{if empty($v['order_model_name'])}}
|
||||
<span class="cr-ddd">未知</span>
|
||||
{{else /}}
|
||||
<span class="am-badge am-badge-secondary am-radius" title="订单模式">{{$v.order_model_name}}</span>
|
||||
{{/if}}
|
||||
</dd>
|
||||
|
||||
<dt>客户端类型</dt>
|
||||
<dd>
|
||||
{{if empty($v['client_type_name'])}}
|
||||
<span class="cr-ddd">未知</span>
|
||||
{{else /}}
|
||||
<span class="am-badge am-badge-secondary am-radius" title="客户端类型">{{$v.client_type_name}}</span>
|
||||
{{/if}}
|
||||
</dd>
|
||||
|
||||
<dt>基础信息</dt>
|
||||
<dd>
|
||||
{{foreach $v.items as $vs}}
|
||||
|
|
@ -287,24 +305,6 @@
|
|||
{{/if}}
|
||||
</dd>
|
||||
|
||||
<dt>订单模式</dt>
|
||||
<dd>
|
||||
{{if empty($v['order_model_name'])}}
|
||||
<span class="cr-ddd">未知</span>
|
||||
{{else /}}
|
||||
<span class="am-badge am-badge-secondary am-radius" title="订单模式">{{$v.order_model_name}}</span>
|
||||
{{/if}}
|
||||
</dd>
|
||||
|
||||
<dt>客户端类型</dt>
|
||||
<dd>
|
||||
{{if empty($v['client_type_name'])}}
|
||||
<span class="cr-ddd">未知</span>
|
||||
{{else /}}
|
||||
<span class="am-badge am-badge-secondary am-radius" title="客户端类型">{{$v.client_type_name}}</span>
|
||||
{{/if}}
|
||||
</dd>
|
||||
|
||||
<dt>地址信息</dt>
|
||||
<dd>
|
||||
{{if in_array($v['order_model'], [0,2])}}
|
||||
|
|
@ -360,17 +360,19 @@
|
|||
{{/if}}
|
||||
</dd>
|
||||
|
||||
<dt>购买数量</dt>
|
||||
<dt>购买总数</dt>
|
||||
<dd>{{if empty($v['buy_number_count'])}}<span class="cr-ddd">未知</span>{{else /}}{{$v.buy_number_count}}{{/if}}</dd>
|
||||
|
||||
<dt>退货数量</dt>
|
||||
<dt>退货总数</dt>
|
||||
<dd>{{if empty($v['returned_quantity'])}}<span class="cr-ddd">未退货</span>{{else /}}{{$v.returned_quantity}}{{/if}}</dd>
|
||||
|
||||
<dt>退款金额</dt>
|
||||
<dd>{{if empty($v['refund_price']) or $v['refund_price'] elt 0.00}}<span class="cr-ddd">未退款</span>{{else /}}<span class="am-text-danger">{{$v.refund_price}}{{/if}}</span></dd>
|
||||
|
||||
<dt>自提取货码</dt>
|
||||
<dd>{{if empty($v['extraction_code'])}}<span class="cr-ddd">未填写</span>{{else /}}{{$v.extraction_code}}{{/if}}</dd>
|
||||
{{if $v['order_model'] eq 2}}
|
||||
<dt>自提取货码</dt>
|
||||
<dd>{{if empty($v['extraction_code'])}}<span class="cr-ddd">未填写</span>{{else /}}{{$v.extraction_code}}{{/if}}</dd>
|
||||
{{/if}}
|
||||
|
||||
<dt>确认时间</dt>
|
||||
<dd>{{if empty($v['confirm_time'])}}<span class="cr-ddd">未填写</span>{{else /}}{{$v.confirm_time}}{{/if}}</dd>
|
||||
|
|
@ -412,7 +414,7 @@
|
|||
{{/if}}
|
||||
{{if $v['status'] eq 2}}
|
||||
{{if $v['order_model'] eq 2}}
|
||||
<button class="am-btn am-btn-secondary am-btn-xs am-radius am-icon-check am-btn-block submit-take" data-url="{{:MyUrl('admin/order/delivery')}}" data-id="{{$v.id}}" data-user-id="{{$v.user_id}}" data-extraction-code="" data-am-modal="{target: '#order-take-modal', closeViaDimmer: 0, width: 300, height: 160}"> 取货</button>
|
||||
<button class="am-btn am-btn-secondary am-btn-xs am-radius am-icon-check am-btn-block submit-take" data-url="{{:MyUrl('admin/order/delivery')}}" data-id="{{$v.id}}" data-user-id="{{$v.user_id}}" data-extraction-code="" data-am-modal="{target: '#order-take-modal', closeViaDimmer: 0, width: 200, height: 160}"> 取货</button>
|
||||
{{else /}}
|
||||
<button class="am-btn am-btn-secondary am-btn-xs am-radius am-icon-send-o am-btn-block submit-delivery" data-url="{{:MyUrl('admin/order/delivery')}}" data-id="{{$v.id}}" data-user-id="{{$v.user_id}}" data-express-id="{{$v.express_id}}" data-am-modal="{target: '#order-delivery-popup'}"> 发货</button>
|
||||
{{/if}}
|
||||
|
|
|
|||
|
|
@ -257,6 +257,26 @@
|
|||
{{/if}}
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
<!-- 自提模式下 - 取货码 -->
|
||||
{{if $data['order_model'] eq 2 and in_array($data['status'], [2,3])}}
|
||||
<hr data-am-widget="divider" class="am-divider am-divider-dashed" />
|
||||
<div class="extraction-take-container">
|
||||
<p>
|
||||
<span>取货码:</span>
|
||||
{{if empty($data['extraction_code'])}}
|
||||
<span class="am-text-danger">取货码不存在、请联系管理员</span>
|
||||
{{else /}}
|
||||
<span class="am-badge am-badge-success am-radius">{{$data.extraction_code}}</span>
|
||||
{{/if}}
|
||||
</p>
|
||||
{{if !empty($data['extraction_code_images'])}}
|
||||
<p class="am-margin-top-xs">
|
||||
<img class="qrcode-images am-img-thumbnail" src="{{$data.extraction_code_images}}" />
|
||||
</p>
|
||||
{{/if}}
|
||||
</div>
|
||||
{{/if}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
|
|||
|
|
@ -902,10 +902,6 @@ class BuyService
|
|||
{
|
||||
$order['confirm_time'] = time();
|
||||
}
|
||||
if($common_site_type == 2)
|
||||
{
|
||||
$order['extraction_code'] = GetNumberCode(4);
|
||||
}
|
||||
|
||||
// 订单添加前钩子
|
||||
$hook_name = 'plugins_service_buy_order_insert_begin';
|
||||
|
|
@ -938,10 +934,9 @@ class BuyService
|
|||
return $ret;
|
||||
}
|
||||
|
||||
// 自提模式 - 虚拟信息
|
||||
// 自提模式 - 虚拟信息添加
|
||||
if($common_site_type == 3)
|
||||
{
|
||||
// 订单虚拟销售关联数据添加
|
||||
$ret = self::OrderFictitiousValueInsert($order_id, $detail_ret['data'], $params['user']['id'], $v['goods_id']);
|
||||
if($ret['code'] != 0)
|
||||
{
|
||||
|
|
@ -951,15 +946,30 @@ class BuyService
|
|||
}
|
||||
}
|
||||
|
||||
// 销售型模式+自提模式 添加订单收货地址
|
||||
if(in_array($common_site_type, [0, 2]) && !empty($address))
|
||||
// 订单模式处理
|
||||
// 销售型模式+自提模式
|
||||
if(in_array($common_site_type, [0,2]))
|
||||
{
|
||||
// 订单地址添加前钩子
|
||||
$ret = self::OrderReceiveAddressInsert($order_id, $params['user']['id'], $address);
|
||||
if($ret['code'] != 0)
|
||||
// 添加订单(收货|取货)地址
|
||||
if(!empty($address))
|
||||
{
|
||||
Db::rollback();
|
||||
return $ret;
|
||||
$ret = self::OrderReceiveAddressInsert($order_id, $params['user']['id'], $address);
|
||||
if($ret['code'] != 0)
|
||||
{
|
||||
Db::rollback();
|
||||
return $ret;
|
||||
}
|
||||
}
|
||||
|
||||
// 自提模式 添加订单取货码
|
||||
if($common_site_type == 2)
|
||||
{
|
||||
$ret = self::OrderExtractionCcodeInsert($order_id, $params['user']['id']);
|
||||
if($ret['code'] != 0)
|
||||
{
|
||||
Db::rollback();
|
||||
return $ret;
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
|
@ -1081,6 +1091,47 @@ class BuyService
|
|||
return DataReturn('订单详情添加失败', -1);
|
||||
}
|
||||
|
||||
/**
|
||||
* 订单关联自提取货码添加
|
||||
* @author Devil
|
||||
* @blog http://gong.gg/
|
||||
* @version 1.0.0
|
||||
* @date 2019-11-20
|
||||
* @desc description
|
||||
* @param [int] $order_id [订单id]
|
||||
* @param [int] $user_id [用户id]
|
||||
*/
|
||||
private static function OrderExtractionCcodeInsert($order_id, $user_id)
|
||||
{
|
||||
$data = [
|
||||
'order_id' => $order_id,
|
||||
'user_id' => $user_id,
|
||||
'code' => GetNumberCode(4),
|
||||
'add_time' => time(),
|
||||
];
|
||||
|
||||
// 订单取货码添加前钩子
|
||||
$hook_name = 'plugins_service_buy_order_extraction_code_insert_begin';
|
||||
$ret = Hook::listen($hook_name, [
|
||||
'hook_name' => $hook_name,
|
||||
'is_backend' => true,
|
||||
'user_id' => $user_id,
|
||||
'order_id' => $order_id,
|
||||
'data' => &$data,
|
||||
]);
|
||||
if(isset($ret['code']) && $ret['code'] != 0)
|
||||
{
|
||||
return $ret;
|
||||
}
|
||||
|
||||
// 添加订单虚拟数据
|
||||
if(Db::name('OrderExtractionCode')->insertGetId($data) > 0)
|
||||
{
|
||||
return DataReturn('添加成功', 0);
|
||||
}
|
||||
return DataReturn('订单取货码添加失败', -1);
|
||||
}
|
||||
|
||||
/**
|
||||
* 订单关联虚拟销售数据添加
|
||||
* @author Devil
|
||||
|
|
|
|||
|
|
@ -674,12 +674,31 @@ class OrderService
|
|||
return $ret;
|
||||
}
|
||||
|
||||
// 收件人地址
|
||||
$receive_address = Db::name('OrderReceiveAddress')->where(['order_id'=>$v['id']])->find();
|
||||
if(!empty($receive_address) && is_array($receive_address))
|
||||
// 订单模式处理
|
||||
// 销售型模式+自提模式
|
||||
if(in_array($v['order_model'], [0,2]))
|
||||
{
|
||||
unset($receive_address['add_time'], $receive_address['upd_time'], $receive_address['id']);
|
||||
$v = array_merge($v, $receive_address);
|
||||
// 销售模式+自提模式 地址信息
|
||||
$receive_address = Db::name('OrderReceiveAddress')->where(['order_id'=>$v['id']])->find();
|
||||
if(!empty($receive_address) && is_array($receive_address))
|
||||
{
|
||||
unset($receive_address['add_time'], $receive_address['upd_time'], $receive_address['id']);
|
||||
$v = array_merge($v, $receive_address);
|
||||
}
|
||||
|
||||
// 自提模式 添加订单取货码
|
||||
if($v['order_model'] == 2)
|
||||
{
|
||||
$extraction_code = Db::name('OrderExtractionCode')->where(['order_id'=>$v['id']])->value('code');
|
||||
if(empty($extraction_code))
|
||||
{
|
||||
$v['extraction_code'] = null;
|
||||
$v['extraction_code_images'] = null;
|
||||
} else {
|
||||
$v['extraction_code'] = $extraction_code;
|
||||
$v['extraction_code_images'] = MyUrl('index/qrcode/index', ['content'=>urlencode(base64_encode($extraction_code))]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 用户信息
|
||||
|
|
@ -1047,26 +1066,56 @@ class OrderService
|
|||
return DataReturn('状态不可操作['.$status_text.']', -1);
|
||||
}
|
||||
|
||||
// 销售型订单快递信息校验
|
||||
if($order['order_model'] == 0)
|
||||
// 订单模式
|
||||
switch($order['order_model'])
|
||||
{
|
||||
$p = [
|
||||
[
|
||||
'checked_type' => 'empty',
|
||||
'key_name' => 'express_id',
|
||||
'error_msg' => '快递id有误',
|
||||
],
|
||||
[
|
||||
'checked_type' => 'empty',
|
||||
'key_name' => 'express_number',
|
||||
'error_msg' => '快递单号有误',
|
||||
],
|
||||
];
|
||||
$ret = ParamsChecked($params, $p);
|
||||
if($ret !== true)
|
||||
{
|
||||
return DataReturn($ret, -1);
|
||||
}
|
||||
// 销售模式- 订单快递信息校验
|
||||
case 0 :
|
||||
$p = [
|
||||
[
|
||||
'checked_type' => 'empty',
|
||||
'key_name' => 'express_id',
|
||||
'error_msg' => '快递id有误',
|
||||
],
|
||||
[
|
||||
'checked_type' => 'empty',
|
||||
'key_name' => 'express_number',
|
||||
'error_msg' => '快递单号有误',
|
||||
],
|
||||
];
|
||||
$ret = ParamsChecked($params, $p);
|
||||
if($ret !== true)
|
||||
{
|
||||
return DataReturn($ret, -1);
|
||||
}
|
||||
break;
|
||||
|
||||
// 自提模式 - 验证取货码
|
||||
case 2 :
|
||||
$p = [
|
||||
[
|
||||
'checked_type' => 'empty',
|
||||
'key_name' => 'extraction_code',
|
||||
'error_msg' => '取货码有误',
|
||||
],
|
||||
];
|
||||
$ret = ParamsChecked($params, $p);
|
||||
if($ret !== true)
|
||||
{
|
||||
return DataReturn($ret, -1);
|
||||
}
|
||||
|
||||
// 校验
|
||||
$extraction_code = Db::name('OrderExtractionCode')->where(['order_id'=>$order['id']])->value('code');
|
||||
if(empty($extraction_code))
|
||||
{
|
||||
return DataReturn('订单取货码不存在、请联系管理员', -10);
|
||||
}
|
||||
if($extraction_code != $params['extraction_code'])
|
||||
{
|
||||
return DataReturn('取货码不正确', -11);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
// 开启事务
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -236,6 +236,9 @@ strong.total-price-content { color: #d2364c; }
|
|||
height: 100%;
|
||||
padding: 0;
|
||||
}
|
||||
#popup-extraction-receive-map .am-popup-hd {
|
||||
border: 0;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
|
|
|
|||
Loading…
Reference in New Issue