diff --git a/extend/seven/behavior/ArchiveDel.php b/extend/seven/behavior/ArchiveDel.php new file mode 100644 index 00000000..7afbf423 --- /dev/null +++ b/extend/seven/behavior/ArchiveDel.php @@ -0,0 +1,58 @@ + + * @Since: 2018/1/28 10:27 + */ + +namespace seven\behavior; + +use app\admin\model\Archives; +use think\Model; + +class ArchiveDel +{ + public function run(&$params) + { + if ($params instanceof Archives){ + $pk = $params->getPk(); + $attachments = []; + array_push($attachments, $params['cover']); + //读取模型字段 + $extra = model('PostsModelx')->get(['name'=>$params['type']]); + if(isset($extra['extra']) && !empty($extra['extra'])) { + //读取模型数据 + $archive_model = model('extra' . $params['type'])->get(['item_id' => $params[$pk]]); + foreach (json_decode($extra['extra'],true) as $k=>$v) + { + if(!isset($archive_model[$v['field']]) || + (isset($archive_model[$v['field']]) && empty($archive_model[$v['field']]))) { + continue; + } + if($v['type']=='image'){ + array_push($attachments, $archive_model[$v['field']]); + } + elseif($v['type']=='images'){ + $arr = explode(",", $archive_model[$v['field']]); + $attachments= array_merge($attachments, $arr); + } + elseif(in_array($v['type'], ['file','files'])){ + $arr= json_decode($archive_model[$v['field']],true); + foreach($arr as $key=>$val){ + array_push($attachments, $val['url']); + } + } + } + } + model('extra' . $params['type'])->where(['item_id' => $params[$pk]])->delete(); + + //打上可删除标识 + foreach ($attachments as $k => $v){ + if(!empty($v)){ + model('Attachment')->where('url', $v)->update(['canDelete'=>1]); + } + } + } + } + +} \ No newline at end of file