当前位置: 首页 > 后端技术 > PHP

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

时间:2023-03-30 02:27:44 PHP

做电商的人每天都在用,比如某猫某狗等等,电商系统的设计看似复杂,很简单,看似简单又很复杂,在设计中,需要考虑的问题还是很多的。让我们开始进入运输模板的主题。很多产品都是一个调用一个模板,通过模板设置的规则计算运费。看似简单的功能。让我拆开它和你谈谈。无论是默认运费还是特定地区的运费,运费规则无非就是以下设置:默认件数是多少,每多件加多少运费。对于特定地区,需要多做一些步骤来设置特定地区的运费规则。可设置多条规则,针对偏远地区,如西藏、新疆等,设置独立运费设计原则。在运费模板的设计中,应遵循一个总的原则。困难在于添加简单的查询。应用程序使用查询语句比插入它们更频繁。当然,增删改查要尽量简单。在首页的安排下,运费模板使用的位置。后台运费模板管理(增删改查)。前端实时计算运费。后台收到订单后计算运费。其中,尤其是在电子商务相关数据表的设计中,采用了冗余的方式处理相关数据,意在永久保存用户下单时产生的关联数据,这些数据不会因为修改而改变其他单词表。数据表设计本次运费模板的设计采用一主一分表的形式。主表由简单的模板名称、免费送货和创建时间组成。表结构如下CREATETABLE`product_template`(`id`int(10)unsignedNOTNULLAUTO_INCREMENT,`title`varchar(255)COLLATEutf8mb4_unicode_ciNOTNULLCOMMENT'templatename',`type`tinyint(4)NOTNULLDEFAULT'0'COMMENT'type0customshipping1freeshipping',`created_at`timestampNULLDEFAULTNULL,`updated_at`timestampNULLDEFAULTNULL,PRIMARYKEY(`id`))ENGINE=InnoDBAUTO_INCREMENT=33DEFAULTCHARSET=utf8mb4COLLATE=utf8mb4_unicode_ci;而分表就是运费规则表,也是运费模板的核心灵魂,直接决定了增删改查的复杂性是否会简化。我以一对多的方式设计规则表。将默认运费和指定运费合二为一,表结构如下,`city`textCOLLATEutf8mb4_unicode_ciCOMMENT'city',`default_number`int(11)NOTNULLDEFAULT'0'COMMENT'默认数量',`default_price`decimal(12,2)NOTNULLDEFAULT'0.00'COMMENT'默认运费',`create_number`int(11)NOTNULLDEFAULT'0'COMMENT'添加数量',`create_price`decimal(12,2)NOTNULLDEFAULT'0.00'COMMENT'添加运费',`created_at`timestampNULLDEFAULTNULL,`updated_at`timestampNULLDEFAULTNULL,PRIMARYKEY(`id`))ENGINE=InnoDBAUTO_INCREMENT=58DEFAULTCHARSET=utf8mb4COLLATE=utf8mb4_unicode_ci;通过template_id查询指定运费模板包含的所有规则,因为默认运费不需要选择城市。所以(Laravel代码)ProductTemplateRule::where([['template_id','=',$templateId],])->where('city','=','[]')->first();For批量查询指定城市,使用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}]最终创建货运模板的代码如下遵循publicfunctioncreate(Request$request){$template=newProductTemplate();$template->title=$request->title;$template->type=$request->type;$result=$template->save();if(!$result){thrownew\Exception('创建失败');$config=json_decode($request->config);foreach($configas$item){$rule=newProductTemplateRule();$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;>保存();}}本章详细解释设计表以及如何创建它。下一章会讲到如何计算运费效率最高~感谢您的阅读,希望本文能对您有所帮助,谢谢