hasOne(Coach::class,'id','coach_id')->field('id,sn,name,work_photo,mobile'); } public function userInfo() { return $this->hasOne(User::class,'id','user_id')->field('id,sn,nickname,avatar'); } /** * @notes 指派技师 * @param $value * @param $data * @return int * @author cjhao * @date 2024/11/17 21:58 */ public function getDispatchBtnAttr($value,$data) { $btn = 0; if($data['order_status'] > OrderEnum::ORDER_STATUS_WAIT_PAY && $data['order_status'] < OrderEnum::ORDER_STATUS_DEPART){ $btn = 1; } return $btn; } /** * 师傅端按钮-start */ /** * @notes 待接单按钮 * @param $value * @param $data * @return int * @author cjhao * @date 2024/9/13 16:55 */ public function getTakeOrderBtnAttr($value,$data) { $btn = 0; if(OrderEnum::ORDER_STATUS_WAIT_RECEIVING == $data['order_status']){ $btn = 1; } return $btn; } /** * @notes 出发按钮 * @param $value * @param $data * @return int * @author cjhao * @date 2024/9/13 16:59 */ public function getDepartBtnAttr($value,$data) { $btn = 0; if(OrderEnum::ORDER_STATUS_WAIT_DEPART == $data['order_status']){ $btn = 1; } return $btn; } /** * @notes 到达按钮 * @param $value * @param $data * @return int * @author cjhao * @date 2024/9/13 17:04 */ public function getArriveBtnAttr($value,$data) { $btn = 0; if(OrderEnum::ORDER_STATUS_DEPART == $data['order_status']){ $btn = 1; } return $btn; } /** * @notes 服务开始 * @param $value * @param $data * @return int * @author cjhao * @date 2024/9/13 17:05 */ public function getServerStartBtnAttr($value,$data) { $btn = 0; if(OrderEnum::ORDER_STATUS_ARRIVE == $data['order_status']){ $btn = 1; } return $btn; } /** * @notes 服务完成按钮 * @param $value * @param $data * @return int * @author cjhao * @date 2024/9/13 17:07 */ public function getServerFinishBtnAttr($value,$data) { $btn = 0; if(OrderEnum::ORDER_STATUS_START_SERVER == $data['order_status']){ $btn = 1; } return $btn; } /** * 师傅端按钮-end */ /** * 用户端按钮-start */ /** * @notes 差价按钮 * @param $value * @param $data * @return int * @author cjhao * @date 2024/9/20 01:40 */ public function getGapBtnAttr($value,$data) { $btn = 0; if( $data['order_status'] < OrderEnum::ORDER_STATUS_SERVER_FINISH && $data['order_status'] > OrderEnum::ORDER_STATUS_WAIT_RECEIVING){ $btn = 1; } return $btn; } /** * @notes 加钟按钮 * @param $value * @param $data * @return int * @author cjhao * @date 2024/9/20 01:40 */ public function getAppendBtnAttr($value,$data) { $btn = 0; if( $data['order_status'] < OrderEnum::ORDER_STATUS_SERVER_FINISH && $data['order_status'] > OrderEnum::ORDER_STATUS_WAIT_RECEIVING){ $btn = 1; } return $btn; } /** * @notes 取消按钮 * @param $value * @param $data * @return int * @author ljj * @date 2022/2/11 12:08 下午 */ public function getCancelBtnAttr($value,$data) { $btn = YesNoEnum::NO; //待支付或预约中的订单可以取消 if ($data['order_status'] < OrderEnum::ORDER_STATUS_SERVER_FINISH) { $btn = YesNoEnum::YES; } return $btn; } /** * @notes 取消按钮 * @param $value * @param $data * @return int * @author ljj * @date 2022/2/11 12:08 下午 */ public function getUserCancelBtnAttr($value,$data) { $btn = YesNoEnum::NO; //待支付或预约中的订单可以取消 if ($data['order_status'] < OrderEnum::ORDER_STATUS_WAIT_DEPART) { $btn = YesNoEnum::YES; } return $btn; } /** * @notes 退款按钮 * @param $value * @param $data * @return int * @author ljj * @date 2022/2/11 12:08 下午 */ public function getRefundBtnAttr($value,$data) { $btn = YesNoEnum::NO; //待支付或预约中的订单可以取消 if($data['order_status'] < OrderEnum::ORDER_STATUS_SERVER_FINISH){ return $btn; } if (PayEnum::ISPAID == $data['pay_status'] && $data['total_order_amount'] > $data['total_refund_amount']) { $btn = YesNoEnum::YES; } return $btn; } /** * @notes 删除按钮 * @param $value * @param $data * @return int * @author ljj * @date 2022/2/11 2:57 下午 */ public function getDelBtnAttr($value,$data) { $btn = YesNoEnum::NO; //已关闭的订单可以删除 if ($data['order_status'] == OrderEnum::ORDER_STATUS_CLOSE) { $btn = YesNoEnum::YES; } return $btn; } /** * @notes 支付按钮 * @param $value * @param $data * @return int * @author ljj * @date 2022/2/28 9:48 上午 */ public function getPayBtnAttr($value,$data) { $btn = YesNoEnum::NO; if ($data['order_status'] == OrderEnum::ORDER_STATUS_WAIT_PAY && $data['pay_status'] == PayEnum::UNPAID) { $btn = YesNoEnum::YES; } return $btn; } /** * @notes 评价按钮 * @param $value * @param $data * @return int * @author ljj * @date 2022/2/28 9:52 上午 */ public function getCommentBtnAttr($value,$data) { $btn = YesNoEnum::NO; if ($data['order_status'] == OrderEnum::ORDER_STATUS_SERVER_FINISH) { $is_comment = OrderGoods::where(['order_id'=>$data['id']])->value('is_comment'); if ($is_comment == YesNoEnum::NO) { $btn = YesNoEnum::YES; } } return $btn; } public function getLookCommentBtnAttr($value,$data) { $btn = YesNoEnum::NO; if ($data['order_status'] == OrderEnum::ORDER_STATUS_SERVER_FINISH) { $isComment = OrderGoods::where(['order_id'=>$data['id']])->value('is_comment'); if ($isComment == YesNoEnum::YES) { $btn = YesNoEnum::YES; } } return $btn; } /** * 用户端按钮-end */ /** * @notes 关联用户模型 * @return \think\model\relation\HasOne * @author ljj * @date 2022/2/10 6:36 下午 */ public function user() { return $this->hasOne(User::class,'id','user_id'); } /** * @notes 获取订单距离 * @param $value * @param $data * @return string * @author cjhao * @date 2024/9/13 16:30 */ public function getOrderDistanceDescAttr($value,$data) { return $data['order_distance'].'km'; } /** * @notes 关联订单服务模型 * @return \think\model\relation\HasMany * @author ljj * @date 2022/2/10 6:52 下午 */ public function orderGoods() { return $this->hasMany(OrderGoods::class,'order_id','id'); } /** * @notes 关联订单日志模型 * @return \think\model\relation\HasMany * @author ljj * @date 2022/2/10 6:53 下午 */ public function orderLog() { return $this->hasMany(OrderLog::class,'order_id','id')->append(['operator']); } /** * @notes 预约时间 * @param $value * @param $data * @return false|string * @author ljj * @date 2022/2/11 10:11 上午 */ public function getAppointTimeAttr($value,$data) { return date('H:i',$data['appoint_time']); } /** * @notes 预约时间 * @param $value * @param $data * @return false|string * @author ljj * @date 2022/2/11 10:11 上午 */ public function getAppointTimeDescAttr($value,$data) { return date('Y-m-d H:i',$data['appoint_time']); } /** * @notes 预约时间段 * @param $value * @param $data * @return string * @author cjhao * @date 2024/9/14 12:38 */ public function getAppointDateAttr($value,$data) { return date('m-d',$data['appoint_time']); } /** * @notes 预约日期 * @param $value * @param $data * @return string * @author ljj * @date 2022/2/11 10:09 上午 */ public function getAppointWeekAttr($value,$data) { $weekarray = ['星期日','星期一','星期二','星期三','星期四','星期五','星期六']; return $weekarray[date("w",$data['appoint_time'])]; } /** * @notes 上门时间 * @param $value * @param $data * @return string * @author ljj * @date 2022/2/11 10:54 上午 */ public function getDoorTimeAttr($value,$data) { $appoint_time_start = date('H:i',$data['appoint_time_start']); $appoint_time_end = date('H:i',$data['appoint_time_end']); return $appoint_time_start.'-'.$appoint_time_end; } /** * @notes 支付状态 * @param $value * @param $data * @return string|string[] * @author ljj * @date 2022/2/11 11:08 上午 */ public function getPayStatusDescAttr($value,$data) { return PayEnum::getPayStatusDesc($data['pay_status']); } /** * @notes 支付方式 * @param $value * @param $data * @return string|string[] * @author ljj * @date 2022/2/11 12:01 下午 */ public function getPayWayDescAttr($value,$data) { return PayEnum::getPayTypeDesc($data['pay_way']); } /** * @notes 订单状态 * @param $value * @param $data * @return string|string[] * @author ljj * @date 2022/2/11 11:59 上午 */ public function getOrderStatusDescAttr($value,$data) { return OrderEnum::getOrderStatusDesc($data['order_status']); } /** * @notes 核销状态 * @param $value * @param $data * @return string|string[] * @author ljj * @date 2022/2/11 12:02 下午 */ public function getVerificationStatusDescAttr($value,$data) { return OrderEnum::getVerificationStatusDesc($data['verification_status']); } /** * @notes 支付时间 * @param $value * @param $data * @author ljj * @date 2022/2/28 11:02 上午 */ public function getPayTimeAttr($value,$data) { return $value ? date('Y-m-d H:i:s',$value) : '-'; } /** * @notes * @param $value * @param $data * @return string * @author cjhao * @date 2024/11/20 16:05 */ public function getTrueServerFinishTimeAttr($value,$data){ return $value ? date('Y-m-d H:i:s',$value) : '-'; } /** * @notes 完成时间 * @param $value * @param $data * @author ljj * @date 2022/2/28 11:02 上午 */ public function getFinishTimeAttr($value,$data) { return $value ? date('Y-m-d H:i:s',$value) : '-'; } /** * @notes 未支付订单自动取消时间 * @param $value * @param $data * @return float|int|string * @author ljj * @date 2022/3/15 4:28 下午 */ public function getOrderCancelTimeAttr($value, $data) { $end_time = 0; $is_cancel = ConfigService::get('transaction', 'cancel_unpaid_orders',1); if ($data['order_status'] == 0 && $data['pay_status'] == 0 && $is_cancel == 1) { $order_cancel_time = ConfigService::get('transaction', 'cancel_unpaid_orders_times',30); $end_time = $data['create_time'] + $order_cancel_time * 60; } return $end_time; } /** * @notes 省 * @param $value * @param $data * @return mixed * @author ljj * @date 2022/4/6 6:57 下午 */ public function getProvinceAttr($value,$data) { return Region::where(['id'=>$data['province_id']])->value('name'); } /** * @notes 市 * @param $value * @param $data * @return mixed * @author ljj * @date 2022/4/6 7:02 下午 */ public function getCityAttr($value,$data) { return Region::where(['id'=>$data['city_id']])->value('name'); } /** * @notes 区 * @param $value * @param $data * @return mixed * @author ljj * @date 2022/4/6 7:02 下午 */ public function getDistrictAttr($value,$data) { return Region::where(['id'=>$data['district_id']])->value('name'); } /** * @notes 派单状态 * @param $value * @param $data * @return string|string[] * @author ljj * @date 2022/8/29 4:57 下午 */ public function getDispatchDescAttr($value,$data) { return OrderEnum::getDispatchDesc($data['is_dispatch']); } /** * @notes 订单来源 * @param $value * @param $data * @return array|mixed|string|string[] * @author cjhao * @date 2024/9/21 23:49 */ public function getOrderTerminalDescAttr($value,$data) { return UserTerminalEnum::getTermInalDesc($data['order_terminal']); } public function orderGap() { return $this->hasMany(OrderGap::class,'order_id','id')->where(['pay_status'=>PayEnum::ISPAID])->withoutField('create_time,update_time,delete_time'); } public function orderAppend() { return $this->hasMany(OrderAppend::class,'order_id','id')->where(['pay_status'=>PayEnum::ISPAID])->field('sn,order_id,pay_status,goods_name,goods_id,duration,refund_amount,goods_num,pay_time,goods_price,order_amount'); } }