ajax()) { return view('admin/agent/index'); } $builder = Agent::query(); if ($keyword = $request->input('keyword')) { $builder->where('contact_name', 'like', '%' . $keyword . '%') ->orWhere('mobile', 'like', '%' . $keyword . '%'); } $records = $builder->orderByDesc('id') ->paginate($request->input('pageSize') ?? TABLE_PAGE_SIZE); $items = $records->items(); return response()->json([ 'rows' => $items, 'total' => $records->total() ]); } public function statusToggle(Request $request) { $ids = $request->input('ids'); $status = $request->input('status'); Agent::query()->whereIn('id', $ids)->update(['status' => $status]); return response()->json(['message' => '操作成功']); } public function save(AgentSaveRequest $request, $id) { if (!$request->ajax()) { $data = $id > 0 ? Agent::query()->find($id) : null; return view('admin/agent/save', [ 'data' => $data, 'channels' => Role::getUsers(Role::TYPE_CHANNEL_WORKER), 'agentUsers' => [], 'hasChannels' => $data->channel_ids ?? [] ]); } $validated = $request->validated(); if ($id == 0) { $validated['status'] = 1; } Agent::query()->updateOrCreate(['id' => $id], $validated); return response()->json(['message' => '操作成功']); } public function delete(Request $request) { $ids = $request->input('ids'); Agent::destroy($ids); return response()->json(['message' => '操作成功']); } public function customer(Request $request) { if (!$request->ajax()) { AgentCustomer::query()->where([ ['status', '=', 1], ['created_at', '<', date('Y-m-d H:i:s', strtotime('-15 day'))] ])->whereNull('remark')->update(['status' => 0]); return view('admin/agent/customer'); } $builder = AgentCustomer::query()->scopes(['user'])->with('user'); if ($keyword = $request->input('keyword')) { $builder->where('customer_name', 'like', '%' . $keyword . '%') ->orWhere('contact_user', 'like', '%' . $keyword . '%') ->orWhere('contact_phone', 'like', '%' . $keyword . '%'); } $records = $builder->orderByDesc('id') ->paginate($request->input('pageSize') ?? TABLE_PAGE_SIZE); $items = $records->items(); array_walk($items, function ($item) { $item->createUsername = $item->user->username ?? ''; }); return response()->json([ 'rows' => $items, 'total' => $records->total() ]); } public function customerSave(AgentCustomerSaveRequest $request, $id) { if (!$request->ajax()) { $data = $id > 0 ? AgentCustomer::query()->find($id) : null; return view('admin/agent/customer_save', [ 'data' => $data, 'users' => User::query()->whereIn('role_id', [ Role::TYPE_CHANNEL_BOSS, Role::TYPE_CHANNEL_MANAGER, Role::TYPE_CHANNEL_WORKER, Role::TYPE_AGENT_BOSS, Role::TYPE_AGENT_MANAGER, Role::TYPE_AGENT_WORKER ])->select(['id', 'username'])->get(), ]); } $validated = $request->validated(); if ($id == 0) { $user = auth()->user(); $validated['status'] = 1; $validated['user_id'] = $user->id; if (in_array($user->role_id, [Role::TYPE_AGENT_BOSS, Role::TYPE_AGENT_MANAGER, Role::TYPE_AGENT_WORKER])) { $validated['origin'] = 1; } elseif (in_array($user->role_id, [Role::TYPE_CHANNEL_BOSS, Role::TYPE_CHANNEL_MANAGER, Role::TYPE_CHANNEL_WORKER])) { $validated['origin'] = 2; } else { return response()->json(['message' => '当前身份既不是代理商也不是渠道'], 400); } } else { //防止未选择的时候 覆盖掉 if (empty($validated['user_id'])) { unset($validated['user_id']); } } AgentCustomer::query()->updateOrCreate(['id' => $id], $validated); return response()->json(['message' => '操作成功']); } public function agentUsers(Request $request) { if (!$request->ajax()) { return view('admin/agent/user'); } $builder = User::query()->where([['agent_id', '>', 0]]); $records = $builder->orderByDesc('id') ->paginate($request->input('pageSize') ?? TABLE_PAGE_SIZE); $items = $records->items(); return response()->json([ 'rows' => $items, 'total' => $records->total() ]); } public function agentUsersSave(AgentUserSaveRequest $request, $id) { if (!$request->ajax()) { $data = $id > 0 ? User::query()->find($id) : null; $roles = Role::query()->whereIn('id', [ Role::TYPE_AGENT_BOSS, Role::TYPE_AGENT_MANAGER, Role::TYPE_AGENT_WORKER ])->get(); return view('admin/agent/user_save', [ 'user' => $data, 'roles' => $roles, 'agents' => Agent::all() ]); } $validated = $request->validated(); if (!empty($validated['password'])) { $validated['password'] = bcrypt($validated['password']); } else { unset($validated['password']); } if ($id === 0) { $validated['status'] = 1; } User::query()->updateOrCreate(['id' => $id], $validated); return response()->json(['message' => '操作成功']); } }