|
@@ -2,12 +2,19 @@
|
|
|
|
|
|
namespace App\Service;
|
|
|
|
|
|
+use App\Exports\ExportRule;
|
|
|
+use App\Exports\MultiSheetExport;
|
|
|
+use App\Exports\MyExport;
|
|
|
use App\Model\Employee;
|
|
|
+use App\Model\Role;
|
|
|
use App\Model\RoleMenu;
|
|
|
use App\Model\RoleMenuButton;
|
|
|
use App\Model\SysMenu;
|
|
|
use App\Model\SysMenuButton;
|
|
|
use Illuminate\Support\Facades\DB;
|
|
|
+use Maatwebsite\Excel\Excel;
|
|
|
+use Maatwebsite\Excel\Files\TemporaryFileFactory;
|
|
|
+use Maatwebsite\Excel\Writer;
|
|
|
|
|
|
class SysMenuService extends Service
|
|
|
{
|
|
@@ -257,4 +264,86 @@ class SysMenuService extends Service
|
|
|
}
|
|
|
return $data;
|
|
|
}
|
|
|
+
|
|
|
+ public function export($data){
|
|
|
+ //(共有的) 菜单 =》 按钮
|
|
|
+ $sys_menu = SysMenu::where('del_time',0)
|
|
|
+ ->select('title','uri','parent_id','sort','id','is_authority')
|
|
|
+ ->orderBy('sort','desc')
|
|
|
+ ->get()->toArray();
|
|
|
+ $sys_menu_button = $this->fillMenuButton($sys_menu);
|
|
|
+
|
|
|
+ $role = Role::where('del_time',0)
|
|
|
+ ->select('id','title')
|
|
|
+ ->orderBy('id','desc')
|
|
|
+ ->get()->toArray();
|
|
|
+ $role_menu = RoleMenu::where('del_time',0)
|
|
|
+ ->whereIn('role_id',array_column($role,'id'))
|
|
|
+ ->select('menu_id','role_id','type')
|
|
|
+ ->get()->toArray();
|
|
|
+ $role_menu_map = [];
|
|
|
+ foreach ($role_menu as $value){
|
|
|
+ $role_menu_map[$value['role_id']][] = $value;
|
|
|
+ }
|
|
|
+
|
|
|
+ $role_menu_button = RoleMenuButton::where('del_time',0)
|
|
|
+ ->whereIn('role_id',array_column($role,'id'))
|
|
|
+ ->select('menu_id','role_id','button_id')
|
|
|
+ ->get()->toArray();
|
|
|
+ $role_menu_button_map = [];
|
|
|
+ foreach ($role_menu_button as $value){
|
|
|
+ $role_menu_button_map[$value['role_id']][] = $value;
|
|
|
+ }
|
|
|
+
|
|
|
+ $result = [];
|
|
|
+ foreach ($role as $value){
|
|
|
+ $tmp = $sys_menu_button;
|
|
|
+ $role_menu_tmp = $role_menu_map[$value['id']] ?? [];
|
|
|
+ $role_menu_button_tmp = $role_menu_button_map[$value['id']] ?? [];
|
|
|
+ $menu_button = [];
|
|
|
+ $data_array = [];
|
|
|
+ $data_array[] = ['菜单名称','是否勾选菜单','菜单按钮','数据范围'];
|
|
|
+ foreach ($role_menu_button_tmp as $v){
|
|
|
+ $menu_button[$v['menu_id']][] = $v['button_id'];
|
|
|
+ }
|
|
|
+ foreach ($tmp as $k => $v){
|
|
|
+ $v['has_menu'] = 0;
|
|
|
+ $v['type'] = 0;
|
|
|
+ foreach ($role_menu_tmp as $v2){
|
|
|
+ //菜单
|
|
|
+ if($v2['menu_id'] == $v['id']) {
|
|
|
+ $v['has_menu'] = 1;
|
|
|
+ $v['type'] = $v2['type'];
|
|
|
+ }
|
|
|
+
|
|
|
+ //菜单下的按钮
|
|
|
+ if(! empty($tmp[$k]['button'])){
|
|
|
+ $button_tmp = $menu_button[$v['id']] ?? [];
|
|
|
+ $str = "";
|
|
|
+ foreach ($tmp[$k]['button'] as $v_b){
|
|
|
+ if(in_array($v_b['id'],$button_tmp)){
|
|
|
+ $str .= $v_b['title'] . ",";
|
|
|
+ }
|
|
|
+ }
|
|
|
+ $v['button'] = rtrim($str,',');
|
|
|
+ }else{
|
|
|
+ $v['button'] = "";
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ $rule = RoleMenu::$type_name[$v['type']] ?? "";
|
|
|
+ $data_array[] = [
|
|
|
+ $v['title'],
|
|
|
+ $v['has_menu'] ? "√" : "×",
|
|
|
+ $v['button'],
|
|
|
+ $rule
|
|
|
+ ];
|
|
|
+ }
|
|
|
+ $result[$value['title']] = $data_array;
|
|
|
+ }
|
|
|
+
|
|
|
+ $filename = date("Ymd").time().rand(1000,9999) . ".xlsx";
|
|
|
+ \Maatwebsite\Excel\Facades\Excel::store(new MultiSheetExport($result),"/public/export/{$filename}", null, 'Xlsx', []);
|
|
|
+ return [true,$filename];
|
|
|
+ }
|
|
|
}
|