基于javaweb+mysql的springboot书城商城系统(java+springboot+vue+maven+mybatis+mysql)

基于javaweb+mysql的springboot书城商城系统(java+springboot+vue+maven+mybatis+mysql)

运行环境

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

开发工具

后端:eclipse/idea/myeclipse/sts等均可配置运行

前端:WebStorm/VSCode/HBuilderX等均可

适用

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

功能说明

基于javaweb+mysql的SpringBoot书城商城系统(java+springboot+vue+maven+mybatis+mysql)

一、项目运行 环境配置:

Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。

项目技术:

Spring + SpringBoot+ mybatis + Maven + Vue 等等组成,B/S模式 + Maven管理等等。

        queryWrapper.eq("category_id",classIf);
        queryWrapper.ne("book_id",bookId);
        List<MsslyyBook> list = msslyyBookService.list(queryWrapper);
        if (list.size()>=4) {
            return Result.success(list.subList(0,4));
        }else {
            return Result.success(list);
        }

    }

    @ApiOperation(value = "分页",notes = "")
    @GetMapping("/page")
    public Result<?> findPage(@RequestParam(required = false, defaultValue = "") String name,
                              @RequestParam(required = false, defaultValue = "") Long categoryId,
                              @RequestParam(required = false, defaultValue = "") Long publisherId,
                              @RequestParam(required = false, defaultValue = "1") Integer pageNum,
                              @RequestParam(required = false, defaultValue = "10") Integer pageSize) {
        LambdaQueryWrapper<MsslyyBook> query = Wrappers.<MsslyyBook>lambdaQuery().orderByDesc(MsslyyBook::getId);
        if (StrUtil.isNotBlank(name)) {
            query.like(MsslyyBook::getBookTitle, name);
        }
        if (categoryId!=0) {
            query.eq(MsslyyBook::getCategoryId, categoryId);
        }
        if (publisherId!=0) {
            query.eq(MsslyyBook::getPublisherId, publisherId);
        }
        IPage<MsslyyBook> page = msslyyBookService.page(new Page<>(pageNum, pageSize), query);

        page.getRecords().forEach(e->{
            msslyyPublisherService.list().forEach(p->{
                if (e.getPublisherId()==p.getId()){
                    e.setPublisherName(p.getPublisherName());
                }
            });
            msslyyCategoryService.list().forEach(c->{
                if (e.getCategoryId()==c.getId()){
                    e.setCategoryName(c.getCategoryName());
                }
            });
        });
        return Result.success(page);
    }

    @GetMapping("/getBookListById/{id}")

/**
 * @description 文件上传
 */
@RestController
@RequestMapping("/files")
@Api(tags = "文件上传")
public class FileController {
    private static final String UP_PRE="http://localhost:9999/files/";

    /**
     * 单文件上传
     * @param file
     * @return
     */
    @ApiOperation(value = "单文件上传",notes = "")
    @PostMapping("/upload")
    public Result<String> upload(MultipartFile file) {
        String filePath = System.getProperty("user.dir") + "/src/main/resources/static/file/";
        String flag = System.currentTimeMillis() + "";
        String fileName = file.getOriginalFilename();
        try {
            FileUtil.writeBytes(file.getBytes(), filePath + flag + "-" + fileName);
            System.out.println(fileName + "--upload上传成功");
            Thread.sleep(1L);
        } catch (Exception e) {
            System.err.println(fileName + "--文件上传失败");
        }
        return Result.success(flag);
    }

    /**
     * 多文件上传
     * @param request
     * @return
     */
    @ApiOperation(value = "多文件上传",notes = "")
    @PostMapping("/upload/multiple")
    public Result<List<FileVO>> multipleUpload(HttpServletRequest request) {
        List<MultipartFile> files = ((MultipartHttpServletRequest) request).getFiles("files");
        String filePath = System.getProperty("user.dir") + "/src/main/resources/static/file/";
        List<FileVO> fileVOS = Lists.newArrayList();
        String fileName = file.getOriginalFilename();
        try {
            FileUtil.writeBytes(file.getBytes(), filePath + flag + "-" + fileName);
            System.out.println(fileName + "--upload上传成功");
            Thread.sleep(1L);
        } catch (Exception e) {
            System.err.println(fileName + "--文件上传失败");
        }
        return Result.success(flag);
    }

