技术知识小课堂-促销架构详细说明

后台-系统设置-扩展变量-手机广告位-内容正文顶部

促销架构文档

1需求说明

2架构思路

2.1数据存储

2.1.1数据库设计

  核心表:

  1)es_promotion_goods(有效活动商品对照表)

  设计思路:

  此表中存储每一个活动与一个或多个商品的对照关系,活动的开始时间和结束时间是为了方便查询一个商品参与了哪些活动。活动id和活动类型之间是有关系的,当添加一个A团购活动时(可以是任意商城中的任意活动,此处仅是举例),此《活动商品对照表》的活动id为A团购活动的id,并且活动类型为PromotionTypeEnum枚举中团购活动代表的数值。

  2)es_promotion_tool(促销工具表)

  设计思路:

  1.此表存储的是所有的促销工具。

  2.权重字段:代表这个活动处理价格时的优先级,和是否可重叠字段相辅相成。1为最高,2次之,以此类推,此字段可以重复,例:同一时间内,A活动权重为1,B活动权重也为1,X商品只能参与其中一个,另一个则不能参加。

  3.是否可重叠字段:代表这个活动是否可以与其他活动重叠使用。

  4.为PromotionTypeEnum枚举中活动代表的数值。

3)各个活动表设计

  1、积分换购表

  2、团购活动表

  3、第二件半价

  4、单品立减

  5、满优惠活动

2.1.2cache存储设计

  缓存key的存储说明:由店铺id+活动代表的beanid+活动id组成,例:store_{store_id}_{groupbuyPlugin}_{activity_id},其中{}内的值需要替换包含{}。其中的groupbuyPlugin从PromotionTypeEnum枚举中读取。

  缓存的value值存储说明:存储对应活动的Vo。

2.2促销核心算法架构

  核心图

  思路说明:

  从调用价格计算接口开始:

  1、遍历购物车数据(List)

  2、进入不可重叠活动价格计算(传入cart)

  读取不可重叠的活动集合

  遍历cart中的商品列表

  遍历不可重叠的活动集合

  通过活动的活动类型字段,读取PromotionTypeEnum中对应的活动pluginID

  通过SpringContextHolder.getBean(pluginID)进入对应的插件价格处理类中。

  i.从redis缓存中读取对应的活动信息

  ii.处理商品价格,并保存回去

  3、进入可重叠的活动价格计算(传入cart)

  读取可重叠的活动集合

  遍历cart中的商品列表

  遍历可重叠的活动集合

  以下步骤同上

  4、计算交易价格,并存储到redis中。

2.3活动的维护

2.3.1团购活动(以团购活动举例)

  添加团购活动流程图

  设计思路:

  1、调用团购活动的添加接口。

  2、进入service层。

  3、先要调用活动管理表,去检测将要添加的活动商品,是否可以与其他活动重叠使用。

  a\)若不能,则直接返回给客户,不能添加此商品。

  b\)若可以,则继续向下。

  4、添加促销活动基础表(es_activity)。

  5、添加团购活动表(es_groupbuy)。

  6、添加活动商品对照表(es_promotion_goods)。

  7、填充团购活动Vo。

  8、获取团购的缓存key(PromotionServiceConstant)。

  9、把团购活动Vo,写入reids中。

2.4活动的读取

2.4.1读取单一商品参与的活动

  根据goods_id读取es_promotion_goods表。查出这个商品参与的活动id和活动名称。

2.4.2读取单一活动的详细信息

  根据2.1.2的key读取redis存储的数据中对应活动详细信息。

2.5失效活动商品转移

  es_promotion_goods_backend(失效活动商品对照表,与es_promotion_goods表结构相同)

  设计此表的目的:在定时任务中调用,当es_promotion_goods中的活动已经失效后,将es_promotion_goods数据转移到es_promotion_goods_backend中,并把es_promotion_goods失效的数据删除。

2.6包结构说明

  促销包结构:com.enation.app.shop.promotion

  促销工具包结构:com.enation.app.shop.promotion.tool

  团购促销工具包结构:com.enation.app.shop.promotion.groupbuy

  单品立减促销工具包结构:com.enation.app.shop.promotion.minus

  第二件半价促销工具包结构:com.enation.app.shop.promotion.halfprice

  积分换购促销工具包结构:com.enation.app.shop.promotion.exchange

  满优惠促销工具包结构:com.enation.app.shop.promotion.fulldiscount

  根据以上内容可以了解到促销架构的详细内容,想了解更多详情,可以持续关注易族智汇javashop

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

后台-系统设置-扩展变量-手机广告位-内容正文底部
留言与评论(共有 0 条评论)
   
验证码: