user_id; $mobile = $request->mobile; $nickname = $request->nickname; $identity = $request->identity; $parent_id = $request->parent_id; $start = $request->start; $end = $request->end; $is_salesman = $request->is_salesman; $orderField = $request->orderField; $orderDirection = $request->orderDirection; $numPerPage = $request->numPerPage ?: 30; $users = User::with('organ')->when($mobile, function ($query) use ($mobile) { return $query->where('mobile', 'like', "%{$mobile}%"); })->when($user_id, function ($query) use ($user_id) { return $query->where('id', $user_id); })->when(is_numeric($is_salesman), function ($query) use ($is_salesman) { return $query->where('is_salesman', $is_salesman); })->when($nickname, function ($query) use ($nickname) { return $query->whereHas('info', function ($query) use ($nickname) { $query->where('nickname', 'like', "%{$nickname}%"); }); })->when(is_numeric($identity), function ($query) use ($identity) { $query->whereHas('identity', function ($query) use ($identity) { $query->where('identity_id', $identity); }); })->when($parent_id, function ($query) use ($parent_id) { $query->whereHas('relation', function ($query) use ($parent_id) { $query->where('parent_id', $parent_id); }); })->when($start && $end, function ($query) use ($start, $end) { return $query->whereBetween('created_at', [$start, date('Y-m-d', strtotime("+1 days", strtotime($end)))]); })->when($start && !$end, function ($query) use ($start) { return $query->where('created_at', '>=', $start); })->when(!$start && $end, function ($query) use ($end) { return $query->where('created_at', '<=', date('Y-m-d', strtotime("+1 days", strtotime($end)))); })->when($orderField, function ($query) use ($orderField, $orderDirection) { $query->orderBy($orderField, $orderDirection); })->with(['info', 'lastLogin'])->withCount('logins')->orderBy('created_at', 'desc')->paginate($numPerPage); $identitys = Identity::get(); return view('Admin::users.index', compact('users', 'identitys')); } public function edit(User $user) { return view('Admin::users.edit', compact('user')); } public function update(Request $request, User $user) { $validator = Validator::make($request->all(), [ 'password' => 'nullable|between:6,32', ], [ 'password.between' => '登录密码长度应在:min-:max位之间', ]); if ($validator->fails()) { return $this->error($validator->errors()->first()); } if ($user->update($request->all())) { return $this->success('修改成功', 'close'); } else { return $this->error(); } } /** * 软删除 * @Author: * @Date:2018-11-02T13:44:52+0800 * @param User $user [description] * @return [type] [description] */ public function destroy(User $user) { if ($user->delete()) { return $this->success(); } else { return $this->error(); } } /** * 回收站 * @Author: * @Date:2018-11-02T13:43:57+0800 * @return [type] [description] */ public function recycle(Request $request) { $mobile = $request->mobile; $nickname = $request->nickname; $orderField = $request->orderField; $orderDirection = $request->orderDirection; $numPerPage = $request->numPerPage ?: 30; $users = User::onlyTrashed()->when($mobile, function ($query) use ($mobile) { return $query->where('mobile', 'like', "%{$mobile}%"); })->when($nickname, function ($query) use ($nickname) { return $query->whereHas('info', function ($query) use ($nickname) { $query->where('nickname', 'like', "%{$nickname}%"); }); })->when($orderField, function ($query) use ($orderField, $orderDirection) { $query->orderBy($orderField, $orderDirection); })->with(['info', 'lastLogin'])->withCount('logins')->paginate($numPerPage); return view('Admin::users.recycle', compact('users')); } /** * 清空回收站 * 未考虑删除关联数据的问题 * @Author: * @Date:2018-11-02T13:41:40+0800 * @return [type] [description] */ public function clean() { if (User::onlyTrashed()->forceDelete()) { return $this->success(); } else { return $this->error(); } } /** * 还原 * @Author: * @Date:2018-11-02T13:43:47+0800 * @param [type] $user [description] * @return [type] [description] */ public function resume($user) { if (User::withTrashed()->where('id', $user)->restore()) { return $this->success(); } else { return $this->error(); } } /** * 彻底删除单条目 * @Author: * @Date:2018-11-02T13:43:36+0800 * @param [type] $user [description] * @return [type] [description] */ public function delete($user) { if (User::withTrashed()->where('id', $user)->forceDelete()) { return $this->success(); } else { return $this->error(); } } /** * 线下开通身份 * @Author: * @Date:2018-11-20T15:32:24+0800 * @param Request $request [description] * @param [type] $user [description] * @return [type] [description] */ public function identity(User $user) { if ($user->seller_id) { $identity = Identity::where('id', '>', $user->identity->identity_id)->get(); } else { $identity = Identity::where('id', '>', $user->identity->identity_id)->whereIn('id', [1, 2])->get(); } return view('Admin::users.identity', compact('user', 'identity')); } /** * 开通身份执行事件 * @Author: * @Date:2018-11-20T15:34:36+0800 * @param Request $request [description] * @return [type] [description] */ public function identityrun(Request $request, User $user) { $identity_id = $request->identity_id ?? ''; $pay = $request->pay ?? ''; $max_key = $request->max_key ?? '0'; if (!$identity_id) { return $this->error('请选择要变更的身份'); } $user->identityUpdate($identity_id, 'AdminUp', $pay, $max_key); return $this->success('变更成功', 'close'); } /** * 缴费用户列表 * @Author: * @Date:2018-11-26T12:03:39+0800 * @param Request $request [description] * @return [type] [description] */ public function paycostUser(Request $request) { $numPerPage = $request->numPerPage ?: 30; $identity = $request->identity; $mobile = $request->mobile; $nickname = $request->nickname; $lists = IdentityLog::where('channel', 'AdminUp') ->when(is_numeric($identity), function ($query) use ($identity) { $query->where('after', $identity); }) ->when($mobile, function ($query) use ($mobile) { $query->whereHas('user_obj', function ($query) use ($mobile) { $query->where('mobile', 'like', "%{$mobile}%"); }); }) ->when($nickname, function ($query) use ($nickname) { $query->whereHas('user_obj', function ($query) use ($nickname) { return $query->whereHas('info', function ($query) use ($nickname) { $query->where('nickname', 'like', "%{$nickname}%"); }); }); })->orderBy('created_at', 'desc')->paginate($numPerPage); $identitys = Identity::get(); return view('Admin::users.paycostuser', compact('lists', 'identitys')); } /** * 缴费用户确认返款 * @Author: * @Date:2018-11-26T12:03:30+0800 * @param Request $request [description] * @param IdentityLog $log [description] * @return [type] [description] */ public function rebates(Request $request, IdentityLog $log) { return view('Admin::users.rebates', compact('log')); } /** * 缴费用户确认返款 * @Author: * @Date:2018-11-26T12:03:30+0800 * @param Request $request [description] * @param IdentityLog $log [description] * @return [type] [description] */ public function rebatesdo(Request $request, IdentityLog $log) { $log->other = array_merge($log->other, ['rebates' => '已返款', 'rebates_remark' => $request->rebates_remark]); if ($log->save()) { return $this->success('操作成功', 'close'); } else { return $this->error(); } } /** * 更改上级ID * @Author: * @Date:2018-11-20T15:32:24+0800 * @param Request $request [description] * @param [type] $user [description] * @return [type] [description] */ public function parent(User $user) { return view('Admin::users.parent', compact('user')); } /** * 更改上级ID执行事件 * @Author: * @Date:2018-11-20T15:34:36+0800 * @param Request $request [description] * @return [type] [description] */ public function parentrun(Request $request, User $user) { $parent_id = $request->parent_id ?? ''; if (!$parent_id || !is_numeric($parent_id)) { return $this->error('请输入正确的编号'); } $parent = UserRelation::where('user_id', (int) $parent_id)->first(); if ($parent) { $user = $user->relation; $bloodline = $parent->bloodline . $parent_id . ','; //改变后血缘线 $oldblood = $user->bloodline . $user->user_id . ','; //目标替换血缘线 $newblood = $bloodline . $user->user_id . ','; //目标新血缘线 $layer_cha = ($parent->layer + 1) - $user->layer; $user->layer += $layer_cha; $user->parent_id = $parent_id; $user->bloodline = $bloodline; $user->save(); $user->user->update(['seller_id' => $parent->user->seller_id]); $childs = UserRelation::where('bloodline', 'like', '%,' . $user->user_id . ',%')->get(); foreach ($childs as $key => $child) { $child->bloodline = str_replace($oldblood, $newblood, $child->bloodline); $child->layer += $layer_cha; $child->save(); $child->user->update(['seller_id' => $parent->user->seller_id]); } } else { return $this->error('推荐人不存在'); } return $this->success('变更成功', 'close'); } public function direct(User $user) { // if ($user->direct != 2) { // return $this->error('状态不正确'); // } // $payment_vip = \App\Models\VipPament::where('user_id', $user->id)->where('state', 'SUCCESS')->first(); // \App\Bonus\Direct::settlement($user, ['orderid' => 'vip' . $payment_vip->id]); return $this->success('执行完毕'); } public function bloodview(User $user) { $lists = $user->relation->list2tree('user_id', 'parent_id', 'children', $user->id); $root = [ "text" => $user->id . ' - ' . $user->info->nickname . '(' . ($user->identity->identity_id > 0 ? '已激活' : '未激活') . ')', "children" => $lists, ]; return view('Admin::users.bloodview', compact('root')); } //更改组织 public function seller(Request $request, User $user) { $sellers = Seller::where('type', 'organ')->whereNotIn('id', [$user->seller_id])->get(); return view('Admin::users.seller', compact('user', 'sellers')); } //更改组织执行 public function sellerdo(Request $request, User $user) { $seller_id = $request->organ_id; if (!$seller_id || !is_numeric($seller_id)) { return $this->error('请选择组织'); } $seller = Seller::find($seller_id); if ($seller) { $uids = UserRelation::where('bloodline', 'like', "%," . $user->id . ",%") ->orWhere('user_id', $user->id) ->pluck('user_id') ->toArray(); User::whereIn('id', $uids)->update(['seller_id' => $seller->id]); } else { return $this->error('组织不存在'); } return $this->success('变更成功', 'close'); } //设置取消业务员 public function salesman(Request $request, User $user) { $value = $request->value; if ($user->update(['is_salesman' => $value])) { return $this->success('设置成功'); } else { return $this->error('设置失败'); } } }