| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562 |
- <?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()->set('appointment_area_reward', [
- 'class' => 'Yunshop\AreaDividend\services\AppointmentService',
- 'function' => 'appointmentReward'
- ]);
- \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();
- $coupon_menu = [];
- if (app('plugins')->isEnabled('coupon-store') && \Yunshop\CouponStore\services\SettingService::getSetting()['open_state']){
- $coupon_menu = \Yunshop\CouponStore\services\MenuService::getMenu();
- }
- if ($area || $coupon_menu){
- Config::set('menu', []);
- }
- if ($coupon_menu){
- Menu::current()->setMainMenu('coupon_store_menu',$coupon_menu);
- }
- if ($area) {
- 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'],
- ],
- ]
- ],
- 'area_admin_point_log_list' => [
- 'name' => '赠送积分明细',
- 'url' => 'plugin.area-dividend.area.point-log.index',
- 'url_params' => '',
- 'permit' => 0,
- 'menu' => 1,
- 'icon' => '',
- 'item' => 'area_admin_point_log_list',
- 'parents' => ['area_admin_menu'],
- 'child' => [
- 'area_admin_point_log_export' => [
- 'name' => '积分导出',
- 'url' => 'plugin.area-dividend.area.point-log.export',
- 'permit' => 0,
- 'menu' => 0,
- 'parents' => ['area_admin_menu', 'area_admin_point_log_list'],
- ],
- ]
- ],
- ]
- ]);
- }
- }
- 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]);
- });
- }
- }
|