diff --git a/docs/dev-ops/mysql/sql/0716paymall.sql b/docs/dev-ops/mysql/sql/0716paymall.sql index 4edc432..85d7701 100644 --- a/docs/dev-ops/mysql/sql/0716paymall.sql +++ b/docs/dev-ops/mysql/sql/0716paymall.sql @@ -11,7 +11,7 @@ Target Server Version : 80042 File Encoding : 65001 - Date: 16/07/2025 13:59:35 + Date: 16/07/2025 17:08:44 */ SET NAMES utf8mb4; @@ -40,13 +40,16 @@ CREATE TABLE `pay_order` ( PRIMARY KEY (`id`) USING BTREE, UNIQUE INDEX `uq_order_id`(`order_id` ASC) USING BTREE, INDEX `idx_user_id_product_id`(`user_id` ASC, `product_id` ASC) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 11 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; +) ENGINE = InnoDB AUTO_INCREMENT = 35 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = DYNAMIC; -- ---------------------------- -- Records of pay_order -- ---------------------------- -INSERT INTO `pay_order` VALUES (31, 'smile01', '9890001', 'MyBatisBook', '376456387082', '2025-07-16 13:47:35', 100.00, 'DEAL_DONE', '
\n', '2025-07-16 13:50:29', 1, 20.00, 80.00, '2025-07-16 13:47:35', '2025-07-16 13:58:39'); -INSERT INTO `pay_order` VALUES (32, 'smile02', '9890001', 'MyBatisBook', '503529040337', '2025-07-16 13:55:51', 100.00, 'DEAL_DONE', '\n', '2025-07-16 13:56:47', 1, 20.00, 80.00, '2025-07-16 13:55:50', '2025-07-16 13:58:39'); -INSERT INTO `pay_order` VALUES (33, 'smile03', '9890001', 'MyBatisBook', '274640446882', '2025-07-16 13:57:47', 100.00, 'DEAL_DONE', '\n', '2025-07-16 13:58:39', 1, 20.00, 80.00, '2025-07-16 13:57:47', '2025-07-16 13:58:40'); +INSERT INTO `pay_order` VALUES (36, 'opEtBvq6go0co-HQC5DSHkKfkdds', '9890001', 'MyBatisBook', '498873906342', '2025-07-16 15:53:11', 100.00, 'DEAL_DONE', '\n', '2025-07-16 15:54:03', 1, 20.00, 80.00, '2025-07-16 15:53:11', '2025-07-16 16:44:47'); +INSERT INTO `pay_order` VALUES (39, 'smile01', '9890001', 'MyBatisBook', '369511405849', '2025-07-16 16:28:58', 100.00, 'PAY_SUCCESS', '\n', '2025-07-16 16:30:33', 1, 20.00, 80.00, '2025-07-16 16:28:57', '2025-07-16 16:30:33'); +INSERT INTO `pay_order` VALUES (40, 'smile01', '9890001', 'MyBatisBook', '698481154046', '2025-07-16 16:34:25', 100.00, 'DEAL_DONE', '\n', '2025-07-16 16:35:36', 0, 0.00, 100.00, '2025-07-16 16:34:24', '2025-07-16 16:35:36'); +INSERT INTO `pay_order` VALUES (41, 'smile02', '9890001', 'MyBatisBook', '541129857040', '2025-07-16 16:36:49', 100.00, 'DEAL_DONE', '\n', '2025-07-16 16:38:05', 1, 20.00, 80.00, '2025-07-16 16:36:49', '2025-07-16 16:44:47'); +INSERT INTO `pay_order` VALUES (42, 'smile04', '9890001', 'MyBatisBook', '381698719384', '2025-07-16 16:43:47', 100.00, 'DEAL_DONE', '\n', '2025-07-16 16:44:47', 1, 20.00, 80.00, '2025-07-16 16:43:46', '2025-07-16 16:44:47'); +INSERT INTO `pay_order` VALUES (45, 'smile04', '9890001', 'MyBatisBook', '380924838419', '2025-07-16 16:54:06', 100.00, 'DEAL_DONE', '\n', '2025-07-16 16:55:14', 0, 0.00, 100.00, '2025-07-16 16:54:05', '2025-07-16 16:55:14'); SET FOREIGN_KEY_CHECKS = 1; diff --git a/docs/dev-ops/nginx/html/css/index.css b/docs/dev-ops/nginx/html/css/index.css new file mode 100644 index 0000000..7ec93be --- /dev/null +++ b/docs/dev-ops/nginx/html/css/index.css @@ -0,0 +1,147 @@ +/* ========== 全局 ========== */ +*{ + margin:0;padding:0;box-sizing:border-box; + font-family:'PingFang SC','Helvetica Neue',Arial,sans-serif; +} +body{ + background:#f5f5f5; + color:#333; + max-width:500px; + margin:0 auto; + position:relative; + padding-bottom:30px; +} + +/* ========== 轮播图 ========== */ +.swiper-container{ + width:100%;height:375px;position:relative;overflow:hidden; +} +.swiper-wrapper{display:flex;transition:transform .3s;} +.swiper-slide{flex:0 0 100%;height:375px;} +.swiper-slide img{width:100%;height:100%;object-fit:contain;background:#fff;} + +.swiper-pagination{ + position:absolute;bottom:10px;left:50%; + transform:translateX(-50%);display:flex;gap:6px; +} +.swiper-dot{ + width:8px;height:8px;border-radius:50%; + background:rgba(255,255,255,.5);transition:all .3s; +} +.swiper-dot.active{background:#ff5000;width:16px;border-radius:4px;} + +/* ========== 商品信息 ========== */ +.product-info{background:#fff;padding:15px;margin-bottom:10px;} +.price-row{display:flex;align-items:center;margin-bottom:12px;} + +.current-price{color:#ff5000;font-size:28px;font-weight:bold;} +.current-price::before{content:"¥";font-size:18px;} + +.original-price{ + color:#999;font-size:16px;text-decoration:line-through;margin-left:8px; +} +.original-price::before{content:"¥";} +.title{font-size:18px;font-weight:bold;line-height:1.4;margin-bottom:10px;} + +/* 促销行 */ +.promo-row{display:flex;align-items:center;gap:6px;margin-top:6px;} +.promo-tag{ + flex-shrink:0; + display:inline-block; + background:linear-gradient(90deg,#ff2c2c,#ff6b22); + color:#fff;font-size:12px;padding:2px 6px;border-radius:2px; +} +.promo-box{ + display:inline-block;font-size:13px;padding:2px 6px; + border-radius:4px;font-weight:600;line-height:1.2;white-space:nowrap; +} +.promo-box.drop, +.promo-box.sold{ + background:linear-gradient(90deg,#ff7e00,#ff5000); + color:#fff; +} + +/* ========== 拼单列表 ========== */ +.group-buying{background:#fff;padding:15px;margin-bottom:10px;position:relative;overflow:hidden;} +.section-title{ + font-size:16px;font-weight:bold;margin-bottom:12px;position:relative;padding-left:10px; +} +.section-title::before{ + content:"";position:absolute;left:0;top:50%;transform:translateY(-50%); + width:3px;height:16px;background:#ff5000;border-radius:2px; +} + +.group-users{height:120px;position:relative;overflow:hidden;} +.user-list{position:absolute;top:0;left:0;width:100%;transition:transform .5s ease;} + +.user-item{ + display:flex;align-items:center;padding:8px 0;border-bottom:1px solid #f5f5f5; +} +.user-item:last-child{border-bottom:none;} + +.user-avatar{ + width:40px;height:40px;border-radius:50%;background:#f5f5f5; + display:flex;align-items:center;justify-content:center;margin-right:10px; + color:#999;font-size:20px; +} + +.user-info{flex:1;} +.user-name{font-size:15px;font-weight:bold;margin-bottom:4px;} +.user-status{font-size:13px;color:#666;} + +.countdown{ + display:inline-block;background:#ff5000;color:#fff; + padding:1px 4px;border-radius:2px;margin-left:5px; +} + +.buy-btn{ + background:linear-gradient(90deg,#ff2c2c,#ff6b22); + color:#fff;border:none;border-radius:4px;padding:6px 15px; + font-size:14px;font-weight:bold;cursor:pointer; +} + +/* ========== 底部操作栏 ========== */ +.action-bar{ + position:fixed;inset-inline:0;bottom:0;max-width:500px;margin:0 auto; + background:#fff;display:flex;height:60px; + box-shadow:0 -2px 10px rgba(0,0,0,.1);z-index:100; +} +.action-btn{ + flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center; + font-size:12px;color:#666; +} +.action-btn i{font-size:20px;margin-bottom:4px;} + +.purchase-btn{flex:2;display:flex;} +.btn-single, +.btn-group{ + flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center; + gap:2px;border:none;cursor:pointer; +} +.btn-single{background:#ff9500;color:#fff;} +.btn-group {background:#ff5000;color:#fff;} + +.btn-price{font-size:18px;font-weight:700;line-height:1;} +.btn-label{font-size:12px;line-height:1;} + +/* ========== 支付弹窗 ========== */ +.payment-overlay{ + position:fixed;inset:0;z-index:9999; + background:rgba(0,0,0,.55);display:flex;align-items:center;justify-content:center; + backdrop-filter:blur(2px); +} +.payment-modal{ + width:300px;max-width:90vw;padding:26px 28px 30px;background:#fff; + border-radius:12px;box-shadow:0 12px 30px rgba(0,0,0,.18); + font-size:14px;line-height:1.45;text-align:center; +} +.payment-modal h3{font-size:18px;margin:0 0 14px;color:#333;} +.payment-modal p{margin:6px 0;color:#555;word-break:break-all;} +.payment-modal .copyable{color:#ff5000;cursor:pointer;text-decoration:underline;} + +.modal-buttons{margin-top:22px;display:flex;gap:12px;} +.modal-buttons button{ + flex:1;padding:8px 0;border-radius:6px;font-size:14px;cursor:pointer;border:none; +} +.confirm-btn{background:#ff5000;color:#fff;} +.cancel-btn{background:#f2f3f5;color:#333;} diff --git a/docs/dev-ops/nginx/html/css/login.css b/docs/dev-ops/nginx/html/css/login.css new file mode 100644 index 0000000..6a08fb1 --- /dev/null +++ b/docs/dev-ops/nginx/html/css/login.css @@ -0,0 +1,94 @@ +/* ==================== Reset & 基础 ==================== */ +* { + box-sizing: border-box; + margin: 0; + padding: 0; +} + +body { + font-family: "Helvetica Neue", Arial, sans-serif; + background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%); + display: flex; + justify-content: center; + align-items: center; + height: 100vh; +} + +/* ==================== 登录卡片 ==================== */ +.login-container { + background-color: #fff; + padding: 40px; + border-radius: 20px; + box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1); + text-align: center; + max-width: 400px; + width: 90%; + transition: all 0.3s ease; +} + +.login-container:hover { + transform: translateY(-5px); + box-shadow: 0 15px 35px rgba(0, 0, 0, 0.15); +} + +.login-container h1 { + margin-bottom: 30px; + color: #333; + font-size: 28px; + font-weight: 600; +} + +/* ==================== Logo ==================== */ +.logo { + width: 80px; + height: 80px; + margin-bottom: 20px; +} + +/* ==================== 二维码 ==================== */ +.qr-code { + margin: 30px 0; + position: relative; +} + +.qr-code img { + width: 200px; + height: 200px; + border-radius: 10px; + transition: all 0.3s ease; +} + +.qr-code::before { + content: ""; + position: absolute; + inset: -5px; + background: linear-gradient(45deg, #12c2e9, #c471ed, #f64f59); + z-index: -1; + filter: blur(20px); + border-radius: 15px; + opacity: 0; + transition: opacity 0.3s ease; +} + +.qr-code:hover::before { + opacity: 1; +} + +/* ==================== 说明文字 ==================== */ +.instructions { + color: #666; + font-size: 16px; + margin-top: 20px; + line-height: 1.5; +} + +/* ==================== 动画 ==================== */ +@keyframes pulse { + 0% { transform: scale(1); } + 50% { transform: scale(1.05); } + 100% { transform: scale(1); } +} + +.pulse { + animation: pulse 2s infinite; +} diff --git a/docs/dev-ops/nginx/html/form.html b/docs/dev-ops/nginx/html/form.html deleted file mode 100644 index 71fe6ea..0000000 --- a/docs/dev-ops/nginx/html/form.html +++ /dev/null @@ -1,5 +0,0 @@ - - \ No newline at end of file diff --git a/docs/dev-ops/nginx/html/images/goods_info1.png b/docs/dev-ops/nginx/html/images/goods_info1.png new file mode 100644 index 0000000..4e80f6a Binary files /dev/null and b/docs/dev-ops/nginx/html/images/goods_info1.png differ diff --git a/docs/dev-ops/nginx/html/images/goods_info2.png b/docs/dev-ops/nginx/html/images/goods_info2.png new file mode 100644 index 0000000..56fe32d Binary files /dev/null and b/docs/dev-ops/nginx/html/images/goods_info2.png differ diff --git a/docs/dev-ops/nginx/html/images/goods_info3.png b/docs/dev-ops/nginx/html/images/goods_info3.png new file mode 100644 index 0000000..57429a9 Binary files /dev/null and b/docs/dev-ops/nginx/html/images/goods_info3.png differ diff --git a/docs/dev-ops/nginx/html/images/keyboard-001.jpg b/docs/dev-ops/nginx/html/images/keyboard-001.jpg deleted file mode 100644 index 7bc43e1..0000000 Binary files a/docs/dev-ops/nginx/html/images/keyboard-001.jpg and /dev/null differ diff --git a/docs/dev-ops/nginx/html/images/logo.png b/docs/dev-ops/nginx/html/images/logo.png new file mode 100644 index 0000000..e556332 Binary files /dev/null and b/docs/dev-ops/nginx/html/images/logo.png differ diff --git a/docs/dev-ops/nginx/html/images/qrcode.png b/docs/dev-ops/nginx/html/images/qrcode.png new file mode 100644 index 0000000..79f2351 Binary files /dev/null and b/docs/dev-ops/nginx/html/images/qrcode.png differ diff --git a/docs/dev-ops/nginx/html/index.html b/docs/dev-ops/nginx/html/index.html index d941634..4413608 100644 --- a/docs/dev-ops/nginx/html/index.html +++ b/docs/dev-ops/nginx/html/index.html @@ -1,123 +1,92 @@ - + - - -价格:¥1.68
+ + + + + + + +请使用微信扫描二维码登录
+ +
+ 请使用微信扫描二维码登录
+ 扫码后自动登录商城
+