-- wxshop.shop_goods definition

CREATE TABLE `shop_goods` (
  `goods_id` bigint NOT NULL AUTO_INCREMENT COMMENT '商品唯一ID',
  `goods_name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '商品名称',
  `category_id` bigint NOT NULL COMMENT '商品分类ID',
  `external_goods_id` bigint DEFAULT NULL COMMENT '外部归属类型的商品ID',
  `corpid` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '企业微信id',
  `monthly_purchase_limit` int DEFAULT NULL COMMENT '每人每月限购数量',
  `belong_type` tinyint NOT NULL DEFAULT '0' COMMENT '归属类型（0-借还柜 1-固资通）',
  `price` decimal(15,2) NOT NULL DEFAULT '0.00' COMMENT '销售价格',
  `stock` int NOT NULL DEFAULT '0' COMMENT '库存数量',
  `status` tinyint NOT NULL DEFAULT '2' COMMENT '商品状态（1上架 2下架）',
  `auto_approval` tinyint NOT NULL DEFAULT '0' COMMENT '免审批（0否 1是）',
  `cover_img` varchar(512) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '封面图URL',
  `goods_detail` text COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '商品详情（支持2000汉字+10个图片链接）',
  `usage_instruction` varchar(512) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '商品使用说明',
  `creator_id` bigint NOT NULL DEFAULT '0' COMMENT '创建者ID',
  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `updater_id` bigint NOT NULL DEFAULT '0' COMMENT '更新者ID',
  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `remark` varchar(512) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
  `deleted` tinyint(1) NOT NULL DEFAULT '0' COMMENT '删除标志（0存在 1删除）',
  PRIMARY KEY (`goods_id`),
  KEY `idx_category` (`category_id`),
  KEY `idx_status` (`status`),
  KEY `idx_update_time` (`update_time`)
) ENGINE=InnoDB AUTO_INCREMENT=289 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='商品信息表';


-- wxshop.shop_order definition

CREATE TABLE `shop_order` (
  `order_id` bigint NOT NULL AUTO_INCREMENT COMMENT '订单唯一ID',
  `ucid` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'ucid',
  `openid` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'openid',
  `trade_id` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '支付网关交易id',
  `mobile` varchar(30) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '手机号码',
  `name` varchar(30) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '成员名称',
  `ab98_user_id` bigint DEFAULT NULL COMMENT '汇邦云用户ID',
  `userid` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '企业微信用户ID或汇邦云用户ID',
  `biz_order_id` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '业务系统订单ID（对接外部系统）',
  `total_amount` decimal(15,2) NOT NULL COMMENT '订单总金额',
  `status` tinyint NOT NULL DEFAULT '1' COMMENT '订单状态（1待付款 2已付款 3已发货 4已完成 5已取消）',
  `mode` tinyint NOT NULL DEFAULT '0' COMMENT '运行模式（0-支付模式 1-审批模式 2-借还模式 3-会员模式 4-耗材模式）',
  `pay_status` tinyint NOT NULL DEFAULT '1' COMMENT '支付状态（1未支付 2已支付 3退款中 4已退款）',
  `is_deduct_stock` tinyint NOT NULL DEFAULT '0' COMMENT '已扣减库存（0否 1是）',
  `payment_method` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '支付方式',
  `pay_time` datetime DEFAULT NULL COMMENT '支付时间',
  `creator_id` bigint NOT NULL DEFAULT '0' COMMENT '创建者ID',
  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `updater_id` bigint NOT NULL DEFAULT '0' COMMENT '更新者ID',
  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `deleted` tinyint(1) NOT NULL DEFAULT '0' COMMENT '删除标志（0存在 1删除）',
  `is_internal` tinyint(1) DEFAULT '0' COMMENT '是否内部用户（0否 1汇邦云用户 2企业微信用户）',
  `corpid` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '企业微信id',
  PRIMARY KEY (`order_id`),
  KEY `idx_status` (`status`),
  KEY `idx_pay_status` (`pay_status`),
  KEY `idx_create_time` (`create_time`)
) ENGINE=InnoDB AUTO_INCREMENT=1356 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='商品订单表';


-- wxshop.shop_order_goods definition

CREATE TABLE `shop_order_goods` (
  `order_goods_id` bigint NOT NULL AUTO_INCREMENT COMMENT '订单商品唯一ID',
  `order_id` bigint NOT NULL COMMENT '关联订单ID',
  `approval_id` bigint DEFAULT NULL COMMENT '审批ID',
  `goods_id` bigint DEFAULT NULL COMMENT '关联商品ID',
  `cell_id` bigint DEFAULT NULL COMMENT '格口ID',
  `quantity` int NOT NULL DEFAULT '1' COMMENT '购买数量',
  `price` decimal(15,2) NOT NULL COMMENT '购买时单价',
  `total_amount` decimal(15,2) NOT NULL COMMENT '商品总金额',
  `status` tinyint NOT NULL DEFAULT '1' COMMENT '商品状态（1正常 2已退货 3已换货）',
  `mode` tinyint NOT NULL DEFAULT '0' COMMENT '运行模式（0-支付模式 1-审批模式 2-借还模式 3-会员模式 4-耗材模式）',
  `creator_id` bigint NOT NULL DEFAULT '0' COMMENT '创建者ID',
  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `updater_id` bigint NOT NULL DEFAULT '0' COMMENT '更新者ID',
  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `deleted` tinyint(1) NOT NULL DEFAULT '0' COMMENT '删除标志（0存在 1删除）',
  `goods_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '商品名称',
  `cover_img` varchar(512) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '封面图URL',
  `corpid` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '企业微信id',
  PRIMARY KEY (`order_goods_id`),
  KEY `idx_order` (`order_id`),
  KEY `idx_goods` (`goods_id`),
  KEY `idx_status` (`status`),
  KEY `idx_create_time` (`create_time`),
  CONSTRAINT `fk_order_goods_goods` FOREIGN KEY (`goods_id`) REFERENCES `shop_goods` (`goods_id`),
  CONSTRAINT `fk_order_goods_order` FOREIGN KEY (`order_id`) REFERENCES `shop_order` (`order_id`)
) ENGINE=InnoDB AUTO_INCREMENT=1358 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='订单商品明细表';


