关于电商购物车与订单

选好一个商品,点击加入购物车的时候,你要把商品的id和用户的id放入购物车表里面,如果还有其他重要的标志性信息也可以放进去,这样用户就是退出商城,下次进入的时候,系统加载也可以去检索购物车表信息,当用户结算后,可以删除购物车的这行数据,把订单号价格以及其他数据放入其他表中,这样就对于该用户清空购物车了

 

这样做有什么办法减轻数据库的压力?

做数据拆分,商城这种数据量大的数据库,可以按时间拆分,一个月建一张表

 

当用户购买商品添加到购物车时没有进行登陆,如果我们用session来保存用户的数据那么我们就要考虑到这种情况,一旦用户关闭浏览器那么之前所保存的数据就会丢失,因此采用cookie来保存数据。当用户点击结账时,对用户进行登陆验证,然后判断cookie是否存在购买商品的信息。如果存在,就将cookie中的数据保存到mysql中,然后清空cookie信息,最后结账成功。

用户添加商品到购物车的时候必须进行登陆验证,然后才能将购买的商品直接保存在数据库,但是你有没有想过用户添加到购物车的商品,他不一定购买,因此我们额外增加了维护成本,但好处是用户能在何时何地都可以看到自己的购物信息。记住方式做任何电商网站,都要从用户的角度考虑。

就是说你购物的时候你有可能不是本网站的会员,但你又想购买商品,那么我们会给你提供一个特殊的帐号(游客)具体实现思路如下:当用户购买通过cookie保存,结账的时候用户又不想注册,我们通过获取他的手机号码和地址,然后后台自动生成一个普通用户,将数据保存在数据库中并清除cookie。

 

 

订单表

orders订单表
字段名 数据类型 默认值 允许非空 自动递增 备注
id int(11) NO 是 id
uid int(11) NO 会员id号
linkman varchar(32) NO 联系人
address varchar(255) NO 地址
code char(6) NO 邮编
phone varchar(16) NO 电话
addtime int(11) NO 购买时间
total double(8,2) NO 总金额
status tinyint(4) NO 状态0:新订单1:已发货2:已收货3:无效订单

detail订单详情表
字段名 数据类型 默认值 允许非空 自动递增 备注
id int(11) NO 是 id
orderid int(11) NO 订单id号
goodsid int(11) NO 商品id号
name varchar(32) NO 商品名称
prince double(6,2) NO 单价
num int(11) NO 数量

 

 

订单号唯一

uniqid()函数

转载于:https://www.cnblogs.com/lijingwen-99/p/7009049.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/283354.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Servlet 应用程序事件、监听器

Web容器管理Servlet/JSP相关的生命周期,若对HttpServletRequest对象、HttpSession对象、ServletContxt对象在生成、销毁或相关属性设置发生的时机点有兴趣,可以实现对应的监听器(Listener)。 一、ServletContext事件、监听器 与ServletContext相关的监听…

BZOJ4596:[SHOI2016]黑暗前的幻想乡——题解

https://www.lydsy.com/JudgeOnline/problem.php?id4596 https://www.luogu.org/problemnew/show/P4336#sub 四年一度的幻想乡大选开始了,最近幻想乡最大的问题是很多来历不明的妖怪涌入了幻想乡,扰乱了幻想乡昔日的秩序。但是幻想乡的建制派妖怪&#…

巴川数据科学炼成记_智橡树智能英语好不好有哪些功能?提出的科学学习思想是什么?...

智橡树智能英语与真人老师英语教学的最大区别就是解决老师课堂上不擅长、学生课后难坚持的单词、听力、口语、阅读重复训练问题,是辅助老师课堂教学的最佳搭档!智橡树智能英语基于人工智能及大数据技术,专注音标、单词、听力、阅读、语法、口…

.NET 调整图片尺寸(Resize)各种方法

前言调整图片尺寸最常用的场景就是生成缩略图,一般为保持纵横比缩小,如果图片放大会使图片变得模糊,如果确实有这方面的需求,可以寻找开源的AI放大图片的方法。1.ImageSharp开源地址:https://github.com/SixLabors/Ima…

vite解决警告: You are running the esm-bundler build of vue-i18n. It is recomme

(转载请删除括号里的内容) 解决方法:在vite.config.js加入以下代码 resolve: { alias: {vue-i18n: vue-i18n/dist/vue-i18n.cjs.js} }--------------------- 作者:BY_BC 来源:CSDN 原文:https://blog.csdn.net/BY_BC/article…

MongoDB 设置权限认证

1、以未添加auth 的方式启动 mongoDb /mongodb/bin/mongod --dbpath /mongodb/data/db 2、添加用户 /mongodb/bin/mongo a、管理员账户用户名 use admin db.addUser(admin,admin) b、annaDb(其他数据库)账户用户名 use annaDb db.addUser(xxx,xxx) c、新版本添加用户方法 db.cr…

