Browse Source

Merge branch 'master' of ssh://8.134.10.79:222/Leadfyy.co/hainan

master
lemon 4 years ago
parent
commit
16cc5064a4
  1. 4
      MySQL_change.sql
  2. 80
      app/Admin/Actions/Grid/BatchAuditProduct.php
  3. 37
      app/Admin/Controllers/AgentController.php
  4. 1
      app/Admin/Controllers/AgentStatisticsController.php
  5. 2
      app/Admin/Controllers/CategoryController.php
  6. 4
      app/Admin/Controllers/DemandProductController.php
  7. 6
      app/Admin/Controllers/IndustryOrderController.php
  8. 12
      app/Admin/Controllers/IndustryProductController.php
  9. 82
      app/Admin/Controllers/MiniProgramController.php
  10. 18
      app/Admin/Controllers/OrderController.php
  11. 1
      app/Admin/Controllers/OrderStatisticsController.php
  12. 15
      app/Admin/Controllers/ProductController.php
  13. 1
      app/Admin/Controllers/ProductStatisticsController.php
  14. 5
      app/Admin/Controllers/SupplierController.php
  15. 1
      app/Admin/Controllers/SupplierStatisticsController.php
  16. 1
      app/Admin/Controllers/UserStatisticsController.php
  17. 133
      app/Admin/Extensions/Form/Radio2.php
  18. 4
      app/Admin/Extensions/Grid/AuditAgent.php
  19. 1
      app/Admin/routes.php
  20. 94
      app/AdminAgent/Actions/Tree/LoadSystemCategory.php
  21. 30
      app/AdminAgent/Controllers/AgentProductController.php
  22. 8
      app/AdminAgent/Controllers/CategoryController.php
  23. 1
      app/AdminAgent/Controllers/FinanceStatisticsController.php
  24. 2
      app/AdminAgent/Controllers/GroupOrderController.php
  25. 4
      app/AdminAgent/Controllers/IndustryOrderController.php
  26. 5
      app/AdminAgent/Controllers/IndustryProductController.php
  27. 42
      app/AdminAgent/Controllers/OrderController.php
  28. 1
      app/AdminAgent/Controllers/OrderStatisticsController.php
  29. 1
      app/AdminAgent/Controllers/ProductStatisticsController.php
  30. 1
      app/AdminAgent/Controllers/SupplierController.php
  31. 1
      app/AdminAgent/Controllers/UserStatisticsController.php
  32. 4
      app/AdminAgent/Controllers/WithdrawalAlipayController.php
  33. 3
      app/AdminAgent/Controllers/WithdrawalBankController.php
  34. 7
      app/AdminAgent/Controllers/WorkorderController.php
  35. 8
      app/AdminAgent/Renderable/SelectProduct.php
  36. 4
      app/AdminAgent/bootstrap.php
  37. 8
      app/AdminGuide/Controllers/OrderController.php
  38. 1
      app/AdminGuide/Controllers/WalletController.php
  39. 5
      app/AdminGuide/Controllers/WithdrawalAlipayController.php
  40. 5
      app/AdminGuide/Controllers/WithdrawalBankController.php
  41. 8
      app/AdminGuide/Controllers/WorkorderController.php
  42. 4
      app/AdminGuide/bootstrap.php
  43. 2
      app/AdminSupplier/Controllers/AgentController.php
  44. 6
      app/AdminSupplier/Controllers/DepositLogController.php
  45. 11
      app/AdminSupplier/Controllers/DiyFormController.php
  46. 1
      app/AdminSupplier/Controllers/FinanceStatisticsController.php
  47. 4
      app/AdminSupplier/Controllers/IndustryOrderController.php
  48. 27
      app/AdminSupplier/Controllers/IndustryProductController.php
  49. 39
      app/AdminSupplier/Controllers/OrderController.php
  50. 1
      app/AdminSupplier/Controllers/OrderStatisticsController.php
  51. 61
      app/AdminSupplier/Controllers/ProductController.php
  52. 1
      app/AdminSupplier/Controllers/ProductStatisticsController.php
  53. 5
      app/AdminSupplier/Controllers/WithdrawalAlipayController.php
  54. 5
      app/AdminSupplier/Controllers/WithdrawalBankController.php
  55. 7
      app/AdminSupplier/Controllers/WorkorderController.php
  56. 4
      app/AdminSupplier/Extensions/Grid/IndustryOrderStatus.php
  57. 12
      app/AdminSupplier/Forms/SupplierInfo.php
  58. 8
      app/AdminSupplier/Renderable/SelectProduct.php
  59. 4
      app/AdminSupplier/bootstrap.php
  60. 22
      app/Http/Controllers/Api/AgentProductController.php
  61. 2
      app/Http/Controllers/Api/OrderController.php
  62. 2
      app/Http/Controllers/Api/SharePayController.php
  63. 2
      app/Jobs/UploadMiniProgramQueue.php
  64. 1
      app/Models/Category.php
  65. 2
      app/Service/UploadMiniProgram.php
  66. 2
      resources/js/agent-spec-edit.js
  67. 2
      resources/js/supplier-batch-add-spec.js
  68. 4
      resources/lang/zh_CN/agent.php
  69. 5
      resources/lang/zh_CN/order.php
  70. 2
      resources/lang/zh_CN/supplier.php
  71. 3
      routes/api.php

