【笔记4-商品模块】从0开始 独立完成企业级Java电商网站开发(服务端)

news/2024/5/19 13:56:59/文章来源:https://chenchenchen.blog.csdn.net/article/details/104263514

分类管理模块

数据表结构设计

分类表file

CREATE TABLE、mmall_ category' (
'id' int(11) NOT NULL AUTO_ INCREMENT COMMENT ' 类别Id',
'parent_ id' int(11) DEFAULT NULL COMMENT '父类 别id当id=0时说明是根节点,一级类别' ,
'name' varchar(50) DEFAULT NULL COMMENT ' 类别名称',
'status' tinyint(1) DEFAULT '1' COMMENT ' 类别状态1-正常,2-已废弃',
'sort_order' int(4) DEFAULT NULL COMMENT ' 排序编号,同类展示顺序,数值相等则自然排序' ,
'create_ time' datetime DEFAULT NULL COMMENT '创建时间',
'update_ time' datetime DEFAULT NULL COMMENT ' 更新时间' ,
PRIMARY KEY ( id')
) ENGINE=InnoDB AUTO_ INCREMENT=100032 DEFAULT CHARSET=utf8

1.parent_id是因为分类采用树状分类,递归需要边界条件。2.父类别id=0时,说明是根节点,一级类别,此时为return条件。3.status可选为1或2,1表示类别正常,2表示该类别已废弃。

涉及知识点

  • 如何处理复杂对象排重
  • 如何设计及封装无限层级的树状数据结构
    通过设置parent_id及id,id=0时,说明是根节点,一级类别
  • 递归算法的设计思想
    查询当前节点下面的子节点,以及子节点的子节点

file

  • 重写hashcode和equal的注意事项

equals() 的作用是 用来判断两个对象是否相等

//没有重写equals()
Person p1 = new Person("eee", 100);Person p2 = new Person("eee", 100);
System.out.printf("%s\n", p1.equals(p2));  //false

