diff --git a/MySQL_change.sql b/MySQL_change.sql
index 0a3a808..5b82251 100644
--- a/MySQL_change.sql
+++ b/MySQL_change.sql
@@ -152,3 +152,15 @@ ALTER TABLE `specials`
# 14:15 2021/8/25
ALTER TABLE `messages`
DROP COLUMN `is_read`;
+
+# 14:34 2021/8/25
+ALTER TABLE `agent_products`
+ ADD COLUMN `is_rec` TINYINT NOT NULL DEFAULT 0 COMMENT '是否推荐,推荐后在我的下文显示,0:未推荐;1:推荐;' AFTER `verifier`;
+
+# 16:35 2021/8/25
+ALTER TABLE `agent_products`
+ ADD COLUMN `type` TINYINT(3) NOT NULL DEFAULT '0' COMMENT '0:单品销售;1:组合销售;' AFTER `is_rec`,
+ ADD COLUMN `title` VARCHAR(255) NOT NULL COMMENT '标题' COLLATE 'utf8_general_ci' AFTER `type`,
+ ADD COLUMN `pictures` TEXT NOT NULL COMMENT '产品图片,可能有多张,JSON格式' COLLATE 'utf8_general_ci' AFTER `title`,
+ ADD COLUMN `know` TEXT NULL DEFAULT NULL COMMENT '旅客须知' COLLATE 'utf8_general_ci' AFTER `pictures`,
+ ADD COLUMN `content` MEDIUMTEXT NULL DEFAULT NULL COMMENT '产品详情' COLLATE 'utf8_general_ci' AFTER `know`;
diff --git a/app/Admin/Controllers/SupplierController.php b/app/Admin/Controllers/SupplierController.php
index ae3e08f..a0cb945 100644
--- a/app/Admin/Controllers/SupplierController.php
+++ b/app/Admin/Controllers/SupplierController.php
@@ -4,7 +4,9 @@ namespace App\Admin\Controllers;
use App\Admin\Extensions\Grid\AuditSupplier;
use App\Admin\Repositories\Supplier;
+use App\Common\ProductStatus;
use App\Common\UserStatus;
+use App\Models\Product;
use Dcat\Admin\Form;
use Dcat\Admin\Grid;
use Dcat\Admin\Show;
@@ -116,6 +118,7 @@ class SupplierController extends AdminController
$form->select('status', '状态')
->options(UserStatus::array())
->default(UserStatus::NORMAL)
+ ->help('如果禁用供应商将同时下架供应商的所有产品,需要供应商手动上架后才能销售,请谨慎!')
->required();
$form->text('company_name');
$form->image('logo');
@@ -123,6 +126,8 @@ class SupplierController extends AdminController
$form->image('license_pic');
$form->text('director');
$form->mobile('contact_phone');
+ })->editing(function (Form $form) {
+ $form->responseValidationMessages('111111111111111111111', 'title格式错误');
})->saving(function (Form $form) {
//判断账号是否唯一
if ($form->isCreating()) {
@@ -142,6 +147,11 @@ class SupplierController extends AdminController
$form->$k = '';
}
}
+ })->saved(function (Form $form) {
+ //禁用供应商将下架所有供应商的产品
+ if ($form->status == UserStatus::DISABLED) {
+ Product::where('supplier_id', $form->getKey())->update(['status' => ProductStatus::SOLD_OUT]);
+ }
});
}
}
diff --git a/app/AdminAgent/Controllers/AgentProductController.php b/app/AdminAgent/Controllers/AgentProductController.php
index 0341e4e..854a69a 100644
--- a/app/AdminAgent/Controllers/AgentProductController.php
+++ b/app/AdminAgent/Controllers/AgentProductController.php
@@ -21,7 +21,6 @@ use Dcat\Admin\Grid;
use Dcat\Admin\Show;
use Dcat\Admin\Http\Controllers\AdminController;
use Dcat\Admin\Widgets\Alert;
-use Dcat\Admin\Widgets\Table;
class AgentProductController extends AdminController
{
@@ -37,9 +36,22 @@ class AgentProductController extends AdminController
$grid->model()->where('agent_id', $agent_id);
$grid->column('id')->sortable();
- $grid->column('product.picture', '产品图片')->image('', 60, 60);
- $grid->column('product.title', '产品名称')->limit(15);
- $grid->column('product_ids', '产品详情')
+ $grid->column('picture', '产品图片')->image('', 60, 60);
+ $grid->column('title', '产品名称')->limit(15);
+ $grid->column('price');
+ $grid->column('original_price');
+ $grid->column('sale');
+ $grid->column('stock');
+
+ $channels = Channel::where('agent_id', $agent_id)->pluck('name', 'id')->toArray();
+ $grid->column('channel_id', '频道')
+ ->display(function ($modal) use ($channels) {
+ $data = array_flip(explode(',', $this->channel_id));
+ return join(',',array_intersect_key($channels, $data));
+ })
+ ->limit(10);
+ $grid->column('category.name', '分类');
+ /*$grid->column('product_ids', '产品详情')
->display('查看')
->modal(function ($modal) {
$titles = ['供应商', '产品标题', '产品图片', '原价', '现价', '销量', '库存'];
@@ -56,20 +68,8 @@ class AgentProductController extends AdminController
$this->product->stock ?? '',
]];
return Table::make($titles, $data);
- });
- $grid->column('price');
- $grid->column('original_price');
- $grid->column('sale');
- $grid->column('stock');
+ });*/
- $channels = Channel::where('agent_id', $agent_id)->pluck('name', 'id')->toArray();
- $grid->column('channel_id', '频道')
- ->display(function ($modal) use ($channels) {
- $data = array_flip(explode(',', $this->channel_id));
- return join(',',array_intersect_key($channels, $data));
- })
- ->limit(10);
- $grid->column('category.name', '分类');
$grid->column('status')
->using(ProductStatus::array())
->dot([
@@ -78,7 +78,7 @@ class AgentProductController extends AdminController
ProductStatus::REFUSE => 'danger',
ProductStatus::SOLD_OUT => 'warning',
], 'primary');
- $grid->column('created_at');
+ $grid->column('is_rec')->switch()->help('推荐后将在“我的”页面下方显示');
$grid->column('updated_at');
$grid->filter(function (Grid\Filter $filter) {
@@ -125,6 +125,11 @@ class AgentProductController extends AdminController
if (Admin::user()->type == AgentType::CLUSTER) {
$show->field('guide.name', '地接');
}
+ $show->field('is_rec')->using(['未推荐', '已推荐']);
+ $show->field('title');
+ $show->field('pictures')->image('', 80, 80);
+ $show->field('know')->unescape();
+ $show->field('content')->unescape();
$show->field('created_at');
$show->field('updated_at');
@@ -150,7 +155,7 @@ class AgentProductController extends AdminController
*/
protected function form()
{
- return Form::make(new AgentProduct(['product:id,title']), function (Form $form) {
+ return Form::make(new AgentProduct(), function (Form $form) {
$agent_id = Admin::user()->id;
//不允许查看非自己的数据
@@ -159,25 +164,36 @@ class AgentProductController extends AdminController
}
$form->display('id');
- $form->hidden('product_id');
- $form->selectTable('product_id', '封面产品')
- ->help('产品列表显示的是该产品的标题和图片')
- ->title('选择产品')
- ->dialogWidth('80%;min-width:825px;')
- ->from(SelectProduct::make())
- ->model(Product::class)
- ->required();
- $form->multipleSelectTable('product_ids', '选择产品')
- ->help('可单选或多选组合销售')
- ->title('选择产品')
- ->dialogWidth('80%;min-width:825px;')
- ->from(SelectProduct::make())
- ->model(Product::class)
- ->required();
+ $form->radio('type')
+ ->options(['单品销售', '组合销售'])
+ ->default(0)
+ ->when(0, function (Form $form) {
+ /** 单品销售 **/
+ $form->selectTable('product_id', '选择产品')
+ ->help('产品列表显示的是该产品的标题和图片')
+ ->title('选择产品')
+ ->dialogWidth('80%;min-width:825px;')
+ ->from(SelectProduct::make())
+ ->model(Product::class);
+ })->when(1, function (Form $form) {
+ /** 组合销售 **/
+ $form->multipleSelectTable('product_ids', '选择产品')
+ ->help('可单选或多选组合销售')
+ ->title('选择产品')
+ ->dialogWidth('80%;min-width:825px;')
+ ->from(SelectProduct::make())
+ ->model(Product::class);
+
+ /** 自定义内容 **/
+ $form->text('title');
+ $form->multipleImage('pictures');
+ $form->editor('know');
+ $form->editor('content');
+ });
$form->text('price')->required();
$form->text('original_price')->required();
$form->text('sale')->default(0);
- $form->text('stock')->default(9999);
+ $form->text('stock')->default(8888);
$options = Channel::selectOptions(fn($query) => $query->where('agent_id', $agent_id));
$form->multipleSelect('channel_id')->options(array_slice($options, 1));
@@ -194,6 +210,7 @@ class AgentProductController extends AdminController
ProductStatus::SOLD_OUT => '下架',
])
->required();
+ $form->switch('is_rec')->help('推荐后将在“我的”页面下方显示');
$form->selectTable('verifier')
->title('选择核销人员')
->dialogWidth('50%;min-width:600px;') //不起作用
@@ -216,26 +233,69 @@ class AgentProductController extends AdminController
return $form->response()->error('数据不存在');
}
- $agent_id = Admin::user()->id;
+ //推荐按钮开关
+ if ($form->product_id === null && $form->product_ids === null && $form->is_rec !== null) {
+ $form->model()->is_rec = $form->is_rec ? 1 : 0;
+ $form->model()->save();
+ return $form->response()->success('更新成功');
+ }
- $product_ids = explode(',', $form->product_ids);
- if (empty($product_ids)) {
- return $form->response()->error('请选择产品');
+ //单品销售
+ if ($form->type == 0) {
+ $form->product_id = (int)$form->product_id;
+ if (!$form->product_id) {
+ return $form->response()->error('请选择产品');
+ }
+ $form->product_ids = $form->product_id;
+
+ //将供应商产品写入title,pictures,know,content
+ $product = Product::find($form->product_id);
+ if ($product->status != ProductStatus::ON_SALE) {
+ return $form->response()->error('产品ID '. $form->product_id .' 已下架');
+ } else if ($product->stock < $form->stock) {
+ return $form->response()->error('库存不足,你设置的库存应小于等于' . $form->stock);
+ }
+ $form->title = $product->title;
+ $form->pictures = $product->pictures;
+ $form->know = $product->know;
+ $form->content = $product->content;
}
+ //组合销售
+ else if ($form->type == 1) {
+ if (!$form->product_ids) {
+ return $form->response()->error('请选择产品');
+ }
+ $product_ids = explode(',', $form->product_ids);
- //判断供应商产品是否存在或下架
- $not_in_id = Product::query()
- ->whereIn('id', $product_ids)
- ->where(function ($query) use ($form) {
- $query->where('status', '<>', ProductStatus::ON_SALE)
- ->orWhere('stock', '<', $form->stock);
- })
- ->pluck('id')
- ->toArray();
- if ($not_in_id) {
- return $form->response()->error('产品ID '. join(',', $not_in_id) .' 库存小于你设置的库存' . $form->stock . ',或不存在、已下架');
+ if (count($product_ids) < 2) {
+ return $form->response()->error('组合销售必须选择两个以上产品,否则请选择单品销售');
+ }
+ $form->product_id = $product_ids[0];
+
+ $required_fields = ['title', 'pictures', 'know', 'content'];
+ foreach ($required_fields as $field) {
+ if (!$form->$field) {
+ return $form->response()->error('内容输入不完整,标题、产品图片、旅游须知、产品详情必填');
+ }
+ }
+
+ //判断供应商产品是否存在或下架
+ $not_in_id = Product::query()
+ ->whereIn('id', $product_ids)
+ ->where(function ($query) use ($form) {
+ $query->where('status', '<>', ProductStatus::ON_SALE)
+ ->orWhere('stock', '<', $form->stock);
+ })
+ ->pluck('id')
+ ->toArray();
+ if ($not_in_id) {
+ return $form->response()->error('产品ID ' . join(',', $not_in_id) . ' 库存小于你设置的库存' . $form->stock . ',或不存在、已下架');
+ }
+ } else {
+ return $form->response()->error('不存在此销售方式');
}
+ $agent_id = Admin::user()->id;
//处理特殊字段
$form->hidden(['agent_id', 'status']); //表单没有的字段,必须加这句才能够重写
$form->agent_id = $agent_id;
diff --git a/app/AdminAgent/Controllers/SpecialController.php b/app/AdminAgent/Controllers/SpecialController.php
index 68978ec..8894a9c 100644
--- a/app/AdminAgent/Controllers/SpecialController.php
+++ b/app/AdminAgent/Controllers/SpecialController.php
@@ -31,16 +31,15 @@ class SpecialController extends AdminController
$grid->column('agent_product_id', '专题产品')
->display('查看')
->modal(function ($modal) use ($grid) {
- $data = AgentProduct::with('product:id,title,pictures')
- ->whereIn('id', $this->agent_product_id)
- ->get(['id', 'product_id', 'sale', 'stock']);
+ $data = AgentProduct::whereIn('id', $this->agent_product_id)
+ ->get(['id', 'product_id', 'sale', 'stock', 'title', 'pictures']);
$result = [];
$prefix = Storage::disk('public')->url('');
foreach ($data as $k => $v) {
$result[] = [
$v->id,
- $v->product->title,
- '
',
+ $v->title,
+ '
',
$v->sale,
$v->stock,
];
@@ -78,10 +77,9 @@ class SpecialController extends AdminController
$show->field('agent_product_id', '产品')
->unescape()
->as(function ($v) {
- $data = AgentProduct::with('product:id,title')
- ->whereIn('id', $v)
+ $data = AgentProduct::whereIn('id', $v)
->orderBy('id')->get(['id', 'product_id']);
- return join("
", $data->map(fn($v) => $v->product->title)->toArray());
+ return join("
", $data->map(fn($v) => $v->title)->toArray());
});
$show->field('created_at');
$show->field('updated_at');
@@ -111,17 +109,16 @@ class SpecialController extends AdminController
->from(SelectAgentProduct::make())
->options(function ($v) {
if (!$v) return [];
- $agent_product = AgentProduct::with('product:id,title')
- ->select(['id', 'product_id'])
+ $agent_product = AgentProduct::select(['id', 'product_id', 'title'])
->whereIn('id', $v)
->orderBy('id')->get();
$result = [];
foreach ($agent_product as $v) {
- $result[$v->id] = $v->product->title ?? '';
+ $result[$v->id] = $v->title ?? '';
}
return $result;
})
- ->pluck('product.title')
+ ->pluck('title', 'id')
->value(join(',', $form->model()->agent_product_id ?? []));
})->saving(function (Form $form) {
//不允许修改非自己的数据
diff --git a/app/AdminAgent/Controllers/UserController.php b/app/AdminAgent/Controllers/UserController.php
index ac410f0..e77faa9 100644
--- a/app/AdminAgent/Controllers/UserController.php
+++ b/app/AdminAgent/Controllers/UserController.php
@@ -37,7 +37,7 @@ class UserController extends AdminController
$grid->column('avatar')->image(60, 60);
$grid->column('mobile');
$grid->column('nickname');
- $grid->column('status')->switch();
+ $grid->column('status')->switch()->help('禁用后用户将无法登录');
$grid->column('is_verify')->switch();
$grid->column('created_at');
diff --git a/app/AdminAgent/Renderable/SelectAgentProduct.php b/app/AdminAgent/Renderable/SelectAgentProduct.php
index b4d480d..527910c 100644
--- a/app/AdminAgent/Renderable/SelectAgentProduct.php
+++ b/app/AdminAgent/Renderable/SelectAgentProduct.php
@@ -8,7 +8,7 @@ use Dcat\Admin\Grid;
use Dcat\Admin\Grid\LazyRenderable;
/**
- * 选择产品
+ * 选择代理商在售产品
* Class SelectProduct
* @package App\AdminAgent\Renderable
*/
@@ -19,19 +19,18 @@ class SelectAgentProduct extends LazyRenderable
// 获取外部传递的参数
// $id = $this->id;
Admin::translation('agent-product');
- return Grid::make(new AgentProduct(['product.supplier:id,name']), function (Grid $grid) {
+ return Grid::make(new AgentProduct(), function (Grid $grid) {
$grid->disableActions();
$grid->disableBatchDelete();
$grid->disableBatchActions();
$grid->model()->where('stock', '>', 0)
->where(['agent_id' => Admin::user()->id, 'status' => ProductStatus::ON_SALE]);
- $grid->quickSearch(['product.title', 'product.supplier.name'])->placeholder('搜索产品名称、供应商');
+ $grid->quickSearch(['title'])->placeholder('搜索产品名称');
$grid->column('id');
- $grid->column('product.supplier.name');
- $grid->column('product.title');
- $grid->column('product.picture')->image(60, 60);
+ $grid->column('title');
+ $grid->column('picture')->image(60, 60);
$grid->column('sale');
$grid->column('stock');
$grid->column('updated_at');
@@ -39,8 +38,9 @@ class SelectAgentProduct extends LazyRenderable
$grid->paginate(15);
$grid->filter(function (Grid\Filter $filter) {
- $filter->like('product.title')->width(4);
- $filter->like('product.supplier.name', '供应商名称')->width(4);
+ $filter->panel();
+
+ $filter->like('title')->width(4);
});
});
}
diff --git a/app/AdminAgent/routes.php b/app/AdminAgent/routes.php
index 8f26883..34318d8 100644
--- a/app/AdminAgent/routes.php
+++ b/app/AdminAgent/routes.php
@@ -28,4 +28,5 @@ Route::group([
$router->resource('agent_info', 'AgentInfoController');
$router->resource('supplier/list', 'SupplierController');
$router->resource('article/list', 'ArticleController');
+ $router->resource('setting', 'SettingController');
});
diff --git a/app/Http/Controllers/Api/AgentProductController.php b/app/Http/Controllers/Api/AgentProductController.php
index 662f341..7418764 100644
--- a/app/Http/Controllers/Api/AgentProductController.php
+++ b/app/Http/Controllers/Api/AgentProductController.php
@@ -25,7 +25,7 @@ class AgentProductController extends Controller
$where['agent_id'] = $this->agent_id;
- $list = AgentProduct::list()->where($where)->simplePaginate();
+ $list = AgentProduct::list()->where($where)->orderBy('id', 'DESC')->simplePaginate();
$list = $this->paginatePicAddHost($list);
$list = $this->insertAd($list);
@@ -70,7 +70,7 @@ class AgentProductController extends Controller
// 猜你喜欢
public function guessLike()
{
- $list = AgentProduct::list()->where('agent_id', $this->agent_id)->simplePaginate();
+ $list = AgentProduct::list()->where('agent_id', $this->agent_id)->orderBy('id', 'DESC')->simplePaginate();
$list = $this->paginatePicAddHost($list);
$list = $list->toArray();
if (!empty($list['data']) && is_array($list['data'])) {
@@ -84,14 +84,18 @@ class AgentProductController extends Controller
//【我的】页面下方推荐
public function recommendList()
{
- //TODO 推荐数据暂时使用产品列表,后期需要通过后台设置获取或根据用户购买过的关键词获取
- return $this->index();
+ $list = AgentProduct::list()->where(['agent_id' => $this->agent_id, 'is_rec' => 1])
+ ->orderBy('id', 'DESC')->simplePaginate();
+ $list = $this->paginatePicAddHost($list);
+ $list = $this->insertAd($list);
+
+ return $this->success($list);
}
//人气爆款列表,销量排序
public function hotList()
{
- $list = AgentProduct::list()->where('agent_id', $this->agent_id)->simplePaginate();
+ $list = AgentProduct::list()->where('agent_id', $this->agent_id)->orderBy('id', 'DESC')->simplePaginate();
$list = $this->paginatePicAddHost($list);
$list = $this->insertAd($list);
diff --git a/app/Http/Controllers/Api/ChannelController.php b/app/Http/Controllers/Api/ChannelController.php
index f653a67..0a36a2d 100644
--- a/app/Http/Controllers/Api/ChannelController.php
+++ b/app/Http/Controllers/Api/ChannelController.php
@@ -5,7 +5,6 @@ use App\Http\Controllers\Controller;
use App\Models\AgentProduct;
use App\Models\Channel;
use App\Models\UserChannel;
-use Illuminate\Support\Facades\DB;
/**
* 频道列表
@@ -38,10 +37,8 @@ class ChannelController extends Controller
{
$channel_id = (int)request()->input('channel_id');
- $list = AgentProduct::where('agent_id', $this->agent_id)
+ $list = AgentProduct::list()->where('agent_id', $this->agent_id)
->whereRaw("FIND_IN_SET($channel_id, `channel_id`)")
- ->with('product:id,title,pictures')
- ->select('id', 'sale', 'product_id', 'price', 'original_price')
->orderBy('id', 'DESC')
->simplePaginate();
return $this->success($list);
diff --git a/app/Http/Controllers/Api/IndexController.php b/app/Http/Controllers/Api/IndexController.php
index f7e5212..10c2a0e 100644
--- a/app/Http/Controllers/Api/IndexController.php
+++ b/app/Http/Controllers/Api/IndexController.php
@@ -82,9 +82,7 @@ class IndexController extends Controller
}
# 人气爆款
- $hots = AgentProduct::with('product:id,title,pictures') //必须查询ID才能正常查询
- ->where('agent_id', $this->agent_id)
- ->select('id', 'sale', 'product_id', 'price', 'original_price') //必须查询product_id才能with
+ $hots = AgentProduct::list()->where('agent_id', $this->agent_id)
->orderBy('sale', 'desc')->orderBy('id', 'desc')
->limit(6)->get();
if (!$hots->isEmpty()) {
diff --git a/app/Http/Controllers/Api/SpecialController.php b/app/Http/Controllers/Api/SpecialController.php
index 73e0def..310a1bd 100644
--- a/app/Http/Controllers/Api/SpecialController.php
+++ b/app/Http/Controllers/Api/SpecialController.php
@@ -18,7 +18,7 @@ class SpecialController extends Controller
$detail->product = AgentProduct::list()
->where('agent_id', $this->agent_id)
->whereIn('id', $detail->agent_product_id)
- ->limit(6)->get();
+ ->orderBy('id', 'DESC')->limit(6)->get();
unset($detail->agent_product_id);
return $this->success($detail);
diff --git a/app/Models/AgentProduct.php b/app/Models/AgentProduct.php
index 6138030..31ab5d2 100644
--- a/app/Models/AgentProduct.php
+++ b/app/Models/AgentProduct.php
@@ -59,6 +59,13 @@ class AgentProduct extends BaseModel
}
}
+ public function setPicturesAttribute($value)
+ {
+ if (is_array($value)) {
+ $this->attributes['pictures'] = json_encode(array_filter($value));
+ }
+ }
+
public function setProductIdsAttribute($value)
{
if (is_array($value)) {
@@ -66,6 +73,22 @@ class AgentProduct extends BaseModel
}
}
+ // 获取所有产品图片
+ public function getPicturesAttribute($value): array
+ {
+ if (is_string($value)) {
+ $value = $value ? json_decode($value, true) : [];
+ }
+ $this->append('picture');
+ return $value ?? [];
+ }
+
+ // 获取第一张产品图片
+ public function getPictureAttribute($value): string
+ {
+ return $this->pictures[0] ?? '';
+ }
+
//列表查询统一查询条件
public function scopeList($query)
{
@@ -74,7 +97,6 @@ class AgentProduct extends BaseModel
return $query->where('status', ProductStatus::ON_SALE)->where('stock', '>', 0);
})
->where('status', ProductStatus::ON_SALE)->where('stock', '>', 0)
- ->select('id', 'sale', 'product_id', 'price', 'original_price')
- ->orderBy('id', 'DESC');
+ ->select('id', 'sale', 'product_id', 'price', 'original_price');
}
}
diff --git a/app/Models/Product.php b/app/Models/Product.php
index b4e6a8d..9210efe 100644
--- a/app/Models/Product.php
+++ b/app/Models/Product.php
@@ -32,7 +32,14 @@ class Product extends BaseModel
return $this->pictures[0] ?? '';
}
- public function supplier()
+ public function setPicturesAttribute($value)
+ {
+ if (is_array($value)) {
+ $this->attributes['pictures'] = json_encode(array_filter($value));
+ }
+ }
+
+ public function supplier()
{
return $this->belongsTo(Supplier::class);
}
diff --git a/resources/lang/zh_CN/agent-product.php b/resources/lang/zh_CN/agent-product.php
index c5b61c3..2d914c6 100644
--- a/resources/lang/zh_CN/agent-product.php
+++ b/resources/lang/zh_CN/agent-product.php
@@ -15,6 +15,12 @@ return [
'category_id' => '分类',
'status' => '状态',
'verifier' => '核销人员',
+ 'is_rec' => '是否推荐',
+ 'title' => '标题',
+ 'content' => '产品详情',
+ 'know' => '旅游须知',
+ 'pictures' => '产品图片',
+ 'picture' => '产品图片',
'product' => trans('product.fields'),
],
'options' => [