| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 | <?phpnamespace App\Http\Controllers\Staff;use App\Http\Requests\Admin\UserSendMail;use App\Http\Requests\Staff\UserUpdate;use App\Jobs\SendEmailJob;use Illuminate\Http\Request;use App\Http\Controllers\Controller;use App\Models\User;use App\Models\Plan;class UserController extends Controller{    public function getUserInfoById(Request $request)    {        if (empty($request->input('id'))) {            abort(500, '参数错误');        }        return response([            'data' => User::find($request->input('id'))        ]);    }    public function update(UserUpdate $request)    {        $params = $request->validated();        $user = User::find($request->input('id'));        if (!$user) {            abort(500, '用户不存在');        }        if (User::where('email', $params['email'])->first() && $user->email !== $params['email']) {            abort(500, '邮箱已被使用');        }        if (isset($params['password'])) {            $params['password'] = password_hash($params['password'], PASSWORD_DEFAULT);            $params['password_algo'] = NULL;        } else {            unset($params['password']);        }        if (isset($params['plan_id'])) {            $plan = Plan::find($params['plan_id']);            if (!$plan) {                abort(500, '订阅计划不存在');            }            $params['group_id'] = $plan->group_id;        }        try {            $user->update($params);        } catch (\Exception $e) {            abort(500, '保存失败');        }        return response([            'data' => true        ]);    }    public function sendMail(UserSendMail $request)    {        $sortType = in_array($request->input('sort_type'), ['ASC', 'DESC']) ? $request->input('sort_type') : 'DESC';        $sort = $request->input('sort') ? $request->input('sort') : 'created_at';        $builder = User::orderBy($sort, $sortType);        $this->filter($request, $builder);        $users = $builder->get();        foreach ($users as $user) {            SendEmailJob::dispatch([                'email' => $user->email,                'subject' => $request->input('subject'),                'template_name' => 'notify',                'template_value' => [                    'name' => config('v2board.app_name', 'V2Board'),                    'url' => config('v2board.app_url'),                    'content' => $request->input('content')                ]            ]);        }        return response([            'data' => true        ]);    }    public function ban(Request $request)    {        $sortType = in_array($request->input('sort_type'), ['ASC', 'DESC']) ? $request->input('sort_type') : 'DESC';        $sort = $request->input('sort') ? $request->input('sort') : 'created_at';        $builder = User::orderBy($sort, $sortType);        $this->filter($request, $builder);        try {            $builder->update([                'banned' => 1            ]);        } catch (\Exception $e) {            abort(500, '处理失败');        }        return response([            'data' => true        ]);    }}
 |