重写了Person的equals()函数:当两个Person对象的 name 和 age 都相等,则返回true。

    /*** @desc Person类。*/private static class Person {int age;String name;public Person(String name, int age) {this.name = name;this.age = age;}public String toString() {return name   " - "  age;}/** * @desc 覆盖equals方法 */  @Overridepublic boolean equals(Object obj){  if(obj == null){  return false;  }  //如果是同一个对象返回true,反之返回false  if(this == obj){  return true;  }  //判断是否类型相同  if(this.getClass() != obj.getClass()){  return false;  }  Person person = (Person)obj;  return name.equals(person.name) && age==person.age;  } }

重写equal 和hashcode方法使用==操作符检查“参数是否为这个对象的引用”;使用instanceof操作符检查“参数是否为正确的类型”;对于类中的关键属性,检查参数传入对象的属性是否与之相匹配;编写完equals方法后,问自己它是否满足对称性、传递性、一致性;重写equals时总是要重写hashCode;不要将equals方法参数中的Object对象替换为其他的类型,在重写时不要忘掉@Override注解。

接口设计

1.获取品类子节点(平级)

http://localhost:8080/manage/category/get_category.dohttp://localhost:8080/manage/category/get_category.do?categoryId=0http://localhost:8080/manage/category/get_category.do?categoryId=2

/manage/category/get_category.do

request

categoryId(default=0)

response

success


{"status": 0,"data": [{"id": 2,"parentId": 1,"name": "手机","status": true,"sortOrder": 3,"createTime": 1479622913000,"updateTime": 1479622913000},{"id": 4,"parentId": 1,"name": "移动座机","status": true,"sortOrder": 5,"createTime": 1480059936000,"updateTime": 1480491941000}]
}

2.增加节点

/manage/category/add_category.do

request

parentId(default=0)
categoryName

response

success

{"status": 0,"msg": "添加品类成功"
}

3.修改品类名字

http://localhost:8080/manage/category/setcategoryname.do?categoryId=999&categoryName=嘻嘻http://localhost:8080/manage/category/setcategoryname.do?categoryId=1&categoryName=嘻嘻

/manage/category/setcategoryname.do

request

categoryId
categoryName

response

success

{"status": 0,"msg": "更新品类名字成功"
}

4.获取当前分类id及递归子节点categoryId

http://localhost:8080/manage/category/getdeepcategory.do?categoryId=100001

/manage/category/getdeepcategory.do

request

categoryId

response

success

{"status": 0,"data": [100009,100010,100001,100006,100007,100008]
}

商品模块

数据表结构设计

产品表file

create table mmall_product(id int(11) primary key auto_increment,category_id int(11),sub_images text,price decimal(20,2),status int(6) DEFAULT 1
)

1.category_id将来在表关系中要采用外链。2.图片url存放相对地址,若图片服务器迁移或者域名修改,只需要修改前缀即可3.text格式可以存放的内容比varchar更大,存放图片地址,采用json格式,用于拓展。主图取图片地址中的第一张。4.price采用decimal(20,2)说明价格整体最多20位(其中有两位是小数)。后面会学习如何解决丢失精度的问题。5.status为商品状态,1-在售,2-下架,3-删除。

涉及知识点

FTP服务的对接、SpringMVC文件上传

流读取Properties配置文件的PropertiesUtil工具类

file

joda-time快速入门 静态块

Mybatis-PageHelper高校准确地分页及动态排序

file

file

Mybatis对List遍历的实现方法

Mybatis对where语句动态拼装的几个版本演变

file

file

POJO、BO、VO 和 POJO、VO

file

功能

前台功能

产品搜索动态排序列表商品详情

后台功能

商品列表商品搜素图片上传富文本上传商品详情商品上下架增加商品更新商品

接口设计

【门户】

1.产品搜索及动态排序List

/product/list.do

http://localhost:8080/product/list.do?keyword=&categoryId=1&orderBy=price_desc

request

categoryId
keyword
pageNum(default=1)
pageSize(default=10)
orderBy(default=""):排序参数:例如price_desc,price_asc

response

success

{"status": 0,"data": {"pageNum": 1,"pageSize": 10,"size": 2,"orderBy": null,"startRow": 1,"endRow": 2,"total": 2,"pages": 1,"list": [{"id": 1,"categoryId": 3,"name": "iphone7","subtitle": "双十一促销","mainImage": "mainimage.jpg","status":1,"price": 7199.22},{"id": 2,"categoryId": 2,"name": "oppo R8","subtitle": "oppo促销进行中","mainImage": "mainimage.jpg","status":1,"price": 2999.11}],"firstPage": 1,"prePage": 0,"nextPage": 0,"lastPage": 1,"isFirstPage": true,"isLastPage": true,"hasPreviousPage": false,"hasNextPage": false,"navigatePages": 8,"navigatepageNums": [1]}
}

2.产品detail

/product/detail.do

http://localhost:8080/product/detail.do?productId=2

request

productId

response

success

{"status": 0,"data": {"id": 2,"categoryId": 2,"name": "oppo R8","subtitle": "oppo促销进行中","mainImage": "mainimage.jpg","subImages": "[\"mmall/aa.jpg\",\"mmall/bb.jpg\",\"mmall/cc.jpg\",\"mmall/dd.jpg\",\"mmall/ee.jpg\"]","detail": "richtext","price": 2999.11,"stock": 71,"status": 1,"createTime": "2016-11-20 14:21:53","updateTime": "2016-11-20 14:21:53"}
}

【后台】

1.产品list

http://localhost:8080/manage/product/list.do

/manage/product/list.do

request

pageNum(default=1)
pageSize(default=10)

response

success

{"status": 0,"data": {"pageNum": 1,"pageSize": 10,"size": 2,"orderBy": null,"startRow": 1,"endRow": 2,"total": 2,"pages": 1,"list": [{"id": 1,"categoryId": 3,"name": "iphone7","subtitle": "双十一促销","mainImage": "mainimage.jpg","status":1,"price": 7199.22},{"id": 2,"categoryId": 2,"name": "oppo R8","subtitle": "oppo促销进行中","mainImage": "mainimage.jpg","status":1,"price": 2999.11}],"firstPage": 1,"prePage": 0,"nextPage": 0,"lastPage": 1,"isFirstPage": true,"isLastPage": true,"hasPreviousPage": false,"hasNextPage": false,"navigatePages": 8,"navigatepageNums": [1]}
}

2.产品搜索

http://localhost:8080/manage/product/search.do?productName=p

http://localhost:8080/manage/product/search.do?productId=1

/manage/product/search.do

request

productName
productId
pageNum(default=1)
pageSize(default=10)

response

success

{"status": 0,"data": {"pageNum": 1,"pageSize": 10,"size": 1,"orderBy": null,"startRow": 1,"endRow": 1,"total": 1,"pages": 1,"list": [{"id": 1,"categoryId": 3,"name": "iphone7","subtitle": "双十一促销","mainImage": "mainimage.jpg","price": 7199.22}],"firstPage": 1,"prePage": 0,"nextPage": 0,"lastPage": 1,"isFirstPage": true,"isLastPage": true,"hasPreviousPage": false,"hasNextPage": false,"navigatePages": 8,"navigatepageNums": [1]}
}

3.图片上传

/manage/product/upload.do

request


<form name="form2" action="/manage/product/upload.do" method="post"  enctype="multipart/form-data"><input type="file" name="upload_file"><input type="submit" value="upload"/>
</form>

response

success

{"status": 0,"data": {"uri": "e6604558-c0ff-41b9-b6e1-30787a1e3412.jpg","url": "http://img.happymmall.com/e6604558-c0ff-41b9-b6e1-30787a1e3412.jpg"}
}

4.产品详情

http://localhost:8080/manage/product/detail.do?productId=2

/manage/product/detail.do

request

productId

response

success

{"status": 0,"data": {"id": 2,"categoryId": 2,"parentCategoryId":1,"name": "oppo R8","subtitle": "oppo促销进行中","imageHost": "http://img.happymmall.com/","mainImage": "mainimage.jpg","subImages": "[\"mmall/aa.jpg\",\"mmall/bb.jpg\",\"mmall/cc.jpg\",\"mmall/dd.jpg\",\"mmall/ee.jpg\"]","detail": "richtext","price": 2999.11,"stock": 71,"status": 1,"createTime": "2016-11-20 14:21:53","updateTime": "2016-11-20 14:21:53"}
}

5.产品上下架

http://localhost:8080/manage/product/setsalestatus.do?productId=1&status=1

/manage/product/setsalestatus.do

request

productId
status

response

success

{"status": 0,"data": "修改产品状态成功"
}

6.新增OR更新产品

新增

新增http://localhost:8080/manage/product/save.do?categoryId=1&name=三星洗衣机&subtitle=三星大促销&subImages=test.jpg,11.jpg,2.jpg,3.jpg&detail=detailtext&price=1000&stock=100&status=1

更新http://localhost:8080/manage/product/save.do?categoryId=1&name=三星洗衣机&subtitle=三星大促销&subImages=test.jpg&detail=detailtext&price=1000&stock=100&status=1&id=3

/manage/product/save.do

request

categoryId=1&name=三星洗衣机&subtitle=三星大促销&mainImage=sss.jpg&subImages=test.jpg&detail=detailtext&price=1000&stock=100&status=1&id=3

response

success

{"status": 0,"data": "更新产品成功"
}

------

7.富文本上传图片

/manage/product/richtextimgupload.do

request

<form name="form2" action="/manage/product/upload.do" method="post"  enctype="multipart/form-data"><input type="file" name="upload_file"><input type="submit" value="upload"/>
</form>

response

success

{"file_path": "http://img.happymmall.com/5fb239f2-0007-40c1-b8e6-0dc11b22779c.jpg","msg": "上传成功","success": true
}

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

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

相关文章

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

购物车模块 数据库表设计 购物车表 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 COMMEN…

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

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

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

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

多网站项目的 CSS 架构

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

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

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

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

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

云南楚雄做网站找哪家?

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

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

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

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

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

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

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

一步步构建大型网站架构

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

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

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

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

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

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

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

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

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

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

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

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

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

网站推荐——洛谷

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

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

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

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