1.项目介绍
系统有二种用户:
1、管理员:分类管理,商品管理,订单管理,用户管理,设置管理员
2、买家:登陆注册,查询查看商品,搜索商品,商品推荐,购物车,我的订单,收货地址,修改密码
2.开发环境
运行环境:推荐JDK1.8;
开发工具:idea(推荐);
操作系统:windows 10 8G内存以上(其他windows以及macOS支持,但不推荐);
浏览器:Firefox(推荐)、Google Chrome(推荐)、Edge;
数据库:MySQL8.0(推荐)及其他版本(支持,但容易异常尤其MySQL5.7(不含)以下版本);
数据库可视化工具:Navicat Premium 15(推荐)以及其他Navicat版本
3.项目技术
后端:SSM、Mysql、Maven
前端:Jquery、Ajax、LayUI、Jsp
运行视频 联系我观看吧 lxt123lxp456
package com.controller;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import com.entity.Admins;
import com.entity.Goods;
import com.entity.Types;
import com.entity.Users;
import com.service.AdminService;
import com.service.GoodService;
import com.service.OrderService;
import com.service.TopService;
import com.service.TypeService;
import com.service.UserService;
import com.util.PageUtil;
import com.util.UploadUtil;
/**
* 后台管理接口
*/
@Controller
@RequestMapping("/admin")
public class AdminController {
@Autowired
private AdminService adminService;
@Autowired
private OrderService orderService;
@Autowired
private UserService userService;
@Autowired
private GoodService goodService;
@Autowired
private TopService topService;
@Autowired
private TypeService typeService;
/**
* 管理员登录
* @return
*/
@GetMapping("/login")
public String log() {
return "/admin/login.jsp";
}
/**
* 管理员登录
* @return
*/
@PostMapping("/login")
public String login(String username, String password,
HttpServletRequest request, HttpSession session) {
Admins admin = adminService.getByUsernameAndPassword(username, password);
if (Objects.nonNull(admin)) {
session.setAttribute("admin", admin);
return "redirect:index";
}
request.setAttribute("msg", "用户名或密码错误!");
return "/admin/login.jsp";
}
/**
* 退出
* @return
*/
@GetMapping("/logout")
public String logout(HttpSession session) {
session.removeAttribute("admin");
return "/admin/login.jsp";
}
/**
* 后台首页
* @return
*/
@GetMapping("/index")
public String index(HttpServletRequest request) {
request.setAttribute("msg", "恭喜你! 登录成功了");
return "/admin/index.jsp";
}
/**
* 类目列表
* @return
*/
@GetMapping("/typeList")
public String typeList(HttpServletRequest request) {
request.setAttribute("flag", 1);
request.setAttribute("typeList", typeService.getList());
return "/admin/type_list.jsp";
}
/**
* 类目添加
* @return
*/
@GetMapping("/typeAdd")
public String typeAdd(HttpServletRequest request) {
request.setAttribute("flag", 1);
return "/admin/type_add.jsp";
}
/**
* 类目添加
* @return
* @throws Exception
*/
@PostMapping("/typeSave")
public String typeSave(Types type) throws Exception {
typeService.add(type);
return "redirect:typeList?flag=1";
}
/**
* 类目更新
* @return
*/
@GetMapping("/typeEdit")
public String typeEdit(int id, HttpServletRequest request) {
request.setAttribute("flag", 1);
request.setAttribute("type", typeService.get(id));
return "/admin/type_edit.jsp";
}
/**
* 类目更新
* @return
* @throws Exception
*/
@PostMapping("/typeUpdate")
public String typeUpdate(Types type) throws Exception {
typeService.update(type);
return "redirect:typeList?flag=1";
}
/**
* 类目删除
* @return
*/
@GetMapping("/typeDelete")
public String typeDelete(int id) {
typeService.delete(id);
return "redirect:typeList?flag=1";
}
/**
* 产品列表
* @return
*/
@GetMapping("/goodList")
public String goodList(HttpServletRequest request,
@RequestParam(required=false, defaultValue="0") byte type,
@RequestParam(required=false, defaultValue="1") int page,
@RequestParam(required=false, defaultValue="10") int size) {
request.setAttribute("flag", 2);
request.setAttribute("page", page);
request.setAttribute("type", type);
if(type > 0) {
String goodIds = topService.getGoodIdsByType(type);
request.setAttribute("goodList", goodService.getListByIds(goodIds, page, size));
request.setAttribute("pageTool", PageUtil.getPageTool(request, goodService.getCountByIds(goodIds), page, size));
}else {
request.setAttribute("goodList", goodService.getList(page, size));
request.setAttribute("pageTool", PageUtil.getPageTool(request, goodService.getCount(), page, size));
}
return "/admin/good_list.jsp";
}
/**
* 产品添加
* @return
*/
@GetMapping("/goodAdd")
public String goodAdd(HttpServletRequest request) {
request.setAttribute("flag", 2);
request.setAttribute("typeList", typeService.getList());
return "/admin/good_add.jsp";
}
/**
* 产品添加
* @return
* @throws Exception
*/
@PostMapping("/goodSave")
public String goodSave(Goods good, MultipartFile file,
@RequestParam(required=false, defaultValue="1") int page) throws Exception {
good.setCover(UploadUtil.upload(file));
goodService.add(good);
return "redirect:goodList?flag=2&page="+page;
}
/**
* 产品更新
* @return
*/
@GetMapping("/goodEdit")
public String goodEdit(int id, HttpServletRequest request) {
request.setAttribute("flag", 2);
request.setAttribute("typeList", typeService.getList());
request.setAttribute("good", goodService.get(id));
return "/admin/good_edit.jsp";
}
/**
* 产品更新
* @return
* @throws Exception
*/
@PostMapping("/goodUpdate")
public String goodUpdate(Goods good, MultipartFile file,
@RequestParam(required=false, defaultValue="1") int page) throws Exception {
if (Objects.nonNull(file) && !file.isEmpty()) {
good.setCover(UploadUtil.upload(file));
}
goodService.update(good);
return "redirect:goodList?flag=2&page="+page;
}
/**
* 产品删除
* @return
*/
@GetMapping("/goodDelete")
public String goodDelete(int id,
@RequestParam(required=false, defaultValue="1") int page) {
goodService.delete(id);
return "redirect:goodList?flag=2&page="+page;
}
/**
* 添加推荐
* @return
*/
@PostMapping("/topSave")
public @ResponseBody String topSave(int goodId, byte type) {
return topService.add(goodId, type) ? "ok" : null;
}
/**
* 删除推荐
* @return
*/
@PostMapping("/topDelete")
public @ResponseBody String topDelete(int goodId, byte type) {
return topService.delete(goodId, type) ? "ok" : null;
}
/**
* 订单列表
* @return
*/
@GetMapping("/orderList")
public String orderList(HttpServletRequest request,
@RequestParam(required=false, defaultValue="0")byte status,
@RequestParam(required=false, defaultValue="1") int page,
@RequestParam(required=false, defaultValue="10") int size) {
request.setAttribute("flag", 3);
request.setAttribute("status", status);
request.setAttribute("orderList", orderService.getList(status, page, size));
request.setAttribute("pageTool", PageUtil.getPageTool(request, orderService.getCount(status), page, size));
return "/admin/order_list.jsp";
}
/**
* 订单发货
* @return
*/
@GetMapping("/orderSend")
public String orderSend(int id, byte status,
@RequestParam(required=false, defaultValue="1") int page) {
orderService.send(id);
return "redirect:orderList?flag=3&status="+status+"&page="+page;
}
/**
* 订单完成
* @return
*/
@GetMapping("/orderFinish")
public String orderFinish(int id, byte status,
@RequestParam(required=false, defaultValue="1") int page) {
orderService.finish(id);
return "redirect:orderList?flag=3&status="+status+"&page="+page;
}
/**
* 订单删除
* @return
*/
@GetMapping("/orderDelete")
public String orderDelete(int id, byte status,
@RequestParam(required=false, defaultValue="1") int page) {
orderService.delete(id);
return "redirect:orderList?flag=3&status="+status+"&page="+page;
}
/**
* 顾客管理
* @return
*/
@GetMapping("/userList")
public String userList(HttpServletRequest request,
@RequestParam(required=false, defaultValue="1") int page,
@RequestParam(required=false, defaultValue="10") int size) {
request.setAttribute("flag", 4);
request.setAttribute("userList", userService.getList(page, size));
request.setAttribute("pageTool", PageUtil.getPageTool(request, userService.getCount(), page, size));
return "/admin/user_list.jsp";
}
/**
* 顾客添加
* @return
*/
@GetMapping("/userAdd")
public String userAdd(HttpServletRequest request) {
request.setAttribute("flag", 4);
return "/admin/user_add.jsp";
}
/**
* 顾客添加
* @return
*/
@PostMapping("/userSave")
public String userSave(Users user, HttpServletRequest request,
@RequestParam(required=false, defaultValue="1") int page) {
if (Objects.nonNull(userService.getByUsername(user.getUsername()))) {
request.setAttribute("msg", "用户名已存在!");
return "/admin/user_add.jsp";
}
userService.add(user);
return "redirect:userList?flag=4&page="+page;
}
/**
* 顾客密码重置页面
* @return
*/
@GetMapping("/userRe")
public String userRe(int id, HttpServletRequest request) {
request.setAttribute("flag", 4);
request.setAttribute("user", userService.get(id));
return "/admin/user_reset.jsp";
}
/**
* 顾客密码重置
* @return
*/
@PostMapping("/userReset")
public String userReset(int id, String password,
@RequestParam(required=false, defaultValue="1") int page) {
userService.updatePassword(id, password);
return "redirect:userList?page="+page;
}
/**
* 顾客更新
* @return
*/
@GetMapping("/userEdit")
public String userEdit(int id, HttpServletRequest request) {
request.setAttribute("flag", 4);
request.setAttribute("user", userService.get(id));
return "/admin/user_edit.jsp";
}
/**
* 顾客更新
* @return
*/
@PostMapping("/userUpdate")
public String userUpdate(int id, String name, String phone, String address,
@RequestParam(required=false, defaultValue="1") int page) {
userService.update(id, name, phone, address);
return "redirect:userList?flag=4&page="+page;
}
/**
* 顾客删除
* @return
*/
@GetMapping("/userDelete")
public String userDelete(int id,
@RequestParam(required=false, defaultValue="1") int page) {
userService.delete(id);
return "redirect:userList?flag=4&page="+page;
}
/**
* 管理员列表
* @return
*/
@GetMapping("/adminList")
public String adminList(HttpServletRequest request,
@RequestParam(required=false, defaultValue="1") int page,
@RequestParam(required=false, defaultValue="10") int size) {
request.setAttribute("flag", 5);
request.setAttribute("adminList", adminService.getList(page, size));
request.setAttribute("pageTool", PageUtil.getPageTool(request, adminService.getCount(), page, size));
return "/admin/admin_list.jsp";
}
/**
* 管理员添加
* @return
*/
@GetMapping("/adminAdd")
public String adminAdd(HttpServletRequest request) {
request.setAttribute("flag", 5);
return "/admin/admin_add.jsp";
}
/**
* 管理员密码重置
* @return
*/
@GetMapping("/adminRe")
public String adminRe(int id, HttpServletRequest request) {
request.setAttribute("flag", 5);
request.setAttribute("admin", adminService.get(id));
return "/admin/admin_reset.jsp";
}
/**
* 管理员密码重置
* @return
*/
@PostMapping("/adminReset")
public String adminReset(int id, String password, HttpServletRequest request,
@RequestParam(required=false, defaultValue="1") int page) {
adminService.update(id, password);
return "redirect:adminList?page="+page;
}
/**
* 管理员添加
* @return
*/
@PostMapping("/adminSave")
public String adminSave(Admins admin, HttpServletRequest request,
@RequestParam(required=false, defaultValue="1") int page) {
if (Objects.nonNull(adminService.getByUsername(admin.getUsername()))) {
request.setAttribute("msg", "用户名已存在!");
return "/admin/admin_add.jsp";
}
adminService.add(admin);
return "redirect:adminList?flag=5&page="+page;
}
/**
* 管理员删除
* @return
*/
@GetMapping("/adminDelete")
public String adminDelete(int id,
@RequestParam(required=false, defaultValue="1") int page) {
adminService.delete(id);
return "redirect:adminList?flag=5&page="+page;
}
/**
* 图片上传
* @throws Exception
*/
@PostMapping("upload")
public @ResponseBody Map<String, Object> upload(MultipartFile imgFile) throws Exception {
Map<String, Object> map = new HashMap<>();
if (Objects.nonNull(imgFile) && !imgFile.isEmpty()) {
map.put("error", 0);
map.put("url", UploadUtil.upload(imgFile));
return map;
}else {
map.put("error", 1);
map.put("message", "上传出错啦");
}
return map;
}
}
package com.controller;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import com.entity.Goods;
import com.entity.Tops;
import com.entity.Types;
import com.service.GoodService;
import com.service.TypeService;
import com.util.PageUtil;
/**
* 前台相关接口
*/
@Controller
@RequestMapping("/index")
public class IndexController{
@Autowired
private GoodService goodService;
@Autowired
private TypeService typeService;
/**
* 首页
* @return
*/
@GetMapping("/index")
public String index(HttpServletRequest request){
request.setAttribute("flag", 1);
// 今日推荐
List<Goods> todayList = goodService.getListByTopType(Tops.TYPE_TODAY, 1, 6); // 取前6个
request.setAttribute("todayList", todayList);
// 热销排行
List<Goods> hotList = goodService.getListOrderSales(1, 10); // 取前10个
request.setAttribute("hotList", hotList);
// 类目列表
List<Types> typeList = typeService.getList();
List<Map<String, Object>> dataList = new ArrayList<>();
for(Types type : typeList) {
Map<String, Object> map = new HashMap<>();
map.put("type", type);
map.put("goodList", goodService.getListByType(type.getId(), 1, 15)); // 取前15个
dataList.add(map);
}
request.setAttribute("dataList", dataList);
return "/index/index.jsp";
}
/**
* 商品分类
* @return
*/
@GetMapping("/type")
public String type(HttpServletRequest request,
@RequestParam(required=false, defaultValue="0")int id,
@RequestParam(required=false, defaultValue="1")int page,
@RequestParam(required=false, defaultValue="10")int size) {
request.setAttribute("type", typeService.get(id));
request.setAttribute("goodList", goodService.getListByType(id, page, size));
request.setAttribute("pageHtml", PageUtil.getPageHtml(request, goodService.getCountByType(id), page, size));
return "/index/goods.jsp";
}
/**
* 今日推荐
* @return
*/
@GetMapping("/today")
public String today(HttpServletRequest request,
@RequestParam(required=false, defaultValue="1")int page,
@RequestParam(required=false, defaultValue="10")int size) {
request.setAttribute("flag", 2);
request.setAttribute("goodList", goodService.getListByTopType(Tops.TYPE_TODAY, page, size));
request.setAttribute("pageHtml", PageUtil.getPageHtml(request, goodService.getCountByTopType(Tops.TYPE_TODAY), page, size));
return "/index/goods.jsp";
}
/**
* 热销推荐
* @return
*/
@GetMapping("/hot")
public String hot(HttpServletRequest request,
@RequestParam(required=false, defaultValue="1")int page,
@RequestParam(required=false, defaultValue="10")int size){
request.setAttribute("flag", 3);
request.setAttribute("goodList", goodService.getListOrderSales(page, size));
request.setAttribute("pageHtml", PageUtil.getPageHtml(request, goodService.getCount(), page, size));
return "/index/goods.jsp";
}
/**
* 新品上市
* @return
*/
@GetMapping("/new")
public String news(HttpServletRequest request,
@RequestParam(required=false, defaultValue="1")int page,
@RequestParam(required=false, defaultValue="10")int size){
request.setAttribute("flag", 4);
request.setAttribute("goodList", goodService.getList(page, size));
request.setAttribute("pageHtml", PageUtil.getPageHtml(request, goodService.getCount(), page, size));
return "/index/goods.jsp";
}
/**
* 搜索
* @return
*/
@GetMapping("/search")
public String search(String search, HttpServletRequest request,
@RequestParam(required=false, defaultValue="1")int page,
@RequestParam(required=false, defaultValue="10")int size) {
request.setAttribute("search", search);
if (Objects.nonNull(search) && !search.trim().isEmpty()) {
request.setAttribute("goodList", goodService.getListByName(search, page, size));
request.setAttribute("pageHtml", PageUtil.getPageHtml(request, goodService.getTotalByName(search), page, size));
}
return "/index/goods.jsp";
}
/**
* 商品详情
* @return
*/
@GetMapping("/detail")
public String detail(int id, HttpServletRequest request){
request.setAttribute("good", goodService.get(id));
// 今日推荐前两个 在详情页显示
request.setAttribute("todayList", goodService.getListByTopType(Tops.TYPE_TODAY, 1, 2));
return "/index/detail.jsp";
}
}