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

基于springboot+vue的商城系统(电商平台)

博主主页:猫头鹰源码

博主简介:Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万+、专注Java技术领域和毕业设计项目实战

主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询

文末联系获取

项目介绍: 

本系统以商城为主题,采用前后端分离,项目代码工整,结构清晰,适合选题:各类商城系统、前后端分离类其他商城系统等。系统采用springboot+vue整合开发,前端主要使用了element-ui框架、项目后端主要使用了springboot,数据层采用mybatis。

项目功能:

 

系统包含技术:

后端:springboot,mybatis
前端:element-ui、js、css等
开发工具:idea/vscode
数据库:mysql 5.7
JDK版本:jdk1.8

部分截图说明:

下面是首页

登录页面

 

搜索商品

 商品详情,可以查看介绍,评论

 购物车

付款成功后进入我的订单

收藏夹展示我的收藏内容

个人中心

 后台首页

 后台管理员对用户管理

管理员对商品管理

管理员对轮播图管理

管理员对角色管理

部分代码截图:

拦截器

 @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
        String token = request.getHeader("token");
        if (StrUtil.isBlank(token)) {
            throw new CustomException("401", "未获取到token, 请重新登录");
        }
        String username;
        try {
            username = JWT.decode(token).getAudience().get(0);
        } catch (JWTDecodeException j) {
            throw new CustomException("401", "权限验证失败, 请重新登录");
        }
        User user = userService.getOne(Wrappers.<User>lambdaQuery().eq(User::getUsername, username));
        if (user == null) {
            throw new CustomException("401", "用户不存在, 请重新登录");
        }
        // 验证 token
        JWTVerifier jwtVerifier = JWT.require(Algorithm.HMAC256(user.getPassword())).build();
        try {
            jwtVerifier.verify(token);
        } catch (JWTVerificationException e) {
            throw new CustomException("401", "token不合法, 请重新登录");
        }

        return true;
    }

 跨域

// 当前跨域请求最大有效时长。这里默认1天
    private static final long MAX_AGE = 24 * 60 * 60;

    private CorsConfiguration buildConfig() {
        CorsConfiguration corsConfiguration = new CorsConfiguration();
        corsConfiguration.addAllowedOrigin("*"); // 1 设置访问源地址
        corsConfiguration.addAllowedHeader("*"); // 2 设置访问源请求头
        corsConfiguration.addAllowedMethod("*"); // 3 设置访问源请求方法
        corsConfiguration.setMaxAge(MAX_AGE);
        return corsConfiguration;
    }

    @Bean
    public CorsFilter corsFilter() {
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/**", buildConfig()); // 4 对接口配置跨域设置
        return new CorsFilter(source);
    }

商品操作

 /**
     * 推荐商品
     * @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);
    }

以上就是部分功能展示,从整体上来看,本系统功能是十分完整的,界面设计简洁大方,交互友好,数据库设计也很合理,规模适中,代码工整,清晰,适合学习使用。

好了,今天就到这儿吧,小伙伴们点赞、收藏、评论,一键三连走起呀,下期见~~

相关文章:

  • Linux CentOS 8(用户组的管理实验)
  • .net core开源商城系统源码,支持可视化布局小程序
  • ElasticSearch诞生
  • DRM系列(7)之drmModeAtomicCommit底层流程
  • R语言ggplot2可视化:使用ggpubr包的ggline函数可视化折线图(点线图、line plot)
  • PHP FTP 函数
  • PHP Filter 函数
  • 14---OpenCV:图像检测之边缘检测
  • 带救援的两阶段随机规划问题的LShaped算法理论与算例
  • 为什么比特币将持续增长
  • .Net CoreRabbitMQ消息存储可靠机制
  • 2022年9月2号学习总结
  • Hive基本概念
  • 有向图的强连通分量
  • 新建SpringBoot Maven项目中pom常用依赖配置及常用的依赖的介绍
  • 2019.2.20 c++ 知识梳理
  • CSS3 聊天气泡框以及 inherit、currentColor 关键字
  • django开发-定时任务的使用
  • JavaScript新鲜事·第5期
  • js数组之filter
  • laravel with 查询列表限制条数
  • learning koa2.x
  • Linux学习笔记6-使用fdisk进行磁盘管理
  • Nacos系列:Nacos的Java SDK使用
  • PHP的类修饰符与访问修饰符
  • SpringBoot 实战 (三) | 配置文件详解
  • SpringCloud(第 039 篇)链接Mysql数据库,通过JpaRepository编写数据库访问
  • 程序员最讨厌的9句话,你可有补充?
  • 番外篇1:在Windows环境下安装JDK
  • 时间复杂度与空间复杂度分析
  • 使用 5W1H 写出高可读的 Git Commit Message
  • 数据结构java版之冒泡排序及优化
  • 云大使推广中的常见热门问题
  • 怎样选择前端框架
  • 智能合约Solidity教程-事件和日志(一)
  • Java性能优化之JVM GC(垃圾回收机制)
  • ​LeetCode解法汇总518. 零钱兑换 II
  • ​卜东波研究员:高观点下的少儿计算思维
  • #我与Java虚拟机的故事#连载06:收获颇多的经典之作
  • (Matlab)使用竞争神经网络实现数据聚类
  • (python)数据结构---字典
  • (附源码)ssm码农论坛 毕业设计 231126
  • (篇九)MySQL常用内置函数
  • (四)linux文件内容查看
  • (淘宝无限适配)手机端rem布局详解(转载非原创)
  • (幽默漫画)有个程序员老公,是怎样的体验?
  • ./include/caffe/util/cudnn.hpp: In function ‘const char* cudnnGetErrorString(cudnnStatus_t)’: ./incl
  • ./indexer: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object fil
  • ./mysql.server: 没有那个文件或目录_Linux下安装MySQL出现“ls: /var/lib/mysql/*.pid: 没有那个文件或目录”...
  • .【机器学习】隐马尔可夫模型(Hidden Markov Model,HMM)
  • .md即markdown文件的基本常用编写语法
  • .Net Attribute详解(上)-Attribute本质以及一个简单示例
  • .NET Core WebAPI中使用Log4net 日志级别分类并记录到数据库
  • .Net IOC框架入门之一 Unity
  • .net 使用$.ajax实现从前台调用后台方法(包含静态方法和非静态方法调用)