public void modifyPayment(long orderId, int payType, String bankName, String remark, int payStatus) throws Exception {
	try {
		Order order = orderService.getOrder(orderId);
		// 更新支付状态
		if (payStatus != order.getPayStatus()) {
			order.setPayStatus(payStatus);
			// 添加历史
			if (order.getPayStatus() == Order.ORDER_STATUS_PAY) {
				this.addOrderHistory(orderId, Order.ORDER_STATUS_PAY, '支付成功');
			} else if (order.getPayStatus() == Order.ORDER_STATUS_UNPAY) {
				this.addOrderHistory(orderId, Order.ORDER_STATUS_UNPAY, '支付失败');
			}
			// 更新订单
			orderService.modifyOrder(order);
		}
		// 如果是合同支付
		// 并且支付状态是已支付
		// 且支付金额大于0
		// 则添加发票
		if (Order.PAY_TYPE_CONTRACT == payType && order.getPayStatus() == Order.ORDER_STATUS_PAY && order.getAmount() > 0) {
			// 生成发票号
			String invoiceNumber = invoiceService.generateInvoiceNumber();
			// 添加发票
			List<Invoice> invoices = order.getInvoices();
			if (invoices == null) {
				invoices = new ArrayList<Invoice>();
			}
			for (int i = 0; i < order.getAmount(); i++) {
				Invoice invoice = new Invoice();
				invoice.setOrderId(orderId);
				invoice.setInvoiceNumber(invoiceNumber);
				invoice.setAmount(order.getAmount() / order.getAmount());
				invoice.setAreaId(order.getAreaId());
				// 查询税率
				TaxRate taxRate = taxRateService.queryTaxRateByTypeAndArea(TaxRate.TYPE_CONTRACT,
							getAreaId(invoice.getAreaId()));
				// 如果没查到,取全国的
				if (taxRate == null) {
					taxRate = taxRateService.queryTaxRateByTypeAndArea(TaxRate.TYPE_CONTRACT,
							TaxRate.AREA_NATIONAL);
				}
				if (taxRate != null) {
					double rate = taxRate.getRate().doubleValue() / 100;
					invoice.setTaxRate(taxRate.getRate());
					invoice.setTaxAmount(MathExtend.multiply(invoice.getAmount(), rate,
							MONEY_PRECISION));
					totalTaxAmount = MathExtend.add(totalTaxAmount, invoice.getTaxAmount(),
							MONEY_PRECISION);
				}
			}
			// 添加发票
			invoiceService.addInvoice(invoice);
			totalAmount = MathExtend.add(totalAmount, invoice.getAmount(), MONEY_PRECISION);
			if (totalAmount > 0) {
				// 更新订单
				orderService.modifyOrder(order);
				// 更新支付
				Payment payment = new Payment();
				payment.setOrderId(orderId);
				payment.setTotalAmount(totalAmount);
				payment.setTaxAmount(totalTaxAmount);
				payment.setAmount(MathExtend.subtract(totalAmount, totalTaxAmount, MONEY_PRECISION));
				paymentService.modifyPayment(payment);
				// 添加历史
				this.addOrderHistory(orderId, Order.ORDER_STATUS_INVOICE,
						'添加发票:' + invoice.getInvoiceNumber() + '');
			}
		}
		// 如果是支付类型改变,记录历史
		if (payType != order.getPayType()) {
			String historyContent = '支付方式由'' + 
				if (Order.PAY_TYPE_CASH == payType) {
					historyContent += '现金';
				} else if (Order.PAY_TYPE_TRANSFER == payType) {
					historyContent += '银行转账';
				} else if (Order.PAY_TYPE_CONTRACT == payType) {
					historyContent += '合同';
				}
				if (Order.PAY_TYPE_CASH == order.getPayType()) {
					historyContent += ''改为'现金';
				} else if (Order.PAY_TYPE_TRANSFER == order.getPayType()) {
					historyContent += ''改为'银行转账';
				} else if (Order.PAY_TYPE_CONTRACT == order.getPayType()) {
					historyContent += ''改为'合同';
				}
			historyContent += ''';
			this.addOrderHistory(orderId, Order.ORDER_STATUS_PAY, historyContent);
		}
		// 更新订单
		order.setPayType(payType);
		order.setBankName(bankName);
		order.setRemark(remark);
		orderService.modifyOrder(order);
		// 添加历史
		this.addOrderHistory(orderId, Order.ORDER_STATUS_PAY, '修改支付信息');
		// 添加操作日志
		operatorLogService.addOperatorLog(OperatorLog.TYPE_ORDER, getOperatorId(), '修改支付信息',
				OperatorLog.LEVEL_INFO, '订单号:' + orderId + '');
		// 支付状态改变,发送消息
		if (payType != order.getPayType() || payStatus != order.getPayStatus()) {
			// 发送消息
			this.sendPaymentMessage(orderId, orderService.getOrder(orderId).getPayStatus());
		}
		// 更新订单的支付状态
		this.updateOrderPayStatus(orderId);
	} catch (Exception e) {
		log.error('修改支付信息时发生异常:', e);
		throw e;
	}
}

public List<Order> listOrderByMemberId(long memberId) throws Exception {
	try {
		return orderService.listOrderByMemberId(memberId);
	} catch (Exception e) {
		log.error('根据会员编号查询订单时发生异常:', e);
		throw e;
	}
}

public List<Order> listOrderByMemberId(long memberId, int status) throws Exception {
	try {
		return orderService.listOrderByMemberId(memberId, status);
	} catch (Exception e) {
		log.error('根据会员编号查询订单时发生异常:', e);
		throw e;
	}
}

public List<Order> listOrderByMemberId(long memberId, Date startTime, Date endTime) throws Exception {
	try {
		return orderService.listOrderByMemberId(memberId, startTime, endTime);
	} catch (Exception e) {
		log.error('根据会员编号、开始时间、结束时间查询订单时发生异常:', e);
		throw e;
	}
}

原文地址: https://www.cveoy.top/t/topic/lgmE 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录