千家万户大平台商城模块
简介:该商城除了基础的购物功能外,还有会员机制、分享得佣金、个人或者商家入驻开店、优惠券、团购。会员分为普通会员、黄金会员、白金会员和黑金会员(等级逐渐升高),会员升级方式个人或者团队消费累计一定金额后升级为永久会员,会员特权有商品优惠,专属头像,专属实体卡片;分享后其他用户通过该链接下单的则分享的用户获得下单金额的5%的佣金;个人或者商家入驻则需要上传身份证、营业执照和店铺名称等;优惠券分为满减券和折扣券,有平台发放和店铺发放可,平台和店铺的优惠券可以叠加,且可以和会员机制的优惠一起;团购和拼多多的拼团机制不同,每个人可以选择加入团队或者创建团队,团队的成员的消费金额将会计入团队的消费金额中,团队的消费达到一定金额后团队的每个成员都会有一定的优惠。
1) 商城首页
默认显示综合(价格低销量高)的商品列表,用户也可以选择按价格升序和降序,按销量升序和降序,新品来展示不同的商品列表。
由于考虑到首页并发较大,利用redis做缓存,首页数据两个小时后过期。访问首页时先访问redis,如果没有则访问数据库,同时将数据同步到redis中。
2) 商城首页轮播图后台
轮播图有两种,有关联广告和未关联广告。
实现功能有:
1. 查询单张轮播图。
2. 删除一张轮播图:若该轮播图有关联广告则修改为未展示(解除关联),若该轮播图没有关联广告则伪删除,涉及到多表操作,轮播图表和广告表,解除关联时候要先引入回滚点Object savePoint,然后设置事务保存点savePoint = TransactionAspectSupport.currentTransactionStatus().createSavepoint(),删除操作和修改操作都成功时候才返回true,否则抛出异常;
3. 批量删除轮播图:如果批量删除部分失败,则删除成功的不回滚,删除失败的回滚,并且将失败的展示给前端;因为删除一张如果轮播图有关联广告则需要考虑到回滚的问题,批量删除则需要循环调用删除单张轮播图的方法外,还需要将这个方法用try{}catch包裹,捕获到异常后手动回滚TransactionAspectSupport.currentTransactionStatus.rollbackToSavepoint(savePoint)。
4. 插入一条轮播图:涉及多表操作加事务注解。
5. 查询轮播图分页。
6. 修改轮播图上下架状态。
7. 修改轮播图:首先判断修改后的将要关联的广告是否已被展示(已被关联),如果有关联广告则再判断该广告是否已被展示广告和轮播图和一对一关系,若该广告已被展示则需重新选择;然后是修改后的广告id和修改修改前的广告id比较(修改广告的展示状态)。一、如果之前轮播图广告id不为空,现在的广告id也不为空,则修改之前广告的展示状态为未展示现在关联的广告未已展示(换关联)。二、如果提交的修改参数中的广告id不存在,并且修改前的banner有关联的广告则解除当前banner关联的广告(解关联)。三、如果提交的参数中有广告id,并且之前的banner中没有关联的广告, 则需要修改新广告的展示状态(建立关联)。涉及到事务操作加事务注解。
8. 查询未展示的广告。
9. 修改轮播图的优先级。
3)数据库表结构设计:商品spu表,spu图片表,sku表,sku图片表,banner表,广告表。