当前位置: 首页 > news >正文

java基于ssm+vue+elementui的水果生鲜销售购物商城

网络购物己经成为一个常态化的消费手段,足不出户即可享受互联网发展的红利,对于购物商城的应用,普通消费者目前普遍使用。水果生鲜作为一个大众消费的商品,由于其健康的特点,也越来越为大家喜欢,本系统是一个垂直电商平台,主要针对水果生鲜实现在线销售,也可以通过后台发布商品改成其它的电商购物平台。 本系统主要基于ssm框架开发实现,实现了一个以水果生鲜为主题的商城系统。在本商城系统中,可以实现在线购买水果生鲜,在线支付,管理个人订单,管理个人收货地址,确认收货等功能。用户浏览商城的水果生鲜产品后可以将水果生鲜商品添加到购物车中,然后下单支付购买。用户登陆后可以在个人中心中管理自己的购物车信息、订单信息、收货地址信息等。同样在商城前端页面中提供了全文搜索功能,用户可以根据水果生鲜的相关功效或禁忌来查询符合自己要的水果生鲜商品。请添加图片描述
前台模块
(1)注册登录:用于会员注册的登录,登录时可以选择保存密码。
(2)商品浏览:对所有商品进行浏览以便选购。
(3)商品搜索:根据关键名词可以对所有的商品进行搜索。
(4 推荐商品:最受欢迎的商品展示给用户
(5)个人订单管理:对购买商品后的订单进行管理删除等处理。
(6)购物车:用户可以进行添加购物车,删除购物车等操作。
后台模块
(1)商品管理:包括商品的添加、修改删除、标记。管理商品分类且对商品数量进行统计。
(2)订单管理:管理员对订单的操作,发货后对订单做出发货标记。并且可以对订单统计生成销售报表。
(3)商品分类管理,对商品进行分类,方便用户根据分类查找所需的商品。
(4)会员管理:搜索查看会员信息。
请添加图片描述
环境需要
1.运行环境:最好是java jdk 1.8,这是目前最稳定的JDK也是被使用最多的JDK版本。
2.IDE环境:IDEA,Eclipse都可以。推荐IDEA;
3.tomcat环境:Tomcat7/Tomcat8/Tomcat9版本均可
4.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS;
5.数据库:MySql 5.7版本;
6.是否Maven项目:是;

技术栈

  1. 后端:Spring+SpringMVC+Mybatis+Springboot
  2. 前端:vue+CSS+JavaScript+jQuery+elementui

请添加图片描述


/**
 * 登录相关
 */
@RequestMapping("users")
@RestController
public class UserController{
	
	@Autowired
	private UserService userService;
	
	@Autowired
	private TokenService tokenService;

	/**
	 * 登录
	 */
	@IgnoreAuth
	@PostMapping(value = "/login")
	public R login(String username, String password, String captcha, HttpServletRequest request) {
		UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
		if(user==null || !user.getPassword().equals(password)) {
			return R.error("账号或密码不正确");
		}
		String token = tokenService.generateToken(user.getId(),username, "users", user.getRole());
		return R.ok().put("token", token);
	}
	
	/**
	 * 注册
	 */
	@IgnoreAuth
	@PostMapping(value = "/register")
	public R register(@RequestBody UserEntity user){
//    	ValidatorUtils.validateEntity(user);
    	if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
    		return R.error("用户已存在");
    	}
        userService.insert(user);
        return R.ok();
    }

	/**
	 * 退出
	 */
	@GetMapping(value = "logout")
	public R logout(HttpServletRequest request) {
		request.getSession().invalidate();
		return R.ok("退出成功");
	}
	
	/**
     * 密码重置
     */
    @IgnoreAuth
	@RequestMapping(value = "/resetPass")
    public R resetPass(String username, HttpServletRequest request){
    	UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
    	if(user==null) {
    		return R.error("账号不存在");
    	}
    	user.setPassword("123456");
        userService.update(user,null);
        return R.ok("密码已重置为:123456");
    }
	
	/**
     * 列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,UserEntity user){
        EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
    	PageUtils page = userService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));
        return R.ok().put("data", page);
    }

	/**
     * 列表
     */
    @RequestMapping("/list")
    public R list( UserEntity user){
       	EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
      	ew.allEq(MPUtil.allEQMapPre( user, "user")); 
        return R.ok().put("data", userService.selectListView(ew));
    }

    /**
     * 信息
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") String id){
        UserEntity user = userService.selectById(id);
        return R.ok().put("data", user);
    }
    
    /**
     * 获取用户的session用户信息
     */
    @RequestMapping("/session")
    public R getCurrUser(HttpServletRequest request){
    	Long id = (Long)request.getSession().getAttribute("userId");
        UserEntity user = userService.selectById(id);
        return R.ok().put("data", user);
    }

    /**
     * 保存
     */
    @PostMapping("/save")
    public R save(@RequestBody UserEntity user){
//    	ValidatorUtils.validateEntity(user);
    	if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
    		return R.error("用户已存在");
    	}
        userService.insert(user);
        return R.ok();
    }

    /**
     * 修改
     */
    @RequestMapping("/update")
    public R update(@RequestBody UserEntity user){
//        ValidatorUtils.validateEntity(user);
        userService.updateById(user);//全部更新
        return R.ok();
    }

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        userService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
}

