订单流程

2020/1/1

点击勘误issues (opens new window),哪吒感谢大家的阅读

# 订单流程

// 预支付订单缓存键 "pre_pay_order:";
// 预优惠券缓存键 "pre_coupon:";

    // 超过多少天未支付,则视为逾期 overdueThr;
    // 逾期支付的标准天数 payStd;
    // 逾期支付的标准金额 12 amount;
    // 改变批量费用规则的数量限制 0.5 countLimit;
    static BlockingQueue blockingQueue = new LinkedBlockingQueue<>(100); //同一时间队列等待数最大超过100时,判定异常,允许抛出
    // 创建一个固定大小的线程池,线程池的大小为当前可用处理器的数量,最大线程数为当前可用处理器的数量乘以4,线程空闲时间超过10秒则被回收
    static ExecutorService fixedThreadPool = new ThreadPoolExecutor(Runtime.getRuntime().availableProcessors(),
            Runtime.getRuntime().availableProcessors() * 4, 10, TimeUnit.SECONDS,
            blockingQueue,// 队列容量
            new ThreadFactory() { // 线程工厂
                // 定义一个原子整数,用于生成线程的编号
                private final AtomicInteger threadNumber = new AtomicInteger(1);
                // 定义线程的名称前缀
                private final String namePrefix = "xxxx"; // 分账处理
                // 重写newThread方法,用于创建线程
                @Override
                public Thread newThread(Runnable r) {
                    // 创建线程,并设置线程的名称为前缀加上线程编号
                    Thread t = new Thread(r, namePrefix + threadNumber.getAndIncrement());
                    return t;
                }
            });
/**
 * 获取预支付订单
 */
public BExchSvcOrder getCachePreOrderById(String orderId){ // 获取缓存中的预支付订单
}

// setRenewEndOrder 续上套餐 完结订单 续费订单新订单
public BExchSvcOrder setRenewEndOrder(BExchSvcOrder order,String dateTime) throws Exception {
    // 查询有无待生效订单,无则正常到期,有则续上套餐
    // 调用mongoPageQuery方法,查询待生效订单
    // 查询有无待生效订单:{}
    if (CollUtil.isNotEmpty( "待生效订单" )) {
        // setEndOldOrder 完结旧订单 续费完结
        // updType (value = "修改事件标签 1普通事件2换电事件")
        // 然后更新订单 旧订单 结算状态:{},结算订单:{}
        // 续上待生效为新执行中订单
        // 服务到期时间
        // 生效订单加上上次次数,实际次数
        // 自动续租订单内容:{}
        // 自动续租状态:{},自动续租订单:{}
    }
}

// 订单退款
public RestRet orderRefund(OrderRefundBO orderRefundBO){
    // 获取订单
    // 创建订单对象
    // 实际费用 totalFee Double.parseDouble 退款金额 refundAmount 折扣金额/最终金额 discountA
    // 退款金额不能小于等于0
    // 退款金额大于可退款最高金额
    // 创建WXRefundRequest对象 退款请求
    // 设置退款类型 取消订单 余额退款 押金解冻/退款 订单退款,允许部分退款
    // 是否全额退款 0否,1是
    // 支付方式 默认1微信2支付宝3余额
    // 调用服务实现类 refundOfOrder
}

// 订单转让
public RestRet orderTransfer(BExchSvcOrderBO bExchSvcOrderBO) throws Exception { // 订单转让
    //
}