• 需求:
  1. 折扣管理:

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

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

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

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

      1. 如何判断某个商品是否已经参加了活动,就是根据商品ID从“商品定制的活动信息”查询,是否记录。
      2. 但删除某个折扣活动时,会提示:“如果该折扣活动已经被其他商品使用,删除后参与该活动的商品将取消活动,是否继续?”,也就是说,当删除了某个折扣活动,将会从“商品定制的活动信息”中删除该活动下的所有记录。
    2. 如果没有参加活动,那么商品将不会显示活动信息,没有折扣、折扣价信息。
  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
      GOSET QUOTED_IDENTIFIER ON
      GOCREATE 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]GOALTER 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. 订单信息表中,必须添加冗余字段:是否参加折扣活动,活动名称,折扣,折扣后价格

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

折扣活动编辑

折扣活动管理

可参加某活动商品

已参加某活动商品

商城-折扣活动设计方案相关推荐

  1. 【实战场景】商城-折扣活动设计方案

    需求: 折扣管理: 商品支持打折活动,打折活动支持多种形式: 活动折扣要求:大于0,小于10,允许包含一位小树: 一旦折扣活动创建后,不可以修改折扣: 促销管理: 可以按照折扣活动查询对应参与活动的商 ...

  2. 商城拍卖活动设计方案 瞬时并发高可用

    后端源码传送门:https://download.csdn.net/download/sun5769675/87323033 最近参加了公司内部的一个24小时编程比赛,组了个四人的小团队,设计了一个拍 ...

  3. 活动详情页面html代码,折扣活动详情.html

     折扣活动详情 $axure.utils.getTransparentGifPath = function() { return 'resources/images/transparent.gif' ...

  4. 全球仅10%的开发者从不加班;淘宝回应用户账号被禁用 980 年;苹果宣布首次以官方形式参与天猫618折扣活动...

    编辑 | 程佳琳 全球仅 10% 的开发者不用加班:微信首次回应 WeTool 被封事件:苹果宣布首次以官方形式参与天猫 618 折扣活动:马云:买菜等小事未来都会在网上,这是活下去的关键:淘宝回应用 ...

  5. 【华为OD机试真题2023 JAVA】网上商城优惠活动(一)

    华为OD机试真题,2023年度机试题库全覆盖,刷题指南点这里 网上商城优惠活动(一) 时间限制:1s 空间限制:50MB 限定语言:不限 题目描述: [背景] 某网上商城举办优惠活动,发布了满减.打折 ...

  6. 华为OD机试真题Java_2022-2023-题目0188-网上商城优惠活动(一)

    网上商城优惠活动(一) 题目描述 背景 某网上商城举办优惠活动,发布了满减.打折.无门槛3种优惠券,分别为: 每满100元优惠10元,无使用数限制,如100~199元可以使用1张减10元,200~29 ...

  7. B2C自营商城的商品设计方案

    去年我们的美妆社区APP,上线了自有商城.之后经过多次版本迭代,商城系统的模块已经基本健全,值此时间分享一些经验出来,希望可以共同交流. 主要讲讲服务端的架构设计以及商品呈现逻辑.可能对某些PM来说有 ...

  8. 博客 学院 下载 GitChat 论坛 问答 商城 头条 活动 码云 ITeye 写博客

    博客 学院 下载 GitChat 论坛 问答 商城 头条 活动 码云 ITeye 写博客 发Chat 登录注册 常见8种算法总结 转载 2017年03月16日 22:23:43 目录 冒泡排序 鸡尾酒 ...

  9. 【华为OD机试真题】网上商城优惠活动(python版)100%通过率 超详细代码注释 代码解读

    [华为OD机试真题 2022&2023]真题目录 @点这里@ [华为OD机试真题]信号发射和接收 &试读& @点这里@ [华为OD机试真题]租车骑绿道 &试读& ...

最新文章

  1. [Eclispe] NDK内建include路径修改
  2. React - 状态提升
  3. 【转】TFS自动签出解决方案sln或者项目文件csproj的解决办法
  4. java jsp导出pdf文件_JSP页面导出PDF格式文件
  5. 【Python】我的第一个EXE程序
  6. C++ Primer 第五版 第6章 6.1——函数及函数定义及调用习题答案
  7. 解决VScode在保存less文件时,自动生成对应的css文件以及安装Easy less之后,计算式子不显示结果的问题
  8. bootstrap所需的js/css文件本地的jsp页面中的引入
  9. 如何获取InnoDB树的高度
  10. c++中vector的学习
  11. Adobe 全家桶关闭自动更新?技巧来啦!
  12. 3.配置阿里云镜像加速
  13. 适合小白的几个入门级Python ocr识别库
  14. AD转换器输入之前接一个电压跟随器是为什么
  15. VMware Workstation15.5下载安装教程(win10)
  16. 第五次课堂总结——付胤
  17. 小蛋机器人app_阿尔法蛋编程APP
  18. vue项目初始化出现tar ENOENT: no such file or directory错误的解决办法。
  19. 渐进式web应用程序_为什么渐进式Web应用程序很棒,以及如何构建一个
  20. dsf5.0获取嵌入页面的数据

热门文章

  1. lisp 练习取得对象属性
  2. LaTeX 002:d 上带一横(d with stroke、dbar、đ)兼容 XeLaTeX 和 MathJax 的折中办法
  3. erick recommendation:慕容晓晓《爱情买卖》MV欣赏
  4. Problem E. L04-05 计算银行存款余额和利息(单利计算简单问题)
  5. 迪士尼的漫威宇宙第四阶段计划出炉
  6. SpringBoot 报错 Unrecognized field
  7. 怎么在电脑上进行音频以及视频的素材合并
  8. Windows 10 使用小鹤双拼
  9. 智能电表如何采集数据?
  10. 解决计算机被暴风集火(jihuo)后留下的IE,chrome,火狐等所有浏览器主页网址携带有”tn=93453552_hao_pg“后缀的驱动类木马病毒的问题