商城-折扣活动设计方案

  • 需求:
  1. 折扣管理:

    1. 商品支持打折活动,打折活动支持多种形式;
    2. 活动折扣要求:大于0,小于10,允许包含一位小树;
    3. 一旦折扣活动创建后,不可以修改折扣;
  2. 促销管理:
    1. 可以按照折扣活动查询对应参与活动的商品,显示对应活动商品的原价,折扣,减价,折扣后;
    2. 允许商家查看可以参加某活动的商品,且一个商品最多允许参加一个活动即使活动已经过期,必须取消已参与的其他活动后,才能参加另外一个活动;
    3. 设置某产品参加某活动时,默认按照该活动的折扣进行计算折扣、减价、折扣后,但也允许用户手动修改某个商品或者批量改变某几个商品的折扣,或者减价。
  • 受影响的业务:

  目前系统中,关于购物添加了该业务还会影响业务地方:

  1. 商品展示信息:当展示商品信息时,需要判定该商品是否参加了活动;

    1. 如果参加了活动,那么就要显示活动信息,同时根据对该产品定制的活动信息改变对应的折扣后价格,折扣信息。
    2. 这里提到“商品定制的活动信息”,它是在促销管理添加某个活动时,生成的一条记录,所有的参加了折扣活动的商品都有一个条这样的信息;

      1. 如何判断某个商品是否已经参加了活动,就是根据商品ID从“商品定制的活动信息”查询,是否记录。
      2. 但删除某个折扣活动时,会提示:“如果该折扣活动已经被其他商品使用,删除后参与该活动的商品将取消活动,是否继续?”,也就是说,当删除了某个折扣活动,将会从“商品定制的活动信息”中删除该活动下的所有记录。
    3. 如果没有参加活动,那么商品将不会显示活动信息,没有折扣、折扣价信息。
  2. 购物车信息:当展示商品信息时,需要判定该商品是否参加了活动;
    1. 如果参加了活动,那么就要显示活动信息,同时根据对该产品定制的活动信息改变对应的折扣后价格,折扣信息。
    2. 如果没有参加活动(只有当该商品参与的活动在活动期间,且已经开启的情况下),那么商品将不会显示活动信息,没有折扣、折扣价信息.
    3. 在某个商品价格小计是,如果有折扣活动(只有当该商品参与的活动在活动期间,且已经开启的情况下)需要按照折扣后价格进行计算;
    4. 在计算总价时,如果有折扣活动()需要按照折扣后价格进行汇总;
  3. 订单信息:
    1. 在生成需要支付总价格时,需要取值为购物车中的总价格--购物车中的总价格是更具商品ID,查询到对应信息()进而综合计算的总价;
    2. 购物车中总价,及订单中的总价,不能靠cookie中的信息,很危险,一定要从数据库中查询计算得到总价。
  4. 订单商品信息:
    1. 订单商品信息中的必须要保存的字段:商品价格,是否参加折扣活动,活动名称,折扣,折扣后价格。为什么要显示这些信息?为了跟踪产品价格,避免别人订单信息无法追踪。
    2. 当然这里“是否参加折扣活动”字段,只有当该商品参与的活动在活动期间,且已经开启的情况下,才标识为true.
    3. 用来冗余:一旦取消了某个折扣活动,但若某个已经参加了该活动且已经包含在订单商品中,在取消活动后,这时就无法知道用户提交时,是否参与过什么活动。
  • 开发
  1. 添加表“活动信息”

    1. 脚本:

      /****** Object:  Table [dbo].[cx_GoodsMarketingCampaignCategory]    Script Date: 05/23/2015 11:17:53 ******/
      SET ANSI_NULLS ON
      GO
      
      SET QUOTED_IDENTIFIER ON
      GO
      
      CREATE TABLE [dbo].[cx_GoodsMarketingCampaignCategory](
          [ID] [int] IDENTITY(1,1) NOT NULL,
          [Title] [nvarchar](64) NOT NULL,
          [Discount] [decimal](9, 1) NOT NULL,
          [IsWipingPoints11] [bit] NOT NULL,
          [IsWipingPoints01] [bit] NOT NULL,
          [BeginDate] [datetime] NOT NULL,
          [EndDate] [datetime] NOT NULL,
          [Enabled] [bit] NOT NULL,
          [SortID] [int] NOT NULL,
          [ModifyDate] [datetime] NOT NULL,
          [CreateDate] [datetime] NOT NULL,
       CONSTRAINT [PK_cx_GoodsMarketingCampaignCategory] PRIMARY KEY CLUSTERED
      (
          [ID] ASC
      )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
      ) ON [PRIMARY]
      
      GO
      
      ALTER TABLE [dbo].[cx_GoodsMarketingCampaignCategory] ADD  CONSTRAINT [DF_cx_GoodsMarketingCampaignCategory_CreateDate]  DEFAULT (getdate()) FOR [CreateDate]
      GO
  2. 添加表“商品定制的活动信息”
    1. 脚本:

       1 SET ANSI_NULLS ON
       2 GO
       3
       4 SET QUOTED_IDENTIFIER ON
       5 GO
       6
       7 CREATE TABLE [dbo].[cx_GoodsMarketingCampaign](
       8     [ID] [int] IDENTITY(1,1) NOT NULL,
       9     [GoodsID] [int] NOT NULL,
      10     [GoodsMarketingCampaignCategoryOID] [int] NOT NULL,
      11     [Discount] [decimal](9, 1) NOT NULL,
      12     [CreateDate] [datetime] NOT NULL,
      13     [ModifyDate] [datetime] NOT NULL,
      14  CONSTRAINT [PK_cx_GoodsMarketingCampaign] PRIMARY KEY CLUSTERED
      15 (
      16     [ID] ASC
      17 )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
      18 ) ON [PRIMARY]
      19
      20 GO
    2. Discount,就是商品参加活动时设置的折扣,为了避免店主修改某个商品的价格后折扣后价格没有发生变化,这里就就没有保存折扣价、折扣价格,当界面显示查看某个参加活动商品折扣,折扣后价格时,动态生成该“折扣后价格”。

       1 Declare @GoodsID Int;
       2 Declare @NowDateTime Datetime;
       3
       4 Set @GoodsID=1;
       5 Set @NowDateTime=GETDATE();
       6
       7 -- 获取参与过活动的产品的原始价格,活动折扣,折扣后价格
       8 Select
       9     T11.SellPrice,
      10     T12.Discount,
      11     (Case When T13.IsWipingPoints01=1 Then Round(T11.SellPrice*T12.Discount,1)
      12         When T13.IsWipingPoints11=1 Then ROUND(T11.SellPrice*T12.Discount,0)
      13     Else Round(T11.SellPrice*T12.Discount,2) End) as RealPrice
      14 From cx_Article as T10
      15     inner join cx_ArticleAttributeValue as T11 on T10.ID=T11.ArticleID
      16     inner join cx_ArticleGoodsMarketingCampaign as T12 on T10.ID=T12.ArticleID
      17     inner join cx_GoodsMarketingCampaignCategory as T13 on T12.GoodsMarketingCampaignCategoryOID=T13.ID
      18 Where T13.[Enabled]=1
      19     and T13.BeginDate<=@NowDateTime and T13.EndDate>@NowDateTime
    3. 怎么判断该商品活动是否有效,需要关联到“活动信息”表:

       1 Declare @GoodsID Int;
       2 Declare @NowDateTime Datetime;
       3
       4 Set @GoodsID=1;
       5 Set @NowDateTime=GETDATE();
       6
       7 -- 判断是否该产品是否参与过有效活动
       8 Select COUNT(T10.ID)
       9 From cx_Article as T10
      10     inner join cx_ArticleGoodsMarketingCampaign as T11 on T10.ID=T11.ArticleID
      11     inner join cx_GoodsMarketingCampaignCategory as T12 on T11.GoodsMarketingCampaignCategoryOID=T12.ID
      12 Where T12.[Enabled]=1
      13     and T12.BeginDate<=@NowDateTime and T12.EndDate>@NowDateTime 
  3. 修改表“订单商品信息”阿萨德
    1. 订单信息表中,必须添加冗余字段:是否参加折扣活动,活动名称,折扣,折扣后价格

  到此,该逻辑已经完整的清晰了。突然感觉到文字的力量很神奇,苦想了,也没有理清的业务,文字写出来后竟然清晰了很多。