-- wxshop.return_approval definition

CREATE TABLE `return_approval` (
  `approval_id` bigint NOT NULL AUTO_INCREMENT COMMENT '审批编号',
  `order_id` bigint DEFAULT NULL COMMENT '关联订单ID',
  `goods_id` bigint DEFAULT NULL COMMENT '关联商品ID',
  `order_goods_id` bigint DEFAULT NULL COMMENT '关联订单商品ID',
  `approval_type` tinyint NOT NULL DEFAULT '0' COMMENT '审批类型（0为借还柜 1为固资通）',
  `external_goods_id` bigint DEFAULT NULL COMMENT '外部归属类型的商品ID',
  `external_approval_id` bigint DEFAULT NULL COMMENT '外部归属类型的审批ID',
  `code` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '审批码',
  `code_check` tinyint NOT NULL DEFAULT '0' COMMENT '审批码校验 0未核销 1已核销',
  `corpid` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '企业微信id',
  `audit_userid` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '审批人企业UserID',
  `apply_userid` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '申请人企业UserID',
  `apply_user_name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '申请人',
  `apply_quantity` int DEFAULT NULL COMMENT '申请数量',
  `return_quantity` int DEFAULT NULL COMMENT '归还数量',
  `goods_price` decimal(15,2) DEFAULT NULL COMMENT '商品单价',
  `return_amount` decimal(15,2) DEFAULT NULL COMMENT '退还金额',
  `return_images` varchar(2048) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '归还图片路径数组',
  `audit_images` varchar(2048) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '审核图片路径数组',
  `return_remark` varchar(1024) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '归还说明',
  `apply_remark` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '申请说明',
  `audit_remark` varchar(1024) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '审核说明',
  `audit_name` varchar(30) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '审批人',
  `status` tinyint NOT NULL DEFAULT '1' COMMENT '审批状态(1待审核 2已通过 3已驳回)',
  `approval_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '审批时间',
  `creator_id` bigint DEFAULT '0' COMMENT '创建者ID',
  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `updater_id` bigint DEFAULT '0' COMMENT '更新者ID',
  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `deleted` tinyint(1) NOT NULL DEFAULT '0' COMMENT '删除标志（0存在 1删除）',
  PRIMARY KEY (`approval_id`),
  KEY `idx_order` (`order_id`),
  KEY `idx_goods` (`goods_id`),
  KEY `idx_status` (`status`),
  KEY `idx_order_goods` (`order_goods_id`),
  KEY `idx_external_goods_id` (`external_goods_id`),
  KEY `idx_approval_type` (`approval_type`),
  KEY `idx_external_approval_id` (`external_approval_id`),
  CONSTRAINT `fk_return_goods` FOREIGN KEY (`goods_id`) REFERENCES `shop_goods` (`goods_id`),
  CONSTRAINT `fk_return_order` FOREIGN KEY (`order_id`) REFERENCES `shop_order` (`order_id`),
  CONSTRAINT `fk_return_order_goods` FOREIGN KEY (`order_goods_id`) REFERENCES `shop_order_goods` (`order_goods_id`)
) ENGINE=InnoDB AUTO_INCREMENT=1448 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='商品归还审批表';

