<?php

namespace App\Repositories;

use App\Models\CmsSubject;
use Dingo\Api\Http\Response;
use App\Models\CmsContentTemplate;
use App\Models\CmsContentTemplateSet;
use App\Models\CmsSubjectProduct;
use Illuminate\Support\Facades\Cache;
use Illuminate\Support\Facades\Redis;
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)
    {

        $this->cmsContentTemplateSet = $cmsContentTemplateSet;
        $this->cmsContentTemplate = $cmsContentTemplate;
        $this->cmsSubjectProduct = $cmsSubjectProduct;
        $this->cmsSubject = $cmsSubject;
    }

    /**
     * 点击内容配置
     */
    public function set($request)
    {
        $template = $this->cmsContentTemplate->select('id', 'city_name', 'city_id', 'title', 'apply_type', 'is_open', 'status')->where('id', $request['tpl_id'])->first();
        if (!$template) {
            throw new HttpException(500, '没有找到对应模板');
        }
        $templates = $template->toArray();
        $where = [
            'city_id' => $templates['city_id'],
            'apply_type' => $templates['apply_type'],
        ];
        $copys_template = $this->cmsContentTemplate->where($where)->get();
        $request = [];
        $need_create = true;
        foreach ($copys_template as $k => $v) {
            if ($v['status'] == 0) {
                $need_create = false;
                $request['type'] = $v['apply_type'];
                $request['tpl_id'] = $v['id'];
                $request['city_id'] = $v['city_id'];
                if ($v['apply_type'] == 2) {
                    return $this->exchangeMall($request);
                }
                if ($v['apply_type'] == 0 || $v['apply_type'] == 1) {
                    return $this->preview($request);
                }
            }
        }
        if ($need_create) {
            $new_template = [
                'title' => $templates['title'],
                'city_id' => $templates['city_id'],
                'city_name' => $templates['city_name'],
                'apply_type' => $templates['apply_type'],
                'status' => 0,
                'is_open' => $templates['is_open'],
            ];
            DB::beginTransaction();
            try {
                $res = $this->cmsContentTemplate->create($new_template);
                if (!$res) {
                    throw new HttpException(500, '添加草稿模板失败');
                }

                $template_set = $this->cmsContentTemplateSet->where('tpl_id', $templates['id'])->get();
                if (count($template_set) > 0) {
                    foreach ($template_set->toArray() as $key => $val) {
                        $copy_template = [
                            'rule' => $val['rule'],
                            'tpl_id' => $res->id,
                            'area_type' => $val['area_type'],
                            'status' => $val['status'],
                            'sort' => $val['sort'],
                            'name' => $val['name'],
                            'floor_img' => $val['floor_img'],
                        ];
                        $result = $this->cmsContentTemplateSet->create($copy_template);
                        if (!$result) {
                            throw new HttpException(500, '生成模板内容失败');
                        }
                    }

                }
                $request['type'] = $res->apply_type;
                $request['tpl_id'] = $res->id;
                $request['city_id'] = $res->city_id;
                DB::commit();

                if ($res->apply_type == 2) {
                    return $this->exchangeMall($request);
                }
                if ($res->apply_type == 0 || $res->apply_type == 1) {
                    return $this->preview($request);
                }
                //return Response::create();

            } catch (QueryException $exception) {
                DB::rollBack();
                return Response::create([
                    'message' => '生成模板内容失败,请重试',
                    'error' => $exception->getMessage(),
                    'status_code' => 500
                ]);
            }
        }
    }

    //banner、左一右二、上一下三配置-数据处理
    function request_data($request, $id, $rules)
    {
        foreach ($rules as $k => $v) {
            if (isset($v['link_type'])) {
                $rules[$k]['link_type'] = intval($v['link_type']);
            }
            if (isset($v['link_url'])) {
                $rules[$k]['link_url'] = trim($v['link_url']);
            }
        }

        $templateSet = [
            'rule' => json_encode($rules),
            'tpl_id' => $request['tpl_id'],
            'area_type' => $request['area_type'],
            'status' => 0,
            'sort' => isset($request['sort']) ? $request['sort'] : 999,
            'name' => isset($request['name']) ? $request['name'] : '',
            'floor_img' => isset($request['floor_img']) ? $request['floor_img'] : '',
        ];
        $template_id = $this->cmsContentTemplate->select('apply_type')->where('id', $request['tpl_id'])->first();

        if ($id) {
            $old_subject_id = $this->cmsContentTemplateSet->select('rule')->find($id);
            $subject_id_array = json_decode($old_subject_id['rule'], true);
            if (count($rules) > 0) {
                foreach ($rules as $k => $v) {
                    if (isset($v['link_type']) && $v['link_type'] == 1) {
                        $subject = $this->cmsSubject->where('id', intval($v['link_url']))->first();

                        if ($template_id->apply_type == 2) {
                            if (!$subject || $subject->is_open != 1 || $subject->used_mall != 0) {
                                throw new HttpException(500, '所填专题已关闭或不是兑换专区专题');
                            }
                        }

                        $subject->used_count += 1;
                        $subject->save();
                    }
                }
            }
            if (count($subject_id_array) > 0) {
                foreach ($subject_id_array as $val) {
                    if (isset($val['link_type']) && $val['link_type'] == 1) {
                        $subject = $this->cmsSubject->where('id', intval($val['link_url']))->first();
                        if ($subject) {
                            $update_subject = [
                                $subject->used_count -= 1
                            ];
                            $subject->update($update_subject);
                        }
                    }
                }
            }
            $update_templates = $this->cmsContentTemplateSet->where('id', $id)->update($templateSet);
            if (!$update_templates) {
                throw new HttpException(500, '更新失败');
            }
        } else {
            if (count($rules) > 0) {
                foreach ($rules as $v) {
                    if (isset($v['link_type']) && $v['link_type'] == 1) {
                        $subject = $this->cmsSubject->where('id', intval($v['link_url']))->first();
                        if ($template_id->apply_type == 2) {
                            if (!$subject || $subject->is_open != 1 || $subject->used_mall != 0) {
                                throw new HttpException(500, '所填专题已关闭或不是兑换专区专题');
                            }
                        }
                        $subject->used_count += 1;
                        $subject->save();
                    }
                }
            }
            if (!$this->cmsContentTemplateSet->create($templateSet)) {
                throw new HttpException(500, '添加失败');
            }
        }

    }

    //专题被使用计数
    function update_subject($request)
    {
        $old_subject_id = $this->cmsContentTemplateSet->select('rule')->find($request['id']);
        $subject_id_array = json_decode($old_subject_id['rule'], true);
        if ($subject_id_array['link_type'] == 1 && $request['rule']['link_type'] == 1) {//链接方式都为专题
            if ($subject_id_array['link_url'] != $request['rule']['link_url']) {
                $subject = $this->cmsSubject->where('id', intval($subject_id_array['link_url']))->first();
                if ($subject) {
                    $update_subject = [
                        $subject->used_count -= 1
                    ];
                    $subject->update($update_subject);
                }

                $subject = $this->cmsSubject->where('id', intval($request['rule']['link_url']))->first();
                if ($request['apply_type'] == 2) {
                    if (!$subject || $subject->is_open != 1 || $subject->used_mall != 0) {
                        throw new HttpException(500, '所填专题已关闭或不是兑换专区专题');
                    }
                }
                $subject->used_count += 1;
                $subject->save();
            }
        } elseif ($subject_id_array['link_type'] == 1 && $request['rule']['link_type'] != 1) {
            $subject = $this->cmsSubject->where('id', intval($subject_id_array['link_url']))->first();
            if ($subject) {
                $update_subject = [
                    $subject->used_count -= 1
                ];
                $subject->update($update_subject);
            }
        } elseif ($subject_id_array['link_type'] != 1 && $request['rule']['link_type'] == 1) {
            $subject = $this->cmsSubject->where('id', intval($request['rule']['link_url']))->first();
            if ($request['apply_type'] == 2) {
                if (!$subject || $subject->is_open != 1 || $subject->used_mall != 0) {
                    throw new HttpException(500, '所填专题已关闭或不是兑换专区专题');
                }
            }
            $subject->used_count += 1;
            $subject->save();
        }

    }

    /**
     * banner配置
     */
    public function bannerSet($request)
    {
        $id = $request['id'] ?? '';
        $rules = $request['rule'];
        if (is_array($rules)) {
            if (count($rules) > 10) {
                throw new HttpException(500, '最多只能添加10个banner海报');
            }

            $this->request_data($request, $id, $rules);

        } else {
            throw new HttpException(500, '参数格式有误');
        }
    }

    /**
     * 专题广告配置
     */
    public function advertisementSet($request)
    {
        $advertisement_id = $request['id'] ?? '';
        if (isset($request['rule']['link_type'])) {
            $request['rule']['link_type'] = intval($request['rule']['link_type']);
        }
        if (isset($request['rule']['link_url'])) {
            $request['rule']['link_url'] = trim($request['rule']['link_url']);
        }
        $subject = [
            'tpl_id' => $request['tpl_id'],
            'rule' => json_encode($request['rule']),
            'area_type' => $request['area_type'],
            'status' => 0,
        ];
        $template_id = $this->cmsContentTemplate->select('apply_type')->where('id', $request['tpl_id'])->first();

        if (empty($advertisement_id)) {
            if ($request['rule']['link_type'] == 1) {
                $templates = $this->cmsSubject->where('id', intval($request['rule']['link_url']))->first();
                $templates->used_count += 1;
                $templates->save();
            }
            if (!$this->cmsContentTemplateSet->create($subject)) {
                throw new HttpException(500, '添加失败');
            }
        } else {
            $request['apply_type'] = $template_id->apply_type;
            $this->update_subject($request);

            $advertisement_ids = $this->cmsContentTemplateSet->where('id', $advertisement_id)->update($subject);
            if (!$advertisement_ids) {
                throw new HttpException(500, '更新失败');
            }
        }
    }

    /**
     * 商品楼层配置
     */
    public function floorSet($request)
    {
        $floor_id = $request['id'] ?? '';
        if (isset($request['rule']['link_type'])) {
            $request['rule']['link_type'] = intval($request['rule']['link_type']);
        }
        if (isset($request['rule']['link_url'])) {
            $request['rule']['link_url'] = trim($request['rule']['link_url']);
        }
        if (isset($request['rule']['show_num'])) {
            $request['rule']['show_num'] = intval($request['rule']['show_num']);
        }
        $templateSet = [
            'tpl_id' => $request['tpl_id'],
            'rule' => json_encode($request['rule']),
            'area_type' => $request['area_type'],
            'status' => 0,
            'sort' => isset($request['sort']) ? $request['sort'] : 999,
            'name' => isset($request['name']) ? $request['name'] : '',
            'floor_img' => isset($request['floor_img']) ? $request['floor_img'] : '',
        ];
        $template_id = $this->cmsContentTemplate->select('apply_type')->where('id', $request['tpl_id'])->first();

        if (empty($floor_id)) {
            if ($request['rule']['link_type'] == 1) {
                $subject = $this->cmsSubject->where('id', intval($request['rule']['link_url']))->first();
                if ($template_id->apply_type == 2) {
                    if (!$subject || $subject->is_open != 1 || $subject->used_mall != 0) {
                        throw new HttpException(500, '所填专题已关闭或不是兑换专区专题');
                    }
                }

                $subject->used_count += 1;
                $subject->save();
            }
            if (!$this->cmsContentTemplateSet->create($templateSet)) {
                throw new HttpException(500, '添加失败');
            }
        } else {
            $request['apply_type'] = $template_id->apply_type;
            $this->update_subject($request);

            $floor_ids = $this->cmsContentTemplateSet->where('id', $floor_id)->update($templateSet);
            if (!$floor_ids) {
                throw new HttpException(500, '更新失败');
            }

        }

    }

    /**
     * 分类专题配置
     */
    public function categorySet($request)
    {
        $category_id = $request['id'] ?? '';
        if (isset($request['rule']['link_type'])) {
            $request['rule']['link_type'] = intval($request['rule']['link_type']);
        }
        if (isset($request['rule']['link_url'])) {
            $request['rule']['link_url'] = trim($request['rule']['link_url']);
        }
        $subject = [
            'tpl_id' => $request['tpl_id'],
            'rule' => json_encode($request['rule']),
            'area_type' => $request['area_type'],
            'status' => 0,
        ];
        $template_id = $this->cmsContentTemplate->select('apply_type')->where('id', $request['tpl_id'])->first();

        if (empty($category_id)) {
            if ($request['rule']['link_type'] == 1) {
                $templates = $this->cmsSubject->where('id', intval($request['rule']['link_url']))->first();
                if ($templates == null) {
                    $templates = new CmsSubject();
                    $templates->used_count += 1;
                }
                $templates->save();
            }

            if (!$this->cmsContentTemplateSet->create($subject)) {
                throw new HttpException(500, '添加失败');
            }
        } else {
            $request['apply_type'] = $template_id->apply_type;
            $this->update_subject($request);

            $category_ids = $this->cmsContentTemplateSet->where('id', $category_id)->update($subject);
            if (!$category_ids) {
                throw new HttpException(500, '更新失败');
            }
        }

    }

    //左一右二配置
    public function subjectOne($request)
    {
        $id = $request['id'] ?? '';
        $rules = $request['rule'];
        $this->request_data($request, $id, $rules);
    }

    //上一下三配置
    public function subjectTwo($request)
    {
        $id = $request['id'] ?? '';
        $rules = $request['rule'];
        $this->request_data($request, $id, $rules);
    }


    /**
     * 内容发布
     */
    public function release($request)
    {
        $group_key = config('constants.CMS_GROUP');
        $market_key = config('constants.CMS_MARKET');
        $exchange_key = config('constants.CMS_EXCHANGE');

        //同一个城市同一个模板(团购/菜市场) 只能有一种状态(草稿/发布),已发布的一旦被编辑把之前的直接删掉
        $template = $this->cmsContentTemplate->select('id', 'city_name', 'city_id', 'title', 'apply_type', 'is_open', 'status')->where('id', $request['tpl_id'])->first();

        //兑换专区检测banner是否设置
        if ($template->apply_type == 2) {
            $testing_banner = $this->cmsContentTemplateSet->select('rule')->where(['tpl_id' => $request['tpl_id'], 'area_type' => 0])->first();
            $testing_banner = $testing_banner->toArray();
            $rule = json_decode($testing_banner['rule'], true);
            if (empty($testing_banner) || count($rule) == 0) {
                throw new HttpException(500, '请先上传banner后再发布');
            }
        }

        $where = [
            'city_id' => $template->city_id,
            'title' => $template->title,
            'apply_type' => $template->apply_type,
        ];
        $templates = $this->cmsContentTemplate->where($where)->get();
        $update_is_open_ids = [];
        foreach ($templates->toArray() as $k => $v) {
            if ($v['status'] == 1) {
                $update_is_open_ids[] = $v['id'];
            }
        }

        if ($update_is_open_ids) {
            $delete_open_ids = $this->cmsContentTemplate->whereIn('id', $update_is_open_ids)->get();
            if (count($delete_open_ids) > 0) {
                $result = $this->cmsContentTemplate->whereIn('id', $update_is_open_ids)->delete();
                if (!$result) {
                    throw new HttpException(500, '删除失败,请重试');
                }
            }

            $update_open_ids = $this->cmsContentTemplateSet->whereIn('tpl_id', $update_is_open_ids)->get();
            if (count($update_open_ids) > 0) {
                $res = $this->cmsContentTemplateSet->whereIn('tpl_id', $update_is_open_ids)->update(['status' => 0]);
                if (!$res) {
                    throw new HttpException(500, '修改失败,请重试');
                }
            }
        }

        $update_tpl = $this->cmsContentTemplate->where('id', $request['tpl_id'])->first();
        if ($update_tpl) {
            $result = $this->cmsContentTemplate->where('id', $request['tpl_id'])->update(['status' => 1]);
            if (!$result) {
                throw new HttpException(500, '修改失败,请重试');
            }
        }

        $template_id = $this->cmsContentTemplateSet->where('tpl_id', $request['tpl_id'])->get();
        if (count($template_id) > 0) {
            $res = $this->cmsContentTemplateSet->where('tpl_id', $request['tpl_id'])->update(['status' => 1]);
            if (!$res) {
                throw new HttpException(500, '修改失败,请重试');
            }
        }

        foreach ($templates->toArray() as $k => $v) {
            $result = $this->cmsContentTemplateSet->where(['status' => 0, 'tpl_id' => $v['id']])->delete();
            if ($result) {
                return Response::create();
            }
        }
        if ($template->apply_type == 0) {
//            if (Cache::has($group_key)) {
//                Cache::forget($group_key);
//            }
            if (Redis::exists($group_key)) {
                Redis::del($group_key);
            }
        } elseif ($template->apply_type == 1) {
            if (Redis::exists($market_key)) {
                Redis::del($market_key);
            }
        } elseif ($template->apply_type == 2) {
            if (Redis::exists($exchange_key)) {
                Redis::del($exchange_key);
            }
        }

    }

    /**
     * 内容预览
     */
    public function preview($request)
    {
        $temalates = $this->cmsContentTemplate->select('title')->where(['id' => $request['tpl_id']])->first();
        if (!$temalates) {
            throw new HttpException(500, '没有找到对应模板');
        }

        //团购首页
        $group_array = [];
        if ($request['type'] == 0) {
            $group_array['apply_type'] = 0;
            $group_array['tpl_id'] = $request['tpl_id'];
            $group_array['title'] = $temalates->title;
            $group_array['content'] = [];
        } else {//菜市场首页
            $group_array['apply_type'] = 1;
            $group_array['tpl_id'] = $request['tpl_id'];
            $group_array['title'] = $temalates->title;
            $group_array['content'] = [];
        }

        $group_array['content'][0]['area_type'] = 0;
        $banner_rule = $this->cmsContentTemplateSet->select('id', 'rule')->where(['tpl_id' => $request['tpl_id'], 'area_type' => 0])->orderBy('id', 'desc')->limit(1)->get();
        $new_rule = [];
        foreach ($banner_rule->toArray() as $k => $v) {
            if (count(json_decode($v['rule'])) > 0) {
                $new_rule[$k]['id'] = $v['id'];
                $new_rule[$k]['rule'] = json_decode($v['rule'], true);
            }
        }
        $group_array['content'][0]['rule'] = $new_rule;
        $group_array['content'][1]['area_type'] = 1;
        $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[$k]['id'] = $v['id'];
            $new_rule[$k]['rule'] = json_decode($v['rule'], true);
        }
        $group_array['content'][1]['rule'] = $new_rule;

        $group_array['content'][2]['area_type'] = 2;
        $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[$k]['id'] = $v['id'];
            $new_rule[$k]['rule'] = json_decode($v['rule'], true);
        }
        foreach ($new_rule as $k => $v) {
            if ($v) {
                $rules = $v['rule'];
                $show_num = intval($rules['show_num']);
                $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')->limit($show_num)->get();
                $pro_array = $product->toArray();
                $res_id = implode(",", array_column($pro_array, 'product_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'] = 3;
            $category_rule = $this->cmsContentTemplateSet->select('id', 'rule')->where(['tpl_id' => $request['tpl_id'], 'area_type' => 3])->get();
            $new_rule = [];
            foreach ($category_rule->toArray() as $k => $v) {
                $new_rule[$k]['id'] = $v['id'];
                $new_rule[$k]['rule'] = json_decode($v['rule'], true);
            }
            $group_array['content'][3]['rule'] = $new_rule;
        }
        return $group_array;
    }

    public function getTemplate($cityId)
    {
        $group = $this->cmsContentTemplate->select('id', 'status', 'title', 'apply_type')->where(['city_id' => $cityId, 'deleted_at' => null, 'apply_type' => 0])->get();
        $groups = $group->toArray();
        if (count($groups) > 1) {
            foreach ($groups as $key => $val) {
                if ($val['status'] == 1) {
                    unset($groups[$key]);
                }
            }
        }
        $market = $this->cmsContentTemplate->select('id', 'status', 'title', 'apply_type')->where(['city_id' => $cityId, 'deleted_at' => null, 'apply_type' => 1])->get();
        $markets = $market->toArray();
        if (count($markets) > 1) {
            foreach ($markets as $key => $val) {
                if ($val['status'] == 1) {
                    unset($markets[$key]);
                }
            }
        }
        $templates['cms_content_templates'] = array_merge($groups, $markets);
        return $templates;
    }

    public function templateSetDelete($request)
    {
        $advertisement = $this->cmsContentTemplateSet->where('id', $request['id'])->first();
        $res = $advertisement->delete();
        if (!$res) {
            return Response::create([
                'message' => '删除失败,请重试',
                'status_code' => 500
            ]);
        }
    }

    /**
     * v0.3兑换专区内容预览
     */
    public function exchangeMall($request)
    {
        $temalates = $this->cmsContentTemplate->select('title')->where(['id' => $request['tpl_id']])->first();
        if (!$temalates) {
            throw new HttpException(500, '没有找到对应模板');
        }

        $group_array = [];
        $group_array['apply_type'] = 2;
        $group_array['tpl_id'] = intval($request['tpl_id']);
        $group_array['title'] = $temalates->title;
        $group_array['content'] = [];

        $group_array['content'][0]['area_type'] = 0;
        $banner_rule = $this->cmsContentTemplateSet->select('id', 'rule')->where(['tpl_id' => $request['tpl_id'], 'area_type' => 0])->orderBy('id', 'desc')->limit(1)->get();
        $new_rule = [];
        foreach ($banner_rule->toArray() as $k => $v) {
//            if (count(json_decode($v['rule'])) > 0) {
            $new_rule[$k]['id'] = $v['id'];
            $new_rule[$k]['rule'] = json_decode($v['rule'], true);
//            }
        }
        $group_array['content'][0]['rule'] = $new_rule;

        $all_subject = $this->cmsContentTemplateSet->select('id', 'rule', 'sort', 'name', 'floor_img', 'area_type')->where(['tpl_id' => $request['tpl_id']])->whereIn('area_type', [4, 5])->orderBy('sort', 'asc')->get();
        $all_subject = $all_subject->toArray();
        $count = count($all_subject);
        $new_rule = [];
        foreach ($all_subject as $k => $v) {
//            if (count(json_decode($v['rule'])) > 0) {
            $new_rule[$k]['area_type'] = $v['area_type'];
            $new_rule[$k]['rule']['id'] = $v['id'];
//            $new_rule[$k]['rule']['name'] = $v['name'];
            $new_rule[$k]['rule']['sort'] = $v['sort'];
            $new_rule[$k]['rule']['floor_img'] = $v['floor_img'];
            $new_rule[$k]['rule']['rule'] = json_decode($v['rule'], true);
//            }
        }
        foreach ($new_rule as $k => $v) {
            $group_array['content'][$k + 1]['area_type'] = $new_rule[$k]['area_type'];
            $group_array['content'][$k + 1]['rule'] = array($new_rule[$k]['rule']);
        }

        $floor_rule = $this->cmsContentTemplateSet->select('id', 'rule', 'floor_img')->where(['tpl_id' => $request['tpl_id'], 'area_type' => 2])->orderBy('id', 'asc')->get();
        $new_rule = [];
        foreach ($floor_rule->toArray() as $k => $v) {
            $new_rule[$k]['id'] = $v['id'];
            $new_rule[$k]['floor_img'] = $v['floor_img'];
            $new_rule[$k]['rule'] = json_decode($v['rule'], true);
        }
        foreach ($new_rule as $k => $v) {
            if ($v) {
                $rules = $v['rule'];
                $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, 'product_id'));
                $new_rule[$k]['product_id'] = $res_id;
                $new_rule[$k]['subject_id'] = intval($rules['link_url']);
                $new_rule[$k]['show_type'] = $show_type->show_type ?? '';
                unset($v['url']);
                unset($rules['link_url']);
                unset($v['link_type']);
            }
        }
        $group_array['content'][$count + 1]['area_type'] = 2;
        $group_array['content'][$count + 1]['rule'] = $new_rule;

        return $group_array;
    }
}