diff --git a/MySQL_change.sql b/MySQL_change.sql
index b000d76..63dd0d6 100644
--- a/MySQL_change.sql
+++ b/MySQL_change.sql
@@ -200,4 +200,8 @@ CREATE TABLE `diy_form_fields` (
)
COMMENT='自定义表单字段'
COLLATE='utf8_general_ci'
-ENGINE=InnoDB;
\ No newline at end of file
+ENGINE=InnoDB;
+
+# 15:24 2021/10/9
+ALTER TABLE `categories`
+ DROP COLUMN `template`;
diff --git a/app/Admin/Actions/Grid/BatchAuditProduct.php b/app/Admin/Actions/Grid/BatchAuditProduct.php
new file mode 100644
index 0000000..14f165c
--- /dev/null
+++ b/app/Admin/Actions/Grid/BatchAuditProduct.php
@@ -0,0 +1,80 @@
+fullUrl();
+
+ return << {$this->title}
+HTML;//拒绝图标:fa-times-circle
+ }
+
+ /**
+ * Handle the action request.
+ *
+ * @param Request $request
+ *
+ * @return Response
+ */
+ public function handle(Request $request)
+ {
+ return $this->response()
+ ->success('Processed successfully: '.json_encode($this->getKey()))
+ ->redirect('/');
+ }
+
+ /**
+ * @return string|array|void
+ */
+ public function confirm()
+ {
+ // return ['Confirm?', 'contents'];
+ }
+
+ /**
+ * @param Model|Authenticatable|HasPermissions|null $user
+ *
+ * @return bool
+ */
+ protected function authorize($user): bool
+ {
+ return true;
+ }
+
+ /**
+ * @return array
+ */
+ protected function parameters()
+ {
+ return [];
+ }
+}
diff --git a/app/Admin/Controllers/AgentController.php b/app/Admin/Controllers/AgentController.php
index 7775137..9067435 100644
--- a/app/Admin/Controllers/AgentController.php
+++ b/app/Admin/Controllers/AgentController.php
@@ -3,14 +3,9 @@
namespace App\Admin\Controllers;
use App\Admin\Extensions\Grid\AuditAgent;
-use App\Admin\Extensions\Grid\MiniProgramAuditStatus;
-use App\Admin\Extensions\Grid\MiniProgramPull;
-use App\Admin\Extensions\Grid\MiniProgramReg;
-use App\Admin\Extensions\Grid\MiniProgramUpload;
use App\Admin\Repositories\Agent;
use App\Common\AgentType;
use App\Common\UserStatus;
-use App\Models\MiniProgramTemplate;
use App\Models\Supplier;
use Dcat\Admin\Form;
use Dcat\Admin\Grid;
@@ -32,8 +27,6 @@ class AgentController extends AdminController
$grid->disableDeleteButton();
$grid->disableRowSelector();
- $grid->tools(new MiniProgramPull('更新小程序模板'));
-
//如果是审核页面,多加where条件判断
if (strpos(Route::current()->uri, 'audit')) {
$grid->model()->where('status', UserStatus::UNAUDITED);
@@ -42,7 +35,6 @@ class AgentController extends AdminController
$grid->column('id')->sortable();
$grid->column('username');
- $grid->column('name');
$grid->column('type')->using(AgentType::array());
$grid->column('company_name');
$grid->column('logo')->image('', 60, 60);
@@ -53,10 +45,7 @@ class AgentController extends AdminController
//$grid->column('rate')->editable()->help('分成百分比,如10%,则输入10');
$grid->column('created_at');
- $last_template_id = MiniProgramTemplate::max('template_id');
$grid->column('status', '状态')
- ->style('min-width:7em;')
- ->help('新用户入驻时,请先注册小程序。待企业法人认证通过之后,再上传小程序即可')
->using(UserStatus::array())
->dot([
UserStatus::NORMAL => 'success',
@@ -69,35 +58,13 @@ class AgentController extends AdminController
->then(function ($column) {
$column->append((new AuditAgent(null, 1))->setKey($this->id))->append(' ');
$column->append((new AuditAgent(null, 2))->setKey($this->id));
- })
- ->if(fn() => $this->status == UserStatus::NORMAL && in_array($this->type, [AgentType::OPERATOR, AgentType::SUPPLIER]))
- ->display('')
- ->then(function ($column) use ($last_template_id) {
- $is_success = $this->miniUpload->is_success ?? null;
- $template_id = $this->miniUpload->template_id ?? null;
-
- if (empty($this->appid)) { //注册小程序
- $column->append((new MiniProgramReg(null, 1))->setKey($this->id))->append(' ');
- $column->append((new MiniProgramReg(null, 2))->setKey($this->id));
- } else if ($is_success === 0 && $template_id === $last_template_id) {
- $column->append("已发布(模板:{$template_id})");
- } else if (in_array($is_success, [-1, 2, 4])) { //如果状态是-1未检查过,或2审核中,或4审核延后,则显示审核状态按钮
- $column->append((new MiniProgramAuditStatus(null, 1))->setKey($this->id))->append(' ');
- $column->append((new MiniProgramAuditStatus(null, 2))->setKey($this->id));
- } else {
- $column->append((new MiniProgramUpload(null, 1))->setKey($this->id));
- $statusArr = [0 => '审核成功', 1 => '审核被拒绝', 2 => '审核中', 3 => '已撤回', 4 => '审核延后'];
- if (isset($is_success, $statusArr[$is_success])) {
- $column->append('
(模板' . $template_id . $statusArr[$is_success] . ')');
- }
- }
});
- $grid->filter(function ($filter) {
+ $grid->filter(function (Grid\Filter $filter) {
$filter->panel();
$filter->equal('id')->width(2);
- $filter->like('name')->width(3);
+ $filter->like('company_name')->width(3);
$filter->equal('status', '用户状态')->select(UserStatus::array())->width(2);
});
});
diff --git a/app/Admin/Controllers/AgentStatisticsController.php b/app/Admin/Controllers/AgentStatisticsController.php
index fa79cef..9b6016f 100755
--- a/app/Admin/Controllers/AgentStatisticsController.php
+++ b/app/Admin/Controllers/AgentStatisticsController.php
@@ -20,6 +20,7 @@ class AgentStatisticsController extends AdminController
Admin::style(
<< .content-wrapper > .content-header{display: none}
+ #date_time .block > div{display:inline-block;}
.col-sm-12.d-flex{
display: inline-block !important;
}
diff --git a/app/Admin/Controllers/CategoryController.php b/app/Admin/Controllers/CategoryController.php
index f845cbe..fc5fe97 100644
--- a/app/Admin/Controllers/CategoryController.php
+++ b/app/Admin/Controllers/CategoryController.php
@@ -41,7 +41,6 @@ class CategoryController extends AdminController
$grid->column('pid');
$grid->column('name');
$grid->column('sort');
- $grid->column('template');
});
}
@@ -59,7 +58,6 @@ class CategoryController extends AdminController
$show->field('pid');
$show->field('name');
$show->field('sort');
- $show->field('template');
});
}
diff --git a/app/Admin/Controllers/DemandProductController.php b/app/Admin/Controllers/DemandProductController.php
index d8ee9ee..7e8f20a 100644
--- a/app/Admin/Controllers/DemandProductController.php
+++ b/app/Admin/Controllers/DemandProductController.php
@@ -23,7 +23,7 @@ class DemandProductController extends AdminController
*/
protected function grid()
{
- return Grid::make(new DemandProduct(['supplier:id,name', 'category:id,name']), function (Grid $grid) {
+ return Grid::make(new DemandProduct(['supplier:id,company_name', 'category:id,name']), function (Grid $grid) {
$grid->disableCreateButton();
//如果是审核页面,多加where条件判断
if (strpos(Route::current()->uri, 'audit')) {
@@ -35,7 +35,7 @@ class DemandProductController extends AdminController
$grid->column('picture')->image('', 60, 60);
$grid->column('title');
//$grid->column('sale');
- $grid->column('supplier.name', '供应商');
+ $grid->column('supplier.company_name', '供应商');
$grid->column('status')
->if(fn() => $this->status == ProductStatus::UNAUDITED)
->display('')
diff --git a/app/Admin/Controllers/IndustryOrderController.php b/app/Admin/Controllers/IndustryOrderController.php
index e0cec0a..8ab2053 100644
--- a/app/Admin/Controllers/IndustryOrderController.php
+++ b/app/Admin/Controllers/IndustryOrderController.php
@@ -2,10 +2,8 @@
namespace App\Admin\Controllers;
-use App\Admin\Extensions\Grid\IndustryOrderStatus;
use App\Admin\Repositories\IndustryOrder;
use App\Common\OrderStatus;
-use Dcat\Admin\Admin;
use Dcat\Admin\Form;
use Dcat\Admin\Grid;
use Dcat\Admin\Show;
@@ -20,7 +18,7 @@ class IndustryOrderController extends AdminController
*/
protected function grid()
{
- return Grid::make(new IndustryOrder(['agent:id,name']), function (Grid $grid) {
+ return Grid::make(new IndustryOrder(['agent:id,company_name']), function (Grid $grid) {
$grid->disableCreateButton();
$grid->disableRowSelector();
$grid->disableActions();
@@ -28,7 +26,7 @@ class IndustryOrderController extends AdminController
//$grid->model()->where('supplier_id', Admin::user()->id);
$grid->column('id')->sortable();
- $grid->column('agent.name', '代理商名称');
+ $grid->column('agent.company_name', '代理商名称');
$grid->column('order_no');
$grid->column('num');
$grid->column('price');
diff --git a/app/Admin/Controllers/IndustryProductController.php b/app/Admin/Controllers/IndustryProductController.php
index 326b4b6..b9520e7 100644
--- a/app/Admin/Controllers/IndustryProductController.php
+++ b/app/Admin/Controllers/IndustryProductController.php
@@ -24,7 +24,6 @@ class IndustryProductController extends AdminController
return Grid::make(new IndustryProduct(['category']), function (Grid $grid) {
$grid->disableCreateButton();
$grid->disableDeleteButton();
- $grid->disableEditButton();
//如果是审核页面,多加where条件判断
if (strpos(Route::current()->uri, 'audit')) {
@@ -75,12 +74,11 @@ class IndustryProductController extends AdminController
*/
protected function detail($id)
{
- return Show::make($id, new IndustryProduct(['category:id,name', 'supplier:id,name,contact_phone']), function (Show $show) {
+ return Show::make($id, new IndustryProduct(['category:id,name', 'supplier:id,company_name,contact_phone']), function (Show $show) {
$show->disableDeleteButton();
- $show->disableEditButton();
$show->field('id');
- $show->field('supplier.name', '供应商');
+ $show->field('supplier.company_name', '供应商');
$show->field('supplier.contact_phone', '供应商联系电话');
$show->field('category.name', '分类');
$show->field('type')->using(admin_trans('product.options.publish_type'));
@@ -108,12 +106,16 @@ class IndustryProductController extends AdminController
*/
protected function form()
{
- return Form::make(new IndustryProduct(['supplier:id,name', 'category:id,name']), function (Form $form) {
+ return Form::make(new IndustryProduct(), function (Form $form) {
$form->disableDeleteButton();
$form->display('id');
$form->select('status')->options(ProductStatus::array());
})->saving(function (Form $form) {
+ if (!is_null($form->status) && array_key_exists($form->status, ProductStatus::array())) {
+ $form->model()->update(['status' => $form->status]);
+ return $form->response()->success('操作成功!')->script('history.go(-1)');
+ }
return $form->response()->error('操作禁止!')->refresh(); //禁止编辑,如果非要编辑的话,记录冻结和解决交易金
})->deleting(function (Form $form) {
return $form->response()->error('操作禁止!')->refresh();
diff --git a/app/Admin/Controllers/MiniProgramController.php b/app/Admin/Controllers/MiniProgramController.php
new file mode 100644
index 0000000..804824f
--- /dev/null
+++ b/app/Admin/Controllers/MiniProgramController.php
@@ -0,0 +1,82 @@
+disableRowSelector();
+ $grid->disableCreateButton();
+ $grid->disableActions();
+
+ $grid->model()
+ ->whereIn('type', [AgentType::OPERATOR, AgentType::SUPPLIER])
+ ->where([['status', '=', UserStatus::NORMAL], ['id', '>', 1]]); //隐藏ID=1的领峰云管理员
+
+ $grid->tools(new MiniProgramPull('更新小程序模板'));
+
+ $grid->column('id')->sortable();
+ $grid->column('username');
+ $grid->column('appid');
+ $grid->column('name');
+ $grid->column('company_name');
+ $grid->column('created_at');
+
+ $last_template_id = MiniProgramTemplate::max('template_id');
+ $grid->column('op', '操作')
+ ->style('min-width:7em;')
+ ->help('新用户入驻时,请先注册小程序。待企业法人认证通过之后,并设置邮箱、头像、昵称等,再上传小程序即可')
+ ->if(fn() => true)
+ ->display('')
+ ->then(function ($column) use ($last_template_id) {
+ $is_success = $this->miniUpload->is_success ?? null;
+ $template_id = $this->miniUpload->template_id ?? null;
+
+ if (empty($this->appid)) { //注册小程序
+ $column->append((new MiniProgramReg(null, 1))->setKey($this->id))->append(' ');
+ $column->append((new MiniProgramReg(null, 2))->setKey($this->id));
+ } else if ($is_success === 0 && $template_id === $last_template_id) {
+ $column->append("已发布(模板:{$template_id})");
+ } else if (in_array($is_success, [-1, 2, 4])) { //如果状态是-1未检查过,或2审核中,或4审核延后,则显示审核状态按钮
+ $column->append((new MiniProgramAuditStatus(null, 1))->setKey($this->id))->append(' ');
+ $column->append((new MiniProgramAuditStatus(null, 2))->setKey($this->id));
+ } else {
+ $column->append((new MiniProgramUpload(null, 1))->setKey($this->id));
+ $statusArr = [0 => '审核成功', 1 => '审核被拒绝', 2 => '审核中', 3 => '已撤回', 4 => '审核延后'];
+ if (isset($is_success, $statusArr[$is_success])) {
+ $column->append('
(模板' . $template_id . $statusArr[$is_success] . ')');
+ }
+ }
+ });
+
+ $grid->filter(function (Grid\Filter $filter) {
+ $filter->panel();
+
+ $filter->equal('id')->width(2);
+ $filter->like('name')->width(3);
+ $filter->like('company_name')->width(3);
+ });
+ });
+ }
+}
diff --git a/app/Admin/Controllers/OrderController.php b/app/Admin/Controllers/OrderController.php
index d787bcf..bd111e6 100644
--- a/app/Admin/Controllers/OrderController.php
+++ b/app/Admin/Controllers/OrderController.php
@@ -23,9 +23,9 @@ class OrderController extends AdminController
protected function grid()
{
return Grid::make(new Order([
- 'agent:id,name',
+ 'agent:id,company_name',
'agentProduct.product:id,title,price,pictures',
- 'product.supplier:id,name'
+ 'product.supplier:id,company_name'
]), function (Grid $grid) {
$grid->disableCreateButton();
$grid->disableDeleteButton();
@@ -34,7 +34,7 @@ class OrderController extends AdminController
$grid->column('id')->sortable();
$grid->column('order_no')->limit(10);
- $grid->column('agent.name', '代理商');
+ $grid->column('agent.company_name', '代理商');
$grid->column('mobile');
$grid->column('name');
$grid->column('product', '产品信息')
@@ -45,8 +45,8 @@ class OrderController extends AdminController
$this->title,
'
',
$this->num,
- $this->agent->name,
- $this->product->supplier->name,
+ $this->agent->company_name,
+ $this->product->supplier->company_name,
]]);
})->xl();
$grid->column('paid_money');
@@ -65,10 +65,10 @@ class OrderController extends AdminController
$filter->equal('order_no')->width(3);
$filter->equal('status')->select(OrderStatus::array())->width(2);
- $option = Agent::query()->pluck('name', 'id');
+ $option = Agent::query()->pluck('company_name', 'id');
$filter->equal('agent_id', '代理商')->select($option)->width(3);
- $option = Supplier::query()->pluck('name', 'id');
+ $option = Supplier::query()->pluck('company_name', 'id');
$filter->equal('product.supplier_id', '供应商')->select($option)->width(3);
$filter->between('created_at')->datetime()->width(4);
@@ -85,13 +85,13 @@ class OrderController extends AdminController
*/
protected function detail($id)
{
- return Show::make($id, new Order(['agent:id,name']), function (Show $show) {
+ return Show::make($id, new Order(['agent:id,company_name']), function (Show $show) {
$show->disableDeleteButton();
$show->disableQuickEdit();
$show->disableEditButton();
$show->field('id');
- $show->field('agent.name');
+ $show->field('agent.company_name');
$show->field('mobile');
$show->field('name');
$show->field('num');
diff --git a/app/Admin/Controllers/OrderStatisticsController.php b/app/Admin/Controllers/OrderStatisticsController.php
index 394928c..58692a3 100755
--- a/app/Admin/Controllers/OrderStatisticsController.php
+++ b/app/Admin/Controllers/OrderStatisticsController.php
@@ -23,6 +23,7 @@ class OrderStatisticsController extends AdminController
Admin::style(
<< .content-wrapper > .content-header{display: none}
+ #date_time .block > div{display:inline-block;}
.col-sm-12.d-flex{
display: inline-block !important;
}
diff --git a/app/Admin/Controllers/ProductController.php b/app/Admin/Controllers/ProductController.php
index ca57abd..3631a7c 100644
--- a/app/Admin/Controllers/ProductController.php
+++ b/app/Admin/Controllers/ProductController.php
@@ -2,15 +2,13 @@
namespace App\Admin\Controllers;
+use App\Admin\Actions\Grid\BatchAuditProduct;
use App\Admin\Extensions\Grid\AuditProduct;
use App\Admin\Repositories\Product;
use App\Common\ProductStatus;
-use App\Common\UserStatus;
use App\Models\AgentProduct;
use App\Models\AgentProductItem;
use App\Models\Category;
-use App\Models\Supplier;
-use Dcat\Admin\Admin;
use Dcat\Admin\Form;
use Dcat\Admin\Form\NestedForm;
use Dcat\Admin\Grid;
@@ -27,13 +25,16 @@ class ProductController extends AdminController
*/
protected function grid()
{
- return Grid::make(new Product(['supplier:id,name', 'category:id,name']), function (Grid $grid) {
+ return Grid::make(new Product(['supplier:id,company_name', 'category:id,name']), function (Grid $grid) {
$grid->disableCreateButton();
//如果是审核页面,多加where条件判断
if (strpos(Route::current()->uri, 'audit')) {
$grid->model()->where('status', ProductStatus::UNAUDITED);
}
+// $grid->batchActions(new BatchAuditProduct);
+// $grid->batchActions(new BatchAuditProduct);
+
$grid->column('id')->sortable();
$grid->column('category.name', '分类');
$grid->column('picture')->image('', 60, 60);
@@ -42,7 +43,7 @@ class ProductController extends AdminController
$grid->column('price');
$grid->column('sale');
$grid->column('stock');
- $grid->column('supplier.name', '供应商');
+ $grid->column('supplier.company_name', '供应商');
$grid->column('status')
->if(fn() => $this->status == ProductStatus::UNAUDITED)
->display('')
@@ -80,7 +81,7 @@ class ProductController extends AdminController
*/
protected function detail($id)
{
- return Show::make($id, new Product(['supplier:id,name', 'category:id,name']), function (Show $show) {
+ return Show::make($id, new Product(['supplier:id,company_name', 'category:id,name']), function (Show $show) {
$show->field('id');
$show->field('category.name', '所属分类');
$show->field('title');
@@ -90,7 +91,7 @@ class ProductController extends AdminController
$show->field('sale');
$show->field('stock');
$show->field('status')->using(ProductStatus::array());
- $show->field('supplier.name', '供应商');
+ $show->field('supplier.company_name', '供应商');
$show->field('know')->unescape()->as(fn($v) => preg_replace('/.*?<\/script>/is', '', $v));
$show->field('content')->unescape()->as(fn($v) => preg_replace('/.*?<\/script>/is', '', $v));
$show->field('created_at');
diff --git a/app/Admin/Controllers/ProductStatisticsController.php b/app/Admin/Controllers/ProductStatisticsController.php
index c0cf885..d9dc129 100755
--- a/app/Admin/Controllers/ProductStatisticsController.php
+++ b/app/Admin/Controllers/ProductStatisticsController.php
@@ -33,6 +33,7 @@ class ProductStatisticsController extends AdminController
Admin::style(
<< .content-wrapper > .content-header{display: none}
+ #date_time .block > div{display:inline-block;}
.col-sm-12.d-flex{
display: inline-block !important;
}
diff --git a/app/Admin/Controllers/SupplierController.php b/app/Admin/Controllers/SupplierController.php
index 874ebfe..f8ab8c7 100644
--- a/app/Admin/Controllers/SupplierController.php
+++ b/app/Admin/Controllers/SupplierController.php
@@ -7,7 +7,6 @@ use App\Admin\Repositories\Supplier;
use App\Common\ProductStatus;
use App\Common\UserStatus;
use App\Models\Product;
-use Dcat\Admin\Admin;
use Dcat\Admin\Form;
use Dcat\Admin\Grid;
use Dcat\Admin\Show;
@@ -36,7 +35,7 @@ class SupplierController extends AdminController
$grid->column('id')->sortable();
$grid->column('username');
- $grid->column('name');
+ // $grid->column('name');
$grid->column('company_name');
$grid->column('logo')->image('', 60, 60);
$grid->column('address');
@@ -66,7 +65,7 @@ class SupplierController extends AdminController
$filter->panel();
$filter->equal('id')->width(2);
- $filter->like('name')->width(3);
+ $filter->like('company_name')->width(3);
$filter->equal('status', '用户状态')->select(UserStatus::array())->width(2);
});
});
diff --git a/app/Admin/Controllers/SupplierStatisticsController.php b/app/Admin/Controllers/SupplierStatisticsController.php
index 8c7769d..8935f1e 100755
--- a/app/Admin/Controllers/SupplierStatisticsController.php
+++ b/app/Admin/Controllers/SupplierStatisticsController.php
@@ -20,6 +20,7 @@ class SupplierStatisticsController extends AdminController
Admin::style(
<< .content-wrapper > .content-header{display: none}
+ #date_time .block > div{display:inline-block;}
.col-sm-12.d-flex{
display: inline-block !important;
}
diff --git a/app/Admin/Controllers/UserStatisticsController.php b/app/Admin/Controllers/UserStatisticsController.php
index 95731c2..9321006 100755
--- a/app/Admin/Controllers/UserStatisticsController.php
+++ b/app/Admin/Controllers/UserStatisticsController.php
@@ -20,6 +20,7 @@ class UserStatisticsController extends AdminController
Admin::style(
<< .content-wrapper > .content-header{display: none}
+ #date_time .block > div{display:inline-block;}
.col-sm-12.d-flex{
display: inline-block !important;
}
diff --git a/app/Admin/Extensions/Form/Radio2.php b/app/Admin/Extensions/Form/Radio2.php
new file mode 100644
index 0000000..4585a94
--- /dev/null
+++ b/app/Admin/Extensions/Form/Radio2.php
@@ -0,0 +1,133 @@
+options instanceof \Closure) {
+ $this->options(
+ $this->options->call($this->values(), $this->value(), $this)
+ );
+ }
+
+ $this->addCascadeScript();
+
+ $radio = WidgetRadio::make($this->getElementName(), $this->options, $this->style);
+
+ if ($this->attributes['disabled'] ?? false) {
+ $radio->disable();
+ }
+
+ $radio
+ ->inline($this->inline)
+ ->check($this->value())
+ ->class($this->getElementClassString())
+ ->size($this->size);
+
+ $this->addVariables([
+ 'radio' => $radio,
+ ]);
+
+ return parent::render();
+ }
+
+ /**
+ * Add cascade scripts to contents.
+ *
+ * @return string
+ */
+ protected function getCascadeScript()
+ {
+ if (empty($this->conditions)) {
+ return;
+ }
+
+ $cascadeGroups = collect($this->conditions)->map(function ($condition) {
+ return [
+ 'class' => $this->getCascadeClass($condition['value'], $condition['operator']),
+ 'operator' => $condition['operator'],
+ 'value' => $condition['value'],
+ ];
+ })->toJson();
+
+ return <<': function(a, b) {
+ return a > b;
+ },
+ '<': function(a, b) {
+ return a < b;
+ },
+ '>=': function(a, b) { return a >= b; },
+ '<=': function(a, b) { return a <= b; },
+ '!=': function(a, b) {
+ return ! operator_table['='](a, b);
+ },
+ 'in': function(a, b) { return Dcat.helpers.inObject(a, String(b), true); },
+ 'notIn': function(a, b) { return ! Dcat.helpers.inObject(a, String(b), true); },
+ 'has': function(a, b) { return Dcat.helpers.inObject(b, String(b), true); },
+ };
+ var cascade_groups = {$cascadeGroups}, event = '{$this->cascadeEvent}';
+
+ \$this.on(event, function (e) {
+ var checked = $(e.target).parent().parent().find(':checked').val();
+
+ cascade_groups.forEach(function (event) {
+ var group = $(e.target).closest('.form-group.form-field').next('div.cascade-group.'+event.class);
+ if (compare(checked, event.value, event.operator)) {
+ group.removeClass('d-none');
+ } else {
+ group.addClass('d-none');
+ }
+ });
+ }).trigger(event);
+})();
+JS;
+ }
+}
diff --git a/app/Admin/Extensions/Grid/AuditAgent.php b/app/Admin/Extensions/Grid/AuditAgent.php
index 9782f7c..d0957d8 100644
--- a/app/Admin/Extensions/Grid/AuditAgent.php
+++ b/app/Admin/Extensions/Grid/AuditAgent.php
@@ -56,7 +56,7 @@ class AuditAgent extends RowAction
# 写入默认初始数据
//代理商产品分类
- if (!Category::where('agent_id', $id)->first()) {
+ if (!Category::withTrashed()->where('agent_id', $id)->first()) {
$default_category = Category::where('agent_id', 0)->orderBy('id')->get()->toArray();
$default_category = array_map(function ($v) use ($id) {
@@ -75,7 +75,7 @@ class AuditAgent extends RowAction
}
//代理商频道列表
- if (!Channel::where('agent_id', $id)->first()) {
+ if (!Channel::withTrashed()->where('agent_id', $id)->first()) {
$default_channel = Channel::where('agent_id', 0)->orderBy('id')->get()->toArray();
$default_channel = array_map(function ($v) use ($id, $host) {
diff --git a/app/Admin/routes.php b/app/Admin/routes.php
index 07b275f..df3838f 100644
--- a/app/Admin/routes.php
+++ b/app/Admin/routes.php
@@ -45,6 +45,7 @@ Route::group([
$router->resource('mini_program/draft', 'MiniProgramDraftController');
$router->resource('mini_program/template', 'MiniProgramTemplateController');
$router->resource('mini_program/list', 'MiniProgramListController');
+ $router->resource('mini_program/upload', 'MiniProgramController');
$router->resource('industry_order/list', 'IndustryOrderController');
$router->resource('withdrawal', 'WithdrawalController');
$router->resource('system', 'SystemSettingController');
diff --git a/app/AdminAgent/Actions/Tree/LoadSystemCategory.php b/app/AdminAgent/Actions/Tree/LoadSystemCategory.php
new file mode 100644
index 0000000..aefddd8
--- /dev/null
+++ b/app/AdminAgent/Actions/Tree/LoadSystemCategory.php
@@ -0,0 +1,94 @@
+orderBy('pid')->get();
+ $system_name = $system_cate->pluck('name')->toArray();
+
+ $own_cate = Category::where('agent_id', Admin::user()->id)->get();
+ $own_name = $own_cate->pluck('name')->toArray();
+
+ $no_name = array_diff($system_name, $own_name); //找到系统有,但自己没有的分类名
+ $max_id = Category::where('agent_id', Admin::user()->id)->max('id');
+
+ Category::insert(array_map(function ($name) {
+ return [
+ 'agent_id' => Admin::user()->id,
+ 'name' => $name,
+ 'pid' => 0,
+ 'sort' => 255,
+ ];
+ }, $no_name));
+
+ $own_cate = Category::where('agent_id', Admin::user()->id)->orderBy('id')->get(); //获取所有分类,包含新插入的分类
+ $system_pid = $system_cate->pluck('pid', 'name')->toArray(); //获取原来系统的PID
+ $own_id = $own_cate->pluck('id', 'name')->toArray(); //获取自己的PID,不考虑name重复的情况
+
+ foreach ($own_cate as $cate) {
+ //不是新插入的分类不处理
+ if ($cate->id <= $max_id) continue;
+
+ //如果原来系统PID不是0,则获取父类的名称,并在自己的分类中获取对应名称ID,再设置父分类
+ $sys_pid = $system_pid[$cate['name']];
+ if ($sys_pid != 0) {
+ $sys_pid_name = $system_cate->find($sys_pid)['name'];
+
+ $cate->pid = $own_id[$sys_pid_name];
+ $cate->save();
+ }
+ }
+
+ return $this->response()->success('操作成功!')->refresh();
+ }
+
+ /**
+ * @return string|void
+ */
+ protected function href()
+ {
+ // return admin_url('auth/users');
+ }
+
+ /**
+ * @return string|array|void
+ */
+ public function confirm()
+ {
+ return ['操作确认', '确定要导入系统分类吗?'];
+ }
+
+ /**
+ * @param Model|Authenticatable|HasPermissions|null $user
+ *
+ * @return bool
+ */
+ protected function authorize($user): bool
+ {
+ return true;
+ }
+}
diff --git a/app/AdminAgent/Controllers/AgentProductController.php b/app/AdminAgent/Controllers/AgentProductController.php
index 174066f..d1922e0 100644
--- a/app/AdminAgent/Controllers/AgentProductController.php
+++ b/app/AdminAgent/Controllers/AgentProductController.php
@@ -9,7 +9,6 @@ use App\AdminAgent\Repositories\AgentProduct;
use App\Common\AgentType;
use App\Common\ProductStatus;
use App\Models\AgentProductItem;
-use App\Models\AgentSetting;
use App\Models\Category;
use App\Models\Channel;
use App\Models\Guide;
@@ -40,7 +39,7 @@ class AgentProductController extends AdminController
->orWhere('stock', '<=', 0)
->update(['status' => ProductStatus::SOLD_OUT]);
- return Grid::make(new AgentProduct(['product.supplier:id,name', 'category:id,name']), function (Grid $grid) {
+ return Grid::make(new AgentProduct(['product.supplier:id,company_name', 'category:id,name']), function (Grid $grid) {
$agent_id = Admin::user()->id;
$grid->model()->where('agent_id', $agent_id);
@@ -68,7 +67,7 @@ class AgentProductController extends AdminController
? "
product->picture}\" style=\"max-width:80px;max-height:200px;cursor:pointer\" class=\"img img-thumbnail\">"
: '';
$data = [[
- $this->product->supplier->name ?? '',
+ $this->product->supplier->company_name ?? '',
$this->product->title ?? '',
$pic,
$this->product->original_price ?? '',
@@ -105,7 +104,7 @@ class AgentProductController extends AdminController
$filter->like('product.title', '产品标题')->width(3);
$filter->equal('status')->select(ProductStatus::array())->width(2);
- $options = Supplier::where('status', 1)->pluck('name', 'id')->toArray();
+ $options = Supplier::where('status', 1)->pluck('company_name', 'id')->toArray();
$filter->equal('product.supplier_Id', '供应商')->select($options)->width(2);
});
});
@@ -120,15 +119,15 @@ class AgentProductController extends AdminController
*/
protected function detail($id)
{
- return Show::make($id, new AgentProduct(['agent:id,name', 'category:id,name', 'product.supplier:id,name', 'guide:id,name']), function (Show $show) {
+ return Show::make($id, new AgentProduct(['category:id,name', 'product.supplier:id,company_name', 'guide:id,name']), function (Show $show) {
//不允许查看非自己的数据
if ($show->model()->agent_id != Admin::user()->id) {
Admin::exit('数据不存在');
}
$show->field('id');
- $show->field('agent_id');
$show->field('product_id');
+ $show->field('product.supplier.company_name', '供应商');
$show->field('price');
$show->field('original_price');
$show->field('sale');
@@ -144,7 +143,7 @@ class AgentProductController extends AdminController
$show->field('content')->unescape();
if (Admin::user()->type != AgentType::CLUSTER) {
$show->field('is_rec')->using(['未推荐', '已推荐']);
- $show->field('channel_id');
+ $show->field('channel_id')->as(fn($v) => join(',', Channel::whereIn('id', explode(',', $v))->pluck('name')->toArray()));
$show->field('earnest');
$show->field('earnest_timeout');
$show->field('deposit');
@@ -152,19 +151,6 @@ class AgentProductController extends AdminController
}
$show->field('created_at');
$show->field('updated_at');
-
- /*$show->html(Alert::make(null, '供应商产品详情')->info()); 因为可能是组合销售多个产品,这里暂时不显示
-
- $show->field('product.id', '供应商产品ID');
- $show->field('product.supplier.name');
- $show->field('product.title');
- $show->field('product.pictures')->image('', 80, 80);
- $show->field('product.original_price');
- $show->field('product.price');
- $show->field('product.sale');
- $show->field('product.stock');
- $show->field('product.created_at', '创建时间');
- $show->field('product.updated_at', '更新时间');*/
});
}
@@ -246,8 +232,8 @@ class AgentProductController extends AdminController
$js = file_get_contents(resource_path('js/agent-spec-edit.js'));
$class = str_replace('\\', '\\\\', LoadSupplierSpec::class);
$js = str_replace(
- ['`{{url}}`', '`{{class}}`', '`{{product_id}}`', '`{{agent_product_id}}`'],
- [route(admin_api_route_name('form')), $class, $form->model()->product_id, $form->model()->id],
+ ['`{{url}}`', '`{{class}}`', '`{{agent_product_id}}`'],
+ [route(admin_api_route_name('form')), $class, $form->model()->id ?? 0],
$js
);
Admin::script($js);
diff --git a/app/AdminAgent/Controllers/CategoryController.php b/app/AdminAgent/Controllers/CategoryController.php
index ef56279..4ad033a 100644
--- a/app/AdminAgent/Controllers/CategoryController.php
+++ b/app/AdminAgent/Controllers/CategoryController.php
@@ -2,6 +2,7 @@
namespace App\AdminAgent\Controllers;
+use App\AdminAgent\Actions\Tree\LoadSystemCategory;
use App\Models\AgentProduct;
use App\Models\Category;
use Dcat\Admin\Admin;
@@ -13,7 +14,6 @@ use Dcat\Admin\Show;
use Dcat\Admin\Http\Controllers\AdminController;
use Dcat\Admin\Tree;
-
class CategoryController extends AdminController
{
public function index(Content $content)
@@ -25,6 +25,9 @@ class CategoryController extends AdminController
//agent_id为0是系统分类,其它是代理商分类
return $model->where('agent_id', Admin::user()->id);
});
+ $tree->tools(function (Tree\Tools $tools) {
+ $tools->add(new LoadSystemCategory());
+ });
$row->column(12, $tree);
});
}
@@ -43,7 +46,6 @@ class CategoryController extends AdminController
$grid->column('name');
$grid->column('pid');
$grid->column('sort');
- $grid->column('template');
});
}
@@ -66,7 +68,6 @@ class CategoryController extends AdminController
$show->field('name');
$show->field('pid');
$show->field('sort');
- $show->field('template');
});
}
@@ -90,7 +91,6 @@ class CategoryController extends AdminController
$form->select('pid')->options($options)->required();
$form->text('name')->required();
$form->text('sort')->default(255)->help('越小越靠前');
-// $form->text('template');
})->saving(function (Form $form) {
//不允许修改非自己的数据
if ($form->isEditing() && $form->model()->agent_id != Admin::user()->id) {
diff --git a/app/AdminAgent/Controllers/FinanceStatisticsController.php b/app/AdminAgent/Controllers/FinanceStatisticsController.php
index 09050d8..3799d4a 100755
--- a/app/AdminAgent/Controllers/FinanceStatisticsController.php
+++ b/app/AdminAgent/Controllers/FinanceStatisticsController.php
@@ -24,6 +24,7 @@ class FinanceStatisticsController extends AdminController
Admin::style(
<< .content-wrapper > .content-header{display: none}
+ #date_time .block > div{display:inline-block;}
.col-sm-12.d-flex{
display: inline-block !important;
}
diff --git a/app/AdminAgent/Controllers/GroupOrderController.php b/app/AdminAgent/Controllers/GroupOrderController.php
index 752ae70..8b8ef36 100644
--- a/app/AdminAgent/Controllers/GroupOrderController.php
+++ b/app/AdminAgent/Controllers/GroupOrderController.php
@@ -60,7 +60,7 @@ class GroupOrderController extends AdminController
$filter->equal('order_no')->width(3);
$filter->equal('status')->select(OrderStatus::array())->width(2);
- $option = Supplier::query()->pluck('name', 'id');
+ $option = Supplier::query()->pluck('company_name', 'id');
$filter->equal('product.supplier_id', '供应商')->select($option)->width(3);
$filter->between('created_at')->datetime()->width(4);
diff --git a/app/AdminAgent/Controllers/IndustryOrderController.php b/app/AdminAgent/Controllers/IndustryOrderController.php
index 9676fc5..04e2908 100644
--- a/app/AdminAgent/Controllers/IndustryOrderController.php
+++ b/app/AdminAgent/Controllers/IndustryOrderController.php
@@ -27,13 +27,13 @@ class IndustryOrderController extends AdminController
*/
protected function grid()
{
- return Grid::make(new IndustryOrder(['supplier:id,name,contact_phone']), function (Grid $grid) {
+ return Grid::make(new IndustryOrder(['supplier:id,company_name,contact_phone']), function (Grid $grid) {
$grid->disableRowSelector();
$grid->disableCreateButton();
$grid->disableActions();
$grid->column('id')->sortable();
- $grid->column('supplier.name', '供应商');
+ $grid->column('supplier.company_name', '供应商');
$grid->column('supplier.contact_phone', '供应商电话');
$grid->column('order_no')->limit(10);
$grid->column('num');
diff --git a/app/AdminAgent/Controllers/IndustryProductController.php b/app/AdminAgent/Controllers/IndustryProductController.php
index 62d6daf..e12b73a 100644
--- a/app/AdminAgent/Controllers/IndustryProductController.php
+++ b/app/AdminAgent/Controllers/IndustryProductController.php
@@ -2,7 +2,6 @@
namespace App\AdminAgent\Controllers;
-use App\AdminAgent\Forms\IndustryProductBuy;
use App\AdminAgent\Repositories\IndustryProduct;
use App\Common\ProductStatus;
use Dcat\Admin\Grid;
@@ -62,12 +61,12 @@ class IndustryProductController extends AdminController
*/
protected function detail($id)
{
- return Show::make($id, new IndustryProduct(['category:id,name', 'supplier:id,name,contact_phone']), function (Show $show) {
+ return Show::make($id, new IndustryProduct(['category:id,name', 'supplier:id,company_name,contact_phone']), function (Show $show) {
$show->disableEditButton();
$show->disableDeleteButton();
$show->field('id');
- $show->field('supplier.name', '供应商');
+ $show->field('supplier.company_name', '供应商');
$show->field('supplier.contact_phone', '供应商联系电话');
$show->field('category.name', '分类');
$show->field('type')->using(admin_trans('product.options.publish_type'));
diff --git a/app/AdminAgent/Controllers/OrderController.php b/app/AdminAgent/Controllers/OrderController.php
index 7c502eb..3bebb4b 100644
--- a/app/AdminAgent/Controllers/OrderController.php
+++ b/app/AdminAgent/Controllers/OrderController.php
@@ -27,7 +27,7 @@ class OrderController extends AdminController
*/
protected function grid()
{
- return Grid::make(new Order(['product.supplier:id,name']), function (Grid $grid) {
+ return Grid::make(new Order(['product.supplier:id,company_name']), function (Grid $grid) {
$grid->disableDeleteButton();
$grid->disableBatchDelete();
$grid->disableCreateButton();
@@ -41,22 +41,30 @@ class OrderController extends AdminController
$grid->column('id')->sortable();
$grid->column('order_no')->limit(10);
- $grid->column('custom', '客户信息')
- ->display(function () {
- return $this->name . ',' . $this->mobile;
- })
- ->modal('客户信息', function ($modal) {
- if (!$this->info) return '';
- $titles = [
- 'id_card' => '身份证号',
- ''
- ];
- return Table::make($this->info);
- });
+ $grid->column('info', '订单信息')
+ ->display('查看')
+ ->modal('订单信息', function ($modal) {
+ $info = $this->info ?? [];
+ $info = array_map(function($v) {
+ if (isset($v['value'], $v['type'])) {
+ if ($v['type'] == 'image') {
+ if (is_array($v['value'])) {
+ return array_reduce($v['value'], fn($v2, $v3) => $v2 . '
');
+ } else {
+ return '
';
+ }
+ } else {
+ return is_string($v['value']) ? $v['value'] : join(',', $v['value']);
+ }
+ }
+ return is_string($v) ? $v : json_encode($v);
+ }, $info);
+ return Table::make([], $info);
+ })->xl();
$grid->column('product', '产品信息')
->display('查看')
->modal('购买产品信息', function ($modal) {
- $item = OrderProductItem::with(['supplier:id,name', 'product:id,title,pictures'])
+ $item = OrderProductItem::with(['supplier:id,company_name', 'product:id,title,pictures'])
->where('order_id', $this->id)
->get(['num', 'supplier_id', 'product_id']);
@@ -67,7 +75,7 @@ class OrderController extends AdminController
$v->product->title ?? '',
'
',
$v->num ?? '',
- $v->supplier->name ?? '',
+ $v->supplier->company_name ?? '',
];
}
return Table::make(['产品名称', '产品图片', '购买数量', '所属供应商'], $row);
@@ -164,7 +172,7 @@ class OrderController extends AdminController
*/
protected function detail($id)
{
- return Show::make($id, new Order(['product.supplier:id,name']), function (Show $show) {
+ return Show::make($id, new Order(['product.supplier:id,company_name']), function (Show $show) {
$show->disableDeleteButton();
$show->disableEditButton();
@@ -177,7 +185,7 @@ class OrderController extends AdminController
$show->field('user_id');
$show->field('order_no');
$show->field('agent_product_id', '代理商产品ID');
- $show->field('product.supplier.name', '供应商');
+ $show->field('product.supplier.company_name', '供应商');
$show->field('price');
$show->field('paid_money');
$show->field('paid_at');
diff --git a/app/AdminAgent/Controllers/OrderStatisticsController.php b/app/AdminAgent/Controllers/OrderStatisticsController.php
index f5b5c61..80f2595 100755
--- a/app/AdminAgent/Controllers/OrderStatisticsController.php
+++ b/app/AdminAgent/Controllers/OrderStatisticsController.php
@@ -23,6 +23,7 @@ class OrderStatisticsController extends AdminController
Admin::style(
<< .content-wrapper > .content-header{display: none}
+ #date_time .block > div{display:inline-block;}
.col-sm-12.d-flex{
display: inline-block !important;
}
diff --git a/app/AdminAgent/Controllers/ProductStatisticsController.php b/app/AdminAgent/Controllers/ProductStatisticsController.php
index 2605eb8..73f1762 100755
--- a/app/AdminAgent/Controllers/ProductStatisticsController.php
+++ b/app/AdminAgent/Controllers/ProductStatisticsController.php
@@ -26,6 +26,7 @@ class ProductStatisticsController extends AdminController
Admin::style(
<< .content-wrapper > .content-header{display: none}
+ #date_time .block > div{display:inline-block;}
.col-sm-12.d-flex{
display: inline-block !important;
}
diff --git a/app/AdminAgent/Controllers/SupplierController.php b/app/AdminAgent/Controllers/SupplierController.php
index c1a4e87..30d857a 100644
--- a/app/AdminAgent/Controllers/SupplierController.php
+++ b/app/AdminAgent/Controllers/SupplierController.php
@@ -32,7 +32,6 @@ class SupplierController extends AdminController
});
$grid->column('id')->sortable();
- $grid->column('name');
$grid->column('company_name');
$grid->column('address');
$grid->column('director');
diff --git a/app/AdminAgent/Controllers/UserStatisticsController.php b/app/AdminAgent/Controllers/UserStatisticsController.php
index 08bade7..462d039 100755
--- a/app/AdminAgent/Controllers/UserStatisticsController.php
+++ b/app/AdminAgent/Controllers/UserStatisticsController.php
@@ -20,6 +20,7 @@ class UserStatisticsController extends AdminController
Admin::style(
<< .content-wrapper > .content-header{display: none}
+ #date_time .block > div{display:inline-block;}
.col-sm-12.d-flex{
display: inline-block !important;
}
diff --git a/app/AdminAgent/Controllers/WithdrawalAlipayController.php b/app/AdminAgent/Controllers/WithdrawalAlipayController.php
index 3285b62..13602ea 100755
--- a/app/AdminAgent/Controllers/WithdrawalAlipayController.php
+++ b/app/AdminAgent/Controllers/WithdrawalAlipayController.php
@@ -13,11 +13,7 @@ use App\Traits\StatementTraits;
use App\Traits\WithdrawalTraits;
use Dcat\Admin\Admin;
use Dcat\Admin\Form;
-use Dcat\Admin\Grid;
-use Dcat\Admin\Repositories\EloquentRepository;
-use Dcat\Admin\Show;
use Dcat\Admin\Http\Controllers\AdminController;
-use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\DB;
class WithdrawalAlipayController extends AdminController
diff --git a/app/AdminAgent/Controllers/WithdrawalBankController.php b/app/AdminAgent/Controllers/WithdrawalBankController.php
index e8d470c..d61f8fd 100755
--- a/app/AdminAgent/Controllers/WithdrawalBankController.php
+++ b/app/AdminAgent/Controllers/WithdrawalBankController.php
@@ -13,10 +13,7 @@ use App\Traits\StatementTraits;
use App\Traits\WithdrawalTraits;
use Dcat\Admin\Admin;
use Dcat\Admin\Form;
-use Dcat\Admin\Grid;
-use Dcat\Admin\Show;
use Dcat\Admin\Http\Controllers\AdminController;
-use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\DB;
class WithdrawalBankController extends AdminController
diff --git a/app/AdminAgent/Controllers/WorkorderController.php b/app/AdminAgent/Controllers/WorkorderController.php
index 609a683..66807f6 100755
--- a/app/AdminAgent/Controllers/WorkorderController.php
+++ b/app/AdminAgent/Controllers/WorkorderController.php
@@ -4,25 +4,18 @@ namespace App\AdminAgent\Controllers;
use App\AdminAgent\Repositories\Workorder;
use App\Common\AgentType;
-use App\Http\Controllers\Controller;
use App\Models\AgentProductItem;
use App\Models\Guide;
-use App\Models\OrderProductItem;
use App\Models\Supplier;
use App\Models\WorkorderItem;
use App\Service\Admin\GlobalNoticeService;
use App\Traits\DemandTraits;
-use App\Traits\WorkorderTraits;
use Dcat\Admin\Admin;
use Dcat\Admin\Form;
-use Dcat\Admin\Grid;
use Dcat\Admin\Layout\Content;
-use Dcat\Admin\Show;
use Dcat\Admin\Http\Controllers\AdminController;
use Illuminate\Http\Request;
use App\Traits\ResponseHelper;
-use Illuminate\Support\Facades\DB;
-use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Facades\Validator;
diff --git a/app/AdminAgent/Renderable/SelectProduct.php b/app/AdminAgent/Renderable/SelectProduct.php
index ee0ffc1..584b67f 100644
--- a/app/AdminAgent/Renderable/SelectProduct.php
+++ b/app/AdminAgent/Renderable/SelectProduct.php
@@ -19,7 +19,7 @@ class SelectProduct extends LazyRenderable
// 获取外部传递的参数
// $id = $this->id;
Admin::translation('product');
- return Grid::make(new Product(['supplier:id,name']), function (Grid $grid) {
+ return Grid::make(new Product(['supplier:id,company_name']), function (Grid $grid) {
$grid->disableActions();
$grid->disableBatchDelete();
$grid->disableBatchActions();
@@ -28,10 +28,10 @@ class SelectProduct extends LazyRenderable
if (!is_null($this->ids)) {
$grid->model()->orderByRaw("FIELD(`id`, {$this->ids}) DESC");
}
- $grid->quickSearch(['title', 'supplier.name'])->placeholder('搜索产品名称、供应商');
+ $grid->quickSearch(['title', 'supplier.company_name'])->placeholder('搜索产品名称、供应商');
$grid->column('id');
- //$grid->column('supplier.name', '供应商');
+ //$grid->column('supplier.company_name', '供应商');
$grid->column('title');
$grid->column('picture')->image('',60, 60);
$grid->column('price');
@@ -43,7 +43,7 @@ class SelectProduct extends LazyRenderable
$grid->filter(function (Grid\Filter $filter) {
$filter->like('title')->width(4);
- $filter->like('supplier.name', '供应商名称')->width(4);
+ $filter->like('supplier.company_name', '供应商名称')->width(4);
});
});
}
diff --git a/app/AdminAgent/bootstrap.php b/app/AdminAgent/bootstrap.php
index 7681744..3662331 100644
--- a/app/AdminAgent/bootstrap.php
+++ b/app/AdminAgent/bootstrap.php
@@ -26,6 +26,10 @@ use Dcat\Admin\Show;
*/
app('view')->prependNamespace('admin', resource_path('views/admin'));
+if (isset(Admin::user()->status) && Admin::user()->status != 1 || isset(Admin::user()->deleted_at)) {
+ Admin::exit('账号不存在或已被禁用');
+}
+
/**
* 过滤器初始化
*/
diff --git a/app/AdminGuide/Controllers/OrderController.php b/app/AdminGuide/Controllers/OrderController.php
index b1c7c02..46b599c 100644
--- a/app/AdminGuide/Controllers/OrderController.php
+++ b/app/AdminGuide/Controllers/OrderController.php
@@ -22,7 +22,7 @@ class OrderController extends AdminController
*/
protected function grid()
{
- return Grid::make(new Order(['agent:id,name']), function (Grid $grid) {
+ return Grid::make(new Order(['agent:id,company_name']), function (Grid $grid) {
$grid->disableBatchActions();
$grid->disableCreateButton();
$grid->disableActions();
@@ -31,7 +31,7 @@ class OrderController extends AdminController
$grid->model()->where('guide_id', Admin::user()->id);
$grid->column('id')->sortable();
- $grid->column('agent.name');
+ $grid->column('agent.company_name', '代理商');
$grid->column('order_no')->limit(10);
$grid->column('num');
$grid->column('price');
@@ -55,10 +55,10 @@ class OrderController extends AdminController
$filter->equal('order_no')->width(3);
$filter->equal('status')->select(OrderStatus::array())->width(2);
- $option = Agent::query()->pluck('name', 'id');
+ $option = Agent::query()->pluck('company_name', 'id');
$filter->equal('agent_id', '代理商')->select($option)->width(3);
- $option = Supplier::query()->pluck('name', 'id');
+ $option = Supplier::query()->pluck('company_name', 'id');
$filter->equal('product.supplier_id', '供应商')->select($option)->width(3);
$filter->between('created_at')->datetime()->width(4);
diff --git a/app/AdminGuide/Controllers/WalletController.php b/app/AdminGuide/Controllers/WalletController.php
index b441f69..02ed9cf 100644
--- a/app/AdminGuide/Controllers/WalletController.php
+++ b/app/AdminGuide/Controllers/WalletController.php
@@ -18,6 +18,7 @@ class WalletController extends AdminController
{
public function index(Content $content)
{
+ Admin::style('.app-content > .content-wrapper > .content-header{display: none}');
return $content
->body(
<<prependNamespace('admin', resource_path('views/admin'));
+if (isset(Admin::user()->status) && Admin::user()->status != 1 || isset(Admin::user()->deleted_at)) {
+ Admin::exit('账号不存在或已被禁用');
+}
+
/**
* 过滤器初始化
*/
diff --git a/app/AdminSupplier/Controllers/AgentController.php b/app/AdminSupplier/Controllers/AgentController.php
index 21639ed..8a53bc4 100644
--- a/app/AdminSupplier/Controllers/AgentController.php
+++ b/app/AdminSupplier/Controllers/AgentController.php
@@ -36,7 +36,6 @@ class AgentController extends AdminController
$grid->disableActions();
$grid->column('id')->sortable();
- $grid->column('name');
$grid->column('type')->using(AgentType::array());
$grid->column('company_name');
$grid->column('address');
@@ -51,7 +50,6 @@ class AgentController extends AdminController
$filter->panel();
$filter->equal('id')->width(2);
- $filter->like('name')->width(2);
$filter->like('company_name')->width(3);
$filter->equal('contact_phone')->width(2);
});
diff --git a/app/AdminSupplier/Controllers/DepositLogController.php b/app/AdminSupplier/Controllers/DepositLogController.php
index fd912e6..dbea6c9 100755
--- a/app/AdminSupplier/Controllers/DepositLogController.php
+++ b/app/AdminSupplier/Controllers/DepositLogController.php
@@ -3,12 +3,8 @@
namespace App\AdminSupplier\Controllers;
use App\AdminSupplier\Repositories\DepositLog;
-use App\AdminSupplier\Repositories\Withdrawal;
-use App\Traits\DemandTraits;
use App\Traits\StatementTraits;
-use App\Traits\WithdrawalTraits;
use Dcat\Admin\Admin;
-use Dcat\Admin\Form;
use Dcat\Admin\Grid;
use Dcat\Admin\Layout\Column;
use Dcat\Admin\Layout\Content;
@@ -79,7 +75,7 @@ HTML;
$grid->model()->where('supplier_id', Admin::user()->id);
$grid->column('id')->sortable();
$grid->column('price');
- $grid->column('supplier.name', '供应商');
+ $grid->column('supplier.company_name', '供应商');
$grid->column('type', '类型')->using(StatementTraits::$depositText);
$grid->column('created_at');
$grid->column('updated_at')->sortable();
diff --git a/app/AdminSupplier/Controllers/DiyFormController.php b/app/AdminSupplier/Controllers/DiyFormController.php
index 4311e77..1f2a29f 100644
--- a/app/AdminSupplier/Controllers/DiyFormController.php
+++ b/app/AdminSupplier/Controllers/DiyFormController.php
@@ -2,6 +2,7 @@
namespace App\AdminSupplier\Controllers;
+use App\Admin\Extensions\Form\Radio2;
use App\AdminSupplier\Repositories\DiyForm;
use Dcat\Admin\Admin;
use Dcat\Admin\Form;
@@ -80,6 +81,7 @@ class DiyFormController extends AdminController
*/
protected function form()
{
+ Form::extend('radio2', Radio2::class);
return Form::make(new DiyForm(['fields']), function (Form $form) {
$form->disableViewButton();
@@ -93,14 +95,15 @@ class DiyFormController extends AdminController
$form->hasMany('fields', function (Form\NestedForm $form) {
$form->text('field', '字段名称')->required();
$form->switch('required', '是否必填')->default(1)->required();
- $form->radio('type', '字段类型')
+ $form->radio2('type', '字段类型')
->required()->default('text')
- ->options(admin_trans('diy-form.options'))->when(['radio', 'checkbox'], function (Form\NestedForm $form) {
+ ->options(admin_trans('diy-form.options'))
+ ->when(['radio', 'checkbox'], function (Form\NestedForm $form) {
$form->list('options', '选项列表');
});
$form->number('sort', '排序')
- ->help('数字越小越靠前')->value(255)
- ->default(255)->required();
+ ->help('数字越小越靠前')
+ ->value(255)->required();
});
})->saving(function (Form $form) {
//不允许编辑非自己数据
diff --git a/app/AdminSupplier/Controllers/FinanceStatisticsController.php b/app/AdminSupplier/Controllers/FinanceStatisticsController.php
index bc9bd14..8c8d631 100755
--- a/app/AdminSupplier/Controllers/FinanceStatisticsController.php
+++ b/app/AdminSupplier/Controllers/FinanceStatisticsController.php
@@ -23,6 +23,7 @@ class FinanceStatisticsController extends AdminController
Admin::style(
<< .content-wrapper > .content-header{display: none}
+ #date_time .block > div{display:inline-block;}
.col-sm-12.d-flex{
display: inline-block !important;
}
diff --git a/app/AdminSupplier/Controllers/IndustryOrderController.php b/app/AdminSupplier/Controllers/IndustryOrderController.php
index 4513f18..3b5e45f 100644
--- a/app/AdminSupplier/Controllers/IndustryOrderController.php
+++ b/app/AdminSupplier/Controllers/IndustryOrderController.php
@@ -20,7 +20,7 @@ class IndustryOrderController extends AdminController
*/
protected function grid()
{
- return Grid::make(new IndustryOrder(['agent:id,name']), function (Grid $grid) {
+ return Grid::make(new IndustryOrder(['agent:id,company_name']), function (Grid $grid) {
$grid->disableCreateButton();
$grid->disableRowSelector();
$grid->disableActions();
@@ -28,7 +28,7 @@ class IndustryOrderController extends AdminController
$grid->model()->where('supplier_id', Admin::user()->id);
$grid->column('id')->sortable();
- $grid->column('agent.name', '代理商名称');
+ $grid->column('agent.company_name', '代理商名称');
$grid->column('order_no');
$grid->column('num');
$grid->column('price');
diff --git a/app/AdminSupplier/Controllers/IndustryProductController.php b/app/AdminSupplier/Controllers/IndustryProductController.php
index 6b8cb38..65bc5ec 100644
--- a/app/AdminSupplier/Controllers/IndustryProductController.php
+++ b/app/AdminSupplier/Controllers/IndustryProductController.php
@@ -134,6 +134,7 @@ class IndustryProductController extends AdminController
array_flip(Admin::user()->publish_type)
);
+ //0:旅游线路、1:酒店、2:景区、3:餐厅、4:车队、5:单项
$form->radio('type', '产品类型')
->options($publish_type)->disable($form->isEditing())
->default(current(Admin::user()->publish_type))
@@ -141,6 +142,12 @@ class IndustryProductController extends AdminController
if ($form->isEditing() && $form->model()->type != 0) {
return;
}
+ $form->text('extends.field_0_departure_place', '出发地');
+ $form->map('extends.field_0_departure_place_latitude', 'extends.field_0_departure_place_longitude', '出发地位置');
+
+ $form->text('extends.field_0_destination', '目的地');
+ $form->map('extends.field_0_destination_latitude', 'extends.field_0_destination_longitude', '目的地位置');
+
$form->table('extends.field_0_project', '包含项目', function (NestedForm $table) {
$table->text('name', '字段1');
$table->text('num', '字段2');
@@ -203,6 +210,12 @@ class IndustryProductController extends AdminController
$form->text('extends.field_3_name', '餐厅名');
$form->text('extends.field_3_address', '地址');
$form->map('extends.field_3_latitude', 'extends.field_3_longitude', '位置');
+ })->when(4, function (Form $form) { //车队
+ $form->text('extends.field_4_address', '地址');
+ $form->map('extends.field_4_latitude', 'extends.field_4_longitude', '位置');
+ })->when(5, function (Form $form) { //单项
+ $form->text('extends.field_5_address', '地址');
+ $form->map('extends.field_5_latitude', 'extends.field_5_longitude', '位置');
});
})->saving(function (Form $form) use (&$change_deposit, &$old_deposit) {
//不允许编辑非自己数据
@@ -252,6 +265,20 @@ class IndustryProductController extends AdminController
$change_deposit = $new_deposit - $old_deposit; //saved里面获取的$form->model()->stock是不对的
}
}
+
+ //因extends是数组,具有一定的特殊性,不能直接用$form->saved方法中的wasChanged判断是否修改,所以只能在这里做特殊处理
+ if (!is_null($form->extends)) {
+ $old_extends = array_filter($form->model()->extends, fn($v, $k) => str_contains($k, 'field_' . $form->model()->type) && !empty($v), ARRAY_FILTER_USE_BOTH);
+ $new_extends = array_filter($form->extends, fn($v, $k) => str_contains($k, 'field_' . $form->model()->type) && !empty($v), ARRAY_FILTER_USE_BOTH);
+
+ $old = $new = [];
+ array_walk_recursive($old_extends, function($v) use (&$old) {if ($v !== null) $old[] = $v;});
+ array_walk_recursive($new_extends, function($v) use (&$new) {if ($v !== null) $new[] = $v;});
+
+ if (array_diff($old, $new)) {
+ $form->status = ProductStatus::UNAUDITED;
+ }
+ }
}
//判断可用交易金是否充足
diff --git a/app/AdminSupplier/Controllers/OrderController.php b/app/AdminSupplier/Controllers/OrderController.php
index 6dd4da9..3c4c15f 100644
--- a/app/AdminSupplier/Controllers/OrderController.php
+++ b/app/AdminSupplier/Controllers/OrderController.php
@@ -24,7 +24,7 @@ class OrderController extends AdminController
protected function grid()
{
return Grid::make(new Order([
- 'agent:id,name',
+ 'agent:id,company_name',
'agentProduct.product:id,title,price,pictures',
'product'
]), function (Grid $grid) {
@@ -40,20 +40,29 @@ class OrderController extends AdminController
});
$grid->column('id')->sortable();
- $grid->column('agent.name', '代理商');
+ $grid->column('agent.company_name', '代理商');
+ $grid->column('order_no', '订单号')->limit(10);
$grid->column('title')->limit(20);
$grid->column('picture')->image('', 60, 60);
- $grid->column('product', '订单信息')
+ $grid->column('info', '订单信息')
->display('查看')
->modal('订单信息', function ($modal) {
- return Table::make(['订单号', '姓名', '手机号', '订单总价', '购买数量'],
- [[
- $this->order_no,
- $this->name,
- $this->mobile,
- $this->price,
- $this->num,
- ]]);
+ $info = $this->info ?? [];
+ $info = array_map(function($v) {
+ if (isset($v['value'], $v['type'])) {
+ if ($v['type'] == 'image') {
+ if (is_array($v['value'])) {
+ return array_reduce($v['value'], fn($v2, $v3) => $v2 . '
');
+ } else {
+ return '
';
+ }
+ } else {
+ return is_string($v['value']) ? $v['value'] : join(',', $v['value']);
+ }
+ }
+ return is_string($v) ? $v : json_encode($v);
+ }, $info);
+ return Table::make([], $info);
})->xl();
$grid->column('paid_money');
$grid->column('price');
@@ -71,10 +80,10 @@ class OrderController extends AdminController
$filter->equal('order_no')->width(3);
$filter->equal('status')->select(OrderStatus::array())->width(2);
- $option = Agent::query()->pluck('name', 'id');
+ $option = Agent::query()->pluck('company_name', 'id');
$filter->equal('agent_id', '代理商')->select($option)->width(3);
- $option = Supplier::query()->pluck('name', 'id');
+ $option = Supplier::query()->pluck('company_name', 'id');
$filter->equal('product.supplier_id', '供应商')->select($option)->width(3);
$filter->between('created_at')->datetime()->width(4);
@@ -91,7 +100,7 @@ class OrderController extends AdminController
*/
protected function detail($id)
{
- return Show::make($id, new Order(['agent:id,name', 'orderProductItem']), function (Show $show) {
+ return Show::make($id, new Order(['agent:id,company_name', 'orderProductItem']), function (Show $show) {
$show->disableDeleteButton();
$show->disableQuickEdit();
$show->disableEditButton();
@@ -102,7 +111,7 @@ class OrderController extends AdminController
});
$show->field('id');
- $show->field('agent.name');
+ $show->field('agent.company_name', '代理商');
$show->field('mobile');
$show->field('name');
$show->field('num');
diff --git a/app/AdminSupplier/Controllers/OrderStatisticsController.php b/app/AdminSupplier/Controllers/OrderStatisticsController.php
index dbd5844..fedb8eb 100755
--- a/app/AdminSupplier/Controllers/OrderStatisticsController.php
+++ b/app/AdminSupplier/Controllers/OrderStatisticsController.php
@@ -23,6 +23,7 @@ class OrderStatisticsController extends AdminController
Admin::style(
<< .content-wrapper > .content-header{display: none}
+ #date_time .block > div{display:inline-block;}
.col-sm-12.d-flex{
display: inline-block !important;
}
diff --git a/app/AdminSupplier/Controllers/ProductController.php b/app/AdminSupplier/Controllers/ProductController.php
index 4ffb58e..8fac9d7 100644
--- a/app/AdminSupplier/Controllers/ProductController.php
+++ b/app/AdminSupplier/Controllers/ProductController.php
@@ -8,6 +8,7 @@ use App\Models\AgentProduct;
use App\Models\AgentProductItem;
use App\Models\Category;
use App\Models\DiyForm;
+use App\Models\Special;
use Dcat\Admin\Admin;
use Dcat\Admin\Form;
use Dcat\Admin\Form\NestedForm;
@@ -146,7 +147,7 @@ class ProductController extends AdminController
.has-many-spec .input-group>.form-control:not(:first-child){border-radius:.25rem;}');
Admin::script(file_get_contents(resource_path('js/supplier-batch-add-spec.js')));
})->useTable()->required();
- $form->number('service_persons')->min(1)->required();
+ $form->number('service_persons')->min(1)->default(1)->required();
if ($form->isEditing() && in_array($form->model()->status, [ProductStatus::SOLD_OUT, ProductStatus::ON_SALE])) {
$form->radio('status')->options([1 => '上架', -2 => '下架'])->default(1);
}
@@ -161,6 +162,7 @@ class ProductController extends AdminController
array_flip(Admin::user()->publish_type)
);
+ //0:旅游线路、1:酒店、2:景区、3:餐厅、4:车队、5:单项
$form->radio('type', '产品类型')
->options($publish_type)->disable($form->isEditing())
->default(current(Admin::user()->publish_type))
@@ -168,6 +170,12 @@ class ProductController extends AdminController
if ($form->isEditing() && $form->model()->type != 0) {
return;
}
+ $form->text('extends.field_0_departure_place', '出发地');
+ $form->map('extends.field_0_departure_place_latitude', 'extends.field_0_departure_place_longitude', '出发地位置');
+
+ $form->text('extends.field_0_destination', '目的地');
+ $form->map('extends.field_0_destination_latitude', 'extends.field_0_destination_longitude', '目的地位置');
+
$form->table('extends.field_0_project', '包含项目', function (NestedForm $table) {
$table->text('name', '字段1');
$table->text('num', '字段2');
@@ -230,6 +238,12 @@ class ProductController extends AdminController
$form->text('extends.field_3_name', '餐厅名');
$form->text('extends.field_3_address', '地址');
$form->map('extends.field_3_latitude', 'extends.field_3_longitude', '位置');
+ })->when(4, function (Form $form) { //车队
+ $form->text('extends.field_4_address', '地址');
+ $form->map('extends.field_4_latitude', 'extends.field_4_longitude', '位置');
+ })->when(5, function (Form $form) { //单项
+ $form->text('extends.field_5_address', '地址');
+ $form->map('extends.field_5_latitude', 'extends.field_5_longitude', '位置');
});
if ($form->isEditing()) {
@@ -292,8 +306,47 @@ class ProductController extends AdminController
$form->hidden(['status', 'supplier_id']); //表单没有的字段,必须加上这句才能重置值
$form->supplier_id = Admin::user()->id;
$form->status = ProductStatus::UNAUDITED;
- } else if ($form->isEditing() && in_array($form->model()->status, $user_status) && in_array($form->status, $user_status)) { //如果原来是下架或上架状态才允许修改
- $form->status = $form->status == ProductStatus::ON_SALE ? ProductStatus::ON_SALE : ProductStatus::SOLD_OUT;
+ } else if ($form->isEditing()) {
+ //如果原来是下架或上架状态才允许修改
+ if (in_array($form->model()->status, $user_status) && in_array($form->status, $user_status)) {
+ $form->status = $form->status == ProductStatus::ON_SALE ? ProductStatus::ON_SALE : ProductStatus::SOLD_OUT;
+ }
+
+ //因extends是数组,具有一定的特殊性,不能直接用$form->saved方法中的wasChanged判断是否修改,所以只能在这里做特殊处理
+ if (!is_null($form->extends)) {
+ $old_extends = array_filter($form->model()->extends, fn($v, $k) => str_contains($k, 'field_' . $form->model()->type) && !empty($v), ARRAY_FILTER_USE_BOTH);
+ $new_extends = array_filter($form->extends, fn($v, $k) => str_contains($k, 'field_' . $form->model()->type) && !empty($v), ARRAY_FILTER_USE_BOTH);
+
+ $old = $new = [];
+ array_walk_recursive($old_extends, function($v) use (&$old) {if ($v !== null) $old[] = $v;});
+ array_walk_recursive($new_extends, function($v) use (&$new) {if ($v !== null) $new[] = $v;});
+
+ if (array_diff($old, $new)) {
+ $form->status = ProductStatus::UNAUDITED;
+ }
+ }
+
+ //删除规格不处理,新增规格、修改规格价格或日期,状态都要变为已审核
+ $new_spec = array_filter($form->spec, fn($v) => $v['_remove_'] === null);
+ //判断是否新增规格
+ if (array_filter($new_spec, fn($v) => $v['id'] === null)) {
+ $form->status = ProductStatus::UNAUDITED;
+ }
+ //判断是否修改价格
+ else if ($new_spec) {
+ // $item是旧数据,$form->spec是新修改的数据
+ foreach ($form->model()->spec as $item) {
+ //删除的规格不处理
+ if (!isset($new_spec[$item->id])) {
+ continue;
+ }
+ //修改价格或日期的,设置为未审核,退出循环
+ if ($item->price != $new_spec[$item->id]['price'] || $item->date != $new_spec[$item->id]['date']) {
+ $form->status = ProductStatus::UNAUDITED;
+ break;
+ }
+ }
+ }
} else {
$form->deleteInput('status');
}
@@ -304,7 +357,7 @@ class ProductController extends AdminController
DB::beginTransaction();
try {
//如果修改标题、价格、产品图片、旅游须知、产品详情,状态将变为未审核
- if ($form->model()->wasChanged(['title', 'price', 'original_price', 'pictures', 'know', 'content', 'extends', 'spec'])) {
+ if ($form->model()->wasChanged(['title', 'price', 'original_price', 'pictures', 'know', 'content', 'spec'])) {
$form->model()->update(['status' => ProductStatus::UNAUDITED]);
//下架所有代理商产品,未审核的产品,不能同步信息到代理商产品
diff --git a/app/AdminSupplier/Controllers/ProductStatisticsController.php b/app/AdminSupplier/Controllers/ProductStatisticsController.php
index 1836817..d7092d8 100755
--- a/app/AdminSupplier/Controllers/ProductStatisticsController.php
+++ b/app/AdminSupplier/Controllers/ProductStatisticsController.php
@@ -23,6 +23,7 @@ class ProductStatisticsController extends AdminController
Admin::style(
<< .content-wrapper > .content-header{display: none}
+ #date_time .block > div{display:inline-block;}
.col-sm-12.d-flex{
display: inline-block !important;
}
diff --git a/app/AdminSupplier/Controllers/WithdrawalAlipayController.php b/app/AdminSupplier/Controllers/WithdrawalAlipayController.php
index ff194d8..6ac9fcf 100755
--- a/app/AdminSupplier/Controllers/WithdrawalAlipayController.php
+++ b/app/AdminSupplier/Controllers/WithdrawalAlipayController.php
@@ -4,7 +4,6 @@ namespace App\AdminSupplier\Controllers;
use App\AdminSupplier\Repositories\WithdrawalAlipay;
use App\Common\StatementType;
-use App\Models\Agent;
use App\Models\Supplier;
use App\Models\SystemSetting;
use App\Models\Withdrawal;
@@ -14,11 +13,7 @@ use App\Traits\StatementTraits;
use App\Traits\WithdrawalTraits;
use Dcat\Admin\Admin;
use Dcat\Admin\Form;
-use Dcat\Admin\Grid;
-use Dcat\Admin\Repositories\EloquentRepository;
-use Dcat\Admin\Show;
use Dcat\Admin\Http\Controllers\AdminController;
-use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\DB;
class WithdrawalAlipayController extends AdminController
diff --git a/app/AdminSupplier/Controllers/WithdrawalBankController.php b/app/AdminSupplier/Controllers/WithdrawalBankController.php
index 0d12bdf..376ef47 100755
--- a/app/AdminSupplier/Controllers/WithdrawalBankController.php
+++ b/app/AdminSupplier/Controllers/WithdrawalBankController.php
@@ -4,7 +4,6 @@ namespace App\AdminSupplier\Controllers;
use App\AdminSupplier\Repositories\WithdrawalBank;
use App\Common\StatementType;
-use App\Models\Agent;
use App\Models\Supplier;
use App\Models\SystemSetting;
use App\Models\Withdrawal;
@@ -14,11 +13,7 @@ use App\Traits\StatementTraits;
use App\Traits\WithdrawalTraits;
use Dcat\Admin\Admin;
use Dcat\Admin\Form;
-use Dcat\Admin\Grid;
-use Dcat\Admin\Repositories\EloquentRepository;
-use Dcat\Admin\Show;
use Dcat\Admin\Http\Controllers\AdminController;
-use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\DB;
class WithdrawalBankController extends AdminController
diff --git a/app/AdminSupplier/Controllers/WorkorderController.php b/app/AdminSupplier/Controllers/WorkorderController.php
index ae4afb3..68295cf 100755
--- a/app/AdminSupplier/Controllers/WorkorderController.php
+++ b/app/AdminSupplier/Controllers/WorkorderController.php
@@ -3,21 +3,14 @@
namespace App\AdminSupplier\Controllers;
use App\AdminSupplier\Repositories\Workorder;
-use App\Http\Controllers\Controller;
use App\Models\Agent;
use App\Models\AgentProductItem;
-use App\Models\Guide;
-use App\Models\OrderProductItem;
-use App\Models\Supplier;
use App\Models\WorkorderItem;
use App\Service\Admin\GlobalNoticeService;
use App\Traits\DemandTraits;
-use App\Traits\WorkorderTraits;
use Dcat\Admin\Admin;
use Dcat\Admin\Form;
-use Dcat\Admin\Grid;
use Dcat\Admin\Layout\Content;
-use Dcat\Admin\Show;
use Dcat\Admin\Http\Controllers\AdminController;
use Illuminate\Http\Request;
use App\Traits\ResponseHelper;
diff --git a/app/AdminSupplier/Extensions/Grid/IndustryOrderStatus.php b/app/AdminSupplier/Extensions/Grid/IndustryOrderStatus.php
index 74b3f5e..bc9f48b 100644
--- a/app/AdminSupplier/Extensions/Grid/IndustryOrderStatus.php
+++ b/app/AdminSupplier/Extensions/Grid/IndustryOrderStatus.php
@@ -35,6 +35,10 @@ class IndustryOrderStatus extends RowAction
DB::beginTransaction();
try {
$order = IndustryOrder::where(['id' => $id, 'status' => OrderStatus::OFFLINE_UNPAID])->find($id);
+ if (!$order) {
+ throw new \Exception('订单不存在或者已审核过了');
+ }
+
//操作订单表
$order->status = OrderStatus::OFFLINE_PAID;
$order->paid_at = now();
diff --git a/app/AdminSupplier/Forms/SupplierInfo.php b/app/AdminSupplier/Forms/SupplierInfo.php
index 89bc8a5..c5c182f 100644
--- a/app/AdminSupplier/Forms/SupplierInfo.php
+++ b/app/AdminSupplier/Forms/SupplierInfo.php
@@ -42,12 +42,12 @@ class SupplierInfo extends Form
{
Admin::translation('supplier');
- $this->text('name')->required();
- $this->text('company_name')->disable();
- $this->text('province.name','省份')->disable();
- $this->text('city.name','城市')->disable();
- $this->text('area.name','地区')->disable();
- $this->text('address')->required()->disable();
+ $this->display('company_name');
+ $this->display('province.name','省份');
+ $this->display('city.name','城市');
+ $this->display('area.name','地区');
+ $this->display('address');
+ $this->text('name')->required();
$this->text('director')->required();
$this->text('contact_phone')->required();
$this->image('avatar');
diff --git a/app/AdminSupplier/Renderable/SelectProduct.php b/app/AdminSupplier/Renderable/SelectProduct.php
index 755f07b..c126bf4 100644
--- a/app/AdminSupplier/Renderable/SelectProduct.php
+++ b/app/AdminSupplier/Renderable/SelectProduct.php
@@ -19,7 +19,7 @@ class SelectProduct extends LazyRenderable
// 获取外部传递的参数
// $id = $this->id;
Admin::translation('product');
- return Grid::make(new DemandProduct(['supplier:id,name']), function (Grid $grid) {
+ return Grid::make(new DemandProduct(['supplier:id,company_name']), function (Grid $grid) {
$grid->disableActions();
$grid->disableBatchDelete();
$grid->disableBatchActions();
@@ -29,10 +29,10 @@ class SelectProduct extends LazyRenderable
'supplier_id' => Admin::user()->id,
'status' => ProductStatus::ON_SALE
]);
- $grid->quickSearch(['title', 'supplier.name'])->placeholder('搜索产品名称、供应商');
+ $grid->quickSearch(['title', 'supplier.company_name'])->placeholder('搜索产品名称、供应商');
$grid->column('id');
- $grid->column('supplier.name', '供应商')->display(fn($v) => $v);
+ $grid->column('supplier.company_name', '供应商')->display(fn($v) => $v);
$grid->column('title');
$grid->column('picture')->image('',60, 60);
$grid->column('sale');
@@ -43,7 +43,7 @@ class SelectProduct extends LazyRenderable
$grid->filter(function (Grid\Filter $filter) {
$filter->equal('id')->width(2);
$filter->like('title')->width(4);
- $filter->like('supplier.name', '供应商名称')->width(4);
+ $filter->like('supplier.company_name', '供应商名称')->width(4);
});
});
}
diff --git a/app/AdminSupplier/bootstrap.php b/app/AdminSupplier/bootstrap.php
index 4953500..e2185ac 100644
--- a/app/AdminSupplier/bootstrap.php
+++ b/app/AdminSupplier/bootstrap.php
@@ -27,6 +27,10 @@ use Dcat\Admin\Show;
*/
app('view')->prependNamespace('admin', resource_path('views/admin'));
+if (isset(Admin::user()->status) && Admin::user()->status != 1 || isset(Admin::user()->deleted_at)) {
+ Admin::exit('账号不存在或已被禁用');
+}
+
/**
* 过滤器初始化
*/
diff --git a/app/Http/Controllers/Api/AgentProductController.php b/app/Http/Controllers/Api/AgentProductController.php
index 1cf51b1..f2ad7d8 100644
--- a/app/Http/Controllers/Api/AgentProductController.php
+++ b/app/Http/Controllers/Api/AgentProductController.php
@@ -53,6 +53,28 @@ class AgentProductController extends Controller
return $this->success($list);
}
+ //旅游线路搜索
+ public function travel_search()
+ {
+ $formData = request()->only(['departure_place', 'destination']);
+
+ if (empty($formData['departure_place']) && empty($formData['destination'])) {
+ return $this->error('请输入出发地和目的地');
+ }
+
+ $list = AgentProduct::list($this->agent_id)->whereHas('product', function($query) use ($formData) {
+ if (!empty($formData['departure_place'])) {
+ $query->whereRaw("extends->'$.field_0_departure_place' LIKE ?", ["%{$formData['departure_place']}%"]);
+ }
+ if (!empty($formData['destination'])) {
+ $query->whereRaw("extends->'$.field_0_destination' LIKE ?", ["%{$formData['destination']}%"]);
+ }
+ })->orderBy('id', 'DESC')->simplePaginate();
+
+ $list = $this->paginatePicAddHost($list);
+ return $this->success($list);
+ }
+
// 产品详情
public function show()
{
diff --git a/app/Http/Controllers/Api/OrderController.php b/app/Http/Controllers/Api/OrderController.php
index 8fa0545..e2d061c 100644
--- a/app/Http/Controllers/Api/OrderController.php
+++ b/app/Http/Controllers/Api/OrderController.php
@@ -443,7 +443,7 @@ class OrderController extends Controller
$ap->final_price = count($spec) * $ap->deposit * $formData['num'];
}
else if($formData['pay_type'] == PayType::EARNEST_PAY) { //定金支付
- $ap->final_price = count($spec) * $ap->earnes * $formData['num'];
+ $ap->final_price = count($spec) * $ap->earnest * $formData['num'];
} else {
foreach ($spec as $v) {
$ap->final_price += $v['price'] * $formData['num'];
diff --git a/app/Http/Controllers/Api/SharePayController.php b/app/Http/Controllers/Api/SharePayController.php
index aa94274..b83c97f 100644
--- a/app/Http/Controllers/Api/SharePayController.php
+++ b/app/Http/Controllers/Api/SharePayController.php
@@ -76,7 +76,7 @@ class SharePayController extends Controller
$result = $app->order->unify([
'body' => mb_strcut($order->title, 0, 127),
'out_trade_no' => $order->order_no . '-' . $order->status, //后面加status,主要是为了方便微信支付回调时区分定金(首付款)和尾款支付
- 'total_fee' => 1, //TODO round($price * 100), //支付金额单位为分
+ 'total_fee' => round($price * 100), //支付金额单位为分
'notify_url' => route('wxpay_notify', ['agent_id' => $this->agent_id]), // 支付结果通知网址,如果不设置则会使用配置里的默认地址
'trade_type' => 'JSAPI',
'openid' => $openid,
diff --git a/app/Jobs/UploadMiniProgramQueue.php b/app/Jobs/UploadMiniProgramQueue.php
index 78e7657..373e802 100644
--- a/app/Jobs/UploadMiniProgramQueue.php
+++ b/app/Jobs/UploadMiniProgramQueue.php
@@ -48,7 +48,7 @@ class UploadMiniProgramQueue implements ShouldQueue
try {
new UploadMiniProgram($agent, $template);
} catch (GuzzleException | \Exception $e) {
- throw new Exception($e->getMessage());
+ throw new Exception($agent->id . '-' . $agent->appid . $e->getMessage());
}
}
}
diff --git a/app/Models/Category.php b/app/Models/Category.php
index cbdec96..7a7cf6f 100644
--- a/app/Models/Category.php
+++ b/app/Models/Category.php
@@ -21,7 +21,6 @@ class Category extends BaseModel
'name',
'pid',
'sort',
- 'template',
];
public function __construct(array $attributes = [])
diff --git a/app/Service/UploadMiniProgram.php b/app/Service/UploadMiniProgram.php
index 6e59380..71bc8ea 100644
--- a/app/Service/UploadMiniProgram.php
+++ b/app/Service/UploadMiniProgram.php
@@ -106,7 +106,7 @@ class UploadMiniProgram
throw new Exception($res['errmsg'] ?? join(',', $res));
}
} catch (Exception $e) {
- throw new Exception($agent->id . '-' . $agent->appid . $e->getMessage());
+ throw new Exception($e->getMessage());
}
}
diff --git a/resources/js/agent-spec-edit.js b/resources/js/agent-spec-edit.js
index 42a3e85..14f137d 100644
--- a/resources/js/agent-spec-edit.js
+++ b/resources/js/agent-spec-edit.js
@@ -21,7 +21,7 @@ $(function () {
url: '`{{url}}`',
method: 'POST',
data: {
- product_id: `{{product_id}}`,
+ product_id: $('input[name="product_id"]').val(),
agent_product_id: `{{agent_product_id}}`,
_form_: '`{{class}}`',
},
diff --git a/resources/js/supplier-batch-add-spec.js b/resources/js/supplier-batch-add-spec.js
index 16a8c60..187c6ea 100644
--- a/resources/js/supplier-batch-add-spec.js
+++ b/resources/js/supplier-batch-add-spec.js
@@ -33,7 +33,7 @@ $(function () {
var date = new Date();
date = prompt('请输入起始日期', date.format('yyyy-MM-dd'));
- if (!date) {
+ if (!date || isNaN(new Date(date).getTime())) {
return;
}
diff --git a/resources/lang/zh_CN/agent.php b/resources/lang/zh_CN/agent.php
index ae29c12..5a9addf 100644
--- a/resources/lang/zh_CN/agent.php
+++ b/resources/lang/zh_CN/agent.php
@@ -4,11 +4,13 @@ return [
'Agent' => '代理商',
'agent' => '代理商',
'agent_info' => '代理商信息',
+ 'mini_program' => '小程序管理',
+ 'upload' => '上传',
],
'fields' => [
'account' => '账号',
'password' => '密码',
- 'name' => '代理商名称',
+ 'name' => '代理商简称',
'avatar' => '头像',
'appid' => '微信AppID',
'appsecret' => '微信AppSecret',
diff --git a/resources/lang/zh_CN/order.php b/resources/lang/zh_CN/order.php
index 555309d..aa057da 100644
--- a/resources/lang/zh_CN/order.php
+++ b/resources/lang/zh_CN/order.php
@@ -1,8 +1,9 @@
[
- 'Order' => '订单',
- 'order' => '订单',
+ 'Order' => '订单列表',
+ 'order' => '订单列表',
+ 'group_order' => '订单列表',
],
'fields' => [
'agent_id' => '代理商ID',
diff --git a/resources/lang/zh_CN/supplier.php b/resources/lang/zh_CN/supplier.php
index ec5030b..a9a25cf 100644
--- a/resources/lang/zh_CN/supplier.php
+++ b/resources/lang/zh_CN/supplier.php
@@ -7,7 +7,7 @@ return [
'fields' => [
'account' => '账号',
'password' => '密码',
- 'name' => '供应商名称',
+ 'name' => '供应商简称',
'avatar' => '头像',
'company_name' => '公司名称',
'logo' => 'LOGO',
diff --git a/routes/api.php b/routes/api.php
index 24ded03..90d3495 100644
--- a/routes/api.php
+++ b/routes/api.php
@@ -60,7 +60,8 @@ Route::namespace('App\Http\Controllers\Api')
Route::post('show', 'AgentProductController@show'); //产品详情
Route::post('recommend', 'AgentProductController@recommendList'); //我的下方推荐
Route::post('hot', 'AgentProductController@hotList'); //人气爆款列表
- Route::post('search', 'AgentProductController@search'); //人气爆款列表
+ Route::post('search', 'AgentProductController@search'); //首页搜索框
+ Route::post('travel_search', 'AgentProductController@travel_search'); //旅游线路搜索
});
# 产品分类