【笔记5-购物车及地址模块】从0开始 独立完成企业级Java电商网站开发(服务端)

news/2024/5/19 12:32:09/文章来源:https://chenchenchen.blog.csdn.net/article/details/104263632

购物车模块

数据库表设计

购物车表file

CREATE TABLE mmall_ cart (
'id' int(11) NOT NULL AUTO_ INCREMENT,
'user_ id' int(11) NOT NULL,
'product_ id' int(11) DEFAULT NULL COMMENT ' 商品id',
'quantity' int(11) DEFAULT NULL COMMENT  '数量',
'checked' int(11) DEFAULT NULL COMMENT ' 是否选择,1=已勾选,0=未勾选' ,
'create_ time' datetime DEFAULT NULL COMMENT ' 创建时间'
'update_ _time' datetime DEFAULT NULL COMMENT ' 更新时间' ,
PRIMARY KEY (' id'),
KEY 'user_ id_ index' (user_ id') USING BTREE
) ENGINE=InnoDB AUTO_ INCREMENT=121 DEFAULT CHARSET=utf8

功能

file

加入商品更新商品数查询商品数移除商品单选/取消全选/取消购物车列表

涉及知识点

购物车模块的设计思想

如何封装一个高复用购物车核心方法

解决浮点型商业运算中丢失精度的问题

file

接口设计

【门户】

1.购物车List列表

/cart/list.do

http://localhost:8080/cart/list.do

注意点:

  1. 需要先登录,所有的密码都是123
  2. NEEDLOGIN(10, "NEEDLOGIN"),//需要登录的错误编码
  3. 价格的单位是元,保留小数后2位

request

无参数,需要登录状态

response

success


{"status": 0,"data": {"cartProductVoList": [{"id": 1,"userId": 13,"productId": 1,"quantity": 1,"productName": "iphone7","productSubtitle": "双十一促销","productMainImage": "mainimage.jpg","productPrice": 7199.22,"productStatus": 1,"productTotalPrice": 7199.22,"productStock": 86,"productChecked": 1,"limitQuantity": "LIMIT_NUM_SUCCESS"},{"id": 2,"userId": 13,"productId": 2,"quantity": 1,"productName": "oppo R8","productSubtitle": "oppo促销进行中","productMainImage": "mainimage.jpg","productPrice": 2999.11,"productStatus": 1,"productTotalPrice": 2999.11,"productStock": 86,"productChecked": 1,"limitQuantity": "LIMIT_NUM_SUCCESS"}],"allChecked": true,"cartTotalPrice": 10198.33}
}

2.购物车添加商品

/cart/add.do

http://localhost:8080/cart/add.do?productId=1&count=10

请注意这个字段,超过数量会返回这样的标识"limitQuantity"

失败的:LIMITNUMFAIL成功的:LIMITNUMSUCCESS

request

productId,count

response

success

{"status": 0,"data": {"cartProductVoList": [{"id": 1,"userId": 13,"productId": 1,"quantity": 12,"productName": "iphone7","productSubtitle": "双十一促销","productMainImage": "mainimage.jpg","productPrice": 7199.22,"productStatus": 1,"productTotalPrice": 86390.64,"productStock": 86,"productChecked": 1,"limitQuantity": "LIMIT_NUM_SUCCESS"},{"id": 2,"userId": 13,"productId": 2,"quantity": 1,"productName": "oppo R8","productSubtitle": "oppo促销进行中","productMainImage": "mainimage.jpg","productPrice": 2999.11,"productStatus": 1,"productTotalPrice": 2999.11,"productStock": 86,"productChecked": 1,"limitQuantity": "LIMIT_NUM_SUCCESS"}],"allChecked": true,"cartTotalPrice": 89389.75}
}

3.更新购物车某个产品数量

/cart/update.do

http://localhost:8080/cart/update.do?productId=1&count=2

request

productId,count

response

响应同2

success

{"status": 0,"data": {"cartProductVoList": [{"id": 1,"userId": 13,"productId": 1,"quantity": 12,"productName": "iphone7","productSubtitle": "双十一促销","productMainImage": "mainimage.jpg","productPrice": 7199.22,"productStatus": 1,"productTotalPrice": 86390.64,"productStock": 86,"productChecked": 1,"limitQuantity": "LIMIT_NUM_SUCCESS"},{"id": 2,"userId": 13,"productId": 2,"quantity": 1,"productName": "oppo R8","productSubtitle": "oppo促销进行中","productMainImage": "mainimage.jpg","productPrice": 2999.11,"productStatus": 1,"productTotalPrice": 2999.11,"productStock": 86,"productChecked": 1,"limitQuantity": "LIMIT_NUM_SUCCESS"}],"allChecked": true,"cartTotalPrice": 89389.75}
}

4.移除购物车某个产品

/cart/delete_product.do

http://localhost:8080/cart/delete_product.do?productIds=1,3

request

productIds

response

success

{"status": 0,"data": {"cartProductVoList": [{"id": 2,"userId": 13,"productId": 2,"quantity": 1,"productName": "oppo R8","productSubtitle": "oppo促销进行中","productMainImage": "mainimage.jpg","productPrice": 2999.11,"productStatus": 1,"productTotalPrice": 2999.11,"productStock": 86,"productChecked": 1,"limitQuantity": "LIMIT_NUM_SUCCESS"}],"allChecked": true,"cartTotalPrice": 2999.11}
}

5.购物车选中某个商品

/cart/select.do

http://localhost:8080/cart/select.do?productId=1

request

productId

response

success

{"status": 0,"data": {"cartProductVoList": [{"id": 2,"userId": 13,"productId": 2,"quantity": 1,"productName": "oppo R8","productSubtitle": "oppo促销进行中","productMainImage": "mainimage.jpg","productPrice": 2999.11,"productStatus": 1,"productTotalPrice": 2999.11,"productStock": 86,"productChecked": 1,"limitQuantity": "LIMIT_NUM_SUCCESS"}],"allChecked": true,"cartTotalPrice": 2999.11}
}

6.购物车取消选中某个商品

/cart/un_select.do

http://localhost:8080/cart/un_select.do?productId=2

注意返回值中的cartTotalPrice,如果反选之后总价的变化

request

productId

response

success

{"status": 0,"data": {"cartProductVoList": [{"id": 2,"userId": 13,"productId": 2,"quantity": 1,"productName": "oppo R8","productSubtitle": "oppo促销进行中","productMainImage": "mainimage.jpg","productPrice": 2999.11,"productStatus": 1,"productTotalPrice": 2999.11,"productStock": 86,"productChecked": 0,"limitQuantity": "LIMIT_NUM_SUCCESS"}],"allChecked": true,"cartTotalPrice": 0}
}

7.查询在购物车里的产品数量

/cart/getcartproduct_count.do

http://localhost:8080/cart/getcartproduct_count.do

未登录返回0

request

response

success

{"status": 0,"data": 0}

8.购物车全选

/cart/select_all.do

http://localhost:8080/cart/select_all.do

注意返回值中的cartTotalPrice的变化

request

response

success

{"status": 0,"data": {"cartProductVoList": [{"id": 2,"userId": 13,"productId": 2,"quantity": 1,"productName": "oppo R8","productSubtitle": "oppo促销进行中","productMainImage": "mainimage.jpg","productPrice": 2999.11,"productStatus": 1,"productTotalPrice": 2999.11,"productStock": 86,"productChecked": 0,"limitQuantity": "LIMIT_NUM_SUCCESS"}],"allChecked": true,"cartTotalPrice": 2999.11}
}

9.购物车取消全选

/cart/unselectall.do

http://localhost:8080/cart/unselectall.do

注意返回值中的cartTotalPrice总价的变化

request

response

success

{"status": 0,"data": {"cartProductVoList": [{"id": 2,"userId": 13,"productId": 2,"quantity": 1,"productName": "oppo R8","productSubtitle": "oppo促销进行中","productMainImage": "mainimage.jpg","productPrice": 2999.11,"productStatus": 1,"productTotalPrice": 2999.11,"productStock": 86,"productChecked": 0,"limitQuantity": "LIMIT_NUM_SUCCESS"}],"allChecked": true,"cartTotalPrice": 0}
}

收货地址模块

数据库表设计

收货地址表file

CREATE TABLE‘mmall_ shipping (
'id' int(11) NOT NULL AUTO_INCREMENT,
'user_ id'  int(11) DEFAULT NULL COMMENT '用户id'',
'receiver_ name' varchar(20) DEFAULT NULL COMMENT '收货姓名',
'receiver_ phone' varchar(20) DEFAULT NULL COMMENT '收货固定电话',
'receiver_ _mobile' varchar(20) DEFAULT NULL COMMENT ' 收货移动电话'',
'receiver_ province' varchar(20) DEFAULT NULL COMMENT '省份',
'receiver_ _city' varchar(20) DEFAULT NULL COMMENT ' 城市'',
'receiver_ _district' varchar (20) DEFAULT NULL COMMENT '区/县'',
'receiver_ address'  varchar(200) DEFAULT NULL COMMENT ' 详细地址',
'receiver_ zip'  varchar(6) DEFAULT NULL COMMENT ' 邮编' ,
'create_ _time' datetime DEFAULT NULL,
'update_ time' datetime DEFAULT NULL,
PRIMARY KEY ('id')
) ENGINE=InnoDB AUTO_ INCREMENT=32 DEFAULT CHARSET=utf8

功能

添加地址删除地址更新地址地址列表地址分页地址详情

涉及知识点

SpringMVC数据绑定中对象绑定mybatis自动生成主键、配置和使用如何避免横向越权漏洞的巩固

接口设计

【前台】

1.添加地址

/shipping/add.do

http://localhost:8080/shipping/add.do?userId=1&receiverName=geely&receiverPhone=010&receiverMobile=18688888888&receiverProvince=北京&receiverCity=北京市&receiverAddress=中关村&receiverZip=100000

request

userId=1
receiverName=geely
receiverPhone=010
receiverMobile=18688888888
receiverProvince=北京
receiverCity=北京市
receiverAddress=中关村
receiverZip=100000

response

success

{"status": 0,"msg": "新建地址成功","data": {"shippingId": 28}
}

2.删除地址

/shipping/del.do

request

shippingId

response

success

{"status": 0,"msg": "删除地址成功"
}

3.登录状态更新地址

/shipping/update.do

http://localhost:8080/shipping/update.do?id=5&receiverName=AAA&receiverPhone=010&receiverMobile=18688888888&receiverProvince=北京&receiverCity=北京市&receiverDistrict=海淀区&receiverAddress=中关村&receiverZip=100000

request

id=1
receiverName=geely
receiverPhone=010
receiverMobile=18688888888
receiverProvince=北京
receiverCity=北京市
receiverAddress=中关村
receiverZip=100000

response

success

{"status": 0,"msg": "更新地址成功"
}

4.选中查看具体的地址

/shipping/select.do

request

shippingId

response

success

{"status": 0,"data": {"id": 4,"userId": 13,"receiverName": "geely","receiverPhone": "010","receiverMobile": "18688888888","receiverProvince": "北京","receiverCity": "北京市","receiverAddress": "中关村","receiverZip": "100000","createTime": 1485066385000,"updateTime": 1485066385000}
}

5.地址列表

/shipping/list.do

http://localhost:8080/shipping/list.do

request

pageNum(默认1),pageSize(默认10)

response

success

{"status": 0,"data": {"pageNum": 1,"pageSize": 10,"size": 2,"orderBy": null,"startRow": 1,"endRow": 2,"total": 2,"pages": 1,"list": [{"id": 4,"userId": 13,"receiverName": "geely","receiverPhone": "010","receiverMobile": "18688888888","receiverProvince": "北京","receiverCity": "北京市","receiverAddress": "中关村","receiverZip": "100000","createTime": 1485066385000,"updateTime": 1485066385000},{"id": 5,"userId": 13,"receiverName": "AAA","receiverPhone": "010","receiverMobile": "18688888888","receiverProvince": "北京","receiverCity": "北京市","receiverAddress": "中关村","receiverZip": "100000","createTime": 1485066392000,"updateTime": 1485075875000}],"firstPage": 1,"prePage": 0,"nextPage": 0,"lastPage": 1,"isFirstPage": true,"isLastPage": true,"hasPreviousPage": false,"hasNextPage": false,"navigatePages": 8,"navigatepageNums": [1]}
}

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

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

相关文章

【笔记6-支付及订单模块】从0开始 独立完成企业级Java电商网站开发(服务端)

支付模块 实际开发工作中经常会遇见如下场景,一个支付模块,一个订单模块,有一定依赖,一个同事负责支付模块,另一个同事负责订单模块,但是开发支付模块的时候要依赖订单模块的相关类 ,方法&…

【笔记8-Redis分布式锁】从0开始 独立完成企业级Java电商网站开发(服务端)

Redis分布式锁 Redis分布式锁命令 setnx当且仅当 key 不存在。若给定的 key 已经存在,则 setnx不做任何动作。setnx 是『set if not exists』(如果不存在,则 set)的简写,setnx 具有原子性。 getset先 get 旧值,后set 新值,并返回…

多网站项目的 CSS 架构

复杂的 CSS 架构,可不是你在科班里能学到的东西。 我在互联网行业的第四份工作,是在我国一家领先的媒体新闻公司中任职一名 CSS/HTML 专家,我的主要职责就是开发可重用的、可扩展的、用于多网站的 CSS 架构。 在本文中,我将与大家…

部署网站(虚拟主机,MVC站点,前后台,百度编辑器)出现的问题

开发工具:Vs2010 数据库:Sql2008 部署主机:万网虚拟主机,支持.NET 4.0 / 4.5 SQL2008 等.. 出现问题1:无法访问页面 出现问题2:后台无法访问 出现问题3:使用的编辑器是百度的UM,有使用到的地方…

电商详情页缓存架构(一)电商网站的商品详情页架构

小型电商网站的商品详情页的页面静态化架构以及其缺陷 小型电商网站,一般使用页面静态化的方案,提前将数据渲染到模板中。 问题:每次模板变更,模板对应的所有数据需要全部重新渲染 大型电商网站的异步多级缓存构建 nginx 数据本…

云南楚雄做网站找哪家?

2019独角兽企业重金招聘Python工程师标准>>> 云南楚雄做网站哪家强? 点击进入:http://www.anline.cn 转载于:https://my.oschina.net/jiankian/blog/614142

一分钟了解阿里云产品:利用Rsync服务SLB下多台centos服务器网站文件同步更新...

易淘帮使用了SLB负载均衡,为了保证SLB下两台服务器下面的网站文件同步,易淘帮采用了rsync服务进行同步,每三分钟进行同步一次。 简单介绍下reync,rsync—remote synchronize是类unix系统下的数据镜像备份工具,它的特性…

从全球最大同性交友网站抄了一份不一样的2048小游戏

大家好,我是“前端点线面”,一位新生代农民工,欢迎关注我获取最新前端知识和《前端百题斩》pdf版(包括JS基础篇、浏览器篇、网络篇共计50个章节,5万多字),此外有喜欢划水的老铁们,可以加我进“前端划水群”…

10个大佬经常逛的小网站,各个爆款!!!

欢迎和号主【前端点线面】进群盘算法,此外本号干货满满:14个门类(100篇原创)内容(又干又硬)、《前端百题斩》pdf(助力薪资double)、20篇思维导图(知识系统化、记忆简单化…

一步步构建大型网站架构

之前我简单向大家介绍了各个知名大型网站的架构,MySpace的五个里程碑、Flickr的架构、YouTube的架构、PlentyOfFish的架构、WikiPedia的架构。这几个都很典型,我们可以从中获取很多有关网站架构方面的知识,看了之后你会发现你原来的想法很可能…

【问底】徐汉彬:大规模网站架构的缓存机制和几何分形学

【导读】徐汉彬曾在阿里巴巴和腾讯从事4年多的技术研发工作,负责过日请求量过亿的Web系统升级与重构,目前在小满科技创业,从事SaaS服务技术建设。 在过去的工作中,徐汉彬从事各类缓存建设和优化,遇到问题无数&#xf…

npm的gh-pages结合github发布repository网站

如果你在使用github而且创建了一个新的仓库,你会发现,在仓库设置里面有结合github pages发布网站的设置,如下所示: 用过github pages都知道它可以做为静态网站来处理比如html和markdown的文件产生预览效果,我之前做过类…

大型网站技术架构(二)架构模式

2019独角兽企业重金招聘Python工程师标准>>> 每一个模式描述了一个在我们周围不断重复发生的问题及该问题解决方案的核心。这样,你就能一次又一次地使用该方案而不必做重复工作。 所谓网站架构模式即为了解决大型网站面临的高并发访问、海量数据、高可靠…

大型网站技术架构(四)网站的高性能架构

2019独角兽企业重金招聘Python工程师标准>>> 网站性能是客观的指标,可以具体体现到响应时间、吞吐量、并发数、性能计数器等技术指标。 1、性能测试指标 1.1 响应时间 指应用执行一个操作需要的时间,指从发出请求到最后收到响应数据所需要的时…

网站安全认证系统的设计变迁

网站在从小到大的发展历程中,安全认证系统是如何变迁的? 下面我们从其发展的几个阶段来分下: 阶段1: 起步,注册用户很少,两台服务器,一台应用服务器,一台数据库服务器。 用户登陆后在…

如何通过IP地址来访问网站

今天我们写极少量的代码,来实现用IP地址来访问一个网站。步骤如下: 打开命令提示符,输入以下代码: (这里用CSDN官网https://www.csdn.net/为例) 输入代码ping csdn.net /n 5 复制上面正在 Ping csdn.net […

网站推荐——洛谷

粉丝福利 【洛谷】(链接在最后)是一个我感觉非常良心的网站。自从五月以来,我一直在学习C语言,明年参加CSP大赛,自然少不了刷题。 这个网站我觉得最好的地方,就是它有很多比赛的题库: 有很多…

SEO和SEM策略:建立工作关系

SEO和SEM策略:建立工作关系 原文地址http://www.semorseo.com/1601.html SEO和SEM策略之间的关系将互联网营销的两个方面联系在一起。通过凝聚力,SEO和SEM关系导致更有效的整体策略。许多策略可以利用您的SEO来帮助您的SEM,反之亦然。 创建有…

Java小应用目录快速变网站

1. 简介 快速将一个目录变成静态站点的Java小应用 2. 程序下载 https://github.com/broncho/oss/raw/master/blog/directory-website-1.0.0.jar 3. 依赖环境 JRE 1.6 4. 使用说明 5. 运行 转载于:https://blog.51cto.com/aiilive/2285524

chrome v69 设置网站允许 flash

为什么80%的码农都做不了架构师?>>> **问题描述:**升级 Chrome V69 以后,发现之前通过 Setting -> Content Settings -> Flash -> Allow 列表里添加的允许运行 flash 的网站列表已经没有了,而且也没有了新增…