• 需求:
  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
      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 ON2 GO3 4 SET QUOTED_IDENTIFIER ON5 GO6 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. 全球仅10%的开发者从不加班;淘宝回应用户账号被禁用 980 年;苹果宣布首次以官方形式参与天猫618折扣活动...

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

  4. 小米商城html代码_微服务架构实战:商城的用户登录与账户切换设计、订单查询设计...

    商城的用户登录与账号切换设计 在移动商城的设计中,除商品和分类查询是完全开放权限的页面外,其他涉及个人隐私的个人信息.订单查询和购物车等都必须进行权限管理. 有关用户权限管理的功能,在这里根据移动设备 ...

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

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

  6. 实战:网店活动付邮试用全攻略

    实战:网店活动付邮试用全攻略 淘宝开店,有些店长有自己的工厂一手货源,苦于怎么能够快速的积累人气,如果想要用优质宝贝打开市场,那么淘宝的付邮试用,是不能错过的活动,下面,如何开网店的小编给大家说说付邮 ...

  7. 09-Flutter移动电商实战-移动商城数据请求实战

    09-Flutter移动电商实战-移动商城数据请求实战 1.URL接口管理文件建立 第一步需要在建立一个URL的管理文件,因为课程的接口会一直进行变化,所以单独拿出来会非常方便变化接口.当然工作中的U ...

  8. Vue3+Vant+Vue-cli+Restful api实战—图书商城移动端

    Vue3+Vant+Vue-cli+Restful api实战-图书商城移动端 经过将近一个月的努力,项目终于做完了,编写的时候在代码中写了很多注释,方便自己后期查看,有问题的小伙伴可以找我帮忙解决! ...

  9. 【系】微信小程序云开发实战坚果商城-云开发开篇

    第 3-2 课:云开发开篇 目录 开篇 [系]微信小程序云开发实战坚果商城-开篇 基础篇 [系]微信小程序云开发实战坚果商城-弹性盒子 [系]微信小程序云开发实战坚果商城-ES6 简单入门 [系]微信 ...

最新文章

  1. java获取apk启动activity_[RK3399] android7.1 设置开机启动apk
  2. 在QTP中申明XPath
  3. 常用jar包之commons-beanutils使用
  4. oracle的cursor的介绍
  5. 简单谈谈linux的文件权限问题
  6. c语言输入字符串的格式不正确的是,关于c#:输入字符串的格式不正确
  7. (十一)进阶算法之“搜索排序”
  8. PHP快速导入,php快速导入大量数据的实例方法
  9. MAC 下配置JavaEE开发环境
  10. 结果集 tostring_关于避免对toString()结果进行解析或基于逻辑的美德
  11. oracle fiscal year,Version 0 is not defined for fiscal year 2007.
  12. Linux 重启网卡
  13. sysadmin默认密码_从sysadmin过渡到DevOps工程师的案例
  14. 2021-2025年中国抽屉加热器行业市场供需与战略研究报告
  15. c#的内存管理(托管及未托管对象管理)
  16. 学生管理系统(源码)(C语言版)
  17. java版本的在线OJ项目
  18. 车载主机企业对Android平台趋之若骛
  19. 中国省市县信息JS文件(省--市--县)
  20. python处理excel数值为文本_使用Python中的xlrd将数字Excel数据读取为文本

热门文章

  1. Unity中的进度条(内含计数器)
  2. 2023年全国最新二级建造师精选真题及答案52
  3. 快手极速版源码 - autojs 自阅
  4. memcached启动脚本
  5. 以下是一段歌词,请从这段歌词中统计出朋友出现的次数
  6. 实战7:机器学习实战之 随机森林、逻辑回归、SVM算法方法进行垃圾邮件过滤分类 代码+数据
  7. js根据IP地址获取当前的省市
  8. 性能跑分第一的安卓模拟器?
  9. 电脑知识:电脑老是黑屏怎么解决?
  10. 什么是单点故障【转载】