    /**
     * 多文件上传
     * @param request
     * @return
     */
    @ApiOperation(value = "多文件上传",notes = "")
    @PostMapping("/upload/multiple")
    public Result<List<FileVO>> multipleUpload(HttpServletRequest request) {
        List<MultipartFile> files = ((MultipartHttpServletRequest) request).getFiles("files");
        String filePath = System.getProperty("user.dir") + "/src/main/resources/static/file/";
        List<FileVO> fileVOS = Lists.newArrayList();
        for (MultipartFile file : files) {
            if (file.isEmpty()) {
                continue;
            }
            String flag = System.currentTimeMillis() + "";
            String fileName = file.getOriginalFilename();
            FileVO fileVO = new FileVO();
            fileVO.setFlag( UP_PRE+ flag);
            fileVO.setFileName(file.getOriginalFilename());
            fileVOS.add(fileVO);
            try {
                FileUtil.writeBytes(file.getBytes(), filePath + flag + "-" + fileName);
                System.out.println(fileName + "--multipleUpload上传成功");
                Thread.sleep(1L);
            } catch (Exception e) {
                System.err.println(fileName + "--文件上传失败");
            }

        }
        return Result.success(fileVOS);
    }

    /**
        return Result.success(msslyyLabelService.getById(id));
    }

    @ApiOperation(value = "查询全部",notes = "")
    @GetMapping
    public Result<?> findAll() {
        List<MsslyyLabel> list = msslyyLabelService.list();
        return Result.success(list);
    }

    @ApiOperation(value = "分页",notes = "")
    @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<MsslyyLabel> query = Wrappers.<MsslyyLabel>lambdaQuery().orderByDesc(MsslyyLabel::getLabelId);
        if (StrUtil.isNotBlank(name)) {
            query.like(MsslyyLabel::getLabelName, name);
        }
        IPage<MsslyyLabel> page = msslyyLabelService.page(new Page<>(pageNum, pageSize), query);
        return Result.success(page);
    }

}
package com.example.controller;

@RestController
@RequestMapping("/api/permission")
@Api(tags = "后台权限表")
public class PermissionController {
    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));
    }

    @ApiOperation(value = "新增购物车商品",notes = "")
    @PostMapping
    public Result<?> save(@RequestBody MsslyyCart msslyyCart) {
        msslyyCartService.save(msslyyCart);
        return Result.success();
    }

    @ApiOperation(value = "增加商品数量",notes = "")
    @PostMapping("/addCart/{userId}/{bookId}/{cartAmount}")
    public Result<?> addCart(@PathVariable Long userId,@PathVariable Long bookId,@PathVariable Integer cartAmount) {
        return Result.success(msslyyCartService.addCart(userId,bookId,cartAmount));
    }

    @ApiOperation(value = "更新购物车商品",notes = "")
    @PutMapping
    public Result<?> update(@RequestBody MsslyyCart msslyyCart) {
        msslyyCartService.updateById(msslyyCart);
        return Result.success();
    }

    @ApiOperation(value = "更新购物商品数量",notes = "")
    @PutMapping("/updateCartAmount/{userId}/{bookId}/{cartAmount}")
    public Result<?> updateCartAmount(@PathVariable Long userId,@PathVariable Long bookId,@PathVariable Integer cartAmount) {
        QueryWrapper<MsslyyCart> queryWrapper=new QueryWrapper<>();
        LambdaQueryWrapper<MsslyyCart> eq = queryWrapper.lambda()
                .eq(MsslyyCart::getUserId, userId)
                .eq(MsslyyCart::getBookId, bookId);
        MsslyyCart cartItem = msslyyCartService.getOne(eq);
        cartItem.setCartAmount(cartAmount);
        msslyyCartService.updateById(cartItem);
        return Result.success();
    }
        msslyyPublisherService.updateById(msslyyPublisher);
        return Result.success();
    }

    @ApiOperation(value = "删除出版社分类",notes = "")
    @DeleteMapping("/{id}")
    public Result<?> delete(@PathVariable Long id) {
        msslyyPublisherService.removeById(id);
        return Result.success();
    }

    @ApiOperation(value = "根据id查询",notes = "")
    @GetMapping("/{id}")
    public Result<?> findById(@PathVariable Long id) {
        return Result.success(msslyyPublisherService.getById(id));
    }

    @ApiOperation(value = "查询全部",notes = "")
    @GetMapping
    public Result<?> findAll() {
        List<MsslyyPublisher> list = msslyyPublisherService.list();
        return Result.success(list);
    }

    @ApiOperation(value = "分页",notes = "")
    @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<MsslyyPublisher> query = Wrappers.<MsslyyPublisher>lambdaQuery().orderByDesc(MsslyyPublisher::getId);
        if (StrUtil.isNotBlank(name)) {
            query.like(MsslyyPublisher::getPublisherName, name);
        }
        IPage<MsslyyPublisher> page = msslyyPublisherService.page(new Page<>(pageNum, pageSize), query);
        return Result.success(page);
    }

}
package com.example.controller;

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

    @ApiOperation(value = "新增标签",notes = "")
    @PostMapping
    public Result<?> save(@RequestBody MsslyyLabel msslyyLabel) {
        msslyyLabelService.save(msslyyLabel);
        return Result.success();
    }

    @ApiOperation(value = "更新标签",notes = "")
    @PutMapping
    public Result<?> update(@RequestBody MsslyyLabel msslyyLabel) {
        msslyyLabelService.updateById(msslyyLabel);
        return Result.success();
    }

    @ApiOperation(value = "删除标签",notes = "")
    @DeleteMapping("/{id}")
    public Result<?> delete(@PathVariable Long id) {
        msslyyLabelService.removeById(id);
        return Result.success();
    }

    @ApiOperation(value = "根据id查询",notes = "")
    @GetMapping("/{id}")
    public Result<?> findById(@PathVariable Long id) {
        return Result.success(msslyyLabelService.getById(id));
    }

    @ApiOperation(value = "查询全部",notes = "")
    @GetMapping
    public Result<?> findAll() {
        List<MsslyyLabel> list = msslyyLabelService.list();
        return Result.success(list);
    }

    @ApiOperation(value = "分页",notes = "")
    @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<MsslyyLabel> query = Wrappers.<MsslyyLabel>lambdaQuery().orderByDesc(MsslyyLabel::getLabelId);
    @PutMapping
    public Result<?> update(@RequestBody MsslyyWallet msslyyWallet) {
        msslyyWalletService.updateById(msslyyWallet);
        return Result.success();
    }

    @ApiOperation(value = "删除用户余额",notes = "")
    @DeleteMapping("/{id}")
    public Result<?> delete(@PathVariable Long id) {
        msslyyWalletService.removeById(id);
        return Result.success();
    }

    @ApiOperation(value = "根据id查询",notes = "")
    @GetMapping("/{id}")
    public Result<?> findById(@PathVariable Long id) {
        return Result.success(msslyyWalletService.getById(id));
    }

    @ApiOperation(value = "查询全部",notes = "")
    @GetMapping
    public Result<?> findAll() {
        List<MsslyyWallet> list = msslyyWalletService.list();
        return Result.success(list);
    }

    @ApiOperation(value = "分页",notes = "")
    @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<MsslyyWallet> query = Wrappers.<MsslyyWallet>lambdaQuery().orderByDesc(MsslyyWallet::getId);
        if (StrUtil.isNotBlank(name)) {
            query.like(MsslyyWallet::getUserId, name);
        }
        IPage<MsslyyWallet> page = msslyyWalletService.page(new Page<>(pageNum, pageSize), query);
        return Result.success(page);
    }

}
package com.example.controller;

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

    @ApiOperation(value = "查询全部",notes = "")
    @GetMapping
    public Result<List<Permission>> findAll() {
        return Result.success(permissionService.list());
    }

    @ApiOperation(value = "分页",notes = "")
    @GetMapping("/page")
    public Result<IPage<Permission>> findPage(@RequestParam(required = false, defaultValue = "") String name,
                                              @RequestParam(required = false, defaultValue = "1") Integer pageNum,
                                              @RequestParam(required = false, defaultValue = "10") Integer pageSize) {
        return Result.success(permissionService.page(new Page<>(pageNum, pageSize), Wrappers.<Permission>lambdaQuery().like(Permission::getName, name)));
    }

    @ApiOperation(value = "根据角色id查询",notes = "")
    @PostMapping("/getByRoles")
    public Result<List<Permission>> getByRoles(@RequestBody List<Role> roles) {
        return Result.success(permissionService.getByRoles(roles));
    }

}
package com.example.controller;


@RestController
@RequestMapping("/api/msslyyOrderDetail")
@Api(tags = "订单详情表")
public class MsslyyOrderDetailController {
    @Resource
    private MsslyyOrderDetailService msslyyOrderDetailService;
    @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));
    }

    @ApiOperation(value = "新增订单详情",notes = "")
    @PostMapping
    public Result<?> save(@RequestBody MsslyyOrderDetail msslyyOrderDetail) {
        msslyyOrderDetailService.save(msslyyOrderDetail);
        return Result.success();
    }

    @ApiOperation(value = "更新订单详情",notes = "")
    @PutMapping
    public Result<?> update(@RequestBody MsslyyOrderDetail msslyyOrderDetail) {
        msslyyOrderDetailService.updateById(msslyyOrderDetail);
        return Result.success();
    }

    @ApiOperation(value = "删除订单详情",notes = "")
    @DeleteMapping("/{id}")
    public Result<?> delete(@PathVariable Long id) {
        msslyyOrderDetailService.removeById(id);
        return Result.success();
    }

@RestController
@RequestMapping("/api/msslyyUser")
@Api(tags = "前台用户表")
public class MsslyyUserController {
    @Resource
    private MsslyyUserService msslyyUserService;
    @Resource
    private HttpServletRequest request;
    @Resource
    private UserService userService;
    @Resource
    private LogService logService;

    /**
     * 登录
     *
     * @param msslyyUser
     * @return
     */
    @ApiOperation(value = "前台用户登录",notes = "")
    @PostMapping("/login")
    public Result<MsslyyUser> login(@RequestBody MsslyyUser msslyyUser) {
        MsslyyUser res = msslyyUserService.login(msslyyUser);
        // 生成token
        String token = JWT.create().withAudience(res.getUserUsername()).sign(Algorithm.HMAC256(res.getUserPassword()));
        return Result.success(page);
    }

}
package com.example.controller;

