You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
118 lines
4.0 KiB
PHP
118 lines
4.0 KiB
PHP
<?php
|
|
namespace App\Services;
|
|
|
|
use App\Http\Controllers\API\AspNetZhuanController;
|
|
use Illuminate\Support\Facades\DB;
|
|
|
|
class OrderService
|
|
{
|
|
|
|
//订单项目按科室分类
|
|
public function DepartmentItemCount($id)
|
|
{
|
|
$order=DB::table('orders')->where('id',$id)->first();
|
|
if(!$order) return ['status'=>false,'msg'=>'订单不存在'];
|
|
$buy_info=json_decode($order->buy_info,true);
|
|
$list=[];
|
|
if($buy_info['combo']['id']<>0){
|
|
$combo_items=DB::table('combo_items')->where(['combo_id'=>$buy_info['combo']['id'],'status'=>1])->get();
|
|
foreach($combo_items as $item){
|
|
$list[]=[
|
|
'item_id'=>$item->item_id,
|
|
'keshi_name'=>$item->keshi_name,
|
|
'keshi_id'=>$item->keshi_id,
|
|
];
|
|
}
|
|
}
|
|
if(count($buy_info['items'])>0){
|
|
$item_ids=[];
|
|
foreach($buy_info['items'] as $item){
|
|
$item_ids[]=$item['id'];
|
|
}
|
|
$itemsInfo=DB::table('items')->whereIn('item_id',$item_ids)->get();
|
|
foreach($itemsInfo as $item){
|
|
$list[]=[
|
|
'item_id'=>$item->item_id,
|
|
'keshi_name'=>$item->keshi_name,
|
|
'keshi_id'=>$item->keshi_id,
|
|
];
|
|
}
|
|
}
|
|
if($buy_info['group']['id']<>''){
|
|
$item_ids=[];
|
|
foreach($buy_info['group']['items'] as $item){
|
|
$item_ids[]=$item['id'];
|
|
}
|
|
$itemsInfo=DB::table('items')->whereIn('item_id',$item_ids)->get();
|
|
foreach($itemsInfo as $item){
|
|
$list[]=[
|
|
'item_id'=>$item->item_id,
|
|
'keshi_name'=>$item->keshi_name,
|
|
'keshi_id'=>$item->keshi_id,
|
|
];
|
|
}
|
|
}
|
|
$groupedData = [];
|
|
foreach ($list as $key => $item) {
|
|
$keshiName = $item['keshi_name'];
|
|
if (!isset($groupedData[$keshiName])) {
|
|
$groupedData[$keshiName] = [];
|
|
}
|
|
$groupedData[$keshiName][] = $item;
|
|
}
|
|
$de_list=[];
|
|
foreach ($groupedData as $key => $item) {
|
|
|
|
$de_list[]=[
|
|
'name'=>$key,
|
|
'keshi_id'=>$item[0]['keshi_id'],
|
|
'count'=>count($item),
|
|
];
|
|
}
|
|
return ['department_list'=>$de_list,'wait_day'=>"10"];
|
|
|
|
}
|
|
public function Cancel($orderInfo)
|
|
{
|
|
$person=DB::table('web_user_person')->where(['id' => $orderInfo->person_id])->first();
|
|
$now_datetime=date('Y-m-d H:i:s');
|
|
//调用接口恢复积分和预存款
|
|
$env=config('app.globals.Env');
|
|
$AspNet=new AspNetZhuanController();
|
|
$jifen_huifu_status=true;
|
|
$yucunkuan_huifu_status=true;
|
|
$r_yyid=$orderInfo->hospital_id;
|
|
if($r_yyid==1){
|
|
$yyid=6;
|
|
}
|
|
if($r_yyid==4){
|
|
$yyid=2;
|
|
}
|
|
if($env=='pro') { //如果是正式环境
|
|
if($orderInfo->jifen>0 and $orderInfo->is_refund_jifen==0) {
|
|
$jifen_huifu_status=false;
|
|
$jifen_huifu_status= $AspNet::UseJiFen($person->ghzid,$orderInfo->jifen,$yyid,$orderInfo->id,'tj_h5','抵扣体检H5订单',$now_datetime);
|
|
if( $jifen_huifu_status===true){
|
|
DB::table('orders')->where('id',$orderInfo->id)->update(['is_refund_jifen'=>1]);
|
|
}
|
|
}
|
|
if($orderInfo->yucunkuan>0 and $orderInfo->is_refund_yucunkuan==0) {
|
|
$yucunkuan_huifu_status=false;
|
|
$yucunkuan_huifu_status= $AspNet::UseYuCunKuan($person->ghzid,$orderInfo->yucunkuan,$yyid,0,$orderInfo->id,'tj_h5','抵扣体检H5订单',$now_datetime);
|
|
if($yucunkuan_huifu_status===true){
|
|
DB::table('orders')->where('id',$orderInfo->id)->update(['is_refund_yucunkuan'=>1]);
|
|
}
|
|
}
|
|
}
|
|
|
|
DB::table('orders')->where(['id' => $orderInfo->id,'status'=>1])->update([
|
|
'status' => 3
|
|
]);
|
|
//恢复号源
|
|
$up_plan = DB::table('plans')->where(['id' => $orderInfo->plan_id, 'status' => 2])->update([
|
|
'status' => 1
|
|
]);
|
|
return true;
|
|
}
|
|
}
|