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地址.
 

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值