-- =============================================================================
-- 商户入驻申请单 biz_merchant_entry_apply
-- 用途：C 端会员提交的入驻申请；平台审核 → 公示 → 完成入驻后回填 merchant_id/shop_id
-- 说明：平台端「添加商户」不经过本表；完整表单快照存于 form_json
-- form_json 结构：{ "subject":{}, "biz":{}, "shop":{}, "agreementAccepted":true }
-- =============================================================================
CREATE TABLE IF NOT EXISTS `biz_merchant_entry_apply` (
  `apply_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '申请ID，主键',
  `apply_no` varchar(32) NOT NULL COMMENT '申请编号（业务单号，唯一）',
  `apply_status` char(1) NOT NULL DEFAULT '0' COMMENT '申请状态：0待审核 1已完成入驻 2审核未通过 3公示中',
  `merchant_type` char(1) NOT NULL COMMENT '主体类型：1个人 2企业',

  -- ---------- 申请人 ----------
  `member_id` bigint(20) NOT NULL COMMENT '申请人会员ID（biz_member.member_id）',
  `member_code` varchar(64) DEFAULT NULL COMMENT '申请会员名称冗余（列表展示/检索）',

  -- ---------- 列表摘要字段（冗余，便于检索；详情以 form_json 为准） ----------
  `subject_label` varchar(128) DEFAULT NULL COMMENT '申请信息摘要：个人=姓名，企业=企业名称',
  `contact_name` varchar(64) DEFAULT NULL COMMENT '联系人姓名（来自 subject）',
  `contact_phone` varchar(20) DEFAULT NULL COMMENT '联系人手机（来自 subject）',
  `id_card_no` varchar(32) DEFAULT NULL COMMENT '个人证件号（merchant_type=1 时冗余，唯一性校验）',
  `credit_code` varchar(32) DEFAULT NULL COMMENT '统一社会信用代码（merchant_type=2 时冗余，唯一性校验）',
  `merchant_name` varchar(128) DEFAULT NULL COMMENT '申请中商户名称（个人来自 biz；企业可为企业名称）',
  `shop_name` varchar(128) DEFAULT NULL COMMENT '申请中拟开设店铺名称（唯一性校验）',

  -- ---------- 表单与审核 ----------
  `form_json` longtext COMMENT '完整表单JSON快照（subject/biz/shop，字段语义同 biz_merchant + 店铺）',
  `reject_reason` varchar(500) DEFAULT NULL COMMENT '驳回原因（apply_status=2 时必填）',

  -- ---------- 入驻完成回填 ----------
  `merchant_id` bigint(20) DEFAULT NULL COMMENT '公示完成、建档后回填的商户ID（biz_merchant.merchant_id）',
  `shop_id` bigint(20) DEFAULT NULL COMMENT '公示完成、建档后回填的首家店铺ID（biz_shop.shop_id）',

  -- ---------- 时间线 ----------
  `apply_time` datetime NOT NULL COMMENT '首次提交成功时间',
  `audit_by` varchar(64) DEFAULT NULL COMMENT '审核操作人（通过进入公示或驳回时写入）',
  `audit_time` datetime DEFAULT NULL COMMENT '审核操作时间',
  `publicity_start_time` datetime DEFAULT NULL COMMENT '公示开始时间（审核通过进入公示时写入）',
  `publicity_end_time` datetime DEFAULT NULL COMMENT '公示结束时间（默认 start+7天，期满后可完成入驻）',

  -- ---------- 公共字段 ----------
  `del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '删除标志：0存在 2逻辑删除',
  `create_by` varchar(64) DEFAULT '' COMMENT '创建者（一般为会员ID字符串）',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` varchar(64) DEFAULT '' COMMENT '更新者',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  PRIMARY KEY (`apply_id`),
  UNIQUE KEY `uk_apply_no` (`apply_no`),
  KEY `idx_status_time` (`apply_status`,`apply_time`),
  KEY `idx_member_status` (`member_id`,`apply_status`),
  KEY `idx_member_code` (`member_code`),
  KEY `idx_id_card` (`id_card_no`),
  KEY `idx_credit_code` (`credit_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='商户入驻申请单（C端提交，审核+公示后完成入驻）';