4
MySQL_change.sql

@ -201,3 +201,7 @@ CREATE TABLE `diy_form_fields` (
COMMENT='自定义表单字段'
COLLATE='utf8_general_ci'
ENGINE=InnoDB;
# 15:24 2021/10/9
ALTER TABLE `categories`
DROP COLUMN `template`;

80
app/Admin/Actions/Grid/BatchAuditProduct.php

@ -0,0 +1,80 @@
<?php
namespace App\Admin\Actions\Grid;
use Dcat\Admin\Actions\Response;
use Dcat\Admin\Grid\BatchAction;
use Dcat\Admin\Traits\HasPermissions;
use Illuminate\Contracts\Auth\Authenticatable;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Http\Request;
/**
* 批量审核产品
* Class BatchAuditProduct
* @package App\Admin\Actions\Grid
*/
class BatchAuditProduct extends BatchAction
{
/**
* @return string
*/
protected $title = '批量审核';
public function __construct($title = null)
{
parent::__construct($title);
}
public function render()
{
$redirect = request()->fullUrl();
return <<<HTML
<a data-name="{$this->parent->getName()}"
data-action="batch-delete"
data-redirect="{$redirect}"
data-url="{$this->resource()}"><i class="fa fa-check-square"></i> {$this->title}</a>
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 [];
}
}

37
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('&nbsp;');
$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('&nbsp;');
$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('&nbsp;');
$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('<br>(模板' . $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);
});
});

1
app/Admin/Controllers/AgentStatisticsController.php

@ -20,6 +20,7 @@ class AgentStatisticsController extends AdminController
Admin::style(
<<<CSS
.app-content > .content-wrapper > .content-header{display: none}
#date_time .block > div{display:inline-block;}
.col-sm-12.d-flex{
display: inline-block !important;
}

2
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');
});
}

4
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('')

6
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');

12
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();

82
app/Admin/Controllers/MiniProgramController.php

@ -0,0 +1,82 @@
<?php
namespace App\Admin\Controllers;
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\Common\AgentType;
use App\Common\UserStatus;
use App\Models\Agent;
use App\Models\MiniProgramTemplate;
use Dcat\Admin\Grid;
use Dcat\Admin\Http\Controllers\AdminController;
class MiniProgramController extends AdminController
{
protected $title = '小程序管理';
protected $translation = 'agent';
/**
* Make a grid builder.
*
* @return Grid
*/
protected function grid()
{
return Grid::make(new Agent(), function (Grid $grid) {
$grid->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('&nbsp;');
$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('&nbsp;');
$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('<br>(模板' . $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);
});
});
}
}

18
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,
'<img data-action="preview-img" src="'.$this->picture.'" style="max-width:120px;max-height:200px;cursor:pointer" class="img img-thumbnail">',
$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');

1
app/Admin/Controllers/OrderStatisticsController.php

@ -23,6 +23,7 @@ class OrderStatisticsController extends AdminController
Admin::style(
<<<CSS
.app-content > .content-wrapper > .content-header{display: none}
#date_time .block > div{display:inline-block;}
.col-sm-12.d-flex{
display: inline-block !important;
}

15
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.*?>.*?<\/script>/is', '', $v));
$show->field('content')->unescape()->as(fn($v) => preg_replace('/<script.*?>.*?<\/script>/is', '', $v));
$show->field('created_at');

1
app/Admin/Controllers/ProductStatisticsController.php

@ -33,6 +33,7 @@ class ProductStatisticsController extends AdminController
Admin::style(
<<<CSS
.app-content > .content-wrapper > .content-header{display: none}
#date_time .block > div{display:inline-block;}
.col-sm-12.d-flex{
display: inline-block !important;
}

5
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);
});
});

