LiuJ 8 месяцев назад
Родитель
Сommit
fa2c860e08
1 измененных файлов с 10118 добавлено и 528 удалено
  1. 10118 528
      app/JsonRpc/NewsService.php

+ 10118 - 528
app/JsonRpc/NewsService.php

@@ -2,934 +2,10524 @@
 
 namespace App\JsonRpc;
 
-use Hyperf\RpcClient\AbstractServiceClient;
+use App\Model\Article;
+use App\Model\ArticleData;
+use App\Model\Category;
+use App\Model\HistoryToday;
+use App\Model\WebsiteCategory;
+use App\Model\ArticleSurvey;
+use App\Model\District;
+use App\Model\Good;
+use App\Model\JobCompany;
+use App\Model\Website;
+use App\Model\JobRecruiting;
+use App\Model\JobIndustry;
+use App\Model\Book;
+use App\Model\JobPosition;
+use App\Model\Notice;
+use App\Model\JobNature;
+use App\Model\JobEnum;
+use App\Model\User;
+use App\Model\UserRole;
+use App\Model\News;
+use App\Model\UserInfo;
+use App\Model\WebsiteGroup;;
 
-class NewsService extends AbstractServiceClient implements NewsServiceInterface
+use App\Model\Glaw;
+use App\Model\Gonline;
+
+
+
+use App\Model\JobResume;
+
+use Hyperf\DbConnection\Db;
+use Hyperf\RpcServer\Annotation\RpcService;
+use App\Tools\Result;
+use Directory;
+use Ramsey\Uuid\Uuid;
+use Hyperf\Utils\Random;
+use Fukuball\Jieba\Jieba;
+use Fukuball\Jieba\Finalseg;
+
+use Hyperf\Utils\Collection;
+
+use function Hyperf\Support\retry;
+use App\Tools\PublicData;
+use App\Model\ChatGroups;
+use App\Model\ChatGroupsMember;
+use App\Model\ChatRecords;
+use App\Model\Complaint;
+use Hamcrest\Arrays\IsArray;
+use Hyperf\Codec\Json;
+
+use App\Tools\buildMenuTree;
+use App\Model\JobApply;
+use App\Model\JobHunting;
+use App\Model\JobRemuse;
+use Hyperf\Redis\Redis;
+use Hyperf\Di\Annotation\Inject;
+
+use App\Model\Festival;
+use App\Model\Character;
+use App\Model\Couplet;
+use App\Model\Riddle;
+use App\Model\Idiom;
+use App\Model\WhiteRouter;
+use Illuminate\Support\Facades\Cache;
+
+use App\Model\Company;
+use Hyperf\Paginator\Paginator;
+use App\Model\Project;
+
+use Hyperf\Context\Context;
+use Hyperf\Context\ApplicationContext as ContextApplicationContext;
+use Hyperf\Amqp\Producer;
+
+use App\Amqp\Producer\MqProducer;
+use App\Model\Web;
+
+
+use App\Model\GroupMemberImp;
+use App\Model\GroupImp;
+use App\Model\GroupTalkImp;
+use App\Model\GroupTalkMessagerImp;
+use App\Model\ArticleIgnore;
+use App\Model\Message;
+use App\Model\ResearchTopic;
+use App\Model\RetopicUser;
+use App\Model\WebCateinfo;
+use App\Model\SinglePage;
+use App\Model\WebsiteColumn;
+
+#[RpcService(name: "NewsService", protocol: "jsonrpc-http", server: "jsonrpc-http")]
+class NewsService implements NewsServiceInterface
 {
+
+    #[Inject]
+    protected Redis $redis;
+    /**
+     * 获取导航池列表
+     * @param array $data
+     * @return array
+     */
+    public function getCategoryList(array $data): array
+    {
+        $search = $data['name'] ?? '';
+        $page = (int)($data['page'] ?? 1);
+        $perPage = (int)($data['pageSize'] ?? 10);
+
+        // 1. 查出所有匹配的分类id
+        if ($search) {
+            $matchedIds = Category::where('name', 'like', "%{$search}%")->orderBy('updated_at', 'desc')->pluck('id')->toArray();
+            if (empty($matchedIds)) {
+                return Result::success(['rows' => [], 'total' => 0]);
+            }
+            // 2. 递归查所有父级,直到一级分类
+            $idsStr = implode(',', $matchedIds);
+            $sql = "
+                WITH RECURSIVE parents AS (
+                    SELECT * FROM category WHERE id IN ($idsStr)
+                    UNION ALL
+                    SELECT c.* FROM category c
+                    INNER JOIN parents p ON c.id = p.pid
+                )
+                SELECT * FROM parents
+            ";
+            $parents = Db::select($sql);
+            $parentIds = [];
+            foreach ($parents as $row) {
+                if ($row->pid == 0) {
+                    $parentIds[] = $row->id;
+                }
+            }
+            $parentIds = array_unique($parentIds);
+        } else {
+            // 没有搜索,一级分类就是根
+            $parentIds = Category::where('pid', 0)->orderBy('updated_at', 'desc')->pluck('id')->toArray();
+        }
+
+        // 3. 一级分类分页
+        $total = count($parentIds);
+        $parentIds = array_slice($parentIds, ($page - 1) * $perPage, $perPage);
+        if (empty($parentIds)) {
+            return Result::success(['rows' => [], 'total' => $total]);
+        }
+
+        // 4. 递归查所有子孙
+        $idsStr = implode(',', $parentIds);
+        $sql = "
+            WITH RECURSIVE subcategories AS (
+                SELECT * FROM category WHERE id IN ($idsStr)
+                UNION ALL
+                SELECT c.* FROM category c
+                INNER JOIN subcategories s ON c.pid = s.id
+            )
+            SELECT * FROM subcategories ORDER BY updated_at DESC
+        ";
+        $allCategories = Db::select($sql);
+
+        // 5. 组装树结构
+        $categoryMap = [];
+        foreach ($allCategories as $cat) {
+            $cat = (array)$cat;
+            $cat['children'] = [];
+            $categoryMap[$cat['id']] = $cat;
+        }
+        foreach ($categoryMap as $id => &$cat) {
+            if ($cat['pid'] && isset($categoryMap[$cat['pid']])) {
+                $categoryMap[$cat['pid']]['children'][] = &$cat;
+            }
+        }
+        unset($cat);
+
+        $categoryTree = [];
+        foreach ($parentIds as $id) {
+            if (isset($categoryMap[$id])) {
+                $categoryTree[] = $categoryMap[$id];
+            }
+        }
+
+        return Result::success([
+            'rows' => $categoryTree,
+            'total' => $total,
+        ]);
+    }
+
+    private function findMatchedCategories($search)
+    {
+        if ($search) {
+            return Category::where('name', 'like', "%{$search}%")
+                ->orderBy('updated_at', 'desc')
+                ->get();
+        }
+        return Category::orderBy('updated_at', 'desc') // 按 updated_at 字段倒序排序
+            ->get();
+    }
+
+    private function findAllParents($categories)
+    {
+        $allCategories = [];
+        foreach ($categories as $category) {
+            $parentId = $category->pid;
+            while ($parentId > 0) {
+                $parent = Category::find($parentId);
+                if ($parent) {
+                    $allCategories[$parent->id] = $parent;
+                    $parentId = $parent->pid;
+                } else {
+                    break;
+                }
+            }
+            $allCategories[$category->id] = $category;
+        }
+        return array_values($allCategories);
+    }
+
+    private function buildCategoryTree($category, $allRequiredCategories)
+    {
+        $categoryData = $category->toArray();
+        $children = [];
+        foreach ($allRequiredCategories as $c) {
+            if ($c->pid === $category->id) {
+                $children[] = $this->buildCategoryTree($c, $allRequiredCategories);
+            }
+        }
+        if (!empty($children)) {
+            $categoryData['children'] = $children;
+        }
+        return $categoryData;
+    }
+
+    public function myCategoryList(array $data): array
+    {
+        $sszq = $data['sszq'] ?? '';
+        unset($data['sszq']);
+        //1,2,3 根据这些webid,。从website_category表中取出对应的分类id,然后从category表中取出分类信息
+        $catorytids = WebsiteCategory::whereIn('website_id', explode(',', $sszq))->get()->pluck('category_id')->toArray();
+        $where[] = [
+            'pid',
+            '=',
+            $data['pid'],
+        ];
+        if (isset($data['name'])) {
+            array_push($where, ['category.name', 'like', '%' . $data['name'] . '%']);
+        }
+        var_dump($where);
+        //根据分类id,从category表中取出分类信息
+        $result = Category::where($where)
+            ->whereIn('category.id', $catorytids)
+            ->select('category.*', 'category.id as category_id')->get();
+        if (empty($result)) {
+            return Result::error("没有栏目数据");
+        }
+        return Result::success($result);
+    }
     /**
-     * 定义对应服务提供者的服务名称
-     * @var string
+     * @param array $data
+     * @return array
      */
-    protected string $serviceName = 'NewsService';
+    public function categoryList(array $data): array
+    {
+        $where[] = [
+            'pid',
+            '=',
+            $data['pid']
+        ];
+        if (isset($data['name'])) {
+            array_push($where, ['category.name', 'like', '%' . $data['name'] . '%']);
+        }
+        var_dump($where);
+        $result =  Category::where($where)->select('category.*', 'category.id as category_id')->get();
+        if (empty($result)) {
+            return Result::error("没有栏目数据");
+        }
+        return Result::success($result);
+    }
     /**
-     * 定义对应服务提供者的服务协议
-     * @var string
+     * @param array $data
+     * @return array
      */
-    protected string $protocol = 'jsonrpc-http';
+    public function addCategory(array $data): array
+    {
+        if (isset($data['id'])) {
+            unset($data['id']);
+        }
+        $id = Category::insertGetId($data);
+        if (empty($id)) {
+            return Result::error("添加失败");
+        }
+        return Result::success(['id' => $id]);
+    }
 
+    /**
+     * @param array $data
+     * @return array
+     */
+    public function delCategory(array $data): array
+    {
+        Db::beginTransaction();
+        try {
+            $categoryList = Category::where(['pid' => $data['id']])->get();
+            if ($categoryList->toArray()) {
+                Db::rollBack();
+                return Result::error("分类下面有子分类不能删除");
+            }
+            $articleList = Article::where(['catid' => $data['id']])->get();
+            if ($articleList->toArray()) {
+                Db::rollBack();
+                return Result::error("分类下面有资讯不能删除");
+            }
+            $result = Category::where($data)->delete();
+            WebsiteCategory::where(['category_id' => $data['id']])->delete();
+            if (!$result) {
+                Db::rollBack();
+                return Result::error("删除失败");
+            }
+            Db::commit();
+            return Result::success($result);
+        } catch (\Exception $e) {
+            Db::rollBack();
+            return Result::error("删除失败" . $e->getMessage());
+        }
+    }
 
     /**
      * @param array $data
-     * @return mixed
+     * @return array
      */
-    public function getCategoryList(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
+    public function updateCategory(array $data): array
+    {
+        $where = [
+            'id' => $data['id'],
+        ];
+        $result = Category::where($where)->update($data);
+        if ($result) {
+            return Result::success($result);
+        } else {
+            return Result::error("更新失败");
+        }
     }
 
     /**
+     * 获取导航池信息
      * @param array $data
-     * @return mixed
+     * @return array
      */
-    public function myCategoryList(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
+    public function getCategoryInfo(array $data): array
+    {
+        $where = [
+            'id' => $data['id'],
+        ];
+        $result = Category::where($where)->first();
+        if ($result) {
+            return Result::success($result);
+        } else {
+            return Result::error("更新失败");
+        }
+    }
+    public function getArticleCommend(array $data): array
+    {
+        $user = User::where('id', $data['user_id'])->first();
+        if (empty($user)) {
+            return Result::error('用户不存在!');
+        }
+        $ids = [];
+        if (empty($data['website_id']) && $user['type_id'] == 10000) {
+            $ids = [];
+        } else {
+            $where = [
+                'website_id' => $data['website_id'] ?? $data['web_id'],
+            ];
+            $ids = WebsiteCategory::where($where)->pluck('category_id')->toArray();
+            // var_dump($ids);
+            if (empty($ids)) {
+                return Result::error("没有推荐数据");
+            }
+        }
+        $whereArticle = [];
+        if (isset($data['id']) && !empty($data['id'])) {
+            $whereArticle['id'] = $data['id'];
+        }
+        //title  like
+        if (isset($data['title']) && !empty($data['id'])) {
+            array_push($whereArticle, ['title', 'like', "%{$data['title']}%"]);
+        }
+        // 若存在过滤用的分类 id 数组,则加入 whereIn 条件,否则直接跳过
+        $article = Article::when(!empty($ids) && is_array($ids), function ($query) use ($ids) {
+            $query->whereIn('catid', $ids);
+        })
+            ->where('status', 1)
+            ->when(!empty($whereArticle), function ($query) use ($whereArticle) {
+                $query->where($whereArticle);
+            })
+            ->orderBy('updated_at', 'desc')
+            ->paginate($data['pageSize'], ['*'], 'page', $data['page']);
+        if ($article) {
+            $data = [
+                'rows' => $article->items(),
+                'count' => $article->total(),
+            ];
+            return Result::success($data);
+        } else {
+            return Result::error("获取失败失败");
+        }
     }
+
     /**
      * @param array $data
      * @return array
      */
-    public function categoryList(array $data)
+    public function getArticleList(array $data): array
     {
-        return $this->__request(__FUNCTION__, $data);
+        //判断是否是管理员'1:个人会员 2:政务会员 3:企业会员 4:调研员 10000:管理员 20000:游客(小程序)'
+        $type_id = $data['type_id'];
+        unset($data['type_id']);
+        $user_id = $data['user_id'];
+        unset($data['user_id']);
+
+        $where = [];
+        $status1 = [];
+        if (isset($data['id']) && $data['id']) {
+            array_push($where, ['article.id', '=', $data['id']]);
+        }
+        if (isset($data['title']) && $data['title']) {
+            array_push($where, ['article.title', 'like', '%' . $data['title'] . '%']);
+        }
+        if (isset($data['category_name']) && $data['category_name']) {
+            array_push($where, ['category.name', 'like', '%' . $data['category_name'] . '%']);
+        }
+
+        if (isset($data['catid']) && $data['catid']) {
+            array_push($where,  ['article.catid', '=', $data['catid']]);
+        }
+
+        if (isset($data['author']) && $data['author']) {
+            array_push($where, ['article.author', '=', $data['author']]);
+        }
+        if (isset($data['islink']) && $data['islink'] !== "") {
+            array_push($where, ['article.islink', '=', $data['islink']]);
+        }
+        if (isset($data['status']) && $data['status'] !== "") {
+            array_push($where, ['article.status', '=', $data['status']]);
+        }
+        if (isset($data['status1'])) {
+            $status1 = json_decode(($data['status1']));
+        }
+        //不是管理员展示个人数据;
+        if ($type_id != 10000) {
+            $where[] = ['article.admin_user_id', '=', $user_id];
+        }
+        $startTime = microtime(true);
+        $rep = Article::query()
+            // 预加载相关关联
+            ->with([
+                'category' => function ($query) {
+                    $query->select('id', 'name');
+                },
+                'websiteCategory' => function ($query) {
+                    $query->select('website_id', 'category_id', 'alias');
+                },
+                'user' => function ($query) {
+                    $query->select('id', 'nickname');
+                }
+            ])
+            // 构建where条件
+            ->when(isset($data['id']) && $data['id'], function ($query) use ($data) {
+                $query->where('article.id', '=', $data['id']);
+            })
+            ->when(isset($data['title']) && $data['title'], function ($query) use ($data) {
+                $query->where('article.title', 'like', '%' . $data['title'] . '%');
+            })
+            ->when(isset($data['category_name']) && $data['category_name'], function ($query) use ($data) {
+                // 使用子查询替代左连接进行模糊搜索
+                $query->whereHas('category', function ($subQuery) use ($data) {
+                    $subQuery->where('name', 'like', '%' . $data['category_name'] . '%');
+                });
+            })
+            ->when(isset($data['catid']) && $data['catid'], function ($query) use ($data) {
+                $query->where('article.catid', '=', $data['catid']);
+            })
+            ->when(isset($data['author']) && $data['author'], function ($query) use ($data) {
+                $query->where('article.author', '=', $data['author']);
+            })
+            ->when(isset($data['islink']) && $data['islink'] !== "", function ($query) use ($data) {
+                $query->where('article.islink', '=', $data['islink']);
+            })
+            ->when(isset($data['status']) && $data['status'] !== "", function ($query) use ($data) {
+                $query->where('article.status', '=', $data['status']);
+            })
+            ->when(isset($data['status1']) && $data['status1'], function ($query) use ($data) {
+                // 安全地处理JSON字符串
+                $status1 = is_array($data['status1']) ? $data['status1'] : json_decode($data['status1'], true)  ?? [];
+                if (!empty($status1)) {
+                    $query->whereIn('article.status', $status1);
+                }
+            })
+            ->select('article.*')
+            // 非管理员限制
+            ->when($type_id != 10000, function ($query) use ($user_id) {
+                // 非管理员只能看自己的文章,同时把 article_ignore 的 c_show_time 一起查出来
+                $query->where('article.admin_user_id', $user_id)
+                    ->leftJoin('article_ignore', function ($join) {
+                        // 关联条件:article.id = article_ignore.article_id 且 article.web_site_id = article_ignore.website_id
+                        $join->on('article_ignore.article_id', '=', 'article.id')
+                            ->whereColumn('article_ignore.website_id', 'article.web_site_id');
+                    })
+                    ->addSelect('article_ignore.article_id', 'article_ignore.c_show_time'); // 用 addSelect 追加字段,避免覆盖原有 select
+            })
+            // 基础条件
+            ->whereNotIn('article.status', [404])
+            // 排序和分页
+            ->orderBy('article.updated_at', 'desc')
+            ->paginate($data['pageSize'], ['*'], 'page', $data['page']);
+
+        // 获取结果并格式化
+        $data = [
+            'rows' => $rep->items(),
+            'count' => $rep->total(),
+        ];
+        // 执行查询
+        $endTime = microtime(true);
+        $executionTime = ($endTime - $startTime) * 1000;
+
+        echo "查询执行时间: {$executionTime}ms\n";
+        return Result::success($data);
     }
 
     /**
      * @param array $data
      * @return array
      */
-    public function addCategory(array $data)
+    public function addArticle(array $data): array
     {
-        return $this->__request(__FUNCTION__, $data);
+
+        var_dump($data, '----------12-----------1');
+
+        // ------c_show_time********add***1****
+        $is_collect = $data['is_collect'] ?? 0;
+        $user_type = $data['user_type'];
+        unset($data['is_collect']);
+        unset($data['user_type']);
+        // ------c_show_time********add***1****
+        unset($data['nav_add_pool_id']);
+        // unset($data['commend_id']);
+        // $data['cat_arr_id'] = is_string($data['cat_arr_id']) ? json_encode($data['cat_arr_id']) : '';
+        Db::beginTransaction();
+        try {
+            //处理投票
+            $is_survey = isset($data['is_survey']) ? $data['is_survey'] : 0;
+            $survey_name = isset($data['survey_name']) ? $data['survey_name'] : '';
+            $suvey_array = isset($data['suvey_array']) ? $data['suvey_array'] : '';
+            $website_id = isset($data['website_id']) ? $data['website_id'] : 2;
+            unset($data['is_survey']);
+            unset($data['survey_name']);
+            unset($data['suvey_array']);
+
+            // unset($data['website_id']);  
+            // unset($data['web_site_id']);  
+
+            // $data['web_site_id'] = is_array($data['web_site_id']) ? json_encode($data['web_site_id']) : ($data['web_site_id']);
+            if ($data['hits'] == '') {
+                $data['hits'] = 0;
+            }
+            if ($data['is_original'] == '') {
+                $data['is_original'] = 0;
+            }
+            if ($data['status'] == '') {
+                $data['status'] = 0;
+            }
+            $articleData = $data;
+            unset($articleData['content']);
+            //自动处理缩略图、关键字、描述
+            if ($articleData['imgurl'] == '') {
+                //如果没有图,设置level=0
+                $levelArr = json_decode($articleData['level'], true);
+                var_dump($levelArr, '----------levelArr-----------1');
+                //content中提取图片第一个图,正则提取
+                //  -------采集器相关优化-----
+                //    优化正则表达式,仅匹配 src 属性值,避免匹配到多余内容
+                if ($is_collect == 1) {
+                    $reg = '/<img.*?src=[\'"]?((?!.*\.gif)[^\'" >]+)[\'"]?.*?>/i';
+                } else {
+                    $reg = '/<img.*?src=[\'"]?([^\'" >]+)[\'"]?.*?>/i';
+                }
+                //  -------采集器相关优化-----
+                preg_match_all($reg, $data['content'], $matches);
+                if (isset($matches[1][0])) {
+                    //截取varchar240
+                    $articleData['imgurl'] = substr($matches[1][0], 0, 240);
+                    //如果有图,设置level=3
+                    if (!in_array(3, $levelArr)) {
+                        $levelArr[] = 3;
+                    }
+                    $articleData['level'] = json_encode($levelArr);
+                } else {
+                    if (!in_array(0, $levelArr)) {
+                        $levelArr[] = 0;
+                    }
+                    $articleData['level'] = json_encode($levelArr);
+                }
+            }
+            var_dump($articleData['level'], '----------$articleData[level]----------1');
+            if ($articleData['keyword'] == '') {
+                //提取标题+内容中的关键词
+                $articleData['keyword'] = $data['title'];
+                //  . substr(str_replace(' ', '', strip_tags($data['content'])), 0, 20);
+                Jieba::init(); // 初始化 jieba-php
+                Finalseg::init();
+                $segList = Jieba::cut($articleData['keyword']);
+                $segList1 = array_slice($segList, 0, 8);
+                $articleData['keyword'] = implode(',', $segList1);
+            }
+            if ($articleData['introduce'] == '') {
+                //提取内容中的描述
+                $content = $data['content'];
+                // 去除 <style> 和 <script> 标签及其内容
+                $content = preg_replace('/<(style|script)[^>]*>.*?<\/\1>/is', '', $content);
+                // 去除所有 HTML 标签
+                $content = strip_tags($content);
+                // 去除 HTML 实体
+                $content = html_entity_decode($content, ENT_QUOTES | ENT_HTML5, 'UTF-8');
+                // 只保留文本和标点符号(去除所有字母数字以外的特殊符号,可根据需要调整正则)
+                $content = preg_replace('/[^\p{L}\p{N}\p{P}\p{Zs}]+/u', '', $content);
+                // 去除多余空白
+                $content = preg_replace('/\s+/u', '', $content);
+                // 截取 100 个字符
+                $articleData['introduce'] = mb_substr($content, 0, 100);
+            }
+            if ($articleData['status'] == 0) {
+                $this->sendMessage([
+                    'talk_type' => 100,
+                    'title' => $articleData['title'],
+                    'content' => '提交了审核',
+                    'messageType' => 2,
+                ]);
+            }
+            if (!empty($data['fujian'])) {
+                $articleData['fujian'] = $data['fujian'];
+            }
+            $id = Article::insertGetId($articleData);
+            if (!$id) {
+                throw new \Exception('文章插入失败');
+            }
+            $articleDataContent = [
+                'article_id' => $id,
+                'content' => $data['content'],
+            ];
+            // 采集器中的文章内容,在添加时,去掉div标签
+            if ($is_collect == 1) {
+                // 采集来的文章,content中可能包含div标签,需要先移除
+                $pattern = '/<\/?div\b(?:[^"\'>]|"[^"]*"|\'[^\']*\')*>/is';
+                $article_data = preg_replace($pattern, '', $data['content']);
+                $$articleDataContent['content'] = $article_data;
+            }
+
+            $contentInsertId = ArticleData::insertGetId($articleDataContent);
+            if (!$contentInsertId) {
+                throw new \Exception('文章内容插入失败');
+            }
+
+
+            //   ------c_show_time********add***2****
+            // 直接使用当前系统时间,不再强制添加8小时
+            $now = date('Y-m-d H:i:s');
+            if ($user_type == 10000 || $is_collect == 1) {
+                // 管理员添加文章时,核心站c端显示时间就是创建时间;非核心站c端显示时间就是此创建时间往后推二十分钟;
+                // 非管理员添加文章时,不做操作只有在审核通过时获取c端显示时间
+                if (!isset($data['catid'])) {
+                    throw new \Exception('缺少必要字段:catid');
+                }
+                $column_arr = WebsiteColumn::where('column_name', '官网')->pluck('id')->toArray();
+                // 查找网站,若是核心站则返回字段is_core=1,否则返回is_core=0,若是不存在此网站则为is_core=2
+                $web = WebsiteCategory::where('category_id', $data['catid'])
+                    ->leftJoin('website', 'website_category.website_id', '=', 'website.id')
+                    ->select(
+                        'website_id',
+                        DB::raw('            
+                CASE 
+                    WHEN website.id IS NULL THEN 2 
+                    WHEN website.website_column_id IN (' . implode(',', $column_arr) . ') THEN 1 
+                    ELSE 0 
+                END as is_core
+            ')
+                    )
+                    ->get();
+                // $id = 225;   -----测试开启
+                // 采集来的文章,错开时间在两小时之内发布
+                if ($user_type == 10000 && $is_collect == 1) {
+                    $web_num = $web->where('is_core', '!=', 2)->count();
+                    $waiting_interval = 10;
+                    if ($web_num > 12) {
+                        // 若网站数量大于12个,则每个网站间隔时间取均值
+                        // 防止除数为 0,虽然这里 $web_num 是 count 结果不会为 0,但做健壮性检查
+                        $waiting_interval = 120 / max(1, $web_num);
+                    }
+                    $time = 0;
+                } else {
+                    // 非核心站与核心站----显示时间-----间隔
+                    $time = 20;
+                    // 若不是采集来的文章,则非核心站之间的间隔时间为5分钟;初始时间与当前时间差二十分钟
+                    $waiting_interval = 5;
+                }
+                // 将 Hyperf\Database\Model\Collection 转换为数组
+                $webArray = $web->toArray();
+                $article_ignore = array_values(array_filter(array_map(function ($index, $item) use (&$time, $now, $id, $waiting_interval, $is_collect) {
+                    // 检查 $item 对象是否有 is_core 属性
+                    if (!isset($item['is_core'])) {
+                        throw new \Exception('$item 对象缺少 is_core 属性');
+                    }
+                    // 当 is_core 为 2 时,则表示此网站不存在
+                    if ($item['is_core'] == 2) {
+                        return null;
+                    }
+                    if ($is_collect == 1) {
+                        // 采集来的文章,错开时间在两小时之内发布
+                        // $time = 0;
+                        $c_show_time = date('Y-m-d H:i:s', strtotime($now) + $time * 60);
+                        $time += $waiting_interval;
+                    } else if ($item['is_core'] == 1) {
+                        // 当 is_core 为 1 时,则表示此网站是核心站
+                        $c_show_time = date('Y-m-d H:i:s', strtotime($now));
+                    } else {
+                        // 若是is_core为0,则表示此网站不是核心站,需要往后推时间
+                        $c_show_time = date('Y-m-d H:i:s', strtotime($now) + $time * 60);
+                        if ($item['is_core'] == 0) {
+                            $time += $waiting_interval;
+                        }
+                    }
+
+                    return [
+                        'article_id' => $id,
+                        'website_id' => $item['website_id'],
+                        'c_show_time' => $c_show_time,
+                        //   'is_core' => $item['is_core'],
+                        //   'time' => $time
+                    ];
+                }, array_keys($webArray), $webArray)));
+                // Db::commit();
+                // return Result::success($article_ignore);
+                if (!empty($article_ignore)) {
+                    $article_ignores = ArticleIgnore::insert($article_ignore);
+                    if (!$article_ignores) {
+                        throw new \Exception('c端展示时间插入失败');
+                    }
+                }
+            }
+            // ------c_show_time********add***2****
+            //处理投票
+            if ($is_survey == 1) {
+                //生成年月日时分秒+8位随机数
+                $uuid = date('YmdHis') . rand(10000000, 99999999);
+                var_dump($suvey_array, 'suvey_array________');
+                $suveys_array = is_array($suvey_array) ? $suvey_array : json_decode($suvey_array);
+                var_dump($suveys_array, '---------------------1');
+                var_dump($suvey_array, '---------------------2');
+                $suvey_data = [];
+                foreach ($suveys_array as $key => $value) {
+                    if ($value == '') {
+                        continue;
+                    }
+                    if (is_array($value)) {
+                        $suvey_data[] = [
+                            'sur_id' => $uuid,
+                            'art_id' => $id,
+                            'website_id' => $website_id ?? 2,
+                            'survey_name' => $survey_name,
+                            'choice_name' => $value[1],
+                            'is_other' => 1,
+                            'other_id' => 0,
+                            'results' => 0,
+
+                        ];
+                    } else {
+                        $suvey_data[] = [
+                            'sur_id' => $uuid,
+                            'art_id' => $id,
+                            'website_id' => $website_id ?? 2,
+                            'survey_name' => $survey_name,
+                            'choice_name' => $value,
+                            'is_other' => 0,
+                            'other_id' => 0,
+                            'results' => 0,
+
+                        ];
+                    }
+                    if (empty($suvey_data)) {
+                        throw new \Exception("投票数据为空");
+                    }
+                }
+                $result = ArticleSurvey::insert($suvey_data);
+                if (!$result) {
+                    throw new \Exception("投票失败,ArticleSurvey插入失败");
+                }
+                $result = Article::where('id', $id)->update(['survey_id' => $uuid, 'survey_name' => $survey_name, 'is_survey' => $is_survey]);
+                if (!$result) {
+                    throw new \Exception("投票失败,更新主表失败");
+                }
+            }
+
+
+            Db::commit();
+            return Result::success(['id' => $id]);
+        } catch (\Throwable $ex) {
+            Db::rollBack();
+            var_dump($ex->getMessage());
+            return Result::error("创建失败", 0);
+        }
+    }
+    /**
+     * @param array $data
+     * @return array
+     */
+    public function delArticle(array $data): array
+    {
+        // ------c_show_time********del*******
+        Db::beginTransaction();
+        try {
+            $article = Article::where(['id' => $data['id']])->delete();
+            // 若文章删除失败,抛出异常,后续 SQL 语句不会执行
+            if (!$article) {
+                throw new \Exception("删除失败,文章删除失败");
+            }
+            //survey投票删除
+            ArticleSurvey::where(['art_id' => $data['id']])->delete();  // 修正类名大小写
+            $articleIgnore = ArticleIgnore::where(['article_id' => $data['id']])->delete();
+            $article_data = ArticleData::where(['article_id' => $data['id']])->delete();
+            // 若文章详情删除失败,抛出异常
+            if (!$article_data) {
+                throw new \Exception("删除失败,文章详情删除失败");
+            }
+            Db::commit();  // 所有操作成功,提交事务
+        } catch (\Throwable $ex) {
+            Db::rollBack();
+            var_dump($ex->getMessage());
+            return Result::error("删除失败: " . $ex->getMessage(), 0);
+        }
+        // ------c_show_time********del*******
+        if (!$article) {
+            return Result::error("删除失败");
+        }
+        return Result::success($article);
+    }
+    /**
+     * @param array $data
+     * @return array
+     */
+    public function updateArticle(array $data): array
+    {
+        var_dump($data, '----------12-----------1');
+        Db::beginTransaction();
+        // ------c_show_time********up*******
+        $user_type = isset($data['user_type']) ? $data['user_type'] : 0;
+        // 无论是否改变了c端显示时间或者栏目,都需要将未屏蔽的网站显示时间删除记录
+        // 若是存在交集,则进行修改,若无,则合并(此表中的记录应该包含被屏蔽网站及涉及所有网站的展示时间)
+        $web = WebsiteCategory::where('category_id', $data['catid'])
+            ->leftJoin('website', 'website_category.website_id', '=', 'website.id')
+            ->select(
+                'website_id',
+                Db::raw('CASE WHEN website.id IS NULL THEN 2 WHEN JSON_CONTAINS(website.`website_column_arr_id`, \'3\') THEN 1 ELSE 0 END as is_core')
+            )
+            ->get();
+        // 根据错误信息,问题在于 $web 可能是一个包含对象的集合,不能直接用于 whereNotIn 方法
+        // 先从 $web 集合中提取 website_id 字段的值,再进行删除操作
+        $websiteIds = $web->pluck('website_id')->toArray();
+        $del_article_ignore = ArticleIgnore::where('article_id', $data['id'])->whereNotIn('website_id', $websiteIds)->delete();
+        if ($user_type == 0) {
+            throw new \Exception("用户类型不能为空");
+        }
+        if ($user_type == 10000) {
+            // 查找网站,若是核心站则返回字段is_core=1,否则返回is_core=0,若是不存在此网站则为is_core=2
+            $web = WebsiteCategory::where('category_id', $data['catid'])
+                ->leftJoin('website', 'website_category.website_id', '=', 'website.id')
+                ->select(
+                    'website_id',
+                    Db::raw('CASE WHEN website.id IS NULL THEN 2 WHEN JSON_CONTAINS(website.`website_column_arr_id`, \'3\') THEN 1 ELSE 0 END as is_core')
+                )
+                ->get();
+            // 非核心站与核心站----显示时间-----间隔
+            $time = 20;
+            // 若不是采集来的文章,则非核心站之间的间隔时间为5分钟;初始时间与当前时间差二十分钟
+            $waiting_interval = 5;
+            $webArray = $web->toArray();
+            if (empty($webArray)) {
+                throw new \Exception('网站分类不存在');
+            }
+            // 直接使用当前系统时间,不再强制添加8小时
+            $now = date('Y-m-d H:i:s');
+            $article_ignore = array_values(array_filter(array_map(function ($index, $item) use (&$time, $now, $data, $waiting_interval) {
+                // 检查 $item 对象是否有 is_core 属性
+                if (!isset($item['is_core'])) {
+                    throw new \Exception('$item 对象缺少 is_core 属性');
+                }
+                // 当 is_core 为 2 时,则表示此网站不存在
+                if ($item['is_core'] == 2) {
+                    return null;
+                } else if ($item['is_core'] == 1) {
+                    // 当 is_core 为 1 时,则表示此网站是核心站
+                    $c_show_time = date('Y-m-d H:i:s', strtotime($now));
+                } else {
+                    // 若是is_core为0,则表示此网站不是核心站,需要往后推时间
+                    $c_show_time = date('Y-m-d H:i:s', strtotime($now) + $time * 60);
+                    if ($item['is_core'] == 0) {
+                        $time += $waiting_interval;
+                    }
+                }
+
+                return [
+                    'article_id' => $data['id'],
+                    'website_id' => $item['website_id'],
+                    'c_show_time' => $c_show_time,
+                ];
+            }, array_keys($webArray), $webArray)));
+
+            if (!empty($article_ignore)) {
+                // 使用 upsert 方法,当 article_id 和 website_id 组合存在时更新 c_show_time,不存在时插入新记录
+                // 使用 upsert 方法,根据 article_id 和 website_id 作为唯一键判断记录是否存在,存在则更新 c_show_time 字段,不存在则新增
+                $article_ignores = ArticleIgnore::upsert(
+                    $article_ignore,
+                    ['article_id', 'website_id'], // 用于判断记录是否存在的唯一键
+                    ['c_show_time'] // 需要更新的字段
+                );
+                if (!$article_ignores) {
+                    throw new \Exception('c端展示时间插入失败');
+                }
+            }
+            // Db::commit();
+            // return Result::success($article_ignore);
+        }
+        // ------c_show_time********up*******
+        unset($data['user_type']);
+        // unset($data['web_site_id']);
+        unset($data['nav_add_pool_id']);
+        try {
+            //处理投票
+            $is_survey = isset($data['is_survey']) ? $data['is_survey'] : 0;
+            $survey_name = isset($data['survey_name']) ? $data['survey_name'] : '';
+            $suvey_array = isset($data['suvey_array']) ? $data['suvey_array'] : '';
+            $website_id = isset($data['website_id']) ? $data['website_id'] : 2;
+            unset($data['is_survey']);
+            unset($data['survey_name']);
+            unset($data['suvey_array']);
+            unset($data['website_id']);
+            $data['web_site_id'] = is_array($data['web_site_id']) ? json_encode($data['web_site_id']) : ($data['web_site_id']);
+            if ($data['hits'] == '') {
+                $data['hits'] = 0;
+            }
+            if ($data['is_original'] == '') {
+                $data['is_original'] = 0;
+            }
+            if ($data['status'] == '') {
+                $data['status'] = 0;
+            }
+            $data['cat_arr_id'] = is_array($data['cat_arr_id']) ? json_encode($data['cat_arr_id']) : $data['cat_arr_id'];
+            $data['tag'] = isset($data['tag']) ? json_encode($data['tag']) : '';
+            $articleData = $data;
+            unset($articleData['content']);
+            unset($articleData['status_name']);
+            unset($articleData['name']);
+            unset($articleData['content']);
+            unset($articleData['pid_arr']);
+            unset($articleData['pid']);
+            //自动处理缩略图、关键字、描述
+            if ($articleData['imgurl'] == '') {
+                //如果没有图,设置level=0
+                $levelArr = json_decode($articleData['level'], true);
+                var_dump($levelArr, '----------levelArr-----------1');
+                //content中提取图片第一个图,正则提取
+                $reg = '/<img.*?src=[\"|\']?(.*?)[\"|\']?\s.*?>/i';
+
+                preg_match_all($reg, $data['content'], $matches);
+                if (isset($matches[1][0])) {
+                    //截取varchar240
+                    // 截取到第一个<
+                    $articleData['imgurl'] = $matches[1][0];
+                    var_dump($articleData['imgurl'], '----------imgurl-----------1');
+                    $pos = strpos($articleData['imgurl'], '"');
+                    if ($pos !== false) {
+                        $articleData['imgurl'] = substr($articleData['imgurl'], 0, $pos);
+                    }
+                    //$articleData['imgurl'] = substr($matches[1][0], 0, 240);
+                    //如果有图,设置level=3
+                    if (!in_array(3, $levelArr)) {
+                        $levelArr[] = 3;
+                    }
+                    $articleData['level'] = json_encode($levelArr);
+                } else {
+                    if (!in_array(0, $levelArr)) {
+                        $levelArr[] = 0;
+                    }
+                    $articleData['level'] = json_encode($levelArr);
+                }
+            }
+            var_dump($articleData['level'], '----------$articleData[level]----------1');
+            if ($articleData['keyword'] == '') {
+                //提取标题+内容中的关键词
+                $articleData['keyword'] = $data['title'];
+                //  . substr(str_replace(' ', '', strip_tags($data['content'])), 0, 20);
+                Jieba::init(); // 初始化 jieba-php
+                Finalseg::init();
+                $segList = Jieba::cut($articleData['keyword']);
+                $segList1 = array_slice($segList, 0, 8);
+                $articleData['keyword'] = implode(',', $segList1);
+            }
+            if ($articleData['introduce'] == '') {
+                //提取内容中的描述
+                $content = $data['content'];
+                // 去除 <style> 和 <script> 标签及其内容
+                $content = preg_replace('/<(style|script)[^>]*>.*?<\/\1>/is', '', $content);
+                // 去除所有 HTML 标签
+                $content = strip_tags($content);
+                // 去除 HTML 实体
+                $content = html_entity_decode($content, ENT_QUOTES | ENT_HTML5, 'UTF-8');
+                // 只保留文本和标点符号(去除所有字母数字以外的特殊符号,可根据需要调整正则)
+                $content = preg_replace('/[^\p{L}\p{N}\p{P}\p{Zs}]+/u', '', $content);
+                // 去除多余空白
+                $content = preg_replace('/\s+/u', '', $content);
+                // 截取 100 个字符
+                $articleData['introduce'] = mb_substr($content, 0, 100);
+            }
+            if ($articleData['status'] == 0) {
+                $this->sendMessage([
+                    'talk_type' => 100,
+                    'title' => $articleData['title'],
+                    'content' => '提交了审核',
+                    'messageType' => 2,
+                ]);
+            }
+            if (!empty($data['fujian'])) {
+                $articleData['fujian'] = $data['fujian'];
+            }
+            $id = Article::where(['id' => $data['id']])->update($articleData);
+            // $articleDataContent = [
+            //   'content' => $data['content'],
+            // ];
+            // 采集来的文章,content中可能包含div标签,需要先移除
+            $pattern = '/<\/?div\b(?:[^"\'>]|"[^"]*"|\'[^\']*\')*>/is';
+            $article_data = preg_replace($pattern, '', $data['content']);
+            $articleDataContent['content'] = $article_data;
+            ArticleData::where(['article_id' => $data['id']])->update($articleDataContent);
+            //处理投票
+            $id = $data['id'];
+            $surveydata = ArticleSurvey::where(['art_id' => $data['id']])->delete();
+            var_dump($suvey_array, 'suvey_array________delete');
+
+            //处理投票
+            if ($is_survey == 1) {
+                //生成年月日时分秒+8位随机数
+                $uuid = date('YmdHis') . rand(10000000, 99999999);
+                $suveys_array = is_array($suvey_array) ? $suvey_array : json_decode($suvey_array);
+                var_dump($suveys_array, '---------------------1');
+                $suvey_data = [];
+                if (is_array($suveys_array)) {
+                    foreach ($suveys_array as $key => $value) {
+                        if ($value == '') {
+                            continue;
+                        }
+                        if (is_array($value)) {
+                            $suvey_data[] = [
+                                'sur_id' => $uuid,
+                                'art_id' => $id,
+                                'website_id' => $website_id ?? 2,
+                                'survey_name' => $survey_name,
+                                'choice_name' => $value[1],
+                                'is_other' => 1,
+                                'other_id' => 0,
+                                'results' => 0,
+
+                            ];
+                        } else {
+                            $suvey_data[] = [
+                                'sur_id' => $uuid,
+                                'art_id' => $id,
+                                'website_id' => $website_id ?? 2,
+                                'survey_name' => $survey_name,
+                                'choice_name' => $value,
+                                'is_other' => 0,
+                                'other_id' => 0,
+                                'results' => 0,
+                            ];
+                        }
+                        if (empty($suvey_data)) {
+                            throw new \Exception("投票数据为空");
+                        }
+                    }
+                }
+                $result = ArticleSurvey::insert($suvey_data);
+                if (!$result) {
+                    throw new \Exception("投票失败");
+                }
+                $result = Article::where('id', $id)->update(['survey_id' => $uuid, 'survey_name' => $survey_name, 'is_survey' => $is_survey]);
+                if (!$result) {
+                    throw new \Exception("投票失败");
+                }
+            } else {
+                $result = Article::where('id', $id)->update(['survey_id' => '', 'survey_name' => '', 'is_survey' => 0]);
+            }
+            Db::commit();
+            return Result::success([]);
+        } catch (\Throwable $ex) {
+            Db::rollBack();
+            var_dump($ex->getMessage());
+            return Result::error("更新失败" . $ex->getMessage(), 0);
+        }
     }
 
     /**
+     * 更新资讯状态
      * @param array $data
      * @return array
      */
-    public function delCategory(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
+    public function upArticleStatus(array $data): array
+    {
+        $articleData = Article::where(['id' => $data['id']])->first();
+        //发送10次
+        // for ($i = 0; $i < 10; $i++) {
+        //   $this->sendMessage([
+        //     'talk_type' => 100,
+        //     'title' => $i . $articleData['title'],
+        //     'content' => '审核通过',
+        //     'messageType' => 2,
+        //     'user_id' => $articleData['admin_user_id'],
+        //   ]);
+        // }
+        // var_dump($data['status'], 'status');
+        // return Result::success();
+
+        if ($data['status'] == 1) {
+            $this->sendMessage([
+                'talk_type' => 101,
+                'title' => $articleData['title'],
+                'content' => '审核通过',
+                'messageType' => 2,
+                'user_id' => $articleData['admin_user_id'],
+            ]);
+        }
+        if ($data['status'] == 2) {
+            $this->sendMessage([
+                'talk_type' => 101,
+                'title' => $articleData['title'],
+                'content' => '审核拒绝',
+                'messageType' => 2,
+                'user_id' => $articleData['admin_user_id'],
+            ]);
+        }
+        if ($data['status'] == 0) {
+            $this->sendMessage([
+                'talk_type' => 100,
+                'title' => $articleData['title'],
+                'content' => '提交了审核',
+                'messageType' => 2,
+            ]);
+        }
+
+
+        $result = Article::where(['id' => $data['id']])->update($data);
+
+        // ------c_show_time********up_status*******
+        // 若是审核通过  则更新c_show_time
+        if ($data['status'] == 1) {
+            // 查找网站,若是核心站则返回字段is_core=1,否则返回is_core=0,若是不存在此网站则为is_core=2
+            $column_arr = WebsiteColumn::where('column_name', '官网')->pluck('id')->toArray();
+            // 查找网站,若是核心站则返回字段is_core=1,否则返回is_core=0,若是不存在此网站则为is_core=2
+            $web = WebsiteCategory::where('category_id', $data['catid'])
+                ->leftJoin('website', 'website_category.website_id', '=', 'website.id')
+                ->select(
+                    'website_id',
+                    DB::raw('            
+            CASE 
+                WHEN website.id IS NULL THEN 2 
+                WHEN website.website_column_id IN (' . implode(',', $column_arr) . ') THEN 1 
+                ELSE 0 
+            END as is_core
+        ')
+                )
+                ->get();
+            // 非核心站与核心站----显示时间-----间隔
+            $time = 20;
+            // 若不是采集来的文章,则非核心站之间的间隔时间为5分钟;初始时间与当前时间差二十分钟
+            $waiting_interval = 5;
+            $webArray = $web->toArray();
+            if (empty($webArray)) {
+                throw new \Exception('网站分类不存在');
+            }
+            // 直接使用当前系统时间,不再强制添加8小时
+            $now = date('Y-m-d H:i:s');
+            $article_ignore = array_values(array_filter(array_map(function ($index, $item) use (&$time, $now, $data, $waiting_interval) {
+                if (isset($data['ignore_ids'])) {
+                    $ignore_website_ids = is_array($data['ignore_ids']) ? $data['ignore_ids'] : json_decode($data['ignore_ids'], true);
+                    if (in_array($item['website_id'], $ignore_website_ids)) {
+                        $is_ignore = 1;
+                    } else {
+                        $is_ignore = 0;
+                    }
+                    return [
+                        'article_id' => $data['id'],
+                        'website_id' => $item['website_id'],
+                        'is_ignore' => $is_ignore,
+                    ];
+                } else {
+                    // 检查 $item 对象是否有 is_core 属性
+                    if (!isset($item['is_core'])) {
+                        throw new \Exception('$item 对象缺少 is_core 属性');
+                    }
+                    // 当 is_core 为 2 时,则表示此网站不存在
+                    if ($item['is_core'] == 2) {
+                        return null;
+                    } else if ($item['is_core'] == 1) {
+                        // 当 is_core 为 1 时,则表示此网站是核心站
+                        $c_show_time = $now;
+                    } else {
+                        // 若是is_core为0,则表示此网站不是核心站,需要往后推时间
+                        $c_show_time = date('Y-m-d H:i:s', strtotime($now) + $time * 60);
+                        if ($item['is_core'] == 0) {
+                            $time += $waiting_interval;
+                        }
+                    }
+
+                    return [
+                        'article_id' => $data['id'],
+                        'website_id' => $item['website_id'],
+                        'c_show_time' => $c_show_time,
+                    ];
+                }
+            }, array_keys($webArray), $webArray)));
+            if (!empty($article_ignore) && !isset($data['ignore_ids'])) {
+                // 使用 upsert 方法,当 article_id 和 website_id 组合存在时更新 c_show_time,不存在时插入新记录
+                // 使用 upsert 方法,根据 article_id 和 website_id 作为唯一键判断记录是否存在,存在则更新 c_show_time 字段,不存在则新增
+                $websiteIds = $web->pluck('website_id')->toArray();
+                $del_article_ignore = ArticleIgnore::where('article_id', $data['id'])->whereNotIn('website_id', $websiteIds)->delete();
+                $article_ignores = ArticleIgnore::upsert(
+                    $article_ignore,
+                    ['article_id', 'website_id'], // 用于判断记录是否存在的唯一键
+                    ['c_show_time'] // 需要更新的字段
+                );
+                if (!$article_ignores) {
+                    throw new \Exception('c端展示时间插入失败');
+                }
+            }
+            if (!empty($data['ignore_ids'])) {
+                // return Result::success($article_ignore);
+                // 从数据库中删除 article_id 为 $data['id'] 且 website_id 在 $website_ids 中的记录
+                if (!empty($article_ignore)) {
+                    $article_ignores = ArticleIgnore::upsert(
+                        $article_ignore,
+                        ['article_id', 'website_id'], // 用于判断记录是否存在的唯一键
+                        ['is_ignore'] // 需要更新的字段
+                    );
+                    // if(!$article_ignores){
+                    //   throw new \Exception('屏蔽网站更新失败');
+                    // }
+                }
+            }
+        }
+        // ------c_show_time********up_status*******
+
+        if ($result) {
+            return Result::success();
+        } else {
+            return Result::error("更新状态失败", 0);
+        }
     }
+    /**
+     * 获取新闻详情
+     * @param array $data
+     * @return array
+     */
+    public function getArticleInfo(array $data): array
+    {
+        $where = [
+            'article.id' => $data['id'],
+            // 'article.status' => 1,
+        ];
+        $result = Article::where($where)->leftJoin("article_data", "article.id", "article_data.article_id")->first();
+        $articleSurvey = ArticleSurvey::where(['art_id' => $data['id']])->get();
+        $info = $result;
+        // var_dump($info, 'info');
+        $info['survey_array'] = $articleSurvey;
+        if ($result) {
+            return Result::success($info);
+        } else {
+            return Result::error("查询失败", 0);
+        }
+    }
+    /**
+     *  获取头条新闻
+     * @param array $data
+     * @return array
+     */
+    public function getWebsiteArticlett(array $data): array
+    {
+        $website_id = $data['website_id'];
+        $website = Website::where('id', $data['website_id'])->first();
+        if (empty($website)) {
+            return Result::error("网站不存在", 0);
+        }
+        $categorys = $this->processArticlePro($website_id);
+        $catiall = $categorys['catiall'];
+        $categoryIds = $categorys['categoryIds'];
+        $where = [
+            'status' => 1
+        ];
+        // $website_column = $website['column'];
+        if (!empty($website['website_column_arr_id']) && $website['website_column_arr_id'] != '[]') {
+            $website_column = json_decode($website['website_column_arr_id'], true);
+        }
+        $diff_pid_categoryIds = array_values($categorys['diff_pid_categoryIds']);
+        // return Result::success($diff_pid_categoryIds);
+        if (in_array(3, $website_column) && !empty($diff_pid_categoryIds)) {
+            return Result::error("此为核心站,有父级导航" . implode(',', $diff_pid_categoryIds) . "未选择而选择了此子级!", 0);
+        }
+
+        // $website_id = $data['website_id'];
+        $month = date("Y-m-d H:i:s", strtotime("-30 day"));
+        //如果是4:最新资讯(数据库已不存在) 5:资讯推荐(数据库已不存在);
+        // 1:头条资讯;2:轮播图;6:热点资讯;(数据库)
+        switch ($data['level']) {
+            case 1:
+            case 2:
+            case 3:
+            case 6:             //1.头条资讯;2.轮播图;3.推荐图;6.今日热点
+                $query = Article::where($where)
+                    ->where('level', 'like', '%' . $data['level'] . '%')
+                    ->orderBy('updated_at', 'desc');
+                break;
+            case 4:             //最新资讯
+                $query = Article::where($where)->orderBy('updated_at', 'desc');
+                break;
+            case 5:             //资讯推荐
+                $query = Article::where($where)
+                    ->where('updated_at', '>', $month);
+                break;
+            case 7:             //资讯分类
+
+                if (isset($data['id']) && !empty($data['id'])) {
+                    $keyword = Article::where('id', $data['id'])->value('keyword');
+                    $keywordArray = explode(',', $keyword);
+                    $whereL7 = [];
+                    foreach ($keywordArray as $k => $v) {
+                        $whereL7[] = ['keyword', 'like', '%' . $v . '%'];
+                    }
+                    $query = Article::where($where)->where($whereL7)->orderBy('updated_at', 'desc');;
+                    break;
+                } else {
+                    return Result::error("请输入资讯ID", 0);
+                    break;
+                }
+            default:
+                break;
+        }
+        // $whereL7 = [];
+        // if(isset($data['id']) && !empty($data['id'])){
+        //     $keyword = Article::where('id', $data['id'])->value('keyword');
+        //     $keywordArray = explode(',', $keyword);
+
+        //     foreach ($keywordArray as $k => $v) {
+        //         $whereL7[] = ['keyword', 'like', '%' . $v . '%'];
+        //     }
+        // }
 
+        // $query = Article::where($where)
+        //         ->when(isset($data['level']) && !empty($data['level']), function ($query) use ($data,$whereL7) {
+        //             if($data['level'] == 1 || $data['level'] == 2 || $data['level'] == 3 || $data['level'] == 6){
+        //                 $query = $query->where('article.level','like','%'.$data['level'].'%')->orderBy('updated_at','desc');
+        //             }
+        //             if($data['level'] == 7){
+        //                 $query = $query->where($whereL7)->orderBy('updated_at','desc');
+        //             }
+        //             if($data['level'] == 4){
+        //                 $query = $query->inRandomOrder()
+        //                 ->where('updated_at', '>', date("Y-m-d H:i:s", strtotime("-30 day")));
+        //             }
+        //             if($data['level'] == 5){
+        //                 $query = $query->orderBy('updated_at','desc');
+        //             }
+        //         });
+        if ($data['textnum'] > 0) {
+            $query = clone $query;
+            $result['text'] = $query
+                ->whereIn('catid', $categoryIds)
+                ->leftJoinSub(function ($query) use ($website_id) {
+                    $query->from('article_ignore')
+                        ->where('website_id', $website_id);
+                }, 'article_ignore', function ($join) {
+                    $join->on('article_ignore.article_id', '=', 'article.id');
+                })
+                ->where(function ($query) {
+                    $query->whereNull('article_ignore.article_id')
+                        ->orWhere(function ($subQuery) {
+                            $subQuery->whereNotNull('article_ignore.article_id')
+                                ->where('article_ignore.is_ignore', 0)
+                                ->where(function ($subSubQuery) {
+                                    $subSubQuery->where('article_ignore.c_show_time', '<=', date('Y-m-d H:i:s'))
+                                        ->orWhereNull('article_ignore.c_show_time');
+                                });
+                        });
+                })
+                // ->where(function ($query) use ($website_id) {
+                //   $query->whereNull('article_ignore.article_id')
+                //     ->orWhere('article_ignore.website_id', '!=', $website_id);
+                // })
+                ->select(
+                    'article.id',
+                    'article.title',
+                    'article.author',
+                    'article.updated_at',
+                    'article.introduce',
+                    'article.islink',
+                    'article.linkurl',
+                    'article.copyfrom',
+                    'article.cat_arr_id',
+                    'article.catid',
+                    'article.level',
+                    // 'article_ignore.is_ignore',
+                    // 'article_ignore.c_show_time',
+                )
+                ->offset($data['placeid'])
+                ->limit($data['textnum'])
+                ->get()->all();
+            foreach ($result['text'] as $k => $v) {
+                $result['text'][$k]->pinyin = $catiall[$v->catid]['pinyin'];
+                $result['text'][$k]->alias = $catiall[$v->catid]['alias'];
+            }
+        }
+        if ($data['imgnum'] > 0) {
+            $query = clone $query;
+            if ($data['textnum'] == 0) {
+                $query = $query->leftJoinSub(function ($query) use ($website_id) {
+                    $query->from('article_ignore')
+                        ->where('website_id', $website_id);
+                }, 'article_ignore', function ($join) {
+                    $join->on('article_ignore.article_id', '=', 'article.id');
+                })
+                    ->where(function ($query) {
+                        $query->whereNull('article_ignore.article_id')
+                            ->orWhere(function ($subQuery) {
+                                $subQuery->whereNotNull('article_ignore.article_id')
+                                    ->where('article_ignore.is_ignore', 0)
+                                    ->where(function ($subSubQuery) {
+                                        $subSubQuery->where('article_ignore.c_show_time', '<=', date('Y-m-d H:i:s'))
+                                            ->orWhereNull('article_ignore.c_show_time');
+                                    });
+                            });
+                    });
+            }
+            $result['img'] = $query
+                ->whereIn('catid', $categoryIds)
+                ->where('article.imgurl', '!=', '')
+                ->select(
+                    'article.id',
+                    'article.title',
+                    'article.imgurl',
+                    'article.author',
+                    'article.updated_at',
+                    'article.introduce',
+                    'article.islink',
+                    'article.linkurl',
+                    'article.copyfrom',
+                    'article.cat_arr_id',
+                    'article.catid',
+                    'article.level',
+                    // 'article_ignore.is_ignore',
+                    // 'article_ignore.c_show_time',
+                )
+                ->offset($data['placeid'])
+                ->limit($data['imgnum'])
+                ->get()->all();
+            foreach ($result['img'] as $k => $v) {
+                $result['img'][$k]->pinyin = $catiall[$v->catid]['pinyin'];
+                $result['img'][$k]->alias = $catiall[$v->catid]['alias'];
+            }
+        }
+
+        if (empty($result)) {
+            return Result::error("暂无相关资讯", 0);
+        }
+        return Result::success($result);
+    }
     /**
+     * 获取模块新闻
      * @param array $data
      * @return array
      */
-    public function updateCategory(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
+
+    public function getWebsiteModelArticles(array $data): array
+    {
+        $catid = $data['catid'];
+        $category = WebsiteCategory::where('website_id', $data['website_id'])->where('category_id', $catid)->select('category_id')->get();
+        $category = $category->toArray();
+        if (!empty($category)) {
+            $where = [
+                'status' => 1,
+                'catid' => $catid,
+            ];
+            $placeid = isset($data['placeid']) && !empty($data['placeid']) ? $data['placeid'] - 1 : 0;
+            // 1:文字新闻;2:轮播图;3:图文;
+            // 级别:0:未分类
+            // 3:推荐图片
+            if ($data['level'] == 1) {
+                $data['level'] = 0;
+            }
+            $result = Article::where($where)
+                ->where(function ($query) use ($data) {
+                    $query->whereRaw("JSON_CONTAINS(level, '" . intval($data['level']) . "') = 1")
+                        ->orWhereNull("level")
+                        ->orWhereRaw("level = '[]'");
+                })
+                ->leftJoinSub(function ($query) use ($data) {
+                    $query->from('article_ignore')
+                        ->where('website_id', $data['website_id']);
+                }, 'article_ignore', function ($join) {
+                    $join->on('article_ignore.article_id', '=', 'article.id');
+                })
+                ->where(function ($query) {
+                    $query->whereNull('article_ignore.article_id')
+                        ->orWhere(function ($subQuery) {
+                            $subQuery->whereNotNull('article_ignore.article_id')
+                                ->where('article_ignore.is_ignore', 0)
+                                ->where(function ($subSubQuery) {
+                                    $subSubQuery->where('article_ignore.c_show_time', '<=', date('Y-m-d H:i:s'))
+                                        ->orWhereNull('article_ignore.c_show_time');
+                                });
+                        });
+                })
+                // ->where(function ($query) use ($data) {
+                //   $query->whereRaw("JSON_CONTAINS(ignore_ids, '" . intval($data['website_id']) . "') = 0")
+                //     ->orWhereNull("ignore_ids");
+                // })
+
+                ->orderBy("updated_at", "desc")
+                ->offset($placeid)
+                ->limit($data['pagesize'])
+                ->get();
+            if (empty($result)) {
+                return Result::error("此栏目暂无相关新闻", 0);
+            }
+        } else {
+            return Result::error("此网站暂无此栏目", 0);
+        }
+        return Result::success($result);
     }
 
     /**
+     *获取新闻列表 
+     * @param array $data
+     * @return array
+     */
+    public function getWebsiteArticleList(array $data): array
+    {
+        // return Result::success($data);
+        $where[] = ['status', '=', 1];
+        $website_id = $data['website_id'];
+        $website = Website::where('id', $data['website_id'])->first();
+        if (empty($website)) {
+            return Result::error("网站不存在", 0);
+        }
+        // $website_column = $website['column'];
+        if (!empty($website['website_column_arr_id']) && $website['website_column_arr_id'] != '[]') {
+            $website_column = json_decode($website['website_column_arr_id'], true);
+        }
+        $categorys = $this->processArticlePro($website_id);
+        $cat_1st_arr = $categorys['cat_1st_arr'];
+        $catiall = $categorys['catiall'];
+        $diff_pid_categoryIds = array_values($categorys['diff_pid_categoryIds']);
+        // return Result::success($diff_pid_categoryIds);
+        if (in_array(3, $website_column) && !empty($diff_pid_categoryIds)) {
+            return Result::error("此为核心站,有父级导航" . implode(',', $diff_pid_categoryIds) . "未选择而选择了此子级!", 0);
+        }
+        if (isset($data['catid']) && !empty($data['catid'])) {
+            $category = WebsiteCategory::where('website_id', $data['website_id'])->where('category_id', $data['catid'])->pluck('category_id');
+            if (empty($category)) {
+                return Result::error("此网站暂无此栏目", 0);
+            }
+            array_push($where, ['catid', '=', $data['catid']]);
+        }
+        // return Result::success($where);
+        $query = Article::where($where)
+            ->leftJoinSub(function ($query) use ($website_id) {
+                $query->from('article_ignore')
+                    ->where('website_id', $website_id);
+            }, 'article_ignore', function ($join) {
+                $join->on('article_ignore.article_id', '=', 'article.id');
+            })
+            ->where(function ($query) {
+                $query->whereNull('article_ignore.article_id')
+                    ->orWhere(function ($subQuery) {
+                        $subQuery->whereNotNull('article_ignore.article_id')
+                            ->where('article_ignore.is_ignore', 0)
+                            ->where(function ($subSubQuery) {
+                                $subSubQuery->where('article_ignore.c_show_time', '<=', date('Y-m-d H:i:s'))
+                                    ->orWhereNull('article_ignore.c_show_time');
+                            });
+                    });
+            })
+            ->select(
+                'article.id',
+                'article.title',
+                'article.imgurl',
+                'article.author',
+                'article.updated_at',
+                'article.introduce',
+                'article.islink',
+                'article.linkurl',
+                'article.copyfrom',
+                'article.cat_arr_id',
+                'article.catid'
+            );
+        $count = $query->count();
+        $rep = $query->orderBy("updated_at", "desc")
+            ->offset(($data['page'] - 1) * $data['pageSize'])
+            ->limit($data['pageSize'])
+            ->get()->all();
+        $categorys = $this->processArticlePro($website_id);
+        $cat_1st_arr = $categorys['cat_1st_arr'];
+        $catiall = $categorys['catiall'];
+        // $web['website_id'] = $data['website_id'];
+        foreach ($rep as $k => $v) {
+            $rep[$k]->category_name = $catiall[$v->catid]['alias'];
+            $rep[$k]->pinyin = $catiall[$v->catid]['pinyin'];
+        }
+        // $rep = $this->processArticles($rep,$web);
+        $data = [
+            'rows' => $rep,
+            'count' => $count,
+        ];
+
+        if (empty($rep)) {
+            return Result::error("没有信息数据");
+        }
+        return Result::success($data);
+    }
+    /**
+     * 前端-获取新闻详情
      * @param array $data
      * @return array
      */
-    public function getArticleList(array $data)
+    public function selectWebsiteArticleInfo(array $data): array
     {
-        return $this->__request(__FUNCTION__, $data);
+        $where = [
+            'article.id' => $data['id'],
+            'article.status' => 1,
+        ];
+
+        $result = Article::where($where)
+            ->leftJoin("article_data", "article.id", "article_data.article_id")
+            ->leftJoin("article_extend", "article_extend.article_id", "article.id")
+            // ->where(function ($query) use ($data) {
+            //   $query->whereRaw("JSON_CONTAINS(ignore_ids, '" . intval($data['website_id']) . "') = 0")
+            //     ->orWhereNull("ignore_ids");
+            // })
+            ->leftJoinSub(function ($query) use ($data) {
+                $query->from('article_ignore')
+                    ->where('website_id', $data['website_id']);
+            }, 'article_ignore', function ($join) {
+                $join->on('article_ignore.article_id', '=', 'article.id');
+            })
+            ->where(function ($query) {
+                $query->whereNull('article_ignore.article_id')
+                    ->orWhere(function ($subQuery) {
+                        $subQuery->whereNotNull('article_ignore.article_id')
+                            ->where('article_ignore.is_ignore', 0)
+                            ->where(function ($subSubQuery) {
+                                $subSubQuery->where('article_ignore.c_show_time', '<=', date('Y-m-d H:i:s'))
+                                    ->orWhereNull('article_ignore.c_show_time');
+                            });
+                    });
+            })
+            ->select(
+                'article.*',
+                'article_data.content',
+                'article_data.article_id',
+                'article_extend.website_url',
+                'article_extend.email',
+                'article_extend.contacts',
+                'article_extend.contacts_mobile',
+                'article_extend.contacts_address',
+                'article_extend.zip_code',
+                'article_extend.enterprise_name'
+            )
+            ->first();
+        if (empty($result)) {
+            return Result::error("暂无此新闻!", 0);
+        }
+        if (!empty($result['publiced_at'])) {
+            $result['updated_at'] = $result['publiced_at'];
+        }
+
+        $category = WebsiteCategory::leftJoin('website', 'website.id', '=', 'website_category.website_id')
+            ->select('website_category.*', 'website.website_name', 'website.suffix')
+            ->where('website_category.website_id', $data['website_id'])
+            ->where(['website_category.category_id' => $result['catid']])
+            ->first();
+        if (empty($category)) {
+            return Result::error("查询失败", 0);
+        }
+        //手动推荐文章
+        $commend_ids = $result['commend_id'] ? json_decode($result['commend_id']) : [];
+        if (empty($commend_ids)) {
+            $commendArticle = [];
+        } else {
+            //去除不存在的文章ID
+            $commendArticle = Article::whereIn('article.id', $commend_ids)
+                ->leftjoin('website_category', 'website_category.category_id', '=', 'article.catid')
+                ->leftJoinSub(function ($query) use ($data) {
+                    $query->from('article_ignore')
+                        ->where('website_id', $data['website_id']);
+                }, 'article_ignore', function ($join) {
+                    $join->on('article_ignore.article_id', '=', 'article.id');
+                })
+                ->where(function ($query) {
+                    $query->whereNull('article_ignore.article_id')
+                        ->orWhere(function ($subQuery) {
+                            $subQuery->whereNotNull('article_ignore.article_id')
+                                ->where('article_ignore.is_ignore', 0)
+                                ->where(function ($subSubQuery) {
+                                    $subSubQuery->where('article_ignore.c_show_time', '<=', date('Y-m-d H:i:s'))
+                                        ->orWhereNull('article_ignore.c_show_time');
+                                });
+                        });
+                })
+                ->where('article.status', 1)
+                ->where('website_category.website_id', $data['website_id'])
+                ->select('article.id', 'article.cat_arr_id', 'article.title', 'article.catid', 'article.imgurl', 'article.hits', 'article.created_at', 'website_category.alias', 'website_category.alias_pinyin', 'website_category.website_id')
+                ->orderByRaw("FIELD(article.id, " . implode(',', $commend_ids) . ")")
+                // ->orderBy('article.updated_at', 'desc')
+                ->limit(5)
+                ->get();
+            //循环数组,取出cat_arr_id中的不重复值,再从website_category取出alias_pinyin,再将cat_arr_id的json转成路径/隔开
+            foreach ($commendArticle as $k => $v) {
+                $cat_arr_id = json_decode($v->cat_arr_id, true);
+                if (!empty($cat_arr_id) && is_array($cat_arr_id)) {
+                    $cat_arr_id = array_unique($cat_arr_id);
+                    // 从website_category取出alias_pinyin
+                    $cat_arr  = WebsiteCategory::where('website_id', $data['website_id'])
+                        ->whereIn('category_id', $cat_arr_id)
+                        ->pluck('alias_pinyin', 'category_id')
+                        ->toArray();
+
+                    // 将cat_arr_id的json转成路径/隔开
+                    $path_parts = [];
+                    foreach ($cat_arr_id as $cat_id) {
+                        if (isset($cat_arr[$cat_id])) {
+                            $path_parts[] = $cat_arr[$cat_id];
+                        }
+                    }
+                    $v->alias_pinyin = implode('/', $path_parts);
+                } else {
+                    $v->alias_pinyin = '';
+                }
+            }
+        }
+
+        $result['category_id'] = $category['category_id'];
+        $result['cat_name'] = $category['alias'];
+        $result['website_name'] = $category['website_name'] ?? "";
+        $result['suffix'] = $category['suffix'] ?? "";
+        $result['commendArticle'] = $commendArticle;
+        $result['commend_ids'] = $commend_ids;
+        return Result::success($result);
     }
 
     /**
+     * 前端-获取网站调查问卷
      * @param array $data
      * @return array
      */
-    public function addArticle(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
+    public function getWebsiteSurvey(array $data): array
+    {
+        if (isset($data['website_id']) && !empty($data['website_id'])) {
+            $website = Website::where('id', $data['website_id'])->first();
+            if (empty($website)) {
+                return Result::error("暂无此网站", 0);
+            }
+        }
+        if (isset($data['art_id']) && !empty($data['art_id'])) {
+            $article = Article::where('id', $data['art_id'])->where('status', 1)->first();
+            if (empty($article)) {
+                return Result::error("暂无此文章", 0);
+            }
+            // return Result::error($data,0);
+            $where['art_id'] = $data['art_id'];
+            // $query = ArticleSurvey::where('art_id',$data['art_id']);
+
+        } else {
+            $survey = Article::where(function ($query) {
+                $query->whereRaw("JSON_CONTAINS(cat_arr_id, '28')")
+                    ->orWhereRaw("JSON_CONTAINS(cat_arr_id, '\"28\"')");
+            })
+                ->where('status', 1)
+                ->where('is_survey', 1)
+                ->select('survey_id')
+                ->orderBy('updated_at', 'desc')
+                ->first();
+            if (empty($survey)) {
+                return Result::error("暂无调查问卷", 0);
+            }
+            $where['sur_id'] = $survey['survey_id'];
+            // $query = ArticleSurvey::where('sur_id',$survey['sur_id']);
+        }
+        // return Result::success($where);
+        $result = ArticleSurvey::where($where)
+            ->where(function ($query) {
+                $query->where('is_other', 0)
+                    ->orWhere(function ($subQuery) {
+                        $subQuery->where('is_other', 1)
+                            ->where('other_id', 0);
+                    });
+            })
+            ->leftJoin('article', 'article_survey.art_id', 'article.id')
+            ->select('article_survey.*', 'article.survey_type')
+            ->get()->all();
+        if (empty($result)) {
+            return Result::error("此文章暂无调查问卷", 0);
+        }
+        return Result::success($result);
     }
-    public function getArticleCommend(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
+    /**
+     * 前端-添加网站调查问卷选项
+     * @param array $data
+     * @return array
+     */
+    public function addWebsiteSurveyOption(array $data): array
+    {
+        if (isset($data['website_id']) && !empty($data['website_id'])) {
+            $website = Website::where('id', $data['website_id'])->first();
+            if (empty($website)) {
+                return Result::error("暂无此网站", 0);
+            }
+            if (isset($data['sur_id']) && !empty($data['sur_id'])) {
+                $survey = ArticleSurvey::where('sur_id', $data['sur_id'])->where('is_other', 1)->where('other_id', 0)->first();
+                if (empty($survey)) {
+                    return Result::error("此调查问卷不可添加选项", 0);
+                }
+                if (isset($data['choice_name']) && !empty($data['choice_name'])) {
+                    $choice = [
+                        'art_id' => $survey['art_id'],
+                        'website_id' => $data['website_id'],
+                        'survey_name' => $survey['survey_name'],
+                        'choice_name' => $data['choice_name'],
+                        'sur_id' => $survey['sur_id'],
+                        'is_other' => 1,
+                        'other_id' => $survey['id'],
+
+                    ];
+                    $result = ArticleSurvey::insertGetId($choice);
+                    if (empty($result)) {
+                        return Result::error("添加失败", 0);
+                    }
+                    return Result::success($result);
+                }
+            }
+            return Result::error("添加失败", 0);
+        }
+        return Result::error("添加失败", 0);
+    }
+    /**
+     * 前端-调查问卷投票
+     * @param array $data
+     * @return array
+     */
+    public function addWebsiteSurveyVote(array $data): array
+    {
+        // return Result::success($data);
+        if (isset($data['website_id']) && !empty($data['website_id'])) {
+            $website = Website::where('id', $data['website_id'])->first();
+            if (empty($website)) {
+                return Result::error("暂无此网站", 0);
+            }
+            if (isset($data['sur_id']) && !empty($data['sur_id'])) {
+                $is_survey = ArticleSurvey::where('sur_id', $data['sur_id'])->first();
+                // return Result::success($survey);
+                if (empty($is_survey)) {
+                    return Result::error("此调查问卷不存在", 0);
+                }
+                // return Result::success($survey);
+                // 调查问卷类型
+                if (isset($data['choice_id']) && !empty($data['choice_id'])) {
+                    //多选 若是json型则转化成数组类型
+                    if (strpos($data['choice_id'], '[') === 0) {
+                        $data['choice_id'] = json_decode($data['choice_id'], true);
+                    } else {
+                        // 单选  也转换成数组
+                        $data['choice_id'] = [$data['choice_id']];
+                    }
+                    $data['choice_id'] = array_map('intval', $data['choice_id']);
+                    $other = ArticleSurvey::whereIn('id', $data['choice_id'])
+                        // ->where('website_id',$data['website_id'])
+                        ->where('is_other', 1)
+                        ->where('other_id', 0)
+                        ->first();
+                    if (!empty($other)) {
+                        return Result::error("请选择已有的选项!", 0);
+                    }
+                    $choice['other'] = ArticleSurvey::whereIn('id', $data['choice_id'])
+                        // ->where('website_id',$data['website_id'])
+                        ->where('is_other', 1)
+                        ->where('other_id', '!=', 0)
+                        ->first();
+                    // return Result::success($choice['other']);
+                    $choice_id = $data['choice_id'];
+                    if (!empty($choice['other'])) {
+                        // array_push($data['choice_id'],$choice['other']['other_id']);
+                        if (!empty($choice_id)) {
+                            $key = array_search($choice['other']['id'], $choice_id);
+                            if ($key !== false) {
+                                unset($choice_id[$key]);
+                                $choice_id = array_values($choice_id);
+                            }
+                            array_push($choice_id, $choice['other']['other_id']);
+                        } else {
+                            $choice_id[0] = $choice['other']['other_id'];
+                        }
+                        array_push($data['choice_id'], $choice['other']['other_id']);
+                    }
+                    // return Result::success($data);
+                    $choice = ArticleSurvey::whereIn('id', $data['choice_id'])
+                        // ->where('website_id',$data['website_id'])
+                        ->increment('results', 1);
+                    if (empty($choice)) {
+                        return Result::error("请选择已有的选项!", 0);
+                    }
+                    $survey['data'] = ArticleSurvey::where('sur_id', $data['sur_id'])
+                        // ->where('website_id',$data['website_id'])
+                        ->where('other_id', 0)
+                        ->get();
+                    $survey['choice'] = $choice_id;
+                    return Result::success($survey);
+                }
+                return Result::error("参数必填!");
+            }
+            return Result::error("此调查问卷不存在", 0);
+        }
+        return Result::error("参数必填!");
     }
+    /**
+     * 后端-获取网站调查问卷列表
+     * @param array $data
+     * @return array
+     */
+    public function getSurveyList(array $data): array
+    {
+        $where = [];
+        if (isset($data['survey_name']) && !empty($data['survey_name'])) {
+            array_push($where, ['survey_name', 'like', '%' . $data['survey_name'] . '%']);
+        }
+        $survey_type = isset($data['survey_type']) && $data['survey_type'] !== '' ? $data['survey_type'] : null;
+        if (!empty($where)) {
+            // 修复:先关联 article 再按 survey_type 过滤,避免查不到数据
+            $query = ArticleSurvey::select(
+                'art_id as id',
+                Db::raw('MAX(id) as surid'),
+                Db::raw('MAX(survey_name) as survey_name'),
+                Db::raw('MAX(sur_id) as survey_id')
+            )
+                ->groupBy('art_id')
+                ->where($where)
+                ->when(!is_null($survey_type), function ($q) use ($survey_type) {
+                    $q->whereIn('art_id', function ($sub) use ($survey_type) {
+                        $sub->select('id')
+                            ->from('article')
+                            ->where('survey_type', $survey_type);
+                    });
+                })
+                ->with(['article' => function ($query) {
+                    $query->select('id', 'survey_type', 'created_at', 'updated_at', 'created_at');
+                }]);;
+        } else {
+            $query = ArticleSurvey::select(
+                'art_id as id',
+                Db::raw('MAX(id) as surid'),
+                Db::raw('MAX(survey_name) as survey_name'),
+                Db::raw('MAX(sur_id) as survey_id'),
+            )
+                ->groupBy('art_id')
+                ->when(!is_null($survey_type), function ($q) use ($survey_type) {
+                    $q->whereIn('art_id', function ($sub) use ($survey_type) {
+                        $sub->select('id')
+                            ->from('article')
+                            ->where('survey_type', $survey_type);
+                    });
+                })
+                ->with(['article' => function ($query) {
+                    $query->select('id', 'survey_type', 'created_at', 'updated_at', 'created_at');
+                }]);
+        }
+        $count = $query->get()->count();
 
+        // 简单写法:直接统计分组后的 art_id 数量
+        $survey = $query->orderBy('id', 'desc')
+            ->limit($data['pageSize'])
+            ->offset(($data['page'] - 1) * $data['pageSize'])
+            ->get();
+        if (empty($survey->toArray())) {
+            return Result::error("暂无调查问卷!", 0);
+        }
+        $survey = array_map(function ($item) {
+            if (isset($item['article'])) {
+                $item['survey_type'] = $item['article']['survey_type'];
+                $item['created_at'] = $item['article']['created_at'];
+                $item['updated_at'] = $item['article']['updated_at'];
+            } else {
+                // 处理article为null的情况,设置默认值
+                $item['survey_type'] = null;
+                $item['created_at'] = null;
+                $item['updated_at'] = null;
+            }
+            unset($item['article']);
+            return $item;
+        }, $survey->toArray());
+        $result = [
+            'rows' => $survey,
+            'count' => $count,
+        ];
+        return Result::success($result);
+    }
+    /**
+     * 后端-获取网站调查问卷详情
+     * @param array $data
+     * @return array
+     */
+    public function getSurveyInfo(array $data): array
+    {
+        if (isset($data['sur_id']) && !empty($data['sur_id'])) {
+            $where = ['sur_id' => $data['sur_id']];
+            $choose = ArticleSurvey::where($where)->where('is_other', 0)
+                ->leftJoin('article', 'article_survey.art_id', 'article.id')
+                ->select('article_survey.*', 'article.survey_type')
+                ->get()->all();
+            if (empty($choose)) {
+                return Result::error("此调查问卷不存在", 0);
+            }
+            $resultsArray = array_column($choose, 'results');
+            $total = array_sum($resultsArray);
+            $other = ArticleSurvey::where($where)->where('is_other', 1)->where('other_id', 0)->first();
+            $others = ArticleSurvey::where($where)->where('is_other', 1)->where('other_id', '!=', 0)->orderByDesc('created_at')->get()->all();
+            // $total = 0;
+            if (!empty($other)) {
+                $total = $total + $other['results'];
+                $other['choice_name'] = '(其他)';
+                if (!empty($others)) {
+                    $other['hasChildren'] = true;
+                    // array_push($other,['hasChildren','=',true]);
+                    $other['children'] = $others;
+                    $other_choices = [$other->toArray()];
+                    $mer_choice = array_merge($choose, $other_choices);
+                    $value_choice = array_values($mer_choice);
+                } else {
+                    // return Result::error('1111');
+                    $other_choices = [$other->toArray()];
+                    $other_choices = array_merge($choose, $other_choices);
+                    $value_choice = array_values($other_choices);
+                    // return Result::success($result);
+                }
+            } else {
+                $value_choice = $choose;
+            }
+            $result = [
+                'choose' => $value_choice,
+                'total' => $total,
+            ];
+        }
+        return Result::success($result);
+    }
 
     /**
+     * 前端-搜索新闻列表
      * @param array $data
      * @return array
      */
-    public function delArticle(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
+    public function selectWebsiteArticle(array $data): array
+    {
+        $website = Website::where('id', $data['website_id'])->first();
+        if (empty($website)) {
+            return Result::error("网站不存在", 0);
+        }
+        // $website_column = $website['column'];
+        if (!empty($website['website_column_arr_id']) && $website['website_column_arr_id'] != '[]') {
+            $website_column = json_decode($website['website_column_arr_id'], true);
+        }
+        $website_id = $data['website_id'];
+        $categorys = $this->processArticlePro($website_id);
+        $diff_pid_categoryIds = array_values($categorys['diff_pid_categoryIds']);
+
+        // return Result::success($diff_pid_categoryIds);
+        if (in_array(3, $website_column) && !empty($diff_pid_categoryIds)) {
+            return Result::error("此为核心站,有父级导航" . implode(',', $diff_pid_categoryIds) . "未选择而选择了此子级!", 0);
+        }
+        // return Result::success(reset($diff_pid_categoryIds) == 0);
+        // $cat_1st_arr = $categorys['cat_1st_arr'];
+        $catiall = $categorys['catiall'];
+        $categoryIds = $categorys['categoryIds'];
+        // return Result::success($categoryIds);
+        $query = Article::where('status', 1)
+            ->whereIn('catid', $categoryIds)
+            ->leftJoinSub(function ($query) use ($website_id) {
+                $query->from('article_ignore')
+                    ->where('website_id', $website_id);
+            }, 'article_ignore', function ($join) {
+                $join->on('article_ignore.article_id', '=', 'article.id');
+            })
+            ->where(function ($query) {
+                $query->whereNull('article_ignore.article_id')
+                    ->orWhere(function ($subQuery) {
+                        $subQuery->whereNotNull('article_ignore.article_id')
+                            ->where('article_ignore.is_ignore', 0)
+                            ->where(function ($subSubQuery) {
+                                $subSubQuery->where('article_ignore.c_show_time', '<=', date('Y-m-d H:i:s'))
+                                    ->orWhereNull('article_ignore.c_show_time');
+                            });
+                    });
+            });
+        // ->get()->all();
+        // return Result::success($query);
+        if (isset($data['cityid']) && !empty($data['cityid'])) {
+            $query->whereRaw("JSON_CONTAINS(article.city_arr_id, '" . intval($data['cityid']) . "')");
+        }
+        if (isset($data['department_id']) && !empty($data['department_id'])) {
+            $query->whereRaw("JSON_CONTAINS(article.department_arr_id, '" . intval($data['department_id']) . "')");
+        }
+        if (isset($data['keyword']) && !empty($data['keyword'])) {
+            $query->where('article.title', 'like', '%' . $data['keyword'] . '%');
+        }
+        // 计算总数
+        $count = $query->count();
+        // return Result::success($count);
+        // 分页查询
+        $articles = $query
+            ->select(
+                'article.id',
+                'article.title',
+                'article.imgurl',
+                'article.author',
+                'article.updated_at',
+                'article.introduce',
+                'article.islink',
+                'article.linkurl',
+                'article.copyfrom',
+                'article.cat_arr_id',
+                'article.catid',
+                'article.department_arr_id',
+                'article.city_arr_id',
+                // 'article_ignore.c_show_time',
+                // 'article_ignore.is_ignore'
+            )
+            ->orderBy("updated_at", "desc")
+            ->offset(($data['page'] - 1) * $data['pageSize'])
+            ->limit($data['pageSize'])
+            ->get();
+        //    return Result::success($articles);
+        foreach ($articles as $k => $v) {
+            $articles[$k]->category_name = $catiall[$v->catid]['alias'];
+            $articles[$k]->pinyin = $catiall[$v->catid]['pinyin'];
+        }
+        if (empty($articles)) {
+            return Result::error("没有符合条件的资讯数据");
+        }
+        $result = [
+            'rows' => $articles,
+            'count' => $count,
+        ];
+        return Result::success($result);
     }
 
+
     /**
+     * 模块新闻加强版 
      * @param array $data
      * @return array
      */
-    public function updateArticle(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
+    public function getWebsiteCatidArticle(array $data): array
+    {
+        $where = [
+            'website_category.category_id' => $data['catid'],
+            'website_category.website_id' => $data['website_id'],
+        ];
+        if (isset($data['child_catnum']) && !empty($data['child_catnum'])) {
+            $child_catnum = $data['child_catnum'] ?? 1;
+            $category['child'] = WebsiteCategory::where('pid', $data['catid'])->where('website_id', $data['website_id'])->select('category_id', 'alias')->limit($child_catnum)->get()->toArray();
+            $childCategoryIds = array_column($category['child'], 'category_id');
+            if (empty($childCategoryIds)) {
+                return Result::error("暂无子栏目", 0);
+            }
+            $imgArticles = [];
+            $textArticles = [];
+            if (isset($data['child_imgnum']) && !empty($data['child_imgnum']) && $data['child_imgnum'] != 0) {
+                // 初始化子分类图片新闻和文字新闻数组
+
+                // 查询所有子级栏目的图文新闻
+                $imgArticles = Article::where('catid', $childCategoryIds[0])
+                    ->where(function ($query) use ($data) {
+                        $query->where(function ($subQuery) use ($data) {
+                            $subQuery->whereRaw("JSON_CONTAINS(ignore_ids, '" . intval($data['website_id']) . "') = 0");
+                        })->orWhereNull("ignore_ids");
+                    })
+                    ->where('status', 1)
+                    ->where('imgurl', '!=', '')
+                    ->select('*')
+                    ->orderBy('updated_at', 'desc')
+                    ->limit($data['child_imgnum'])
+                    ->get();
+            }
+            if (isset($data['child_textnum']) && !empty($data['child_textnum']) && $data['child_textnum'] != 0) {
+                // 查询所有子级栏目的文字新闻
+                $textArticles = Article::where('catid', $childCategoryIds[0])
+                    ->where('status', 1)
+                    ->where(function ($query) use ($data) {
+                        $query->where(function ($subQuery) use ($data) {
+                            $subQuery->whereRaw("JSON_CONTAINS(ignore_ids, '" . intval($data['website_id']) . "') = 0");
+                        })->orWhereNull("ignore_ids");
+                    })
+                    ->select('*')
+                    ->orderBy('updated_at', 'desc')
+                    ->limit($data['child_textnum'])
+                    ->get();
+            }
+            // 遍历子分类,将图文新闻和文字新闻分别添加到子分类中
+            $category['child'] = array_map(function ($child) use ($imgArticles, $textArticles) {
+                $child['img'] = $imgArticles ? $imgArticles->where('catid', $child['category_id']) : [];
+                $child['text'] = $textArticles ? $textArticles->where('catid', $child['category_id']) : [];
+                return $child;
+            }, $category['child']);
+        }
+        // }
+        if (isset($data['img_num']) && !empty($data['img_num'])) {
+            $category['img'] = WebsiteCategory::where($where)
+                ->leftJoin('article', 'article.catid', 'website_category.category_id')
+                ->where('article.status', 1)
+                ->where('article.imgurl', '!=', '')
+                ->select('article.*', 'website_category.category_id', 'website_category.alias')
+                ->orderBy('article.updated_at', 'desc')
+                ->limit($data['img_num'])
+                ->get();
+        }
+
+        if (isset($data['text_num']) && !empty($data['text_num'])) {
+            $category['text'] = WebsiteCategory::where($where)
+                ->leftJoin('article', 'article.catid', 'website_category.category_id')
+                ->where('article.status', 1)
+                ->select('article.*', 'website_category.category_id', 'website_category.alias')
+                ->orderBy('article.updated_at', 'desc')
+                ->limit($data['text_num'])
+                ->get();
+        }
+
+        // $category = $category->get();
+
+        if (empty($category)) {
+            return Result::error("查询失败", 0);
+        }
+        return Result::success($category);
     }
     /**
+     * 模块新闻加强plus版 
      * @param array $data
      * @return array
      */
-    public function getArticleInfo(array $data)
+    public function getWebsiteAllArticle(array $data): array
     {
-        return $this->__request(__FUNCTION__, $data);
+        // return Result::success($data);
+        $time1 = microtime(true);
+        $wetbsite_id = $data['website_id'] ?? 2;
+        $data = json_decode($data['id'], true);
+
+        $website = Website::where('id', $wetbsite_id)->first();
+        if (empty($website)) {
+            return Result::error("网站不存在", 0);
+        }
+        // return Result::success($website);
+        $website_column = $website['website_column_arr_id'] ?? '[]';
+
+        $website_column = json_decode($website_column, true);
+
+        $categorys = $this->processArticlePro($wetbsite_id);
+        $cat_1st_arr = $categorys['cat_1st_arr'];
+        $catiall = $categorys['catiall'];
+
+        // return Result::success($catiall);
+        $diff_pid_categoryIds = $categorys['diff_pid_categoryIds'];
+        if (in_array(3, $website_column) && !empty($diff_pid_categoryIds)) {
+            return Result::error("此为核心站,有父级导航" . implode(',', $diff_pid_categoryIds) . "未选择而选择了此子级!", 0);
+        }
+        $websiteInfoIndexed = $categorys['websiteInfoIndexed'];
+        // return Result::success($categorys);
+        $parent_category = array_column($data, 'parent');
+        $parent_cat = [];
+        $child_category = array_column($data, 'child');
+        if (!empty($parent_category)) {
+            foreach ($parent_category as $key => $value) {
+                $arr = array_map('intval', explode(',', $value));
+                $parent_cat[$key] = $arr[0] ?? 0;
+                $parent_category = $arr[0] ?? 0;
+                $article_imgnum = $arr[1] ?? 0;
+                $article_textnum = $arr[2] ?? 0;
+                if ($parent_category != 0) {
+                    $category_arr = array_merge([$parent_category], $cat_1st_arr[$parent_category] ?? [0]);
+                    // return Result::success($category_arr);
+                    if ($article_imgnum != 0) {
+                        $img_article = Article::whereIn('catid', $category_arr)
+                            ->where('status', 1)
+                            ->where('imgurl', '!=', '')
+                            ->leftJoinSub(function ($query) use ($wetbsite_id) {
+                                $query->from('article_ignore')
+                                    ->where('website_id', $wetbsite_id);
+                            }, 'article_ignore', function ($join) {
+                                $join->on('article_ignore.article_id', '=', 'article.id');
+                            })
+                            ->where(function ($query) {
+                                $query->whereNull('article_ignore.article_id')
+                                    ->orWhere(function ($subQuery) {
+                                        $subQuery->whereNotNull('article_ignore.article_id')
+                                            ->where('article_ignore.is_ignore', 0)
+                                            ->where(function ($subSubQuery) {
+                                                $subSubQuery->where('article_ignore.c_show_time', '<=', date('Y-m-d H:i:s'))
+                                                    ->orWhereNull('article_ignore.c_show_time');
+                                            });
+                                    });
+                            })
+                            ->select('article.id', 'article.title', 'article.imgurl', 'article.author', 'article.updated_at', 'article.introduce', 'article.islink', 'article.linkurl', 'article.copyfrom', 'article.cat_arr_id', 'article.catid')
+                            ->orderBy('updated_at', 'desc')
+                            ->limit($article_imgnum)
+                            ->get()->all();
+                        foreach ($img_article as $k => $v) {
+                            $img_article[$k]->category_name = $catiall[$v->catid]['alias'];
+                            $img_article[$k]->pinyin = $catiall[$v->catid]['pinyin'];
+                        }
+                    } else {
+                        $img_article = [];
+                    }
+                    if ($article_textnum != 0) {
+                        $text_article = Article::whereIn('catid', $category_arr)
+                            ->where('status', 1)
+                            ->leftJoinSub(function ($query) use ($wetbsite_id) {
+                                $query->from('article_ignore')
+                                    ->where('website_id', $wetbsite_id);
+                            }, 'article_ignore', function ($join) {
+                                $join->on('article_ignore.article_id', '=', 'article.id');
+                            })
+                            ->where(function ($query) {
+                                $query->whereNull('article_ignore.article_id')
+                                    ->orWhere(function ($subQuery) {
+                                        $subQuery->whereNotNull('article_ignore.article_id')
+                                            ->where('article_ignore.is_ignore', 0)
+                                            ->where(function ($subSubQuery) {
+                                                $subSubQuery->where('article_ignore.c_show_time', '<=', date('Y-m-d H:i:s'))
+                                                    ->orWhereNull('article_ignore.c_show_time');
+                                            });
+                                    });
+                            })
+                            ->select('id', 'title', 'author', 'updated_at', 'introduce', 'islink', 'linkurl', 'copyfrom', 'cat_arr_id', 'catid')
+                            ->orderBy('updated_at', 'desc')
+                            ->limit($article_textnum)
+                            ->get()->all();
+                        foreach ($text_article as $k => $v) {
+                            $text_article[$k]->category_name = $catiall[$v->catid]['alias'];
+                            $text_article[$k]->pinyin = $catiall[$v->catid]['pinyin'];
+                            // $text_article[$k]->alias = $catiall[$v->catid]['alias'];
+                        }
+                    } else {
+                        $text_article = [];
+                    }
+                    $catiall[$parent_category]['imgnum'] = $img_article;
+                    $catiall[$parent_category]['textnum'] = $text_article;
+                    $parent[$key] = $catiall[$parent_category];
+                } else {
+                    $parent[$key] = '';
+                }
+            }
+        }
+        if (!empty($child_category)) {
+            foreach ($child_category as $key => $value) {
+                $arr = array_map('intval', explode(',', $value));
+                $parent_category = $parent_cat[$key];
+                $child_category = $arr[0] ?? 0;
+                $article_imgnum = $arr[1] ?? 0;
+                $article_textnum = $arr[2] ?? 0;
+
+                if ($child_category != 0) {
+                    $all_childcat = $cat_1st_arr[$parent_category];
+                    $processedChildCat = array_map(function ($v) use ($websiteInfoIndexed) {
+                        // 从 $websiteInfoIndexed 中获取对应的数据
+                        $info = $websiteInfoIndexed[$v];
+                        // 返回一个包含所需信息的数组
+                        return [
+                            'alias' => $info->alias,
+                            'category_id' => $info->category_id,
+                            'aLIas_pinyin' => $info->aLIas_pinyin,
+                            'pid' => $info->pid,
+                            'type' => $info->type,
+                            'cat_arr_id' => $info->category_arr_id ?? ['出错'],
+                            'pinyin' => $info->pinyin,
+                        ];
+                    }, $all_childcat);
+                    if ($article_imgnum != 0) {
+                        $img_article = Article::where('catid', $child_category)
+                            ->where('status', 1)
+                            ->where('imgurl', '!=', '')
+                            ->leftJoinSub(function ($query) use ($wetbsite_id) {
+                                $query->from('article_ignore')
+                                    ->where('website_id', $wetbsite_id);
+                            }, 'article_ignore', function ($join) {
+                                $join->on('article_ignore.article_id', '=', 'article.id');
+                            })
+                            ->where(function ($query) {
+                                $query->whereNull('article_ignore.article_id')
+                                    ->orWhere(function ($subQuery) {
+                                        $subQuery->whereNotNull('article_ignore.article_id')
+                                            ->where('article_ignore.is_ignore', 0)
+                                            ->where(function ($subSubQuery) {
+                                                $subSubQuery->where('article_ignore.c_show_time', '<=', date('Y-m-d H:i:s'))
+                                                    ->orWhereNull('article_ignore.c_show_time');
+                                            });
+                                    });
+                            })
+                            ->select('id', 'title', 'imgurl', 'author', 'updated_at', 'introduce', 'islink', 'linkurl', 'copyfrom', 'cat_arr_id', 'catid')
+                            ->orderBy('updated_at', 'desc')
+                            ->limit($article_imgnum)
+                            ->get()->all();
+                        foreach ($img_article as $k => $v) {
+                            // var_dump($v);
+                            // var_dump($k);
+                            $img_article[$k]->category_name = $catiall[$v->catid]['alias'];
+                            $img_article[$k]->pinyin = $catiall[$v->catid]['pinyin'];
+                        }
+                    } else {
+                        $img_article = [];
+                    }
+                    if ($article_textnum != 0) {
+                        $text_article = Article::where('catid', $child_category)
+                            ->where('status', 1)
+                            ->leftJoinSub(function ($query) use ($wetbsite_id) {
+                                $query->from('article_ignore')
+                                    ->where('website_id', $wetbsite_id);
+                            }, 'article_ignore', function ($join) {
+                                $join->on('article_ignore.article_id', '=', 'article.id');
+                            })
+                            ->where(function ($query) {
+                                $query->whereNull('article_ignore.article_id')
+                                    ->orWhere(function ($subQuery) {
+                                        $subQuery->whereNotNull('article_ignore.article_id')
+                                            ->where('article_ignore.is_ignore', 0)
+                                            ->where(function ($subSubQuery) {
+                                                $subSubQuery->where('article_ignore.c_show_time', '<=', date('Y-m-d H:i:s'))
+                                                    ->orWhereNull('article_ignore.c_show_time');
+                                            });
+                                    });
+                            })
+                            ->select('id', 'title', 'author', 'updated_at', 'introduce', 'islink', 'linkurl', 'copyfrom', 'cat_arr_id', 'catid')
+                            ->orderBy('updated_at', 'desc')
+                            ->limit($article_textnum)
+                            ->get()->all();
+                        foreach ($text_article as $k => $v) {
+                            // var_dump($v);
+                            // var_dump($k);
+                            $text_article[$k]->category_name = $catiall[$v->catid]['alias'];
+                            // $text_article[$k]->pinyin = $catiall[$v->catid]['pinyin'];
+                            $text_article[$k]->pinyin = $catiall[$v->catid]['pinyin'];
+                        }
+                    } else {
+                        $text_article = [];
+                    }
+                    $catiall[$child_category]['all_childcat'] = $processedChildCat;
+                    $catiall[$child_category]['imgnum'] = $img_article;
+                    $catiall[$child_category]['textnum'] = $text_article;
+                    $child[$key] = $catiall[$child_category];
+                    // var_dump($pids);
+                } else {
+                    $child[$key] = '';
+                }
+            }
+        }
+        foreach ($parent as $key => $value) {
+            $result[$key] = $value;
+            if (!empty($child[$key])) {
+                // var_dump($child[$key]);
+
+                $result[$key]['child'] = $child[$key];
+                // $value[$key]['child'] = $child[$key];
+            } else {
+                $result[$key]['child'] = [
+                    "alias" => null,
+                    "category_id" => null,
+                    "type" => null,
+                    "pinyin" => null,
+                    "all_childcat" => [],
+                    "imgnum" => [],
+                    "textnum" => []
+                ];
+            }
+        }
+        return Result::success($result);
     }
+
     /**
+     * 辅助方法:获取文章列表
+     */
+    private function fetchArticles($catId, $website, $limit, $isImageArticle = false)
+    {
+        sleep(1);
+        $query = Article::where('article.status', 1)
+            // 使用更高效的查询方式,避免使用 JSON_CONTAINS 函数,如果可能的话,将 cat_arr_id 拆分为单独的字段
+            ->whereRaw("(FIND_IN_SET('$catId', REPLACE(REPLACE(cat_arr_id, '[', ''), ']', '')))")
+            ->where(function ($query) use ($website) {
+                $query->whereRaw("(JSON_CONTAINS(ignore_ids, '" . intval($website['website_id']) . "') = 0 OR ignore_ids IS NULL)");
+            })
+            ->leftJoin('website_category', function ($join) use ($website) {
+                $join->on('article.catid', '=', 'website_category.category_id')
+                    ->where('website_category.website_id', '=', $website['website_id']);
+            })
+            ->select(
+                'article.id',
+                'article.title',
+                'article.imgurl',
+                'article.author',
+                'article.updated_at',
+                'article.introduce',
+                'article.islink',
+                'article.linkurl',
+                'article.copyfrom',
+                'article.cat_arr_id',
+                'article.catid',
+                'website_category.alias as category_name'
+            )
+            ->orderBy('updated_at', 'desc')
+            ->limit($limit);
+
+        // 如果是图片文章,添加图片URL条件
+        if ($isImageArticle) {
+            $query->where('imgurl', '!=', '');
+        } else {
+            // 文字文章不需要imgurl字段
+            $query->addSelect('article.introduce');
+        }
+
+        $articles = $query->get();
+
+        return !empty($articles) ? $this->processArticles($articles, $website) : [];
+    }
+    /**
+     * 乡村网-获取特殊新闻模块
      * @param array $data
-     * @return array|mixed
+     * @return array
      */
-    public function getCategoryInfo(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
+    public function getWebsiteArticles(array $data): array
+    {
+        $website_id = $data['website_id'];
+        $website = Website::where('id', $website_id)->first();
+        if (empty($website)) {
+            return Result::error("网站不存在", 0);
+        }
+        // return Result::success($website);
+        $website_column = $website['website_column_arr_id'] ?? '[]';
+        $website_column = json_decode($website_column, true);
+        $catids = json_decode($data['id'], true);
+        $parent_category = array_column($catids, 'parent');
+
+        if (!empty($parent_category) && is_array($parent_category)) {
+            $categorys = $this->processArticlePro($website_id);
+            $diff_pid_categoryIds = $categorys['diff_pid_categoryIds'];
+            if (in_array(3, $website_column) && !empty($diff_pid_categoryIds)) {
+                return Result::error("此为核心站,有父级导航" . implode(',', $diff_pid_categoryIds) . "未选择而选择了此子级!", 0);
+            }
+            $catiall = $categorys['catiall'];
+            $cat_1st_arr = $categorys['cat_1st_arr'];
+            //  return Result::success($categorys);
+            foreach ($parent_category as $key => $value) {
+                $arr = array_map('intval', explode(',', $value));
+                $parent_category = $arr[0] ?? 0;
+                $article_imgnum = $arr[1] ?? 0;
+                $article_textnum = $arr[2] ?? 0;
+                if ($parent_category != 0) {
+                    $category_arr = array_merge([$parent_category], $cat_1st_arr[$parent_category] ?? [0]);
+                    // return Result::success($category_arr);
+                    if ($article_imgnum != 0) {
+                        $img_article = Article::whereIn('article.catid', $category_arr)
+                            ->where('article.status', 1)
+                            ->where('article.imgurl', '!=', '')
+                            ->leftJoinSub(function ($query) use ($website_id) {
+                                $query->from('article_ignore')
+                                    ->where('website_id', $website_id);
+                            }, 'article_ignore', function ($join) {
+                                $join->on('article_ignore.article_id', '=', 'article.id');
+                            })
+                            ->where(function ($query) {
+                                $query->whereNull('article_ignore.article_id')
+                                    ->orWhere(function ($subQuery) {
+                                        $subQuery->whereNotNull('article_ignore.article_id')
+                                            ->where('article_ignore.is_ignore', 0)
+                                            ->where(function ($subSubQuery) {
+                                                $subSubQuery->where('article_ignore.c_show_time', '<=', date('Y-m-d H:i:s'))
+                                                    ->orWhereNull('article_ignore.c_show_time');
+                                            });
+                                    });
+                            })
+                            ->select(
+                                'article.id',
+                                'article.title',
+                                'article.imgurl',
+                                'article.author',
+                                'article.updated_at',
+                                'article.introduce',
+                                'article.islink',
+                                'article.linkurl',
+                                'article.copyfrom',
+                                'article.cat_arr_id',
+                                'article.catid as category_id'
+                            )
+                            ->orderBy('updated_at', 'desc')
+                            ->limit($article_imgnum)
+                            ->get()->all();
+
+                        foreach ($img_article as $k => $v) {
+                            $img_article[$k]->alias = $catiall[$v->category_id]['alias'];
+                            // return Result::success($v);
+
+                            $img_article[$k]->aLIas_pinyin = $catiall[$v->category_id]['pinyin'];
+                        }
+                    } else {
+                        $img_article = [];
+                    }
+                    if ($article_textnum != 0) {
+                        $text_article = Article::whereIn('article.catid', $category_arr)
+                            ->where('article.status', 1)
+                            ->leftJoinSub(function ($query) use ($website_id) {
+                                $query->from('article_ignore')
+                                    ->where('website_id', $website_id);
+                            }, 'article_ignore', function ($join) {
+                                $join->on('article_ignore.article_id', '=', 'article.id');
+                            })
+                            ->where(function ($query) {
+                                $query->whereNull('article_ignore.article_id')
+                                    ->orWhere(function ($subQuery) {
+                                        $subQuery->whereNotNull('article_ignore.article_id')
+                                            ->where('article_ignore.is_ignore', 0)
+                                            ->where(function ($subSubQuery) {
+                                                $subSubQuery->where('article_ignore.c_show_time', '<=', date('Y-m-d H:i:s'))
+                                                    ->orWhereNull('article_ignore.c_show_time');
+                                            });
+                                    });
+                            })
+                            ->select(
+                                'article.id',
+                                'article.title',
+                                'article.author',
+                                'article.updated_at',
+                                'article.introduce',
+                                'article.islink',
+                                'article.linkurl',
+                                'article.copyfrom',
+                                'article.cat_arr_id',
+                                'article.catid as category_id'
+                            )
+                            ->orderBy('updated_at', 'desc')
+                            ->limit($article_textnum)
+                            ->get()->all();
+                        foreach ($text_article as $k => $v) {
+                            $text_article[$k]->alias = $catiall[$v->category_id]['alias'];
+                            $text_article[$k]->aLIas_pinyin = $catiall[$v->category_id]['pinyin'];
+                            // $text_article[$k]->alias = $catiall[$v->catid]['alias'];
+                        }
+                    } else {
+                        $text_article = [];
+                    }
+                    $catiall[$parent_category]['imgnum'] = $img_article ?? [];
+                    $catiall[$parent_category]['textnum'] = $text_article ?? [];
+                    $parent[$key] = $catiall[$parent_category];
+                } else {
+                    $parent[$key] = [];
+                }
+            }
+        }
+
+        return Result::success($parent);
     }
 
 
+    // 封装处理商品的路由问题
+    function processGoods($goods, $data)
+    {
+        return $goods->map(function ($good) use ($data) {
+            $catid = $good->catid ?? 0;
+            //     $pinyin = '';
+            $category = WebsiteCategory::where('category_id', $catid)->where('website_id', $data['website_id'])->first();
+            if (!empty($category->pid) && $category->pid != 0) {
+                $level = json_decode($category->category_arr_id, true);
+                $pinyin = WebsiteCategory::where('website_id', $data['website_id'])
+                    ->whereIn('category_id', $level)
+                    ->orderByRaw('FIELD(category_id, ' . implode(',', $level) . ')')
+                    ->get(['aLIas_pinyin'])
+                    ->pluck('aLIas_pinyin')
+                    ->implode('/');
+            } else {
+                $pinyin = $category->aLIas_pinyin ?? '';
+            }
+            if (isset($good->city_id) && !empty($good->city_id)) {
+                $city = District::where('id', $good->city_id)->first(['name']);
+                $good->city_name = $city->name ?? '';
+            }
+            // 解析imgurl JSON并取第一条数据
+            $imgUrls = json_decode($good->imgurl, true);
+            $good->imgurl = !empty($imgUrls) ? $imgUrls[0] : null;
+            $good->pinyin = $pinyin;
+            return $good;
+        });
+    }
     /**
-     * 更新资讯状态
+     * 获取商城首页-根据栏目id
+     * @param array $data
+     * @return array
+     *  */
+    function getWebsiteCatidshop(array $data): array
+    {
+        $input['catid'] = $data['catid'];
+        $input['website_id'] = $data['website_id'];
+        $data = json_decode($input['catid'] ?? '', true) ?? [];
+        $result = array_map(function ($item) use ($input) {
+            if (isset($item['catid']) && $item['catid'] != 'undefined' && $item['catid'] != "") {
+                list($catid, $goodStart, $goodNum) = explode(',', $item['catid']);
+                $category = WebsiteCategory::where('category_id', $catid)->where('website_id', $input['website_id'])->first(['type']);
+                // 类型:1资讯(默认)2商品3书刊音像4招聘5求职类型:1资讯(默认)2商品3书刊音像4招聘5求职6招工招聘
+                if (empty($category) || $category->type != 2) {
+                    return Result::error("暂无此栏目", 0);
+                } else {
+                    $website['website_id'] = $input['website_id'];
+                    $goods = Good::where('good.status', 2)
+                        ->where('good.website_id', $website['website_id'])
+                        ->whereRaw("JSON_CONTAINS(good.cat_arr_id, '" . intval($catid) . "') = 1")
+                        ->select(
+                            'good.id',
+                            'good.name',
+                            'good.imgurl',
+                            'good.description',
+                            'good.updated_at',
+                            'good.catid',
+                            'good.type_id',
+                            'good.price',
+                            'good.com',
+                            'good.level',
+                            'good.unit'
+                        )
+                        ->orderBy('updated_at', 'desc')
+                        ->offset($goodStart)
+                        ->limit($goodNum);
+                    $all_goods = $goods->get();
+                    $all_goods = $this->processGoods($all_goods, $website);
+                }
+
+                return $all_goods ?? [];
+            }
+        }, $data);
+        return Result::success($result);
+    }
+    /**
+     * 获取商品模块
+     * @param array $data
+     * @return array
+     *  */
+    public function getWebsiteshop(array $data): array
+    {
+        $input['id'] = $data['id'];
+        $input['website_id'] = $data['website_id'];
+        $catid = $data['catid'];
+        $data = json_decode($input['id'] ?? '', true) ?? [];
+        $result['goods'] = array_map(function ($item) use ($input) {
+            // 检查parent元素是否存在且不是undefined
+            if (isset($item['level']) && $item['level'] != 'undefined' && $item['level'] != "") {
+                list($Levelid, $goodStart, $goodNum) = explode(',', $item['level']);
+                $website = $input['website_id'];
+                $query = Good::where('good.status', 2)
+                    ->where('good.website_id', $website);
+                switch ($Levelid) {
+                    case 1:
+                    case 2:
+                    case 3:
+                        $goods = $query->where(function ($q) use ($Levelid) {
+                            $q->whereRaw("JSON_CONTAINS(good.level, '" . intval($Levelid) . "') = 1")
+                                ->orWhereRaw("JSON_CONTAINS(good.level, '\"" . intval($Levelid) . "\"') = 1");
+                        });
+                        break;
+                    case 4:
+                        $goods = $query;
+                        break;
+                    case 5:
+                        $goods = $query->where('type_id', 1);
+                        break;
+                    case 6:
+                        $goods = $query->where('type_id', 2);
+                        break;
+                    default:
+                        return [];
+                }
+                $all_goods = $goods
+                    ->select(
+                        'good.id',
+                        'good.name',
+                        'good.imgurl',
+                        'good.description',
+                        'good.updated_at',
+                        'good.catid',
+                        'good.type_id',
+                        'good.price',
+                        'good.level',
+                        'good.website_id'
+                    )
+                    ->orderBy('updated_at', 'desc')
+                    ->offset($goodStart)
+                    ->limit($goodNum)
+                    ->get();
+                $web['website_id'] = $website;
+                $all_goods = $this->processGoods($all_goods, $web);
+            }
+            return  $all_goods;
+        }, $data);
+        $website = $input['website_id'];
+        $result['article'] = Article::where(function ($query) use ($website) {
+            $query->where(function ($subQuery) use ($website) {
+                $subQuery->whereRaw("JSON_CONTAINS(ignore_ids, '" . intval($website) . "') = 0");
+            })->orWhereNull("ignore_ids");
+        })
+            ->where('catid', $catid)
+            ->where('article.status', 1)
+            ->leftJoin('article_data', 'article_data.article_id', 'article.id')
+            ->select('article.id', 'article.title', 'article.updated_at', 'introduce', 'islink', 'linkurl', 'article_data.content')
+            ->orderBy('article.updated_at', 'desc')
+            ->first();
+        return Result::success($result);
+    }
+    /**
+     * 获取商品分类
+     * @param array $data
+     * @return array
+     *  */
+    public function getWebsiteshopCat(array $data): array
+    {
+        $website = $data['website_id'];
+        $category = WebsiteCategory::where('website_id', $website)
+            ->whereRaw("JSON_CONTAINS(category_arr_id, '" . intval($data['id']) . "') = 1")
+            ->orWhereRaw("JSON_CONTAINS(category_arr_id, '\"" . intval($data['id']) . "\"') = 1")
+            ->select('category_id', 'alias', 'aLIas_pinyin', 'pid', 'category_arr_id', 'sort')
+            ->orderBy('sort')
+            ->get();
+        $cat =  $category->map(function ($item) use ($website) {
+            $cat_arr_id = json_decode($item->category_arr_id, true) ?? [];
+            $pid = $item->pid ?? 0;
+            if (!empty($cat_arr_id) && is_array($cat_arr_id) && $pid != 0) {
+                $pinyin = WebsiteCategory::whereIn('category_id', $cat_arr_id)
+                    ->where('website_id', $website)
+                    ->orderByRaw('FIELD(category_id, ' . implode(',', $cat_arr_id) . ')')
+                    ->get(['aLIas_pinyin'])
+                    ->pluck('aLIas_pinyin')
+                    ->implode('/');
+            } else {
+                $pinyin = $item->aLIas_pinyin ?? '';
+            }
+            $item->pinyin = $pinyin;
+        });
+        if (empty($category)) {
+            return Result::error("栏目查询失败", 0);
+        }
+        $cat_tree = Result::buildMenuTree($category);
+        $web['website_id'] = $website;
+        $goods = Good::where('website_id', $website)
+            ->where('status', 2)
+            ->select('good.id as good_id', 'name', 'imgurl', 'description', 'updated_at', 'catid', 'type_id', 'website_id')
+            ->latest('updated_at')
+            ->offset(($data['page'] - 1) * $data['pageSize'])
+            ->limit($data['pageSize'])
+            ->get();
+        if (!empty($goods)) {
+            if ($goods->count() > 1 && !empty($goods)) {
+                $goods = $this->processGoods($goods, $web);
+            }
+        } else {
+            $goods = [];
+        }
+
+        $result = [
+            'category' => $cat_tree,
+            'goods' => $goods,
+        ];
+        // $resul['goods'] = $goods;
+        if (empty($result)) {
+            return Result::error("查询失败", 0);
+        }
+        return Result::success($result);
+    }
+    /*
+     * 获取商品列表
      * @param array $data
-     * @return mixed
+     * @return array
+     *  */
+    public function getWebsiteshopList(array $data): array
+    {
+        // return Result::success($data);
+        $where = [
+            'status' => 2,
+            'website_id' => $data['website_id'],
+        ];
+        // if ((empty($data['catid']) || !isset($data['catid'])) && (empty($data['keyword']) || !isset($data['keyword'])) && (empty($data['city_id']) || !isset($data['city_id']))) {
+        //   return Result::error("查询失败", 0);
+        // }
+        if ((empty($data['catid']) || !isset($data['catid'])) && (!empty($data['city_id']) || isset($data['city_id']))) {
+            $category = WebsiteCategory::where('website_id', $data['website_id'])->where('pid', $data['id'])->orderBy('sort')->first(['category_id']);
+            $data['catid'] = $category->category_id ??  0;
+        }
+        if (isset($data['keyword']) && !empty($data['keyword'])) {
+            array_push($where, ['name', 'like', '%' . $data['keyword'] . '%']);
+        }
+        if (isset($data['type_id']) && !empty($data['type_id'])) {
+            array_push($where, ['type_id', $data['type_id']]);
+        }
+        $query = Good::where($where)
+            ->when(isset($data['catid']) && !empty($data['catid']), function ($query) use ($data) {
+                $query->where(function ($q) use ($data) {
+                    $q->WhereRaw("JSON_CONTAINS(good.cat_arr_id, '" . intval($data['catid']) . "') = 1")
+                        ->orWhereRaw("JSON_CONTAINS(good.cat_arr_id, '\"" . intval($data['catid']) . "\"') = 1");
+                });
+            })
+            ->when(isset($data['city_id']) && !empty($data['city_id']), function ($query) use ($data) {
+                $query->where(function ($q) use ($data) {
+                    $q->WhereRaw("JSON_CONTAINS(good.city_arr_id, '" . intval($data['city_id']) . "') = 1")
+                        ->orWhereRaw("JSON_CONTAINS(good.city_arr_id, '\"" . intval($data['city_id']) . "\"') = 1");
+                });
+            })
+            ->select(
+                'good.id',
+                'good.name',
+                'good.imgurl',
+                'good.description',
+                'good.updated_at',
+                'good.com',
+                'good.catid',
+                'good.type_id',
+                'good.website_id',
+                'good.cat_arr_id',
+                'good.created_at',
+                'good.city_id'
+            )
+            ->latest('updated_at');
+        if (isset($data['ismix']) && $data['ismix'] == 1) {
+            $result['count'] = $query->clone()->count();
+            $result['goods'] = $this->processGoods(
+                $query->clone()
+                    ->offset(($data['page'] - 1) * $data['pageSize'])
+                    ->limit($data['pageSize'])
+                    ->get(),
+                $data
+            );
+        } else {
+            $result['type1_count'] = $query->clone()->where('type_id', 1)->count();
+            // 获取 type_id 为 1 的数据
+            $result['type1'] = $this->processGoods(
+                $query->clone()
+                    ->where('type_id', 1)
+                    ->offset(($data['page'] - 1) * $data['pageSize'])
+                    ->limit($data['pageSize'])
+                    ->get(),
+                $data
+            );
+            $result['type2_count'] = $query->clone()->where('type_id', 2)->count();
+            // 获取 type_id 为 2 的数据
+            $result['type2'] = $this->processGoods(
+                $query->clone()
+                    ->where('type_id', 2)
+                    ->offset(($data['page'] - 1) * $data['pageSize'])
+                    ->limit($data['pageSize'])
+                    ->get(),
+                $data
+            );
+        }
+
+        if (empty($result)) {
+            return Result::error("查询失败", 0);
+        }
+
+        return Result::success($result);
+    }
+    /**
+     * 获取商品详情
+     * @param array $data
+     * @return array
+     *  */
+    public function getWebsiteshopInfo(array $data): array
+    {
+        $where = [
+            'good.status' => 2,
+            'good.website_id' => $data['website_id'],
+            'good.id' => $data['id'],
+        ];
+        $goods = Good::where($where)
+            ->where('good.id', $data['id'])
+            ->leftJoin('website_category', 'website_category.category_id', 'good.catid')
+            ->select('good.*', 'website_category.alias', 'website_category.category_id')
+            ->first();
+        if (empty($goods)) {
+            return Result::error("查询失败", 0);
+        }
+        $goods->imgurl = json_decode($goods->imgurl, true);
+        return Result::success($goods);
+    }
+    /**
+     * plus  pro  处理文章路由问题
      */
-    public function upArticleStatus(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
+    function processArticlePro($website_id)
+    {
+        // $categorys = WebsiteCategory::where('website_id', $website_id)->get()->all();
+        // // $websiteInfoIndexed = array_column($categorys, null, 'category_id');
+        // // 取出category_id 对应的aLIas_pinyin 
+        // $categoryIds = array_column($categorys, 'category_id');
+        // $categoryPIds = array_column($categorys, 'pid');
+        // $aliasPinyins = array_column($categorys, 'path');
+        // $alias = array_column($categorys, 'alias');
+        // $cat_arr = array_combine($categoryIds, $aliasPinyins);
+        // $cat_alias_arr = array_combine($categoryIds, $categoryPIds);
+        // // return Result::success($cat_arr);
+        // // $catiall = [];
+        // //一级所有子级的记录
+        // $cat_alias_arr = array_combine($categoryIds, $alias);
+        // return [
+        //     'cat_1st_arr' => $cat_alias_arr,
+        //     'catiall' => $cat_arr,
+        //     // 'websiteInfoIndexed' => $websiteInfoIndexed,
+        //     'categoryIds' => $categoryIds,
+        // ];
+        $categorys = WebsiteCategory::where('website_id', $website_id)->get()->all();
+        $websiteInfoIndexed = array_column($categorys, null, 'category_id');
+        // 取出category_id 对应的aLIas_pinyin 
+        $categoryIds = array_column($categorys, 'category_id');
+        $categoryPIds = array_values(array_unique(array_filter(array_column($categorys, 'pid'), function ($pid) {
+            return $pid != 0;
+        })));
+
+        $category_path = array_column($categorys, 'path');
+        $cat_arr = array_combine($categoryIds, $category_path);
+        // return Result::success(array_diff($categoryIds, $categoryPIds));
+        $catiall = [];
+        //一级所有子级的记录
+        $cat_1st_arr = [];
+        foreach ($categorys as $key => $value) {
+            // $category_arr_id = json_decode($value->category_arr_id);
+            // $pinyin_str = '';
+            // // 算出一级  并且算出子级
+            if ($value->pid != 0 && in_array($value->pid, $categoryIds)) {
+                $cat_1st_arr[$value->pid][] = $value->category_id;
+            }
+            // foreach ($category_arr_id as $k => $v) {
+            //     $pinyin_str .= $cat_arr[$v] . '/';
+            // }
+            // $pinyin_str = rtrim($pinyin_str, '/');
+            $catiall[$value->category_id]['alias'] = $value->alias;
+            $catiall[$value->category_id]['category_id'] = $value->category_id;
+            $catiall[$value->category_id]['type'] = $value->type;
+            $catiall[$value->category_id]['pinyin'] = $cat_arr[$value->category_id];
+            $websiteInfoIndexed[$value->category_id]->pinyin = $cat_arr[$value->category_id];
+        }
+        return [
+            'cat_1st_arr' => $cat_1st_arr,
+            'catiall' => $catiall,
+            'websiteInfoIndexed' => $websiteInfoIndexed,
+            'categoryIds' => $categoryIds,
+            'diff_pid_categoryIds' => array_diff($categoryPIds, $categoryIds),
+            'categoryPIds' => $categoryPIds,
+        ];
+    }
+    /**
+     * 封装处理文章的路由问题
+     *  */
+    function processArticles($articles, $data)
+    {
+        // 检查 $articles 是否为数组或可迭代对象
+        if (is_array($articles) || is_iterable($articles) && !empty($articles)) {
+            return $articles->map(function ($article) use ($data) {
+                if (isset($article->cat_arr_id) && !empty($article->cat_arr_id)) {
+                    $catid = $article->cat_arr_id ?? '';
+                }
+                if (isset($article->category_arr_id) && !empty($article->category_arr_id)) {
+                    $catid = $article->category_arr_id ?? '';
+                }
+                // $catid = $article->cat_arr_id ||  $article->category_arr_id ?? '';
+                $level = json_decode($catid, true);
+                if (!is_array($level)) {
+                    return $article;
+                } else {
+                    $level = array_map('intval', $level);
+                }
+                $pinyin = WebsiteCategory::whereIn('category_id', $level)
+                    ->where($data)
+                    ->orderByRaw('FIELD(category_id, ' . implode(',', $level) . ')')
+                    ->pluck('aLIas_pinyin')
+                    ->implode('/');
+                $article->pinyin = $pinyin ?? '';
+                return $article;
+            });
+        } else {
+            // 若 $articles 不是数组或可迭代对象,直接处理单条数据
+            $catid = $articles->cat_arr_id ?? '';
+            $level = json_decode($catid, true);
+            if (!is_array($level)) {
+                return $articles;
+            } else {
+                $level = array_map('intval', $level);
+            }
+            $pinyin = WebsiteCategory::whereIn('category_id', $level)
+                ->where($data)
+                ->orderByRaw('FIELD(category_id, ' . implode(',', $level) . ')')
+                ->pluck('aLIas_pinyin')
+                ->implode('/');
+            $articles->pinyin = $pinyin ?? '';
+            return $articles;
+        }
+    }
+    // 封装处理由问题
+    function processJob($job, $data)
+    {
+        return $job->map(function ($job) use ($data) {
+            $category = $job->cat_arr_id ?? '';
+            $cityid = $job->city_arr_id ?? '';
+            $city = json_decode($cityid, true);
+            $pinyin = '';
+            $level = json_decode($category, true);
+            // 路由
+            if (!empty($level) && is_array($level)) {
+                $pinyin = WebsiteCategory::whereIn('category_id', $level)
+                    ->where('website_id', $data['website_id']) // 添加网站ID条件 
+                    ->orderByRaw('FIELD(category_id, ' . implode(',', $level) . ')')
+                    ->get(['aLIas_pinyin'])
+                    ->pluck('aLIas_pinyin')
+                    ->implode('/');
+                if (empty($pinyin)) {
+                    $pinyin = $pinyin->aLIas_pinyin ?? '';
+                }
+                $job->pinyin = $pinyin;
+            }
+            // 取职位-城市  市??省
+            if (!empty($city) && is_array($city)) {
+                if (isset($city[1]) && !empty($city[1])) {
+                    $city = District::where('id', $city[1])->first(['name']);
+                    $job->city_name = $city->name ?? '';
+                } else if (isset($city[0]) && !empty($city[0])) {
+                    $city = District::where('id', $city[0])->first(['name']);
+                    $job->city_name = $city->name ?? '';
+                } else {
+                    $job->city_name = '全国';
+                }
+            }
+            // 获取简历最后一级地区
+            if (isset($job->city_id) && !empty($job->city_id)) {
+                $city = District::where('id', $job->city_id)->first(['name']);
+                $job->hunt_cityname = $city->name ?? '';
+            }
+            // 组合详细地址
+            if (isset($job->address_arr_id) && !empty($job->address_arr_id)) {
+                $address_id = json_decode($job->address_arr_id, true) ?? [];
+                if (is_array($address_id) && !empty($address_id)) {
+                    $address = District::whereIn('id', $address_id)
+                        ->orderBy('level', 'asc')
+                        ->get(['name'])
+                        ->pluck('name')
+                        ->implode('');
+                    // $job->address_name = $address ?? '';
+                    $job->address_name = ($address ?? '') . ($job->address ?? '');
+                }
+            }
+            // 取行业
+            if (!empty($job->hy_id) || !empty($job->industry) || !empty($job->company_hy_id || !empty($job->job_industry))) {
+                $hy_name = JobIndustry::when($job, function ($query) use ($job) {
+                    if (!empty($job->industry)) {
+                        $query->where('hyid', $job->industry);
+                    } else if (!empty($job->hy_id)) {
+                        $query->where('hyid', $job->hy_id);
+                    } else if (!empty($job->company_hy_id)) {
+                        $query->where('hyid', $job->company_hy_id);
+                    } else {
+                        $query->where('hyid', $job->job_industry);
+                    }
+                })->first(['hyname']);
+                $job->hy_name = $hy_name->hyname ?? '';
+            }
+            // 取职位类别
+            if ((isset($job->zw_id) && !empty($job->zw_id)) || (isset($job->job) && !empty($job->job)) || (isset($job->job_typename) && !empty($job->job_typename))) {
+                $zwid = $job->job ?? $job->zw_id ?? $job->job_typename;
+                $zw_name = JobPosition::where('zwid', $zwid)->first(['zwname']);
+                $job->zw_name = $zw_name->zwname ?? '';
+            }
+            // 取具体职位
+            if ((isset($job->jtzw_id) && !empty($job->jtzw_id)) || (isset($job->job_name_get) && !empty($job->job_name_get)) || (isset($job->job_name) && !empty($job->job_name))) {
+                $jtzwid = $job->job_name_get ?? $job->jtzw_id ?? $job->job_name;
+                $jtzw_name = JobPosition::where('zwid', $jtzwid)->first(['zwname']);
+                $job->jtzw_name = $jtzw_name->zwname ?? '';
+            }
+            // 取工作经验
+            if (isset($job->experience) && !empty($job->experience)) {
+                $experience = JobEnum::where('egroup', 'years')->where('evalue', $job->experience)->first(['ename']);
+                $job->experience_name = $experience->ename ?? '';
+            }
+            // 取学历
+            if (isset($job->educational) && !empty($job->educational) || isset($job->school_education) && !empty($job->school_education)) {
+                $education = $job->educational ?? $job->school_education;
+                $education = JobEnum::where('egroup', 'education')->where('evalue', $education)->first(['ename']);
+                $job->education_name = $education->ename ?? '';
+            }
+            // 语言
+            if (isset($job->language) && !empty($job->language)) {
+                $language = JobEnum::where('egroup', 'language')->where('evalue', $job->language)->first(['ename']);
+                $job->language_name = $language->ename ?? '';
+            }
+            // 薪资
+            if (isset($job->salary) && !empty($job->salary)) {
+                $salary = JobEnum::where('egroup', 'income')->where('evalue', $job->salary)->first(['ename']);
+                $job->salary_name = $salary->ename ?? '';
+            }
+            // 职位性质
+            if (isset($job->nature_id) && !empty($job->nature_id)) {
+                $job_nature = JobEnum::where('egroup', 'nature')->where('evalue', $job->nature_id)->first(['ename']);
+                $job->job_nature_name = $job_nature->ename ?? '';
+            }
+            // 公司规模
+            if (isset($job->company_size) && !empty($job->company_size)) {
+                $company_size = JobEnum::where('egroup', 'cosize')->where('evalue', $job->company_size)->first(['ename']);
+                $job->company_size_name = $company_size->ename ?? '';
+            }
+            // 公司性质
+            if (isset($job->company_nature) && !empty($job->company_nature)) {
+                $company_nature = JobNature::where('id', $job->company_nature)->first(['nature_name']);
+                $job->company_nature_name = $company_nature->nature_name ?? '';
+            }
+            // $job->pinyin = $pinyin;
+            return $job;
+        });
+    }
+    /**
+     * 获取书籍模块
+     * @param array $data
+     * @return array
+     *  */
+    public function getWebsiteBook(array $data): array
+    {
+        $input['id'] = $data['id'];
+        $input['website_id'] = $data['website_id'];
+        // 将 JSON 字符串转换为 PHP 数组
+        $data = json_decode($input['id'], true);
+        // 使用 array_map 处理每个元素
+        $result = array_map(function ($item) use ($input) {
+            // 检查parent元素是否存在且不是undefined
+            if (isset($item['parent']) && $item['parent'] != 'undefined' && $item['parent'] != "") {
+                list($parentCatId, $parentImgNum, $parentTextNum) = explode(',', $item['parent']);
+                $website = [
+                    'website_id' => $input['website_id'],
+                ];
+                // 查询栏目名称
+                $category = WebsiteCategory::where('category_id', $parentCatId)->where($website)->first(['alias', 'category_id', 'aLIas_pinyin']);
+                if (empty($category)) {
+                    $parent_alias = '';
+                    $parent_pinyin = null;
+                    $imgBooks = [];
+                    $textBooks = [];
+                } else {
+                    $parent_alias = $category->alias ?? '';
+                    $parent_pinyin = $category->aLIas_pinyin ? $category->aLIas_pinyin : null;
+                    // 查找子分类ID数组
+                    $childCategoryIds = WebsiteCategory::where('pid', $parentCatId)->where($website)->pluck('category_id')->toArray();
+                    array_push($childCategoryIds, $parentCatId);
+                    $childCategoryIds = json_encode(array_values(array_unique($childCategoryIds)));
+                    if ($parentImgNum != 0) {
+                        // 查询图片新闻
+                        $imgBooks = Book::where(function ($query) use ($parentCatId) {
+                            $query->whereRaw("JSON_CONTAINS(cat_arr_id, '\"$parentCatId\"')")
+                                ->orWhereRaw("JSON_CONTAINS(cat_arr_id, '$parentCatId')");
+                        })
+                            ->where('book.status', 2)
+                            ->where('book.img_url', '!=', '')
+                            ->where('book.website_id', $website['website_id'])
+                            ->leftJoin('website_category', function ($join) use ($website) {
+                                $join->on('book.cat_id', '=', 'website_category.category_id')
+                                    ->where('website_category.website_id', '=', $website['website_id']);
+                            })
+                            ->select(
+                                'book.id',
+                                'book.title',
+                                'book.img_url',
+                                'book.price',
+                                'book.market_price',
+                                'book.description',
+                                'book.cat_id',
+                                'book.description',
+                                'book.updated_at',
+                                'website_category.alias as category_name',
+                                DB::raw("CASE WHEN book.cat_id = $parentCatId THEN '$parent_pinyin' 
+                                        ELSE CONCAT('$parent_pinyin', '/', website_category.aLIas_pinyin) END as pinyin")
+                            )
+                            ->orderBy('updated_at', 'desc')
+                            ->limit($parentImgNum)
+                            ->get()->all();
+                        // 查询文字新闻
+                    }
+                    if ($parentTextNum != 0) {
+                        $textBooks = [];
+                        $textBooks = Book::where(function ($query) use ($parentCatId) {
+                            $query->whereRaw("JSON_CONTAINS(cat_arr_id, '\"$parentCatId\"')")
+                                ->orWhereRaw("JSON_CONTAINS(cat_arr_id, '$parentCatId')");
+                        })
+                            ->where('book.status', 2)
+                            ->where('book.website_id', $website['website_id'])
+                            ->leftJoin('website_category', function ($join) use ($website) {
+                                $join->on('book.cat_id', '=', 'website_category.category_id')
+                                    ->where('website_category.website_id', '=', $website['website_id']);
+                            })
+                            ->select(
+                                'book.id',
+                                'book.title',
+                                'book.img_url',
+                                'book.price',
+                                'book.market_price',
+                                'book.description',
+                                'book.cat_id',
+                                'book.description',
+                                'book.updated_at',
+                                'website_category.alias as category_name',
+                                DB::raw("CASE WHEN book.cat_id = $parentCatId THEN '$parent_pinyin' 
+                                        ELSE CONCAT('$parent_pinyin', '/', website_category.aLIas_pinyin) END as pinyin")
+                            )
+                            ->orderBy('updated_at', 'desc')
+                            ->limit($parentTextNum)
+                            ->get()->all();
+                    }
+                }
+            }
+            $resultItem = [
+                'alias' => $parent_alias ?? '',
+                'category_id' => $parentCatId ?? 0,
+                'pinyin' => $parent_pinyin ?? null,
+                'imgnum' => $imgBooks ?? [],
+                'textnum' => $textBooks ?? [],
+            ];
+            if (isset($item['child']) && $item['child'] != 'undefined' && $item['child'] != "") {
+                $parent_pinyin_str = is_string($parent_pinyin) ? $parent_pinyin . '/' : '';
+                $childCategory = WebsiteCategory::where('pid', $parentCatId)->where($website)
+                    ->selectRaw("category_id, alias, CONCAT( ?, aLIas_pinyin) as aLIas_pinyin", [$parent_pinyin_str])
+                    ->get()->all();
+                if (!empty($childCategory)) {
+                    list($childCatId, $childImgNum, $childTextNum) = explode(',', $item['child']);
+                    // 查询子栏目名称
+                    $childCategoryInfo = WebsiteCategory::where('category_id', $childCatId)->where($website)
+                        ->selectRaw("category_id, alias, CONCAT( ?, aLIas_pinyin) as aLIas_pinyin", [$parent_pinyin_str])
+                        ->first();
+                    if (empty($childCategoryInfo) || ($childImgNum == 0 && $childTextNum == 0)) {
+                        $childImgArticles = [];
+                        $childTextArticles = [];
+                        $resultItem['child'] = [];
+                    } else {
+                        $child_pinyin = $childCategoryInfo->aLIas_pinyin ? $childCategoryInfo->aLIas_pinyin : null;
+                        // 查询子栏目图片新闻
+                        $childImgArticles = Book::where('cat_id', $childCatId)
+                            ->where('status', 2)
+                            ->where('img_url', '!=', '')
+                            ->where('book.website_id', $website['website_id'])
+                            ->leftJoin('website_category', function ($join) use ($website) {
+                                $join->on('book.cat_id', '=', 'website_category.category_id')
+                                    ->where('website_category.website_id', '=', $website['website_id']);
+                            })
+                            ->select(
+                                'book.id',
+                                'book.title',
+                                'book.img_url',
+                                'book.price',
+                                'book.market_price',
+                                'book.description',
+                                'book.cat_id',
+                                'book.description',
+                                'book.updated_at',
+                                DB::raw("'$child_pinyin' as pinyin")
+                            )
+                            ->orderBy('updated_at', 'desc')
+                            ->limit($childImgNum)
+                            ->get()->all();
+                        // 查询子栏目文字新闻
+                        $childTextArticles = Book::where('cat_id', $childCatId)
+                            ->where('status', 2)
+                            ->where('book.website_id', $website['website_id'])
+                            ->leftJoin('website_category', function ($join) use ($website) {
+                                $join->on('book.cat_id', '=', 'website_category.category_id')
+                                    ->where('website_category.website_id', '=', $website['website_id']);
+                            })
+                            ->select(
+                                'book.id',
+                                'book.title',
+                                'book.img_url',
+                                'book.price',
+                                'book.market_price',
+                                'book.description',
+                                'book.cat_id',
+                                'book.description',
+                                'book.updated_at',
+                                DB::raw("'$child_pinyin' as pinyin")
+                            )
+                            ->orderBy('updated_at', 'desc')
+                            ->limit($childTextNum)
+                            ->get()->all();
+                        $resultItem['child'] = [
+                            'alias' => $childCategoryInfo ? $childCategoryInfo->alias : null,
+                            'category_id' => $childCatId,
+                            'pinyin' => $childCategoryInfo->aLIas_pinyin ?? '',
+                            'all_childcat' => $childCategory,
+                            'imgnum' => $childImgArticles,
+                            'textnum' => $childTextArticles,
+                        ];
+                    }
+                }
+            } else {
+                $resultItem['child'] = [];
+            }
+            return $resultItem;
+        }, $data);
+        return Result::success($result);
+    }
+    /**
+     * 获取书刊列表
+     * @param array $data
+     * @return array
+     *  */
+    public function getWebsiteBookList(array $data): array
+    {
+        $web = Website::where('id', $data['website_id'])->first(['id', 'website_name']);
+        if (empty($web)) {
+            return Result::error("查询失败", 0);
+        }
+        $catid = $data['id'];
+        $category = WebsiteCategory::where('website_id', $data['website_id'])->where('category_id', $catid)->orderBy('sort')->first(['pid', 'category_id', 'aLias_pinyin']);
+        $parent_categpory = WebsiteCategory::where('website_id', $data['website_id'])->where('category_id', $category['pid'])->orderBy('sort')->first(['aLias_pinyin']);
+        $parent_pinyin = $parent_categpory ? $parent_categpory->aLias_pinyin ?? '' : '';
+        $category_pinyin = $category ? $category->aLias_pinyin : '';
+        $pinyin = $category_pinyin ? $parent_pinyin . '/' . $category_pinyin ?? '' : '';
+        $categorys = WebsiteCategory::where('website_id', $data['website_id'])
+            ->where('pid', $category['pid'])
+            ->select(
+                'category_id',
+                'alias',
+                'aLIas_pinyin',
+                'pid',
+                'sort',
+                'is_url',
+                'web_url',
+                'seo_title',
+                'seo_keywords',
+                'seo_description',
+                DB::raw("CONCAT('$parent_pinyin', '/', aLIas_pinyin) as pinyin")
+            )
+            ->orderBy('sort')
+            ->get()->all();
+        if (empty($category)) {
+            return Result::error("查询失败", 0);
+        }
+        $query = Book::where('book.status', 2)
+            ->where('book.website_id', $data['website_id'])
+            ->where('book.cat_id', $catid)
+            ->select(
+                'book.id',
+                'book.title',
+                'book.img_url',
+                'book.description',
+                'book.updated_at',
+                'book.cat_id',
+                DB::raw("'$pinyin' as pinyin")
+            )
+            ->orderBy('book.updated_at', 'desc');
+        $count = $query->count();
+        $query = clone $query;
+        $Book = $query
+            ->limit($data['pageSize'])
+            ->offset(($data['page'] - 1) * $data['pageSize'])
+            ->get()->all();
+
+        $result = [
+            'category' => $categorys,
+            'books' => $Book,
+            'count' => $count,
+        ];
+        // if(empty($result)){
+        //     return Result::error("查询失败", 0);
+        // }
+        return Result::success($result);
+    }
+    /**
+     * 获取书刊详情
+     * @param array $data
+     * @return array
+     *  */
+    public function getWebsiteBookInfo(array $data): array
+    {
+        $web = Website::where('id', $data['website_id'])->first(['id', 'website_name']);
+        if (empty($web)) {
+            return Result::error("查询失败", 0);
+        }
+        $book = Book::where('status', 2)
+            ->where('website_id', $data['website_id'])
+            ->where('id', $data['id'])
+            ->select(
+                'book.*',
+            )
+            ->orderBy('updated_at', 'desc')
+            ->first();
+        if (empty($book)) {
+            return Result::error("查询失败", 0);
+        }
+        // 先查询当前分类的 pid
+        $carpid = WebsiteCategory::where('website_id', $data['website_id'])
+            ->where('category_id', $book['cat_id'])
+            ->first(['pid', 'category_id']);
+        $query = WebsiteCategory::where('website_id', $data['website_id']);
+        if (!empty($carpid)) {
+            if ($carpid->pid != 0) {
+                $pid = $carpid['pid'];
+                // $parent_pinyin = '';
+            } else {
+                $pid = $carpid['category_id'];
+                // $parent_pinyin = $currentCategory->aLias_pinyin?? '';
+            }
+        }
+        $categorys = $query->where('pid', $pid)
+            ->select(
+                'category_id',
+                'alias',
+                'aLIas_pinyin',
+                'pid',
+                'sort',
+                'is_url',
+                'web_url',
+                'category_arr_id as cat_arr_id',
+            )
+            ->orderBy('sort')
+            ->get();
+        $category = $this->processArticle($categorys, $data);
+        $result = [
+            'category' => $category,
+            'books' => $book,
+        ];
+        return Result::success($result);
+    }
+    /**
+     * 尝试
+     * @param array $data
+     * @return array
+     *  */
+    public function test(array $data): array
+    {
+        $input['id'] = $data['id'];
+        $input['website_id'] = $data['website_id'];
+        // 将 JSON 字符串转换为 PHP 数组
+        $data = json_decode($input['id'], true);
+        $result = [];
+        $article = $data;
+        $result = array_map(function ($item) use ($input) {
+            $website = [
+                'website_id' => $input['website_id'],
+            ];
+            list($parentCatId, $parentImgNum, $parentTextNum) = explode(',', $item['parent']);
+            $category = WebsiteCategory::where('pid', $parentCatId)->where($website)->first(['alias', 'category_id', 'aLIas_pinyin']);
+            $parent = [
+                0 => $category['category_id'] ?? [],
+                1 => $parentImgNum ?? [],
+                2 => $parentTextNum ?? [],
+            ];
+            list($parentCatId, $parentImgNum, $parentTextNum) = explode(',', $item['child']);
+            $child = [];
+
+            $resultItem = [
+                // 'alias' => $parent_alias ?? '',
+                'category_id' => $parentCatId ?? 0,
+                'pinyin' => $parentImgNum ?? null,
+                'imgnum' => $parentTextNum ?? [],
+                // 'textnum' => $textArticles ?? [],
+            ];
+            return $parent;
+        }, $data);
+        return Result::success($result);
+        // });
+
+
+    }
+    /**
+     * 封装处理文章的路由问题
+     *  */
+    function processArticle($article, $data)
+    {
+        return $article->map(function ($article) use ($data) {
+            $catid = $article->cat_arr_id ?? '';
+            $level = json_decode($catid, true);
+            $pinyin = '';
+            // $category = WebsiteCategory::where('category_id', $catid)->where('website_id', $data['website_id'])->first();
+            if (!empty($level) && is_array($level)) {
+                $pinyin = WebsiteCategory::whereIn('category_id', $level)
+                    ->where('website_id', $data['website_id'])
+                    ->orderByRaw('FIELD(category_id, ' . implode(',', $level) . ')')
+                    ->get(['aLIas_pinyin'])
+                    ->pluck('aLIas_pinyin')
+                    ->implode('/');
+            } else {
+                $pinyin = '';
+            }
+            $article->pinyin = $pinyin;
+            return $article;
+        });
+    }
+    /**
+     * c端-获取招工招聘下拉选框
+     * @param array $data
+     * @return array
+     *  */
+    public function getWebsiteJobSelect(array $data): array
+    {
+        $web = Website::where('id', $data['website_id'])->first();
+        if (empty($web)) {
+            return Result::error("该网站不存在", 0);
+        }
+        $hy = JobIndustry::get()->all();
+        $zw = JobPosition::where('zwpid', 0)->get()->all();
+        $jtzw = JobPosition::where('zwpid', '!=', 0)->get()->all();
+        $result = [
+            'hy' => $hy,
+            'zw' => $zw,
+            'jtzw' => $jtzw,
+        ];
+        if (empty($result)) {
+            return Result::error("查询失败", 0);
+        }
+        return Result::success($result);
+    }
+    /**
+     * c端-获取招工招聘
+     * @param array $data
+     * @return array
+     *  */
+    public function getWebsiteJob(array $data): array
+    {
+        $web = Website::where('id', $data['website_id'])->first();
+        if (empty($web)) {
+            return Result::error("该网站不存在", 0);
+        }
+        $job_hunting = JobHunting::where('job_hunting.status', 2)
+            ->where('job_hunting.website_id', $data['website_id'])
+            ->when(isset($data['city_id']) && !empty($data['city_id']), function ($query) use ($data) {
+                $query->where(function ($q) use ($data) {
+                    $q->WhereRaw("JSON_CONTAINS(job_hunting.city_arr_id, '" . intval($data['city_id']) . "') = 1");
+                });
+            })
+            ->select(
+                'job_hunting.id',
+                'job_hunting.catid',
+                'job_hunting.cat_arr_id',
+                'job_hunting.job_name_get',
+                'job_hunting.industry',
+                'job_hunting.name',
+                'job_hunting.sexy',
+                'job_hunting.origin',
+                'job_hunting.city_arr_id',
+                'job_hunting.experience',
+                'job_hunting.updated_at',
+                'job_hunting.salary',
+                'job_hunting.skillList',
+                'job_hunting.slelf_evaluation',
+            )
+            ->orderBy('updated_at', 'desc')
+            ->limit($data['job1_num'])
+            ->get();
+        $web['website_id'] = $data['website_id'];
+        if (empty($job_hunting)) {
+            $job_huntings = "未查询到相关简历信息";
+        } else {
+            $job_huntings = $this->processJob($job_hunting, $web);
+        }
+        // 0:待审核 1:已通过 2:已拒绝 
+        $job_recruiting = JobRecruiting::where('job_recruiting.status', 1)
+            ->where('job_recruiting.website_id', $data['website_id'])
+            ->when(isset($data['city_id']) && !empty($data['city_id']), function ($query) use ($data) {
+                $query->where(function ($q) use ($data) {
+                    $q->WhereRaw("JSON_CONTAINS(job_recruiting.city_arr_id, '" . intval($data['city_id']) . "') = 1");
+                });
+            })
+            ->leftJoin('job_company', 'job_recruiting.id', '=', 'job_company.job_id')
+            ->select(
+                'job_recruiting.id',
+                'job_recruiting.catid',
+                'job_recruiting.cat_arr_id',
+                'job_recruiting.title',
+                'job_recruiting.jtzw_id',
+                'job_recruiting.hy_id',
+                'job_recruiting.city_arr_id',
+                'job_recruiting.due_data',
+                'job_recruiting.updated_at',
+                'job_recruiting.experience',
+                'job_recruiting.educational',
+                'job_recruiting.salary',
+                'job_recruiting.zw_id',
+                'job_company.business_name',
+                'job_recruiting.keyword',
+                'job_recruiting.description',
+            )
+            ->orderBy('updated_at', 'desc')
+            ->limit($data['job2_num'])
+            ->get();
+        if (empty($job_recruiting->toArray())) {
+            $job_recruitings = "未查询到相关职位信息";
+        } else {
+            $job_recruitings = $this->processJob($job_recruiting, $web);
+        }
+
+        $result = [
+            'job_hunting' => $job_huntings,
+            'job_recuiting' => $job_recruitings,
+        ];
+        return Result::success($result);
+    }
+    /**
+     * c端-获取招工招聘列表
+     * @param array $data
+     * @return array
+     *  */
+    public function getWebsiteJobList(array $data): array
+    {
+        $recruit_where = [];
+        $hunt_where = [];
+        $web = Website::where('id', $data['website_id'])->first(['id', 'website_name']);
+        if (empty($web)) {
+            return Result::error("此网站不存在", 0);
+        }
+        $website_id['website_id'] = $data['website_id'];
+
+
+        if ((isset($data['type']) && $data['type'] == 1) || !isset($data['type'])) {
+            if (isset($data['zw_id']) && !empty($data['zw_id'])) {
+                array_push($recruit_where, ['zw_id', $data['zw_id']]);
+            }
+            if (isset($data['jtzw_id']) && !empty($data['jtzw_id'])) {
+                array_push($recruit_where, ['jtzw_id', $data['jtzw_id']]);
+            }
+            if (isset($data['hy_id']) && !empty($data['hy_id'])) {
+                array_push($recruit_where, ['hy_id', $data['hy_id']]);
+            }
+            if (isset($data['keyword']) && !empty($data['keyword'])) {
+                array_push($recruit_where, ['title', 'like', '%' . $data['keyword'] . '%']);
+            }
+            $query = JobRecruiting::where('job_recruiting.status', 1)
+                ->where('job_recruiting.website_id', $data['website_id'])
+                ->where($recruit_where)
+                ->when(isset($data['city_id']) && !empty($data['city_id']), function ($query) use ($data) {
+                    $query->where(function ($q) use ($data) {
+                        $q->WhereRaw("JSON_CONTAINS(job_recruiting.city_arr_id, '" . intval($data['city_id']) . "') = 1");
+                    });
+                })
+                ->when(isset($data['catid']) && !empty($data['catid']), function ($query) use ($data) {
+                    $query->where(function ($q) use ($data) {
+                        $q->WhereRaw("JSON_CONTAINS(job_recruiting.cat_arr_id, '" . intval($data['catid']) . "') = 1");
+                    });
+                })
+                ->leftJoin('job_company', 'job_recruiting.id', '=', 'job_company.job_id')
+                ->select(
+                    'job_recruiting.id',
+                    'job_recruiting.catid',
+                    'job_recruiting.hy_id',
+                    'job_recruiting.title',
+                    'job_recruiting.zw_id',
+                    'job_recruiting.educational',
+                    'job_recruiting.jtzw_id',
+                    'job_recruiting.city_arr_id',
+                    'job_recruiting.due_data',
+                    'job_recruiting.experience',
+                    'job_recruiting.cat_arr_id',
+                    'job_recruiting.updated_at',
+                    'job_company.business_name',
+                    'job_recruiting.keyword',
+                    'job_recruiting.description',
+                )
+                ->orderBy('job_recruiting.updated_at', 'desc');
+            $recruit_count = $query->count();
+            $query = clone $query;
+            $JobRecruiting = $query
+                ->offset(($data['page'] - 1) * $data['pageSize'])
+                ->limit($data['pageSize'])
+                ->get();
+            if (empty($JobRecruiting)) {
+                $JobRecruiting = "暂无相关职位信息";
+            } else {
+                $JobRecruiting = $this->processJob($JobRecruiting, $website_id);
+            }
+        }
+        if ((isset($data['type']) && $data['type'] == 2) || !isset($data['type'])) {
+            if (isset($data['zw_id']) && !empty($data['zw_id'])) {
+                array_push($hunt_where, ['job_hunting.job', $data['zw_id']]);
+            }
+            if (isset($data['jtzw_id']) && !empty($data['jtzw_id'])) {
+                array_push($hunt_where, ['job_hunting.job_name_get', $data['jtzw_id']]);
+            }
+            if (isset($data['hy_id']) && !empty($data['hy_id'])) {
+                array_push($hunt_where, ['job_hunting.industry', $data['hy_id']]);
+            }
+            if (isset($data['keyword']) && !empty($data['keyword'])) {
+                array_push($hunt_where, ['job_position.zwname', 'like', '%' . $data['keyword'] . '%']);
+            }
+            $query = JobHunting::where('job_hunting.status', 2)
+                ->where('job_hunting.website_id', $data['website_id'])
+                ->leftJoin('job_position', 'job_hunting.job_name_get', '=', 'job_position.zwid')
+                ->where($hunt_where)
+                // ->when(isset($data['keyword']) &&!empty($data['keyword']), function ($query) use ($data) { 
+                //     $query->where('job_position.zwname','like','%'.$data['keyword'].'%'); 
+                // }) 
+                ->when(isset($data['city_id']) && !empty($data['city_id']), function ($query) use ($data) {
+                    $query->where(function ($q) use ($data) {
+                        $q->WhereRaw("JSON_CONTAINS(job_hunting.city_arr_id, '" . intval($data['city_id']) . "') = 1");
+                    });
+                })
+                ->when(isset($data['catid_id']) && !empty($data['catid_id']), function ($query) use ($data) {
+                    $query->where(function ($q) use ($data) {
+                        $q->WhereRaw("JSON_CONTAINS(job_hunting.cat_arr_id, '" . intval($data['catid_id']) . "') = 1");
+                    });
+                })
+                ->select(
+                    'job_hunting.id',
+                    'job_hunting.catid',
+                    'job_hunting.sexy',
+                    'job_hunting.experience',
+                    'job_hunting.origin',
+                    'job_hunting.industry',
+                    'job_hunting.name',
+                    'job_hunting.job',
+                    'job_hunting.job_name_get',
+                    'job_hunting.city_arr_id',
+                    'job_hunting.cat_arr_id',
+                    'job_hunting.created_at',
+                    'job_hunting.updated_at',
+                    'job_position.zwname as job_name',
+                    'job_hunting.skillList',
+                    'job_hunting.slelf_evaluation',
+                )
+                ->orderBy('job_hunting.updated_at', 'desc');
+            $hunt_count = $query->count();
+            $query = clone $query;
+            $JobHunting = $query
+                ->offset(($data['page'] - 1) * $data['pageSize'])
+                ->limit($data['pageSize'])
+                ->get();
+            if (empty($JobHunting)) {
+                $JobRecruiting = "暂无相关简历信息";
+            } else {
+                $JobHunting = $this->processJob($JobHunting, $website_id);
+            }
+        }
+
+
+
+        $result = [
+            'JobRecruiting' => $JobRecruiting ?? [],
+            'recruit_count' => $recruit_count ?? 0,
+            'JobHunting' => $JobHunting ?? [],
+            'hunt_count' => $hunt_count ?? 0,
+        ];
+        return Result::success($result);
+    }
+    /**
+     * c端-获取招工招聘详情
+     * @param array $data
+     * @return array
+     *  */
+    public function getWebsiteJobInfo(array $data): array
+    {
+        $web = Website::where('id', $data['website_id'])->first(['id', 'website_name']);
+        if (empty($web)) {
+            return Result::error("该网站不存在", 0);
+        }
+        $webid = [
+            'website_id' => $data['website_id'],
+        ];
+        // 职位相关信息
+        if ($data['type'] == 1) {
+            $query = JobRecruiting::where('status', 1)
+                ->where('website_id', $data['website_id'])
+                ->select('*');
+            $job = $query->where('job_recruiting.id', $data['id'])->get();
+            $company = JobCompany::where('job_id', $data['id'])->select('id', 'business_name', 'company_hy_id', 'company_size', 'company_nature', 'address_arr_id', 'address', 'job_company.email')->get();
+            if (!empty($company)) {
+                $result['company'] = $this->processJob($company, $webid);
+            }
+
+            $other_job = JobRecruiting::where('status', 1)
+                ->where('website_id', $data['website_id'])
+                ->select('title', 'id', 'updated_at', 'cat_arr_id', 'user_id')
+                ->where('id', '!=', $data['id'])
+                ->where('user_id', '=', $job[0]['user_id'])
+                ->limit($data['pageSize'])
+                ->get();
+            if (!empty($other_job)) {
+                $result['other_job'] = $this->processJob($other_job, $webid);
+            }
+        } else {
+            // 简历相关信息
+            $job = JobHunting::where('job_hunting.status', 2)
+                ->where('job_hunting.website_id', $data['website_id'])
+                ->where('job_hunting.id', $data['id'])
+                ->leftJoin('user', 'user.id', '=', 'job_hunting.user_id')
+                ->select('job_hunting.*', 'user_name')
+                ->get();
+
+            $resume = JobRemuse::where('hunt_id', $data['id'])->get();
+            if (!empty($resume->toArray())) {
+                $result['resume'] = 1;
+            } else {
+                $result['resume'] = 0;
+            }
+        }
+        if (empty($job->toArray())) {
+            return Result::error("id参数错误", 0);
+        }
+        if (!empty($job[0]['job_experience'])) {
+            $job_experience = json_decode($job[0]['job_experience'], true) ?? [];
+            if (!empty($job_experience)) {
+                // $hy = [];
+                foreach ($job_experience as $key => $value) {
+                    // $id = $value['id'];
+                    $hy[$key] = $value['job_industry'];
+                    $zw_id[$key] = $value['job_typename'];
+                    $jtzw_id[$key] = $value['job_name'];
+                }
+                $hy_table = JobIndustry::whereIn('hyid', $hy)->select('hyid', 'hyname')->get();
+                $zw_table = JobPosition::select('zwid', 'zwname')->get();
+                // 先将关联表转换为索引数组,提高查找效率
+                $hyLookup = [];
+                foreach ($hy_table as $item) {
+                    $hyLookup[$item['hyid']] = $item['hyname'];
+                }
+
+                $zwLookup = [];
+                foreach ($zw_table as $item) {
+                    $zwLookup[$item['zwid']] = $item['zwname'];
+                }
+
+                foreach ($job_experience as $key => &$value) {
+                    // 处理行业名称
+                    if (isset($hy[$key]) && isset($hyLookup[$hy[$key]])) {
+                        $value['hy_name'] = $hyLookup[$hy[$key]];
+                    }
+
+                    // 处理职位名称
+                    if (isset($zw_id[$key]) && isset($zwLookup[$zw_id[$key]])) {
+                        $value['zw_name'] = $zwLookup[$zw_id[$key]];
+                    }
+
+                    // 处理具体职位名称
+                    if (isset($jtzw_id[$key]) && isset($zwLookup[$jtzw_id[$key]])) {
+                        $value['jtzw_name'] = $zwLookup[$jtzw_id[$key]];
+                    }
+                }
+                // 释放引用,防止意外修改后续代码
+                unset($value);
+            }
+            $result['job_experience'] = $job_experience ?? [];
+        }
+        if (!empty($job[0]['education_experience'])) {
+            $education_experience = json_decode($job[0]['education_experience'], true) ?? '';
+            if (!empty($education_experience)) {
+                foreach ($education_experience as $key => $value) {
+                    // $id = $value['id'];
+                    $education[$key] = $value['school_education'];
+                }
+                $education_table = JobEnum::where('egroup', 'education')->whereIn('evalue', $education)->select('evalue', 'ename')->get();
+                // // 先将关联表转换为索引数组,提高查找效率
+                $educationLookup = [];
+                foreach ($education_table as $item) {
+                    $educationLookup[$item['evalue']] = $item['ename'];
+                }
+
+                foreach ($education_experience as $key => &$value) {
+                    // 处理学历名称
+                    if (isset($education[$key]) && isset($educationLookup[$education[$key]])) {
+                        $value['education_name'] = $educationLookup[$education[$key]];
+                    }
+                }
+            }
+            $result['education_experience'] = $job_experience ?? [];
+        }
+        $result['job'] = $this->processJob($job, $webid);
+        // // 返现对应的栏目
+        $catid = json_decode($job[0]['cat_arr_id'], true) ?? '';
+        $category = WebsiteCategory::where('website_id', $data['website_id'])
+            ->whereIn('category_id', $catid)
+            ->select('category_id', 'alias', 'aLIas_pinyin', 'pid')
+            ->orderBy('pid')->get()->all();
+        if (!empty($category)) {
+            $result['category'] = $category;
+        }
+        $result['job'] = $job;
+        $result['job_experience'] = $job_experience ?? [];
+        $result['education_experience'] = $education_experience ?? [];
+        if (empty($result)) {
+            return Result::error("参数错误", 0);
+        }
+        return Result::success($result);
+    }
+    /**
+     * c端-申请职位
+     * @param array $data
+     * @return array
+     *  */
+    public function getWebsiteJobApply(array $data): array
+    {
+        // 首先验证网站是否存在
+        // return Result::success($data);
+        $web = Website::where('id', $data['website_id'])->first(['id', 'website_name']);
+        if (empty($web)) {
+            return Result::error("该网站不存在", 0);
+        }
+        // 验证用户是否存在且为个人会员/管理员
+        $user = User::where('id', $data['user_id'])->first(['id', 'type_id']);
+        // 1:个人会员 2:政务会员 3:企业会员 4:调研员 10000:管理员 20000:游客(小程序)
+        if (empty($user) || ($user['type_id'] != 1 && $user['type_id'] != 10000)) {
+            return Result::error("用户不存在", 0);
+        }
+        // 去除重复元素和空元素,并保持原始顺序
+        $data['recruit_id'] = array_values(array_filter(array_unique($data['recruit_id']), function ($value) {
+            return !empty($value);
+        }));
+        // 验证职位是否存在   1:审核通过
+        $recruiting = JobRecruiting::where('status', 1)
+            ->where('website_id', $data['website_id'])
+            ->whereIn('id', $data['recruit_id'])
+            ->get(['id as recruit_id', 'user_id as receiver_id'])->all();
+        if (empty($recruiting)) {
+            return Result::error("该职位不存在", 0);
+        }
+        // 简历是否存在
+        $hunt_id = JobHunting::where('user_id', $data['user_id'])->where('status', 2)->first(['id as hunt_id']);
+        if (empty($hunt_id)) {
+            return Result::error("该简历不存在", 0);
+        }
+        $data['hunt_id'] = $hunt_id['hunt_id'];
+        // // 验证是否已投递过该职位
+        $apply = JobApply::where('user_id', $data['user_id'])
+            ->where('hunt_id', $data['hunt_id'])
+            ->where('website_id', $data['website_id'])
+            ->whereIn('recruit_id', $data['recruit_id'])
+            ->get(['recruit_id']);
+        if (!empty($apply->toArray())) {
+            return Result::error("您已投递过该职位!");
+        }
+        $insertData = array_map(function ($recruiting) use ($data) {
+            return [
+                'user_id' => $data['user_id'],
+                'hunt_id' => $data['hunt_id'],
+                'website_id' => $data['website_id'],
+                'recruit_id' => $recruiting['recruit_id'],
+                'receiver_id' => $recruiting['receiver_id'],
+                'status' => 1,
+            ];
+        }, $recruiting);
+
+        // 批量插入数据
+        $result = JobApply::insert($insertData);
+        if (empty($result)) {
+            return Result::error("投递失败", 0);
+        }
+        return Result::success($result);
     }
+    /**
+     * 招工招聘-沟通简历
+     * @param array $data
+     * @return array
+     *  */
+    public function getWebsiteJobResume(array $data): array
+    {
+        // 首先验证网站是否存在
+        $web = Website::where('id', $data['website_id'])->first(['id', 'website_name']);
+        if (empty($web)) {
+            return Result::error("该网站不存在", 0);
+        }
+        // return Result::success($data);
+        // 验证用户是否存在且为企业会员/管理员
+        $user = User::where('id', $data['user_id'])->first(['id', 'type_id']);
+        // 1:个人会员 2:政务会员 3:企业会员 4:调研员 10000:管理员 20000:游客(小程序)
+        if (empty($user) || ($user['type_id'] != 3 && $user['type_id'] != 10000)) {
+            return Result::error("用户不存在", 0);
+        }
+        // 去除重复元素和空元素,并保持原始顺序
+        $data['hunt_id'] = array_values(array_filter(array_unique($data['hunt_id']), function ($value) {
+            return !empty($value);
+        }));
+        // 验证简历是否存在
+        $hunting = JobHunting::where('status', 2)
+            ->where('website_id', $data['website_id'])
+            ->whereIn('id', $data['hunt_id'])
+            ->get(['id as hunt_id', 'user_id as receiver_id'])->all();
+        if (empty($hunting)) {
+            return Result::error("该简历不存在", 0);
+        }
+        // 验证是否已沟通过该简历
+        $remuse = JobRemuse::where('user_id', $data['user_id'])
+            ->where('recruit_id', $data['recruit_id'])
+            ->where('website_id', $data['website_id'])
+            ->whereIn('hunt_id', $data['hunt_id'])
+            ->get(['hunt_id']);
+        if (!empty($remuse->toArray())) {
+            return Result::error("您已沟通过该简历!");
+        }
+        // 准备要插入的数据数组
+        $insertData = array_map(function ($hunting) use ($data) {
+            return [
+                'user_id' => $data['user_id'],
+                'recruit_id' => $data['recruit_id'],
+                'website_id' => $data['website_id'],
+                'hunt_id' => $hunting['hunt_id'],
+                'receiver_id' => $hunting['receiver_id'],
+                'status' => 1,
+            ];
+        }, $hunting);
 
+        // 批量插入数据
+        $result = JobRemuse::insert($insertData);
+        if (empty($result)) {
+            return Result::error("沟通失败", 0);
+        }
+        return Result::success($result);
+    }
     /**
+     * 招工招聘  -我的职位(企业会员)
      * @param array $data
      * @return array
      */
-    public function getWebsiteArticlett(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
+    public function getWebsiteJobRecruiting(array $data): array
+    {
+        $web = Website::where('id', $data['website_id'])->first('id');
+        if (empty($web)) {
+            return Result::error("该网站不存在", 0);
+        }
+        $user = User::where('id', $data['user_id'])->first(['id', 'type_id']);
+        if (empty($user) || ($user['type_id'] != 3 && $user['type_id'] != 10000)) {
+            return Result::error("用户暂无权限!", 0);
+        }
+        // '状态   0:待审核;1:已审核通过;(只有企业会员需要审核);2:已拒绝;
+        $result = JobRecruiting::where('website_id', $data['website_id'])
+            ->when(isset($user['type_id']) && $user['type_id'] == 3, function ($query) use ($user) {
+                $query->where('user_id', $user['id']);
+            })
+            ->where('status', 1)
+            ->select('id', 'title', 'website_id', 'user_id', 'updated_at', 'keyword', 'catid', 'description')
+            ->orderBy('updated_at', 'desc')
+            ->limit($data['pageSize'])
+            ->get();
+        if (empty($result)) {
+            return Result::error("暂无相关职位信息", 0);
+        }
+        return Result::success($result);
     }
+
     /**
+     * c端  -  验证路由
      * @param array $data
      * @return array
      */
-    public function getWebsiteModelArticles(array $data)
+
+
+    /**
+     * c端  -  验证路由
+     * @param array $data
+     * @return array
+     */
+    public function checkWebsiteRoute(array $data): array
+    {
+        // 测试001111111222
+        $web = Website::where('id', $data['website_id'])->first(['id', 'website_name', 'status']);
+        if (empty($web)) {
+            return Result::error("该网站不存在", 0);
+        } elseif ($web['status'] != 1) {
+            return Result::error("网站已经关闭", 0);
+        }
+        if (isset($data['other_route']) && !empty($data['other_route'])) {
+            $whiteRouterInfo = WhiteRouter::whereJsonContains("website_id", $data['website_id'])->where('router_url', $data['other_route'])->first();
+            // 验证路由是否存在
+            if (empty($whiteRouterInfo)) {
+                $whiteRouterInfo = WhiteRouter::where("router_type", 1)->where('router_url', $data['other_route'])->first();
+            }
+            if (!empty($whiteRouterInfo)) {
+                return Result::success($whiteRouterInfo->toArray());
+            }
+        }
+        // 验证栏目路由
+        $last_category = WebsiteCategory::where('website_id', $data['website_id'])
+            ->where('path', $data['all_route'])
+            ->get()->all();
+        if (count($last_category) == 0) {
+            return Result::error("该栏目不存在", 0);
+        }
+        if (count($last_category) > 1) {
+            return Result::error("该栏目路由存在多个,路由验证失败!", 0);
+        }
+        if (count($last_category) == 1) {
+            $last_category = $last_category[0];
+        }
+
+        // return Result::success($last_category);
+        if (isset($data['id']) && !empty($data['id'])) {
+            //   `type` int unsigned DEFAULT '1' COMMENT '类型:1资讯(默认)2商品3书刊音像4招聘5求职类型:1资讯(默认)2商品3书刊音像4招聘5求职6招工招聘'
+            switch ($last_category['type']) {
+                case 1:
+                    // 文章
+                    //   `status` int DEFAULT '1' COMMENT '状态: 2:已拒绝  ;1:已发布,0待发布 草稿箱 404删除(移除)
+                    $article = Article::where('status', 1)
+                        ->where('id', $data['id'])
+                        ->where(function ($query) use ($data) {
+                            $query->whereRaw("JSON_CONTAINS(ignore_ids, '" . intval($data['website_id']) . "') = 0")
+                                ->orWhereNull("ignore_ids");
+                        })
+                        ->first(['catid']);
+                    if (empty($article)) {
+                        return Result::error("该文章不存在", 0);
+                    }
+                    //   return Result::success($article);
+                    break;
+                case 2:
+                    // 商品
+                    // `status` int DEFAULT '1' COMMENT '审核状态,1待审核2已审核3已拒绝',
+                    $article = Good::where('website_id', $data['website_id'])
+                        ->where('status', 2)
+                        ->where('id', $data['id'])
+                        ->first(['cat_arr_id']);
+                    if (empty($article)) {
+                        return Result::error("该商品不存在", 0);
+                    }
+                    break;
+                case 3:
+                    // 书刊信息
+                    // `status` int DEFAULT '1' COMMENT '审核状态,1待审核2已审核3已拒绝',
+                    $article = Book::where('website_id', $data['website_id'])
+                        ->where('status', 2)
+                        ->where('id', $data['id'])
+                        ->first(['id', 'cat_arr_id']);
+                    if (empty($article)) {
+                        return Result::error("该书刊不存在", 0);
+                    }
+                    break;
+                case 4:
+                    // 招聘
+                    //   `status` int DEFAULT '0' COMMENT '状态   0:待审核;1:已审核通过;(只有企业会员需要审核)',
+                    $article = JobRecruiting::where('website_id', $data['website_id'])
+                        ->where('status', 1)
+                        ->where('id', $data['id'])
+                        ->first(['cat_arr_id']);
+                    if (empty($article)) {
+                        return Result::error("该招聘不存在", 0);
+                    }
+                    break;
+                case 5:
+                    // 求职
+                    //   `status` int DEFAULT '1' COMMENT '审核状态,1待审核2已审核3已拒绝',
+                    $article = JobHunting::where('website_id', $data['website_id'])
+                        ->where('status', 2)
+                        ->where('id', $data['id'])
+                        ->first(['cat_arr_id']);
+                    if (empty($article)) {
+                        return Result::error("该求职不存在", 0);
+                    }
+                    break;
+                case 6:
+                    // 企业
+                    // `status` int DEFAULT '1' COMMENT '审核状态状态:0:未审核;1:已审核;2:已拒绝;',
+                    $article = Company::
+                        //   where('website_id', $data['website_id'])
+                        // ->
+                        where('status', 1)
+                        ->where('id', $data['id'])
+                        ->first(['cat_arr_id']);
+                    if (empty($article)) {
+                        return Result::error("该企业不存在", 0);
+                    }
+                    break;
+                case 7:
+                    // 项目
+                    // `status` int DEFAULT '1' COMMENT '审核状态状态:0:未审核;1:已审核;2:已拒绝;',
+                    $article = Project::where('website_id', $data['website_id'])
+                        ->where('status', 1)
+                        ->where('id', $data['id'])
+                        ->first(['cat_arr_id']);
+                    if (empty($article)) {
+                        return Result::error("该项目不存在", 0);
+                    }
+                    break;
+                default:
+                    return Result::error("该数据不存在", 0);
+                    break;
+            }
+            //   return Result::success($article);
+            //   $catid =0 ;
+
+            if (!isset($article['cat_arr_id'])) {
+                $catid = isset($article['catid']) ? $article['catid'] : (isset($article['category_id']) ? $article['category_id'] : null);
+            } else {
+                $catidArray = json_decode($article['cat_arr_id'], true);
+                $catid = !empty($catidArray) ? end($catidArray) : null;
+            }
+            // return Result::success($catid);
+            // //    return Result::success($article['cat_arr_id']);
+            if (empty($catid)) {
+                return Result::error("该栏目路径不存在", 0);
+            }
+
+            $path = WebsiteCategory::where('website_id', $data['website_id'])
+                ->where('category_id', $catid)
+                ->first('path');
+        }
+
+        // else{
+        //     // if ($last_category['pid'] != 0) {
+        //         $cat_arr = json_decode($last_category['category_arr_id'], true);
+        //         $catid = !empty($cat_arr) && is_array($cat_arr) ? end($cat_arr) : null;
+        //         $pinyin = WebsiteCategory::where('website_id', $data['website_id'])
+        //             ->where('category_id',$catid)
+        //             ->where('path',$data['all_route'])
+        //             ->first('path');
+        //     // } else {
+        //     //     $pinyin[0] = $last_category['aLIas_pinyin'];
+        //     // }
+        // }
+        // return Result::success($path);
+        if (!empty($path) && $path['path'] != $data['all_route']) {
+            return Result::error('非法路径!');
+        } else {
+            return Result::success($last_category['path']);
+        }
+    }
+    /**
+     * 招工招聘  -  获取推荐职位
+     * @param array $data
+     * @return array
+     */
+    public function getWebsiteLevelJob(array $data): array
+    {
+        // 状态   0:待审核;1:已审核通过;(只有企业会员需要审核);2:已拒绝;
+        $job = JobRecruiting::where('job_recruiting.website_id', $data['website_id'])
+            ->where('job_recruiting.status', 1)
+            ->where('job_level', $data['job_level'])
+            ->leftJoin('job_company', 'job_recruiting.id', '=', 'job_company.job_id')
+            ->select('job_recruiting.id', 'job_recruiting.title', 'job_recruiting.cat_arr_id', 'job_company.business_name', 'job_recruiting.updated_at')
+            ->orderBy('job_recruiting.updated_at', 'desc')
+            ->limit($data['pageSize'])
+            ->get();
+        $web = ['website_id' => $data['website_id']];
+        if (!empty($job)) {
+            $result = $this->processJob($job, $web);
+        }
+        if (empty($result)) {
+            return Result::error("暂无相关职位信息", 0);
+        }
+        return Result::success($result);
+    }
+
+    /**
+     * 验证导航名称是否重复
+     * @return void
+     */
+
+
+    //20250226  产品列表
+
+    public function getGoodList(array $data): array
+    {
+        var_dump($data, '---------1-2--');
+        $type_id = isset($data['user_type_id']) ? $data['user_type_id'] : '';
+        unset($data['user_type_id']);
+        $user_id = isset($data['user_id']) ? $data['user_id'] : '';
+        $where = [];
+        if ($type_id != '10000') {
+            $where = [
+                'good.user_id' => $user_id,
+            ];
+        }
+        //类型
+        if (isset($data['type_id']) && $data['type_id']) {
+
+            $where['good.type_id'] = $data['type_id'];
+        }
+        //名称
+        if (isset($data['name']) && $data['name']) {
+            $where[] = ['good.name', 'like', '%' . $data['name'] . '%'];
+        }
+        //status
+        if (isset($data['status']) && $data['status'] != '') {
+            $where['good.status'] = $data['status'];
+        }
+        //status1
+        // if (isset($data['status1']) && $data['status1'] == 1) {
+        //     $status1 = 1;
+        // }
+        $where1 = [];
+        //website_id
+        // if (isset($data['website_id']) && $data['website_id']) {
+        //     $where1 = [
+        //         'good.website_id', 'like', '%' . $data['website_id'] . '%',
+        //     ];
+        // }
+        // website_name
+        if (isset($data['website_name']) && $data['website_name']) {
+            $where1[] = ['website.website_name', 'like', '%' . $data['website_name'] . '%'];
+        }
+
+        // catid
+        if (isset($data['category_name']) && $data['category_name']) {
+            $where1[] = ['category.name', 'like', '%' . $data['category_name'] . '%'];
+        }
+
+        // $result = Good::where($where)
+        // ->orderBy("updated_at", "desc")->paginate($data['pige_size'], ['*'], 'page', $data['page']);
+        var_dump($where, '---------1---');
+        $result = Good::where($where)
+            ->when(!empty($where1), function ($query) use ($where1) {
+                return $query->where($where1);
+            })
+            //status  1待审核2已审核3已拒绝
+            ->when(isset($data['status1']), function ($query) {
+                return $query->whereIn('good.status', [1, 3]);
+            })
+            ->leftJoin('district', 'good.city_id', '=', 'district.id')
+            ->leftJoin('website', 'good.website_id', '=', 'website.id')
+            ->leftJoin('category', 'good.catid', '=', 'category.id')
+            ->select('good.*', 'district.name as cityname', 'website.website_name as website_name', 'category.name as category_name')
+            ->orderBy("updated_at", "desc")
+            ->limit($data['page_size'])
+            ->offset(($data['page'] - 1) * $data['page_size'])
+            ->get();
+        $count = Good::where($where)
+            ->when(!empty($where1), function ($query) use ($where1) {
+                return $query->where($where1);
+            })
+            //status  1待审核2已审核3已拒绝
+            ->when(isset($data['status1']), function ($query) {
+                return $query->whereIn('good.status', [1, 3]);
+            })
+            ->leftJoin('district', 'good.city_id', '=', 'district.id')
+            ->leftJoin('website', 'good.website_id', '=', 'website.id')
+            ->leftJoin('category', 'good.catid', '=', 'category.id')
+            ->select('good.*', 'district.name as cityname', 'website.website_name as website_name', 'category.name as category_name')
+            ->orderBy("updated_at", "desc")->count();
+        $data = [
+            'rows' => $result->toArray(),
+            'count' => $count,
+        ];
+
+        if (empty($result)) {
+            return Result::error("此栏目暂无相关产品", 0);
+        }
+        return Result::success($data);
+    }
+    public function getGoodInfo(array $data): array
+    {
+        $result = Good::where('id', $data['id'])->first();
+        if (empty($result)) {
+            return Result::error("此产品不存在", 0);
+        }
+        return Result::success($result);
+    }
+    public function addGood(array $data): array
+    {
+        // unset($data['city_arr_id']);
+        // unset($data['cat_arr_id']);
+        $data['city_id'] = end($data['city_arr_id']);
+        $data['catid'] = end($data['cat_arr_id']);
+        $data['city_arr_id'] = isset($data['city_arr_id']) ? json_encode($data['city_arr_id']) : '';
+        $data['cat_arr_id'] = isset($data['cat_arr_id']) ? json_encode($data['cat_arr_id']) : '';
+        $data['imgurl'] = isset($data['imgurl']) ? json_encode($data['imgurl']) : '';
+        unset($data['imgUrl']); //大小写
+        if (isset($data['price']) && $data['price'] == '') {
+            $data['price'] =  0;
+        }
+
+        if ($data['imgurl'] == '') {
+            $reg = '/<img.*?src=[\"|\']?(.*?)[\"|\']?\s.*?>/i';
+            preg_match_all($reg, $data['detail'], $matches);
+            if (isset($matches[1][0])) {
+                //截取varchar240
+                $data['imgurl'] = substr($matches[1][0], 0, 240);
+            }
+        }
+        if ($data['keyword'] == '' ||  $data['keyword'] == array()) {
+            //提取标题+内容中的关键词
+            $data['keyword'] = $data['name'];
+            //  . substr(str_replace(' ', '', strip_tags($data['content'])), 0, 20);
+            Jieba::init(); // 初始化 jieba-php
+            Finalseg::init();
+            $segList = Jieba::cut($data['keyword']);
+            $segList1 = array_slice($segList, 0, 8);
+            $data['keyword'] = implode(',', $segList1);
+        }
+        if ($data['description'] == '') {
+            //提取内容中的描述
+            $cleaned = preg_replace('/\s+/', '', strip_tags(html_entity_decode($data['detail'], ENT_QUOTES, 'UTF-8')));
+            $data['description'] = mb_substr($cleaned, 0, 100, 'UTF-8');
+            // $data['description'] = substr(preg_replace('/\s+/', '', strip_tags($data['detail'])), 0, 100);
+        }
+        if ($data['status'] == 1) {
+            $this->sendMessage([
+                'talk_type' => 200,
+                'title' => $data['name'],
+                'content' => '提交了审核',
+                'messageType' => 3,
+            ]);
+        }
+
+        $result = Good::insert($data);
+        if (empty($result)) {
+            return Result::error("添加失败", 0);
+        }
+        return Result::success($result);
+    }
+    public function updateGood(array $data): array
+    {
+        $data['city_id'] = end($data['city_arr_id']);
+        $data['catid'] = end($data['cat_arr_id']);
+        $data['city_arr_id'] = isset($data['city_arr_id']) ? json_encode($data['city_arr_id']) : '';
+        $data['cat_arr_id'] = isset($data['cat_arr_id']) ? json_encode($data['cat_arr_id']) : '';
+        $data['imgurl'] = isset($data['imgurl']) ? json_encode($data['imgurl']) : '';
+        //设置东八区
+        date_default_timezone_set('Asia/Shanghai');
+        $data['updated_at'] = date('Y-m-d H:i:s');
+        if (isset($data['price']) && $data['price'] == '') {
+            $data['price'] =  0;
+        }
+
+
+        if ($data['imgurl'] == '') {
+            $reg = '/<img.*?src=[\"|\']?(.*?)[\"|\']?\s.*?>/i';
+            preg_match_all($reg, $data['detail'], $matches);
+            if (isset($matches[1][0])) {
+                //截取varchar240
+                $data['imgurl'] = substr($matches[1][0], 0, 240);
+            }
+        }
+        if ($data['keyword'] == '' ||  $data['keyword'] == array()) {
+            //提取标题+内容中的关键词
+            $data['keyword'] = $data['name'];
+            //  . substr(str_replace(' ', '', strip_tags($data['content'])), 0, 20);
+            Jieba::init(); // 初始化 jieba-php
+            Finalseg::init();
+            $segList = Jieba::cut($data['keyword']);
+            $segList1 = array_slice($segList, 0, 8);
+            $data['keyword'] = implode(',', $segList1);
+        }
+        if ($data['description'] == '') {
+            //提取内容中的描述
+            $cleaned = preg_replace('/\s+/', '', strip_tags(html_entity_decode($data['detail'], ENT_QUOTES, 'UTF-8')));
+            $data['description'] = mb_substr($cleaned, 0, 100, 'UTF-8');
+        }
+        if ($data['status'] == 1) {
+            $this->sendMessage([
+                'talk_type' => 200,
+                'title' => $data['name'],
+                'content' => '提交了审核',
+                'messageType' => 3,
+            ]);
+        }
+
+        $result = Good::where('id', $data['id'])->update($data);
+        if (empty($result)) {
+            return Result::error("更新失败", 0);
+        }
+        return Result::success($result);
+    }
+    public function delGood(array $data): array
     {
-        return $this->__request(__FUNCTION__, $data);
+        $result = Good::where('id', $data['id'])->delete();
+        if (empty($result)) {
+            return Result::error("删除失败", 0);
+        }
+        return Result::success($result);
     }
 
     //20250226  产品列表
-    public function getGoodList(array $data)
+    //20250306  求职信息
+    public function getJobHuntingList(array $data): array
     {
-        return $this->__request(__FUNCTION__, $data);
+        $where = [];
+        if (isset($data['username']) && !empty($data['username'])) {
+
+            $where[] = ['user.user_name', 'like', '%' . $data['username'] . '%'];
+        }
+        //status  1待审核2已审核3已拒绝
+        if (isset($data['status']) && $data['status'] != '') {
+            $where = [
+                'job_hunting.status' => $data['status'],
+            ];
+        }
+        $type_id = isset($data['type_id']) ? $data['type_id'] : '';
+        $user_id = isset($data['user_id']) ? $data['user_id'] : '';
+        unset($data['type_id']);
+        if ($type_id != '10000') {
+            $where[] = ['job_hunting.user_id', '=', $user_id];
+        }
+        $result = JobHunting::where($where)
+            ->when(!empty($data['status1']), function ($query) use ($data) {
+                return $query->whereIn('job_hunting.status', [1, 3]);   //1待审核2已审核3已拒绝
+            })
+
+            ->leftJoin('user', 'user.id', '=', 'job_hunting.user_id')
+            ->leftJoin('website', 'website.id', '=', 'job_hunting.website_id')
+            ->select('job_hunting.*', 'user.nickname as nickname', 'user.user_name as username', 'website.website_name as website_name')
+            ->orderBy("updated_at", "desc")
+            ->limit($data['page_size'])
+            ->offset(($data['page'] - 1) * $data['page_size'])
+            ->get();
+        if (empty($result)) {
+            return Result::error("查询失败", 0);
+        }
+        $count = JobHunting::where($where)
+            ->when(!empty($data['status1']), function ($query) use ($data) {
+                return $query->whereIn('job_hunting.status', [1, 3]);   //1待审核2已审核3已拒绝
+            })
+            ->leftJoin('user', 'user.id', '=', 'job_hunting.user_id')
+            ->leftJoin('website', 'website.id', '=', 'job_hunting.website_id')
+            ->count();
+        $data = [
+            'rows' => $result->toArray(),
+            'count' => $count,
+        ];
+        return Result::success($data);
+    }
+    public function getJobHuntingApply(array $data): array
+    {
+        var_dump($data, '-----------------test--------1-');
+        $where = [];
+        if (isset($data['username']) && !empty($data['username'])) {
+            $where[] = ['user.user_name', 'like', '%' . $data['username'] . '%'];
+        }
+        if (isset($data['salary']) && !empty($data['salary'])) {
+            $where[] = [
+                'job_hunting.salary',
+                '=',
+                $data['salary'],
+            ];
+        }
+        $type_id = isset($data['type_id']) ? $data['type_id'] : '';
+        $user_id = isset($data['user_id']) ? $data['user_id'] : '';
+        unset($data['type_id']);
+        if ($type_id != '10000') {
+            $where[] = ['job_apply.receiver_id', '=', $user_id];
+        }
+
+        var_dump($where, '-----------------test---------');
+        $result = jobApply::where($where)
+            // ->when(!empty($data['status1']), function ($query) use ($data) {
+            //     return $query->whereIn('job_hunting.status', [1, 3]);   //1待审核2已审核3已拒绝
+            // })
+            // ->leftJoin('user', 'user.id', '=', 'job_hunting.user_id') 'user.nickname as nickname',  , 'user.user_name as username'
+            ->where('job_enum.egroup', '=', 'income')
+            ->where('job_hunting.status', 2) //已审核
+            ->leftJoin('job_hunting', 'job_hunting.id', '=', 'job_apply.hunt_id')
+            ->leftJoin('district', 'district.id', '=', 'job_hunting.city_id')
+            ->leftJoin('job_enum', 'job_enum.evalue', '=', 'job_hunting.salary')
+            ->leftJoin('user', 'job_hunting.user_id', '=', 'user.id')
+            //职位----是申请职位
+            ->leftJoin('job_position', 'job_hunting.job_name_get', '=', 'job_position.zwid')
+            ->select('job_apply.*', 'job_position.zwname as job_name', 'job_hunting.salary as salary', 'district.name as cityname', 'job_enum.ename as salary_name', 'user.nickname as nickname', 'user.user_name as username', 'job_hunting.updated_at as updated_at')
+            ->orderBy("job_hunting.updated_at", "desc")
+            ->limit($data['page_size'])
+            ->offset(($data['page'] - 1) * $data['page_size'])
+            ->get();
+        if (empty($result)) {
+            return Result::error("查询失败", 0);
+        }
+        $count = jobApply::where($where)
+            ->where('job_enum.egroup', '=', 'income')
+            ->where('job_hunting.status', 2) //已审核
+            ->leftJoin('job_hunting', 'job_hunting.id', '=', 'job_apply.hunt_id')
+            ->leftJoin('district', 'district.id', '=', 'job_hunting.city_id')
+            ->leftJoin('job_enum', 'job_enum.evalue', '=', 'job_hunting.salary')
+            ->leftJoin('user', 'job_hunting.user_id', '=', 'user.id')
+            //职位----是申请职位
+            ->leftJoin('job_position', 'job_hunting.job_name_get', '=', 'job_position.zwid')
+            ->select('job_apply.*', 'job_position.zwname as job_name', 'job_hunting.salary as salary', 'district.name as cityname', 'job_enum.ename as salary_name', 'user.nickname as nickname', 'user.user_name as username', 'job_hunting.updated_at as updated_at')
+            ->count();
+        $data = [
+            'rows' => $result->toArray(),
+            'count' => $count,
+        ];
+        return Result::success($data);
+    }
+    public function addJobHunting(array $data): array
+    {
+        date_default_timezone_set('Asia/Shanghai');
+        unset($data['company_name']);
+        unset($data['job_industry']);
+        unset($data['job_name']);
+        unset($data['department']);
+        unset($data['job_timeList']);
+        unset($data['job_content']);
+        unset($data['job_typename']); //不知道这是啥,
+        $data['created_at'] = date('Y-m-d H:i:s');
+        $data['updated_at'] = date('Y-m-d H:i:s');
+        //根据用户 user_id 只能添加一次
+        $result = JobHunting::where('user_id', $data['user_id'])->first();
+        if (!empty($result)) {
+            return Result::error("您已添加过求职信息", 0);
+        }
+        var_dump($result, '-----------------test---------');
+        if (isset($data['city_arr_id']) && !empty($data['city_arr_id'])) {
+            if (is_string($data['city_arr_id'])) {
+                // 如果 city_arr_id 是字符串,尝试将其转换为数组,取最后一个数据
+                $cityArr = json_decode($data['city_arr_id'], true);
+                // 确保 $cityArr 是数组
+                if (is_array($cityArr)) {
+                    $data['city_id'] = end($cityArr);
+                }
+            } else {
+                // 如果 city_arr_id 不是字符串,直接取最后一个数据
+                if (is_array($data['city_arr_id'])) {
+                    $data['city_id'] = end($data['city_arr_id']);
+                }
+            }
+        }
+
+        // 处理求职所绑定栏目
+        if (isset($data['cat_arr_id']) && !empty($data['cat_arr_id'])) {
+            if (is_string($data['cat_arr_id'])) {
+                // 如果 cat_arr_id 是字符串,尝试将其转换为数组,取最后一个数据
+                // 先清理可能存在的无效 JSON 字符
+                $cleanedCatArrStr = trim($data['cat_arr_id']);
+                $catArr = json_decode($cleanedCatArrStr, true);
+                // 检查 JSON 解码是否成功且结果是数组
+                if (json_last_error() === JSON_ERROR_NONE && is_array($catArr)) {
+                    $data['catid'] = end($catArr);
+                }
+            } else {
+                // 如果 cat_arr_id 不是字符串,直接取最后一个数据
+                if (is_array($data['cat_arr_id'])) {
+                    $data['catid'] = end($data['cat_arr_id']);
+                }
+            }
+        }
+        if ((isset($data['status']) && $data['status'] == 1) || !isset($data['status'])) {
+            $this->sendMessage([
+                'talk_type' => 600,
+                'title' => $data['name'],
+                'content' => '提交了审核',
+                'messageType' => 11,
+            ]);
+        }
+        $result = JobHunting::create($data);
+        if (empty($result)) {
+            return Result::error("添加失败", 0);
+        }
+        return Result::success($result);
+    }
+    public function delJobHunting(array $data): array
+    {
+        $result = JobHunting::where('id', $data['id'])->delete();
+        if (empty($result)) {
+            return Result::error("删除失败", 0);
+        }
+        return Result::success($result);
+    }
+    public function updateJobHunting(array $data): array
+    {
+        //设置东八区
+        date_default_timezone_set('Asia/Shanghai');
+        unset($data['company_name']);
+        unset($data['job_industry']);
+        unset($data['job_name']);
+        unset($data['department']);
+        unset($data['job_timeList']);
+        unset($data['job_content']);
+        unset($data['job_typename']); //不知道这是啥,
+        $data['created_at'] = date('Y-m-d H:i:s');
+        $data['updated_at'] = date('Y-m-d H:i:s');
+        if (isset($data['city_arr_id']) && !empty($data['city_arr_id']) && is_string($data['city_arr_id'])) {
+            // 如果 city_arr_id 是字符串,尝试将其转换为数组,取最后一个数据
+            $cityArr = json_decode($data['city_arr_id'], true);
+            $data['city_id'] = end($cityArr);
+        } else {
+            // 如果 city_arr_id 不是字符串,直接取最后一个数据
+            $data['city_id'] = end($data['city_arr_id']);
+        }
+        // 处理求职所绑定栏目
+        if (isset($data['cat_arr_id']) && !empty($data['cat_arr_id']) && is_string($data['cat_arr_id'])) {
+            // 如果 cat_arr_id 是字符串,尝试将其转换为数组,取最后一个数据
+            $catArr = json_decode($data['cat_arr_id'], true);
+            $data['catid'] = end($catArr);
+        } else {
+            // 如果 cat_arr_id 不是字符串,直接取最后一个数据
+            $data['catid'] = end($data['cat_arr_id']);
+        }
+        if ((isset($data['status']) && $data['status'] == 1) || !isset($data['status'])) {
+            $this->sendMessage([
+                'talk_type' => 600,
+                'title' => $data['name'],
+                'content' => '提交了审核',
+                'messageType' => 11,
+            ]);
+        }
+        $result = JobHunting::where('id', $data['id'])->update($data);
+        if (empty($result)) {
+            return Result::error("更新失败", 0);
+        }
+        return Result::success($result);
+    }
+    public function getJobHuntingInfo(array $data): array
+    {
+        $result = JobHunting::where('id', $data['id'])->first();
+        if (empty($result)) {
+            return Result::error("查询失败", 0);
+        }
+        return Result::success($result);
+    }
+    public function getJobHuntingData(array $data): array
+    {
+        $jobEnum = JobEnum::get();
+        $jobIndustry = JobIndustry::get();
+        $jobNature = JobNature::get();
+        $jobPosition = JobPosition::get();
+        $data = [
+            'jobEnum' => $jobEnum,
+            'jobIndustry' => $jobIndustry,
+            'jobNature' => $jobNature,
+            'jobPosition' => $jobPosition,
+        ];
+        return Result::success($data);
+    }
+    public function delJobHuntingInfo(array $data): array
+    {
+        $result = JobHunting::where('id', $data['id'])->delete();
+        return Result::success();
+    }
+    //20250324  通知,公告,消息
+    public function delNotice(array $data): array
+    {
+        $result = Notice::where('id', $data['id'])->delete();
+        if ($result) {
+            return Result::success();
+        } else {
+            return Result::error("删除失败", 0);
+        }
+    }
+    public function getNoticeInfo(array $data): array
+    {
+        $result = Notice::where('id', $data['id'])->first();
+        // var_dump($result['re_user_ids'], '--------------------');
+        if (empty($result)) {
+            return Result::error("查询失败", 0);
+        }
+
+        return Result::success($result);
+    }
+    public function readNotice(array $data): array
+    {
+        $result = Notice::where('id', $data['id'])->first();
+        // var_dump($result['re_user_ids'], '--------------------');
+        if (empty($result)) {
+            return Result::error("查询失败", 0);
+        }
+        //判断$requireData['user_id'] ; 是不是在 re_user_ids 中,如果在,就写入read_id,存成数组的json
+        $re_user_ids = json_decode($result['re_user_ids'], true);
+        var_dump($re_user_ids, '--------------1---test---------');
+        var_dump($data, '--------------1---test---------');
+
+        if (is_array($re_user_ids) && in_array($data['user_id'], $re_user_ids)) {
+            //如果已经存在,就不再添加
+            if (isset($result['read_id']) && !empty($result['read_id'])) {
+                $read_id = json_decode($result['read_id'], true);
+                if (!is_array($read_id)) {
+                    $read_id = [];
+                }
+                if (!in_array($data['user_id'], $read_id)) {
+                    $read_id[] = $data['user_id'];
+                    $result['read_id'] = json_encode($read_id);
+                    Notice::where('id', $data['id'])->update(['read_id' => json_encode($read_id)]);
+                }
+            } else {
+                //如果不存在,就添加
+                $result['read_id'] = json_encode([$data['user_id']]);
+                Notice::where('id', $data['id'])->update(['read_id' => json_encode([$data['user_id']])]);
+            }
+        }
+        return Result::success($result);
     }
-    public function getGoodInfo(array $data)
+
+    public function addNotice(array $data): array
     {
-        return $this->__request(__FUNCTION__, $data);
+        date_default_timezone_set('Asia/Shanghai');
+        $data['created_at'] = date('Y-m-d H:i:s');
+        $data['updated_at'] = date('Y-m-d H:i:s');
+        // $data['level'] = "1,2,3,4,5";
+        $level = json_decode($data['level'], true);
+        $user_id = UserInfo::
+            //city_id不是null
+            whereNotNull('city_id')
+            ->whereNotNull('department_id')
+            ->where(function ($query) use ($data) {
+                $query->where(function ($subQuery) use ($data) {
+                    $subQuery->whereRaw("JSON_VALID(city_arr_id) AND JSON_CONTAINS(city_arr_id, '" . intval($data['city_id']) . "') = 1");
+                });
+            })
+            ->where(function ($query) use ($data) {
+                $query->where(function ($subQuery) use ($data) {
+                    $subQuery->whereRaw("JSON_VALID(department_arr_id) AND JSON_CONTAINS(department_arr_id, '" . intval($data['department_id']) . "') = 1");
+                });
+            })
+            ->when(isset($level) && is_array($level), function ($query) use ($level) {
+                $query->whereIn('level', $level);
+            })
+            ->pluck('user_id')->toArray();
+        $user_id = array_unique($user_id);
+        $chat_ids = $user_id;
+        $user_id = json_encode($user_id);
+        $data['re_user_ids'] = $user_id;
+        $this->sendMessage([
+            'talk_type' => 700,
+            'title' => $data['title'],
+            'content' => '提交了审核',
+            'messageType' => 5,
+        ]);
+        $result = Notice::insertGetId($data);
+
+        if (empty($result)) {
+            return Result::error("添加失败", 0);
+        }
+        return Result::success($result);
     }
-    public function addGood(array $data)
+    public function updateNotice(array $data): array
     {
-        return $this->__request(__FUNCTION__, $data);
+        date_default_timezone_set('Asia/Shanghai');
+        //根据city_id  和department_id  查询出对应的user_id,放到 re_user_ids
+        $user_id = UserInfo::
+            //city_id不是null
+            whereNotNull('city_id')
+            ->whereNotNull('department_id')
+            ->where(function ($query) use ($data) {
+                $query->where(function ($subQuery) use ($data) {
+                    $subQuery->whereRaw("JSON_VALID(city_arr_id) AND JSON_CONTAINS(city_arr_id, '" . intval($data['city_id']) . "') = 1");
+                });
+            })
+            ->where(function ($query) use ($data) {
+                $query->where(function ($subQuery) use ($data) {
+                    $subQuery->whereRaw("JSON_VALID(department_arr_id) AND JSON_CONTAINS(department_arr_id, '" . intval($data['department_id']) . "') = 1");
+                });
+            })
+            ->pluck('user_id')->toArray();
+        $user_id = array_unique($user_id);
+        $user_id = json_encode($user_id);
+        $data['re_user_ids'] = $user_id;
+        $data['updated_at'] = date('Y-m-d H:i:s');
+        $this->sendMessage([
+            'talk_type' => 700,
+            'title' => $data['title'],
+            'content' => '提交了审核',
+            'messageType' => 5,
+        ]);
+        $result = Notice::where('id', $data['id'])->update($data);
+        return Result::success($result);
     }
-    public function delGood(array $data)
+
+
+    public function getNoticeList(array $data): array
     {
-        return $this->__request(__FUNCTION__, $data);
+
+        $where = [];
+        //title
+        if (isset($data['title']) && !empty($data['title'])) {
+            $where[] = ['notice.title', 'like', '%' . $data['title'] . '%'];
+        }
+        //level
+        if (isset($data['level']) && !empty($data['level'])) {
+            $where[] = ['notice.level', '=', $data['level']];
+        }
+        //status
+        if (isset($data['status']) && !empty($data['status'])) {
+            $where[] = ['notice.status', '=', $data['status']];
+        }
+        //type
+        if (isset($data['type']) && !empty($data['type'])) {
+            $where[] = ['notice.type', '=', $data['type']];
+        }
+        var_dump($data, '------------11111-2----test---------');
+        if ($data['type_id'] == 10000) {
+            $result = Notice::when(!empty($data['status1']), function ($query) use ($data) {
+                return $query->whereIn('notice.status', [1, 3]);   //1待审核2已审核3已拒绝
+            })
+                ->where($where)
+                ->orderBy('updated_at', 'desc')
+                ->limit($data['page_size'])
+                ->offset(($data['page'] - 1) * $data['page_size'])
+                ->get();
+            $total = Notice::when(!empty($data['status1']), function ($query) use ($data) {
+                return $query->whereIn('notice.status', [1, 3]);   //1待审核2已审核3已拒绝
+            })
+                ->where($where)
+                ->orderBy('updated_at', 'desc')
+                ->count();
+        } else {
+            $result = Notice::where($where)
+                // ->where('user_id', $data['user_id'])
+                ->Where(function ($query) use ($data) {
+                    $query->Where(function ($q) use ($data) {
+                        $q->whereRaw('JSON_CONTAINS(notice.re_user_ids, \'' . $data['user_id'] . '\')')
+                            ->orWhere('notice.user_id', $data['user_id']);
+                    });
+                })
+
+                ->when(!empty($data['status1']), function ($query) use ($data) {
+                    return $query->whereIn('notice.status', [1, 3]);   //1待审核2已审核3已拒绝
+                })
+                ->orderBy('updated_at', 'desc')
+                ->limit($data['page_size'])
+                ->offset(($data['page'] - 1) * $data['page_size'])
+                ->get();
+            $total = Notice::where($where)
+                ->when(!empty($data['status1']), function ($query) use ($data) {
+                    return $query->whereIn('notice.status', [1, 3]);   //1待审核2已审核3已拒绝
+                })
+                // ->where('user_id', $data['user_id'])
+                ->Where(function ($query) use ($data) {
+                    $query->Where(function ($q) use ($data) {
+                        $q->whereRaw('JSON_CONTAINS(notice.re_user_ids, \'' . $data['user_id'] . '\')')
+                            ->orWhere('notice.user_id', $data['user_id']);
+                    });
+                })
+                ->count();
+        }
+        if (empty($result)) {
+            return Result::error("查询失败", 0);
+        }
+        $data = [
+            'rows' => $result,
+            'count' => $total,
+        ];
+        return Result::success($data);
+    }
+
+
+    public function noticeList(array $data): array
+    {
+        $where = [];
+        //title
+        if (isset($data['title']) && !empty($data['title'])) {
+            $where[] = ['notice.title', 'like', '%' . $data['title'] . '%'];
+        }
+        //level
+        if (isset($data['level']) && !empty($data['level'])) {
+            $where[] = ['notice.level', '=', $data['level']];
+        }
+        //status
+        if (isset($data['status']) && !empty($data['status'])) {
+            $where[] = ['notice.status', '=', $data['status']];
+        }
+        //type
+        if (isset($data['type']) && !empty($data['type'])) {
+            $where[] = ['notice.type', '=', $data['type']];
+        }
+        var_dump($data, '------------11111-2----test---------');
+        if ($data['type_id'] == 10000) {
+            $result = Notice::when(!empty($data['status1']), function ($query) use ($data) {
+                return $query->whereIn('notice.status', [1, 3]);   //1待审核2已审核3已拒绝
+            })
+                ->where($where)
+                ->orderBy('updated_at', 'desc')
+                ->limit($data['page_size'])
+                ->offset(($data['page'] - 1) * $data['page_size'])
+                ->get();
+            $total = Notice::when(!empty($data['status1']), function ($query) use ($data) {
+                return $query->whereIn('notice.status', [1, 3]);   //1待审核2已审核3已拒绝
+            })
+                ->where($where)
+                ->orderBy('updated_at', 'desc')
+                ->count();
+        } else {
+            $result = Notice::where($where)
+                // ->where('user_id', $data['user_id'])
+                ->Where(function ($query) use ($data) {
+                    $query->Where(function ($q) use ($data) {
+                        $q->whereRaw('JSON_CONTAINS(notice.re_user_ids, \'' . $data['user_id'] . '\')')
+                            ->orWhere('notice.user_id', $data['user_id']);
+                    });
+                })
+
+                ->when(!empty($data['status1']), function ($query) use ($data) {
+                    return $query->whereIn('notice.status', [1, 3]);   //1待审核2已审核3已拒绝
+                })
+                ->orderBy('updated_at', 'desc')
+                ->limit($data['page_size'])
+                ->offset(($data['page'] - 1) * $data['page_size'])
+                ->get();
+            $total = Notice::where($where)
+                ->when(!empty($data['status1']), function ($query) use ($data) {
+                    return $query->whereIn('notice.status', [1, 3]);   //1待审核2已审核3已拒绝
+                })
+                // ->where('user_id', $data['user_id'])
+                ->Where(function ($query) use ($data) {
+                    $query->Where(function ($q) use ($data) {
+                        $q->whereRaw('JSON_CONTAINS(notice.re_user_ids, \'' . $data['user_id'] . '\')')
+                            ->orWhere('notice.user_id', $data['user_id']);
+                    });
+                })
+                ->count();
+        }
+        if (empty($result)) {
+            return Result::error("查询失败", 0);
+        }
+        $data = [
+            'rows' => $result,
+            'count' => $total,
+        ];
+        return Result::success($data);
+    }
+    public function getNoticeDetail(array $data): array
+    {
+        $result = Notice::where('id', $data['id'])->first();
+        if (empty($result)) {
+            return Result::error("查询失败", 0);
+        }
+        return Result::success($result);
     }
-    public function updateGood(array $data)
+    public function deleteNotice(array $data): array
     {
-        return $this->__request(__FUNCTION__, $data);
+        $notice = Notice::where('id', $data['id'])->first();
+        if (empty($notice)) {
+            return Result::error("删除失败", 0);
+        }
+        $chat_group_id = $notice->group_id;
+        if ($chat_group_id) {
+            //删除群聊
+            ChatGroups::where('id', $chat_group_id)->delete();
+            //删除群成员
+            ChatGroupsMember::where('group_id', $chat_group_id)->delete();
+            //删除群聊记录
+            ChatRecords::where('receiver_id', $chat_group_id)->delete();
+        }
+        $result = Notice::where('id', $data['id'])->delete();
+        return Result::success($result);
+    }
+    public function complaintList(array $data): array
+    {
+        var_dump($data, '---------1---------');
+        $type_id = isset($data['type_id']) ? $data['type_id'] : '';
+        unset($data['type_id']);
+        $user_id = isset($data['user_id']) ? $data['user_id'] : '';
+        $where = [];
+        if ($type_id != 10000 && empty($data['deal_user'])) {
+            // $where['complaint.user_id'] = $user_id;
+        }
+        if (!empty($data['title'])) {
+            $where[] = ['complaint.title', 'like', '%' . $data['title'] . '%'];
+        }
+        if (!empty($data['department_id'])) {
+            $where['complaint.department_id'] =   $data['department_id'];
+        }
+        if (!empty($data['deal'])) {
+            $where['complaint.deal'] =   $data['deal'];
+        }
+        if (!empty($data['status'])) {
+            $where['complaint.status'] =  $data['status'];
+        }
+        var_dump(!empty($data['deal_user']), '----------1');
+        var_dump($where, '----------2');
+        $result = Complaint::where($where)
+            ->when(!empty($data['status1']), function ($query) use ($data) {
+                $query->whereIn('complaint.status', [1, 3]);   //1待审核2已审核3已拒绝
+            })
+            ->when(!empty($data['deal_user'])  &&  $type_id != 10000, function ($query) use ($data) {
+                //json  re_user_ids   data[user_id]是不是在里面 
+                $query->Where(function ($q) use ($data) {
+                    $q->whereRaw('JSON_CONTAINS(complaint.re_user_ids, \'' . $data['user_id'] . '\')')
+                        ->where('complaint.status', 2);
+                });
+            })
+            ->leftJoin('department', 'complaint.department_id', '=', 'department.id')
+            // ->leftJoin('user', 'complaint.user_id', '=', 'user.id')
+            ->leftJoin('district', 'district.id', '=', 'complaint.city_id')
+            ->select('complaint.*', 'department.name as department_name', 'district.name as cityname')
+            ->orderBy('updated_at', 'desc')
+            ->paginate($data['page_size'], ['*'], 'page', $data['page']);
+        //sql输出
+
+        if (empty($result)) {
+            return Result::error("暂无投诉信息", 0);
+        }
+        // 取出数据
+        $rows = $result->items();
+        $count = $result->total();
+
+        $responseData = [
+            'rows' => $rows,
+            'count' => $count,
+        ];
+        return Result::success($responseData);
+    }
+    public function getComplaintList(array $data): array
+    {
+        var_dump($data, '00000001000000000000');
+        $type_id = isset($data['type_id']) ? $data['type_id'] : '';
+        unset($data['type_id']);
+        $user_id = isset($data['user_id']) ? $data['user_id'] : '';
+        $where = [];
+        if ($type_id != 10000 && empty($data['deal_user'])) {
+            $where['complaint.user_id'] = $user_id;
+        }
+        if (!empty($data['title'])) {
+            $where[] = ['complaint.title', 'like', '%' . $data['title'] . '%'];
+        }
+        if (!empty($data['department_id'])) {
+            $where['complaint.department_id'] =   $data['department_id'];
+        }
+        if (!empty($data['deal'])) {
+            $where['complaint.deal'] =   $data['deal'];
+        }
+        if (!empty($data['status'])) {
+            $where['complaint.status'] =  $data['status'];
+        }
+        var_dump(!empty($data['deal_user']), '----------1');
+        var_dump($where, '----------2');
+        $result = Complaint::where($where)
+            ->when(!empty($data['status1']), function ($query) use ($data) {
+                $query->whereIn('complaint.status', [1, 3]);   //1待审核2已审核3已拒绝
+            })
+            // ->when(!empty($data['deal_user'])  &&  $type_id != 10000, function ($query) use ($data) {
+            //   //json  re_user_ids   data[user_id]是不是在里面 
+            //   $query->Where(function ($q) use ($data) {
+            //     $q->whereRaw('JSON_CONTAINS(complaint.re_user_ids, \'' . $data['user_id'] . '\')')
+            //       ->where('complaint.status', 2);
+            //   });
+            // })
+            ->leftJoin('department', 'complaint.department_id', '=', 'department.id')
+            // ->leftJoin('user', 'complaint.user_id', '=', 'user.id')
+            ->leftJoin('district', 'district.id', '=', 'complaint.city_id')
+            ->select('complaint.*', 'department.name as department_name', 'district.name as cityname')
+            ->orderBy('updated_at', 'desc')
+            ->paginate($data['page_size'], ['*'], 'page', $data['page']);
+        //sql输出
+
+        if (empty($result)) {
+            return Result::error("暂无投诉信息", 0);
+        }
+        // 取出数据
+        $rows = $result->items();
+        $count = $result->total();
+
+        $responseData = [
+            'rows' => $rows,
+            'count' => $count,
+        ];
+        return Result::success($responseData);
+    }
+    public function getComplaintInfo(array $data): array
+    {
+        $result = Complaint::where('id', $data['id'])->first();
+        if (empty($result)) {
+            return Result::error("查询失败", 0);
+        }
+        return Result::success($result);
+    }
+    public function readComplaint(array $data): array
+    {
+        $result = Complaint::where('id', $data['id'])->first();
+        if (empty($result)) {
+            return Result::error("查询失败", 0);
+        }
+        //判断$requireData['user_id'] ; 是不是在 re_user_ids 中,如果在,就写入read_id,存成数组的json
+        $re_user_ids = json_decode($result['re_user_ids'], true);
+        if (is_array($re_user_ids) && in_array($data['user_id'], $re_user_ids)) {
+            //如果已经存在,就不再添加
+            if (isset($result['read_id']) && !empty($result['read_id'])) {
+                $read_id = json_decode($result['read_id'], true);
+                if (!is_array($read_id)) {
+                    $read_id = [];
+                }
+                if (!in_array($data['user_id'], $read_id)) {
+                    $read_id[] = $data['user_id'];
+                    $result['read_id'] = json_encode($read_id);
+                    Complaint::where('id', $data['id'])->update(['read_id' => json_encode($read_id)]);
+                }
+            } else {
+                //如果不存在,就添加
+                $result['read_id'] = json_encode([$data['user_id']]);
+                Complaint::where('id', $data['id'])->update(['read_id' => json_encode([$data['user_id']])]);
+            }
+        }
+        return Result::success($result);
     }
 
-    //20250226  产品列表
-    //20250306  求职信息    
-    public function getJobHuntingList(array $data)
+    public function addComplaint(array $data): array
     {
-        return $this->__request(__FUNCTION__, $data);
+        date_default_timezone_set('Asia/Shanghai');
+        $data['created_at'] = date('Y-m-d H:i:s');
+        $data['updated_at'] = date('Y-m-d H:i:s');
+        $this->sendMessage([
+            'talk_type' => 800,
+            'title' => $data['title'],
+            'content' => '提交了审核',
+            'messageType' => 6,
+        ]);
+        $result = Complaint::create($data);
+        return Result::success($result);
     }
-    public function getJobHuntingApply(array $data)
+    public function updateComplaint(array $data): array
     {
-        return $this->__request(__FUNCTION__, $data);
+
+        date_default_timezone_set('Asia/Shanghai');
+        $data['updated_at'] = date('Y-m-d H:i:s');
+        $user_id = $data['user_id'] ?? 0;
+        $type_id = $data['type_id'] ?? 0;
+        unset($data['user_id']);
+        unset($data['type_id']);
+        $this->sendMessage([
+            'talk_type' => 800,
+            'title' => $data['title'],
+            'content' => '提交了审核',
+            'messageType' => 6,
+        ]);
+        $result = Complaint::where('id', $data['id'])->update($data);
+        return Result::success($result);
     }
-    public function getJobHuntingInfo(array $data)
+    public function deleteComplaint(array $data): array
     {
-        return $this->__request(__FUNCTION__, $data);
+        $result = Complaint::where('id', $data['id'])->delete();
+        return Result::success($result);
     }
-    public function addJobHunting(array $data)
+    public function getComplainInfo(array $data): array
     {
-        return $this->__request(__FUNCTION__, $data);
+        $result = Complaint::where('id', $data['id'])->first();
+        if (empty($result)) {
+            return Result::error("查询失败", 0);
+        }
+        return Result::success($result);
     }
-    public function delJobHunting(array $data)
+    public function updateComplaintStatus(array $data): array
     {
-        return $this->__request(__FUNCTION__, $data);
+        date_default_timezone_set('Asia/Shanghai');
+        $data['updated_at'] = date('Y-m-d H:i:s');
+        $user_id = $data['user_id'] ?? 0;
+        $type_id = $data['type_id'] ?? 0;
+
+        unset($data['user_id']);
+        unset($data['type_id']);
+        //处理, 写入处理人
+        if (isset($data['deal']) && ($data['deal'] == 2 || $data['deal'] == 4)) {
+            $data['real_deal_user'] = $user_id;
+        }
+        //如果是deal 23,则判断是不是处理人
+        if (isset($data['deal']) && ($data['deal'] == 3) && $type_id != 10000) {
+            $complaintInof = Complaint::where('id', $data['id'])
+                ->where('real_deal_user', $user_id)
+                ->first();
+            if (empty($complaintInof)) {
+                return Result::error("处理人错误", 0);
+            }
+        }
+        $complaintInfo = Complaint::where('id', $data['id'])->first();
+        if ($data['status'] == 1) {
+            $this->sendMessage([
+                'talk_type' => 800,
+                'title' => $complaintInfo['title'],
+                'content' => '提交了审核',
+                'messageType' => 6,
+            ]);
+        }
+        if ($data['status'] == 2 && !isset($data['deal'])) {
+            $this->sendMessage([
+                'talk_type' => 801,
+                'title' => $complaintInfo['title'],
+                'content' => '审核通过',
+                'messageType' => 6,
+                'user_id' => $complaintInfo['user_id'],
+            ]);
+            $this->sendMessage([
+                'talk_type' => 802,
+                'title' => $complaintInfo['title'],
+                'content' => '待处理',
+                'messageType' => 6,
+                'user_id' => $complaintInfo['re_user_ids'],
+            ]);
+        }
+        if ($data['status'] == 3 && !isset($data['deal'])) {
+            $this->sendMessage([
+                'talk_type' => 801,
+                'title' => $complaintInfo['title'],
+                'content' => '审核拒绝',
+                'messageType' => 6,
+                'user_id' => $complaintInfo['user_id'],
+            ]);
+        }
+        if ($data['status'] == 2 && isset($data['deal']) && $data['deal'] == 2) {
+            $this->sendMessage([
+                'talk_type' => 802,
+                'title' => $complaintInfo['title'],
+                'content' => '处理中',
+                'messageType' => 6,
+                'user_id' => $complaintInfo['re_user_ids'],
+            ]);
+        }
+        if ($data['status'] == 2 && isset($data['deal']) && $data['deal'] == 4) {
+            $this->sendMessage([
+                'talk_type' => 802,
+                'title' => $complaintInfo['title'],
+                'content' => '不予处理',
+                'messageType' => 6,
+                'user_id' => $complaintInfo['re_user_ids'],
+            ]);
+        }
+        if ($data['status'] == 2 && isset($data['deal']) && $data['deal'] == 3) {
+            $this->sendMessage([
+                'talk_type' => 802,
+                'title' => $complaintInfo['title'],
+                'content' => '已完结',
+                'messageType' => 6,
+                'user_id' => $complaintInfo['re_user_ids'],
+            ]);
+        }
+        $result = complaint::where('id', $data['id'])->update($data);
+        return Result::success($result);
     }
-    public function updateJobHunting(array $data)
+    public function updateGoodStatus(array $data): array
     {
-        return $this->__request(__FUNCTION__, $data);
+        $user_id = $data['user_id'] ?? 0;
+        $type_id = $data['type_id'] ?? 0;
+        unset($data['user_id']);
+        unset($data['type_id']);
+        $goodInfo = Good::where('id', $data['id'])->first();
+        if ($data['status'] == 2) {
+            $this->sendMessage([
+                'talk_type' => 201,
+                'title' => $goodInfo['name'],
+                'content' => '审核通过',
+                'messageType' => 3,
+                'user_id' => $goodInfo['user_id'],
+            ]);
+        }
+        if ($data['status'] == 3) {
+            $this->sendMessage([
+                'talk_type' => 201,
+                'title' => $goodInfo['name'],
+                'content' => '审核拒绝',
+                'messageType' => 3,
+                'user_id' => $goodInfo['user_id'],
+            ]);
+        }
+        if ($data['status'] == 1) {
+            $this->sendMessage([
+                'talk_type' => 200,
+                'title' => $goodInfo['name'],
+                'content' => '提交了审核',
+                'messageType' => 3,
+            ]);
+        }
+        $result = Good::where('id', $data['id'])->update($data);
+        return Result::success($result);
     }
-    public function getJobHuntingData(array $data)
+    public function updateJobHuntingStatus(array $data): array
     {
-        return $this->__request(__FUNCTION__, $data);
+        $user_id = $data['user_id'] ?? 0;
+        $type_id = $data['type_id'] ?? 0;
+        unset($data['user_id']);
+        unset($data['type_id']);
+        $jogHuntingInfo = JobHunting::where('id', $data['id'])->first();
+        if ($data['status'] == 2) {
+            $this->sendMessage([
+                'talk_type' => 601,
+                'title' => $jogHuntingInfo['name'],
+                'content' => '审核通过',
+                'messageType' => 11,
+                'user_id' => $jogHuntingInfo['user_id'],
+            ]);
+        }
+        if ($data['status'] == 3) {
+            $this->sendMessage([
+                'talk_type' => 601,
+                'title' => $jogHuntingInfo['name'],
+                'content' => '审核拒绝',
+                'messageType' => 11,
+                'user_id' => $jogHuntingInfo['user_id'],
+            ]);
+        }
+        if ($data['status'] == 1) {
+            $this->sendMessage([
+                'talk_type' => 600,
+                'title' => $jogHuntingInfo['name'],
+                'content' => '提交了审核',
+                'messageType' => 11,
+            ]);
+        }
+        $result = JobHunting::where('id', $data['id'])->update($data);
+        return Result::success($result);
     }
-    //20250306  求职信息    
+    public function updateNoticeStatus(array $data): array
+    {
+        $user_id = $data['user_id'] ?? 0;
+        $type_id = $data['type_id'] ?? 0;
+        unset($data['user_id']);
+        unset($data['type_id']);
+        //查询公告
+        $notice = Notice::where('id', $data['id'])->first();
+        if (empty($notice)) {
+            return Result::error("公告不存在", 0);
+        }
+        //$chat_ids 去除掉$data['user_id']
+        $chat_ids = json_decode($notice['re_user_ids'], true);
+        $chat_ids = array_diff($chat_ids, [$notice['user_id']]);
+        //如果公告的状态是2,且是群聊公告,且状态是1,则创建群聊,第一次审核通过的时候处理成群聊
+        if ($data['status'] == 2 && $notice['is_group'] == 1 && ($notice['status'] == 1 || $notice['status'] == 3) && empty($notice['group_id'])) {
+            //chat_group
+            $group_id = PublicData::uuid();
+            $groupData = [
+                'id' => $group_id,
+                'creator_id' => $notice['user_id'],
+                'group_name' => $notice['group_name'] ?? '',
+                'profile' => $notice['profile'] ?? 0,
+            ];
+            var_dump($groupData, '-----------------groupData-------');
+            $groupResult = ChatGroups::insertGetId($groupData);
+            var_dump($groupResult, '-----------------groupid-------');
+            $groupMemberData = [
+                'id' => PublicData::uuid(),
+                'user_id' => $notice['user_id'],
+                'group_id' => $group_id,
+                'leader' => 2,
+            ];
+            $groupMemberResult = ChatGroupsMember::insertGetId($groupMemberData);
 
+            //插入群成员表
+            $groupMemberDataUser = [];
+            $chatData = [];
+            foreach ($chat_ids as $key => $value) {
+                $groupMemberDataUser[] = [
+                    'id' => PublicData::uuid(),
+                    'user_id' => $value,
+                    'group_id' => $group_id,
+                    'leader' => 1,
+                ];
+                $chatData[] = [
+                    'user_id' => $value,
+                    'msg_type' => 1,
+                    'receiver_id' => $group_id,
+                    'content' => '通过通知创建群聊',
+                    'group_receiver_id' => $notice['user_id'],
+                    'action' => 'recieved',
+                    'created_at' => date('Y-m-d H:i:s'),
+                ];
+            }
+            var_dump($groupMemberDataUser, '-----------------groupMemberDataUser-------');
+            ChatGroupsMember::insert($groupMemberDataUser);
+            //插入一条管理员聊天记录
+            $chatData[] = [
+                'user_id' => $notice['user_id'],
+                'msg_type' => 1,
+                'receiver_id' => $group_id,
+                'content' => '通过通知创建群聊',
+                'group_receiver_id' => $notice['user_id'],
+                'action' => 'said',
+                'created_at' => date('Y-m-d H:i:s'),
+            ];
+            var_dump($chatData, '-----------------chatData-------');
+            $chatResult = ChatRecords::insert($chatData);
+            //处理imp
+            $group = [
+                'type' => 1,
+                'name' => $notice['group_name'] ?? '',
+                'profile' => '',
+                'avatar' => '',
+                'creator_id' => $notice['user_id'],
+            ];
+            $groupResult = GroupImp::insertGetId($group);
+            var_dump($groupResult, '获取imp group_id');
+            $groupMember = [
+                'user_id' => $notice['user_id'],
+                'group_id' => $groupResult,
+                'leader' => 1,
+                'join_time' => Date('Y-m-d H:i:s')
+            ];
+            $groupMemberResult = GroupMemberImp::insertGetId($groupMember);
+            $talk_session = [
+                'user_id' => $notice['user_id'],
+                'to_from_id' => $groupResult,
+                'talk_mode' => 2,
+                'created_at' => Date('Y-m-d H:i:s'),
+                'updated_at' => Date('Y-m-d H:i:s'),
+            ];
+            $talk_session_result = GroupTalkImp::insertGetId($talk_session);
+            //被通知人员处理
+            foreach ($chat_ids as $key => $value) {
+                $groupMemberdata[] = [
+                    'user_id' => $value,
+                    'group_id' => $groupResult,
+                    'leader' => 3,
+                    'join_time' => Date('Y-m-d H:i:s')
+                ];
+                $talk_sessionData[] = [
+                    'user_id' => $value,
+                    'to_from_id' => $groupResult,
+                    'talk_mode' => 2,
+                    'created_at' => Date('Y-m-d H:i:s'),
+                    'updated_at' => Date('Y-m-d H:i:s'),
+                ];
+            }
+            $groupResult1 = GroupMemberImp::insert($groupMemberdata);
+            $talk_sessionResult = GroupTalkImp::insert($talk_sessionData);
+            $group_id = $groupResult;
+            //更新result的 group_id
+            $data['group_id'] = $group_id;
+            Notice::where(['id' => $data['id']])->update($data);
+        }
+        if (($data['status'] == 1 || $data['status'] == 3) && $notice['is_group'] == 1 && $notice['status'] == 2 && !empty($notice['group_id'])) {
+            //删除掉信息
+            GroupImp::where('id', $notice['group_id'])->delete();
+            GroupMemberImp::where('group_id', $notice['group_id'])->delete();
+            GroupTalkImp::where('to_from_id', $notice['group_id'])->delete();
+            foreach ($chat_ids as $key => $value) {
+            }
+            //聊天记录删除
 
+            //如果是群聊公告,且已经有群聊id,则更新公告的group_id
+            $data['group_id'] = null;
+            Notice::where(['id' => $data['id']])->update($data);
+        }
+        $result = Notice::where('id', $data['id'])->update($data);
+        $noticeInfo = Notice::where('id', $data['id'])->first();
+        if ($data['status'] == 2) {
+            $this->sendMessage([
+                'talk_type' => 701,
+                'title' => $noticeInfo['title'],
+                'content' => '审核通过',
+                'messageType' => 3,
+                'user_id' => $noticeInfo['user_id'],
+            ]);
+        }
+        if ($data['status'] == 3) {
+            $this->sendMessage([
+                'talk_type' => 701,
+                'title' => $noticeInfo['title'],
+                'content' => '审核拒绝',
+                'messageType' => 3,
+                'user_id' => $noticeInfo['user_id'],
+            ]);
+        }
+        if ($data['status'] == 1) {
+            $this->sendMessage([
+                'talk_type' => 700,
+                'title' => $noticeInfo['title'],
+                'content' => '提交了审核',
+                'messageType' => 3,
+            ]);
+        }
+        return Result::success($result);
+    }
+    public function getDUser(array $data): array
+    {
+        if (!empty($data['ids'])) {
+            $user = User::whereIn('id', $data['ids'])->getall();
+            if (empty($user)) {
+                return Result::error('无数据', 0);
+            }
+            return Result::success($user);
+        }
+        $where = [];
+        if (!empty($data['department_id'])) {
+            $where['department_id'] = $data['department_id'];
+        }
+        if (!empty($data['city_id'])) {
+            $where['city_id'] = $data['city_id'];
+        }
+        $result = User::where('type_id', 2)
+            ->where('status', 1)
+            ->where($where)
+            ->leftJoin('user_info', 'user.id', '=', 'user_info.user_id')
+            ->get();
+        if (empty($result)) {
+            return Result::error("查询失败", 0);
+        }
+        return Result::success($result);
+    }
 
     /**
+     * 验证导航名称是否重复
+     * @return void
+     */
+    public function checkCategoryName(array $data): array
+    {
+        $result = Category::when($data, function ($query) use ($data) {
+            if (isset($data['name']) && $data['name']) {
+                $query->where("name", $data['name']);
+            }
+            if (isset($data['id']) && $data['id']) {
+                $query->where("id", "!=", $data['id']);
+            }
+        })->first();
+        if ($result) {
+            return Result::error("已存在");
+        } else {
+            return Result::success();
+        }
+    }
+
+    //20250226  产品列表
+
+    // 20250306 -------招聘--------fr
+    /*
+    * 招聘列表
+    * */
+    public function getJobRecruitingList(array $data): array
+    {
+        $where = [];
+        // 状态   0:待审核;1:已审核通过;(只有企业会员需要审核);2:已拒绝;3;已撤回;
+        if ($data['checkout'] == 0) {
+            $job_status = [0, 2];
+        } else {
+            $job_status = [1];
+        }
+        if (isset($data['keyword']) && !empty($data['keyword'])) {
+            array_push($where, ['job_recruiting.title', 'like', '%' . $data['keyword'] . '%']);
+        }
+        $user = User::where('id', $data['user_id'])->first();
+        if (empty($user)) {
+            return Result::error("用户不存在", 0);
+        }
+        //   3:企业会员
+        if ($user['type_id'] == 3) {
+            array_push($where, ['job_recruiting.user_id', $data['user_id']]);
+            array_push($where, ['job_recruiting.website_id', $data['website_id']]);
+        }
+
+        // 如果 $where 为空,则不添加 where 条件
+        $result['rows'] = JobRecruiting::when(!empty($where), function ($query) use ($where) {
+            return $query->where($where);
+        })
+            ->whereIn('job_recruiting.status', $job_status)
+            ->leftJoin('website', 'job_recruiting.website_id', '=', 'website.id')
+            ->leftJoin('user', 'job_recruiting.user_id', '=', 'user.id')
+            ->select('job_recruiting.*', 'website.website_name as website_name', 'user.user_name as user_name')
+            ->orderBy("updated_at", "desc")
+            ->offset(($data['page'] - 1) * $data['page_size'])
+            ->limit($data['page_size'])
+            ->get()
+            ->all();
+        $result['count'] = JobRecruiting::when(!empty($where), function ($query) use ($where) {
+            return $query->where($where);
+        })
+            ->whereIn('job_recruiting.status', $job_status)
+            ->count();
+        if (empty($result)) {
+            return Result::error("暂无招聘信息", 0);
+        }
+        return Result::success($result);
+    }
+
+
+    /*
+    * 招聘信息添加
+    * */
+    public function addJobRecruiting(array $data): array
+    {
+        // var_dump('添加招聘进入news------data',$data);
+        // return Result::success($data);
+        $user = User::where('user.id', $data['user_id'])
+            ->where('user.status', 1)
+            ->leftJoin('user_info', 'user_info.user_id', 'user.id')
+            ->select(
+                'user.type_id',
+                'user.mobile',
+                'user.email',
+                'user_info.business_name',
+                'user_info.company_hy_id',
+                'user_info.company_nature',
+                'user_info.company_size',
+                'user_info.introduction',
+                'user_info.real_name',
+                'user_info.company_url',
+                'user_info.address_arr_id',
+                'user_info.address'
+            )
+            ->first();
+        if (empty($user) || $user['type_id'] != $data['user_type']) {
+            return Result::error("用户不存在", 0);
+        }
+        $web = Website::where('id', $data['website_id'])->first();
+        if (empty($web)) {
+            return Result::error("网站不存在", 0);
+        }
+        // var_dump('添加招聘进入news---user---user',$user);
+        // 处理招聘关键词
+        if (isset($data['keyword']) && !empty($data['keyword'])) {
+            $data['keyword'] = str_replace(',', ',', $data['keyword']);
+        } else {
+            Jieba::init(); // 初始化 jieba-php
+            Finalseg::init();
+            $segList = Jieba::cut($data['title']);
+            $segList1 = array_slice($segList, 0, 8);
+            $data['keyword'] = implode(',', $segList1);
+        }
+        if (!isset($data['seo_description']) || empty($data['seo_description'])) {
+            $content = $data['description'];
+            // 去除 <style> 和 <script> 标签及其内容
+            $content = preg_replace('/<(style|script)[^>]*>.*?<\/\1>/is', '', $content);
+            // 去除所有 HTML 标签
+            $content = strip_tags($content);
+            // 去除 HTML 实体
+            $content = html_entity_decode($content, ENT_QUOTES | ENT_HTML5, 'UTF-8');
+            // 只保留文本和标点符号(去除所有字母数字以外的特殊符号,可根据需要调整正则)
+            $content = preg_replace('/[^\p{L}\p{N}\p{P}\p{Zs}]+/u', '', $content);
+            // 去除多余空白
+            $content = preg_replace('/\s+/u', '', $content);
+            // 截取 100 个字符
+            $data['seo_description'] = mb_substr($content, 0, 100);
+        }
+
+        // return Result::success($user);
+        $data['action_id'] = $data['user_id'] ?? null;
+        $data['user_type'] = $user['type_id'] ?? null;
+        $data['cat_arr_id'] = isset($data['cat_arr_id']) && !empty($data['cat_arr_id']) ? array_values(array_unique($data['cat_arr_id'])) : [];
+
+        if (isset($data['cat_arr_id']) && !empty($data['cat_arr_id']) && is_array($data['cat_arr_id'])) {
+            $data['catid'] = end($data['cat_arr_id']);
+        } else {
+            $data['catid'] = 0;
+        }
+        $data['city_arr_id'] = isset($data['city_arr_id']) && !empty($data['city_arr_id']) ? array_values(array_unique($data['city_arr_id'])) : [];
+        $data['cat_arr_id'] = isset($data['cat_arr_id']) && $data['cat_arr_id'] != [] ? json_encode(array_map('intval', $data['cat_arr_id'])) : '[]';
+        $data['city_arr_id'] = isset($data['city_arr_id']) && !empty($data['city_arr_id']) ? json_encode(array_map('intval', $data['city_arr_id'])) : '[]';
+        // 公司地址 管理员必填
+        $data['address_arr_id'] = isset($data['address_arr_id']) && !empty($data['address_arr_id']) ? array_values(array_unique($data['address_arr_id'])) : [];
+        $data['address_arr_id'] = isset($data['address_arr_id']) && $data['address_arr_id'] != [] ? json_encode(array_map('intval', $data['address_arr_id'])) : '[]';
+        // 管理员-企业相关信息
+        $company = [
+            // 'user_id' => $data['user_id']?? null,
+            'business_name' => isset($data['business_name']) && $data['business_name'] !== '' ? $data['business_name'] : null,
+            'company_hy_id' => isset($data['company_hy_id']) && $data['company_hy_id'] !== '' ? $data['company_hy_id'] : null,
+            'company_size' => isset($data['company_size']) && $data['company_size'] !== '' ? $data['company_size'] : null,
+            'company_nature' => isset($data['company_nature']) && $data['company_nature'] !== '' ? $data['company_nature'] : null,
+            'introduction' => isset($data['introduction']) && $data['introduction'] !== '' ? $data['introduction'] : null,
+            'real_name' => isset($data['real_name']) && $data['real_name'] !== '' ? $data['real_name'] : null,
+            'mobile' => isset($data['mobile']) && $data['mobile'] !== '' ? $data['mobile'] : null,
+            'company_url' => isset($data['company_url']) && $data['company_url'] !== '' ? $data['company_url'] : null,
+            'address_arr_id' => isset($data['address_arr_id']) && $data['address_arr_id'] !== '' ? $data['address_arr_id'] : null,
+            'address' => isset($data['address']) && $data['address'] !== '' ? $data['address'] : null,
+            'email' => isset($data['email']) && $data['email'] !== '' ? $data['email'] : null,
+        ];
+        //去掉相关企业信息
+        $job = array_diff_key($data, array_flip(array_keys($company)));
+        // var_dump('添加招聘进入news---job---user',$job);
+        Db::beginTransaction();
+        try {
+            //     // 先添加职位相关信息
+            if ($user['type_id'] == 10000) {
+                $job['status'] = 1;
+            }
+            $job['experience'] = isset($data['experience']) && $data['experience'] !== '' ? $data['experience'] : null;
+            $job['salary'] = isset($data['salary']) && $data['salary'] !== '' ? $data['salary'] : null;
+            $job['number'] = isset($data['number']) && $data['number'] !== '' ? $data['number'] : null;
+            $job['language'] = isset($data['language']) && $data['language'] !== '' ? $data['language'] : null;
+            $job['level'] = isset($data['level']) && $data['level'] !== '' ? $data['level'] : null;
+            $job['job_level'] = isset($data['job_level']) && $data['job_level'] !== '' ? $data['job_level'] : null;
+            $job['educational'] = isset($data['educational']) && $data['educational'] !== '' ? $data['educational'] : null;
+
+            // return Result::success($job);
+            $jobId = JobRecruiting::insertGetId($job);
+            if (empty($jobId)) {
+                Db::rollBack();
+                return Result::error("添加失败");
+            }
+
+            // 添加公司信息
+            $company['user_id'] = isset($data['user_id']) && $data['user_id'] !== '' ? $data['user_id'] : null;
+            $company['job_id'] = $jobId;
+            $company['user_type'] = isset($user['type_id']) && $user['type_id'] !== '' ? $user['type_id'] : null;
+            $company['website_id'] = isset($data['website_id']) && $data['website_id'] !== '' ? $data['website_id'] : null;
+            if ($user['type_id'] == 10000) {
+                // 管理员添加企业信息
+                $companyId = JobCompany::insertGetId($company);
+                if (empty($companyId)) {
+                    Db::rollBack();
+                    return Result::error("添加失败");
+                }
+            } else {
+                // 企业会员添加企业信息   
+                $company['user_id'] = isset($data['user_id']) && $data['user_id'] !== '' ? $data['user_id'] : null;
+                $company['website_id'] = isset($data['website_id']) && $data['website_id'] !== '' ? $data['website_id'] : null;
+                $company['user_type'] = isset($data['user_type']) && $data['user_type'] !== '' ? $data['user_type'] : null;
+                $company['job_id'] = $jobId;
+                $companyId = JobCompany::insertGetId($company);
+                if (empty($companyId)) {
+                    Db::rollBack();
+                    return Result::error("添加失败");
+                }
+            }
+            Db::commit();
+            $result = [
+                'job_id' => $jobId,
+                'company_id' => $companyId,
+            ];
+            return Result::success($result);
+        } catch (\Exception $e) {
+            Db::rollBack();
+            return Result::error($e->getMessage(), 0);
+        }
+        // return Result::success($result);
+    }
+    /*
+    * 获取招聘信息详情
+    * */
+    public function getJobRecruitingInfo(array $data): array
+    {
+        $result = JobRecruiting::where('job_recruiting.id', $data['id'])
+            ->leftJoin('website', 'job_recruiting.website_id', '=', 'website.id')
+            ->leftJoin('job_company', 'job_recruiting.id', '=', 'job_company.job_id')
+            ->select(
+                'job_recruiting.*',
+                'website.website_name as website_name',
+                'job_company.business_name',
+                'job_company.company_hy_id',
+                'job_company.company_size',
+                'job_company.company_nature',
+                'job_company.introduction',
+                'job_company.real_name',
+                'job_company.mobile',
+                'job_company.company_url',
+                'job_company.address_arr_id',
+                'job_company.address',
+                'job_company.email'
+            )
+            ->first();
+        $cityId = json_decode($result['city_arr_id'], true) ?? [];
+        if (!empty($cityId)) {
+            if (isset($cityId[1]) && $cityId[1] != null) {
+                $city = District::where('id', $cityId[1])->first(['name']);
+            } else {
+                $city = District::where('id', $cityId[0])->first(['name']);
+            }
+            $result['city'] = $city['name'] ?? '';
+        }
+        $addressId = json_decode($result['address_arr_id'], true) ?? [];
+        if (is_array($addressId) && !empty($addressId)) {
+            $address = District::whereIn('id', $addressId)
+                ->orderBy('level', 'asc')
+                ->get(['name'])
+                ->pluck('name')
+                ->implode('');
+            // $job->address_name = $address ?? '';
+            $result['address_name'] = ($address ?? '') . ($result['address'] ?? '');
+        }
+        if (empty($result)) {
+            return Result::error("招聘信息不存在", 0);
+        }
+        // return Result::success($job);
+        return Result::success($result);
+    }
+    /*
+    * 修改招聘信息
+    * */
+    public function upJobRecruiting(array $data): array
+    {
+        $job = JobRecruiting::where('job_recruiting.id', $data['id'])->first();
+        // return Result::success($job);
+        if (empty($job)) {
+            return Result::error("招聘信息不存在", 0);
+        }
+        $user = User::where('id', $data['user_id'])->first();
+        // return Result::success($user);
+        if (empty($user) || $user['type_id'] != $data['user_type']) {
+            return Result::error("用户不存在", 0);
+        }
+        if ($user['type_id'] == 3 && $job['user_id'] != $user['id']) {
+            return Result::error("用户暂无权限修改此招聘信息!", 0);
+        }
+        // 处理招聘关键词
+        if (isset($data['keyword']) && !empty($data['keyword'])) {
+            $data['keyword'] = str_replace(',', ',', $data['keyword']);
+        } else {
+            Jieba::init(); // 初始化 jieba-php
+            Finalseg::init();
+            $segList = Jieba::cut($data['title']);
+            $segList1 = array_slice($segList, 0, 8);
+            $data['keyword'] = implode(',', $segList1);
+        }
+        if (!isset($data['seo_description']) || empty($data['seo_description'])) {
+            $content = $data['description'];
+            // 去除 <style> 和 <script> 标签及其内容
+            $content = preg_replace('/<(style|script)[^>]*>.*?<\/\1>/is', '', $content);
+            // 去除所有 HTML 标签
+            $content = strip_tags($content);
+            // 去除 HTML 实体
+            $content = html_entity_decode($content, ENT_QUOTES | ENT_HTML5, 'UTF-8');
+            // 只保留文本和标点符号(去除所有字母数字以外的特殊符号,可根据需要调整正则)
+            $content = preg_replace('/[^\p{L}\p{N}\p{P}\p{Zs}]+/u', '', $content);
+            // 去除多余空白
+            $content = preg_replace('/\s+/u', '', $content);
+            // 截取 100 个字符
+            $data['seo_description'] = mb_substr($content, 0, 100);
+        }
+        $data['cat_arr_id'] = array_values(array_unique($data['cat_arr_id']));
+        if (isset($data['cat_arr_id']) && !empty($data['cat_arr_id']) && is_array($data['cat_arr_id'])) {
+            $data['catid'] = end($data['cat_arr_id']);
+        } else {
+        }
+        $data['city_arr_id'] = array_values(array_unique($data['city_arr_id']));
+        $data['cat_arr_id'] = isset($data['cat_arr_id']) ? json_encode(array_map('intval', $data['cat_arr_id'])) : '';
+        $data['city_arr_id'] = isset($data['city_arr_id']) ? json_encode(array_map('intval', $data['city_arr_id'])) : '';
+
+        // 公司地址 管理员必填
+        $data['address_arr_id'] = array_values(array_unique($data['address_arr_id']));
+        $data['address_arr_id'] = isset($data['address_arr_id']) ? json_encode(array_map('intval', $data['address_arr_id'])) : '';
+        //   管理员-企业相关信息
+        $company = [
+            // 'user_id' => $data['user_id']?? null,
+            'business_name' => isset($data['business_name']) && $data['business_name'] !== '' ? $data['business_name'] : null,
+            'company_hy_id' => isset($data['company_hy_id']) && $data['company_hy_id'] !== '' ? $data['company_hy_id'] : null,
+            'company_size' => isset($data['company_size']) && $data['company_size'] !== '' ? $data['company_size'] : null,
+            'company_nature' => isset($data['company_nature']) && $data['company_nature'] !== '' ? $data['company_nature'] : null,
+            'introduction' => isset($data['introduction']) && $data['introduction'] !== '' ? $data['introduction'] : null,
+            'real_name' => isset($data['real_name']) && $data['real_name'] !== '' ? $data['real_name'] : null,
+            'mobile' => isset($data['mobile']) && $data['mobile'] !== '' ? $data['mobile'] : null,
+            'company_url' => isset($data['company_url']) && $data['company_url'] !== '' ? $data['company_url'] : null,
+            'address_arr_id' => isset($data['address_arr_id']) && $data['address_arr_id'] !== '' ? $data['address_arr_id'] : null,
+            'address' => isset($data['address']) && $data['address'] !== '' ? $data['address'] : null,
+            'email' => isset($data['email']) && $data['email'] !== '' ? $data['email'] : null,
+        ];
+        //去掉相关企业信息 
+        $data = array_diff_key($data, array_flip(array_keys($company)));
+        $jobId = $data['id'];
+        $web = $data['website_id'];
+        $data['action_id'] = $data['user_id'];
+        unset($data['user_id']);
+        unset($data['user_type']);
+        unset($data['id']);
+        unset($data['website_id']);
+        // return Result::success($data);
+        Db::beginTransaction();
+        try {
+            // 管理员修改招聘信息
+            if ($user['type_id'] == 10000) {
+                $data['website_id'] = $web;
+                $company['website_id'] = $data['website_id'];
+                $data['status'] = 1;
+            } else {
+                $data['status'] = 0;
+            }
+            $data['experience'] = isset($data['experience']) && $data['experience'] !== '' ? $data['experience'] : null;
+            $data['salary'] = isset($data['salary']) && $data['salary'] !== '' ? $data['salary'] : null;
+            $data['number'] = isset($data['number']) && $data['number'] !== '' ? $data['number'] : null;
+            $data['language'] = isset($data['language']) && $data['language'] !== '' ? $data['language'] : null;
+            $data['level'] = isset($data['level']) && $data['level'] !== '' ? $data['level'] : null;
+            $data['job_level'] = isset($data['job_level']) && $data['job_level'] !== '' ? $data['job_level'] : null;
+            $data['educational'] = isset($data['educational']) && $data['educational'] !== '' ? $data['educational'] : null;
+            // return Result::success($job);
+            // Db::rollBack();
+            // return Result::success($company);
+            if ((isset($data['status']) && $data['status'] == 0) || !isset($data['status'])) {
+                $this->sendMessage([
+                    'talk_type' => 500,
+                    'title' => $data['title'],
+                    'content' => '提交了审核',
+                    'messageType' => 10,
+                ]);
+            }
+            $result['job'] = JobRecruiting::where('id', $jobId)->update($data);
+            if (empty($result['job'])) {
+                Db::rollBack();
+                return Result::error("修改招聘信息失败");
+            }
+            // 管理员修改企业相关信息
+            $result['company'] = JobCompany::where('job_id', $jobId)->update($company);
+            if (empty($result['company'])) {
+                Db::rollBack();
+                return Result::error("修改企业相关信息失败");
+            }
+            Db::commit();
+            // return Result::success($result);
+        } catch (\Exception $e) {
+            Db::rollBack();
+            return Result::error($e->getMessage(), 0);
+        }
+        return Result::success($result);
+    }
+    /*
+    * 招聘信息删除
+    * */
+    public function delJobRecruiting(array $data): array
+    {
+        $user = User::where('id', $data['user_id'])->first();
+        if (empty($user)) {
+            return Result::error("用户不存在", 0);
+        }
+        $job = JobRecruiting::where('id', $data['id'])->first();
+        if (empty($job)) {
+            return Result::error("招聘信息不存在", 0);
+        }
+        if ($user['type_id'] == 3 && $job['user_id'] != $user['id']) {
+            return Result::error("用户暂无权限修改此招聘信息!", 0);
+        }
+        Db::beginTransaction();
+        try {
+            $result['job'] = JobRecruiting::where('id', $data['id'])->delete();
+            if (empty($result['job'])) {
+                Db::rollBack();
+                return Result::error("删除招聘信息失败");
+            }
+            $result['company'] = JobCompany::where('job_id', $data['id'])->delete();
+            if (empty($result['company'])) {
+                Db::rollBack();
+                return Result::error("删除企业相关信息失败");
+            }
+            Db::commit();
+        } catch (\Exception $e) {
+            Db::rollBack();
+            return Result::error($e->getMessage(), 0);
+        }
+        return Result::success($result);
+    }
+    /*
+    * 获取公司信息
+    * */
+    public function getJobCompany(array $data): array
+    {
+        $user = User::where('user.id', $data['user_id'])
+            ->leftJoin('user_info', 'user_info.user_id', 'user.id')
+            ->select('user.user_name', 'user.mobile', 'user.email', 'user.type_id', 'user_info.*')
+            ->first();
+        // return Result::success($user);
+        if (empty($user)) {
+            return Result::error("用户不存在", 0);
+        }
+        if ($user['type_id'] == 3) {
+            $result = [
+                // 'id' => 0,
+                'user_id' => $data['user_id'],
+                'website_id' =>  $data['website_id'],
+                'business_name' => $user['business_name'],       // 企业名称
+                'company_hy_id' => $user['company_hy_id'],                       // 企业所属行业
+                'company_nature' => $user['company_nature'],     // 公司性质
+                'company_size' => $user['company_size'],         // 公司规模
+                'introduction' => $user['introduction'],         // 公司简介
+                'real_name' => $user['real_name'],               // 企业联系人
+                'mobile' => $user['mobile'],                     // 企业联系电话
+                'company_url' => $user['company_url'],           // 企业网址
+                'address_arr_id' => $user['address_arr_id'],     // 企业网址
+                'address' => $user['address'],                   // 企业地址
+                'email' => $user['email'],                       // 企业邮箱
+            ];
+        } else {
+            return Result::error("用户类型错误", 0);
+        }
+        if (empty($result)) {
+            return Result::error("公司信息不存在", 0);
+        }
+        return Result::success($result);
+    }
+    /*
+    * 修改公司信息
+    * */
+    public function upJobCompany(array $data): array
+    {
+        // return Result::success($data);
+        $user = User::where('user.id', $data['user_id'])
+            ->where('user.status', 1)
+            ->select('user.user_name', 'user.type_id')
+            ->first();
+        if (empty($user)) {
+            return Result::error("用户不存在", 0);
+        }
+        $data['address_arr_id'] = isset($data['address_arr_id']) ? json_encode(array_map('intval', $data['address_arr_id'])) : '';
+        $job_company = JobCompany::where('user_id', $data['user_id'])->first();
+        $company = [
+            'business_name' => $data['business_name'],       // 企业名称
+            'company_hy_id' => $data['company_hy_id'],       // 企业所属行业
+            'company_nature' => $data['company_nature'],     // 公司性质
+            'company_size' => $data['company_size'],         // 公司规模
+            'introduction' => $data['introduction'],         // 公司简介
+            // 'real_name' => $data['real_name'],               // 企业联系人
+            'company_url' => $data['company_url'],           // 企业网址
+            'address_arr_id' => $data['address_arr_id'],     // 企业地址
+            'address' => $data['address'],                   // 企业详细地址
+            // 'email' => $data['email'],                       // 企业邮箱
+        ];
+        if ($user['type_id'] == 3) {
+            Db::beginTransaction();
+            try {
+                $result['userinfo'] = UserInfo::where('user_id', $data['user_id'])->update([
+                    'business_name' => $data['business_name'],       // 企业名称
+                    'company_hy_id' => $data['company_hy_id'],       // 企业所属行业
+                    'company_nature' => $data['company_nature'],     // 公司性质
+                    'company_size' => $data['company_size'],         // 公司规模
+                    'introduction' => $data['introduction'],         // 公司简介
+                    // 'real_name' => $data['real_name'],               // 企业联系人
+                    'company_url' => $data['company_url'],           // 企业网址
+                    'address_arr_id' => $data['address_arr_id'],     // 企业地址
+                    'address' => $data['address'],                   // 企业详细地址
+                ]);
+                if (empty($result['userinfo'])) {
+                    Db::rollBack();
+                    return Result::error('修改企业会员信息失败!');
+                }
+                $result['user'] = User::where('id', $data['user_id'])->update([
+                    'email' => $data['email'],                       // 企业邮箱
+                ]);
+                if (empty($result['user'])) {
+                    Db::rollBack();
+                    return Result::error('修改个人中心信息失败!');
+                }
+                // 该企业会员若是未发布招聘信息则暂无该企业会员的企业信息
+                if (!empty($job_company)) {
+                    $result['job_company'] = JobCompany::where('user_id', $data['user_id'])->update($company);
+                    if (empty($result['job_company'])) {
+                        Db::rollBack();
+                        return Result::error('修改企业会员信息失败!');
+                    }
+                }
+                Db::commit();
+                return Result::success($result);
+            } catch (\Exception $e) {
+                Db::rollBack();
+                return Result::error($e->getMessage(), 0);
+            }
+        } else {
+            return Result::error("用户类型错误", 0);
+        }
+    }
+    /*
+    * 获取省-市
+    * */
+    public function getJobRecruitingArea(array $data): array
+    {
+        if (isset($data['pid']) && $data['pid'] != null) {
+            $result = District::where('pid', $data['pid'])->get()->all();
+        } else {
+            $result = District::where('level', 1)->get()->all();
+        }
+        if (empty($result)) {
+            return Result::error("暂无此省市", 0);
+        }
+        return Result::success($result);
+    }
+    /*
+    * 获取行业分类
+    * */
+    public function getIndustry(array $data): array
+    {
+        $result = JobIndustry::get()->all();
+        if (empty($result)) {
+            return Result::error("暂无行业分类", 0);
+        }
+        return Result::success($result);
+    }
+    /*
+    * 获取职位
+    * */
+    public function getPositionList(array $data): array
+    {
+        if (isset($data['zwpid']) && $data['zwpid'] != null) {
+            $result = JobPosition::where('zwpid', $data['zwpid'])->get()->all();
+        } else {
+            $result = JobPosition::where('zwpid', 0)->get()->all();
+        }
+        if (empty($result)) {
+            return Result::error("暂无此职位", 0);
+        }
+        return Result::success($result);
+    }
+    /*
+    * 获取工作性质-菜单
+    * */
+    public function getJobNature(array $data): array
+    {
+        $result = JobEnum::where('egroup', 'nature')->get()->all();
+        if (empty($result)) {
+            return Result::error("暂无工作性质", 0);
+        }
+        return Result::success($result);
+    }
+    /*
+    * 获取工作经验-菜单
+    * */
+    public function getExperience(array $data): array
+    {
+        $result = JobEnum::where('egroup', 'years')->get()->all();
+        if (empty($result)) {
+            return Result::error("暂无工作经验", 0);
+        }
+        return Result::success($result);
+    }
+    /*
+    * 获取学历-菜单
+    * */
+    public function getEducation(array $data): array
+    {
+        $result = JobEnum::where('egroup', 'education')->get()->all();
+        if (empty($result)) {
+            return Result::error("暂无学历", 0);
+        }
+        return Result::success($result);
+    }
+    /*
+    * 获取薪资-菜单
+    * */
+    public function getSalary(array $data): array
+    {
+        $result = JobEnum::where('egroup', 'income')->get()->all();
+        if (empty($result)) {
+            return Result::error("暂无薪资", 0);
+        }
+        return Result::success($result);
+    }
+    /*
+    * 获取语言-菜单
+    * */
+    public function getLanguage(array $data): array
+    {
+        $result = JobEnum::where('egroup', 'language')->get()->all();
+        if (empty($result)) {
+            return Result::error("暂无语言", 0);
+        }
+        return Result::success($result);
+    }
+    /*
+    * 获取掌握程度-菜单
+    * */
+    public function getLevel(array $data): array
+    {
+        $result = JobEnum::where('egroup', 'languagetype')->get()->all();
+        if (empty($result)) {
+            return Result::error("暂无工作性质", 0);
+        }
+        return Result::success($result);
+    }
+    // 公司信息
+    /*
+    * 获取公司性质-菜单
+    * */
+    public function getCompanyNature(array $data): array
+    {
+        $result = JobNature::get()->all();
+        if (empty($result)) {
+            return Result::error("暂无公司性质", 0);
+        }
+        return Result::success($result);
+    }
+    /*
+    * 获取公司规模-菜单
+    * */
+    public function getCompanySize(array $data): array
+    {
+        $result = JobEnum::where('egroup', 'cosize')->get()->all();
+        if (empty($result)) {
+            return Result::error("暂无公司规模", 0);
+        }
+        return Result::success($result);
+    }
+
+    /*
+    * 招聘信息审核
+    * */
+    public function checkJobRecruiting(array $data): array
+    {
+        $user = User::where('id', $data['user_id'])->first();
+        if (empty($user)) {
+            return Result::error("用户不存在", 0);
+        }
+        $job = JobRecruiting::where('id', $data['id'])->first();
+        if (empty($job)) {
+            return Result::error("招聘信息不存在", 0);
+        }
+        // 状态   0:待审核;1:已审核通过;;2:已驳回;
+        if ($user['type_id'] != 10000) {
+            return Result::error("用户暂无权限审核此招聘信息!", 0);
+        }
+        // 驳回原因
+        if ($data['status'] == 2) {
+            $data['refuse_reason'] = $data['refuse_reason'] ?? null;
+        }
+        $data['action_id'] = $data['user_id'];
+        unset($data['user_id']);
+
+        if ($data['status'] == 1) {
+            $this->sendMessage([
+                'talk_type' => 501,
+                'title' => $job['title'],
+                'content' => '审核通过',
+                'messageType' => 10,
+                'user_id' => $job['user_id'],
+            ]);
+        }
+        if ($data['status'] == 2) {
+            $this->sendMessage([
+                'talk_type' => 501,
+                'title' => $job['title'],
+                'content' => '审核拒绝',
+                'messageType' => 10,
+                'user_id' => $job['user_id'],
+            ]);
+        }
+        if ($data['status'] == 0) {
+            $this->sendMessage([
+                'talk_type' => 500,
+                'title' => $job['title'],
+                'content' => '提交了审核',
+                'messageType' => 10,
+            ]);
+        }
+        $result = JobRecruiting::where('id', $data['id'])->update($data);
+        if (empty($result)) {
+            return Result::error("审核失败", 0);
+        }
+        return Result::success($result);
+    }
+    public function myApplyList(array $data): array
+    {
+        var_dump($data, '------参数');
+        $user = User::where('id', $data['user_id'])->first();
+        if (empty($user) || ($user['type_id'] != 10000 && $user['type_id'] != 1)) {
+            return Result::error("用户不存在", 0);
+        }
+        // 1:个人会员    职场机会
+        if ($user['type_id'] == 1) {
+            $where['user_id'] = $user['id'];
+        }
+        $recruitingId = JobApply::when($user['type_id'] == 1, function ($query) use ($user) {
+            $query->where('user_id', $user['id']);
+        })
+            ->pluck('recruit_id');
+        $where = [];
+        if (isset($data['salary']) && $data['salary'] != null) {
+            $where['job_recruiting.salary'] = $data['salary'];
+        }
+        if (isset($data['experience']) && $data['experience'] != null) {
+            $where['job_recruiting.experience'] = $data['experience'];
+        }
+        if (isset($data['business_name']) && $data['business_name'] != null) {
+            array_push($where, ['job_company.business_name', 'like', '%' . $data['business_name'] . '%']);
+        }
+        $query = JobRecruiting::whereIn('job_recruiting.id', $recruitingId)
+            ->leftJoin('job_company', 'job_recruiting.id', '=', 'job_company.job_id')
+            ->where($where);
+        // ->count();
+        $count = $query->count();
+        $query = clone $query;
+        $job = $query
+            ->leftJoin('job_enum as income_enum', function ($join) {
+                $join->on('job_recruiting.salary', '=', 'income_enum.evalue')
+                    ->where('income_enum.egroup', 'income');
+            })
+            ->leftJoin('job_enum as years_enum', function ($join) {
+                $join->on('job_recruiting.experience', '=', 'years_enum.evalue')
+                    ->where('years_enum.egroup', 'years');
+            })
+            // ->where($where)
+            ->orderBy('job_recruiting.updated_at', 'desc')
+            ->select(
+                'job_recruiting.id',
+                'job_recruiting.title',
+                'job_company.business_name',
+                'income_enum.evalue as salary_evalue',
+                'income_enum.ename as salary_ename',
+                'years_enum.evalue as experience_evalue',
+                'years_enum.ename as experience_ename',
+                'job_recruiting.updated_at'
+            )
+            ->offset(($data['page'] - 1) * $data['pageSize'])
+            ->limit($data['pageSize'])
+            ->get()
+            ->all();
+
+        if (empty($job)) {
+            return Result::error("暂无招聘信息", 0);
+        }
+        $result = [
+            'row' => $job,
+            'count' => $count,
+        ];
+        return Result::success($result);
+    }
+    public function readJobApply(array $data): array
+    {
+        $result = JobApply::where('id', $data['id'])->first();
+        if (empty($result)) {
+            return Result::error("查询失败", 0);
+        }
+        $result = JobApply::where('id', $data['id'])->update([
+            'status' => 2,
+        ]);
+        return Result::success($result);
+    }
+
+    /*
+    * 获取招聘信息列表-职场机会(个人会员收到企业推送岗位)
+    * */
+    public function getRecruitingList(array $data): array
+    {
+        $user = User::where('id', $data['user_id'])->first();
+        if (empty($user) || ($user['type_id'] != 10000 && $user['type_id'] != 1)) {
+            return Result::error("用户不存在", 0);
+        }
+        // 1:个人会员    职场机会
+        if ($user['type_id'] == 1) {
+            $where['user_id'] = $user['id'];
+        }
+        $recruitingId = JobResume::when($user['type_id'] == 1, function ($query) use ($user) {
+            $query->where('receiver_id', $user['id']);
+        })
+            ->pluck('recruit_id');
+        // return Result::success($recruitingId);
+        $where = [];
+        if (isset($data['salary']) && $data['salary'] != null) {
+            $where['job_recruiting.salary'] = $data['salary'];
+        }
+        if (isset($data['experience']) && $data['experience'] != null) {
+            $where['job_recruiting.experience'] = $data['experience'];
+        }
+        if (isset($data['business_name']) && $data['business_name'] != null) {
+            array_push($where, ['job_company.business_name', 'like', '%' . $data['business_name'] . '%']);
+        }
+        $query = JobRecruiting::whereIn('job_recruiting.id', $recruitingId)
+            ->leftJoin('job_company', 'job_recruiting.id', '=', 'job_company.job_id')
+            ->where($where);
+        // ->count();
+        $count = $query->count();
+        $query = clone $query;
+        $job = $query
+            ->leftJoin('job_enum as income_enum', function ($join) {
+                $join->on('job_recruiting.salary', '=', 'income_enum.evalue')
+                    ->where('income_enum.egroup', 'income');
+            })
+            ->leftJoin('job_enum as years_enum', function ($join) {
+                $join->on('job_recruiting.experience', '=', 'years_enum.evalue')
+                    ->where('years_enum.egroup', 'years');
+            })
+            // ->where($where)
+            ->orderBy('job_recruiting.updated_at', 'desc')
+            ->select(
+                'job_recruiting.id',
+                'job_recruiting.title',
+                'job_company.business_name',
+                'income_enum.evalue as salary_evalue',
+                'income_enum.ename as salary_ename',
+                'years_enum.evalue as experience_evalue',
+                'years_enum.ename as experience_ename',
+                'job_recruiting.updated_at'
+            )
+            ->offset(($data['page'] - 1) * $data['pageSize'])
+            ->limit($data['pageSize'])
+            ->get()
+            ->all();
+
+        if (empty($job)) {
+            return Result::error("暂无招聘信息", 0);
+        }
+        $result = [
+            'row' => $job,
+            'count' => $count,
+        ];
+        return Result::success($result);
+    }
+    /*
+    * 获取企业会员-招聘信息列表
+    * */
+    public function getRecruitingInfo(array $data): array
+    {
+        $user = User::where('id', $data['user_id'])->first();
+        if (empty($user) || ($user['type_id'] != 10000 && $user['type_id'] != 1)) {
+            return Result::error("用户不存在", 0);
+        }
+        $recruiting = JobRecruiting::where('job_recruiting.id', $data['id'])
+            ->leftJoin('job_company', 'job_recruiting.id', '=', 'job_company.job_id')
+            ->select(
+                'job_recruiting.*',
+                'job_company.business_name',
+                'job_company.company_hy_id',
+                'job_company.company_size',
+                'job_company.company_nature',
+                'job_company.introduction',
+                'job_company.real_name',
+                'job_company.mobile',
+                'job_company.company_url',
+                'job_company.address_arr_id',
+                'job_company.address',
+                'job_company.email'
+            )
+            ->get();
+        if (empty($recruiting)) {
+            return Result::error("暂无招聘信息", 0);
+        }
+        return Result::success($recruiting);
+    }
+    /*
+    * 获取企业会员-我的沟通
+    * */
+    public function getJobResumeList(array $data): array
+    {
+        $user = User::where('id', $data['user_id'])->first();
+        if (empty($user) || ($user['type_id'] != 10000 && $user['type_id'] != 3)) {
+            return Result::error("用户不存在", 0);
+        }
+        $where = [];
+        if (isset($data['salary']) && $data['salary'] != null) {
+            $where['job_hunting.salary'] = $data['salary'];
+        }
+        if (isset($data['user_name']) && $data['user_name'] != null) {
+            array_push($where, ['user.user_name', 'like', '%' . $data['user_name'] . '%']);
+        }
+        $job = JobResume::when($user['type_id'] == 3, function ($query) use ($user) {
+            $query->where('job_resume.user_id', $user['id']);
+        })
+            ->when(!empty($where), function ($query) use ($where) {
+                $query->where($where);
+            })
+            ->leftJoin('job_hunting', 'job_hunting.id', 'job_resume.hunt_id')
+            ->leftJoin('job_recruiting', 'job_recruiting.id', 'job_resume.recruit_id')
+            ->leftJoin('user', 'user.id', 'job_resume.receiver_id')
+            ->select('job_resume.hunt_id', 'job_resume.recruit_id', 'job_hunting.id', 'job_hunting.salary', 'job_hunting.city_id', 'job_hunting.updated_at', 'job_recruiting.jtzw_id', 'user.user_name');
+        $count = $job->count();
+        if ($count == 0) {
+            return Result::error("暂无沟通记录", 0);
+        }
+        $jobs = $job->orderBy('job_hunting.updated_at', 'desc')
+            ->offset(($data['page'] - 1) * $data['pageSize'])
+            ->limit($data['pageSize'])
+            ->get();
+        if (empty($jobs)) {
+            return Result::error("暂无沟通记录", 0);
+        }
+        $result['row'] = $this->processJob($jobs, '');
+        $result['count'] = $count;
+        return Result::success($result);
+    }
+
+    public function readJobResume(array $data): array
+    {
+        $result = JobResume::where('id', $data['id'])->first();
+        if (empty($result)) {
+            return Result::error("查询失败", 0);
+        }
+
+        $result = JobResume::where('id', $data['id'])->update([
+            'status' => 2,
+        ]);
+        return Result::success($result);
+    }
+
+    // 20250306 招聘
+    //20250422  书刊音像
+    public function addBook(array $data): array
+    {
+        $user_id = $data['user_id'] ?? 0;
+        $type_id = $data['type_id'] ?? 0;
+        // $website_id = $data['website_id'] ?? 0;
+        // unset($data['user_id']);
+        unset($data['type_id']);
+        // unset($data['website_id']);
+        //处理数组
+        // $data['department_arr_id'] = is_array($data['department_arr_id']) ? Json::encode($data['department_arr_id']) : '[]';
+        $data['city_arr_id'] = is_array($data['city_arr_id']) ? Json::encode($data['city_arr_id']) : '[]';
+        $data['cat_arr_id'] = is_array($data['cat_arr_id']) ? Json::encode($data['cat_arr_id']) : '[]';
+        if ($data['img_url'] == '') {
+            $reg = '/<img.*?src=[\"|\']?(.*?)[\"|\']?\s.*?>/i';
+            preg_match_all($reg, $data['detail'], $matches);
+            if (isset($matches[1][0])) {
+                //截取varchar240
+                $data['img_url'] = substr($matches[1][0], 0, 240);
+            }
+        }
+        if ($data['keyword'] == '' ||  $data['keyword'] == array()) {
+            //提取标题+内容中的关键词
+            $data['keyword'] = $data['title'];
+            //  . substr(str_replace(' ', '', strip_tags($data['content'])), 0, 20);
+            Jieba::init(); // 初始化 jieba-php
+            Finalseg::init();
+            $segList = Jieba::cut($data['keyword']);
+            $segList1 = array_slice($segList, 0, 8);
+            $data['keyword'] = implode(',', $segList1);
+        }
+        if ($data['description'] == '') {
+            //提取内容中的描述
+            $cleaned = preg_replace('/\s+/', '', strip_tags(html_entity_decode($data['detail'], ENT_QUOTES, 'UTF-8')));
+            $data['description'] = mb_substr($cleaned, 0, 100, 'UTF-8');
+        }
+        var_dump($data, '--');
+        if ($data['status'] == 1) {
+            $this->sendMessage([
+                'talk_type' => 400,
+                'title' => $data['title'],
+                'content' => '提交了审核',
+                'messageType' => 7,
+            ]);
+        }
+        $result = Book::insertGetId($data);
+        if (empty($result)) {
+            return Result::error("添加失败", 0);
+        }
+        return Result::success($result);
+    }
+    public function getBookList(array $data): array
+    {
+        $where = [];
+        if (!empty($data["title"])) {
+            $where[] = ['book.title', 'like', '%' . $data["title"] . '%'];
+        }
+        if (!empty($data['website_name'])) {
+            $where[] = ['website.website_name', 'like', '%' . $data['website_name'] . '%'];
+        }
+        if (!empty($data['status'])) {
+            $where[] = ['book.status', '=', $data['status']];
+        }
+        $user_id = $data['user_id'];
+        $type_id =  $data['type_id'];
+        // $type_id = 4;
+        var_dump($type_id, '------1--------');
+        if ($type_id != 10000) {
+            $where[] = ['book.user_id', '=', $user_id];
+        }
+        var_dump(!empty($data['status1']), '=-===1');
+        $result = Book::where($where)
+            ->leftJoin('website', 'book.website_id', '=', 'website.id')
+            ->leftJoin('category', 'book.cat_id', '=', 'category.id')
+            ->leftJoin('district', 'book.city_id', '=', 'district.id')
+            ->when(isset($data['status1']), function ($query) use ($data) {
+                $query->whereIn('book.status', [1, 3]);
+            })
+            ->select('book.*', 'website.website_name', 'category.name as cat_name', 'district.name as city_name')
+            ->orderBy("updated_at", "desc")
+            ->paginate($data['page_size'], ['*'], 'page', $data['page']);
+        if (empty($result)) {
+            return Result::error("暂无数据", 0);
+        }
+        // 取出数据
+        $rows = $result->items();
+        $count = $result->total();
+        $responseData = [
+            'rows' => $rows,
+            'count' => $count,
+        ];
+        return Result::success($responseData);
+    }
+    public function deleteBook(array $data): array
+    {
+        $result = Book::where('id', $data['id'])->delete();
+        if (empty($result)) {
+            return Result::error("删除失败", 0);
+        }
+        return Result::success($result);
+    }
+    public function updateBook(array $data): array
+    {
+
+        // $user_id = $data['user_id'] ?? 0;
+        $type_id = $data['type_id'] ?? 0;
+        // $website_id = $data['website_id'] ?? 0;
+        unset($data['user_id']);
+        unset($data['type_id']);
+        // unset($data['website_id']);
+        //处理数组
+        // $data['department_arr_id'] = is_array($data['department_arr_id']) ? Json::encode($data['department_arr_id']) : '[]';
+        if ($data['img_url'] == '') {
+            $reg = '/<img.*?src=[\"|\']?(.*?)[\"|\']?\s.*?>/i';
+            preg_match_all($reg, $data['detail'], $matches);
+            if (isset($matches[1][0])) {
+                //截取varchar240
+                $data['img_url'] = substr($matches[1][0], 0, 240);
+            }
+        }
+        if ($data['keyword'] == '') {
+            //提取标题+内容中的关键词
+            $data['keyword'] = $data['title'];
+            //  . substr(str_replace(' ', '', strip_tags($data['content'])), 0, 20);
+            Jieba::init(); // 初始化 jieba-php
+            Finalseg::init();
+            $segList = Jieba::cut($data['keyword']);
+            $segList1 = array_slice($segList, 0, 8);
+            $data['keyword'] = implode(',', $segList1);
+        }
+        if ($data['description'] == '') {
+            //提取内容中的描述
+            $cleaned = preg_replace('/\s+/', '', strip_tags(html_entity_decode($data['detail'], ENT_QUOTES, 'UTF-8')));
+            $data['description'] = mb_substr($cleaned, 0, 100, 'UTF-8');
+        }
+        $data['city_arr_id'] = is_array($data['city_arr_id']) ? Json::encode($data['city_arr_id']) : '[]';
+        $data['cat_arr_id'] = is_array($data['cat_arr_id']) ? Json::encode($data['cat_arr_id']) : '[]';
+        if ($data['status'] == 1) {
+            $this->sendMessage([
+                'talk_type' => 400,
+                'title' => $data['title'],
+                'content' => '提交了审核',
+                'messageType' => 7,
+            ]);
+        }
+        $result = Book::where("id", $data["id"])->update($data);
+        if (empty($result)) {
+            return Result::error("更新失败", 0);
+        }
+        return Result::success($result);
+    }
+    public function getBookInfo(array $data): array
+    {
+        $result = Book::where("id", $data["id"])->first();
+        if (empty($result)) {
+            return Result::error("获取失败", 0);
+        }
+        return Result::success($result);
+    }
+    public function updateBookStatus(array $data): array
+    {
+        //审核
+        unset($data['user_id']);
+        $bookInfo = Book::where("id", $data["id"])->first();
+        var_dump($bookInfo, '----');
+        if ($data['status'] == 2) {
+            $this->sendMessage([
+                'talk_type' => 401,
+                'title' => $bookInfo['title'],
+                'content' => '审核通过',
+                'messageType' => 7,
+                'user_id' => $bookInfo['user_id'],
+            ]);
+        }
+        if ($data['status'] == 3) {
+            $this->sendMessage([
+                'talk_type' => 401,
+                'title' => $bookInfo['title'],
+                'content' => '审核拒绝',
+                'messageType' => 7,
+                'user_id' => $bookInfo['user_id'],
+            ]);
+        }
+        if ($data['status'] == 1) {
+            $this->sendMessage([
+                'talk_type' => 400,
+                'title' => $bookInfo['title'],
+                'content' => '提交了审核',
+                'messageType' => 7,
+                // 'user_id'=>$bookInfo['user_id'],
+            ]);
+        }
+        $result = Book::where("id", $data["id"])->update($data);
+        if (empty($result)) {
+            return Result::error("更新失败", 0);
+        }
+        return Result::success($result);
+    }
+
+  //20250422  书刊音像
+
+    /**
+     * 贴身宝贝
+     * @param array $data
+     * @return array
+     */
+    public function getWebsiteTsbb(array $data): array
+    {
+        $month = $data['month'] ?? date('m');
+        $day = $data['day'] ?? date('d');
+
+        // 使用缓存键
+        $cacheKey = "tsbb_data_{$month}_{$day}";
+
+        // 尝试从缓存获取数据
+        $container = \Hyperf\Context\ApplicationContext::getContainer();
+        $cache = $container->get(\Psr\SimpleCache\CacheInterface::class);
+
+        if ($cachedData = $cache->get($cacheKey)) {
+            return Result::success(unserialize($cachedData));
+        }
+
+        //查询老黄历
+        try {
+
+            $date = date('Y-m-d');
+            $almanacUrl = "https://www.36jxs.com/api/Commonweal/almanac?sun=" . $date;
+            // 使用 curl 替代 file_get_contents
+            $ch = curl_init();
+            curl_setopt($ch, CURLOPT_URL, $almanacUrl);
+            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
+            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
+            curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
+            curl_setopt($ch, CURLOPT_TIMEOUT, 10);
+            curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36');
+            curl_setopt($ch, CURLOPT_HTTPHEADER, [
+                'Accept: application/json',
+                'Content-Type: application/json',
+                'Referer: https://www.36jxs.com/'
+            ]);
+            curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
+            curl_setopt($ch, CURLOPT_ENCODING, '');
+
+            $almanacResponse = curl_exec($ch);
+            var_dump("====:", $almanacResponse);
+
+            if (curl_errno($ch)) {
+                var_dump('Curl error:', curl_error($ch));
+                throw new \Exception('Curl error: ' . curl_error($ch));
+            }
+
+            // $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
+
+            curl_close($ch);
+
+            if ($almanacResponse === false) {
+                throw new \Exception('Failed to fetch almanac data');
+            }
+            $almanacData = json_decode($almanacResponse, true);
+            if (json_last_error() !== JSON_ERROR_NONE) {
+                throw new \Exception('Failed to parse almanac data');
+            }
+            $almanacInfo = $almanacData['data'] ?? [];
+        } catch (\Exception $e) {
+            var_dump('Exception:', $e->getMessage());
+            $almanacInfo = [];
+        }
+
+        // 获取历史上的今天数据
+        $historyTodayList = HistoryToday::whereRaw("DATE_FORMAT(year, '%m') = ?", [$month])
+            ->whereRaw("DATE_FORMAT(year, '%d') = ?", [$day])
+            ->orderBy('year', 'asc')
+            ->select("title", "id", "year", DB::raw('1 as type'))
+            ->limit(16)
+            ->get();
+
+        // 获取节日数据 - 从今天开始获取未来4条
+        $festivalList = Festival::whereRaw("DATE_FORMAT(showtime, '%m-%d') >= ?", [$month . '-' . $day])
+            ->orderBy('showtime', 'asc')
+            ->select("title", "id", "showtime", DB::raw('2 as type'))
+            ->limit(16)
+            ->get();
+        //说文解字
+        $chartacterList = Character::orderBy('updated_at', 'desc')
+            ->select("id", "title", "duyin", "bushou", "bihua", DB::raw('3 as type'))
+            ->limit(6)
+            ->get();
+        //谜语沙龙
+        $riddletList = Riddle::orderBy('updated_at', 'desc')
+            ->select("id", "riddle_title", "riddle_bottom", "prompt", DB::raw('4 as type'))
+            ->limit(4)
+            ->get();
+        //成语欣赏
+        $idiomList = Idiom::orderBy('updated_at', 'desc')
+            ->select("id", "title", "duyin", DB::raw('5 as type'))
+            ->limit(32)
+            ->get();
+        //名联赏析
+        $coupletList = Couplet::orderBy('updated_at', 'desc')
+            ->select("id", "first", "second", DB::raw('6 as type'))
+            ->limit(6)
+            ->get();
+        // 获取分类文章数据
+
+        $categoryIds = WebsiteCategory::where(['website_id' => $data['website_id'], 'pid' => 0])
+            ->pluck('category_id')
+            ->toArray();
+
+        $articlesList = [];
+        foreach ($categoryIds as $catid) {
+            // 先查有图片的
+            $withImg = DB::table('article')
+                ->where('status', 1)
+                ->where('catid', $catid)
+                ->whereNotNull('imgurl')
+                ->where('imgurl', '!=', '')
+                ->orderBy('updated_at', 'desc')
+                ->limit(6)
+                ->get();
+
+            $count = $withImg->count();
+            if ($count < 6) {
+                // 不足6条再查无图片的补足
+                $withoutImg = DB::table('article')
+                    ->where('status', 1)
+                    ->where('catid', $catid)
+                    ->where(function ($q) {
+                        $q->whereNull('imgurl')->orWhere('imgurl', '');
+                    })
+                    ->orderBy('updated_at', 'desc')
+                    ->limit(6 - $count)
+                    ->get();
+                $articles = $withImg->concat($withoutImg);
+            } else {
+                $articles = $withImg;
+            }
+
+            // 组装
+            $category = \App\Model\Category::find($catid);
+            $websiteCategory = WebsiteCategory::where('category_id', $catid)->first();
+            $articlesList[] = [
+                'category_name' => $category ? $category->name : '',
+                'catid' => $catid,
+                'pinyin' => $websiteCategory ? $websiteCategory->aLIas_pinyin : '',
+                'type' => 100,
+                'list' => $articles->map(function ($item) {
+                    return [
+                        'id' => $item->id,
+                        'title' => $item->title,
+                        'imgurl' => $item->imgurl,
+                        'created_at' => $item->created_at
+                    ];
+                })->values()
+            ];
+        }
+
+
+        $result = [
+            'almanac' => $almanacInfo,
+            'historyTodayList' => [
+                'category_name' => '历史上的今天',
+                'list' => $historyTodayList,
+                'type' => 1
+            ],
+            'festivalList' => [
+                'category_name' => '节日预告',
+                'list' => $festivalList,
+                'type' => 2
+            ],
+            'chartacterList' => [
+                'category_name' => '说文解字',
+                'list' => $chartacterList,
+                'type' => 3
+            ],
+            'coupletList' => [
+                'category_name' => '名联赏析',
+                'list' => $coupletList,
+                'type' => 6
+            ],
+            'riddletList' => [
+                'category_name' => '谜语沙龙',
+                'list' => $riddletList,
+                'type' => 4
+            ],
+            'idiomList' => [
+                'category_name' => '成语欣赏',
+                'list' => $idiomList,
+                'type' => 5
+            ],
+            'articlesList' => $articlesList
+        ];
+
+        // 缓存结果,设置1小时过期
+        $cache->set($cacheKey, serialize($result), 3600);
+
+        return Result::success($result);
+    }
+    /**
+     * 获取资讯列表
+     */
+    public function getWebsiteTsbbList(array $data): array
+    {
+        $page = $data['page'] ?? 1;
+        $pageSize = $data['pageSize'] ?? 10;
+
+        // 如果没有传入月份和日期,则使用今天的日期
+        $month = $data['month'] ?? date('m');
+        $day = $data['day'] ?? date('d');
+        $total = 0;
+        $result = [];
+        $data['type'] = intval($data['type']);
+        var_dump("接收参数:", $data);
+        switch ($data['type']) {
+            case 1:
+                $query = HistoryToday::where(function ($q) use ($month, $day) {
+                    // 当前月份之后的数据
+                    $q->whereRaw("DATE_FORMAT(year, '%m') > ?", [$month])
+                        // 或者当前月份且日期大于等于当前日期的数据
+                        ->orWhere(function ($q) use ($month, $day) {
+                            $q->whereRaw("DATE_FORMAT(year, '%m') = ?", [$month])
+                                ->whereRaw("DATE_FORMAT(year, '%d') >= ?", [$day]);
+                        });
+                })
+                    ->orderByRaw("DATE_FORMAT(year, '%m') ASC, DATE_FORMAT(year, '%d') ASC, year ASC");
+
+                $total = $query->count();
+                $result = $query->select("title", "id", "year", "updated_at", DB::raw('1 as type'))
+                    ->offset(($page - 1) * $pageSize)
+                    ->limit($pageSize)
+                    ->get();
+                break;
+            case 2:
+                $query = Festival::where(function ($q) use ($month, $day) {
+                    // 当前月份之后或者当前月份且日期大于等于当前日期的数据
+                    $q->whereRaw("DATE_FORMAT(showtime, '%m') > ?", [$month])
+                        ->orWhere(function ($q) use ($month, $day) {
+                            $q->whereRaw("DATE_FORMAT(showtime, '%m') = ?", [$month])
+                                ->whereRaw("DATE_FORMAT(showtime, '%d') >= ?", [$day]);
+                        });
+                })->orderByRaw("DATE_FORMAT(showtime, '%m') ASC, DATE_FORMAT(showtime, '%d') ASC, showtime ASC");
+                $total = $query->count();
+                $result = $query->select("title", "id", "updated_at", "showtime", DB::raw('2 as type'))
+                    ->offset(($page - 1) * $pageSize)
+                    ->limit($pageSize)
+                    ->get();
+                break;
+            case 3:
+                $query = Character::orderBy("updated_at",  "desc");
+                $total = $query->count();
+                $result = $query->select("title", "id", "updated_at", DB::raw('3 as type'))
+                    ->offset(($page - 1) * $pageSize)
+                    ->limit($pageSize)
+                    ->get();
+                break;
+            case 4:
+                $query = Riddle::orderBy("updated_at",  "desc");
+                $total = $query->count();
+                $result = $query->select("riddle_title as title", "updated_at", "id", DB::raw('4 as type'))
+                    ->offset(($page - 1) * $pageSize)
+                    ->limit($pageSize)
+                    ->get();
+                break;
+            case 5:
+                $query = Idiom::orderBy("updated_at",  "desc");
+                $total = $query->count();
+                $result = $query->select("title", "id", "updated_at", DB::raw('5 as type'))
+                    ->offset(($page - 1) * $pageSize)
+                    ->limit($pageSize)
+                    ->get();
+                break;
+            case 6:
+                $query = Couplet::orderBy("updated_at",  "desc");
+                $total = $query->count();
+                $result = $query->select("first as title", "updated_at", "id", DB::raw('6 as type'))
+                    ->offset(($page - 1) * $pageSize)
+                    ->limit($pageSize)
+                    ->get();
+                break;
+            default:
+                $query = Article::where(['catid' => $data['catid']])->orderBy("updated_at",  "desc");
+                $total = $query->count();
+                $result = $query->select("title", "id", "updated_at", DB::raw('100 as type'))
+                    ->offset(($page - 1) * $pageSize)
+                    ->limit($pageSize)
+                    ->get();
+        }
+        return Result::success([
+            'list' => $result,
+            'total' => $total,
+            'page' => (int)$page,
+            'pageSize' => (int)$pageSize,
+            'month' => $month,
+            'day' => $day
+        ]);
+    }
+    /**
+     * 1:历史上的今天
+     * 2:节日
+     * 3:文章
+     *
+     * 资讯详情信息
+     */
+    public function getWebsiteTsbbDetail(array $data): array
+    {
+        $data['type'] = intval($data['type']);
+        switch ($data['type']) {
+            case 1:
+                $result = HistoryToday::where("id", $data['id'])->first();
+                break;
+            case 2:
+                $result = Festival::where("id", $data['id'])->first();
+                break;
+            case 3:
+                $result = Character::where("id", $data['id'])->first();
+                break;
+            case 4:
+                $result = Riddle::where("id", $data['id'])->first();
+                break;
+            case 5:
+                $result = Idiom::where("id", $data['id'])->first();
+                break;
+            case 6:
+                $result = Couplet::where("id", $data['id'])->first();
+                break;
+            default:
+                $result = Article::where("id", $data['id'])->select("article.*", "article_data.content")->leftJoin("article_data", "article.id", "=", "article_data.article_id")->first();
+                break;
+        }
+        return Result::success($result);
+    }
+
+
+    /**
+     * 农网导航首页数据
+     */
+    public function getWebsiteNwHomeList(array $data): array
+    {
+        $categoryIds =  WebsiteCategory::where(['website_id' => $data['website_id']])->where("pid", "!=", 0)
+            ->pluck('category_id')
+            ->toArray();
+        // 使用子查询优化
+        $articlesList = DB::table('article')
+            ->select([
+                'article.id',
+                'article.title',
+                'article.imgurl',
+                'article.created_at',
+                'category.name as category_name',
+                'category.id as category_id',
+                'website_category.aLIas_pinyin as pinyin',
+                'parent_wc.aLIas_pinyin as parent_pinyin',
+                DB::raw('100 as type')
+            ])
+            ->join('category', 'article.catid', '=', 'category.id')
+            ->leftJoin('website_category', 'website_category.category_id', '=', 'category.id')
+            ->leftJoin('website_category as parent_wc', function ($join) {
+                $join->on('parent_wc.category_id', '=', 'website_category.pid')
+                    ->where('parent_wc.website_id', '=', DB::raw('website_category.website_id'));
+            })
+            ->where('website_category.website_id', $data['website_id'])
+            ->where('article.status', 1)
+            ->whereIn('category.id', $categoryIds)
+            ->orderBy('article.created_at', 'desc')
+            ->get()
+            ->groupBy('category_id')
+            ->map(function ($group) {
+                // 确保第一条数据有图片
+                $firstWithImage = $group->first(function ($item) {
+                    return !empty($item->imgurl);
+                });
+
+                if ($firstWithImage) {
+                    // 如果有带图片的文章,将其放在第一位
+                    $group = $group->filter(function ($item) use ($firstWithImage) {
+                        return $item->id !== $firstWithImage->id;
+                    })->prepend($firstWithImage);
+                }
+
+                return [
+                    'category_name' => $group->first()->category_name,
+                    'catid' => $group->first()->category_id,
+                    'pinyin' => $group->first()->pinyin,
+                    'parent_pinyin' => $group->first()->parent_pinyin,
+                    'list' => $group->take(4)->map(function ($item) {
+                        return [
+                            'id' => $item->id,
+                            'title' => $item->title,
+                        ];
+                    })->values()
+                ];
+            })
+            ->values()
+            ->toArray();
+        return Result::success($articlesList);
+    }
+    /**
+     * 企业管理
+     * @param array $data
+     * @return array
+     */
+    public function getCompanyList(array $data): array
+    {
+        // return Result::success($data);
+        $where = [];
+        $user = User::where('id', $data['user_id'])->first();
+        if (empty($user)) {
+            return Result::error('用户不存在!');
+        }
+        if ($user['type_id'] != 10000) {
+            $where['user_id'] = $data['user_id'];
+        }
+        if (isset($data['title']) && !empty($data['title'])) {
+            array_push($where, ['company.title', 'like', '%' . $data['title'] . '%']);
+        }
+        if (isset($data['website_id']) && !empty($data['website_id'])) {
+            array_push($where, ['website.id', $data['website_id']]);
+        }
+        if (isset($data['ischeck']) && !empty($data['ischeck'])) {
+            if ($data['ischeck'] == 1) {
+                if (isset($data['status']) && $data['status'] != '') {
+                    array_push($where, ['company.status', $data['status']]);
+                    $query = Company::where($where);
+                } else {
+                    $query =  Company::whereIn('company.status', [0, 2]);
+                }
+            } else {
+                $query =  Company::where('company.status', 1);
+            }
+        }
+        $result = $query->where($where)
+            ->leftJoin('website_category', function ($query) {
+                $query->on('website_category.category_id', '=', 'company.category_id')
+                    ->on('website_category.website_id', '=', 'company.website_id');
+            })
+            ->leftJoin('website', 'company.website_id', '=', 'website.id')
+            ->select(
+                'company.id',
+                'company.title',
+                'company.website_id',
+                'company.category_id',
+                'website.website_name',
+                'website_category.alias as category_name',
+                'company.status',
+                'company.updated_at',
+                'company.user_id'
+            )
+            ->orderBy('company.updated_at', 'desc')
+            ->paginate($data['pageSize'], ['*'], 'page', $data['page']);
+
+        if ($result->isEmpty()) {
+            return Result::error("暂无企业", 0);
+        }
+        return Result::success($result);
+    }
+    /**
+     * 添加企业
+     * @param array $data
+     * @return array
+     */
+    public function addCompany(array $data): array
+    {
+        $data['category_id'] = isset($data['cat_arr_id']) ? end($data['cat_arr_id']) : '';
+        if (isset($data['cat_arr_id']) && !empty($data['cat_arr_id']) && is_array($data['cat_arr_id'])) {
+            $car_arr_id = array_values(array_unique(array_map('intval', $data['cat_arr_id'])));
+            $data['cat_arr_id'] = json_encode($car_arr_id);
+        } else {
+            $data['cat_arr_id'] = '';
+        }
+        if ($data['imgurl'] == '') {
+            //content中提取图片第一个图,正则提取
+            $reg = '/<img.*?src=[\"|\']?(.*?)[\"|\']?\s.*?>/i';
+            preg_match_all($reg, $data['content'], $matches);
+            if (isset($matches[1][0])) {
+                //截取varchar240
+                $data['imgurl'] = substr($matches[1][0], 0, 240);
+            }
+        }
+        if ($data['keyword'] == '') {
+            //提取标题+内容中的关键词
+            $data['keyword'] = $data['title'];
+            //  . substr(str_replace(' ', '', strip_tags($data['content'])), 0, 20);
+            Jieba::init(); // 初始化 jieba-php
+            Finalseg::init();
+            $segList = Jieba::cut($data['keyword']);
+            $segList1 = array_slice($segList, 0, 8);
+            $data['keyword'] = implode(',', $segList1);
+        }
+        if ($data['introduce'] == '' || empty($data['introduce'])) {
+            //提取内容中的描述
+            $content = $data['content'];
+            // 去除 <style> 和 <script> 标签及其内容
+            $content = preg_replace('/<(style|script)[^>]*>.*?<\/\1>/is', '', $content);
+            // 去除所有 HTML 标签
+            $content = strip_tags($content);
+            // 去除 HTML 实体
+            $content = html_entity_decode($content, ENT_QUOTES | ENT_HTML5, 'UTF-8');
+            // 只保留文本和标点符号(去除所有字母数字以外的特殊符号,可根据需要调整正则)
+            $content = preg_replace('/[^\p{L}\p{N}\p{P}\p{Zs}]+/u', '', $content);
+            // 去除多余空白
+            $content = preg_replace('/\s+/u', '', $content);
+            // 截取 100 个字符
+            $data['introduce'] = mb_substr($content, 0, 100);
+        }
+        $user = User::where('id', $data['user_id'])->first();
+        if (empty($user)) {
+            return Result::error('用户不存在!');
+        }
+        if ($user['type_id'] == 10000) {
+            $data['status'] = 1;
+        }
+        if (isset($data['level']) && $data['level'] != null) {
+            $data['level'] = intval($data['level']);
+        } else {
+            $data['level'] = null;
+        }
+        if ((isset($data['status']) && $data['status'] == 0) || !isset($data['status'])) {
+            $this->sendMessage([
+                'talk_type' => 900,
+                'title' => $data['title'],
+                'content' => '提交了审核',
+                'messageType' => 8,
+            ]);
+        }
+        $result = Company::insertGetId($data);
+        if ($result) {
+            return Result::success($result);
+        } else {
+            return Result::error('添加失败');
+        }
+    }
+    /**
+     * 更新企业
+     * @param array $data
+     * @return array
+     */
+    public function upCompany(array $data): array
+    {
+        if (isset($data['cat_arr_id']) && !empty($data['cat_arr_id']) && is_array($data['cat_arr_id'])) {
+            $car_arr_id = array_values(array_unique(array_map('intval', $data['cat_arr_id'])));
+            $data['cat_arr_id'] = json_encode($car_arr_id);
+            $data['category_id'] = isset($data['cat_arr_id']) ? end($car_arr_id) : '';
+        } else {
+            $data['cat_arr_id'] = '';
+        }
+        if ($data['imgurl'] == '') {
+            //content中提取图片第一个图,正则提取
+            $reg = '/<img.*?src=[\"|\']?(.*?)[\"|\']?\s.*?>/i';
+            preg_match_all($reg, $data['content'], $matches);
+            if (isset($matches[1][0])) {
+                //截取varchar
+                $data['imgurl'] = substr($matches[1][0], 0, 240);
+            }
+        }
+        if ($data['keyword'] == '') {
+            //提取标题+内容中的关键词
+            $data['keyword'] = $data['title'];
+            //  . substr(str_replace(' ', '', strip_tags($data['content'])), 0, 20);
+            Jieba::init(); // 初始化 jieba-php
+            Finalseg::init();
+            $segList = Jieba::cut($data['keyword']);
+            $segList1 = array_slice($segList, 0, 8);
+            $data['keyword'] = implode(',', $segList1);
+        }
+        if ($data['introduce'] == '') {
+            //提取内容中的描述
+            $content = $data['content'];
+            // 去除 <style> 和 <script> 标签及其内容
+            $content = preg_replace('/<(style|script)[^>]*>.*?<\/\1>/is', '', $content);
+            // 去除所有 HTML 标签
+            $content = strip_tags($content);
+            // 去除 HTML 实体
+            $content = html_entity_decode($content, ENT_QUOTES | ENT_HTML5, 'UTF-8');
+            // 只保留文本和标点符号(去除所有字母数字以外的特殊符号,可根据需要调整正则)
+            $content = preg_replace('/[^\p{L}\p{N}\p{P}\p{Zs}]+/u', '', $content);
+            // 去除多余空白
+            $content = preg_replace('/\s+/u', '', $content);
+            // 截取 100 个字符
+            $data['introduce'] = mb_substr($content, 0, 100);
+        }
+        if (isset($data['level']) && $data['level'] != null) {
+            $data['level'] = intval($data['level']);
+        } else {
+            $data['level'] = null;
+        }
+        $user = User::where('id', $data['user_id'])->first();
+        if (empty($user)) {
+            return Result::error('用户不存在!');
+        }
+        if ($user['type_id'] == 10000) {
+            $data['status'] = 1;
+        } else {
+            $data['status'] = 0;
+        }
+        if ((isset($data['status']) && $data['status'] == 0) || !isset($data['status'])) {
+            $this->sendMessage([
+                'talk_type' => 900,
+                'title' => $data['title'],
+                'content' => '提交了审核',
+                'messageType' => 8,
+            ]);
+        }
+        $result = Company::where('id', $data['id'])->update($data);
+        if ($result) {
+            return Result::success($result);
+        } else {
+            return Result::error('修改失败');
+        }
+    }
+    /**
+     * 删除企业
      * @param array $data
-     * @return array|mixed
+     * @return array
      */
-    public function checkCategoryName(array $data)
+    public function delCompany(array $data): array
     {
-        return $this->__request(__FUNCTION__, $data);
+        $result = Company::where('id', $data['id'])->delete();
+        if ($result) {
+            return Result::success($result);
+        } else {
+            return Result::error('删除失败');
+        }
     }
+    /**
+     * 审核企业
+     * @param array $data
+     * @return array
+     */
+    public function checkCompany(array $data): array
+    {
+        $user = User::where('id', $data['user_id'])->first();
+        if (empty($user)) {
+            return Result::error('用户不存在!');
+        }
+        $company = Company::where('id', $data['id'])->first();
+        if (empty($company)) {
+            return Result::error('企业不存在!');
+        }
+        // 状态:0:未审核 1:已审核 2:已拒绝
+        if ($data['status'] == 2 || $data['status'] == '2') {
+            $this->sendMessage([
+                'talk_type' => 901,
+                'title' => $company['title'],
+                'content' => '审核拒绝',
+                'messageType' => 8,
+                'user_id' => $company['user_id'],
+            ]);
+            $result = Company::where('id', $data['id'])->update(['status' => $data['status'], 'reject_reason' => $data['reason']]);
+        } else {
+            if ($data['status'] == 1) {
+                $this->sendMessage([
+                    'talk_type' => 901,
+                    'title' => $company['title'],
+                    'content' => '审核通过',
+                    'messageType' => 8,
+                    'user_id' => $company['user_id'],
+                ]);
+            } else if ($data['status'] == 0) {
+                $this->sendMessage([
+                    'talk_type' => 900,
+                    'title' => $company['title'],
+                    'content' => '提交了审核',
+                    'messageType' => 8,
+                ]);
+            }
+            $result = Company::where('id', $data['id'])->update(['status' => $data['status']]);
+        }
+        if (empty($result)) {
+            return Result::error('审核失败!');
+        } else {
+            return Result::success($result);
+        }
+    }
+    /**
+     * 获取企业信息
+     * @param array $data
+     * @return array
+     */
+    public function getCompanyInfo(array $data): array
+    {
+        $result = Company::where('id', $data['id'])->first();
+        $city_arr = json_decode($result['city_arr_id']);
+        $result['city_name'] = District::whereIn('id', $city_arr)
+            ->pluck('name')
+            ->implode('-');
 
+        if (empty($result)) {
+            return Result::error('企业不存在!');
+        } else {
+            return Result::success($result);
+        }
+    }
     /**
      * @param array $data
      * @return array
      */
-    public function getWebsiteArticleList(array $data)
+    public function getWebsiteCompany(array $data): array
+    {
+        $categorys = json_decode($data['id'], true);
+        $category_arr = $this->processArticlePro($data['website_id']);
+        $cat_1st_arr = $category_arr['cat_1st_arr'];
+        $catiall = $category_arr['catiall'];
+        $categoryIds = $category_arr['categoryIds'];
+        // return Result::success($category_arr);
+        foreach ($categorys as $key => $value) {
+            if (array_key_exists('level', $value)) {
+                $parts = explode(',', $value['level']);
+                $level = $parts[0] ?? null;
+                $imgnum = $parts[1] ?? null;
+                $textnum = $parts[2] ?? null;
+                if (!empty($textnum) && $textnum > 0) {
+                    $text_num = Company::where('level', $level)
+                        ->whereIn('category_id', $categoryIds)
+                        ->where('status', 1)
+                        ->select(
+                            'company.id',
+                            'company.title',
+                            'company.description',
+                            'company.updated_at',
+                            'company.category_id',
+                            'company.cat_arr_id'
+                        )
+                        ->orderBy('updated_at', 'desc')
+                        ->limit($textnum)
+                        ->get()->all();
+                }
+                if (!empty($imgnum) && $imgnum > 0) {
+                    $img_num = Company::where('level', $level)
+                        ->whereIn('category_id', $categoryIds)
+                        ->where('status', 1)
+                        ->where('imgurl', '!=', '')
+                        ->whereNotNull('imgurl')
+                        ->select(
+                            'company.id',
+                            'company.title',
+                            'company.description',
+                            'company.updated_at',
+                            'company.imgurl as imgs',
+                            'company.category_id',
+                            'company.cat_arr_id'
+                        )
+                        ->orderBy('updated_at', 'desc')
+                        ->limit($imgnum)
+                        ->get()->all();
+                }
+            }
+            if (array_key_exists('id', $value)) {
+                $parts = explode(',', $value['id']);
+                $category_id = $parts[0] ?? null;
+                $imgnum = $parts[1] ?? null;
+                $textnum = $parts[2] ?? null;
+                $category_arr = array_merge([$category_id], $cat_1st_arr[$category_id] ?? [0]);
+                if (!empty($textnum) && $textnum > 0) {
+                    $text_num = Company::whereIn('category_id', $category_arr)
+                        // ->where('website_id', $data['website_id'])
+                        ->where('status', 1)
+                        ->select(
+                            'company.id',
+                            'company.title',
+                            'company.description',
+                            'company.updated_at',
+                            'company.category_id',
+                            'company.cat_arr_id'
+                        )
+                        ->orderBy('updated_at', 'desc')
+                        ->limit($textnum)
+                        ->get()->all();
+                }
+                if (!empty($imgnum) && $imgnum > 0) {
+
+                    $img_num = Company::whereIn('category_id', $category_arr)
+                        // ->where('website_id', $data['website_id'])
+                        ->where('status', 1)
+                        ->where('imgurl', '!=', '')
+                        ->whereNotNull('imgurl')
+                        ->select(
+                            'company.id',
+                            'company.title',
+                            'company.description',
+                            'company.updated_at',
+                            'company.imgurl as imgs',
+                            'company.category_id',
+                            'company.cat_arr_id'
+                        )
+                        ->orderBy('updated_at', 'desc')
+                        ->limit($imgnum)
+                        ->get()->all();
+                }
+            }
+            if (!empty($text_num)) {
+                foreach ($text_num as $k => $v) {
+                    $text_num[$k]->category_name = $catiall[$v->category_id]['alias'];
+                    $text_num[$k]->pinyin = $catiall[$v->category_id]['pinyin'];
+                }
+            }
+            if (!empty($img_num)) {
+                foreach ($img_num as $k => $v) {
+                    $img_num[$k]->category_name = $catiall[$v->category_id]['alias'];
+                    $imgurl = json_decode($v['imgs'], true);
+                    if (!empty($imgurl)) {
+                        $img_num[$k]->imgurl = $imgurl[0];
+                    }
+                    $img_num[$k]->pinyin = $catiall[$v->category_id]['pinyin'];
+                }
+            }
+            $company[$key]['img_num'] = $img_num ?? [];
+            $company[$key]['text_num'] = $text_num ?? [];
+        }
+
+        if (empty($company)) {
+            return Result::error("暂无相关企业信息", 0);
+        }
+
+        return Result::success($company);
+    }
+    /**
+     * @param array $data
+     * @return array
+     */
+    public function getWebsiteCompanyList(array $data): array
     {
-        return $this->__request(__FUNCTION__, $data);
+        $where['website_id'] = $data['website_id'];
+        $where['status'] = 1;
+        $categoryIds = [];
+        if (isset($data['category_id']) && !empty($data['category_id'])) {
+
+            $category_id = $data['category_id'];
+        }
+        $category_arr = $this->processArticlePro($data['website_id']);
+        $categoryIds = $category_arr['categoryIds'];
+        // return Result::success($cat_1st_arr);
+        $company = Company::when(isset($data['keyword']) && !empty($data['keyword']), function ($query) use ($data) {
+            $query->where('title', 'like', '%' . $data['keyword'] . '%');
+        })
+            ->when(!isset($category_id) || empty($category_id), function ($query) use ($categoryIds) {
+                $query->whereIn('category_id', $categoryIds);
+            })
+            ->when(isset($data['category_id']) && !empty($data['category_id']), function ($query) use ($category_id) {
+                $query->where('category_id', $category_id);
+            })
+            ->where('status', 1)
+            ->select('id', 'title', 'introduce', 'description', 'content', 'category_id', 'cat_arr_id', 'updated_at')
+            ->orderBy('updated_at', 'desc')
+            ->paginate($data['pageSize'], ['*'], 'page', $data['page']);
+        if (empty($company)) {
+            return Result::error("暂无相关公司信息", 0);
+        }
+        $result = [
+            'count' => $company->total(),
+            'data' => $company->items(), // 使用 items() 方法替代不存在的 data() 方法
+        ];
+        return Result::success($result);
     }
     /**
+     * 获取项目列表
      * @param array $data
      * @return array
      */
-    public function selectWebsiteArticleInfo(array $data)
+    public function getProjectList(array $data): array
     {
-        return $this->__request(__FUNCTION__, $data);
+        $where = [];
+        $user = User::where('id', $data['user_id'])->first();
+        if (empty($user)) {
+            return Result::error('用户不存在!');
+        }
+        if ($user->type_id != 10000) {
+            array_push($where, ['project.user_id', $data['user_id']]);
+        }
+        $query = Project::query();
+        if (isset($data['website_id']) && !empty($data['website_id'])) {
+            array_push($where, ['project.website_id', $data['website_id']]);
+        }
+        if (isset($data['title']) && !empty($data['title'])) {
+            array_push($where, ['project.title', 'like', '%' . $data['title'] . '%']);
+        }
+        if ($data['status'] != 3) {
+            array_push($where, ['project.status', $data['status']]);
+        }
+        $query = Project::where($where)
+            ->when($data['status'] == 3, function ($query) {
+                $query->whereIn('project.status', [0, 2]);
+            });
+        $count = $query->clone()
+            ->count();
+        $rows = $query->clone()
+            ->leftJoin('website', 'project.website_id', 'website.id')
+            ->leftJoin('website_category', function ($join) {
+                $join->on('project.website_id', '=', 'website_category.website_id')
+                    ->on('project.category_id', '=', 'website_category.category_id');
+            })
+            ->select(
+                'project.id',
+                'project.title',
+                'project.updated_at',
+                'project.status',
+                'website.website_name',
+                'website_category.alias as category_name',
+                'project.website_id',
+                'project.user_id'
+            )
+            ->orderBy('project.updated_at', 'desc')
+            ->offset(($data['page'] - 1) * $data['pageSize'])
+            ->limit($data['pageSize'])
+            ->get();
+        if ($rows->isEmpty()) {
+            return Result::error("暂无相关项目信息", 0);
+        }
+        $result = [
+            'count' => $count,
+            'rows' => $rows,
+        ];
+        return Result::success($result);
     }
     /**
+     * 添加项目
      * @param array $data
-     * @return mixed
+     * @return array
      */
-    public function getWebsiteSurvey(array $data)
+    public function addProject(array $data): array
     {
-        return $this->__request(__FUNCTION__, $data);
+        $user = User::where('id', $data['user_id'])->first();
+        if (empty($user)) {
+            return Result::error("暂无相关用户信息", 0);
+        }
+        if ($user->type_id == 10000) {
+            $data['status'] = 1;
+        } else {
+            $data['status'] = 0;
+        }
+        if ($data['keyword'] == '') {
+            //提取标题+内容中的关键词
+            $data['keyword'] = $data['title'];
+            //  . substr(str_replace(' ', '', strip_tags($data['content'])), 0, 20);
+            Jieba::init(); // 初始化 jieba-php
+            Finalseg::init();
+            $segList = Jieba::cut($data['keyword']);
+            $segList1 = array_slice($segList, 0, 8);
+            $data['keyword'] = implode(',', $segList1);
+        }
+        if ($data['description'] == '') {
+            //提取内容中的描述
+            // var_dump(11111);
+            //提取内容中的描述
+            $content = $data['introduce'];
+            // 去除 <style> 和 <script> 标签及其内容
+            $content = preg_replace('/<(style|script)[^>]*>.*?<\/\1>/is', '', $content);
+            // 去除所有 HTML 标签
+            $content = strip_tags($content);
+            // 去除 HTML 实体
+            $content = html_entity_decode($content, ENT_QUOTES | ENT_HTML5, 'UTF-8');
+            // 只保留文本和标点符号(去除所有字母数字以外的特殊符号,可根据需要调整正则)
+            $content = preg_replace('/[^\p{L}\p{N}\p{P}\p{Zs}]+/u', '', $content);
+            // 去除多余空白
+            $content = preg_replace('/\s+/u', '', $content);
+            // 截取 100 个字符
+            $data['description'] = mb_substr($content, 0, 100);
+            // 过滤 HTML 标签并去除空格,然后截取前 100 个字符
+        }
+        if ($data['status'] == 0) {
+            $this->sendMessage([
+                'talk_type' => 1000,
+                'title' => $data['title'],
+                'content' => '提交了审核',
+                'messageType' => 9,
+            ]);
+        }
+        $project = Project::insertGetId($data);
+        if (empty($project)) {
+            return Result::error("暂无相关项目信息", 0);
+        }
+        return Result::success($project);
     }
     /**
+     * 更新项目
      * @param array $data
-     * @return mixed
+     * @return array
      */
-    public function addWebsiteSurveyOption(array $data)
+    public function upProject(array $data): array
     {
-        return $this->__request(__FUNCTION__, $data);
+        $project = Project::where('id', $data['id'])->first();
+        if (empty($project)) {
+            return Result::error("暂无相关项目信息", 0);
+        }
+        $id = $data['id'];
+        unset($data['id']);
+        $user = User::where('id', $data['user_id'])->first();
+        if (empty($user)) {
+            return Result::error("暂无相关用户信息", 0);
+        }
+        if ($user->type_id == 10000) {
+            $data['status'] = 1;
+        } else {
+            $data['status'] = 0;
+        }
+        unset($data['user_id']);
+        if ($data['keyword'] == '') {
+            //提取标题+内容中的关键词
+            $data['keyword'] = $data['title'];
+            //  . substr(str_replace(' ', '', strip_tags($data['content'])), 0, 20);
+            Jieba::init(); // 初始化 jieba-php
+            Finalseg::init();
+            $segList = Jieba::cut($data['keyword']);
+            $segList1 = array_slice($segList, 0, 8);
+            $data['keyword'] = implode(',', $segList1);
+        }
+        if ($data['description'] == '') {
+            //提取内容中的描述
+            // var_dump(11111);
+            //提取内容中的描述
+            $content = $data['introduce'];
+            // 去除 <style> 和 <script> 标签及其内容
+            $content = preg_replace('/<(style|script)[^>]*>.*?<\/\1>/is', '', $content);
+            // 去除所有 HTML 标签
+            $content = strip_tags($content);
+            // 去除 HTML 实体
+            $content = html_entity_decode($content, ENT_QUOTES | ENT_HTML5, 'UTF-8');
+            // 只保留文本和标点符号(去除所有字母数字以外的特殊符号,可根据需要调整正则)
+            $content = preg_replace('/[^\p{L}\p{N}\p{P}\p{Zs}]+/u', '', $content);
+            // 去除多余空白
+            $content = preg_replace('/\s+/u', '', $content);
+            // 截取 100 个字符
+            $data['description'] = mb_substr($content, 0, 100);
+            // 过滤 HTML 标签并去除空格,然后截取前 100 个字符
+        }
+        if ($data['status'] == 0) {
+            $this->sendMessage([
+                'talk_type' => 1000,
+                'title' => $data['title'],
+                'content' => '提交了审核',
+                'messageType' => 9,
+            ]);
+        }
+        $result = Project::where('id', $id)->update($data);
+        if (empty($result)) {
+            return Result::error("更新失败", 0);
+        }
+        return Result::success($result);
     }
     /**
+     * 删除项目
      * @param array $data
-     * @return mixed
+     * @return array
      */
-    public function addWebsiteSurveyVote(array $data)
+
+    public function delProject(array $data): array
     {
-        return $this->__request(__FUNCTION__, $data);
+        $user = User::where('id', $data['user_id'])->first();
+        if (empty($user)) {
+            return Result::error("暂无相关用户信息", 0);
+        }
+        $project = Project::where('id', $data['id'])->first();
+        if (empty($project)) {
+            return Result::error("暂无相关项目信息", 0);
+        }
+        $result = Project::where('id', $data['id'])->delete();
+        if (empty($result)) {
+            return Result::error("删除失败", 0);
+        }
+        return Result::success($result);
     }
     /**
+     * 审核项目
      * @param array $data
-     * @return mixed
+     * @return array
      */
-    public function getSurveyList(array $data)
+    public function checkProject(array $data): array
     {
-        return $this->__request(__FUNCTION__, $data);
+        $user = User::where('id', $data['user_id'])->first();
+        if (empty($user)) {
+            return Result::error("暂无相关用户信息", 0);
+        }
+        // 0:未审核;   1:已审核;   2:已拒绝;
+        if ($user->type_id != 10000) {
+            if ($data['status'] == 1 || $data['status'] == 2) {
+                return Result::error("此用户权限不足", 0);
+            }
+        }
+        $project = Project::where('id', $data['id'])->first();
+        if (empty($project)) {
+            return Result::error("暂无相关项目信息", 0);
+        }
+        if ($data['status'] == 2) {
+            $this->sendMessage([
+                'talk_type' => 1001,
+                'title' => $project['title'],
+                'content' => '审核拒绝',
+                'messageType' => 9,
+                'user_id' => $project['user_id'],
+            ]);
+            $result = Project::where('id', $data['id'])->update(['status' => $data['status'], 'refuse_reason' => $data['refuse_reason']]);
+        } else {
+            if ($data['status'] == 1) {
+                $this->sendMessage([
+                    'talk_type' => 1001,
+                    'title' => $project['title'],
+                    'content' => '审核通过',
+                    'messageType' => 9,
+                    'user_id' => $project['user_id'],
+                ]);
+            } else if ($data['status'] == 0) {
+                $this->sendMessage([
+                    'talk_type' => 1000,
+                    'title' => $project['title'],
+                    'content' => '提交了审核',
+                    'messageType' => 9,
+                ]);
+            }
+            $result = Project::where('id', $data['id'])->update(['status' => $data['status']]);
+        }
+
+        if (empty($result)) {
+            return Result::error("审核失败", 0);
+        }
+        return Result::success($result);
     }
     /**
+     * 获取项目详情
      * @param array $data
-     * @return mixed
+     * @return array
      */
-    public function getSurveyInfo(array $data)
+    public function getProjectInfo(array $data): array
     {
-        return $this->__request(__FUNCTION__, $data);
+        $project = Project::where('id', $data['id'])->first();
+        if (empty($project)) {
+            return Result::error("暂无相关项目信息", 0);
+        }
+        return Result::success($project);
     }
 
-    /**
-     * @param array $data
-     * @return mixed
-     */
-    public function selectWebsiteArticle(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
+    public function getWebsiteCompanyInfo(array $data): array
+    {
+        $company = Company::where('id', $data['id'])
+            ->leftJoin('job_industry', 'job_industry.hyid', 'company.hy_id')
+            ->where('status', 1)
+            // ->where('website_id', $data['website_id'])
+            ->select('company.*', 'job_industry.hyname as hy_name')
+            ->first();
+        // 企业性质:0:市场监管;1:信访纪检;2:公检法司;3:高关注机构
+        $jobnature_id = $company['jobnature_id'] ?? null;
+        if ($jobnature_id !== null) {
+            switch ($jobnature_id) {
+                case 0:
+                    $company->jobnature_name = '市场监督';
+                    break;
+                case 1:
+                    $company->jobnature_name = '信访纪检';
+                    break;
+                case 2:
+                    $company->jobnature_name = '公检法司';
+                    break;
+                case 3:
+                    $company->jobnature_name = '高关注机构';
+                    break;
+                default:
+                    $company->jobnature_name = '';
+                    break;
+            }
+        } else {
+            $company->jobnature_name = '';
+        }
+        $city_arr = $company->city_arr_id;
+        if (!empty($city_arr)) {
+            $city_arr = json_decode($city_arr, true);
+            $cityNames = District::whereIn('id', $city_arr)
+                ->pluck('name')
+                ->implode('-');
+            $company->city_name = $cityNames;
+        } else {
+            $company->city_name = '';
+        }
+        if (empty($company)) {
+            return Result::error("暂无相关公司信息", 0);
+        }
+        return Result::success($company);
+    }
+    public function getMSG(array $data): array
+    {
+        $type_id = isset($data['type_id']) ? $data['type_id'] : 1;
+        // '1:个人会员 2:政务会员 3:企业会员 4:调研员 10000:管理员 20000:游客(小程序)
+        $user_id = isset($data['user_id']) ? $data['user_id'] : 0; //用户id
+        $result = [];
+        if ($type_id == 1 or $type_id == 2 or $type_id == 3 or $type_id == 4) {
+            //最近的5篇已审的文章
+            $apply_articale = Article::where('status', 1)
+                ->where('admin_user_id', $user_id)
+                ->orderBy('updated_at', 'desc')
+                // ->limit(5)
+                ->get();
+
+            //获取5条用户的已审核商品
+            $good = Good::where('status', 2)
+                ->where('user_id', $user_id)
+                ->orderBy('updated_at', 'desc')
+                // ->limit(5)
+                ->get();
+            //获取5条用户待审核的公告
+            $notice = Notice::where('status', 2)
+                ->where('user_id', $user_id)
+                ->orderBy('updated_at', 'desc')
+                ->limit(5)->get();
+            //获取5条用户的待审核投诉
+            $complaint = Complaint::where('status', 2)
+                ->where('user_id', $user_id)
+                ->orderBy('updated_at', 'desc')
+                // ->limit(5)
+                ->get();
+            //获取5条用户的book
+            $book = Book::where('status', 2)
+                ->where('user_id', $user_id)
+                ->orderBy('updated_at', 'desc')
+                // ->limit(5)
+                ->get();
+            //获取5条用户的求职
+            //获取5条用户的求职 1
+            $job_hunting = JobHunting::where('job_hunting.status', 2)
+                ->where('job_hunting.user_id', $user_id)
+                ->leftJoin('user', 'job_hunting.user_id', '=', 'user.id')
+                ->leftJoin('website', 'job_hunting.website_id', '=', 'website.id')
+                ->select('job_hunting.*', 'user.nickname as nickname', 'user.user_name as user_name', 'website.website_name as website_name')
+                ->orderBy('updated_at', 'desc')
+                // ->limit(5)
+                ->get();
+            //获取5条用户的求职 2
+            $job_recruiting = JobRecruiting::where('job_recruiting.status', 1)
+                ->where('job_recruiting.user_id', $user_id)
+                ->leftJoin('user', 'job_recruiting.user_id', '=', 'user.id')
+                ->leftJoin('website', 'job_recruiting.website_id', '=', 'website.id')
+                ->select('job_recruiting.*', 'user.nickname as nickname', 'user.user_name as user_name', 'website.website_name as website_name')
+                ->orderBy('updated_at', 'desc')
+                // ->limit(5)
+                ->get();
+            //人才库  1
+            $job_apply = JobApply::where('job_apply.status', 1)
+                ->where('job_apply.receiver_id', $user_id)
+                ->leftJoin('user', 'job_apply.user_id', '=', 'user.id')
+                ->leftJoin('website', 'job_apply.website_id', '=', 'website.id')
+                ->leftJoin('job_company', 'job_company.job_id', '=', 'job_apply.recruit_id')
+                ->leftJoin('job_recruiting', 'job_recruiting.id', '=', 'job_apply.recruit_id')
+                ->select('job_recruiting', 'job_recruiting.', '', '')
+                ->select('job_apply.*', 'user.nickname as nickname', 'user.user_name as user_name', 'website.website_name as website_name', 'job_company.business_name as business_name', 'job_recruiting.title as job_name')
+                ->orderBy('updated_at', 'desc')
+                // ->limit(5)
+                ->get();
+            // 职场机会 2
+            $job_resume = JobResume::where('job_resume.status', 1)
+                ->where('job_resume.receiver_id', $user_id)
+                ->leftJoin('user', 'job_resume.receiver_id', '=', 'user.id')
+                ->leftJoin('website', 'job_resume.website_id', '=', 'website.id')
+                ->leftJoin('job_company', 'job_company.job_id', '=', 'job_resume.recruit_id')
+                ->select('job_resume.*', 'user.nickname as nickname', 'user.user_name as user_name', 'website.website_name as website_name', 'job_company.business_name as business_name')
+                ->orderBy('updated_at', 'desc')
+                // ->limit(5)
+                ->get();
+
+            //获取5条用户待处理的投诉
+            $complaint_deal = Complaint::where('status', 2)
+                ->where('deal', 1)
+                ->whereJsonContains('re_user_ids', $user_id)
+                ->orderBy('updated_at', 'desc')
+                // ->limit(5)
+                ->get();
+            //获取 被通知者未读信息
+            $notice_unread = Notice::where('status', 2)
+                ->whereJsonContains('re_user_ids', $user_id)
+                //未读消息
+                ->where(function ($query) use ($user_id) {
+                    $query->whereJsonDoesntContain('read_id', $user_id)
+                        ->orWhereNull('read_id');
+                })
+                ->orderBy('updated_at', 'desc')
+                ->get();
+            $complaint_unread = Complaint::where('status', 2)
+                ->whereJsonContains('re_user_ids', $user_id)
+                //未读消息
+                ->where(function ($query) use ($user_id) {
+                    $query->whereJsonDoesntContain('read_id', $user_id)
+                        ->orWhereNull('read_id');
+                })
+                ->orderBy('updated_at', 'desc')
+                ->get();
+
+
+            //获取5条用户的yijing审核公司 :0:未审核;1:已审核;2:已拒绝
+
+            $complany = Company::where('status', 1)
+                ->where('user_id', $user_id)
+                ->orderBy('updated_at', 'desc')
+                // ->limit(5)
+                ->get();
+
+
+            //获取5条单聊未读聊天消息
+            // $chat = ChatRecords::where('is_read', 0)
+            //   ->where('user_id', $user_id)
+            //   ->leftJoin('user', 'chat_records.receiver_id', '=', 'user.id')
+
+            //   ->select('chat_records.*', 'user.nickname as nickname', 'user.user_name as user_name')
+            //   ->where('action', 'recieved')
+            //   ->where('talk_type', 1)
+            //   ->orderBy('created_at', 'desc')
+            //   // ->limit(5)
+            //   ->get();
+            //获取5条未读群聊信息
+            // $chat_group = ChatRecords::where('is_read', 0)
+            //   ->leftJoin('chat_groups', 'chat_records.receiver_id', '=', 'chat_groups.id')
+            //   ->select('chat_records.*', 'chat_groups.group_name as user_name')
+            //   ->where('user_id', $user_id)
+            //   ->where('talk_type', 2)
+            //   ->orderBy('created_at', 'desc')
+            //   // ->limit(5)
+            //   ->get();
+
+            //获取5条用户的待审核项目 
+            $project = Project::where('status', 1)
+                ->where('user_id', $user_id)
+                ->orderBy('updated_at', 'desc')
+                // ->limit(5)
+                ->get();
+
+            // count($chat) + count($chat_group) +
+            $count = count($apply_articale) + count($good) + count($notice) + count($complaint) + count($book) + count($job_hunting) + count($job_recruiting) + count($job_apply) + count($job_resume) + count($complaint_deal)
+                + count($complany)
+                + count($project)
+                + count($notice_unread)
+                + count($complaint_unread)
+                // + count($chat) + count($chat_group)
+            ;
+            $result = [
+                'apply_articale' => $apply_articale,
+                // 'chat' => $chat,
+                // 'chat_group' => $chat_group,
+                'good' => $good,
+                'notice' => $notice,
+                'complaint' => $complaint,
+                'book' => $book,
+                'job_hunting' => $job_hunting,
+                'job_recruiting' => $job_recruiting,
+                'job_apply' => $job_apply,
+                'job_resume' => $job_resume,
+                'complaint_deal' => $complaint_deal,
+                'complany' => $complany,
+                'project' => $project,
+                'notice_unread' => $notice_unread,
+                'complaint_unread' => $complaint_unread,
+                'count' => $count,
+            ];
+        } elseif ($type_id == 12) {
+            //最近的5篇已审的文章
+            $apply_articale = Article::where('status', 1)
+                ->where('admin_user_id', $user_id)
+                ->limit(5)->get();
+            //获取5条单聊未读聊天消息
+            $chat = ChatRecords::where('is_read', 0)
+                ->where('user_id', $user_id)
+                ->where('talk_type', 1)
+                ->orderBy('created_at', 'desc')
+                ->limit(5)->get();
+            //获取5条未读群聊信息
+            $chat_group = ChatRecords::where('is_read', 0)
+                ->where('user_id', $user_id)
+                ->where('talk_type', 2)
+                ->orderBy('created_at', 'desc')
+                ->limit(5)->get();
+            //获取5条用户的已审核商品
+            $good = Good::where('status', 2)
+                ->where('user_id', $user_id)
+                ->orderBy('updated_at', 'desc')
+                ->limit(5)->get();
+            //获取5条用户的book
+            $book = Book::where('status', 2)
+                ->where('user_id', $user_id)
+                ->orderBy('updated_at', 'desc')
+                ->limit(5)->get();
+            //获取5条用户的求职
+            //获取5条用户的求职 1
+            //count($chat) + count($chat_group) 
+            $count = count($apply_articale) + count($good);
+            $result = [
+                'apply_articale' => $apply_articale,
+                'chat' => $chat,
+                'chat_group' => $chat_group,
+                'good' => $good,
+                'book' => $book,
+                'count' => $count,
+            ];
+        } elseif ($type_id == 13) {
+            //最近的5篇已审的文章
+            $apply_articale = Article::where('status', 1)
+                ->where('admin_user_id', $user_id)
+                ->limit(5)->get();
+            //获取5条单聊未读聊天消息
+            $chat = ChatRecords::where('is_read', 0)
+                ->where('user_id', $user_id)
+                ->where('talk_type', 1)
+                ->orderBy('created_at', 'desc')
+                ->limit(5)->get();
+            //获取5条未读群聊信息
+            $chat_group = ChatRecords::where('is_read', 0)
+                ->where('user_id', $user_id)
+                ->where('talk_type', 2)
+                ->orderBy('created_at', 'desc')
+                ->limit(5)->get();
+            //获取5条用户的已审核商品
+            $good = Good::where('status', 2)
+                ->where('user_id', $user_id)
+                ->orderBy('updated_at', 'desc')
+                ->limit(5)->get();
+
+            //count($chat) + count($chat_group) +
+            $count =  count($apply_articale) + count($good);
+            $result = [
+                'apply_articale' => $apply_articale,
+                'chat' => $chat,
+                'chat_group' => $chat_group,
+                'good' => $good,
+                'count' => $count,
+            ];
+        } elseif ($type_id == 14) {
+            //最近的5篇已审的文章
+            $apply_articale = Article::where('status', 1)
+                ->where('admin_user_id', $user_id)
+                // ->limit(5)
+                ->get();
+
+            //获取5条用户的已审核商品
+            $good = Good::where('status', 2)
+                ->where('user_id', $user_id)
+                ->orderBy('updated_at', 'desc')
+                // ->limit(5)
+                ->get();
+            $count =  count($apply_articale) + count($good);
+            $result = [
+                'apply_articale' => $apply_articale,
+                'chat' => '',
+                'chat_group' => '',
+                'good' => $good,
+                'count' => $count,
+            ];
+        } elseif ($type_id == 10000) {
+            //获取未审核的5篇文章
+            $apply_articale = Article::where('status', 0)
+                ->orderBy('updated_at', 'desc')
+                // ->limit(5)
+                ->get();
+            //获取5条单聊未读聊天消息
+            //获取5条单聊未读聊天消息
+            // $chat = ChatRecords::where('is_read', 0)
+            //   ->where('user_id', $user_id)
+            //   ->leftJoin('user', 'chat_records.receiver_id', '=', 'user.id')
+
+            //   ->select('chat_records.*', 'user.nickname as nickname', 'user.user_name as user_name')
+            //   ->where('action', 'recieved')
+            //   ->where('talk_type', 1)
+            //   ->orderBy('created_at', 'desc')
+            //   // ->limit(5)
+            //   ->get();
+            // //获取5条未读群聊信息
+            // $chat_group = ChatRecords::where('is_read', 0)
+            //   ->leftJoin('chat_groups', 'chat_records.receiver_id', '=', 'chat_groups.id')
+            //   ->select('chat_records.*', 'chat_groups.group_name as user_name')
+            //   ->where('user_id', $user_id)
+            //   ->where('talk_type', 2)
+            //   ->orderBy('created_at', 'desc')
+            //   // ->limit(5)
+            //   ->get();
+            //获取5条用户的已审核商品
+            $good = Good::where('status', 1)
+                // ->where('user_id', $user_id)
+                ->orderBy('updated_at', 'desc')
+                // ->limit(5)
+                ->get();
+            //获取5条用户待审核的公告
+            $notice = Notice::where('status', 1)
+                ->orderBy('updated_at', 'desc')
+                // ->limit(5)
+                ->get();
+            //获取5条用户的待审核投诉
+            $complaint = Complaint::where('status', 1)
+                ->orderBy('updated_at', 'desc')
+                // ->limit(5)
+                ->get();
+            //获取5条用户的book
+            $book = Book::where('status', 1)
+                ->orderBy('updated_at', 'desc')
+                // ->limit(5)
+                ->get();
+            //获取5条用户的求职 1
+            $job_hunting = JobHunting::where('job_hunting.status', 1)
+                ->leftJoin('user', 'job_hunting.user_id', '=', 'user.id')
+                ->leftJoin('website', 'job_hunting.website_id', '=', 'website.id')
+                ->select('job_hunting.*', 'user.nickname as nickname', 'user.user_name as user_name', 'website.website_name as website_name')
+                ->orderBy('updated_at', 'desc')
+                // ->limit(5)
+                ->get();
+            //获取5条用户的求职 2
+            $job_recruiting = JobRecruiting::where('job_recruiting.status', 0)
+                ->leftJoin('user', 'job_recruiting.user_id', '=', 'user.id')
+                ->leftJoin('website', 'job_recruiting.website_id', '=', 'website.id')
+                ->select('job_recruiting.*', 'user.nickname as nickname', 'user.user_name as user_name', 'website.website_name as website_name')
+                ->orderBy('updated_at', 'desc')
+                // ->limit(5)
+                ->get();
+            //人才库  1
+            $job_apply = JobApply::where('job_apply.status', 1)
+                ->leftJoin('user', 'job_apply.user_id', '=', 'user.id')
+                ->leftJoin('website', 'job_apply.website_id', '=', 'website.id')
+                ->leftJoin('job_company', 'job_company.job_id', '=', 'job_apply.recruit_id')
+                ->leftJoin('job_recruiting', 'job_recruiting.id', '=', 'job_apply.recruit_id')
+                ->select('job_apply.*', 'user.nickname as nickname', 'user.user_name as user_name', 'website.website_name as website_name', 'job_company.business_name as business_name', 'job_recruiting.title as job_name')
+                ->orderBy('updated_at', 'desc')
+                // ->limit(5)
+                ->get();
+            // 职场机会 2
+            $job_resume = JobResume::where('job_resume.status', 1)
+                ->leftJoin('user', 'job_resume.receiver_id', '=', 'user.id')
+                ->leftJoin('website', 'job_resume.website_id', '=', 'website.id')
+                ->leftJoin('job_company', 'job_company.job_id', '=', 'job_resume.recruit_id')
+                ->select('job_resume.*', 'user.nickname as nickname', 'user.user_name as user_name', 'website.website_name as website_name', 'job_company.business_name as business_name')
+                ->orderBy('updated_at', 'desc')
+                // ->limit(5)
+                ->get();
+            //待审核数据com pro
+            $complany = Company::where('status', 0)
+                ->orderBy('updated_at', 'desc')
+                // ->limit(5)
+                ->get();
+            $project = Project::where('status', 0)
+                ->orderBy('updated_at', 'desc')
+                // ->limit(5)
+                ->get();
+
+
+            $count =
+                // count($chat) + 
+                // count($chat_group) + 
+                count($apply_articale) + count($good) + count($notice) + count($complaint) + count($book) + count($job_hunting) + count($job_recruiting)
+                // + count($job_apply)
+                // + count($job_resume)
+                + count($complany)
+                + count($project);
+            $result = [
+                'apply_articale' => $apply_articale,
+                // 'chat' => $chat,
+                // 'chat_group' => $chat_group,
+                'good' => $good,
+                'notice' => $notice,
+                'complaint' => $complaint,
+                'book' => $book,
+                'job_hunting' => $job_hunting,
+                'job_recruiting' => $job_recruiting,
+                // 'job_apply' => $job_apply,
+                // 'job_resume' => $job_resume,
+                'complany' => $complany,
+                'project' => $project,
+                'count' => $count,
+            ];
+        } elseif ($type_id == 20000) {
+        }
+        var_dump($type_id, '-----------------test---------');
+        return Result::success($result);
     }
     /**
      * @param array $data
-     * @return mixed
+     * @return array
      */
-    public function getWebsiteCatidArticle(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
+    public function getWebsiteProject(array $data): array
+    {
+        $categorys = json_decode($data['id'], true);
+        if (!empty($categorys)) {
+            $category_arr = $this->processArticlePro($data['website_id']);
+            $cat_1st_arr = $category_arr['cat_1st_arr'];
+            $catiall = $category_arr['catiall'];
+            // return Result::success($catiall);
+            foreach ($categorys as $key => $val) {
+                if (isset($val['level'][0]) && !empty($val['level'][0])) {
+                    $level = explode(',', $val['level'])[0];
+                    $imgnum = explode(',', $val['level'])[1] ?? null;
+                    $textnum = explode(',', $val['level'])[2] ?? null;
+                    if ($level == 1) {
+                        if (!empty($textnum) && $textnum > 0) {
+                            $text_num = Project::where('level', $level)
+                                ->where('website_id', $data['website_id'])
+                                ->where('status', 1)
+                                ->select(
+                                    'project.id',
+                                    'project.title',
+                                    'project.description',
+                                    'project.updated_at',
+                                    'project.category_id',
+                                    'project.cat_arr_id'
+                                )
+                                ->orderBy('updated_at', 'desc')
+                                ->limit($textnum)
+                                ->get()->all();
+                        }
+                        if (!empty($imgnum) && $imgnum > 0) {
+                            $img_num = Project::where('level', $level)
+                                ->where('website_id', $data['website_id'])
+                                ->where('status', 1)
+                                ->where('imgurl', '!=', '')
+                                ->whereNotNull('imgurl')
+                                ->select(
+                                    'project.id',
+                                    'project.title',
+                                    'project.description',
+                                    'project.updated_at',
+                                    'project.imgurl as imgs',
+                                    'project.category_id',
+                                    'project.cat_arr_id'
+                                )
+                                ->orderBy('updated_at', 'desc')
+                                ->limit($imgnum)
+                                ->get()->all();
+                        }
+                    } else {
+                        if (!empty($textnum) && $textnum > 0) {
+                            $text_num = Project::where('website_id', $data['website_id'])
+                                ->where('status', 1)
+                                ->select(
+                                    'project.id',
+                                    'project.title',
+                                    'project.description',
+                                    'project.updated_at',
+                                    'project.category_id',
+                                    'project.cat_arr_id',
+                                    'project.website_id',
+                                    'project.updated_at',
+                                    'project.created_at'
+                                )
+                                ->orderBy('updated_at', 'desc')
+                                ->limit($textnum)
+                                ->get()->all();
+                        }
+                        if (!empty($imgnum) && $imgnum > 0) {
+                            $img_num = Project::where('website_id', $data['website_id'])
+                                ->where('status', 1)
+                                ->where('imgurl', '!=', '')
+                                ->whereNotNull('imgurl')
+                                ->select(
+                                    'project.id',
+                                    'project.title',
+                                    'project.description',
+                                    'project.updated_at',
+                                    'project.imgurl as imgs',
+                                    'project.category_id',
+                                    'project.cat_arr_id'
+                                )
+                                ->orderBy('updated_at', 'desc')
+                                ->limit($imgnum)
+                                ->get()->all();
+                        }
+                    }
+                }
+                if (isset($val['id'][0]) && !empty($val['id'][0])) {
+                    $category_ids = explode(',', $val['id'])[0];
+                    $cat_imgnum = explode(',', $val['id'])[1] ?? null;
+                    $cat_textnum = explode(',', $val['id'])[2] ?? null;
+                    $category_arr = array_merge([$category_ids], $cat_1st_arr[$category_ids] ?? [0]);
+                    if (!empty($cat_textnum) && $cat_textnum > 0) {
+                        $text_num = Project::whereIn('category_id', $category_arr)
+                            ->where('website_id', $data['website_id'])
+                            ->where('status', 1)
+                            ->select(
+                                'project.id',
+                                'project.title',
+                                'project.description',
+                                'project.updated_at',
+                                'project.category_id',
+                                'project.cat_arr_id'
+                            )
+                            ->orderBy('updated_at', 'desc')
+                            ->limit($cat_textnum)
+                            ->get()->all();
+                    }
+                    if (!empty($cat_imgnum) && $cat_imgnum > 0) {
+                        $img_num = Project::whereIn('category_id', $category_arr)
+                            ->where('website_id', $data['website_id'])
+                            ->where('status', 1)
+                            ->where('imgurl', '!=', '')
+                            ->whereNotNull('imgurl')
+                            ->select(
+                                'project.id',
+                                'project.title',
+                                'project.description',
+                                'project.updated_at',
+                                'project.imgurl as imgs',
+                                'project.category_id',
+                                'project.cat_arr_id'
+                            )
+                            ->orderBy('updated_at', 'desc')
+                            ->limit($cat_imgnum)
+                            ->get()->all();
+                    }
+                }
+                if (!empty($img_num)) {
+                    foreach ($img_num as $k => $v) {
+                        $img_num[$k]->category_name = $catiall[$v->category_id]['alias'];
+                        $imgurl = json_decode($v['imgs'], true);
+                        if (!empty($imgurl)) {
+                            $img_num[$k]->imgurl = $imgurl[0];
+                        }
+                        $img_num[$k]->pinyin = $catiall[$v->category_id]['pinyin'];
+                    }
+                }
+                if (!empty($text_num)) {
+                    foreach ($text_num as $k => $v) {
+                        $text_num[$k]->category_name = $catiall[$v->category_id]['alias'];
+                        $text_num[$k]->pinyin = $catiall[$v->category_id]['pinyin'];
+                    }
+                }
+                $project[$key]['img_num'] = $img_num ?? [];
+                $project[$key]['text_num'] = $text_num ?? [];
+            }
+        }
+        if (empty($project)) {
+            return Result::error("暂无相关项目信息", 0);
+        }
+        return Result::success($project);
     }
     /**
      * @param array $data
-     * @return mixed
+     * @return array
      */
-    public function getWebsiteAllArticle(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
+    public function getWebsiteProjectInfo(array $data): array
+    {
+        $project = Project::where('id', $data['id'])
+            ->where('status', 1)
+            ->where('website_id', $data['website_id'])
+            ->select('project.*')
+            ->first();
+        if (empty($project)) {
+            return Result::error("暂无相关项目信息", 0);
+        }
+        return Result::success($project);
     }
     /**
      * @param array $data
-     * @return mixed
+     * @return array
      */
-    public function getWebsiteArticles(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
+    public function getWebsiteProjectList(array $data): array
+    {
+        $where = [];
+        if (isset($data['category_id']) && !empty($data['category_id'])) {
+            $where['category_id'] = $data['category_id'];
+        }
+        if (isset($data['keyword']) && !empty($data['keyword'])) {
+            $where[] = ['title', 'like', '%' . $data['keyword'] . '%'];
+        }
+        $query = Project::where($where)
+            ->where('status', 1)
+            ->where('website_id', $data['website_id'])
+            ->select(
+                'project.id',
+                'project.title',
+                'project.description',
+                'project.imgurl as imgs',
+                'project.category_id',
+                'project.cat_arr_id'
+            )
+            ->orderBy('updated_at', 'desc');
+        $count = $query->count();
+        $project = $query->clone()
+            ->offset(($data['page'] - 1) * $data['pageSize'])
+            ->limit($data['pageSize'])
+            ->get()->all();
+        if (empty($project)) {
+            return Result::error("暂无相关项目信息", 0);
+        }
+        $categorys = $this->processArticlePro($data['website_id']);
+        $catiall = $categorys['catiall'];
+        foreach ($project as $key => $val) {
+            $project[$key]->category_name = $catiall[$val->category_id]['alias'];
+            if (!empty($val['imgs'])) {
+                $imgurl = json_decode($val['imgs'], true);
+                if (!empty($imgurl)) {
+                    $project[$key]->imgurl = $imgurl[0];
+                }
+            } else {
+                $project[$key]->imgurl = '';
+            }
+
+            $project[$key]->pinyin = $catiall[$val->category_id]['pinyin'];
+        }
+        $result = [
+            'rows' => $project,
+            'count' => $count,
+        ];
+        return Result::success($result);
     }
+
     /**
      * @param array $data
-     * @return mixed
+     * @return array
      */
-    public function getWebsiteshop(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
+    public function getWebsiteCategoryJob(array $data): array
+    {
+        $categorys = json_decode($data['id'], true);
+        if (!empty($categorys)) {
+            $category_arr = $this->processArticlePro($data['website_id']);
+            $cat_1st_arr = $category_arr['cat_1st_arr'];
+            $catiall = $category_arr['catiall'];
+            foreach ($categorys as $key => $val) {
+                if (isset($val['id']) && !empty($val['id'])) {
+                    $catid = explode(',', $val['id'])[0] ?? null;
+                    $type = explode(',', $val['id'])[1] ?? null;
+                    $textnum = explode(',', $val['id'])[2] ?? null;
+                }
+
+                // 4:招聘;5:求职;
+                if ($textnum > 0 && $type == 4 && !empty($catid)) {
+                    // 状态   0:待审核;1:已审核通过;(只有企业会员需要审核);2:已拒绝;
+                    $job = JobRecruiting::WhereRaw("JSON_CONTAINS(job_recruiting.cat_arr_id, '" . intval($catid) . "') = 1")
+                        ->leftJoin('job_company', 'job_recruiting.id', '=', 'job_company.job_id')
+                        ->where('job_recruiting.status', 1)
+                        ->where('job_recruiting.website_id', $data['website_id'])
+                        ->select(
+                            'job_recruiting.id',
+                            'job_recruiting.title',
+                            'job_company.business_name',
+                            'job_recruiting.updated_at',
+                            'job_recruiting.cat_arr_id',
+                            'job_recruiting.keyword',
+                            'job_recruiting.description'
+                        )
+                        ->orderBy('job_recruiting.updated_at', 'desc')
+
+                        ->limit($textnum)
+                        ->get()->all();
+                } else if ($textnum > 0 && $type == 5 && !empty($catid)) {
+                    // 状态  审核状态,1待审核2已审核3已拒绝
+                    $job = JobHunting::WhereRaw("JSON_CONTAINS(job_hunting.cat_arr_id, '" . intval($catid) . "') = 1")
+                        ->leftJoin('job_position', 'job_hunting.job_name_get', '=', 'job_position.zwid')
+                        ->where('job_hunting.status', 2)
+                        ->where('job_hunting.website_id', $data['website_id'])
+                        ->select(
+                            'job_hunting.id',
+                            'job_hunting.name',
+                            'job_hunting.cat_arr_id',
+                            'job_position.zwname as job_name',
+                            'job_hunting.updated_at',
+                            // 'job_hunting.keyword',
+                            'job_hunting.slelf_evaluation'
+                        )
+                        ->orderBy('updated_at', 'desc')
+                        ->limit($textnum)
+                        ->get()->all();
+                } else {
+                    $job = [];
+                }
+                //  var_dump($catid.'222uuuuuuu'.$key);
+                if (!empty($job)) {
+                    foreach ($job as $k => $value) {
+                        if (isset($value->cat_arr_id)) {
+                            $catArr = json_decode($value->cat_arr_id, true);
+                            $catId = end($catArr);
+                        } else {
+                            continue;
+                        }
+                        if (isset($catiall[$catId])) {
+                            $job[$k]->pinyin = $catiall[$catId]['pinyin'];
+                        }
+                    }
+                }
+                // var_dump($catid.'xxxxx'.$key);
+                $result[$key] = $job ?? [];
+            }
+        }
+        if (empty($result)) {
+            return Result::error("暂无相关分类信息", 0);
+        }
+
+        return Result::success($result);
     }
     /**
-     * @param array $data
-     * @return mixed
+     * 发送消息
+     * @param array $messageData
+     * @return void
      */
-    public function getWebsiteshopCat(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
+    public function sendMessage($messageData)
+    {
+        $msg = [
+            'talk_type' => $messageData['talk_type'],
+            'title' => $messageData['title'],
+            'content' => $messageData['content'],
+            'messageType' => $messageData['messageType'],
+            'user_id' => $messageData['user_id'] ?? '',
+            'time' => microtime(),
+        ];
+        $message = new MqProducer($msg);
+        $producer = ContextApplicationContext::getContainer()->get(Producer::class);
+        $producer->produce($message);
     }
     /**
+     * 行业分类管理  ------1121
      * @param array $data
-     * @return mixed
+     * @return array
      */
-    public function getWebsiteshopInfo(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
+    public function getJobIndustryList(array $data): array
+    {
+        $page = $data['page'] ?? 1;
+        $page_size = $data['page_size'] ?? 10;
+        if (isset($data['hyname']) && !empty($data['hyname'])) {
+            $where = ['hyname', 'like', '%' . $data['hyname'] . '%'];
+        } else {
+            $where = [];
+        }
+        $rs_query = JobIndustry::when(!empty($where), function ($query) use ($where) {
+            $query->where([$where]); // 修复:将条件包装成二维数组
+        })
+            ->orderBy('updated_at', 'desc');
+        $count = $rs_query->count();
+        $hy = $rs_query->offset(($page - 1) * $page_size)->limit($page_size)->get()->all();
+        $result = [
+            'count' => $count,
+            'list' => $hy,
+        ];
+        if (empty($hy)) {
+            return Result::success('暂无数据');
+        }
+        return Result::success($result);
     }
     /**
+     * 添加行业分类
      * @param array $data
-     * @return mixed
+     * @return array
      */
-    public function getWebsiteshopList(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
+    public function addJobIndustry(array $data): array
+    {
+        $hy_name = JobIndustry::where('hyname', $data['hyname'])->first(['hyid']);
+        if (!empty($hy_name)) {
+            return Result::error('行业分类已存在');
+        }
+        $hy = JobIndustry::insertGetId($data);
+        if (empty($hy)) {
+            return Result::error('添加失败');
+        }
+        return Result::success($hy);
     }
     /**
+     * 更新行业分类
      * @param array $data
-     * @return mixed
+     * @return array
      */
-    public function getWebsiteBook(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
+    public function upJobIndustry(array $data): array
+    {
+        $hy_query = JobIndustry::get();
+        $hy_ids = $hy_query->pluck('hyid')->toArray();
+        $hy_names = $hy_query->pluck('hyname')->toArray();
+        if (!in_array($data['hyid'], $hy_ids)) {
+            return Result::error('行业分类不存在');
+        }
+        if (isset($data['hyname']) && !empty($data['hyname'])) {
+            $other_key_hy = array_search($data['hyid'], $hy_ids);
+            // return Result::success($other_key_hy);
+            unset($hy_names[$other_key_hy]);
+            if (in_array($data['hyname'], $hy_names)) {
+                return Result::error('行业分类名称已存在');
+            }
+        }
+        $hy = JobIndustry::where('hyid', $data['hyid'])->update($data);
+        if (empty($hy)) {
+            return Result::error('更新失败');
+        }
+        return Result::success($hy);
     }
     /**
+     * 删除行业分类
      * @param array $data
-     * @return mixed
+     * @return array
      */
-    public function getWebsiteBookList(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
+    public function delJobIndustry(array $data): array
+    {
+        $hy_id = JobIndustry::where('hyid', $data['hyid'])->first(['hyid']);
+        if (empty($hy_id)) {
+            return Result::error('行业分类不存在');
+        }
+        $hy = JobIndustry::where('hyid', $data['hyid'])->delete();
+        if (empty($hy)) {
+            return Result::error('删除失败');
+        }
+        return Result::success($hy);
     }
     /**
+     * 职位分类-列表
      * @param array $data
-     * @return mixed
+     * @return array
      */
-    public function getWebsiteBookInfo(array $data)
+    public function getJobPositionList(array $data): array
     {
-        return $this->__request(__FUNCTION__, $data);
+        $page = $data['page'] ?? 1;
+        $page_size = $data['page_size'] ?? 10;
+        $where = [];
+        if (isset($data['zwname']) && !empty($data['zwname'])) {
+            $zwids = JobPosition::where('zwpid', 0)
+                ->when(!empty($data['zwname']), function ($query) use ($data) {
+                    $query->where('zwname', 'like', '%' . $data['zwname'] . '%');
+                })
+                ->orderBy('updated_at', 'desc')
+                ->pluck('zwid')
+                // ->get()
+                ->toArray();
+        }
+        if (isset($data['childname']) && !empty($data['childname'])) {
+            $child_zwids = JobPosition::where('zwpid', '!=', 0)
+                ->when(!empty($data['childname']), function ($query) use ($data) {
+                    $query->where('zwname', 'like', '%' . $data['childname'] . '%');
+                })
+                ->orderBy('updated_at', 'desc')
+                ->pluck('zwpid')
+                // ->get()
+                ->toArray();
+            if (isset($zwids) && is_array($zwids) && is_array($child_zwids)) {
+                $child_zwids = array_intersect($zwids, $child_zwids);
+            }
+            $zwids = array_values(array_unique($child_zwids));
+        }
+        $zwids = $zwids ?? null;
+        $count =  JobPosition::when(!empty($zwids), function ($query) use ($zwids) {
+            $query->whereIn('zwid', $zwids);
+        })
+            ->where('zwpid', 0)
+            ->count();
+        $position =  JobPosition::when(!empty($zwids), function ($query) use ($zwids) {
+            $query->whereIn('zwid', $zwids);
+        })
+            ->where('zwpid', 0)
+            ->orderBy('updated_at', 'desc')
+            ->offset(($page - 1) * $page_size)
+            ->limit($page_size)->get()
+            ->map(function ($item) use ($data) {
+                $item->children = $item->where('zwpid', $item->zwid)
+                    ->when(!empty($data['childname']), function ($query) use ($data) {
+                        $query->where('zwname', 'like', '%' . $data['childname'] . '%');
+                    })
+                    ->orderBy('updated_at', 'desc')
+                    ->get();
+                return $item;
+            })
+            ->all();
+        $result = [
+            'count' => $count,
+            'list' => $position,
+        ];
+        if (empty($result)) {
+            return Result::success('暂无数据');
+        }
+        return Result::success($result);
     }
     /**
+     * 职位分类-添加
      * @param array $data
-     * @return mixed
+     * @return array
      */
-    public function getWebsiteJob(array $data)
+    public function addJobPosition(array $data): array
     {
-        return $this->__request(__FUNCTION__, $data);
+        $zw_name = JobPosition::where('zwpid', $data['zwpid'])
+            ->where('zwname', $data['zwname'])->first(['zwid']);
+        if (!empty($zw_name)) {
+            return Result::error('职位分类已存在');
+        }
+        $zw = JobPosition::insertGetId($data);
+        if (empty($zw)) {
+            return Result::error('添加失败');
+        }
+        return Result::success($zw);
     }
+
     /**
+     * 更新职位分类
      * @param array $data
-     * @return mixed
+     * @return array
      */
-    public function getWebsiteJobList(array $data)
+    public function upJobPosition(array $data): array
     {
-        return $this->__request(__FUNCTION__, $data);
+        $zw_position = JobPosition::get();
+        if (!in_array($data['zwid'], $zw_position->pluck('zwid')->toArray())) {
+            return Result::error('职位分类不存在');
+        }
+        $zw_name = $zw_position->where('zwid', '!=', $data['zwid'])
+            ->where('zwpid', $data['zwpid'])
+            ->where('zwname', $data['zwname'])->first();
+        if (!empty($zw_name)) {
+            return Result::error('职位分类已存在');
+        }
+        $result = JobPosition::where('zwid', $data['zwid'])->update($data);
+        if (empty($result)) {
+            return Result::error('更新失败');
+        }
+        return Result::success($result);
     }
     /**
+     * 删除职位分类
      * @param array $data
-     * @return mixed
+     * @return array
      */
-    public function getWebsiteJobInfo(array $data)
+    public function delJobPosition(array $data): array
     {
-        return $this->__request(__FUNCTION__, $data);
+        $zw_jobposition = JobPosition::get();
+        $zw_id = $zw_jobposition->where('zwid', $data['zwid'])->first();
+        if (empty($zw_id)) {
+            return Result::error('职位分类不存在');
+        }
+        if ($zw_id->zwpid == 0) {
+            $zw_job = JobPosition::where('zwpid', $zw_id->zwid)->first();
+            if (!empty($zw_job)) {
+                return Result::error('请先删除子分类');
+            }
+        }
+        $result = JobPosition::where('zwid', $data['zwid'])->delete();
+        if (empty($result)) {
+            return Result::error('删除失败');
+        }
+        return Result::success($result);
     }
     /**
+     * 网民留言-添加
      * @param array $data
-     * @return mixed
+     * @return array
      */
-    public function getWebsiteJobApply(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
+    public function addMessage(array $data): array
+    {
+        $user = User::where('id', $data['user_id'])->first();
+        if (empty($user)) {
+            return Result::error('用户不存在');
+        }
+        if ($user['type_id'] == 10000) {
+            $data['status'] = 1;
+        } else {
+            $data['status'] = 0;
+        }
+        if ($data['keyword'] == '') {
+            //提取标题+内容中的关键词
+            $data['keyword'] = $data['title'];
+            //  . substr(str_replace(' ', '', strip_tags($data['content'])), 0, 20);
+            Jieba::init(); // 初始化 jieba-php
+            Finalseg::init();
+            $segList = Jieba::cut($data['keyword']);
+            $segList1 = array_slice($segList, 0, 8);
+            $data['keyword'] = implode(',', $segList1);
+        }
+        if ($data['description'] == '') {
+            //提取内容中的描述
+            $content = $data['content'];
+            // 去除 <style> 和 <script> 标签及其内容
+            $content = preg_replace('/<(style|script)[^>]*>.*?<\/\1>/is', '', $content);
+            // 去除所有 HTML 标签
+            $content = strip_tags($content);
+            // 去除 HTML 实体
+            $content = html_entity_decode($content, ENT_QUOTES | ENT_HTML5, 'UTF-8');
+            // 只保留文本和标点符号(去除所有字母数字以外的特殊符号,可根据需要调整正则)
+            $content = preg_replace('/[^\p{L}\p{N}\p{P}\p{Zs}]+/u', '', $content);
+            // 去除多余空白
+            $content = preg_replace('/\s+/u', '', $content);
+            // 截取 100 个字符
+            $data['description'] = mb_substr($content, 0, 100);
+        }
+        if (!empty($data['reply'])) {
+            $data['reply_userid'] = $data['user_id'];
+        }
+        $result = Message::insertGetId($data);
+        if (empty($result)) {
+            return Result::error('添加失败');
+        }
+        return Result::success($result);
     }
     /**
+     * 网民留言-更新
      * @param array $data
-     * @return mixed
+     * @return array
      */
-    public function getWebsiteJobResume(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
+    public function upMessage(array $data): array
+    {
+        $user = User::where('id', $data['user_id'])->first();
+        if (empty($user)) {
+            return Result::error('用户不存在');
+        }
+        if ($user['type_id'] == 10000) {
+            $data['status'] = 1;
+        } else {
+            $data['status'] = 0;
+        }
+        $message = Message::where('id', $data['id'])->first();
+        if (empty($message)) {
+            return Result::error('留言不存在');
+        }
+        if ($data['user_id'] != $message['user_id'] && $user['type_id'] != 10000) {
+            return Result::error('非留言人不能更新');
+        }
+        if ($data['keyword'] == '') {
+            //提取标题+内容中的关键词
+            $data['keyword'] = $data['title'];
+            //  . substr(str_replace(' ', '', strip_tags($data['content'])), 0, 20);
+            Jieba::init(); // 初始化 jieba-php
+            Finalseg::init();
+            $segList = Jieba::cut($data['keyword']);
+            $segList1 = array_slice($segList, 0, 8);
+            $data['keyword'] = implode(',', $segList1);
+        }
+        if ($data['description'] == '') {
+            //提取内容中的描述
+            $content = $data['content'];
+            // 去除 <style> 和 <script> 标签及其内容
+            $content = preg_replace('/<(style|script)[^>]*>.*?<\/\1>/is', '', $content);
+            // 去除所有 HTML 标签
+            $content = strip_tags($content);
+            // 去除 HTML 实体
+            $content = html_entity_decode($content, ENT_QUOTES | ENT_HTML5, 'UTF-8');
+            // 只保留文本和标点符号(去除所有字母数字以外的特殊符号,可根据需要调整正则)
+            $content = preg_replace('/[^\p{L}\p{N}\p{P}\p{Zs}]+/u', '', $content);
+            // 去除多余空白
+            $content = preg_replace('/\s+/u', '', $content);
+            // 截取 100 个字符
+            $data['description'] = mb_substr($content, 0, 100);
+        }
+        unset($data['id']);
+        if (!empty($data['reply'])) {
+            $data['reply_userid'] = $data['user_id'];
+            unset($data['user_id']);
+        }
+        $result = Message::where('id', $message['id'])->update($data);
+        if (empty($result)) {
+            return Result::error('更新失败');
+        }
+        return Result::success($result);
     }
     /**
+     * 网民留言-删除
      * @param array $data
-     * @return mixed
+     * @return array
      */
-    public function test(array $data)
+    public function delMessage(array $data): array
     {
-        return $this->__request(__FUNCTION__, $data);
+        $result = Message::where('id', $data['id'])->delete();
+        if (empty($result)) {
+            return Result::error('删除失败');
+        }
+        return Result::success($result);
     }
     /**
+     * 网民留言-更新状态
      * @param array $data
-     * @return mixed
+     * @return array
      */
-    public function getWebsiteJobRecruiting(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
+    public function upMessageStatus(array $data): array
+    {
+        $message = Message::where('id', $data['id'])->first();
+        if (empty($message)) {
+            return Result::error('留言不存在!');
+        }
+        unset($data['id']);
+        unset($data['user_id']);
+        if ($data['status'] != 2) {
+            $data['reason'] = null;
+        }
+        $result = Message::where('id', $message['id'])->update($data);
+        if (empty($result)) {
+            return Result::error('留言更新失败!');
+        }
+        return Result::success($result);
     }
     /**
+     * 网民留言-获取详情
      * @param array $data
-     * @return mixed
+     * @return array
      */
-    public function checkWebsiteRoute(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
-    }
-
-    //20250324  通知,公告,消息
-    public function getNoticeList(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
-    }
-    public function getNoticeInfo(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
-    }
-    public function addNotice(array $data): array
-    {
-        return $this->__request(__FUNCTION__, $data);
-    }
-    public function updateNotice(array $data): array
-    {
-        return $this->__request(__FUNCTION__, $data);
-    }
-    public function deleteNotice(array $data): array
-    {
-        return $this->__request(__FUNCTION__, $data);
-    }
-    public function getMSG(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
+    public function getMessageInfo(array $data): array
+    {
+        $result = Message::where('message.id', $data['id'])
+            ->leftJoin('website_column', 'message.column_id', '=', 'website_column.id')
+            ->select('message.*', 'website_column.column_arr_id')
+            ->first();
+        if (empty($result)) {
+            return Result::error('留言不存在!');
+        }
+        $result['column_arr_id'] = json_decode($result['column_arr_id'] ?? [], true);
+        return Result::success($result);
     }
-
-    public function getComplaintList(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
-    }
-
-    public function getComplaintInfo(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
-    }
-
-    public function addComplaint(array $data): array
-    {
-        return $this->__request(__FUNCTION__, $data);
-    }
-    public function updateComplaint(array $data): array
-    {
-        return $this->__request(__FUNCTION__, $data);
-    }
-    public function deleteComplaint(array $data): array
-    {
-        return $this->__request(__FUNCTION__, $data);
-    }
-    public function updateJobHuntingStatus(array $data): array
-    {
-        return $this->__request(__FUNCTION__, $data);
-    }
-    public function updateNoticeStatus(array $data): array
-    {
-        return $this->__request(__FUNCTION__, $data);
-    }
-    public function updateComplaintStatus(array $data): array
-    {
-        return $this->__request(__FUNCTION__, $data);
-    }
-    public function updateGoodStatus(array $data): array
-    {
-        return $this->__request(__FUNCTION__, $data);
-    }
-    public function getDUser(array $data): array
-    {
-        return $this->__request(__FUNCTION__, $data);
-    }
-    //20250324  通知,公告,消息
     /**
+     * 网民留言-获取列表
      * @param array $data
-     * @return mixed
+     * @return array
      */
-    public function getJobRecruitingList(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
+    public function getMessageList(array $data): array
+    {
+        $where = [];
+        if ($data['is_master'] == 1) {
+            $where['message.status'] = 1;
+        } else if ($data['is_master'] == 2) {
+            $where['message.status'] = 2;
+        } else if ($data['is_master'] == 3) {
+            $where['message.status'] = 0;
+        }
+        $user = User::where('id', $data['user_id'])->first();
+        if (empty($user)) {
+            return Result::error('用户不存在');
+        }
+        $column_arr_id = [];
+        if ($user['type_id'] != 10000 && !empty($data['website_id'])) {
+            $where['message.user_id'] = $data['user_id'];
+            $web = Website::where('id', $data['website_id'])->first('website_column_arr_id');
+            if (empty($web)) {
+                return Result::error('此网站未关联任何网站属性!');
+            }
+            $column_arr_id = json_decode($web['website_column_arr_id'], true);
+        }
+        if (!empty($data['title'])) {
+            array_push($where, ['message.title', 'like', '%' . $data['title'] . '%']);
+        }
+
+        $result = Message::when($data['is_master'] == 0, function ($query) {
+            $query->whereIn('message.status', [0, 2]);
+        })
+            ->when(!empty($where), function ($query) use ($where) {
+                $query->where($where);
+            })
+            ->leftJoin('user', 'message.user_id', '=', 'user.id')
+            ->select('message.*', 'user.nickname')
+            ->orderBy('message.updated_at', 'desc')
+            ->paginate($data['page_size'], ['*'], 'page', $data['page']);
+        if (empty($result->items())) {
+            return Result::error('留言不存在!');
+        }
+        $result = [
+            'data' => $result->items(),
+            'count' => $result->total(),
+        ];
+        if (!empty($column_arr_id) && $user['type_id'] != 10000) {
+            foreach ($result['data'] as $key => $value) {
+                if (in_array($value['column_id'], $column_arr_id)) {
+                    $result['data'][$key]['is_update'] = 1;
+                } else {
+                    $result['data'][$key]['is_update'] = 0;
+                }
+            }
+        }
+        return Result::success($result);
     }
     /**
+     * 网民留言-检查是否可编辑
      * @param array $data
-     * @return mixed
+     * @return array
      */
-    public function getWebsiteJobSelect(array $data)
+    public function checkMessageEdit(array $data): array
     {
-        return $this->__request(__FUNCTION__, $data);
+        $message = Message::where('id', $data['id'])->first();
+        if (empty($message)) {
+            return Result::error('留言不存在!');
+        }
+
+        $web = Website::where('id', $data['website_id'])->first();
+        if (empty($web)) {
+            return Result::error('网站不存在!');
+        }
+        $column_arr = json_decode($web['website_column_arr_id'] ?? [], true);
+        if (empty($column_arr)) {
+            return Result::error('该网站未关联任何属性!');
+        }
+        if (!in_array($message['column_id'], $column_arr)) {
+            return Result::error('不可编辑');
+        }
+        return Result::success('可编辑');
     }
     /**
+     * 调研选题-获取所有Researchers
      * @param array $data
-     * @return mixed
+     * @return array
      */
-    public function getWebsiteCatidshop(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
+    public function getAllResearcher(array $data): array
+    {
+        $where['role_user.role_id'] = 21;
+        if (!empty($data['id'])) {
+            $where['user.id'] = $data['id'];
+        }
+        if (!empty($data['real_name'])) {
+            array_push($where, ['user_info.real_name', 'like', '%' . $data['real_name'] . '%']);
+        }
+        $users = User::leftJoin('user_info', 'user.id', '=', 'user_info.user_id')
+            ->leftJoin('role_user', 'user.id', '=', 'role_user.user_id')
+            ->where($where)
+            ->select('user.id', 'user_info.real_name', 'user_info.number')
+            ->get()->toArray();
+        if (empty($users)) {
+            return Result::error('此调研员不存在!');
+        }
+        $user_number = array_search($data['user_id'], array_column($users, 'id'));
+        if ($user_number == false) {
+            $result['number'] = null;
+        } else {
+            $result['number'] = $users[$user_number]['number'];
+        }
+        $result['users'] = $users;
+        $result['user_id'] = $data['user_id'];
+
+        return Result::success($result);
     }
     /**
+     * 调研选题-添加
      * @param array $data
-     * @return mixed
+     * @return array
      */
-    public function getWebsiteLevelJob(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
+    public function addResearchTopic(array $data): array
+    {
+        $user = User::where('id', $data['user_id'])->first();
+        if (empty($user)) {
+            return Result::error('用户不存在');
+        }
+        if ($user['type_id'] == 10000) {
+            $data['status'] = 1;
+        } else {
+            $data['status'] = 0;
+        }
+        if ($data['keyword'] == '') {
+            //提取标题+内容中的关键词
+            $data['keyword'] = $data['title'];
+            //  . substr(str_replace(' ', '', strip_tags($data['content'])), 0, 20);
+            Jieba::init(); // 初始化 jieba-php
+            Finalseg::init();
+            $segList = Jieba::cut($data['keyword']);
+            $segList1 = array_slice($segList, 0, 8);
+            $data['keyword'] = implode(',', $segList1);
+        }
+        if ($data['description'] == '') {
+            //提取内容中的描述
+            $content = $data['content'];
+            // 去除 <style> 和 <script> 标签及其内容
+            $content = preg_replace('/<(style|script)[^>]*>.*?<\/\1>/is', '', $content);
+            // 去除所有 HTML 标签
+            $content = strip_tags($content);
+            // 去除 HTML 实体
+            $content = html_entity_decode($content, ENT_QUOTES | ENT_HTML5, 'UTF-8');
+            // 只保留文本和标点符号(去除所有字母数字以外的特殊符号,可根据需要调整正则)
+            $content = preg_replace('/[^\p{L}\p{N}\p{P}\p{Zs}]+/u', '', $content);
+            // 去除多余空白
+            $content = preg_replace('/\s+/u', '', $content);
+            // 截取 100 个字符
+            $data['description'] = mb_substr($content, 0, 100);
+        }
+        $data['level'] = empty($data['level']) ? null : $data['level'];
+        $data['province_id'] = empty($data['province_id']) ? null : $data['province_id'];
+        $data['city_id'] = empty($data['city_id']) ? null : $data['city_id'];
+        $data['county_id'] = empty($data['county_id']) ? null : $data['county_id'];
+        $data['due_time'] = empty($data['due_time']) ? null : $data['due_time'];
+        $users_id = empty($data['users_id']) ? null : $data['users_id'];
+        unset($data['users_id']);
+        // return Result::success($data);
+        Db::beginTransaction();
+        try {
+            $result = ResearchTopic::insertGetId($data);
+            if (empty($result)) {
+                Db::rollBack();
+                return Result::error('添加失败');
+            }
+            if (!empty($users_id) && is_string($users_id)) {
+                $users = json_decode($users_id ?? '[]', true);
+            }
+            $users_type4 = User::where('type_id', 4)->pluck('id');
+            $type4_num = array_intersect($users, $users_type4->toArray());
+            if (count($users) != count($type4_num)) {
+                Db::rollBack();
+                return Result::error('请选择调研员!');
+            }
+            // return Result::success($users);
+            if (!empty($users) && is_array($users)) {
+                // 去重:确保同一 retopic_id + user_id 组合唯一
+                $users = array_values(array_unique($users));
+                // 组装关联数据
+                $users_topic = [];
+                foreach ($users as $key => $value) {
+                    $users_topic[$key] = [
+                        'user_id'    => $value,
+                        'retopic_id' => $result,
+                    ];
+                }
+                // 使用 insertOrIgnore 忽略重复主键/唯一索引冲突
+                $retopic_user = RetopicUser::insert($users_topic);
+                if (empty($retopic_user)) {
+                    Db::rollBack();
+                    return Result::error('添加失败');
+                }
+            }
+            Db::commit();
+            return Result::success($result);
+        } catch (\Exception $e) {
+            Db::rollBack();
+            return Result::error($e->getMessage());
+        }
     }
     /**
+     * 调研选题-编辑
      * @param array $data
-     * @return mixed
+     * @return array
      */
-    public function getWebsiteCompany(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
+    public function upResearchTopic(array $data): array
+    {
+        $user = User::where('id', $data['user_id'])->first();
+        if (empty($user)) {
+            return Result::error('用户不存在');
+        }
+        if ($user['type_id'] == 10000) {
+            $data['status'] = 1;
+        } else {
+            $data['status'] = 0;
+        }
+        $topic = ResearchTopic::where('id', $data['id'])->first();
+        if (empty($topic)) {
+            return Result::error('此调研选题不存在');
+        }
+        if ($data['keyword'] == '') {
+            //提取标题+内容中的关键词
+            $data['keyword'] = $data['title'];
+            //  . substr(str_replace(' ', '', strip_tags($data['content'])), 0, 20);
+            Jieba::init(); // 初始化 jieba-php
+            Finalseg::init();
+            $segList = Jieba::cut($data['keyword']);
+            $segList1 = array_slice($segList, 0, 8);
+            $data['keyword'] = implode(',', $segList1);
+        }
+        if ($data['description'] == '') {
+            //提取内容中的描述
+            $content = $data['content'];
+            // 去除 <style> 和 <script> 标签及其内容
+            $content = preg_replace('/<(style|script)[^>]*>.*?<\/\1>/is', '', $content);
+            // 去除所有 HTML 标签
+            $content = strip_tags($content);
+            // 去除 HTML 实体
+            $content = html_entity_decode($content, ENT_QUOTES | ENT_HTML5, 'UTF-8');
+            // 只保留文本和标点符号(去除所有字母数字以外的特殊符号,可根据需要调整正则)
+            $content = preg_replace('/[^\p{L}\p{N}\p{P}\p{Zs}]+/u', '', $content);
+            // 去除多余空白
+            $content = preg_replace('/\s+/u', '', $content);
+            // 截取 100 个字符
+            $data['description'] = mb_substr($content, 0, 100);
+        }
+        $data['level'] = empty($data['level']) ? null : $data['level'];
+        $data['province_id'] = empty($data['province_id']) ? null : $data['province_id'];
+        $data['city_id'] = empty($data['city_id']) ? null : $data['city_id'];
+        $data['county_id'] = empty($data['county_id']) ? null : $data['county_id'];
+        $data['due_time'] = empty($data['due_time']) ? null : $data['due_time'];
+        $users_id = empty($data['users_id']) ? null : $data['users_id'];
+        $id = $data['id'];
+        unset($data['users_id']);
+        unset($data['id']);
+        // return Result::success($data);
+        Db::beginTransaction();
+        try {
+            $result = ResearchTopic::where('id', $id)->update($data);
+            if (empty($result)) {
+                Db::rollBack();
+                return Result::error('编辑调研选题失败!');
+            }
+            if (!empty($users_id) && is_string($users_id)) {
+                $users = json_decode($users_id ?? '[]', true);
+            }
+            // return Result::success($users);
+            $retopic_users = RetopicUser::where('retopic_id', $id)->pluck('user_id')->toArray();
+            if (!empty($retopic_users)) {
+                $del_users = RetopicUser::where('retopic_id', $id)->delete();
+                if (empty($del_users)) {
+                    Db::rollBack();
+                    return Result::error('编辑同行人员失败!');
+                }
+            }
+            if (!empty($users) && is_array($users)) {
+                // 去重:确保同一 retopic_id + user_id 组合唯一
+                $users = array_values(array_unique($users));
+                // 组装关联数据
+                $users_topic = [];
+                foreach ($users as $key => $value) {
+                    $users_topic[$key] = [
+                        'user_id'    => $value,
+                        'retopic_id' => $id,
+                    ];
+                }
+                // 使用 insertOrIgnore 忽略重复主键/唯一索引冲突
+                $retopic_user = RetopicUser::insert($users_topic);
+                if (empty($retopic_user)) {
+                    Db::rollBack();
+                    return Result::error('编辑失败');
+                }
+            }
+            Db::commit();
+            return Result::success($result);
+        } catch (\Exception $e) {
+            Db::rollBack();
+            return Result::error($e->getMessage());
+        }
     }
     /**
+     * 调研选题-删除
      * @param array $data
-     * @return mixed
+     * @return array
      */
-    public function getWebsiteCompanyInfo(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
+    public function delResearchTopic(array $data): array
+    {
+        $user = User::where('id', $data['user_id'])->first();
+        if (empty($user)) {
+            return Result::error('用户不存在');
+        }
+        $topic = ResearchTopic::where('id', $data['id'])->first();
+        if (empty($topic)) {
+            return Result::error('此调研选题不存在');
+        }
+        Db::beginTransaction();
+        try {
+            $result = ResearchTopic::where('id', $data['id'])->delete();
+            if (empty($result)) {
+                Db::rollBack();
+                return Result::error('删除调研选题失败!');
+            }
+            $topic_users = RetopicUser::where('retopic_id', $data['id'])->pluck('user_id')->toArray();
+            if (!empty($topic_users)) {
+                $del_topic_users = RetopicUser::where('retopic_id', $data['id'])->delete();
+                if (empty($del_topic_users)) {
+                    Db::rollBack();
+                    return Result::error('删除同行人员失败!');
+                }
+            }
+            Db::commit();
+            return Result::success($result);
+        } catch (\Exception $e) {
+            Db::rollBack();
+            return Result::error($e->getMessage());
+        }
     }
     /**
+     * 调研选题-列表
      * @param array $data
-     * @return mixed
+     * @return array
      */
-    public function getWebsiteCompanyList(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
+    public function getResearchTopicList(array $data): array
+    {
+        $user = User::where('id', $data['user_id'])->first();
+        if (empty($user)) {
+            return Result::error('用户不存在!');
+        }
+        $where = [];
+        if ($user->type_id != 10000) {
+            $where['research_topic.user_id'] = $data['user_id'];
+            $website = Website::where('id', $data['website_id'])->first();
+            if (empty($website)) {
+                return Result::error('网站不存在!');
+            }
+            $web_column = json_decode($website->website_column_arr_id ?? '[]', true);
+            if (empty($web_column)) {
+                return Result::error('网站未配置栏目!');
+            }
+        }
+        if ($data['is_master'] != 0) {
+            if ($data['is_master'] == 3) {
+                $where['research_topic.status'] = 0;
+            } else {
+                $where['research_topic.status'] = $data['is_master'];
+            }
+        }
+        if (!empty($data['title'])) {
+            array_push($where, ['research_topic.title', 'like', '%' . $data['title'] . '%']);
+        }
+        $page = $data['page'] ?? 1;
+        $page_size = $data['page_size'] ?? 10;
+        $research_topic = ResearchTopic::when($data['is_master'] == 0, function ($query) use ($data) {
+            $query->whereIn('research_topic.status', [0, 2]);
+        })
+            ->when(!empty($where), function ($query) use ($where) {
+                $query->where($where);
+            })
+            ->with([
+                'retopicUsers' => function ($query) {
+                    $query->select('id', 'user_id', 'retopic_id');
+                }
+            ])
+            ->leftJoin('user', 'user.id', '=', 'research_topic.user_id')
+            ->leftJoin('user_info', 'user_info.user_id', '=', 'research_topic.user_id')
+            ->select(
+                'research_topic.id',
+                'research_topic.title',
+                'research_topic.updated_at',
+                'research_topic.status',
+                'research_topic.due_time',
+                'user_info.real_name',
+                'research_topic.column_id',
+                'research_topic.user_id',
+                'user.user_name'
+            )
+            ->orderBy('research_topic.updated_at', 'desc')
+            ->paginate($data['page_size'], ['*'], 'page', $data['page']);
+        if (empty($research_topic->items())) {
+            return Result::error('暂无调研选题!');
+        }
+        $result = [
+            'rows' => $research_topic->items(),
+            'count' => $research_topic->total()
+        ];
+        foreach ($result['rows'] as $key => $value) {
+            if ($user->type_id != 10000) {
+                if (in_array($value['column_id'], $web_column)) {
+                    $result['rows'][$key]['is_update'] = 1;
+                } else {
+                    $result['rows'][$key]['is_update'] = 0;
+                }
+            } else {
+                if ($value['user_id'] == $data['user_id']) {
+                    $result['rows'][$key]['is_update'] = 1;
+                } else {
+                    $result['rows'][$key]['is_update'] = 0;
+                }
+            }
+            if (!isset($value['real_name']) || empty($value['real_name'])) {
+                $result['rows'][$key]['real_name'] = $value['user_name'];
+            }
+            if (!empty($value['retopicUsers'])) {
+                $retopic_users = $value['retopicUsers'];
+                $retopic_user = $retopic_users->pluck('user_id')->toArray();
+                $result['rows'][$key]['txry_users'] = implode(',', $retopic_user);
+                unset($result['rows'][$key]['retopicUsers']);
+            }
+        }
+        return Result::success($result);
     }
     /**
+     * 调研选题-修改状态
      * @param array $data
-     * @return mixed
+     * @return array
      */
-    public function getWebsiteProject(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
+    public function checkResearchTopic(array $data): array
+    {
+        $user = User::where('id', $data['user_id'])->first();
+        if (empty($user)) {
+            return Result::error('用户不存在!');
+        }
+        if ($user->type_id != 10000 && ($data['status'] == 1 || $data['status'] == 2)) {
+            return Result::error('此用户暂无权限!');
+        }
+        $topic = ResearchTopic::where('id', $data['id'])->first();
+        if (empty($topic)) {
+            return Result::error('此调研选题不存在');
+        }
+        $id = $data['id'];
+        unset($data['id']);
+        unset($data['user_id']);
+        $result = ResearchTopic::where('id', $id)->update($data);
+        if (empty($result)) {
+            return Result::error('修改调研选题状态失败!');
+        }
+        return Result::success($result);
     }
     /**
+     * 调研选题-详情
      * @param array $data
-     * @return mixed
+     * @return array
      */
-    public function getWebsiteProjectInfo(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
+    public function getResearchTopicInfo(array $data): array
+    {
+        $user = User::where('id', $data['user_id'])->first();
+        if (empty($user)) {
+            return Result::error('用户不存在!');
+        }
+        $research_topic = ResearchTopic::where('research_topic.id', $data['id'])
+            ->with([
+                'retopicUsers' => function ($query) {
+                    $query->select('user_id', 'retopic_id');
+                }
+            ])
+            ->leftJoin('user', 'user.id', '=', 'research_topic.user_id')
+            ->leftJoin('user_info', 'user_info.user_id', '=', 'research_topic.user_id')
+            ->select('research_topic.*', 'user_info.number')
+            ->first();
+        if (empty($research_topic)) {
+            return Result::error('获取调研选题详情失败!');
+        }
+        $retopic_user = $research_topic['retopicUsers'];
+        if (!empty($retopic_user)) {
+            $retopic_user = $retopic_user->pluck('user_id')->toArray();
+            foreach ($retopic_user as $key => $value) {
+                $real_name = UserInfo::where('user_id', $value)->value('real_name');
+                $research_topic['retopicUsers'][$key]['real_name'] = $real_name;
+                $research_topic['retopicUsers'][$key]['user_id'] = $value;
+                unset($research_topic['retopicUsers'][$key]['retopic_id']);
+            }
+        }
+
+        return Result::success($research_topic);
     }
     /**
+     * 添加网站导航
      * @param array $data
-     * @return mixed
      */
-    public function getWebsiteProjectList(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
+    public function addWebCateinfo(array $data): array
+    {
+        $user = User::where('id', $data['user_id'])->first();
+        if (empty($user)) {
+            return Result::error('用户不存在');
+        }
+        if ($user['type_id'] == 10000) {
+            $data['status'] = 1;
+        } else {
+            $data['status'] = 0;
+        }
+        if ($data['keyword'] == '') {
+            //提取标题+内容中的关键词
+            $data['keyword'] = $data['title'];
+            //  . substr(str_replace(' ', '', strip_tags($data['content'])), 0, 20);
+            Jieba::init(); // 初始化 jieba-php
+            Finalseg::init();
+            $segList = Jieba::cut($data['keyword']);
+            $segList1 = array_slice($segList, 0, 8);
+            $data['keyword'] = implode(',', $segList1);
+        }
+        if ($data['description'] == '') {
+            //提取内容中的描述
+            $content = $data['content'];
+            // 去除 <style> 和 <script> 标签及其内容
+            $content = preg_replace('/<(style|script)[^>]*>.*?<\/\1>/is', '', $content);
+            // 去除所有 HTML 标签
+            $content = strip_tags($content);
+            // 去除 HTML 实体
+            $content = html_entity_decode($content, ENT_QUOTES | ENT_HTML5, 'UTF-8');
+            // 只保留文本和标点符号(去除所有字母数字以外的特殊符号,可根据需要调整正则)
+            $content = preg_replace('/[^\p{L}\p{N}\p{P}\p{Zs}]+/u', '', $content);
+            // 去除多余空白
+            $content = preg_replace('/\s+/u', '', $content);
+            // 截取 100 个字符
+            $data['description'] = mb_substr($content, 0, 100);
+        }
+        $data['cate_name'] = empty($data['cate_name']) ? '官网导航' : $data['cate_name'];
+        $data['province_id'] = empty($data['province_id']) ? null : $data['province_id'];
+        $data['city_id'] = empty($data['city_id']) ? null : $data['city_id'];
+        $data['county_id'] = empty($data['county_id']) ? null : $data['county_id'];
+        unset($data['users_id']);
+        $result = WebCateinfo::insertGetId($data);
+        if (empty($result)) {
+            return Result::error('添加失败');
+        }
+        return Result::success($result);
     }
     /**
+     * 更新网站导航
      * @param array $data
-     * @return mixed
      */
-    public function getJobRecruitingInfo(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
+    public function upWebCateinfo(array $data): array
+    {
+        $webCateinfo = WebCateinfo::where('id', $data['id'])->first();
+        if (empty($webCateinfo)) {
+            return Result::error('导航不存在');
+        }
+        $user = User::where('id', $data['user_id'])->first();
+        if (empty($user)) {
+            return Result::error('用户不存在');
+        }
+        if ($user['type_id'] == 10000) {
+            $data['status'] = 1;
+        } else {
+            $data['status'] = 0;
+        }
+        if ($data['keyword'] == '') {
+            //提取标题+内容中的关键词
+            $data['keyword'] = $data['title'];
+            //  . substr(str_replace(' ', '', strip_tags($data['content'])), 0, 20);
+            Jieba::init(); // 初始化 jieba-php
+            Finalseg::init();
+            $segList = Jieba::cut($data['keyword']);
+            $segList1 = array_slice($segList, 0, 8);
+            $data['keyword'] = implode(',', $segList1);
+        }
+        if ($data['description'] == '') {
+            //提取内容中的描述
+            $content = $data['content'];
+            // 去除 <style> 和 <script> 标签及其内容
+            $content = preg_replace('/<(style|script)[^>]*>.*?<\/\1>/is', '', $content);
+            // 去除所有 HTML 标签
+            $content = strip_tags($content);
+            // 去除 HTML 实体
+            $content = html_entity_decode($content, ENT_QUOTES | ENT_HTML5, 'UTF-8');
+            // 只保留文本和标点符号(去除所有字母数字以外的特殊符号,可根据需要调整正则)
+            $content = preg_replace('/[^\p{L}\p{N}\p{P}\p{Zs}]+/u', '', $content);
+            // 去除多余空白
+            $content = preg_replace('/\s+/u', '', $content);
+            // 截取 100 个字符
+            $data['description'] = mb_substr($content, 0, 100);
+        }
+        $data['cate_name'] = empty($data['cate_name']) ? '官网导航' : $data['cate_name'];
+        $data['province_id'] = empty($data['province_id']) ? null : $data['province_id'];
+        $data['city_id'] = empty($data['city_id']) ? null : $data['city_id'];
+        $data['county_id'] = empty($data['county_id']) ? null : $data['county_id'];
+        unset($data['users_id']);
+        $result = WebCateinfo::where('id', $data['id'])->update($data);
+        if (empty($result)) {
+            return Result::error('更新失败');
+        }
+        return Result::success($result);
     }
     /**
+     * 获取网站导航列表
      * @param array $data
-     * @return mixed
+     * @return array
      */
-    public function addJobRecruiting(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
+    public function getWebCateinfoList(array $data): array
+    {
+        $user = User::where('id', $data['user_id'])->first();
+        if (empty($user)) {
+            return Result::error('用户不存在');
+        }
+        $where = [];
+        if ($user['type_id'] != 10000) {
+            $where['web_cateinfo.user_id'] = $data['user_id'];
+        }
+        if (!empty($data['title'])) {
+            array_push($where, ['web_cateinfo.title', 'like', '%' . $data['title'] . '%']);
+        }
+        if ($data['is_master'] != 0) {
+            if ($data['is_master'] == 3) {
+                $where['web_cateinfo.status'] = 0;
+            } else {
+                $where['web_cateinfo.status'] = $data['is_master'];
+            }
+        }
+        $web_cateinfo = WebCateinfo::when(!empty($data['is_master'] == 0), function ($query) use ($where) {
+            $query->whereIn('web_cateinfo.status', [0, 2]);
+        })
+            ->when(!empty($where), function ($query) use ($where) {
+                $query->where($where);
+            })
+            ->leftJoin('user', 'web_cateinfo.user_id', '=', 'user.id')
+            ->select(['web_cateinfo.id', 'web_cateinfo.user_id', 'user.nickname', 'web_cateinfo.title', 'web_cateinfo.cate_name', 'web_cateinfo.status', 'web_cateinfo.updated_at'])
+            ->orderBy('updated_at', 'desc')
+            ->paginate($data['page_size'], ['*'], 'page', $data['page']);
+        if (empty($web_cateinfo->items())) {
+            return Result::error('官网导航不存在');
+        }
+        $result = [
+            'rows' => $web_cateinfo->items(),
+            'total' => $web_cateinfo->total(),
+        ];
+        foreach ($result['rows'] as $key => $value) {
+            if ($value['user_id'] == $data['user_id']) {
+                $result['rows'][$key]['is_update'] = 1;
+            } else {
+                $result['rows'][$key]['is_update'] = 0;
+            }
+        }
+        return Result::success($result);
     }
-
     /**
+     * 删除网站导航
      * @param array $data
-     * @return mixed
      */
-    public function getJobRecruitingArea(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
+    public function delWebCateinfo(array $data): array
+    {
+        $webCateinfo = WebCateinfo::where('id', $data['id'])->first();
+        if (empty($webCateinfo)) {
+            return Result::error('导航不存在');
+        }
+        $result = WebCateinfo::where('id', $data['id'])->delete();
+        if (empty($result)) {
+            return Result::error('删除失败');
+        }
+        return Result::success($result);
     }
     /**
+     * 审核网站导航
      * @param array $data
-     * @return mixed
      */
-    public function getIndustry(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
+    public function checkWebCateinfo(array $data): array
+    {
+        $webCateinfo = WebCateinfo::where('id', $data['id'])->first();
+        if (empty($webCateinfo)) {
+            return Result::error('导航不存在');
+        }
+        $user = User::where('id', $data['user_id'])->first();
+        if (empty($user)) {
+            return Result::error('用户不存在');
+        }
+        if ($user['type_id'] != 10000 && $data['status'] == 1) {
+            return Result::error('非管理员不能审核');
+        }
+        $update_data['status'] = $data['status'];
+        if ($data['status'] == 2) {
+            $update_data['reason'] = $data['reason'];
+        }
+        $result = WebCateinfo::where('id', $data['id'])->update($update_data);
+        if (empty($result)) {
+            return Result::error('审核失败');
+        }
+        return Result::success($result);
     }
     /**
+     * 获取网站导航详情
      * @param array $data
-     * @return mixed
      */
-    public function getPositionList(array $data)
+    public function getWebCateinfoDetail(array $data): array
     {
-        return $this->__request(__FUNCTION__, $data);
+        $webCateinfo = WebCateinfo::where('id', $data['id'])->first();
+        if (empty($webCateinfo)) {
+            return Result::error('导航不存在');
+        }
+        $result = $webCateinfo->toArray();
+        return Result::success($result);
     }
     /**
+     * 推荐单页管理
      * @param array $data
-     * @return mixed
      */
-    public function getJobNature(array $data)
+    public function getAdviceSinglePages(array $data): array
     {
-        return $this->__request(__FUNCTION__, $data);
+        $user = User::where('id', $data['user_id'])->first();
+        if (empty($user)) {
+            return Result::error('用户不存在');
+        }
+
+        $where = [];
+        if (empty($data['website_id']) && $user['type_id'] == 10000) {
+            $category = [];
+        } else {
+            $where = [
+                'website_id' => $data['website_id'] ?? $data['web_id'],
+            ];
+            $category = WebsiteCategory::where($where)->pluck('category_id')->toArray();
+            // var_dump($ids);
+            if (empty($category)) {
+                return Result::error("推荐单页不存在");
+            }
+        }
+        if (!empty($data['title'])) {
+
+            array_push($where, ['title', 'like', '%' . $data['title'] . '%']);
+        }
+        $result = SinglePage::when(!empty($category), function ($query) use ($category) {
+            $query->whereIn('catid', $category);
+        })
+            ->when(!empty($where), function ($query) use ($where) {
+                $query->where($where);
+            })
+            // ->when(!isset($data['catid']), function ($query) use ($data) {
+            //     $query->where('catid', $data['catid']);
+            // })
+            ->where('status', 1)
+            ->select(['id', 'title', 'catid', 'status', 'website_id', 'updated_at'])
+            ->orderBy('updated_at', 'desc')
+            ->paginate($data['page_size'], ['*'], 'page', $data['page']);
+        if (empty($result->items())) {
+            return Result::error('推荐单页不存在!');
+        }
+        $result = [
+            'rows' => $result->items(),
+            'total' => $result->total(),
+        ];
+        return Result::success($result);
     }
     /**
+     * 添加单页
      * @param array $data
-     * @return mixed
      */
-    public function getExperience(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
+    public function addSinglePage(array $data): array
+    {
+        $user = User::where('id', $data['user_id'])->first();
+        if (empty($user)) {
+            return Result::error('用户不存在');
+        }
+        if ($user['type_id'] == 10000) {
+            $data['status'] = 1;
+        } else {
+            $data['status'] = 0;
+        }
+        if (is_array($data['cat_arr_id'])) {
+            $data['cat_arr_id'] = array_map(function ($item) {
+                return intval($item);
+            }, $data['cat_arr_id']);
+            $data['catid'] = end($data['cat_arr_id']);
+            $data['cat_arr_id'] = json_encode($data['cat_arr_id'], JSON_UNESCAPED_UNICODE);
+        } else {
+            return Result::error('请选择栏目;');
+        }
+        if (!empty($data['commend_id']) && is_array($data['commend_id'])) {
+            $data['commend_id'] = json_encode($data['commend_id'], JSON_UNESCAPED_UNICODE);
+        } else {
+            $data['commend_id'] = null;
+        }
+        if ($data['keyword'] == '') {
+            //提取标题+内容中的关键词
+            $articleData['keyword'] = $data['title'];
+            //  . substr(str_replace(' ', '', strip_tags($data['content'])), 0, 20);
+            Jieba::init(); // 初始化 jieba-php
+            Finalseg::init();
+            $segList = Jieba::cut($articleData['keyword']);
+            $segList1 = array_slice($segList, 0, 8);
+            $data['keyword'] = implode(',', $segList1);
+        }
+        if ($data['description'] == '') {
+            //提取内容中的描述
+            $content = $data['content'];
+            // 去除 <style> 和 <script> 标签及其内容
+            $content = preg_replace('/<(style|script)[^>]*>.*?<\/\1>/is', '', $content);
+            // 去除所有 HTML 标签
+            $content = strip_tags($content);
+            // 去除 HTML 实体
+            $content = html_entity_decode($content, ENT_QUOTES | ENT_HTML5, 'UTF-8');
+            // 只保留文本和标点符号(去除所有字母数字以外的特殊符号,可根据需要调整正则)
+            $content = preg_replace('/[^\p{L}\p{N}\p{P}\p{Zs}]+/u', '', $content);
+            // 去除多余空白
+            $content = preg_replace('/\s+/u', '', $content);
+            // 截取 100 个字符
+            $data['description'] = mb_substr($content, 0, 100);
+        }
+        if (empty($data['publiced_at'])) {
+            $data['publiced_at'] = null;
+        }
+        $result = SinglePage::insertGetId($data);
+        if (empty($result)) {
+            return Result::error('添加失败');
+        }
+        return Result::success($result);
     }
     /**
+     * 更新单页
      * @param array $data
-     * @return mixed
      */
-    public function getEducation(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
+    public function upSinglePage(array $data): array
+    {
+        $singlePage = SinglePage::where('id', $data['id'])->where('user_id', $data['user_id'])->first();
+        if (empty($singlePage)) {
+            return Result::error('单页不存在');
+        }
+        $user = User::where('id', $data['user_id'])->first();
+        if (empty($user)) {
+            return Result::error('用户不存在');
+        }
+        $where['id'] = $data['id'];
+        unset($data['id']);
+        if ($user['type_id'] == 10000) {
+            $data['status'] = 1;
+        } else {
+            $data['status'] = 0;
+        }
+        if (is_array($data['cat_arr_id'])) {
+            $data['cat_arr_id'] = array_map(function ($item) {
+                return intval($item);
+            }, $data['cat_arr_id']);
+            $data['catid'] = end($data['cat_arr_id']);
+            $data['cat_arr_id'] = json_encode($data['cat_arr_id'], JSON_UNESCAPED_UNICODE);
+        } else {
+            return Result::error('请选择栏目;');
+        }
+        if (!empty($data['commend_id']) && is_array($data['commend_id'])) {
+            $data['commend_id'] = json_encode($data['commend_id'], JSON_UNESCAPED_UNICODE);
+        } else {
+            $data['commend_id'] = null;
+        }
+        if ($data['keyword'] == '') {
+            //提取标题+内容中的关键词
+            $articleData['keyword'] = $data['title'];
+            //  . substr(str_replace(' ', '', strip_tags($data['content'])), 0, 20);
+            Jieba::init(); // 初始化 jieba-php
+            Finalseg::init();
+            $segList = Jieba::cut($articleData['keyword']);
+            $segList1 = array_slice($segList, 0, 8);
+            $data['keyword'] = implode(',', $segList1);
+        }
+        if ($data['description'] == '') {
+            //提取内容中的描述
+            $content = $data['content'];
+            // 去除 <style> 和 <script> 标签及其内容
+            $content = preg_replace('/<(style|script)[^>]*>.*?<\/\1>/is', '', $content);
+            // 去除所有 HTML 标签
+            $content = strip_tags($content);
+            // 去除 HTML 实体
+            $content = html_entity_decode($content, ENT_QUOTES | ENT_HTML5, 'UTF-8');
+            // 只保留文本和标点符号(去除所有字母数字以外的特殊符号,可根据需要调整正则)
+            $content = preg_replace('/[^\p{L}\p{N}\p{P}\p{Zs}]+/u', '', $content);
+            // 去除多余空白
+            $content = preg_replace('/\s+/u', '', $content);
+            // 截取 100 个字符
+            $data['description'] = mb_substr($content, 0, 100);
+        }
+        if (empty($data['publiced_at'])) {
+            $data['publiced_at'] = null;
+        }
+        $result = SinglePage::where($where)->update($data);
+        if (empty($result)) {
+            return Result::error('更新失败');
+        }
+        return Result::success($result);
     }
     /**
+     * 删除单页
      * @param array $data
-     * @return mixed
      */
-    public function getSalary(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
+    public function delSinglePage(array $data): array
+    {
+        $singlePage = SinglePage::where('id', $data['id'])->first();
+        if (empty($singlePage)) {
+            return Result::error('单页不存在');
+        }
+        $user = User::where('id', $data['user_id'])->first();
+        if (empty($user)) {
+            return Result::error('用户不存在');
+        }
+        $where['id'] = $data['id'];
+        $result = SinglePage::where($where)->delete();
+        if (empty($result)) {
+            return Result::error('删除失败');
+        }
+        return Result::success($result);
     }
     /**
+     * 审核单页
      * @param array $data
-     * @return mixed
      */
-    public function getLanguage(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
+    public function checkSinglePage(array $data): array
+    {
+        $user = User::where('id', $data['user_id'])->first();
+        if (empty($user)) {
+            return Result::error('用户不存在');
+        }
+        if ($user['type_id'] != 10000 && in_array($data['status'], [1, 2])) {
+            return Result::error('非管理员不能审核单页');
+        }
+        if ($data['status'] == 2) {
+            $update_data['reason'] = $data['reason'] ?? '';
+        }
+        $update_data['status'] = $data['status'];
+        $result = SinglePage::where('id', $data['id'])->update($update_data);
+        if (empty($result)) {
+            return Result::error('更新失败');
+        }
+        return Result::success($result);
     }
     /**
+     * 更新单页状态
      * @param array $data
-     * @return mixed
      */
-    public function getLevel(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
+    public function getSinglePageList(array $data): array
+    {
+        $user = User::where('id', $data['user_id'])->first();
+        if (empty($user)) {
+            return Result::error('用户不存在');
+        }
+        $where = [];
+        if ($user['type_id'] != 10000) {
+            $where['single_page.user_id'] = $data['user_id'];
+        }
+        if ($data['is_master'] == 3) {
+            $where['single_page.status'] = 0;
+        } else if ($data['is_master'] != 0) {
+            $where['single_page.status'] = $data['is_master'];
+        }
+        if (!empty($data['title'])) {
+            array_push($where, ['single_page.title', 'like', '%' . $data['title'] . '%']);
+        }
+        $result = SinglePage::when($data['is_master'] == 0, function ($query) use ($data) {
+            $query->whereIn('single_page.status', [0, 2]);
+        })
+            ->when(!empty($where), function ($query) use ($where) {
+                $query->where($where);
+            })
+            ->with([
+                'websiteCategory' => function ($query) {
+                    $query->select('website_id', 'category_id', 'alias');
+                },
+                'user' => function ($query) {
+                    $query->select('id', 'nickname');
+                }
+            ])
+            ->select([
+                'single_page.id',
+                'single_page.title',
+                'single_page.content',
+                'single_page.updated_at',
+                'single_page.status',
+                'single_page.catid',
+                'single_page.website_id',
+                'single_page.user_id'
+            ])
+            ->orderBy('single_page.updated_at', 'desc')
+            ->paginate($data['page_size'], ['*'], 'page', $data['page']);
+        if (empty($result->items())) {
+            return Result::error('暂无数据');
+        }
+        $result = [
+            'rows' => $result->items(),
+            'total' => $result->total(),
+        ];
+        foreach ($result['rows'] as $key => $value) {
+            $result['rows'][$key]['category_alias'] = $value['websiteCategory']['alias'] ?? '';
+            $result['rows'][$key]['user_nickname'] = $value['user']['nickname'] ?? '';
+            $result['rows'][$key]['websiteCategory'] = $value['websiteCategory']['alias'] ?? '';
+            unset($result['rows'][$key]['user']);
+            unset($result['rows'][$key]['websiteCategory']);
+            if ($user['type_id'] == 10000) {
+                if ($value['user_id'] == $data['user_id']) {
+                    $result['rows'][$key]['is_update'] = 1;
+                } else {
+                    $result['rows'][$key]['is_update'] = 0;
+                }
+            } else {
+                if ($value['website_id'] == $data['website_id']) {
+                    $result['rows'][$key]['is_update'] = 1;
+                } else {
+                    $result['rows'][$key]['is_update'] = 0;
+                }
+            }
+        }
+
+        return Result::success($result);
     }
     /**
+     * 获取单页详情
      * @param array $data
-     * @return mixed
      */
-    public function getCompanySize(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
+    public function getSinglePageInfo(array $data): array
+    {
+        $singlePage = SinglePage::where('id', $data['id'])->first();
+        if (empty($singlePage)) {
+            return Result::error('单页不存在');
+        }
+        $user = User::where('id', $data['user_id'])->first();
+        if (empty($user)) {
+            return Result::error('用户不存在');
+        }
+        $where['id'] = $data['id'];
+        $result = SinglePage::where($where)->first();
+        if (empty($result)) {
+            return Result::error('获取失败');
+        }
+        $result['cat_arr_id'] = json_decode($result['cat_arr_id'] ?? '[]', true);
+        $result['commend_id'] = json_decode($result['commend_id'] ?? '[]', true);
+        return Result::success($result);
     }
+
+  // 政讯--官网--在线留言
     /**
+     * 政讯--官网--在线留言-添加
      * @param array $data
-     * @return mixed
+     * @return array
      */
-    public function getCompanyNature(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
+    public function addOnline(array $data): array
+    {
+        $user = User::where('id', $data['user_id'])->first();
+        if (empty($user)) {
+            return Result::error('用户不存在');
+        }
+        if ($user['type_id'] == 10000) {
+            $data['status'] = 1;
+        } else {
+            $data['status'] = 0;
+        }
+        $result = Gonline::insertGetId($data);
+        if (empty($result)) {
+            return Result::error('添加失败');
+        }
+        return Result::success($result);
     }
     /**
+     * 网民留言-获取官网在线留言列表
      * @param array $data
-     * @return mixed
+     * @return array
      */
-    public function upJobRecruiting(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
+    public function getOnlineList(array $data): array
+    {
+        $page = $data['page'] ?? 1;
+        $page_size = $data['page_size'] ?? 10;
+        $where = [];
+        if (!empty($data['title'])) {
+            array_push($where, ['gonline.title', 'like', '%' . $data['title'] . '%']);
+        }
+        if (!empty($data['status'])) {
+            $where['gonline.status'] = $data['status'];
+        }
+        $user = User::where('id', $data['user_id'])->first();
+        if (empty($user)) {
+            return Result::error('用户不存在');
+        }
+        $column_arr_id = [];
+        if ($user['type_id'] != 10000 && !empty($data['website_id'])) {
+            $where['gonline.user_id'] = $data['user_id'];
+            $web = Website::where('id', $data['website_id'])->first('website_column_arr_id');
+            if (empty($web)) {
+                return Result::error('此网站未关联任何网站属性!');
+            }
+            $column_arr_id = json_decode($web['website_column_arr_id'], true);
+        }
+        if (!empty($data['title'])) {
+            array_push($where, ['gonline.title', 'like', '%' . $data['title'] . '%']);
+        }
+
+        $result = Gonline::when($data['is_master'] == 0, function ($query) {
+            $query->whereIn('gonline.status', [0, 2]);
+        })
+            ->when(!empty($where), function ($query) use ($where) {
+                $query->where($where);
+            })
+            ->leftJoin('user', 'gonline.user_id', '=', 'user.id')
+            ->select('gonline.*', 'user.nickname')
+            ->orderBy('gonline.updated_at', 'desc')
+            ->paginate($data['page_size'], ['*'], 'page', $data['page']);
+        if (empty($result->items())) {
+            return Result::error('留言不存在!');
+        }
+        $result = [
+            'data' => $result->items(),
+            'count' => $result->total(),
+        ];
+        if (!empty($column_arr_id) && $user['type_id'] != 10000) {
+            foreach ($result['data'] as $key => $value) {
+                if (in_array($value['column_id'], $column_arr_id)) {
+                    $result['data'][$key]['is_update'] = 1;
+                } else {
+                    $result['data'][$key]['is_update'] = 0;
+                }
+            }
+        }
+        return Result::success($result);
     }
     /**
+     * 网民留言-留言修改
      * @param array $data
-     * @return mixed
+     * @return array
      */
-    public function delJobRecruiting(array $data)
+    public function upOnline(array $data): array
     {
-        return $this->__request(__FUNCTION__, $data);
+        $user = User::where('id', $data['user_id'])->first();
+        if (empty($user)) {
+            return Result::error('用户不存在!');
+        }
+        $gonline = Gonline::where('id', $data['id'])->first();
+        if (empty($gonline)) {
+            return Result::error('此留言不存在');
+        }
     }
     /**
+     * 网民留言-检查是否可编辑
      * @param array $data
-     * @return mixed
+     * @return array
      */
-    public function getJobCompany(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
+    public function checkOnline(array $data): array
+    {
+        $gonline = Gonline::where('id', $data['id'])->first();
+        if (empty($gonline)) {
+            return Result::error('此留言不存在');
+        }
+        $web = Website::where('id', $data['website_id'])->first();
+        if (empty($web)) {
+            return Result::error('网站不存在!');
+        }
+        $column_arr = json_decode($web['website_column_arr_id'] ?? [], true);
+        if (empty($column_arr)) {
+            return Result::error('该网站未关联任何属性!');
+        }
+        if (!in_array($gonline['column_id'], $column_arr)) {
+            return Result::error('不可编辑');
+        }
+        return Result::success('可编辑');
     }
     /**
+     * 网民留言-修改留言状态
      * @param array $data
-     * @return mixed
+     * @return array
      */
-    public function upJobCompany(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
+    public function upOnlineStatus(array $data): array
+    {
+        $user = User::where('id', $data['user_id'])->first();
+        if (empty($user)) {
+            return Result::error('用户不存在!');
+        }
+        $gonline = Gonline::where('id', $data['id'])->first();
+        if (empty($gonline)) {
+            return Result::error('此留言不存在');
+        }
+        $id = $data['id'];
+        unset($data['id']);
+        unset($data['user_id']);
+        $result = Gonline::where('id', $id)->update($data);
+        if (empty($result)) {
+            return Result::error('修改留言状态失败!');
+        }
+        return Result::success($result);
     }
     /**
+     * 网民留言-删除留言
      * @param array $data
-     * @return mixed
+     * @return array
      */
-    public function checkJobRecruiting(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
+    public function delOnline(array $data): array
+    {
+        $user = User::where('id', $data['user_id'])->first();
+        if (empty($user)) {
+            return Result::error('用户不存在!');
+        }
+        $gonline = Gonline::where('id', $data['id'])->first();
+        if (empty($gonline)) {
+            return Result::error('此留言不存在');
+        }
+        $result = Gonline::where('id', $data['id'])->delete();
+        if (empty($result)) {
+            return Result::error('删除留言失败!');
+        }
+        return Result::success($result);
     }
     /**
+     * 网民留言-获取详情
      * @param array $data
-     * @return mixed
+     * @return array
      */
-    public function getRecruitingList(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
+    public function getOnlineInfo(array $data): array
+    {
+        $user = User::where('id', $data['user_id'])->first();
+        if (empty($user)) {
+            return Result::error('用户不存在!');
+        }
+        $gonline = Gonline::where('id', $data['id'])->first();
+        if (empty($gonline)) {
+            return Result::error('此留言不存在');
+        }
+        return Result::success($gonline);
     }
     /**
+     * 网民留言-修改状态
      * @param array $data
-     * @return mixed
+     * @return array
      */
-    public function getRecruitingInfo(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
+    public function checkOnlineStatus(array $data): array
+    {
+        $user = User::where('id', $data['user_id'])->first();
+        if (empty($user)) {
+            return Result::error('用户不存在!');
+        }
+        $gonline = Gonline::where('id', $data['id'])->first();
+        if (empty($gonline)) {
+            return Result::error('此留言不存在');
+        }
+        $id = $data['id'];
+        unset($data['id']);
+        unset($data['user_id']);
+        $result = Gonline::where('id', $id)->update($data);
+        if (empty($result)) {
+            return Result::error('修改留言状态失败!');
+        }
+        return Result::success($result);
     }
+
+  // 政讯--官网--法律咨询 Glaw
     /**
+     * 法律咨询-获取官网法律咨询列表
      * @param array $data
-     * @return mixed
+     * @return array
      */
-    public function getJobResumeList(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
-    }
-    //20250422  书刊音像
-    public function getBookList(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
-    }
-    public function updateBook(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
-    }
-    public function addBook(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
-    }
-    public function getBookInfo(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
-    }
-    public function deleteBook(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
-    }
-    public function updateBookStatus(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
-    }
-    //20250422  书刊音像
-    public function myApplyList(array $data): array
-    {
-        return $this->__request(__FUNCTION__, $data);
-    }
+    public function getLawList(array $data): array
+    {
+        $page = $data['page'] ?? 1;
+        $page_size = $data['page_size'] ?? 10;
+        $where = [];
+        if (!empty($data['title'])) {
+            array_push($where, ['glaw.title', 'like', '%' . $data['title'] . '%']);
+        }
+        if (!empty($data['status'])) {
+            $where['glaw.status'] = $data['status'];
+        }
 
+        $result = Glaw::when($data['is_master'] == 0, function ($query) {
+            $query->whereIn('glaw.status', [0, 2]);
+        })
+            ->when(!empty($where), function ($query) use ($where) {
+                $query->where($where);
+            })
+            ->leftJoin('user', 'glaw.user_id', '=', 'user.id')
+            ->select('glaw.*', 'user.nickname')
+            ->orderBy('glaw.updated_at', 'desc')
+            ->paginate($data['page_size'], ['*'], 'page', $data['page']);
+        if (empty($result->items())) {
+            return Result::error('法律咨询不存在!');
+        }
+        $result = [
+            'data' => $result->items(),
+            'count' => $result->total(),
+        ];
+        return Result::success($result);
+    }
     /**
+     * 法律咨询-修改法律咨询状态
      * @param array $data
      * @return array
      */
-    public function getWebsiteTsbb(array $data): array
-    {
-        return $this->__request(__FUNCTION__, $data);
-    }
-    public function getWebsiteTsbbList(array $data): array
-    {
-        return $this->__request(__FUNCTION__, $data);
-    }
-    public function getWebsiteTsbbDetail(array $data): array
-    {
-        return $this->__request(__FUNCTION__, $data);
-    }
-    public function getWebsiteNwHomeList(array $data): array
-    {
-        return $this->__request(__FUNCTION__, $data);
-    }
-    public function getCompanyList(array $data): array
-    {
-        return $this->__request(__FUNCTION__, $data);
-    }
-    public function addCompany(array $data): array
-    {
-        return $this->__request(__FUNCTION__, $data);
-    }
-    public function upCompany(array $data): array
-    {
-        return $this->__request(__FUNCTION__, $data);
+    public function upLawStatus(array $data): array
+    {
+        $user = User::where('id', $data['user_id'])->first();
+        if (empty($user)) {
+            return Result::error('用户不存在!');
+        }
+        $glaw = Glaw::where('id', $data['id'])->first();
+        if (empty($glaw)) {
+            return Result::error('此法律咨询不存在');
+        }
+        $id = $data['id'];
+        unset($data['id']);
+        unset($data['user_id']);
+        $result = Glaw::where('id', $id)->update($data);
+        if (empty($result)) {
+            return Result::error('修改法律咨询状态失败!');
+        }
+        return Result::success($result);
     }
-    public function delCompany(array $data): array
-    {
-        return $this->__request(__FUNCTION__, $data);
-    }
-    public function checkCompany(array $data): array
-    {
-        return $this->__request(__FUNCTION__, $data);
-    }
-    public function getCompanyInfo(array $data): array
-    {
-        return $this->__request(__FUNCTION__, $data);
-    }
-    public function getProjectList(array $data): array
-    {
-        return $this->__request(__FUNCTION__, $data);
-    }
-    public function addProject(array $data): array
-    {
-        return $this->__request(__FUNCTION__, $data);
-    }
-    public function checkProject(array $data): array
-    {
-        return $this->__request(__FUNCTION__, $data);
-    }
-    public function delProject(array $data): array
-    {
-        return $this->__request(__FUNCTION__, $data);
-    }
-    public function upProject(array $data): array
-    {
-        return $this->__request(__FUNCTION__, $data);
-    }
-    public function getProjectInfo(array $data): array
-    {
-        return $this->__request(__FUNCTION__, $data);
-    }
-
     /**
+     * 法律咨询-删除法律咨询
      * @param array $data
-     * @return mixed
+     * @return array
      */
-    public function getWebsiteCategoryJob(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
-    }
-    public function readNotice(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
-    }
-    public function readComplaint(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
-    }
-    public function readJobResume(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
-    }
-    public function readJobApply(array $data)
-
-    {
-        return $this->__request(__FUNCTION__, $data);
-    }
-    public function noticeList(array $data)
-
-    {
-        return $this->__request(__FUNCTION__, $data);
-    }
-    public function complaintList(array $data)
-
-    {
-        return $this->__request(__FUNCTION__, $data);
-    }
-    public function getJobIndustryList(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
-    }
-    public function addJobIndustry(array $data)
+    public function delLaw(array $data): array
     {
-        return $this->__request(__FUNCTION__, $data);
-    }
-    public function upJobIndustry(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
-    }
-    public function delJobIndustry(array $data)
-    {
-        return $this->__request(__FUNCTION__, $data);
+        $user = User::where('id', $data['user_id'])->first();
+        if (empty($user)) {
+            return Result::error('用户不存在!');
+        }
+        $glaw = Glaw::where('id', $data['id'])->first();
+        if (empty($glaw)) {
+            return Result::error('此法律咨询不存在');
+        }
     }
     /**
+     * 法律咨询-获取详情
      * @param array $data
      * @return array
      */
-    public function getJobPositionList(array $data): array
-    {
-        return $this->__request(__FUNCTION__, $data);
+    public function getLawInfo(array $data): array
+    {
+        $user = User::where('id', $data['user_id'])->first();
+        if (empty($user)) {
+            return Result::error('用户不存在!');
+        }
+        $glaw = Glaw::where('id', $data['id'])->first();
+        if (empty($glaw)) {
+            return Result::error('此法律咨询不存在');
+        }
+        return Result::success($glaw);
     }
     /**
+     * 法律咨询-添加
      * @param array $data
      * @return array
      */
-    public function addJobPosition(array $data): array
-    {
-        return $this->__request(__FUNCTION__, $data);
+    public function addLaw(array $data): array
+    {
+        $user = User::where('id', $data['user_id'])->first();
+        if (empty($user)) {
+            return Result::error('用户不存在!');
+        }
+        $result = Glaw::create($data);
+        if (empty($result)) {
+            return Result::error('添加法律咨询失败!');
+        }
+        return Result::success($result);
     }
     /**
-     * @param array $data
-     * @return array
+     * 法律咨询-编辑
      */
-    public function upJobPosition(array $data): array
-    {
-        return $this->__request(__FUNCTION__, $data);
+    public function upLaw(array $data): array
+    {
+        $user = User::where('id', $data['user_id'])->first();
+        if (empty($user)) {
+            return Result::error('用户不存在!');
+        }
+        $glaw = Glaw::where('id', $data['id'])->first();
+        if (empty($glaw)) {
+            return Result::error('此法律咨询不存在');
+        }
+        $id = $data['id'];
+        unset($data['id']);
+        unset($data['user_id']);
+        $result = Glaw::where('id', $id)->update($data);
+        if (empty($result)) {
+            return Result::error('编辑法律咨询失败!');
+        }
+        return Result::success($result);
     }
     /**
-     * @param array $data
-     * @return array
+     * 法律咨询-检查是否可编辑
      */
-    public function delJobPosition(array $data): array
-    {
-        return $this->__request(__FUNCTION__, $data);
+    public function checkLaw(array $data): array
+    {
+        $glaw = Glaw::where('id', $data['id'])->first();
+        if (empty($glaw)) {
+            return Result::error('此法律咨询不存在');
+        }
+        $web = Website::where('id', $data['website_id'])->first();
+        if (empty($web)) {
+            return Result::error('网站不存在!');
+        }
+        $column_arr = json_decode($web['website_column_arr_id'] ?? [], true);
+        if (empty($column_arr)) {
+            return Result::error('该网站未关联任何属性!');
+        }
+        if (!in_array($glaw['column_id'], $column_arr)) {
+            return Result::error('不可编辑');
+        }
+        return Result::success('可编辑');
     }
 }