基于ssm的蛋糕商城系统java项目jsp项目javaweb
文章目录
- 蛋糕商城系统
- 一、项目演示
- 二、项目介绍
- 三、系统部分功能截图
- 四、部分代码展示
- 五、底部获取项目源码(9.9¥带走)
蛋糕商城系统
一、项目演示
蛋糕商城管理系统
二、项目介绍
系统角色 : 管理员、用户
一,管理员
管理员有订单管理,用户管理,商品管理,分类管理等功能
二,用户
用户可进行注册,登录,查看商品列表,查看商品详情,加入购物车,购买商品等功能。
语言:java
技术栈:JSP + Spring+Spring MVC+Mybatis
数据库:MySQL
三、系统部分功能截图
四、部分代码展示
package com.controller;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.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.Tops;
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.SafeUtil;
import com.util.UploadUtil;/*** 后台相关接口*/
@Controller
@RequestMapping("/admin")
public class AdminController {private static final int rows = 10;@Autowiredprivate AdminService adminService;@Autowiredprivate OrderService orderService;@Autowiredprivate UserService userService;@Autowiredprivate GoodService goodService;@Autowiredprivate TopService topService;@Autowiredprivate TypeService typeService;/*** 管理员登录* @return*/@RequestMapping("/login")public String login(Admins admin, HttpServletRequest request, HttpSession session) {if (adminService.checkUser(admin.getUsername(), admin.getPassword())) {session.setAttribute("username", admin.getUsername());return "redirect:index";}request.setAttribute("msg", "用户名或密码错误!");return "/admin/login.jsp";}/*** 退出* @return*/@RequestMapping("/logout")public String logout(HttpSession session) {session.removeAttribute("admin");return "/admin/login.jsp";}/*** 后台首页* @return*/@RequestMapping("/index")public String index(HttpServletRequest request) {request.setAttribute("msg", "恭喜你! 登录成功了");return "/admin/index.jsp";}/*** 订单列表* * @return*/@RequestMapping("/orderList")public String orderList(@RequestParam(required=false, defaultValue="0")byte status, HttpServletRequest request,@RequestParam(required=false, defaultValue="1") int page) {request.setAttribute("flag", 1);request.setAttribute("status", status);request.setAttribute("orderList", orderService.getList(status, page, rows));request.setAttribute("pageTool", PageUtil.getPageTool(request, orderService.getTotal(status), page, rows));return "/admin/order_list.jsp";}/*** 订单发货* * @return*/@RequestMapping("/orderDispose")public String orderDispose(int id, byte status,@RequestParam(required=false, defaultValue="1") int page) {orderService.dispose(id);return "redirect:orderList?flag=1&status="+status+"&page="+page;}/*** 订单完成* * @return*/@RequestMapping("/orderFinish")public String orderFinish(int id, byte status,@RequestParam(required=false, defaultValue="1") int page) {orderService.finish(id);return "redirect:orderList?flag=1&status="+status+"&page="+page;}/*** 订单删除* * @return*/@RequestMapping("/orderDelete")public String orderDelete(int id, byte status,@RequestParam(required=false, defaultValue="1") int page) {orderService.delete(id);return "redirect:orderList?flag=1&status="+status+"&page="+page;}/*** 顾客管理* * @return*/@RequestMapping("/userList")public String userList(HttpServletRequest request,@RequestParam(required=false, defaultValue="1") int page) {request.setAttribute("flag", 2);request.setAttribute("userList", userService.getList(page, rows));request.setAttribute("pageTool", PageUtil.getPageTool(request, userService.getTotal(), page, rows));return "/admin/user_list.jsp";}/*** 顾客添加* * @return*/@RequestMapping("/userAdd")public String userAdd(HttpServletRequest request) {request.setAttribute("flag", 2);return "/admin/user_add.jsp";}/*** 顾客添加* * @return*/@RequestMapping("/userSave")public String userSave(Users user, HttpServletRequest request, @RequestParam(required=false, defaultValue="1") int page) {if (userService.isExist(user.getUsername())) {request.setAttribute("msg", "用户名已存在!");return "/admin/user_add.jsp";}userService.add(user);return "redirect:userList?flag=2&page="+page;}/*** 顾客密码重置页面* * @return*/@RequestMapping("/userRe")public String userRe(int id, HttpServletRequest request) {request.setAttribute("flag", 2);request.setAttribute("user", userService.get(id));return "/admin/user_reset.jsp";}/*** 顾客密码重置* * @return*/@RequestMapping("/userReset")public String userReset(Users user, @RequestParam(required=false, defaultValue="1") int page) {String password = SafeUtil.encode(user.getPassword());user = userService.get(user.getId());user.setPassword(password);userService.update(user);return "redirect:userList?flag=2&page="+page;}/*** 顾客更新* * @return*/@RequestMapping("/userEdit")public String userEdit(int id, HttpServletRequest request) {request.setAttribute("flag", 2);request.setAttribute("user", userService.get(id));return "/admin/user_edit.jsp";}/*** 顾客更新* * @return*/@RequestMapping("/userUpdate")public String userUpdate(Users user, @RequestParam(required=false, defaultValue="1") int page) {userService.update(user);return "redirect:userList?flag=2&page="+page;}/*** 顾客删除* * @return*/@RequestMapping("/userDelete")public String userDelete(Users user, @RequestParam(required=false, defaultValue="1") int page) {userService.delete(user);return "redirect:userList?flag=2&page="+page;}/*** 产品列表* * @return*/@RequestMapping("/goodList")public String goodList(@RequestParam(required=false, defaultValue="0")byte status, HttpServletRequest request, @RequestParam(required=false, defaultValue="1") int page) {request.setAttribute("flag", 3);request.setAttribute("page", page);request.setAttribute("status", status);request.setAttribute("goodList", goodService.getList(status, page, rows));request.setAttribute("pageTool", PageUtil.getPageTool(request, goodService.getTotal(status), page, rows));return "/admin/good_list.jsp";}/*** 产品添加* * @return*/@RequestMapping("/goodAdd")public String goodAdd(HttpServletRequest request) {request.setAttribute("flag", 3);request.setAttribute("typeList", typeService.getList());return "/admin/good_add.jsp";}/*** 产品添加* * @return* @throws Exception */@RequestMapping("/goodSave")public String goodSave(String name, int price, String intro, int stock, int typeId, MultipartFile cover, MultipartFile image1, MultipartFile image2, @RequestParam(required=false, defaultValue="1") int page) throws Exception {Goods good = new Goods();good.setName(name);good.setPrice(price);good.setIntro(intro);good.setStock(stock);good.setTypeId(typeId);good.setCover(UploadUtil.fileUpload(cover));good.setImage1(UploadUtil.fileUpload(image1));good.setImage2(UploadUtil.fileUpload(image2));goodService.add(good);return "redirect:goodList?flag=3&page="+page;}/*** 产品更新* * @return*/@RequestMapping("/goodEdit")public String goodEdit(int id, HttpServletRequest request) {request.setAttribute("flag", 3);request.setAttribute("typeList", typeService.getList());request.setAttribute("good", goodService.get(id));return "/admin/good_edit.jsp";}/*** 产品更新* * @return* @throws Exception */@RequestMapping("/goodUpdate")public String goodUpdate(int id, String name, int price, String intro, int stock, int typeId, MultipartFile cover, MultipartFile image1, MultipartFile image2,@RequestParam(required=false, defaultValue="1") int page) throws Exception {Goods good = goodService.get(id);good.setName(name);good.setPrice(price);good.setIntro(intro);good.setStock(stock);good.setTypeId(typeId);if (Objects.nonNull(cover) && !cover.isEmpty()) {good.setCover(UploadUtil.fileUpload(cover));}if (Objects.nonNull(image1) && !image1.isEmpty()) {good.setImage1(UploadUtil.fileUpload(image1));}if (Objects.nonNull(image2) && !image2.isEmpty()) {good.setImage2(UploadUtil.fileUpload(image2));}goodService.update(good);return "redirect:goodList?flag=3&page="+page;}/*** 产品删除* * @return*/@RequestMapping("/goodDelete")public String goodDelete(int id, @RequestParam(required=false, defaultValue="1") int page) {goodService.delete(id);return "redirect:goodList?flag=3&page="+page;}/*** 添加推荐* @return*/@RequestMapping("/topSave")public @ResponseBody String topSave(Tops tops, @RequestParam(required=false, defaultValue="0")byte status,@RequestParam(required=false, defaultValue="1") int page) {int id = topService.add(tops);return id > 0 ? "ok" : null;}/*** 删除推荐* @return*/@RequestMapping("/topDelete")public @ResponseBody String topDelete(Tops tops, @RequestParam(required=false, defaultValue="0")byte status,@RequestParam(required=false, defaultValue="1") int page) {boolean flag = topService.delete(tops);return flag ? "ok" : null;}/*** 类目列表* * @return*/@RequestMapping("/typeList")public String typeList(HttpServletRequest request) {request.setAttribute("flag", 4);request.setAttribute("typeList", typeService.getList());return "/admin/type_list.jsp";}/*** 类目添加* * @return*/@RequestMapping("/typeSave")public String typeSave(Types type, @RequestParam(required=false, defaultValue="1") int page) {typeService.add(type);return "redirect:typeList?flag=4&page="+page;}/*** 类目更新* * @return*/@RequestMapping("/typeEdit")public String typeUp(int id, HttpServletRequest request) {request.setAttribute("flag", 4);request.setAttribute("type", typeService.get(id));return "/admin/type_edit.jsp";}/*** 类目更新* * @return*/@RequestMapping("/typeUpdate")public String typeUpdate(Types type, @RequestParam(required=false, defaultValue="1") int page) {typeService.update(type);return "redirect:typeList?flag=4&page="+page;}/*** 类目删除* * @return*/@RequestMapping("/typeDelete")public String typeDelete(Types type, @RequestParam(required=false, defaultValue="1") int page) {typeService.delete(type);return "redirect:typeList?flag=4&page="+page;}/*** 管理员列表* * @return*/@RequestMapping("/adminList")public String adminList(HttpServletRequest request, @RequestParam(required=false, defaultValue="1") int page) {request.setAttribute("flag", 5);request.setAttribute("adminList", adminService.getList(page, rows));request.setAttribute("pageTool", PageUtil.getPageTool(request, adminService.getTotal(), page, rows));return "/admin/admin_list.jsp";}/*** 管理员修改自己密码* * @return*/@RequestMapping("/adminRe")public String adminRe(HttpServletRequest request, HttpSession session) {request.setAttribute("flag", 5);request.setAttribute("admin", adminService.getByUsername(String.valueOf(session.getAttribute("username"))));return "/admin/admin_reset.jsp";}/*** 管理员修改自己密码* * @return*/@RequestMapping("/adminReset")public String adminReset(Admins admin, HttpServletRequest request) {request.setAttribute("flag", 5);if (adminService.get(admin.getId()).getPassword().equals(SafeUtil.encode(admin.getPassword()))) {admin.setPassword(SafeUtil.encode(admin.getPasswordNew()));adminService.update(admin);request.setAttribute("admin", admin);request.setAttribute("msg", "修改成功!");}else {request.setAttribute("msg", "原密码错误!");}return "/admin/admin_reset.jsp";}/*** 管理员添加* * @return*/@RequestMapping("/adminSave")public String adminSave(Admins admin, HttpServletRequest request, @RequestParam(required=false, defaultValue="1") int page) {if (adminService.isExist(admin.getUsername())) {request.setAttribute("msg", "用户名已存在!");return "/admin/admin_add.jsp";}adminService.add(admin);return "redirect:adminList?flag=5&page="+page;}/*** 管理员修改* * @return*/@RequestMapping("/adminEdit")public String adminEdit(int id, HttpServletRequest request) {request.setAttribute("flag", 5);request.setAttribute("admin", adminService.get(id));return "/admin/admin_edit.jsp";}/*** 管理员更新* * @return*/@RequestMapping("/adminUpdate")public String adminUpdate(Admins admin, @RequestParam(required=false, defaultValue="1") int page) {admin.setPassword(SafeUtil.encode(admin.getPassword()));adminService.update(admin);return "redirect:adminList?flag=5&page="+page;}/*** 管理员删除* * @return*/@RequestMapping("/adminDelete")public String adminDelete(Admins admin, @RequestParam(required=false, defaultValue="1") int page) {adminService.delete(admin);return "redirect:adminList?flag=5&page="+page;}}
package com.controller;import javax.annotation.Resource;
import javax.servlet.ServletRequest;
import javax.servlet.http.HttpSession;import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;import com.entity.Goods;
import com.entity.Items;
import com.entity.Orders;
import com.entity.Users;
import com.service.GoodService;
import com.service.OrderService;
import com.service.TypeService;
import com.service.UserService;
import com.util.SafeUtil;import java.util.List;
import java.util.Objects;/*** 用户相关接口*/
@Controller
@RequestMapping("/index")
public class UserController{private static final String INDENT_KEY = "order";@Resourceprivate UserService userService;@Resourceprivate OrderService orderService;@Resourceprivate GoodService goodService;@Resourceprivate TypeService typeService;/*** 注册用户* @return*/@RequestMapping("/register")public String register(@RequestParam(required=false, defaultValue="0")int flag, Users user, Model model){model.addAttribute("typeList", typeService.getList());if(flag==-1) {model.addAttribute("flag", 5); // 注册页面return "/index/register.jsp";}if (user.getUsername().isEmpty()) {model.addAttribute("msg", "用户名不能为空!");return "/index/register.jsp";}else if (userService.isExist(user.getUsername())) {model.addAttribute("msg", "用户名已存在!");return "/index/register.jsp";}else {String password = user.getPassword();userService.add(user);user.setPassword(password);return "redirect:login?flag=-1"; // 注册成功后转去登录}}/*** 用户登录* @return*/@RequestMapping("/login")public String login(@RequestParam(required=false, defaultValue="0")int flag, Users user, HttpSession session, Model model) {model.addAttribute("typeList", typeService.getList());if(flag==-1) {flag = 6; // 登录页面return "/index/login.jsp";}if(userService.checkUser(user.getUsername(), user.getPassword())){session.setAttribute("user", userService.get(user.getUsername()));return "redirect:index";} else {model.addAttribute("msg", "用户名或密码错误!");return "/index/login.jsp";}}/*** 注销登录* @return*/@RequestMapping("/logout")public String logout(HttpSession session) {session.removeAttribute("user");session.removeAttribute("order");return "/index/login.jsp";}/*** 查看购物车* @return*/@RequestMapping("/cart")public String cart(Model model) {model.addAttribute("typeList", typeService.getList());return "/index/cart.jsp";}/*** 购买* @return*/@RequestMapping("/buy")public @ResponseBody String buy(int goodid, HttpSession session){Goods goods = goodService.get(goodid);if (goods .getStock() <= 0) { // 库存不足return "empty";}Orders order = (Orders) session.getAttribute(INDENT_KEY);if (order==null) {session.setAttribute(INDENT_KEY, orderService.add(goods));}else {session.setAttribute(INDENT_KEY, orderService.addOrderItem(order, goods));}return "ok";}/*** 减少*/@RequestMapping("/lessen")public @ResponseBody String lessen(int goodid, HttpSession session){Orders order = (Orders) session.getAttribute(INDENT_KEY);if (order != null) {session.setAttribute(INDENT_KEY, orderService.lessenIndentItem(order, goodService.get(goodid)));}return "ok";}/*** 删除*/@RequestMapping("/delete")public @ResponseBody String delete(int goodid, HttpSession session){Orders order = (Orders) session.getAttribute(INDENT_KEY);if (order != null) {session.setAttribute(INDENT_KEY, orderService.deleteIndentItem(order, goodService.get(goodid)));}return "ok";}/*** 提交订单* @return*/@RequestMapping("/save")public String save(ServletRequest request, HttpSession session, Model model){model.addAttribute("typeList", typeService.getList());Users user = (Users) session.getAttribute("user");if (user == null) {request.setAttribute("msg", "请登录后提交订单!");return "/index/login.jsp";}Orders sessionOrder = (Orders) session.getAttribute(INDENT_KEY);if (sessionOrder != null) {if (sessionOrder != null) {for(Items item : sessionOrder.getItemList()){ // 检测商品库存(防止库存不足)Goods product = goodService.get(item.getGoodId());if(item.getAmount() > product.getStock()){request.setAttribute("msg", "商品 ["+product.getName()+"] 库存不足! 当前库存数量: "+product.getStock());return "/index/cart.jsp";}}}sessionOrder.setUserId(user.getId());sessionOrder.setUser(userService.get(user.getId()));int orderid = orderService.save(sessionOrder); // 保存订单session.removeAttribute(INDENT_KEY); // 清除购物车return "redirect:topay?orderid="+orderid;}request.setAttribute("msg", "处理失败!");return "/index/cart.jsp";}/*** 支付页面* @return*/@RequestMapping("/topay")public String topay(int orderid, ServletRequest request, Model model) {model.addAttribute("typeList", typeService.getList());request.setAttribute("order", orderService.get(orderid));return "/index/pay.jsp";}/*** 支付(模拟)* @return*/@RequestMapping("/pay")public String pay(Orders order, Model model) {model.addAttribute("typeList", typeService.getList());orderService.pay(order);return "redirect:payok?orderid="+order.getId();}/*** 支付成功* @return*/@RequestMapping("/payok")public String payok(int orderid, ServletRequest request, Model model) {model.addAttribute("typeList", typeService.getList());Orders order = orderService.get(orderid);int paytype = order.getPaytype();if(paytype == Orders.PAYTYPE_WECHAT || paytype == Orders.PAYTYPE_ALIPAY) {request.setAttribute("msg", "订单["+orderid+"]支付成功");}else {request.setAttribute("msg", "订单["+orderid+"]货到付款");}return "/index/payok.jsp";}/*** 查看订单* @return*/@RequestMapping("/order")public String order(HttpSession session, Model model){model.addAttribute("flag", 3);model.addAttribute("typeList", typeService.getList());Users user = (Users) session.getAttribute("user");if (user == null) {model.addAttribute("msg", "请登录后查看订单!");return "/index/login.jsp";}List<Orders> orderList = orderService.getListByUserid(user.getId());if (orderList!=null && !orderList.isEmpty()) {for(Orders order : orderList){order.setItemList(orderService.getItemList(order.getId()));}}model.addAttribute("orderList", orderList);return "/index/order.jsp";}/*** 个人信息* @return*/@RequestMapping("/my")public String my(Users user, HttpSession session, Model model){model.addAttribute("flag", 4);model.addAttribute("typeList", typeService.getList());Users userLogin = (Users) session.getAttribute("user");if (userLogin == null) {model.addAttribute("msg", "请先登录!");return "/index/login.jsp";}// 进入个人中心if (Objects.isNull(user) || Objects.isNull(user.getId())) {return "/index/my.jsp";}Users u = userService.get(user.getId());// 修改资料u.setName(user.getName());u.setPhone(user.getPhone());u.setAddress(user.getAddress());userService.update(u); // 更新数据库session.setAttribute("user", u); // 更新sessionmodel.addAttribute("msg", "信息修改成功!");// 修改密码if(user.getPasswordNew()!=null && !user.getPasswordNew().trim().isEmpty()) {if (user.getPassword()!=null && !user.getPassword().trim().isEmpty() && SafeUtil.encode(user.getPassword()).equals(u.getPassword())) {if (user.getPasswordNew()!=null && !user.getPasswordNew().trim().isEmpty()) {u.setPassword(SafeUtil.encode(user.getPasswordNew()));}userService.update(u); // 更新数据库session.setAttribute("user", u); // 更新sessionmodel.addAttribute("msg", "密码修改成功!");}else {model.addAttribute("msg", "原密码错误!");}}return "/index/my.jsp";}}
package com.service;import java.util.ArrayList;
import java.util.Date;
import java.util.List;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;import com.dao.ItemsDao;
import com.dao.OrdersDao;
import com.entity.Goods;
import com.entity.Items;
import com.entity.Orders;/*** 商品订单服务*/
@Service // 注解为service层spring管理bean
@Transactional // 注解此类所有方法加入spring事务, 具体设置默认
public class OrderService {@Autowiredprivate OrdersDao orderDao;@Autowiredprivate ItemsDao itemDao;@Autowiredprivate GoodService goodService;/*** 创建订单* @param good* @return*/public Orders add(Goods good) {List<Items> itemList = new ArrayList<Items>();itemList.add(addItem(good));Orders order = new Orders();order.setItemList(itemList);order.setTotal(good.getPrice());order.setAmount(1);return order;}/*** 向订单添加项目* @param order* @param good* @return*/public Orders addOrderItem(Orders order, Goods good) {List<Items> itemList = order.getItemList();itemList = itemList==null ? new ArrayList<Items>() : itemList;// 如果购物车已有此项目, 数量+1boolean notThis = true;for (Items item : itemList) {if (item.getGoodId() == good.getId()) {item.setAmount(item.getAmount() + 1);item.setTotal(good.getPrice() * item.getAmount());notThis = false;}}// 如果当前购物车没有此项目, 创建新条目if (notThis) {itemList.add(addItem(good));}order.setTotal(order.getTotal() + good.getPrice());order.setAmount(order.getAmount() + 1);return order;}/*** 从订单中减少项目* @param order* @param good* @return*/public Orders lessenIndentItem(Orders order, Goods good) {List<Items> itemList = order.getItemList();itemList = itemList==null ? new ArrayList<Items>() : itemList;// 如果购物车已有此项目, 数量-1boolean noneThis = true;for (Items item : itemList) {if (item.getGoodId() == good.getId()) {if (item.getAmount() - 1 <= 0) { // 减少到0后删除return deleteIndentItem(order, good);}item.setAmount(item.getAmount() - 1);item.setTotal(good.getPrice() * item.getAmount());noneThis = false;}}// 如果当前购物车没有项目, 直接返回if (noneThis) {return order;}order.setTotal(order.getTotal() - good.getPrice());order.setAmount(order.getAmount() - 1);return order;}/*** 从订单中删除项目* @param order* @param good* @return*/public Orders deleteIndentItem(Orders order, Goods good) {List<Items> itemList = order.getItemList();itemList = itemList==null ? new ArrayList<Items>() : itemList;// 如果购物车已有此项目, 数量清零boolean noneThis = true;int itemAmount = 0;List<Items> resultList = new ArrayList<Items>();for (Items item : itemList) {if (item.getGoodId() == good.getId()) {itemAmount = item.getAmount();noneThis = false;continue;}resultList.add(item);}// 如果已经没有项目, 返回nullif (resultList.isEmpty()) {return null;}order.setItemList(resultList);// 如果当前购物车没有项目, 直接返回if (noneThis) {return order;}order.setTotal(order.getTotal() - good.getPrice() * itemAmount);order.setAmount(order.getAmount() - itemAmount);return order;}/*** 保存订单* @param order*/public int save(Orders order) {order.setStatus(Orders.STATUS_UNPAY);order.setSystime(new Date());orderDao.insert(order);int orderid = order.getId();for(Items item : order.getItemList()){item.setOrderId(orderid);itemDao.insert(item);}return orderid;}/*** 订单支付* @param order*/public void pay(Orders order) {Orders old = orderDao.selectById(order.getId());// 微信或支付宝支付时, 模拟支付完成int paytype = order.getPaytype();if(paytype == Orders.PAYTYPE_WECHAT || paytype == Orders.PAYTYPE_ALIPAY) {old.setStatus(Orders.STATUS_PAYED);}else {old.setStatus(Orders.STATUS_SEND);}old.setPaytype(order.getPaytype());old.setName(order.getName());old.setPhone(order.getPhone());old.setAddress(order.getAddress());orderDao.updateById(old);}/*** 获取订单列表* @param page* @param row* @return*/public List<Orders> getList(byte status, int page, int row) {List<Orders> orderList = orderDao.getListByStatus(status, row * (page-1), row);for(Orders order : orderList) {order.setItemList(this.getItemList(order.getId()));}return orderList;}/*** 获取总数* @return*/public int getTotal(byte status) {return (int)orderDao.getTotalByStatus(status);}/*** 订单发货* @param id* @return */public boolean dispose(int id) {Orders order = orderDao.selectById(id);order.setStatus(Orders.STATUS_SEND);return orderDao.updateByIdSelective(order) > 0;}/*** 订单完成* @param id* @return */public boolean finish(int id) {Orders order = orderDao.selectById(id);order.setStatus(Orders.STATUS_FINISH);return orderDao.updateByIdSelective(order) > 0;}/*** 删除订单* @param id*/public boolean delete(int id) {return orderDao.deleteById(id) > 0;}/*** 获取某用户全部订单* @param userid*/public List<Orders> getListByUserid(int userid) {return orderDao.getListByUserid(userid);}/*** 通过id获取* @param orderid* @return*/public Orders get(int orderid) {return orderDao.selectById(orderid);}/*** 创建订单项* @param good* @return*/private Items addItem(Goods good) {Items item = new Items();item.setGoodId(good.getId());item.setAmount(1);item.setPrice(good.getPrice());item.setTotal(good.getPrice());item.setGood(goodService.get(item.getGoodId()));return item;}/*** 获取订单项目列表* @param orderid* @return*/public List<Items> getItemList(int orderid){List<Items> itemList = itemDao.getItemList(orderid);for(Items item : itemList) {item.setGood(goodService.get(item.getGoodId()));}return itemList;}
}
五、底部获取项目源码(9.9¥带走)
有问题,或者需要协助调试运行项目的也可以
相关文章:

基于ssm的蛋糕商城系统java项目jsp项目javaweb
文章目录 蛋糕商城系统一、项目演示二、项目介绍三、系统部分功能截图四、部分代码展示五、底部获取项目源码(9.9¥带走) 蛋糕商城系统 一、项目演示 蛋糕商城管理系统 二、项目介绍 系统角色 : 管理员、用户 一,管理员 管理员有…...
vue3父组件使用ref获取子组件的属性和方法
在vue3中父组件访问子组件中的属性和方法是需要借助于ref: 1.<script setup> 中定义响应式变量 例如: const demo1 ref(null) 2.在引入的子组件标签上绑定ref属性的值与定义的响应式变量同名( <demo1 ref"demo1"/>)。 父组件代码如下&…...

加入MongoDB AI创新者计划,携手MongoDB共同开创AI新纪元
加入MongoDB AI创新者计划! MongoDB对AI创新和初创企业的支持既全面又广泛!无论您是领先的AI初创企业还是刚刚起步,MongoDB Atlas都是支持您愿景的最佳平台。 AI 初创者计划The AI Startup Track AI初创者计划为早期初创企业提供专属福利&…...
3. CSS的色彩与背景
3.1 CSS3中的色彩 CSS3扩展了颜色的定义方式,使得开发者能够使用更多样化和灵活的颜色表达方式。这包括RGB、RGBA、HSL、HSLA等格式,以及支持透明度和渐变的特性。 3.1.1 颜色格式 十六进制颜色 十六进制颜色是最常用的颜色表示法,以#开头…...

MiniCPM-Llama3-V-2_5-int4
MiniCPM-Llama3-V-2_5-int4大模型部署使用环境: python3.8cuda11.8其它要求,按照安装文档要求下载即可 我是在算力平台用4090跑的, GPU 显存(8GB)可以部署推理 int4 量化版本,如果推理非量化版本需要更高显…...

压缩能力登顶 小丸工具箱 V1.0 绿色便携版
平常录制视频或下载保存的视频时长往往都很长,很多时候都想要裁剪、 截取出一些“精华片段”保留下来,而不必保存一整个大型视频那么浪费硬盘空间… 但如今手机或电脑上大多数的视频剪辑软件,切割视频一般都要等待很长时间导出或转换&#…...

电子电器架构 - 车载网管功能简介
电子电器架构 - 车载网管功能简介 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自己,…...
路由配置总结
在 Vue 中,一级路由和二级路由的配置主要依赖于 vue-router 插件。以下是关于一级路由和二级路由配置的总结: 一、安装 vue-router 你可以通过 npm 或 yarn 来安装 vue-router。在命令行中运行以下命令: 使用 npm: npm install vue-router…...

从零起航,Python编程全攻略
新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、Python入门之旅 二、Python进阶之道 三、Python爬虫实战 四、Python数据分析利器 五…...
正运动视觉与运动一体机小课堂----三分钟系列
【视觉运控一体机小课堂】三分钟搭建机器视觉开发环境-正运动技术 (zmotion.com.cn) 【视觉运控一体机小课堂】三分钟读取本地图像-正运动技术 (zmotion.com.cn) 【视觉运控一体机小课堂】三分钟实现相机采集和图像保存-正运动技术 (zmotion.com.cn) 【视觉运控一体机小课堂…...

微信小程序如何跳转微信公众号
1. 微信小程序如何跳转微信公众号 1.2. 微信公众号配置 登录微信公众号,点击【小程序管理】: 点击【添加】: 点击【关联小程序】: 输入小程序进行关联: 1.2. 微信小程序配置 登录微信小程序…...

vi和vim编辑器
目录 1 vi和vim的基本介绍 2 vi和vim常用的三种模式 1)正常模式 2)插入模式 3)命令行模式 3 vim快捷键 1)普通模式下: 2)输入模式 3)命令行模式 4)可视模式 1 vi和vim的基本…...

