新增药品订单接口

This commit is contained in:
wucongxing 2023-03-11 17:43:41 +08:00
parent 9a311d78f3
commit 9fd87ac071
7 changed files with 232 additions and 24 deletions

View File

@ -103,4 +103,26 @@ class PatientOrderController extends AbstractController
$data = $PatientOrderService->getPatientProductOrderInfo(); $data = $PatientOrderService->getPatientProductOrderInfo();
return $this->response->json($data); return $this->response->json($data);
} }
/**
* 药品订单取消支付
* @return ResponseInterface
*/
public function putPatientProductOrderCancelPay(): ResponseInterface
{
$PatientOrderService = new PatientOrderService();
$data = $PatientOrderService->putPatientProductOrderCancelPay();
return $this->response->json($data);
}
/**
* 删除药品订单
* @return ResponseInterface
*/
public function deletePatientProductOrder(): ResponseInterface
{
$PatientOrderService = new PatientOrderService();
$data = $PatientOrderService->deletePatientProductOrder();
return $this->response->json($data);
}
} }

View File

@ -152,23 +152,32 @@ class UserController extends AbstractController
// 发送消息 // 发送消息
// $arg = array(); // $arg = array();
// $arg['From_Account'] = "10000"; // 发送方user_id 如系统发送,无需填写 //// $arg['From_Account'] = "10000"; // 发送方user_id 如系统发送,无需填写
// $arg['To_Account'] = "123456"; // 接收方user_id // $arg['To_Account'] = "10000"; // 接收方user_id
// $arg['ForbidCallbackControl'] = ['ForbidBeforeSendMsgCallback']; //// $arg['ForbidCallbackControl'] = ['ForbidBeforeSendMsgCallback'];
// $arg['SendMsgControl'] = []; //// $arg['SendMsgControl'] = [];
// //
// $arg['MsgBody'] = [ // $arg['MsgBody'] = [
//// [
//// "MsgType" => "TIMTextElem",
//// "MsgContent" => [
//// "Text" => "ceshi",
//// ],
//// ]
// [ // [
// "MsgType" => "TIMTextElem", // "MsgType" => "TIMCustomElem",
// "MsgContent" => [ // "MsgContent" => [
// "Text" => "发送11122", // "Data" => "{\"message_type\":1,\"content\":\"\"}",
// "Desc" => "自定义消息",
// "Ext" => "url",
// "Sound" => "dingdong.aiff",
// ], // ],
// ] // ]
// ]; // ];
// //
// // 自定义消息 // // 自定义消息
// $cloud_custom_data = array(); // $cloud_custom_data = array();
// $cloud_custom_data['order_inquiry_id'] = 491963820554948608; // $cloud_custom_data['order_inquiry_id'] = 1;
// $cloud_custom_data['is_system'] = 0; // $cloud_custom_data['is_system'] = 0;
// $cloud_custom_data['inquiry_type'] = 2; // $cloud_custom_data['inquiry_type'] = 2;
// //

View File

