is_super)) return null; $role = $user->role ?? null; if (!$role) return []; return $role->projects->pluck('id')->toArray(); } /** * ajax返回 * @param $rows * @param $total * @return JsonResponse */ public function ajaxListSuccess($rows, $total) { return response()->json([ 'rows' => $rows, 'total' => $total, ]); } /** * 成功返回 * @param $message * @return JsonResponse */ public function success($message) { return response()->json(['message' => $message]); } /** * 错误返回 * @param $message * @return JsonResponse */ public function error($message) { return response()->json(['message' => $message], 400); } /** * 表单验证 * @param $data * @param $rules * @param $message * @param $model object * @param $id * @return JsonResponse */ public function verification($data, $rules, $message, $model, $id) { $validator = Validator::make($data, $rules, $message); if ($validator->fails()) { $errorList = $validator->errors()->all(); return $this->error($errorList[0]); } if (empty($id)) { $result = $model->insert($data); } else { $data['updated_at'] = date('Y-m-d H:i:s', time()); $result = $model->where('id', $id)->update($data); } if (empty($result)) { return $this->error('服务器发生错误'); } return $this->success('操作成功'); } /** * 获取列表 * @param $model object * @param $pageSize * @return JsonResponse */ public function getList($model, $pageSize) { $result = $model->whereNull('deleted_at')->paginate($pageSize); return $this->ajaxListSuccess($result->items(), $result->total()); } /** * 删除 * @param $model object * @param $id * @return JsonResponse */ public function deleteInfo($model, $id) { $result = $model->where('id', $id)->update(['deleted_at' => date('Y-m-d H:i:s', time())]); if (!empty($result)) { return $this->success('删除成功'); } else { return $this->error('删除失败'); } } /** * 自定义分页方法 * @param $collection object * @param $perPage * @param string $pageName * @param null $fragment * @return LengthAwarePaginator */ public function paginateCollection($collection, $perPage, $pageName = 'page', $fragment = null) { $currentPage = \Illuminate\Pagination\LengthAwarePaginator::resolveCurrentPage($pageName); $currentPageItems = $collection->slice(($currentPage - 1) * $perPage, $perPage)->values(); parse_str(request()->getQueryString(), $query); unset($query[$pageName]); $paginator = new \Illuminate\Pagination\LengthAwarePaginator( $currentPageItems, $collection->count(), $perPage, $currentPage, [ 'pageName' => $pageName, 'path' => \Illuminate\Pagination\LengthAwarePaginator::resolveCurrentPath(), 'query' => $query, 'fragment' => $fragment ] ); return $paginator; } /** * 二维数组排序 * @param $array * @param $keys * @param string $sort * @return array */ public function arraySort($array, $keys, $sort = 'asc') { $newArr = $valArr = array(); foreach ($array as $key => $value) { $valArr[$key] = $value[$keys]; } ($sort == 'asc') ? asort($valArr) : arsort($valArr); reset($valArr); foreach ($valArr as $key => $value) { $newArr[$key] = $array[$key]; } return $newArr; } /** * 二维数组分组 * @param $arr * @param $key * @return array */ public function arrayGroupBy($arr, $key) { $grouped = array(); foreach ($arr as $value) { $grouped[$value[$key]][] = $value; } if (func_num_args() > 2) { $args = func_get_args(); foreach ($grouped as $key => $value) { $parameter = array_merge($value, array_slice($args, 2, func_num_args())); $grouped[$key] = call_user_func_array('array_group_by', $parameter); } } return $grouped; } /** * 模版站api成功返回 * @param $list * @param $siteInfo * @param $setting * @param $advertise * @return JsonResponse */ public function returnApiSuccess($list, $siteInfo = [], $setting = [], $advertise = []) { return response()->json([ 'status' => 200, 'message' => 'success', 'data' => $list, 'siteInfo' => $siteInfo, 'setting' => $setting, 'advertise' => $advertise, ]); } /** * 模版站api失败返回 * @param array $data * @return JsonResponse */ public function returnApiError($data = []) { return response()->json([ 'status' => 500, 'message' => 'error', 'data' => $data, ]); } }