纯电动汽车硬件在环测试
纯电动汽车硬件在环测试技术研究综述 1、新能源汽车概述 随着新能源汽车“电动化、智能化、网联化、共享化”进程的不断推进,新能源汽车的整体性能得到显著提高,纯电动汽车已经逐渐走进大众视野,消费者对于新能源汽车的认可度和购买欲望也稳…...
Flutter 中的 ClipRect 小部件:全面指南
Flutter 中的 ClipRect 小部件:全面指南 在Flutter中,ClipRect是一个布局小部件,它使用矩形裁剪其子组件的可见部分。这意味着超出ClipRect定义的矩形区域的子组件部分将被隐藏。ClipRect通常用于实现自定义的滚动效果、动画或者仅仅是为了限…...

【LeetCode】【209】长度最小的子数组(1488字)
文章目录 [toc]题目描述样例输入输出与解释样例1样例2样例3 提示进阶Python实现前缀和二分查找滑动窗口 个人主页:丷从心 系列专栏:LeetCode 刷题指南:LeetCode刷题指南 题目描述 给定一个含有n个正整数的数组和一个正整数target找出该数组…...

1738. 找出第 K 大的异或坐标值
题目: 给你一个二维矩阵 matrix 和一个整数 k ,矩阵大小为 m x n 由非负整数组成。 矩阵中坐标 (a, b) 的 值 可由对所有满足 0 < i < a < m 且 0 < j < b < n 的元素 matrix[i][j](下标从 0 开始计数)执行异…...
Fortran: stdlib标准库
Fortran 标准库 stdlib_logger,stdlib_error, stdlib_sorting,stdlib_optval模块挺好用 封装 stdlib_logger和stdlib_error: M_logger.F90 module M_loggeruse stdlib_loggeruse stdlib_error containssubroutine info(message,module,procedure)character(len*),intent(in):…...
CSS3优秀动画代码示例
目录 旋转立方体悬停效果动画路径动画纯CSS进度条文字打字机效果3D翻转卡片SVG路径跟随动画SVG心跳动画旋转文字手风琴效果...
嵌入式0基础开始学习 ⅠC语言(4)循环结构
0.问题引入 求0~100数据之和: int sum 0; sum 1234....100; 废手,那么有没有一种好的方法取操作呢? int sum 0; int i 1; sum sum i; // sum 01; …...