@ -32,6 +32,7 @@ use Hyperf\Snowflake\Concern\Snowflake;
* @property string $pay_time 支付时间 * @property string $pay_time 支付时间
* @property string $remarks 订单备注 * @property string $remarks 订单备注
* @property int $refund_status 商品订单退款状态0:无退款 1:申请退款 2:退款中 3:退款成功 4:拒绝退款 5:退款关闭) * @property int $refund_status 商品订单退款状态0:无退款 1:申请退款 2:退款中 3:退款成功 4:拒绝退款 5:退款关闭)
* @property string $cancel_time 订单取消时间
* @property string $cancel_remarks 订单取消备注(自动添加) * @property string $cancel_remarks 订单取消备注(自动添加)
* @property int $province_id 省份id * @property int $province_id 省份id
* @property string $province 省份 * @property string $province 省份
@ -47,6 +48,7 @@ use Hyperf\Snowflake\Concern\Snowflake;
* @property string $consignee_tel_mask 收货人电话(掩码) * @property string $consignee_tel_mask 收货人电话(掩码)
* @property \Carbon\Carbon $created_at 创建时间 * @property \Carbon\Carbon $created_at 创建时间
* @property \Carbon\Carbon $updated_at 修改时间 * @property \Carbon\Carbon $updated_at 修改时间
* @property-read \Hyperf\Database\Model\Collection|OrderProductItem[] $OrderProductItem
*/ */
class OrderProduct extends Model class OrderProduct extends Model
{ {
@ -60,7 +62,7 @@ class OrderProduct extends Model
/** /**
* The attributes that are mass assignable. * The attributes that are mass assignable.
*/ */
protected array $fillable = ['order_product_id', 'order_inquiry_id', 'order_prescription_id', 'doctor_id', 'patient_id', 'family_id', 'order_product_no', 'escrow_trade_no', 'order_product_status', 'pay_channel', 'pay_status', 'is_delete', 'cancel_reason', 'amount_total', 'payment_amount_total', 'logistics_fee', 'logistics_no', 'pay_time', 'remarks', 'refund_status', 'cancel_remarks', 'province_id', 'province', 'city_id', 'city', 'county_id', 'county', 'address', 'address_mask', 'consignee_name', 'consignee_name_mask', 'consignee_tel', 'consignee_tel_mask', 'created_at', 'updated_at']; protected array $fillable = ['order_product_id', 'order_inquiry_id', 'order_prescription_id', 'doctor_id', 'patient_id', 'family_id', 'order_product_no', 'escrow_trade_no', 'order_product_status', 'pay_channel', 'pay_status', 'is_delete', 'cancel_reason', 'amount_total', 'payment_amount_total', 'logistics_fee', 'logistics_no', 'pay_time', 'remarks', 'refund_status', 'cancel_time', 'cancel_remarks', 'province_id', 'province', 'city_id', 'city', 'county_id', 'county', 'address', 'address_mask', 'consignee_name', 'consignee_name_mask', 'consignee_tel', 'consignee_tel_mask', 'created_at', 'updated_at'];
protected string $primaryKey = "order_product_id"; protected string $primaryKey = "order_product_id";
@ -139,4 +141,15 @@ class OrderProduct extends Model
return $data; return $data;
} }
/**
* 修改
* @param array $params
* @param array $data
* @return int
*/
public static function edit(array $params = [], array $data = []): int
{
return self::where($params)->update($data);
}
} }

View File

@ -282,4 +282,20 @@ class UserDoctor extends Model
{ {
return self::where($params)->exists(); return self::where($params)->exists();
} }
/**
* 获取医生数据
* 关联医院表
* @param array $params
* @param array $fields
* @return object|null
*/
public static function getWithHospitalOne(array $params,array $fields = ['*']): object|null
{
return self::with([
"Hospital:hospital_id,hospital_name,hospital_level_name"
])
->where($params)
->first($fields);
}
} }

View File