@RestController
@RequestMapping("/api/msslyyCategory")
@Api(tags = "图书分类表")
public class MsslyyCategoryController {
    @Resource
    private MsslyyCategoryService msslyyCategoryService;
    @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));
    }

    @ApiOperation(value = "新增图书分类",notes = "")
    @PostMapping
    public Result<Permission> findById(@PathVariable Long id) {
        return Result.success(permissionService.getById(id));
    }

    @ApiOperation(value = "查询全部",notes = "")
    @GetMapping
    public Result<List<Permission>> findAll() {
        return Result.success(permissionService.list());
    }

    @ApiOperation(value = "分页",notes = "")
    @GetMapping("/page")
    public Result<IPage<Permission>> findPage(@RequestParam(required = false, defaultValue = "") String name,
                                              @RequestParam(required = false, defaultValue = "1") Integer pageNum,
                                              @RequestParam(required = false, defaultValue = "10") Integer pageSize) {
        return Result.success(permissionService.page(new Page<>(pageNum, pageSize), Wrappers.<Permission>lambdaQuery().like(Permission::getName, name)));
    }

    @ApiOperation(value = "根据角色id查询",notes = "")
    @PostMapping("/getByRoles")
    public Result<List<Permission>> getByRoles(@RequestBody List<Role> roles) {
        return Result.success(permissionService.getByRoles(roles));
    }

}
package com.example.controller;

        User res = userService.login(user);
        // 生成token
        String token = JWT.create().withAudience(res.getUsername()).sign(Algorithm.HMAC256(res.getPassword()));
        res.setToken(token);

        logService.log(user.getUsername(), StrUtil.format("用户 {} 登录系统", user.getUsername()));
        return Result.success(res);
    }

    /**
     * 注册
     *
     * @param user
     * @param request
     * @return
     */
    @ApiOperation(value = "后台用户注册",notes = "")
    @PostMapping("/register")
    public Result<User> register(@RequestBody User user, HttpServletRequest request) {
        if (user.getPassword() == null) {
            user.setPassword("123456");
        }
        User dbUser = userService.register(user);
        request.getSession().setAttribute("user", user);

        logService.log(user.getUsername(), StrUtil.format("用户 {} 注册账号成功", user.getUsername()));
        return Result.success(dbUser);
    }

    @ApiOperation(value = "新增后台用户",notes = "")
    @PostMapping
    public Result<?> save(@RequestBody User user) {
        if (user.getPassword() == null) {
            user.setPassword("123456");
        }
        logService.log(StrUtil.format("新增用户:{} ", user.getUsername()));
        return Result.success(userService.save(user));
    }

    @ApiOperation(value = "更新后台用户",notes = "")
    @PutMapping
