feat(W4): 院系子站嵌套路径-cms_site.path列+uk_site_path/parent_code,门户单段+嵌套双映射,旧链301,public_base_url派生,sitePath预览,SQL三处+升级脚本,T-W4-01..15 全绿279/279

This commit is contained in:
chenxing
2026-09-08 12:34:33 +08:00
parent 5da6f7ee5d
commit 536bd6cea4
30 changed files with 593 additions and 55 deletions
@@ -24,14 +24,24 @@ import javax.persistence.UniqueConstraint;
@Setter
@Entity
@Table(name = "cms_site",
uniqueConstraints = @UniqueConstraint(name = "uk_site_code", columnNames = "code"),
uniqueConstraints = {
@UniqueConstraint(name = "uk_site_path", columnNames = "path"),
@UniqueConstraint(name = "uk_site_parent_code", columnNames = {"parent_site_id", "code"})
},
indexes = @Index(name = "idx_site_sch", columnList = "sch_id"))
public class CmsSite extends BaseEntity {
/** 站点编码,URL 路径用(/portal/{code}) */
/** 站点编码(URL 末段;W4 起不再全局唯一——不同学校可重用同一编码) */
@Column(name = "code", nullable = false, length = 64)
private String code;
/**
* 门户路径(W4 嵌套路径,方案 §8.4/D2):顶层=code;子站=父path+'/'+code。
* 门户 URL 唯一标识(/portal/{path}/**),全站唯一。
*/
@Column(name = "path", nullable = false, length = 191)
private String path = "";
/** 上级站点ID(0=顶层校站点;院系子站挂主站 id,层级固定两层) */
@Column(name = "parent_site_id", nullable = false)
private Integer parentSiteId = 0;