import{_ as i,o as a,c as t,a2 as h}from"./chunks/framework.BbmSSMjL.js";const y=JSON.parse('{"title":"6.8 公告与链接管理","description":"","frontmatter":{},"headers":[],"relativePath":"zh/modules/content.md","filePath":"zh/modules/content.md"}'),n={name:"zh/modules/content.md"};function k(e,s,l,p,d,r){return a(),t("div",null,[...s[0]||(s[0]=[h(`

6.8 公告与链接管理 ​

概述

本节涵盖通知公告(Notice)和友情链接(Link)两个模块,均继承 BaseTenantService 实现租户隔离,use HasFileProcessing 启用封面/Logo 文件字段处理。

说明: 本文件名为 content.md,实际文档内容为通知公告和友情链接两个独立模块,并不存在 "Content" 模块。

通知公告 ​

模块特点 ​

特性说明
基类BaseTenantService(租户隔离)
Trait 组合HasCrudOperations, HasFileProcessing, HasQueryScopes, HasSerializeMaps
文件字段cover(封面图),保存到 notice 目录
富文本字段content(正文,存 [IMG_URL] 占位,读取时替换回域名)
枚举映射type → notice_type、status → notice_status
排序按 id 倒序(最新在前)+ 租户内排序

Service 配置(来自项目实际代码) ​

php
class NoticeService extends BaseTenantService
{
    use HasCrudOperations, HasFileProcessing, HasQueryScopes, HasSerializeMaps;

    protected string $modelClass = Notice::class;

    protected array $fileFields = ['cover'];

    // 富文本字段:保存时迁移媒体并替换为 [IMG_URL] 占位,读取时替换回域名
    protected array $contentFields = ['content'];

    protected string $fileSaveDir = 'notice';

    protected array $pageLikeFields = ['title'];
    protected array $pageEqFields = ['type', 'status'];

    // 最新公告排在前面
    protected array $pageOrderBy = ['field' => 'id', 'type' => 'desc'];

    protected array $serializeMaps = [
        'type'   => 'notice_type',
        'status' => 'notice_status',
    ];
}

API 接口 ​

方法路径权限码说明
GET/api/notice/pagesys:notice:page分页列表
GET/api/notice/list—全量列表
GET/api/notice/detail/{id}sys:notice:detail详情
POST/api/notice/addsys:notice:add新增
PUT/api/notice/updatesys:notice:update修改
DELETE/api/notice/delete/{id}sys:notice:delete删除
DELETE/api/notice/batchDeletesys:notice:batchDelete批量删除

友情链接 ​

模块特点 ​

特性说明
基类BaseTenantService(租户隔离)
Trait 组合HasCrudOperations, HasFileProcessing, HasQueryScopes, HasSerializeMaps, HasUniqueCheck
文件字段image(友链 Logo),保存到 link 目录
唯一校验name 按租户分组唯一(['name','tenant_id'])
枚举映射status → link_status 字典

Service 配置(来自项目实际代码) ​

php
class LinkService extends BaseTenantService
{
    use HasCrudOperations, HasFileProcessing, HasQueryScopes, HasSerializeMaps, HasUniqueCheck;

    protected string $modelClass = Link::class;

    protected array $fileFields = ['image'];
    protected string $fileSaveDir = 'link';

    protected array $pageLikeFields = ['name'];
    protected array $pageEqFields = ['status'];
    protected array $pageOrderBy = ['field' => 'sort', 'type' => 'asc'];

    // name 在同一租户内唯一
    protected array $uniqueFields = [['name', 'tenant_id']];

    protected array $serializeMaps = [
        'status' => 'link_status',
    ];
}

API 接口 ​

方法路径权限码说明
GET/api/link/pagesys🔗page分页列表
GET/api/link/list—全量列表
GET/api/link/detail/{id}sys🔗detail详情
POST/api/link/addsys🔗add新增
PUT/api/link/updatesys🔗update修改
DELETE/api/link/delete/{id}sys🔗delete删除
DELETE/api/link/batchDeletesys🔗batchDelete批量删除

两模块对比 ​

维度通知公告 Notice友情链接 Link
核心字段title、content(正文)、covername、url、image(Logo)
默认排序id 倒序(最新在前)sort 升序
唯一校验无name 分租户唯一
字典notice_type、notice_statuslink_status
典型场景站内公告、系统通知合作伙伴链接页
`,19)])])}const g=i(n,[["render",k]]);export{y as __pageData,g as default};