基于javaweb的SpringBoot网上书城管理系统(java+springboot+maven+vue+elementui+axios+mysql)

运行环境

Java≥8、MySQL≥5.7、Node.js≥14

开发工具

后端:eclipse/idea/myeclipse/sts等均可配置运行
前端:WebStorm/VSCode/HBuilderX等均可

❗没学过node.js的不要搞前后端分离项目

适用

课程设计,大作业,毕业设计,项目练习,学习演示等

功能说明

371424140701

381424140701

391424140701

401424140701

421424140701

431424140701

441424140701

451424140701

461424140701

基于javaweb的SpringBoot网上书城管理系统(java+springboot+maven+vue+elementui+axios+mysql)

项目介绍

基于SpringBoot+Vue的网上书城系统(前后端分离项目) 本项目分为前后台,前台为普通用户登录,后台为管理员登录; 角色:管理员、用户 功能:首页推荐(默认根据用户买过的商品进行推荐,如果没买过则根据商品销量推荐)、轮播图管理、商品、订单、购物车、商品评论、商品评论点赞、商品收藏、商品点赞、订单支付、公告、权限控制等。

环境需要

1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。 2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA; 3.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS;  4.数据库:MySql 5.7/8.0版本均可; 5.是否Maven项目:是; 6.是否为前后端分离项目:是

技术栈

后台:SpringBoot+Mybatis-plus+Mybatis+lombok插件

前台:Vue+Vue Router+ELementUI+Axios

使用说明

先启动后端再启动前端 后端: 1. 使用Navicat或者其它工具,在mysql中创建对应sql文件名称的数据库,并导入项目的sql文件; 2. 使用IDEA/Eclipse/MyEclipse导入后端项目end文件夹,导入成功后请执行maven clean;maven install命令,然后运行; 3. 将项目中application.yml配置文件中的数据库配置改为自己的配置; 4. 运行项目,后端运行成功后再运行前端项目;

前端: 1、确保安装好node及npm,命令行切换到front所在路径 2、执行npm run serve启动项目

后台地址:http://localhost:8001/login 用户: tom/123456 管理员: admin/admin

书城首页展示:

添加购物车展示: 

 订单页面列表展示:

收藏夹页面展示:

 后台管理统计页面:

后台管理订单管理页面:

轮播图展示管理:

后台商品管理展示:

后台登录页面展示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
        return Result.success();
}

@GetMapping("/{id}")
public Result<?> findById(@PathVariable Long id) {
return Result.success(noticeService.getById(id));
}

@GetMapping
public Result<?> findAll() {
return Result.success(noticeService.list());
}

@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) {
LambdaQueryWrapper<Notice> query = Wrappers.<Notice>lambdaQuery().like(Notice::getTitle, name).orderByDesc(Notice::getId);;
return Result.success(noticeService.page(new Page<>(pageNum, pageSize), query));
}

}



@Service
public class LogService extends ServiceImpl<LogMapper, Log> {

@Resource
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
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 OrderGoods orderGoods) {
orderGoodsService.save(orderGoods);
return Result.success();
}

@PutMapping
public Result<?> update(@RequestBody OrderGoods orderGoods) {
orderGoodsService.updateById(orderGoods);
return Result.success();
}

@DeleteMapping("/{id}")
public Result<?> delete(@PathVariable Long id) {
orderGoodsService.removeById(id);
return Result.success();
}

@GetMapping("/{id}")
public Result<?> findById(@PathVariable Long id) {
return Result.success(orderGoodsService.getById(id));
}

@GetMapping
public Result<?> findAll() {
List<OrderGoods> list = orderGoodsService.list();
return Result.success(list);
}

@GetMapping("/page")
public Result<?> findPage(@RequestParam(required = false, defaultValue = "") String name,
@RequestParam(required = false, defaultValue = "1") Integer pageNum,
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
    }

@GetMapping("/{id}")
public Result<?> findById(@PathVariable Long id) {
return Result.success(noticeService.getById(id));
}

@GetMapping
public Result<?> findAll() {
return Result.success(noticeService.list());
}

@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) {
LambdaQueryWrapper<Notice> query = Wrappers.<Notice>lambdaQuery().like(Notice::getTitle, name).orderByDesc(Notice::getId);;
return Result.success(noticeService.page(new Page<>(pageNum, pageSize), query));
}

}



@Service
public class LogService extends ServiceImpl<LogMapper, Log> {

@Resource
private LogMapper logMapper;

@Resource
private HttpServletRequest request;

@Resource
private UserService userService;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
    @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("/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);
}

}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
        if (user == null) {
return Result.success(new Page<>());
}
LambdaQueryWrapper<Collect> query = Wrappers.<Collect>lambdaQuery().eq(Collect::getUserId, getUser().getId()).orderByDesc(Collect::getId);
IPage<Collect> page = collectService.page(new Page<>(pageNum, pageSize), query);
return Result.success(page);
}

}



/**
* @description 文件上传
*/
@RestController
@RequestMapping("/files")
public class FileController {

/**
* 单文件上传
* @param file
* @return
*/
@PostMapping("/upload")
public Result<String> upload(MultipartFile file) {
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
    }

@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);
}

}



@RestController
@RequestMapping("/api/message")
public class MessageController {
@Resource
private MessageService messageService;
@Resource


项目链接:
https://javayms.github.io?id=121524190701201jw
https://javayms.pages.dev?id=121524190701201jw