商城-折扣活动设计方案
- 需求:
- 折扣管理:
- 商品支持打折活动,打折活动支持多种形式;
- 活动折扣要求:大于0,小于10,允许包含一位小树;
- 一旦折扣活动创建后,不可以修改折扣;
- 促销管理:
- 可以按照折扣活动查询对应参与活动的商品,显示对应活动商品的原价,折扣,减价,折扣后;
- 允许商家查看可以参加某活动的商品,且一个商品最多允许参加一个活动即使活动已经过期,必须取消已参与的其他活动后,才能参加另外一个活动;
- 设置某产品参加某活动时,默认按照该活动的折扣进行计算折扣、减价、折扣后,但也允许用户手动修改某个商品或者批量改变某几个商品的折扣,或者减价。
- 受影响的业务:
目前系统中,关于购物添加了该业务还会影响业务地方:
- 商品展示信息:当展示商品信息时,需要判定该商品是否参加了活动;
- 如果参加了活动,那么就要显示活动信息,同时根据对该产品定制的活动信息改变对应的折扣后价格,折扣信息。 这里提到“商品定制的活动信息”,它是在促销管理添加某个活动时,生成的一条记录,所有的参加了折扣活动的商品都有一个条这样的信息;
- 如何判断某个商品是否已经参加了活动,就是根据商品ID从“商品定制的活动信息”查询,是否记录。
- 但删除某个折扣活动时,会提示:“如果该折扣活动已经被其他商品使用,删除后参与该活动的商品将取消活动,是否继续?”,也就是说,当删除了某个折扣活动,将会从“商品定制的活动信息”中删除该活动下的所有记录。
- 如果没有参加活动,那么商品将不会显示活动信息,没有折扣、折扣价信息。
- 如果参加了活动,那么就要显示活动信息,同时根据对该产品定制的活动信息改变对应的折扣后价格,折扣信息。 这里提到“商品定制的活动信息”,它是在促销管理添加某个活动时,生成的一条记录,所有的参加了折扣活动的商品都有一个条这样的信息;
- 购物车信息:当展示商品信息时,需要判定该商品是否参加了活动;
- 如果参加了活动,那么就要显示活动信息,同时根据对该产品定制的活动信息改变对应的折扣后价格,折扣信息。
- 如果没有参加活动(只有当该商品参与的活动在活动期间,且已经开启的情况下),那么商品将不会显示活动信息,没有折扣、折扣价信息.
- 在某个商品价格小计是,如果有折扣活动(只有当该商品参与的活动在活动期间,且已经开启的情况下)需要按照折扣后价格进行计算;
- 在计算总价时,如果有折扣活动()需要按照折扣后价格进行汇总;
- 订单信息:
- 在生成需要支付总价格时,需要取值为购物车中的总价格--购物车中的总价格是更具商品ID,查询到对应信息()进而综合计算的总价;
- 购物车中总价,及订单中的总价,不能靠cookie中的信息,很危险,一定要从数据库中查询计算得到总价。
- 订单商品信息:
- 订单商品信息中的必须要保存的字段:商品价格,是否参加折扣活动,活动名称,折扣,折扣后价格。为什么要显示这些信息?为了跟踪产品价格,避免别人订单信息无法追踪。
- 当然这里“是否参加折扣活动”字段,只有当该商品参与的活动在活动期间,且已经开启的情况下,才标识为true.
- 用来冗余:一旦取消了某个折扣活动,但若某个已经参加了该活动且已经包含在订单商品中,在取消活动后,这时就无法知道用户提交时,是否参与过什么活动。
- 开发
- 添加表“活动信息”
- 脚本:
/****** 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
- 脚本:
- 添加表“商品定制的活动信息”
- 脚本:
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
- 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
- 怎么判断该商品活动是否有效,需要关联到“活动信息”表:
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
- 脚本:
- 修改表“订单商品信息”阿萨德
- 订单信息表中,必须添加冗余字段:是否参加折扣活动,活动名称,折扣,折扣后价格
到此,该逻辑已经完整的清晰了。突然感觉到文字的力量很神奇,苦想了,也没有理清的业务,文字写出来后竟然清晰了很多。
折扣活动编辑
折扣活动管理
可参加某活动商品
已参加某活动商品
商城-折扣活动设计方案相关推荐
- 【实战场景】商城-折扣活动设计方案
需求: 折扣管理: 商品支持打折活动,打折活动支持多种形式: 活动折扣要求:大于0,小于10,允许包含一位小树: 一旦折扣活动创建后,不可以修改折扣: 促销管理: 可以按照折扣活动查询对应参与活动的商 ...
- 商城拍卖活动设计方案 瞬时并发高可用
后端源码传送门:https://download.csdn.net/download/sun5769675/87323033 最近参加了公司内部的一个24小时编程比赛,组了个四人的小团队,设计了一个拍 ...
- 活动详情页面html代码,折扣活动详情.html
折扣活动详情 $axure.utils.getTransparentGifPath = function() { return 'resources/images/transparent.gif' ...
- 全球仅10%的开发者从不加班;淘宝回应用户账号被禁用 980 年;苹果宣布首次以官方形式参与天猫618折扣活动...
编辑 | 程佳琳 全球仅 10% 的开发者不用加班:微信首次回应 WeTool 被封事件:苹果宣布首次以官方形式参与天猫 618 折扣活动:马云:买菜等小事未来都会在网上,这是活下去的关键:淘宝回应用 ...
- 【华为OD机试真题2023 JAVA】网上商城优惠活动(一)
华为OD机试真题,2023年度机试题库全覆盖,刷题指南点这里 网上商城优惠活动(一) 时间限制:1s 空间限制:50MB 限定语言:不限 题目描述: [背景] 某网上商城举办优惠活动,发布了满减.打折 ...
- 华为OD机试真题Java_2022-2023-题目0188-网上商城优惠活动(一)
网上商城优惠活动(一) 题目描述 背景 某网上商城举办优惠活动,发布了满减.打折.无门槛3种优惠券,分别为: 每满100元优惠10元,无使用数限制,如100~199元可以使用1张减10元,200~29 ...
- B2C自营商城的商品设计方案
去年我们的美妆社区APP,上线了自有商城.之后经过多次版本迭代,商城系统的模块已经基本健全,值此时间分享一些经验出来,希望可以共同交流. 主要讲讲服务端的架构设计以及商品呈现逻辑.可能对某些PM来说有 ...
- 博客 学院 下载 GitChat 论坛 问答 商城 头条 活动 码云 ITeye 写博客
博客 学院 下载 GitChat 论坛 问答 商城 头条 活动 码云 ITeye 写博客 发Chat 登录注册 常见8种算法总结 转载 2017年03月16日 22:23:43 目录 冒泡排序 鸡尾酒 ...
- 【华为OD机试真题】网上商城优惠活动(python版)100%通过率 超详细代码注释 代码解读
[华为OD机试真题 2022&2023]真题目录 @点这里@ [华为OD机试真题]信号发射和接收 &试读& @点这里@ [华为OD机试真题]租车骑绿道 &试读& ...
最新文章
- [Eclispe] NDK内建include路径修改
- React - 状态提升
- 【转】TFS自动签出解决方案sln或者项目文件csproj的解决办法
- java jsp导出pdf文件_JSP页面导出PDF格式文件
- 【Python】我的第一个EXE程序
- C++ Primer 第五版 第6章 6.1——函数及函数定义及调用习题答案
- 解决VScode在保存less文件时,自动生成对应的css文件以及安装Easy less之后,计算式子不显示结果的问题
- bootstrap所需的js/css文件本地的jsp页面中的引入
- 如何获取InnoDB树的高度
- c++中vector的学习
- Adobe 全家桶关闭自动更新?技巧来啦!
- 3.配置阿里云镜像加速
- 适合小白的几个入门级Python ocr识别库
- AD转换器输入之前接一个电压跟随器是为什么
- VMware Workstation15.5下载安装教程(win10)
- 第五次课堂总结——付胤
- 小蛋机器人app_阿尔法蛋编程APP
- vue项目初始化出现tar ENOENT: no such file or directory错误的解决办法。
- 渐进式web应用程序_为什么渐进式Web应用程序很棒,以及如何构建一个
- dsf5.0获取嵌入页面的数据
热门文章
- lisp 练习取得对象属性
- LaTeX 002:d 上带一横(d with stroke、dbar、đ)兼容 XeLaTeX 和 MathJax 的折中办法
- erick recommendation:慕容晓晓《爱情买卖》MV欣赏
- Problem E. L04-05 计算银行存款余额和利息(单利计算简单问题)
- 迪士尼的漫威宇宙第四阶段计划出炉
- SpringBoot 报错 Unrecognized field
- 怎么在电脑上进行音频以及视频的素材合并
- Windows 10 使用小鹤双拼
- 智能电表如何采集数据?
- 解决计算机被暴风集火(jihuo)后留下的IE,chrome,火狐等所有浏览器主页网址携带有”tn=93453552_hao_pg“后缀的驱动类木马病毒的问题