|
@@ -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;
|
|
|
|
|
|
}
|