531 lines
23 KiB
PHP
531 lines
23 KiB
PHP
<?php
|
|
/**
|
|
* Created by PhpStorm.
|
|
* User: shenyang
|
|
* Date: 2018/12/24
|
|
* Time: 3:38 PM
|
|
*/
|
|
|
|
namespace Yunshop\AreaDividend;
|
|
|
|
use app\backend\modules\menu\Menu;
|
|
use app\common\facades\Setting;
|
|
use app\common\models\MemberCart;
|
|
use app\common\modules\shop\ShopConfig;
|
|
use Config;
|
|
use Yunshop\AreaDividend\Listener\CreatedCommissionListener;
|
|
use Yunshop\AreaDividend\Listener\OrderCreatedListener;
|
|
use Yunshop\AreaDividend\Listener\OrderFailureListener;
|
|
use Yunshop\AreaDividend\Listener\OrderReceiveListener;
|
|
use Yunshop\AreaDividend\models\AreaDividendAgent;
|
|
use Yunshop\AreaDividend\services\TimedTaskService;
|
|
use Yunshop\Supplier\common\modules\order\OrderManager;
|
|
|
|
class PluginApplication extends \app\common\services\PluginApplication
|
|
{
|
|
|
|
public function getIncomePageItems()
|
|
{
|
|
return [
|
|
'areaDividend' => [
|
|
'class' => 'Yunshop\AreaDividend\Frontend\Services\IncomePageService',
|
|
'type' => 'industry'
|
|
]
|
|
];
|
|
}
|
|
|
|
public function incomePageIdentity($memberId)
|
|
{
|
|
$levelModel = AreaDividendAgent::uniacid()->where('member_id', $memberId)->where('status', 1)->first();
|
|
if ($levelModel && $levelModel->level_name) {
|
|
return [$levelModel->level_name];
|
|
}
|
|
return [""];
|
|
}
|
|
|
|
public function getTemplateItems()
|
|
{
|
|
return ['area_dividend_become_agent' => [
|
|
'title' => trans('Yunshop\AreaDividend::index.title') . "成为区域代理通知",
|
|
'subtitle' => '成为区域代理通知',
|
|
'value' => 'area_dividend_become_agent',
|
|
'param' => [
|
|
'昵称', '时间', '省', '市', '区/县', '街道/乡镇'
|
|
]
|
|
], 'area_dividend_statement_notice' => [
|
|
'title' => trans('Yunshop\AreaDividend::index.title') . "分红结算通知",
|
|
'subtitle' => '分红结算通知',
|
|
'value' => 'area_dividend_statement_notice',
|
|
'param' => [
|
|
'昵称', '时间', '等级', '金额'
|
|
]
|
|
]];
|
|
}
|
|
|
|
protected function setConfig()
|
|
{
|
|
\app\common\modules\shop\ShopConfig::current()->set('plugins.area-dividend.id', 10);
|
|
|
|
// 手动分红配置
|
|
\app\common\modules\shop\ShopConfig::current()->set('manual_arr.area_dividend_and_level', [
|
|
'uidColumn' => 'member_id',
|
|
'levelNameColumn' => 'level_name',
|
|
'relationsColumn' => 'agent_level',
|
|
'enableLevel' => true,
|
|
'type_name' => '区域代理',
|
|
'role_type' => 'area_dividend_and_level'
|
|
]);
|
|
|
|
\app\common\modules\shop\ShopConfig::current()->set('manual_arr_cfg.area_dividend_and_level', [
|
|
'roleTableClass' => \Yunshop\AreaDividend\models\AreaDividendAgent::class
|
|
]);
|
|
|
|
|
|
\app\common\modules\shop\ShopConfig::current()->set('plugin.areaDividend', [
|
|
'title' => trans('Yunshop\AreaDividend::index.title'),
|
|
'ico' => 'icon-quyu01',
|
|
'type' => 'areaDividend',
|
|
'class' => 'Yunshop\AreaDividend\models\AreaDividend',
|
|
'order_class' => '',
|
|
'agent_class' => 'Yunshop\AreaDividend\models\AreaDividendAgent',
|
|
'agent_name' => 'getAgentByMemberId',
|
|
'agent_status' => '1',
|
|
]);
|
|
|
|
\app\common\modules\shop\ShopConfig::current()->set('observer.goods.area_dividend', [
|
|
'class' => 'Yunshop\AreaDividend\models\AreaDividendGoods',
|
|
'function_validator' => 'relationValidator',
|
|
'function_save' => 'relationSave'
|
|
]);
|
|
|
|
|
|
\app\common\modules\shop\ShopConfig::current()->push('shop-foundation.member-cart.with', 'goods.areaDividendGoods');
|
|
\app\common\modules\shop\ShopConfig::current()->push('shop-foundation.member-cart.with', 'goods.areaDividendGoods');
|
|
|
|
}
|
|
|
|
public function getShopConfigItems()
|
|
{
|
|
return [];
|
|
}
|
|
|
|
public function getWidgetItems()
|
|
{
|
|
return ['goods.tab_area_dividend' => [
|
|
'title' => trans('Yunshop\AreaDividend::index.title'),
|
|
'class' => 'Yunshop\AreaDividend\widgets\DividendWidget'
|
|
], 'withdraw.tab_area_dividend' => [
|
|
'title' => '区域分红提现',
|
|
'class' => 'Yunshop\AreaDividend\widgets\AreaDividendWithdrawWidget'
|
|
], 'vue-goods.area_dividend' => [
|
|
'title' => trans('Yunshop\AreaDividend::index.title'),
|
|
'class' => \Yunshop\AreaDividend\widgets\DividendVueWidget::class,
|
|
]];
|
|
}
|
|
|
|
protected function setMenuConfig()
|
|
{
|
|
/**
|
|
* 区域分红菜单
|
|
*/
|
|
\app\backend\modules\menu\Menu::current()->setPluginMenu('area_dividend', [
|
|
'name' => '区域分红',
|
|
'type' => 'marketing',
|
|
'url' => 'plugin.area-dividend.admin.area-dividend-set.index',
|
|
'url_params' => '',
|
|
'permit' => 1,
|
|
'menu' => 1,
|
|
'top_show' => 0,
|
|
'left_first_show' => 0,
|
|
'left_second_show' => 1,
|
|
'icon' => 'fa-child',//菜单图标
|
|
'list_icon' => 'area_dividend',//菜单图标
|
|
'parents' => [],
|
|
'child' => [
|
|
'area_dividend_set' => [
|
|
'name' => '分红设置',
|
|
'permit' => 1,
|
|
'menu' => 1,
|
|
'icon' => '',
|
|
'url' => 'plugin.area-dividend.admin.area-dividend-set.index',
|
|
'url_params' => '',
|
|
'parents' => ['area_dividend'],
|
|
'child' => [
|
|
'dividend_set' => [
|
|
'name' => '分红设置',
|
|
'url' => 'plugin.area-dividend.admin.area-dividend-set.index',
|
|
'permit' => 1,
|
|
'menu' => 0,
|
|
'parents' => ['area_dividend', 'area_dividend_set'],
|
|
]
|
|
]
|
|
],
|
|
'area_dividend_agent' => [
|
|
'name' => '区域代理管理',
|
|
'permit' => 1,
|
|
'menu' => 1,
|
|
'icon' => '',
|
|
'url' => 'plugin.area-dividend.admin.agent.index',
|
|
'url_params' => '',
|
|
'parents' => ['area_dividend'],
|
|
'child' => [
|
|
'agent_index' => [
|
|
'name' => '代理列表',
|
|
'url' => 'plugin.area-dividend.admin.agent.index',
|
|
'permit' => 1,
|
|
'menu' => 0,
|
|
'parents' => ['area_dividend', 'area_dividend_agent']
|
|
],
|
|
'agent_add' => [
|
|
'name' => '添加代理',
|
|
'url' => 'plugin.area-dividend.admin.agent.create-agent',
|
|
'permit' => 1,
|
|
'menu' => 0,
|
|
'parents' => ['area_dividend',
|
|
'area_dividend_agent']
|
|
],
|
|
'agent_deleted' => ['name' => '删除代理',
|
|
'permit' => 1,
|
|
'url' => 'plugin.area-dividend.admin.agent.daletedAgency',
|
|
'menu' => 0,
|
|
'parents' => ['area_dividend', 'area_dividend_agent']
|
|
],
|
|
'agent_edit' => ['name' => '编辑账号',
|
|
'permit' => 1,
|
|
'url' => 'plugin.area-dividend.admin.agent.editAgency',
|
|
'menu' => 0,
|
|
'parents' => ['area_dividend', 'area_dividend_agent']
|
|
],
|
|
'agent_update_level' => ['name' => '修改代理等级',
|
|
'permit' => 0,
|
|
'url' => 'plugin.area-dividend.admin.agent.change',
|
|
'menu' => 0,
|
|
'parents' => ['area_dividend', 'area_dividend_agent']
|
|
],
|
|
'agent_export' => [
|
|
'name' => '导出 EXCEL',
|
|
'url' => 'plugin.area-dividend.admin.agent.export',
|
|
'permit' => 1,
|
|
'menu' => 0,
|
|
'parents' => ['area_dividend', 'area_dividend_agent']
|
|
],
|
|
]
|
|
],
|
|
'area_dividend_agent_apply' => [
|
|
'name' => '区域代理申请',
|
|
'permit' => 1,
|
|
'menu' => 1,
|
|
'icon' => '',
|
|
'url' => 'plugin.area-dividend.admin.agent.agent-apply',
|
|
'url_params' => '',
|
|
'parents' => ['area_dividend'],
|
|
'child' => [
|
|
'agent_apply' => [
|
|
'name' => '查看申请',
|
|
'url' => 'plugin.area-dividend.admin.agent.agent-apply',
|
|
'permit' => 1,
|
|
'menu' => 0,
|
|
'parents' => ['area_dividend', 'area_dividend_agent_apply'],
|
|
],
|
|
'apply' => [
|
|
'name' => '申请审核',
|
|
'url' => 'plugin.area-dividend.admin.agent.cope-apply',
|
|
'permit' => 1,
|
|
'menu' => 0,
|
|
'parents' => ['area_dividend', 'area_dividend_agent_apply'],
|
|
]
|
|
]
|
|
],
|
|
'area_dividend_log' => [
|
|
'name' => '区域分红记录',
|
|
'permit' => 1,
|
|
'menu' => 1,
|
|
'icon' => '',
|
|
'url' => 'plugin.area-dividend.admin.dividend.get-list',
|
|
'url_params' => '',
|
|
'parents' => ['area_dividend'],
|
|
'child' => [
|
|
'agent_apply' => [
|
|
'name' => '查看记录',
|
|
'url' => 'plugin.area-dividend.admin.dividend.get-list',
|
|
'permit' => 1,
|
|
'menu' => 0,
|
|
'parents' => ['area_dividend', 'area_dividend_log'],
|
|
],
|
|
'agent_export' => [
|
|
'name' => '导出',
|
|
'url' => 'plugin.area-dividend.admin.dividend.export',
|
|
'permit' => 1,
|
|
'menu' => 0,
|
|
'parents' => ['area_dividend', 'area_dividend_log'],
|
|
],
|
|
'agent_detail' => [
|
|
'name' => '查看详情',
|
|
'url' => 'plugin.area-dividend.admin.dividend.get-detail',
|
|
'permit' => 1,
|
|
'menu' => 0,
|
|
'parents' => ['area_dividend', 'area_dividend_log'],
|
|
]
|
|
]
|
|
]
|
|
|
|
|
|
]
|
|
]);
|
|
$area = \Yunshop\AreaDividend\models\AreaDividendAgent::getAgentByUserId(\YunShop::app()->uid)->first();
|
|
if ($area) {
|
|
Config::set('menu', []);
|
|
Menu::current()->setMainMenu('area_admin_menu', [
|
|
'name' => '区域',
|
|
'url' => 'plugin.area-dividend.area.order-manage.index',// url 可以填写http 也可以直接写路由
|
|
'urlParams' => '',//如果是url填写的是路由则启用参数否则不启用
|
|
'permit' => 0,//如果不设置则不会做权限检测
|
|
'menu' => 1,//如果不设置则不显示菜单,子菜单也将不显示
|
|
'icon' => 'fa-home',//菜单图标
|
|
'parents' => [],
|
|
'top_show' => 0,
|
|
'left_first_show' => 1,
|
|
'left_second_show' => 1,
|
|
'child' => [
|
|
'area_admin_order' => [
|
|
'name' => '区域订单',
|
|
'url' => 'plugin.area-dividend.area.area-order.index',
|
|
'url_params' => '',
|
|
'permit' => 0,
|
|
'menu' => 1,
|
|
'icon' => '',
|
|
'item' => 'area_admin_order',
|
|
'parents' => ['area_admin_menu'],
|
|
'child' => [
|
|
'area_order_export' => [
|
|
'name' => '导出',
|
|
'url' => 'plugin.area-dividend.area.area-order.export',
|
|
'permit' => 0,
|
|
'menu' => 0,
|
|
'parents' => ['area_admin_menu', 'area_admin_order'],
|
|
],
|
|
]
|
|
],
|
|
'area_admin_shop' => [
|
|
'name' => '区域商家',
|
|
'url' => 'plugin.area-dividend.area.area-shop.index',
|
|
'url_params' => '',
|
|
'permit' => 0,
|
|
'menu' => 1,
|
|
'icon' => '',
|
|
'item' => 'area_admin_shop',
|
|
'parents' => ['area_admin_menu'],
|
|
'child' => [
|
|
'shop_export' => [
|
|
'name' => '导出',
|
|
'url' => 'plugin.area-dividend.area.area-shop.export',
|
|
'permit' => 0,
|
|
'menu' => 0,
|
|
'parents' => ['area_admin_menu', 'area_admin_shop'],
|
|
],
|
|
]
|
|
],
|
|
'area_admin_dividend_log' => [
|
|
'name' => '区域分红',
|
|
'url' => 'plugin.area-dividend.area.dividend-log.index',
|
|
'url_params' => '',
|
|
'permit' => 0,
|
|
'menu' => 1,
|
|
'icon' => '',
|
|
'item' => 'area_admin_dividend_log',
|
|
'parents' => ['area_admin_menu'],
|
|
'child' => [
|
|
'dividend_export' => [
|
|
'name' => '导出',
|
|
'url' => 'plugin.area-dividend.area.dividend-log.export',
|
|
'permit' => 0,
|
|
'menu' => 0,
|
|
'parents' => ['area_admin_menu', 'area_admin_dividend_log'],
|
|
],
|
|
]
|
|
],
|
|
'area_admin_return_address' => [
|
|
'name' => '退货地址设置',
|
|
'url' => 'plugin.area-dividend.area.return-address.index',
|
|
'url_params' => '',
|
|
'permit' => 0,
|
|
'menu' => 1,
|
|
'icon' => '',
|
|
'item' => 'area_admin_return_address',
|
|
'parents' => ['area_admin_menu'],
|
|
'child' => [
|
|
'area_admin_return_address_add' => [
|
|
'name' => '添加',
|
|
'url' => 'plugin.area-dividend.area.return-address.add',
|
|
'permit' => 0,
|
|
'menu' => 0,
|
|
'parents' => ['area_admin_menu', 'area_admin_return_address'],
|
|
],
|
|
'area_admin_return_address_edit' => [
|
|
'name' => '修改',
|
|
'url' => 'plugin.area-dividend.area.return-address.edit',
|
|
'permit' => 0,
|
|
'menu' => 0,
|
|
'parents' => ['area_admin_menu', 'area_admin_return_address'],
|
|
],
|
|
'area_admin_return_address_del' => [
|
|
'name' => '删除',
|
|
'url' => 'plugin.area-dividend.area.return-address.delete',
|
|
'permit' => 0,
|
|
'menu' => 0,
|
|
'parents' => ['area_admin_menu', 'area_admin_return_address'],
|
|
],
|
|
]
|
|
],
|
|
'area_admin_order_manage' => [
|
|
'name' => '订单列表',
|
|
'url' => 'plugin.area-dividend.area.order-manage.index',
|
|
'url_params' => '',
|
|
'permit' => 0,
|
|
'menu' => 1,
|
|
'icon' => '',
|
|
'item' => 'area_admin_order_manage',
|
|
'parents' => ['area_admin_menu'],
|
|
'child' => [
|
|
'area_admin_order_detail' => [
|
|
'name' => '订单详情',
|
|
'url' => 'plugin.area-dividend.area.order-detail.index',
|
|
'permit' => 0,
|
|
'menu' => 0,
|
|
'parents' => ['area_admin_menu', 'area_admin_order_manage'],
|
|
],
|
|
'area_admin_order_refund_reject' => [
|
|
'name' => '驳回',
|
|
'url' => 'refund.operation.reject',
|
|
'permit' => 0,
|
|
'menu' => 0,
|
|
'parents' => ['area_admin_menu', 'area_admin_order_manage'],
|
|
],
|
|
'area_admin_order_refund_pass' => [
|
|
'name' => '通过',
|
|
'url' => 'refund.operation.pass',
|
|
'permit' => 0,
|
|
'menu' => 0,
|
|
'parents' => ['area_admin_menu', 'area_admin_order_manage'],
|
|
],
|
|
'area_admin_order_operation_send' => [
|
|
'name' => '发货',
|
|
'url' => 'order.operation.send',
|
|
'permit' => 0,
|
|
'menu' => 0,
|
|
'parents' => ['area_admin_menu', 'area_admin_order_manage'],
|
|
],
|
|
'area_admin_order_operation_cancel_send' => [
|
|
'name' => '取消发货',
|
|
'url' => 'order.operation.cancel-send',
|
|
'permit' => 0,
|
|
'menu' => 0,
|
|
'parents' => ['area_admin_menu', 'area_admin_order_manage'],
|
|
],
|
|
//order.operation.cancel-send
|
|
]
|
|
],
|
|
'area_admin_store_order_manage' => [
|
|
'name' => '门店订单列表',
|
|
'url' => 'plugin.area-dividend.area.store-order-manage.index',
|
|
'url_params' => '',
|
|
'permit' => 0,
|
|
'menu' => 1,
|
|
'icon' => '',
|
|
'item' => 'area_admin_store_order_manage',
|
|
'parents' => ['area_admin_menu'],
|
|
'child' => [
|
|
'area_admin_store-order_detail' => [
|
|
'name' => '门店订单详情',
|
|
'url' => 'plugin.area-dividend.area.order-detail.store-index',
|
|
'permit' => 0,
|
|
'menu' => 0,
|
|
'parents' => ['area_admin_menu', 'area_admin_store_order_manage'],
|
|
],
|
|
//order.operation.cancel-send
|
|
]
|
|
],
|
|
'area_admin_order_batch_send' => [
|
|
'name' => '批量发货',
|
|
'url' => 'plugin.area-dividend.area.batch-send.index',
|
|
'url_params' => '',
|
|
'permit' => 0,
|
|
'menu' => 1,
|
|
'icon' => '',
|
|
'item' => 'area_admin_order_batch_send',
|
|
'parents' => ['area_admin_menu'],
|
|
'child' => [
|
|
'area_admin_order_batch_send_example' => [
|
|
'name' => '下载模版',
|
|
'url' => 'plugin.area-dividend.area.batch-send..get-example',
|
|
'permit' => 0,
|
|
'menu' => 0,
|
|
'parents' => ['area_admin_menu', 'area_admin_order_batch_send'],
|
|
],
|
|
]
|
|
],
|
|
]
|
|
]);
|
|
|
|
}
|
|
}
|
|
|
|
public function getIncomeItems()
|
|
{
|
|
$lang = \Setting::get('shop.lang', ['lang' => 'zh_cn'])['zh_cn']['area_dividend'];
|
|
|
|
return ['areaDividend' => [
|
|
'title' => $lang['title'] ?: trans('Yunshop\AreaDividend::index.title'),
|
|
'type' => 'areaDividend',
|
|
'class' => 'Yunshop\AreaDividend\models\AreaDividend',
|
|
'order_class' => '',
|
|
]];
|
|
}
|
|
|
|
public function boot()
|
|
{
|
|
$events = app('events');
|
|
/**
|
|
* 创建订单
|
|
* OrderCreatedListener
|
|
*/
|
|
$events->subscribe(OrderCreatedListener::class);
|
|
$events->subscribe(CreatedCommissionListener::class);
|
|
|
|
/**
|
|
* 订单收货
|
|
* OrderReceiveListener
|
|
*
|
|
*/
|
|
$events->subscribe(OrderReceiveListener::class);
|
|
/**
|
|
* 订单失效
|
|
* OrderReceiveListener
|
|
*
|
|
*/
|
|
$events->subscribe(OrderFailureListener::class);
|
|
|
|
|
|
/*
|
|
* 定时任务处理
|
|
*
|
|
*/
|
|
\Event::listen('cron.collectJobs', function () {
|
|
\Cron::add('Area-dividend', '*/1 * * * *', function () {
|
|
(new TimedTaskService())->handle();
|
|
return;
|
|
});
|
|
});
|
|
|
|
}
|
|
|
|
public function register()
|
|
{
|
|
$this->singleton('OrderManager', OrderManager::class);
|
|
$this->bind(MemberCart::class, function (PluginApplication $pluginApp, array $params) {
|
|
return new \Yunshop\Supplier\common\models\MemberCart($params[0]);
|
|
});
|
|
}
|
|
}
|
|
|