基于javaweb+mysql的springboot手机商城系统(java+springboot+maven+ssm+html+layui+thymeleaf+mysql)
私信源码获取及调试交流
运行环境
Java≥8、MySQL≥5.7
开发工具
eclipse/idea/myeclipse/sts等均可配置运行
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
基于javaweb的SpringBoot手机商城系统(java+springboot+maven+ssm+html+layui+thymeleaf+mysql)
管理员
13500000000 123456
用户
13600000001 123456
13600000002 123456
项目介绍
基于SpringBoot手机商城 有前台和后台 用户可以登录注册 收藏商品 购物车 结算商品 收货地址管理等 管理员则可以对用户,商品,订单进行管理操作
环境需要
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项目:是;
技术栈
后端:SpringBoot(Spring+SpringMVC+Mybatis)
前端: HTML+Layui+thymeleaf
使用说明
项目运行: 1. 使用Navicat或者其它工具,在mysql中创建对应sql文件名称的数据库,并导入项目的sql文件; 2. 使用IDEA/Eclipse/MyEclipse导入项目,导入成功后请执行maven clean;maven install命令,然后运行; 3. 将项目中application.yml配置文件中的数据库配置改为自己的配置;
商城首页展示:
商品下单购物车:
登录展示:
提交订单展示:
我的订单展示:
我的订单管理:
后台登录管理展示:
后台管理轮播图展示:
后台管理订单列表展示:
后台管理商品列表展示:
/**
* <p>
* 帖子分类表 前端控制器
* </p>
*/
@RestController
@RequestMapping("/category")
public class GoodCategoryController {
@Autowired
private GoodCategoryService categoryService;
//添加分类
@PostMapping("/add")
public Result add(GoodCategory category) {
//验证表单信息
if (categoryService.getOne(new LambdaQueryWrapper<GoodCategory>().eq(GoodCategory::getName,category.getName())) != null) {
return Result.failure("已有相同名称的类别,请重新命名");
} else {
return Result.decide(categoryService.save(category));
}
}
//通过id获取分类
@RequestMapping("/getOne")
public GoodCategory getOne(@RequestParam(value = "id") String id) {
return categoryService.getById(id);
}
//删除分类
@PostMapping("/delete")
public Result delete(@RequestParam(value = "id") String id) {
if (order.getStatus() != 4) {
return Result.failure("订单未完成,暂不能删除");
}
return Result.decide(orderService.removeById(id));
}
//管理员获取全部订单信息
@RequestMapping("/adminGetAll")
public ResultPage adminGetAll(@RequestParam(value = "userName", required = false) String userName,
@RequestParam(value = "goodName", required = false) String goodName,
@RequestParam(value = "status", required = false) Integer status,
@RequestParam(value = "page") Integer page,
@RequestParam(value = "limit") Integer limit) {
//分页条件
PageHelper.startPage(page, limit);
List<Order> orderList = orderService.adminGetAll(userName, goodName, status);
PageInfo<Order> orderPageInfo = new PageInfo<>(orderList, limit);
return new ResultPage(0, (int) orderPageInfo.getTotal(), orderPageInfo.getList());
}
//修改订单状态
@PostMapping("/updateStatus")
public Result updateStatus(@RequestParam(value = "orderId") String orderId,
@RequestParam(value = "status") Integer status) {
LambdaUpdateWrapper<Order> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper
.eq(Order::getId, orderId)
.set(Order::getStatus, status);
return Result.decide(orderService.update(updateWrapper));
}
}
public ModelAndView userEdit() {
ModelAndView mv = new ModelAndView();
mv.setViewName("admin/user/userEdit.html");
return mv;
}
//商品分类列表页面
@GetMapping("/categoryList")
public ModelAndView categoryList() {
ModelAndView mv = new ModelAndView();
mv.setViewName("admin/category/categoryList.html");
return mv;
}
//添加商品分类列表页面
@GetMapping("/categoryAdd")
public ModelAndView categoryAdd() {
ModelAndView mv = new ModelAndView();
mv.setViewName("admin/category/categoryAdd.html");
return mv;
}
//修改商品分类列表页面
@GetMapping("/categoryEdit")
public ModelAndView categoryEdit() {
ModelAndView mv = new ModelAndView();
mv.setViewName("admin/category/categoryEdit.html");
return mv;
}
//商品列表页面
@GetMapping("/goodList")
public ModelAndView goodList() {
ModelAndView mv = new ModelAndView();
mv.setViewName("admin/good/goodList.html");
return mv;
}
//添加商品列表页面
@GetMapping("/goodAdd")
public ModelAndView goodAdd() {
ModelAndView mv = new ModelAndView();
mv.setViewName("admin/good/goodAdd.html");
if (addressService.update(updateWrapper)) {
LambdaUpdateWrapper<Address> update = new LambdaUpdateWrapper<>();
update
.eq(Address::getId, id)
.set(Address::getDefaulted, 1);
return Result.decide(addressService.update(update));
} else {
return Result.failure("设置默认地址失败");
}
}
}
/**
* <p>
* 帖子分类表 前端控制器
* </p>
*/
@RestController
@RequestMapping("/category")
public class GoodCategoryController {
@Autowired
private GoodCategoryService categoryService;
/**
* <p>
* 前端控制器
* </p>
*/
@RestController
@RequestMapping("/order")
public class OrderController {
@Autowired
private GoodService goodService;
@Autowired
private AddressService addressService;
@Autowired
private CartService cartService;
@Autowired
private OrderService orderService;
@Autowired
private GoodCategoryService categoryService;
//确认购买页面
@RequestMapping(value = "/buy")
public ModelAndView buy(String cartIds, String totalPrice, HttpSession session) {
session.setAttribute("cartIds", cartIds); //保留当前购物车id
User currentUser = (User) SecurityUtils.getSubject().getPrincipal();
String[] ids = cartIds.split(",");
List<String> goodIds = new ArrayList<>(); //商品id集合
List<Integer> nums = new ArrayList<>(); //商品数量id集合
//购物车车id查出商品id
List<Cart> cartList = cartService.listByIds(Arrays.asList(ids));
for (Cart cart : cartList) {
goodIds.add(cart.getGoodId());
nums.add(cart.getNum());
}
//商品
List<Good> goodList = goodService.listByIds(goodIds);
for (int i = 0; i < goodList.size(); i++) {
Good good = goodList.get(i);
/**
* <p>
* 前端控制器
* </p>
*/
@RestController
@RequestMapping("/address")
public class AddressController {
@Autowired
private AddressService addressService;
//添加收货地址
@PostMapping("/add")
public Result add(Address address) {
User currentUser = (User) SecurityUtils.getSubject().getPrincipal();
//保存当前用户id
address.setUserId(currentUser.getId());
return Result.decide(addressService.save(address));
}
//删除收货地址
@PostMapping("/delete")
public Result delete(@RequestParam(value = "id") String id) {
return Result.decide(addressService.removeById(id));
}
//获得单挑地址明细
@PostMapping("/getOne")
public Result getOne(@RequestParam(value = "id") String id) {
return Result.success(addressService.getById(id));
}
//修改收货地址
@PostMapping("/update")
public Result update(Address address) {
User currentUser = (User) SecurityUtils.getSubject().getPrincipal();
if (addressService.updateById(address)) {
if (address.getDefaulted() == 1) {
LambdaUpdateWrapper<Address> updateWrapper = new LambdaUpdateWrapper<>();
@Autowired
private GoodCategoryService categoryService;
//添加分类
@PostMapping("/add")
public Result add(GoodCategory category) {
//验证表单信息
if (categoryService.getOne(new LambdaQueryWrapper<GoodCategory>().eq(GoodCategory::getName,category.getName())) != null) {
return Result.failure("已有相同名称的类别,请重新命名");
} else {
return Result.decide(categoryService.save(category));
}
}
//通过id获取分类
@RequestMapping("/getOne")
public GoodCategory getOne(@RequestParam(value = "id") String id) {
return categoryService.getById(id);
}
//删除分类
@PostMapping("/delete")
public Result delete(@RequestParam(value = "id") String id) {
return Result.decide(categoryService.removeById(id));
}
//修改分类
@PostMapping("update")
public Result update(GoodCategory category) {
GoodCategory categoryEdit = categoryService.getById(category.getId());
//验证表单信息
if (categoryService.getOne(new LambdaQueryWrapper<GoodCategory>().eq(GoodCategory::getName,category.getName())) != null
&& !categoryEdit.getName().equals(category.getName())) {
return Result.failure("已有相同名称的类别,请重新命名");
} else {
return Result.decide(categoryService.updateById(category));
}
}
//分页条件查询分类信息
@RequestMapping("/getAll")
public ResultPage getAll(GoodCategory category,
@RequestParam(value = "page") Integer page,
@RequestParam(value = "limit") Integer limit) {
//查询条件
LambdaQueryWrapper<GoodCategory> userWrapper = new LambdaQueryWrapper<>();
if (StringUtils.hasText(category.getName())) {
userWrapper.like(GoodCategory::getName, category.getName());
}
return mv;
}
//添加商品分类列表页面
@GetMapping("/categoryAdd")
public ModelAndView categoryAdd() {
ModelAndView mv = new ModelAndView();
mv.setViewName("admin/category/categoryAdd.html");
return mv;
}
//修改商品分类列表页面
@GetMapping("/categoryEdit")
public ModelAndView categoryEdit() {
ModelAndView mv = new ModelAndView();
mv.setViewName("admin/category/categoryEdit.html");
return mv;
}
//商品列表页面
@GetMapping("/goodList")
public ModelAndView goodList() {
ModelAndView mv = new ModelAndView();
mv.setViewName("admin/good/goodList.html");
return mv;
}
//添加商品列表页面
@GetMapping("/goodAdd")
public ModelAndView goodAdd() {
ModelAndView mv = new ModelAndView();
mv.setViewName("admin/good/goodAdd.html");
return mv;
}
//修改商品列表页面
@GetMapping("/goodEdit")
public ModelAndView goodEdit() {
ModelAndView mv = new ModelAndView();
mv.setViewName("admin/good/goodEdit.html");
return mv;
}
//管理员订单页面
@GetMapping("/adminOrderList")
public ModelAndView adminOrderList() {
ModelAndView mv = new ModelAndView();
mv.setViewName("admin/order/orderList.html");
}
/**
* <p>
* 前端控制器
* </p>
*/
@RestController
@RequestMapping("/collect")
public class CollectController {
@Autowired
private CollectService collectService;
@Autowired
private GoodService goodService;
//添加收藏
@PostMapping("/add")
public Result add(Collect collect) {
User currentUser = (User) SecurityUtils.getSubject().getPrincipal();
LambdaQueryWrapper<Collect> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper
.eq(Collect::getUserId, currentUser.getId())
.eq(Collect::getGoodId, collect.getGoodId());
.eq(User::getPassword, oldPassword)
.eq(User::getId, currentUser.getId());
if (userService.getOne(userWrapper) != null) {
LambdaUpdateWrapper<User> updateWrapper = new LambdaUpdateWrapper<>();
//更新新密码条件
updateWrapper
.eq(User::getId, currentUser.getId())
.set(User::getPassword, newPassword);
if (userService.update(updateWrapper)) {
SecurityUtils.getSubject().logout();
return Result.success("修改密码成功,请重新登录");
} else {
return Result.failure("修改密码失败");
}
} else {
return Result.failure("原密码不对,请重新填写");
}
}
//前台用户修改个人信息
@RequestMapping("/getUserById/{userId}")
public ModelAndView getById(@PathVariable String userId) {
ModelAndView mv = new ModelAndView();
mv.addObject("user", userService.getById(userId));
mv.setViewName("index/user_update.html");
return mv;
}
}
/**
* <p>
* 前端控制器
* </p>
*/
@RestController
@RequestMapping("/collect")
public class CollectController {
@Autowired
private CollectService collectService;
@Autowired
private GoodService goodService;
//添加收藏
@PostMapping("/add")
public Result add(Collect collect) {
User currentUser = (User) SecurityUtils.getSubject().getPrincipal();
LambdaQueryWrapper<Collect> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper
.eq(Collect::getUserId, currentUser.getId())
.eq(Collect::getGoodId, collect.getGoodId());
if (collectService.getOne(queryWrapper) != null) {
return Result.failure("您已收藏过该商品");
} else {
collect.setUserId(currentUser.getId());
return Result.decide(collectService.save(collect));
}
}
//取消收藏
@PostMapping("/delete")
public Result delete(Collect collect) {
User currentUser = (User) SecurityUtils.getSubject().getPrincipal();
LambdaQueryWrapper<Collect> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper
.eq(Collect::getUserId, currentUser.getId())
.eq(Collect::getGoodId, collect.getGoodId());
return Result.decide(collectService.remove(queryWrapper));
}
//获取用户收藏列表
//设置默认地址
@PostMapping("setDefault")
public Result update(@RequestParam(value = "id") String id) {
User currentUser = (User) SecurityUtils.getSubject().getPrincipal();
LambdaUpdateWrapper<Address> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper
.eq(Address::getUserId, currentUser.getId())
.set(Address::getDefaulted, 2);
if (addressService.update(updateWrapper)) {
LambdaUpdateWrapper<Address> update = new LambdaUpdateWrapper<>();
update
.eq(Address::getId, id)
.set(Address::getDefaulted, 1);
return Result.decide(addressService.update(update));
} else {
return Result.failure("设置默认地址失败");
}
}
}
List<Comment> ls = commentService.getAll(userName, goodName, content);
PageInfo<Comment> pageInfo = new PageInfo<>(ls, limit);
return new ResultPage(0, (int) pageInfo.getTotal(), pageInfo.getList());
}
}
/**
* <p>
* 前端控制器
* </p>
*/
@RestController
@RequestMapping("/banner")
public class BannerController {
@Autowired
private BannerService bannerService;
@PostMapping("/add")
public Result add(Banner banner) {
return Result.decide(bannerService.save(banner));
}
@PostMapping("/update")
public Result update(Banner banner) {
User currentUser = (User) SecurityUtils.getSubject().getPrincipal();
//获取订单商品
Order order = orderService.getById(orderId);
comment.setGoodId(order.getGoodId());
comment.setUserId(currentUser.getId());
comment.setCreateTime(new Date());
if (commentService.save(comment)) {
LambdaUpdateWrapper<Order> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper
.eq(Order::getId, orderId)
.set(Order::getStatus, 4);
orderService.update(updateWrapper);
}
return Result.success();
}
//删除
@PostMapping("/delete")
public Result delete(@RequestParam(value = "id") String id) {
return Result.decide(commentService.removeById(id));
}
//查询所有评论
@RequestMapping("/adminGetAll")
public ResultPage adminGetAll(@RequestParam(value = "userName", required = false) String userName,
@RequestParam(value = "goodName", required = false) String goodName,
@RequestParam(value = "content", required = false) String content,
@RequestParam(value = "page") Integer page,
@RequestParam(value = "limit") Integer limit) {
//分页条件
PageHelper.startPage(page, limit);
List<Comment> ls = commentService.getAll(userName, goodName, content);
PageInfo<Comment> pageInfo = new PageInfo<>(ls, limit);
return new ResultPage(0, (int) pageInfo.getTotal(), pageInfo.getList());
}
}
/**
* <p>
* 前端控制器
* </p>
*/
@RestController
@RequestMapping("/banner")
public class BannerController {
@Autowired
private BannerService bannerService;
@PostMapping("/add")
public Result add(Banner banner) {
return Result.decide(bannerService.save(banner));
}
@PostMapping("/update")
public Result update(Banner banner) {
return Result.decide(bannerService.updateById(banner));
}
@PostMapping("/getOne")
public Result getOne(@RequestParam(value = "id") String id) {
return Result.success(bannerService.getById(id));
}
@RequestMapping("/getAll")
public ResultPage getAll(@RequestParam(value = "name", required = false) String name,
@RequestParam(value = "page") Integer page,
@RequestParam(value = "limit") Integer limit) {
@Controller
public class ViewController {
@Autowired
private BannerService bannerService;
@Autowired
private GoodService goodService;
/*
* ==================================================后台管理页面========================================================================
* */
//后台登录界面
@GetMapping("/adminLogin")
public ModelAndView loginPage() {
ModelAndView mv = new ModelAndView();
mv.setViewName("/login.html");
return mv;
}
//管理员界面
@GetMapping("/adminIndex")
public ModelAndView adminIndex() {
ModelAndView mv = new ModelAndView();
mv.setViewName("admin/admin.html");
return mv;
}
//用户列表界面
@GetMapping("/userList")
public ModelAndView userList() {
ModelAndView mv = new ModelAndView();
mv.setViewName("admin/user/userList.html");
return mv;
}
//添加用户界面
@GetMapping("/userAdd")
public ModelAndView userAdd() {
ModelAndView mv = new ModelAndView();
mv.setViewName("admin/user/userAdd.html");
/**
* <p>
* 前端控制器
* </p>
*/
@RestController
@RequestMapping("/cart")
public class CartController {
@Autowired
private CartService cartService;
@Autowired
private GoodService goodService;
@Autowired
private GoodCategoryService goodCategoryService;
//添加购物车
@PostMapping("/add")
public Result add(Cart cart) {
User currentUser = (User) SecurityUtils.getSubject().getPrincipal();
LambdaQueryWrapper<Cart> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper
.eq(Cart::getUserId, currentUser.getId())
.eq(Cart::getGoodId, cart.getGoodId());
Cart currentCart = cartService.getOne(queryWrapper);
public Result update(@RequestParam(value = "id") String id) {
User currentUser = (User) SecurityUtils.getSubject().getPrincipal();
LambdaUpdateWrapper<Address> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper
.eq(Address::getUserId, currentUser.getId())
.set(Address::getDefaulted, 2);
if (addressService.update(updateWrapper)) {
LambdaUpdateWrapper<Address> update = new LambdaUpdateWrapper<>();
update
.eq(Address::getId, id)
.set(Address::getDefaulted, 1);
return Result.decide(addressService.update(update));
} else {
return Result.failure("设置默认地址失败");
}
}
}
/**
* <p>
* 帖子分类表 前端控制器
* </p>
*/
@RestController
@RequestMapping("/category")
public class GoodCategoryController {
@Autowired
private GoodCategoryService categoryService;