This commit is contained in:
@@ -0,0 +1,171 @@
|
||||
package com.yunhai.svchall.entity;
|
||||
|
||||
import com.yunhai.svchall.enums.ServiceItemStatusEnum;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import javax.persistence.Column;
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.Index;
|
||||
import javax.persistence.Table;
|
||||
import javax.persistence.UniqueConstraint;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 事项主表(承袭 CMS cms_service_item 全字段,V2.0 Part B.2.1)。
|
||||
* 变化点:site_id → site_code(跨应用后 CMS 自增 id 无意义,sch_id 定租户);
|
||||
* 新增 form_code(绑定自定义表单)/ flow_guid(绑定流程中心流程,NULL=纯指南事项);
|
||||
* apply_url 由 ext_json 提升为独立列。
|
||||
*
|
||||
* <p>主键 id 语义(V2.0 C.2"id 语义"):CMS 迁移时**原值 identity insert**——CMS 门户指南页
|
||||
* 路由 /sv/{itemId} 直接携带本表主键;本应用自增起点须大于迁移 max(id)。
|
||||
*
|
||||
* <p>索引声明口径:带排序方向的门户列表索引(sch_id, site_code, status, sort_no ASC,
|
||||
* publish_time DESC, id DESC)含 DESC 列,Hibernate {@code @Index} 无法表达,由 sql/ 升级脚本补建。
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
@Entity
|
||||
@Table(name = "service_item",
|
||||
uniqueConstraints = @UniqueConstraint(name = "uk_svc_item_code",
|
||||
columnNames = {"sch_id", "site_code", "item_code"}),
|
||||
indexes = {
|
||||
@Index(name = "idx_svc_item_list", columnList = "sch_id, site_code, status, online_flag, sort_no"),
|
||||
@Index(name = "idx_svc_item_obj", columnList = "sch_id, site_code, status, object_key"),
|
||||
@Index(name = "idx_svc_item_cat", columnList = "sch_id, site_code, status, category_key"),
|
||||
@Index(name = "idx_svc_item_dept", columnList = "sch_id, site_code, status, dept_group_id"),
|
||||
@Index(name = "idx_svc_item_flow", columnList = "flow_guid"),
|
||||
@Index(name = "idx_svc_item_form", columnList = "form_code")})
|
||||
public class ServiceItem extends BaseEntity {
|
||||
|
||||
/** 租户键(= UserBase 学校 id,承袭 CMS site.sch_id 口径) */
|
||||
@Column(name = "sch_id", nullable = false)
|
||||
private Long schId;
|
||||
|
||||
/** 站点编码(CMS cms_site.code 引用;办事大厅不建 site 表,站点目录经 CMS oapi 解析) */
|
||||
@Column(name = "site_code", nullable = false, length = 64)
|
||||
private String siteCode;
|
||||
|
||||
/** 事项编码,站点内唯一;跨服务键的一半(另一半是 siteCode) */
|
||||
@Column(name = "item_code", nullable = false, length = 64)
|
||||
private String itemCode;
|
||||
|
||||
/** 事项名称 */
|
||||
@Column(name = "title", nullable = false, length = 200)
|
||||
private String title;
|
||||
|
||||
/** 一句话简介(列表卡片副标题、办件 biz_snapshot 摘要) */
|
||||
@Column(name = "summary", length = 500)
|
||||
private String summary;
|
||||
|
||||
/** 服务对象,指向 service_dict(dict_type=object) 的 dict_key */
|
||||
@Column(name = "object_key", length = 64)
|
||||
private String objectKey;
|
||||
|
||||
/** 事项类别,指向 service_dict(dict_type=category) 的 dict_key */
|
||||
@Column(name = "category_key", length = 64)
|
||||
private String categoryKey;
|
||||
|
||||
/** 服务部门 = UserBase 组树节点 id 快照(不建字典表) */
|
||||
@Column(name = "dept_group_id")
|
||||
private Integer deptGroupId;
|
||||
|
||||
/** 部门名快照(列表/指南免跨服务查名;改名不自动同步,靠 syncDeptName) */
|
||||
@Column(name = "dept_name", length = 128)
|
||||
private String deptName;
|
||||
|
||||
/** 办理方式:1 线上 / 2 线下 / 3 线上线上线下(HandleModeEnum) */
|
||||
@Column(name = "handle_mode", nullable = false)
|
||||
private Integer handleMode = 1;
|
||||
|
||||
/** 是否可在线办理:1 是 / 0 否。一致性校验:=1 时 flowGuid 必须非空(V2.0 B.2.1) */
|
||||
@Column(name = "online_flag", nullable = false)
|
||||
private Integer onlineFlag = 1;
|
||||
|
||||
/** 办理地点 */
|
||||
@Column(name = "handle_place", length = 200)
|
||||
private String handlePlace;
|
||||
|
||||
/** 办理时限(文本,如"3 个工作日") */
|
||||
@Column(name = "handle_time_limit", length = 64)
|
||||
private String handleTimeLimit;
|
||||
|
||||
/** 承诺时限(文本) */
|
||||
@Column(name = "promise_time_limit", length = 64)
|
||||
private String promiseTimeLimit;
|
||||
|
||||
/** 咨询电话 */
|
||||
@Column(name = "contact_phone", length = 64)
|
||||
private String contactPhone;
|
||||
|
||||
/** 监督投诉电话 */
|
||||
@Column(name = "supervise_phone", length = 64)
|
||||
private String supervisePhone;
|
||||
|
||||
/** 办理流程(保存时 jsoup 白名单清洗;库内相对 /upload/ 路径,oapi 出参绝对化) */
|
||||
@Column(name = "process_html", columnDefinition = "LONGTEXT")
|
||||
private String processHtml;
|
||||
|
||||
/** 所需材料(同上) */
|
||||
@Column(name = "material_html", columnDefinition = "LONGTEXT")
|
||||
private String materialHtml;
|
||||
|
||||
/** 注意事项(同上) */
|
||||
@Column(name = "notice_html", columnDefinition = "LONGTEXT")
|
||||
private String noticeHtml;
|
||||
|
||||
/**
|
||||
* 关联 CMS 栏目:常见问题(**不透明引用** → cms_category.id,本应用不校验存在性,
|
||||
* CMS detail 转调时解析为 URL;V2.0 Part C.2/R2)
|
||||
*/
|
||||
@Column(name = "faq_category_id")
|
||||
private Integer faqCategoryId;
|
||||
|
||||
/** 关联 CMS 栏目:公告信息 */
|
||||
@Column(name = "notice_category_id")
|
||||
private Integer noticeCategoryId;
|
||||
|
||||
/** 关联 CMS 栏目:文件规定 */
|
||||
@Column(name = "rule_category_id")
|
||||
private Integer ruleCategoryId;
|
||||
|
||||
/** 事项封面(库内相对 /upload/ 路径,出参绝对化) */
|
||||
@Column(name = "cover_image", length = 500)
|
||||
private String coverImage;
|
||||
|
||||
/** 绑定自定义表单 code(service_form.code;NULL=发起无需表单);发起时取最新已发布版本 */
|
||||
@Column(name = "form_code", length = 64)
|
||||
private String formCode;
|
||||
|
||||
/** 绑定流程中心流程(flw_def.flow_guid;NULL=纯指南事项不可在线办理) */
|
||||
@Column(name = "flow_guid", length = 32)
|
||||
private String flowGuid;
|
||||
|
||||
/** "我要办理"手填外链(http(s)://;三态优先级最高,承袭 CMS ext_json.apply_url 语义) */
|
||||
@Column(name = "apply_url", length = 500)
|
||||
private String applyUrl;
|
||||
|
||||
/** 管理端自定义排序(列表默认排序第一优先级,升序) */
|
||||
@Column(name = "sort_no", nullable = false)
|
||||
private Integer sortNo = 0;
|
||||
|
||||
/** 状态:0 草稿 / 1 已发布 / 2 已下架(ServiceItemStatusEnum) */
|
||||
@Column(name = "status", nullable = false)
|
||||
private Integer status = ServiceItemStatusEnum.DRAFT.getCode();
|
||||
|
||||
/** 发布时间 */
|
||||
@Column(name = "publish_time")
|
||||
private LocalDateTime publishTime;
|
||||
|
||||
/** 下架时间 */
|
||||
@Column(name = "offline_time")
|
||||
private LocalDateTime offlineTime;
|
||||
|
||||
/** 指南页浏览量(CMS 经 /oapi/svc/item/view 异步累加,不承诺精确) */
|
||||
@Column(name = "view_count", nullable = false)
|
||||
private Integer viewCount = 0;
|
||||
|
||||
/** 扩展字段 JSON(预留,一期不写) */
|
||||
@Column(name = "ext_json", columnDefinition = "JSON")
|
||||
private String extJson;
|
||||
}
|
||||
Reference in New Issue
Block a user