• cxk123
    招聘 / 求职
    ID recruit_board版本 1.0.0插件制作者 cxk123售价 30 积分1957 行 / 115.5 KBHook / 路由 / 后台页
    把「职位」与「求职者」变成站点里的一等公民:发布(类型 招聘/求职 + 标题 + 类别 + 城市 + 远程 +
    收费插件安装说明购买后点击“授权码”获取一次性授权码;在后台 > 插件广场点击在线安装或更新,并填写该授权码。已购买用户更新免费:每次在线安装或更新前,重新点击“授权码”获取新的一次性授权码即可,无需再次购买;也可直接下载新版后用后台“插件上传”更新。尊重并感谢他人劳动,请勿传播代码。
    app/plugins/recruit_board/plugin.php
    开发日志已有 1 条

    此项目接受所有登录用户协助维护和提交更新。

    • cxk123
      cxk123
      版本 1.0.0 29185322e283 更新:首次上架(1.0.0,插件 id:`recruit_board`)。 > **关于 id**:本插件在本地验收阶段使用的 id 是 `job_board`,但该 id 已被市场里另一位作者 > 占用(topic 725 / creator 307,`allow_overwrite=false`),提交被市场侧拒绝(我方字节未入库、 > 积分未扣、市场登记逐字未变)。因此本次以**未被占用的新 idrelease
    主楼
  • cxk123

    版本 1.0.0 更新:
    首次上架(1.0.0,插件 id:recruit_board)。

    关于 id:本插件在本地验收阶段使用的 id 是 job_board,但该 id 已被市场里另一位作者
    占用(topic 725 / creator 307,allow_overwrite=false),提交被市场侧拒绝(我方字节未入库、
    积分未扣、市场登记逐字未变)。因此本次以未被占用的新 id recruit_board 首次上架:
    manifest id、93 个顶层函数前缀、3 张自有表与 5 枚具名索引、CSS 前缀、data 锚点、
    三条路由键与后台 tab 键一并改名。除改名外,业务逻辑与验收结论逐字节未变
    (改名前后差异由「重放同一改名管道 → cmp 逐字节相同」证明)。

    市场里 招聘 / 求职 / 简历 / 职位 / 应聘 / 投递 / 面试 / 薪资 / 岗位 / 猎头 / 内推 / 实习 / 兼职 此前 全 0 命中,
    核心侧也没有任何职位概念:项目侦察把 29 个招聘族关键词打在核心 6 个文件(6822 行)上,合计命中 0
    (唯一的假阳性 order 100 次,逐条看下来全是 ORDER BY 与 border / reply_order,没有一处是「订单」);
    25 款自有插件里的招聘族关键词同样全 0。也就是说,站内想招一个人或找一份工作,
    除了「发个帖子」没有别的容器 —— 而帖子既没有薪资区间、没有城市与远程与否,
    更没有「投递我但别把我的微信公开」这件事。这一款补的就是这条最短闭环:
    发布(招聘 / 求职)→ 浏览筛选 → 详情 → 站内投递 / 联系 → 关闭职位,全程只做信息撮合。

    • 发布:发布类型(招聘 / 求职)/ 标题 / 职位类别 / 工作城市 / 远程(支持远程 · 需到岗)/ 经验要求(不限…10 年以上六档)/

    薪资口径(月薪 · 面议 · 日结 / 时薪,月薪可写区间如 8000-12000 或 8k-12k)/ 描述 / 联系方式 / 可见范围 / 配图,
    一张表单一次提交完事。同一时间窗内重复提交靠 submit_key 唯一键兜底(幂等复用赢家那一行,不产生重复行)。

    • 浏览与筛选:关键词(标题 / 描述 / 城市)、类型、城市、远程、类别、状态、排序(最新 / 薪资从高到低 / 薪资从低到高)、分页;

    列表卡片给出配图(或占位块)、标题、薪资、城市与远程、类型徽标、状态徽标、类别、发布者与发布时间。

    • 详情页:配图、标题、薪资、类型与状态徽标、城市 / 远程 / 类别 / 经验 / 可见范围、

    发布者与浏览数、「投递 / 联系 TA」按钮、详细描述,以及「同一发布者的其它进行中」。

    • 隐私优先(本插件最该被看见的一条):联系方式有两档口径,默认就是最保守的那一档 ——

    「仅站内私信」:选它之后联系方式在写入时被强制清空,库里根本没有可泄露的串,
    投递 / 联系走「投递 / 联系 TA」→ 系统替你给对方发一条只含职位标题与链接的站内私信
    (在役的 user_follow 私信桥;不可用时才退化为站内通知,且通知正文与私信正文完全一致),双方都不必暴露联系方式。
    即使发帖人改选「登录后可见」:游客在列表 / 详情 / 搜索三处都拿不到原文(连脱敏形态都没有,
    详情页只给一句「联系方式仅登录用户可见,请先登录」,而且连投递表单都不渲染),
    登录用户在列表与搜索里也只看到脱敏形态(保证与原串不相等),只有详情页给全文。
    这三处的判定共用同一个函数 recruit_board_contact_plaintext_allowed(),不会随页面漂移;私信正文里同样不含联系方式。

    • 可见性与状态只有一份真源:管理团队全可见 · 作者看得见自己的已下架条目 · 其他登录用户看不到已下架(已关闭仍然可见)·

    游客只看公开且未下架的。列表 / 详情 / 搜索 / 我的 / 后台五面由同一对函数(一条 SQL 谓词 + 一条 PHP 判据)给出。

    • 状态机与配额都是 CAS:open / closed / hidden 的每次迁移都是

    UPDATE … WHERE id=? AND user_id=? AND status=? + rowCount()===1 —— 两个人同时关闭同一条职位只有一个成功,
    另一个拿到「这条职位已经不在「进行中」状态了,请刷新后重试」,审计里只留下一条迁移记录;
    每人「同时进行中条数」额度用独立的配额表 CAS 抢占,只有从 open 离开才归还名额;
    越权操作一律 404 且零写入。

    • 配图只引用、不接管:配图只能从本人已上传的核心图片附件里选(服务端校验归属,绝不信表单,

    选了别人的附件直接判非法而不是静默忽略),不复制文件、不写附件表、不接管上传;封面附件被删掉时渲染占位块而不是破图。

    • 后台一个 Tab:全部 / 进行中 / 已关闭 / 已下架统计 + 设置(总开关、允许普通用户发布、侧栏入口、

    每人同时进行中上限、列表每页条数、审计保留条数、新建默认联系方式口径、职位类别清单、城市清单)+
    职位队列(按状态筛选,含强制下架 / 恢复上架 / 删除)+ 最近审计流。

    • 自有表、零核心改动:三张 plugin_recruit_board_* 表 + 五枚具名索引,不碰任何 app_* 表

    (app_users / app_attachments 只出现在只读 JOIN 与 IN 批查里);卸载把表、索引、配置戳一起清干净;
    app.boot 只比一个结构版本戳(戳匹配时 0 条 SQL)就能自愈重装。

    • 三驱动可移植:不用窗口函数、不手写 ON CONFLICT / INSERT IGNORE(幂等写入走核心的

    app_db_insert_ignore())、时间一律 unix 秒整数、建删表索引只走 app_db_*、自增 id 只在一处取。

    • 页面级无 N+1:列表页 2 条、详情页 3 条、我的发布 5 条、后台 6 条插件语句(都在预算内,

    多出来的都是批查,与行数无关);行数翻倍后列表页语句数不增长;首页零额外开销(不挂首页槽位,插件语句恒为 0)。

    本版为 v1.0.0 首次上架:验收套件 609 项通过 / 0 项失败,
    七道静态门禁 0 违规 / 0 待人工确认,全仓 suite_integrity_audit 63 个套件七条全 ✓。

    #1
  • 质量报告

    插件质量报告

    插件:recruit_board

    Hook功能范围循环使用频率文件读写修改系统表读写系统表读写自己的表
    app.boot全站请求启动否5---写 plugin_recruit_board_quota, plugin_recruit_board_posts, plugin_recruit_board_audit
    sidebar.feature_links首页/侧栏快捷功能否5----
    user.menu_links个人卡片/移动端我的菜单(展示位置:个人卡片)否4----

    颜色说明:黄色表示有数据读写,红色表示 Hook 在系统循环中执行,浅蓝色表示有文件写入。“列表跳过”表示回调在列表路径会提前返回,“回调内”表示操作位于回调自身或其帮助函数的循环体内。“文件批处理”表示逐个处理用户一次提交的文件,属于必要操作,不标记修正。只有操作实际处于需要优化的循环路径时,才会标记“修正❗️”。

    数据字典

    plugin_recruit_board_quota

    字段类型可空默认值约束
    user_iduint否-主键
    useduint否0-
    updated_atuint否0-

    plugin_recruit_board_posts

    字段类型可空默认值约束
    -动态定义--无法静态解析

    plugin_recruit_board_audit

    字段类型可空默认值约束
    -动态定义--无法静态解析
    #2
  • dcve

    佬,最近发布这么多??厉害

    #3

发表回复

登录后回复