|
@@ -0,0 +1,88 @@
|
|
|
+package com.zt.service.impl;
|
|
|
+
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import com.zt.dto.OrderInfoDto;
|
|
|
+import com.zt.dto.OrderItemDto;
|
|
|
+import com.zt.enums.CodeEnums;
|
|
|
+import com.zt.pojo.Coupon;
|
|
|
+import com.zt.pojo.GoodsSku;
|
|
|
+import com.zt.pojo.OrderInfo;
|
|
|
+import com.zt.pojo.OrderItem;
|
|
|
+import com.zt.service.CouponService;
|
|
|
+import com.zt.service.GoodsSkuService;
|
|
|
+import com.zt.service.OrderInfoService;
|
|
|
+import com.zt.mapper.OrderInfoMapper;
|
|
|
+import com.zt.service.OrderItemService;
|
|
|
+import com.zt.utils.AppJwtUtil;
|
|
|
+import com.zt.vo.Result;
|
|
|
+import feign.GoodsFeign;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+
|
|
|
+import javax.servlet.http.HttpServletRequest;
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.util.Date;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
+/**
|
|
|
+* @author H
|
|
|
+* @description 针对表【order_info】的数据库操作Service实现
|
|
|
+* @createDate 2025-05-10 10:50:46
|
|
|
+*/
|
|
|
+@Service
|
|
|
+public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo>
|
|
|
+ implements OrderInfoService{
|
|
|
+ @Autowired
|
|
|
+ private OrderItemService orderItemService;
|
|
|
+ @Autowired
|
|
|
+ private GoodsSkuService goodsSkuService;
|
|
|
+ @Autowired
|
|
|
+ private CouponService couponService;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Result add(OrderInfoDto orderInfoDto, HttpServletRequest request) {
|
|
|
+ OrderInfo orderInfo = new OrderInfo();
|
|
|
+ orderInfo.setOrderTime(new Date());
|
|
|
+ orderInfo.setPaymentTime(new Date());
|
|
|
+ orderInfo.setCouponId(orderInfoDto.getCouponId());
|
|
|
+ String token = request.getHeader("token");
|
|
|
+ Object id = AppJwtUtil.getClaimsBody(token).get("id");
|
|
|
+ orderInfo.setUserId((Long) id);
|
|
|
+ List<Long> collect = orderInfoDto.getOrderItemDtoList().stream().map(OrderItemDto::getGoodsId).collect(Collectors.toList());
|
|
|
+ QueryWrapper<OrderItem> queryWrapper=new QueryWrapper<>();
|
|
|
+ queryWrapper.lambda().in(OrderItem::getGoodsId,collect);
|
|
|
+ Map<Long, GoodsSku> collect2 = goodsSkuService.list().stream().collect(Collectors.toMap(GoodsSku::getSkuId, GoodsSku -> GoodsSku));
|
|
|
+ BigDecimal zero = BigDecimal.ZERO;
|
|
|
+ for (OrderItemDto orderItemDto : orderInfoDto.getOrderItemDtoList()) {
|
|
|
+ GoodsSku goodsSku = collect2.get(orderItemDto.getGoodsId());
|
|
|
+ BigDecimal multiply = goodsSku.getPrice().multiply(BigDecimal.valueOf(orderItemDto.getNum()));
|
|
|
+ zero=zero.add(multiply);
|
|
|
+ }
|
|
|
+ orderInfo.setTotalPrice(zero);
|
|
|
+ Coupon byId1 = couponService.getById(orderInfo.getCouponId());
|
|
|
+ orderInfo.setRealPrice(zero.subtract(byId1.getFaceValue()));
|
|
|
+ orderInfo.setPreferentialPrice(byId1.getFaceValue());
|
|
|
+
|
|
|
+ this.save(orderInfo);
|
|
|
+ for (OrderItemDto orderItemDto : orderInfoDto.getOrderItemDtoList()) {
|
|
|
+ OrderItem orderItem = new OrderItem();
|
|
|
+ orderItem.setOrderId(orderInfo.getId());
|
|
|
+ orderItem.setUserId((Long) id);
|
|
|
+ orderItem.setGoodsId(orderItemDto.getGoodsId());
|
|
|
+ GoodsSku byId = goodsSkuService.getById(orderItemDto.getGoodsId());
|
|
|
+ orderItem.setPrice(byId.getPrice());
|
|
|
+ orderItem.setTotalPrice(byId.getPrice().multiply(BigDecimal.valueOf(orderItemDto.getNum())));
|
|
|
+ orderItem.setNum(orderItemDto.getNum());
|
|
|
+ orderItemService.save(orderItem);
|
|
|
+ }
|
|
|
+
|
|
|
+ return Result.ok(CodeEnums.EXECUTION_SUCCESSFUL);
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|