新闻资讯

新闻资讯 通知公告

电子商城系统运费模板设计

编辑:admin     时间:2019-03-01

最近公司要求完善我们商城的运费模板功能,使运费计算更加精确。我接到任务之后就着手分析,到目前为止已实现了一部分。现在把相关的东西记录在这里,为了方便日后自己查看,也希望能够帮助部分初学者,给他们一个个参照;在功能上有不同想法的人希望不要吝惜自己的智慧,能够在评论中提点一二。

  刚接到任务,我是想当然的根据公司的业务来分析的,感觉到很复杂,逻辑不清不楚,各种关系也理不顺。之后我就从淘宝的运费模板去分析,还有淘宝开放平台上的运费模板API,里面有数据结构,再结合ECShop等有名的开源电子商城系统的运费模板的设计方法去分析,然后把分析到的各种逻辑、关系在纸上记录下来;比如有几个对象,有哪些属性,各个对象之间的关系,有哪些约束条件等等一一记录下来,你用甘特图也好,用草图也行,但是一定要自己看得懂,最好别人也看得懂,我是用草图画的,因为这个功能是我一个人单独来实现,所以我自己能看懂就行了。之后我根据自己画的草图就整理出来了概要设计说明书,因为这只是一个功能,所以我并没有按照软件工程的那种格式去写这个概要说明书,而是把一些必须要记录的重点的东西记录下来,整理的一篇文档而已。我这个设计基本是按淘宝的来的,但是跟它的数据结构不一样,下面我把它贴出来。

  一:需求说明

    1.1 用户需求说明

      客户在商城下单的时候能够能够根据客户选择的运送方式和用户所在地区自动计算运费

    1.2 设计需求和约束说明

      1:模板有包邮和不包邮两种,不包邮需要自己定义;

      2:计价方式分为按件数、按重量两种;(业务的特殊性,不需要按体积计价)

      3:运送方式有EMS、天天快递、顺丰快递、赣农速配四种;(赣农速配是自有物流,其他三种是合作物流)

      4:一个运费模板可以有多个运送方式,每种运送方式必须要有一种运送到全国的默认运费,非默认的运费需要设置地区

      5:每个运费模板可以设置是否指定条件包邮,并且多种条件可以同时存在

      6:每个产品必须绑定一个运费模板

   二:页面设计(参照淘宝的运费模板页面设计)

     2.1 列表页

2.2 新增页和编辑页


 三:数据结构    

    3.1 模板表设计FareTemplate
列名
数据类型
空值
默认值
备注
ID
int
Not null


主键
模板名称
string
Not null 



宝贝地址
string
Not null



发货时间
Datetime
null


几小时内发货

是否包邮
bit


不包邮约束运送方式不能为空
计价方式
int
Not null


按件数、按重量、按体积
是否指定条件包邮
bit
Not null



    3.2 包邮条件表(InclPostageProviso


列名

数据类型

空值

默认值

备注

ID

Int

Not null


主键

关联模板

Int

Not null


模板表外键

包邮地区

string

null


--

包邮件数

Int

Null



包邮重量

Decimal

Null


单位KG

包邮体积

Decimal

Null


单位

包邮金额

Decimal

Null




    3.3 运送方式表(CarryMode



列名

数据类型

空值

默认值

备注

ID

Int

Not null


主键

关联模板

Int

Not null


模板表外键

运送地区
string
Not null


与地区表一对多关系
首件
int
null


依据计价方式来选择

首重
decimal
null



首体积
decimal
null



首费
decimal
Not null



续重
decimal
null


依据计价方式来选择

续体积
decimal
null



续件
int
Null



续费
Decimal
Not null



运送方式
Int
Not null


EMS顺丰、天天等
是否默认
int
Not null

     3.4 数据库实现代码

           View Code

  四:运费计算算法设计

    4.1 单商品算法:判断是否包邮->判断是否满足条件包邮->根据客户选择的运送方式判断地区->没有所在地区则使用默认运费->求最大首费和最小续费

    4.2 购物车算法:先计算单品的运送方式->求最大首费和最小续费

    解释:一种商品可能存在多种合适的运送方式,最大首费就是这几种运送方式里的首费最大的值,最小续费类似。

  基本的设计思想就是这些,希望大家能看懂,不清楚的可以评论留言,大家一起交流。我的实现是在.net平台使用MVC+EF技术来实现的,后续等我全部实现了之后,我会贴出部分实现的代码来一起交流。


郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

回复列表

相关推荐