[ 'class' => 'Yunshop\TeamDividend\services\IncomePageService', 'type' => 'marketing' ] ]; } public function incomePageIdentity($memberId) { $levelModel = TeamDividendAgencyModel::uniacid()->select('uid', 'level') ->with(['hasOneLevel' => function ($query) { $query->select('id', 'level_name'); }]) ->whereUid($memberId)->first(); if ($levelModel && $levelModel->hasOneLevel && $levelModel->hasOneLevel->level_name) { return [$levelModel->hasOneLevel->level_name]; } return []; } public function getTemplateItems() { return ['team_dividend_become_agent' => [ 'title' => '经销商(成为经销商通知)', 'subtitle' => '成为经销商通知', 'value' => 'team_dividend_become_agent', 'param' => [ '昵称', '时间', '经销商等级' ] ], 'team_dividend_agent_level' => [ 'title' => '经销商(经销商升级通知)', 'subtitle' => '经销商升级通知', 'value' => 'team_dividend_agent_level', 'param' => [ '昵称', '时间', '旧等级', '新等级', '新等级提成比例', '旧等级提成比例' ] ], 'team_dividend_lower_team_agent' => [ 'title' => '经销商(新增直属经销商通知)', 'subtitle' => '新增直属经销商通知', 'value' => 'team_dividend_lower_team_agent', 'param' => [ '昵称', '时间', '经销商等级', '直属经销商昵称', '直属经销商等级' ] ], 'team_dividend_dividend_order' => [ 'title' => '经销商(经销订单通知)', 'subtitle' => '经销订单通知', 'value' => 'team_dividend_dividend_order', 'param' => [ '昵称', '时间', '下单人昵称', '订单金额', '经销结算金额', '经销比例', '直属经销商提成比例', '提成金额', '订单号', '提成ID' ] ], 'team_dividend_dividend' => [ 'title' => '经销商(经销结算通知)', 'subtitle' => '经销结算通知', 'value' => 'team_dividend_dividend', 'param' => [ '昵称', '时间', '订单金额', '经销结算金额', '经销比例', '直属经销商提成比例', '提成金额', '下单人昵称', '订单号', '提成ID' ] ], 'team_dividend_activation_grant' => [ 'title' => '经销商(激活码发放通知)', 'subtitle' => '激活码发放通知', 'value' => 'team_dividend_activation_grant', 'param' => [ '昵称', '时间', '激活码', '数量', '等级' ] ], 'team_dividend_activation_use' => [ 'title' => '经销商(激活码使用通知)', 'subtitle' => '激活码使用通知', 'value' => 'team_dividend_activation_use', 'param' => [ '昵称', '时间', '激活码', '等级' ] ], 'team_dividend_flat_prize' => [ 'title' => '经销商(获得平级奖通知)', 'subtitle' => '获得平级奖通知', 'value' => 'team_dividend_flat_prize', 'param' => [ '昵称', '时间', '订单金额', '提成结算金额', '奖励比例', '平级奖金额', '提成ID' ] ], 'team_dividend_award_gratitude' => [ 'title' => '经销商(获得感恩奖通知)', 'subtitle' => '获得感恩奖通知', 'value' => 'team_dividend_award_gratitude', 'param' => [ '昵称', '时间', '订单金额', '直属经销商提成比例', '奖励比例', '感恩奖金额', '直属经销商等级', '提成ID' ] ], 'team_dividend_red_pack_message' => [ 'title' => '经销商(红包奖励通知)', 'subtitle' => '红包奖励通知', 'value' => 'team_dividend_red_pack_message', 'param' => [ '昵称', '时间' ] ], 'team_dividend_balance_recharged' => [ 'title' => '经销商(团队充值通知)', 'subtitle' => '团队充值通知', 'value' => 'team_dividend_balance_recharged', 'param' => [ '充值者昵称', '充值金额', '经销商等级', '充值时间' ] ]]; } public function getWidgetItems() { return [ 'withdraw.tab_team_dividend' => [ 'title' => trans('Yunshop\TeamDividend::index.withdraw'), 'class' => 'Yunshop\TeamDividend\widgets\TeamDividendWithdrawWidget' ], 'vue-goods.team_dividend' => [ 'title' => trans('Yunshop\TeamDividend::index.title'), 'class' => \Yunshop\TeamDividend\widgets\DividendVueWidget::class ], 'lang.team_dividend' => [ 'title' => '语言设置', 'class' => \Yunshop\TeamDividend\widgets\TeamDividendLangWidget::class, ] ]; } public function getFrontendWidgetConfig(): array { return [ 'goods_detail.team-dividend' => GoodsDetailService::class, ]; } protected function setConfig() { \app\common\modules\shop\ShopConfig::current()->set('manual_arr.team_dividend_and_level', [ 'uidColumn' => 'uid', 'levelNameColumn' => 'level_name', 'relationsColumn' => 'level', 'enableLevel' => true, 'type_name' => '经销商', 'role_type' => 'team_dividend_and_level' ]); \app\common\modules\shop\ShopConfig::current()->set('manual_arr_cfg.team_dividend_and_level', [ 'roleTableClass' => \Yunshop\TeamDividend\models\TeamDividendAgencyModel::class, 'levelTableClass' => \Yunshop\TeamDividend\models\TeamDividendLevelModel::class ]); \app\common\modules\shop\ShopConfig::current()->set('plugin.teamDividend', [ 'title' => trans('Yunshop\TeamDividend::index.title'), 'ico' => 'icon-team-bonus', 'type' => 'team_dividend', 'class' => 'Yunshop\TeamDividend\models\TeamDividendModel', 'order_class' => '', 'agent_class' => 'Yunshop\TeamDividend\models\TeamDividendAgencyModel', 'agent_name' => 'getAgentByUidId', 'agent_status' => '', ]); \app\common\modules\shop\ShopConfig::current()->set('observer.goods.team_dividend', [ 'class' => 'Yunshop\TeamDividend\models\GoodsTeamDividend', 'function_validator' => 'relationValidator', 'function_save' => 'relationSave' ]); // 手动分红配置 Config::set('manual_arr.team_dividend_and_level', [ 'uidColumn' => 'uid', 'levelNameColumn' => 'level_name', 'relationsColumn' => 'level', 'enableLevel' => true, 'type_name' => '经销商', 'role_type' => 'team_dividend_and_level' ]); Config::set('manual_arr_cfg.team_dividend_and_level', [ 'roleTableClass' => \Yunshop\TeamDividend\models\TeamDividendAgencyModel::class, 'levelTableClass' => \Yunshop\TeamDividend\models\TeamDividendLevelModel::class ]); } protected function setMenuConfig() { \app\backend\modules\menu\Menu::current()->setPluginMenu('team_dividend', [ 'name' => '经销商管理', 'type' => 'marketing', 'url' => 'plugin.team-dividend.admin.team-agency.index', 'url_params' => '', 'permit' => 1, 'menu' => 1, 'top_show' => 0, 'left_first_show' => 0, 'left_second_show' => 1, 'icon' => 'fa-american-sign-language-interpreting', 'list_icon' => 'team_dividend', 'item' => 'team_dividend', 'parents' => [], 'child' => [ 'team_dividend_team_agency' => [ 'name' => '经销商管理', 'url' => 'plugin.team-dividend.admin.team-agency.index', 'url_params' => '', 'permit' => 1, 'menu' => 1, 'icon' => '', 'item' => 'team_dividend', 'parents' => ['team_dividend'], 'child' => [ 'team_dividend_team_agency_index' => [ 'name' => '浏览列表', 'url' => 'plugin.team-dividend.admin.team-agency.index', 'url_params' => '', 'permit' => 1, 'menu' => 0, 'icon' => '', 'item' => 'team_dividend_team_agency_index', 'parents' => ['team_dividend', 'team_dividend_team_agency'], ], 'team_dividend_team_agency_add' => [ 'name' => '添加经销商', 'url' => 'plugin.team-dividend.admin.team-agency.add', 'url_params' => '', 'permit' => 1, 'menu' => 0, 'icon' => '', 'item' => 'team_dividend_team_agency_add', 'parents' => ['team_dividend', 'team_dividend_team_agency'], ], 'team_dividend_team_agency_black' => [ 'name' => '设置/取消黑名单', 'url' => 'plugin.team-dividend.admin.team-agency.setBlack', 'url_params' => '', 'permit' => 1, 'menu' => 0, 'icon' => '', 'item' => 'team_dividend_team_agency_black', 'parents' => ['team_dividend', 'team_dividend_team_agency'], ], 'team_dividend_team_agency_edit_level' => [ 'name' => '修改等级', 'url' => 'plugin.team-dividend.admin.team-agency.change', 'url_params' => '', 'permit' => 1, 'menu' => 0, 'icon' => '', 'item' => 'team_dividend_team_agency_edit_level', 'parents' => ['team_dividend', 'team_dividend_team_agency'], ], 'team_dividend_team_agency_del' => [ 'name' => '删除经销商', 'url' => 'plugin.team-dividend.admin.team-agency.daletedAgency', 'url_params' => '', 'permit' => 1, 'menu' => 0, 'icon' => '', 'item' => 'team_dividend_team_agency_del', 'parents' => ['team_dividend', 'team_dividend_team_agency'], ], 'team_dividend_team_agency_export' => [ 'name' => '导出 EXCEL', 'url' => 'plugin.team-dividend.admin.team-agency.export', 'url_params' => '', 'permit' => 1, 'menu' => 0, 'icon' => '', 'item' => 'team_dividend_team_agency_export', 'parents' => ['team_dividend', 'team_dividend_team_agency'], ] ] ], 'plugin_team_dividend_level' => [ 'name' => '经销商等级', 'url' => 'plugin.team-dividend.admin.team-dividend-level-set.index', 'url_params' => '', 'permit' => 1, 'menu' => 1, 'icon' => '', 'item' => 'plugin_team_dividend_level', 'parents' => ['team_dividend'], 'child' => [ 'plugin_team_dividend_level_add' => [ 'name' => '添加等级', 'url' => 'plugin.team-dividend.admin.team-dividend-level-set.add', 'url_params' => '', 'permit' => 1, 'menu' => 0, 'icon' => '', 'item' => 'plugin_team_dividend_level_add', 'parents' => ['team_dividend', 'plugin_team_dividend_level'], ], 'plugin_team_dividend_level_edit' => [ 'name' => '修改等级', 'url' => 'plugin.team-dividend.admin.team-dividend-level-set.edit', 'url_params' => '', 'permit' => 1, 'menu' => 0, 'icon' => '', 'item' => 'plugin_team_dividend_level_edit', 'parents' => ['team_dividend', 'plugin_team_dividend_level'], ], 'plugin_team_dividend_level_delete' => [ 'name' => '删除等级', 'url' => 'plugin.team-dividend.admin.team-dividend-level-set.deleted', 'url_params' => '', 'permit' => 1, 'menu' => 0, 'icon' => '', 'item' => 'plugin_team_dividend_level_deleted', 'parents' => ['team_dividend', 'plugin_team_dividend_level'], ], 'plugin_team_dividend_level_order_by' => [ 'name' => '权重排序', 'url' => 'plugin.team-dividend.admin.team-dividend-level-set.displayorder', 'url_params' => '', 'permit' => 1, 'menu' => 0, 'icon' => '', 'item' => 'plugin_team_dividend_level_order_by', 'parents' => ['team_dividend', 'plugin_team_dividend_level'], ], 'plugin_team_dividend_goods_search_many' => [ 'name' => '购买指定商品之一查询', 'url' => 'goods.goods.get-search-goods-by-dividend', 'url_params' => '', 'permit' => 1, 'menu' => 0, 'icon' => '', 'item' => 'plugin_team_dividend_goods_search_many', 'parents' => ['team_dividend', 'plugin_team_dividend_level'], ], ] ], 'plugin_team_dividend_code_record' => [ 'name' => '激活码记录', 'url' => 'plugin.team-dividend.admin.code-record.index', 'url_params' => '', 'permit' => 1, 'menu' => 1, 'icon' => '', 'item' => 'plugin_team_dividend_code_record', 'parents' => ['team_dividend'], 'child' => [ 'plugin_team_dividend_code_record_index' => [ 'name' => '浏览记录', 'url' => 'plugin.team-dividend.admin.code-record.index', 'url_params' => '', 'permit' => 1, 'menu' => 0, 'icon' => '', 'item' => 'plugin_team_dividend_code_record_index', 'parents' => ['team_dividend', 'plugin_team_dividend_code_record'], ], 'plugin_team_dividend_code_record_details' => [ 'name' => '浏览详情', 'url' => 'plugin.team-dividend.admin.code-record.details', 'url_params' => '', 'permit' => 1, 'menu' => 0, 'icon' => '', 'item' => 'plugin_team_dividend_code_record_index', 'parents' => ['team_dividend', 'plugin_team_dividend_code_record'], ], 'plugin_team_dividend_code_record_export' => [ 'name' => '浏览记录', 'url' => 'plugin.team-dividend.admin.code-record.export', 'url_params' => '', 'permit' => 1, 'menu' => 0, 'icon' => '', 'item' => 'plugin_team_dividend_code_record_export', 'parents' => ['team_dividend', 'plugin_team_dividend_code_record'], ], ] ], 'team_dividend_admin_dividend' => [ 'name' => '提成明细', 'url' => 'plugin.team-dividend.admin.team-dividend.get-list', 'url_params' => '', 'permit' => 1, 'menu' => 1, 'icon' => '', 'item' => 'team_dividend_admin_dividend', 'parents' => ['team_dividend'], 'child' => [ 'team_dividend_admin_dividend_index' => [ 'name' => '浏览列表', 'url' => 'plugin.team-dividend.admin.team-dividend.get-list', 'url_params' => '', 'permit' => 1, 'menu' => 0, 'icon' => '', 'item' => 'team_dividend_admin_dividend_index', 'parents' => ['team_dividend', 'team_dividend_admin_dividend'], ], 'plugin_team_dividend_level_export' => [ 'name' => '导出 EXCEL', 'url' => 'plugin.team-dividend.admin.team-dividend.export', 'url_params' => '', 'permit' => 1, 'menu' => 0, 'icon' => '', 'item' => 'plugin_team_dividend_level_export', 'parents' => ['team_dividend', 'team_dividend_admin_dividend'], ], 'plugin_team_dividend_level_details' => [ 'name' => '分红详情', 'url' => 'plugin.team-dividend.admin.team-dividend.details', 'url_params' => '', 'permit' => 1, 'menu' => 0, 'icon' => '', 'item' => 'plugin_team_dividend_level_details', 'parents' => ['team_dividend', 'team_dividend_admin_dividend'], ], ] ], 'team_dividend_admin_redpack' => [ 'name' => '红包奖励记录', 'url' => 'plugin.team-dividend.admin.RedpackLog.index', 'url_params' => '', 'permit' => 1, 'menu' => 1, 'icon' => '', 'item' => 'team_dividend_admin_redpack', 'parents' => ['team_dividend'], 'child' => [ 'team_dividend_admin_redpack_info' => [ 'name' => '详情', 'url' => 'plugin.team-dividend.admin.RedPack.index', 'url_params' => '', 'permit' => 1, 'menu' => 0, 'icon' => '', 'item' => 'team_dividend_admin_redpack_info', 'parents' => ['team_dividend', 'team_dividend_admin_redpack'], ] ] ], // 'plugin.team-dividend.admin.reward' => [ // 'name' => '直推奖记录', // 'permit' => 1, // 'menu' => 1, // 'icon' => '', // 'url' => 'plugin.team-dividend.admin.team-reward.index', // 'url_params' => '', // 'parents'=>['team-dividend'], // 'child' => [] // ], 'team_dividend_set' => [ 'name' => '基础设置', 'url' => 'plugin.team-dividend.admin.team-dividend-set.index', 'url_params' => '', 'permit' => 1, 'menu' => 1, 'icon' => '', 'item' => 'team_dividend_set', 'parents' => ['team_dividend'], ], 'team_dividend_uplog' => [ 'name' => '升级日志', 'url' => 'plugin.team-dividend.admin.uplog.index', 'url_params' => '', 'permit' => 1, 'menu' => 1, 'icon' => '', 'item' => 'team_dividend_uplog', 'parents' => ['team_dividend'], 'child' => [ 'team_dividend_uplog_before_level_set' => [ 'name' => '升级前基础设置', 'url' => 'plugin.team-dividend.admin.uplog.beforeDetail', 'url_params' => '', 'permit' => 1, 'menu' => 0, 'icon' => '', 'item' => 'team_dividend_uplog_before_level_set', 'parents' => ['team_dividend', 'team_dividend_uplog'], ], 'team_dividend_uplog_after_level_set' => [ 'name' => '升级后基础设置', 'url' => 'plugin.team-dividend.admin.uplog.afterDetail', 'url_params' => '', 'permit' => 1, 'menu' => 0, 'icon' => '', 'item' => 'team_dividend_uplog_after_level_set', 'parents' => ['team_dividend', 'team_dividend_uplog'], ], 'team_dividend_uplog_condition' => [ 'name' => '达成条件', 'url' => 'plugin.team-dividend.admin.uplog.complete', 'url_params' => '', 'permit' => 1, 'menu' => 0, 'icon' => '', 'item' => 'team_dividend_uplog_condition', 'parents' => ['team_dividend', 'team_dividend_uplog'], ], ], ], 'team_dividend_statistics' => [ 'name' => '业绩统计', 'url' => 'plugin.team-dividend.admin.statistics.index', 'url_params' => '', 'permit' => 1, 'menu' => 1, 'icon' => '', 'item' => 'team_dividend_statistics', 'parents' => ['team_dividend'], 'child' => [ 'team_dividend_statistics_export' => [ 'name' => '导出', 'url' => 'plugin.team-dividend.admin.statistics.export', 'url_params' => '', 'permit' => 1, 'menu' => 0, 'icon' => '', 'item' => 'team_dividend_statistics_export', 'parents' => ['team_dividend_statistics'], ] ], ], 'team_dividend_team_statistics' => [ 'name' => '团队业绩统计', 'url' => 'plugin.team-dividend.admin.team-statistics.index', 'url_params' => '', 'permit' => 1, 'menu' => 1, 'icon' => '', 'item' => 'team_dividend_team_statistics', 'parents' => ['team_dividend'], 'child' => [ 'team_dividend_team_statistics_export' => [ 'name' => '导出', 'url' => 'plugin.team-dividend.admin.team-statistics.export', 'url_params' => '', 'permit' => 1, 'menu' => 0, 'icon' => '', 'item' => 'team_dividend_team_statistics_export', 'parents' => ['team_dividend_team_statistics'], ] ], ], // 店长管理 'team_dividend_store_manager' => [ 'name' => '店长管理', 'url' => 'plugin.team-dividend.admin.store-manager.index', 'url_params' => '', 'permit' => 1, 'menu' => 1, 'icon' => '', 'item' => 'team_dividend', 'parents' => ['team_dividend'], 'child' => [ 'team_dividend_store_manager_index' => [ 'name' => '店长列表', 'url' => 'plugin.team-dividend.admin.store-manager.index', 'url_params' => '', 'permit' => 1, 'menu' => 0, 'icon' => '', 'item' => 'team_dividend_store_manager_index', 'parents' => ['team_dividend', 'team_dividend_store_manager'], ], 'team_dividend_store_manager_addInfo' => [ 'name' => '添加店长', 'url' => 'plugin.team-dividend.admin.store-manager.addInfo', 'url_params' => '', 'permit' => 1, 'menu' => 0, 'icon' => '', 'item' => 'team_dividend_store_manager_addInfo', 'parents' => ['team_dividend', 'team_dividend_store_manager'], ], 'team_dividend_store_manager_change_status' => [ 'name' => '删除店长', 'url' => 'plugin.team-dividend.admin.store-manager.change-status', 'url_params' => '', 'permit' => 1, 'menu' => 0, 'icon' => '', 'item' => 'team_dividend_store_manager_change_status', 'parents' => ['team_dividend', 'team_dividend_store_manager'], ], 'team_dividend_store_manager_change_see_info' => [ 'name' => '查看店补', 'url' => 'plugin.team-dividend.admin.store-manager.see-info', 'url_params' => '', 'permit' => 1, 'menu' => 0, 'icon' => '', 'item' => 'team_dividend_store_manager_see_info', 'parents' => ['team_dividend', 'team_dividend_store_manager'], ], ] ], ] ]); } public function getIncomeItems() { $lang = \Setting::get('shop.lang', ['lang' => 'zh_cn'])['zh_cn']['team_dividend']; $title = $lang['title'] ?: trans('Yunshop\TeamDividend::index.name'); $dividend = $lang['dividend'] ?: trans('Yunshop\TeamDividend::index.dividend'); return [ 'teamDividend' => [ 'title' => $lang['title'] ?: trans('Yunshop\TeamDividend::index.title'), 'type' => 'teamDividend', 'type_name' => $title.$dividend, 'class' => 'Yunshop\TeamDividend\models\TeamDividendModel', ], 'storeManager' => [ 'title' => '店补', 'type' => 'storeManager', 'type_name' => '店长店补', 'class' => 'Yunshop\TeamDividend\Common\models\StoreManagerRecordModel', ] ]; } public function boot() { $events = app('events'); /** * 收入提现扣除爱心值 */ $events->subscribe(\Yunshop\TeamDividend\Listener\WithdrawApplyListener::class); /** * 创建订单 * OrderCreatedListener */ $events->subscribe(\Yunshop\TeamDividend\Listener\OrderCreatedListener::class); /** * 订单支付 * OrderPaidListener */ $events->subscribe(\Yunshop\TeamDividend\Listener\OrderPaidListener::class); /** * 订单完成 * OrderReceiveListener */ $events->subscribe(\Yunshop\TeamDividend\Listener\OrderReceiveListener::class); /** * 订单失效 * OrderReceiveListener */ $events->subscribe(\Yunshop\TeamDividend\Listener\OrderFailureListener::class); /** * 经销商升级 * OrderReceiveListener */ $events->subscribe(\Yunshop\TeamDividend\Listener\RegisterByAgentListener::class); $events->subscribe(\Yunshop\TeamDividend\Listener\MemberFirstChildrenLinstener::class); // $events->subscribe(\Yunshop\TeamDividend\Listener\LoveChangeListener::class); /** * 经销商下级充值通知 */ $events->subscribe(\Yunshop\TeamDividend\Listener\BalanceRechargedListener::class); /** * 等级变化监听 */ $events->subscribe(\Yunshop\TeamDividend\Listener\LevelChangeListener::class); /** * 等级变化监听 */ $events->subscribe(\Yunshop\TeamDividend\Listener\AreaDividendListener::class); // 店长相关 \Event::listen('cron.collectJobs', function () { // 每天0点30 执行一次店长信息统计 \Cron::add('Team-dividend-store-manager', '30 0 * * *', function () { \Log::debug('--- 经销商 - 店长统计 - 开始 ----'); (new StoreManagerModel())->infoStatistics(); return; }); // 每天1点30 执行一次店长信息统计 \Cron::add('Team-dividend-store-manager-settlement', '30 1 * * *', function () { \Log::debug('--- 经销商 - 店长结算 - 开始 ----'); (new StoreManagerModel())->settlement(); return; }); }); } public function cronConfig() { \Event::listen('cron.collectJobs', function () { // 经销商佣金结算 由10分钟执行一次修改为1分钟执行一次 2023-9-25 \Cron::add('Team-dividend', '*/1 * * * *', function () { (new \Yunshop\TeamDividend\services\TimedTaskService)->handle(); return; }); }); \Event::listen('cron.collectJobs', function () { \Cron::add('Team-dividend-send-redpack', '0 3 * * *', function () { (new \Yunshop\TeamDividend\services\SendRedPackService())->handle(); return; }); }); \Event::listen('cron.collectJobs', function () { \Cron::add('Team-dividend-send-redpack-failure', '*/10 * * * *', function () { (new \Yunshop\TeamDividend\services\RedpackFailureService())->handle(); return; }); }); \Event::listen('cron.collectJobs', function () { \Cron::add('TeamAutoWithdraw', '*/10 * * * *', function () { (new \Yunshop\TeamDividend\services\AutoWithdrawService())->handle(); return; }); }); \Event::listen('cron.collectJobs', function () { \Cron::add('Team-dividend-ClearTable', '0 1 1 * *', function () { (new \Yunshop\TeamDividend\services\ClearTableService())->handle(); return; }); }); } }