123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200 |
- <?php
- namespace App\Http\Controllers\Admin;
- use App\Http\Models\Agent;
- use App\Http\Models\AgentCustomer;
- use App\Http\Models\Role;
- use App\Http\Models\User;
- use App\Http\Requests\Sell\AgentCustomerSaveRequest;
- use App\Http\Requests\Sell\AgentSaveRequest;
- use App\Http\Requests\Sell\AgentUserSaveRequest;
- use Illuminate\Http\Request;
- use App\Http\Controllers\Controller;
- /**
- * 代理商 之前提的需求 基本没啥用了
- * Class SellController
- * @package App\Http\Controllers\Admin
- */
- class AgentController extends Controller
- {
- public function index(Request $request)
- {
- if (!$request->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' => '操作成功']);
- }
- }
|