1. 模糊搜索商品功能
-
前端實現:
-
通過解析URL參數(如
search=聯想
)獲取搜索關鍵字,發送AJAX GET請求到后端接口/product/searchGoodsMessage
。 -
動態渲染搜索結果:若結果非空,循環遍歷返回的商品數據,生成商品卡片(包含圖片、價格、標題),并綁定收藏和購物車功能按鈕;若結果為空,顯示“無商品信息”。
-
使用
replace()
方法動態替換模板中的占位符(如#{id}
、#{price}
)。
-
-
后端實現:
-
控制器接收關鍵字
info
,調用服務層執行模糊查詢。 -
SQL邏輯:
SELECT * FROM t_product WHERE title LIKE '%#{info}%' AND status=1 ORDER BY priority DESC LIMIT 0,12
,限制返回前12條數據。 -
返回JSON格式的商品列表數據。
-
2. 添加收藏功能
-
前端實現:
-
點擊“加入收藏”按鈕觸發
addFavoriteUse(pid)
函數,彈出確認框后發送AJAX請求到/favorite/addFavoriteUse
。 -
成功回調后更新按鈕狀態(如圖標變為“取消收藏”)。
-
-
后端實現:
-
控制器從會話中獲取用戶ID和用戶名,調用服務層插入收藏記錄。
-
服務層邏輯:
-
根據商品ID查詢商品詳情(
Product
表)。 -
將商品信息(標題、價格、圖片)與用戶ID一起存入收藏表
t_favorites
。
-
-
SQL邏輯:
INSERT INTO t_favorites
插入完整收藏記錄,返回生成的自增收藏ID(fid
)。
-
3. 添加購物車功能
-
前端實現:
-
點擊“加入購物車”按鈕觸發
addProToCart(id, price)
,發送POST請求到/cart/addProToCart
,參數包含商品ID、價格和數量(默認1)。 -
根據后端返回狀態碼彈出成功或失敗提示。
-
-
后端實現:
-
核心邏輯:
-
檢查當前用戶的購物車中是否已存在該商品。
-
若存在,更新商品數量(
num = num + 1
);若不存在,新增購物車記錄。
-
-
SQL邏輯:
-
查詢:
SELECT * FROM t_cart WHERE pid=#{pid} AND uid=#{uid}
。 -
插入:
INSERT INTO t_cart
記錄商品、用戶、數量、價格等信息。 -
更新:
UPDATE t_cart SET num=#{num}
。
-
-
4. 商品詳情展示
-
前端實現:
-
從URL參數中提取商品ID(
pid
),請求接口/product/getProDetail
獲取詳情數據。 -
動態渲染商品標題、價格、庫存,并加載多張商品圖片(如
1_big.png
、1.jpg
)。
-
-
后端實現:
-
SQL邏輯:
SELECT * FROM t_product WHERE id=#{pid}
,直接返回商品完整信息。
-
5. 購物車展示
-
前端實現:
-
請求接口
/cart/showCartInfo
獲取當前用戶的購物車列表數據。 -
動態生成表格,展示商品圖片、標題、單價、數量(支持增減操作)、小計和刪除按鈕。
-
使用模板替換占位符(如
#{cid}
、#{image}
)填充數據。
-
-
后端實現:
-
SQL邏輯:聯表查詢
t_cart
和t_product
,返回視圖對象CartVo
,包含購物車ID、商品信息、數量、小計等字段。 -
查詢語句:
SELECT c.cid, c.pid, c.uid, c.num, p.price, p.image, p.title FROM t_cart c LEFT JOIN t_product p ON c.pid = p.id WHERE c.uid=#{uid} ORDER BY c.modified_time DESC;
-
6. 關鍵技術點
-
前后端交互:
-
使用AJAX異步請求,數據格式為JSON,通過RESTful風格接口通信。
-
-
數據庫操作:
-
MyBatis實現SQL映射,動態拼接查詢條件(如模糊搜索
LIKE
)。 -
聯表查詢優化數據展示(如購物車關聯商品表)。
-
-
功能擴展性:
-
分頁邏輯(
LIMIT 0,12
)支持后續擴展更多商品加載。 -
收藏和購物車通過用戶會話(
HttpSession
)隔離不同用戶數據。
-