【JAVASE】抽象类
1、抽象类概念 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。比如: 说明&a…...
mongodb源码分析session执行handleRequest命令find过程
mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程,并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令,把数据流转换成Message,状态转变流程是:State::Created 》 St…...
IGP(Interior Gateway Protocol,内部网关协议)
IGP(Interior Gateway Protocol,内部网关协议) 是一种用于在一个自治系统(AS)内部传递路由信息的路由协议,主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...
基于数字孪生的水厂可视化平台建设:架构与实践
分享大纲: 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年,数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段,基于数字孪生的水厂可视化平台的…...

Module Federation 和 Native Federation 的比较
前言 Module Federation 是 Webpack 5 引入的微前端架构方案,允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...
CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云
目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...
爬虫基础学习day2
# 爬虫设计领域 工商:企查查、天眼查短视频:抖音、快手、西瓜 ---> 飞瓜电商:京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空:抓取所有航空公司价格 ---> 去哪儿自媒体:采集自媒体数据进…...
IP如何挑?2025年海外专线IP如何购买?
你花了时间和预算买了IP,结果IP质量不佳,项目效率低下不说,还可能带来莫名的网络问题,是不是太闹心了?尤其是在面对海外专线IP时,到底怎么才能买到适合自己的呢?所以,挑IP绝对是个技…...

华为OD机试-最短木板长度-二分法(A卷,100分)
此题是一个最大化最小值的典型例题, 因为搜索范围是有界的,上界最大木板长度补充的全部木料长度,下界最小木板长度; 即left0,right10^6; 我们可以设置一个候选值x(mid),将木板的长度全部都补充到x,如果成功…...

Neko虚拟浏览器远程协作方案:Docker+内网穿透技术部署实践
前言:本文将向开发者介绍一款创新性协作工具——Neko虚拟浏览器。在数字化协作场景中,跨地域的团队常需面对实时共享屏幕、协同编辑文档等需求。通过本指南,你将掌握在Ubuntu系统中使用容器化技术部署该工具的具体方案,并结合内网…...

2025-05-08-deepseek本地化部署
title: 2025-05-08-deepseek 本地化部署 tags: 深度学习 程序开发 2025-05-08-deepseek 本地化部署 参考博客 本地部署 DeepSeek:小白也能轻松搞定! 如何给本地部署的 DeepSeek 投喂数据,让他更懂你 [实验目的]:理解系统架构与原…...