提交 6e2793ba 编写于 作者: D devil_gong

订单自提模式优化

上级 87d7c6ce
......@@ -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)
{
$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);
}
// 订单模式
switch($order['order_model'])
{
// 销售模式- 订单快递信息校验
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;
}
// 开启事务
......
此差异已折叠。
......@@ -236,6 +236,9 @@ strong.total-price-content { color: #d2364c; }
height: 100%;
padding: 0;
}
#popup-extraction-receive-map .am-popup-hd {
border: 0;
}
/**
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册