基于javaweb+mysql的springboot花店商城系统(java+springboot+maven+mybatis+vue+mysql)
运行环境
Java≥8、MySQL≥5.7、Node.js≥10
开发工具
后端:eclipse/idea/myeclipse/sts等均可配置运行
前端:WebStorm/VSCode/HBuilderX等均可
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
基于javaweb+mysql的SpringBoot花店商城系统(java+springboot+maven+mybatis+vue+mysql)
一、项目简述 本系统功能包括: 商品的分类展示,用户的注册登录,购物车,订单结算,购物车加减,后台商品管理,分类管理,订单管理等等功能。
二、项目运行 环境配置:
Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。
项目技术:
Springboot + Maven + mybatis+ Vue 等等组成,B/S模式 + Maven管理等等。
List<Species> items = list.size() >= page * Constant.PAGE_SIZE ?
list.subList((page - 1) * Constant.PAGE_SIZE, page * Constant.PAGE_SIZE)
: list.subList((page - 1) * Constant.PAGE_SIZE, list.size());
int len = list.size() % Constant.PAGE_SIZE == 0 ? list.size() / Constant.PAGE_SIZE
: (list.size() / Constant.PAGE_SIZE + 1);
map.put("items", items);
map.put("len", len);
return r.setCode(2000).setData(map);
}
@RequestMapping("/create")
R create(@RequestBody Species species) {
R r = new R();
try {
speciesService.add(species);
return r.setCode(2000).setMsg(HttpMsg.ADD_TYPE_OK);
} catch (Exception e) {
return r.setCode(4000).setMsg(HttpMsg.ADD_TYPE_FAILED);
}
}
@RequestMapping("/update")
R update(@RequestBody Species species) {
R r = new R();
try {
speciesService.update(species);
return r.setCode(2000).setMsg(HttpMsg.UPDATE_TYPE_OK);
} catch (Exception e) {
return r.setCode(4000).setMsg(HttpMsg.UPDATE_TYPE_FAILED);
}
}
@DeleteMapping("/delete")
R delete(@RequestParam("id") int id) {
R r = new R();
try {
speciesService.delete(id);
return r.setCode(2000).setMsg(HttpMsg.DELETE_TYPE_OK);
R r = new R();
try {
speciesService.delete(id);
return r.setCode(2000).setMsg(HttpMsg.DELETE_TYPE_OK);
} catch (Exception e) {
return r.setCode(4000).setMsg(HttpMsg.DELETE_TYPE_FAILED);
}
}
}
/**
*/
@Component
public class ProcessInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception {
httpServletResponse.setHeader("Access-Control-Allow-Origin", "*");
httpServletResponse.setHeader("Access-Control-Allow-Headers", "Content-Type,Content-Length, Authorization, Accept,X-Requested-With");
httpServletResponse.setHeader("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS");
httpServletResponse.setHeader("X-Powered-By","Jetty");
String method= httpServletRequest.getMethod();
if (method.equals("OPTIONS")){
httpServletResponse.setStatus(200);
return false;
}
return true;
}
@Override
public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {
}
@Override
public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {
}
}
return r.setCode(2000);
}
map.put("items", orders);
map.put("len", orders.size());
return r.setCode(2000).setData(map);
}
@RequestMapping("/findAll")
R findAll(@RequestParam("page") int page, @RequestParam("searchKey") String searchKey) {
R r = new R();
Map<String, Object> map = new HashMap<>();
List<Order> orders = orderService.findAll(searchKey);
if (orders == null) {
return r.setCode(2000);
}
List<Order> items = orders.size() >= page * Constant.PAGE_SIZE ?
orders.subList((page - 1) * Constant.PAGE_SIZE, page * Constant.PAGE_SIZE)
: orders.subList((page - 1) * Constant.PAGE_SIZE, orders.size());
int len = orders.size() % Constant.PAGE_SIZE == 0 ? orders.size() / Constant.PAGE_SIZE
: (orders.size() / Constant.PAGE_SIZE + 1);
List<OrderVo> vos = new ArrayList<>();
for (Order item : items) {
User user = userDao.queryById(item.getUid());
OrderVo vo = new OrderVo();
vo.setAddress(user.getAddress()).setPhone(user.getPhone()).setUsername(user.getName())
.setAmount(item.getAmount()).setFlower(item.getFlower()).setId(item.getId())
.setUid(item.getUid()).setOrder_guid(item.getOrder_guid()).setPrice(item.getPrice())
.setState(item.getState());
vos.add(vo);
}
map.put("items", vos);
map.put("len", len);
return r.setCode(2000).setData(map);
}
@RequestMapping("/update")
R update(@RequestBody Order order) {
R r = new R();
int ans = orderService.update(order);
if (ans >= 0) {
return r.setCode(2000).setMsg(HttpMsg.UPDATE_USER_OK);
}
int ans = flowerService.delete(id);
if (ans == 1) {
return r.setCode(2000).setMsg(HttpMsg.DELETE_FLOWER_OK);
}
return r.setCode(4000).setMsg(HttpMsg.DELETE_FLOWER_FAILED);
}
private void savePic(InputStream inputStream, String fileName) {
OutputStream os = null;
try {
String path = Constant.IMG_PATH;
// 1K的数据缓冲
byte[] bs = new byte[1024];
// 读取到的数据长度
int len;
// 输出的文件流保存到本地文件
os = new FileOutputStream(new File(path + fileName));
// 开始读取
while ((len = inputStream.read(bs)) != -1) {
os.write(bs, 0, len);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
// 完毕,关闭所有链接
try {
os.close();
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
R r = new R();
int ans = cartService.delete(id);
if (ans == 1) {
return r.setCode(2000).setMsg(HttpMsg.DELETE_USER_OK);
}
return r.setCode(4000).setMsg(HttpMsg.DELETE_USER_FAILED);
}
}
/**
* 用户
**/
@RestController
@RequestMapping("user")
public class UserController {
@Autowired
UserService userService;
@Autowired
UserDao dao;
@RequestMapping("/test")
R test() {
R r = new R();
return r.setCode(4000).setMsg(Constant.IMG_PATH).setData(dao.findAll());
}
/**
* 用户
**/
@RestController
@RequestMapping("cart")
public class CartController {
@Autowired
CartService cartService;
@Autowired
OrderService orderService;
@Autowired
CartDao dao;
@Autowired
FlowersDao flowersDao;
@RequestMapping("/test")
R test() {
R r = new R();
return r.setCode(4000).setMsg(Constant.IMG_PATH).setData(dao.findAll());
}
@RequestMapping("/queryByAccount")
R queryByAccount(@RequestParam("account") String account) {
for (Order item : items) {
User user = userDao.queryById(item.getUid());
OrderVo vo = new OrderVo();
vo.setAddress(user.getAddress()).setPhone(user.getPhone()).setUsername(user.getName())
.setAmount(item.getAmount()).setFlower(item.getFlower()).setId(item.getId())
.setUid(item.getUid()).setOrder_guid(item.getOrder_guid()).setPrice(item.getPrice())
.setState(item.getState());
vos.add(vo);
}
map.put("items", vos);
map.put("len", len);
return r.setCode(2000).setData(map);
}
@RequestMapping("/update")
R update(@RequestBody Order order) {
R r = new R();
int ans = orderService.update(order);
if (ans >= 0) {
return r.setCode(2000).setMsg(HttpMsg.UPDATE_USER_OK);
}
return r.setCode(4000).setMsg(HttpMsg.UPDATE_USER_FAILED);
}
@RequestMapping("/changeState")
R changeState(@RequestBody Order order) {
orderDao.changeState(order);
return new R().setCode(2000).setMsg(HttpMsg.UPDATE_ORDER_OK);
}
@DeleteMapping("/delete")
R delete(@RequestParam("id") int id) {
R r = new R();
int ans = orderService.delete(id);
if (ans == 1) {
return r.setCode(2000).setMsg(HttpMsg.DELETE_USER_OK);
}
return r.setCode(4000).setMsg(HttpMsg.DELETE_USER_FAILED);
}
}
R queryByAccount(@RequestParam("account") String account) {
R r = new R();
if (StringUtil.isEmpty(account)) {
return r.setCode(4000).setMsg(HttpMsg.INVALID_PARAM);
}
List<Order> orders = orderService.queryByAccount(account);
return r.setCode(2000).setData(orders);
}
@RequestMapping("/find")
R find(@RequestParam("page") int page, @RequestParam("searchKey") String searchKey, @RequestParam("account") String account) {
R r = new R();
Map<String, Object> map = new HashMap<>();
List<Order> orders = orderService.find(searchKey, account);
if (orders == null) {
return r.setCode(2000);
}
map.put("items", orders);
map.put("len", orders.size());
return r.setCode(2000).setData(map);
}
@RequestMapping("/findAll")
R findAll(@RequestParam("page") int page, @RequestParam("searchKey") String searchKey) {
R r = new R();
Map<String, Object> map = new HashMap<>();
List<Order> orders = orderService.findAll(searchKey);
if (orders == null) {
return r.setCode(2000);
}
List<Order> items = orders.size() >= page * Constant.PAGE_SIZE ?
orders.subList((page - 1) * Constant.PAGE_SIZE, page * Constant.PAGE_SIZE)
: orders.subList((page - 1) * Constant.PAGE_SIZE, orders.size());
int len = orders.size() % Constant.PAGE_SIZE == 0 ? orders.size() / Constant.PAGE_SIZE
: (orders.size() / Constant.PAGE_SIZE + 1);
List<OrderVo> vos = new ArrayList<>();
for (Order item : items) {
User user = userDao.queryById(item.getUid());
OrderVo vo = new OrderVo();
vo.setAddress(user.getAddress()).setPhone(user.getPhone()).setUsername(user.getName())
.setAmount(item.getAmount()).setFlower(item.getFlower()).setId(item.getId())
.setUid(item.getUid()).setOrder_guid(item.getOrder_guid()).setPrice(item.getPrice())
.setState(item.getState());
vos.add(vo);
}
map.put("items", vos);
map.put("len", len);
return r.setCode(2000).setData(map);
}
@RequestMapping("/update")
R update(@RequestBody Order order) {
R r = new R();
return r.setCode(2000).setData(map);
}
@RequestMapping("/create")
R create(@RequestBody Flower flower) {
R r = new R();
int ans = flowerService.add(flower);
if (ans == 1) {
return r.setCode(2000).setMsg(HttpMsg.ADD_FLOWER_OK);
}
return r.setCode(4000).setMsg(HttpMsg.ADD_FLOWER_FAILED);
}
@RequestMapping("/update")
R update(@RequestBody Flower flower) {
R r = new R();
int ans = flowerService.update(flower);
if (ans >= 0) {
return r.setCode(2000).setMsg(HttpMsg.UPDATE_FLOWER_OK);
}
return r.setCode(4000).setMsg(HttpMsg.UPDATE_FLOWER_FAILED);
}
@RequestMapping("/changeState")
R changeState(@RequestBody Flower flower) {
R r = new R();
flowersDao.changeState(flower);
String msg = flower.getState() == 1?HttpMsg.GOODS_UP_OK:HttpMsg.GOODS_DOWN_OK;
return r.setCode(2000).setMsg(msg);
}
// 保存上传的图片
@RequestMapping("/updateImg")
R updateImg(@RequestParam("file") MultipartFile file) {
R r = new R();
// 只接收 jpg/png 图片
String filename = file.getOriginalFilename();
if (!filename.endsWith(".jpg") && !filename.endsWith(".png")){
return r.setCode(4000).setMsg(HttpMsg.ERROR_FILE_TYPE);
}
String img_guid = UUID.randomUUID().toString().replaceAll("-", "") + ".jpg";
try {
savePic(file.getInputStream(), img_guid);
try {
String path = Constant.IMG_PATH;
// 1K的数据缓冲
byte[] bs = new byte[1024];
// 读取到的数据长度
int len;
// 输出的文件流保存到本地文件
os = new FileOutputStream(new File(path + fileName));
// 开始读取
while ((len = inputStream.read(bs)) != -1) {
os.write(bs, 0, len);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
// 完毕,关闭所有链接
try {
os.close();
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
/**
* 用户
**/
@RestController
@RequestMapping("order")
/**
* 用户
**/
@RestController
@RequestMapping("user")
public class UserController {
@Autowired
UserService userService;
@Autowired
UserDao dao;
@RequestMapping("/test")
R test() {
R r = new R();
return r.setCode(4000).setMsg(Constant.IMG_PATH).setData(dao.findAll());
}
@RequestMapping("/queryInfoByAccount")
R queryInfoByAccount(@RequestParam("account") String account) {
R r = new R();
if (StringUtil.isEmpty(account)){
return r.setCode(4000).setMsg(HttpMsg.INVALID_PARAM);
}
User loginUser = userService.queryInfo(account);
if (loginUser == null){
return r.setCode(4000).setMsg(HttpMsg.INVALID_USER);
}
return r.setCode(2000).setData(loginUser);
}
@RequestMapping("/find")
R find(@RequestParam("page") int page, @RequestParam("searchKey") String searchKey) {
R r = new R();
Map<String, Object> map = new HashMap<>();
List<User> users = userService.find(searchKey);
if (users == null) {
return r.setCode(2000);
}
// 管理员查询所有
@RequestMapping("/findAll")
R findAll(@RequestParam("page") int page, @RequestParam("searchKey") String searchKey) {
R r = new R();
List<Flower> flowers = flowerService.findAll(searchKey);
if (flowers == null) {
return r.setCode(2000);
}
return getResponse(flowers, page, Constant.PAGE_SIZE, r);
}
// 返回结果
private R getResponse(List<Flower> flowers, int page, int pageSize, R r) {
Map<String, Object> map = new HashMap<>();
List<Flower> items = flowers.size() >= page * pageSize ?
flowers.subList((page - 1) * pageSize, page * pageSize)
: flowers.subList((page - 1) * pageSize, flowers.size());
int len = flowers.size() % pageSize == 0 ? flowers.size() / pageSize
: (flowers.size() / pageSize + 1);
for (Flower item : items) {
if (item.getImg_guid() == null) {
item.setImg_guid(Constant.DEFAULT_IMG);
}
item.setImg_guid(Constant.IMG_USE_PATH + item.getImg_guid());
}
map.put("items", items);
map.put("len", len);
return r.setCode(2000).setData(map);
}
@RequestMapping("/create")
R create(@RequestBody Flower flower) {
R r = new R();
int ans = flowerService.add(flower);
if (ans == 1) {
return r.setCode(2000).setMsg(HttpMsg.ADD_FLOWER_OK);
}
return r.setCode(4000).setMsg(HttpMsg.ADD_FLOWER_FAILED);
}
@Autowired
CartDao dao;
@Autowired
FlowersDao flowersDao;
@RequestMapping("/test")
R test() {
R r = new R();
return r.setCode(4000).setMsg(Constant.IMG_PATH).setData(dao.findAll());
}
@RequestMapping("/queryByAccount")
R queryByAccount(@RequestParam("account") String account) {
R r = new R();
if (StringUtil.isEmpty(account)) {
return r.setCode(4000).setMsg(HttpMsg.INVALID_PARAM);
}
List<Cart> carts = cartService.queryByAccount(account);
for (Cart cart : carts) {
float price = flowersDao.queryPrice(cart.getFid());
cart.setPrice(cart.getAmount() * price);
}
return r.setCode(2000).setData(carts);
}
@RequestMapping("/find")
R find(@RequestParam("page") int page, @RequestParam("searchKey") String searchKey, @RequestParam("account") String account) {
R r = new R();
Map<String, Object> map = new HashMap<>();
List<Cart> carts = cartService.find(searchKey, account);
if (carts == null) {
return r.setCode(2000);
}
List<Cart> items = carts.size() >= page * Constant.PAGE_SIZE ?
carts.subList((page - 1) * Constant.PAGE_SIZE, page * Constant.PAGE_SIZE)
: carts.subList((page - 1) * Constant.PAGE_SIZE, carts.size());
int len = carts.size() % Constant.PAGE_SIZE == 0 ? carts.size() / Constant.PAGE_SIZE
: (carts.size() / Constant.PAGE_SIZE + 1);
map.put("items", items);
map.put("len", len);
return r.setCode(2000).setData(map);
}
@RequestMapping("/buy")
R buy(@RequestParam("account") String account) {
R r = new R();
// 查该用户的购物车
List<Cart> carts = (List<Cart>) queryByAccount(account).getData();
/**
* 花朵种类
**/
@RestController
@RequestMapping("species")
public class FlowerTypeController {
@Autowired
SpeciesService speciesService;
@Autowired
SpeciesDao dao;
@RequestMapping("/test")
R test() {
R r = new R();
return r.setCode(4000).setMsg(Constant.IMG_PATH).setData(dao.findAll());
}
@RequestMapping("/findAll")
R findAll() {
R r = new R();
List<Species> all = speciesService.findAll();
if (all.size()<=0){
return r.setCode(4000).setMsg(HttpMsg.NO_TYPE_NOW);
}
return r.setCode(2000).setData(all);
}
@RequestMapping("/find")
R find(@RequestParam("page") int page, @RequestParam("searchKey") String searchKey) {
R r = new R();
Map<String, Object> map = new HashMap<>();
List<Species> list = speciesService.find(searchKey);
if (list == null) {
return r.setCode(2000);
}
List<Species> items = list.size() >= page * Constant.PAGE_SIZE ?
list.subList((page - 1) * Constant.PAGE_SIZE, page * Constant.PAGE_SIZE)
: list.subList((page - 1) * Constant.PAGE_SIZE, list.size());
int len = list.size() % Constant.PAGE_SIZE == 0 ? list.size() / Constant.PAGE_SIZE
: (list.size() / Constant.PAGE_SIZE + 1);
map.put("items", items);
map.put("len", len);
return r.setCode(2000).setData(map);
}
return r.setCode(2000);
}
return getResponse(flowers, page, Constant.PAGE_SIZE, r);
}
// 返回结果
private R getResponse(List<Flower> flowers, int page, int pageSize, R r) {
Map<String, Object> map = new HashMap<>();
List<Flower> items = flowers.size() >= page * pageSize ?
flowers.subList((page - 1) * pageSize, page * pageSize)
: flowers.subList((page - 1) * pageSize, flowers.size());
int len = flowers.size() % pageSize == 0 ? flowers.size() / pageSize
: (flowers.size() / pageSize + 1);
for (Flower item : items) {
if (item.getImg_guid() == null) {
item.setImg_guid(Constant.DEFAULT_IMG);
}
item.setImg_guid(Constant.IMG_USE_PATH + item.getImg_guid());
}
map.put("items", items);
map.put("len", len);
return r.setCode(2000).setData(map);
}
@RequestMapping("/create")
R create(@RequestBody Flower flower) {
R r = new R();
int ans = flowerService.add(flower);
if (ans == 1) {
return r.setCode(2000).setMsg(HttpMsg.ADD_FLOWER_OK);
}
return r.setCode(4000).setMsg(HttpMsg.ADD_FLOWER_FAILED);
}
@RequestMapping("/update")
R update(@RequestBody Flower flower) {
R r = new R();
int ans = flowerService.update(flower);
if (ans >= 0) {
return r.setCode(2000).setMsg(HttpMsg.UPDATE_FLOWER_OK);
}
return r.setCode(4000).setMsg(HttpMsg.UPDATE_FLOWER_FAILED);
}
@RequestMapping("/changeState")
R changeState(@RequestBody Flower flower) {
R r = new R();
flowersDao.changeState(flower);
String msg = flower.getState() == 1?HttpMsg.GOODS_UP_OK:HttpMsg.GOODS_DOWN_OK;
return r.setCode(2000).setMsg(msg);
}
// 保存上传的图片
/**
* 花朵种类
**/
@RestController
@RequestMapping("species")
public class FlowerTypeController {
@Autowired
SpeciesService speciesService;
@Autowired
SpeciesDao dao;
@RequestMapping("/test")
R test() {
R r = new R();
return r.setCode(4000).setMsg(Constant.IMG_PATH).setData(dao.findAll());
}
@RequestMapping("/findAll")
R findAll() {
R r = new R();
List<Species> all = speciesService.findAll();
if (all.size()<=0){
return r.setCode(4000).setMsg(HttpMsg.NO_TYPE_NOW);
}
return r.setCode(2000).setData(all);
}
@RequestMapping("/find")
R find(@RequestParam("page") int page, @RequestParam("searchKey") String searchKey) {
R r = new R();
Map<String, Object> map = new HashMap<>();
List<Species> list = speciesService.find(searchKey);
if (list == null) {
return r.setCode(2000);
}
List<Species> items = list.size() >= page * Constant.PAGE_SIZE ?
list.subList((page - 1) * Constant.PAGE_SIZE, page * Constant.PAGE_SIZE)
: list.subList((page - 1) * Constant.PAGE_SIZE, list.size());
int len = list.size() % Constant.PAGE_SIZE == 0 ? list.size() / Constant.PAGE_SIZE
: (list.size() / Constant.PAGE_SIZE + 1);
map.put("items", items);
map.put("len", len);
return r.setCode(2000).setData(map);
}
@RequestMapping("/create")
R create(@RequestBody Species species) {
/**
* 商品
**/
@RestController
@RequestMapping("flower")
public class FlowerController {
@Autowired
FlowersService flowerService;
@Autowired
FlowersDao flowersDao;
@RequestMapping("/test")
R test() {
R r = new R();
return r;
}
//find
@RequestMapping("/find")
R find(@RequestParam("page") int page, @RequestParam("searchKey") String searchKey, @RequestParam("searchType") String searchType) {
R r = new R();
List<Flower> flowers = flowerService.find(searchKey, searchType);
if (flowers == null) {
return r.setCode(2000);
}
return getResponse(flowers, page, Constant.SHOW_PAGE_SIZE, r);
}
// 管理员查询所有
@RequestMapping("/findAll")
R findAll(@RequestParam("page") int page, @RequestParam("searchKey") String searchKey) {
R r = new R();
List<Flower> flowers = flowerService.findAll(searchKey);
if (flowers == null) {
return r.setCode(2000);
}
return getResponse(flowers, page, Constant.PAGE_SIZE, r);
}
// 返回结果
private R getResponse(List<Flower> flowers, int page, int pageSize, R r) {
Map<String, Object> map = new HashMap<>();
List<Flower> items = flowers.size() >= page * pageSize ?
flowers.subList((page - 1) * pageSize, page * pageSize)