新增创建服务包订单
This commit is contained in:
parent
0f73332bfd
commit
d28128d76e
@ -8,7 +8,6 @@ namespace App\Model;
|
|||||||
|
|
||||||
use Carbon\Carbon;
|
use Carbon\Carbon;
|
||||||
use Hyperf\Database\Model\Collection;
|
use Hyperf\Database\Model\Collection;
|
||||||
use Hyperf\Database\Model\Model;
|
|
||||||
use Hyperf\Snowflake\Concern\Snowflake;
|
use Hyperf\Snowflake\Concern\Snowflake;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -82,9 +81,9 @@ class OrderServicePackage extends Model
|
|||||||
/**
|
/**
|
||||||
* 新增
|
* 新增
|
||||||
* @param array $data
|
* @param array $data
|
||||||
* @return OrderServicePackage|Model
|
* @return OrderServicePackage|\Hyperf\Database\Model\Model
|
||||||
*/
|
*/
|
||||||
public static function addOrderServicePackage(array $data): Model|OrderServicePackage
|
public static function addOrderServicePackage(array $data): \Hyperf\Database\Model\Model|OrderServicePackage
|
||||||
{
|
{
|
||||||
return self::create($data);
|
return self::create($data);
|
||||||
}
|
}
|
||||||
|
|||||||
95
app/Model/OrderServicePackageCase.php
Normal file
95
app/Model/OrderServicePackageCase.php
Normal file
@ -0,0 +1,95 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace App\Model;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
use Carbon\Carbon;
|
||||||
|
use Hyperf\Database\Model\Collection;
|
||||||
|
use Hyperf\Snowflake\Concern\Snowflake;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @property int $order_service_case_id 主键id
|
||||||
|
* @property int $user_id 用户id
|
||||||
|
* @property int $patient_id 患者id
|
||||||
|
* @property int $order_id 订单id
|
||||||
|
* @property int $order_service_id 订单-服务包id
|
||||||
|
* @property int $family_id 家庭成员id
|
||||||
|
* @property int $disease_class_id 疾病分类id-系统
|
||||||
|
* @property int $relation 与患者关系(1:本人 2:父母 3:爱人 4:子女 5:亲戚 6:其他 )
|
||||||
|
* @property int $status 状态(1:正常 2:删除)
|
||||||
|
* @property string $name 患者名称
|
||||||
|
* @property int $sex 患者性别(0:未知 1:男 2:女)
|
||||||
|
* @property int $age 患者年龄
|
||||||
|
* @property string $disease_class_name 疾病名称-系统
|
||||||
|
* @property string $diagnosis_date 确诊日期
|
||||||
|
* @property string $disease_desc 病情描述(主诉)
|
||||||
|
* @property string $diagnose_images 复诊凭证(多个使用逗号分隔)
|
||||||
|
* @property int $is_allergy_history 是否存在过敏史(0:否 1:是)
|
||||||
|
* @property string $allergy_history 过敏史描述
|
||||||
|
* @property int $is_family_history 是否存在家族病史(0:否 1:是)
|
||||||
|
* @property string $family_history 家族病史描述
|
||||||
|
* @property Carbon $created_at 创建时间
|
||||||
|
* @property Carbon $updated_at 修改时间
|
||||||
|
*/
|
||||||
|
class OrderServicePackageCase extends Model
|
||||||
|
{
|
||||||
|
use Snowflake;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The table associated with the model.
|
||||||
|
*/
|
||||||
|
protected ?string $table = 'order_service_package_case';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The attributes that are mass assignable.
|
||||||
|
*/
|
||||||
|
protected array $fillable = ['order_service_case_id', 'user_id', 'patient_id', 'order_id', 'order_service_id', 'family_id', 'disease_class_id', 'relation', 'status', 'name', 'sex', 'age', 'disease_class_name', 'diagnosis_date', 'disease_desc', 'diagnose_images', 'is_allergy_history', 'allergy_history', 'is_family_history', 'family_history', 'created_at', 'updated_at'];
|
||||||
|
|
||||||
|
protected string $primaryKey = "order_service_id";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取信息-单条
|
||||||
|
* @param array $params
|
||||||
|
* @param array $fields
|
||||||
|
* @return object|null
|
||||||
|
*/
|
||||||
|
public static function getOne(array $params, array $fields = ['*']): object|null
|
||||||
|
{
|
||||||
|
return self::where($params)->first($fields);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 多条
|
||||||
|
* @param array $params
|
||||||
|
* @param array $fields
|
||||||
|
* @return Collection|array
|
||||||
|
*/
|
||||||
|
public static function getList(array $params, array $fields = ['*']): Collection|array
|
||||||
|
{
|
||||||
|
return self::where($params)->get($fields);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增
|
||||||
|
* @param array $data
|
||||||
|
* @return OrderServicePackageCase|\Hyperf\Database\Model\Model
|
||||||
|
*/
|
||||||
|
public static function addOrderServicePackageCase(array $data): \Hyperf\Database\Model\Model|OrderServicePackageCase
|
||||||
|
{
|
||||||
|
return self::create($data);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改
|
||||||
|
* @param array $params
|
||||||
|
* @param array $data
|
||||||
|
* @return int
|
||||||
|
*/
|
||||||
|
public static function edit(array $params = [], array $data = []): int
|
||||||
|
{
|
||||||
|
return self::where($params)->update($data);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -6,7 +6,9 @@ use App\Amqp\Producer\CancelUnInquiryOrdersDelayDirectProducer;
|
|||||||
use App\Amqp\Producer\CancelUnpayOrdersDelayDirectProducer;
|
use App\Amqp\Producer\CancelUnpayOrdersDelayDirectProducer;
|
||||||
use App\Constants\HttpEnumCode;
|
use App\Constants\HttpEnumCode;
|
||||||
use App\Model\DiseaseClass;
|
use App\Model\DiseaseClass;
|
||||||
|
use App\Model\DoctorConfigFollowPackage;
|
||||||
use App\Model\DoctorConfigFollowPackageItem;
|
use App\Model\DoctorConfigFollowPackageItem;
|
||||||
|
use App\Model\DoctorConfigHealthPackage;
|
||||||
use App\Model\InquiryCaseProduct;
|
use App\Model\InquiryCaseProduct;
|
||||||
use App\Model\Order;
|
use App\Model\Order;
|
||||||
use App\Model\OrderCoupon;
|
use App\Model\OrderCoupon;
|
||||||
@ -14,6 +16,7 @@ use App\Model\OrderInquiry;
|
|||||||
use App\Model\OrderInquiryCase;
|
use App\Model\OrderInquiryCase;
|
||||||
use App\Model\OrderInquiryCoupon;
|
use App\Model\OrderInquiryCoupon;
|
||||||
use App\Model\OrderServicePackage;
|
use App\Model\OrderServicePackage;
|
||||||
|
use App\Model\OrderServicePackageCase;
|
||||||
use App\Model\OrderServicePackageDetail;
|
use App\Model\OrderServicePackageDetail;
|
||||||
use App\Model\PatientFamily;
|
use App\Model\PatientFamily;
|
||||||
use App\Model\PatientFamilyHealth;
|
use App\Model\PatientFamilyHealth;
|
||||||
@ -147,9 +150,12 @@ class OrderServicePackageService extends BaseService
|
|||||||
return fail(HttpEnumCode::HTTP_ERROR,"随访包选择错误");
|
return fail(HttpEnumCode::HTTP_ERROR,"随访包选择错误");
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($order_service_package_detail['service_period'] != $doctor_config_follow_package_item['service_period']){
|
$params = array();
|
||||||
$result['message'] = "未购买";
|
$params['follow_package_id'] = $doctor_config_follow_package_item['follow_package_id'];
|
||||||
return success($result);
|
$params['doctor_id'] = $doctor_id;
|
||||||
|
$doctor_config_follow_package = DoctorConfigFollowPackage::getOne($params);
|
||||||
|
if (empty($doctor_config_follow_package)){
|
||||||
|
return fail(HttpEnumCode::HTTP_ERROR,"随访包选择错误");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -207,7 +213,6 @@ class OrderServicePackageService extends BaseService
|
|||||||
$result['message'] = "成功";
|
$result['message'] = "成功";
|
||||||
$result['data'] = [
|
$result['data'] = [
|
||||||
"order_no" => "",
|
"order_no" => "",
|
||||||
"order_id" => "",
|
|
||||||
];
|
];
|
||||||
|
|
||||||
$user_info = $this->request->getAttribute("userInfo") ?? [];
|
$user_info = $this->request->getAttribute("userInfo") ?? [];
|
||||||
@ -223,16 +228,6 @@ class OrderServicePackageService extends BaseService
|
|||||||
return fail(HttpEnumCode::HTTP_ERROR, "患者信息错误");
|
return fail(HttpEnumCode::HTTP_ERROR, "患者信息错误");
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取患者家庭成员信息表-健康情况
|
|
||||||
$params = array();
|
|
||||||
$params['family_id'] = $request_params['family_id'];
|
|
||||||
$patient_family_health = PatientFamilyHealth::getOne($params);
|
|
||||||
|
|
||||||
// 获取患者家庭成员信息表-个人情况
|
|
||||||
$params = array();
|
|
||||||
$params['family_id'] = $request_params['family_id'];
|
|
||||||
$patient_family_personal = PatientFamilyPersonal::getOne($params);
|
|
||||||
|
|
||||||
// 检测是否存在同类型未完成的问诊订单
|
// 检测是否存在同类型未完成的问诊订单
|
||||||
$PatientOrderService = new PatientOrderService();
|
$PatientOrderService = new PatientOrderService();
|
||||||
$order_inquiry_id = $PatientOrderService->getNotFinishedOrderInquiry($request_params['inquiry_type'],$request_params['inquiry_mode'],$user_info['client_user_id']);
|
$order_inquiry_id = $PatientOrderService->getNotFinishedOrderInquiry($request_params['inquiry_type'],$request_params['inquiry_mode'],$user_info['client_user_id']);
|
||||||
@ -245,10 +240,19 @@ class OrderServicePackageService extends BaseService
|
|||||||
return fail(HttpEnumCode::SERVER_ERROR);
|
return fail(HttpEnumCode::SERVER_ERROR);
|
||||||
}
|
}
|
||||||
|
|
||||||
$result['status'] = 2;
|
$result['status'] = 4;
|
||||||
$result['message'] = "当前患者存在进行中的问诊订单";
|
$result['message'] = "当前患者存在进行中的问诊订单";
|
||||||
$result['data']['order_no'] = $order_inquiry['inquiry_no'];
|
$result['data']['order_no'] = $order_inquiry['inquiry_no'];
|
||||||
$result['data']['order_id'] = $order_inquiry['order_id'];
|
return success($result);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 检测当前医生是否和患者存在未完成问诊订单
|
||||||
|
$InquiryService = new InquiryService();
|
||||||
|
$order_inquiry = $InquiryService->checkPatientDoctorProgressInquiry($user_info['client_user_id'], $request_params['doctor_id']);
|
||||||
|
if (!empty($order_inquiry)) {
|
||||||
|
$result['status'] = 4;
|
||||||
|
$result['message'] = "您和当前医生存在问诊中订单,无法够买服务包";
|
||||||
|
$result['data']['order_no'] = $order_inquiry['inquiry_no'];
|
||||||
return success($result);
|
return success($result);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -277,23 +281,14 @@ class OrderServicePackageService extends BaseService
|
|||||||
return fail(HttpEnumCode::HTTP_ERROR, "当前医生无法接诊,请重新选择");
|
return fail(HttpEnumCode::HTTP_ERROR, "当前医生无法接诊,请重新选择");
|
||||||
}
|
}
|
||||||
|
|
||||||
// 检测当前医生是否和患者存在未完成问诊订单
|
|
||||||
$InquiryService = new InquiryService();
|
|
||||||
$order_inquiry = $InquiryService->checkPatientDoctorProgressInquiry($user_info['client_user_id'], $request_params['doctor_id']);
|
|
||||||
if (!empty($order_inquiry)) {
|
|
||||||
$result['status'] = 2;
|
|
||||||
$result['message'] = "您和当前医生存在问诊中订单,无法再次发起问诊";
|
|
||||||
$result['data']['order_no'] = $order_inquiry['inquiry_no'];
|
|
||||||
$result['data']['order_id'] = $order_inquiry['order_id'];
|
|
||||||
return success($result);
|
|
||||||
}
|
|
||||||
|
|
||||||
// 确定支付渠道
|
// 确定支付渠道
|
||||||
// 支付渠道(1:小程序支付 2:微信扫码支付)
|
// 支付渠道(1:小程序支付 2:微信扫码支付)
|
||||||
if ($request_params['client_type'] == 1) {
|
if ($request_params['client_type'] == 1) {
|
||||||
$inquiry_pay_channel = 1;
|
$inquiry_pay_channel = 1;
|
||||||
} elseif ($request_params['client_type'] == 2) {
|
} elseif ($request_params['client_type'] == 2) {
|
||||||
$inquiry_pay_channel = 2;
|
$inquiry_pay_channel = 2;
|
||||||
|
}else{
|
||||||
|
return fail(HttpEnumCode::HTTP_ERROR, "支付方式错误");
|
||||||
}
|
}
|
||||||
|
|
||||||
// 处理复诊凭证
|
// 处理复诊凭证
|
||||||
@ -312,15 +307,105 @@ class OrderServicePackageService extends BaseService
|
|||||||
return fail(HttpEnumCode::SERVER_ERROR, "订单创建失败");
|
return fail(HttpEnumCode::SERVER_ERROR, "订单创建失败");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 检测患者是否购买服务包
|
||||||
|
$params = array();
|
||||||
|
$params['user_id'] = $user_info['user_id'];
|
||||||
|
$params['patient_id'] = $user_info['client_user_id'];
|
||||||
|
$params['doctor_id'] = $request_params['doctor_id'];
|
||||||
|
$params['family_id'] = $request_params['family_id'];
|
||||||
|
$params['order_service_type'] = $request_params['service_type'];
|
||||||
|
|
||||||
|
$order_service_status = ['1','2','3'];
|
||||||
|
$order_service_package = OrderServicePackage::getStatusOne($params,$order_service_status);
|
||||||
|
if (!empty($order_service_package)){
|
||||||
|
// 检测服务包订单订单状态
|
||||||
|
if ($order_service_package['order_service_status'] == 1){
|
||||||
|
$result['status'] = 2;
|
||||||
|
$result['message'] = "存在未支付订单";
|
||||||
|
$result['data']['order_no'] = (string)$order_service_package['order_service_no'];
|
||||||
|
return success($result);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($order_service_package['order_service_status'] == 2){
|
||||||
|
$result['status'] = 2;
|
||||||
|
$result['message'] = "您已购买该服务包,请耐心等待医生接诊";
|
||||||
|
$result['data']['order_no'] = (string)$order_service_package['order_service_no'];
|
||||||
|
return success($result);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 检测随访包是否存在
|
||||||
|
if ($request_params['service_type'] == 2){
|
||||||
|
if (empty($request_params['follow_package_item_id'])){
|
||||||
|
return fail(HttpEnumCode::SERVER_ERROR, "订单创建失败");
|
||||||
|
}
|
||||||
|
|
||||||
|
$params = array();
|
||||||
|
$params['follow_package_item_id'] = $request_params['follow_package_item_id'];
|
||||||
|
$doctor_config_follow_package_item = DoctorConfigFollowPackageItem::getOne($params);
|
||||||
|
if (empty($doctor_config_follow_package_item)){
|
||||||
|
return fail(HttpEnumCode::HTTP_ERROR,"随访包选择错误");
|
||||||
|
}
|
||||||
|
|
||||||
|
$params = array();
|
||||||
|
$params['follow_package_id'] = $doctor_config_follow_package_item['follow_package_id'];
|
||||||
|
$params['doctor_id'] = $request_params['doctor_id'];
|
||||||
|
$doctor_config_follow_package = DoctorConfigFollowPackage::getOne($params);
|
||||||
|
if (empty($doctor_config_follow_package)){
|
||||||
|
return fail(HttpEnumCode::HTTP_ERROR,"随访包选择错误");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 处理订单金额
|
||||||
|
$service_price = 0;
|
||||||
|
if ($request_params['service_type'] == 1){
|
||||||
|
// 健康包
|
||||||
|
$params = array();
|
||||||
|
$params['doctor_id'] = $request_params['doctor_id'];
|
||||||
|
$doctor_config_health_package = DoctorConfigHealthPackage::getOne($params);
|
||||||
|
if (empty($doctor_config_health_package)){
|
||||||
|
return fail(HttpEnumCode::HTTP_ERROR,"订单创建失败");
|
||||||
|
}
|
||||||
|
$service_price = $doctor_config_health_package['service_price'];
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($request_params['service_type'] == 2){
|
||||||
|
$params = array();
|
||||||
|
$params['follow_package_item_id'] = $request_params['follow_package_item_id'];
|
||||||
|
$doctor_config_follow_package_item = DoctorConfigFollowPackageItem::getOne($params);
|
||||||
|
if (empty($doctor_config_follow_package_item)){
|
||||||
|
return fail(HttpEnumCode::HTTP_ERROR,"随访包选择错误");
|
||||||
|
}
|
||||||
|
|
||||||
|
$service_price = $doctor_config_follow_package_item['service_price'];
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($service_price <= 0){
|
||||||
|
return fail(HttpEnumCode::HTTP_ERROR,"订单创建失败");
|
||||||
|
}
|
||||||
|
|
||||||
|
// 订单类型
|
||||||
|
$order_type = "";
|
||||||
|
if ($request_params['service_type'] == 1){
|
||||||
|
$order_type = 5;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($request_params['service_type'] == 2){
|
||||||
|
$order_type = 4;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (empty($order_type)){
|
||||||
|
return fail(HttpEnumCode::HTTP_ERROR,"订单创建失败");
|
||||||
|
}
|
||||||
|
|
||||||
Db::beginTransaction();
|
Db::beginTransaction();
|
||||||
|
|
||||||
$generator = $this->container->get(IdGeneratorInterface::class);
|
$generator = $this->container->get(IdGeneratorInterface::class);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$inquiry_price = 0;
|
|
||||||
$coupon_amount_total = 0;
|
$coupon_amount_total = 0;
|
||||||
// 实际付款金额
|
// 实际付款金额
|
||||||
$payment_amount_total = bcsub($inquiry_price, $coupon_amount_total, 2);
|
$payment_amount_total = bcsub($service_price, $coupon_amount_total, 2);
|
||||||
if ($payment_amount_total < 0) {
|
if ($payment_amount_total < 0) {
|
||||||
$payment_amount_total = 0;
|
$payment_amount_total = 0;
|
||||||
}
|
}
|
||||||
@ -329,16 +414,12 @@ class OrderServicePackageService extends BaseService
|
|||||||
$data = array();
|
$data = array();
|
||||||
$data['user_id'] = $user_info['user_id'];
|
$data['user_id'] = $user_info['user_id'];
|
||||||
$data['patient_id'] = $user_info['client_user_id'];
|
$data['patient_id'] = $user_info['client_user_id'];
|
||||||
if (isset($request_params['doctor_id'])) {
|
|
||||||
if (!empty($request_params['doctor_id'])) {
|
|
||||||
$data['doctor_id'] = $request_params['doctor_id'];
|
$data['doctor_id'] = $request_params['doctor_id'];
|
||||||
}
|
$data['order_type'] = $order_type; // 订单类型(1:问诊订单 2:药品订单 3:检测订单 4:随访包订单 5:健康包订单)
|
||||||
}
|
$data['inquiry_pay_channel'] = $inquiry_pay_channel;// 支付渠道(1:小程序支付 2:微信扫码支付)
|
||||||
$data['order_type'] = 1; // 订单类型(1:问诊订单 2:药品订单 3:检测订单 4:随访包订单 5:健康包订单)
|
|
||||||
$data['inquiry_pay_channel'] = $inquiry_pay_channel ?? 0;// 支付渠道(1:小程序支付 2:微信扫码支付)
|
|
||||||
$data['pay_status'] = 1;// 1:待支付
|
$data['pay_status'] = 1;// 1:待支付
|
||||||
$data['order_no'] = "I" . $generator->generate();// 订单编号
|
$data['order_no'] = "S" . $generator->generate();// 订单编号
|
||||||
$data['amount_total'] = $inquiry_price;// 订单金额
|
$data['amount_total'] = $service_price;// 订单金额
|
||||||
$data['coupon_amount_total'] = $coupon_amount_total;// 优惠卷总金额
|
$data['coupon_amount_total'] = $coupon_amount_total;// 优惠卷总金额
|
||||||
$data['payment_amount_total'] = $payment_amount_total;// 实际付款金额
|
$data['payment_amount_total'] = $payment_amount_total;// 实际付款金额
|
||||||
$order = Order::addOrder($data);
|
$order = Order::addOrder($data);
|
||||||
@ -347,43 +428,36 @@ class OrderServicePackageService extends BaseService
|
|||||||
return fail(HttpEnumCode::SERVER_ERROR, "订单创建失败");
|
return fail(HttpEnumCode::SERVER_ERROR, "订单创建失败");
|
||||||
}
|
}
|
||||||
|
|
||||||
// 生成问诊订单
|
// 生成服务包订单
|
||||||
$data = array();
|
$data = array();
|
||||||
$data['order_id'] = $order['order_id'];
|
$data['order_id'] = $order['order_id'];
|
||||||
$data['user_id'] = $user_info['user_id'];
|
$data['user_id'] = $user_info['user_id'];
|
||||||
$data['patient_id'] = $user_info['client_user_id'];
|
$data['patient_id'] = $user_info['client_user_id'];
|
||||||
if (isset($request_params['doctor_id'])) {
|
|
||||||
if (!empty($request_params['doctor_id'])) {
|
|
||||||
$data['doctor_id'] = $request_params['doctor_id'];
|
$data['doctor_id'] = $request_params['doctor_id'];
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$data['family_id'] = $request_params['family_id'];
|
$data['family_id'] = $request_params['family_id'];
|
||||||
$data['inquiry_type'] = $request_params['inquiry_type'];
|
$data['order_service_type'] = $request_params['service_type'];
|
||||||
$data['inquiry_mode'] = $request_params['inquiry_mode'];
|
$data['order_service_status'] = 1; // 订单状态(1:待支付 2:未开始 3:服务中 4:服务完成 5:服务取消)
|
||||||
$data['inquiry_status'] = 1;// 1:待支付
|
$data['pay_channel'] = $inquiry_pay_channel;// 支付渠道(1:小程序支付 2:微信扫码支付)
|
||||||
$data['inquiry_pay_channel'] = $inquiry_pay_channel ?? 0;// 支付渠道(1:小程序支付 2:微信扫码支付)
|
$data['order_service_no'] = $order['order_no'];// 系统订单编号
|
||||||
$data['inquiry_no'] = $order['order_no'];// 订单编号
|
$data['amount_total'] = $service_price;// 订单金额
|
||||||
$data['amount_total'] = $inquiry_price;// 订单金额
|
|
||||||
$data['coupon_amount_total'] = $coupon_amount_total;// 优惠卷总金额
|
$data['coupon_amount_total'] = $coupon_amount_total;// 优惠卷总金额
|
||||||
$data['payment_amount_total'] = $payment_amount_total;// 实际付款金额
|
$data['payment_amount_total'] = $payment_amount_total;// 实际付款金额
|
||||||
$data['times_number'] = $system_inquiry_config['times_number'];// 沟通次数(0为不限制次数)
|
|
||||||
$data['duration'] = $system_inquiry_config['duration'];// 沟通时长(分钟,0为不限制时长)
|
|
||||||
$data['patient_name'] = $patient_family['card_name'];// 患者姓名-就诊人
|
$data['patient_name'] = $patient_family['card_name'];// 患者姓名-就诊人
|
||||||
$data['patient_name_mask'] = $patient_family['card_name_mask'];// 患者姓名-就诊人(掩码)
|
$data['patient_name_mask'] = $patient_family['card_name_mask'];// 患者姓名-就诊人(掩码)
|
||||||
$data['patient_sex'] = $patient_family['sex'];// 患者性别-就诊人(0:未知 1:男 2:女)
|
$data['patient_sex'] = $patient_family['sex'];// 患者性别-就诊人(0:未知 1:男 2:女)
|
||||||
$data['patient_age'] = getIdCardAge($patient_family['id_number']);// 患者年龄-就诊人
|
$data['patient_age'] = getIdCardAge($patient_family['id_number']);// 患者年龄-就诊人
|
||||||
$order_inquiry = OrderInquiry::addOrderInquiry($data);
|
$order_service_package = OrderServicePackage::addOrderServicePackage($data);
|
||||||
if (empty($order_inquiry)) {
|
if (empty($order_service_package)){
|
||||||
Db::rollBack();
|
Db::rollBack();
|
||||||
return fail(HttpEnumCode::SERVER_ERROR, "订单创建失败");
|
return fail(HttpEnumCode::SERVER_ERROR, "订单创建失败");
|
||||||
}
|
}
|
||||||
|
|
||||||
// 增加患者问诊病例
|
// 增加患者服务包病例
|
||||||
$data = array();
|
$data = array();
|
||||||
$data['user_id'] = $user_info['user_id'];
|
$data['user_id'] = $user_info['user_id'];
|
||||||
$data['patient_id'] = $user_info['client_user_id'];
|
$data['patient_id'] = $user_info['client_user_id'];
|
||||||
$data['order_inquiry_id'] = $order_inquiry['order_inquiry_id'];// 订单-问诊id
|
$data['order_id'] = $order['order_id'];
|
||||||
|
$data['order_service_id'] = $order_service_package['order_service_id'];// 订单-id
|
||||||
$data['family_id'] = $patient_family['family_id']; // 家庭成员id
|
$data['family_id'] = $patient_family['family_id']; // 家庭成员id
|
||||||
$data['relation'] = $patient_family['relation']; // 与患者关系(1:本人 2:父母 3:爱人 4:子女 5:亲戚 6:其他 )
|
$data['relation'] = $patient_family['relation']; // 与患者关系(1:本人 2:父母 3:爱人 4:子女 5:亲戚 6:其他 )
|
||||||
$data['name'] = $patient_family['card_name']; // 患者名称
|
$data['name'] = $patient_family['card_name']; // 患者名称
|
||||||
@ -393,81 +467,10 @@ class OrderServicePackageService extends BaseService
|
|||||||
$data['diagnosis_date'] = $request_params['diagnosis_date']; // 确诊日期
|
$data['diagnosis_date'] = $request_params['diagnosis_date']; // 确诊日期
|
||||||
$data['disease_desc'] = $request_params['disease_desc']; // 病情描述(主诉)
|
$data['disease_desc'] = $request_params['disease_desc']; // 病情描述(主诉)
|
||||||
$data['diagnose_images'] = $diagnose_images ?? ""; // 复诊凭证(多个使用逗号分隔)
|
$data['diagnose_images'] = $diagnose_images ?? ""; // 复诊凭证(多个使用逗号分隔)
|
||||||
|
|
||||||
if ($patient_family['age'] != null) {
|
if ($patient_family['age'] != null) {
|
||||||
$data['age'] = getIdCardAge($patient_family['id_number']);// 患者年龄
|
$data['age'] = getIdCardAge($patient_family['id_number']);// 患者年龄
|
||||||
}
|
}
|
||||||
|
|
||||||
// 身高(cm)
|
|
||||||
if ($patient_family['height'] != null) {
|
|
||||||
$data['height'] = $patient_family['height'];
|
|
||||||
}
|
|
||||||
|
|
||||||
// 体重(kg)
|
|
||||||
if ($patient_family['weight'] != null) {
|
|
||||||
$data['weight'] = $patient_family['weight'];
|
|
||||||
}
|
|
||||||
|
|
||||||
// 职业id-职业名称
|
|
||||||
if ($patient_family['job_id'] != null) {
|
|
||||||
$data['job_id'] = $patient_family['job_id'];
|
|
||||||
if ($patient_family['job_name'] != null) {
|
|
||||||
$data['job_name'] = $patient_family['job_name'];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 民族id-民族名称
|
|
||||||
if ($patient_family['nation_id'] != null) {
|
|
||||||
$data['nation_id'] = $patient_family['nation_id'];
|
|
||||||
if ($patient_family['nation_name'] != null) {
|
|
||||||
$data['nation_name'] = $patient_family['nation_name'];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 婚姻状况
|
|
||||||
if ($patient_family['marital_status'] != null) {
|
|
||||||
$data['marital_status'] = $patient_family['marital_status'];
|
|
||||||
}
|
|
||||||
|
|
||||||
// 家庭成员-健康情况
|
|
||||||
if (!empty($patient_family_health)) {
|
|
||||||
if ($patient_family_health['diagnosis_hospital'] != null) {
|
|
||||||
$data['diagnosis_hospital'] = $patient_family_health['diagnosis_hospital']; // 确诊医院
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($patient_family_health['is_take_medicine'] != null) {
|
|
||||||
$data['is_take_medicine'] = $patient_family_health['is_take_medicine']; // 正在服药
|
|
||||||
if ($patient_family_health['drugs_name'] != null) {
|
|
||||||
$data['drugs_name'] = $patient_family_health['drugs_name']; // 正在服药名称
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 家庭成员-个人情况
|
|
||||||
if (!empty($patient_family_personal)) {
|
|
||||||
if ($patient_family_personal['drink_wine_status'] != null) {
|
|
||||||
$data['drink_wine_status'] = $patient_family_personal['drink_wine_status']; // 饮酒状态
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($patient_family_personal['smoke_status'] != null) {
|
|
||||||
$data['smoke_status'] = $patient_family_personal['smoke_status']; // 吸烟状态
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($patient_family_personal['chemical_compound_status'] != null) {
|
|
||||||
$data['chemical_compound_status'] = $patient_family_personal['chemical_compound_status']; // 化合物状态
|
|
||||||
if ($patient_family_personal['chemical_compound_describe'] != null) {
|
|
||||||
$data['chemical_compound_describe'] = $patient_family_personal['chemical_compound_describe']; // 化合物描述
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($patient_family_personal['is_operation'] != null) {
|
|
||||||
$data['is_operation'] = $patient_family_personal['is_operation']; // 是否存在手术
|
|
||||||
if ($patient_family_personal['operation'] != null) {
|
|
||||||
$data['operation'] = $patient_family_personal['operation']; // 手术描述
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 过敏史
|
// 过敏史
|
||||||
if (array_key_exists("is_allergy_history", $request_params)) {
|
if (array_key_exists("is_allergy_history", $request_params)) {
|
||||||
if ($request_params['is_allergy_history'] !== null) {
|
if ($request_params['is_allergy_history'] !== null) {
|
||||||
@ -488,97 +491,12 @@ class OrderServicePackageService extends BaseService
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 是否备孕、妊娠、哺乳期(0:否 1:是)
|
$order_service_package_case = OrderServicePackageCase::addOrderServicePackageCase($data);
|
||||||
if (array_key_exists("is_pregnant", $request_params)) {
|
if (empty($order_service_package_case)) {
|
||||||
if ($request_params['is_pregnant'] !== null) {
|
|
||||||
$data['is_pregnant'] = $request_params['is_pregnant']; // 是否备孕、妊娠、哺乳期(0:否 1:是)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 是否存在禁忌药物(0:否 1:是)问诊购药时存在
|
|
||||||
if (array_key_exists("is_taboo", $request_params)) {
|
|
||||||
if ($request_params['is_taboo'] !== null) {
|
|
||||||
$data['is_taboo'] = $request_params['is_taboo']; // 是否存在禁忌药物(0:否 1:是)问诊购药时存在
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$order_inquiry_case = OrderInquiryCase::addOrderInquiryCase($data);
|
|
||||||
if (empty($order_inquiry_case)) {
|
|
||||||
Db::rollBack();
|
Db::rollBack();
|
||||||
return fail(HttpEnumCode::SERVER_ERROR, "订单创建失败");
|
return fail(HttpEnumCode::SERVER_ERROR, "订单创建失败");
|
||||||
}
|
}
|
||||||
|
|
||||||
// 处理优惠卷数据
|
|
||||||
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_inquiry_id'] = $order_inquiry['order_inquiry_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_inquiry_coupon = OrderInquiryCoupon::addOrderInquiryCoupon($data);
|
|
||||||
if (empty($order_inquiry_coupon)) {
|
|
||||||
Db::rollBack();
|
|
||||||
return fail(HttpEnumCode::SERVER_ERROR, "订单创建失败");
|
|
||||||
}
|
|
||||||
|
|
||||||
// 修改优惠卷使用状态
|
|
||||||
$data = array();
|
|
||||||
$data['user_coupon_status'] = 1;
|
|
||||||
$data['coupon_use_date'] = date('Y-m-d H:i:s', time());
|
|
||||||
|
|
||||||
$params = array();
|
|
||||||
$params['user_coupon_id'] = $user_coupon['user_coupon_id'];
|
|
||||||
UserCoupon::edit($params, $data);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 意向用药处理
|
|
||||||
if ($request_params['inquiry_type'] == 4 && !empty($request_params['product'])) {
|
|
||||||
foreach ($request_params['product'] as $item) {
|
|
||||||
$params = array();
|
|
||||||
$params['product_id'] = $item['product_id'];
|
|
||||||
$product = Product::getWithAmountOne($params);
|
|
||||||
if (empty($product)) {
|
|
||||||
Db::rollBack();
|
|
||||||
return fail(HttpEnumCode::HTTP_ERROR, "意向药品错误");
|
|
||||||
}
|
|
||||||
|
|
||||||
// 用药意向是否和过敏史重叠
|
|
||||||
if (!empty($request_params['allergy_history'])) {
|
|
||||||
$res = strpos($request_params['allergy_history'], $product['product_name']);
|
|
||||||
if ($res !== false) {
|
|
||||||
Db::rollBack();
|
|
||||||
return fail(HttpEnumCode::HTTP_ERROR, "过敏史中存在意向用药,请您仔细检查");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 新增病例商品表
|
|
||||||
$data = array();
|
|
||||||
$data['inquiry_case_id'] = $order_inquiry_case['inquiry_case_id'];
|
|
||||||
$data['product_id'] = $item['product_id'];
|
|
||||||
$data['case_product_num'] = $item['product_num'];
|
|
||||||
$inquiry_case_product = InquiryCaseProduct::addInquiryCaseProduct($data);
|
|
||||||
if (empty($inquiry_case_product)) {
|
|
||||||
Db::rollBack();
|
|
||||||
return fail(HttpEnumCode::SERVER_ERROR, "订单创建失败");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 增加至未支付取消订单延迟队列
|
// 增加至未支付取消订单延迟队列
|
||||||
$time = 60 * 30;
|
$time = 60 * 30;
|
||||||
if (\Hyperf\Config\config('app_env') == "dev"){
|
if (\Hyperf\Config\config('app_env') == "dev"){
|
||||||
@ -586,8 +504,8 @@ class OrderServicePackageService extends BaseService
|
|||||||
}
|
}
|
||||||
|
|
||||||
$data = array();
|
$data = array();
|
||||||
$data['order_no'] = $order_inquiry['inquiry_no'];
|
$data['order_no'] = $order_service_package['inquiry_no'];
|
||||||
$data['order_type'] = 1;
|
$data['order_type'] = 4;
|
||||||
|
|
||||||
$message = new CancelUnpayOrdersDelayDirectProducer($data);
|
$message = new CancelUnpayOrdersDelayDirectProducer($data);
|
||||||
$message->setDelayMs(1000 * $time);
|
$message->setDelayMs(1000 * $time);
|
||||||
@ -598,37 +516,14 @@ class OrderServicePackageService extends BaseService
|
|||||||
return fail(HttpEnumCode::SERVER_ERROR, "订单创建失败");
|
return fail(HttpEnumCode::SERVER_ERROR, "订单创建失败");
|
||||||
}
|
}
|
||||||
|
|
||||||
// 加入未接诊取消订单延迟队列
|
|
||||||
// 专家问诊-公益问诊
|
|
||||||
if (!empty($request_params['doctor_id']) && ($request_params['inquiry_type'] == 1 || $request_params['inquiry_type'] == 3)) {
|
|
||||||
$time = 60 * 60 * 24;
|
|
||||||
if (\Hyperf\Config\config('app_env') == "dev"){
|
|
||||||
$time = 60 * 10;
|
|
||||||
}
|
|
||||||
|
|
||||||
$data = array();
|
|
||||||
$data['order_inquiry_id'] = $order_inquiry['order_inquiry_id'];
|
|
||||||
$data['order_no'] = $order_inquiry['inquiry_no'];
|
|
||||||
$message = new CancelUnInquiryOrdersDelayDirectProducer($data);
|
|
||||||
$message->setDelayMs(1000 * $time);
|
|
||||||
$producer = $this->container->get(Producer::class);
|
|
||||||
$res = $producer->produce($message);
|
|
||||||
if (!$res) {
|
|
||||||
Db::rollBack();
|
|
||||||
return fail(HttpEnumCode::SERVER_ERROR, "订单创建失败");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Db::commit();
|
Db::commit();
|
||||||
} catch (\Exception $e) {
|
} catch (\Exception $e) {
|
||||||
Db::rollBack();
|
Db::rollBack();
|
||||||
Log::getInstance()->error("错误:" . $e->getMessage());
|
return fail(HttpEnumCode::SERVER_ERROR, $e->getMessage());
|
||||||
return fail(HttpEnumCode::HTTP_ERROR, $e->getMessage());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$result['status'] = 1;
|
$result['data']['order_no'] = (string)$order['order_no'];
|
||||||
$result['data']['order_inquiry_id'] = (string)$order_inquiry['order_inquiry_id']; // 订单主键id
|
|
||||||
$result['data']['inquiry_no'] = (string)$order_inquiry['inquiry_no']; // 订单编号
|
|
||||||
return success($result);
|
return success($result);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user