电商大伙每天都在用,类似某猫,某狗等。

电商系统设计看似复杂又很简单,看似简单又很复杂

本章适合初中级工程师细看,大佬请随意

前言

在订单系统中,运费模板是其中一个重要组成部分,看似简单的一个设置,在其内的设计中,要考虑的问题还是很多滴,开始进入正题

运费模板

运费模板由

模板名称

是否包邮

默认运费

特定地区运费

四部分组成,所谓模板则就是设置这样一个框架,由多个商品多对一调用一个模板,通过模板设置的规则来计算配送费用,看似简单的功能,由我来拆解开跟各位聊聊。

运费规则

无论是默认运费还是特定地区运费,无非设置如下

默认几件内多少元,每增加几件运费增加多少元

特定地区则多几步设置

特定地区的运费规则可设置多个,对某个偏远地区,如西藏、新疆设置独立的配送费用

设计原则

在运费模板的设计上,应当遵循一个通用原则,难在新增易在查询,一个应用程序使用查询语句的次数要比插入多多了。当然也应该尽可能的做到增删改查都比较简单才是最佳。

首页整理下,运费模板使用的位置

后台的运费模板管理(增删改查)

前端实时计算运费

后端接收订单后进行的运费计算

后续的退款(如未发货,则应退运费)

在数据库设计中,尤其是电商相关的数据表设计,竟然会使用冗余的方法处理相关数据,意在永久保存用户在下单的时候产生的关联数据,这些数据不会因其他字表修改而变化。

数据表设计

本次对运费模板上的设计,采用一主表一子表的方式来做。

主表则是由简单的模板名称,是否包邮,创建时间构成,表结构如下

