with(['order_goods' => function ($query) { $query->field('id,order_id,goods_snap,goods_name,goods_num') ->append(['goods_image', 'spec_value_str']) ->hidden(['goods_snap']); }]) ->append(['verification_status_desc']) ->field('id,address,verification_status') ->find() ->toArray(); //校验是否有售后 foreach ($result['order_goods'] as &$goods) { $goods['after_sale'] = AfterSale::where('order_goods_id', $goods['id']) ->field([ 'id', 'order_goods_id', 'status' ]) ->order('id desc') ->findOrEmpty(); } $result['contact'] = $result['address']->contact; unset($result['address']); return $result; } /** * @notes 确认提货 * @param $params * @return bool * @author ljj * @date 2021/8/27 6:05 下午 */ public static function verificationConfirm($params) { try { $order = Order::find($params['id']); $selffetch_verifier = SelffetchVerifier::where(['user_id'=>$params['user_id'],'selffetch_shop_id'=>$order['selffetch_shop_id'],'status'=>1])->find(); //添加核销记录 $snapshot = [ 'sn' => $selffetch_verifier['sn'], 'name' => $selffetch_verifier['name'] ]; $verification = new Verification; $verification->order_id = $order['id']; $verification->selffetch_shop_id = $order['selffetch_shop_id']; $verification->handle_id = $params['user_id']; $verification->verification_scene = VerificationEnum::TYPE_USER; $verification->snapshot = json_encode($snapshot); $verification->save(); //更新订单状态 $order->order_status = OrderEnum::STATUS_FINISH; $order->verification_status = OrderEnum::WRITTEN_OFF; $order->confirm_take_time = time(); $order->after_sale_deadline = self::getAfterSaleDeadline(); $order->save(); //订单日志 (new OrderLog())->record([ 'type' => OrderLogEnum::TYPE_USER, 'channel' => OrderLogEnum::USER_VERIFICATION, 'order_id' => $order['id'], 'operator_id' => $params['user_id'], ]); return true; } catch (\Exception $e) { //错误 self::$error = $e->getMessage(); return false; } } /** * @notes 获取当前售后 * @return float|int * @author ljj * @date 2021/9/1 3:09 下午 */ public static function getAfterSaleDeadline() { //是否关闭维权 $afterSale = ConfigService::get('transaction', 'after_sales'); //可维权时间 $afterSaleDays = ConfigService::get('transaction', 'after_sales_days'); if ($afterSale == YesNoEnum::NO) { $afterSaleDeadline = time(); } else { $afterSaleDeadline = ($afterSaleDays * 24 * 60 * 60) + time(); } return $afterSaleDeadline; } }