| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161 | 
							- <?php
 
- namespace App\Service\HeaderWord;
 
- use App\Model\Header_ext;
 
- use App\Model\Header_ext_sub;
 
- use App\Service\Service;
 
- use Illuminate\Support\Facades\DB;
 
- /**
 
-  * 表头相关工厂模式
 
-  * @package App\Models
 
-  */
 
- class HeaderWordHookService extends Service
 
- {
 
-     protected static $instance;
 
-     protected static $header;
 
-     protected static $header_detail;
 
-     public function __construct(){
 
-     }
 
-     public static function getInstance(): self
 
-     {
 
-         if (self::$instance == null) {
 
-             self::$instance = new HeaderWordHookService();
 
-         }
 
-         return self::$instance;
 
-     }
 
-     public function getHeaderWord($data){
 
-         if(!isset($data['type'])) return [false,'not found type'];
 
-         $type = $data['type'];
 
-         $list = Header_ext::where('type',$type)->orderBy('sort','asc')->select('*')->get()->toArray();
 
- //        self::$header_detail = Header_ext::where('type',$type_detail)->pluck('value','key')->toArray();
 
-         return [true,$list];
 
-     }
 
-     public function getHeaderSettings($data){
 
-         if($this->isEmpty($data,'menu_id')) return [false,'菜单ID不能为空!'];
 
-         $type = 1;
 
-         if(! $this->isEmpty($data,'type')) $type = $data['type'];
 
-         $header = config("header.{$data['menu_id']}")[$type] ?? [];
 
-         return [true,$header];
 
-     }
 
-     public function edit($data){
 
-         list($status,$msg) = $this->headerRule($data,false);
 
-         if(!$status) return [$status,$msg];
 
-         return [true,'保存成功!'];
 
-     }
 
-     public function add($data){
 
-         list($status,$msg) = $this->headerRule($data);
 
-         if(!$status) return [$status,$msg];
 
-         DB::beginTransaction();
 
-         try{
 
-             Header_ext::where('menu_id',$data['menu_id'])
 
-                 ->where('type',$data['type'])
 
-                 ->where('del_time',0)
 
-                 ->update(['del_time'=>time()]);
 
-             Header_ext_sub::where('menu_id',$data['menu_id'])
 
-                 ->where('type',$data['type'])
 
-                 ->where('del_time',0)
 
-                 ->update(['del_time'=>time()]);
 
-             $insert = [];
 
-             foreach ($data['data'] as $value){
 
-                 $insert[] = [
 
-                     'key' => $value['key'] ?? '',
 
-                     'value' => $value['value'],
 
-                     'type' => $value['type'],
 
-                     'menu_id' => $value['menu_id'],
 
-                     'position' => $value['position'],
 
-                     'x_axis' => $value['x'],
 
-                     'y_axis' => $value['y'],
 
-                 ];
 
-             }Header_ext::insert($insert);
 
-             Header_ext_sub::insert([
 
-                 'type' => $data['type'],
 
-                 'menu_id' => $data['menu_id'],
 
-                 'merge_cells' => json_encode($data['mergeCells']),
 
-                 'max_length' => $data['maxLength'],
 
-             ]);
 
-             DB::commit();
 
-         }catch (\Exception $e){
 
-             DB::rollBack();
 
-             return [false,$e->getMessage()];
 
-         }
 
-         return [true,'保存成功!'];
 
-     }
 
-     public function del($data){
 
-         if($this->isEmpty($data,'id')) return [false,'ID不能为空!'];
 
-         return [true,'删除成功'];
 
-     }
 
-     public function detail($data){
 
-         if($this->isEmpty($data,'menu_id')) return [false,'菜单ID不能为空!'];
 
-         if($this->isEmpty($data,'type')) return [false,'TYPE不能为空!'];
 
-         $result = Header_ext::where('del_time',0)
 
-             ->select('key','value','position','x_axis as x','y_axis as y')
 
-             ->where('menu_id',$data['menu_id'])
 
-             ->where('type',$data['type'])
 
-             ->get()->toArray();
 
-         $result_sub = Header_ext_sub::where('del_time',0)
 
-             ->select('merge_cells','max_length')
 
-             ->where('menu_id',$data['menu_id'])
 
-             ->where('type',$data['type'])
 
-             ->get()->toArray();
 
-         $return['data'] = $result;
 
-         $return['mergeCells'] = ! empty($result_sub[0]['merge_cells']) ? json_decode($result_sub[0]['merge_cells'],true) : [];
 
-         $return['maxLength'] = $result_sub[0]['max_length'] ?? 1;
 
-         return [true,$return];
 
-     }
 
-     public function headerRule(&$data,$is_add = true){
 
-         if($this->isEmpty($data,'menu_id')) return [false,'菜单ID不能为空!'];
 
-         if($this->isEmpty($data,'data')) return [false,'数据不能为空!'];
 
-         foreach ($data['data'] as $key => $value){
 
-             if (strpos($value['position'], ',') !== false) {
 
-                 $tmp = explode(',',$value['position']);
 
-                 $str_col = $str_ros =  '';
 
-                 foreach ($tmp as $v){
 
-                     $tmp_v = explode(':',$v);
 
-                     if($tmp_v[0] != $tmp_v[1]) {
 
-                         // 截取头部
 
-                         $head = explode(':', $tmp[0])[0];
 
-                         // 截取尾部
 
-                         $tail = explode(':', end($tmp))[1];
 
-                         $str_ros = $head . ":" . $tail;
 
-                         continue;
 
-                     }else{
 
-                         $str_col .= $tmp_v[0] . ':';
 
-                     }
 
-                 }
 
-                 $str_col = rtrim($str_col,':');
 
-                 if($str_col) $data['data'][$key]['position'] = $str_col;
 
-                 if($str_ros) $data['data'][$key]['position'] = $str_ros;
 
-             }
 
-         }
 
-         return [true,''];
 
-     }
 
- }
 
 
  |