|
@@ -0,0 +1,102 @@
|
|
|
|
+<?php
|
|
|
|
+
|
|
|
|
+namespace App\Repositories;
|
|
|
|
+
|
|
|
|
+use App\Models\CmsContentTemplate;
|
|
|
|
+use App\Models\CmsContentTemplateSet;
|
|
|
|
+use App\Models\CmsSubjectProduct;
|
|
|
|
+use App\Models\CmsSubject;
|
|
|
|
+
|
|
|
|
+class CmsContentTemplateSetRepository {
|
|
|
|
+ public function __construct(CmsContentTemplateSet $cmsContentTemplateSet,CmsContentTemplate $cmsContentTemplate,CmsSubjectProduct $cmsSubjectProduct,CmsSubject $cmsSubject) {
|
|
|
|
+
|
|
|
|
+ $this->cmsContentTemplateSet = $cmsContentTemplateSet;
|
|
|
|
+ $this->cmsContentTemplate = $cmsContentTemplate;
|
|
|
|
+ $this->cmsSubjectProduct = $cmsSubjectProduct;
|
|
|
|
+ $this->cmsSubject = $cmsSubject;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 内容预览
|
|
|
|
+ */
|
|
|
|
+ public function preview($request)
|
|
|
|
+ {
|
|
|
|
+ //团购首页
|
|
|
|
+ $group_array = [];
|
|
|
|
+ if ($request['type'] == 0){
|
|
|
|
+ $group_array['apply_type'] ="group";
|
|
|
|
+ $group_array['title'] ="今日团购";
|
|
|
|
+ $group_array['content'] =[];
|
|
|
|
+ }else{//菜市场首页
|
|
|
|
+ $group_array['apply_type'] ="market";
|
|
|
|
+ $group_array['title'] ="菜市场";
|
|
|
|
+ $group_array['content'] =[];
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ $group_array['content'][0]['area_type'] ="banner";
|
|
|
|
+ $banner_rule = $this->cmsContentTemplateSet->select('rule')->where(['tpl_id'=>$request['tpl_id'],'area_type'=>0])->first();
|
|
|
|
+ $decode_banner = json_decode($banner_rule['rule'],true);
|
|
|
|
+ foreach ($decode_banner as &$v) {
|
|
|
|
+ $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'));
|
|
|
|
+ if ($res_id){
|
|
|
|
+ $v['product_id'] = $res_id;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ $group_array['content'][0]['rule'] = json_encode($decode_banner,JSON_UNESCAPED_UNICODE);
|
|
|
|
+
|
|
|
|
+ $group_array['content'][1]['area_type'] ="special";
|
|
|
|
+ $subject_rule = $this->cmsContentTemplateSet->select('rule')->where(['tpl_id'=>$request['tpl_id'],'area_type'=>1])->first();
|
|
|
|
+ $decode_subject = json_decode($subject_rule['rule'],true);
|
|
|
|
+ foreach ($decode_subject as &$v) {
|
|
|
|
+ $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'));
|
|
|
|
+ if ($res_id){
|
|
|
|
+ $v['product_id'] = $res_id;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ $group_array['content'][1]['rule'] = json_encode($decode_subject,JSON_UNESCAPED_UNICODE);
|
|
|
|
+
|
|
|
|
+ $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']);
|
|
|
|
+ }
|
|
|
|
+ $group_array['content'][2]['rule'] = json_encode($decode_floor,JSON_UNESCAPED_UNICODE);
|
|
|
|
+ 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();
|
|
|
|
+ $decode_category = json_decode($category_rule['rule'],true);
|
|
|
|
+ foreach ($decode_category as &$v) {
|
|
|
|
+ $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'));
|
|
|
|
+ if ($res_id){
|
|
|
|
+ $v['product_id'] = $res_id;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ $group_array['content'][3]['rule'] = json_encode($decode_floor,JSON_UNESCAPED_UNICODE);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ foreach ($group_array['content'] as $key=>$value){
|
|
|
|
+ $rule = json_decode($value['rule'],true);
|
|
|
|
+ $group_array['content'][$key]['rule'] = $rule;
|
|
|
|
+ }
|
|
|
|
+ $json = json_encode($group_array,JSON_UNESCAPED_UNICODE);
|
|
|
|
+ return $json;
|
|
|
|
+ }
|
|
|
|
+}
|