陶杰
2025-01-08 ae1471f378f399f76518539ec8992e64a3673436
src/main/java/com/mzl/flower/service/payment/OrderService.java
@@ -44,8 +44,8 @@
import com.mzl.flower.mapper.supplier.StationMapper;
import com.mzl.flower.mapper.system.UserWechatMapper;
import com.mzl.flower.mapper.warehouse.WarehouseLocationMapper;
import com.mzl.flower.pay.SybPayService;
import com.mzl.flower.service.BaseService;
import com.mzl.flower.service.ConfigParamService;
import com.mzl.flower.service.comment.FlowerCommentService;
import com.mzl.flower.service.coupon.CouponRecordService;
import com.mzl.flower.service.flower.FlowerService;
@@ -100,9 +100,6 @@
    @Autowired
    private UserPaymentV3Service paymentV3Service;
    @Autowired
    private UserPaymentSybService paymentSybService;
    @Autowired
    private SequenceNo sequenceNo;
@@ -174,6 +171,8 @@
    @Autowired
    private FlowerCommentService flowerCommentService;
    @Autowired
    private ConfigParamService configParamService;
    public void changeFlower2Cart(CartSaveDTO dto) {
        String userId = SecurityUtils.getUserId();
@@ -499,6 +498,19 @@
        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());
@@ -531,9 +543,26 @@
            totalAmount = new BigDecimal(0);
        }
        totalAmount = totalAmount.add(p.getPacking()).add(transportFee);
        if(totalAmount.doubleValue() <= 0){//假如总价小于等于0,则支付0.01元
            totalAmount = new BigDecimal(0.01);
        // 判断最低金额如果小于配置的钱,则不能提交
        String paramGroup = "orderpay";
        String paramKey = "order_min_fee";
        String baseString = configParamService.getBaseString(paramGroup, paramKey);
        if(StringUtils.isNotEmpty(baseString)){
            // 判断类型是否错误,可转换成BigDecimal
            try {
                BigDecimal minFee = new BigDecimal(baseString);
                if(totalAmount.compareTo(minFee) < 0){
                    throw new ValidationException("订单金额不能低于"+minFee+"元");
                }
            } catch (NumberFormatException e) {
                log.error("订单金额配置有误,请检查配置", e);
                throw new ValidationException("订单金额配置有误,请检查配置");
            }
        }
//        if(totalAmount.doubleValue() <= 0){//假如总价小于等于0,则支付0.01元
//            totalAmount = new BigDecimal("0.01");
//        }
        order.setTotalAmount(totalAmount);
        order.setCustomer(address.getName());
@@ -624,9 +653,8 @@
            }
        }
        Map map = paymentSybService.prepay(order);
        Map map = paymentV3Service.wxPrepay(order);
        map.put("_testV2OrderId", order.getId());
        return map;
    }
@@ -926,6 +954,10 @@
                orderIds.add(o.getId());
                OrderPlatformListDTO p = new OrderPlatformListDTO();
                //增加订单扎数
                Integer sumNumByOrderId = orderItemMapper.getSumNumByOrderId(o.getId());
                o.setSaleNum(sumNumByOrderId);
                BeanUtils.copyProperties(o, p);
                result.add(p);
            }
@@ -1187,7 +1219,11 @@
    }
    public List<Order> autoReceive() {
        int days = -5; //5天前的订单自动收货
        String paramGroup = "order";
        String paramKey = "order_auto_receive";
        String baseString = configParamService.getBaseString(paramGroup, paramKey);
        int days = -Integer.parseInt(baseString);
//        int days = -5; //5天前的订单自动收货
        LocalDateTime endTime = LocalDateTime.now().plusDays(days);
        List<Order> ls = orderMapper.getOrderForAutoReceive(endTime);
        if (ls == null || ls.size() == 0) {
@@ -1471,7 +1507,7 @@
        transferId = "NoNeedRefund";
        if (deductAmount.doubleValue() > 0) {
            transferId = paymentSybService.refundOrderSub(o, deductAmount);
            transferId = paymentV3Service.refundOrderSub(o, deductAmount);
        }
        o.setTransferId(transferId);
        orderMapper.updateById(o);
@@ -1492,7 +1528,7 @@
        }
        BigDecimal amount = dto.getAmount();
        transferId = paymentSybService.refundOrderSub(o, amount);
        transferId = paymentV3Service.refundOrderSub(o, amount);
        o.setTransferId(transferId);
        o.setTransferTime(LocalDateTime.now());
        o.update(SecurityUtils.getUserId());
@@ -1757,7 +1793,7 @@
    public void exportOrderDetail(HttpServletResponse response, OrderQueryDTO dto) {
        List<OrderListExportDTO> ls = getOrderExportListBase( dto);
        String[] rowsName = new String[]{"序号","订单号", "用户账号", "收货人", "收货人电话", "收货地址", "订单金额"
                , "底价", "订单状态", "下单时间", "合伙人", "库位", "特殊需求", "备注"};
                , "底价","销售扎数", "订单状态", "下单时间", "合伙人", "库位", "特殊需求", "备注"};
        List<Object[]> dataList = new ArrayList<>();
        int sn = 1;
        for (OrderListExportDTO o : ls) {
@@ -1771,6 +1807,7 @@
            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();
@@ -1798,4 +1835,15 @@
        exportOrderDetail(response, dto);
    }
    public void refreshDate() {
       List<Order> allOrderList= orderMapper.selectAllDateList();
        allOrderList.forEach(order -> {
            orderMapper.updatePaymentCreateDate(order);
        });
    }
    public Order getOrderInfoById(String id) {
        return orderMapper.selectById(id);
    }
}