| | |
| | | import com.mzl.flower.config.security.SecurityUtils; |
| | | import com.mzl.flower.constant.Constants; |
| | | import com.mzl.flower.dto.PriceDTO; |
| | | import com.mzl.flower.dto.request.comment.QueryFlowerCommentDTO; |
| | | import com.mzl.flower.dto.request.menber.MemberGrowthRecordDTO; |
| | | import com.mzl.flower.dto.request.payment.*; |
| | | import com.mzl.flower.dto.response.comment.FlowerCommentVO; |
| | | 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.mapper.system.UserWechatMapper; |
| | | import com.mzl.flower.mapper.warehouse.WarehouseLocationMapper; |
| | | import com.mzl.flower.service.BaseService; |
| | | import com.mzl.flower.service.comment.FlowerCommentService; |
| | | import com.mzl.flower.service.coupon.CouponRecordService; |
| | | import com.mzl.flower.service.flower.FlowerService; |
| | | import com.mzl.flower.service.menber.MemberGrowthRecordService; |
| | |
| | | @Autowired |
| | | private CouponRecordService couponRecordService; |
| | | |
| | | @Autowired |
| | | private FlowerCommentService flowerCommentService; |
| | | |
| | | |
| | | public void changeFlower2Cart(CartSaveDTO dto) { |
| | | String userId = SecurityUtils.getUserId(); |
| | |
| | | Integer completeNumToday=getFlowerCompleteNumToday(userId,c.getFlowerId()); |
| | | Integer tmp=completeNumToday+c.getNum(); |
| | | if(null!=tmp && null!=flowerDetail.getLimited() |
| | | && tmp.compareTo(flowerDetail.getLimited())>0){ |
| | | && tmp.compareTo(flowerDetail.getLimited())>0){ |
| | | throw new ValidationException("当天的订单的花数量加上购物车的数量不能超过限售数量!"); |
| | | } |
| | | |
| | |
| | | |
| | | // 限购 1.首先查看购物车中的数量是否已经超过限售数量 |
| | | if(null!=c.getNum() && null!=flowerDetail.getLimited() |
| | | && c.getNum().compareTo(flowerDetail.getLimited())>0){ |
| | | && c.getNum().compareTo(flowerDetail.getLimited())>0){ |
| | | throw new ValidationException("数量不能超过限售数量!"); |
| | | } |
| | | |
| | |
| | | Integer completeNumToday=getFlowerCompleteNumToday(userId,c.getFlowerId()); |
| | | Integer tmp=completeNumToday+c.getNum(); |
| | | if(null!=tmp && null!=flowerDetail.getLimited() |
| | | && tmp.compareTo(flowerDetail.getLimited())>0){ |
| | | && tmp.compareTo(flowerDetail.getLimited())>0){ |
| | | throw new ValidationException("当天的订单的花数量加上购物车的数量不能超过限售数量!"); |
| | | } |
| | | |
| | |
| | | } |
| | | } |
| | | |
| | | public Map commitOrder(OrderCommitDTO dto, PreOrderDTO p, Map<Long, PriceDTO> priceMap) { |
| | | public Map commitOrder(OrderCommitDTO dto, PreOrderDTO p, Map<Long, PriceDTO> priceMap) throws Exception { |
| | | String userId = SecurityUtils.getUserId(); |
| | | p.getFlowers().forEach(flower -> { |
| | | // 限购数量 鲜花数量校验 |
| | |
| | | usePointGoods(order.getId(), goodsRecordIdList);//使用积分商品兑换券 |
| | | |
| | | order.create(userId); |
| | | // 根据当前的时间判断,如果时间大于当天的下午17:00 ,那么日期则为下一天的日期,否则为当天日期 |
| | | if(null!=order.getCreateTime()){ |
| | | LocalDateTime createDateTime = order.getCreateTime(); |
| | | LocalDate createDate = createDateTime.toLocalDate(); |
| | | LocalDateTime today1700 = createDateTime.with(LocalTime.of(17, 0)); |
| | | // 比较时间是否大于当天的 17:00 |
| | | if (createDateTime.isAfter(today1700)) { |
| | | // 如果大于 17:00,设置为下一天的日期 |
| | | createDate = createDate.plusDays(1); |
| | | } |
| | | order.setCreateDateSta(createDate); |
| | | } |
| | | // order.setCreateDate(); |
| | | order.setRemarks(dto.getRemarks()); |
| | | order.setSpecialNeeds(dto.getSpecialNeeds()); |
| | | order.setStatusBackend(Constants.ORDER_STATUS_BACKEND.PENDING.name()); |
| | |
| | | } |
| | | totalAmount = totalAmount.add(p.getPacking()).add(transportFee); |
| | | if(totalAmount.doubleValue() <= 0){//假如总价小于等于0,则支付0.01元 |
| | | totalAmount = new BigDecimal(0.01); |
| | | totalAmount = new BigDecimal("0.01"); |
| | | } |
| | | order.setTotalAmount(totalAmount); |
| | | |
| | |
| | | throw new ValidationException("快递号不能为空"); |
| | | } |
| | | Order o = orderMapper.selectById(dto.getId()); |
| | | //上传快递号逻辑调整:由原来输入快递单号直接发送,调整先输入快递单号再点击发送,先保存订单得快递号 |
| | | if (StringUtils.isEmpty(o.getDeliveryNo())) { |
| | | throw new ValidationException("快递号不能为空"); |
| | | } |
| | | if (!Constants.ORDER_STATUS_BACKEND.SEND.name().equals(o.getStatusBackend())) { |
| | | throw new ValidationException("请先完成质检"); |
| | | } |
| | |
| | | o.setWxDeliveryMsg(GsonUtil.toJson(jsonObject)); |
| | | } |
| | | |
| | | orderMapper.updateById(o); |
| | | } |
| | | |
| | | public void saveDeliveryNoInfo(OrderDeliveryNoDTO dto) { |
| | | //上传快递号逻辑调整:由原来输入快递单号直接发送,调整先输入快递单号再点击发送,先保存订单得快递号 |
| | | Order o = orderMapper.selectById(dto.getId()); |
| | | if (!Constants.ORDER_STATUS_BACKEND.SEND.name().equals(o.getStatusBackend())) { |
| | | throw new ValidationException("请先完成质检"); |
| | | } |
| | | o.setDeliveryNo(dto.getDeliveryNo()); |
| | | o.update(SecurityUtils.getUserId()); |
| | | orderMapper.updateById(o); |
| | | } |
| | | |
| | |
| | | orderIds.add(o.getId()); |
| | | |
| | | OrderPlatformListDTO p = new OrderPlatformListDTO(); |
| | | //增加订单扎数 |
| | | Integer sumNumByOrderId = orderItemMapper.getSumNumByOrderId(o.getId()); |
| | | o.setSaleNum(sumNumByOrderId); |
| | | |
| | | BeanUtils.copyProperties(o, p); |
| | | result.add(p); |
| | | } |
| | |
| | | new QueryWrapper<OrderItem>().eq("order_id", id)); |
| | | |
| | | Map<Long, String> stationMap = prepareStationMap(); |
| | | Map<String, FlowerCommentVO> commentMap=prepareCommentMap(id); |
| | | |
| | | List<OrderItemListDTO> result = new ArrayList<>(); |
| | | for (OrderItem oi : ls) { |
| | |
| | | |
| | | dto.setStationName(stationMap.get(oi.getStationId())); |
| | | |
| | | // 评论 |
| | | final FlowerCommentVO flowerCommentVO = commentMap.get(oi.getId()); |
| | | copyCommentInfo(dto,flowerCommentVO); |
| | | |
| | | result.add(dto); |
| | | } |
| | | |
| | | return result; |
| | | } |
| | | |
| | | private Map<String, FlowerCommentVO> prepareCommentMap(String orderId) { |
| | | QueryFlowerCommentDTO queryFlowerCommentDTO = new QueryFlowerCommentDTO(); |
| | | queryFlowerCommentDTO.setOrderId(orderId); |
| | | final List<FlowerCommentVO> list = flowerCommentService.getList(queryFlowerCommentDTO); |
| | | if (list == null || list.isEmpty()) { |
| | | return Collections.emptyMap(); |
| | | } |
| | | // 将 List 转换为 Map,其中 key 为 FlowerCommentVO 的 id |
| | | return list.stream().collect(Collectors.toMap(FlowerCommentVO::getOrderItemId, item -> item)); |
| | | } |
| | | |
| | | |
| | | private void copyCommentInfo(OrderItemListDTO dto,FlowerCommentVO flowerCommentVO){ |
| | | if(null != dto && null!=flowerCommentVO){ |
| | | dto.setCommentGrade(flowerCommentVO.getCommentGrade()); |
| | | dto.setComment(flowerCommentVO.getComment()); |
| | | dto.setCommentImages(flowerCommentVO.getCommentImages()); |
| | | dto.setAnonymityFalg(flowerCommentVO.getAnonymityFalg()); |
| | | } |
| | | } |
| | | |
| | | public List<Order> autoReceive() { |
| | |
| | | sb.append(item.getFlowerName() + "*" + item.getNum() + "扎、");//商品信息 |
| | | } |
| | | try { |
| | | json = wxDeliveryGoodService.wxDeliveryGood( |
| | | o.getId(), |
| | | o.getPayOpenid(), |
| | | o.getPaymentTrId(), |
| | | sb.toString(), |
| | | PyamentV3Configurer.merchantId, |
| | | accessToken); |
| | | json = wxDeliveryGoodService.wxDeliveryGood(o.getId(), o.getPayOpenid(), o.getPaymentTrId(), sb.toString(), PyamentV3Configurer.merchantId, accessToken, o.getPartnerId(), o.getDeliveryNo()); |
| | | } catch (Exception e) { |
| | | log.error("订单" + o.getOrderNo() + "发货,调用微信发货接口失败", e); |
| | | json.put("errcode", -1); |
| | |
| | | return dto; |
| | | } |
| | | |
| | | public void processAbnormalOrder(String id) { |
| | | public void processAbnormalOrder(String id) throws Exception { |
| | | Order o = orderMapper.selectById(id); |
| | | String transferId = o.getTransferId(); |
| | | if (StringUtils.isNotEmpty(transferId)) { |
| | |
| | | orderMapper.updateById(o); |
| | | } |
| | | |
| | | public void processLevelDown(OrderReduceDTO dto) { |
| | | public void processLevelDown(OrderReduceDTO dto) throws Exception { |
| | | Order o = orderMapper.selectById(dto.getId()); |
| | | String transferId = o.getTransferId(); |
| | | if (StringUtils.isNotEmpty(transferId)) { |
| | |
| | | // 新增 |
| | | cartMapper.updateById(cart); |
| | | }else{ |
| | | // 更新 |
| | | // 更新 |
| | | cartMapper.insert(cart); |
| | | } |
| | | } |
| | |
| | | |
| | | public void exportOrderDetail(HttpServletResponse response, OrderQueryDTO dto) { |
| | | List<OrderListExportDTO> ls = getOrderExportListBase( dto); |
| | | String[] rowsName = new String[]{"序号","订单号", "用户账号", "收货人", "收货人电话", "收获地址", "订单金额" |
| | | , "底价", "订单状态", "下单时间", "合伙人", "库位", "特殊需求", "备注"}; |
| | | String[] rowsName = new String[]{"序号","订单号", "用户账号", "收货人", "收货人电话", "收货地址", "订单金额" |
| | | , "底价","销售扎数", "订单状态", "下单时间", "合伙人", "库位", "特殊需求", "备注"}; |
| | | List<Object[]> dataList = new ArrayList<>(); |
| | | int sn = 1; |
| | | for (OrderListExportDTO o : ls) { |
| | |
| | | objs[a++] = o.getCustomerAddress(); |
| | | objs[a++] = o.getTotalAmount(); |
| | | objs[a++] = o.getSupplierAmount(); |
| | | objs[a++] = o.getSaleNum(); |
| | | objs[a++] = o.getStatusBackendStr(); |
| | | objs[a++] = o.getCreateTime(); |
| | | objs[a++] = o.getPartnerName(); |
| | |
| | | |
| | | } |
| | | |
| | | public void exportPartnerOrderList(HttpServletResponse response, OrderQueryDTO dto) { |
| | | Partner p = getCurrentPartner(); |
| | | dto.setPartnerId(p.getId()); |
| | | exportOrderDetail(response, dto); |
| | | } |
| | | |
| | | public void refreshDate() { |
| | | List<Order> allOrderList= orderMapper.selectAllDateList(); |
| | | |
| | | allOrderList.forEach(order -> { |
| | | orderMapper.updatePaymentCreateDate(order); |
| | | }); |
| | | } |
| | | |
| | | public List<OrderStatusCountDTO> getAbnormalOrderStatusCount(OrderQueryDTO dto) { |
| | | dto.setStartDate(parseLocalDateTime(dto.getStartDateStr(), true)); |
| | | dto.setEndDate(parseLocalDateTime(dto.getEndDateStr(), false)); |
| | | |
| | | dto.setCreateStartDate(parseLocalDateTime(dto.getCreateStartDateStr(), 17, 0, 0, -1)); |
| | | dto.setCreateEndDate(parseLocalDateTime(dto.getCreateEndDateStr(), 17, 0, 0, 0)); |
| | | |
| | | List<CodeValueDTO> ls = codeService.searchValue("ABNORMAL_ORDER_STATUS"); |
| | | List<OrderStatusCountDTO> ll = orderMapper.getAbnormalOrderStatusCount(dto); |
| | | Map<String, Integer> llMap = new HashMap<>(); |
| | | if (ll != null && ll.size() > 0) { |
| | | for (OrderStatusCountDTO c : ll) { |
| | | llMap.put(c.getValue(), c.getOrderCount()); |
| | | } |
| | | } |
| | | |
| | | List<OrderStatusCountDTO> rr = new ArrayList<>(); |
| | | for (CodeValueDTO c : ls) { |
| | | OrderStatusCountDTO r = new OrderStatusCountDTO(); |
| | | r.setValue(c.getValue()); |
| | | r.setLabel(c.getLabel()); |
| | | Integer count = llMap.get(r.getValue()); |
| | | r.setOrderCount(count == null ? 0 : count); |
| | | |
| | | rr.add(r); |
| | | } |
| | | |
| | | return rr; |
| | | } |
| | | } |