Pārlūkot izejas kodu

修改预览数据格式、增加字段、修改banner等存储接口

duqinya 6 gadi atpakaļ
vecāks
revīzija
1a135ce21f
1 mainītis faili ar 58 papildinājumiem un 58 dzēšanām
  1. 58 58
      app/Repositories/CmsContentTemplateSetRepository.php

+ 58 - 58
app/Repositories/CmsContentTemplateSetRepository.php

@@ -8,6 +8,8 @@ use App\Models\CmsContentTemplate;
 use App\Models\CmsContentTemplateSet;
 use App\Models\CmsSubjectProduct;
 use Symfony\Component\HttpKernel\Exception\HttpException;
+use Illuminate\Support\Facades\DB;
+use Illuminate\Database\QueryException;
 
 class CmsContentTemplateSetRepository {
     public function __construct(CmsContentTemplateSet $cmsContentTemplateSet,CmsContentTemplate $cmsContentTemplate,CmsSubjectProduct $cmsSubjectProduct,CmsSubject $cmsSubject) {
@@ -23,23 +25,26 @@ class CmsContentTemplateSetRepository {
      */
     public function bannerSet($request)
     {
-
             $rules = json_decode($request['rule'],true);
             if (is_array($rules)){
                 if (count($rules)>10) {
                     throw new HttpException(500, '最多只能添加10个banner海报');
                 }
-                $subject = [
-                    'tpl_id' => $request['tpl_id'],
-                    'rule' => $request['rule'],
-                    'area_type' => $request['area_type'],
-                    'status' => 0,
-                ];
-
-                if (!$this->cmsContentTemplateSet->create($subject)) {
-                    throw new HttpException(500, '添加失败');
-                }
-
+                    $decode_floor = json_decode($request['rule'], true);
+                    $count = count($decode_floor);
+                    if ($count > 0) {
+                        for ($i = 0; $i < $count; $i++) {
+                            $subject = [
+                                'rule' => json_encode($decode_floor[$i]),
+                                'tpl_id' => $request['tpl_id'],
+                                'area_type' => $request['area_type'],
+                                'status' => 0,
+                            ];
+                            if (!$this->cmsContentTemplateSet->create($subject)) {
+                                throw new HttpException(500, '添加失败');
+                            }
+                        }
+                    }
             }else{
                 throw new HttpException(500, '参数格式有误');
             }
@@ -51,9 +56,6 @@ class CmsContentTemplateSetRepository {
      */
     public function advertisementSet($request)
     {
-
-        $rules = json_decode($request['rule'],true);
-        if (is_array($rules)){
             $subject = [
                 'tpl_id' => $request['tpl_id'],
                 'rule' => $request['rule'],
@@ -65,10 +67,6 @@ class CmsContentTemplateSetRepository {
                 throw new HttpException(500, '添加失败');
             }
 
-        }else{
-                throw new HttpException(500, '参数格式有误');
-        }
-
     }
 
     /**
@@ -76,8 +74,6 @@ class CmsContentTemplateSetRepository {
      */
     public function floorSet($request)
     {
-        $rules = json_decode($request['rule'],true);
-        if (is_array($rules)){
             $subject = [
                 'tpl_id' => $request['tpl_id'],
                 'rule' => $request['rule'],
@@ -89,10 +85,6 @@ class CmsContentTemplateSetRepository {
                 throw new HttpException(500, '添加失败');
             }
 
-        }else{
-            throw new HttpException(500, '参数格式有误');
-        }
-
     }
 
     /**
@@ -100,8 +92,6 @@ class CmsContentTemplateSetRepository {
      */
     public function categorySet($request)
     {
-        $rules = json_decode($request['rule'],true);
-        if (is_array($rules)){
             $subject = [
                 'tpl_id' => $request['tpl_id'],
                 'rule' => $request['rule'],
@@ -113,10 +103,6 @@ class CmsContentTemplateSetRepository {
                 throw new HttpException(500, '添加失败');
             }
 
-        }else{
-            throw new HttpException(500, '参数格式有误');
-        }
-
     }
 
 
@@ -151,7 +137,7 @@ class CmsContentTemplateSetRepository {
     }
 
     /**
-     * 内容发布
+     * 内容预览
      */
     public function preview($request)
     {
@@ -168,42 +154,56 @@ class CmsContentTemplateSetRepository {
         }
 
         $group_array['content'][0]['area_type'] ="banner";
-        $banner_rule = $this->cmsContentTemplateSet->select('rule')->where(['tpl_id'=>$request['tpl_id'],'area_type'=>0])->first();
-        $group_array['content'][0]['rule'] = $banner_rule->rule;
+        $banner_rule = $this->cmsContentTemplateSet->select('id','rule')->where(['tpl_id'=>$request['tpl_id'],'area_type'=>0])->get();
+        $new_rule = [];
+        foreach ($banner_rule->toArray() as $k=>$v){
+            $new_rule[] = $v;
+        }
+        $group_array['content'][0]['rule'] = $new_rule;
 
         $group_array['content'][1]['area_type'] ="special";
-        $subject_rule = $this->cmsContentTemplateSet->select('rule')->where(['tpl_id'=>$request['tpl_id'],'area_type'=>1])->first();
-        $group_array['content'][1]['rule'] = $subject_rule->rule;
+        $subject_rule = $this->cmsContentTemplateSet->select('id','rule')->where(['tpl_id'=>$request['tpl_id'],'area_type'=>1])->get();
+
+        $new_rule = [];
+        foreach ($subject_rule->toArray() as $k=>$v){
+            $new_rule[] = $v;
+        }
+        $group_array['content'][1]['rule'] = $new_rule;
 
         $group_array['content'][2]['area_type'] ="floor";
-        $floor_rule = $this->cmsContentTemplateSet->select('rule')->where(['tpl_id'=>$request['tpl_id'],'area_type'=>2])->first();
-
-        $decode_floor = json_decode($floor_rule['rule'],true);
-        foreach ($decode_floor as &$v){
-            $show_type = $this->cmsSubject->select('show_type')->where('id',$v['link_url'])->first();
-            $product = $this->cmsSubjectProduct->where('subject_id',$v['link_url'])->orderBy('sort','asc')->get();
-            $pro_array = $product->toArray();
-            $res_id = implode(",",array_column($pro_array,'id'));
-            $v['product_id'] = $res_id;
-            $v['subject_id'] = $v['link_url'];
-            $v['show_type'] = $show_type->show_type;
-            unset($v['url']);
-            unset($v['show_num']);
-            unset($v['link_url']);
-            unset($v['link_type']);
+        $floor_rule = $this->cmsContentTemplateSet->select('id','rule')->where(['tpl_id'=>$request['tpl_id'],'area_type'=>2])->get();
+        $new_rule = [];
+        foreach ($floor_rule->toArray() as $k=>$v){
+            $new_rule[] = $v;
         }
-        $group_array['content'][2]['rule'] = json_encode($decode_floor,JSON_UNESCAPED_UNICODE);
+        foreach ($new_rule as $k=>$v){
+            $rules = json_decode($v['rule'],true);
+                $show_type = $this->cmsSubject->select('show_type')->where('id', $rules['link_url'])->first();
+                $product = $this->cmsSubjectProduct->where('subject_id', $rules['link_url'])->orderBy('sort', 'asc')->get();
+                $pro_array = $product->toArray();
+                $res_id = implode(",", array_column($pro_array, 'id'));
+                $new_rule[$k]['product_id'] = $res_id;
+                $new_rule[$k]['subject_id'] = $rules['link_url'];
+                $new_rule[$k]['show_type'] = $show_type->show_type ?? '';
+                unset($v['url']);
+                unset($v['show_num']);
+                unset($rules['link_url']);
+                unset($v['link_type']);
+        }
+                $group_array['content'][2]['rule'] = $new_rule;
+
         if ($request['type'] == 1){
             $group_array['content'][3]['area_type'] ="category";
-            $category_rule = $this->cmsContentTemplateSet->select('rule')->where(['tpl_id'=>$request['tpl_id'],'area_type'=>3])->first();
-            $group_array['content'][3]['rule'] = $category_rule->rule;
+            $category_rule = $this->cmsContentTemplateSet->select('rule')->where(['tpl_id'=>$request['tpl_id'],'area_type'=>3])->get();
+            $new_rule = [];
+            foreach ($category_rule->toArray() as $k=>$v){
+                $new_rule[] = $v;
+            }
+            $group_array['content'][3]['rule'] = $new_rule;
         }
 
-        foreach ($group_array['content'] as $key=>$value){
-            $rule = json_decode($value['rule'],true);
-            $group_array['content'][$key]['rule'] = $rule;
-        }
         $group_json = json_encode($group_array,JSON_UNESCAPED_UNICODE);
+
         return $group_json;
 
     }