应用优化,新增营销应用
parent
fc137da5c7
commit
c3e284f6c3
|
|
@ -10,6 +10,7 @@
|
|||
// +----------------------------------------------------------------------
|
||||
namespace app\index\controller;
|
||||
|
||||
use think\facade\Hook;
|
||||
use app\service\GoodsService;
|
||||
use app\service\SeoService;
|
||||
|
||||
|
|
@ -69,6 +70,51 @@ class Goods extends Common
|
|||
// 商品收藏总数
|
||||
$ret['data'][0]['favor_count'] = GoodsService::GoodsFavorTotal(['goods_id'=>$id]);
|
||||
|
||||
// 商品页面基础信息顶部钩子
|
||||
$this->assign('plugins_view_goods_detail_base_top_data', Hook::listen('plugins_view_goods_detail_base_top',
|
||||
[
|
||||
'hook_name' => 'plugins_view_goods_detail_base_top',
|
||||
'is_backend' => false,
|
||||
'goods_id' => $id,
|
||||
'goods' => &$ret['data'][0],
|
||||
]));
|
||||
|
||||
// 商品页面基础信息面板底部钩子
|
||||
$this->assign('plugins_view_goods_detail_panel_bottom_data', Hook::listen('plugins_view_goods_detail_panel_bottom',
|
||||
[
|
||||
'hook_name' => 'plugins_view_goods_detail_panel_bottom',
|
||||
'is_backend' => false,
|
||||
'goods_id' => $id,
|
||||
'goods' => &$ret['data'][0],
|
||||
]));
|
||||
|
||||
// 商品页面tabs顶部钩子
|
||||
$this->assign('plugins_view_goods_detail_tabs_top_data', Hook::listen('plugins_view_goods_detail_tabs_top',
|
||||
[
|
||||
'hook_name' => 'plugins_view_goods_detail_tabs_top',
|
||||
'is_backend' => false,
|
||||
'goods_id' => $id,
|
||||
'goods' => &$ret['data'][0],
|
||||
]));
|
||||
|
||||
// 商品页面tabs顶部钩子
|
||||
$this->assign('plugins_view_goods_detail_tabs_bottom_data', Hook::listen('plugins_view_goods_detail_tabs_bottom',
|
||||
[
|
||||
'hook_name' => 'plugins_view_goods_detail_tabs_bottom',
|
||||
'is_backend' => false,
|
||||
'goods_id' => $id,
|
||||
'goods' => &$ret['data'][0],
|
||||
]));
|
||||
|
||||
// 商品页面左侧顶部钩子
|
||||
$this->assign('plugins_view_goods_detail_left_top_data', Hook::listen('plugins_view_goods_detail_left_top',
|
||||
[
|
||||
'hook_name' => 'plugins_view_goods_detail_left_top',
|
||||
'is_backend' => false,
|
||||
'goods_id' => $id,
|
||||
'goods' => &$ret['data'][0],
|
||||
]));
|
||||
|
||||
// 商品数据
|
||||
$this->assign('goods', $ret['data'][0]);
|
||||
|
||||
|
|
|
|||
|
|
@ -80,18 +80,32 @@
|
|||
<h1 class="detail-title" {{if !empty($goods.title_color)}}style="color:{{$goods.title_color}};"{{/if}}>{{$goods.title}}</h1>
|
||||
</div>
|
||||
<div class="tb-detail-list">
|
||||
<!--价格-->
|
||||
<!-- 商品页面基础信息顶部钩子 -->
|
||||
{{if isset($shopxo_is_develop) and $shopxo_is_develop eq true and (!isset($is_footer) or $is_footer eq 1)}}
|
||||
<div class="plugins-tag">
|
||||
<span>plugins_view_goods_detail_base_top</span>
|
||||
</div>
|
||||
{{/if}}
|
||||
{{if !empty($plugins_view_goods_detail_base_top_data) and is_array($plugins_view_goods_detail_base_top_data)}}
|
||||
{{foreach $plugins_view_goods_detail_base_top_data as $hook}}
|
||||
{{if is_string($hook) or is_int($hook)}}
|
||||
{{$hook|raw}}
|
||||
{{/if}}
|
||||
{{/foreach}}
|
||||
{{/if}}
|
||||
|
||||
<!-- 基础面板 -->
|
||||
<div class="tb-detail-price">
|
||||
{{if isset($goods['original_price']) and $goods['original_price'] gt 0}}
|
||||
{{if isset($goods['original_price']) and $goods['original_price'] gt 0 and !empty($goods['show_field_original_price_text'])}}
|
||||
<div class="items price iteminfo_price">
|
||||
<dt>原价</dt>
|
||||
<dt>{{$goods.show_field_original_price_text|raw}}</dt>
|
||||
<dd>
|
||||
<b class="sys_item_mktprice">¥ {{$goods.original_price}}</b>
|
||||
</dd>
|
||||
</div>
|
||||
{{/if}}
|
||||
<div class="items price iteminfo_mktprice">
|
||||
<dt>销售价</dt>
|
||||
<dt>{{if empty($goods['show_field_price_text'])}}销售价{{else /}}{{$goods.show_field_price_text|raw}}{{/if}}</dt>
|
||||
<dd>
|
||||
<em>¥</em>
|
||||
<b class="sys_item_price" data-original-price="{{$goods.price}}">{{$goods.price}}</b>
|
||||
|
|
@ -101,17 +115,31 @@
|
|||
<i class="am-icon-qrcode am-icon-sm"></i>
|
||||
<img class="qrcode-images am-img-thumbnail" src="{{$qrcode_url}}" />
|
||||
</div>
|
||||
|
||||
<!-- 商品页面基础信息面板底部钩子 -->
|
||||
{{if isset($shopxo_is_develop) and $shopxo_is_develop eq true and (!isset($is_footer) or $is_footer eq 1)}}
|
||||
<div class="plugins-tag">
|
||||
<span>plugins_view_goods_detail_panel_bottom</span>
|
||||
</div>
|
||||
{{/if}}
|
||||
{{if !empty($plugins_view_goods_detail_panel_bottom_data) and is_array($plugins_view_goods_detail_panel_bottom_data)}}
|
||||
{{foreach $plugins_view_goods_detail_panel_bottom_data as $hook}}
|
||||
{{if is_string($hook) or is_int($hook)}}
|
||||
{{$hook|raw}}
|
||||
{{/if}}
|
||||
{{/foreach}}
|
||||
{{/if}}
|
||||
</div>
|
||||
|
||||
<!--销量-->
|
||||
<ul class="tm-ind-panel">
|
||||
<li class="tm-ind-item tm-ind-sellCount canClick">
|
||||
<li class="tm-ind-item">
|
||||
<div class="tm-indcon"><span class="tm-label">累计销量</span><span class="tm-count">{{$goods.sales_count}}</span></div>
|
||||
</li>
|
||||
<li class="tm-ind-item tm-ind-sumCount canClick">
|
||||
<li class="tm-ind-item">
|
||||
<div class="tm-indcon"><span class="tm-label">浏览次数</span><span class="tm-count">{{$goods.access_count}}</span></div>
|
||||
</li>
|
||||
<li class="tm-ind-item tm-ind-reviewCount canClick tm-line3">
|
||||
<li class="tm-ind-item">
|
||||
<div class="tm-indcon"><span class="tm-label">累计评价</span><span class="tm-count">{{$goods.comments_count}}</span></div>
|
||||
</li>
|
||||
</ul>
|
||||
|
|
@ -237,9 +265,24 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 详情/推荐商品-->
|
||||
<!-- 左侧-->
|
||||
<div class="introduce am-container">
|
||||
<div class="browse">
|
||||
<!-- 商品页面左侧顶部钩子 -->
|
||||
{{if isset($shopxo_is_develop) and $shopxo_is_develop eq true and (!isset($is_footer) or $is_footer eq 1)}}
|
||||
<div class="plugins-tag">
|
||||
<span>plugins_view_goods_detail_left_top</span>
|
||||
</div>
|
||||
{{/if}}
|
||||
{{if !empty($plugins_view_goods_detail_left_top_data) and is_array($plugins_view_goods_detail_left_top_data)}}
|
||||
{{foreach $plugins_view_goods_detail_left_top_data as $hook}}
|
||||
{{if is_string($hook) or is_int($hook)}}
|
||||
{{$hook|raw}}
|
||||
{{/if}}
|
||||
{{/foreach}}
|
||||
{{/if}}
|
||||
|
||||
<!-- 详情/推荐商品-->
|
||||
<div class="mc">
|
||||
<ul>
|
||||
<div class="mt">
|
||||
|
|
@ -263,7 +306,24 @@
|
|||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 右侧内容 -->
|
||||
<div class="introduce-main">
|
||||
<!-- 商品页面tabs顶部钩子 -->
|
||||
{{if isset($shopxo_is_develop) and $shopxo_is_develop eq true and (!isset($is_footer) or $is_footer eq 1)}}
|
||||
<div class="plugins-tag">
|
||||
<span>plugins_view_goods_detail_tabs_top</span>
|
||||
</div>
|
||||
{{/if}}
|
||||
{{if !empty($plugins_view_goods_detail_tabs_top_data) and is_array($plugins_view_goods_detail_tabs_top_data)}}
|
||||
{{foreach $plugins_view_goods_detail_tabs_top_data as $hook}}
|
||||
{{if is_string($hook) or is_int($hook)}}
|
||||
{{$hook|raw}}
|
||||
{{/if}}
|
||||
{{/foreach}}
|
||||
{{/if}}
|
||||
|
||||
<!-- tab -->
|
||||
<div class="am-tabs" data-am-tabs>
|
||||
<ul class="am-avg-sm-2 am-tabs-nav am-nav am-nav-tabs" data-am-sticky="{animation: 'slide-top'}">
|
||||
<li class="am-active">
|
||||
|
|
@ -329,6 +389,20 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 商品页面tabs底部钩子 -->
|
||||
{{if isset($shopxo_is_develop) and $shopxo_is_develop eq true and (!isset($is_footer) or $is_footer eq 1)}}
|
||||
<div class="plugins-tag">
|
||||
<span>plugins_view_goods_detail_tabs_bottom</span>
|
||||
</div>
|
||||
{{/if}}
|
||||
{{if !empty($plugins_view_goods_detail_tabs_bottom_data) and is_array($plugins_view_goods_detail_tabs_bottom_data)}}
|
||||
{{foreach $plugins_view_goods_detail_tabs_bottom_data as $hook}}
|
||||
{{if is_string($hook) or is_int($hook)}}
|
||||
{{$hook|raw}}
|
||||
{{/if}}
|
||||
{{/foreach}}
|
||||
{{/if}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -133,14 +133,16 @@ class Admin extends Controller
|
|||
public function sliderinfo($params = [])
|
||||
{
|
||||
// 数据
|
||||
$data = [];
|
||||
if(!empty($params['id']))
|
||||
{
|
||||
$data_params = array(
|
||||
'where' => ['id'=>intval($params['id'])],
|
||||
);
|
||||
$ret = Service::SlideList($data_params);
|
||||
$this->assign('data', empty($ret['data'][0]) ? [] : $ret['data'][0]);
|
||||
$data = empty($ret['data'][0]) ? [] : $ret['data'][0];
|
||||
}
|
||||
$this->assign('data', $data);
|
||||
|
||||
return $this->fetch('../../../plugins/view/answers/admin/sliderinfo');
|
||||
}
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ class Hook extends Controller
|
|||
if(is_array($params['header']))
|
||||
{
|
||||
// 获取应用数据
|
||||
$ret = PluginsService::PluginsData('answers', ['images']);
|
||||
$ret = PluginsService::PluginsData('answers', ['images', 'images_bottom']);
|
||||
if($ret['code'] == 0 && !empty($ret['data']['application_name']))
|
||||
{
|
||||
$nav = [
|
||||
|
|
|
|||
|
|
@ -39,7 +39,7 @@ class Index extends Controller
|
|||
public function index($params = [])
|
||||
{
|
||||
// 基础数据
|
||||
$base = PluginsService::PluginsData('answers', ['images']);
|
||||
$base = PluginsService::PluginsData('answers', ['images', 'images_bottom']);
|
||||
$this->assign('plugins_answers_data', isset($base['data']) ? $base['data'] : []);
|
||||
|
||||
// 幻灯片
|
||||
|
|
@ -93,7 +93,7 @@ class Index extends Controller
|
|||
public function detail($params = [])
|
||||
{
|
||||
// 基础数据
|
||||
$base = PluginsService::PluginsData('answers', ['images']);
|
||||
$base = PluginsService::PluginsData('answers', ['images', 'images_bottom']);
|
||||
$this->assign('plugins_answers_data', isset($base['data']) ? $base['data'] : []);
|
||||
|
||||
// 商品数据
|
||||
|
|
@ -148,7 +148,7 @@ class Index extends Controller
|
|||
return redirect(PluginsHomeUrl('answers', 'index', 'search', ['answers_keywords'=>$answers_keywords]));
|
||||
} else {
|
||||
// 基础数据
|
||||
$base = PluginsService::PluginsData('answers', ['images']);
|
||||
$base = PluginsService::PluginsData('answers', ['images', 'images_bottom']);
|
||||
$this->assign('plugins_answers_data', isset($base['data']) ? $base['data'] : []);
|
||||
|
||||
// 商品数据
|
||||
|
|
|
|||
|
|
@ -87,6 +87,7 @@ class Service
|
|||
[
|
||||
'checked_type' => 'fun',
|
||||
'key_name' => 'url',
|
||||
'is_checked' => 1,
|
||||
'checked_data' => 'CheckUrl',
|
||||
'error_msg' => 'url格式有误',
|
||||
],
|
||||
|
|
@ -240,7 +241,7 @@ class Service
|
|||
$field = 'g.id,g.title';
|
||||
|
||||
// 获取数据
|
||||
return GoodsService::CategoryGoodsList(['where'=>$where, 'm'=>0, 'n'=>100, 'field'=>$field]);
|
||||
return GoodsService::CategoryGoodsList(['where'=>$where, 'm'=>0, 'n'=>100, 'field'=>$field, 'is_admin_access'=>1]);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -111,7 +111,7 @@ class Hook
|
|||
$params['data']['extension_data'][] = [
|
||||
'name' => $show_name,
|
||||
'price' => $price,
|
||||
'type' => 0,
|
||||
'type' => 1,
|
||||
'tips' => '+¥'.$price.'元',
|
||||
];
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,85 @@
|
|||
<?php
|
||||
// +----------------------------------------------------------------------
|
||||
// | ShopXO 国内领先企业级B2C免费开源电商系统
|
||||
// +----------------------------------------------------------------------
|
||||
// | Copyright (c) 2011~2019 http://shopxo.net All rights reserved.
|
||||
// +----------------------------------------------------------------------
|
||||
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
|
||||
// +----------------------------------------------------------------------
|
||||
// | Author: Devil
|
||||
// +----------------------------------------------------------------------
|
||||
namespace app\plugins\newuserreduction;
|
||||
|
||||
use think\Controller;
|
||||
use app\service\PluginsService;
|
||||
|
||||
/**
|
||||
* 新用户立减 - 后台管理
|
||||
* @author Devil
|
||||
* @blog http://gong.gg/
|
||||
* @version 0.0.1
|
||||
* @datetime 2016-12-01T21:51:08+0800
|
||||
*/
|
||||
class Admin extends Controller
|
||||
{
|
||||
/**
|
||||
* 首页
|
||||
* @author Devil
|
||||
* @blog http://gong.gg/
|
||||
* @version 1.0.0
|
||||
* @datetime 2019-02-07T08:21:54+0800
|
||||
* @param [array] $params [输入参数]
|
||||
*/
|
||||
public function index($params = [])
|
||||
{
|
||||
$ret = PluginsService::PluginsData('newuserreduction');
|
||||
if($ret['code'] == 0)
|
||||
{
|
||||
$this->assign('data', $ret['data']);
|
||||
return $this->fetch('../../../plugins/view/newuserreduction/admin/index');
|
||||
} else {
|
||||
return $ret['msg'];
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 编辑页面
|
||||
* @author Devil
|
||||
* @blog http://gong.gg/
|
||||
* @version 1.0.0
|
||||
* @datetime 2019-02-07T08:21:54+0800
|
||||
* @param [array] $params [输入参数]
|
||||
*/
|
||||
public function saveinfo($params = [])
|
||||
{
|
||||
$ret = PluginsService::PluginsData('newuserreduction');
|
||||
if($ret['code'] == 0)
|
||||
{
|
||||
// 是否
|
||||
$is_whether_list = [
|
||||
0 => array('id' => 0, 'name' => '否', 'checked' => true),
|
||||
1 => array('id' => 1, 'name' => '是'),
|
||||
];
|
||||
|
||||
$this->assign('is_whether_list', $is_whether_list);
|
||||
$this->assign('data', $ret['data']);
|
||||
return $this->fetch('../../../plugins/view/newuserreduction/admin/saveinfo');
|
||||
} else {
|
||||
return $ret['msg'];
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 数据保存
|
||||
* @author Devil
|
||||
* @blog http://gong.gg/
|
||||
* @version 1.0.0
|
||||
* @datetime 2019-02-07T08:21:54+0800
|
||||
* @param [array] $params [输入参数]
|
||||
*/
|
||||
public function save($params = [])
|
||||
{
|
||||
return PluginsService::PluginsDataSave(['plugins'=>'newuserreduction', 'data'=>$params]);
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
|
@ -0,0 +1,153 @@
|
|||
<?php
|
||||
// +----------------------------------------------------------------------
|
||||
// | ShopXO 国内领先企业级B2C免费开源电商系统
|
||||
// +----------------------------------------------------------------------
|
||||
// | Copyright (c) 2011~2019 http://shopxo.net All rights reserved.
|
||||
// +----------------------------------------------------------------------
|
||||
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
|
||||
// +----------------------------------------------------------------------
|
||||
// | Author: Devil
|
||||
// +----------------------------------------------------------------------
|
||||
namespace app\plugins\newuserreduction;
|
||||
|
||||
use think\Db;
|
||||
use app\service\PluginsService;
|
||||
|
||||
/**
|
||||
* 新用户立减 - 钩子入口
|
||||
* @author Devil
|
||||
* @blog http://gong.gg/
|
||||
* @version 0.0.1
|
||||
* @datetime 2016-12-01T21:51:08+0800
|
||||
*/
|
||||
class Hook
|
||||
{
|
||||
/**
|
||||
* 应用响应入口
|
||||
* @author Devil
|
||||
* @blog http://gong.gg/
|
||||
* @version 1.0.0
|
||||
* @datetime 2019-02-09T14:25:44+0800
|
||||
* @param [array] $params [输入参数]
|
||||
*/
|
||||
public function run($params = [])
|
||||
{
|
||||
if(!empty($params['hook_name']))
|
||||
{
|
||||
switch($params['hook_name'])
|
||||
{
|
||||
// 立减计算
|
||||
case 'plugins_service_buy_handle' :
|
||||
$ret = $this->ReductionCalculate($params);
|
||||
break;
|
||||
|
||||
default :
|
||||
$ret = '';
|
||||
}
|
||||
return $ret;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 立减计算
|
||||
* @author Devil
|
||||
* @blog http://gong.gg/
|
||||
* @version 1.0.0
|
||||
* @date 2019-03-21
|
||||
* @desc description
|
||||
* @param [array] $params [输入参数]
|
||||
*/
|
||||
public function ReductionCalculate($params = [])
|
||||
{
|
||||
$ret = PluginsService::PluginsData('newuserreduction');
|
||||
if($ret['code'] == 0)
|
||||
{
|
||||
// 是否设置需满金额
|
||||
if(isset($ret['data']['full_amount']) && $ret['data']['full_amount'] > 0 && $params['data']['base']['total_price'] < $ret['data']['full_amount'])
|
||||
{
|
||||
return DataReturn('无需处理', 0);
|
||||
}
|
||||
|
||||
// 默认金额
|
||||
$price = isset($ret['data']['price']) ? (float) $ret['data']['price'] : 0;
|
||||
$unit = '元';
|
||||
$price_show = $price;
|
||||
if($price > 0 && $this->IsNewUser($params))
|
||||
{
|
||||
// 是否随机
|
||||
if(isset($ret['data']['is_random']) && $ret['data']['is_random'] == 1)
|
||||
{
|
||||
// 随机金额需要提交步骤生效
|
||||
if(!isset($params['params']['is_order_submit']) || $params['params']['is_order_submit'] != 1)
|
||||
{
|
||||
$price = 0;
|
||||
$price_show = '随机减';
|
||||
$unit = '';
|
||||
} else {
|
||||
$price = $this->RandomFloat(0, $price);
|
||||
$price_show = $price;
|
||||
}
|
||||
}
|
||||
|
||||
// 扩展展示数据
|
||||
$show_name = empty($ret['data']['show_name']) ? '新用户立减' : $ret['data']['show_name'];
|
||||
$params['data']['extension_data'][] = [
|
||||
'name' => $show_name,
|
||||
'price' => $price,
|
||||
'type' => 0,
|
||||
'tips' => '-¥'.$price_show.$unit,
|
||||
];
|
||||
|
||||
// 金额
|
||||
$params['data']['base']['increase_price'] -= $price;
|
||||
$params['data']['base']['actual_price'] -= $price;
|
||||
}
|
||||
return DataReturn('无需处理', 0);
|
||||
} else {
|
||||
return $ret['msg'];
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否满足新用户条件
|
||||
* @author Devil
|
||||
* @blog http://gong.gg/
|
||||
* @version 1.0.0
|
||||
* @date 2019-03-25
|
||||
* @desc description
|
||||
* @param [array] $params [输入参数]
|
||||
*/
|
||||
private function IsNewUser($params = [])
|
||||
{
|
||||
// 用户信息是否存在
|
||||
if(empty($params['params']['user']))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
// 获取用户订单
|
||||
// 订单状态(0待确认, 1已确认/待支付, 2已支付/待发货, 3已发货/待收货, 4已完成, 5已取消, 6已关闭)
|
||||
$where = [
|
||||
['user_id', '=', intval($params['params']['user']['id'])],
|
||||
['status', '<=', 4],
|
||||
];
|
||||
$temp = Db::name('Order')->where($where)->count();
|
||||
return empty($temp);
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成随机金额
|
||||
* @author Devil
|
||||
* @blog http://gong.gg/
|
||||
* @version 1.0.0
|
||||
* @date 2019-03-25
|
||||
* @desc description
|
||||
* @param [int] $min [最小值]
|
||||
* @param [int] $max [最大值]
|
||||
*/
|
||||
private function RandomFloat($min = 0, $max = 10)
|
||||
{
|
||||
return sprintf("%.2f", $min+mt_rand()/mt_getrandmax()*($max-$min));
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
{
|
||||
"base":{
|
||||
"plugins":"newuserreduction",
|
||||
"name":"新用户立减",
|
||||
"logo":"\/static\/upload\/images\/plugins_newuserreduction\/2019\/03\/25\/1553483752670109.jpg",
|
||||
"author":"Devil",
|
||||
"author_url":"https:\/\/shopxo.net\/",
|
||||
"version":"1.0.0",
|
||||
"desc":"新用户立减优惠",
|
||||
"apply_terminal":[
|
||||
"pc",
|
||||
"h5",
|
||||
"app",
|
||||
"alipay",
|
||||
"weixin",
|
||||
"baidu"
|
||||
],
|
||||
"apply_version":[
|
||||
"1.4.0"
|
||||
],
|
||||
"is_home":false
|
||||
},
|
||||
"hook":{
|
||||
"plugins_service_buy_handle":[
|
||||
"app\\plugins\\newuserreduction\\Hook"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
|
@ -168,7 +168,7 @@ class Hook extends Controller
|
|||
// 获取应用数据
|
||||
$ret = PluginsService::PluginsData('touristbuy');
|
||||
$login_name = empty($ret['data']['login_name']) ? '游客登录' : $ret['data']['login_name'];
|
||||
return '<a href="'.PluginsHomeUrl('touristbuy', 'index', 'login', ['is_parent'=>$is_parent]).'" class="am-btn am-btn-warning am-btn-xs am-radius plugins-touristbuy-login-info-btn">'.$ret['data']['login_name'].'</a>';
|
||||
return '<a href="'.PluginsHomeUrl('touristbuy', 'index', 'login', ['is_parent'=>$is_parent]).'" class="am-btn am-btn-warning am-btn-xs am-radius plugins-touristbuy-login-info-btn">'.$login_name.'</a>';
|
||||
}
|
||||
return '';
|
||||
}
|
||||
|
|
|
|||
|
|
@ -90,11 +90,11 @@ class Hook extends Controller
|
|||
$original_price_placeholder = isset($ret['data']['original_price_placeholder']) ? $ret['data']['original_price_placeholder'] : '';
|
||||
|
||||
// 销售价
|
||||
$price_placeholder = isset($ret['data']['price_placeholder']) ? $ret['data']['price_placeholder'] : '';
|
||||
$price_placeholder = empty($ret['data']['price_placeholder']) ? '登录可见' : $ret['data']['price_placeholder'];
|
||||
|
||||
switch($params['hook_name'])
|
||||
{
|
||||
// 商品数据处理前
|
||||
// 商品数据处理后
|
||||
case 'plugins_service_goods_handle_end' :
|
||||
// 商品原价
|
||||
if(isset($params['goods']['original_price']))
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@
|
|||
|
||||
<div class="am-form-group">
|
||||
<label>url地址<span class="am-form-group-label-tips">带http://或https://</span></label>
|
||||
<input type="url" placeholder="url地址" name="url" data-validation-message="url格式有误" class="am-radius" {{if !empty($data)}} value="{{$data.url}}"{{/if}} required />
|
||||
<input type="url" placeholder="url地址" name="url" data-validation-message="url格式有误" class="am-radius" {{if !empty($data)}} value="{{$data.url}}"{{/if}} />
|
||||
</div>
|
||||
|
||||
<div class="am-form-group am-form-file">
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@
|
|||
<ul class="am-slides">
|
||||
{{foreach $plugins_answers_slider as $k=>$v}}
|
||||
<li>
|
||||
<a href="{{$v.url}}" target="_blank">
|
||||
<a href="{{if empty($v['url'])}}javascript:;{{else /}}{{$v.url}}{{/if}}" target="_blank">
|
||||
<img src="{{$v.images_url}}" alt="{{$v.name}}">
|
||||
<div class="am-slider-desc">
|
||||
<div class="am-slider-counter">
|
||||
|
|
|
|||
|
|
@ -0,0 +1,64 @@
|
|||
{{include file="public/header" /}}
|
||||
|
||||
<!-- right content start -->
|
||||
<div class="content-right">
|
||||
<div class="content">
|
||||
<legend>
|
||||
<span class="fs-16">新用户立减</span>
|
||||
<a href="{{:MyUrl('admin/pluginsadmin/index')}}" class="fr fs-14 m-t-5 am-icon-mail-reply"> 返回</a>
|
||||
</legend>
|
||||
|
||||
<div class="newuserreduction-content">
|
||||
<div class="items">
|
||||
<label>展示名称</label>
|
||||
<div>
|
||||
{{if empty($data['show_name'])}}
|
||||
新用户立减
|
||||
{{else /}}
|
||||
{{$data.show_name}}
|
||||
{{/if}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="items">
|
||||
<label>需满金额</label>
|
||||
<div>
|
||||
{{if empty($data['full_amount'])}}
|
||||
不限
|
||||
{{else /}}
|
||||
{{$data.full_amount}}
|
||||
{{/if}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="items">
|
||||
<label>立减金额</label>
|
||||
<div>
|
||||
{{if empty($data['price'])}}
|
||||
未设置
|
||||
{{else /}}
|
||||
{{$data.price}}
|
||||
{{/if}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="items">
|
||||
<label>是否随机</label>
|
||||
<div>
|
||||
{{if isset($data['is_random']) and $data['is_random'] eq 1}}
|
||||
是
|
||||
{{else /}}
|
||||
否
|
||||
{{/if}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<a href="{{:PluginsAdminUrl('newuserreduction', 'admin', 'saveinfo')}}" class="am-btn am-btn-secondary am-radius btn-loading-example am-btn-sm am-btn-block edit-submit">编辑</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- right content end -->
|
||||
|
||||
<!-- footer start -->
|
||||
{{include file="public/footer" /}}
|
||||
<!-- footer end -->
|
||||
|
|
@ -0,0 +1,50 @@
|
|||
{{include file="public/header" /}}
|
||||
|
||||
<!-- right content start -->
|
||||
<div class="content-right">
|
||||
<div class="content">
|
||||
<!-- form start -->
|
||||
<form class="am-form form-validation view-save" action="{{:PluginsAdminUrl('newuserreduction', 'admin', 'save')}}" method="POST" request-type="ajax-url" request-value="{{:PluginsAdminUrl('newuserreduction', 'admin', 'index')}}" enctype="multipart/form-data">
|
||||
<legend>
|
||||
<span class="fs-16">新用户立减</span>
|
||||
<a href="{{:PluginsAdminUrl('newuserreduction', 'admin', 'index')}}" class="fr fs-14 m-t-5 am-icon-mail-reply"> 返回</a>
|
||||
</legend>
|
||||
|
||||
<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>需满金额<span class="am-form-group-label-tips">订单金额大于等于该金额 空则不限</span></label>
|
||||
<input type="number" name="full_amount" placeholder="需满金额" min="0.00" step="0.01" data-validation-message="请填写有效的需满金额" class="am-radius" value="{{if isset($data['full_amount']) and $data['full_amount'] gt 0}}{{$data.full_amount}}{{/if}}" />
|
||||
</div>
|
||||
|
||||
<div class="am-form-group">
|
||||
<label>立减金额<span class="am-form-group-label-tips">开启随机则0~当前设置的金额随机取值</span></label>
|
||||
<input type="number" name="price" placeholder="立减金额" min="0.00" step="0.01" data-validation-message="请填写有效的立减金额" class="am-radius" value="{{if isset($data['price']) and $data['price'] gt 0}}{{$data.price}}{{/if}}" />
|
||||
</div>
|
||||
|
||||
<div class="am-form-group">
|
||||
<label>是否随机<span class="am-form-group-label-tips">0~立减金额之间</span></label>
|
||||
<div>
|
||||
{{foreach $is_whether_list as $v}}
|
||||
<label class="am-radio-inline m-r-10">
|
||||
<input type="radio" name="is_random" value="{{$v.id}}" {{if isset($data['is_random']) and $data['is_random'] eq $v['id']}}checked="checked"{{else /}}{{if !isset($data['is_random']) and isset($v['checked']) and $v['checked'] eq true}}checked="checked"{{/if}}{{/if}} data-am-ucheck /> {{$v.name}}
|
||||
</label>
|
||||
{{/foreach}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="am-form-group business-form-block am-form-group-refreshing">
|
||||
<button type="submit" class="am-btn am-btn-primary am-radius btn-loading-example am-btn-sm am-btn-block" data-am-loading="{loadingText:'处理中...'}">保存</button>
|
||||
</div>
|
||||
</form>
|
||||
<!-- form end -->
|
||||
</div>
|
||||
</div>
|
||||
<!-- right content end -->
|
||||
|
||||
<!-- footer start -->
|
||||
{{include file="public/footer" /}}
|
||||
<!-- footer end -->
|
||||
|
|
@ -25,7 +25,7 @@
|
|||
{{if !empty($data['price_placeholder'])}}
|
||||
{{$data.price_placeholder}}
|
||||
{{else /}}
|
||||
<span class="empty-text">未填写</span>
|
||||
<span class="empty-text">登录可见</span>
|
||||
{{/if}}
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -21,12 +21,12 @@
|
|||
|
||||
<div class="am-form-group">
|
||||
<label>原价占位符</label>
|
||||
<input type="text" name="original_price_placeholder" placeholder="原价占位符" maxlength="16" data-validation-message="原价占位符最多16个字符" class="am-radius" value="{{if !empty($data)}}{{$data.original_price_placeholder}}{{/if}}" />
|
||||
<input type="text" name="original_price_placeholder" placeholder="原价占位符" maxlength="16" data-validation-message="原价占位符最多16个字符" class="am-radius" value="{{if !empty($data['original_price_placeholder'])}}{{$data.original_price_placeholder}}{{/if}}" />
|
||||
</div>
|
||||
|
||||
<div class="am-form-group">
|
||||
<label>销售价占位符</label>
|
||||
<input type="text" name="price_placeholder" placeholder="销售价占位符" maxlength="16" data-validation-message="销售价占位符最多16个字符" class="am-radius" value="{{if !empty($data)}}{{$data.price_placeholder}}{{/if}}" />
|
||||
<label>销售价占位符<span class="am-form-group-label-tips">默认 登录可见</span></label>
|
||||
<input type="text" name="price_placeholder" placeholder="销售价占位符" maxlength="16" data-validation-message="销售价占位符最多16个字符" class="am-radius" value="{{if !empty($data['price_placeholder'])}}{{$data.price_placeholder}}{{/if}}" />
|
||||
</div>
|
||||
|
||||
<div class="am-form-group am-form-group-refreshing">
|
||||
|
|
|
|||
|
|
@ -708,6 +708,7 @@ class BuyService
|
|||
}
|
||||
|
||||
// 清单商品
|
||||
$params['is_order_submit'] = 1;
|
||||
$buy = self::BuyTypeGoodsList($params);
|
||||
if(!isset($buy['code']) || $buy['code'] != 0)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -365,6 +365,10 @@ class GoodsService
|
|||
$v['content_app'] = self::GoodsContentApp(['goods_id'=>$v['id']]);
|
||||
}
|
||||
|
||||
// 展示字段
|
||||
$v['show_field_original_price_text'] = '原价';
|
||||
$v['show_field_price_text'] = '销售价';
|
||||
|
||||
// 商品处理前钩子
|
||||
$hook_name = 'plugins_service_goods_handle_end';
|
||||
$ret = Hook::listen($hook_name, [
|
||||
|
|
|
|||
|
|
@ -115,6 +115,7 @@ return array (
|
|||
'plugins_service_buy_handle' =>
|
||||
array (
|
||||
0 => 'app\\plugins\\freightfee\\Hook',
|
||||
1 => 'app\\plugins\\newuserreduction\\Hook',
|
||||
),
|
||||
);
|
||||
?>
|
||||
|
|
@ -15,7 +15,7 @@
|
|||
|
||||
return [
|
||||
// 开发模式
|
||||
'is_develop' => true,
|
||||
'is_develop' => false,
|
||||
|
||||
// 默认编码
|
||||
'default_charset' => 'utf-8',
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -73,7 +73,6 @@
|
|||
}
|
||||
.content ul.am-gallery-bordered li .submit-state {
|
||||
height: 28px;
|
||||
line-height: 28px;
|
||||
border-radius: 2px;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -156,7 +156,7 @@ ul.am-tabs-nav.am-nav.am-nav-tabs {background: #F5F5F5;}
|
|||
.iteminfo_parameter a:hover{text-decoration: none;color:initial ;}
|
||||
.tm-indcon .tm-label,.tb-detail-price dt{display:inline; width:60px; white-space:nowrap; text-align:right; color:#888;}
|
||||
.tb-detail-price .items { display: inline-block; }
|
||||
.tb-detail-price .items:not(:last-child) { margin-right:10px; }
|
||||
.tb-detail-price .items:not(:first-child) { margin-left:10px; }
|
||||
|
||||
/* 二维码 */
|
||||
.goods-qrcode{position: absolute; bottom: 5px; right: 10px; cursor: pointer; color: #666; width: 150px; text-align: right;}
|
||||
|
|
@ -329,7 +329,6 @@ li.am-comment{ width:100%}
|
|||
.iteminfo_mktprice {padding-top: 10px;}
|
||||
.iteminfo_parameter {padding-left: 50px;}
|
||||
.tb-detail-hd,.tb-detail-price{text-align: left;}
|
||||
.tb-detail-price .items {margin-left: 0px;}
|
||||
.tb-detail-hd h1 {font-size: 16px;}
|
||||
.match{margin:0px auto;max-width: 1000px;padding-top:20px ;background: #fff;}
|
||||
|
||||
|
|
@ -375,13 +374,13 @@ li.am-comment{ width:100%}
|
|||
|
||||
/*价格*/
|
||||
.tb-detail-hd h1 {font-size:18px;}
|
||||
.tb-detail-price { height:75px;padding-top:10px; }
|
||||
.tb-detail-price { height:75px;padding:10px; }
|
||||
/*.tb-detail-price{background: #F7F7F7 url(data:image/png;base64,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); }*/
|
||||
.tb-detail-price{ background: #fcf1e3 url(../images/goods_meta_bg.png); background-size: cover; -moz-background-size: cover; background-repeat: no-repeat; }
|
||||
.tb-detail-price .items {display: block;margin:0px 10px;}
|
||||
.tb-detail-price .items {display: block;margin-left:0 !important;}
|
||||
.tb-detail-price .items dt {width: 70px;float:left;text-align: left;}
|
||||
.sys_item_price{font-size: 24px;font-weight: bold; line-height: 16px;}
|
||||
.sys_item_mktprice{font-size:14px ;}
|
||||
.sys_item_mktprice{font-size:14px;}
|
||||
|
||||
|
||||
/*规格*/
|
||||
|
|
|
|||
|
|
@ -0,0 +1,11 @@
|
|||
/**
|
||||
* 首页
|
||||
*/
|
||||
.newuserreduction-content .items {
|
||||
margin: 10px 0 20px 0;
|
||||
border-bottom: 1px dashed #f1f1f1;
|
||||
padding-bottom: 20px;
|
||||
}
|
||||
.newuserreduction-content .edit-submit {
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 3.5 KiB |
Loading…
Reference in New Issue