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.

132 lines
4.4 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=[];
$drop_ids = [519 ,603];
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){
if(!in_array($item->item_id,$drop_ids)){
$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]);
}
}
if(!empty($orderInfo->youhuiquan)){
$youhuiquan=json_decode( $orderInfo->youhuiquan,true);
$data=[
'action'=>4,
'ghzid'=>$person->ghzid,
'dzjid'=>$youhuiquan['id'],
'hxbz'=>"H5撤销核销",
'yyid'=>$yyid
];
$AspNet::YouHuiQuan($data);
}
}
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;
}
}