diff --git a/app/admin/controller/Agent.php b/app/admin/controller/Agent.php index 8476937a..ba0043c1 100644 --- a/app/admin/controller/Agent.php +++ b/app/admin/controller/Agent.php @@ -39,6 +39,14 @@ class Agent extends AdminBaseController return json($result); } + // 客服接待用户开启或关闭 + public function customerReceptionEdit() + { + $service = new AgentService(); + $result = $service->customerReceptionEdit($this->request->param()); + return json($result); + } + // 客服下所有用户 public function customerUserList() { diff --git a/app/admin/route/app.php b/app/admin/route/app.php index b14b9fbb..9065fa5c 100644 --- a/app/admin/route/app.php +++ b/app/admin/route/app.php @@ -179,6 +179,7 @@ Route::group('/', function () { Route::post('/agent/user', 'Agent/user'); Route::post('/agent/manager', 'Agent/manager'); Route::post('/agent/customer_list', 'Agent/customerList'); //客服列表,支持搜索某个代理下的客服 + Route::post('/agent/customer_reception_edit', 'Agent/customerReceptionEdit'); // 客服开启接待用户、关闭接待用户设置 Route::post('agent/customer_user_list', 'Agent/customerUserList'); //获取客服下所有用户 Route::post('/agent/change_user_customer', 'Agent/changeUserCustomer')->middleware('admin_log'); //变更用户绑定的客服 Route::post('/agent/aws_ivs_list', 'Agent/awsIvsList'); //直播推流列表 diff --git a/app/admin/service/AgentService.php b/app/admin/service/AgentService.php index ea1c1816..989e14e3 100644 --- a/app/admin/service/AgentService.php +++ b/app/admin/service/AgentService.php @@ -203,6 +203,24 @@ class AgentService extends AdminBaseService } } + public function customerReceptionEdit($param) + { + try { + if (empty($param['id']) || empty($param['ext'])) { + return $this->toData('400', '缺少参数'); + } + $role = AdminModel::where(['id'=>$param['id']])->find(); + if (empty($role)) { + return $this->toData('400', '修改的数据不存在'); + } + $role->ext = $param['ext']; + $role->save(); + return $this->toData('0', 'success'); + } catch (\Exception $e){ + return $this->toData('500', '系统异常 请稍后重试', [$e->getMessage(), $e->getTrace()]); + } + } + public function customerUserList($param) { try { diff --git a/app/admin/service/UserService.php b/app/admin/service/UserService.php index 96d152d1..a1b8440e 100644 --- a/app/admin/service/UserService.php +++ b/app/admin/service/UserService.php @@ -78,6 +78,21 @@ class UserService extends AdminBaseService $where['base_label'] = trim($param['base_label']); } + // 用户标签状态过滤 + $cdt = []; + if (isset($param['first_stage_state'])) { + $filterUserIds = UserStageStateModel::where(['first_stage_state' => $param['first_stage_state']])->column('user_id'); + } + if (isset($param['second_stage_state'])) { + $filterUserIds = UserStageStateModel::where(['second_stage_state' => $param['second_stage_state']])->column('user_id'); + } + if (isset($param['third_stage_state'])) { + $filterUserIds = UserStageStateModel::where(['third_stage_state' => $param['third_stage_state']])->column('user_id'); + } + if (!empty($filterUserIds)) { + $cdt[] = ['user_id', 'in', $filterUserIds]; + } + // 邮箱搜索 if (!empty($param['email']) && trim($param['email'])) { $where['email'] = $param['email']; @@ -146,11 +161,11 @@ class UserService extends AdminBaseService return $this->toData('0', 'SUCCESS', ['total' => 0, 'list' => [], 'extent' => ['market_type_list' => StockMarketModel::STOCK_MARKET_TYPE, 'is_agent' => $IsAgent, 'agent_list' => $agentNameArr, 'market_rate' => $marketRate, 'market_tape_list' => $tapeList]]); } - $userList = UserModel::where($where)->where($whereU)->page($param['page'], $param['limit'])->order('user_id', 'desc')->select(); + $userList = UserModel::where($where)->where($cdt)->where($whereU)->page($param['page'], $param['limit'])->order('user_id', 'desc')->select(); if (empty($userList)) { return $this->toData('0', 'SUCCESS', ['total' => 0, 'list' => [], 'extent' => ['market_type_list' => StockMarketModel::STOCK_MARKET_TYPE, 'is_agent' => $IsAgent, 'agent_list' => $agentNameArr, 'market_rate' => $marketRate, 'market_tape_list' => $tapeList]]); } - $total = UserModel::where($where)->where($whereU)->count(); + $total = UserModel::where($where)->where($cdt)->where($whereU)->count(); $rows = []; diff --git a/app/home/controller/Config.php b/app/home/controller/Config.php new file mode 100644 index 00000000..ae94fd65 --- /dev/null +++ b/app/home/controller/Config.php @@ -0,0 +1,16 @@ +getConfigByKey($this->request->param()); + return json($result); + } +} \ No newline at end of file diff --git a/app/home/route/app.php b/app/home/route/app.php index 38d8a631..9ee4b26f 100644 --- a/app/home/route/app.php +++ b/app/home/route/app.php @@ -44,6 +44,7 @@ Route::group('/',function (){ // 获取配置 Route::post('/get_config', 'Upload/getConfig'); + Route::post('/get_config_by_key', 'Config/getConfigByKey'); // 获取指定keyd的配置 })->middleware(\app\home\middleware\RepeatOperateMiddleware::class); // 获取帮助中心文档 diff --git a/app/home/service/ConfigService.php b/app/home/service/ConfigService.php new file mode 100644 index 00000000..0e0ba4c0 --- /dev/null +++ b/app/home/service/ConfigService.php @@ -0,0 +1,25 @@ +toData('400', '参数错误'); + } + $configData = []; + $config = ConfigModel::where(['name'=>trim($param['name'])])->find(); + if (!empty($config)) { + $configData = $config->toArray(); + } + return $this->toData('0', 'SUCCESS', ['data' => $configData]); + } catch (\Exception $e) { + return $this->toData('500', 'The system is busy. Please try again later.', [$e->getMessage()]); + } + } +} \ No newline at end of file diff --git a/app/home/service/LoginService.php b/app/home/service/LoginService.php index 647f07ed..55660032 100644 --- a/app/home/service/LoginService.php +++ b/app/home/service/LoginService.php @@ -92,10 +92,11 @@ class LoginService extends BaseHomeService // 获取客户端ip $ip = $this->getClientRealIp(); - $param['invite_code'] = $param['invite_code'] ?? ''; // 邀请码,可以是管理端的非代理账号,也可以是user表的用户 - $param['agent_code'] = $param['agent_code'] ?? ''; // 代理 + $inviteCode = $param['invite_code'] ?? AdminModel::getDefaultAgentId(); // p2项目中如果注册时未填写邀请码,则将用户分配到这个默认的代理下 + $agentCode = $param['agent_code'] ?? ''; // 代理 $chCode = $param['ch_code'] ?? ''; // 注册渠道标识码 $phone = $param['phone']; //p2定制需求-邮箱注册必须传手机号 + $email = $param['email']; // 邮件注册参数校验 validate(LoginValidate::class)->scene('emailRegister')->check($param); @@ -119,10 +120,6 @@ class LoginService extends BaseHomeService } } - $email = $param['email']; - $inviteCode = trim($param['invite_code']); - $agentCode = trim($param['agent_code']); - // 邮箱是否已经存在 $emailExists = UserModel::checkEmailExists($email); if ($emailExists) { @@ -437,8 +434,8 @@ class LoginService extends BaseHomeService // 防止重复操作 $ip = $this->getClientRealIp(); - $param['invite_code'] = $param['invite_code'] ?? ''; - $param['agent_code'] = $param['agent_code'] ?? ''; + $inviteCode = $param['invite_code'] ?? AdminModel::getDefaultAgentId(); // p2项目中如果注册时未填写邀请码,则将用户分配到这个默认的代理下 + $agentCode = $param['agent_code'] ?? ''; // 代理 $chCode = $param['ch_code'] ?? ''; // 短信注册参数校验 @@ -470,8 +467,6 @@ class LoginService extends BaseHomeService } // 邀请人 - $inviteCode = trim($param['invite_code']); - $agentCode = trim($param['agent_code']); $parentUserId = 0; $agentId = 0; if (!empty($inviteCode)) { diff --git a/app/home/validate/LoginValidate.php b/app/home/validate/LoginValidate.php index bdae2de9..424d0b93 100644 --- a/app/home/validate/LoginValidate.php +++ b/app/home/validate/LoginValidate.php @@ -42,10 +42,10 @@ class LoginValidate extends BaseHomeValidate protected $scene = [ 'sendEmail' => ['email'], - 'emailRegister' => ['phone', 'email', 'email_code', 'password', 'invite_code'], + 'emailRegister' => ['phone', 'email', 'email_code', 'password'], 'emailLogin' => ['email', 'password','device'], 'sendSms' => ['phone', 'nation'], - 'smsRegister' => ['phone', 'nation','sms_code', 'password', 'invite_code'], + 'smsRegister' => ['phone', 'nation','sms_code', 'password'], 'smsLogin' => ['phone', 'nation','sms_code','device'], 'emailForget' => ['email', 'email_code', 'password'], 'smsForget' => ['phone', 'nation','sms_code', 'password'], diff --git a/app/model/AdminModel.php b/app/model/AdminModel.php index f1aff6fb..27ec898d 100644 --- a/app/model/AdminModel.php +++ b/app/model/AdminModel.php @@ -12,6 +12,7 @@ class AdminModel extends BaseModel const ROLE_ID_ADMIN = 1; //超级管理员角色 const ROLE_ID_AGENT = 2; // 代理角色 + const DEFAULT_AGENT_ID = 2; // 默认的代理ID(P2项目用户注册时,邀请码未填时,就分配给这个默认的代理下) // 通过代理id 获取代理下面可以访问的所有用户id public static function getUserIdsByAgentId($agentId) { @@ -81,12 +82,19 @@ class AdminModel extends BaseModel return $self; } + // 获取默认的代理ID + public static function getDefaultAgentId(): int + { + return self::DEFAULT_AGENT_ID; + } + public static function getCustomerIdsByAgentId($agentId): array { $role = AuthRoleModel::where(['name'=>'客服'])->find(); if (empty($role)) { return []; } - return self::where(['role_id'=>$role->id,'parent_id'=>$agentId])->column('id'); + // p2项目中有客服接待开关,如果客服开启接待,则ext字段设置为1,否则为空或者2 + return self::where(['role_id'=>$role->id,'parent_id'=>$agentId,'ext'=>1])->column('id'); } } \ No newline at end of file