verify_sign(); // 验证参数 $request->scene('apply')->validate(); // 检查登录 $uid = 2;//$this->checkLogin(); // 接收参数 $orderId = request('order_id',0); // 接收文件 $file = request()->file('file'); // 图片数据 $result = $FilesManager->fileStore($file,'orders/receipt/'.$uid); // 上传失败 if( isset($result['error']) ) return json_send(['code'=>'error','msg'=>$result['error'],'data'=>'']); // 查询订单信息 $orderData = $Orders->query()->find($orderId,['id','pay_total','status']); // 上传失败 if( !$orderData ) return json_send(['code'=>'error','msg'=>'订单数据不存在','data'=>'']); // 上传失败 if( $orderData['status'] == 9 ) return json_send(['code'=>'error','msg'=>'订单回执审核中','data'=>'']); // 上传失败 if( $orderData['status'] != 1 ) return json_send(['code'=>'success','msg'=>'订单已取消','data'=>'']); // 积分结果 $score = floor( $orderData['pay_total'] * 1 ) > 0 ? floor( $orderData['pay_total'] * 1 ) : 0; // 组合数据,写入订单表,子表 DB::beginTransaction(); // 组合数据 try{ // 存入记录 $result = $Model->add(['order_id'=>$orderId,'custom_uid'=>$uid,'image'=>$result['file_path'],'score'=>$score]); // 提示新增失败 if( !$result ) { // 回退数据 DB::rollBack(); // 提示信息 return json_send(['code'=>'error','msg'=>'记录失败,请重试','data'=>['error'=>'记录失败,请重试']]); } // 查询数据 $result = $Orders->setOrderStatus($orderId,9,$OrdersProduct); // 提示新增失败 if( isset($result['error']) ){ // 回退数据 DB::rollBack(); // 提示信息 return json_send(['code'=>'error','msg'=>'订单状态变更失败,请重试','data'=>['error'=>$result['error']]]); } // 提交数据 DB::commit(); // 获取分享链接 $shareImage = $this->getShareImage($uid,$orderId,$score); $shareImage = $shareImage ? path_compat($shareImage) : ''; // 告知结果 return json_send(['code'=>'success','msg'=>'申请成功','data'=>['share_info'=>['title'=>'我已经完成一笔订单,你也快来吧','path'=>'/pages/index/index','imageUrl'=>$shareImage]]]); // 返回结果 } catch (\Throwable $th) { // 回退数据 DB::rollBack(); // 下单失败提示 return json_send(['code'=>'error','msg'=>'申请失败,请重试','data'=>['error'=>$th->getMessage().$th->getLine()]]); } } /** * 分享图片 * */ private function getShareImage($uid,$orderId,$score=0){ // 尝试执行 try { // 加载图片 $image = Image::make(public_path('uploads/images/default/').'order_receipt_share.jpg'); // 设置文字样式(字体、大小、颜色等) $fontPath = public_path().'/fonts/msyh14.ttf';// 指定字体文件路径 // 文本 $text = $score ? '我完成了一笔订单,即将获得'.$score.'积分' : '我完成了一笔订单'; // 给图片写入文字 $image->text($text, 240,80,function (Font $font) use ($fontPath) { $font->file($fontPath); // 字体文件地址 $font->size(24); // 字体大小 $font->color('#FFFFFF'); $font->align('center'); }); // 给图片写入文字 $image->text('你也来试试吧', 240,140,function (Font $font) use ($fontPath) { $font->file($fontPath); // 字体文件地址 $font->size(24); // 字体大小 $font->color('#FFFFFF'); $font->align('center'); }); // 路径 $path = public_path('uploads/order_receipt_share/'); // 判断路径是不是存在 if( !is_dir($path) ) mkdir($path,0755,true); // 路径 $filename = $path.$uid.'_'.$orderId.'.jpg'; // 保存图片 $image->save($filename); // 返回路径 return 'order_receipt_share/'.$uid.'_'.$orderId.'.jpg'; } catch (\Throwable $th) { dd($th); // 返回路径 return ''; } } }