运费设置应用新增支付方式免运费

This commit is contained in:
devil_gong
2019-03-22 11:37:54 +08:00
parent 1b4efcc80d
commit 85dab636bd
7 changed files with 115 additions and 72 deletions

View File

@ -14,6 +14,7 @@ use think\Db;
use think\Controller;
use app\service\PluginsService;
use app\service\RegionService;
use app\service\PaymentService;
/**
* 运费设置 - 管理
@ -37,16 +38,7 @@ class Admin extends Controller
$ret = PluginsService::PluginsData('freightfee');
if($ret['code'] == 0)
{
// 数据处理
if(!empty($ret['data']['data']))
{
foreach($ret['data']['data'] as &$v)
{
$v['region_names'] = empty($v['region_show']) ? '' : implode('、', Db::name('Region')->where('id', 'in', explode('-', $v['region_show']))->column('name'));
}
}
$this->assign('data', $ret['data']);
$this->assign('data', $this->DataHandle($ret['data']));
return $this->fetch('../../../plugins/view/freightfee/admin/index');
} else {
return $ret['msg'];
@ -83,24 +75,48 @@ class Admin extends Controller
}, $region);
}
// 数据处理
if(!empty($ret['data']['data']))
{
foreach($ret['data']['data'] as &$v)
{
$v['region_names'] = empty($v['region_show']) ? '' : implode('、', Db::name('Region')->where('id', 'in', explode('-', $v['region_show']))->column('name'));
}
}
// 支付方式
$this->assign('payment_list', PaymentService::PaymentList(['is_enable'=>1, 'is_open_user'=>1]));
$this->assign('region_list', $region);
$this->assign('is_whether_list', $is_whether_list);
$this->assign('data', $ret['data']);
$this->assign('data', $this->DataHandle($ret['data']));
return $this->fetch('../../../plugins/view/freightfee/admin/saveinfo');
} else {
return $ret['msg'];
}
}
/**
* 数据处理
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2019-03-22
* @desc description
* @param [array] $data [应用数据]
*/
private function DataHandle($data)
{
if(!empty($data['data']))
{
if(empty($data['payment']))
{
$data['payment'] = [];
$data['payment_names'] = '';
} else {
$data['payment'] = explode(',', $data['payment']);
$data['payment_names'] = implode('、', array_map(function($v){return mb_substr($v, strrpos($v, '-')+1, null, 'utf-8');}, $data['payment']));
}
foreach($data['data'] as &$v)
{
$v['region_names'] = empty($v['region_show']) ? '' : implode('、', Db::name('Region')->where('id', 'in', explode('-', $v['region_show']))->column('name'));
}
}
return $data;
}
/**
* 数据保存
* @author Devil

View File

@ -61,8 +61,29 @@ class Hook
$ret = PluginsService::PluginsData('freightfee');
if($ret['code'] == 0)
{
// 默认运费
$price = 0;
// 支付方式免运费
$is_payment = true;
if(!empty($ret['data']['payment']) && !empty($params['params']['payment_id']))
{
$payment = array_map(function($v){return explode('-', $v);}, explode(',', $ret['data']['payment']));
if(!empty($payment) && is_array($payment))
{
foreach($payment as $v)
{
if(isset($v[0]) && $v[0] == $params['params']['payment_id'])
{
$is_payment = false;
break;
}
}
}
}
// 是否设置运费数据
if(!empty($ret['data']['data'][0]))
if($is_payment === true && !empty($ret['data']['data'][0]))
{
// 规则
$rules = $this->RulesHandle($ret['data']['data'], $params['data']['base']['address']);
@ -70,7 +91,6 @@ class Hook
// 计费方式
if(!empty($rules))
{
$price = 0;
switch($ret['data']['valuation'])
{
// 按件
@ -83,22 +103,22 @@ class Hook
$price = $this->QuantityCalculate($rules, $params['data']);
break;
}
// 扩展展示数据
$show_name = empty($ret['data']['show_name']) ? '运费' : $ret['data']['show_name'];
$params['data']['extension_data'][] = [
'name' => $show_name,
'price' => $price,
'type' => 0,
'tips' => '+¥'.$price.'元',
];
// 金额
$params['data']['base']['increase_price'] += $price;
$params['data']['base']['actual_price'] += $price;
}
return DataReturn('处理成功', 0);
}
// 扩展展示数据
$show_name = empty($ret['data']['show_name']) ? '运费' : $ret['data']['show_name'];
$params['data']['extension_data'][] = [
'name' => $show_name,
'price' => $price,
'type' => 0,
'tips' => '+¥'.$price.'元',
];
// 金额
$params['data']['base']['increase_price'] += $price;
$params['data']['base']['actual_price'] += $price;
return DataReturn('无需处理', 0);
} else {
return $ret['msg'];

View File

@ -20,6 +20,17 @@
</div>
</div>
<div class="items">
<label>免运费支付方式</label>
<div>
{{if empty($data['payment_names'])}}
未设置
{{else /}}
{{$data.payment_names}}
{{/if}}
</div>
</div>
<div class="items">
<label>计价方式</label>
<div>

View File

@ -10,11 +10,20 @@
<a href="{{:PluginsAdminUrl('freightfee', 'admin', 'index')}}" class="fr fs-14 m-t-5 am-icon-mail-reply"> 返回</a>
</legend>
<div class="business-form-block am-form-group">
<div class="am-form-group">
<label>展示名称<span class="am-form-group-label-tips">默认 运费</span></label>
<input type="text" name="show_name" placeholder="展示名称" maxlength="16" data-validation-message="展示名称格式最多 16 个字符" class="am-radius" value="{{if !empty($data['show_name'])}}{{$data.show_name}}{{else /}}运费{{/if}}" />
</div>
<div class="am-form-group">
<label>免运费支付方式</label>
<select name="payment" class="am-radius c-p chosen-select" multiple="multiple" data-placeholder="可选择..." data-validation-message="请选择一个免运费支付方式">
{{foreach $payment_list as $v}}
<option value="{{$v.id}}-{{$v.payment}}-{{$v.name}}" {{if isset($data['payment']) and in_array($v['id'].'-'.$v['payment'].'-'.$v['name'], $data['payment'])}}selected{{/if}}>{{$v.name}}</option>
{{/foreach}}
</select>
</div>
<div class="business-form-block am-form-group">
<label>计价方式</label>
<div>
@ -27,6 +36,7 @@
</div>
<div class="business-form-block freightfee-rules">
<label>运费模板</label>
<table class="am-table am-table-striped">
{{if empty($data['data'])}}
<thead>