request->isAjax && Yii::$app->request->isPost) { $params = Yii::$app->request->post(); $res = Yii::$app->services->validate->validate($params,[ [['page', 'user_id', 'business_bonus_level', 'audit_status'], 'integer'], [['nickname'], 'string'], [['apply_time'], '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['audit_status'] != null && $params['audit_status'] != '') { $where[] = ['=', 'audit_status', (int)$params['audit_status']]; } // 申请时间 $start_time = strtotime($params['apply_time'][0] ?? 0); $end_time = strtotime($params['apply_time'][1] ?? 0); if ($start_time > 0 && $end_time > 0 && $end_time >= $start_time) { $where[] = ['>=', 'apply_time', $start_time]; $where[] = ['<=', 'apply_time', $end_time]; } $condition = ['where' => $where, 'with' => ['user'], 'order' => 'id desc']; $page_data = BusinessBonusUpgradeApply::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 actionAudit() { if (Yii::$app->request->isAjax && Yii::$app->request->isPost) { $params = Yii::$app->request->post(); $res = Yii::$app->services->validate->validate($params, [ [['id', 'audit_status'], 'integer'], [['faid_reason'], 'string'], ]); if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage()); $apply = BusinessBonusUpgradeApply::getOne([ ['=', 'mall_id', $this->mall_id], ['=', 'id', $params['id']], ['<>', 'status', StatusEnum::DELETE], ], true); if (!$apply) { return $this->error('申请记录不存在'); } if ($apply['audit_status'] == 1) { return $this->error('该申请已审核'); } $bbu = BusinessBonusUser::getOne([ ['=', 'mall_id', $this->mall_id], ['=', 'user_id', $apply['user_id']], ['<>', 'status', StatusEnum::DELETE], ], true); if ($bbu && $params['audit_status'] == 1) { return $this->error('该会员已是招商员,无需审核,请驳回审核'); } if ($bbu && $apply['audit_status'] == 2) { return $this->error('该会员已是招商员,请勿重复审核'); } $trans = Yii::$app->db->beginTransaction(); try { if ($params['audit_status'] == 1) {// 审核通过,成为招商员 $user_data = [ 'user_id' => $apply['user_id'], 'business_bonus_level' => $apply['business_bonus_level'], 'mall_id' => $this->mall_id, 'status' => StatusEnum::ENABLED, 'register_time' => time() ]; // 对应等级信息 $level_info = BusinessBonusLevel::getOne([ ['=', 'mall_id', $this->mall_id], ['=', 'level', $user_data['business_bonus_level']], ['>=', 'status', StatusEnum::DISABLED], ], true); $record = [ 'mall_id' => $this->mall_id, 'user_id' => $user_data['user_id'], 'business_bonus_level' => $user_data['business_bonus_level'], 'bonus_rate' => $level_info['bonus_rate'] ?? 0, 'upgrade_time' => time(), 'status' => StatusEnum::ENABLED, 'upgrade_type' => BusinessBonusEnums::UPGRADE_TYPE_APPLY, 'extra_data' => json_encode([ 'audit_admin' => $this->admin->username, 'audit_account' => $this->admin->account, 'mark' => '前端申请,后台审核,成为' . ($level_info['level_name'] ?? ''), ], JSON_UNESCAPED_UNICODE) ]; $res = BusinessBonusUpgradeRecord::setData($record); if ($res == false) throw new Exception(BusinessBonusUpgradeRecord::getStaticError()); $res = BusinessBonusUser::setData($user_data); if ($res == false) throw new Exception(BusinessBonusUser::getStaticError()); } $params['id'] = $apply['id']; $params['mall_id'] = $this->mall_id; $params['audit_time'] = time(); $params['audit_admin'] = $this->admin->username; $res = BusinessBonusUpgradeApply::setData($params); if ($res == false) throw new Exception(BusinessBonusUpgradeApply::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' => $user_data['user_id']]; \Yii::$app->services->events->dispatch($event, $data, $event->listeners); return $this->success("审核成功"); } } }