mirror of
				https://github.com/v2board/v2board.git
				synced 2025-11-01 01:41:47 +08:00 
			
		
		
		
	update: staff
This commit is contained in:
		
							
								
								
									
										59
									
								
								app/Http/Controllers/Staff/NoticeController.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										59
									
								
								app/Http/Controllers/Staff/NoticeController.php
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,59 @@ | |||||||
|  | <?php | ||||||
|  |  | ||||||
|  | namespace App\Http\Controllers\Staff; | ||||||
|  |  | ||||||
|  | use App\Http\Requests\Admin\NoticeSave; | ||||||
|  | use Illuminate\Http\Request; | ||||||
|  | use App\Http\Controllers\Controller; | ||||||
|  | use App\Models\Notice; | ||||||
|  | use Illuminate\Support\Facades\Cache; | ||||||
|  |  | ||||||
|  | class NoticeController extends Controller | ||||||
|  | { | ||||||
|  |     public function fetch(Request $request) | ||||||
|  |     { | ||||||
|  |         return response([ | ||||||
|  |             'data' => Notice::orderBy('id', 'DESC')->get() | ||||||
|  |         ]); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public function save(NoticeSave $request) | ||||||
|  |     { | ||||||
|  |         $data = $request->only([ | ||||||
|  |             'title', | ||||||
|  |             'content', | ||||||
|  |             'img_url' | ||||||
|  |         ]); | ||||||
|  |         if (!$request->input('id')) { | ||||||
|  |             if (!Notice::create($data)) { | ||||||
|  |                 abort(500, '保存失败'); | ||||||
|  |             } | ||||||
|  |         } else { | ||||||
|  |             try { | ||||||
|  |                 Notice::find($request->input('id'))->update($data); | ||||||
|  |             } catch (\Exception $e) { | ||||||
|  |                 abort(500, '保存失败'); | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |         return response([ | ||||||
|  |             'data' => true | ||||||
|  |         ]); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public function drop(Request $request) | ||||||
|  |     { | ||||||
|  |         if (empty($request->input('id'))) { | ||||||
|  |             abort(500, '参数错误'); | ||||||
|  |         } | ||||||
|  |         $notice = Notice::find($request->input('id')); | ||||||
|  |         if (!$notice) { | ||||||
|  |             abort(500, '公告不存在'); | ||||||
|  |         } | ||||||
|  |         if (!$notice->delete()) { | ||||||
|  |             abort(500, '删除失败'); | ||||||
|  |         } | ||||||
|  |         return response([ | ||||||
|  |             'data' => true | ||||||
|  |         ]); | ||||||
|  |     } | ||||||
|  | } | ||||||
							
								
								
									
										41
									
								
								app/Http/Controllers/Staff/PlanController.php
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										41
									
								
								app/Http/Controllers/Staff/PlanController.php
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,41 @@ | |||||||
|  | <?php | ||||||
|  |  | ||||||
|  | namespace App\Http\Controllers\Staff; | ||||||
|  |  | ||||||
|  | use App\Http\Requests\Admin\PlanSave; | ||||||
|  | use App\Http\Requests\Admin\PlanSort; | ||||||
|  | use App\Http\Requests\Admin\PlanUpdate; | ||||||
|  | use Illuminate\Http\Request; | ||||||
|  | use App\Http\Controllers\Controller; | ||||||
|  | use App\Models\Plan; | ||||||
|  | use App\Models\Order; | ||||||
|  | use App\Models\User; | ||||||
|  | use Illuminate\Support\Facades\DB; | ||||||
|  |  | ||||||
|  | class PlanController extends Controller | ||||||
|  | { | ||||||
|  |     public function fetch(Request $request) | ||||||
|  |     { | ||||||
|  |         $counts = User::select( | ||||||
|  |             DB::raw("plan_id"), | ||||||
|  |             DB::raw("count(*) as count") | ||||||
|  |         ) | ||||||
|  |             ->where('plan_id', '!=', NULL) | ||||||
|  |             ->where(function ($query) { | ||||||
|  |                 $query->where('expired_at', '>=', time()) | ||||||
|  |                     ->orWhere('expired_at', NULL); | ||||||
|  |             }) | ||||||
|  |             ->groupBy("plan_id") | ||||||
|  |             ->get(); | ||||||
|  |         $plans = Plan::orderBy('sort', 'ASC')->get(); | ||||||
|  |         foreach ($plans as $k => $v) { | ||||||
|  |             $plans[$k]->count = 0; | ||||||
|  |             foreach ($counts as $kk => $vv) { | ||||||
|  |                 if ($plans[$k]->id === $counts[$kk]->plan_id) $plans[$k]->count = $counts[$kk]->count; | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |         return response([ | ||||||
|  |             'data' => $plans | ||||||
|  |         ]); | ||||||
|  |     } | ||||||
|  | } | ||||||
							
								
								
									
										102
									
								
								app/Http/Controllers/Staff/UserController.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										102
									
								
								app/Http/Controllers/Staff/UserController.php
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,102 @@ | |||||||
|  | <?php | ||||||
|  |  | ||||||
|  | namespace 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 | ||||||
|  |         ]); | ||||||
|  |     } | ||||||
|  | } | ||||||
							
								
								
									
										56
									
								
								app/Http/Requests/Staff/UserUpdate.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										56
									
								
								app/Http/Requests/Staff/UserUpdate.php
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,56 @@ | |||||||
|  | <?php | ||||||
|  |  | ||||||
|  | namespace App\Http\Requests\Staff; | ||||||
|  |  | ||||||
|  | use Illuminate\Foundation\Http\FormRequest; | ||||||
|  |  | ||||||
|  | class UserUpdate extends FormRequest | ||||||
|  | { | ||||||
|  |     /** | ||||||
|  |      * Get the validation rules that apply to the request. | ||||||
|  |      * | ||||||
|  |      * @return array | ||||||
|  |      */ | ||||||
|  |     public function rules() | ||||||
|  |     { | ||||||
|  |         return [ | ||||||
|  |             'email' => 'required|email', | ||||||
|  |             'password' => 'nullable', | ||||||
|  |             'transfer_enable' => 'numeric', | ||||||
|  |             'expired_at' => 'nullable|integer', | ||||||
|  |             'banned' => 'required|in:0,1', | ||||||
|  |             'plan_id' => 'nullable|integer', | ||||||
|  |             'commission_rate' => 'nullable|integer|min:0|max:100', | ||||||
|  |             'discount' => 'nullable|integer|min:0|max:100', | ||||||
|  |             'u' => 'integer', | ||||||
|  |             'd' => 'integer', | ||||||
|  |             'balance' => 'integer', | ||||||
|  |             'commission_balance' => 'integer' | ||||||
|  |         ]; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public function messages() | ||||||
|  |     { | ||||||
|  |         return [ | ||||||
|  |             'email.required' => '邮箱不能为空', | ||||||
|  |             'email.email' => '邮箱格式不正确', | ||||||
|  |             'transfer_enable.numeric' => '流量格式不正确', | ||||||
|  |             'expired_at.integer' => '到期时间格式不正确', | ||||||
|  |             'banned.required' => '是否封禁不能为空', | ||||||
|  |             'banned.in' => '是否封禁格式不正确', | ||||||
|  |             'plan_id.integer' => '订阅计划格式不正确', | ||||||
|  |             'commission_rate.integer' => '推荐返利比例格式不正确', | ||||||
|  |             'commission_rate.nullable' => '推荐返利比例格式不正确', | ||||||
|  |             'commission_rate.min' => '推荐返利比例最小为0', | ||||||
|  |             'commission_rate.max' => '推荐返利比例最大为100', | ||||||
|  |             'discount.integer' => '专属折扣比例格式不正确', | ||||||
|  |             'discount.nullable' => '专属折扣比例格式不正确', | ||||||
|  |             'discount.min' => '专属折扣比例最小为0', | ||||||
|  |             'discount.max' => '专属折扣比例最大为100', | ||||||
|  |             'u.integer' => '上行流量格式不正确', | ||||||
|  |             'd.integer' => '下行流量格式不正确', | ||||||
|  |             'balance.integer' => '余额格式不正确', | ||||||
|  |             'commission_balance.integer' => '佣金格式不正确' | ||||||
|  |         ]; | ||||||
|  |     } | ||||||
|  | } | ||||||
| @@ -15,6 +15,18 @@ class StaffRoute | |||||||
|             $router->get ('/ticket/fetch', 'Staff\\TicketController@fetch'); |             $router->get ('/ticket/fetch', 'Staff\\TicketController@fetch'); | ||||||
|             $router->post('/ticket/reply', 'Staff\\TicketController@reply'); |             $router->post('/ticket/reply', 'Staff\\TicketController@reply'); | ||||||
|             $router->post('/ticket/close', 'Staff\\TicketController@close'); |             $router->post('/ticket/close', 'Staff\\TicketController@close'); | ||||||
|  |             // User | ||||||
|  |             $router->post('/user/update', 'Staff\\UserController@update'); | ||||||
|  |             $router->get ('/user/getUserInfoById', 'Staff\\UserController@getUserInfoById'); | ||||||
|  |             $router->post('/user/sendMail', 'Staff\\UserController@sendMail'); | ||||||
|  |             $router->post('/user/ban', 'Staff\\UserController@ban'); | ||||||
|  |             // Plan | ||||||
|  |             $router->get ('/plan/fetch', 'Staff\\PlanController@fetch'); | ||||||
|  |             // Notice | ||||||
|  |             $router->get ('/notice/fetch', 'Admin\\NoticeController@fetch'); | ||||||
|  |             $router->post('/notice/save', 'Admin\\NoticeController@save'); | ||||||
|  |             $router->post('/notice/update', 'Admin\\NoticeController@update'); | ||||||
|  |             $router->post('/notice/drop', 'Admin\\NoticeController@drop'); | ||||||
|         }); |         }); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user