项目介绍:
本系统以商城为主题,采用前后端分离,项目代码工整,结构清晰,适合选题:各类商城系统、前后端分离类其他商城系统等。系统采用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); }
以上就是部分功能展示,从整体上来看,本系统功能是十分完整的,界面设计简洁大方,交互友好,数据库设计也很合理,规模适中,代码工整,清晰,适合学习使用。
好了,今天就到这儿吧,小伙伴们点赞、收藏、评论,一键三连走起呀,下期见~~