@ -7,7 +7,9 @@ use App\Constants\HttpEnumCode;
use App\Model\Hospital; use App\Model\Hospital;
use App\Model\OrderInquiry; use App\Model\OrderInquiry;
use App\Model\OrderInquiryCase; use App\Model\OrderInquiryCase;
use App\Model\OrderPrescription;
use App\Model\OrderProduct; use App\Model\OrderProduct;
use App\Model\OrderProductItem;
use App\Model\UserDoctor; use App\Model\UserDoctor;
use Hyperf\DbConnection\Db; use Hyperf\DbConnection\Db;
use Psr\Container\ContainerExceptionInterface; use Psr\Container\ContainerExceptionInterface;
@ -277,6 +279,7 @@ class PatientOrderService extends BaseService
$inquiryService->inquiryRefund($order_inquiry['order_inquiry_id'],"取消问诊"); $inquiryService->inquiryRefund($order_inquiry['order_inquiry_id'],"取消问诊");
} }
Db::commit();
} catch (\Exception $e) { } catch (\Exception $e) {
Db::rollBack(); Db::rollBack();
return fail(HttpEnumCode::HTTP_ERROR, $e->getMessage()); return fail(HttpEnumCode::HTTP_ERROR, $e->getMessage());
@ -287,6 +290,9 @@ class PatientOrderService extends BaseService
/** /**
* 删除问诊订单 * 删除问诊订单
* 支付超时
* 取消问诊
* 问诊结束
* @return array * @return array
*/ */
public function deletePatientInquiryOrder(): array public function deletePatientInquiryOrder(): array
@ -306,16 +312,11 @@ class PatientOrderService extends BaseService
} }
// 检测订单状态 // 检测订单状态
if (!in_array($order_inquiry['inquiry_status'],[1,5])) { if (!in_array($order_inquiry['inquiry_status'],[6,7])) {
// 问诊订单状态1:待支付 2:待分配 3:待接诊 4:已接诊 5:已完成 6:已结束 7:已取消) // 问诊订单状态1:待支付 2:待分配 3:待接诊 4:已接诊 5:已完成 6:已结束 7:已取消)
return fail(HttpEnumCode::HTTP_ERROR,"订单无法删除"); return fail(HttpEnumCode::HTTP_ERROR,"订单无法删除");
} }
if (!in_array($order_inquiry['inquiry_refund_status'],[0,4,5])) {
// 问诊订单退款状态0:无退款 1:申请退款 2:退款中 3:退款成功 4:拒绝退款 5:退款关闭)
return fail(HttpEnumCode::HTTP_ERROR,"订单正在退款中");
}
// 修改订单删除状态 // 修改订单删除状态
$data = array(); $data = array();
$data['is_delete'] = 1; $data['is_delete'] = 1;
@ -349,9 +350,9 @@ class PatientOrderService extends BaseService
} }
// 检测订单状态 // 检测订单状态
if (!in_array($order_inquiry['inquiry_status'],[1])) { if ($order_inquiry['inquiry_status'] != 1) {
// 问诊订单状态1:待支付 2:待分配 3:待接诊 4:已接诊 5:已完成 6:已结束 7:已取消) // 问诊订单状态1:待支付 2:待分配 3:待接诊 4:已接诊 5:已完成 6:已结束 7:已取消)
return fail(HttpEnumCode::HTTP_ERROR,"订单无法删除"); return fail(HttpEnumCode::HTTP_ERROR,"订单无法取消支付");
} }
if (!in_array($order_inquiry['inquiry_refund_status'],[0,4,5])) { if (!in_array($order_inquiry['inquiry_refund_status'],[0,4,5])) {
@ -359,12 +360,12 @@ class PatientOrderService extends BaseService
return fail(HttpEnumCode::HTTP_ERROR,"订单正在退款中"); return fail(HttpEnumCode::HTTP_ERROR,"订单正在退款中");
} }
// 修改订单删除状态 // 修改订单状态
$data = array(); $data = array();
$data['inquiry_status'] = 7; $data['inquiry_status'] = 7;
$data['cancel_time'] = date("Y-m-d H:i:s",time()); $data['cancel_time'] = date("Y-m-d H:i:s",time());
$data['cancel_reason'] = 2; // 取消订单原因1:医生未接诊 2:主动取消 3:无可分配医生 4:客服取消 5:支付超时) $data['cancel_reason'] = 2; // 取消订单原因1:医生未接诊 2:主动取消 3:无可分配医生 4:客服取消 5:支付超时)
$data['cancel_remarks'] = "未支付取消"; $data['cancel_remarks'] = "主动取消";
$data['updated_at'] = date("Y-m-d H:i:s",time()); $data['updated_at'] = date("Y-m-d H:i:s",time());
$params = array(); $params = array();
@ -447,12 +448,157 @@ class PatientOrderService extends BaseService
$params['patient_id'] = $user_info['client_user_id']; $params['patient_id'] = $user_info['client_user_id'];
$params['order_product_id'] = $order_product_id; $params['order_product_id'] = $order_product_id;
$params['is_delete'] = 0; $params['is_delete'] = 0;
$order_product = OrderInquiry::getOne($params); $order_product = OrderProduct::getOne($params);
if (empty($order_product)){ if (empty($order_product)){
return fail(); return fail();
} }
$params = array();
$params['order_product_id'] = $order_product['order_product_id'];
$order_product_item = OrderProductItem::getList($params);
if (empty($order_product_item)){
return fail();
}
// 处理商品图片
foreach ($order_product_item as &$item){
$item['product_cover_img'] = addAliyunOssWebsite($item['product_cover_img']);
}
if (!empty($order_product['doctor_id'])){
// 获取问诊医生数据
$fields = [
'doctor_id',
'user_name',
'multi_point_status',
'avatar',
'doctor_title',
'department_custom_name',
'be_good_at',
];
$params = array();
$params['doctor_id'] = $order_product['doctor_id'];
$user_doctor = UserDoctor::getWithHospitalOne($params,$fields);
if (empty($user_doctor)){
return fail(HttpEnumCode::SERVER_ERROR);
}
$user_doctor['avatar'] = addAliyunOssWebsite($user_doctor['avatar']);
}
$result = array();
$result['user_doctor'] = $user_doctor ?? [];
$result['order_product'] = $order_product;
$result['order_product_item'] = $order_product_item;
return success($result);
}
/**
* 药品订单取消支付
* @return array
*/
public function putPatientProductOrderCancelPay(): array
{
$user_info = $this->request->getAttribute("userInfo") ?? [];
$order_product_id = $this->request->route('order_product_id');
Db::beginTransaction();
try {
// 获取药品订单数据
$params = array();
$params['patient_id'] = $user_info['client_user_id'];
$params['order_product_id'] = $order_product_id;
$params['is_delete'] = 0;
$order_product = OrderProduct::getOne($params);
if (empty($order_product)){
Db::rollBack();
return fail();
}
// 检测订单状态
if ($order_product['order_product_status'] != 1) {
Db::rollBack();
// 订单状态1:待支付 2:待发货 3:已发货 4:已签收 5:已取消)
return fail(HttpEnumCode::HTTP_ERROR,"订单无法删除");
}
if ($order_product['pay_status'] != 1) {
Db::rollBack();
// 订单状态1:待支付 2:待发货 3:已发货 4:已签收 5:已取消)
return fail(HttpEnumCode::HTTP_ERROR,"订单无法删除");
}
if (!in_array($order_product['refund_status'],[0,4,5])) {
Db::rollBack();
// 商品订单退款状态0:无退款 1:申请退款 2:退款中 3:退款成功 4:拒绝退款 5:退款关闭)
return fail(HttpEnumCode::HTTP_ERROR,"订单正在退款中");
}
// 修改订单状态
$data = array();
$data['order_product_status'] = 5;
$data['cancel_time'] = date("Y-m-d H:i:s",time());
$data['cancel_reason'] = 1; // 订单取消原因1:主动取消 2:复核失败/库存不足 3:支付超时
$data['cancel_remarks'] = "主动取消";
$data['updated_at'] = date("Y-m-d H:i:s",time());
$params = array();
$params['order_inquiry_id'] = $order_product['order_inquiry_id'];
OrderProduct::edit($params,$data);
Db::commit();
} catch (\Exception $e) {
Db::rollBack();
return fail(HttpEnumCode::HTTP_ERROR, $e->getMessage());
}
return success();
}
/**
* 删除药品订单
* 已收货
* 取消订单
* @return array
*/
public function deletePatientProductOrder(): array
{
$user_info = $this->request->getAttribute("userInfo") ?? [];
$order_product_id = $this->request->route('order_product_id');
// 获取订单数据
$params = array();
$params['patient_id'] = $user_info['client_user_id'];
$params['order_product_id'] = $order_product_id;
$params['is_delete'] = 0;
$order_product = OrderProduct::getOne($params);
if (empty($order_product)){
return fail();
}
if (!in_array($order_product['order_product_status'],[4,5])) {
Db::rollBack();
// 订单状态1:待支付 2:待发货 3:已发货 4:已签收 5:已取消)
return fail(HttpEnumCode::HTTP_ERROR,"订单无法删除");
}
// 修改订单状态
$data = array();
$data['order_product_status'] = 5;
$data['cancel_time'] = date("Y-m-d H:i:s",time());
$data['cancel_reason'] = 1; // 订单取消原因1:主动取消 2:复核失败/库存不足 3:支付超时
$data['cancel_remarks'] = "主动取消";
$data['updated_at'] = date("Y-m-d H:i:s",time());
$params = array();
$params['order_inquiry_id'] = $order_product['order_inquiry_id'];
OrderProduct::edit($params,$data);
return success();
} }
} }

