| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200 | <?phpnamespace 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' => '操作成功']);    }}
 |