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'); //旅游线路搜索 }); # 产品分类