package com.my.shop.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.my.shop.constant.MyPage;
import com.my.shop.dto.Item;
import com.my.shop.dto.MyMsg;
import com.my.shop.dto.OrderInput;
import com.my.shop.entity.Cart;
import com.my.shop.entity.Goods;
import com.my.shop.entity.Order;
import com.my.shop.entity.OrderItem;
import com.my.shop.service.*;
import io.swagger.annotations.Api;
import io.swagger.v3.oas.annotations.Operation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import javax.validation.Valid;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
/**
* <p>
* 订单 前端控制器
* </p>
*
* @author yl
* @since 2021-03-10
*/
@RestController
@RequestMapping("/user/order")
@Api(tags = "用户订单")
public class OrderController {
@Autowired
private IOrderService orderService;
@Autowired
private IOrderItemService orderItemService;
@Autowired
private IGoodsService goodsService;
@Autowired
private IUserService userService;
@Autowired
private ICartService cartService;
@RequestMapping(method = RequestMethod.POST, path = "/")
@Operation(summary = "新增")
@Transactional
public MyMsg save(@RequestBody @Valid OrderInput orderInput, HttpServletRequest request) throws JsonProcessingException {
// HttpSession session = request.getSession();
// User user = (User) session.getAttribute(User.USER_SESSION_NAME);
/*加订单*/
Order order = new Order();
order.setUserId(orderInput.getUserId());
order.setAddress(orderInput.getAddress());
order.setTotal(BigDecimal.ZERO);
orderService.save(order);
ArrayList<OrderItem> items = new ArrayList<>();
BigDecimal total = BigDecimal.ZERO;
for (Item item : orderInput.getItems()) {
Goods goods = goodsService.getById(item.getGoodsId());
if (goods == null) {
throw new RuntimeException("商品不存在");
}
if (goods.getInventory() < item.getSum()) {
throw new RuntimeException("商品库存不足");
}
/*加列表*/
OrderItem orderItem = new OrderItem();
orderItem.setAttr(item.getAttr());
orderItem.setGoodsId(item.getGoodsId());
orderItem.setOrderId(order.getId());
orderItem.setSum(item.getSum());
ObjectMapper objectMapper = new ObjectMapper();
String goodsString = objectMapper.writeValueAsString(goods);
orderItem.setGoods(goodsString);
items.add(orderItem);
/*算总价*/
BigDecimal sum = goods.getPrice().multiply(new BigDecimal(item.getSum()));
total = total.add(sum);
/*减库存*/
goods.setInventory(goods.getInventory() - item.getSum());
goodsService.saveOrUpdate(goods);
}
orderItemService.saveBatch(items);
order.setTotal(total);
orderService.saveOrUpdate(order);
QueryWrapper<OrderItem> orderItemQueryWrapper = new QueryWrapper<>();
orderItemQueryWrapper.eq("order_id", order.getId());
List<OrderItem> orderItemList = orderItemService.list(orderItemQueryWrapper);
order.setItems(orderItemList);
//删除购物车
QueryWrapper<Cart> cartQueryWrapper = new QueryWrapper<>();
cartQueryWrapper.eq("user_id", orderInput.getUserId());
cartService.remove(cartQueryWrapper);
return new MyMsg(MyMsg.SUCCESS, "成功", order);
}
@RequestMapping(method = RequestMethod.GET, path = "/list")
@Operation(summary = "列表")
public MyMsg list(@RequestParam Long userId, @RequestParam(required = false, defaultValue = "1") Integer page, HttpServletRequest request) {
// HttpSession session = request.getSession();
// User user = (User) session.getAttribute(User.USER_SESSION_NAME);
Page<Order> page1 = new Page<>(page, MyPage.PAGE_NUM);
QueryWrapper<Order> orderQueryWrapper = new QueryWrapper<>();
orderQueryWrapper.eq("user_id", userId);
Page<Order> page2 = orderService.page(page1, orderQueryWrapper);
for (Order order : page2.getRecords()) {
QueryWrapper<OrderItem> orderItemQueryWrapper = new QueryWrapper<>();
orderItemQueryWrapper.eq("order_id", order.getId());
List<OrderItem> orderItemList = orderItemService.list(orderItemQueryWrapper);
order.setItems(orderItemList);
}
return new MyMsg(MyMsg.SUCCESS, "成功", page2);
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
Springboot项目-鞋类商品购物商城系统项目实战(源码+说明+演示视频).zip
共848个文件
jpg:374个
png:162个
xml:128个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 147 浏览量
2023-07-05
18:31:31
上传
评论
收藏 46.65MB ZIP 举报
温馨提示
Springboot项目-鞋类商品购物商城系统项目实战(源码+说明+演示视频).zip 【项目技术】 java+mysql+b/s+springboot 【实现功能】 用户端: 点击进入网站,在上方展示了鞋类商城网站的所有功能模块,右侧为新用户注册以及用户登录的入口,点击从下方弹出输入框。 首页:在登录成功进入之后,来到网站首页,在首页中,展示了本鞋类商城网站的购物主题,背景模块以及文字的选择均是完全的贴合鞋类商品的主题,给用户给予一种轻松愉快的感觉。在上方分两个模块展示,分别为商品分类与个人中心,点击个人中心,可基于首页下拉进入地址管理、订单列表、购物车管理、我喜欢的以及退出购物网站。 系统管理员: 系统管理:在系统管理中,展示了在此鞋类商城中所注册的用户数量、在商城中所有上架的商品数量,以及成功下单的所有单数,是管理员对整个商城的受喜爱程度进行合理的估计以及制定后续的一个发展方向。包括栏目管理,商品管理,评价管理,订单管理。
资源推荐
资源详情
资源评论
收起资源包目录
Springboot项目-鞋类商品购物商城系统项目实战(源码+说明+演示视频).zip (848个子文件)
sb_shop2021.mwb.bak 17KB
http-client.cookies 91B
style.css 708KB
app.3664800e.css 230KB
chunk-vendors.3c269362.css 204KB
style.css 203KB
fonts.css 174KB
bootstrap.css 168KB
bootstrap.min.css 124KB
icofont.css 112KB
responsive.css 93KB
animate.css 74KB
editor.c68832a4.css 37KB
hamburgers.min.css 35KB
bundle.css 31KB
jquery-ui.css 22KB
themify-icons.css 17KB
pe-icon-7-stroke.css 10KB
magnific-popup.css 7KB
upload.b6aaa8be.css 4KB
dashboard.c459079f.css 3KB
owl.carousel.min.css 3KB
meanmenu.min.css 3KB
home.e285fda0.css 3KB
slinky.min.css 3KB
markdown.2a97bbf3.css 2KB
app.84511829.css 1KB
drag.8820fc6d.css 1KB
easyzoom.css 953B
icon.deb47eec.css 887B
404.f6ece648.css 724B
403.1e433cb8.css 724B
login.2f34897b.css 684B
table.f505c727.css 361B
chart.de829647.css 231B
permission.990c0e4e.css 162B
i18n.4e4439a3.css 115B
tabs.6454d946.css 58B
icofont.eot 995KB
themify.eot 77KB
Pe-icon-7-stroke.eot 57KB
fontello.e73a0647.eot 15KB
loading.gif 5KB
loading.gif 3KB
.gitignore 461B
index.html 3KB
admin.html 3KB
http-requests-log.http 174B
shop.iml 13KB
OrderController.java 5KB
AdminUserController.java 4KB
CartController.java 4KB
LikeController.java 3KB
Goods.java 3KB
CommentController.java 3KB
AddressController.java 3KB
UserController.java 3KB
User.java 3KB
Comment.java 3KB
Order.java 2KB
Address.java 2KB
AdminOrderController.java 2KB
GoodsController.java 2KB
OrderItem.java 2KB
AdminCategoryController.java 2KB
Cart.java 2KB
AdminGoodsController.java 2KB
AdminCommentController.java 2KB
MyMsg.java 2KB
MyExceptionHandler.java 1KB
CategoryController.java 1KB
Category.java 1KB
Like.java 1KB
MybatisPlusConfig.java 1KB
ValidatorConfiguration.java 1KB
FileController.java 1KB
LocalDateFormatConfig.java 1020B
OrderInput.java 894B
Item.java 695B
MyMetaObjectHandler.java 664B
OrderItemServiceImpl.java 512B
CategoryServiceImpl.java 502B
AddressServiceImpl.java 495B
CommentServiceImpl.java 495B
OrderServiceImpl.java 481B
GoodsServiceImpl.java 481B
CartServiceImpl.java 477B
UserServiceImpl.java 474B
LikeServiceImpl.java 474B
ShopApplicationTests.java 436B
OrderItemController.java 357B
ShopApplication.java 325B
IOrderItemService.java 296B
OrderItemMapper.java 295B
ICategoryService.java 290B
CategoryMapper.java 289B
ICommentService.java 287B
IAddressService.java 287B
AddressMapper.java 286B
CommentMapper.java 286B
共 848 条
- 1
- 2
- 3
- 4
- 5
- 6
- 9
资源评论
岛上程序猿
- 粉丝: 2105
- 资源: 3506
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功