增加了订单主表,修改了所有订单相关,支付相关代码

This commit is contained in:
2024-04-08 14:51:28 +08:00
parent c0f6fbca06
commit 944ab44305
21 changed files with 2044 additions and 742 deletions
+146 -39
View File
@@ -11,6 +11,8 @@ use App\Model\BasicLogisticsCompany;
use App\Model\DetectionProject;
use App\Model\DoctorInquiryConfig;
use App\Model\Hospital;
use App\Model\Order;
use App\Model\OrderCoupon;
use App\Model\OrderDetection;
use App\Model\OrderInquiry;
use App\Model\OrderInquiryCase;
@@ -355,11 +357,22 @@ class PatientOrderService extends BaseService
$params['order_inquiry_id'] = $order_inquiry['order_inquiry_id'];
OrderInquiry::edit($params, $data);
// 修改订单为取消
$data = array();
$data['cancel_status'] = 1;
$data['cancel_time'] = date("Y-m-d H:i:s", time());
$data['cancel_remarks'] = "主动取消"; // 取消订单备注
$data['updated_at'] = date("Y-m-d H:i:s", time());
$params = array();
$params['order_no'] = $order_inquiry['inquiry_no'];
Order::edit($params, $data);
// 检测支付状态,判断是否需要退款处理
if ($order_inquiry['inquiry_pay_status'] == 2 && $order_inquiry['inquiry_refund_status'] != 3) {
// 需退款
$inquiryService = new InquiryService();
$inquiryService->inquiryRefund($order_inquiry['order_inquiry_id'], "取消问诊");
$OrderService = new OrderService();
$OrderService->orderRefund($order_inquiry['inquiry_no'], "取消问诊");
}
// 删除锁
@@ -422,14 +435,28 @@ class PatientOrderService extends BaseService
return fail(HttpEnumCode::HTTP_ERROR, "订单无法删除");
}
// 修改订单删除状态
$data = array();
$data['is_delete'] = 1;
Db::beginTransaction();
try {
// 修改问诊订单删除状态
$data = array();
$data['is_delete'] = 1;
$params = array();
$params['order_inquiry_id'] = $order_inquiry['order_inquiry_id'];
$params = array();
$params['order_inquiry_id'] = $order_inquiry['order_inquiry_id'];
OrderInquiry::edit($params, $data);
OrderInquiry::edit($params, $data);
$data = array();
$data['is_delete'] = 1;
$params = array();
$params['order_no'] = $order_inquiry['inquiry_no'];
Order::edit($params, $data);
Db::commit();
}catch (\Throwable $e){
Db::rollBack();
return fail(HttpEnumCode::SERVER_ERROR,$e->getMessage());
}
return success();
}
@@ -437,8 +464,6 @@ class PatientOrderService extends BaseService
/**
* 问诊订单取消支付
* @return array
* @throws ContainerExceptionInterface
* @throws NotFoundExceptionInterface
*/
public function putPatientInquiryOrderCancelPay(): array
{
@@ -459,9 +484,8 @@ class PatientOrderService extends BaseService
return fail();
}
$InquiryService = new InquiryService();
$result = $InquiryService->cancelUnpayInquiryOrder($order_inquiry['inquiry_no'], 2, "主动取消");
$OrderService = new OrderService();
$result = $OrderService->cancelUnpayOrder($order_inquiry['inquiry_no'],2,"主动取消");
if ($result['status'] != 1) {
Db::rollBack();
return fail();
@@ -634,9 +658,9 @@ class PatientOrderService extends BaseService
Db::rollBack();
return fail();
}
$OrderProductService = new OrderProductService();
$result = $OrderProductService->cancelUnpayProductOrder($order_product['order_product_no'], 1, "主动取消");
$OrderService = new OrderService();
$result = $OrderService->cancelUnpayOrder($order_product['order_product_no'], 1, "主动取消");
if ($result['status'] != 1) {
Db::rollBack();
return fail();
@@ -679,14 +703,30 @@ class PatientOrderService extends BaseService
return fail(HttpEnumCode::HTTP_ERROR, "订单无法删除");
}
// 修改订单状态
$data = array();
$data['is_delete'] = 1;
$data['updated_at'] = date("Y-m-d H:i:s", time());
Db::beginTransaction();
try {
// 修改药品订单状态
$data = array();
$data['is_delete'] = 1;
$data['updated_at'] = date("Y-m-d H:i:s", time());
$params = array();
$params['order_product_id'] = $order_product_id;
OrderProduct::edit($params, $data);
$params = array();
$params['order_product_id'] = $order_product_id;
OrderProduct::edit($params, $data);
$data = array();
$data['is_delete'] = 1;
$data['updated_at'] = date("Y-m-d H:i:s", time());
$params = array();
$params['order_no'] = $order_product['order_product_no'];
Order::edit($params, $data);
Db::commit();
}catch (\Throwable $e){
Db::rollBack();
return fail(HttpEnumCode::SERVER_ERROR,$e->getMessage());
}
return success();
}
@@ -972,11 +1012,10 @@ class PatientOrderService extends BaseService
}
/**
*模拟支付成功-金额为0时使用
*模拟支付成功-金额为0时使用-问诊订单
* @return array
* @throws ContainerExceptionInterface
* @throws NotFoundExceptionInterface
* @throws GuzzleException
*/
public function addPatientOrderPay(): array
{
@@ -1019,8 +1058,8 @@ class PatientOrderService extends BaseService
}
$generator = $this->container->get(IdGeneratorInterface::class);
// 修改支付状态
$escrow_trade_no = "GD" . $generator->generate(); // 第三方支付流水号
// 修改问诊订单支付状态
$data = array();
$data['inquiry_pay_channel'] = 3; // 支付渠道(1:小程序支付 2:微信扫码支付 3:模拟支付)
$data['inquiry_pay_status'] = 2;
@@ -1032,13 +1071,25 @@ class PatientOrderService extends BaseService
$data['inquiry_status'] = 2;// 2:待分配
}
$data['escrow_trade_no'] = "GD" . $generator->generate(); // 第三方支付流水号
$data['escrow_trade_no'] = $escrow_trade_no;
$data['pay_time'] = date('Y-m-d H:i:s', time());// 支付时间
$data['updated_at'] = date('Y-m-d H:i:s', time());
$params = array();
$params['order_inquiry_id'] = $order_inquiry['order_inquiry_id'];
OrderInquiry::edit($params, $data);
// 修改订单表支付状态
$data = array();
$data['pay_status'] = 2;
$data['pay_time'] = date('Y-m-d H:i:s', time());// 支付时间
$data['escrow_trade_no'] = $escrow_trade_no;
$data['updated_at'] = date('Y-m-d H:i:s', time());
$params = array();
$params['order_no'] = $order_inquiry['inquiry_no'];
Order::edit($params,$data);
// 处理队列
if ($order_inquiry['inquiry_type'] == 2 || $order_inquiry['inquiry_type'] == 4) {
// 快速-购药
// 加入分配医生队列
@@ -1083,8 +1134,6 @@ class PatientOrderService extends BaseService
$message->setDelayMs($time);
$producer = $this->container->get(Producer::class);
$producer->produce($message);
Log::getInstance()->info("发送im消息成功");
}
Db::commit();
@@ -1237,6 +1286,8 @@ class PatientOrderService extends BaseService
$pay_channel = 1;
} elseif ($client_type == 2) {
$pay_channel = 2;
}else{
return fail(HttpEnumCode::HTTP_ERROR, "支付方式错误");
}
Db::beginTransaction();
@@ -1244,6 +1295,24 @@ class PatientOrderService extends BaseService
$generator = $this->container->get(IdGeneratorInterface::class);
try {
// 生成订单表
$data = array();
$data['user_id'] = $user_info['user_id'];
$data['patient_id'] = $order_prescription['patient_id'];
$data['doctor_id'] = $order_prescription['doctor_id'];
$data['order_type'] = 2; // 订单类型(1:问诊订单 2:药品订单 3:检测订单 4:随访包订单 5:健康包订单)
$data['inquiry_pay_channel'] = $pay_channel;// 支付渠道(1:小程序支付 2:微信扫码支付)
$data['pay_status'] = 1;// 1:待支付
$data['order_no'] = "P" . $generator->generate();// 订单编号
$data['amount_total'] = $amount_total;// 订单金额
$data['coupon_amount_total'] = $coupon_amount_total;// 优惠卷总金额
$data['payment_amount_total'] = $payment_amount_total;// 实际付款金额
$order = Order::addOrder($data);
if (empty($order)) {
Db::rollBack();
return fail(HttpEnumCode::SERVER_ERROR, "订单创建失败");
}
// 新增药品订单
$data = array();
$data['order_inquiry_id'] = $order_prescription['order_inquiry_id'];
@@ -1251,7 +1320,7 @@ class PatientOrderService extends BaseService
$data['doctor_id'] = $order_prescription['doctor_id'];
$data['patient_id'] = $order_prescription['patient_id'];
$data['family_id'] = $order_prescription['family_id'];
$data['order_product_no'] = $generator->generate();
$data['order_product_no'] = $order['order_no'];
$data['order_product_status'] = 1; // 订单状态(1:待支付 2:待发货 3:已发货 4:已签收 5:已取消)
$data['pay_channel'] = $pay_channel; // 支付渠道(1:小程序支付 2:微信扫码支付)
$data['amount_total'] = $amount_total; // 订单金额
@@ -1347,6 +1416,18 @@ class PatientOrderService extends BaseService
// 处理优惠卷数据
if (!empty($user_coupons)) {
foreach ($user_coupons as $user_coupon){
// 增加订单优惠卷表
$data = array();
$data['order_id'] = $order['order_id'];// 订单id
$data['user_coupon_id'] = $user_coupon['user_coupon_id'];
$data['coupon_name'] = $user_coupon['coupon_name'];
$data['coupon_use_price'] = $user_coupon['coupon_price'];
$order_coupon = OrderCoupon::addOrderCoupon($data);
if (empty($order_coupon)) {
Db::rollBack();
return fail(HttpEnumCode::SERVER_ERROR, "订单创建失败");
}
// 增加问诊优惠卷表
$data = array();
$data['order_product_id'] = $order_product['order_product_id'];// 订单-商品id
@@ -1974,14 +2055,29 @@ class PatientOrderService extends BaseService
return fail(HttpEnumCode::HTTP_ERROR, "订单无法删除");
}
// 修改订单删除状态
$data = array();
$data['is_delete'] = 1;
Db::beginTransaction();
try {
// 修改检测订单删除状态
$data = array();
$data['is_delete'] = 1;
$params = array();
$params['order_detection_id'] = $order_detection['order_detection_id'];
$params = array();
$params['order_detection_id'] = $order_detection['order_detection_id'];
OrderDetection::editOrderDetection($params, $data);
OrderDetection::editOrderDetection($params, $data);
$data = array();
$data['is_delete'] = 1;
$data['updated_at'] = date("Y-m-d H:i:s", time());
$params = array();
$params['order_no'] = $order_detection['detection_no'];
Order::edit($params, $data);
Db::commit();
}catch (\Throwable $e){
Db::rollBack();
return fail(HttpEnumCode::SERVER_ERROR,$e->getMessage());
}
return success();
}
@@ -2041,18 +2137,29 @@ class PatientOrderService extends BaseService
$data = array();
$data['detection_status'] = 5;
$data['cancel_time'] = date("Y-m-d H:i:s", time());
$data['cancel_reason'] = 2; // 取消订单原因(1:主动取消 2:客服取消 3:支付超时)
$data['cancel_reason'] = 1; // 取消订单原因(1:主动取消 2:客服取消 3:支付超时)
$data['updated_at'] = date("Y-m-d H:i:s", time());
$params = array();
$params['order_detection_id'] = $order_detection['order_detection_id'];
OrderDetection::editOrderDetection($params, $data);
// 修改订单为取消
$data = array();
$data['cancel_status'] = 1;
$data['cancel_time'] = date("Y-m-d H:i:s", time());
$data['cancel_remarks'] = "主动取消"; // 取消订单备注
$data['updated_at'] = date("Y-m-d H:i:s", time());
$params = array();
$params['order_no'] = $order_detection['detection_no'];
Order::edit($params, $data);
// 检测支付状态,判断是否需要退款处理
if ($order_detection['detection_pay_status'] == 2 && $order_detection['detection_refund_status'] != 3) {
// 需退款
$detectionService = new DetectionService();
$detectionService->detectionRefund($order_detection['order_detection_id'], "取消检测");
$OrderService = new OrderService();
$OrderService->orderRefund($order_detection['detection_no'],"取消检测");
}
// 删除锁