request->get(); if ($p['op'] == 'sendBonus') { // 发放分红 BusinessBonusReward::sendBonus(); } else if ($p['op'] == 'alterRegisterTime') { // 更改招商员注册时间,让其享受门店分红 $sql = "UPDATE `qimall_addons_business_bonus_user` SET `register_time` = '{$p['register_time']}' WHERE `id` = '{$p['id']}'"; Yii::$app->getDb()->createCommand($sql)->query(); } else if ($p['op'] == 'OrderPaidListener') { // 商城订单支付完成 OrderPaidListener::async_handle(['id' => $p['id']]); } else if ($p['op'] == 'OrderFinishListener') { // 商城订单完成 OrderFinishListener::async_handle(['id' => $p['id']]); } else if ($p['op'] == 'StoreOrderPaidListener') { // 门店订单支付完成 StoreOrderPaidListener::async_handle(['id' => $p['id']]); } else if ($p['op'] == 'MchOrderPaidListener') { // 商户订单支付完成 MchOrderPaidListener::async_handle(['id' => $p['id']]); } else if ($p['op'] == 'rewardExportHandle') { // 导出分红明细 BusinessBonusReward::exportHandle(['download_id' => $p['id']]); } else if ($p['op'] == 'storeExportHandle') { // 导出门店列表 BusinessBonusStore::exportHandle(['download_id' => $p['id']]); } else if ($p['op'] == 'incomeInfo') { // 推广中心分红统计显示 $res = BusinessBonusUser::getIncomeInfo(['user_id' => $p['id'], 'mall_id' => $this->mall_id, 'addons_name' => BusinessBonusEnums::ADDONS_NAME]); print_r($res); } dd($p, 'test done'); } /** * 首页 > 招商员列表 * * @return string */ public function actionIndex() { if (Yii::$app->request->isAjax && Yii::$app->request->isPost) { $params = Yii::$app->request->post(); $res = Yii::$app->services->validate->validate($params,[ [['page', 'user_id', 'business_bonus_level', 'status'], 'integer'], [['nickname'], 'string'], [['created_at'], 'safe'], ]); if($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage()); $where = [ ['=', 'mall_id', $this->mall_id], ['<>', 'status', StatusEnum::DELETE], ]; if ($params['user_id']) { $where[] = ['=', 'user_id', (int)$params['user_id']]; } // 昵称、手机号 if ($params['nickname']) { $user_ids = User::find() ->orWhere(['like', 'nickname', "%" . $params['nickname'] . "%", false]) ->orWhere(['like', 'mobile', "%" . $params['nickname'] . "%", false]) ->select('id') ->asArray() ->column(); $where[] = ['in', 'user_id', $user_ids]; } if ($params['business_bonus_level']) { $where[] = ['=', 'business_bonus_level', (int)$params['business_bonus_level']]; } if ($params['status'] !== null && $params['status'] !== '') { $where[] = ['=', 'status', (int)$params['status']]; } // 成为招商员时间 $start_time = strtotime($params['created_at'][0] ?? 0); $end_time = strtotime($params['created_at'][1] ?? 0); if ($start_time > 0 && $end_time > 0 && $end_time >= $start_time) { $where[] = ['>=', 'created_at', $start_time]; $where[] = ['<=', 'created_at', $end_time]; } $condition = ['where' => $where, 'with' => ['user'], 'order' => 'id desc']; $page_data = BusinessBonusUser::listPage($condition, false, true); $page_data['list'] = is_array($page_data['list']) ? $page_data['list'] : []; // 列表中的招商员等级 $level_array = array_unique(array_filter(array_column($page_data['list'], 'business_bonus_level'))); $level_list = BusinessBonusLevel::find() ->select('level,level_name,bonus_rate') ->andWhere(['>', 'status', StatusEnum::DISABLED]) ->andWhere(['in', 'level', $level_array]) ->andWhere(['=', 'mall_id', $this->mall_id]) ->asArray() ->all(); $level_name_data = array_column($level_list, null, 'level'); foreach ($page_data['list'] as $index => $item) { $item['level_info'] = $level_name_data[$item['business_bonus_level']] ?? ''; $page_data['list'][$index] = $item; } $this->success('获取成功', compact('page_data')); } else { return $this->render('index'); } } /** * 招商员列表-表格操作 */ public function actionHandle() { if (Yii::$app->request->isAjax && Yii::$app->request->isPost) { $params = Yii::$app->request->post(); $res = Yii::$app->services->validate->validate($params, [ [['id', 'status'], 'integer'], ]); if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage()); $params['mall_id'] = $this->mall_id; $res = BusinessBonusUser::setData($params); if ($res == false) return $this->error("修改失败: " . BusinessBonusUser::getStaticError()); return $this->success("修改成功"); } } /** * 升级记录 */ public function actionUpgradeRecord() { if (Yii::$app->request->isAjax && Yii::$app->request->isPost) { $params = Yii::$app->request->post(); $res = Yii::$app->services->validate->validate($params,[ [['page', 'user_id', ], 'integer'] ]); if($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage()); $where = [ ['=', 'mall_id', $this->mall_id], ['<>', 'status', StatusEnum::DELETE], ]; if ($params['user_id']) { $where[] = ['=', 'user_id', (int)$params['user_id']]; } $condition = ['where' => $where, 'with' => ['user'], 'order' => 'id desc']; $page_data = BusinessBonusUpgradeRecord::listPage($condition, false, true); $page_data['list'] = is_array($page_data['list']) ? $page_data['list'] : []; // 列表中的招商员等级 $level_array = array_unique(array_filter(array_column($page_data['list'], 'business_bonus_level'))); $level_list = BusinessBonusLevel::find() ->select('level,level_name,bonus_rate') ->andWhere(['>', 'status', StatusEnum::DISABLED]) ->andWhere(['in', 'level', $level_array]) ->andWhere(['=', 'mall_id', $this->mall_id]) ->asArray() ->all(); $level_name_data = array_column($level_list, null, 'level'); foreach ($page_data['list'] as $index => $item) { $item['level_info'] = $level_name_data[$item['business_bonus_level']] ?? ''; $item['extra_data'] = json_decode($item['extra_data'], true); $page_data['list'][$index] = $item; } $this->success('获取成功', compact('page_data')); } } /** * 获取招商员等级列表 */ public function actionBusinessBonusLevel() { if (Yii::$app->request->isAjax && Yii::$app->request->isPost) { $level_list = BusinessBonusLevel::find() ->where(['mall_id' => $this->mall_id]) ->andWhere(['status' => StatusEnum::ENABLED]) ->asArray() ->all(); return $this->success("招商员等级列表", compact('level_list')); } } /** * 编辑、新增招商员 */ public function actionEdit() { if (Yii::$app->request->isAjax && Yii::$app->request->isPost) { $params = Yii::$app->request->post(); $res = Yii::$app->services->validate->validate($params, [ [['id', 'user_id', 'status', 'business_bonus_level', 'created_at', 'created_at'], 'integer'], [['bonus_rate'], 'number'], ]); if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage()); if (!$params['created_at']) unset($params['created_at']); if (!$params['id']) $params['register_time'] = time(); $params['mall_id'] = $this->mall_id; $where = [ ['=', 'mall_id', $this->mall_id], ['=', 'user_id', $params['user_id']], ['>=', 'status', StatusEnum::DISABLED], ]; $record = [ 'mall_id' => $this->mall_id, 'user_id' => $params['user_id'], 'business_bonus_level' => $params['business_bonus_level'], 'bonus_rate' => $params['bonus_rate'], 'upgrade_time' => time(), 'status' => StatusEnum::ENABLED ]; unset($params['bonus_rate']); // 是否重复添加 if (!$params['id']) { $is_repeact = BusinessBonusUser::getOne($where, true); if ($is_repeact) { return $this->error('该用户已是招商员,请勿重复添加'); } unset($params['id']); // 后台添加等级 $record['upgrade_type'] = BusinessBonusEnums::UPGRADE_TYPE_ADMIN_ADD; $mark = '后台添加等级'; } else { $where[] = ['=', 'id', $params['id']]; $business_user = BusinessBonusUser::getOne($where, true); // 后台修改等级 if ($business_user['business_bonus_level'] != $params['business_bonus_level']) { $record['upgrade_type'] = BusinessBonusEnums::UPGRADE_TYPE_ADMIN_ALTER; $mark = '后台修改等级'; } } $record['extra_data'] = json_encode([ 'username' => $this->admin->username, 'account' => $this->admin->account, 'mark' => $mark ], JSON_UNESCAPED_UNICODE); $trans = Yii::$app->db->beginTransaction(); try { if (isset($record['upgrade_type'])) { $res = BusinessBonusUpgradeRecord::setData($record); if ($res == false) return $this->error("保存失败: " . BusinessBonusUpgradeRecord::getStaticError()); } $res = BusinessBonusUser::setData($params); if ($res == false) return $this->error("保存失败: " . BusinessBonusUser::getStaticError()); $trans->commit(); } catch (Exception $e) { $trans->rollBack(); return $this->error($e->getMessage()); } //触发用户条件升级 $event = new UpgradeUserEvent($this->mall_id); $data = ['mall_id' => $this->mall_id, 'user_id' => $params['user_id']]; \Yii::$app->services->events->dispatch($event, $data, $event->listeners); return $this->success("保存成功"); } else { return $this->render('edit'); } } /** * 获取编辑招商员的信息 */ public function actionInfo() { if (Yii::$app->request->isAjax) { $params = Yii::$app->request->get(); $res = Yii::$app->services->validate->validate($params, [ [['inc_id'], 'integer'], ]); if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage()); $info = BusinessBonusUser::getOne([ ['id' => $params['inc_id']], ['mall_id' => $this->mall_id] ], true, '', '', 'id,user_id,status,business_bonus_level,created_at,updated_at'); if ($info) { $user = User::getOne([ ['=', 'id', $info['user_id']], ['=', 'mall_id', $this->mall_id], ], true, '', '', 'nickname,mobile,avatar_url'); $info['nickname'] = $user['nickname'] ?? ''; $info['mobile'] = $user['mobile'] ?? ''; $info['avatar_url'] = $user['avatar_url'] ?? ''; } $is_null = $info ? 0 : 1; return $this->success("保存成功", compact('info', 'is_null')); } } /** * 搜索用户 * @return \yii\web\Response */ public function actionSearchUser() { if (\Yii::$app->request->isAjax) { $params = \Yii::$app->request->get(); $res = \Yii::$app->services->validate->validate($params, [ [['keyword_name','keyword_id','keyword_mobile'], 'string','message' => '请输入发放对象搜索关键字'], ]); if ($res === false) return $this->error(\Yii::$app->services->validate->getErrorMessage()); if(!empty($params['keyword_name']))$where[] = ['like','nickname',$params['keyword_name']]; if(!empty($params['keyword_id']))$where[] = ['=','id',$params['keyword_id']]; if(!empty($params['keyword_mobile']))$where[] = ['=','mobile',$params['keyword_mobile']]; $where[] = ['=', 'mall_id', $this->mall_id]; $cond = ['where' => $where, 'limit' => 10,'order'=>"id desc"]; $field = "nickname,id,avatar_url,mobile"; $list = User::listPage($cond); return $this->success('操作成功', $list); } } /** * 查看招商员详情 */ public function actionDetail() { if (\Yii::$app->request->isAjax) { $params = \Yii::$app->request->get(); $res = Yii::$app->services->validate->validate($params, [ [['inc_id'], 'integer'], ]); if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage()); $info = BusinessBonusUser::getOne([ ['id' => $params['inc_id']], ['mall_id' => $this->mall_id] ], true, '', '', 'id,user_id,status,business_bonus_level,store_number,mch_number,register_time'); if ($info) { $user = User::getOne([ ['=', 'id', $info['user_id']], ['=', 'mall_id', $this->mall_id], ['>=', 'status', StatusEnum::DISABLED], ], true, '', '', 'nickname,mobile,avatar_url'); $info['nickname'] = $user['nickname'] ?? ''; $info['mobile'] = $user['mobile'] ?? ''; $info['avatar_url'] = $user['avatar_url'] ?? ''; $level_info = BusinessBonusLevel::getOne([ ['level' => $info['business_bonus_level']], ['mall_id' => $this->mall_id], ['>=', 'status', StatusEnum::DISABLED] ], true, '', '', 'level_name,bonus_rate'); $info['level_name'] = $level_info['level_name'] ?? ''; $info['bonus_rate'] = $level_info['bonus_rate'] ?? ''; $info['register_time_format'] = date('Y-m-d H:i:s', $info['register_time']); } $is_null = $info ? 0 : 1; return $this->success("操作成功", compact('info', 'is_null')); } else { return $this->render('detail'); } } }