订单流程
哪吒 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 { // 订单转让
//
}