@RequestMapping("/api/msslyyUser")
@Api(tags = "前台用户表")
public class MsslyyUserController {
    @Resource
    private MsslyyUserService msslyyUserService;
    @Resource
    private HttpServletRequest request;
    @Resource
    private UserService userService;
    @Resource
    private LogService logService;

    /**
     * 登录
     *
     * @param msslyyUser
     * @return
     */
    @ApiOperation(value = "前台用户登录",notes = "")
    @PostMapping("/login")
    public Result<MsslyyUser> login(@RequestBody MsslyyUser msslyyUser) {
        MsslyyUser res = msslyyUserService.login(msslyyUser);
        // 生成token
        String token = JWT.create().withAudience(res.getUserUsername()).sign(Algorithm.HMAC256(res.getUserPassword()));
        res.setToken(token);

        logService.log(msslyyUser.getUserUsername(), StrUtil.format("用户 {} 登录书店", msslyyUser.getUserUsername()));
        return Result.success(res);
    }

    /**
     * 注册
     *
     * @param msslyyUser
     * @param request
     * @return
     */
    @ApiOperation(value = "前台用户注册",notes = "")
    @PostMapping("/register")
    public Result<MsslyyUser> register(@RequestBody MsslyyUser msslyyUser, HttpServletRequest request) {
        if (msslyyUser.getUserPassword() == null) {
            msslyyUser.setUserPassword("123456");
        }

}
package com.example.controller;

@RestController
@RequestMapping("/api/msslyyFootprint")
@Api(tags = "足迹表")
public class MsslyyFootprintController {
    @Resource
    private MsslyyFootprintService msslyyFootprintService;
    @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));
    }

    @ApiOperation(value = "新增足迹",notes = "")
    @PostMapping