1
app/Admin/Controllers/SupplierStatisticsController.php

@ -20,6 +20,7 @@ class SupplierStatisticsController extends AdminController
Admin::style(
<<<CSS
.app-content > .content-wrapper > .content-header{display: none}
#date_time .block > div{display:inline-block;}
.col-sm-12.d-flex{
display: inline-block !important;
}

1
app/Admin/Controllers/UserStatisticsController.php

@ -20,6 +20,7 @@ class UserStatisticsController extends AdminController
Admin::style(
<<<CSS
.app-content > .content-wrapper > .content-header{display: none}
#date_time .block > div{display:inline-block;}
.col-sm-12.d-flex{
display: inline-block !important;
}

133
app/Admin/Extensions/Form/Radio2.php

@ -0,0 +1,133 @@
<?php
namespace App\Admin\Extensions\Form;
use Dcat\Admin\Form\Field\Radio;
use Dcat\Admin\Widgets\Radio as WidgetRadio;
/**
* 由于信息收集表单中,hasMany中的radio存在多个时出现问题,故重写覆盖
* Class Radio2
* @package App\Admin\Extensions\Form
*/
class Radio2 extends Radio
{
protected $view = 'admin::form.radio';
/**
* {@inheritdoc}
*/
public function render()
{
if ($this->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 <<<JS
(function () {
var compare = function (a, b, o) {
if (! $.isArray(b)) {
return operator_table[o](a, b)
}
if (o === '!=') {
var result = true;
for (var i in b) {
if (! operator_table[o](a, b[i])) {
result = false;
break;
}
}
return result;
}
for (var i in b) {
if (operator_table[o](a, b[i])) {
return true;
}
}
};
var operator_table = {
'=': function(a, b) {
if ($.isArray(a) && $.isArray(b)) {
return $(a).not(b).length === 0 && $(b).not(a).length === 0;
}
return String(a) === String(b);
},
'>': 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;
}
}

4
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) {

1
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');

94
app/AdminAgent/Actions/Tree/LoadSystemCategory.php

@ -0,0 +1,94 @@
<?php
namespace App\AdminAgent\Actions\Tree;
use App\Models\Category;
use Dcat\Admin\Actions\Response;
use Dcat\Admin\Admin;
use Dcat\Admin\Traits\HasPermissions;
use Dcat\Admin\Tree\AbstractTool;
use Illuminate\Contracts\Auth\Authenticatable;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Http\Request;
class LoadSystemCategory extends AbstractTool
{
/**
* @return string
*/
protected $title = '导入系统分类';
/**
* Handle the action request.
*
* @param Request $request
*
* @return Response
*/
public function handle(Request $request)
{
$system_cate = Category::where('agent_id', 0)->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;
}
}

30
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
? "<img data-action=\"preview-img\" src=\"{$this->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);

8
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) {

1
app/AdminAgent/Controllers/FinanceStatisticsController.php

@ -24,6 +24,7 @@ class FinanceStatisticsController extends AdminController
Admin::style(
<<<CSS
.app-content > .content-wrapper > .content-header{display: none}
#date_time .block > div{display:inline-block;}
.col-sm-12.d-flex{
display: inline-block !important;
}

2
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);

4
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');

5
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'));

42
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 . '<img data-action="preview-img" src="' . $v3 . '" style="max-width:120px;max-height:200px;cursor:pointer" class="img img-thumbnail"> &nbsp;');
} else {
return '<img data-action="preview-img" src="' . $v['value'] . '" style="max-width:120px;max-height:200px;cursor:pointer" class="img img-thumbnail">';
}
} 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 ?? '',
'<img data-action="preview-img" src="' . $picture . '" style="max-width:120px;max-height:200px;cursor:pointer" class="img img-thumbnail">',
$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');

1
app/AdminAgent/Controllers/OrderStatisticsController.php

@ -23,6 +23,7 @@ class OrderStatisticsController extends AdminController
Admin::style(
<<<CSS
.app-content > .content-wrapper > .content-header{display: none}
#date_time .block > div{display:inline-block;}
.col-sm-12.d-flex{
display: inline-block !important;
}

1
app/AdminAgent/Controllers/ProductStatisticsController.php

@ -26,6 +26,7 @@ class ProductStatisticsController extends AdminController
Admin::style(
<<<CSS
.app-content > .content-wrapper > .content-header{display: none}
#date_time .block > div{display:inline-block;}
.col-sm-12.d-flex{
display: inline-block !important;
}

1
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');

1
app/AdminAgent/Controllers/UserStatisticsController.php

@ -20,6 +20,7 @@ class UserStatisticsController extends AdminController
Admin::style(
<<<CSS
.app-content > .content-wrapper > .content-header{display: none}
#date_time .block > div{display:inline-block;}
.col-sm-12.d-flex{
display: inline-block !important;
}

4
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

3
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

7
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;

8
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);
});
});
}

