$id,'shop_id'=>$shopId]) ->field('id,sn,mobile,name,work_photo,work_status,gender,age,shop_id') ->findOrEmpty()->toArray(); return $coach; }catch (Exception $e){ self::$error = $e->getMessage(); return false; } } /** * @notes 申请详情 * @param int $id * @return false * @author cjhao * @date 2024/10/16 02:10 */ public function applyDetail(int $id) { try { $shopCoachApply = ShopCoachApply::where(['id'=>$id])->findOrEmpty(); if($shopCoachApply->isEmpty()){ throw new Exception('记录不存在'); } $coach = Coach::alias('C') ->join('skill S','C.skill_id = S.id') ->where(['C.id'=>$shopCoachApply['coach_id']]) ->field('C.id,C.name,mobile,work_photo,order_num,good_comment,S.name as skill_name,C.audit_status,introduction') ->findOrEmpty()->toArray(); $coach['good_comment'] = $coach['good_comment'].'%'; return $coach; }catch (Exception $e){ self::$error = $e->getMessage(); return false; } } /** * @notes 门店申请审核 * @param array $params * @return string|true * @author cjhao * @date 2024/10/16 01:59 */ public function applyAudit(array $params) { try { $id = $params['id'] ?? ''; $auditStatus = $params['audit_status'] ?? ''; $auditRemark = $params['audit_remark'] ?? ''; if(empty($id)){ throw new Exception('请选择审核记录'); } if(empty($auditStatus)){ throw new Exception('请选择审核状态'); } Db::startTrans(); $shopCoachApply = ShopCoachApply::where(['id'=>$params['id']]) ->findOrEmpty(); if($shopCoachApply->isEmpty()){ throw new Exception('记录不存在'); } if(ShopEnum::AUDIT_STATUS_WAIT != $shopCoachApply->audit_status){ throw new Exception('当前记录状态已改变'); } $shopCoachApply->audit_status = $auditStatus; $shopCoachApply->audit_remark = $auditRemark; $shopCoachApply->save(); if(ShopEnum::AUDIT_STATUS_PASS == $shopCoachApply->audit_status){ if(1 == $shopCoachApply['type']){ $deposit = Shop::where(['id'=>$params['shop_id'],'audit_status'=>ShopEnum::AUDIT_STATUS_PASS])->value('deposit'); $depositPackageLists = DepositPackage::where(['type'=>2])->order('money desc')->select()->toArray(); //套餐列表 $coachNum = ConfigService::get('server_setting', 'shop_coach_limit'); foreach ($depositPackageLists as $depositPackage){ if($deposit >= $depositPackage['money']){ $coachNum = $depositPackage['coach_num']; break; } } $nowCoachNum = Coach::where(['shop_id'=>$params['shop_id'],'audit_status'=>CoachEnum::AUDIT_STATUS_PASS])->count(); if($nowCoachNum >= $coachNum){ throw new Exception('服务人员已达到上限'); } Coach::where(['id'=>$shopCoachApply['coach_id']])->update([ 'shop_id' => $shopCoachApply['shop_id'] ]); }else{ //退出申请 Coach::where(['id'=>$shopCoachApply['coach_id']])->update([ 'shop_id' => 0 ]); //清理技师管理的商家项目 $goodsIds = Goods::where(['shop_id'=>$shopCoachApply['shop_id'],'audit_status'=>GoodsEnum::AUDIT_STATUS_PASS]) ->column('id'); if($goodsIds){ CoachGoodsIndex::where(['coach_id'=>$shopCoachApply['coach_id'],'goods_id'=>$goodsIds])->delete(); } } } Db::commit(); return true; }catch (Exception $e){ Db::rollback(); return $e->getMessage(); } } /** * @notes 获取师傅服务 * @param $id * @return array * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\DbException * @throws \think\db\exception\ModelNotFoundException * @author cjhao * @date 2024/10/21 00:25 */ public function getServerTime($id) { try { if(empty($id)){ throw new Exception('请选择技师'); } $advanceAppoint = ConfigService::get('server_setting', 'advance_appoint'); $timestampLists[date('m-d',time())] = time()+60*60; //现在的时间戳和明天,后天零点的时间戳 for ($i = 1;$i < $advanceAppoint;$i++){ $timestampLists[date('m-d',strtotime('+ '.$i.' days'))] = strtotime('+ '.$i.' days midnight'); } $intervalsLists = []; foreach ($timestampLists as $date => $timestamp){ $intervalsLists[$date] = get_hour_to_midnight($timestamp); } //订单预约时间 $orderAppointLists = \app\common\logic\CoachLogic::getCoachOrderAppoint($id); //师傅空闲时间 $serverTimeLists = []; //师傅忙碌时间 $serverTimeBusyLists = []; $coachServerTime = CoachServerTime::where(['coach_id'=>$id]) ->field('date,time,status') ->select(); foreach ($coachServerTime as $time) { if(1 == $time['status']){ $serverTimeLists[$time['date']][] = $time['time']; }else{ $serverTimeBusyLists[$time['date']][] = $time['time']; } } // 获取当前日期的时间戳 $currentDate = strtotime(date('Y-m-d')); // 获取明天和后天的时间戳 $tomorrowDate = strtotime('tomorrow'); $afterTomorrowDate = strtotime('+2 days',$currentDate); foreach ($intervalsLists as $date => $intervals){ $timeTips = ''; $timestamp = strtotime(date('Y-'.$date)); if ($timestamp >=$currentDate && $timestamp <$tomorrowDate) { $timeTips = '今天'; } elseif ($timestamp >=$tomorrowDate && $timestamp <$afterTomorrowDate) { $timeTips = '明天'; } elseif ($timestamp >=$afterTomorrowDate && $timestamp < strtotime('+3 days',$currentDate)) { $timeTips = '后天'; } else { $weekdays = array('星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'); $weekdayIndex = date('w',$timestamp); $timeTips = $weekdays[$weekdayIndex]; } foreach ($intervals as $key => $interval){ $orderAppoint = $orderAppointLists[$date] ?? []; $serverTime = $serverTimeLists[$date] ?? []; $serverTimeBusy = $serverTimeBusyLists[$date]?? []; // $intervalsLists[$date][$key]['status'] = 0; //空闲时间 if(in_array($interval['time'],$serverTime) || empty($serverTime)){ $intervals[$key]['status'] = 1; } //忙 if(in_array($interval['time'],$serverTimeBusy)){ $intervals[$key]['status'] = 2; } //已预约 if(in_array($interval['time'],$orderAppoint)){ $intervals[$key]['status'] = 3; } } $timeLists[] = [ 'time_date' => $date, 'time_tips' => $timeTips, 'time_lists' => $intervals ]; } return $timeLists; }catch (\think\Exception $e){ return $e->getMessage(); } } }