时间: 2024-08-28 20:17:11

商城-折扣活动设计方案的相关文章

51CTO学院三周年之大型折扣活动介绍

Hi All: 51CTO学院三周年大型折扣活动将于2016年6月30日0点准时开启,你也许已经有了自己喜欢的老师和想学习的课程,但是碍于价格超出了自己的承受范围一直远远的观察着,内心里一直在挣扎是买还是不买?现在好了, 6月30日 -7月1日全部课程5折起,快去APP里看看自己喜欢的课程是不是已经收藏起来吧,6月30日0点我们不见不散~~~~~ 6月30日0点,课程5折不见不散~~~快去挑选课程收藏起来吧,坐等折扣到来!!! 6月30日0点,课程5折不见不散~~~快去挑选课程收藏起来吧,坐等折

excel scratch编程 word 软件项目编程等课程优惠券折扣活动集

excel scratch编程 word 软件项目编程等课程优惠券折扣活动集,为方便学员查阅,特整理如下.希望课程可以为您加油助力!课程总目录:http://edu.51cto.com/sd/17277 (敬请收藏) 课程明细:(后续会持续增加新的课程,可以将课程地址复制到网页地址栏打开)课程地址: http://edu.51cto.com/sd/9ca0b课程地址: http://edu.51cto.com/sd/46462课程地址: http://edu.51cto.com/sd/42604