请添加图片描述
系统权限按管理员及用户划分。
管理员:管理员使用本系统涉到的功能主要有:首页、个人中心、用户管理、商品信息管理、类型管理、系统管理、订单管理等功能
用户:用户登录注册后可以实现首页、商品信息、广告信息、个人中心、购物车等功能
请添加图片描述
请添加图片描述
请添加图片描述
目录
1 绪论 1
1.1课题背景 1
1.2课题研究现状 1
1.3初步设计方法与实施方案 2
1.4本文研究内容 2
2 系统开发环境 4
2.1 使用工具简介 4
2.2 环境配置 4
2.3 B/S结构简介 4
2.4 MySQL数据库 5
2.5 框架介绍 5
3 系统分析 6
3.1系统可行性分析 6
3.1.1经济可行性 6
3.1.2技术可行性 6
3.1.3运行可行性 6
3.2系统现状分析 6
3.3功能需求分析 7
3.4系统设计规则与运行环境 8
3.5系统流程分析 8
3.5.1操作流程 8
3.5.2添加信息流程 9
3.5.3删除信息流程 10
4 系统设计 11
4.1系统设计主要功能 11
4.2数据库设计 11
4.2.1数据库设计规范 11
4.2.2 E/R图 11
4.2.3数据表 12
5 系统实现 25
5.1系统功能模块 25
5.2后台模块 27
5.2.1管理员功能模块 27
5.2.2用户功能模块 30
6 系统测试 33
6.1功能测试 33
6.2可用性测试 33
6.3性能测试 34
6.4测试结果分析 34
7结 论 35
参考文献 36
致 谢 37

相关文章:

  • kafka知识点总结
  • 【vue3】06. 跟着官网学习vue3
  • 任务十一 BERT
  • MyBatis实现多层级collection嵌套查询
  • Containerd【轻量级容器管理工具】
  • 计算机毕业设计ssm+vue基本微信小程序的图书馆座位管理系统
  • 腾讯核心高级架构师汇总Java全栈知识点笔记,“吃透”后成功上岸!
  • 169.多数元素
  • webpack拓展篇(六十七):webpack5 新特性解析
  • CF515E Drazil and Park【思维+线段树】
  • CodeForces 1717E【线性筛】
  • Java程序猿搬砖笔记(九)
  • ROS1云课→16机器人模型从urdf到xacro
  • 花好月圆│以代码寄相思,绘嫦娥之奔月
  • WiFi基础学习到实战(一)
  • 【挥舞JS】JS实现继承,封装一个extends方法
  • 11111111
  • axios请求、和返回数据拦截,统一请求报错提示_012
  • co模块的前端实现
  • ES10 特性的完整指南
  • Gradle 5.0 正式版发布
  • PV统计优化设计
  • React 快速上手 - 07 前端路由 react-router
  • 阿里中间件开源组件:Sentinel 0.2.0正式发布
  • 编写高质量JavaScript代码之并发
  • 对超线程几个不同角度的解释
  • 记录一下第一次使用npm
  • 聚类分析——Kmeans
  • 前端代码风格自动化系列(二)之Commitlint
  • 深度解析利用ES6进行Promise封装总结
  • 实战|智能家居行业移动应用性能分析
  • 算法-图和图算法
  • 突破自己的技术思维
  • 我这样减少了26.5M Java内存!
  • 学习使用ExpressJS 4.0中的新Router
  • 源码之下无秘密 ── 做最好的 Netty 源码分析教程
  • 最近的计划
  • 关于Android全面屏虚拟导航栏的适配总结
  • (LeetCode C++)盛最多水的容器
  • (MonoGame从入门到放弃-1) MonoGame环境搭建
  • (pt可视化)利用torch的make_grid进行张量可视化
  • (八)五种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (九十四)函数和二维数组
  • (论文阅读30/100)Convolutional Pose Machines
  • ***利用Ms05002溢出找“肉鸡
  • .bat批处理(二):%0 %1——给批处理脚本传递参数
  • .htaccess配置重写url引擎
  • .NET CLR基本术语
  • .Net MVC + EF搭建学生管理系统
  • .Net 中的反射(动态创建类型实例) - Part.4(转自http://www.tracefact.net/CLR-and-Framework/Reflection-Part4.aspx)...
  • .net2005怎么读string形的xml,不是xml文件。
  • .NetCore实践篇:分布式监控Zipkin持久化之殇
  • ::before和::after 常见的用法
  • @angular/cli项目构建--http(2)
  • @kafkalistener消费不到消息_消息队列对战之RabbitMq 大战 kafka