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