基于Java+SpringBoot+vue+element实现家具购物销售网站详细设计和实现
前言介绍:
计算机的普及和互联网时代的到来使信息的发布和传播更加方便快捷。用户可以通过计算机上的浏览器访问多个应用系统,从中获取一些可以满足用户需求的管理系统。网站系统有时更像是一个大型“展示平台”,用户可以选择所需的信息进入系统查看首页、热销家具、折扣家具、公告资讯、个人中心、后台管理、客服。
系统所要实现的功能分析,对于现在网络方便的管理,据数据调查显示,相比过去增长较快,用户通过网上登录的方式已经形成了一种依赖,不管需要什么信息内容,直接上网查找,参考比较大,对家具销售电商平台的类型和特点的内容信息有了详细的了解,让用户更有针对性的选择。这也给用户带来非常大的方便,用户可以不用像传统的方式进行查看信息,这样不仅耽误自己的时间,而且比对过程比较单一,所以家具销售电商平台的开发不仅仅是能满足用户的需求,还能提高管理员的工作效率,减少原有不必要的工作量。
功能设计:
软件的用户界面是最直接接触的对象,包括是否允许用户使用简单方便,请求的响应时间,主图像的整体质量,整体布局的质量。
家具销售电商平台的设计基于现有的网络平台,可以实现用户管理及数据信息管理,方便管理员对后台进行管理有详细的了解及统计分析,随时查看信息状态。
系统功能设计是在系统开发和设计思想的总体任务的基础上完成的。该系统的主要任务是实现家具销售电商平台管理,使用户可以通过指令完成整个家具销售电商平台的操作。
从上面的描述中可以基本可以实现软件的功能:
1、开发实现家具销售电商平台的整个系统程序;
2、管理员;首页、个人中心、家具分类管理、热销家具管理、折扣家具管理、用户管理、订单评价管理、管理员管理、系统管理、订单管理等。
3、用户:首页、个人中心、订单评价管理、我的收藏管理、订单管理。
4、前台首页:首页、热销家具、折扣家具、公告资讯、个人中心、后台管理、购物车、客服等相应操作;
5、基础数据管理:实现系统基本信息的添加、修改及删除等操作,并且根据需求进行交流信息的查看及回复相应操作。
家具销售电商平台的设计主要是为了满足用户的实际需求。 因此,它需要通过Internet实现,因此它必须具备硬件和软件基础。该平台最终可以通过科学技术和各种方式达到支持智能化的信息管理的目的。因此,它必须具备网络家具销售电商平台管理所需的环境和各种资料,并保证实现开放性,模块性和实用性三个原则。
家具销售电商平台,主要包括管理员、用户二个权限角色,对于用户角色不同,所使用的功能模块相应不同。本家具销售电商平台结构,如下图所示。
功能截图:
用户登录注册:
系统网站首页:在系统首页可以查看首页、热销家具、折扣家具、公告资讯、个人中心、后台管理、购物车、客服等内容
家具商品详情:热销家具,在热销家具页面通过填写家具名称、分类、风格、类型、图片、规格、品牌、价格等信息进行立即提交,如图所示。
可以查看家具商品详情以及评论收藏等操作
家具下单加入购物车
下单购买操作:整个流程是完整通畅的
折旧家具:在折旧家具页面通过填写家具名称、分类、风格、类型、图片、规格、品牌、价格等信息进行立即提交、在折扣家具管理页面通过填写家具名称、分类、风格、类型、图片、规格、品牌、价格等信息进行立即提交操作
编辑 家具公告信息:点击查看家具列表信息
点击查看详情、可返回列表信息
个人中心模块:在个人中心可以查看修改个人信息、查看订单信息以及收货地址和收藏等模块的管理查看操作。
普通用户后台管理:
可以对个人信息、个人密码以及订单、收藏以及订单评价等进行操作查看等
订单状态以及收货等操作
超级管理员后台管理:
管理员通过点击后台管理,进入页面可以填写首页、个人中心、家具分类管理、热销家具管理、折扣家具管理、用户管理、订单评价管理、管理员管理、系统管理、订单管理等功能模块,进行相对应操作。
家具分类:
家具详情:管理员通过列表可以获取家具名称、分类、风格、类型、图片、规格、品牌、价格等信息,并进行详情、删除、修改操作,如图所示。
修改操作
用户管理:管理员通过列表可以获取用户名、密码、姓名、性别、头像、手机、邮箱等信息,并进行详情、删除、修改操作
订单评价管理:订单评价管理:管理员通过列表可以获取订单编号、评价标题、订单评分、评价日期、用户名、手机、审核回复、审核状态、审核等信息,并进行详情、删除、修改操作如图所示
评价管理员可以审核:
系统管理; 这里可以对公告信息、首页轮播图以及客服信息进行管理维护等操作
订单的管理:
代码实现:
/**
* 订单评价
* 后端接口
* @author
* @email
* @date 2022-01-15 12:19:26
*/
@RestController
@RequestMapping("/dingdanpingjia")
public class DingdanpingjiaController {
@Autowired
private DingdanpingjiaService dingdanpingjiaService;
/**
* 后端列表
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params,DingdanpingjiaEntity dingdanpingjia, HttpServletRequest request){
String tableName = request.getSession().getAttribute("tableName").toString();
if(tableName.equals("yonghu")) {
dingdanpingjia.setYonghuming((String)request.getSession().getAttribute("username"));
}
EntityWrapper<DingdanpingjiaEntity> ew = new EntityWrapper<DingdanpingjiaEntity>();
PageUtils page = dingdanpingjiaService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, dingdanpingjia), params), params));
return R.ok().put("data", page);
}
/**
* 前端列表
*/
@RequestMapping("/list")
public R list(@RequestParam Map<String, Object> params,DingdanpingjiaEntity dingdanpingjia, HttpServletRequest request){
EntityWrapper<DingdanpingjiaEntity> ew = new EntityWrapper<DingdanpingjiaEntity>();
PageUtils page = dingdanpingjiaService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, dingdanpingjia), params), params));
return R.ok().put("data", page);
}
/**
* 列表
*/
@RequestMapping("/lists")
public R list( DingdanpingjiaEntity dingdanpingjia){
EntityWrapper<DingdanpingjiaEntity> ew = new EntityWrapper<DingdanpingjiaEntity>();
ew.allEq(MPUtil.allEQMapPre( dingdanpingjia, "dingdanpingjia"));
return R.ok().put("data", dingdanpingjiaService.selectListView(ew));
}
/**
* 查询
*/
@RequestMapping("/query")
public R query(DingdanpingjiaEntity dingdanpingjia){
EntityWrapper< DingdanpingjiaEntity> ew = new EntityWrapper< DingdanpingjiaEntity>();
ew.allEq(MPUtil.allEQMapPre( dingdanpingjia, "dingdanpingjia"));
DingdanpingjiaView dingdanpingjiaView = dingdanpingjiaService.selectView(ew);
return R.ok("查询订单评价成功").put("data", dingdanpingjiaView);
}
/**
* 后端详情
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") Long id){
DingdanpingjiaEntity dingdanpingjia = dingdanpingjiaService.selectById(id);
return R.ok().put("data", dingdanpingjia);
}
/**
* 前端详情
*/
@RequestMapping("/detail/{id}")
public R detail(@PathVariable("id") Long id){
DingdanpingjiaEntity dingdanpingjia = dingdanpingjiaService.selectById(id);
return R.ok().put("data", dingdanpingjia);
}
/**
* 后端保存
*/
@RequestMapping("/save")
public R save(@RequestBody DingdanpingjiaEntity dingdanpingjia, HttpServletRequest request){
dingdanpingjia.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(dingdanpingjia);
dingdanpingjiaService.insert(dingdanpingjia);
return R.ok();
}
/**
* 前端保存
*/
@RequestMapping("/add")
public R add(@RequestBody DingdanpingjiaEntity dingdanpingjia, HttpServletRequest request){
dingdanpingjia.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(dingdanpingjia);
dingdanpingjiaService.insert(dingdanpingjia);
return R.ok();
}
/**
* 修改
*/
@RequestMapping("/update")
public R update(@RequestBody DingdanpingjiaEntity dingdanpingjia, HttpServletRequest request){
//ValidatorUtils.validateEntity(dingdanpingjia);
dingdanpingjiaService.updateById(dingdanpingjia);//全部更新
return R.ok();
}
/**
* 删除
*/
@RequestMapping("/delete")
public R delete(@RequestBody Long[] ids){
dingdanpingjiaService.deleteBatchIds(Arrays.asList(ids));
return R.ok();
}
/**
* 提醒接口
*/
@RequestMapping("/remind/{columnName}/{type}")
public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request,
@PathVariable("type") String type,@RequestParam Map<String, Object> map) {
map.put("column", columnName);
map.put("type", type);
if(type.equals("2")) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar c = Calendar.getInstance();
Date remindStartDate = null;
Date remindEndDate = null;
if(map.get("remindstart")!=null) {
Integer remindStart = Integer.parseInt(map.get("remindstart").toString());
c.setTime(new Date());
c.add(Calendar.DAY_OF_MONTH,remindStart);
remindStartDate = c.getTime();
map.put("remindstart", sdf.format(remindStartDate));
}
if(map.get("remindend")!=null) {
Integer remindEnd = Integer.parseInt(map.get("remindend").toString());
c.setTime(new Date());
c.add(Calendar.DAY_OF_MONTH,remindEnd);
remindEndDate = c.getTime();
map.put("remindend", sdf.format(remindEndDate));
}
}
Wrapper<DingdanpingjiaEntity> wrapper = new EntityWrapper<DingdanpingjiaEntity>();
if(map.get("remindstart")!=null) {
wrapper.ge(columnName, map.get("remindstart"));
}
if(map.get("remindend")!=null) {
wrapper.le(columnName, map.get("remindend"));
}
String tableName = request.getSession().getAttribute("tableName").toString();
if(tableName.equals("yonghu")) {
wrapper.eq("yonghuming", (String)request.getSession().getAttribute("username"));
}
int count = dingdanpingjiaService.selectCount(wrapper);
return R.ok().put("count", count);
}
}
数据设计:
数据库是信息系统的基础和核心。数据库设计的好坏直接影响到信息系统开发的成败。创建数据库表首先确定实体的属性和实体之间的关系。根据关系创建一个数据表。
实体ER图
数据库是整个软件编程中最重要的一个步骤,对于数据库问题主要是判定数据库的数量和结构公式的创建。家具销售电商平台使用的是Mysql进行对数据库进行管理,进行保证数据的安全性、稳定性等。概念模型的设计是为了抽象真实世界的信息,并对信息世界进行建模。它是数据库设计的强大工具。数据库概念模型设计可以通过E-R图描述现实世界的概念模型。系统的E-R图显示了系统中实体之间的链接。而且Mysql数据库是自我保护能力比较强的数据库,下图主要是对数据库实体的E-R图:
折扣家具管理实体属性图如图所示
订单评价管理实体属性图如图所示
论文参考:
大家点赞、收藏、关注、评论啦
打卡 文章 更新 275/ 365天
- 点赞
- 收藏
- 关注作者
评论(0)