public function modules($id, Request $request)
 {
     $user = \Session::get('user');
     if (!$user->can('项目模块管理')) {
         abort(401);
     }
     $project = Project::find($id);
     $connected_modules = $project->modules()->where('project_id', $project->id)->lists('id')->all();
     if (count($connected_modules)) {
         $project->modules()->detach($connected_modules);
     }
     $new_modules = $request->input('modules', []);
     foreach ($new_modules as $module_id) {
         $module = Module::find($module_id);
         $project->modules()->save($module);
     }
     $d1 = array_diff($new_modules, $connected_modules);
     $d2 = array_diff($connected_modules, $new_modules);
     if (count($d1)) {
         //新加的模块
         Clog::add($project, '添加模块', [implode(',', \App\Module::whereIn('id', $d1)->lists('name')->all())], Clog::LEVEL_WARNING);
         foreach ($d1 as $m) {
             $module = Module::find($m);
             \Log::notice(strtr('项目模块增加: 用户(%name[%id] 添加了项目(%project_name[%project_id] 的模块 (%module_name[%module_id])', ['%name' => $user->name, '%id' => $user->id, '%project_name' => $project->name, '%project_id' => $project->id, '%module_name' => $module->name, '%module_id' => $module->id]));
         }
     }
     if (count($d2)) {
         //删除的模块
         Clog::add($project, '删除模块', [implode(',', \App\Module::whereIn('id', $d2)->lists('name')->all())], Clog::LEVEL_WARNING);
         foreach ($d2 as $m) {
             $module = Module::find($m);
             \Log::notice(strtr('项目模块删除: 用户(%name[%id] 删除了项目(%project_name[%project_id] 的模块 (%module_name[%module_id])', ['%name' => $user->name, '%id' => $user->id, '%project_name' => $project->name, '%project_id' => $project->id, '%module_name' => $module->name, '%module_id' => $module->id]));
         }
     }
     return redirect()->back()->with('message_content', '模块设置成功!')->with('message_type', 'info')->with('tab', 'softwares');
 }