CREATE TABLE `cabinet_cell` (
  `cell_id` bigint NOT NULL AUTO_INCREMENT COMMENT '格口唯一ID',
  `cabinet_id` bigint NOT NULL COMMENT '关联柜机ID',
  `mainboard_id` bigint DEFAULT NULL COMMENT '归属主板ID',
  `goods_id` bigint DEFAULT NULL COMMENT '关联商品ID',
  `cell_no` int NOT NULL COMMENT '格口号',
  `pin_no` int NOT NULL COMMENT '针脚序号',
  `stock` int NOT NULL DEFAULT '0' COMMENT '库存数量',
  `cell_price` decimal(15,2) NOT NULL DEFAULT '0.00' COMMENT '格口租用价格',
  `is_rented` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否已租用：0-未租用，1-已租用',
  `cell_type` tinyint NOT NULL DEFAULT '1' COMMENT '格口类型（1小格 2中格 3大格 4超大格）',
  `usage_status` tinyint NOT NULL DEFAULT '1' COMMENT '使用状态（1空闲 2已占用）',
  `available_status` tinyint NOT NULL DEFAULT '1' COMMENT '可用状态（1正常 2故障）',
  `creator_id` bigint NOT NULL DEFAULT '0' COMMENT '创建者ID',
  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `updater_id` bigint NOT NULL DEFAULT '0' COMMENT '更新者ID',
  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `deleted` tinyint(1) NOT NULL DEFAULT '0' COMMENT '删除标志（0存在 1删除）',
  PRIMARY KEY (`cell_id`),
  KEY `idx_cabinet` (`cabinet_id`),
  KEY `idx_usage_status` (`usage_status`),
  KEY `idx_available_status` (`available_status`),
  KEY `idx_goods` (`goods_id`),
  CONSTRAINT `fk_cell_cabinet` FOREIGN KEY (`cabinet_id`) REFERENCES `smart_cabinet` (`cabinet_id`),
  CONSTRAINT `fk_cell_goods` FOREIGN KEY (`goods_id`) REFERENCES `shop_goods` (`goods_id`)
) ENGINE=InnoDB AUTO_INCREMENT=1268 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='柜机格口信息表';

CREATE TABLE `smart_cabinet` (
  `cabinet_id` bigint NOT NULL AUTO_INCREMENT COMMENT '柜机唯一ID',
  `cabinet_name` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '柜机名称',
  `cabinet_type` tinyint NOT NULL DEFAULT '0' COMMENT '柜机类型（0主柜 1副柜）',
  `main_cabinet` bigint DEFAULT NULL COMMENT '归属主柜ID',
  `balance_enable` tinyint NOT NULL DEFAULT '1' COMMENT '借呗支付（1-正常使用 0-禁止使用）',
  `mode` tinyint NOT NULL DEFAULT '0' COMMENT '运行模式（0-支付模式 1-审批模式 2-借还模式 3-会员模式）',
  `belong_type` tinyint NOT NULL DEFAULT '0' COMMENT '归属类型（0-借还柜 1-固资通）',
  `shop_id` bigint DEFAULT NULL COMMENT '归属商店ID',
  `mqtt_server_id` bigint DEFAULT NULL COMMENT 'MQTT服务ID',
  `template_no` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '柜机模版编号',
  `lock_control_no` int NOT NULL COMMENT '锁控板序号',
  `location` int NOT NULL COMMENT '柜机位置',
  `creator_id` bigint NOT NULL DEFAULT '0' COMMENT '创建者ID',
  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `updater_id` bigint NOT NULL DEFAULT '0' COMMENT '更新者ID',
  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `deleted` tinyint(1) NOT NULL DEFAULT '0' COMMENT '删除标志（0存在 1删除）',
  `return_deadline` int NOT NULL DEFAULT '0' COMMENT '归还期限（天），0表示不限制',
  `corpid` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '企业微信id',
  PRIMARY KEY (`cabinet_id`),
  KEY `idx_template_no` (`template_no`),
  KEY `idx_location` (`location`)
) ENGINE=InnoDB AUTO_INCREMENT=36 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='智能柜信息表';