From e8fd6b5571397898fd78e1378a2ec9260e48773d Mon Sep 17 00:00:00 2001
From: gongfuxiang <2499232802@qq.com>
Date: Tue, 26 Feb 2019 22:45:47 +0800
Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E7=94=A8=E6=88=B7=E6=9C=AA?=
=?UTF-8?q?=E7=99=BB=E5=BD=95=E4=B8=8D=E5=B1=95=E7=A4=BA=E5=95=86=E5=93=81?=
=?UTF-8?q?=E4=BB=B7=E6=A0=BC?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
application/admin/controller/Goods.php | 21 ++--
application/api/controller/Goods.php | 10 +-
application/index/controller/Common.php | 12 +-
application/index/controller/Goods.php | 20 +--
application/index/controller/Search.php | 6 +-
application/index/controller/User.php | 2 +-
.../index/view/default/goods/index.html | 2 +-
application/plugins/commongobacktop/Hook.php | 4 +-
.../plugins/commononlineservice/Hook.php | 4 +-
.../plugins/commonrightnavigation/Hook.php | 4 +-
.../plugins/commontopmaxpicture/Hook.php | 4 +-
application/plugins/commontopnotice/Hook.php | 4 +-
.../plugins/usercentertopnotice/Hook.php | 4 +-
.../plugins/userloginrewardintegral/Hook.php | 6 +-
.../userloginrewardintegral/config.json | 2 +-
.../usernotloginhidegoodsprice/Admin.php | 96 +++++++++++++++
.../usernotloginhidegoodsprice/Hook.php | 116 ++++++++++++++++++
.../usernotloginhidegoodsprice/config.json | 28 +++++
.../admin/index.html | 51 ++++++++
.../admin/saveinfo.html | 43 +++++++
application/service/BuyService.php | 24 ++--
application/service/GoodsService.php | 34 ++++-
application/service/PluginsAdminService.php | 10 +-
application/service/UserService.php | 16 ++-
application/tags.php | 6 +-
config/shopxo.php | 2 +-
config/shopxo.sql | 35 ++----
public/static/index/default/css/goods.css | 2 +-
.../css/usernotloginhidegoodsprice/admin.css | 15 +++
.../2019/02/26/1551184745400164.png | Bin 0 -> 6912 bytes
30 files changed, 489 insertions(+), 94 deletions(-)
create mode 100644 application/plugins/usernotloginhidegoodsprice/Admin.php
create mode 100644 application/plugins/usernotloginhidegoodsprice/Hook.php
create mode 100644 application/plugins/usernotloginhidegoodsprice/config.json
create mode 100755 application/plugins/view/usernotloginhidegoodsprice/admin/index.html
create mode 100755 application/plugins/view/usernotloginhidegoodsprice/admin/saveinfo.html
create mode 100755 public/static/plugins/css/usernotloginhidegoodsprice/admin.css
create mode 100644 public/static/upload/images/plugins_usernotloginhidegoodsprice/2019/02/26/1551184745400164.png
diff --git a/application/admin/controller/Goods.php b/application/admin/controller/Goods.php
index 900b94942..bbbc69978 100755
--- a/application/admin/controller/Goods.php
+++ b/application/admin/controller/Goods.php
@@ -74,12 +74,13 @@ class Goods extends Common
// 获取数据列表
$data_params = [
- 'where' => $where,
- 'm' => $page->GetPageStarNumber(),
- 'n' => $number,
- 'is_category' => 1,
+ 'where' => $where,
+ 'm' => $page->GetPageStarNumber(),
+ 'n' => $number,
+ 'is_category' => 1,
+ 'is_admin_access' => 1,
];
- $data = GoodsService::GoodsList($data_params);
+ $ret = GoodsService::GoodsList($data_params);
// 是否上下架
$this->assign('common_is_shelves_list', lang('common_is_shelves_list'));
@@ -89,7 +90,7 @@ class Goods extends Common
$this->assign('params', $params);
$this->assign('page_html', $page->GetPageHtml());
- $this->assign('data', $data);
+ $this->assign('data', $ret['data']);
return $this->fetch();
}
@@ -116,15 +117,15 @@ class Goods extends Common
'is_content_app' => 1,
'is_category' => 1,
];
- $data = GoodsService::GoodsList($data_params);
- if(empty($data[0]))
+ $ret = GoodsService::GoodsList($data_params);
+ if(empty($ret['data'][0]))
{
return $this->error('商品信息不存在', MyUrl('admin/goods/index'));
}
- $this->assign('data', $data[0]);
+ $this->assign('data', $ret['data'][0]);
// 获取商品编辑规格
- $specifications = GoodsService::GoodsEditSpecifications($data[0]['id']);
+ $specifications = GoodsService::GoodsEditSpecifications($ret['data'][0]['id']);
$this->assign('specifications', $specifications);
}
diff --git a/application/api/controller/Goods.php b/application/api/controller/Goods.php
index 335081f61..18e42e6d9 100755
--- a/application/api/controller/Goods.php
+++ b/application/api/controller/Goods.php
@@ -61,16 +61,16 @@ class Goods extends Common
'is_spec' => true,
'is_content_app' => true,
];
- $goods = GoodsService::GoodsList($params);
- if(empty($goods[0]) || $goods[0]['is_delete_time'] != 0)
+ $ret = GoodsService::GoodsList($params);
+ if(empty($ret['data'][0]) || $ret['data'][0]['is_delete_time'] != 0)
{
return DataReturn('商品不存在或已删除', -1);
}
- unset($goods[0]['content_web']);
+ unset($ret['data'][0]['content_web']);
// 当前登录用户是否已收藏
$ret_favor = GoodsService::IsUserGoodsFavor(['goods_id'=>$goods_id, 'user'=>$this->user]);
- $goods[0]['is_favor'] = ($ret_favor['code'] == 0) ? $ret_favor['data'] : 0;
+ $ret['data'][0]['is_favor'] = ($ret_favor['code'] == 0) ? $ret_favor['data'] : 0;
// 商品访问统计
GoodsService::GoodsAccessCountInc(['goods_id'=>$goods_id]);
@@ -80,7 +80,7 @@ class Goods extends Common
// 数据返回
$result = [
- 'goods' => $goods[0],
+ 'goods' => $ret['data'][0],
'common_order_is_booking' => (int) MyC('common_order_is_booking', 0),
];
return DataReturn('success', 0, $result);
diff --git a/application/index/controller/Common.php b/application/index/controller/Common.php
index 052f1bff5..1671373b0 100755
--- a/application/index/controller/Common.php
+++ b/application/index/controller/Common.php
@@ -81,22 +81,22 @@ class Common extends Controller
private function CommonPluginsInit()
{
// css钩子
- $this->assign('plugins_css_data', Hook::listen('plugins_css', ['hook_name'=>'plugins_css', 'is_control'=>false]));
+ $this->assign('plugins_css_data', Hook::listen('plugins_css', ['hook_name'=>'plugins_css', 'is_backend'=>false]));
// js钩子
- $this->assign('plugins_js_data', Hook::listen('plugins_js', ['hook_name'=>'plugins_js', 'is_control'=>false]));
+ $this->assign('plugins_js_data', Hook::listen('plugins_js', ['hook_name'=>'plugins_js', 'is_backend'=>false]));
// 公共header内钩子
- $this->assign('plugins_common_header_data', Hook::listen('plugins_common_header', ['hook_name'=>'plugins_common_header', 'is_control'=>false, 'user'=>$this->user]));
+ $this->assign('plugins_common_header_data', Hook::listen('plugins_common_header', ['hook_name'=>'plugins_common_header', 'is_backend'=>false, 'user'=>$this->user]));
// 公共页面底部钩子
- $this->assign('plugins_common_page_bottom_data', Hook::listen('plugins_common_page_bottom', ['hook_name'=>'plugins_common_page_bottom', 'is_control'=>false, 'user'=>$this->user]));
+ $this->assign('plugins_common_page_bottom_data', Hook::listen('plugins_common_page_bottom', ['hook_name'=>'plugins_common_page_bottom', 'is_backend'=>false, 'user'=>$this->user]));
// 公共顶部钩子
- $this->assign('plugins_view_common_top_data', Hook::listen('plugins_view_common_top', ['hook_name'=>'plugins_view_common_top', 'is_control'=>false, 'user'=>$this->user]));
+ $this->assign('plugins_view_common_top_data', Hook::listen('plugins_view_common_top', ['hook_name'=>'plugins_view_common_top', 'is_backend'=>false, 'user'=>$this->user]));
// 公共底部钩子
- $this->assign('plugins_view_common_bottom_data', Hook::listen('plugins_view_common_bottom', ['hook_name'=>'plugins_view_common_bottom', 'is_control'=>false, 'user'=>$this->user]));
+ $this->assign('plugins_view_common_bottom_data', Hook::listen('plugins_view_common_bottom', ['hook_name'=>'plugins_view_common_bottom', 'is_backend'=>false, 'user'=>$this->user]));
}
/**
diff --git a/application/index/controller/Goods.php b/application/index/controller/Goods.php
index e41161b14..1e68569d1 100755
--- a/application/index/controller/Goods.php
+++ b/application/index/controller/Goods.php
@@ -52,24 +52,24 @@ class Goods extends Common
'is_photo' => true,
'is_spec' => true,
];
- $goods = GoodsService::GoodsList($params);
- if(empty($goods[0]) || $goods[0]['is_delete_time'] != 0)
+ $ret = GoodsService::GoodsList($params);
+ if(empty($ret['data'][0]) || $ret['data'][0]['is_delete_time'] != 0)
{
$this->assign('msg', '资源不存在或已被删除');
return $this->fetch('/public/tips_error');
} else {
// 当前登录用户是否已收藏
$ret_favor = GoodsService::IsUserGoodsFavor(['goods_id'=>$id, 'user'=>$this->user]);
- $goods[0]['is_favor'] = ($ret_favor['code'] == 0) ? $ret_favor['data'] : 0;
+ $ret['data'][0]['is_favor'] = ($ret_favor['code'] == 0) ? $ret_favor['data'] : 0;
// 商品评价总数
- $goods[0]['comments_count'] = GoodsService::GoodsCommentsTotal($id);
+ $ret['data'][0]['comments_count'] = GoodsService::GoodsCommentsTotal($id);
// 商品收藏总数
- $goods[0]['favor_count'] = GoodsService::GoodsFavorTotal(['goods_id'=>$id]);
+ $ret['data'][0]['favor_count'] = GoodsService::GoodsFavorTotal(['goods_id'=>$id]);
- $this->assign('goods', $goods[0]);
- $this->assign('home_seo_site_title', $goods[0]['title']);
+ $this->assign('goods', $ret['data'][0]);
+ $this->assign('home_seo_site_title', $ret['data'][0]['title']);
// 二维码
$this->assign('qrcode_url', MyUrl('index/qrcode/index', ['content'=>urlencode(base64_encode(MyUrl('index/goods/index', ['id'=>$id], true, true)))]));
@@ -90,7 +90,8 @@ class Goods extends Common
'field' => 'id,title,title_color,price,images',
'n' => 10,
];
- $this->assign('left_goods', GoodsService::GoodsList($params));
+ $right_goods = GoodsService::GoodsList($params);
+ $this->assign('left_goods', $right_goods['data']);
// 详情tab商品 猜你喜欢
$params = [
@@ -103,7 +104,8 @@ class Goods extends Common
'field' => 'id,title,title_color,price,images,home_recommended_images',
'n' => 16,
];
- $this->assign('detail_like_goods', GoodsService::GoodsList($params));
+ $like_goods = GoodsService::GoodsList($params);
+ $this->assign('detail_like_goods', $like_goods['data']);
return $this->fetch();
}
diff --git a/application/index/controller/Search.php b/application/index/controller/Search.php
index 160bd33f6..252260bc6 100755
--- a/application/index/controller/Search.php
+++ b/application/index/controller/Search.php
@@ -97,8 +97,8 @@ class Search extends Common
public function GoodsList()
{
// 获取商品列表
- $data = SearchService::GoodsList($this->params);
- if(empty($data['data']))
+ $ret = SearchService::GoodsList($this->params);
+ if(empty($ret['data']))
{
$msg = '没有相关数据';
$code = -100;
@@ -111,7 +111,7 @@ class Search extends Common
SearchService::SearchAdd($this->params);
// 返回
- return DataReturn($msg, $code, $data);
+ return DataReturn($msg, $code, $ret['data']);
}
}
?>
\ No newline at end of file
diff --git a/application/index/controller/User.php b/application/index/controller/User.php
index 21b511411..768f14ce9 100755
--- a/application/index/controller/User.php
+++ b/application/index/controller/User.php
@@ -137,7 +137,7 @@ class User extends Common
$this->assign('goods_browse_list', $data['data']);
// 用户中心顶部钩子
- $this->assign('plugins_view_user_center_top_data', Hook::listen('plugins_view_user_center_top', ['hook_name'=>'plugins_view_user_center_top', 'is_control'=>false, 'user'=>$this->user]));
+ $this->assign('plugins_view_user_center_top_data', Hook::listen('plugins_view_user_center_top', ['hook_name'=>'plugins_view_user_center_top', 'is_backend'=>false, 'user'=>$this->user]));
return $this->fetch();
}
diff --git a/application/index/view/default/goods/index.html b/application/index/view/default/goods/index.html
index d1af19eed..d474064fa 100755
--- a/application/index/view/default/goods/index.html
+++ b/application/index/view/default/goods/index.html
@@ -91,7 +91,7 @@
{{/if}}
-
促销价
+
销售价
¥
{{$goods.price}}
diff --git a/application/plugins/commongobacktop/Hook.php b/application/plugins/commongobacktop/Hook.php
index 7dbe9fce9..4cc87dd7d 100755
--- a/application/plugins/commongobacktop/Hook.php
+++ b/application/plugins/commongobacktop/Hook.php
@@ -33,9 +33,9 @@ class Hook extends Controller
public function run($params = [])
{
// 是否控制器钩子
- // is_control 当前为控制器业务处理
+ // is_backend 当前为后端业务处理
// hook_name 钩子名称
- if(isset($params['is_control']) && $params['is_control'] === true && !empty($params['hook_name']))
+ if(isset($params['is_backend']) && $params['is_backend'] === true && !empty($params['hook_name']))
{
// 参数一 描述
// 参数二 0 为处理成功, 负数为失败
diff --git a/application/plugins/commononlineservice/Hook.php b/application/plugins/commononlineservice/Hook.php
index 79057e630..f0393374c 100755
--- a/application/plugins/commononlineservice/Hook.php
+++ b/application/plugins/commononlineservice/Hook.php
@@ -33,9 +33,9 @@ class Hook extends Controller
public function run($params = [])
{
// 是否控制器钩子
- // is_control 当前为控制器业务处理
+ // is_backend 当前为后端业务处理
// hook_name 钩子名称
- if(isset($params['is_control']) && $params['is_control'] === true && !empty($params['hook_name']))
+ if(isset($params['is_backend']) && $params['is_backend'] === true && !empty($params['hook_name']))
{
// 参数一 描述
// 参数二 0 为处理成功, 负数为失败
diff --git a/application/plugins/commonrightnavigation/Hook.php b/application/plugins/commonrightnavigation/Hook.php
index a57c70e13..adc13e26c 100755
--- a/application/plugins/commonrightnavigation/Hook.php
+++ b/application/plugins/commonrightnavigation/Hook.php
@@ -34,9 +34,9 @@ class Hook extends Controller
public function run($params = [])
{
// 是否控制器钩子
- // is_control 当前为控制器业务处理
+ // is_backend 当前为后端业务处理
// hook_name 钩子名称
- if(isset($params['is_control']) && $params['is_control'] === true && !empty($params['hook_name']))
+ if(isset($params['is_backend']) && $params['is_backend'] === true && !empty($params['hook_name']))
{
// 参数一 描述
// 参数二 0 为处理成功, 负数为失败
diff --git a/application/plugins/commontopmaxpicture/Hook.php b/application/plugins/commontopmaxpicture/Hook.php
index a3a08052a..f602c2cde 100755
--- a/application/plugins/commontopmaxpicture/Hook.php
+++ b/application/plugins/commontopmaxpicture/Hook.php
@@ -31,8 +31,8 @@ class Hook extends Controller
*/
public function run($params = [])
{
- // 是否控制器钩子
- if(isset($params['is_control']) && $params['is_control'] === true && !empty($params['hook_name']))
+ // 是否后端钩子
+ if(isset($params['is_backend']) && $params['is_backend'] === true && !empty($params['hook_name']))
{
return DataReturn('无需处理', 0);
diff --git a/application/plugins/commontopnotice/Hook.php b/application/plugins/commontopnotice/Hook.php
index c5f3b834e..6a9a3bec4 100755
--- a/application/plugins/commontopnotice/Hook.php
+++ b/application/plugins/commontopnotice/Hook.php
@@ -32,8 +32,8 @@ class Hook extends Controller
*/
public function run($params = [])
{
- // 是否控制器钩子
- if(isset($params['is_control']) && $params['is_control'] === true && !empty($params['hook_name']))
+ // 是否后端钩子
+ if(isset($params['is_backend']) && $params['is_backend'] === true && !empty($params['hook_name']))
{
return DataReturn('无需处理', 0);
diff --git a/application/plugins/usercentertopnotice/Hook.php b/application/plugins/usercentertopnotice/Hook.php
index a23a50867..535a9f3a6 100755
--- a/application/plugins/usercentertopnotice/Hook.php
+++ b/application/plugins/usercentertopnotice/Hook.php
@@ -32,8 +32,8 @@ class Hook extends Controller
*/
public function run($params = [])
{
- // 是否控制器钩子
- if(isset($params['is_control']) && $params['is_control'] === true && !empty($params['hook_name']))
+ // 是否后端钩子
+ if(isset($params['is_backend']) && $params['is_backend'] === true && !empty($params['hook_name']))
{
return DataReturn('无需处理', 0);
diff --git a/application/plugins/userloginrewardintegral/Hook.php b/application/plugins/userloginrewardintegral/Hook.php
index 0394faa75..4b3958c70 100755
--- a/application/plugins/userloginrewardintegral/Hook.php
+++ b/application/plugins/userloginrewardintegral/Hook.php
@@ -34,15 +34,15 @@ class Hook
*/
public function run($params = [])
{
- // 是否控制器钩子
- if(isset($params['is_control']) && $params['is_control'] === true && !empty($params['hook_name']))
+ // 是否后端钩子
+ if(isset($params['is_backend']) && $params['is_backend'] === true && !empty($params['hook_name']))
{
if(!empty($params['user_id']))
{
switch($params['hook_name'])
{
// 用户登录成功后赠送积分
- case 'plugins_control_user_login_end' :
+ case 'plugins_service_user_login_end' :
$ret = $this->LoginGiveIntegral($params);
break;
diff --git a/application/plugins/userloginrewardintegral/config.json b/application/plugins/userloginrewardintegral/config.json
index 42ba38693..cfa30ca39 100755
--- a/application/plugins/userloginrewardintegral/config.json
+++ b/application/plugins/userloginrewardintegral/config.json
@@ -17,7 +17,7 @@
"is_home":false
},
"hook":{
- "plugins_control_user_login_end":[
+ "plugins_service_user_login_end":[
"app\\plugins\\userloginrewardintegral\\Hook"
]
}
diff --git a/application/plugins/usernotloginhidegoodsprice/Admin.php b/application/plugins/usernotloginhidegoodsprice/Admin.php
new file mode 100644
index 000000000..04490d04c
--- /dev/null
+++ b/application/plugins/usernotloginhidegoodsprice/Admin.php
@@ -0,0 +1,96 @@
+assign('data', $ret['data']);
+ return $this->fetch('../../../plugins/view/usernotloginhidegoodsprice/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('usernotloginhidegoodsprice');
+ if($ret['code'] == 0)
+ {
+ // 限制终端
+ $ret['data']['limit_terminal'] = empty($ret['data']['limit_terminal']) ? [] : explode(',', $ret['data']['limit_terminal']);
+
+ $this->assign('data', $ret['data']);
+ return $this->fetch('../../../plugins/view/usernotloginhidegoodsprice/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'=>'usernotloginhidegoodsprice', 'data'=>$params]);
+ }
+}
+?>
\ No newline at end of file
diff --git a/application/plugins/usernotloginhidegoodsprice/Hook.php b/application/plugins/usernotloginhidegoodsprice/Hook.php
new file mode 100644
index 000000000..bf3ef29b5
--- /dev/null
+++ b/application/plugins/usernotloginhidegoodsprice/Hook.php
@@ -0,0 +1,116 @@
+PriceHandle($params);
+
+ // 默认返回视图
+ } else {
+ return '';
+ }
+ }
+
+ /**
+ * 价格处理
+ * @author Devil
+ * @blog http://gong.gg/
+ * @version 1.0.0
+ * @datetime 2019-02-14T22:19:08+0800
+ * @param [array] $params [参数]
+ */
+ private function PriceHandle($params)
+ {
+ // 获取应用数据
+ $ret = PluginsService::PluginsData('usernotloginhidegoodsprice');
+ if($ret['code'] == 0)
+ {
+ // 用户是否已登录
+ if(session('user') != null)
+ {
+ return DataReturn('无需处理', 0);
+ }
+
+ // 限制终端
+ if(!empty($ret['data']['limit_terminal']))
+ {
+ $limit_terminal_all = explode(',', $ret['data']['limit_terminal']);
+ $client_type = APPLICATION_CLIENT_TYPE;
+ if($client_type == 'pc' && IsMobile())
+ {
+ $client_type = 'h5';
+ }
+ if(!in_array($client_type, $limit_terminal_all))
+ {
+ return DataReturn('无需处理', 0);
+ }
+ }
+
+ // 原价
+ $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'] : '';
+
+ // 商品原价
+ if(isset($params['goods']['original_price']))
+ {
+ $params['goods']['original_price'] = $original_price_placeholder;
+ }
+ if(isset($params['goods']['min_original_price']))
+ {
+ $params['goods']['min_original_price'] = $original_price_placeholder;
+ }
+ if(isset($params['goods']['max_original_price']))
+ {
+ $params['goods']['max_original_price'] = $original_price_placeholder;
+ }
+
+ // 销售价
+ if(isset($params['goods']['price']))
+ {
+ $params['goods']['price'] = $price_placeholder;
+ }
+ if(isset($params['goods']['min_price']))
+ {
+ $params['goods']['min_price'] = $price_placeholder;
+ }
+ if(isset($params['goods']['max_price']))
+ {
+ $params['goods']['max_price'] = $price_placeholder;
+ }
+
+ return DataReturn('处理成功', 0);
+ } else {
+ return $ret;
+ }
+ }
+}
+?>
\ No newline at end of file
diff --git a/application/plugins/usernotloginhidegoodsprice/config.json b/application/plugins/usernotloginhidegoodsprice/config.json
new file mode 100644
index 000000000..32a8a9cc2
--- /dev/null
+++ b/application/plugins/usernotloginhidegoodsprice/config.json
@@ -0,0 +1,28 @@
+{
+ "base":{
+ "plugins":"usernotloginhidegoodsprice",
+ "name":"未登录隐藏商品价格",
+ "logo":"\/static\/upload\/images\/plugins_usernotloginhidegoodsprice\/2019\/02\/26\/1551184745400164.png",
+ "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_goods_handle_begin":[
+ "app\\plugins\\usernotloginhidegoodsprice\\Hook"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/application/plugins/view/usernotloginhidegoodsprice/admin/index.html b/application/plugins/view/usernotloginhidegoodsprice/admin/index.html
new file mode 100755
index 000000000..5ea710202
--- /dev/null
+++ b/application/plugins/view/usernotloginhidegoodsprice/admin/index.html
@@ -0,0 +1,51 @@
+{{include file="public/header" /}}
+
+
+
+
+
+
+
+
+
+
+ {{if !empty($data['original_price_placeholder'])}}
+ {{$data.original_price_placeholder}}
+ {{else /}}
+ 未填写
+ {{/if}}
+
+
+
+
+
+ {{if !empty($data['price_placeholder'])}}
+ {{$data.price_placeholder}}
+ {{else /}}
+ 未填写
+ {{/if}}
+
+
+
+
+
+ {{if !empty($data['limit_terminal_text'])}}
+ {{$data.limit_terminal_text}}
+ {{else /}}
+ 全部
+ {{/if}}
+
+
+
+
编辑
+
+
+
+
+
+
+{{include file="public/footer" /}}
+
\ No newline at end of file
diff --git a/application/plugins/view/usernotloginhidegoodsprice/admin/saveinfo.html b/application/plugins/view/usernotloginhidegoodsprice/admin/saveinfo.html
new file mode 100755
index 000000000..9656f6595
--- /dev/null
+++ b/application/plugins/view/usernotloginhidegoodsprice/admin/saveinfo.html
@@ -0,0 +1,43 @@
+{{include file="public/header" /}}
+
+
+
+
+
+
+{{include file="public/footer" /}}
+
\ No newline at end of file
diff --git a/application/service/BuyService.php b/application/service/BuyService.php
index 109297b86..98416c658 100755
--- a/application/service/BuyService.php
+++ b/application/service/BuyService.php
@@ -371,32 +371,32 @@ class BuyService
],
'field' => 'id, id AS goods_id, title, images, inventory_unit, buy_min_number, buy_max_number',
];
- $goods = GoodsService::GoodsList($p);
- if(empty($goods[0]))
+ $ret = GoodsService::GoodsList($p);
+ if(empty($ret['data'][0]))
{
return DataReturn('资源不存在或已被删除', -10);
}
// 规格
- $goods[0]['spec'] = self::GoodsSpecificationsHandle($params);
+ $ret['data'][0]['spec'] = self::GoodsSpecificationsHandle($params);
// 获取商品基础信息
- $goods_base = GoodsService::GoodsSpecDetail(['id'=>$goods[0]['goods_id'], 'spec'=>$goods[0]['spec']]);
+ $goods_base = GoodsService::GoodsSpecDetail(['id'=>$ret['data'][0]['goods_id'], 'spec'=>$ret['data'][0]['spec']]);
if($goods_base['code'] == 0)
{
- $goods[0]['inventory'] = $goods_base['data']['inventory'];
- $goods[0]['price'] = $goods_base['data']['price'];
- $goods[0]['original_price'] = $goods_base['data']['original_price'];
- $goods[0]['spec_weight'] = $goods_base['data']['weight'];
- $goods[0]['spec_coding'] = $goods_base['data']['coding'];
- $goods[0]['spec_barcode'] = $goods_base['data']['barcode'];
+ $ret['data'][0]['inventory'] = $goods_base['data']['inventory'];
+ $ret['data'][0]['price'] = $goods_base['data']['price'];
+ $ret['data'][0]['original_price'] = $goods_base['data']['original_price'];
+ $ret['data'][0]['spec_weight'] = $goods_base['data']['weight'];
+ $ret['data'][0]['spec_coding'] = $goods_base['data']['coding'];
+ $ret['data'][0]['spec_barcode'] = $goods_base['data']['barcode'];
} else {
return $goods_base;
}
// 数量/小计
- $goods[0]['stock'] = $params['stock'];
- $goods[0]['total_price'] = $params['stock']*$goods[0]['price'];
+ $ret['data'][0]['stock'] = $params['stock'];
+ $ret['data'][0]['total_price'] = $params['stock']*$ret['data'][0]['price'];
return DataReturn('操作成功', 0, $goods);
}
diff --git a/application/service/GoodsService.php b/application/service/GoodsService.php
index 94913f675..84f835c60 100755
--- a/application/service/GoodsService.php
+++ b/application/service/GoodsService.php
@@ -11,6 +11,7 @@
namespace app\service;
use think\Db;
+use think\facade\Hook;
use app\service\ResourcesService;
use app\service\BrandService;
use app\service\RegionService;
@@ -153,7 +154,8 @@ class GoodsService
foreach($goods_category as &$v)
{
$category_ids = self::GoodsCategoryItemsIds([$v['id']], 1);
- $v['goods'] = self::CategoryGoodsList(['where'=>['gci.category_id'=>$category_ids, 'is_home_recommended'=>1], 'm'=>0, 'n'=>6, 'field'=>'g.id,g.title,g.title_color,g.images,g.home_recommended_images,g.original_price,g.price,g.min_price,g.max_price,g.inventory,g.buy_min_number,g.buy_max_number']);
+ $goods = self::CategoryGoodsList(['where'=>['gci.category_id'=>$category_ids, 'is_home_recommended'=>1], 'm'=>0, 'n'=>6, 'field'=>'g.id,g.title,g.title_color,g.images,g.home_recommended_images,g.original_price,g.price,g.min_price,g.max_price,g.inventory,g.buy_min_number,g.buy_max_number']);
+ $v['goods'] = $goods['data'];
}
}
return $goods_category;
@@ -246,6 +248,20 @@ class GoodsService
// 开始处理数据
foreach($data as &$v)
{
+ // 商品处理前钩子
+ $hook_name = 'plugins_service_goods_handle_begin';
+ $ret = Hook::listen($hook_name, [
+ 'hook_name' => $hook_name,
+ 'is_backend' => true,
+ 'params' => &$params,
+ 'goods' => &$v,
+ 'goods_id' => $v['id']
+ ]);
+ if(isset($ret['code']) && $ret['code'] != 0)
+ {
+ return $ret;
+ }
+
// 商品url地址
if(!empty($v['id']))
{
@@ -328,9 +344,23 @@ class GoodsService
{
$v['content_app'] = self::GoodsContentApp(['goods_id'=>$v['id']]);
}
+
+ // 商品处理前钩子
+ $hook_name = 'plugins_service_goods_handle_end';
+ $ret = Hook::listen($hook_name, [
+ 'hook_name' => $hook_name,
+ 'is_backend' => true,
+ 'params' => &$params,
+ 'goods' => &$v,
+ 'goods_id' => $v['id']
+ ]);
+ if(isset($ret['code']) && $ret['code'] != 0)
+ {
+ return $ret;
+ }
}
}
- return $data;
+ return DataReturn('处理成功', 0, $data);
}
/**
diff --git a/application/service/PluginsAdminService.php b/application/service/PluginsAdminService.php
index f2ad60dc9..1bb49c8ee 100644
--- a/application/service/PluginsAdminService.php
+++ b/application/service/PluginsAdminService.php
@@ -486,7 +486,9 @@ class PluginsAdminService
$admin=<<'plugins_control_user_login_begin', 'is_control'=>true, 'params'=>$params, 'user_id'=>$user['id']]);
+ $hook_name = 'plugins_service_user_login_begin';
+ $ret = Hook::listen($hook_name, [
+ 'hook_name' => $hook_name,
+ 'is_backend' => true,
+ 'params' => &$params,
+ 'user_id' => $user['id']
+ ]);
if(isset($ret['code']) && $ret['code'] != 0)
{
return $ret;
@@ -852,7 +858,13 @@ class UserService
if(self::UserLoginRecord($user['id']))
{
// 用户登录后钩子
- $ret = Hook::listen('plugins_control_user_login_end', ['hook_name'=>'plugins_control_user_login_end', 'is_control'=>true, 'params'=>$params, 'user_id'=>$user['id']]);
+ $hook_name = 'plugins_service_user_login_end';
+ $ret = Hook::listen($hook_name, [
+ 'hook_name' => $hook_name,
+ 'is_backend' => true,
+ 'params' => &$params,
+ 'user_id' => $user['id']
+ ]);
if(isset($ret['code']) && $ret['code'] != 0)
{
return $ret;
diff --git a/application/tags.php b/application/tags.php
index 051a7d96e..634345bd2 100755
--- a/application/tags.php
+++ b/application/tags.php
@@ -41,7 +41,7 @@ return array (
array (
0 => 'app\\plugins\\usercentertopnotice\\Hook',
),
- 'plugins_control_user_login_end' =>
+ 'plugins_service_user_login_end' =>
array (
0 => 'app\\plugins\\userloginrewardintegral\\Hook',
),
@@ -60,5 +60,9 @@ return array (
0 => 'app\\plugins\\commonrightnavigation\\Hook',
1 => 'app\\plugins\\commononlineservice\\Hook',
),
+ 'plugins_service_goods_handle_begin' =>
+ array (
+ 0 => 'app\\plugins\\usernotloginhidegoodsprice\\Hook',
+ ),
);
?>
\ No newline at end of file
diff --git a/config/shopxo.php b/config/shopxo.php
index 3912d471c..1df505894 100644
--- a/config/shopxo.php
+++ b/config/shopxo.php
@@ -15,7 +15,7 @@
return [
// 开发模式
- 'is_develop' => false,
+ 'is_develop' => true,
// 默认编码
'default_charset' => 'utf-8',
diff --git a/config/shopxo.sql b/config/shopxo.sql
index 65bcfc983..30a17439a 100644
--- a/config/shopxo.sql
+++ b/config/shopxo.sql
@@ -1,20 +1,18 @@
/*
- Navicat Premium Data Transfer
+ Navicat MySQL Data Transfer
Source Server : 本机
- Source Server Type : MySQL
- Source Server Version : 50722
+ Source Server Version : 50716
Source Host : localhost
- Source Database : shopxo_test
+ Source Database : shopxo_ttt
- Target Server Type : MySQL
- Target Server Version : 50722
+ Target Server Version : 50716
File Encoding : utf-8
- Date: 02/26/2019 17:51:45 PM
+ Date: 02/26/2019 22:44:32 PM
*/
-SET NAMES utf8mb4;
+SET NAMES utf8;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
@@ -348,7 +346,7 @@ CREATE TABLE `s_goods` (
-- Records of `s_goods`
-- ----------------------------
BEGIN;
-INSERT INTO `s_goods` VALUES ('1', '1', 'MIUI/小米 小米手机4 小米4代 MI4智能4G手机包邮 黑色 D-LTE(4G)/TD-SCD', '', '', '0', '125', '步', '/static/upload/images/goods/2019/01/14/1547450781101144.jpg', '3200.00', '3200.00', '3200.00', '2100.00', '2100.00', '2100.00', '10', '1', '0', '1', '1', '1', '


', '2', '0', '9', '', '/static/upload/images/goods/2019/01/14/1547450781101144.jpg', '0', '1547450921', '1549959519'), ('2', '2', '苹果(Apple)iPhone 6 Plus (A1524)移动联通电信4G手机 金色 16G', '', 'iPhone 6 Plus', '0', '1711', '步', '/static/upload/images/goods/2019/01/14/1547451274847894.jpg', '6000.00-7600.00', '6000.00', '7600.00', '4500.00-6800.00', '4500.00', '6800.00', '30', '1', '0', '1', '1', '1', '


', '2', '0', '10', '/static/upload/video/goods/2019/01/14/1547458876723311.mp4', '/static/upload/images/goods/2019/01/14/1547451274847894.jpg', '0', '1547451624', '1547458880'), ('3', '2', 'Samsung/三星 SM-G8508S GALAXY Alpha四核智能手机 新品 闪耀白', '', '', '0', '235', '步', '/static/upload/images/goods/2019/01/14/1547451909951171.jpg', '6866.00', '6866.00', '6866.00', '3888.00', '3888.00', '3888.00', '20', '1', '0', '1', '1', '1', '



', '2', '0', '2', '', '/static/upload/images/goods/2019/01/14/1547451909951171.jpg', '0', '1547452007', '1547452007'), ('4', '1', 'Huawei/华为 H60-L01 荣耀6 移动4G版智能手机 安卓', '', '', '0', '537', '步', '/static/upload/images/goods/2019/01/14/1547452474332334.jpg', '2300.00', '2300.00', '2300.00', '1999.00', '1999.00', '1999.00', '19', '1', '0', '1', '1', '1', '


', '2', '0', '49', '', '/static/upload/images/goods/2019/01/14/1547452474332334.jpg', '0', '1547452553', '1547452553'), ('5', '2', 'Meizu/魅族 MX4 Pro移动版 八核大屏智能手机 黑色 16G', '', '', '0', '436', '步', '/static/upload/images/goods/2019/01/14/1547452714324599.jpg', '3200.00', '3200.00', '3200.00', '2499.00', '2499.00', '2499.00', '56', '1', '0', '1', '1', '1', '


', '2', '0', '18', '', '/static/upload/images/goods/2019/01/14/1547452714324599.jpg', '0', '1547452798', '1547452798'), ('6', '1', 'vivo X5MAX L 移动4G 八核超薄大屏5.5吋双卡手机vivoX5max', '', '', '0', '321', '步', '/static/upload/images/goods/2019/01/14/1547453000703308.jpg', '3200.00', '3200.00', '3200.00', '2998.90', '2998.90', '2998.90', '65', '1', '0', '1', '1', '1', ' X5L/SL/V/M (5.0寸) X5max钢化膜(5.5寸) X5pro钢化膜(5.2寸)



', '2', '0', '26', '', '/static/upload/images/goods/2019/01/14/1547453000703308.jpg', '0', '1547453135', '1547453157'), ('7', '1', '纽芝兰包包女士2018新款潮百搭韩版时尚单肩斜挎包少女小挎包链条', '', '', '0', '320', '件', '/static/upload/images/goods/2019/01/14/1547453895416529.jpg', '760.00', '760.00', '760.00', '168.00', '168.00', '168.00', '11', '1', '0', '1', '1', '1', '


', '2', '0', '5', '', '/static/upload/images/goods/2019/01/15/1547540603500383.jpg', '0', '1547453967', '1547540607'), ('8', '1', 'MARNI Trunk 女士 中号拼色十字纹小牛皮 斜挎风琴包', '', '', '0', '35', '件', '/static/upload/images/goods/2019/01/14/1547454145355962.jpg', '672.00', '672.00', '672.00', '356.00', '356.00', '356.00', '8', '1', '0', '1', '1', '1', '


', '2', '0', '7', '', '/static/upload/images/goods/2019/01/14/1547454145355962.jpg', '0', '1547454269', '1547454269'), ('9', '2', '睡衣女长袖春秋季纯棉韩版女士大码薄款春夏季全棉家居服两件套装', '', '', '0', '598', '件', '/static/upload/images/goods/2019/01/14/1547454702543219.jpg', '160.00-216.00', '160.00', '216.00', '120.00-158.00', '120.00', '158.00', '2', '1', '0', '1', '1', '1', '



', '3', '0', '61', '', '/static/upload/images/goods/2019/01/14/1547454567172116.jpg', '0', '1547454786', '1547454828'), ('10', '0', '夏装女装古力娜扎明星同款一字领露肩蓝色蕾丝修身显瘦连衣裙礼服', '', '', '0', '36', '件', '/static/upload/images/goods/2019/01/14/1547455240794230.jpg', '568.00', '568.00', '568.00', '228.00', '228.00', '228.00', '28', '1', '0', '1', '1', '1', '【品牌】欧单 学媛风 猫咪良品
【吊牌】xueyuanfeng 猫咪良品
【面料质地】涤棉拼接蕾丝 后中拉链 有内衬(非专业机构鉴定,介意请慎拍)
好的衣服需要好好呵护,务必请冷水手洗(切记别浸泡)拧干就晾晒或则干洗哦~
【商品颜色】实物拍摄 蓝色 颜色很难拍有小色差属正常现象哦
【商品尺寸】XS/S/M/L 小高腰设计 胸口纽扣是装饰的哦
XS码尺寸: 悬挂衣长81CM.胸围80内合适.腰围63CM.臀围86CM
S码尺寸: 悬挂衣长82CM.胸围84内合适.腰围67CM.臀围90CM
M码尺寸: 悬挂衣长83CM.胸围88内合适.腰围71CM.臀围94CM
L码尺寸: 悬挂衣长84CM.胸围92内合适.腰围75CM.臀围98CM
(测量单位是CM,每个人的测量方式不一样,测量的尺寸数据可能会有1~3厘米的差异,请MM们谅解哦)
PS:常规码数,可按平时号选择哦。修身版型~如果上身偏大可以适当考虑大1号~下摆蕾丝拼接不会很平整的哦~
蕾丝花是手工修剪出来的,每件都有不同和不规则的哦,有小线头和节点是正常现象哦~请亲们谅解哦~


', '2', '0', '13', '', '/static/upload/images/goods/2019/01/14/1547455222990904.jpg', '0', '1547455375', '1547455375'), ('11', '0', '夏季复古ins风格网红SP同款 短袖大圆领香槟色蕾丝绣花钉珠连衣裙', '', '', '0', '367', '件', '/static/upload/images/goods/2019/01/14/1547455601314107.jpg', '268.00', '268.00', '268.00', '258.00', '258.00', '258.00', '1', '1', '0', '1', '1', '1', '【品牌】欧单 学媛风 猫咪良品
【吊牌】xueyuanfeng 猫咪良品
【面料质地】网纱绣花钉珠拼接蕾丝 有拉链有内衬(非专业机构鉴定,介意请慎拍)
好的衣服需要好好呵护,务必请冷水手洗(切记别浸泡)拧干就晾晒或则干洗哦~
【商品颜色】实物拍摄 香槟色 颜色很难拍有小色差属正常现象哦
【商品尺寸】XS/S/M/L 小高腰设计 胸那考虑撑开因素哦 微弹的哦
XS码尺寸: 衣长82CM.胸围80内合适.腰围63CM.臀围86CM
S码尺寸: 衣长83CM.胸围84内合适.腰围67CM.臀围90CM
M码尺寸: 衣长84CM.胸围88内合适.腰围71CM.臀围94CM
L码尺寸: 衣长85CM.胸围92内合适.腰围75CM.臀围98CM
(测量单位是CM,每个人的测量方式不一样,测量的尺寸数据可能会有1~3厘米的差异,请MM们谅解哦)
PS:常规码数,可按平时号选择哦。修身版型,如果腰粗可以适当考虑大1号哦~
大圆领,每个人的身材曲线不同,领口不会很平的哦,请谅解~
肩膀那有暗扣哦,可以很好的隐藏了内衣的肩带哦~袖子那略硬哦~




', '4', '0', '4', '', '/static/upload/images/goods/2019/01/14/1547455566118614.jpg', '0', '1547455700', '1547455700'), ('12', '2', 'ZK星星绣花雪纺连衣裙中长款sukol裙少女心温柔超仙女chic裙子夏', '', 'xxxxhhhhhh商品型号', '0', '246', '件', '/static/upload/images/goods/2019/01/14/1547455890402147.jpg', '150.00-188.00', '150.00', '188.00', '118.00-128.00', '118.00', '128.00', '3', '1', '0', '1', '1', '1', '



', '3', '0', '11', '', '/static/upload/images/goods/2019/01/14/1547455890402147.jpg', '0', '1547456230', '1551064315');
+INSERT INTO `s_goods` VALUES ('1', '1', 'MIUI/小米 小米手机4 小米4代 MI4智能4G手机包邮 黑色 D-LTE(4G)/TD-SCD', '', '', '0', '125', '步', '/static/upload/images/goods/2019/01/14/1547450781101144.jpg', '3200.00', '3200.00', '3200.00', '2100.00', '2100.00', '2100.00', '10', '1', '0', '1', '1', '1', '


', '2', '0', '20', '', '/static/upload/images/goods/2019/01/14/1547450781101144.jpg', '0', '1547450921', '1549959519'), ('2', '2', '苹果(Apple)iPhone 6 Plus (A1524)移动联通电信4G手机 金色 16G', '', 'iPhone 6 Plus', '0', '1711', '步', '/static/upload/images/goods/2019/01/14/1547451274847894.jpg', '6000.00-7600.00', '6000.00', '7600.00', '4500.00-6800.00', '4500.00', '6800.00', '30', '1', '0', '1', '1', '1', '


', '2', '0', '10', '/static/upload/video/goods/2019/01/14/1547458876723311.mp4', '/static/upload/images/goods/2019/01/14/1547451274847894.jpg', '0', '1547451624', '1547458880'), ('3', '2', 'Samsung/三星 SM-G8508S GALAXY Alpha四核智能手机 新品 闪耀白', '', '', '0', '235', '步', '/static/upload/images/goods/2019/01/14/1547451909951171.jpg', '6866.00', '6866.00', '6866.00', '3888.00', '3888.00', '3888.00', '20', '1', '0', '1', '1', '1', '



', '2', '0', '2', '', '/static/upload/images/goods/2019/01/14/1547451909951171.jpg', '0', '1547452007', '1547452007'), ('4', '1', 'Huawei/华为 H60-L01 荣耀6 移动4G版智能手机 安卓', '', '', '0', '537', '步', '/static/upload/images/goods/2019/01/14/1547452474332334.jpg', '2300.00', '2300.00', '2300.00', '1999.00', '1999.00', '1999.00', '19', '1', '0', '1', '1', '1', '


', '2', '0', '49', '', '/static/upload/images/goods/2019/01/14/1547452474332334.jpg', '0', '1547452553', '1547452553'), ('5', '2', 'Meizu/魅族 MX4 Pro移动版 八核大屏智能手机 黑色 16G', '', '', '0', '436', '步', '/static/upload/images/goods/2019/01/14/1547452714324599.jpg', '3200.00', '3200.00', '3200.00', '2499.00', '2499.00', '2499.00', '56', '1', '0', '1', '1', '1', '


', '2', '0', '146', '', '/static/upload/images/goods/2019/01/14/1547452714324599.jpg', '0', '1547452798', '1547452798'), ('6', '1', 'vivo X5MAX L 移动4G 八核超薄大屏5.5吋双卡手机vivoX5max', '', '', '0', '321', '步', '/static/upload/images/goods/2019/01/14/1547453000703308.jpg', '3200.00', '3200.00', '3200.00', '2998.90', '2998.90', '2998.90', '65', '1', '0', '1', '1', '1', ' X5L/SL/V/M (5.0寸) X5max钢化膜(5.5寸) X5pro钢化膜(5.2寸)



', '2', '0', '42', '', '/static/upload/images/goods/2019/01/14/1547453000703308.jpg', '0', '1547453135', '1547453157'), ('7', '1', '纽芝兰包包女士2018新款潮百搭韩版时尚单肩斜挎包少女小挎包链条', '', '', '0', '320', '件', '/static/upload/images/goods/2019/01/14/1547453895416529.jpg', '760.00', '760.00', '760.00', '168.00', '168.00', '168.00', '11', '1', '0', '1', '1', '1', '


', '2', '0', '5', '', '/static/upload/images/goods/2019/01/15/1547540603500383.jpg', '0', '1547453967', '1547540607'), ('8', '1', 'MARNI Trunk 女士 中号拼色十字纹小牛皮 斜挎风琴包', '', '', '0', '35', '件', '/static/upload/images/goods/2019/01/14/1547454145355962.jpg', '672.00', '672.00', '672.00', '356.00', '356.00', '356.00', '8', '1', '0', '1', '1', '1', '


', '2', '0', '8', '', '/static/upload/images/goods/2019/01/14/1547454145355962.jpg', '0', '1547454269', '1547454269'), ('9', '2', '睡衣女长袖春秋季纯棉韩版女士大码薄款春夏季全棉家居服两件套装', '', '', '0', '598', '件', '/static/upload/images/goods/2019/01/14/1547454702543219.jpg', '160.00-216.00', '160.00', '216.00', '120.00-158.00', '120.00', '158.00', '2', '1', '0', '1', '1', '1', '



', '3', '0', '62', '', '/static/upload/images/goods/2019/01/14/1547454567172116.jpg', '0', '1547454786', '1547454828'), ('10', '0', '夏装女装古力娜扎明星同款一字领露肩蓝色蕾丝修身显瘦连衣裙礼服', '', '', '0', '36', '件', '/static/upload/images/goods/2019/01/14/1547455240794230.jpg', '568.00', '568.00', '568.00', '228.00', '228.00', '228.00', '28', '1', '0', '1', '1', '1', '【品牌】欧单 学媛风 猫咪良品
【吊牌】xueyuanfeng 猫咪良品
【面料质地】涤棉拼接蕾丝 后中拉链 有内衬(非专业机构鉴定,介意请慎拍)
好的衣服需要好好呵护,务必请冷水手洗(切记别浸泡)拧干就晾晒或则干洗哦~
【商品颜色】实物拍摄 蓝色 颜色很难拍有小色差属正常现象哦
【商品尺寸】XS/S/M/L 小高腰设计 胸口纽扣是装饰的哦
XS码尺寸: 悬挂衣长81CM.胸围80内合适.腰围63CM.臀围86CM
S码尺寸: 悬挂衣长82CM.胸围84内合适.腰围67CM.臀围90CM
M码尺寸: 悬挂衣长83CM.胸围88内合适.腰围71CM.臀围94CM
L码尺寸: 悬挂衣长84CM.胸围92内合适.腰围75CM.臀围98CM
(测量单位是CM,每个人的测量方式不一样,测量的尺寸数据可能会有1~3厘米的差异,请MM们谅解哦)
PS:常规码数,可按平时号选择哦。修身版型~如果上身偏大可以适当考虑大1号~下摆蕾丝拼接不会很平整的哦~
蕾丝花是手工修剪出来的,每件都有不同和不规则的哦,有小线头和节点是正常现象哦~请亲们谅解哦~


', '2', '0', '13', '', '/static/upload/images/goods/2019/01/14/1547455222990904.jpg', '0', '1547455375', '1547455375'), ('11', '0', '夏季复古ins风格网红SP同款 短袖大圆领香槟色蕾丝绣花钉珠连衣裙', '', '', '0', '367', '件', '/static/upload/images/goods/2019/01/14/1547455601314107.jpg', '268.00', '268.00', '268.00', '258.00', '258.00', '258.00', '1', '1', '0', '1', '1', '1', '【品牌】欧单 学媛风 猫咪良品
【吊牌】xueyuanfeng 猫咪良品
【面料质地】网纱绣花钉珠拼接蕾丝 有拉链有内衬(非专业机构鉴定,介意请慎拍)
好的衣服需要好好呵护,务必请冷水手洗(切记别浸泡)拧干就晾晒或则干洗哦~
【商品颜色】实物拍摄 香槟色 颜色很难拍有小色差属正常现象哦
【商品尺寸】XS/S/M/L 小高腰设计 胸那考虑撑开因素哦 微弹的哦
XS码尺寸: 衣长82CM.胸围80内合适.腰围63CM.臀围86CM
S码尺寸: 衣长83CM.胸围84内合适.腰围67CM.臀围90CM
M码尺寸: 衣长84CM.胸围88内合适.腰围71CM.臀围94CM
L码尺寸: 衣长85CM.胸围92内合适.腰围75CM.臀围98CM
(测量单位是CM,每个人的测量方式不一样,测量的尺寸数据可能会有1~3厘米的差异,请MM们谅解哦)
PS:常规码数,可按平时号选择哦。修身版型,如果腰粗可以适当考虑大1号哦~
大圆领,每个人的身材曲线不同,领口不会很平的哦,请谅解~
肩膀那有暗扣哦,可以很好的隐藏了内衣的肩带哦~袖子那略硬哦~




', '4', '0', '4', '', '/static/upload/images/goods/2019/01/14/1547455566118614.jpg', '0', '1547455700', '1547455700'), ('12', '2', 'ZK星星绣花雪纺连衣裙中长款sukol裙少女心温柔超仙女chic裙子夏', '', 'xxxxhhhhhh商品型号', '0', '246', '件', '/static/upload/images/goods/2019/01/14/1547455890402147.jpg', '150.00-188.00', '150.00', '188.00', '118.00-128.00', '118.00', '128.00', '3', '1', '0', '1', '1', '1', '



', '3', '0', '11', '', '/static/upload/images/goods/2019/01/14/1547455890402147.jpg', '0', '1547456230', '1551064315');
COMMIT;
-- ----------------------------
@@ -588,13 +586,13 @@ CREATE TABLE `s_message` (
`add_time` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '添加时间',
PRIMARY KEY (`id`),
KEY `user_id` (`user_id`)
-) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='消息';
+) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='消息';
-- ----------------------------
-- Records of `s_message`
-- ----------------------------
BEGIN;
-INSERT INTO `s_message` VALUES ('1', '92', '积分变动', '登录奖励积分积分增加5', '0', '0', '0', '0', '0', '0', '1551174252');
+INSERT INTO `s_message` VALUES ('1', '92', '积分变动', '登录奖励积分积分增加5', '0', '0', '0', '0', '0', '0', '1551174252'), ('2', '77', '积分变动', '登录奖励积分积分增加5', '0', '0', '0', '0', '0', '0', '1551192116');
COMMIT;
-- ----------------------------
@@ -825,13 +823,13 @@ CREATE TABLE `s_plugins` (
PRIMARY KEY (`id`),
UNIQUE KEY `plugins` (`plugins`),
KEY `is_enable` (`is_enable`)
-) ENGINE=InnoDB AUTO_INCREMENT=20 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='应用';
+) ENGINE=InnoDB AUTO_INCREMENT=21 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='应用';
-- ----------------------------
-- Records of `s_plugins`
-- ----------------------------
BEGIN;
-INSERT INTO `s_plugins` VALUES ('1', 'commontopmaxpicture', '{\"images\":\"\\/static\\/upload\\/images\\/plugins_commontopmaxpicture\\/2019\\/02\\/09\\/1549671733978860.jpg\",\"bg_color\":\"#ce0000\",\"url\":\"https:\\/\\/shopxo.net\\/\",\"is_new_window_open\":\"1\",\"is_overall\":\"1\",\"time_start\":\"\",\"time_end\":\"\",\"pluginsname\":\"commontopmaxpicture\",\"pluginscontrol\":\"admin\",\"pluginsaction\":\"save\"}', '1', '1550145321', '1550461322'), ('2', 'commontopnotice', '{\"content\":\"\\u6b22\\u8fce\\u6765\\u5230ShopXO\\u4f01\\u4e1a\\u7ea7B2C\\u5f00\\u6e90\\u7535\\u5546\\u7cfb\\u7edf\\u3001\\u6f14\\u793a\\u7ad9\\u70b9\\u8bf7\\u52ff\\u53d1\\u8d77\\u652f\\u4ed8\\u3001\\u4ee5\\u514d\\u7ed9\\u60a8\\u5e26\\u6765\\u4e0d\\u5fc5\\u8981\\u7684\\u8d22\\u4ea7\\u635f\\u5931\\u3002\",\"is_overall\":\"1\",\"time_start\":\"\",\"time_end\":\"\",\"pluginsname\":\"commontopnotice\",\"pluginscontrol\":\"admin\",\"pluginsaction\":\"save\"}', '1', '1550156571', '1550461635'), ('3', 'usercentertopnotice', '{\"content\":\"\\u7528\\u6237\\u4e2d\\u5fc3\\u516c\\u544a\",\"time_start\":\"\",\"time_end\":\"\",\"pluginsname\":\"usercentertopnotice\",\"pluginscontrol\":\"admin\",\"pluginsaction\":\"save\"}', '1', '1550157860', '1550461859'), ('14', 'userloginrewardintegral', '{\"give_integral\":\"5\",\"is_day_once\":\"1\",\"time_start\":\"\",\"time_end\":\"\",\"pluginsname\":\"userloginrewardintegral\",\"pluginscontrol\":\"admin\",\"pluginsaction\":\"save\"}', '1', '1550151175', '1550461995'), ('15', 'commongobacktop', '{\"images\":\"\\/static\\/upload\\/images\\/plugins_commongobacktop\\/2019\\/02\\/15\\/1550210425433304.png\",\"is_overall\":\"1\",\"pluginsname\":\"commongobacktop\",\"pluginscontrol\":\"admin\",\"pluginsaction\":\"save\"}', '0', '1550200998', '1550468447'), ('16', 'commonrightnavigation', '{\"weixin_mini_qrcode_images\":\"\\/static\\/upload\\/images\\/plugins_commonrightnavigation\\/2019\\/02\\/17\\/1550375588899802.jpeg\",\"is_new_window_open\":\"0\",\"is_overall\":\"1\",\"is_goods_page_show_cart\":\"1\",\"pluginsname\":\"commonrightnavigation\",\"pluginscontrol\":\"admin\",\"pluginsaction\":\"save\"}', '1', '1550222925', '1550464997'), ('17', 'commononlineservice', '{\"title\":\"ShopXO\\u5728\\u7ebf\\u5ba2\\u670d\",\"online_service\":\"\\u552e\\u524d|386392432\\n\\u552e\\u540e|386392432\",\"tel\":\"021-88888888\",\"is_overall\":\"1\",\"bg_color\":\"\",\"distance_top\":\"3\",\"pluginsname\":\"commononlineservice\",\"pluginscontrol\":\"admin\",\"pluginsaction\":\"save\"}', '1', '1550393304', '1550544406');
+INSERT INTO `s_plugins` VALUES ('1', 'commontopmaxpicture', '{\"images\":\"\\/static\\/upload\\/images\\/plugins_commontopmaxpicture\\/2019\\/02\\/09\\/1549671733978860.jpg\",\"bg_color\":\"#ce0000\",\"url\":\"https:\\/\\/shopxo.net\\/\",\"is_new_window_open\":\"1\",\"is_overall\":\"1\",\"time_start\":\"\",\"time_end\":\"\",\"pluginsname\":\"commontopmaxpicture\",\"pluginscontrol\":\"admin\",\"pluginsaction\":\"save\"}', '1', '1550145321', '1551191935'), ('2', 'commontopnotice', '{\"content\":\"\\u6b22\\u8fce\\u6765\\u5230ShopXO\\u4f01\\u4e1a\\u7ea7B2C\\u5f00\\u6e90\\u7535\\u5546\\u7cfb\\u7edf\\u3001\\u6f14\\u793a\\u7ad9\\u70b9\\u8bf7\\u52ff\\u53d1\\u8d77\\u652f\\u4ed8\\u3001\\u4ee5\\u514d\\u7ed9\\u60a8\\u5e26\\u6765\\u4e0d\\u5fc5\\u8981\\u7684\\u8d22\\u4ea7\\u635f\\u5931\\u3002\",\"is_overall\":\"1\",\"time_start\":\"\",\"time_end\":\"\",\"pluginsname\":\"commontopnotice\",\"pluginscontrol\":\"admin\",\"pluginsaction\":\"save\"}', '1', '1550156571', '1551191934'), ('3', 'usercentertopnotice', '{\"content\":\"\\u7528\\u6237\\u4e2d\\u5fc3\\u516c\\u544a\",\"time_start\":\"\",\"time_end\":\"\",\"pluginsname\":\"usercentertopnotice\",\"pluginscontrol\":\"admin\",\"pluginsaction\":\"save\"}', '1', '1550157860', '1551191932'), ('14', 'userloginrewardintegral', '{\"give_integral\":\"5\",\"is_day_once\":\"1\",\"time_start\":\"\",\"time_end\":\"\",\"pluginsname\":\"userloginrewardintegral\",\"pluginscontrol\":\"admin\",\"pluginsaction\":\"save\"}', '1', '1550151175', '1551191930'), ('15', 'commongobacktop', '{\"images\":\"\\/static\\/upload\\/images\\/plugins_commongobacktop\\/2019\\/02\\/15\\/1550210425433304.png\",\"is_overall\":\"1\",\"pluginsname\":\"commongobacktop\",\"pluginscontrol\":\"admin\",\"pluginsaction\":\"save\"}', '0', '1550200998', '1551191928'), ('16', 'commonrightnavigation', '{\"weixin_mini_qrcode_images\":\"\\/static\\/upload\\/images\\/plugins_commonrightnavigation\\/2019\\/02\\/17\\/1550375588899802.jpeg\",\"is_new_window_open\":\"0\",\"is_overall\":\"1\",\"is_goods_page_show_cart\":\"1\",\"pluginsname\":\"commonrightnavigation\",\"pluginscontrol\":\"admin\",\"pluginsaction\":\"save\"}', '1', '1550222925', '1551191927'), ('17', 'commononlineservice', '{\"title\":\"ShopXO\\u5728\\u7ebf\\u5ba2\\u670d\",\"online_service\":\"\\u552e\\u524d|386392432\\n\\u552e\\u540e|386392432\",\"tel\":\"021-88888888\",\"is_overall\":\"1\",\"bg_color\":\"\",\"distance_top\":\"3\",\"pluginsname\":\"commononlineservice\",\"pluginscontrol\":\"admin\",\"pluginsaction\":\"save\"}', '1', '1550393304', '1551191925'), ('20', 'usernotloginhidegoodsprice', '{\"original_price_placeholder\":\"\",\"price_placeholder\":\"\\u767b\\u5f55\\u540e\\u53ef\\u89c1\",\"pluginsname\":\"usernotloginhidegoodsprice\",\"pluginscontrol\":\"admin\",\"pluginsaction\":\"save\"}', '1', '1551184852', '1551191908');
COMMIT;
-- ----------------------------
@@ -1075,7 +1073,7 @@ CREATE TABLE `s_user` (
-- Records of `s_user`
-- ----------------------------
BEGIN;
-INSERT INTO `s_user` VALUES ('77', '', '', '', '0', '430953', '13ee29b2b06000b088a07cf36e7062f7', '', '龚哥哥', '13250814883', '', '2', 'https://tfs.alipayobjects.com/images/partner/T10d8lXm4dXXXXXXXX', '上海', '上海市', '1540915200', '', '982', '0', '0', '0', '0', '1551173481'), ('90', '2088502175420842', '', '', '0', '208731', '9fff3059357fafcb709b6288a412e54a', '', '魔鬼', '17688888888', '', '2', '', '上海', '上海市', '666201600', '', '45', '0', '0', '0', '1539167253', '1551174265'), ('92', '', '', '', '3', '802141', '1809ca664268370c783732f9146e7d6d', '', '', '', 'fuxiang.gong@qq.com', '0', '', '', '', '0', '', '5', '0', '0', '0', '1551173897', '1551174462');
+INSERT INTO `s_user` VALUES ('77', '', '', '', '0', '277585', 'c34289bfdf655809f384bcfcd2606b24', '', '龚哥哥', '13250814883', '', '2', 'https://tfs.alipayobjects.com/images/partner/T10d8lXm4dXXXXXXXX', '上海', '上海市', '1540915200', '', '987', '0', '0', '0', '0', '1551192189'), ('90', '2088502175420842', '', '', '0', '208731', '9fff3059357fafcb709b6288a412e54a', '', '魔鬼', '17688888888', '', '2', '', '上海', '上海市', '666201600', '', '45', '0', '0', '0', '1539167253', '1551174265'), ('92', '', '', '', '3', '802141', '1809ca664268370c783732f9146e7d6d', '', '', '', 'fuxiang.gong@qq.com', '0', '', '', '', '0', '', '5', '0', '0', '0', '1551173897', '1551174462');
COMMIT;
-- ----------------------------
@@ -1118,13 +1116,6 @@ CREATE TABLE `s_user_integral_log` (
`add_time` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '添加时间',
PRIMARY KEY (`id`),
KEY `user_id` (`user_id`)
-) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='用户积分日志';
-
--- ----------------------------
--- Records of `s_user_integral_log`
--- ----------------------------
-BEGIN;
-INSERT INTO `s_user_integral_log` VALUES ('1', '92', '1', '0', '5', '登录奖励积分', '0', '1551174252');
-COMMIT;
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='用户积分日志';
SET FOREIGN_KEY_CHECKS = 1;
diff --git a/public/static/index/default/css/goods.css b/public/static/index/default/css/goods.css
index 71d3f45e1..cb1788567 100755
--- a/public/static/index/default/css/goods.css
+++ b/public/static/index/default/css/goods.css
@@ -381,7 +381,7 @@ li.am-comment{ width:100%}
.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 dt {width: 70px;float:left;text-align: left;}
- .sys_item_price{font-size: 24px;font-weight: bold;}
+ .sys_item_price{font-size: 24px;font-weight: bold; line-height: 16px;}
.sys_item_mktprice{font-size:14px ;}
diff --git a/public/static/plugins/css/usernotloginhidegoodsprice/admin.css b/public/static/plugins/css/usernotloginhidegoodsprice/admin.css
new file mode 100755
index 000000000..051871969
--- /dev/null
+++ b/public/static/plugins/css/usernotloginhidegoodsprice/admin.css
@@ -0,0 +1,15 @@
+/**
+ * 首页
+ */
+.usernotloginhidegoodsprice-content .items {
+ margin: 10px 0 20px 0;
+ border-bottom: 1px dashed #f1f1f1;
+ padding-bottom: 20px;
+}
+.usernotloginhidegoodsprice-content .items .empty-text {
+ color: #ccc;
+}
+
+.usernotloginhidegoodsprice-content .edit-submit {
+ margin-bottom: 20px;
+}
\ No newline at end of file
diff --git a/public/static/upload/images/plugins_usernotloginhidegoodsprice/2019/02/26/1551184745400164.png b/public/static/upload/images/plugins_usernotloginhidegoodsprice/2019/02/26/1551184745400164.png
new file mode 100644
index 0000000000000000000000000000000000000000..ee6152f1bfeefb3eaece74085696625e5c992843
GIT binary patch
literal 6912
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
an0rv%@J|fkJp3Wq!ckY&R;pL9iT)o#>>3vU
literal 0
HcmV?d00001