// +---------------------------------------------------------------------- namespace Modules\Member\Services; use Modules\Member\Models\Member; use Modules\Member\Events\MemberUpdate; class MemberService { /** * @title 获取会员列表 * * @param [type] $request * @return void */ public function getDataList($request){ $map = []; if ($request->filled('username')) { $map[] = ['username', 'like', '%' . $request->input('username') . '%']; } if ($request->filled('mobile')) { $map[] = ['mobile', 'like', '%' . $request->input('mobile') . '%']; } if ($request->filled('email')) { $map[] = ['email', 'like', '%' . $request->input('email') . '%']; } $query = Member::with(['social', 'level'])->where($map)->orderBy('uid', 'desc'); if ($request->filled('title')) { $query->whereAny(['nickname', 'username'], 'like', '%' . $request->input('title') . '%'); } $data = [ 'total' => $query->count(), 'page' => $request->input('page', 1), 'data' => $query->offset($request->input('offset', 0))->limit($request->input('limit', 10))->get(), ]; return $data; } public function getDetail($request){ $request->validate([ 'id_card' => 'required', ], [ 'id_card.required' => '身份证号不能为空!', ]); $query = Member::with(['level', 'extend']); if ($request->filled('id_card')) { $query->whereHas('extend', function ($query) use ($request) { $query->where('id_card', $request->input('id_card')); }); } if ($request->is('api/*')) { $query->select(['nickname', 'uid', 'level_id']); } if ($query->exists()) { return $query->first(); } else { throw new \Exception("会员不存在!", 1); } } /** * @title 创建用户 * * @param [type] $request * @return void */ public function create($request){ $request->validate([ 'username' => 'required|unique:member', 'nickname' => 'required', 'mobile' => 'required|unique:member', 'password' => 'required|min:6|max:16' ], [ 'username.required' => '用户名不能为空!', 'username.unique' => '用户名已存在!', 'nickname.required' => '昵称不能为空!', 'mobile.required' => '手机号不能为空!', 'mobile.unique' => '手机号已存在!', 'password.required' => '密码不能为空!', 'password.min' => '密码长度不能小于6位!', 'password.max' => '密码长度不能大于16位!' ]); $member = new Member; if ($request->filled('username')) { $member->username = $request->input('username'); } if ($request->filled('nickname')) { $member->nickname = $request->input('nickname'); } if ($request->filled('avatar')) { $member->avatar = $request->input('avatar'); } if ($request->filled('email')) { $member->email = $request->input('email'); } if ($request->filled('gender')) { $member->gender = $request->input('gender'); } if ($request->filled('birthday')) { $member->birthday = $request->input('birthday'); } if ($request->filled('date_type')) { $member->date_type = $request->input('date_type'); } if ($request->filled('mobile')) { $member->mobile = $request->input('mobile'); } if ($request->filled('level_expire_time')) { $member->level_expire_time = $request->input('level_expire_time'); } if ($request->filled('password')) { $member->password = $request->input('password'); } if ($request->filled('status')) { $member->status = $request->input('status'); } $member->invite_uid = $request->input('invite_uid', '1890000001'); $member->pm_uid = $request->input('pm_uid', '1890000001'); $member->store_uid = $request->input('store_uid', '1890000001'); $member->level_id = $request->input('level_id', '1'); $member->save(); return $member; } /** * @title 更新用户 * * @param [type] $request * @return void */ public function update($request){ $request->validate([ 'username' => 'unique:member,username,'.$request->input('uid').',uid', 'mobile' => 'unique:member,mobile,'.$request->input('uid').',uid', ],[ 'username.unique' => '用户名已存在!', 'mobile.unique' => '手机号已存在!', ]); if ($request->filled('uid')) { $members = Member::where('uid', $request->input('uid'))->first(); } if ($request->is('api/*') && auth('api')->user()) { $members = Member::where('uid', auth('api')->user()['uid'])->first(); } if ($request->filled('username')) { $members->username = $request->input('username'); } if ($request->filled('nickname')) { $members->nickname = $request->input('nickname'); } if ($request->filled('avatar')) { $members->avatar = $request->input('avatar'); } if ($request->filled('email')) { $members->email = $request->input('email'); } if ($request->filled('gender')) { $members->gender = $request->input('gender'); } if ($request->filled('birthday')) { $members->birthday = $request->input('birthday'); } if ($request->filled('date_type')) { $members->date_type = $request->input('date_type'); } if ($request->filled('mobile')) { $members->mobile = $request->input('mobile'); } if ($request->filled('password')) { $members->password = $request->input('password'); } if ($request->filled('level_expire_time')) { $members->level_expire_time = $request->input('level_expire_time'); } $members->save(); MemberUpdate::dispatch($members); return $members; } public function delete($request){ if(!$request->filled('uid')){ throw new \Exception("非法操作!", 1); } if (is_array($request->input('uid'))) { // 批量删除 $mebers = Member::whereIn('uid', $request->input('uid'))->get(); if ($mebers->isEmpty()) { throw new \Exception("会员不存在!", 1); } $member = Member::destroy(request()->input('uid')); return $member; }else{ // 单个删除 try { $mebers = Member::findOrFail($request->input('uid')); } catch (\Throwable $th) { throw new \Exception("会员不存在!", 1); } $mebers->delete(); return $mebers; } } public function updatePasswd($request){ $request->validate([ 'password' => 'required|min:6|max:16' ], [ 'password.required' => '密码不能为空!', 'password.min' => '密码长度不能小于6位!', 'password.max' => '密码长度不能大于16位!' ]); if ($request->is('api/*')) { $request->validate([ 'old_password' => 'required', 'password' => 'confirmed' ], [ 'old_password.required' => '旧密码不能为空!', 'password.confirmed' => '两次密码不一致!' ]); } if(!$request->filled('uid')){ throw new \Exception("非法操作!", 1); } try { $mebers = Member::findOrFail($request->input('uid')); } catch (\Throwable $th) { throw new \Exception("会员不存在!", 1); } if(!$request->filled('password')){ throw new \Exception("密码不能为空!", 1); } $mebers->password = $request->input('password'); $mebers->save(); return $mebers; } public function import($request){ $file = $request->file('file'); if ($file->isValid()) { $ext = $file->extension(); if (in_array($ext, ['csv', 'xlsx']) === false) { throw new \Exception("请上传csv文件"); } $path = $file->store('import/'.date('Ymd'), 'public'); $tasks = app()->tasks->create([ 'title' => '会员数据导入', 'type' => 'import', 'file' => $path, 'params' => $request->except('file'), 'status' => 0, ]); if ($tasks->id) { \Modules\Member\Jobs\MemberImport::dispatch($path, $tasks); } } } public function export($request){ $tasks = app()->tasks->create([ 'title' => '会员数据导出', 'type' => 'export', 'file' => 'export/' . $request->input('fileName', time().'xlsx'), 'status' => 0, ]); if ($tasks->id) { \Modules\Member\Jobs\MemberExport::dispatch($request->all(), $tasks); } } }