目录
1、系统架构
后台: SpringBoot + Mybatis-plus + Mybatis + Hutool工具包 + lombok插件
前台:Vue + Vue Router + ELementUI + Axios
2、系统介绍
功能:首页推荐(默认根据用户买过的商品进行推荐,如果没买过则根据商品销量推荐)、轮播图管理、商品、订单、购物车、商品评论、商品评论点赞、商品收藏、商品点赞、订单支付、公告。
角色:管理员、商家、用户 后台功能:商品销量统计,用户管理,角色管理,菜单管理,公告管理,日志管理,轮播图管理,商品分类管理,商品管理,订单管理,地址管理。
3、运行环境
JDK:1.8
Node: 12.13.1
数据库:Mysql5.7 +
浏览器:Chrome
需要自己安装JDK、Node、Mysql、 IDEA 、Navicat等软件
4、系统演示
5、前端搭建
-
使用idea或vscode、hbuildx打开项目
-
配置npm源为国内镜像,否则下载会很慢(必须先下载安装好node)
npm config set registry https://registry.npm.taobao.org
-
执行
npm i
命令进行依赖的安装 -
执行
npm run serve
运行项目
6、功能展示
7、代码展示
package com.example.controller;
import cn.hutool.core.util.StrUtil;
import com.auth0.jwt.JWT;
import com.example.common.Result;
import com.example.service.UserService;
import com.example.entity.Address;
import com.example.service.AddressService;
import com.example.entity.User;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
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.util.List;
@RestController
@RequestMapping("/api/address")
public class AddressController {
@Resource
private AddressService addressService;
@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 Address address) {
addressService.save(address);
return Result.success();
}
@PutMapping
public Result<?> update(@RequestBody Address address) {
addressService.updateById(address);
return Result.success();
}
@DeleteMapping("/{id}")
public Result<?> delete(@PathVariable Long id) {
addressService.removeById(id);
return Result.success();
}
@GetMapping("/{id}")
public Result<?> findById(@PathVariable Long id) {
return Result.success(addressService.getById(id));
}
@GetMapping
public Result<?> findAll() {
LambdaQueryWrapper<Address> query = Wrappers.<Address>lambdaQuery().orderByDesc(Address::getId);
query.eq(Address::getUserId, getUser().getId());
List<Address> list = addressService.list(query);
return Result.success(list);
}
@GetMapping("/page")
public Result<?> findPage(
@RequestParam(required = false, defaultValue = "1") Integer pageNum,
@RequestParam(required = false, defaultValue = "10") Integer pageSize) {
LambdaQueryWrapper<Address> query = Wrappers.<Address>lambdaQuery().orderByDesc(Address::getId);
// query.eq(Address::getUserId, getUser().getId());
IPage<Address> page = addressService.page(new Page<>(pageNum, pageSize), query);
return Result.success(page);
}
@GetMapping("/page/front")
public Result<?> Front(
@RequestParam(required = false, defaultValue = "1") Integer pageNum,
@RequestParam(required = false, defaultValue = "10") Integer pageSize) {
User user = getUser();
if(user == null) {
return Result.success(new Page<>());
}
LambdaQueryWrapper<Address> query = Wrappers.<Address>lambdaQuery().orderByDesc(Address::getId);
query.eq(Address::getUserId, getUser().getId());
IPage<Address> page = addressService.page(new Page<>(pageNum, pageSize), query);
return Result.success(page);
}
}