ZkOrderServiceImpl.java 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. package com.zt.service.impl;
  2. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  3. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  4. import com.zt.dto.OrderDetailsDto;
  5. import com.zt.dto.OrderDto;
  6. import com.zt.enums.CodeEnums;
  7. import com.zt.pojo.Coupon;
  8. import com.zt.pojo.GoodsSku;
  9. import com.zt.pojo.OrderDetails;
  10. import com.zt.pojo.ZkOrder;
  11. import com.zt.service.*;
  12. import com.zt.mapper.ZkOrderMapper;
  13. import com.zt.utils.AppJwtUtil;
  14. import com.zt.vo.Result;
  15. import io.jsonwebtoken.Claims;
  16. import org.springframework.beans.BeanUtils;
  17. import org.springframework.beans.factory.annotation.Autowired;
  18. import org.springframework.stereotype.Service;
  19. import java.math.BigDecimal;
  20. import java.util.Date;
  21. import java.util.List;
  22. import java.util.Map;
  23. import java.util.stream.Collectors;
  24. /**
  25. * @author H
  26. * @description 针对表【zk_order】的数据库操作Service实现
  27. * @createDate 2025-05-09 16:28:09
  28. */
  29. @Service
  30. public class ZkOrderServiceImpl extends ServiceImpl<ZkOrderMapper, ZkOrder>
  31. implements ZkOrderService{
  32. @Autowired
  33. OrderDetailsService orderDetailsService;
  34. @Autowired
  35. ZkGoodsService goodsService;
  36. @Autowired
  37. GoodsSkuService goodsSkuService;
  38. @Autowired
  39. CouponService couponService;
  40. @Override
  41. public Result addOrder(OrderDto orderDto,String token) {
  42. Claims claimsBody = AppJwtUtil.getClaimsBody(token);
  43. Object id = claimsBody.get("id");
  44. ZkOrder zkOrder = new ZkOrder();
  45. zkOrder.setUserId((Long) id);
  46. List<Long> collect = orderDto.getOrderDetailsDtoList().stream().map(OrderDetailsDto::getGoodsId).collect(Collectors.toList());
  47. QueryWrapper<GoodsSku> queryWrapperSku=new QueryWrapper<>();
  48. queryWrapperSku.lambda().in(GoodsSku::getGoodsId,collect);
  49. List<GoodsSku> list = goodsSkuService.list(queryWrapperSku);
  50. Map<Long, GoodsSku> collect1 = list.stream().collect(Collectors.toMap(GoodsSku::getGoodsId, GoodsSku -> GoodsSku));
  51. BigDecimal zero = BigDecimal.ZERO;
  52. for (OrderDetailsDto orderDetailsDto : orderDto.getOrderDetailsDtoList()) {
  53. GoodsSku goodsSku = collect1.get(orderDetailsDto.getGoodsId());
  54. BigDecimal multiply = goodsSku.getPrice().multiply(BigDecimal.valueOf(orderDetailsDto.getNum()));
  55. zero=zero.add(multiply);
  56. }
  57. zkOrder.setTotalPrice(zero);
  58. Coupon byId = couponService.getById(orderDto.getCouponId());
  59. if (zkOrder.getTotalPrice().compareTo(byId.getTerms())>=0){
  60. zkOrder.setPreferentialPrice(byId.getFaceValue());
  61. zkOrder.setRealPrice(zkOrder.getTotalPrice().subtract(zkOrder.getPreferentialPrice()));
  62. }
  63. zkOrder.setOrderTime(new Date());
  64. zkOrder.setPaymentTime(new Date());
  65. this.save(zkOrder);
  66. for (OrderDetailsDto orderDetailsDto : orderDto.getOrderDetailsDtoList()) {
  67. OrderDetails orderDetails=new OrderDetails();
  68. BeanUtils.copyProperties(orderDetailsDto,orderDetails);
  69. orderDetails.setOrderId(zkOrder.getId());
  70. QueryWrapper<GoodsSku> queryWrapper=new QueryWrapper<>();
  71. queryWrapper.lambda().eq(GoodsSku::getGoodsId,orderDetails.getGoodsId());
  72. GoodsSku one = goodsSkuService.getOne(queryWrapper);
  73. orderDetails.setPrice(one.getPrice().multiply(BigDecimal.valueOf(orderDetails.getNum())));
  74. orderDetailsService.save(orderDetails);
  75. }
  76. return Result.ok(CodeEnums.SUCCESS);
  77. }
  78. }