@RestController
@RequestMapping("/api/notice")
@Api(tags = "后台公告表")
public class NoticeController {
    @Resource
    private NoticeService noticeService;
    @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));
    }

    @ApiOperation(value = "新增公告",notes = "")
    @PostMapping
    public Result<?> save(@RequestBody Notice notice) {
        notice.setTime(DateUtil.formatDateTime(new Date()));
        return Result.success(noticeService.save(notice));
    }

    @ApiOperation(value = "更新公告",notes = "")
    @PutMapping
    public Result<?> update(@RequestBody Notice notice) {
        return Result.success(noticeService.updateById(notice));
    }

    @ApiOperation(value = "删除公告",notes = "")
    @DeleteMapping("/{id}")
    public Result<?> delete(@PathVariable Long id) {
        noticeService.removeById(id);
        return Result.success();
        userService.removeById(id);
        return Result.success();
    }

    @ApiOperation(value = "根据id查询",notes = "")
    @GetMapping("/{id}")
    public Result<User> findById(@PathVariable Long id) {
        return Result.success(userService.findById(id));
    }

    @ApiOperation(value = "查询全部",notes = "")
    @GetMapping
    public Result<List<User>> findAll() {
        return Result.success(userService.list());
    }

    @ApiOperation(value = "分页",notes = "")
    @GetMapping("/page")
    public Result<IPage<User>> findPage(@RequestParam(required = false, defaultValue = "") String name,
                                        @RequestParam(required = false, defaultValue = "1") Integer pageNum,
                                        @RequestParam(required = false, defaultValue = "10") Integer pageSize) {
        LambdaQueryWrapper<User> wrapper = Wrappers.<User>lambdaQuery().ne(User::getUsername, "admin").like(User::getUsername, name).orderByDesc(User::getId);
        return Result.success(userService.page(new Page<>(pageNum, pageSize), wrapper));
    }

    @GetMapping("/export")
    public void export(HttpServletResponse response) throws IOException {

        List<Map<String, Object>> list = CollUtil.newArrayList();

        List<User> all = userService.list();
        for (User user : all) {
            Map<String, Object> row1 = new LinkedHashMap<>();
            row1.put("名称", user.getUsername());
            row1.put("手机", user.getPhone());
            row1.put("邮箱", user.getEmail());
            list.add(row1);
        }

        // 2. 写excel

请添加图片描述

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值