CREATE TABLE `product_template` (

`id` int(10) unsigned NOT NULL AUTO_INCREMENT,

`title` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '模板名称',

`type` tinyint(4) NOT NULL DEFAULT '0' COMMENT '类型 0 自定义运费 1 包邮',

`created_at` timestamp NULL DEFAULT NULL,

`updated_at` timestamp NULL DEFAULT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=33 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

而子表为运费规则表,也是运费模板的核心灵魂,直接决定了是否会简化增删改查的复杂度。我以一对多的方式来设计规则表。将默认运费与指定运费合并在一个表内,表结构如下

CREATE TABLE `product_template_rule` (

`id` int(10) unsigned NOT NULL AUTO_INCREMENT,

`template_id` int(11) NOT NULL COMMENT '模板编码',

`city` text COLLATE utf8mb4_unicode_ci COMMENT '城市',

`default_number` int(11) NOT NULL DEFAULT '0' COMMENT '默认数量',

`default_price` decimal(12,2) NOT NULL DEFAULT '0.00' COMMENT '默认运费',

`create_number` int(11) NOT NULL DEFAULT '0' COMMENT '新增数量',

`create_price` decimal(12,2) NOT NULL DEFAULT '0.00' COMMENT '新增运费',

`created_at` timestamp NULL DEFAULT NULL,

`updated_at` timestamp NULL DEFAULT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=58 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

通过template_id查询指定运费模板内包含的所有规则,因为默认运费是不需要选择城市的。所以则为 (Laravel 代码)

ProductTemplateRule::where([

['template_id', '=', $templateId],

])

->where('city', '=', '[]')

->first();

而指定城市批量查询出来则使用

ProductTemplateRule::where([

['template_id', '=', $templateId],

])

->where('city', '!=', '[]')

->first();

规则查询就这样简单的完成了。查询如此简单,插入其实也并不是太难,代码如下,前端通过JSON方式将已设置好的模板规则发送到后端,如果是默认运费模板则城市为空JSON,JSON格式如下

[

{

'city'=>[],

'default_number'=>1,

'default_price'=>1.00,

'create_number'=>1,

'create_price'=>1.00

},

{

'city'=>['北京市','上海市'],

'default_number'=>1,

'default_price'=>1.00,

'create_number'=>1,

'create_price'=>1.00

}

]

最终的创建运费模板的代码如下

public function create(Request $request)

{

$template = new ProductTemplate();

$template->title = $request->title;

$template->type = $request->type;

$result = $template->save();

if (!$result) {

throw new \Exception('创建失败');

}

$config = json_decode($request->config);

foreach ($config as $item) {

$rule = new ProductTemplateRule();

$rule->template_id = $template->id;

$rule->city = json_encode($item->city);

$rule->default_number = $item->default_number;

$rule->default_price = $item->default_price;

$rule->create_number = $item->create_number;

$rule->create_price = $item->create_price;

$rule->save();

}

}

本章对设计表和如何创建做了详细讲解,下章说说应当如何计算运费效率最高~

致谢

感谢你看到这里,希望本篇文章可以帮助到你,谢谢。

java运费模板设计_电商系统设计之运费模板(上)相关推荐

  1. java运费模板设计_电商系统设计之运费模板(下)

    电商大伙每天都在用,类似某猫,某狗等. 电商系统设计看似复杂又很简单,看似简单又很复杂 本章适合初中级工程师细看,大佬请随意 前言 在订单系统中,运费模板是其中一个重要组成部分,看似简单的一个设置,在 ...

  2. java电商快递费收取_电商系统设计之运费模板(上)

    电商大伙每天都在用,类似某猫,某狗等. 电商系统设计看似复杂又很简单,看似简单又很复杂 本章适合初中级工程师细看,大佬请随意 前言 在订单系统中,运费模板是其中一个重要组成部分,看似简单的一个设置,在 ...

  3. php电子商务模板,关于php:电商系统设计之运费模板下

    电商大伙每天都在用,相似某猫,某狗等. 电商零碎设计看似简单又很简略,看似简略又很简单 本章适宜初中级工程师细看,大佬请随便 [腾讯云]云产品限时秒杀,爆款1核2G云服务器,首年99元 前言 在订单零 ...

  4. PHP电商运费模板,电商系统设计之运费模板(下)

    电商大伙每天都在用,类似某猫,某狗等. 电商系统设计看似复杂又很简单,看似简单又很复杂 本章适合初中级工程师细看,大佬请随意 前言 在订单系统中,运费模板是其中一个重要组成部分,看似简单的一个设置,在 ...

  5. 电商系统设计之运费模板(上)

    电商大伙每天都在用,类似某猫,某狗等. 电商系统设计看似复杂又很简单,看似简单又很复杂 本章适合初中级工程师细看,大佬请随意 前言 在订单系统中,运费模板是其中一个重要组成部分,看似简单的一个设置,在 ...

  6. 电商系统设计之商品(上)

    电商大伙每天都在用,类似某猫,某狗等. 电商系统设计看似复杂又很简单,看似简单又很复杂.本章适合初级工程师及中级工程师细看,大佬请随意 1. 前言 商品的设计在电商系统中占据重要地位,如何设计出高扩展 ...

  7. 快照设计 电商系统_电商系统设计之购物车

    本章适合初级工程师及中级工程师细看,大佬请随意 前言 问 [不存价格字段不行吗?直接查询商品表获取价格] 答 [如果价格更新,应提示用户,商品的浮动信息.可以选择直接更新购物车,或者单独建立一个表,来 ...

  8. 一个页面区分管理者和普通用户如何设计_电商系统:优惠券原型设计说明(二)...

    编辑导读:在整个产品发展的整个周期中,运营活动必不可少,而发放优惠券已成为运营活动的一种基本形式,而关于优惠券设计就尤为重要.本文作者分享了优惠券后台页面的相关设计步骤,推荐给对优惠券感兴趣的童鞋阅读 ...

  9. 支付退款流程设计_电商订单系统,你该如何设计

    文章来自:https://baijiahao.baidu.com/s?id=1602959656926168475&wfr=spider&for=pc 作者:人人都是产品经理 点击加入 ...

最新文章

  1. (C++)201709-1 打酱油
  2. torch.nn.BCELoss用法
  3. cogs 539. 牛棚的灯
  4. php实现微信清粉功能,PHP实现微信提现功能
  5. 2017年10月08日普及组 世界语
  6. QT的QStatusTipEvent类的使用
  7. win10水印烦死了_win10系统下word去水印的方法【图文】
  8. php导航栏代码子菜单找不到,php – 下拉导航菜单,显示每个类别的最新帖子
  9. ubuntu 安装nvm
  10. springsecurity安全登录框架
  11. gensim实现TF-IDF和LDA模型、sklearn实现聚类
  12. 如何部署SSM框架(Spring+SpringMVC+MyBatis)到SAE(新浪云服务器)图文教程
  13. 迭代扩展卡尔曼滤波学习
  14. 七彩虹主板进BIOS设置和打开启动项菜单快捷键
  15. 基于ZedBoard的Webcam设计(二):USB摄像头图片采集+QT显示
  16. php自带的basename函数尽然不支持中文
  17. 从签到功能到用户激励体系——产品经理项目实录
  18. 中控指纹考勤机使用实战
  19. CRM系统是什么?为什么使用它?
  20. 时间格式进行加减运算,偷懒必备(60进制转10进制)

热门文章

  1. 【行业研究】中国智能投顾行业
  2. 万亿级重磅!刚刚,新一批基金投顾资格正式获批!广发、博时、招商等在列
  3. windows安全防御
  4. 我有几个同事去了趟以色列
  5. 那一日,人类想起了被开学支配的恐惧
  6. 无线互联北京培训基地第49期学员李天游
  7. android检测sim卡状态,android 判断网络连接、sim卡信息以及ping操作是否网络连接正常...
  8. SpringBoot2.x系列教程(七十)Spring Boot Actuator集成及自定义Endpoint详解
  9. 前端开发神器Hype3初体验-可视化、响应式、动效
  10. 202203电子学会青少年软件编程python三级真题