litemall商城源碼分析v0.1

第一節 參考
https://linlinjava.gitbook.io/litemall/
https://github.com/linlinjava/litemall
輕商場-web前端(前端litemall-vue,後端litemall-wx-api):
http://122.51.199.160:8080/vue/index.html#/
管理後臺(前端litemall-admin,後端litemall-admin-api):
http://122.51.199.160:8080/#/dashboard

第二節 架構

第三節 管理後臺後端 litemall-admin-api

第四節 小程序後端 litemall-wx-api

一.首頁-精選
首頁精選信息,請求地址/wx/home/index,後臺處理接口web.WxHomeController#index().
1.先從緩存獲取首頁信息,如果獲取到,直接返回首頁信息.緩存是在HomeCacheManager#cacheDataList的Hashmap中存儲.key是"index"字串.
2.創建線程池,每個線程分別執行查詢banner位信息,品牌商直供信息,渠道信息(商品分類),優惠券信息,新品首發,人氣推薦商品,專題帖子信息,類目信息等.
3.廣告位banner信息,調用litemall-db工程的LitemallAdService#queryIndex()方法.這是dao層,查詢litemall_ad表中position是1的記錄.直接返回表的domain對象給前端.沒有建vo對象.
4.渠道類目信息,調用LitemallCategoryService#queryChannel()接口,查詢litemall_category表中level是L1的類目記錄.
5.優惠券信息,調用LitemallCouponService#queryAvailableList()接口,查詢在litemall_coupon表中,但不在litemall_coupon_user表中存在已經領取記錄的優惠券.
6.團購商品信息,調用WxGrouponRuleService#queryList().
(1).先查詢litemall_groupon_rules表中所有的可以團購的商品信息.
(2).遍歷每一個商品,查詢litemall_goods表中的商品信息.
(3).創建vo.GrouponRuleVo對象,包含商品編號,名稱,簡介,優惠金額,優惠條件的人數等信息返回前端.
7.品牌商直供信息,商品條數存儲在litemall-core工程的SystemConfig#SYSTEM_CONFIGS的map中,管理後臺更新配置時會修改這個map的值.進入LitemallBrandService#query()方法.查詢litemall_brand表中品牌商列表.
8.新品首發.調用接口LitemallGoodsService#queryByNew().查詢litemall_goods表中is_new是true,is_on_sale是否上架爲true的商品信息.
9.人氣推薦.調用接口LitemallGoodsService#queryByHot(),查詢litemall_goods表中,is_hot是true,is_on_sale是否上架爲true的商品信息.
10.專題帖子信息.調用接口LitemallTopicService#queryList(),查詢litemall_topic表中記錄.
11.落地商品列表,調用接口WxHomeController#getCategoryList().
(1).調用LitemallCategoryService#queryL1WithoutRecommend()查詢litemall_category表中的類目列表.
(2).遍歷類目列表,根據pid字段查詢某一類目的所有二級類目
(3).調用LitemallGoodsService#queryByCategory()查詢category_id是二級類目id和is_on_sale爲true的商品列表.返回一級類目的id,名稱,對應二級類目下的所有商品列表.

二.首頁-分類頁
首頁的分類頁,請求後臺地址/wx/catalog/index.後臺處理接口爲web.WxCatalogController#index().
1.調用LitemallCategoryService#queryL1()接口查詢表litemall_category中是Level是"L1"的一級類目.獲取一級類目id對應的二級類目列表,默認一級類目取表中第一條記錄.返回一級,二級,當前一級類目信息.返回LitemallCategory的domain對象.

三.二級類目頁
(一).請求後臺地址/wx/goods/category?id=xxx.xxx爲litemall_category表的二級類目的id號.後臺處理接口爲WxGoodsController#category().先查詢litemall_category表中對應id的二級類目記錄,再通過pid查詢它的所有子類目,父類目.
(二).獲取二級類目的產品列表,請求地址/wx/goods/list?categoryId=xxx.後臺處理接口爲WxGoodsController#list().
1.查詢如果帶關鍵詞,把關鍵詞加到litemall_search_history表中.
2.根據查詢條件,比如二級類目的id,調用LitemallGoodsService#querySelective()查詢litemall_goods表中的記錄,如果有關鍵詞,查詢name或者keywords列中有對應關鍵詞的商品列表.
3.根據查詢條件,調用LitemallGoodsService#getCatIds()查詢符合條件的litemall_goods記錄,取出所有的類目的category_id.根據類目id列表查詢litemall_category表的記錄,加入返回前端的列表中.