设计师要懂布局(一)

2019独角兽企业重金招聘Python工程师标准>>> 页面版式的好坏给了用户第一印象,好不好用,想不想看页面的内容,要不要收藏这个页面,在设计中都起到了决定性作用。 在互联网时代,我们接触最多的就是手机和电脑…

ES6入门之Symbol

ES5对象属性名都是字符串容易造成属性名的冲突。 eg:var a { name: lucy};a.name lili;这样就会重写属性 ES6引入了一种新的原始数据类型Symbol,表示独一无二的值。 重新复习下新知识:基本数据类型有6种:Undefined、Null、布尔值&#xff0…

mac safari无法连接服务器_宇航员乘坐SpaceX飞船返航中iPad上Safari出现“无法连接到网络”错误...

罗伯特贝恩肯(Robert Behnken)和道格拉斯赫尔利(Douglas Hurley)在完成轨道实验室任务后,于今天搭乘 SpaceX 公司的"Crew Dragon"飞船离开国际空间站,为他们历史性的国际空间站飞行画上句号。两名宇航员在位于美国德克萨斯州休斯顿和加利福尼亚…

Vue 大量数据展示卡顿解决方案(长列表优化)

需求分析(长列表展示) 页面某处需要渲染 1w 条数据,并需要滚动展示,这时如果直接把这些数据渲染到页面上,会导致系统内存大量被占用,导致页面卡顿或崩溃 我们都知道,每次 DOM 修改,浏…

Blazor University (47)依赖注入 —— Singleton 依赖

原文链接:https://blazor-university.com/dependency-injection/dependency-lifetimes-and-scopes/singleton-dependencies/Singleton 依赖Singleton 依赖是一个由依赖它的每个对象共享的单个对象实例。在 WebAssembly 应用程序中,这是在浏览器的当前选项…

nginx log_format详解

nginx服务器日志相关指令主要有两条,一条是log_format,用来设置日志格式,另外一条是access_log,用来指定日志文件的存放路径、格式和缓存大小,一般在nginx的配置文件中日记配置(/usr/local/nginx/conf/nginx.conf)。 n…

Django-admin管理工具

admin组件使用 Django 提供了基于 web 的管理工具。 Django 自动管理工具是 django.contrib 的一部分。你可以在项目的 settings.py 中的 INSTALLED_APPS 看到它: # Application definitionINSTALLED_APPS [django.contrib.admin,django.contrib.auth,django.contr…

mybatis报错invalid types () or values ()解决方法

报错信息:org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.reflection.ReflectionException: Error instantiating class com.org.tfkj.bean.AppFile.T_contactList with invalid types () or values (). Cause: java.lang.NoSu…

[转]mysql的sql优化工具

原标题:DBA的五款最佳SQL查询优化工具,收藏了 一般来说,SQL查询优化器分析给定查询的许多选项,预估每个选项的成本,最后选择成本最低的选项。如果查询优化器选择了错误的计划,则性能差异可能从几毫秒到几分…

log4j 新建日志 重启_Log4j 动态修改日志级别,不用重启服务器

生产环境正常情况下 只需要打印Info级别的日志就够了,碰到有问题的时候,或者在开发过程中 需要把debug 级别的日志打印出来。把下面的代码放到一个 Controller 里,通过页面一个的按钮调用即可。//修改全局LogManager.getLoggerRepository().s…

.NET 7 中的 HttpResult 接口

.NET 7 中的 HttpResult 接口Intro在前面的文章中,我们提到了 .NET 7 引入了 Endpoint Filter 来支持 Endpoint 的过滤器,有了这个接口就想着把之前的统一 API response 的 filter 改造一下支持 endpoint filter,然而这个一直等到了 .NET 7 P…

5、Hive的自定义UDF函数

2019独角兽企业重金招聘Python工程师标准>>> 1、pom.xml引入依赖及打包 <dependencies><dependency><groupId>org.apache.hive</groupId><artifactId>hive-exec</artifactId><version>1.1.0</version></depende…

多线程-单生产单消费模型

2019独角兽企业重金招聘Python工程师标准>>> 创建资源对象&#xff0c;提供保存和取出方法&#xff08;使用synchronized代码块实现&#xff09; /*** Created by shaoqinghua on 2018/5/3.* 定义一个负责保存和取出的资源类*/ public class Resource {/*** 定义成员…

nj08---process、console

概念&#xff1a;所有属性都可以在程序的任何地方访问&#xff0c;即全局变量。在JavaScript中&#xff0c;通常window是全局对象&#xff0c;而Node.js的全局对象是global&#xff0c;所有全局变量都是global对象的属性&#xff0c;如&#xff1a;console、process等。一、全局…