80 lines
4.0 KiB
MySQL
80 lines
4.0 KiB
MySQL
|
|
-- 资源直购虚拟支付改造
|
|||
|
|
-- 执行前请先备份数据库。适用于当前项目的 MySQL 数据库。
|
|||
|
|
|
|||
|
|
ALTER TABLE app_resource
|
|||
|
|
ADD COLUMN price_fen INT NOT NULL DEFAULT 0 COMMENT '虚拟支付价格,单位分' AFTER ad_number;
|
|||
|
|
|
|||
|
|
-- 兼容已有“is_ad=3 且 ad_number 表示人民币元”的资源。
|
|||
|
|
UPDATE app_resource
|
|||
|
|
SET price_fen = ad_number * 100
|
|||
|
|
WHERE is_ad = 3 AND price_fen = 0 AND ad_number > 0;
|
|||
|
|
|
|||
|
|
CREATE TABLE app_virtual_product (
|
|||
|
|
id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键',
|
|||
|
|
product_id VARCHAR(64) NOT NULL COMMENT '微信虚拟道具productId',
|
|||
|
|
price_fen INT NOT NULL COMMENT '价格档位,单位分',
|
|||
|
|
product_name VARCHAR(100) NOT NULL COMMENT '档位名称',
|
|||
|
|
status TINYINT NOT NULL DEFAULT 1 COMMENT '1启用 0停用',
|
|||
|
|
create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|||
|
|
update_time DATETIME NULL,
|
|||
|
|
PRIMARY KEY (id),
|
|||
|
|
UNIQUE KEY uk_virtual_product_id (product_id),
|
|||
|
|
UNIQUE KEY uk_virtual_product_price (price_fen)
|
|||
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='微信虚拟道具价格档位';
|
|||
|
|
|
|||
|
|
CREATE TABLE app_virtual_order (
|
|||
|
|
id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键',
|
|||
|
|
order_no VARCHAR(32) NOT NULL COMMENT '业务订单号',
|
|||
|
|
user_id BIGINT NOT NULL COMMENT '用户ID',
|
|||
|
|
resource_id BIGINT NOT NULL COMMENT '资源ID',
|
|||
|
|
product_id VARCHAR(64) NOT NULL COMMENT '微信虚拟道具ID',
|
|||
|
|
price_fen INT NOT NULL COMMENT '支付金额,单位分',
|
|||
|
|
open_id VARCHAR(64) NOT NULL COMMENT '微信OpenID',
|
|||
|
|
status TINYINT NOT NULL DEFAULT 0 COMMENT '0待支付 1已支付发货 2已退款 3已关闭',
|
|||
|
|
wx_order_no VARCHAR(64) NULL COMMENT '微信内部订单号',
|
|||
|
|
transaction_id VARCHAR(64) NULL COMMENT '微信支付交易单号',
|
|||
|
|
create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|||
|
|
pay_time DATETIME NULL,
|
|||
|
|
provide_time DATETIME NULL,
|
|||
|
|
refund_time DATETIME NULL,
|
|||
|
|
last_query_time DATETIME NULL,
|
|||
|
|
PRIMARY KEY (id),
|
|||
|
|
UNIQUE KEY uk_virtual_order_no (order_no),
|
|||
|
|
KEY idx_virtual_order_user (user_id, create_time),
|
|||
|
|
KEY idx_virtual_order_resource (resource_id)
|
|||
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='资源虚拟支付订单';
|
|||
|
|
|
|||
|
|
CREATE TABLE app_resource_entitlement (
|
|||
|
|
id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键',
|
|||
|
|
user_id BIGINT NOT NULL COMMENT '用户ID',
|
|||
|
|
resource_id BIGINT NOT NULL COMMENT '资源ID',
|
|||
|
|
order_no VARCHAR(32) NOT NULL COMMENT '来源虚拟支付订单号',
|
|||
|
|
status TINYINT NOT NULL DEFAULT 1 COMMENT '1有效 0已撤销',
|
|||
|
|
granted_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|||
|
|
revoked_time DATETIME NULL,
|
|||
|
|
PRIMARY KEY (id),
|
|||
|
|
UNIQUE KEY uk_resource_entitlement_order (order_no),
|
|||
|
|
UNIQUE KEY uk_resource_entitlement_user_resource (user_id, resource_id),
|
|||
|
|
KEY idx_resource_entitlement_resource (resource_id)
|
|||
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='付费资源访问权益';
|
|||
|
|
|
|||
|
|
-- 执行迁移后:
|
|||
|
|
-- 1. 在微信公众平台创建各价格档位的道具并发布;
|
|||
|
|
-- 2. 在若依后台编辑付费资源,填写“价格(分)”和对应的 productId;
|
|||
|
|
-- 3. 同一价格填写同一个 productId,后台会自动维护 app_virtual_product 映射。
|
|||
|
|
|
|||
|
|
-- 当前小程序已发布的微信虚拟道具价格映射。
|
|||
|
|
-- product_id 必须与微信后台保持完全一致(包括 resourse 的现有拼写)。
|
|||
|
|
INSERT INTO app_virtual_product
|
|||
|
|
(product_id, price_fen, product_name, status, create_time)
|
|||
|
|
VALUES
|
|||
|
|
('resourse_1', 100, '1元资源', 1, NOW()),
|
|||
|
|
('resourse_10', 1000, '10元资源', 1, NOW()),
|
|||
|
|
('resourse_50', 5000, '50元资源', 1, NOW()),
|
|||
|
|
('resourse_99', 9900, '99元资源', 1, NOW()),
|
|||
|
|
('resourse_300', 30000, '300元资源', 1, NOW())
|
|||
|
|
ON DUPLICATE KEY UPDATE
|
|||
|
|
product_name = VALUES(product_name),
|
|||
|
|
status = 1,
|
|||
|
|
update_time = NOW();
|