商城秒杀活动要点

商城秒杀的特性: 1.定时秒杀.即商品在秒杀时间点之前是不能进行购买下单.业务较简单. 2.秒杀前用户会频繁刷新秒杀页面. 3.秒杀持续时间短.瞬时访问流量高. 4.同一用户/IP禁止秒杀多次. 秒杀系统设计要点: 1.将秒杀系统独立部署,甚至使用独立域名,使其与原有网站完全隔离.主要防止秒杀对现有网站业务造成冲击. 2.页面静态化:将活动页面上的所有可以静态的元素全部静态化,并尽量减少动态元素.通过CDN来抗峰值. 3.禁止重复提交:用户提交之后按钮置灰,禁止重复提交 用户限流:在某一时间段内

浅谈商城活动设计

如题:浅谈商城活动设计 标题改成“浅谈商城活动的数据库设计”可能更加合理. 文章背景 为什么要吐槽,为什么要写这篇文章 本来我在弄大数据搜索,自己玩的不亦说乎,虽然感觉数据库设计不合理,但我可以数据清洗,弄到自己的搜索引擎里,自己随便玩,所以当时感觉在烂的数据库设计和我关系不大,只要我把数据清洗好,弄到自己的引擎里我的搜索正常,准确,问题不大.但忽然有一天老大跑来说ERP对接需要你来lead一下,然后一两个月带着捣乱的产品妹妹,和没有经验开发弟弟搞了ERP的简单对接,然后老大又说咱们商城库存总有

IVW大型在线购物商城源码程序源码 联系QQ:847129860

一.更新记录 1.更新日期:2014-07-10 10:07:29 2.更新内容: (1) 新增支付宝在线支付的相关功能以及修复相关页面的bug等.(支付宝参数配置说明:在WEB项目下的“Old_App_Code”文件夹中找到AlipayConfig.cs文件,这个文件就是支付宝接口的参数配置文件,在使用之前,必须要先配置好,否则会出错.) 1.更新日期:2014-08-11 12:00:00 2.更新内容: (1)完善修复商城的搜索查询以及分页功能.(2)新增完善了顾客浏览记录商品显示功能和相

年末促销 Windows Azure在线充值送微软商城硬件大礼包

好礼知时节 充值即奉送即日起至2015年1月11日充值1000元以上即享好礼5大服务已降价,降幅最高达57%,保障更低使用成本.您可以查阅WindowsAzure 官网活动页面,即刻参与活动:http://www.windowsazure.cn/pricing/pia. 年末促销 Windows Azure在线充值送微软商城硬件大礼包 目标用户: 所有Azure在线直付用户 活动时间: 2014年12月12日 至2015年1月11日 促销内容: 成为Azure直线支付用户, 账号充值金额达到以下

在商城系统中使用设计模式----策略模式

1.概念: 在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改.这种类型的设计模式属于行为型模式. 在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象.策略对象改变 context 对象的执行算法. 2.注意: 主要解决:在有多种算法相似的情况下,使用 if...else 所带来的复杂和难以维护. 何时使用:一个系统有许多许多类,而区分它们的只是他们直接的行为. 注意事项:如果一个系统的策略多于四个,就需要考虑使用

运营活动总结

一 征集式活动 特点: 1)易在玩家之剑形成讨论点和话题,可在网站和论坛一定时间内聚集人气 2)玩家的截图和征文可作为软文素材,可提供一定的宣传点 3)了解玩家的游戏建议和想法,可作为游戏运营和修改的参考 缺点: 需要专门人员对征集的信息进行分类整理,审核周期较长 二 注册式活动 特点: 1)短时间内吸引大量玩家注册帐号,利于游戏人数提升 2)可为市场提供宣传点,增加媒体曝光量 缺点: 实体奖比虚拟奖对新玩家更具有吸引力,但也容易造成活动结束后人气和在线人数的急剧滑落,还容易造成大量小号生成对数

JavaWeb网上商城课程设计的反思

不知道从什么时候起,我爱上了写博客,对之前学得的只是进行反思.写了几天课程设计,代码量量8.9千左右. 然后下面文字是我在博客上复制过来的,说得很详细 MVC(Model View Controller)设计模式在JavaFX中有着比Swing更好的表现方式.它使得程序界面设计和程序逻辑设计完全分开,便于代码的可读性和以后的可维护性. JavaEE体系架构采用传统的MVC设计模式,分为Model.View.Controller三层,其中:Model即模型层,定义数据模型和业务逻辑.为了将数据访问