|  |  | 
 |  |  | import com.mzl.flower.dto.PriceDTO; | 
 |  |  | import com.mzl.flower.dto.request.menber.MemberGrowthRecordDTO; | 
 |  |  | import com.mzl.flower.dto.request.payment.*; | 
 |  |  | import com.mzl.flower.dto.response.coupon.CouponRecordVO; | 
 |  |  | import com.mzl.flower.dto.response.flower.FlowerCartListDTO; | 
 |  |  | import com.mzl.flower.dto.response.flower.FlowerCartListWrapDTO; | 
 |  |  | import com.mzl.flower.dto.response.flower.FlowerDTO; | 
 |  |  | 
 |  |  | import org.springframework.context.annotation.Lazy; | 
 |  |  | import org.springframework.stereotype.Service; | 
 |  |  | import org.springframework.transaction.annotation.Transactional; | 
 |  |  | import org.springframework.util.ObjectUtils; | 
 |  |  |  | 
 |  |  | import java.math.BigDecimal; | 
 |  |  | import java.math.RoundingMode; | 
 |  |  | import java.time.LocalDate; | 
 |  |  | import java.time.LocalDateTime; | 
 |  |  | import java.time.LocalTime; | 
 |  |  | import java.util.ArrayList; | 
 |  |  | import java.util.HashMap; | 
 |  |  | import java.util.List; | 
 |  |  | import java.util.Map; | 
 |  |  | import java.util.*; | 
 |  |  | import java.util.stream.Collectors; | 
 |  |  |  | 
 |  |  | @Service | 
 |  |  | @Transactional | 
 |  |  | 
 |  |  |         List<OrderPointGoodsListDTO> pointGoodsList = orderMapper.getPointGoodsList(id); | 
 |  |  |         dto.setPointGoodsList(pointGoodsList); | 
 |  |  |  | 
 |  |  |         //判断优惠券ID是否为空 用户优惠券id | 
 |  |  |         if(StringUtils.isNotBlank(o.getMemberCouponId())){ | 
 |  |  |             CouponRecordVO couponRecordVO = couponRecordService.getCouponRecordById(o.getMemberCouponId()); | 
 |  |  |             if(!ObjectUtils.isEmpty(couponRecordVO)){ | 
 |  |  |                 dto.setCouponDiscountType(couponRecordVO.getCouponDiscountType()); | 
 |  |  |                 dto.setMinOrderAmount("满"+couponRecordVO.getMinOrderAmount()); | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         return dto; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Transactional | 
 |  |  |     public String copyOrder(String id) { | 
 |  |  |         List<OrderItem> ls = orderItemMapper.selectList( | 
 |  |  |                 new QueryWrapper<OrderItem>().eq("order_id", id)); | 
 |  |  |         StringBuilder sb=new StringBuilder(); | 
 |  |  |         ls.stream().forEach(orderItem -> { | 
 |  |  |             Cart cart = null; | 
 |  |  |             final Long flowerId = orderItem.getFlowerId(); | 
 |  |  |             final Integer num = orderItem.getNum(); | 
 |  |  |             final String userId=orderItem.getCreateBy(); | 
 |  |  |             // 查看当前的花是否已经下架 | 
 |  |  |             Flower flower = flowerMapper.selectById(flowerId); | 
 |  |  |             // 查看当前的花的限购 | 
 |  |  |             final Integer limited = flower.getLimited(); | 
 |  |  |  | 
 |  |  |             // 查看当前购物车里面是否已经存在当前花 | 
 |  |  |             cart = cartMapper.selectOne(new QueryWrapper<Cart>() | 
 |  |  |                     .eq("create_by", orderItem.getCreateBy()).eq("flower_id",flowerId)); | 
 |  |  |  | 
 |  |  |             if(null==cart){ | 
 |  |  |                 cart = new Cart(); | 
 |  |  |                 cart.setFlowerId(flowerId); | 
 |  |  |                 cart.setNum(0); | 
 |  |  |                 cart.create(orderItem.getCreateBy()); | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |             if (!flower.getStatus().equals(Constants.FLOWER_STATUS.UP.name())) { | 
 |  |  |                 sb.append(flower.getName() + "已下架"); | 
 |  |  |             }else if(flower.getStatus().equals(Constants.FLOWER_STATUS.UP.name())){ | 
 |  |  |                 // 未下架库存逻辑控制 | 
 |  |  |                 Integer tmpNum=cart.getNum()+num; | 
 |  |  |                 //查看当前的库存 | 
 |  |  |                 if (null!=flower.getStock() && flower.getStock() > 0 && flower.getStock().compareTo(tmpNum) >= 0) { | 
 |  |  |                     // 库存充足 | 
 |  |  |                     cart.setNum(tmpNum); | 
 |  |  |                 } else if (null!=flower.getStock() && flower.getStock() > 0 && flower.getStock().compareTo(tmpNum) < 0) { | 
 |  |  |                     // 库存不足,剩多少给多少 | 
 |  |  |                     cart.setNum(flower.getStock()); | 
 |  |  |                     sb.append(flower.getName() + "购物车的总数超过库存,已调整成库存数!"); | 
 |  |  |                 }else { | 
 |  |  |                     sb.append(flower.getName() + "已无库存"); | 
 |  |  |                 } | 
 |  |  |  | 
 |  |  |                 // 限购控制,如果当前的购物车的数量大于限购的话,则需要控制 | 
 |  |  |                 if(null!=limited && limited>0){ | 
 |  |  |                     Integer buyedNum= getFlowerCompleteNumToday(userId,flowerId); | 
 |  |  |                     Integer todayNum=cart.getNum()+buyedNum; | 
 |  |  |                     // | 
 |  |  |                     if(todayNum>limited){ | 
 |  |  |                         cart.setNum(limited-buyedNum<=0?0:limited-buyedNum); | 
 |  |  |                         sb.append(flower.getName() + "购物车的总数超过限购,已调整成未限购数!"); | 
 |  |  |                     } | 
 |  |  |                 } | 
 |  |  |  | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |             if(null!=cart){ | 
 |  |  |                 // 插入购物车 | 
 |  |  |                 if(null!=cart.getId()){ | 
 |  |  |                     // 新增 | 
 |  |  |                     cartMapper.updateById(cart); | 
 |  |  |                 }else{ | 
 |  |  |                    // 更新 | 
 |  |  |                     cartMapper.insert(cart); | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |         }); | 
 |  |  |  | 
 |  |  |         return sb.toString(); | 
 |  |  |  | 
 |  |  |     } | 
 |  |  | } |