四.商品頁面
(一).獲取商品詳情,請求地址/wx/goods/detail?id=xxx,後臺處理地址爲WxGoodsController#detail().
1.調用LitemallGoodsService#findById()根據商品id查詢商品基本信息,比如圖片url,名稱,簡介等.
2.創建線程池查詢商品屬性,商品規格,商品問題,商品品牌商,商品評論,商品的團購信息,用戶是否收藏,記錄用戶的足跡(用戶的id,商品id)等信息.
3.查詢商品屬性,查詢litemall_goods_attribute表,比如尺寸,重量,面料等.
4.查詢商品規格,調用LitemallGoodsSpecificationService#getSpecificationVoList(),查詢litemall_goods_specification表,比如顏色,規格尺寸,一個商品對應多個規格,每種規格對應多條記錄值,KV格式,上級包含下級的list.
5.查詢每種規格商品的數量,調用LitemallGoodsProductService#queryByGid(),查詢litemall_goods_product表,每種規格以json形式存儲在specifications列中.
6.調用LitemallIssueService#querySelective()查詢一些商品的通用問題,主要是查詢litemall_issue表.
7.根據商品的品牌id,查詢litemall_brand表中的品牌信息.
8.查詢商品評論.根據商品id,查詢litemall_comment表中type是0的商品評論,type爲1的事專題帖子評論.
9.根據商品id,查詢某個商品的團購規則.主要是查詢litemall_groupon_rules表.
10.查詢用戶是否收藏該商品及異步記錄用戶足跡.
(二).獲取購物車中的商品個數,請求地址/wx/cart/goodscount.

五.購物車頁面
(一).購物車信息接口
請求地址/wx/cart/index.後臺處理接口爲WxCartController#index().
1.根據用戶id查詢litemall_cart表中的所有商品列表.如果商品已經下架,從購物車中刪除.litemall_cart表的一條記錄對應一個user_id和goods_id,product_id,每條記錄記錄了商品的數量.
2.遍歷所有購物車的商品,統計購物車的商品總數和總額,已經勾選的總數和總額.
(二).更新購物車內商品勾選狀態
請求地址/wx/cart/checked.調用後臺接口WxCartController#checked().主要是根據product_id列表,更新litemall_cart表的checked列的值.
1.查詢收貨地址,調用LitemallAddressService#findDefault()接口,根據userId查詢litemall_address表的收穫地址.
2.如果是團購商品,根據前端參數團購規則id,獲取團購表litemall_groupon_rules信息.根據用戶id獲取litemall_cart表的購物車商品列表.如果團購表中有該商品信息,減去團購優惠價.
3.根據urserId查詢litemall_coupon_user表中的所有優惠券,每個優惠券有狀態和開始結束時間.調用CouponVerifyService#checkCoupon()接口檢查優惠券是否可以用.主要是根據litemall_coupon優惠券表和litemall_coupon_user用戶發送優惠券表,檢查用戶的優惠券是否過期,優惠券本身是否下架,是否滿足優惠券的最低消費金額.遍歷所有優惠券,找優惠金額最多的券,統計所有優惠券個數.根據用戶不想使用優惠券,自動使用優惠券,用戶選擇優惠券三種情況處理優惠金額.
4.計算運費,如果商品總價大於某個閾值,免運費.
5.計算訂單實際費用,訂單費用= goods_price + freight_price - coupon_price.
實際費用=訂單費用-用戶積分兌換折扣.
從購物車頁面點擊結算時進入這個頁面.主要是根據優惠券信息計算支付價格.請求後臺地址/wx/cart/checkout.進入後臺接口WxCartController#checkout().

六.訂單頁面
(一).提交訂單.請求地址/wx/order/submit.後臺請求接口爲WxOrderController#submit().
(二).代付款訂單頁面.請求地址/wx/order/list?showType=1.後臺處理接口爲WxOrderController#list().
(三).訂單詳情頁面.請求地址/wx/order/detail?orderId=xx.

七.支付頁面
先請求訂單詳情地址/wx/order/detail?orderId=xx,獲取支付金額.
(1).微信支付請求/wx/order/h5pay地址.
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章