提交 675d17c3 authored 作者: 李大见's avatar 李大见

可来电

上级
root = true
[*]
charset = utf-8
end_of_line = lf
insert_final_newline = true
indent_style = space
indent_size = 4
trim_trailing_whitespace = true
[*.md]
trim_trailing_whitespace = false
[*.{yml,yaml}]
indent_size = 2
APP_NAME=Laravel
APP_ENV=local
APP_KEY=
APP_DEBUG=true
APP_LOG_LEVEL=debug
APP_URL=http://localhost
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret
BROADCAST_DRIVER=log
CACHE_DRIVER=file
SESSION_DRIVER=file
SESSION_LIFETIME=120
QUEUE_DRIVER=sync
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
PUSHER_APP_CLUSTER=mt1
* text=auto
*.css linguist-vendored
*.scss linguist-vendored
*.js linguist-vendored
CHANGELOG.md export-ignore
/node_modules
/public/hot
/public/storage
/public/error-www.log
/storage
/vendor
/.idea
/.vagrant
Homestead.json
Homestead.yaml
npm-debug.log
yarn-error.log
.env
.composer.lock
/public/.htaccess
/public/nginx.htaccess
.project
.buildpath
/.settings/*
public/nginx.htaccess
app/Services/GoodsBrandsService.php
.htaccess
/.metadata
nginx.htaccess
composer.lock
/public/excel
/public/filedata
app/Http/Controllers/Common/.idea/Common.iml
app/Http/Controllers/Common/.idea/modules.xml
app/Http/Controllers/Common/.idea/php.xml
app/Http/Controllers/Common/.idea/vcs.xml
app/Http/Controllers/Common/.idea/workspace.xml
app/Services/备份/OrderService.php
php:
preset: laravel
disabled:
- no_unused_imports
finder:
not-name:
- index.php
- server.php
js:
finder:
not-name:
- webpack.mix.js
css: true
<p align="center"><img src="https://laravel.com/assets/img/components/logo-laravel.svg"></p>
<p align="center">
<a href="https://travis-ci.org/laravel/framework"><img src="https://travis-ci.org/laravel/framework.svg" alt="Build Status"></a>
<a href="https://packagist.org/packages/laravel/framework"><img src="https://poser.pugx.org/laravel/framework/d/total.svg" alt="Total Downloads"></a>
<a href="https://packagist.org/packages/laravel/framework"><img src="https://poser.pugx.org/laravel/framework/v/stable.svg" alt="Latest Stable Version"></a>
<a href="https://packagist.org/packages/laravel/framework"><img src="https://poser.pugx.org/laravel/framework/license.svg" alt="License"></a>
</p>
## About Laravel
Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experience to be truly fulfilling. Laravel attempts to take the pain out of development by easing common tasks used in the majority of web projects, such as:
- [Simple, fast routing engine](https://laravel.com/docs/routing).
- [Powerful dependency injection container](https://laravel.com/docs/container).
- Multiple back-ends for [session](https://laravel.com/docs/session) and [cache](https://laravel.com/docs/cache) storage.
- Expressive, intuitive [database ORM](https://laravel.com/docs/eloquent).
- Database agnostic [schema migrations](https://laravel.com/docs/migrations).
- [Robust background job processing](https://laravel.com/docs/queues).
- [Real-time event broadcasting](https://laravel.com/docs/broadcasting).
Laravel is accessible, yet powerful, providing tools needed for large, robust applications.
## Learning Laravel
Laravel has the most extensive and thorough [documentation](https://laravel.com/docs) and video tutorial library of any modern web application framework, making it a breeze to get started learning the framework.
If you're not in the mood to read, [Laracasts](https://laracasts.com) contains over 1100 video tutorials on a range of topics including Laravel, modern PHP, unit testing, JavaScript, and more. Boost the skill level of yourself and your entire team by digging into our comprehensive video library.
## Laravel Sponsors
We would like to extend our thanks to the following sponsors for helping fund on-going Laravel development. If you are interested in becoming a sponsor, please visit the Laravel [Patreon page](https://patreon.com/taylorotwell):
- **[Vehikl](https://vehikl.com/)**
- **[Tighten Co.](https://tighten.co)**
- **[British Software Development](https://www.britishsoftware.co)**
- [Fragrantica](https://www.fragrantica.com)
- [SOFTonSOFA](https://softonsofa.com/)
- [User10](https://user10.com)
- [Soumettre.fr](https://soumettre.fr/)
- [CodeBrisk](https://codebrisk.com)
- [1Forge](https://1forge.com)
- [TECPRESSO](https://tecpresso.co.jp/)
- [Pulse Storm](http://www.pulsestorm.net/)
- [Runtime Converter](http://runtimeconverter.com/)
- [WebL'Agence](https://weblagence.com/)
## Contributing
Thank you for considering contributing to the Laravel framework! The contribution guide can be found in the [Laravel documentation](https://laravel.com/docs/contributions).
## Security Vulnerabilities
If you discover a security vulnerability within Laravel, please send an e-mail to Taylor Otwell via [taylor@laravel.com](mailto:taylor@laravel.com). All security vulnerabilities will be promptly addressed.
## License
The Laravel framework is open-sourced software licensed under the [MIT license](https://opensource.org/licenses/MIT).
{
"name": "智配贴装APIs",
"version": "1.0.0",
"description": "贴装部分接口",
"title": "贴装部分接口",
"url" : "http://o2o.bluearp.com"
}
\ No newline at end of file
<?php
namespace App\Console\Commands;
use App\Http\Controllers\Api\SynJdPopDataController;
use Illuminate\Console\Command;
class DecJdOrder extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'decJdOrder';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Command decJdOrder';
/**
* Create a new command instance.
*
* @return void
*/
public function __construct()
{
parent::__construct();
}
/**
* Execute the console command.
*
* @return mixed
*/
public function handle()
{
//
$getOrder = new SynJdPopDataController();
$ret = $getOrder->decOrder();
print_r($ret);
}
}
<?php
namespace App\Console\Commands;
use App\Http\Controllers\Api\SynJdPopDataController;
use Illuminate\Console\Command;
class GetJdOrder extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'getOrder';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Command getJdOrder';
/**
* Create a new command instance.
*
* @return void
*/
public function __construct()
{
parent::__construct();
}
/**
* Execute the console command.
*
* @return mixed
*/
public function handle()
{
//
$getOrder = new SynJdPopDataController();
$ret = $getOrder->addOrderData();
print_r($ret);
}
}
<?php
namespace App\Console\Commands;
use App\Http\Controllers\Api\SynJdSelfDataController;
use Illuminate\Console\Command;
class GetJdSelfOrder extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'getJdSelfOrder';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Command getJdSelfOrder';
/**
* Create a new command instance.
*
* @return void
*/
public function __construct()
{
parent::__construct();
}
/**
* Execute the console command.
*
* @return mixed
*/
public function handle()
{
//
$getOrder = new SynJdSelfDataController();
$ret = $getOrder->addOrderData();
print_r($ret);
}
}
<?php
namespace App\Console\Commands;
use App\Http\Controllers\Api\SynJdSelfDataController;
use Illuminate\Console\Command;
class GetJdSelfRefund extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'getJdSelfRefund';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Command getJdSelfRefund';
/**
* Create a new command instance.
*
* @return void
*/
public function __construct()
{
parent::__construct();
}
/**
* Execute the console command.
*
* @return mixed
*/
public function handle()
{
//
$getselfrefund = new SynJdSelfDataController();
$ret = $getselfrefund->getSelfRefund();
print_r($ret);
}
}
<?php
namespace App\Console\Commands;
use App\Http\Controllers\Api\SynJdSelfDataController;
use App\Http\Controllers\Api\SynJdSelfDataNewController;
use Illuminate\Console\Command;
class GetJdSelfShhOrder extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'GetJdSelfShhOrder';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Command GetJdSelfShhOrder';
/**
* Create a new command instance.
*
* @return void
*/
public function __construct()
{
parent::__construct();
}
/**
* Execute the console command.
*
* @return mixed
*/
public function handle()
{
//
$getOrder = new SynJdSelfDataNewController();
$ret = $getOrder->addOrderData();
print_r($ret);
}
}
<?php
namespace App\Console;
use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
class Kernel extends ConsoleKernel
{
/**
* The Artisan commands provided by your application.
*
* @var array
*/
protected $commands = [
//
Commands\GetJdOrder::class,
Commands\GetJdSelfOrder::class,
Commands\GetJdSelfRefund::class,
Commands\GetJdSelfShhOrder::class
];
/**
* Define the application's command schedule.
*
* @param \Illuminate\Console\Scheduling\Schedule $schedule
* @return void
*/
protected function schedule(Schedule $schedule)
{
// $schedule->command('inspire')
// ->hourly();
$schedule->command('getOrder')->everyFiveMinutes();//每五分钟执行一次
$schedule->command('decJdOrder')->everyFiveMinutes();//每五分钟执行一次
$schedule->command('getJdSelfOrder')->everyFiveMinutes();//每五分钟执行一次
$schedule->command('getJdSelfRefund')->everyFiveMinutes();//每五分钟执行一次
$schedule->command('GetJdSelfShhOrder')->everyFiveMinutes();//每五分钟执行一次
}
/**
* Register the commands for the application.
*
* @return void
*/
protected function commands()
{
$this->load(__DIR__.'/Commands');
require base_path('routes/console.php');
}
}
差异被折叠。
<?php
namespace App\Exceptions;
use Exception;
use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;
class Handler extends ExceptionHandler
{
/**
* A list of the exception types that are not reported.
*
* @var array
*/
protected $dontReport = [
//
];
/**
* A list of the inputs that are never flashed for validation exceptions.
*
* @var array
*/
protected $dontFlash = [
'password',
'password_confirmation',
];
/**
* Report or log an exception.
*
* This is a great spot to send exceptions to Sentry, Bugsnag, etc.
*
* @param \Exception $exception
* @return void
*/
public function report(Exception $exception)
{
parent::report($exception);
}
/**
* Render an exception into an HTTP response.
*
* @param \Illuminate\Http\Request $request
* @param \Exception $exception
* @return \Illuminate\Http\Response
*/
public function render($request, Exception $exception)
{
return parent::render($request, $exception);
}
}
<?php
namespace App\Exports;
class AfterCustExport extends Export
{
protected $sheetName; //sheet title
protected $data;
protected $headings;
//用户自选导出表头的文件(传值$headings为空的)不要用下面的参数暂时有问题,我再改一个版本出来
protected $columnWidth = ['A' => 10, 'B' => 20, 'C' => 30, 'D' => 10, 'E' => 20, 'F' => 20, 'G' => 20, 'H' => 20];//设置列宽 key:列 value:宽
protected $rowHeight = [1 => 25]; //设置行高 key:行 value:高
protected $mergeCells = []; //合并单元格 value:A1:K8
protected $font = ['A1:P1' => '微软雅黑']; //设置字体 key:A1:K8 value:Arial
protected $fontSize = []; //设置字体大小 key:A1:K8 value:11
protected $bold = ['A1:P1' => true]; //设置粗体 key:A1:K8 value:true
protected $background = []; //设置背景颜色 key:A1:K8 value:F0F0F0F
protected $vertical = []; //设置定位 key:A1:K8 value:center
protected $borders = []; //设置边框颜色 key:A1:K8 value:000000
// 设置需要从库中检索出的字段
protected static $columns = [
'afc_id' =>'【编号】',
'afc_sys' =>'【系统单号】',
'afc_order' =>'【平台单号】',
'afc_serial' =>'【派工单号】',
'pt_name' =>'【平台名称】',
'afc_ordertime' =>'【订单创建时间】',
'afc_goodname' =>'【商品名称】',
'afc_price' =>'【商品单价】',
'afc_num' =>'【商品数量】',
'afc_creacter' =>'【创建人】',
'afc_creactime' =>'【创建时间】',
'invoice' =>'【发票类型】',
'kd_no'=>'【快递单号】',
'shr_name' =>'【客户姓名】',
'shr_phone' =>'【客户电话】',
'shr_adree' =>'【客户地址】',
];
public function __construct($data, $headings = [], $sheetName = '电话沟通数据表格')
{
parent::__construct($data, $headings, $sheetName);
}
// headings方法,提供文件头部信息内容
public function defineHeader($columns)
{
$headers = [];
foreach ($columns as $key => $column) {
if ($this->columns[$column]) {
$headers[$column] = $this->columns[$column];
}
}
$this->headings = $headers;
}
//业务代码
public function createData()
{
$tmp = $this->data;
$data = [];
foreach ($tmp as $key=>$value) {
$row = [];
foreach ($this->headings as $k=>$val) {
$row[$k] = $value[$k];
}
$data[] = $row;
}
$this->data = collect($data)->toArray();
}
}
<?php
namespace App\Exports;
use Maatwebsite\Excel\Concerns\FromCollection;
use Illuminate\Support\Collection;
use Maatwebsite\Excel\Concerns\WithEvents;
use Maatwebsite\Excel\Concerns\WithHeadings;
use Maatwebsite\Excel\Events\AfterSheet;
use PhpOffice\PhpSpreadsheet\Style\Border;
class Export implements FromCollection, WithHeadings, WithEvents
{
protected $sheetName; //sheet title
protected $data;
protected $headings;
//样式设置
protected $columnWidth = [];//设置列宽 key:列 value:宽
protected $rowHeight = []; //设置行高 key:行 value:高
protected $mergeCells = []; //合并单元格 value:A1:K8
protected $font = []; //设置字体 key:A1:K8 value:Arial
protected $fontSize = []; //设置字体大小 key:A1:K8 value:11
protected $bold = []; //设置粗体 key:A1:K8 value:true
protected $background = []; //设置背景颜色 key:A1:K8 value:#F0F0F0F
protected $vertical = []; //设置定位 key:A1:K8 value:center
protected $colors = []; //文字颜色 key:A1:K8 value:#000000
protected $borders = []; //设置边框颜色 key:A1:K8 value:#000000
//设置页面属性时如果无效 更改excel格式尝试即可
public function __construct($data, $headings = [], $sheetName = 'Sheet1')
{
$this->data = $data;
if (!empty($headings)) {
$this->defineHeader($headings);
} else {
$this->headings = static::$columns;
}
$this->sheetName = $sheetName;
$this->createData();
}
public function headings(): array
{
return $this->headings;
}
//数组转集合
public function collection()
{
return new Collection($this->data);
}
//业务代码
public function createData()
{
$this->data = collect($this->data)->toArray();
}
public function registerEvents(): array
{
return [
AfterSheet::class => function (AfterSheet $event) {
//设置区域单元格垂直居中
$event->sheet->getDelegate()->getStyle('A1:Z1265')->getAlignment()->setVertical('center');
//设置区域单元格水平居中
$event->sheet->getDelegate()->getStyle('A1:Z1265')->getAlignment()->setHorizontal('center');
//设置列宽
foreach ($this->columnWidth as $column => $width) {
$event->sheet->getDelegate()
->getColumnDimension($column)
->setWidth($width);
}
//设置行高,$i为数据行数
foreach ($this->rowHeight as $row => $height) {
$event->sheet->getDelegate()
->getRowDimension($row)
->setRowHeight($height);
}
//设置区域单元格垂直居中
foreach ($this->vertical as $region => $position) {
$event->sheet->getDelegate()
->getStyle($region)
->getAlignment()
->setVertical($position);
}
//设置区域单元格字体
foreach ($this->font as $region => $value) {
$event->sheet->getDelegate()
->getStyle($region)
->getFont()->setName($value);
}
//设置区域单元格字体大小
foreach ($this->fontSize as $region => $value) {
$event->sheet->getDelegate()
->getStyle($region)
->getFont()
->setSize($value);
}
//设置区域单元格字体粗体
foreach ($this->bold as $region => $bool) {
$event->sheet->getDelegate()
->getStyle($region)
->getFont()
->setBold($bool);
}
//设置区域单元格背景颜色
foreach ($this->background as $region => $item) {
$event->sheet->getDelegate()->getStyle($region)->applyFromArray([
'fill' => [
'fillType' => 'linear', //线性填充,类似渐变
'startColor' => [
'rgb' => $item //初始颜色
],
//结束颜色,如果需要单一背景色,请和初始颜色保持一致
'endColor' => [
'argb' => $item
]
]
]);
}
//设置边框颜色
foreach ($this->borders as $region => $item) {
$event->sheet->getDelegate()->getStyle($region)->applyFromArray([
'borders' => [
'allBorders' => [
'borderStyle' => Border::BORDER_THIN,
'color' => ['argb' => $item],
],
],
]);
}
//设置字体颜色
foreach ($this->colors as $region => $color) {
$event->sheet->getDelegate()->getStyle($region)->applyFromArray([
'font' => [
'color' => [
'rgb' => $color
]
]
]);
}
//合并单元格
$event->sheet->getDelegate()->setMergeCells($this->mergeCells);
if (!empty($this->sheetName)) {
$event->sheet->getDelegate()->setTitle($this->sheetName);
}
}
];
}
/**
* @param array $columnWidth
* @return void [
* [
* 'B' => 40,
* 'C' => 60
* ]
*/
public function setColumnWidth(array $columnWidth)
{
$this->columnWidth = array_change_key_case($columnWidth, CASE_UPPER);
}
/**
* @param array $rowHeight
* @return void [
* [
* 1 => 40,
* 2 => 60
* ]
*/
public function setRowHeight(array $rowHeight)
{
$this->rowHeight = $rowHeight;
}
/**
* @param array $font
* @return void [
* [
* A1:K7 => '宋体'
* ]
*/
public function setFont(array $font)
{
$this->font = array_change_key_case($font, CASE_UPPER);
}
/**
* @param array $bold
* @return void @2020/3/22 10:33
* @2020/3/22 10:33
* [
* A1:K7 => true
* ]
*/
public function setBold(array $bold)
{
$this->bold = array_change_key_case($bold, CASE_UPPER);
}
/**
* @param array $background
* @return void @2020/3/22 10:33
* @2020/3/22 10:33
* [
* A1:K7 => F0FF0F
* ]
*/
public function setBackground(array $background)
{
$this->background = array_change_key_case($background, CASE_UPPER);
}
/**
* @param array $mergeCells
* @return void [
* [
* A1:K7
* ]
*/
public function setMergeCells(array $mergeCells)
{
$this->mergeCells = array_change_key_case($mergeCells, CASE_UPPER);
}
/**
* @param array $fontSize
* @return void [
* [
* A1:K7 => 14
* ]
*/
public function setFontSize(array $fontSize)
{
$this->fontSize = array_change_key_case($fontSize, CASE_UPPER);
}
/**
* @param array $borders
* @return void [
* [
* A1:K7 => #000000
* ]
*/
public function setBorders(array $borders)
{
$this->borders = array_change_key_case($borders, CASE_UPPER);
}
/**
* @param array $colors
* @return void [
* [
* A1:K7 => #000000
* ]
*/
public function setColors(array $colors)
{
$this->colors = array_change_key_case($colors, CASE_UPPER);
}
public static function getColumns()
{
return static::$columns;
}
}
<?php
namespace App\Exports;
class ServiceProviderExport extends Export
{
protected $sheetName; //sheet title
protected $data;
protected $headings;
protected $columnWidth = [];//设置列宽 key:列 value:宽
protected $rowHeight = []; //设置行高 key:行 value:高
protected $mergeCells = []; //合并单元格 value:A1:K8
protected $font = []; //设置字体 key:A1:K8 value:Arial
protected $fontSize = []; //设置字体大小 key:A1:K8 value:11
protected $bold = []; //设置粗体 key:A1:K8 value:true
protected $background = []; //设置背景颜色 key:A1:K8 value:#F0F0F0F
protected $vertical = []; //设置定位 key:A1:K8 value:center
protected $borders = []; //设置边框颜色 key:A1:K8 value:#000000
// 设置需要从库中检索出的字段
protected static $columns = [
'id'=>'【序号(不可更改)】',
'admin_acc'=>'【登录名】',
'admin_name'=>'【用户名/负责人】',
'service_area'=>'【服务中心地区】',
'service_per'=>'【服务中心负责人】',
'service_name'=>'【服务中心名称】',
'accountname'=>'【账户名】',
'opeaccline'=>'【开户行】',
'account'=>'【账户】',
'type'=>'【结算类型】',
'invoice'=>'【发票(0不能开1增票2普票)】',
'admin_province'=>'【服务区域(省)】',
'admin_city'=>'【服务区域(市)】'
];
public function __construct($data, $headings = [], $sheetName = '服务商列表')
{
parent::__construct($data, $headings, $sheetName);
}
// headings方法,提供文件头部信息内容
public function defineHeader($columns)
{
$headers = [];
foreach ($columns as $key => $column) {
if ($this->columns[$column]) {
$headers[$column] = $this->columns[$column];
}
}
$this->headings = $headers;
}
//业务代码
public function createData()
{
$tmp = $this->data;
$data = [];
foreach ($tmp as $key=>$value) {
$row = [];
foreach ($this->headings as $k=>$val) {
$row[$k] = $value[$k];
}
$data[] = $row;
}
$this->data = collect($data)->toArray();
}
}
<?php
namespace App\Factory;
use App\Inc\ServiceInc;
use App\Repository\Order\ApplyOrder;
use App\Repository\Order\HelpOrder;
use App\Repository\Order\PaintOrder;
use App\Repository\Order\PowderOrder;
use App\Repository\Order\WearingOrder;
class OrderFactory
{
public static function make($orderType)
{
if ($orderType == ServiceInc::SERVICE_POWDER) {
return new PowderOrder();
}
if ($orderType == ServiceInc::SERVICE_WEARING) {
return new WearingOrder();
}
if ($orderType == ServiceInc::SERVICE_HELP) {
return new HelpOrder();
}
if ($orderType == ServiceInc::SERVICE_APPLY) {
return new ApplyOrder();
}
if ($orderType == ServiceInc::SERVICE_PAINT) {
return new PaintOrder();
}
return false;
}
}
<?php
/**
|--------------------------------------------------------------------------
* 基础函数使用库
|--------------------------------------------------------------------------
| 系统可能会使用的一些基础函数扩展
* @author lixiaolin
* @Date: 2021/7/27
* @Time: 18:50
* @Email: lixiaolin@bluearp.com
* @version 1.0
* @copyright BlueCity
*/
//去空格、,tab 、换行、输入符
function trimall($str){
$is_str=array(" "," ","\t","\n","\r");
$is_str_er=array("","","","","");
return str_replace($is_str,$is_str_er,$str);
}
This source diff could not be displayed because it is too large. You can view the blob instead.
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Services\DownloadService;
use Illuminate\Http\Request;
class DownloadsController extends Controller
{
/**
* 下载文件
*
* @param int $fileID
*
* @param Request $request
* @return void ;
*/
public function downloadFile(int $fileID, Request $request) {
$file = (new DownloadService())->find($fileID);
$sessionToken = $request->get('session_token');
if ($file) {
$filePath = $file->file_path;
//检查文件是否存在
if (! file_exists ( $filePath )) {
header('HTTP/1.1 404 NOT FOUND');
} else {
$downloadInfo = [];
$downloadInfo['uid'] = $sessionToken->uid;
$downloadInfo['download_time'] = '';
$downloadInfo['file_id'] = $file->id;
(new DownloadService())->downloaded($file, $downloadInfo);
// return response()->download(storage_path($filePath)); //laravel标准做法
//以只读和二进制模式打开文件
$file = fopen ( $filePath, "rb" );
//告诉浏览器这是一个文件流格式的文件
Header ( "Content-type: application/octet-stream" );
//请求范围的度量单位
Header ( "Accept-Ranges: bytes" );
//Content-Length是指定包含于请求或响应中数据的字节长度
Header ( "Accept-Length: " . filesize ( $filePath ) );
//用来告诉浏览器,文件是可以当做附件被下载,下载后的文件名称为$file_name该变量的值。
Header ( "Content-Disposition: attachment; filename=" . $file->file_name);
//读取文件内容并直接输出到浏览器
echo fread ( $file, filesize ( $filePath ) );
fclose ( $file );
}
} else {
header('HTTP/1.1 404 NOT FOUND');
return ;
}
}
}
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use BlueCity\Core\Inc\ErrorInc;
use Illuminate\Http\Request;
use App\Models\GateWay;
use App\Http\Requests\GateWayRequest;
use phpDocumentor\Reflection\Types\Integer;
use App\Services\GateService;
use BlueCity\Core\Controllers\CoreController;
use function GuzzleHttp\Promise\all;
class GateWayController extends CoreController
{
protected $dataFields = ['app_id', 'secret', 'company_id', 'app_auth'];
/**
* @api {get} /api/admin/gateway 鉴权管理
* @apiGroup 鉴权管理
* @apiName 鉴权管理列表
* @apiVersion 1.0.0
*
* @apiDescription 接口描述
*
* @apiParam {String} keyword 关键字
*
* @apiSuccess {Number} error 状态码,0:请求成功
* @apiSuccess {String} msg 提示信息
* @apiSuccess {Object} data 返回数据
*
* @apiSuccessExample {json} Success-Response:
* {"code":0,"message":"","data":[]}
*
* @apiErrorExample {json} Error-Response:
* {"code":5001,"message":"接口异常"}
*
*/
public function index(Request $request)
{
$gateWayService = new GateService();
$keyWord = $request->input('keyword');
$condition = [];
if ($keyWord != '')
{
$condition[] = ['title', $keyWord];
}
$query = GateWay::orderBy('id', 'desc');
if (!empty($query))
{
$query->where($condition);
}
$list = $query
->paginate(10);
return Response()->json([]);
}
/**
* @api {post} /api/admin/gateway 添加
* @apiGroup 鉴权管理
* @apiName 添加
* @apiVersion 1.0.0
*
* @apiDescription 接口描述
*
* @apiParam {String} title 名称
*
* @apiSuccess {Number} error 状态码,0:请求成功
* @apiSuccess {String} msg 提示信息
* @apiSuccess {Object} data 返回数据
*
* @apiSuccessExample {json} Success-Response:
* {"code":0,"message":"","data":[]}
*
* @apiErrorExample {json} Error-Response:
* {"code":5001,"message":"接口异常"}
*/
public function store(GateWayRequest $request)
{
$data = $request->all();
$gateWayService = new GateService();
$res = $gateWayService->create($data);
if ($res) {
return $this->success('成功');
} else {
return $this->error('失败');
}
}
public function show(int $gateWayID)
{
$gateWayService = new GateService();
$gateWay = $gateWayService->find($gateWayID);
if ($gateWay) {
return $this->success('返回成功',['entity'=>$gateWay]);
} else {
return $this->success('未查到数据', ErrorInc::DATA_EMPTY);
}
}
/**
* Show the form for editing the specified resource.
*
* @param int $gateWayID
* @return mixed
*/
public function edit( int $gateWayID)
{
$gateWayService = new GateService();
$gateWay = $gateWayService->find($gateWayID);
if ($gateWay) {
return $this->success('返回成功',['entity'=>$gateWay]);
} else {
return $this->success('未查到数据', ErrorInc::DATA_EMPTY);
}
}
/**
* Update the specified resource in storage.
*
* @param GateWayRequest $request
* @param GateWay $gateWay
*
* @return mixed
*/
public function update(GateWayRequest $request, GateWay $gateWay)
{
$data['title'] = $request->input('title');
$data['url'] = $request->input('url') ?? '';
$gateWayService = new GateService();
$res = $gateWayService->update($data);
if ($res)
{
return $this->success('成功');
} else {
return $this->error('失败');
}
}
/**
* Remove the specified resource from storage.
*
* @param integer $id 要禁用的id
*
* @return mixed
*/
public function destroy(Integer $id)
{
$gateWayService = new GateService();
$gateWay = $gateWayService->find($id);
if ($gateWay->id >0 )
{
$gateWayService->setDisabled($id);
return $this->success('删除成功');
} else {
return $this->error('该内容不存在', ErrorInc::DATA_EMPTY);
}
}
}
<?php
/**
* 文件名称(同步京东据)
* 文件简单描述(用于同步京东平台数据数据)
* @author DouBin
* @Date: 2022/04/21
* @Time: 18:19
* @Email: db@sudianwang.com
* @version 1.0
* @copyright BlueCity
*/
namespace App\Http\Controllers\Api;
use App\Http\Controllers\BaseController;
use App\Services\CommonService;
use App\Services\OrderService;
use App\Services\RefundService;
use BlueCity\Core\Inc\ErrorInc;
use Illuminate\Http\Request;
use DB;
class AddJdDataController extends BaseController
{
/**|---------------------------------------------------------------------------------
* @name 同步退款数据
* @param string
* @retrun \Illuminate\Http\JsonResponse
* @author dou 2022/4/21 18:21
* |---------------------------------------------------------------------------------
*/
public function addRefundData ( Request $request ){
$inputdata = $request->input('data');
$post_arr = json_decode($inputdata,true);
$data = $post_arr['resultDtoList']??'';
if($data){
$return = [];
foreach($data as $k => $v){
if($v['approvalState']===0) {
$flag = 1;
$refundlist = RefundService::getInfoByKeyValue('order_num', $v['customOrderId'], ['state', 'roPreNo']);
if ($refundlist) {
$state = array_column($refundlist, 'state');
$state = min($state);
if ($state < 5) {
$rea = '存在未完成的退款数据';
$flag = 2;
} else {
$roPreNo = array_column($refundlist, 'roPreNo');
if (in_array($v['roPreNo'], $roPreNo)) {
$rea = '退款单已同步';
$flag = 2;
}
}
}
if ($flag == 1) {
$refund['order_num'] = $v['customOrderId'];
$refund['refund'] = 1;
$refund['content'] = $v['roReason'] . ",平台申请时间:(" . date("Y-m-d H:i:s", mb_substr($v['roApplyDate'], 0, 10)) . ")";
$refund['urgent'] = 1;
$refund['allprice'] = $v['roApplyFee'];
$refund['recycle_type'] = 0;
$refund['roPreNo'] = $v['roPreNo'];
$sys_num = OrderService::getOrderBy('order_num', $v['customOrderId'], ['sys_num']);
if ($sys_num) {
$refund['sys_num'] = $sys_num;
$msg = OrderService::getOrderMsg($sys_num);
if ($msg['orderMsgArr']) {
$msg = $msg['orderMsgArr'];
$goodsArr = [];
foreach ($msg as $ka => $va) {
$goodsArr[$ka]['goods_name'] = $va['goods_name'];
$goodsArr[$ka]['goods_price'] = $va['goods_price'];
$goodsArr[$ka]['msg_id'] = $va['id'];
$goodsArr[$ka]['goods_num'] = $va['goods_num'];
$goodsArr[$ka]['goods_id'] = $va['goods_id'];
}
$refund['goodsArr'] = $goodsArr;
$refund['goods_state'] = 2;
$refund['info_ing'] = '';
$refund['info_acc'] = '';
$refund['info_name'] = '';
$session['id'] = '1133';
$session['admin_acc'] = '系统操作';
$session['admin_groupnew'] = 7;
$rea = OrderService::lockOrder($refund, $session, '39.105.188.64');
} else {
$rea = '无订单商品';
}
} else {
$rea = '无订单号';
}
}
}else{
$rea = '平台已处理'.$v['approvalState'];
}
$return[$k]['lockOrder'] = $rea;
$return[$k]['order_num'] = $v['customOrderId'];
}
return $this->error('操作成功', ErrorInc::DATA_EMPTY,$return);exit;
}else{
return $this->error('操作成功', ErrorInc::DATA_EMPTY);exit;
}
}
}
<?php
/**
* 文件名称(添加天猫定单)
* @author Du
* @Date: 2024/03/25
* @Time: 14:56
* @version 1.0
* @copyright BlueCity
*/
namespace App\Http\Controllers\Api;
use App\Http\Controllers\BaseController;
use App\Http\Controllers\Common\CommonController;
use App\Models\Admin;
use App\Models\JdBound;
use App\Models\OrderList;
use App\Models\Orders;
use App\Models\PjGoods;
use App\Models\ServicePointsmonth;
use App\Models\SetmoneyType;
use App\Models\SettlementCount;
use App\Services\CommonService;
use App\Services\OrderaddService;
use Illuminate\Http\Request;
use DB;
use BlueCity\Core\Inc\ErrorInc;
class AddTmOrderController extends BaseController{
public function addOrderByTm(Request $request){
$input = $request->all();
if(empty($input)){
$json = file_get_contents("php://input");
$input = json_decode($json,true);
}
CommonService::addLog('获取订单', json_encode($input), 111,'TmOrder-addOrder');
$p_id = 16;
$g_id = 4;
//workOrderRO p_id=16
$arr = [];
$arr_goods = [];
foreach ($input['workOrderRO'] as $k =>$v){
$sku_ids = array_unique(array_column($v['items'], 'skuId'));
// DB::connection()->enableQueryLog();
$goods_ids = DB::table('tm_bound')->whereIn('sku_id',$sku_ids)->pluck('goods_id','sku_id');
//print_r(DB::getQueryLog());
// dump($goods_ids);
$goods_ids = CommonService::dataToArray($goods_ids);
// dump($goods_ids);
if(empty($goods_ids)){
CommonService::addLog('SKU_all_no',json_encode($sku_ids) , '1111','TmOrder-SKU_no');
$goods_ids = $g_id;
}
$goods_idss = DB::table('tm_bound')->whereIn('sku_id',$sku_ids)->pluck('goods_id');
$goods_idss = CommonService::dataToArray($goods_idss);
if(empty($goods_idss)){
$goods_idss = $g_id;
// echo 1;
$goods = PjGoods::where('pg_id',$goods_idss)->select('pg_id','brand_name','pg_series','version','goods_pic_path','national_version')->first();
}else{
$goods = PjGoods::whereIn('pg_id',$goods_idss)->select('pg_id','brand_name','pg_series','version','goods_pic_path','national_version')->get();
$goods = CommonService::jointArrayKey($goods, 'pg_id');
}
// $goods = PjGoods::whereIn('pg_id',$goods_idss)->select('pg_id','brand_name','pg_series','version','goods_pic_path','national_version')->get();
//存订单
$eisit_jd = DB::table('tm_proprietary')->where('order_id',$v['workOrderId'])->value('id');
// dump($arr);
if(!$eisit_jd){
if(in_array($v['workOrderId'], array_column($arr, 'order_id'))){
unset($arr[$k]);
// echo 2;echo '---'.$v['orderId'].'---';
}
$arr[$k]['order_id'] = $v['workOrderId'];
$arr[$k]['admin_acc'] = '系统';
$arr[$k]['pt_id'] = $p_id;
$arr[$k]['pay_type'] = '在线支付';
$arr[$k]['shopName'] = $v['shopName'];
$arr[$k]['appKey'] = $v['appKey'];
$arr[$k]['serverName'] = $v['serverName'];
$arr[$k]['order_remark'] = json_encode($v['orderNotes']);
$arr[$k]['order_start_time'] = $v['createTime'];//date('Y-m-d H:i:s',$v['createTime']/1000);
$arr[$k]['parentNo'] = $v['parentNo'];
$arr[$k]['queryFailCount'] = $v['queryFailCount'];
$arr[$k]['serverOrderId'] = $v['serverOrderId'];//
$arr[$k]['serverCode'] = $v['serverCode'];
$arr[$k]['serverMode'] = $v['serverMode'];
$arr[$k]['serverNum'] = $v['serverNum'];
$arr[$k]['appointmentTime'] = $v['appointmentTime'];
$arr[$k]['userPhone'] = $v['userPhone'];
$arr[$k]['receiveAddress'] = $v['receiveAddress'];
$arr[$k]['extJson'] = $v['extJson'];
$arr[$k]['is_show'] = 1;
$arr[$k]['channel'] = 0;
$arr[$k]['tmWorkOrderId'] = $v['tmWorkOrderId'];
$arr[$k]['parent_orderid'] = 0;
DB::table('tm_proprietary')->insert($arr[$k]);
unset($arr[$k]);
}
//存商品
//`gone_jdgoods` (`order_id`,`pt_id`,`sku_id`,`sku_name`,`item_total`,`jd_price`,`jd_cost`)
$resjdgoods = DB::table('tmgoods')->where("order_id",$v['workOrderId'])->value('id');
if(!$resjdgoods){
if(in_array($v['workOrderId'], array_column($arr_goods, 'order_id'))){
unset($arr_goods[$k]);
// echo 1;echo '---'.$v['orderId'].'---';
}
foreach($v['items'] as $kk => $vv){
$arr_goods[$kk]['order_id'] = $v['workOrderId'];
$arr_goods[$kk]['pt_id'] = $p_id;
$arr_goods[$kk]['sku_id'] = $vv['skuId'];
$arr_goods[$kk]['itemNumber'] = $vv['itemNumber'];
$arr_goods[$kk]['skuCode'] = $vv['skuCode'];
$arr_goods[$kk]['model'] = $vv['model'];
$arr_goods[$kk]['brandName'] = $vv['brandName'];
DB::table('tmgoods')->insert($arr_goods[$kk]);
unset($arr_goods[$kk]);
$goodid = $goods_ids[$vv['skuId']]??4;
$goods_res = $goods[$goodid];
// dd($goods_res);
if ($goods_res['pg_series'] == '') {
$type = $goods_res['version'];
} else {
$type = $goods_res['pg_series'] . "-" . $goods_res['version'];
}
$goods_name = $goods_name . $goods_res['brand_name'] . "," . $type . "," . $goods_res['general_version'] . ",";
$good_brand[] = $goods_res['brand_name'];
$orderMsgData[$kk]['goods_id'] = $goodid;
$orderMsgData[$kk]['goods_name'] = $vv['brandName'] . "-" . $vv['model'];
$orderMsgData[$kk]['goods_price'] = 0;//实收/商品单价
$orderMsgData[$kk]['goods_paid'] = 0;
$orderMsgData[$kk]['goods_num'] = $vv['itemNumber'];
$orderMsgData[$kk]['goods_brand'] = $vv['brandName'];
$orderMsgData[$kk]['goods_number'] = $vv['model'];
$orderMsgData[$kk]['cd_id'] = 1;
}
}
$exsit = Orders::where('order_num',$v['workOrderId'])->value('id');
if(!$exsit){
$sys_num = 'L'.date("YmdHis").str_pad(rand(0,999),3,'0',STR_PAD_LEFT);
$orders[$k]['sys_bh'] = $sys_num;
$orders[$k]['skb_bh'] = $v['workOrderId'];
$orders[$k]['pt_id'] = $p_id;
$orders[$k]['ser_type'] = 1;//服务类型:1上门安装,2到店服务
$orders[$k]['shr_name'] = $v['userName']??'空';
$orders[$k]['shr_phone'] = $v['userPhone'];//
$orders[$k]['shr_sheng'] = $v['receiveAddress'];//
$orders[$k]['shr_shi'] = $v['receiveAddress'];//
$orders[$k]['shr_xian'] = $v['receiveAddress'];//
$orders[$k]['shr_adress'] = $v['receiveAddress'];//
$orders[$k]['shr_other'] = '接单后10分钟内务必联系客户核实车型跟安装时间!不断电安装、如果无法完成 请立刻反馈我们处理~!';
$orders[$k]['car_audit'] = 3;//1:新订单;2:可派单;3:处理中
$orders[$k]['order_type'] = 1;//订单类型:1:普通;20加急;10:夜间
$orders[$k]['order_time'] = $v['createTime'];//date('Y-m-d H:i:s',$v['createTime']/1000);
$orders[$k]['pay_type'] = 1;//支付方式:1在线支付;2货到付款
$orders[$k]['goods'] = $orderMsgData;
// $session = $request->get('session_token');//获取操作人信息
$session['admin_groupnew'] = 7;
$session['admin_acc'] = '系统录入';
$session['id'] = 1133;
$orders['company_id'] = 1;
// dump($orders[$kk]);
$ip = $_SERVER["REMOTE_ADDR"];
$return = OrderaddService::addOrder($orders[$k], $session, $ip);
return $return;
//if($return['ErrorCode']==1)
// dump($return);
CommonService::addLog('添加定单', json_encode($return), $v['orderId'],'jdAPI_addOrder');
}else{
return $this->error('已存在', ErrorInc::MYSQL_FAILED);
}
}
}
}
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
差异被折叠。
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论