feat(publicity): 公示页支持/执行意向 (匿名提交 + 管理审核)

- 新增 biz_publicity_support_intent / biz_publicity_execution_intent 两张独立表
  (与已登录视角的 biz_support_intent / biz_execution_intent 解耦, 避免匿名数据污染强绑表)
- 后端 BizPublicityIntentController: 公开提交 + 公开查重 (按 project_id+phone+source) + 管理 CRUD
  已登录直接取 user_id, 未登录但 phone 命中 sys_user 仍自动关联 user_id (不回强制登录)
- /business/publicity/** 加 Spring Security permitAll
- 前端 PublicityDetail.vue: 右侧 2 个意向按钮 (已登录/匿名都弹 dialog 填 5 字段),
  已提交状态用 hasPublicityIntent 按 phonenumber 持久化查回
- 重写 manager/SupportIntent.vue + manager/ExecIntent.vue: 列表/筛选/CSV导出/状态变更/批量删除
This commit is contained in:
郭庆泰
2026-08-17 01:15:16 +08:00
parent a1c54842e2
commit b41cf77cac
16 changed files with 1168 additions and 42 deletions
@@ -61,7 +61,7 @@ public class SecurityConfig
// OSS 文件代理 (PDF/图片内嵌预览, 重写 Content-Disposition 为 inline)
.requestMatchers(HttpMethod.GET, "/common/oss/proxy").permitAll()
// 业务公开门户与注册入口可匿名访问; 字典 active/单查公开, 写操作需登录+权限
.requestMatchers("/business/public/**", "/business/auth/**", "/business/sms/**").permitAll()
.requestMatchers("/business/public/**", "/business/publicity/**", "/business/auth/**", "/business/sms/**").permitAll()
// 字典 active (只读) + 按 ID 查 公开给前端拉下拉数据
.requestMatchers(HttpMethod.GET, "/business/dict/department/active", "/business/dict/title/active",
"/business/dict/department/*", "/business/dict/title/*").permitAll()