三、系统实现
四、核心代码展示
4.1 菜品实体类设计
@Table(name = "a_dish") @TableName("a_dish") @ApiModel(value = "菜品") public class Dish extends ZwzBaseEntity { private static final long serialVersionUID = 1L; @ApiModelProperty(value = "菜品名称") private String title; @ApiModelProperty(value = "菜品介绍") private String content; @ApiModelProperty(value = "菜品分类") private String type; @ApiModelProperty(value = "单价") private BigDecimal unit; @ApiModelProperty(value = "剩余库存") private BigDecimal stock; @ApiModelProperty(value = "供应商") private String supplier; @ApiModelProperty(value = "图片") private String image; @Transient @TableField(exist=false) @ApiModelProperty(value = "是否收藏") private Boolean collectionFlag; }
4.2 收货地址实体类设计
@Table(name = "a_shipping_address") @TableName("a_shipping_address") @ApiModel(value = "收货地址") public class ShippingAddress extends ZwzBaseEntity { private static final long serialVersionUID = 1L; @ApiModelProperty(value = "挂靠人ID") private String userId; @ApiModelProperty(value = "挂靠人") private String userName; @ApiModelProperty(value = "收货地址") private String address; @ApiModelProperty(value = "收货人") private String consignee; @ApiModelProperty(value = "联系电话") private String mobile; }
4.3 查询菜品接口设计
@RequestMapping(value = "/getByPage", method = RequestMethod.GET) @ApiOperation(value = "查询菜品") public Result<IPage<Dish>> getByPage(@ModelAttribute Dish dish ,@ModelAttribute PageVo page){ QueryWrapper<Dish> qw = new QueryWrapper<>(); if(!ZwzNullUtils.isNull(dish.getTitle())) { qw.like("title",dish.getTitle()); } if(!ZwzNullUtils.isNull(dish.getContent())) { qw.like("content",dish.getContent()); } if(!ZwzNullUtils.isNull(dish.getSupplier())) { qw.like("supplier",dish.getSupplier()); } User currUser = securityUtil.getCurrUser(); IPage<Dish> data = iDishService.page(PageUtil.initMpPage(page),qw); for (Dish vo : data.getRecords()) { QueryWrapper<DishCollection> collQw = new QueryWrapper<>(); collQw.eq("user_id",currUser.getId()); collQw.eq("dish_id",vo.getId()); vo.setCollectionFlag(iDishCollectionService.count(collQw) > 0L); } return new ResultUtil<IPage<Dish>>().setData(data); }
4.4 菜品下单接口设计
@RequestMapping(value = "/addOneOrder", method = RequestMethod.POST) @ApiOperation(value = "从购物车下单") public Result<Object> addOneOrder(@RequestParam String[] ids){ List<DishOrderItem> itemList = new ArrayList<>(); List<ShoppingCart> cartList = new ArrayList<>(); BigDecimal sumMoney = BigDecimal.ZERO; for(String id: ids) { ShoppingCart sc = iShoppingCartService.getById(id); if(sc == null) { return ResultUtil.error("购物车已被删除"); } cartList.add(sc); Dish dish = iDishService.getById(sc.getDishId()); if(dish == null) { return ResultUtil.error("菜品已下架"); } DishOrderItem item = new DishOrderItem(); item.setDishId(dish.getId()); item.setDishName(dish.getTitle()); item.setUnit(dish.getUnit()); item.setImage(dish.getImage()); item.setNumber(sc.getNumber()); item.setSumMoney(item.getUnit().multiply(item.getNumber())); itemList.add(item); sumMoney = sumMoney.add(item.getSumMoney()); } User currUser = securityUtil.getCurrUser(); DishOrder order = new DishOrder(); order.setUserId(currUser.getId()); order.setUserName(currUser.getNickname()); order.setOrderTime(DateUtil.now()); order.setSumMoney(sumMoney); order.setOrderSize(BigDecimal.valueOf(itemList.size())); order.setStatus("已下单"); iDishOrderService.saveOrUpdate(order); for (DishOrderItem item : itemList) { item.setOrderId(order.getId()); iDishOrderItemService.saveOrUpdate(item); } for (ShoppingCart vo : cartList) { iShoppingCartService.removeById(vo.getId()); } return ResultUtil.success(); }
4.5 菜品收藏接口设计
@RequestMapping(value = "/addOne", method = RequestMethod.GET) @ApiOperation(value = "添加单条收藏") public Result<Object> addOne(@RequestParam String id){ Dish dish = iDishService.getById(id); if(dish == null) { return ResultUtil.error("菜品不存在"); } User currUser = securityUtil.getCurrUser(); QueryWrapper<DishCollection> qw = new QueryWrapper<>(); qw.eq("user_id",currUser.getId()); qw.eq("dish_id",dish.getId()); if(iDishCollectionService.count(qw) > 0L) { return ResultUtil.error("您已收藏"); } DishCollection dc = new DishCollection(); dc.setDishId(dish.getId()); dc.setDishName(dish.getTitle()); dc.setUserId(currUser.getId()); dc.setUserName(currUser.getNickname()); dc.setCollectionTime(DateUtil.now()); iDishCollectionService.saveOrUpdate(dc); return ResultUtil.success(); }
五、免责说明
- 本项目仅供个人学习使用,商用授权请联系博主,否则后果自负。
- 博主拥有本软件构建后的应用系统全部内容所有权及独立的知识产权,拥有最终解释权。
- 如有问题,欢迎在仓库 Issue 留言,看到后会第一时间回复,相关意见会酌情考虑,但没有一定被采纳的承诺或保证。
下载本系统代码或使用本系统的用户,必须同意以下内容,否则请勿下载!
- 出于自愿而使用/开发本软件,了解使用本软件的风险,且同意自己承担使用本软件的风险。
- 利用本软件构建的网站的任何信息内容以及导致的任何版权纠纷和法律争议及后果和博主无关,博主对此不承担任何责任。
- 在任何情况下,对于因使用或无法使用本软件而导致的任何难以合理预估的损失(包括但不仅限于商业利润损失、业务中断与业务信息丢失),博主概不承担任何责任。
- 必须了解使用本软件的风险,博主不承诺提供一对一的技术支持、使用担保,也不承担任何因本软件而产生的难以预料的问题的相关责任。