| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 | <?phpnamespace App\Service;use App\Model\TSpaceSet;use Illuminate\Support\Facades\DB;class TSpaceService extends Service{    public function add($data, $user){        return [true, ''];    }    public function edit($data, $user){        list($status, $msg) = $this->constructionEditOtherRule($data, $user);        if(! $status) return [false, $msg];        DB::beginTransaction();        try{            $set = TSpaceSet::where('del_time',0)                ->where('type', $data['type'])                ->select('file', 'id')                ->get()->toArray();            $set_map = array_column($set,'file','id');            $time = time();            $insert = $update = $new = $old = $id = [];            foreach ($data['data'] as $value){                $text = "";                if(! empty($value['text'])) $text = json_encode($data['text']);                if(! empty($value['id'])){                    $file = $set_map[$value['id']] ?? "";                    if($value['file'] != $file){                        $old[] = $file;                    }else{                        $new[] = $value['file'];                    }                    $update[] = [                        'id' => $value['id'],                        'type' => $data['type'],                        'text' => $text,                        'file' => $value['file'],                        'crt_time' => $time,                    ];                    $id[] = $value['id'];                }else{                    $new[] = $value['file'];                    $insert[] = [                        'type' => $data['type'],                        'text' => $text,                        'file' => $value['file'],                        'crt_time' => $time,                    ];                }            }            foreach ($set as $value){                if(! in_array($value['id'], $id)){                    $update[] = [                        'id' => $value['id'],                        'del_time' => $time,                    ];                    $old[] = $value['file'];                }            }            if(! empty($update)){                foreach ($update as $value){                    TSpaceSet::where('id',$value['id'])                        ->update($value);                }            }            if(! empty($insert)) TSpaceSet::insert($insert);            DB::commit();        }catch (\Exception $exception){            DB::rollBack();            return [false, $exception->getMessage()];        }        return [true, ['file' => ['new' => $new, 'old' => $old]]];    }    public function constructionEditOtherRule($data,$user){        if(empty($data['type'])) return [false,'TSpace首页设置类型不能为空'];        if(! isset(TSpaceSet::$model_type_title[$data['type']])) return [false,'TSpace首页设置类型错误'];        if(empty($data['data'])) return [false, '设置内容不能为空'];        foreach ($data['data'] as $value){            if(empty($value['file'])) return [false, '文件不能为空'];        }        return [true, ''];    }    public function detail($data, $user){        if(empty($data['type'])) return [false,'TSpace首页设置类型不能为空'];        if(! isset(TSpaceSet::$model_type_title[$data['type']])) return [false,'TSpace首页设置类型错误'];        $set = TSpaceSet::where('del_time',0)            ->where('type', $data['type'])            ->select('file', 'id', 'text')            ->get()->toArray();        foreach ($set as $key => $value){            if(! empty($value['text'])) $set[$key]['text'] = json_decode($value['text'], true);        }        return [true, $set];    }}
 |