开发工具:IDEA
服务器:Tomcat9.0, jdk1.8
项目构建:maven
数据库:mysql5.7
系统分前后台,项目采用前后端分离
前端技术:vue+elementUI
服务端技术:springboot,mybatis-plus
本系统功能包括:
一、前台功能:
1.登录、注册、搜索商品
2.首页:轮播图、商品分类导航、最新商品、热门商品、销量排行榜
3.购物车:修改数量、删除购物车
4.商品详情:添加购物车、立即购买、添加收藏
5.我的订单:付款、取消订单、删除订单、确认收货、评价
6.个人中心::充值、修改个人信息
7.我的收藏::收藏列表、取消收藏
8.收货地址:新增地址、地址列表、修改地址、删除地址、
9.退出系统
二、后台功能:
1.首页:商品分类销量统计、公告
2.用户管理:新增、修改、删除、分页查询、配置角色
3.角色管理:新增、修改、删除、分页查询、分配权限
4.菜单管理:新增、修改、删除、分页查询
5.公告管理:新增、修改、删除、公告列表
6.日志管理:分页查询
7.轮播图管理:新增、修改、删除、分页查询
8.商品分类管理:新增、修改、删除、分页查询
9.商品管理:新增、修改、删除、分页查询
10.订单管理:分页查询、发货
11.个人信息、退出登录
文档截图:
N-127基于springboot,vue网上商城系统
前台截图:
后台截图:
package com.itjiaochen.controller;
import cn.hutool.core.date.DateUtil;
import com.auth0.jwt.JWT;
import com.itjiaochen.common.Result;
import com.itjiaochen.service.UserService;
import com.itjiaochen.entity.Goods;
import com.itjiaochen.service.GoodsService;
import com.itjiaochen.entity.User;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.math.BigDecimal;
import java.util.List;
@RestController
@RequestMapping("/api/goods")
public class GoodsController {
@Resource
private GoodsService goodsService;
@Resource
private HttpServletRequest request;
@Resource
private UserService userService;
public User getUser() {
String token = request.getHeader("token");
String username = JWT.decode(token).getAudience().get(0);
return userService.getOne(Wrappers.<User>lambdaQuery().eq(User::getUsername, username));
}
@PostMapping
public Result<?> save(@RequestBody Goods goods) {
goods.setCreateTime(DateUtil.now());
goodsService.save(goods);
return Result.success();
}
@PutMapping
public Result<?> update(@RequestBody Goods goods) {
goodsService.updateById(goods);
return Result.success();
}
@DeleteMapping("/{id}")
public Result<?> delete(@PathVariable Long id) {
goodsService.removeById(id);
return Result.success();
}
@GetMapping("/{id}")
public Result<?> findById(@PathVariable Long id) {
Goods goods = goodsService.getById(id);
goods.setRealPrice(goods.getPrice().multiply(BigDecimal.valueOf(goods.getDiscount())));
return Result.success(goods);
}
@GetMapping
public Result<?> findAll() {
List<Goods> list = goodsService.findAll();
return Result.success(list);
}
/**
* 推荐商品
* @return
*/
@GetMapping("/recommend")
public Result<?> recommend() {
List<Goods> list = goodsService.recommend();
return Result.success(list);
}
/**
* 最新商品
* @return
*/
@GetMapping("/news")
public Result<?> news() {
List<Goods> list = goodsService.news();
return Result.success(list);
}
/**
* 推热销商品
* @return
*/
@GetMapping("/sales")
public Result<?> sales() {
List<Goods> list = goodsService.sales();
return Result.success(list);
}
/**
* 根据分类id查询商品
* @param id
* @param pageNum
* @param pageSize
* @return
*/
@GetMapping("/byCategory/{id}")
public Result<?> findByCategory(@PathVariable Long id,
@RequestParam(required = false, defaultValue = "1") Integer pageNum,
@RequestParam(required = false, defaultValue = "10") Integer pageSize) {
IPage<Goods> page = goodsService.pageByCategory(new Page<>(pageNum, pageSize), id);
return Result.success(page);
}
@GetMapping("/page")
public Result<?> findPage(@RequestParam(required = false, defaultValue = "") String name,
@RequestParam(required = false, defaultValue = "1") Integer pageNum,
@RequestParam(required = false, defaultValue = "10") Integer pageSize) {
IPage<Goods> page = goodsService.findPage(new Page<>(pageNum, pageSize), name);
return Result.success(page);
}
}