4
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('账号不存在或已被禁用');
}
/**
* 过滤器初始化
*/

8
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);

1
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(
<<<HTML

5
app/AdminGuide/Controllers/WithdrawalAlipayController.php

@ -4,7 +4,6 @@ namespace App\AdminGuide\Controllers;
use App\AdminGuide\Repositories\WithdrawalAlipay;
use App\Common\StatementType;
use App\Models\Agent;
use App\Models\Guide;
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

5
app/AdminGuide/Controllers/WithdrawalBankController.php

@ -4,7 +4,6 @@ namespace App\AdminGuide\Controllers;
use App\AdminGuide\Repositories\WithdrawalBank;
use App\Common\StatementType;
use App\Models\Agent;
use App\Models\Guide;
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

8
app/AdminGuide/Controllers/WorkorderController.php

@ -4,21 +4,13 @@ namespace App\AdminGuide\Controllers;
use App\AdminGuide\Repositories\Workorder;
use App\Common\AgentType;
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;

4
app/AdminGuide/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('账号不存在或已被禁用');
}
/**
* 过滤器初始化
*/

2
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);
});

6
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();

11
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) {
//不允许编辑非自己数据

1
app/AdminSupplier/Controllers/FinanceStatisticsController.php

@ -23,6 +23,7 @@ class FinanceStatisticsController extends AdminController
Admin::style(
<<<CSS
.app-content > .content-wrapper > .content-header{display: none}
#date_time .block > div{display:inline-block;}
.col-sm-12.d-flex{
display: inline-block !important;
}

4
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');

27
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;
}
}
}
//判断可用交易金是否充足

39
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 . '<img data-action="preview-img" src="' . $v3 . '" style="max-width:120px;max-height:200px;cursor:pointer" class="img img-thumbnail"> &nbsp;');
} else {
return '<img data-action="preview-img" src="' . $v['value'] . '" style="max-width:120px;max-height:200px;cursor:pointer" class="img img-thumbnail">';
}
} 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');

1
app/AdminSupplier/Controllers/OrderStatisticsController.php

@ -23,6 +23,7 @@ class OrderStatisticsController extends AdminController
Admin::style(
<<<CSS
.app-content > .content-wrapper > .content-header{display: none}
#date_time .block > div{display:inline-block;}
.col-sm-12.d-flex{
display: inline-block !important;
}

61
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]);
//下架所有代理商产品,未审核的产品,不能同步信息到代理商产品

1
app/AdminSupplier/Controllers/ProductStatisticsController.php

@ -23,6 +23,7 @@ class ProductStatisticsController extends AdminController
Admin::style(
<<<CSS
.app-content > .content-wrapper > .content-header{display: none}
#date_time .block > div{display:inline-block;}
.col-sm-12.d-flex{
display: inline-block !important;
}

5
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

5
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

7
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;

4
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();

12
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');

8
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);
});
});
}

4
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('账号不存在或已被禁用');
}
/**
* 过滤器初始化
*/

22
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()
{

2
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'];

2
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,

2
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());
}
}
}

1
app/Models/Category.php

@ -21,7 +21,6 @@ class Category extends BaseModel
'name',
'pid',
'sort',
'template',
];
public function __construct(array $attributes = [])

2
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());
}
}

2
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}}`',
},

2
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;
}

4
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',

5
resources/lang/zh_CN/order.php

@ -1,8 +1,9 @@
<?php
return [
'labels' => [
'Order' => '订单',
'order' => '订单',
'Order' => '订单列表',
'order' => '订单列表',
'group_order' => '订单列表',
],
'fields' => [
'agent_id' => '代理商ID',

2
resources/lang/zh_CN/supplier.php

@ -7,7 +7,7 @@ return [
'fields' => [
'account' => '账号',
'password' => '密码',
'name' => '供应商称',
'name' => '供应商称',
'avatar' => '头像',
'company_name' => '公司名称',
'logo' => 'LOGO',

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

Loading…
Cancel
Save