【实战场景】商城-折扣活动设计方案
- 需求:
- 折扣管理:
- 商品支持打折活动,打折活动支持多种形式;
- 活动折扣要求:大于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 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
- 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小时编程比赛,组了个四人的小团队,设计了一个拍 ...
- 全球仅10%的开发者从不加班;淘宝回应用户账号被禁用 980 年;苹果宣布首次以官方形式参与天猫618折扣活动...
编辑 | 程佳琳 全球仅 10% 的开发者不用加班:微信首次回应 WeTool 被封事件:苹果宣布首次以官方形式参与天猫 618 折扣活动:马云:买菜等小事未来都会在网上,这是活下去的关键:淘宝回应用 ...
- 小米商城html代码_微服务架构实战:商城的用户登录与账户切换设计、订单查询设计...
商城的用户登录与账号切换设计 在移动商城的设计中,除商品和分类查询是完全开放权限的页面外,其他涉及个人隐私的个人信息.订单查询和购物车等都必须进行权限管理. 有关用户权限管理的功能,在这里根据移动设备 ...
- 博客 学院 下载 GitChat 论坛 问答 商城 头条 活动 码云 ITeye 写博客
博客 学院 下载 GitChat 论坛 问答 商城 头条 活动 码云 ITeye 写博客 发Chat 登录注册 常见8种算法总结 转载 2017年03月16日 22:23:43 目录 冒泡排序 鸡尾酒 ...
- 实战:网店活动付邮试用全攻略
实战:网店活动付邮试用全攻略 淘宝开店,有些店长有自己的工厂一手货源,苦于怎么能够快速的积累人气,如果想要用优质宝贝打开市场,那么淘宝的付邮试用,是不能错过的活动,下面,如何开网店的小编给大家说说付邮 ...
- 09-Flutter移动电商实战-移动商城数据请求实战
09-Flutter移动电商实战-移动商城数据请求实战 1.URL接口管理文件建立 第一步需要在建立一个URL的管理文件,因为课程的接口会一直进行变化,所以单独拿出来会非常方便变化接口.当然工作中的U ...
- Vue3+Vant+Vue-cli+Restful api实战—图书商城移动端
Vue3+Vant+Vue-cli+Restful api实战-图书商城移动端 经过将近一个月的努力,项目终于做完了,编写的时候在代码中写了很多注释,方便自己后期查看,有问题的小伙伴可以找我帮忙解决! ...
- 【系】微信小程序云开发实战坚果商城-云开发开篇
第 3-2 课:云开发开篇 目录 开篇 [系]微信小程序云开发实战坚果商城-开篇 基础篇 [系]微信小程序云开发实战坚果商城-弹性盒子 [系]微信小程序云开发实战坚果商城-ES6 简单入门 [系]微信 ...
最新文章
- java获取apk启动activity_[RK3399] android7.1 设置开机启动apk
- 在QTP中申明XPath
- 常用jar包之commons-beanutils使用
- oracle的cursor的介绍
- 简单谈谈linux的文件权限问题
- c语言输入字符串的格式不正确的是,关于c#:输入字符串的格式不正确
- (十一)进阶算法之“搜索排序”
- PHP快速导入,php快速导入大量数据的实例方法
- MAC 下配置JavaEE开发环境
- 结果集 tostring_关于避免对toString()结果进行解析或基于逻辑的美德
- oracle fiscal year,Version 0 is not defined for fiscal year 2007.
- Linux 重启网卡
- sysadmin默认密码_从sysadmin过渡到DevOps工程师的案例
- 2021-2025年中国抽屉加热器行业市场供需与战略研究报告
- c#的内存管理(托管及未托管对象管理)
- 学生管理系统(源码)(C语言版)
- java版本的在线OJ项目
- 车载主机企业对Android平台趋之若骛
- 中国省市县信息JS文件(省--市--县)
- python处理excel数值为文本_使用Python中的xlrd将数字Excel数据读取为文本