提交 08106e48 编写于 作者: D Devil

插件管理优化+订单售后优化

上级 9241b1bc
......@@ -129,7 +129,17 @@ class Orderaftersale extends Common
],
];
$new_aftersale = OrderAftersaleService::OrderAftersaleList($data_params);
$this->assign('new_aftersale_data', empty($new_aftersale['data'][0]) ? [] : $new_aftersale['data'][0]);
if(!empty($new_aftersale['data'][0]))
{
$new_aftersale_data = $new_aftersale['data'][0];
$new_aftersale_data['tips_msg'] = OrderAftersaleService::OrderAftersaleTipsMsg($new_aftersale_data);
} else {
$new_aftersale_data = [];
}
$this->assign('new_aftersale_data', $new_aftersale_data);
// 进度
$this->assign('step_data', OrderAftersaleService::OrderAftersaleStep($new_aftersale_data));
// 可退款退货
$returned = OrderAftersaleService::OrderAftersaleCalculation($order_id, $order_detail_id);
......
......@@ -193,32 +193,13 @@
</td>
<td class="row-number">
<a href="{{:MyUrl('index/orderaftersale/aftersale', ['oid'=>$order['id'], 'did'=>$goods['id']])}}" target="_blank">
{{switch $order.status}}
{{case 2|3}}
{{if empty($goods['orderaftersale'])}}
退款/退货
{{else /}}
{{if $goods['orderaftersale']['status'] eq 3}}
<span class="am-text-success">查看退款</span>
{{else /}}
<span class="am-text-secondary">查看进度</span>
{{/if}}
{{/if}}
{{/case}}
{{case 4|6}}
{{if empty($goods['orderaftersale'])}}
{{if $order['status'] eq 4}}
申请售后
{{/if}}
{{else /}}
{{if $goods['orderaftersale']['status'] eq 3}}
<span class="am-text-success">查看退款</span>
{{else /}}
<span class="am-text-secondary">查看进度</span>
{{/if}}
{{/if}}
{{/case}}
{{/switch}}
{{if !empty($goods['orderaftersale_btn_text'])}}
{{if empty($goods['orderaftersale'])}}
{{$goods.orderaftersale_btn_text}}
{{else /}}
<span class="{{if $goods['orderaftersale']['status'] eq 3}}am-text-success{{else /}}am-text-secondary{{/if}}">{{$goods.orderaftersale_btn_text}}</span>
{{/if}}
{{/if}}
</a>
</td>
{{if $keys eq 0}}
......
......@@ -112,11 +112,11 @@
<!-- 拒绝/关闭 -->
{{if isset($new_aftersale_data['status']) and $new_aftersale_data['status'] eq 5}}
<div class="am-alert am-alert-warning">
当前订单商品售后申请已关闭!<a href="{{:MyUrl('index/orderaftersale/index', ['keywords'=>$new_aftersale_data['order_no']])}}">详情查看</a>
{{$new_aftersale_data.tips_msg}}<a href="{{:MyUrl('index/orderaftersale/index', ['keywords'=>$new_aftersale_data['order_no']])}}">详情查看</a>
</div>
{{/if}}
<!-- 类型 -->
<!-- 选择售后操作类型 -->
<div class="am-cf aftersale-type">
{{foreach $common_order_aftersale_type_list as $v}}
<div class="items-align {{$v.class}}" data-type="{{$v.value}}">
......@@ -146,16 +146,10 @@
<!-- 状态环节 -->
{{switch $new_aftersale_data.status}}
{{case 0}}
<div class="am-alert">
当前订单商品售后已提交申请,等待管理员确认中!<a href="{{:MyUrl('index/orderaftersale/index', ['keywords'=>$new_aftersale_data['order_no']])}}">详情查看</a>
</div>
{{/case}}
{{case 1}}
{{if $new_aftersale_data['type'] eq 1}}
{{case 0|1|2}}
{{if $new_aftersale_data['status'] eq 1 and $new_aftersale_data['type'] eq 1}}
<div class="am-alert">
当前订单商品售后,管理员已确认,请尽快完成退货!<a href="{{:MyUrl('index/orderaftersale/index', ['keywords'=>$new_aftersale_data['order_no']])}}">详情查看</a>
{{$new_aftersale_data.tips_msg}}<a href="{{:MyUrl('index/orderaftersale/index', ['keywords'=>$new_aftersale_data['order_no']])}}">详情查看</a>
<button type="button" class="am-btn am-btn-primary am-radius am-margin-left-sm orderaftersale-delivery-submit" data-am-modal="{target: '#popup-orderaftersale-delivery'}" data-is-auto-delivery="{{if isset($params['is_auto_delivery'])}}{{$params.is_auto_delivery}}{{else /}}0{{/if}}">立即退货</button>
</div>
<div class="am-alert am-alert-warning">
......@@ -165,26 +159,14 @@
{{include file="orderaftersale/delivery" /}}
{{else /}}
<div class="am-alert">
当前订单商品售后已提交申请,等待管理员确认中!<a href="{{:MyUrl('index/orderaftersale/index', ['keywords'=>$new_aftersale_data['order_no']])}}">详情查看</a>
{{$new_aftersale_data.tips_msg}}<a href="{{:MyUrl('index/orderaftersale/index', ['keywords'=>$new_aftersale_data['order_no']])}}">详情查看</a>
</div>
{{/if}}
{{/case}}
{{case 2}}
<div class="am-alert">
当前订单商品售后已退货,等待管理员审核中!<a href="{{:MyUrl('index/orderaftersale/index', ['keywords'=>$new_aftersale_data['order_no']])}}">详情查看</a>
</div>
{{/case}}
{{case 3}}
<div class="am-alert am-alert-success">
当前订单商品售后已处理结束!<a href="{{:MyUrl('index/orderaftersale/index', ['keywords'=>$new_aftersale_data['order_no']])}}">详情查看</a>
</div>
{{/case}}
{{case 4}}
<div class="am-alert am-alert-danger">
当前订单商品售后申请已被拒绝!<a href="{{:MyUrl('index/orderaftersale/index', ['keywords'=>$new_aftersale_data['order_no']])}}">详情查看</a>
{{case 3|4}}
<div class="am-alert {{if $new_aftersale_data['status'] eq 3}} am-alert-success{{else /}} am-alert-danger{{/if}}">
{{$new_aftersale_data.tips_msg}}<a href="{{:MyUrl('index/orderaftersale/index', ['keywords'=>$new_aftersale_data['order_no']])}}">详情查看</a>
</div>
{{/case}}
{{/switch}}
......
<ul class="aftersale-step am-cf am-text-center return-only-money-step {{if empty($new_aftersale_data) or $new_aftersale_data['status'] gt 3 or $new_aftersale_data['type'] eq 1}}none{{/if}}">
<li class="am-text-truncate selected {{if empty($new_aftersale_data) or $new_aftersale_data['status'] gt 3}} selected-end{{/if}}">
<span class="number">1</span>
<span class="text">申请仅退款</span>
<i class="am-icon-caret-right"></i>
<i class="am-icon-angle-right"></i>
</li>
<li class="am-text-truncate {{if isset($new_aftersale_data['status']) and $new_aftersale_data['status'] elt 3 and $new_aftersale_data['status'] egt 0}} selected{{/if}} {{if isset($new_aftersale_data['status']) and $new_aftersale_data['status'] elt 2}} selected-end{{/if}}">
<span class="number">2</span>
<span class="text">管理员审核</span>
{{if isset($new_aftersale_data['status']) and $new_aftersale_data['status'] elt 3 and $new_aftersale_data['status'] egt 0}}
<i class="am-icon-caret-right"></i>
{{/if}}
<i class="am-icon-angle-right"></i>
</li>
<li class="am-text-truncate {{if isset($new_aftersale_data['status']) and $new_aftersale_data['status'] elt 3 and $new_aftersale_data['status'] eq 3}} selected{{/if}}">
<span class="number">3</span>
<span class="text">退款完毕</span>
</li>
{{if !empty($step_data['step0'])}}
{{foreach $step_data.step0 as $step}}
<li class="am-text-truncate {{if $step.is_active eq 1}} selected{{/if}} {{if $step.is_end eq 1}} selected-end{{/if}}">
<span class="number">{{$step.number}}</span>
<span class="text">{{$step.name}}</span>
{{if $step.is_caret eq 1}}
<i class="am-icon-caret-right"></i>
{{/if}}
{{if $step.is_angle eq 1}}
<i class="am-icon-angle-right"></i>
{{/if}}
</li>
{{/foreach}}
{{/if}}
</ul>
<ul class="aftersale-step am-cf am-text-center return-money-goods-step {{if empty($new_aftersale_data) or $new_aftersale_data['status'] gt 3 or $new_aftersale_data['type'] eq 0}}none{{/if}}">
<li class="am-text-truncate selected {{if empty($new_aftersale_data) or $new_aftersale_data['status'] gt 3}} selected-end{{/if}}">
<span class="number">1</span>
<span class="text">申请退货退款</span>
<i class="am-icon-caret-right"></i>
<i class="am-icon-angle-right"></i>
</li>
<li class="am-text-truncate {{if isset($new_aftersale_data['status']) and $new_aftersale_data['status'] elt 3 and $new_aftersale_data['status'] egt 0}} selected{{/if}} {{if isset($new_aftersale_data['status']) and $new_aftersale_data['status'] eq 0}} selected-end{{/if}}">
<span class="number">2</span>
<span class="text">管理员确认</span>
{{if isset($new_aftersale_data['status']) and $new_aftersale_data['status'] elt 2 and $new_aftersale_data['status'] egt 0}}
<i class="am-icon-caret-right"></i>
{{/if}}
<i class="am-icon-angle-right"></i>
</li>
<li class="am-text-truncate {{if isset($new_aftersale_data['status']) and $new_aftersale_data['status'] elt 3 and $new_aftersale_data['status'] egt 1}} selected{{/if}} {{if isset($new_aftersale_data['status']) and $new_aftersale_data['status'] eq 1}} selected-end{{/if}}">
<span class="number">3</span>
<span class="text">用户退货</span>
{{if isset($new_aftersale_data['status']) and $new_aftersale_data['status'] elt 3 and $new_aftersale_data['status'] egt 1}}
<i class="am-icon-caret-right"></i>
{{/if}}
<i class="am-icon-angle-right"></i>
</li>
<li class="am-text-truncate {{if isset($new_aftersale_data['status']) and $new_aftersale_data['status'] elt 3 and $new_aftersale_data['status'] egt 2}} selected{{/if}} {{if isset($new_aftersale_data['status']) and $new_aftersale_data['status'] eq 2}} selected-end{{/if}}">
<span class="number">4</span>
<span class="text">管理员审核</span>
{{if isset($new_aftersale_data['status']) and $new_aftersale_data['status'] elt 3 and $new_aftersale_data['status'] egt 2}}
<i class="am-icon-caret-right"></i>
{{/if}}
<i class="am-icon-angle-right"></i>
</li>
<li class="am-text-truncate {{if isset($new_aftersale_data['status']) and $new_aftersale_data['status'] eq 3}} selected{{/if}}">
<span class="number">5</span>
<span class="text">退款完毕</span>
</li>
{{if !empty($step_data['step1'])}}
{{foreach $step_data.step1 as $step}}
<li class="am-text-truncate {{if $step.is_active eq 1}} selected{{/if}} {{if $step.is_end eq 1}} selected-end{{/if}}">
<span class="number">{{$step.number}}</span>
<span class="text">{{$step.name}}</span>
{{if $step.is_caret eq 1}}
<i class="am-icon-caret-right"></i>
{{/if}}
{{if $step.is_angle eq 1}}
<i class="am-icon-angle-right"></i>
{{/if}}
</li>
{{/foreach}}
{{/if}}
</ul>
\ No newline at end of file
......@@ -1206,5 +1206,122 @@ class OrderAftersaleService
return DataReturn('操作成功', 0, ['returned_quantity'=>$returned_quantity, 'refund_price'=>PriceNumberFormat($refund_price)]);
}
/**
* 订单售后提示信息
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @datetime 2019-10-04T13:56:35+0800
* @desc description
* @param [array] $orderaftersale [订单售后数据]
*/
public static function OrderAftersaleTipsMsg($orderaftersale = [])
{
$msg_all = [
0 => '当前订单商品售后已提交申请,等待管理员确认中!',
1 => '当前订单商品售后,管理员已确认,请尽快完成退货!',
2 => '当前订单商品售后已退货,等待管理员审核中!',
3 => '当前订单商品售后已处理结束!',
4 => '当前订单商品售后申请已被拒绝!',
5 => '当前订单商品售后申请已关闭!',
];
if(isset($orderaftersale['status']) && array_key_exists($orderaftersale['status'], $msg_all))
{
// [status 待退货], [type 0仅退款 1退货退款
if($orderaftersale['status'] == 1 && $orderaftersale['type'] == 0)
{
$msg_all[1] = $msg_all[0];
}
return $msg_all[$orderaftersale['status']];
}
return '';
}
/**
* 订单售后进度
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @datetime 2019-10-04T15:22:06+0800
* @desc description
* @param [array] $orderaftersale [订单售后数据]
*/
public static function OrderAftersaleStep($orderaftersale)
{
// 仅退款
$step0 = [
[
'number' => 1,
'name' => '申请仅退款',
'is_caret' => 1,
'is_angle' => 1,
'is_active' => 1,
'is_end' => empty($orderaftersale) ? 1 : 0,
],
[
'number' => 2,
'name' => '管理员审核',
'is_caret' => (isset($orderaftersale['status']) && in_array($orderaftersale['status'], [0,1,2,3])) ? 1 : 0,
'is_angle' => 1,
'is_active' => (isset($orderaftersale['status']) && in_array($orderaftersale['status'], [0,1,2,3])) ? 1 : 0,
'is_end' => (isset($orderaftersale['status']) && $orderaftersale['status'] <= 2) ? 1 : 0,
],
[
'number' => 3,
'name' => '退款完毕',
'is_caret' => 0,
'is_angle' => 0,
'is_active' => (isset($orderaftersale['status']) && $orderaftersale['status'] == 3) ? 1 : 0,
'is_end' => 0,
]
];
// 退货退款
$step1 = [
[
'number' => 1,
'name' => '申请退货退款',
'is_caret' => 1,
'is_angle' => 1,
'is_active' => 1,
'is_end' => empty($orderaftersale) ? 1 : 0,
],
[
'number' => 2,
'name' => '管理员确认',
'is_caret' => (isset($orderaftersale['status']) && in_array($orderaftersale['status'], [0,1,2])) ? 1 : 0,
'is_angle' => 1,
'is_active' => (isset($orderaftersale['status']) && in_array($orderaftersale['status'], [0,1,2,3])) ? 1 : 0,
'is_end' => (isset($orderaftersale['status']) && $orderaftersale['status'] == 0) ? 1 : 0,
],
[
'number' => 3,
'name' => '用户退货',
'is_caret' => (isset($orderaftersale['status']) && in_array($orderaftersale['status'], [1,2,3])) ? 1 : 0,
'is_angle' => 1,
'is_active' => (isset($orderaftersale['status']) && in_array($orderaftersale['status'], [1,2,3])) ? 1 : 0,
'is_end' => (isset($orderaftersale['status']) && $orderaftersale['status'] == 1) ? 1 : 0,
],
[
'number' => 4,
'name' => '管理员审核',
'is_caret' => (isset($orderaftersale['status']) && in_array($orderaftersale['status'], [2,3])) ? 1 : 0,
'is_angle' => 1,
'is_active' => (isset($orderaftersale['status']) && in_array($orderaftersale['status'], [2,3])) ? 1 : 0,
'is_end' => (isset($orderaftersale['status']) && $orderaftersale['status'] == 2) ? 1 : 0,
],
[
'number' => 5,
'name' => '退款完毕',
'is_caret' => 0,
'is_angle' => 0,
'is_active' => (isset($orderaftersale['status']) && $orderaftersale['status'] == 3) ? 1 : 0,
'is_end' => 0,
]
];
return ['step0'=>$step0, 'step1'=>$step1];
}
}
?>
\ No newline at end of file
......@@ -637,6 +637,7 @@ class OrderService
$is_items = isset($params['is_items']) ? intval($params['is_items']) : 1;
$is_excel_export = isset($params['is_excel_export']) ? intval($params['is_excel_export']) : 0;
$is_orderaftersale = isset($params['is_orderaftersale']) ? intval($params['is_orderaftersale']) : 0;
$user_type = isset($params['user_type']) ? $params['user_type'] : 'user';
// 获取订单
$data = Db::name('Order')->where($where)->limit($m, $n)->order($order_by)->select();
......@@ -780,7 +781,9 @@ class OrderService
// 是否获取最新一条售后信息
if($is_orderaftersale == 1)
{
$vs['orderaftersale'] = Db::name('OrderAftersale')->where(['order_detail_id'=>$vs['id']])->order('id desc')->find();
$orderaftersale = Db::name('OrderAftersale')->where(['order_detail_id'=>$vs['id']])->order('id desc')->find();
$vs['orderaftersale'] = $orderaftersale;
$vs['orderaftersale_btn_text'] = self::OrderAftersaleStatusBtnText($v['status'], $orderaftersale);
}
}
}
......@@ -811,6 +814,39 @@ class OrderService
return DataReturn('处理成功', 0, $data);
}
/**
* 订单售后操作名称
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @datetime 2019-10-04T13:11:55+0800
* @desc description
* @param [int] $order_status [订单状态]
* @param [array] $orderaftersale [售后数据]
*/
private static function OrderAftersaleStatusBtnText($order_status, $orderaftersale)
{
$text = '';
if(in_array($order_status, [2,3,4,6]))
{
if(empty($orderaftersale))
{
if(in_array($order_status, [2,3]))
{
$text = '退款/退货';
} else {
if($order_status == 4)
{
$text = '申请售后';
}
}
} else {
$text = ($orderaftersale['status'] == 3) ? '查看退款' : '查看进度';
}
}
return $text;
}
/**
* 订单日志添加
* @author Devil
......
......@@ -375,6 +375,12 @@ class PluginsAdminService
{
// 是否需要删除应用数据,sql运行
$is_delete_static = (isset($params['value']) && $params['value'] == 1);
// 删除数据库附件
ResourcesService::AttachmentPathTypeDelete('plugins_'.$params['id']);
// 删除应用文件
self::PluginsResourcesDelete($params['id'], $is_delete_static);
if($is_delete_static === true)
{
$uninstall_sql = APP_PATH.'plugins'.DS.$params['id'].DS.'uninstall.sql';
......@@ -383,13 +389,6 @@ class PluginsAdminService
SqlconsoleService::Implement(['sql'=>file_get_contents($uninstall_sql)]);
}
}
// 删除数据库附件
ResourcesService::AttachmentPathTypeDelete('plugins_'.$params['id']);
// 删除应用文件
self::PluginsResourcesDelete($params['id'], $is_delete_static);
return DataReturn('删除成功');
}
return $ret;
......@@ -1080,12 +1079,7 @@ php;
$install_sql = APP_PATH.'plugins'.DS.$plugins_name.DS.'install.sql';
if(!empty($plugins_name) && file_exists($install_sql))
{
// 开始处理
$ret = SqlconsoleService::Implement(['sql'=>file_get_contents($install_sql)]);
if($ret['code'] != 0)
{
return $ret;
}
SqlconsoleService::Implement(['sql'=>file_get_contents($install_sql)]);
}
return DataReturn('安装成功');
......
......@@ -32,57 +32,5 @@ return array (
'log_write' =>
array (
),
'plugins_css' =>
array (
0 => 'app\\plugins\\membershiplevelvip\\Hook',
),
'plugins_service_goods_handle_end' =>
array (
0 => 'app\\plugins\\membershiplevelvip\\Hook',
),
'plugins_service_goods_spec_base' =>
array (
0 => 'app\\plugins\\membershiplevelvip\\Hook',
),
'plugins_service_buy_handle' =>
array (
0 => 'app\\plugins\\membershiplevelvip\\Hook',
),
'plugins_service_user_login_success_record' =>
array (
0 => 'app\\plugins\\membershiplevelvip\\Hook',
),
'plugins_service_goods_spec_extends_handle' =>
array (
0 => 'app\\plugins\\membershiplevelvip\\Hook',
),
'plugins_view_admin_user_save' =>
array (
0 => 'app\\plugins\\membershiplevelvip\\Hook',
),
'plugins_service_user_save_handle' =>
array (
0 => 'app\\plugins\\membershiplevelvip\\Hook',
),
'plugins_service_goods_save_handle' =>
array (
0 => 'app\\plugins\\membershiplevelvip\\Hook',
),
'plugins_view_goods_detail_panel_price_top' =>
array (
0 => 'app\\plugins\\membershiplevelvip\\Hook',
),
'plugins_view_home_goods_inside_bottom' =>
array (
0 => 'app\\plugins\\membershiplevelvip\\Hook',
),
'plugins_view_search_goods_inside_bottom' =>
array (
0 => 'app\\plugins\\membershiplevelvip\\Hook',
),
'plugins_service_goods_spec_type' =>
array (
0 => 'app\\plugins\\membershiplevelvip\\Hook',
),
);
?>
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册