Parcourir la source

内部使用oa后台

gogs il y a 1 an
commit
60adeac071
100 fichiers modifiés avec 6350 ajouts et 0 suppressions
  1. 57 0
      .env
  2. 78 0
      README.md
  3. 38 0
      app/Console/Commands/CustomerPond.php
  4. 42 0
      app/Console/Kernel.php
  5. 55 0
      app/Exceptions/Handler.php
  6. 86 0
      app/Exports/CommonExport.php
  7. 116 0
      app/Exports/ExportOrder.php
  8. 27 0
      app/Exports/MultiSheetExport.php
  9. 31 0
      app/Exports/MyExport.php
  10. 30 0
      app/Exports/SingleSheetExport.php
  11. 51 0
      app/Exports/TableHeadExport.php
  12. 90 0
      app/Http/Controllers/Api/BaseController.php
  13. 74 0
      app/Http/Controllers/Api/BasicTypeController.php
  14. 86 0
      app/Http/Controllers/Api/BookingListController.php
  15. 34 0
      app/Http/Controllers/Api/CheckController.php
  16. 242 0
      app/Http/Controllers/Api/ConstructionController.php
  17. 73 0
      app/Http/Controllers/Api/ContactsController.php
  18. 100 0
      app/Http/Controllers/Api/CustomerController.php
  19. 22 0
      app/Http/Controllers/Api/DataSyncToU8Controller.php
  20. 71 0
      app/Http/Controllers/Api/DeleteController.php
  21. 49 0
      app/Http/Controllers/Api/DouShopController.php
  22. 317 0
      app/Http/Controllers/Api/EmployeeController.php
  23. 35 0
      app/Http/Controllers/Api/ExcelController.php
  24. 22 0
      app/Http/Controllers/Api/ExportFileController.php
  25. 42 0
      app/Http/Controllers/Api/FileUploadController.php
  26. 74 0
      app/Http/Controllers/Api/FollowUpRecordController.php
  27. 61 0
      app/Http/Controllers/Api/HeaderWordController.php
  28. 42 0
      app/Http/Controllers/Api/IOController.php
  29. 48 0
      app/Http/Controllers/Api/ImportController.php
  30. 74 0
      app/Http/Controllers/Api/InvoiceOrderController.php
  31. 25 0
      app/Http/Controllers/Api/LoginController.php
  32. 373 0
      app/Http/Controllers/Api/OaController.php
  33. 53 0
      app/Http/Controllers/Api/OperationLogController.php
  34. 85 0
      app/Http/Controllers/Api/PaymentReceiptController.php
  35. 77 0
      app/Http/Controllers/Api/ProductActivityController.php
  36. 155 0
      app/Http/Controllers/Api/ProductController.php
  37. 76 0
      app/Http/Controllers/Api/ProductInventoryController.php
  38. 76 0
      app/Http/Controllers/Api/PurchaseOrderController.php
  39. 87 0
      app/Http/Controllers/Api/PurchaseOrderSpecialController.php
  40. 22 0
      app/Http/Controllers/Api/RangeController.php
  41. 74 0
      app/Http/Controllers/Api/ReturnExchangeOrderController.php
  42. 125 0
      app/Http/Controllers/Api/SalesOrderController.php
  43. 155 0
      app/Http/Controllers/Api/ScheduleController.php
  44. 74 0
      app/Http/Controllers/Api/SportsBagController.php
  45. 76 0
      app/Http/Controllers/Api/StorehouseController.php
  46. 74 0
      app/Http/Controllers/Api/SupplierController.php
  47. 89 0
      app/Http/Controllers/Api/SysMenuController.php
  48. 35 0
      app/Http/Controllers/Api/TableHeadController.php
  49. 74 0
      app/Http/Controllers/Api/TakeOrderController.php
  50. 74 0
      app/Http/Controllers/Api/TechnologyController.php
  51. 90 0
      app/Http/Controllers/Api/TestController.php
  52. 95 0
      app/Http/Controllers/Api/WeixinController.php
  53. 119 0
      app/Http/Controllers/Api/WxController.php
  54. 40 0
      app/Http/Controllers/Auth/ConfirmPasswordController.php
  55. 22 0
      app/Http/Controllers/Auth/ForgotPasswordController.php
  56. 40 0
      app/Http/Controllers/Auth/LoginController.php
  57. 73 0
      app/Http/Controllers/Auth/RegisterController.php
  58. 30 0
      app/Http/Controllers/Auth/ResetPasswordController.php
  59. 42 0
      app/Http/Controllers/Auth/VerificationController.php
  60. 13 0
      app/Http/Controllers/Controller.php
  61. 88 0
      app/Http/Kernel.php
  62. 21 0
      app/Http/Middleware/Authenticate.php
  63. 17 0
      app/Http/Middleware/CheckForMaintenanceMode.php
  64. 101 0
      app/Http/Middleware/CheckLogin.php
  65. 61 0
      app/Http/Middleware/CheckToken.php
  66. 37 0
      app/Http/Middleware/CheckWeinxin.php
  67. 124 0
      app/Http/Middleware/CheckWx.php
  68. 17 0
      app/Http/Middleware/EncryptCookies.php
  69. 55 0
      app/Http/Middleware/OssFileDeal.php
  70. 27 0
      app/Http/Middleware/RedirectIfAuthenticated.php
  71. 39 0
      app/Http/Middleware/RequestLog.php
  72. 18 0
      app/Http/Middleware/TrimStrings.php
  73. 23 0
      app/Http/Middleware/TrustProxies.php
  74. 24 0
      app/Http/Middleware/VerifyCsrfToken.php
  75. 363 0
      app/Import/Import.php
  76. 49 0
      app/Import/ImportAll.php
  77. 38 0
      app/Jobs/OperationLog.php
  78. 98 0
      app/Jobs/ProcessDataJob.php
  79. 45 0
      app/Model/BasicType.php
  80. 38 0
      app/Model/BookingList.php
  81. 17 0
      app/Model/BookingListInfo.php
  82. 46 0
      app/Model/Construction.php
  83. 13 0
      app/Model/ConstructionFile.php
  84. 20 0
      app/Model/ConstructionInfo.php
  85. 13 0
      app/Model/ConstructionProductInfo.php
  86. 13 0
      app/Model/Contacts.php
  87. 23 0
      app/Model/ContactsInfo.php
  88. 32 0
      app/Model/Customer.php
  89. 42 0
      app/Model/CustomerInfo.php
  90. 40 0
      app/Model/DeliveryNote.php
  91. 19 0
      app/Model/Depart.php
  92. 37 0
      app/Model/Employee.php
  93. 19 0
      app/Model/EmployeeDepartPermission.php
  94. 19 0
      app/Model/EmployeeFoursShop.php
  95. 14 0
      app/Model/EmployeeManagerDepart.php
  96. 19 0
      app/Model/EmployeeMenuPermission.php
  97. 14 0
      app/Model/EmployeeRole.php
  98. 19 0
      app/Model/EmployeeTeamPermission.php
  99. 19 0
      app/Model/ErrorTable.php
  100. 19 0
      app/Model/FollowUpRecord.php

+ 57 - 0
.env

@@ -0,0 +1,57 @@
+APP_NAME=qy2
+APP_ENV=local
+APP_KEY=base64:jH8x3ecXr2bbiHWZ3hHlu/WDrrI1ifughUfogecs2zY=
+APP_DEBUG=true
+APP_URL=http://121.41.102.225:82
+APP_NO = 123
+
+LOG_CHANNEL=stack
+DB_CONNECTION=mysql
+
+DB_PORT=3306
+DB_HOST=121.37.161.210
+DB_DATABASE=tj
+DB_USERNAME=tj
+DB_PASSWORD=tj1@Q3wa$ESZ
+
+#DB_HOST=127.0.0.1
+#DB_DATABASE=zh
+#DB_USERNAME=root
+#DB_PASSWORD=root
+
+
+BROADCAST_DRIVER=log
+CACHE_DRIVER=redis
+QUEUE_CONNECTION=redis
+SESSION_DRIVER=redis
+SESSION_LIFETIME=7200
+
+
+REDIS_HOST=192.168.1.2
+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
+MAIL_FROM_ADDRESS=null
+MAIL_FROM_NAME="${APP_NAME}"
+
+AWS_ACCESS_KEY_ID=
+AWS_SECRET_ACCESS_KEY=
+AWS_DEFAULT_REGION=us-east-1
+AWS_BUCKET=
+
+PUSHER_APP_ID=
+PUSHER_APP_KEY=
+PUSHER_APP_SECRET=
+PUSHER_APP_CLUSTER=mt1
+
+MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
+MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
+
+# 过期时间
+OVER_DUE = 8640000

+ 78 - 0
README.md