View File

@ -301,12 +301,15 @@ Router::addGroup('/patient', function () {
Router::get('', [PatientOrderController::class, 'getPatientProductOrderList']); Router::get('', [PatientOrderController::class, 'getPatientProductOrderList']);
// 获取药品订单详情 // 获取药品订单详情
Router::post('/{order_product_id:\d+}', [PatientOrderController::class, 'getPatientProductOrderInfo']); Router::get('/{order_product_id:\d+}', [PatientOrderController::class, 'getPatientProductOrderInfo']);
// 药品订单取消支付-1未支付 // 药品订单取消支付
Router::put('/cancel-pay/{order_inquiry_id:\d+}', [PatientOrderController::class, 'putPatientInquiryOrderCancelPay']); Router::put('/cancel-pay/{order_product_id:\d+}', [PatientOrderController::class, 'putPatientProductOrderCancelPay']);
// 创建处方订单 // 删除药品订单
Router::delete('/{order_product_id:\d+}', [PatientOrderController::class, 'deletePatientProductOrder']);
// 创建药品订单
Router::post('/121212da', [PatientOrderController::class, 'imCallBack']); Router::post('/121212da', [PatientOrderController::class, 'imCallBack']);
}); });

View File

@ -75,7 +75,6 @@ class Message extends Base
'CloudCustomData' => "", 'CloudCustomData' => "",
]; ];
} }
/** /**