diff --git a/docs/dev-ops/nginx/html/css/index.css b/docs/dev-ops/nginx/html/css/index.css
index 7ec93be..bcc58fe 100644
--- a/docs/dev-ops/nginx/html/css/index.css
+++ b/docs/dev-ops/nginx/html/css/index.css
@@ -1,20 +1,51 @@
/* ========== 全局 ========== */
*{
- margin:0;padding:0;box-sizing:border-box;
+ 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;
+
+/* 最外层浏览器灰底(最深) */
+html{
+ background:#e5e5e5;
}
-/* ========== 轮播图 ========== */
+/* ========== 版心包裹层(中灰) ========== */
+/* body 中请包一层
… */
+.app-wrapper{
+ max-width:500px;
+ margin:0 auto;
+ background:#f3f4f6; /* ⭐ 中灰,与 html 有层次 */
+ padding:12px 0 60px; /* 顶 12px,底 60px=底栏高 */
+ min-height:100vh;
+ border-radius:12px;
+ box-shadow:0 0 20px rgba(0,0,0,.10);
+ position:relative;
+ overflow-x:hidden;
+}
+
+/* body 仅语义,无视觉 */
+body{ color:#333; }
+
+/* —— 卡片公共阴影 —— */
+.card{
+ background:#fff;
+ border-radius:12px;
+ box-shadow:0 2px 8px rgba(0,0,0,.05);
+ margin:0 16px 12px; /* 左右 16px 灰缝,底 12px 间隔 */
+}
+
+/* ========== 轮播图卡片 ========== */
.swiper-container{
- width:100%;height:375px;position:relative;overflow:hidden;
+ composes: card; /* 写法若不支持 composes 就把下面三行展开 */
+ width:calc(100% - 32px);
+ height:375px;
+ margin:0 16px 12px;
+ border-radius:12px;
+ box-shadow:0 2px 8px rgba(0,0,0,.05);
+ position:relative;
+ overflow:hidden;
}
.swiper-wrapper{display:flex;transition:transform .3s;}
.swiper-slide{flex:0 0 100%;height:375px;}
@@ -22,16 +53,24 @@ body{
.swiper-pagination{
position:absolute;bottom:10px;left:50%;
- transform:translateX(-50%);display:flex;gap:6px;
+ 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;
+ 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;}
+/* ========== 商品信息卡片 ========== */
+.product-info{
+ background:#fff;
+ padding:16px;
+ margin:0 16px 12px;
+ border-radius:12px;
+ box-shadow:0 2px 8px rgba(0,0,0,.05);
+}
.price-row{display:flex;align-items:center;margin-bottom:12px;}
.current-price{color:#ff5000;font-size:28px;font-weight:bold;}
@@ -47,13 +86,11 @@ body{
.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;
+ font-size:13px;padding:2px 6px;border-radius:4px;font-weight:600;white-space:nowrap;
}
.promo-box.drop,
.promo-box.sold{
@@ -61,10 +98,19 @@ body{
color:#fff;
}
-/* ========== 拼单列表 ========== */
-.group-buying{background:#fff;padding:15px;margin-bottom:10px;position:relative;overflow:hidden;}
+/* ========== 拼单区域卡片 ========== */
+.group-buying{
+ background:#fff;
+ padding:16px;
+ margin:0 16px 12px;
+ border-radius:12px;
+ box-shadow:0 2px 8px rgba(0,0,0,.05);
+ position:relative;
+ overflow:hidden;
+}
.section-title{
- font-size:16px;font-weight:bold;margin-bottom:12px;position:relative;padding-left:10px;
+ 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%);
@@ -102,9 +148,15 @@ body{
/* ========== 底部操作栏 ========== */
.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;
+ position:fixed;
+ left:50%;bottom:0;transform:translateX(-50%);
+ width:100%;max-width:500px;
+ background:#fff;
+ display:flex;height:60px;
+ box-shadow:0 -2px 10px rgba(0,0,0,.08);
+ border-top:1px solid #e5e5e5;
+ border-radius:0 0 12px 12px;
+ z-index:100;
}
.action-btn{
flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;
@@ -121,13 +173,14 @@ body{
.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;}
+.btn-price{font-size:18px;font-weight:700;}
+.btn-label{font-size:12px;}
/* ========== 支付弹窗 ========== */
.payment-overlay{
position:fixed;inset:0;z-index:9999;
- background:rgba(0,0,0,.55);display:flex;align-items:center;justify-content:center;
+ background:rgba(0,0,0,.55);
+ display:flex;align-items:center;justify-content:center;
backdrop-filter:blur(2px);
}
.payment-modal{
diff --git a/docs/dev-ops/nginx/html/css/order-list.css b/docs/dev-ops/nginx/html/css/order-list.css
index 24ba58f..8cd604b 100644
--- a/docs/dev-ops/nginx/html/css/order-list.css
+++ b/docs/dev-ops/nginx/html/css/order-list.css
@@ -3,14 +3,24 @@
padding: 0;
box-sizing: border-box;
}
-
-body {
- background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%);
- font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
- padding-bottom: 20px;
- min-height: 100vh;
+/* 让整个浏览器窗口仍是淡灰渐变 */
+html{
+ background: linear-gradient(135deg,#f5f7fa 0%,#c3cfe2 100%);
}
+/* 把主体内容包在白底里 + 居中 + 投影 */
+body{
+ max-width:500px;
+ margin:0 auto;
+ background:#fff; /* 白色版心 */
+ min-height:100vh; /* 满高,sticky/fixed 才能正确定位 */
+ box-shadow:0 0 20px rgba(0,0,0,.08);
+ position:relative; /* 保留你原来的 relative 语义 */
+ padding-bottom:20px; /* 其余样式保持 */
+ font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,sans-serif;
+}
+
+
/* 头部样式 */
.header {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
@@ -46,12 +56,15 @@ body {
border: 1px solid rgba(255,255,255,0.3);
}
+/* 仅修改 hover 这段 */
.back-btn:hover {
background: rgba(255,255,255,0.3);
- transform: translateY(-50%) translateX(-2px);
+ /* transform: translateY(-50%) translateX(-2px); ❌ 这一行会导致上下抖动 */
+ transform: translateX(-2px); /* ✅ 只做水平小位移 */
box-shadow: 0 4px 12px rgba(0,0,0,0.2);
}
+
.header-content h1 {
font-size: 20px;
color: white;
diff --git a/docs/dev-ops/nginx/html/images/goods_info1.png b/docs/dev-ops/nginx/html/images/goods_info1.png
index 4e80f6a..0e2ee04 100644
Binary files a/docs/dev-ops/nginx/html/images/goods_info1.png and b/docs/dev-ops/nginx/html/images/goods_info1.png differ
diff --git a/docs/dev-ops/nginx/html/index.html b/docs/dev-ops/nginx/html/index.html
index b4c61b7..cfd3fbd 100644
--- a/docs/dev-ops/nginx/html/index.html
+++ b/docs/dev-ops/nginx/html/index.html
@@ -11,6 +11,7 @@
+
diff --git a/docs/dev-ops/nginx/html/order-list.html b/docs/dev-ops/nginx/html/order-list.html
index 529465e..e4de0aa 100644
--- a/docs/dev-ops/nginx/html/order-list.html
+++ b/docs/dev-ops/nginx/html/order-list.html
@@ -3,7 +3,7 @@
-
小傅哥 - 拼团项目 - 订单明细
+
Smile - 拼团项目 - 订单明细
diff --git a/group-buying-sys-app/src/main/resources/mybatis/mapper/group_buy_order_list_mapper.xml b/group-buying-sys-app/src/main/resources/mybatis/mapper/group_buy_order_list_mapper.xml
index e63e745..a0b8171 100644
--- a/group-buying-sys-app/src/main/resources/mybatis/mapper/group_buy_order_list_mapper.xml
+++ b/group-buying-sys-app/src/main/resources/mybatis/mapper/group_buy_order_list_mapper.xml
@@ -10,6 +10,7 @@
+
@@ -27,12 +28,12 @@
insert into group_buy_order_list(
user_id, team_id, order_id, activity_id, start_time,
- end_time, goods_id, source, channel, original_price, pay_price,
+ end_time, valid_end_time, goods_id, source, channel, original_price, pay_price,
deduction_price, status, out_trade_no, biz_id, create_time, update_time
)
values(
#{userId}, #{teamId}, #{orderId}, #{activityId}, #{startTime},
- #{endTime}, #{goodsId}, #{source}, #{channel}, #{originalPrice},#{payPrice},
+ #{endTime}, #{validEndTime}, #{goodsId}, #{source}, #{channel}, #{originalPrice},#{payPrice},
#{deductionPrice}, #{status}, #{outTradeNo}, #{bizId}, now(), now()
)
@@ -86,28 +87,20 @@
select out_trade_no from group_buy_order_list where team_id = #{teamId} and status = 1
-