@@ -0,0 +1,78 @@
+<p align="center"><a href="https://laravel.com" target="_blank"><img src="https://raw.githubusercontent.com/laravel/art/master/logo-lockup/5%20SVG/2%20CMYK/1%20Full%20Color/laravel-logolockup-cmyk-red.svg" width="400"></a></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 takes the pain out of development by easing common tasks used in many 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, powerful, and provides tools required for large, robust applications.
+
+## Learning Laravel
+
+Laravel has the most extensive and thorough [documentation](https://laravel.com/docs) and video tutorial library of all modern web application frameworks, making it a breeze to get started with the framework.
+
+If you don't feel like reading, [Laracasts](https://laracasts.com) can help. Laracasts contains over 1500 video tutorials on a range of topics including Laravel, modern PHP, unit testing, and JavaScript. Boost your skills by digging into our comprehensive video library.
+
+## Laravel Sponsors
+
+We would like to extend our thanks to the following sponsors for funding 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)**
+- **[Kirschbaum Development Group](https://kirschbaumdevelopment.com)**
+- **[64 Robots](https://64robots.com)**
+- **[Cubet Techno Labs](https://cubettech.com)**
+- **[Cyber-Duck](https://cyber-duck.co.uk)**
+- **[British Software Development](https://www.britishsoftware.co)**
+- **[Webdock, Fast VPS Hosting](https://www.webdock.io/en)**
+- **[DevSquad](https://devsquad.com)**
+- [UserInsights](https://userinsights.com)
+- [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/)
+- [Runtime Converter](http://runtimeconverter.com/)
+- [WebL'Agence](https://weblagence.com/)
+- [Invoice Ninja](https://www.invoiceninja.com)
+- [iMi digital](https://www.imi-digital.de/)
+- [Earthlink](https://www.earthlink.ro/)
+- [Steadfast Collective](https://steadfastcollective.com/)
+- [We Are The Robots Inc.](https://watr.mx/)
+- [Understand.io](https://www.understand.io/)
+- [Abdel Elrafa](https://abdelelrafa.com)
+- [Hyper Host](https://hyper.host)
+- [Appoly](https://www.appoly.co.uk)
+- [OP.GG](https://op.gg)
+
+## 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).
+
+## Code of Conduct
+
+In order to ensure that the Laravel community is welcoming to all, please review and abide by the [Code of Conduct](https://laravel.com/docs/contributions#code-of-conduct).
+
+## 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).

+ 38 - 0
app/Console/Commands/CustomerPond.php

@@ -0,0 +1,38 @@
+<?php
+
+namespace App\Console\Commands;
+
+
+use App\Service\CustomerPondService;
+use Illuminate\Console\Command;
+
+
+class CustomerPond extends Command
+{
+
+
+    /**
+     * The console command description.
+     *
+     * @var string
+     */
+
+    protected $signature = 'customerPond';
+
+    protected $description = '';
+
+    protected $process;
+    protected $key = 'customerPond';
+
+    public function __construct()
+    {
+        parent::__construct();
+
+    }
+
+    public function handle()
+    {
+        $service = new CustomerPondService();
+        $service->updateCustomerPond();
+    }
+}

+ 42 - 0
app/Console/Kernel.php

@@ -0,0 +1,42 @@
+<?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 = [
+        //
+    ];
+
+    /**
+     * Define the application's command schedule.
+     *
+     * @param  \Illuminate\Console\Scheduling\Schedule  $schedule
+     * @return void
+     */
+    protected function schedule(Schedule $schedule)
+    {
+        // $schedule->command('inspire')
+        //          ->hourly();
+    }
+
+    /**
+     * Register the commands for the application.
+     *
+     * @return void
+     */
+    protected function commands()
+    {
+        $this->load(__DIR__.'/Commands');
+
+        require base_path('routes/console.php');
+    }
+}

+ 55 - 0
app/Exceptions/Handler.php

@@ -0,0 +1,55 @@
+<?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.
+     *
+     * @param  \Exception  $exception
+     * @return void
+     *
+     * @throws \Exception
+     */
+    public function report(Exception $exception)
+    {
+        parent::report($exception);
+    }
+
+    /**
+     * Render an exception into an HTTP response.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @param  \Exception  $exception
+     * @return \Symfony\Component\HttpFoundation\Response
+     *
+     * @throws \Exception
+     */
+    public function render($request, Exception $exception)
+    {
+        return parent::render($request, $exception);
+    }
+}

+ 86 - 0
app/Exports/CommonExport.php

@@ -0,0 +1,86 @@
+<?php
+
+namespace App\Exports;
+
+
+use Illuminate\Support\Collection;
+use Illuminate\Support\Facades\Redis;
+use Maatwebsite\Excel\Concerns\FromCollection;
+
+use Maatwebsite\Excel\Concerns\WithEvents;     // 自动注册事件监听器
+use Maatwebsite\Excel\Concerns\WithStrictNullComparison;    // 导出 0 原样显示,不为 null
+use Maatwebsite\Excel\Events\AfterSheet;
+
+
+
+
+class CommonExport implements FromCollection, WithEvents, WithStrictNullComparison
+{
+
+    public $data;
+
+    /**
+     * @return \Illuminate\Support\Collection
+     */
+    public function __construct($data)
+    {
+        $this->data = $data;
+    }
+
+    public function registerEvents(): array
+    {
+        //这边处理数据格式
+
+        //关于表单的合并
+        $params = isset($this->data['params']) ?? [];
+
+        $style = [
+            AfterSheet::class => function (AfterSheet $event) use($params) {
+                $count = count($this->data['data']);
+
+                //设置区域单元格水平居中
+                $event->sheet->getDelegate()->getStyle('A1:'.'BZ'.($count+1))->getAlignment()->setHorizontal(\PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER);
+
+
+                //合并相关
+                if(isset($params['merge'])){
+                    $merge = $params['merge'];
+                    $event->sheet->getDelegate()->setMergeCells($merge);
+                }
+
+            },
+        ];
+
+        return $style;
+
+    }
+
+
+    //数组转集合
+    public function collection()
+    {
+        return new Collection($this->createData());
+    }
+    //业务代码
+    public function createData()
+    {
+        $data = $this->export();
+        return $data;
+
+    }
+
+    private function export(){
+//        var_dump($this->data);die;
+        $data = $this->data['data'];
+        $list = [];
+        foreach ($data as $v){
+            $list[] = $v;
+        }
+        return $list;
+    }
+
+
+
+
+
+}

+ 116 - 0
app/Exports/ExportOrder.php

@@ -0,0 +1,116 @@
+<?php
+
+namespace App\Exports;
+
+
+use Illuminate\Support\Collection;
+use Illuminate\Support\Facades\Redis;
+use Maatwebsite\Excel\Concerns\FromCollection;
+
+use Maatwebsite\Excel\Concerns\WithCustomValueBinder;
+use Maatwebsite\Excel\Concerns\WithEvents;     // 自动注册事件监听器
+use Maatwebsite\Excel\Concerns\WithHeadings;
+use Maatwebsite\Excel\Concerns\WithStrictNullComparison;    // 导出 0 原样显示,不为 null
+use Maatwebsite\Excel\Events\AfterSheet;
+use PhpOffice\PhpSpreadsheet\Cell\Cell;
+use PhpOffice\PhpSpreadsheet\Cell\DataType;
+use PhpOffice\PhpSpreadsheet\Cell\DefaultValueBinder;
+
+
+class ExportOrder extends DefaultValueBinder implements WithCustomValueBinder , FromCollection, WithEvents, WithStrictNullComparison,withHeadings
+{
+
+    /**
+     * @return \Illuminate\Support\Collection
+     */
+    public function __construct($data,$type=1,$headers)
+    {
+        $this->data = $data;
+        $this->type = $type;
+        $this->headers = $headers;
+    }
+
+    public function registerEvents(): array
+    {
+        //区分不通状态的合同导出,格式不同
+            $type = $this->type.'_set';
+            return $this->$type();
+    }
+
+    //数组转集合
+    public function collection()
+    {
+        return new Collection($this->createData());
+    }
+    //业务代码
+    public function createData()
+    {
+        $name = $this->type;
+        $data = $this->export();
+        return $data;
+
+    }
+
+    public function bindValue(Cell $cell, $value)
+    {
+        if (is_numeric($value)) {
+            $cell->setValueExplicit($value, DataType::TYPE_STRING2);
+
+            return true;
+        }
+
+        // else return default behavior
+        return parent::bindValue($cell, $value);
+    }
+
+    // 自定义表头,需实现withHeadings接口
+    public function headings(): array
+    {
+        return $this->headers;
+    }
+
+    private function export(){
+        $list = [];
+//        dump($this->data);die;
+        foreach ($this->data as $v){
+            $list[] = $v;
+        }
+        return $list;
+    }
+
+    private function default_set(){
+        return [
+            AfterSheet::class => function (AfterSheet $event) {
+                $count = count($this->data);
+
+                //设置区域单元格水平居中
+                $event->sheet->getDelegate()->getStyle('A1:'.'M'.($count+1))->getAlignment()->setHorizontal(\PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER);
+
+                // 定义列宽度
+                $widths = ['A' => 20, 'B' => 20, 'C' => 20, 'D' => 20, 'E' => 20, 'F' => 20, 'G' => 20, 'H' => 20, 'I' => 20, 'J' => 20, 'K' => 20, 'L' => 20, 'M' => 20, 'O' => 20, 'P' => 20, 'Q' => 20, 'R' => 20, 'S' => 20, 'T' => 20, 'U' => 20, 'V' => 20, 'W' => 20, 'X' => 20, 'Y' => 20, 'Z' => 20];
+                foreach ($widths as $k => $v) {
+                    // 设置列宽度
+                    $event->sheet->getDelegate()->getColumnDimension($k)->setWidth($v);
+                }
+            },
+        ];
+    }
+
+    private function salary_set(){
+        return [
+            AfterSheet::class => function (AfterSheet $event) {
+                $count = count($this->data);
+
+                //设置区域单元格水平居中
+                $event->sheet->getDelegate()->getStyle('A1:'.'M'.($count+1))->getAlignment()->setHorizontal(\PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER);
+
+                // 定义列宽度
+                $widths = ['A' => 20, 'B' => 20, 'C' => 20, 'D' => 20, 'E' => 20, 'F' => 35, 'G' => 25, 'H' => 25, 'I' => 25, 'J' => 25, 'K' => 25, 'L' => 25, 'M' => 25];
+                foreach ($widths as $k => $v) {
+                    // 设置列宽度
+                    $event->sheet->getDelegate()->getColumnDimension($k)->setWidth($v);
+                }
+            },
+        ];
+    }
+}

+ 27 - 0
app/Exports/MultiSheetExport.php

@@ -0,0 +1,27 @@
+<?php
+
+namespace App\Exports;
+
+
+use Maatwebsite\Excel\Concerns\WithMultipleSheets;
+
+class MultiSheetExport implements WithMultipleSheets
+{
+    protected $data;
+
+    public function __construct(array $data)
+    {
+        $this->data = $data;
+    }
+
+    public function sheets(): array
+    {
+        $sheets = [];
+
+        foreach ($this->data as $sheetName => $sheetData) {
+            $sheets[] = new SingleSheetExport($sheetData, $sheetName);
+        }
+
+        return $sheets;
+    }
+}

+ 31 - 0
app/Exports/MyExport.php

@@ -0,0 +1,31 @@
+<?php
+
+namespace App\Exports;
+
+use Maatwebsite\Excel\Facades\Excel;
+
+
+
+
+class MyExport {
+
+    public $base1_path = '/app';
+    public $base2_path = '/excel';
+
+    public function commonExport($data,$path = ''){
+
+        if(empty($path)) $path = date('YmdHis').rand(1000,9999).'.xlsx';
+        $param = $data;
+        $export = new CommonExport($param);
+        $date = date('Ymd');
+        $path = $date.'/'.$path;
+        Excel::store($export, $path);
+        return ['file'=>$this->base2_path.'/'.$path];
+    }
+
+
+    public function excelDownload($file){
+        return response()->file(storage_path().$this->base1_path.$this->base2_path.'/'.$file);
+    }
+
+}

+ 30 - 0
app/Exports/SingleSheetExport.php

@@ -0,0 +1,30 @@
+<?php
+
+namespace App\Exports;
+
+
+use Maatwebsite\Excel\Concerns\FromCollection;
+use Maatwebsite\Excel\Concerns\WithTitle;
+use Illuminate\Support\Collection;
+
+class SingleSheetExport implements FromCollection,WithTitle
+{
+    protected $data;
+    protected $sheetName;
+
+    public function __construct(array $data, string $sheetName)
+    {
+        $this->data = $data;
+        $this->sheetName = $sheetName;
+    }
+
+    public function collection()
+    {
+        return new Collection($this->data);
+    }
+
+    public function title(): string
+    {
+        return $this->sheetName;
+    }
+}

+ 51 - 0
app/Exports/TableHeadExport.php

@@ -0,0 +1,51 @@
+<?php
+
+namespace App\Exports;
+
+
+use Illuminate\Support\Collection;
+use Maatwebsite\Excel\Concerns\FromCollection;
+use Maatwebsite\Excel\Concerns\WithCustomValueBinder;
+use Maatwebsite\Excel\Concerns\WithHeadings;
+use Maatwebsite\Excel\Concerns\WithStrictNullComparison;    // 导出 0 原样显示,不为 null
+use PhpOffice\PhpSpreadsheet\Cell\DefaultValueBinder;
+
+
+class TableHeadExport extends DefaultValueBinder implements WithCustomValueBinder , FromCollection, WithStrictNullComparison,withHeadings
+{
+    /**
+     * @return \Illuminate\Support\Collection
+     */
+    public function __construct($data,$headers)
+    {
+        $this->data = $data;
+        $this->headers = $headers;
+    }
+
+    //数组转集合
+    public function collection()
+    {
+        return new Collection($this->createData());
+    }
+    //业务代码
+    public function createData()
+    {
+        $data = $this->export();
+        return $data;
+    }
+
+    // 自定义表头,需实现withHeadings接口
+    public function headings(): array
+    {
+        return $this->headers;
+    }
+
+    private function export(){
+        $list = [];
+//        dump($this->data);die;
+        foreach ($this->data as $v){
+            $list[] = $v;
+        }
+        return $list;
+    }
+}

+ 90 - 0
app/Http/Controllers/Api/BaseController.php

@@ -0,0 +1,90 @@
+<?php
+
+namespace App\Http\Controllers\Api;
+
+use App\Http\Controllers\Controller;
+use App\Models\SystemL;
+use App\Service\DisPatchAppService;
+use Illuminate\Http\Request;
+use Illuminate\Support\Facades\DB;
+use Illuminate\Support\Facades\Storage;
+
+class BaseController extends Controller
+{
+    public $user_info;
+    public function __construct()
+    {
+    }
+
+    // 返回json数据
+    protected function json_return($code=200,$msg="Success",$data=[]){
+        if(!is_array($data)&&!is_object($data)) {
+            $msg = $data;
+            $data = '';
+        }
+        if(empty($msg)) $msg = '操作成功';
+        return ['code'=>$code,'msg'=>$msg,'data'=>$data];
+    }
+
+
+    //用户行为记录,暂时放这里具体用不用后期再加
+    public function user_log($data,$user,$id,$perm_id,$remark){
+
+    }
+
+
+
+
+    //用于保存图片
+    public function save_pic(Request $request){
+        // 获取文件相关信息
+        $file = $request->file('file');
+        $ext = $file->getClientOriginalExtension();     // 扩展名
+        $realPath = $file->getRealPath();   //临时文件的绝对路径
+
+        $ext = strtolower($ext);
+        $rule = ['jpg', 'png', 'gif', "jpeg"];
+        if (!in_array($ext, $rule)) {
+            return '图片格式为jpg,png,gif';
+        }
+
+        // 上传文件
+        $file_name = time().rand(1000,9999);
+        $filename =  $file_name.'.' . $ext;
+        // 使用我们新建的uploads本地存储空间(目录)
+        Storage::disk('public')->put('pic/'.$filename, file_get_contents($realPath));
+
+        return $this->json_return(200,'上传成功' ,['url'=>'/api/pic/'.$file_name]);
+    }
+
+    public function get_pic($file_name){
+
+        if(file_exists(storage_path().'/app/public/pic/'.$file_name.'.png')){
+            $ext = 'png';
+        }elseif(file_exists(storage_path().'/app/public/pic/'.$file_name.'.jpeg')){
+            $ext = 'jpeg';
+        }elseif(file_exists(storage_path().'/app/public/pic/'.$file_name.'.jpg')){
+            $ext = 'jpg';
+        }elseif(file_exists(storage_path().'/app/public/pic/'.$file_name.'.gif')){
+            $ext = 'gif';
+        }else{
+            $ext = 'xlsx';
+//            if(file_exists(storage_path().'/app/public/pic/basic/'.$file_name.'.gif')){
+//                return response()->file(storage_path().'/app/public/pic/'.$file_name.'.'.$ext);
+//            }else{
+//                return response()->file(storage_path().'/app/public/pic/'.$file_name.'.'.$ext);
+//            }
+        }
+        return response()->file(storage_path().'/app/public/pic/'.$file_name.'.'.$ext);
+    }
+
+    public function get_basic_pic($file_name){
+        return response()->file(storage_path().'/app/public/pic/basic/'.$file_name.'.png');
+
+    }
+
+
+
+
+
+}

+ 74 - 0
app/Http/Controllers/Api/BasicTypeController.php

@@ -0,0 +1,74 @@
+<?php
+
+namespace App\Http\Controllers\Api;
+
+use App\Service\BasicTypeService;
+use Illuminate\Http\Request;
+
+class BasicTypeController extends BaseController
+{
+    public function basicTypeAdd(Request $request)
+    {
+        $service = new BasicTypeService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->basicTypeAdd($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function basicTypeEdit(Request $request)
+    {
+        $service = new BasicTypeService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->basicTypeEdit($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function basicTypeDel(Request $request)
+    {
+        $service = new BasicTypeService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->basicTypeDel($request->all());
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function basicTypeList(Request $request)
+    {
+        $service = new BasicTypeService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->basicTypeList($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function basicTypeCustomerList(Request $request)
+    {
+        $service = new BasicTypeService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->basicTypeCustomerList($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+}

+ 86 - 0
app/Http/Controllers/Api/BookingListController.php

@@ -0,0 +1,86 @@
+<?php
+
+namespace App\Http\Controllers\Api;
+
+use App\Service\BookingListService;
+use Illuminate\Http\Request;
+
+class BookingListController extends BaseController
+{
+    //金额记账
+    public function customerAdd(Request $request)
+    {
+        $service = new BookingListService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->customerAdd($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function customerEdit(Request $request)
+    {
+        $service = new BookingListService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->customerEdit($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function customerDel(Request $request)
+    {
+        $service = new BookingListService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->customerDel($request->all());
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function customerList(Request $request)
+    {
+        $service = new BookingListService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->customerList($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function customerDetail(Request $request)
+    {
+        $service = new BookingListService();
+        list($status,$data) = $service->customerDetail($request->all());
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function customerConfirm(Request $request)
+    {
+        $service = new BookingListService();
+        list($status,$data) = $service->customerConfirm($request->all());
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+}

+ 34 - 0
app/Http/Controllers/Api/CheckController.php

@@ -0,0 +1,34 @@
+<?php
+
+namespace App\Http\Controllers\Api;
+
+use App\Service\CheckService;
+use Illuminate\Http\Request;
+
+class CheckController extends BaseController
+{
+    public function checkAll(Request $request)
+    {
+        $service = new CheckService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->checkAll($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function getOrderDetail(Request $request){
+        $service = new CheckService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->getOrderDetail($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+}

+ 242 - 0
app/Http/Controllers/Api/ConstructionController.php

@@ -0,0 +1,242 @@
+<?php
+
+namespace App\Http\Controllers\Api;
+
+use App\Service\ConstructionService;
+use Barryvdh\DomPDF\Facade\Pdf;
+use Illuminate\Http\Request;
+
+class ConstructionController extends BaseController
+{
+    public function constructionAdd(Request $request)
+    {
+        $service = new ConstructionService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->constructionAdd($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function constructionEdit(Request $request)
+    {
+        $service = new ConstructionService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->constructionEdit($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function constructionDel(Request $request)
+    {
+        $service = new ConstructionService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->constructionDel($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function constructionList(Request $request)
+    {
+        $service = new ConstructionService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->constructionList($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function constructionDetail(Request $request)
+    {
+        $service = new ConstructionService();
+        list($status,$data) = $service->detail($request->all());
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function constructionGet(Request $request)
+    {
+        $service = new ConstructionService();
+        list($status,$data) = $service->constructionGet($request->all());
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+
+    public function deliveryNoteList(Request $request)
+    {
+        $service = new ConstructionService();
+        list($status,$data) = $service->deliveryNoteList($request->all());
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function deliveryNoteDetail(Request $request)
+    {
+        $service = new ConstructionService();
+        list($status,$data) = $service->deliveryNoteDetail($request->all());
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+
+    public function deliveryNoteEdit(Request $request)
+    {
+        $service = new ConstructionService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->deliveryNoteEdit($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function deliveryNoteDel(Request $request)
+    {
+        $service = new ConstructionService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->deliveryNoteDel($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function constructionPdf(Request $request)
+    {
+        $service = new ConstructionService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->constructionPdf($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function constructionOperation(Request $request)
+    {
+        $service = new ConstructionService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->constructionOperation($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function show(Request $request){
+        $construction = [
+          "id" => 45,
+          "model_type" => 1,
+          "order_number" => "WO0.202404021158317949",
+          "title" => "cs",
+          "customer_id" => 0,
+          "customer_contact_id" => 0,
+          "install_method" => 195,
+          "install_position" => 205,
+          "sales_order_id" => 170,
+          "construction_fee" => "26.82",
+          "service_price" => "0.00",
+          "crt_id" => 91,
+          "del_time" => 0,
+          "crt_time" => "2024-04-02 11:58:52",
+          "upd_time" => "1712913661",
+          "mark" => "",
+          "construction_time" => 0,
+          "handover_time" => "",
+          "urgency" => 0,
+          "state" => 2,
+          "pq_state" => 1,
+          "address1" => "",
+          "address2" => "",
+          "introduction" => "",
+          "depart_id" => 46,
+          "top_depart_id" => 2,
+          "storehouse_id" => 10,
+          "start_time" => 1711987200,
+          "end_time" => 1711987200,
+          "schedule_id" => 19,
+          "day_stamp" => 1713715200,
+          "day_start_stamp" => 1713715200,
+          "day_end_stamp" => 1713715260,
+          "customer_title" => "",
+          "sales_order_number" => "T9XS.202404021129349107",
+          "crt_name" => "苏盈心  三部  13772835000",
+          "xt_name" => "",
+        ];
+        $product = [
+         [
+            "id" => 94,
+            "construction_id" => 45,
+            "product_id" => 4018,
+            "del_time" => 0,
+            "crt_time" => "1712210724",
+            "upd_time" => "0",
+            "number" => "1.00",
+            "mark" => "",
+            "cost" => "0.00",
+            "retail_price" => "889.00",
+            "storehouse_id" => 10,
+            "basic_type_id" => 0,
+            "price" => "889.00",
+            "final_amount" => "893.84",
+            "count" => 1,
+            "title" => "全新智能香氛等离子系统",
+            "code" => "1000004536",
+            "size" => "Model 3/Y",
+            "unit" => "套",
+          ]
+        ];
+        $detail =  [
+            0 => "陈建斌 技术部,技术部 15372086866|高健 技术部,技术部 13388601173"
+        ];
+        $pdf = Pdf::loadView('pdf.construction', ['order' => $construction,'product'=>$product,'detail'=>$detail]);
+
+        return $pdf->stream('11.pdf');
+//        return response($pdf->output())
+//            ->header('Content-Type', 'application/pdf')
+//            ->header('Content-Disposition', 'attachment; filename="report.pdf"');
+//
+        return $pdf->download('report.pdf');
+
+        return view('pdf.construction',['order' => $construction,'product'=>$product]);
+    }
+}

+ 73 - 0
app/Http/Controllers/Api/ContactsController.php

@@ -0,0 +1,73 @@
+<?php
+
+namespace App\Http\Controllers\Api;
+
+use App\Service\ContactsService;
+use Illuminate\Http\Request;
+
+class ContactsController extends BaseController
+{
+    public function contactsAdd(Request $request)
+    {
+        $service = new ContactsService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->contactsAdd($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function contactsEdit(Request $request)
+    {
+        $service = new ContactsService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->contactsEdit($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function contactsDel(Request $request)
+    {
+        $service = new ContactsService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->contactsDel($request->all());
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function contactsList(Request $request)
+    {
+        $service = new ContactsService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->contactsList($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function contactsDetail(Request $request)
+    {
+        $service = new ContactsService();
+        list($status,$data) = $service->contactsDetail($request->all());
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+}

+ 100 - 0
app/Http/Controllers/Api/CustomerController.php

@@ -0,0 +1,100 @@
+<?php
+
+namespace App\Http\Controllers\Api;
+
+use App\Service\CustomerService;
+use Illuminate\Http\Request;
+
+class CustomerController extends BaseController
+{
+    public function customerAdd(Request $request)
+    {
+        $service = new CustomerService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->customerAdd($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function customerEdit(Request $request)
+    {
+        $service = new CustomerService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->customerEdit($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function customerDel(Request $request)
+    {
+        $service = new CustomerService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->customerDel($request->all());
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function customerList(Request $request)
+    {
+        $service = new CustomerService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->customerList($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function customerList2(Request $request)
+    {
+        $service = new CustomerService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->customerList2($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function customerDetail(Request $request)
+    {
+        $service = new CustomerService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->customerDetail($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function customerGrabbing(Request $request)
+    {
+        $service = new CustomerService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->customerGrabbing($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+}

+ 22 - 0
app/Http/Controllers/Api/DataSyncToU8Controller.php

@@ -0,0 +1,22 @@
+<?php
+
+namespace App\Http\Controllers\Api;
+
+use App\Service\DataSyncToU8Service;
+use Illuminate\Http\Request;
+
+class DataSyncToU8Controller extends BaseController
+{
+    public function add(Request $request)
+    {
+        $service = new DataSyncToU8Service();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->add($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+}

+ 71 - 0
app/Http/Controllers/Api/DeleteController.php

@@ -0,0 +1,71 @@
+<?php
+
+namespace App\Http\Controllers\Api;
+
+use App\Service\DeleteService;
+use Illuminate\Http\Request;
+
+class DeleteController extends BaseController
+{
+    public function getMan(Request $request)
+    {
+        $service = new DeleteService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->getMan($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function delete(Request $request)
+    {
+        $service = new DeleteService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->delete($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function fp(Request $request){
+        $service = new DeleteService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->fp($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function yj(Request $request){
+        $service = new DeleteService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->yj($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function pq(Request $request){
+        $service = new DeleteService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->pq($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+}

+ 49 - 0
app/Http/Controllers/Api/DouShopController.php

@@ -0,0 +1,49 @@
+<?php
+
+namespace App\Http\Controllers\Api;
+
+use App\Model\BasicType;
+use App\Service\DouShopService;
+use Illuminate\Http\Request;
+
+class DouShopController extends BaseController
+{
+    public function douShopOrderList(Request $request)
+    {
+        $service = new DouShopService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->getOrderList($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function douShopOrderDetail(Request $request)
+    {
+        $service = new DouShopService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->getOrderDetail($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function insertDouOrder(Request $request)
+    {
+        $service = new DouShopService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->insertDouOrder($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+}

+ 317 - 0
app/Http/Controllers/Api/EmployeeController.php

@@ -0,0 +1,317 @@
+<?php
+
+namespace App\Http\Controllers\Api;
+
+
+use App\Service\EmployeeService;
+use Illuminate\Http\Request;
+
+class EmployeeController extends BaseController
+{
+    public function employeeEditOther(Request $request)
+    {
+        $service = new EmployeeService();
+        $user = $request->userData->toArray();
+        list($status,$data) = $service->employeeEditOther($request->all(),$user);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function employeeEdit(Request $request)
+    {
+        $service = new EmployeeService();
+        $user = $request->userData->toArray();
+        list($status,$data) = $service->employeeEdit($request->all(),$user);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+    
+    public function employeeAdd(Request $request)
+    {
+        $service = new EmployeeService();
+        $user = $request->userData->toArray();
+        list($status,$data) = $service->employeeAdd($request->all(),$user);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+    
+    public function employeeDel(Request $request)
+    {
+        $service = new EmployeeService();
+        $user = $request->userData->toArray();
+        list($status,$data) = $service->employeeDel($request->all());
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function employeeList(Request $request)
+    {
+        $service = new EmployeeService();
+        $user = $request->userData->toArray();
+        list($status,$data) = $service->employeeList($request->all(),$user);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function roleEdit(Request $request)
+    {
+        $service = new EmployeeService();
+        $user = $request->userData->toArray();
+        list($status,$data) = $service->roleEdit($request->all(),$user);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function roleAdd(Request $request)
+    {
+        $service = new EmployeeService();
+        $user = $request->userData->toArray();
+        list($status,$data) = $service->roleAdd($request->all(),$user);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+
+    }
+
+    public function roleDel(Request $request)
+    {
+        $service = new EmployeeService();
+        $user = $request->userData->toArray();
+        list($status,$data) = $service->roleDel($request->all());
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+
+    }
+
+    public function roleList(Request $request)
+    {
+        $service = new EmployeeService();
+        $user = $request->userData->toArray();
+        list($status,$data) = $service->roleList($request->all(),$user);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function roleMenu(Request $request)
+    {
+        $service = new EmployeeService();
+        $user = $request->userData->toArray();
+        list($status,$data) = $service->roleMenu($request->all());
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function roleDetail(Request $request)
+    {
+        $service = new EmployeeService();
+        $user = $request->userData->toArray();
+        list($status,$data) = $service->roleDetail($request->all());
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function departEdit(Request $request)
+    {
+        $service = new EmployeeService();
+        $user = $request->userData->toArray();
+        list($status,$data) = $service->departEdit($request->all(),$user);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function departAdd(Request $request)
+    {
+        $service = new EmployeeService();
+        $user = $request->userData->toArray();
+        list($status,$data) = $service->departAdd($request->all(),$user);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+
+    }
+
+    public function departDel(Request $request)
+    {
+        $service = new EmployeeService();
+        $user = $request->userData->toArray();
+        list($status,$data) = $service->departDel($request->all());
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+
+    }
+
+    public function departList(Request $request)
+    {
+        $service = new EmployeeService();
+        $user = $request->userData->toArray();
+        list($status,$data) = $service->departList($request->all(),$user);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+
+    }
+
+    public function teamEdit(Request $request)
+    {
+        $service = new EmployeeService();
+        $user = $request->userData->toArray();
+        list($status,$data) = $service->teamEdit($request->all());
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+
+    }
+
+    public function teamAdd(Request $request)
+    {
+        $service = new EmployeeService();
+        $user = $request->userData->toArray();
+        list($status,$data) = $service->teamAdd($request->all(),$user);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function teamDel(Request $request)
+    {
+        $service = new EmployeeService();
+        $user = $request->userData->toArray();
+        list($status,$data) = $service->teamDel($request->all());
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function teamDetail(Request $request)
+    {
+        $service = new EmployeeService();
+        $user = $request->userData->toArray();
+        list($status,$data) = $service->teamDetail($request->all());
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function teamList(Request $request)
+    {
+        $service = new EmployeeService();
+        $user = $request->userData->toArray();
+        list($status,$data) = $service->teamList($request->all());
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+
+    }
+
+    public function employeeDepart(Request $request)
+    {
+        $service = new EmployeeService();
+        $user = $request->userData->toArray();
+        list($status,$data) = $service->employeeDepart($request->all());
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function employeeTeam(Request $request)
+    {
+        $service = new EmployeeService();
+        $user = $request->userData->toArray();
+        list($status,$data) = $service->employeeTeam($request->all());
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+
+    }
+
+    public function employeeRole(Request $request)
+    {
+        $service = new EmployeeService();
+        $user = $request->userData->toArray();
+        list($status,$data) = $service->employeeRole($request->all());
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+}

+ 35 - 0
app/Http/Controllers/Api/ExcelController.php

@@ -0,0 +1,35 @@
+<?php
+namespace App\Http\Controllers\Api;
+
+use App\Exports\MyExport;
+use App\Service\Excel\ExcelService;
+use Illuminate\Http\Request;
+
+//导入导出
+class ExcelController extends BaseController
+{
+    /**
+     * 下载
+     * @param Request $request
+     * @return \Symfony\Component\HttpFoundation\BinaryFileResponse
+     */
+    public function excelDownload(Request $request){
+
+        $data = $request->all();
+        $file_name = $data['file_name'];
+        $excel = new MyExport();
+        return  $excel->excelDownload($file_name);
+    }
+
+    public function excelExport(Request $request){
+        $service = new ExcelService();
+        list($status,$data) = $service->excelExport($request);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+}

+ 22 - 0
app/Http/Controllers/Api/ExportFileController.php

@@ -0,0 +1,22 @@
+<?php
+
+namespace App\Http\Controllers\Api;
+
+use App\Service\ExportFileService;
+use Illuminate\Http\Request;
+
+class ExportFileController extends BaseController
+{
+    public function exportFile(Request $request)
+    {
+        $service = new ExportFileService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->exportAll($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',['file'=>$data]);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+}

+ 42 - 0
app/Http/Controllers/Api/FileUploadController.php

@@ -0,0 +1,42 @@
+<?php
+namespace App\Http\Controllers\Api;
+
+use App\Exports\MyExport;
+use App\Service\FileUploadService;
+use App\Service\OssService;
+use Illuminate\Http\Request;
+use PhpOffice\PhpSpreadsheet\Calculation\Statistical\Distributions\F;
+
+//文件上传
+class FileUploadController extends BaseController
+{
+    public function uploadFile(Request $request){
+        $service = new FileUploadService();
+        list($status,$data) = $service->uploadFile($request->file('file'));
+
+        if($status){
+            return $this->json_return(200,'上传成功',['url' => $data]);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    //获取文件的位置预览(临时文件)
+    public function getFile($file_name){
+        $file_name = str_replace(FileUploadService::string2,'',$file_name);
+        $timestamp = substr($file_name, 0, 8); // 截取前八位数字
+        $date = \DateTime::createFromFormat('Ymd', $timestamp);
+        $date = $date->format('Y-m-d');
+        $path = storage_path() . "/app/public/" . FileUploadService::tmp_dir . '/' . $date. '/' . $file_name;
+
+        return response()->file($path);
+    }
+
+    //获取文件的位置
+    public function getFileLocal($file_name){
+        $path = storage_path() . "/app/public/upload_files/".$file_name;
+        if(file_exists($path)) return response()->file($path);
+
+        return "";
+    }
+}

+ 74 - 0
app/Http/Controllers/Api/FollowUpRecordController.php

@@ -0,0 +1,74 @@
+<?php
+
+namespace App\Http\Controllers\Api;
+
+use App\Service\FollowUpRecordService;
+use Illuminate\Http\Request;
+
+class FollowUpRecordController extends BaseController
+{
+    public function followUpRecordEdit(Request $request)
+    {
+        $service = new FollowUpRecordService();
+        $user = $request->userData->toArray();
+        list($status,$data) = $service->followUpRecordEdit($request->all(),$user);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+    
+    public function followUpRecordAdd(Request $request)
+    {
+        $service = new FollowUpRecordService();
+        $user = $request->userData->toArray();
+        list($status,$data) = $service->followUpRecordAdd($request->all(),$user);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+    
+    public function followUpRecordDel(Request $request)
+    {
+        $service = new FollowUpRecordService();
+        $user = $request->userData->toArray();
+        list($status,$data) = $service->followUpRecordDel($request->all());
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function followUpRecordList(Request $request)
+    {
+        $service = new FollowUpRecordService();
+        $user = $request->userData->toArray();
+        list($status,$data) = $service->followUpRecordList($request->all(),$user);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function followUpRecordDetail(Request $request)
+    {
+        $service = new FollowUpRecordService();
+        $user = $request->userData->toArray();
+        list($status,$data) = $service->followUpRecordDetail($request->all());
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+}

+ 61 - 0
app/Http/Controllers/Api/HeaderWordController.php

@@ -0,0 +1,61 @@
+<?php
+
+namespace App\Http\Controllers\Api;
+
+
+use App\Service\HeaderWord\HeaderWordHookService;
+use App\Service\ProcessService;
+use Illuminate\Http\Request;
+
+
+class HeaderWordController extends BaseController
+{
+    public function getHeaderWord(Request $request)
+    {
+        $service =  HeaderWordHookService::getInstance();
+        $data = $request->all();
+        list($status,$data) = $service->getHeaderWord($data);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function getHeaderSettings(Request $request){
+        $service =  HeaderWordHookService::getInstance();
+        $data = $request->all();
+        list($status,$data) = $service->getHeaderSettings($data);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function add(Request $request){
+        $service =  HeaderWordHookService::getInstance();
+        $data = $request->all();
+        list($status,$data) = $service->add($data);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function detail(Request $request){
+        $service =  HeaderWordHookService::getInstance();
+        $data = $request->all();
+        list($status,$data) = $service->detail($data);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+}

+ 42 - 0
app/Http/Controllers/Api/IOController.php

@@ -0,0 +1,42 @@
+<?php
+namespace App\Http\Controllers\Api;
+
+use App\Exports\MyExport;
+use App\Service\IOService;
+use Illuminate\Http\Request;
+
+
+//导入导出
+class IOController extends BaseController
+{
+    /**
+     * 下载
+     * @param Request $request
+     * @return \Symfony\Component\HttpFoundation\BinaryFileResponse
+     */
+    public function excelDownload(Request $request){
+
+        $data = $request->all();
+        $file_name = $data['file_name'];
+        $excel = new MyExport();
+        return  $excel->excelDownload($file_name);
+    }
+
+
+    public function apiExport(Request $request){
+
+
+
+//        $data = $request->all();
+
+        $service = new IOService();
+        list($status,$data) = $service->apiExport($request);
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+
+
+    }
+}

+ 48 - 0
app/Http/Controllers/Api/ImportController.php

@@ -0,0 +1,48 @@
+<?php
+
+namespace App\Http\Controllers\Api;
+
+use App\Service\ImportService;
+use Illuminate\Http\Request;
+
+class ImportController extends BaseController
+{
+    public function import(Request $request)
+    {
+        $service = new ImportService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->import($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function getTableTitleXls(Request $request)
+    {
+        $service = new ImportService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->getTableTitleXls($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function importAll(Request $request)
+    {
+        $service = new ImportService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->importAll($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+}

+ 74 - 0
app/Http/Controllers/Api/InvoiceOrderController.php

@@ -0,0 +1,74 @@
+<?php
+
+namespace App\Http\Controllers\Api;
+
+use App\Service\InvoiceOrderService;
+use Illuminate\Http\Request;
+
+class InvoiceOrderController extends BaseController
+{
+    public function invoiceOrderAdd(Request $request)
+    {
+        $service = new InvoiceOrderService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->add($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function invoiceOrderEdit(Request $request)
+    {
+        $service = new InvoiceOrderService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->edit($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function invoiceOrderDetail(Request $request)
+    {
+        $service = new InvoiceOrderService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->detail($request->all());
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function invoiceOrderDel(Request $request)
+    {
+        $service = new InvoiceOrderService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->del($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function invoiceOrderList(Request $request)
+    {
+        $service = new InvoiceOrderService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->getList($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+}

+ 25 - 0
app/Http/Controllers/Api/LoginController.php

@@ -0,0 +1,25 @@
+<?php
+namespace App\Http\Controllers\Api;
+
+use App\Service\EmployeeService;
+use App\Service\TokenService;
+use Illuminate\Http\Request;
+use Illuminate\Support\Facades\Log;
+
+//登录
+class LoginController extends BaseController
+{
+    public function login(Request $request){
+        $data = $request->only("account","password");
+
+        //登录
+        $result = (new EmployeeService())->loginRule($data);
+        list($bool, $return) = $result;
+        if(! $bool) return $this->json_return(201,'',$return);
+
+        //生成token
+        $jwtToken = TokenService::getToken($return['id']);
+
+        return $this->json_return(200,'', ['id' => $return['id'],'token' => $jwtToken, 'emp_name'=>$return['name'], 'all_top' => $return['all_top']]);
+    }
+}

+ 373 - 0
app/Http/Controllers/Api/OaController.php

@@ -0,0 +1,373 @@
+<?php
+
+namespace App\Http\Controllers\Api;
+
+
+use App\Service\OaService;
+use Illuminate\Http\Request;
+
+
+class OaController extends BaseController
+{
+
+    public function oaList(Request $request)
+    {
+
+        $userData = $request->userData->toArray();
+        $service = new OaService($userData);
+
+        list($status,$data) = $service->oaList($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+
+    }
+
+    public function oaDetail(Request $request)
+    {
+
+
+        $userData = $request->userData->toArray();
+        $service = new OaService($userData);
+        list($status,$data) = $service->oaDetail($request->all());
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+
+    }
+
+    public function oaUserDetail(Request $request){
+        $userData = $request->userData->toArray();
+        $service = new OaService($userData);
+        list($status,$data) = $service->oaUserDetail($request->all());
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function oaParam(Request $request){
+        $userData = $request->userData->toArray();
+        $service = new OaService($userData);
+        list($status,$data) = $service->oaParam($request->all());
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function oaFormula(Request $request){
+        $userData = $request->userData->toArray();
+        $service = new OaService($userData);
+        list($status,$data) = $service->oaFormula($request->all());
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function oaAdd(Request $request)
+    {
+
+
+        $userData = $request->userData->toArray();
+        $service = new OaService($userData);
+        list($status,$data) = $service->oaAdd($request->all());
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+
+    }
+
+    public function oaEdit(Request $request)
+    {
+
+
+        $userData = $request->userData->toArray();
+        $service = new OaService($userData);
+        list($status,$data) = $service->oaEdit($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+
+    }
+
+    public function oaDel(Request $request)
+    {
+
+
+        $userData = $request->userData->toArray();
+        $service = new OaService($userData);
+        list($status,$data) = $service->oaDel($request->all());
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+
+    }
+
+
+    public function createOaOrder(Request $request)
+    {
+
+
+        $userData = $request->userData->toArray();
+        $service = new OaService($userData);
+        list($status,$data) = $service->createOaOrder($request->all());
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(400,$data);
+        }
+
+    }
+
+
+
+
+    public function oaOrderDetail(Request $request)
+    {
+
+
+        $userData = $request->userData->toArray();
+        $service = new OaService($userData);
+        list($status,$data) = $service->oaOrderDetail($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+
+    }
+    public function oaCheck(Request $request)
+    {
+
+        $userData = $request->userData->toArray();
+        $service = new OaService($userData);
+        list($status,$data) = $service->oaCheck($request->all(),$userData,$request);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+
+    }
+
+    public function oaSubType(Request $request)
+    {
+
+
+        $userData = $request->userData->toArray();
+        $service = new OaService($userData);
+        list($status,$data) = $service->oaSubType($request->all());
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+
+    }
+
+    public function oaGetData(Request $request){
+
+        $userData = $request->userData->toArray();
+        $service = new OaService($userData);
+        list($status,$data) = $service->oaGetData($request);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+
+
+    public function oaOrderState(Request $request){
+
+        $userData = $request->userData->toArray();
+        $service = new OaService($userData);
+        list($status,$data) = $service->oaOrderState($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+
+
+
+    public function oaOrderList(Request $request){
+
+        $userData = $request->userData->toArray();
+        $service = new OaService($userData);
+        list($status,$data) = $service->oaOrderList($request);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+
+    public function checkAllOver(Request $request){
+
+        $userData = $request->userData->toArray();
+        $service = new OaService($userData);
+        list($status,$data) = $service->checkAllOver($request);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+
+
+    public function oaCheckMove(Request $request){
+
+        $userData = $request->userData->toArray();
+        $service = new OaService($userData);
+        list($status,$data) = $service->oaCheckMove($request,$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+
+    public function oaSubUserDetail(Request $request){
+
+        $userData = $request->userData->toArray();
+        $service = new OaService($userData);
+        list($status,$data) = $service->oaSubUserDetail($request->all());
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function oaSubRemark(Request $request){
+
+        $userData = $request->userData->toArray();
+        $service = new OaService($userData);
+        list($status,$data) = $service->oaSubRemark($request->all());
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function reportList(Request $request){
+
+        $userData = $request->userData->toArray();
+        $service = new OaService($userData);
+        list($status,$data) = $service->reportList($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+    public function reportCount(Request $request){
+
+        $userData = $request->userData->toArray();
+        $service = new OaService($userData);
+        list($status,$data) = $service->reportCount($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+    public function reportCheck(Request $request){
+
+        $userData = $request->userData->toArray();
+        $service = new OaService($userData);
+        list($status,$data) = $service->reportCheck($request->all());
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+    public function reportTime(Request $request){
+
+        $userData = $request->userData->toArray();
+        $service = new OaService($userData);
+        list($status,$data) = $service->reportTime($request->all());
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+
+    public function oaGetTeamDetail(Request $request){
+
+        $userData = $request->userData->toArray();
+        $service = new OaService($userData);
+        list($status,$data) = $service->oaGetTeamDetail($request->all());
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function oaParamGet(Request $request){
+        $oa = config('oa');
+        foreach ($oa as $key => $value){
+            if($value['menu_id'] == 16) unset($oa[$key]);
+        }
+
+        return $this->json_return(200,'', $oa);
+    }
+
+
+
+
+
+
+
+}

+ 53 - 0
app/Http/Controllers/Api/OperationLogController.php

@@ -0,0 +1,53 @@
+<?php
+
+namespace App\Http\Controllers\Api;
+
+
+use App\Service\OaService;
+use App\Service\OperationLogService;
+use Illuminate\Http\Request;
+
+
+class OperationLogController extends BaseController
+{
+
+
+
+
+
+    public function getOperationList(Request $request)
+    {
+
+
+        $service = new OperationLogService();
+        list($status,$data) = $service->getOperationList($request->all());
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+
+    }
+
+    public function setOperationList(Request $request){
+        $service = new OperationLogService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->setOperationList($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+
+
+
+
+
+
+
+
+}

+ 85 - 0
app/Http/Controllers/Api/PaymentReceiptController.php

@@ -0,0 +1,85 @@
+<?php
+
+namespace App\Http\Controllers\Api;
+
+use App\Service\PaymentReceiptService;
+use Illuminate\Http\Request;
+
+class PaymentReceiptController extends BaseController
+{
+    public function paymentReceiptGet(Request $request){
+        $service = new PaymentReceiptService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->paymentReceiptGet($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function paymentReceiptAdd(Request $request)
+    {
+        $service = new PaymentReceiptService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->customerAdd($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function paymentReceiptEdit(Request $request)
+    {
+        $service = new PaymentReceiptService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->customerEdit($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function paymentReceiptDel(Request $request)
+    {
+        $service = new PaymentReceiptService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->customerDel($request->all());
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function paymentReceiptList(Request $request)
+    {
+        $service = new PaymentReceiptService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->customerList($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function paymentReceiptDetail(Request $request)
+    {
+        $service = new PaymentReceiptService();
+        list($status,$data) = $service->customerDetail($request->all());
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+}

+ 77 - 0
app/Http/Controllers/Api/ProductActivityController.php

@@ -0,0 +1,77 @@
+<?php
+
+namespace App\Http\Controllers\Api;
+
+
+use App\Service\ProductActivityService;
+use Illuminate\Http\Request;
+
+class ProductActivityController extends BaseController
+{
+    public function productEdit(Request $request)
+    {
+        $service = new ProductActivityService();
+        $user = $request->userData->toArray();
+        list($status,$data) = $service->productEdit($request->all(),$user);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function productAdd(Request $request)
+    {
+        $service = new ProductActivityService();
+        $user = $request->userData->toArray();
+        list($status,$data) = $service->productAdd($request->all(),$user);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+
+    }
+
+    public function productDel(Request $request)
+    {
+        $service = new ProductActivityService();
+        $user = $request->userData->toArray();
+        list($status,$data) = $service->productDel($request->all());
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+
+    }
+
+    public function productList(Request $request)
+    {
+        $service = new ProductActivityService();
+        $user = $request->userData->toArray();
+        list($status,$data) = $service->productList($request->all(),$user);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function productDetail(Request $request)
+    {
+        $service = new ProductActivityService();
+        $user = $request->userData->toArray();
+        list($status,$data) = $service->productDetail($request->all(),$user);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+}

+ 155 - 0
app/Http/Controllers/Api/ProductController.php

@@ -0,0 +1,155 @@
+<?php
+
+namespace App\Http\Controllers\Api;
+
+
+use App\Service\ProductService;
+use Illuminate\Http\Request;
+
+class ProductController extends BaseController
+{
+    public function productCategoryEdit(Request $request)
+    {
+        $service = new ProductService();
+        $user = $request->userData->toArray();
+        list($status,$data) = $service->productCategoryEdit($request->all(),$user);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+    
+    public function productCategoryAdd(Request $request)
+    {
+        $service = new ProductService();
+        $user = $request->userData->toArray();
+        list($status,$data) = $service->productCategoryAdd($request->all(),$user);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+    
+    public function productCategoryDel(Request $request)
+    {
+        $service = new ProductService();
+        $user = $request->userData->toArray();
+        list($status,$data) = $service->productCategoryDel($request->all());
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function productCategoryList(Request $request)
+    {
+        $service = new ProductService();
+        $user = $request->userData->toArray();
+        list($status,$data) = $service->productCategoryList($request->all(),$user);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function productCategoryList2(Request $request)
+    {
+        $service = new ProductService();
+        $user = $request->userData->toArray();
+        list($status,$data) = $service->productCategoryList2($request->all(),$user);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function productEdit(Request $request)
+    {
+        $service = new ProductService();
+        $user = $request->userData->toArray();
+        list($status,$data) = $service->productEdit($request->all(),$user);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function productAdd(Request $request)
+    {
+        $service = new ProductService();
+        $user = $request->userData->toArray();
+        list($status,$data) = $service->productAdd($request->all(),$user);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+
+    }
+
+    public function productDel(Request $request)
+    {
+        $service = new ProductService();
+        $user = $request->userData->toArray();
+        list($status,$data) = $service->productDel($request->all());
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+
+    }
+
+    public function productList(Request $request)
+    {
+        $service = new ProductService();
+        $user = $request->userData->toArray();
+        list($status,$data) = $service->productList($request->all(),$user);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function productList2(Request $request)
+    {
+        $service = new ProductService();
+        $user = $request->userData->toArray();
+        list($status,$data) = $service->productList2($request->all(),$user);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function productDetail(Request $request)
+    {
+        $service = new ProductService();
+        $user = $request->userData->toArray();
+        list($status,$data) = $service->productDetail($request->all(),$user);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+}

+ 76 - 0
app/Http/Controllers/Api/ProductInventoryController.php

@@ -0,0 +1,76 @@
+<?php
+
+namespace App\Http\Controllers\Api;
+
+
+use App\Service\ProductInventoryService;
+use App\Service\ProductService;
+use Illuminate\Http\Request;
+
+class ProductInventoryController extends BaseController
+{
+    public function productInventoryList(Request $request)
+    {
+        $service = new ProductInventoryService();
+        $user = $request->userData->toArray();
+        list($status,$data) = $service->productInventoryList($request->all(),$user);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function productInventoryStockList(Request $request)
+    {
+        $service = new ProductInventoryService();
+        $user = $request->userData->toArray();
+        list($status,$data) = $service->productInventoryStockList($request->all(),$user);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function productInventorySetList(Request $request)
+    {
+        $service = new ProductInventoryService();
+        $user = $request->userData->toArray();
+        list($status,$data) = $service->productInventorySetList($request->all(),$user);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function productInventorySet(Request $request)
+    {
+        $service = new ProductInventoryService();
+        $user = $request->userData->toArray();
+        list($status,$data) = $service->productInventorySet($request->all(),$user);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function getMySetting(Request $request)
+    {
+        $service = new ProductInventoryService();
+        $user = $request->userData->toArray();
+        list($status,$data) = $service->getMySetting($request->all(),$user);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+}

+ 76 - 0
app/Http/Controllers/Api/PurchaseOrderController.php

@@ -0,0 +1,76 @@
+<?php
+
+namespace App\Http\Controllers\Api;
+
+use App\Service\ProductService;
+use App\Service\PurchaseOrderService;
+use Illuminate\Http\Request;
+
+class PurchaseOrderController extends BaseController
+{
+    public function purchaseOrderAdd(Request $request)
+    {
+        $service = new PurchaseOrderService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->add($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function purchaseOrderEdit(Request $request)
+    {
+        $service = new PurchaseOrderService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->edit($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function purchaseOrderDetail(Request $request)
+    {
+        $service = new PurchaseOrderService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->detail($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function purchaseOrderDel(Request $request)
+    {
+        $service = new PurchaseOrderService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->del($request->all());
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function purchaseOrderList(Request $request)
+    {
+        $service = new PurchaseOrderService();
+        if(is_array($request->userData)) $userData = $request->userData;
+        else $userData = $request->userData->toArray();
+        list($status,$data) = $service->getList($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+}

+ 87 - 0
app/Http/Controllers/Api/PurchaseOrderSpecialController.php

@@ -0,0 +1,87 @@
+<?php
+
+namespace App\Http\Controllers\Api;
+
+use App\Service\PurchaseOrderSpecialService;
+use Illuminate\Http\Request;
+
+class PurchaseOrderSpecialController extends BaseController
+{
+    public function purchaseOrderAdd(Request $request)
+    {
+        $service = new PurchaseOrderSpecialService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->add($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function purchaseOrderEdit(Request $request)
+    {
+        $service = new PurchaseOrderSpecialService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->edit($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function purchaseOrderDetail(Request $request)
+    {
+        $service = new PurchaseOrderSpecialService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->detail($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function purchaseOrderDel(Request $request)
+    {
+        $service = new PurchaseOrderSpecialService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->del($request->all());
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function purchaseOrderList(Request $request)
+    {
+        $service = new PurchaseOrderSpecialService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->getList($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function purchaseOrderConfirm(Request $request)
+    {
+        $service = new PurchaseOrderSpecialService();
+        $user = $request->userData->toArray();
+        list($status,$data) = $service->purchaseOrderConfirm($request->all(),$user);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+}

+ 22 - 0
app/Http/Controllers/Api/RangeController.php

@@ -0,0 +1,22 @@
+<?php
+
+namespace App\Http\Controllers\Api;
+
+use App\Service\RangeService;
+use Illuminate\Http\Request;
+
+class RangeController extends BaseController
+{
+    public function seeRange(Request $request)
+    {
+        $service = new RangeService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->seeRange($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+}

+ 74 - 0
app/Http/Controllers/Api/ReturnExchangeOrderController.php

@@ -0,0 +1,74 @@
+<?php
+
+namespace App\Http\Controllers\Api;
+
+use App\Service\ReturnExchangeOrderService;
+use Illuminate\Http\Request;
+
+class ReturnExchangeOrderController extends BaseController
+{
+    public function ReturnExchangeOrderAdd(Request $request)
+    {
+        $service = new ReturnExchangeOrderService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->add($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function ReturnExchangeOrderEdit(Request $request)
+    {
+        $service = new ReturnExchangeOrderService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->edit($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function ReturnExchangeOrderDetail(Request $request)
+    {
+        $service = new ReturnExchangeOrderService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->detail($request->all());
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function ReturnExchangeOrderDel(Request $request)
+    {
+        $service = new ReturnExchangeOrderService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->del($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function ReturnExchangeOrderList(Request $request)
+    {
+        $service = new ReturnExchangeOrderService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->getList($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+}

+ 125 - 0
app/Http/Controllers/Api/SalesOrderController.php

@@ -0,0 +1,125 @@
+<?php
+
+namespace App\Http\Controllers\Api;
+
+use App\Service\SalesOrderService;
+use Illuminate\Http\Request;
+
+class SalesOrderController extends BaseController
+{
+    public function salesOrderAdd(Request $request)
+    {
+        $service = new SalesOrderService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->salesOrderAdd($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function salesOrderEdit(Request $request)
+    {
+        $service = new SalesOrderService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->salesOrderEdit($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function salesOrderDel(Request $request)
+    {
+        $service = new SalesOrderService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->salesOrderDel($request->all());
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function salesOrderList(Request $request)
+    {
+        $service = new SalesOrderService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->salesOrderList($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function salesOrderDetail(Request $request)
+    {
+        $service = new SalesOrderService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->detail($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function salesOrderGet(Request $request)
+    {
+        $service = new SalesOrderService();
+        list($status,$data) = $service->salesOrderGet($request->all());
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function salesOrderDispatchSale(Request $request)
+    {
+        $service = new SalesOrderService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->salesOrderDispatchSale($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function salesOrderDispatchCompany(Request $request)
+    {
+        $service = new SalesOrderService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->salesOrderDispatchCompany($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function batchConfirm(Request $request)
+    {
+        $service = new SalesOrderService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->batchConfirm($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+}

+ 155 - 0
app/Http/Controllers/Api/ScheduleController.php

@@ -0,0 +1,155 @@
+<?php
+
+namespace App\Http\Controllers\Api;
+
+
+use App\Service\ScheduleService;
+use Illuminate\Http\Request;
+
+class ScheduleController extends BaseController
+{
+    public function edit(Request $request)
+    {
+        $service = new ScheduleService();
+        $user = $request->userData->toArray();
+        list($status,$data) = $service->edit($request->all(),$user);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function add(Request $request)
+    {
+        $service = new ScheduleService();
+        $user = $request->userData->toArray();
+        list($status,$data) = $service->add($request->all(),$user);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+
+    }
+
+    public function del(Request $request)
+    {
+        $service = new ScheduleService();
+        $user = $request->userData->toArray();
+        list($status,$data) = $service->del($request->all());
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+
+    }
+
+    public function getList(Request $request)
+    {
+        $service = new ScheduleService();
+        $user = $request->userData->toArray();
+        list($status,$data) = $service->getList($request->all(),$user);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function detail(Request $request)
+    {
+        $service = new ScheduleService();
+        $user = $request->userData->toArray();
+        list($status,$data) = $service->detail($request->all(),$user);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function scheduleGetForConstruction(Request $request)
+    {
+        $service = new ScheduleService();
+        $user = $request->userData->toArray();
+        list($status,$data) = $service->scheduleGetForConstruction($request->all(),$user);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function getScheduleSetting(Request $request)
+    {
+        $service = new ScheduleService();
+        $user = $request->userData->toArray();
+        list($status,$data) = $service->getScheduleSetting($request->all(),$user);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function getSettingTotal(Request $request)
+    {
+        $service = new ScheduleService();
+        $user = $request->userData->toArray();
+        list($status,$data) = $service->getSettingTotal($request->all(),$user);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function getSettingGetDetail(Request $request)
+    {
+        $service = new ScheduleService();
+        $user = $request->userData->toArray();
+        list($status,$data) = $service->getSettingGetDetail($request->all(),$user);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function getSettingTotal2(Request $request)
+    {
+        $service = new ScheduleService();
+        $user = $request->userData->toArray();
+        list($status,$data) = $service->getSettingTotal2($request->all(),$user);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function getSettingGetDetail2(Request $request)
+    {
+        $service = new ScheduleService();
+        $user = $request->userData->toArray();
+        list($status,$data) = $service->getSettingGetDetail2($request->all(),$user);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+}

+ 74 - 0
app/Http/Controllers/Api/SportsBagController.php

@@ -0,0 +1,74 @@
+<?php
+
+namespace App\Http\Controllers\Api;
+
+use App\Service\SportsBagService;
+use Illuminate\Http\Request;
+
+class SportsBagController extends BaseController
+{
+    public function add(Request $request)
+    {
+        $service = new SportsBagService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->add($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function edit(Request $request)
+    {
+        $service = new SportsBagService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->edit($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function detail(Request $request)
+    {
+        $service = new SportsBagService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->detail($request->all());
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function del(Request $request)
+    {
+        $service = new SportsBagService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->del($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function orderList(Request $request)
+    {
+        $service = new SportsBagService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->getList($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+}

+ 76 - 0
app/Http/Controllers/Api/StorehouseController.php

@@ -0,0 +1,76 @@
+<?php
+
+namespace App\Http\Controllers\Api;
+
+
+use App\Service\BoxService;
+use App\Service\StorehouseService;
+use Illuminate\Http\Request;
+
+
+class StorehouseController extends BaseController
+{
+    public function add(Request $request)
+    {
+        $service = new StorehouseService();
+        list($status,$data) = $service->add($request->all(), $userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function edit(Request $request)
+    {
+        $service = new StorehouseService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->edit($request->all(), $userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function del(Request $request)
+    {
+        $service = new StorehouseService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->del($request->all());
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+
+    public function storehouseList(Request $request)
+    {
+        $service = new StorehouseService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->storehouseList($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function storehouseDetail(Request $request)
+    {
+        $service = new StorehouseService();
+        list($status,$data) = $service->storeDetail($request->all());
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+}

+ 74 - 0
app/Http/Controllers/Api/SupplierController.php

@@ -0,0 +1,74 @@
+<?php
+
+namespace App\Http\Controllers\Api;
+
+use App\Service\SupplierService;
+use Illuminate\Http\Request;
+
+class SupplierController extends BaseController
+{
+    //供应商
+    public function customerAdd(Request $request)
+    {
+        $service = new SupplierService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->customerAdd($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function customerEdit(Request $request)
+    {
+        $service = new SupplierService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->customerEdit($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function customerDel(Request $request)
+    {
+        $service = new SupplierService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->customerDel($request->all());
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function customerList(Request $request)
+    {
+        $service = new SupplierService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->customerList($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function customerDetail(Request $request)
+    {
+        $service = new SupplierService();
+        list($status,$data) = $service->customerDetail($request->all());
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+}

+ 89 - 0
app/Http/Controllers/Api/SysMenuController.php

@@ -0,0 +1,89 @@
+<?php
+
+namespace App\Http\Controllers\Api;
+
+use App\Service\SysMenuService;
+use Illuminate\Http\Request;
+
+class SysMenuController extends BaseController
+{
+    public function add(Request $request)
+    {
+        $service = new SysMenuService();
+        $user = $request->userData->toArray();
+        list($status,$data) = $service->add($request->all(),$user);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function edit(Request $request)
+    {
+        $service = new SysMenuService();
+        $user = $request->userData->toArray();
+        list($status,$data) = $service->edit($request->all());
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function del(Request $request)
+    {
+        $service = new SysMenuService();
+        $user = $request->userData->toArray();
+        list($status,$data) = $service->del($request->all());
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function menuList(Request $request)
+    {
+        $service = new SysMenuService();
+        $user = $request->userData->toArray();
+        list($status,$data) = $service->menuList($request->all(),$user);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function menuMove(Request $request){
+        $service = new SysMenuService();
+        list($status,$data) = $service->menuMove($request->all());
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function menuExport(Request $request){
+        $service = new SysMenuService();
+        list($status,$data) = $service->export($request->all());
+
+        if($status){
+            return $this->json_return(200,'',['file'=>$data]);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    //获取文件的位置
+    public function getExport($file_name){
+        $path = storage_path() . "/app/public/export/".$file_name;
+        return response()->file($path)->deleteFileAfterSend(true);
+    }
+}

+ 35 - 0
app/Http/Controllers/Api/TableHeadController.php

@@ -0,0 +1,35 @@
+<?php
+
+namespace App\Http\Controllers\Api;
+
+use App\Service\TableHeadService;
+use Illuminate\Http\Request;
+
+class TableHeadController extends BaseController
+{
+    public function tableHeadAdd(Request $request)
+    {
+        $service = new TableHeadService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->tableheadAdd($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function tableHeadGet(Request $request)
+    {
+        $service = new TableHeadService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->tableheadGet($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+}

+ 74 - 0
app/Http/Controllers/Api/TakeOrderController.php

@@ -0,0 +1,74 @@
+<?php
+
+namespace App\Http\Controllers\Api;
+
+use App\Service\TakeOrderService;
+use Illuminate\Http\Request;
+
+class TakeOrderController extends BaseController
+{
+    public function invoiceOrderAdd(Request $request)
+    {
+        $service = new TakeOrderService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->add($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function invoiceOrderEdit(Request $request)
+    {
+        $service = new TakeOrderService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->edit($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function invoiceOrderDetail(Request $request)
+    {
+        $service = new TakeOrderService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->detail($request->all());
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function invoiceOrderDel(Request $request)
+    {
+        $service = new TakeOrderService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->del($request->all());
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function invoiceOrderList(Request $request)
+    {
+        $service = new TakeOrderService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->getList($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+}

+ 74 - 0
app/Http/Controllers/Api/TechnologyController.php

@@ -0,0 +1,74 @@
+<?php
+
+namespace App\Http\Controllers\Api;
+
+use App\Service\TechnologyService;
+use Illuminate\Http\Request;
+
+class TechnologyController extends BaseController
+{
+    public function technologyList(Request $request)
+    {
+        $service = new TechnologyService();
+        $user = $request->userData->toArray();
+        list($status,$data) = $service->technologyList($request->all(),$request->all());
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function technologyEdit(Request $request)
+    {
+        $service = new TechnologyService();
+        $user = $request->userData->toArray();
+        list($status,$data) = $service->technologyEdit($request->all(),$request->all());
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function technologyAdd(Request $request)
+    {
+        $service = new TechnologyService();
+        $user = $request->userData->toArray();
+        list($status,$data) = $service->technologyAdd($request->all(),$request->all());
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function technologyDel(Request $request)
+    {
+        $service = new TechnologyService();
+        $user = $request->userData->toArray();
+        list($status,$data) = $service->technologyDel($request->all(),$request->all());
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function technologyCopy(Request $request)
+    {
+        $service = new TechnologyService();
+        $user = $request->userData->toArray();
+        list($status,$data) = $service->technologyCopy($request->all(),$request->all());
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+}

+ 90 - 0
app/Http/Controllers/Api/TestController.php

@@ -0,0 +1,90 @@
+<?php
+
+namespace App\Http\Controllers\Api;
+
+
+use App\Model\BoxDetail;
+use App\Service\Box\BoxHookService;
+use App\Service\EmployeeService;
+use App\Service\MeasureService;
+use App\Service\OaService;
+use App\Service\OperationLogService;
+use Illuminate\Http\Request;
+use Illuminate\Support\Facades\Hash;
+
+
+class TestController extends BaseController
+{
+
+
+    public function tt(){
+
+    }
+
+    public function boxInsert(){
+
+    }
+
+    public function aa(){
+//       (new OaService())->sendWxMsg(1,3,2,48,["T9RMO.202408071529012839","拒绝","2024-08-07 15:29:44","(未填写原因)"],"/pages/ReturnExchangeOrder/detail/detail?order_number=55");
+
+        //测试消息发送
+        $tmp_data = [
+            "11111",
+            '222',
+            '审核通过',
+            date('Y-m-d H:i:s'),
+        ];
+        (new OaService())->sendWxMsg(179,1,0,37,$tmp_data,"/pageA/pages/SalesOrder/detail/detail?order_number=T9XX.202408091241002925");
+        (new OaService())->sendWxMsg(179,1,0,37,$tmp_data,"/pageA/pages/SalesOrder/detail/detail?order_number=T9XX.2024080912410029251");
+
+        //测试消息发送
+        $tmp_data = [
+            "22222",
+            '222',
+            '审核通过',
+            '22222',
+            date('Y-m-d H:i:s'),
+
+        ];
+//        (new OaService())->sendWxMsg(1,2,1,37,$tmp_data,"/pages/SalesOrder/index/index");
+
+        //测试消息发送
+        $tmp_data = [
+            "333333",
+            '审核通过',
+            date('Y-m-d H:i:s'),
+            '22222',
+        ];
+//        (new OaService())->sendWxMsg(1,3,2,37,$tmp_data,"/pages/SalesOrder/index/index");
+die;
+        $params = json_decode('{"api_key":"d3848b47-4179-4b02-8d32-b78cd7672c6c","return_url":"https://payment.rummyliver.in/notify/s2pay/payment","mode":"LIVE","order_id":"1710493215363410880003","amount":"501.00","currency":"INR","description":"for payment","name":"iahfi","email":"jvqbgvv2908699@outlook.com","phone":"9329086994","city":"Mumbai","zip_code":"400002","country":"IND"}',true);
+
+        $hash_columns = ['merchant_reference_number','Amount','account_name','account_number','ifsc_code','bank_name','bank_branch','transfer_type','address_line_1', 'address_line_2', 'amount', 'api_key', 'city', 'country', 'currency', 'description', 'email', 'mode', 'name', 'order_id', 'phone', 'return_url', 'state', 'udf1', 'udf2', 'udf3', 'udf4', 'udf5', 'zip_code',];
+        sort($hash_columns);
+        $hash_data = '3b1db341fa70abc03af5c3676811a82bec99673f';
+        foreach ($hash_columns as $column) {
+            if (isset($params[$column])) {
+                if (strlen($params[$column]) > 0) {
+                    $hash_data .= '|' . trim($params[$column]);
+                }
+            }
+        }
+        $hash = strtoupper(hash("sha512", $hash_data));
+        var_dump($hash);die;
+        return $hash;
+
+        $text = '这是测试';
+        $key = '72f8c912d462b1md034ff46cbedaskc80bf';
+        $sign = Hash::make($text.$key);
+        var_dump(Hash::check('这是测试'.'72f8c912d462b1md034ff46cbedaskc80bf',$sign));
+        var_dump($sign);die;
+    }
+
+
+
+
+
+
+
+}

+ 95 - 0
app/Http/Controllers/Api/WeixinController.php

@@ -0,0 +1,95 @@
+<?php
+
+namespace App\Http\Controllers\Api;
+
+use App\Service\Weixin\WeixinService;
+use App\Service\Weixin\WxEmployeeService;
+use Illuminate\Http\Request;
+
+class WeixinController extends BaseController
+{
+    //开发者密码:
+    /**
+     * 用于微信token验证,全部通用,前提token都为qingyao
+     * @param Request $request
+     * @return void
+     */
+    public function weixin(Request $request)
+    {
+        file_put_contents('1.txt',json_encode($request->all()));
+//        die('adsds');
+//        $data = json_decode('{"signature":"fe04bfbb92a1c073e9f0829d3c4e48e1b40403aa","echostr":"5841396639871246203","timestamp":"1695188315","nonce":"1459788183"}',true);
+        $data = $request->all();
+        $signature = $data["signature"];
+        $timestamp = $data["timestamp"];
+        $nonce = $data["nonce"];
+
+        $token = 'qingyao';
+        $tmpArr = array($token, $timestamp, $nonce);
+        sort($tmpArr, SORT_STRING);
+        $tmpStr = implode( $tmpArr );
+        $tmpStr = sha1( $tmpStr );
+//        var_dump($tmpStr);
+//        var_dump($signature);die;
+        if( $tmpStr == $signature ){
+            echo $data['echostr'];die;
+        }else{
+            die('fail');
+        }
+    }
+
+    public function setWebHook(Request $request){
+        $service = new WeixinService();
+        list($status,$msg) = $service->setWebHook($request->all());
+        return $this->json_return($status,$msg,'');
+    }
+
+    /**
+     * 重定向获取unionid
+     * @param Request $request
+     * @return void
+     */
+    public function getUnionid(Request $request){
+        $service = new WeixinService();
+        $res = $service->getUnionid($request->all());
+    }
+
+    /**
+     * 获取openid
+     * @param Request $request
+     * @return void
+     */
+    public function getOpenid(Request $request){
+        $service = new WeixinService();
+        list($status,$data) = $service->getOpenid($request->all());
+        if ($status) {
+            return $this->json_return(200, '', $data);
+        } else {
+            return $this->json_return(201, $data);
+        }
+    }
+
+    public function setUser(Request $request)
+    {
+        $service = new WxEmployeeService();
+        list($status, $data) = $service->setUser($request->all());
+
+        if ($status) {
+            return $this->json_return(200, '', $data);
+        } else {
+            return $this->json_return(201, $data);
+        }
+    }
+
+    public function login(Request $request)
+    {
+        $service = new WxEmployeeService();
+        list($status, $data) = $service->login($request->all(),$request->header('ciphertext'));
+
+        if ($status) {
+            return $this->json_return(200, '', $data);
+        } else {
+            return $this->json_return(201, $data);
+        }
+    }
+}

+ 119 - 0
app/Http/Controllers/Api/WxController.php

@@ -0,0 +1,119 @@
+<?php
+
+namespace App\Http\Controllers\Api;
+
+use App\Service\PurchaseOrderService;
+use App\Service\SalesOrderService;
+use App\Service\Weixin\WeixinService;
+use App\Service\Wx\WxEmployeeService;
+use App\Service\Wx\WxService;
+use Illuminate\Http\Request;
+
+class WxController extends BaseController
+{
+    public function setUser(Request $request)
+    {
+        $service = new WxEmployeeService();
+        list($status, $data) = $service->setUser($request->all());
+
+        if ($status) {
+            return $this->json_return(200, '', $data);
+        } else {
+            return $this->json_return(201, $data);
+        }
+    }
+
+    public function setMobile(Request $request)
+    {
+        $service = new WxEmployeeService();
+        list($status, $data) = $service->setMobile($request->all());
+
+        if ($status) {
+            return $this->json_return(200, '', $data);
+        } else {
+            return $this->json_return(201, $data);
+        }
+    }
+
+    public function login(Request $request)
+    {
+        $service = new WxEmployeeService();
+        list($status, $data) = $service->login($request->all());
+
+        if ($status) {
+            return $this->json_return(200, '', $data);
+        } else {
+            return $this->json_return(201, $data);
+        }
+    }
+
+    public function saleOrderList(Request $request){
+        $service = new SalesOrderService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->salesOrderListsalesOrderWxList($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
+    public function purchaseOrderList(Request $request){
+        $service = new PurchaseOrderService();
+        $userData = $request->userData->toArray();
+        list($status,$data) = $service->getList($request->all(),$userData);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+    public function wxH5(Request $request){
+        file_put_contents('1.txt',json_encode($request->all()));
+//        die('adsds');
+//        $data = json_decode('{"signature":"fe04bfbb92a1c073e9f0829d3c4e48e1b40403aa","echostr":"5841396639871246203","timestamp":"1695188315","nonce":"1459788183"}',true);
+        $data = $request->all();
+        $signature = $data["signature"];
+        $timestamp = $data["timestamp"];
+        $nonce = $data["nonce"];
+
+        $token = 'qingyaokeji';
+        $tmpArr = array($token, $timestamp, $nonce);
+        sort($tmpArr, SORT_STRING);
+        $tmpStr = implode( $tmpArr );
+        $tmpStr = sha1( $tmpStr );
+//        var_dump($tmpStr);
+//        var_dump($signature);die;
+        if( $tmpStr == $signature && isset($data['echostr']) ){
+            echo $data['echostr'];die;
+        }else{
+            die('fail');
+        }
+    }
+
+    public function ttt(){
+        $a = new WxService();
+        //[88,1,0,37,["T9XX.20240502","\u5f85\u5ba1\u6838","\u8d85\u7ea7\u7ba1\u7406\u5458","\u8ba2\u5355\u5408\u540c","2024-05-02 02:50:04"]]
+        $user_id = 88;
+        $type = 1;
+        $state = 0;
+        $menu_id = 37;
+        $order_data = json_decode('["刁法森","\u5201\u6cd5\u68ee","2024-05-02 03:09:36","T9XX.202405020249365948(\u8ba2\u5355\u5408\u540c)"]',true);
+        $a = $a->wx_sendMsg($user_id,$type,$state,$menu_id,$order_data);
+
+        return $a;
+    }
+
+    public function getTopMessage(Request $request){
+        $service = new WxEmployeeService();
+        list($status, $data) = $service->getTopMessage($request->all());
+
+        if ($status) {
+            return $this->json_return(200, '', $data);
+        } else {
+            return $this->json_return(201, $data);
+        }
+    }
+}

+ 40 - 0
app/Http/Controllers/Auth/ConfirmPasswordController.php

@@ -0,0 +1,40 @@
+<?php
+
+namespace App\Http\Controllers\Auth;
+
+use App\Http\Controllers\Controller;
+use App\Providers\RouteServiceProvider;
+use Illuminate\Foundation\Auth\ConfirmsPasswords;
+
+class ConfirmPasswordController extends Controller
+{
+    /*
+    |--------------------------------------------------------------------------
+    | Confirm Password Controller
+    |--------------------------------------------------------------------------
+    |
+    | This controller is responsible for handling password confirmations and
+    | uses a simple trait to include the behavior. You're free to explore
+    | this trait and override any functions that require customization.
+    |
+    */
+
+    use ConfirmsPasswords;
+
+    /**
+     * Where to redirect users when the intended url fails.
+     *
+     * @var string
+     */
+    protected $redirectTo = RouteServiceProvider::HOME;
+
+    /**
+     * Create a new controller instance.
+     *
+     * @return void
+     */
+    public function __construct()
+    {
+        $this->middleware('auth');
+    }
+}

+ 22 - 0
app/Http/Controllers/Auth/ForgotPasswordController.php

@@ -0,0 +1,22 @@
+<?php
+
+namespace App\Http\Controllers\Auth;
+
+use App\Http\Controllers\Controller;
+use Illuminate\Foundation\Auth\SendsPasswordResetEmails;
+
+class ForgotPasswordController extends Controller
+{
+    /*
+    |--------------------------------------------------------------------------
+    | Password Reset Controller
+    |--------------------------------------------------------------------------
+    |
+    | This controller is responsible for handling password reset emails and
+    | includes a trait which assists in sending these notifications from
+    | your application to your users. Feel free to explore this trait.
+    |
+    */
+
+    use SendsPasswordResetEmails;
+}

+ 40 - 0
app/Http/Controllers/Auth/LoginController.php

@@ -0,0 +1,40 @@
+<?php
+
+namespace App\Http\Controllers\Auth;
+
+use App\Http\Controllers\Controller;
+use App\Providers\RouteServiceProvider;
+use Illuminate\Foundation\Auth\AuthenticatesUsers;
+
+class LoginController extends Controller
+{
+    /*
+    |--------------------------------------------------------------------------
+    | Login Controller
+    |--------------------------------------------------------------------------
+    |
+    | This controller handles authenticating users for the application and
+    | redirecting them to your home screen. The controller uses a trait
+    | to conveniently provide its functionality to your applications.
+    |
+    */
+
+    use AuthenticatesUsers;
+
+    /**
+     * Where to redirect users after login.
+     *
+     * @var string
+     */
+    protected $redirectTo = RouteServiceProvider::HOME;
+
+    /**
+     * Create a new controller instance.
+     *
+     * @return void
+     */
+    public function __construct()
+    {
+        $this->middleware('guest')->except('logout');
+    }
+}

+ 73 - 0
app/Http/Controllers/Auth/RegisterController.php

@@ -0,0 +1,73 @@
+<?php
+
+namespace App\Http\Controllers\Auth;
+
+use App\Http\Controllers\Controller;
+use App\Providers\RouteServiceProvider;
+use App\User;
+use Illuminate\Foundation\Auth\RegistersUsers;
+use Illuminate\Support\Facades\Hash;
+use Illuminate\Support\Facades\Validator;
+
+class RegisterController extends Controller
+{
+    /*
+    |--------------------------------------------------------------------------
+    | Register Controller
+    |--------------------------------------------------------------------------
+    |
+    | This controller handles the registration of new users as well as their
+    | validation and creation. By default this controller uses a trait to
+    | provide this functionality without requiring any additional code.
+    |
+    */
+
+    use RegistersUsers;
+
+    /**
+     * Where to redirect users after registration.
+     *
+     * @var string
+     */
+    protected $redirectTo = RouteServiceProvider::HOME;
+
+    /**
+     * Create a new controller instance.
+     *
+     * @return void
+     */
+    public function __construct()
+    {
+        $this->middleware('guest');
+    }
+
+    /**
+     * Get a validator for an incoming registration request.
+     *
+     * @param  array  $data
+     * @return \Illuminate\Contracts\Validation\Validator
+     */
+    protected function validator(array $data)
+    {
+        return Validator::make($data, [
+            'name' => ['required', 'string', 'max:255'],
+            'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
+            'password' => ['required', 'string', 'min:8', 'confirmed'],
+        ]);
+    }
+
+    /**
+     * Create a new user instance after a valid registration.
+     *
+     * @param  array  $data
+     * @return \App\User
+     */
+    protected function create(array $data)
+    {
+        return User::create([
+            'name' => $data['name'],
+            'email' => $data['email'],
+            'password' => Hash::make($data['password']),
+        ]);
+    }
+}

+ 30 - 0
app/Http/Controllers/Auth/ResetPasswordController.php

@@ -0,0 +1,30 @@
+<?php
+
+namespace App\Http\Controllers\Auth;
+
+use App\Http\Controllers\Controller;
+use App\Providers\RouteServiceProvider;
+use Illuminate\Foundation\Auth\ResetsPasswords;
+
+class ResetPasswordController extends Controller
+{
+    /*
+    |--------------------------------------------------------------------------
+    | Password Reset Controller
+    |--------------------------------------------------------------------------
+    |
+    | This controller is responsible for handling password reset requests
+    | and uses a simple trait to include this behavior. You're free to
+    | explore this trait and override any methods you wish to tweak.
+    |
+    */
+
+    use ResetsPasswords;
+
+    /**
+     * Where to redirect users after resetting their password.
+     *
+     * @var string
+     */
+    protected $redirectTo = RouteServiceProvider::HOME;
+}

+ 42 - 0
app/Http/Controllers/Auth/VerificationController.php

@@ -0,0 +1,42 @@
+<?php
+
+namespace App\Http\Controllers\Auth;
+
+use App\Http\Controllers\Controller;
+use App\Providers\RouteServiceProvider;
+use Illuminate\Foundation\Auth\VerifiesEmails;
+
+class VerificationController extends Controller
+{
+    /*
+    |--------------------------------------------------------------------------
+    | Email Verification Controller
+    |--------------------------------------------------------------------------
+    |
+    | This controller is responsible for handling email verification for any
+    | user that recently registered with the application. Emails may also
+    | be re-sent if the user didn't receive the original email message.
+    |
+    */
+
+    use VerifiesEmails;
+
+    /**
+     * Where to redirect users after verification.
+     *
+     * @var string
+     */
+    protected $redirectTo = RouteServiceProvider::HOME;
+
+    /**
+     * Create a new controller instance.
+     *
+     * @return void
+     */
+    public function __construct()
+    {
+        $this->middleware('auth');
+        $this->middleware('signed')->only('verify');
+        $this->middleware('throttle:6,1')->only('verify', 'resend');
+    }
+}

+ 13 - 0
app/Http/Controllers/Controller.php

@@ -0,0 +1,13 @@
+<?php
+
+namespace App\Http\Controllers;
+
+use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
+use Illuminate\Foundation\Bus\DispatchesJobs;
+use Illuminate\Foundation\Validation\ValidatesRequests;
+use Illuminate\Routing\Controller as BaseController;
+
+class Controller extends BaseController
+{
+    use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
+}

+ 88 - 0
app/Http/Kernel.php

@@ -0,0 +1,88 @@
+<?php
+
+namespace App\Http;
+
+use Illuminate\Foundation\Http\Kernel as HttpKernel;
+
+class Kernel extends HttpKernel
+{
+    /**
+     * The application's global HTTP middleware stack.
+     *
+     * These middleware are run during every request to your application.
+     *
+     * @var array
+     */
+    protected $middleware = [
+        \App\Http\Middleware\TrustProxies::class,
+        \App\Http\Middleware\CheckForMaintenanceMode::class,
+        \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
+        \App\Http\Middleware\TrimStrings::class,
+        \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
+        \Fruitcake\Cors\HandleCors::class,
+        \App\Http\Middleware\RequestLog::class,
+    ];
+
+    /**
+     * The application's route middleware groups.
+     *
+     * @var array
+     */
+    protected $middlewareGroups = [
+        'web' => [
+            \App\Http\Middleware\EncryptCookies::class,
+            \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
+            \Illuminate\Session\Middleware\StartSession::class,
+            // \Illuminate\Session\Middleware\AuthenticateSession::class,
+            \Illuminate\View\Middleware\ShareErrorsFromSession::class,
+            \App\Http\Middleware\VerifyCsrfToken::class,
+            \Illuminate\Routing\Middleware\SubstituteBindings::class,
+        ],
+
+        'api' => [
+            'throttle:180,1',
+            \Illuminate\Routing\Middleware\SubstituteBindings::class,
+        ],
+    ];
+
+    /**
+     * The application's route middleware.
+     *
+     * These middleware may be assigned to groups or used individually.
+     *
+     * @var array
+     */
+    protected $routeMiddleware = [
+        'auth' => \App\Http\Middleware\Authenticate::class,
+        'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
+        'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
+        'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
+        'can' => \Illuminate\Auth\Middleware\Authorize::class,
+        'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
+        'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class,
+        'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
+        'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
+        'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
+        'checkLogin' => \App\Http\Middleware\CheckLogin::class,
+        'checkWx' => \App\Http\Middleware\CheckWx::class,
+        'checkWeixin' => \App\Http\Middleware\CheckWeinxin::class,
+        'OssFileDeal' => \App\Http\Middleware\OssFileDeal::class,
+    ];
+
+    /**
+     * The priority-sorted list of middleware.
+     *
+     * This forces non-global middleware to always be in the given order.
+     *
+     * @var array
+     */
+    protected $middlewarePriority = [
+        \Illuminate\Session\Middleware\StartSession::class,
+        \Illuminate\View\Middleware\ShareErrorsFromSession::class,
+        \App\Http\Middleware\Authenticate::class,
+        \Illuminate\Routing\Middleware\ThrottleRequests::class,
+        \Illuminate\Session\Middleware\AuthenticateSession::class,
+        \Illuminate\Routing\Middleware\SubstituteBindings::class,
+        \Illuminate\Auth\Middleware\Authorize::class,
+    ];
+}

+ 21 - 0
app/Http/Middleware/Authenticate.php

@@ -0,0 +1,21 @@
+<?php
+
+namespace App\Http\Middleware;
+
+use Illuminate\Auth\Middleware\Authenticate as Middleware;
+
+class Authenticate extends Middleware
+{
+    /**
+     * Get the path the user should be redirected to when they are not authenticated.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @return string|null
+     */
+    protected function redirectTo($request)
+    {
+        if (! $request->expectsJson()) {
+            return route('login');
+        }
+    }
+}

+ 17 - 0
app/Http/Middleware/CheckForMaintenanceMode.php

@@ -0,0 +1,17 @@
+<?php
+
+namespace App\Http\Middleware;
+
+use Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode as Middleware;
+
+class CheckForMaintenanceMode extends Middleware
+{
+    /**
+     * The URIs that should be reachable while maintenance mode is enabled.
+     *
+     * @var array
+     */
+    protected $except = [
+        //
+    ];
+}

+ 101 - 0
app/Http/Middleware/CheckLogin.php

@@ -0,0 +1,101 @@
+<?php
+
+namespace App\Http\Middleware;
+
+use App\Model\Depart;
+use App\Model\ProductInventorySet;
+use App\Service\EmployeeService;
+use Closure;
+use App\Service\TokenService;
+
+/**
+ * 用户登陆中间件
+ */
+class CheckLogin
+{
+    /**
+     * Handle an incoming request.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @param  \Closure  $next
+     * @return mixed
+     */
+    public function handle($request, Closure $next)
+    {
+        $token=$request->header('Authorization');
+        if (empty($token)) return response()->json(['code'=>1,'msg'=>'缺少登录凭证','data'=>null]);
+
+        //校验token
+        $result = TokenService::verifyToken($token);
+        if ($result <= 0) return response()->json(['code'=>1,'msg'=>TokenService::error[$result],'data'=>null]);
+
+        //校验用户
+        $checkResult = EmployeeService::checkUser($result);
+        list($state, $data) = $checkResult;
+        if(! $state) return response()->json(['code'=>1,'msg'=>$data,'data'=>null]);
+
+        //人员角色
+        $data['role'] = EmployeeService::getPersonRole($result);
+        //角色里所有菜单权限
+        $data['role_authority'] = EmployeeService::getPersonRoleQx($data['role']);
+        //角色里特殊的按钮
+        $data['special_button'] = EmployeeService::getSpecialButton($data['role'],$result);
+
+        //当前门店
+        $userSetTopDepartId = $request->header('userSetTopDepartId');
+        if(empty($userSetTopDepartId)) return response()->json(['code'=>1,'msg'=>'当前门店信息缺失','data'=>null]);
+
+        //获取人员门店部门相关信息
+        $return = EmployeeService::getLoginDepart($result, $userSetTopDepartId);
+
+        //所属部门
+        $data['rule_depart'] = $return[0] ?? [];
+        //顶级公司
+        $data['depart_top'] = $return[1] ?? [];
+        //部门对应的顶级公司
+        $data['depart_map'] = $return[2] ?? [];
+        //权限范围内的部门以及公司
+        $data['depart_range'] = $return[3] ?? [];
+        //是否有所有的部门权限
+        $data['is_all_depart'] = $return[4] ?? 0;
+        //总公司
+        $data['head'] = $return[5] ?? [];
+        //当前部门
+        $data['depart_select'] = $return[6] ?? [];
+        //是否库存校验(默认校验)
+        $my_top = $data['depart_top'][0] ?? [];
+        $is_check_stock = empty($my_top['is_stock']) ? ProductInventorySet::type_one : $my_top['is_stock'];
+        $data['is_check_stock'] = $is_check_stock;
+
+        $query = config('morequery');
+        $url = $request->path();
+
+        //菜单ID
+        $menu = $query['menu'] ?? [];
+        if(isset($menu[$url])){
+            $param = $menu[$url];
+            if(is_array($param)){
+                $key = $param['key'];
+                $get = $request->input($key);
+                $menu_id = $param['array'][$get] ?? 0;
+            }else{
+                $menu_id = $param ?? 0;
+            }
+            $request->merge(['menu_id' => $menu_id]);
+        }
+
+        $menu2 = $query['is_list_search'] ?? [];
+        if(in_array($url, $menu2)) {
+            if(! empty($query['is_list_search']) && ! empty($request->is_list_search)){//列表页呈现
+                $request->merge(['get_my_top_depart_data' => 0]);
+            }else{//建单据选择
+                $request->merge(['get_my_top_depart_data' => 1]);
+            }
+        }
+
+        //写入user信息
+        $request->userData = $data;
+
+        return $next($request);
+    }
+}

+ 61 - 0
app/Http/Middleware/CheckToken.php

@@ -0,0 +1,61 @@
+<?php
+
+namespace App\Http\Middleware;
+
+use Illuminate\Foundation\Http\Middleware\TrimStrings as Middleware;
+use Closure;
+use \Illuminate\Http\Request;
+use Illuminate\Support\Facades\Cache;
+
+class CheckToken extends Middleware
+{
+    /**
+     * Handle an incoming request.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @param  \Closure  $next
+     * @return mixed
+     */
+    public function handle(Request $request, Closure $next)
+    {
+        $params = $request->all();
+        if(isset($params['token'])){
+            $cacheKey = $params['token'];
+            if(Cache::has($cacheKey)){
+                $num = Cache::get($cacheKey);
+                if($num >= 10){
+                    $json=[
+                        'code'=>300,
+                        'errorMessages' => 'Too many request,please wait a moment',
+                        'success' =>false,
+                    ];
+                }else{
+                    $num++;
+                    Cache::add($cacheKey,$num,3);
+
+                    return $next($request);
+
+                }
+
+
+                return response()->json($json);
+            }else{
+                Cache::add($cacheKey,1,3);
+            }
+
+        }
+
+        $json=[
+            'code'=>300,
+            'errorMessages' => 'illegal access',
+            'success' =>false,
+        ];
+
+        return response()->json($json);
+
+    }
+
+
+
+
+}

+ 37 - 0
app/Http/Middleware/CheckWeinxin.php

@@ -0,0 +1,37 @@
+<?php
+
+namespace App\Http\Middleware;
+
+use App\Model\WxEmployeeOfficial;
+use App\Service\EmployeeService;
+use Closure;
+use Illuminate\Http\Request;
+
+class CheckWeinxin
+{
+    /**
+     * Handle an incoming request.
+     *
+     * @param  Request  $request
+     * @param Closure $next
+     * @return mixed
+     */
+    public function handle($request, Closure $next)
+    {
+        $token = $request->header('ciphertext');
+        if (empty($token)) return response()->json(['code'=>401,'msg'=>'缺少openid','data'=>null]);
+
+        //校验openid是否绑定
+        $employee = new WxEmployeeOfficial();
+        $employee_id = $employee->where('openid',$token)->value('employee_id');
+        if ($employee_id < 0) return response()->json(['code'=>401,'msg'=>'用户信息错误!','data'=>null]);
+
+        //校验用户
+        $checkResult = EmployeeService::checkWxUser($employee_id);
+        list($state, $data) = $checkResult;
+        if(! $state) return response()->json(['code'=>401,'msg'=>$data,'data'=>null]);
+        $request->userData = $data;
+
+        return $next($request);
+    }
+}

+ 124 - 0
app/Http/Middleware/CheckWx.php

@@ -0,0 +1,124 @@
+<?php
+
+namespace App\Http\Middleware;
+
+use App\Model\Employee;
+use App\Model\ProductInventorySet;
+use App\Model\WxEmployee;
+use App\Service\EmployeeService;
+use App\Service\Wx\WxEmployeeService;
+use Closure;
+
+class CheckWx
+{
+    /**
+     * Handle an incoming request.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @param  \Closure  $next
+     * @return mixed
+     */
+    public function handle($request, Closure $next)
+    {
+        $data=$request->all();
+
+        if (!isset($data['openid'])) return response()->json(['code'=> 202,'msg'=>'缺少openid','data'=>null]);
+        $openid = $data['openid'];
+        //校验openid是否绑定
+        $employee = new WxEmployee();
+        $employee = $employee->where('openid',$openid)->first();
+        if (empty($employee)) return response()->json(['code'=> 202,'msg'=>'用户信息不存在!','data'=>null]);
+        $employee = $employee->toArray();
+        if (empty($employee['mobile'])) return response()->json(['code'=> 202,'msg'=>'用户手机信息不存在!','data'=>null]);
+        if (empty($employee['employee_id'])) {
+            //找到对应的账号
+            $emp = Employee::where('del_time',0)
+                ->where('mobile',$employee['mobile'])
+                ->where('state',Employee::USE)
+                ->select('id')
+                ->first();
+            if(empty($emp)) return response()->json(['code'=> 202,'msg'=>'用户手机信息未匹配到系统账号!','data'=>null]);
+            $emp = $emp->toArray();
+            WxEmployee::where('id',$employee['id'])->update(['employee_id' => $emp['id']]);
+            $employee['employee_id'] = $emp['id'];
+        }
+
+        //当前请求接口
+        $uri = $request->path();
+        //不需要校验是否绑定账号的接口
+        $url = config('nocheck');
+
+        if(in_array($uri,$url)){
+            $request->userData = new Employee();
+        }else{
+            $employee_id = $employee['employee_id'];
+            if(empty($employee_id)) return response()->json(['code'=> 202,'msg'=>'用户未绑定账号!','data'=>null]);
+            //校验用户
+            $service = new WxEmployeeService();
+            $checkResult = $service->checkWxUser($employee_id);
+            list($state, $data) = $checkResult;
+            if(! $state) return response()->json(['code'=> 202,'msg'=>$data,'data'=>null]);
+
+            //人员角色
+            $data['role'] = EmployeeService::getPersonRole($employee_id);
+            //角色里所有菜单权限
+            $data['role_authority'] = EmployeeService::getPersonRoleQx($data['role']);
+            //角色里特殊的按钮
+            $data['special_button'] = EmployeeService::getSpecialButton($data['role'],$employee_id);
+
+            //当前门店
+            $userSetTopDepartId = $request->input('userSetTopDepartId');
+            if(empty($userSetTopDepartId)) return response()->json(['code'=>202,'msg'=>'当前门店信息缺失','data'=>null]);
+
+            $return = EmployeeService::getLoginDepart($employee_id, $userSetTopDepartId);
+            //所属部门
+            $data['rule_depart'] = $return[0] ?? [];
+            //顶级公司
+            $data['depart_top'] = $return[1] ?? [];
+            //部门对应的顶级公司
+            $data['depart_map'] = $return[2] ?? [];
+            //权限范围内的部门以及公司
+            $data['depart_range'] = $return[3] ?? [];
+            //是否有所有的部门权限
+            $data['is_all_depart'] = $return[4] ?? 0;
+            //总公司
+            $data['head'] = $return[5] ?? [];
+            //当前部门
+            $data['depart_select'] = $return[6] ?? [];
+            //是否库存校验(默认校验)
+            $my_top = $data['depart_top'][0] ?? [];
+            $is_check_stock = empty($my_top['is_stock']) ? ProductInventorySet::type_one : $my_top['is_stock'];
+            $data['is_check_stock'] = $is_check_stock;
+
+            $query = config('morequery');
+            $url = $request->path();
+
+            //菜单ID
+            $menu = $query['menu'] ?? [];
+            if(isset($menu[$url])){
+                $param = $menu[$url];
+                if(is_array($param)){
+                    $key = $param['key'];
+                    $get = $request->input($key);
+                    $menu_id = $param['array'][$get] ?? 0;
+                }else{
+                    $menu_id = $param ?? 0;
+                }
+                $request->merge(['menu_id' => $menu_id]);
+            }
+
+            $menu2 = $query['is_list_search'] ?? [];
+            if(in_array($url, $menu2)) {
+                if(! empty($data['is_list_search']) && ! empty($request->is_list_search)){//列表页呈现
+                    $request->merge(['get_my_top_depart_data' => 0]);
+                }else{//建单据选择
+                    $request->merge(['get_my_top_depart_data' => 1]);
+                }
+            }
+
+            $request->userData = $data;
+        }
+
+        return $next($request);
+    }
+}

+ 17 - 0
app/Http/Middleware/EncryptCookies.php

@@ -0,0 +1,17 @@
+<?php
+
+namespace App\Http\Middleware;
+
+use Illuminate\Cookie\Middleware\EncryptCookies as Middleware;
+
+class EncryptCookies extends Middleware
+{
+    /**
+     * The names of the cookies that should not be encrypted.
+     *
+     * @var array
+     */
+    protected $except = [
+        //
+    ];
+}

+ 55 - 0
app/Http/Middleware/OssFileDeal.php

@@ -0,0 +1,55 @@
+<?php
+namespace App\Http\Middleware;
+
+use App\Service\FileUploadService;
+use Closure;
+use Illuminate\Http\Request;
+use Symfony\Component\HttpFoundation\Response;
+
+class OssFileDeal
+{
+    /**
+     * Handle an incoming request.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @param  \Closure  $next
+     * @return mixed
+     */
+    public function handle(Request $request, Closure $next)
+    {
+        // 在这里可以添加请求前的操作,但通常我们只关心请求后的操作。
+        return $next($request);
+    }
+
+    /**
+     * Handle the request termination.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @param  \Illuminate\Http\Response  $response
+     * @return void
+     */
+    public function terminate(Request $request, Response $response)
+    {
+        $return = json_decode($response->content(),true);
+
+        if($return['code'] == 200){
+            if(! empty($return['data'])){
+                $result = $return['data'];
+                $service = new FileUploadService();
+
+                if(! empty($result['file'])){
+                    //添加oss
+                    $file = $result['file'];
+                    if(! empty($file['new'])){
+                        $service->createOssUpload($file['new']);
+                    }
+
+                    //编辑|删除oss
+                    if(! empty($file['old'])){
+                        $service->createOssUploadOld($file['old']);
+                    }
+                }
+            }
+        }
+    }
+}

+ 27 - 0
app/Http/Middleware/RedirectIfAuthenticated.php

@@ -0,0 +1,27 @@
+<?php
+
+namespace App\Http\Middleware;
+
+use App\Providers\RouteServiceProvider;
+use Closure;
+use Illuminate\Support\Facades\Auth;
+
+class RedirectIfAuthenticated
+{
+    /**
+     * Handle an incoming request.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @param  \Closure  $next
+     * @param  string|null  $guard
+     * @return mixed
+     */
+    public function handle($request, Closure $next, $guard = null)
+    {
+        if (Auth::guard($guard)->check()) {
+            return redirect(RouteServiceProvider::HOME);
+        }
+
+        return $next($request);
+    }
+}

+ 39 - 0
app/Http/Middleware/RequestLog.php

@@ -0,0 +1,39 @@
+<?php
+
+namespace App\Http\Middleware;
+
+use Closure;
+use Illuminate\Support\Facades\Log;
+
+class RequestLog
+{
+    /**
+     * Handle an incoming request.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @param  \Closure  $next
+     * @return mixed
+     */
+    public function handle($request, Closure $next)
+    {
+        if (getenv('HTTP_CLIENT_IP')) {
+            $ip = getenv('HTTP_CLIENT_IP');
+        }
+        elseif (getenv('HTTP_X_REAL_IP')) {
+            $ip = getenv('HTTP_X_REAL_IP');
+        } elseif (getenv('HTTP_X_FORWARDED_FOR')) {
+            $ip = getenv('HTTP_X_FORWARDED_FOR');
+            $ips = explode(',', $ip);
+            $ip = $ips[0];
+        } elseif (getenv('REMOTE_ADDR')) {
+            $ip = getenv('REMOTE_ADDR');
+        } else {
+            $ip = '0.0.0.0';
+        }
+        $params = $request->all();
+        if($request->path() != 'api/reportCount'){
+            Log::channel('request')->info('request', ['param'=>$params,'ip' => $ip,'uri'=>$request->path()]);
+        }
+        return $next($request);
+    }
+}

+ 18 - 0
app/Http/Middleware/TrimStrings.php

@@ -0,0 +1,18 @@
+<?php
+
+namespace App\Http\Middleware;
+
+use Illuminate\Foundation\Http\Middleware\TrimStrings as Middleware;
+
+class TrimStrings extends Middleware
+{
+    /**
+     * The names of the attributes that should not be trimmed.
+     *
+     * @var array
+     */
+    protected $except = [
+        'password',
+        'password_confirmation',
+    ];
+}

+ 23 - 0
app/Http/Middleware/TrustProxies.php

@@ -0,0 +1,23 @@
+<?php
+
+namespace App\Http\Middleware;
+
+use Fideloper\Proxy\TrustProxies as Middleware;
+use Illuminate\Http\Request;
+
+class TrustProxies extends Middleware
+{
+    /**
+     * The trusted proxies for this application.
+     *
+     * @var array|string
+     */
+    protected $proxies;
+
+    /**
+     * The headers that should be used to detect proxies.
+     *
+     * @var int
+     */
+    protected $headers = Request::HEADER_X_FORWARDED_ALL;
+}

+ 24 - 0
app/Http/Middleware/VerifyCsrfToken.php

@@ -0,0 +1,24 @@
+<?php
+
+namespace App\Http\Middleware;
+
+use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as Middleware;
+
+class VerifyCsrfToken extends Middleware
+{
+    /**
+     * Indicates whether the XSRF-TOKEN cookie should be set on the response.
+     *
+     * @var bool
+     */
+    protected $addHttpCookie = true;
+
+    /**
+     * The URIs that should be excluded from CSRF verification.
+     *
+     * @var array
+     */
+    protected $except = [
+        //
+    ];
+}

+ 363 - 0
app/Import/Import.php

@@ -0,0 +1,363 @@
+<?php
+
+
+namespace  App\Import;
+
+use App\Service\ImportService;
+use Illuminate\Support\Facades\DB;
+use Maatwebsite\Excel\Concerns\ToArray;
+use Maatwebsite\Excel\Concerns\WithMultipleSheets;
+use Maatwebsite\Excel\Facades\Excel;
+
+
+class Import implements WithMultipleSheets,ToArray {
+    private $msg = '';
+    public $crt_id = 0;
+    public $config = [];
+    public $mergedCells = [];
+    public $data = [];
+
+    public function sheets(): array
+    {
+        return [
+            0 => $this, // 指定要导入的 sheet 索引,这里假设是第一个 sheet
+        ];
+    }
+
+    public function array (array $array){
+        $this->handleData($array);
+    }
+
+    public function setConfig($config,$mergedCells,$data){
+        $this->config = $config;
+        $this->mergedCells = $mergedCells;
+        $this->data = $data;
+    }
+
+    public function getMsg(){
+        return $this->msg;
+    }
+
+    public function setMsg($msg){
+        $this->msg = $msg;
+    }
+
+    public function handleData (array $array) {
+        //表头处理
+        list($status,$msg) = $this->clearHead($array);
+        if(! $status) {
+            $this->setMsg($msg);
+            return ;
+        }
+
+        //表头
+        $table_head = $msg;
+
+        // 去除表头
+        unset($array[0]);
+        if(empty($array)) {
+            $this->setMsg('导入数据不能为空!');
+            return ;
+        }
+
+        //数据处理
+        list($status,$msg) = $this->checkRule($table_head,$array);
+        if(! $status) {
+            $this->setMsg($msg);
+            return ;
+        }
+
+        //写入数据
+        $time = time();
+        list($status,$msg) = $this->insertAllData($msg, $time);
+        if(! $status) {
+            $this->setMsg($msg);
+            return ;
+        }
+
+        //(特殊 需要额外写入的数据) 做对写入数据的更新
+        if(! empty($this->config['other_field_func'])){
+            $func = $this->config['other_field_func'] ?? "";
+            if(empty($func)) return;
+            (new ImportService)->$func($time);
+        }
+    }
+
+    public function clearHead($array){
+        $table_head = array_filter($array[0]);
+        if(empty($table_head)) return [false, '表头不能为空!'];
+
+        foreach ($table_head as $key => $value){
+            $head_tmp = trim($value);
+            if(empty($head_tmp)) {
+                unset($table_head[$key]);
+            }else{
+                $table_head[$key] = $head_tmp;
+            }
+        }
+        if(empty($table_head)) return [false, '表头不能为空!'];
+
+        return [true, $table_head];
+    }
+
+    public function insertAllData($data, $time){
+        $model_array = $this->config['table'];
+
+        //执行写入
+        try{
+            DB::beginTransaction();
+
+            foreach ($model_array as $model_name => $model_field){
+                if(! empty($model_field['need_param'])) {
+                    $model = "\App\Model\\" . $model_field['db_name'];
+                    $last_insert_id = $model::where('crt_time',$time)
+                        ->select($model_field['db_key'])
+                        ->get()->toArray();
+                    $last_insert_id = array_column($last_insert_id,$model_field['db_key']);
+                }
+                $tmp = [];$insert = [];
+                if(! empty($model_field['field'])){
+                    foreach ($model_field['field'] as $m){
+                        $tmp[$m] = "";
+                        if(strstr($m,'time')) $tmp[$m] = $time;
+                        if($m == "depart_id") $tmp[$m] = $this->data['depart_id'] ?? 0;
+                        if($m == "top_depart_id") $tmp[$m] = $this->data['top_depart_id'] ?? 0;
+                        if($m == "crt_id") $tmp[$m] = $this->data['user_id'] ?? 0;
+                    }
+                    foreach ($data as $value){
+                        $insert[] = array_intersect_key(array_merge($tmp, $value),$tmp);
+                    }
+                }elseif (! empty($model_field['field_array'])){
+                    foreach ($model_field['field_array'] as $km => $m){
+                        foreach ($m as $v){
+                            $tmp[$v] = "";
+                            if(strstr($v,'time')) $tmp[$v] = $time;
+                        }
+                        foreach ($data as $key => $value){
+                            foreach ($value[$km] as $vv){
+                                $vv[$model_field['need_param']] = $last_insert_id[$key];
+                                $insert[] = array_intersect_key(array_merge($tmp, $vv),$tmp);
+                            }
+                        }
+                    }
+                }
+
+                $model = "\App\Model\\" . $model_name;
+                $model::insert($insert);
+            }
+
+            DB::commit();
+        }catch (\Exception $e){
+            DB::rollBack();
+            return [false, $e->getMessage().$e->getLine()];
+        }
+
+        return [true, ''];
+    }
+
+    public function checkRule($head, $data){
+        //模板里的表头
+        foreach ($this->config['field'] as $key => $value){
+            if(! in_array($key, $head)) return [false, "缺少表头:" . $key];
+        }
+
+        //处理 =》 存在合并单元格数据
+        if(! empty($this->mergedCells)) $data = $this->clearMergeData($data);
+
+        //数据校验
+        list($status,$msg) = $this->checkData($head,$data);
+        return [$status,$msg];
+    }
+
+    function checkData($head,$data){
+        $return_data = [];
+
+        //数据处理
+        foreach ($this->config['field'] as $key => $value){
+            //找到表头在xlsx中的下标位置
+            $key2 = array_search($key, $head);
+            if ($key2 === false) return [false, '未找到表头在xlsx中的位置!'];
+            //获取表头对应列数据
+            $tmp_data = array_column($data,$key2);
+            //去除数据中两侧的空白字符或其他预定义字符
+            foreach ($tmp_data as $v_key => $v_data){
+                $tmp_data[$v_key] = trim($v_data);
+            }
+
+            //------ 根据规则 查找数据 =>做 替换和校验--------------//
+            //校验数据唯一
+            if (strpos($value['other_rule'], 'unique') !== false) {
+                $uniqueValue = $this->getOtherRuleModelName($value,"unique");
+                $model = "\App\Model\\" . $uniqueValue;
+                $newStr = "";
+                if( ! empty($value['search_raw'])){
+                    $str = $value['search_raw'];
+                    foreach ($value['search_field'] as $value_field){
+                        if(isset($this->data[$value_field])){
+                            $v = $this->data[$value_field];
+                            $newStr = str_replace("?", $v, $str);
+                        }
+                    }
+                    if( ! empty($newStr)) $model::whereRaw($newStr);
+                }
+                $bool = $model::whereIn($value['key'], array_unique($tmp_data))
+                    ->where('del_time',0)
+                    ->exists();
+                if($bool) return [false, $key . "在已存在"];
+            }
+
+            //替换数据
+            if(! empty($value['db_search'])){
+                $db = $value['db_search'];
+                $model = "\App\Model\\" . $db['db_name'];
+                $map = $model::whereIn($db['key'], array_unique($tmp_data))
+                    ->pluck($db['value'], $db['key'])
+                    ->toArray();
+            }
+
+            //常量字典
+            if(strpos($value['other_rule'], 'dk') !== false){
+                $uniqueValue = $this->getOtherRuleModelName($value,"dk");
+                $model = "\App\Model\\" . $uniqueValue;
+                $constantValue = constant($model . '::' . $value['dk_name']);
+            }
+            //------ 根据规则 查找数据 =>做 替换和校验--------------//
+
+
+            //校验&&组织
+            $tmp_clean = [];
+            foreach ($tmp_data as $v_key => $v_data){
+                //常量字典
+                if(strpos($value['other_rule'], 'dk') !== false){
+                    if(! isset($constantValue[$v_data])) return [false, $key . '在系统中不存在!'];
+                    $v_data = $constantValue[$v_data];
+                }
+
+                if (strpos($value['other_rule'], 'require') !== false) {
+                    if(empty($v_data)) return [false, $key . '不能为空!'];
+                }
+                if (strpos($value['other_rule'], 'unique') !== false) {
+                    if(in_array($v_data,$tmp_clean)) return [false, $key . '不能重复!'];
+                    $tmp_clean[] = $v_data;
+                }
+                if (strpos($value['other_rule'], 'is_numeric') !== false && ! empty($v_data)) {
+                    if(! is_numeric($v_data))  return [false, $key . '请输入数字!'];
+                    $formattedNumber = number_format($v_data, 2, '.', '');
+                    if($formattedNumber != $v_data) return [false, $key . '请输入数字(请输入不超过两位小数)!'];
+                }
+                if(! empty($value['db_search'])) {
+                    if(! empty($v_data)){
+                        if(empty($map[$v_data])) return [false, $key . '下所输入的内容在系统中不存在!'];
+                        $v_data = $map[$v_data];
+                    }
+                }
+
+                if(! empty($value['multiple'])) {
+                    $field = $value['map'][$key] ?? "";
+                    $value['key_array'][$field] = $v_data;
+
+                    //子表数据 一对多
+                    $return_data[$v_key][$value['key']][] = $value['key_array'];
+                }else{
+                    //数据
+                    $return_data[$v_key][$value['key']] = $v_data;
+                }
+            }
+        }
+        unset($tmp_clean);dd($return_data);//TODO
+
+        return [true, $return_data];
+    }
+
+    function getOtherRuleModelName($value,$needle){
+        $needle = $needle . ":";
+        $uniqueIndex = strpos($value['other_rule'], $needle);
+        $start = $uniqueIndex + strlen($needle);
+        $end = strpos($value['other_rule'], '|', $start);
+        if ($end !== false) {
+            $uniqueValue = substr($value['other_rule'], $start, $end - $start);
+        } else {
+            $uniqueValue = substr($value['other_rule'], $start);
+        }
+        return $uniqueValue;
+    }
+
+    // 处理合并单元格数据
+    function clearMergeData($data){
+        //获取行列
+        $rows = count($data);
+        $cols = count($data[1]);
+
+        //非合并单元格并且为null的数据 替换成空字符串
+        for ($row = 1; $row < $rows; $row++) {
+            // 遍历每一列
+            for ($col = 0; $col < $cols; $col++) {
+                // 如果当前值为 null,并且不是合并单元格
+                if ($data[$row][$col] === null && ! $this->isMergedCell($this->mergedCells, $row, $col)) {
+                    $data[$row][$col] = '';
+                } else {
+                    $data[$row][$col] = $data[$row][$col];
+                }
+            }
+        }
+
+        //合并单元格数据替换为原来的数据
+        for ($row = 1; $row <= $rows; $row++) {
+            // 遍历每一列
+            for ($col = 0; $col < $cols; $col++) {
+                // 如果当前值为 null
+                if ($data[$row][$col] === null) {
+                    // 查找左方第一个非 null 值
+                    for ($i = $col - 1; $i >= 0; $i--) {
+                        if ($data[$row][$i] !== null) {
+                            $data[$row][$col] = $data[$row][$i];
+                            break;
+                        }
+                    }
+                    // 如果左方没有非 null 值,则查找上方第一个非 null 值
+                    if (!isset($newArray[$row][$col])) {
+                        for ($i = $row - 1; $i >= 1; $i--) {
+                            if ($data[$i][$col] !== null) {
+                                $data[$row][$col] = $data[$i][$col];
+                                break;
+                            }
+                        }
+                    }
+                } else {
+                    $data[$row][$col] = $data[$row][$col];
+                }
+            }
+        }
+
+        return $data;
+    }
+
+    // 判断一个单元格是否是合并单元格
+    function isMergedCell($mergeCells, $row, $col) {
+        foreach ($mergeCells as $mergeCell) {
+            [$start, $end] = explode(':', $mergeCell);
+            [$startCol, $startRow] = $this->coordinateToIndex($start);
+            [$endCol, $endRow] = $this->coordinateToIndex($end);
+
+            if ($col >= $startCol && $col <= $endCol && $row >= $startRow && $row <= $endRow) {
+                return true;
+            }
+        }
+
+        return false;
+    }
+
+    // 将 Excel 单元格坐标转换为索引
+    function coordinateToIndex($coordinate) {
+        preg_match('/([A-Z]+)(\d+)/', $coordinate, $matches);
+        [, $col, $row] = $matches;
+
+        $colIndex = 0;
+        $length = strlen($col);
+        for ($i = 0; $i < $length; $i++) {
+            $colIndex += (ord($col[$i]) - 65 + 1) * pow(26, $length - $i - 1);
+        }
+
+        return [$colIndex - 1, $row - 1];
+    }
+}

+ 49 - 0
app/Import/ImportAll.php

@@ -0,0 +1,49 @@
+<?php
+
+
+namespace  App\Import;
+
+use App\Service\ImportService;
+use Maatwebsite\Excel\Concerns\ToArray;
+
+class ImportAll implements ToArray {
+    private $msg = '';
+    public $crt_id = 0;
+    public $type = "";
+    public $user = [];
+
+    public function array (array $array){
+        $this->handleData($array);
+    }
+
+    public function setCrt($crt_id){
+        $this->crt_id = $crt_id;
+    }
+
+    public function setType($type){
+        $this->type = $type;
+    }
+
+    public function setUser($user){
+        $this->user = $user;
+    }
+
+    public function getMsg(){
+        return $this->msg;
+    }
+
+    public function setMsg($msg){
+        $this->msg = $msg;
+    }
+
+    public function handleData (array $array) {
+        $func = $this->type . "Import";
+        if(! $func) {
+            $this->setMsg("意外错误");
+            return;
+        }
+
+        list($status,$msg) = (new ImportService())->$func($array,$this->user);
+        if(empty($status)) $this->setMsg($msg);
+    }
+}

+ 38 - 0
app/Jobs/OperationLog.php

@@ -0,0 +1,38 @@
+<?php
+
+namespace App\Jobs;
+
+use App\Service\OperationLogService;
+use Illuminate\Bus\Queueable;
+use Illuminate\Contracts\Queue\ShouldQueue;
+use Illuminate\Foundation\Bus\Dispatchable;
+use Illuminate\Queue\InteractsWithQueue;
+use Illuminate\Queue\SerializesModels;
+
+class OperationLog implements ShouldQueue
+{
+    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
+
+    protected $insert;
+    /**
+     * Create a new job instance.
+     *
+     * @return void
+     */
+    public function __construct($insert)
+    {
+        //
+        $this->insert = $insert;
+    }
+
+    /**
+     * Execute the job.
+     *
+     * @return void
+     */
+    public function handle()
+    {
+        $insert = $this->insert;
+        OperationLogService::getInstance()->insertOperationLog($insert);
+    }
+}

+ 98 - 0
app/Jobs/ProcessDataJob.php

@@ -0,0 +1,98 @@
+<?php
+
+namespace App\Jobs;
+
+use App\Model\ErrorTable;
+use App\Model\U8Job;
+use App\Service\U8ServerService;
+use Illuminate\Bus\Queueable;
+use Illuminate\Contracts\Queue\ShouldQueue;
+use Illuminate\Foundation\Bus\Dispatchable;
+use Illuminate\Queue\InteractsWithQueue;
+use Illuminate\Queue\SerializesModels;
+use Illuminate\Support\Facades\DB;
+use Illuminate\Support\Facades\Redis;
+use MongoDB\Driver\Exception\Exception;
+use Symfony\Component\Console\Output\ConsoleOutput;
+use Symfony\Component\Console\Output\OutputInterface;
+
+class ProcessDataJob implements ShouldQueue
+{
+    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
+
+    protected $data;
+
+    public $tries = 0;
+    public $timeout = 60;
+
+    //1 采购  2 销售(合同)
+    protected $function = [
+        1 => 'U8PO_PomainSave',
+        2 => 'U8SaleOrderSave',
+    ];
+
+    public function __construct($data)
+    {
+        $this->data = $data;
+    }
+
+    public function handle()
+    {
+        try {
+            $function = $this->function[$this->data['type']] ?? '';
+            if(empty($function)) return;
+
+            //调用同步方法
+            $this->$function();
+        } catch (\Throwable $e) {
+            $this->delete();
+        }
+    }
+
+    //采购
+    private function U8PO_PomainSave(){
+        $service = new U8ServerService();
+        if(! empty($service->error)) {
+            $service->finalSettle($this->data['id'], U8Job::one, $service->error);
+            return;
+        }
+
+        $service->U8PO_PomainSave($this->data['id'], $this->data['user_name']);
+    }
+
+    //销售(合同)
+    private function U8SaleOrderSave(){
+        $service = new U8ServerService();
+        if(! empty($service->error)) {
+            $service->finalSettle($this->data['id'], U8Job::two, $service->error);
+            return;
+        }
+
+        $service->U8SaleOrderSave($this->data['id'], $this->data['user_name']);
+    }
+
+//    public function failed($exception)
+//    {
+//        // 记录失败错误信息到日志或其他媒介
+//        $errorMessage = $exception->getFile() . $exception->getMessage() . $exception->getLine();
+//        $this->recordErrorTable($errorMessage);
+//    }
+
+    private function recordErrorTable($msg){
+        $data = $this->data;
+
+        ErrorTable::insert([
+            'msg' => $msg,
+            'data' => json_encode($this->data),
+            'user_id' => $data['user']['id'],
+            'user_operation_time' => $data['user']['operate_time'],
+            'type' => $data['type']
+        ]);
+    }
+
+    protected function echoMessage(OutputInterface $output)
+    {
+        //输出消息
+        $output->writeln(json_encode($this->data));
+    }
+}

+ 45 - 0
app/Model/BasicType.php

@@ -0,0 +1,45 @@
+<?php
+
+namespace App\Model;
+
+class BasicType extends UseScopeBaseModel
+{
+    protected $table = "basic_type"; //指定表
+    const CREATED_AT = 'crt_time';
+    const UPDATED_AT = 'upd_time';
+    protected $dateFormat = 'U';
+
+    const type_22 = 22;
+    public static $type = [
+        1 => '客户意向类型',
+        2 => '客户来源类型',
+        3 => '客户类型(T9改装)',
+        4 => '客户电话类型',
+        5 => '进展阶段类型',
+        6 => '客户状态类型',
+        7 => '决策关系类型',
+//        8 => '客户分级',
+        9 => '状态类型',
+        10 => '车型',
+        11 => '订单类型',
+//        12 => '成交类型',
+//        13 => '合同状态',
+//        14 => '合同类型',
+        15 => '付款方式',
+//        16 => '发货状态',
+        17 => '物流公司',
+        18 => '安装方式',
+        19 => '紧急程度',
+        20 => '产品单位',
+        21 => '跟进方式',
+        22 => '产品价格',
+        23 => '安装地点',
+        24 => '平台类型',
+//        25 => '业务类型',
+//        26 => '销售类型',
+        27 => '采购类型',
+        28 => '默认账户',
+        29 => '客户简称',
+        30 => '客户类型(T9二手车)',
+    ];
+}

+ 38 - 0
app/Model/BookingList.php

@@ -0,0 +1,38 @@
+<?php
+
+namespace App\Model;
+
+use Illuminate\Database\Eloquent\Model;
+
+class BookingList extends Model
+{
+    protected $table = "booking_list"; //指定表
+    const CREATED_AT = 'crt_time';
+    const UPDATED_AT = 'upd_time';
+    protected $dateFormat = 'U';
+    const STATE_ZERO = 0;//未确认
+    const STATE_ONE = 1;//已确认
+    public static $name = [
+        self::STATE_ZERO => '未确认',
+        self::STATE_ONE => '已确认',
+    ];
+
+    const type_one = 1; // 收款
+    const type_two = 2; // 坏账
+    const type_three = 3; // 退款
+    const type_four = 4; // 补收
+    public static $model_type = [
+        self::type_one => '收款',
+        self::type_two => '坏账',
+        self::type_three => '退款',
+        self::type_four => '补收',
+    ];
+
+    const data_type_one = 1; // 合同
+    const data_type_two = 2; // 采购
+    public static $data_type = [
+        self::data_type_one => '合同',
+        self::data_type_two => '采购',
+    ];
+
+}

+ 17 - 0
app/Model/BookingListInfo.php

@@ -0,0 +1,17 @@
+<?php
+
+namespace App\Model;
+
+use Illuminate\Database\Eloquent\Model;
+
+class BookingListInfo extends Model
+{
+    protected $table = "booking_list_info"; //指定表
+    const CREATED_AT = 'crt_time';
+    const UPDATED_AT = 'upd_time';
+    protected $dateFormat = 'U';
+    const type_one = 1; // 文件
+    public static $type = [
+        self::type_one,
+    ];
+}

+ 46 - 0
app/Model/Construction.php

@@ -0,0 +1,46 @@
+<?php
+
+namespace App\Model;
+
+class Construction extends UseScopeBaseModel
+{
+    protected $table = "construction"; //指定表
+    const CREATED_AT = 'crt_time';
+    const UPDATED_AT = 'upd_time';
+    protected $dateFormat = 'U';
+    const Model_type_one = 1; // 总部安装
+    const Model_type_two = 2; // 分社网点安装
+    public static $model_type = [
+        self::Model_type_one,
+        self::Model_type_two,
+    ];
+    public static $model_type_title = [
+        self::Model_type_one => '总部安装',
+        self::Model_type_two => '分社网点安装',
+    ];
+
+    public static $prefix = [
+        self::Model_type_one => 'WO0.',
+        self::Model_type_two => 'T9SH.',
+    ];
+
+    const STATE_ZERO = 0;//未审核
+    const STATE_ONE = 1;//待审核
+    const STATE_TWO = 2;//已审核
+    const STATE_THREE = 3;//待确认
+    const STATE_FOUR = 4;//已完结
+    public static $name = [
+        self::STATE_ZERO => '未审核',
+        self::STATE_ONE => '待审核',
+        self::STATE_TWO => '施工中',
+        self::STATE_THREE => '待完结审核',
+        self::STATE_FOUR => '已完结',
+    ];
+
+    public static $pq_name = [
+        self::STATE_ZERO => '未排期',
+        self::STATE_ONE => '已排期',
+    ];
+    const range_function = 'constructionRange';
+    const is_check_function = 'constructionCheck';
+}

+ 13 - 0
app/Model/ConstructionFile.php

@@ -0,0 +1,13 @@
+<?php
+
+namespace App\Model;
+
+use Illuminate\Database\Eloquent\Model;
+
+class ConstructionFile extends Model
+{
+    protected $table = "construction_file"; //指定表
+    const CREATED_AT = 'crt_time';
+    const UPDATED_AT = 'upd_time';
+    protected $dateFormat = 'U';
+}

+ 20 - 0
app/Model/ConstructionInfo.php

@@ -0,0 +1,20 @@
+<?php
+
+namespace App\Model;
+
+use Illuminate\Database\Eloquent\Model;
+
+class ConstructionInfo extends Model
+{
+    protected $table = "construction_info"; //指定表
+    const CREATED_AT = 'crt_time';
+    const UPDATED_AT = 'upd_time';
+    protected $dateFormat = 'U';
+    const type_one = 1; // 联系方式
+    const type_two = 2; // 协同人
+    const type_three = 3; // 负责人
+    public static $type = [
+        self::type_one,
+        self::type_two
+    ];
+}

+ 13 - 0
app/Model/ConstructionProductInfo.php

@@ -0,0 +1,13 @@
+<?php
+
+namespace App\Model;
+
+use Illuminate\Database\Eloquent\Model;
+
+class ConstructionProductInfo extends Model
+{
+    protected $table = "construction_product_info"; //指定表
+    const CREATED_AT = 'crt_time';
+    const UPDATED_AT = 'upd_time';
+    protected $dateFormat = 'U';
+}

+ 13 - 0
app/Model/Contacts.php

@@ -0,0 +1,13 @@
+<?php
+
+namespace App\Model;
+
+use Illuminate\Database\Eloquent\Model;
+
+class Contacts extends Model
+{
+    protected $table = "contacts"; //指定表
+    const CREATED_AT = 'crt_time';
+    const UPDATED_AT = 'upd_time';
+    protected $dateFormat = 'U';
+}

+ 23 - 0
app/Model/ContactsInfo.php

@@ -0,0 +1,23 @@
+<?php
+
+namespace App\Model;
+
+use Illuminate\Database\Eloquent\Model;
+
+class ContactsInfo extends Model
+{
+    protected $table = "contacts_info"; //指定表
+    const CREATED_AT = 'crt_time';
+    const UPDATED_AT = 'upd_time';
+    protected $dateFormat = 'U';
+    const type_one = 1; // 联系方式
+    const type_two = 2; // 关联客户
+    const type_three = 3; // 负责人
+    const type_four = 4; // 协同人
+    public static $type = [
+        self::type_one,
+        self::type_two,
+        self::type_three,
+        self::type_four,
+    ];
+}

+ 32 - 0
app/Model/Customer.php

@@ -0,0 +1,32 @@
+<?php
+
+namespace App\Model;
+
+class Customer extends UseScopeBaseModel
+{
+    protected $table = "customer"; //指定表
+    const CREATED_AT = 'crt_time';
+    const UPDATED_AT = 'upd_time';
+    protected $dateFormat = 'U';
+    const Model_type_one = 1; // 基础模板
+    const Model_type_two = 2; // T9二手车客户模板
+    const special_id = -1;
+    public static $model_type = [
+        self::Model_type_one,
+        self::Model_type_two
+    ];
+    const dk = [
+        'T9改装' => self::Model_type_one,
+        'T9二手车' => self::Model_type_two
+    ];
+    const dk2 = [
+        self::Model_type_one => 'T9改装',
+        self::Model_type_two => 'T9二手车',
+    ];
+
+    public static $user = [];
+    public static $search = [];
+    public static $limitKey = "customerPondState";
+    const range_function = 'customerRange';
+    public static $order_number = "customerTravelOrderNumber";
+}

+ 42 - 0
app/Model/CustomerInfo.php

@@ -0,0 +1,42 @@
+<?php
+
+namespace App\Model;
+
+use Illuminate\Database\Eloquent\Model;
+
+class CustomerInfo extends Model
+{
+    protected $table = "customer_info"; //指定表
+    const CREATED_AT = 'crt_time';
+    const UPDATED_AT = 'upd_time';
+    protected $dateFormat = 'U';
+    const type_one = 1; // 客户联系方式
+    const type_two = 2; // 负责人
+    const type_three = 3; // 协同人
+    const type_four = 4; // 联系人
+    const type_five = 5; // 图片
+    const type_six = 6; // 文件
+    const type_nine = 9; //前负责人
+    public static $type = [
+        self::type_one,
+        self::type_two,
+        self::type_three,
+        self::type_four,
+        self::type_five,
+        self::type_six,
+    ];
+    public static $see_man = [
+        self::type_two,
+        self::type_three,
+    ];
+    public static $man = [
+        self::type_two,
+        self::type_three,
+        self::type_nine,
+    ];
+    public static $man2 = [
+        self::type_two,
+        self::type_three,
+        self::type_nine,
+    ];
+}

+ 40 - 0
app/Model/DeliveryNote.php

@@ -0,0 +1,40 @@
+<?php
+
+namespace App\Model;
+
+use Illuminate\Database\Eloquent\Model;
+
+/**
+ * 交车单
+ * Class Unit
+ * @package App\Models
+ */
+class DeliveryNote extends Model
+{
+    protected $table = "delivery_note"; //指定表
+    const CREATED_AT = 'crt_time';
+    const UPDATED_AT = 'upd_time';
+    protected $dateFormat = 'U';
+
+
+
+    public function getBreakAttribute($value)
+    {
+        return json_decode($value, true);
+    }
+
+
+
+    public function getBreakMarkAttribute($value)
+    {
+        return json_decode($value, true);
+    }
+
+
+
+    public function getProjectIdAttribute($value)
+    {
+        return json_decode($value, true);
+    }
+
+}

+ 19 - 0
app/Model/Depart.php

@@ -0,0 +1,19 @@
+<?php
+
+namespace App\Model;
+
+use Illuminate\Database\Eloquent\Model;
+
+/**
+ * 部门管理
+ * Class Unit
+ * @package App\Models
+ */
+class Depart extends Model
+{
+    protected $table = "depart"; //指定表
+    const CREATED_AT = 'crt_time';
+    const UPDATED_AT = 'upd_time';
+    protected $dateFormat = 'U';
+    const IS_UES = 1;//启用
+}

+ 37 - 0
app/Model/Employee.php

@@ -0,0 +1,37 @@
+<?php
+
+namespace App\Model;
+
+use Illuminate\Database\Eloquent\Model;
+
+/**
+ * 人员管理
+ * Class Unit
+ * @package App\Models
+ */
+class Employee extends Model
+{
+    protected $guarded = [];
+    protected $table = "employee"; //指定表
+    const CREATED_AT = 'crt_time';
+    const UPDATED_AT = 'upd_time';
+    protected $dateFormat = 'U';
+    const USE = 1;
+    const NOT_USE = 2;
+    const IS_ADMIN = 1;
+    const IS_NOT_ADMIN = 0;
+    const SPECIAL_ADMIN = 1;
+    const IS_TECHNICAL = [
+        0 => '否',
+        1 => '是'
+    ];
+
+    //人员状态
+    const STATUS_ONE = 1;
+    const STATUS_TWO = 2;
+
+    const STATUS = [
+        1 => '正常',
+        2 => '停用'
+    ];
+}

+ 19 - 0
app/Model/EmployeeDepartPermission.php

@@ -0,0 +1,19 @@
+<?php
+
+namespace App\Model;
+
+use Illuminate\Database\Eloquent\Model;
+
+/**
+ * 菜单管理
+ * Class Unit
+ * @package App\Models
+ */
+class EmployeeDepartPermission extends Model
+{
+    protected $table = "employee_depart_permission"; //指定表
+    const CREATED_AT = null;
+    const UPDATED_AT = null;
+    protected $dateFormat = 'U';
+
+}

+ 19 - 0
app/Model/EmployeeFoursShop.php

@@ -0,0 +1,19 @@
+<?php
+
+namespace App\Model;
+
+use Illuminate\Database\Eloquent\Model;
+
+/**
+ * 人员绑定的四s店
+ * Class Unit
+ * @package App\Models
+ */
+class EmployeeFoursShop extends Model
+{
+    protected $table = "employee_fours_shop"; //指定表
+    const CREATED_AT = null;
+    const UPDATED_AT = null;
+    protected $dateFormat = 'U';
+
+}

+ 14 - 0
app/Model/EmployeeManagerDepart.php

@@ -0,0 +1,14 @@
+<?php
+
+namespace App\Model;
+
+use Illuminate\Database\Eloquent\Model;
+
+class EmployeeManagerDepart extends Model
+{
+    protected $table = "employee_manager_depart"; //指定表
+    const CREATED_AT = 'crt_time';
+    const UPDATED_AT = 'upd_time';
+    protected $dateFormat = 'U';
+
+}

+ 19 - 0
app/Model/EmployeeMenuPermission.php

@@ -0,0 +1,19 @@
+<?php
+
+namespace App\Model;
+
+use Illuminate\Database\Eloquent\Model;
+
+/**
+ * 菜单管理
+ * Class Unit
+ * @package App\Models
+ */
+class EmployeeMenuPermission extends Model
+{
+    protected $table = "employee_menu_permission"; //指定表
+    const CREATED_AT = null;
+    const UPDATED_AT = null;
+    protected $dateFormat = 'U';
+
+}

+ 14 - 0
app/Model/EmployeeRole.php

@@ -0,0 +1,14 @@
+<?php
+
+namespace App\Model;
+
+use Illuminate\Database\Eloquent\Model;
+
+class EmployeeRole extends Model
+{
+    protected $table = "employee_role"; //指定表
+    const CREATED_AT = 'crt_time';
+    const UPDATED_AT = 'upd_time';
+    protected $dateFormat = 'U';
+
+}

+ 19 - 0
app/Model/EmployeeTeamPermission.php

@@ -0,0 +1,19 @@
+<?php
+
+namespace App\Model;
+
+use Illuminate\Database\Eloquent\Model;
+
+/**
+ * 菜单管理
+ * Class Unit
+ * @package App\Models
+ */
+class EmployeeTeamPermission extends Model
+{
+    protected $table = "employee_team_permission"; //指定表
+    const CREATED_AT = null;
+    const UPDATED_AT = null;
+    protected $dateFormat = 'U';
+
+}

+ 19 - 0
app/Model/ErrorTable.php

@@ -0,0 +1,19 @@
+<?php
+
+namespace App\Model;
+
+use Illuminate\Database\Eloquent\Model;
+
+
+class ErrorTable extends Model
+{
+    protected $table = "error_table"; //指定表
+    const CREATED_AT = 'crt_time';
+    const UPDATED_AT = 'upd_time';
+    protected $dateFormat = 'U';
+
+    public static $type = [
+        1 => '采购单同步',
+        2 => '销售订单(合同同步)',
+    ];
+}

+ 19 - 0
app/Model/FollowUpRecord.php

@@ -0,0 +1,19 @@
+<?php
+
+namespace App\Model;
+
+use Illuminate\Database\Eloquent\Model;
+
+class FollowUpRecord extends Model
+{
+    protected $table = "follow_up_record"; //指定表
+    const CREATED_AT = 'crt_time';
+    const UPDATED_AT = 'upd_time';
+    protected $dateFormat = 'U';
+    const type_one = 'customer';
+    const type_two = 'sales_order';
+    public static $type = [
+        self::type_one => '客户跟进记录',
+        self::type_two => '合同跟进记录',
+    ];
+}

Certains fichiers n'ont pas été affichés car il y a eu trop de fichiers modifiés dans ce diff