李可松 4 years ago
parent
commit
5205cc7ccf
  1. 2
      app/Admin/Controllers/AgentStatisticsController.php
  2. 2
      app/Admin/Controllers/OrderStatisticsController.php
  3. 2
      app/Admin/Controllers/ProductStatisticsController.php
  4. 2
      app/Admin/Controllers/SupplierStatisticsController.php
  5. 4
      app/Admin/Controllers/UserStatisticsController.php
  6. 7
      app/Admin/Extensions/Grid/AuditAgent.php
  7. 54
      app/Admin/Metrics/Examples/UserStatistics.php
  8. 2
      app/AdminAgent/Controllers/AgentProductController.php
  9. 6
      app/AdminAgent/Controllers/DemandController.php
  10. 2
      app/AdminAgent/Controllers/FinanceStatisticsController.php
  11. 2
      app/AdminAgent/Controllers/OrderStatisticsController.php
  12. 2
      app/AdminAgent/Controllers/ProductStatisticsController.php
  13. 2
      app/AdminAgent/Controllers/UserStatisticsController.php
  14. 54
      app/AdminAgent/Metrics/Examples/UserStatistics.php
  15. 2
      app/AdminGuide/routes.php
  16. 2
      app/AdminSupplier/Controllers/FinanceStatisticsController.php
  17. 2
      app/AdminSupplier/Controllers/OrderStatisticsController.php
  18. 2
      app/AdminSupplier/Controllers/ProductStatisticsController.php
  19. 8
      app/Common/AgentType.php
  20. 16
      app/Console/Commands/BalanceDue.php
  21. 12
      app/Http/Controllers/Api/OrderController.php
  22. 6
      app/Http/Controllers/Api/SharePayController.php
  23. 4
      app/Http/Controllers/Api/VerificationController.php
  24. 17
      app/Http/Controllers/Api/WxpayController.php
  25. 5
      app/Jobs/BalanceDue.php
  26. 5
      app/Models/AgentProductItem.php
  27. 4
      app/Providers/ProductServiceProvider.php
  28. 2
      app/Traits/DemandTraits.php
  29. 35
      database/migrations/2021_09_15_154853_update_order_table.php
  30. 1
      public/.well-known/acme-challenge/IkivduCTGACeP1iwKnTjOJS9i2MLNechrCoZumTQvNQ
  31. 0
      public/CA certificates.url
  32. 0
      public/cacert-2021-07-05.pem
  33. 0
      public/css/data_report.css
  34. 0
      public/css/detail.css
  35. 0
      public/favicon.ico
  36. 0
      public/index.php
  37. 0
      public/js/element.js
  38. 0
      public/js/helper.js
  39. 0
      public/js/moment-with-locales.js
  40. 0
      public/js/workorder-notice.js
  41. 0
      public/mklink.bat
  42. 0
      public/robots.txt
  43. 0
      public/static/images/1.jpg
  44. 0
      public/static/images/2.jpg
  45. 0
      public/static/images/article.jpg
  46. 0
      public/static/images/avatar.png
  47. 0
      public/static/images/home_ad1.png
  48. 0
      public/static/images/icon.jpg
  49. 0
      public/static/images/slide1.jpg
  50. 0
      public/static/images/slide2.jpg
  51. 0
      public/static/images/special.jpg
  52. 0
      public/vendor/dcat-admin-extensions/super-eggs/dcat-distpicker/dist/distpicker.common.js
  53. 0
      public/vendor/dcat-admin-extensions/super-eggs/dcat-distpicker/dist/distpicker.esm.js
  54. 0
      public/vendor/dcat-admin-extensions/super-eggs/dcat-distpicker/dist/distpicker.js
  55. 0
      public/vendor/dcat-admin-extensions/super-eggs/dcat-distpicker/dist/distpicker.min.js
  56. 0
      public/vendor/dcat-admin/adminlte/adminlte-blue-light.css
  57. 0
      public/vendor/dcat-admin/adminlte/adminlte-blue.css
  58. 0
      public/vendor/dcat-admin/adminlte/adminlte-green.css
  59. 0
      public/vendor/dcat-admin/adminlte/adminlte.css
  60. 0
      public/vendor/dcat-admin/adminlte/adminlte.js
  61. 0
      public/vendor/dcat-admin/adminlte/adminlte.js.map
  62. 0
      public/vendor/dcat-admin/dcat/css/dcat-app-blue-light.css
  63. 0
      public/vendor/dcat-admin/dcat/css/dcat-app-blue.css
  64. 0
      public/vendor/dcat-admin/dcat/css/dcat-app-green.css
  65. 0
      public/vendor/dcat-admin/dcat/css/dcat-app.css
  66. 0
      public/vendor/dcat-admin/dcat/css/nunito.css
  67. 0
      public/vendor/dcat-admin/dcat/extra/action.js
  68. 0
      public/vendor/dcat-admin/dcat/extra/action.js.map
  69. 0
      public/vendor/dcat-admin/dcat/extra/grid-extend.js
  70. 0
      public/vendor/dcat-admin/dcat/extra/grid-extend.js.map
  71. 0
      public/vendor/dcat-admin/dcat/extra/markdown.css
  72. 0
      public/vendor/dcat-admin/dcat/extra/select-table.js
  73. 0
      public/vendor/dcat-admin/dcat/extra/select-table.js.map
  74. 0
      public/vendor/dcat-admin/dcat/extra/upload.css
  75. 0
      public/vendor/dcat-admin/dcat/extra/upload.js
  76. 0
      public/vendor/dcat-admin/dcat/extra/upload.js.map
  77. 0
      public/vendor/dcat-admin/dcat/js/dcat-app.js
  78. 0
      public/vendor/dcat-admin/dcat/js/dcat-app.js.map
  79. 0
      public/vendor/dcat-admin/dcat/plugins/bootstrap-colorpicker/css/bootstrap-colorpicker.css
  80. 0
      public/vendor/dcat-admin/dcat/plugins/bootstrap-colorpicker/css/bootstrap-colorpicker.css.map
  81. 0
      public/vendor/dcat-admin/dcat/plugins/bootstrap-colorpicker/css/bootstrap-colorpicker.min.css
  82. 0
      public/vendor/dcat-admin/dcat/plugins/bootstrap-colorpicker/css/bootstrap-colorpicker.min.css.map
  83. 0
      public/vendor/dcat-admin/dcat/plugins/bootstrap-colorpicker/js/bootstrap-colorpicker.js
  84. 0
      public/vendor/dcat-admin/dcat/plugins/bootstrap-colorpicker/js/bootstrap-colorpicker.js.map
  85. 0
      public/vendor/dcat-admin/dcat/plugins/bootstrap-colorpicker/js/bootstrap-colorpicker.min.js
  86. 0
      public/vendor/dcat-admin/dcat/plugins/bootstrap-colorpicker/js/bootstrap-colorpicker.min.js.map
  87. 0
      public/vendor/dcat-admin/dcat/plugins/bootstrap-datetimepicker/bootstrap-datetimepicker.css
  88. 0
      public/vendor/dcat-admin/dcat/plugins/bootstrap-datetimepicker/bootstrap-datetimepicker.min.css
  89. 0
      public/vendor/dcat-admin/dcat/plugins/bootstrap-datetimepicker/bootstrap-datetimepicker.min.js
  90. 0
      public/vendor/dcat-admin/dcat/plugins/bootstrap-duallistbox/.editorconfig
  91. 0
      public/vendor/dcat-admin/dcat/plugins/bootstrap-duallistbox/.jshintrc
  92. 0
      public/vendor/dcat-admin/dcat/plugins/bootstrap-duallistbox/.travis.yml
  93. 0
      public/vendor/dcat-admin/dcat/plugins/bootstrap-duallistbox/dist/bootstrap-duallistbox.css
  94. 0
      public/vendor/dcat-admin/dcat/plugins/bootstrap-duallistbox/dist/bootstrap-duallistbox.min.css
  95. 0
      public/vendor/dcat-admin/dcat/plugins/bootstrap-duallistbox/dist/jquery.bootstrap-duallistbox.js
  96. 0
      public/vendor/dcat-admin/dcat/plugins/bootstrap-duallistbox/dist/jquery.bootstrap-duallistbox.min.js
  97. 0
      public/vendor/dcat-admin/dcat/plugins/bootstrap-iconpicker/css/bootstrap-iconpicker.css
  98. 0
      public/vendor/dcat-admin/dcat/plugins/bootstrap-iconpicker/css/bootstrap-iconpicker.min.css
  99. 0
      public/vendor/dcat-admin/dcat/plugins/bootstrap-iconpicker/js/bootstrap-iconpicker-iconset-all.js
  100. 0
      public/vendor/dcat-admin/dcat/plugins/bootstrap-iconpicker/js/bootstrap-iconpicker-iconset-all.min.js

2
app/Admin/Controllers/AgentStatisticsController.php

@ -79,7 +79,7 @@ class AgentStatisticsController extends AdminController
$querys = \request()->all();
$querys['time_key'] = $k;
$queryString = http_build_query($querys);
$str = Str::replaceFirst('admin/', '', request()->path());
$str = Str::after(request()->path(),'/');
$url = admin_url($str . '?' . $queryString);
// 此处设置的 data-xxx 属性会作为post数据发送到后端api
return "<a class='switch-bar' data-option='{$k}' href='$url'>{$v}</a>";

2
app/Admin/Controllers/OrderStatisticsController.php

@ -116,7 +116,7 @@ HTML;
$querys = \request()->all();
$querys['time_key'] = $k;
$queryString = http_build_query($querys);
$str = Str::replaceFirst('admin/','',request()->path());
$str = Str::after(request()->path(),'/');
$url = admin_url($str.'?'.$queryString);
// 此处设置的 data-xxx 属性会作为post数据发送到后端api
return "<a class='switch-bar' data-option='{$k}' href='$url'>{$v}</a>";

2
app/Admin/Controllers/ProductStatisticsController.php

@ -140,7 +140,7 @@ HTML;
$querys = \request()->all();
$querys['time_key'] = $k;
$queryString = http_build_query($querys);
$str = Str::replaceFirst('admin/','',request()->path());
$str = Str::after(request()->path(),'/');
$url = admin_url($str.'?'.$queryString);
// 此处设置的 data-xxx 属性会作为post数据发送到后端api
return "<a class='switch-bar' data-option='{$k}' href='$url'>{$v}</a>";

2
app/Admin/Controllers/SupplierStatisticsController.php

@ -79,7 +79,7 @@ class SupplierStatisticsController extends AdminController
$querys = \request()->all();
$querys['time_key'] = $k;
$queryString = http_build_query($querys);
$str = Str::replaceFirst('admin/', '', request()->path());
$str = Str::after(request()->path(),'/');
$url = admin_url($str . '?' . $queryString);
// 此处设置的 data-xxx 属性会作为post数据发送到后端api
return "<a class='switch-bar' data-option='{$k}' href='$url'>{$v}</a>";

4
app/Admin/Controllers/UserStatisticsController.php

@ -4,7 +4,7 @@ namespace App\Admin\Controllers;
use App\AdminAgent\Metrics\Examples\FinanceStatistics;
use App\AdminAgent\Metrics\Examples\OrderStatistics;
use App\AdminAgent\Metrics\Examples\UserStatistics;
use App\Admin\Metrics\Examples\UserStatistics;
use App\Common\OrderStatus;
use App\Models\Order;
use App\Models\OrderProductItem;
@ -78,7 +78,7 @@ class UserStatisticsController extends AdminController
$querys = \request()->all();
$querys['time_key'] = $k;
$queryString = http_build_query($querys);
$str = Str::replaceFirst('admin/', '', request()->path());
$str = Str::after(request()->path(),'/');
$url = admin_url($str . '?' . $queryString);
// 此处设置的 data-xxx 属性会作为post数据发送到后端api
return "<a class='switch-bar' data-option='{$k}' href='$url'>{$v}</a>";

7
app/Admin/Extensions/Grid/AuditAgent.php

@ -1,6 +1,7 @@
<?php
namespace App\Admin\Extensions\Grid;
use App\Common\AgentType;
use App\Common\UserStatus;
use App\Models\Agent;
use App\Models\Category;
@ -111,9 +112,9 @@ class AuditAgent extends RowAction
//插入权限表
if ($user->status == UserStatus::NORMAL) {
$roleArr = [
1 => 2, //计调旅行社 role_id
2 => 2, //供应商旅行社 role_id
3 => 3, //组团旅行社 role_id
AgentType::CLUSTER => 4, //计调旅行社 role_id
AgentType::SUPPLIER => 2, //供应商旅行社 role_id
AgentType::OPERATOR => 3, //组团旅行社 role_id
];
DB::table(config('admin-agent.database.role_users_table'))
->insertOrIgnore(['role_id' => $roleArr[$user->type], 'user_id' => $this->getKey()]);

54
app/Admin/Metrics/Examples/UserStatistics.php

@ -8,6 +8,7 @@ use App\Models\User;
use Dcat\Admin\Admin;
use Dcat\Admin\Widgets\ApexCharts\Chart;
use Dcat\Admin\Widgets\Metrics\Bar;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Http\Request;
use Illuminate\Support\Arr;
use Illuminate\Support\Facades\DB;
@ -70,45 +71,50 @@ class UserStatistics extends Chart
*/
protected function buildData()
{
$query = User::query()
->select('*');
$dateTime = request('created_at', 0);
if ($dateTime) {
$query->whereBetween('created_at',$dateTime);
}
switch (request('time_key', 0)) {
case '1':
$query->addSelect(DB::raw("count(id) as sum_price,CONCAT(YEAR(created_at),'-',MONTH(created_at),'-',DAY(created_at)) AS statistics_time"));
$time = "DATE_FORMAT(created_at,'%Y-%m-%d')";
break;
case '30':
$query->addSelect(DB::raw("count(id) as sum_price,CONCAT(YEAR(created_at),'-',MONTH(created_at)) AS statistics_time"));
$time = "DATE_FORMAT(created_at,'%Y-%m')";
break;
case '365':
$query->addSelect(DB::raw("count(id) as sum_price,CONCAT(YEAR(created_at)) AS statistics_time"));
$time = "DATE_FORMAT(created_at,'%Y')";
break;
default:
$query->addSelect(DB::raw("count(id) as sum_price,CONCAT(YEAR(created_at),'-',MONTH(created_at),'-',DAY(created_at)) AS statistics_time"));
$time = "DATE_FORMAT(created_at,'%Y-%m-%d')";
}
$users = $query->groupBy('statistics_time')
->orderBy('statistics_time')
->get();
$userNum = 0;
$userArr = [];
foreach ($users as $user) {
$userNum += $user->sum_price;
array_push($userArr,$userNum);
$model = new User;
$table = $model->getTable();
$right = DB::table(function ($query) use ($table,$time){
$query->selectRaw($time." AS tart_dat")
->from($table)
->groupBy('tart_dat');
},'l_tab');
$users = DB::table(function ($query) use ($table,$time) {
$query->selectRaw($time ." AS start_date")
->from($table);
},'r_tab')
->joinSub($right, 'l_tab', function ($join) {
$join->on('l_tab.tart_dat', '>=', 'r_tab.start_date');
})
->addSelect(DB::raw('tart_dat as statistics_time,count(tart_dat) as count'))
->orderBy('tart_dat')
->groupBy('tart_dat');
$dateTime = request('created_at', 0);
if ($dateTime) {
$users->whereBetween('tart_dat',$dateTime);
}
$users = $users->get()
->toArray();
$this->withData([
[
'name' => '用户数',
'data' => $userArr
'data' => Arr::pluck($users,'count')
],
]
);

2
app/AdminAgent/Controllers/AgentProductController.php

@ -267,7 +267,9 @@ class AgentProductController extends AdminController
->dialogWidth('50%;min-width:600px;') //不起作用
->from(SelectGuide::make())
->model(Guide::class, 'id', 'name');
if ($form->isEditing()) {
$form->confirm('提示', '如果修改了标题、价格、产品图片、旅游须知、产品详情需要重新审核,同时<span class="btn-danger">下架所有</span>关联的代理商产品,是否继续?');
}
} else {
$form->switch('is_rec')->help('推荐后将在小程序“我的”页面下方显示');

6
app/AdminAgent/Controllers/DemandController.php

@ -152,7 +152,7 @@ class DemandController extends AdminController
$form->disableCreatingCheck();
$form->disableViewCheck();
$form->display('id');
$form->text('title')->required();
$form->text('title')->required()->maxLength(50);
$form->textarea('comment')->required();
$form->distpicker(['province_id', 'city_id', 'area_id'], '请选择区域')->required();
$form->multipleImage('images','图片')->limit(5)->saving(function ($path) {
@ -180,8 +180,8 @@ class DemandController extends AdminController
->default(1)
->required();
}
$form->decimal('price')->required();
$form->number('stock')->required();
$form->decimal('price')->required()->type('number')->attribute('min', 0);
$form->number('stock')->required()->min(1);
$form->hidden('publisher_type');
$form->hidden('publisher_id');
$form->saving(function (Form $form) {

2
app/AdminAgent/Controllers/FinanceStatisticsController.php

@ -130,7 +130,7 @@ HTML;
$querys = \request()->all();
$querys['time_key'] = $k;
$queryString = http_build_query($querys);
$str = Str::replaceFirst('admin-agent/','',request()->path());
$str = Str::after(request()->path(),'/');
$url = admin_url($str.'?'.$queryString);
// 此处设置的 data-xxx 属性会作为post数据发送到后端api
return "<a class='switch-bar' data-option='{$k}' href='$url'>{$v}</a>";

2
app/AdminAgent/Controllers/OrderStatisticsController.php

@ -117,7 +117,7 @@ HTML;
$querys = \request()->all();
$querys['time_key'] = $k;
$queryString = http_build_query($querys);
$str = Str::replaceFirst('admin-agent/','',request()->path());
$str = Str::after(request()->path(),'/');
$url = admin_url($str.'?'.$queryString);
// 此处设置的 data-xxx 属性会作为post数据发送到后端api
return "<a class='switch-bar' data-option='{$k}' href='$url'>{$v}</a>";

2
app/AdminAgent/Controllers/ProductStatisticsController.php

@ -141,7 +141,7 @@ HTML;
$querys = \request()->all();
$querys['time_key'] = $k;
$queryString = http_build_query($querys);
$str = Str::replaceFirst('admin-agent/','',request()->path());
$str = Str::after(request()->path(),'/');
$url = admin_url($str.'?'.$queryString);
// 此处设置的 data-xxx 属性会作为post数据发送到后端api
return "<a class='switch-bar' data-option='{$k}' href='$url'>{$v}</a>";

2
app/AdminAgent/Controllers/UserStatisticsController.php

@ -78,7 +78,7 @@ class UserStatisticsController extends AdminController
$querys = \request()->all();
$querys['time_key'] = $k;
$queryString = http_build_query($querys);
$str = Str::replaceFirst('admin-agent/', '', request()->path());
$str = Str::after(request()->path(),'/');
$url = admin_url($str . '?' . $queryString);
// 此处设置的 data-xxx 属性会作为post数据发送到后端api
return "<a class='switch-bar' data-option='{$k}' href='$url'>{$v}</a>";

54
app/AdminAgent/Metrics/Examples/UserStatistics.php

@ -8,6 +8,7 @@ use App\Models\User;
use Dcat\Admin\Admin;
use Dcat\Admin\Widgets\ApexCharts\Chart;
use Dcat\Admin\Widgets\Metrics\Bar;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Http\Request;
use Illuminate\Support\Arr;
use Illuminate\Support\Facades\DB;
@ -70,46 +71,53 @@ class UserStatistics extends Chart
*/
protected function buildData()
{
$query = User::query()
->where('agent_id',Admin::user()->id)
->select('*');
$dateTime = request('created_at', 0);
if ($dateTime) {
$query->whereBetween('created_at',$dateTime);
}
switch (request('time_key', 0)) {
case '1':
$query->addSelect(DB::raw("count(id) as sum_price,CONCAT(YEAR(created_at),'-',MONTH(created_at),'-',DAY(created_at)) AS statistics_time"));
$time = "DATE_FORMAT(created_at,'%Y-%m-%d')";
break;
case '30':
$query->addSelect(DB::raw("count(id) as sum_price,CONCAT(YEAR(created_at),'-',MONTH(created_at)) AS statistics_time"));
$time = "DATE_FORMAT(created_at,'%Y-%m')";
break;
case '365':
$query->addSelect(DB::raw("count(id) as sum_price,CONCAT(YEAR(created_at)) AS statistics_time"));
$time = "DATE_FORMAT(created_at,'%Y')";
break;
default:
$query->addSelect(DB::raw("count(id) as sum_price,CONCAT(YEAR(created_at),'-',MONTH(created_at),'-',DAY(created_at)) AS statistics_time"));
$time = "DATE_FORMAT(created_at,'%Y-%m-%d')";
}
$users = $query->groupBy('statistics_time')
->orderBy('statistics_time')
->get();
$model = new User;
$table = $model->getTable();
$right = DB::table(function ($query) use ($table,$time){
$query->selectRaw($time." AS tart_dat")
->where('agent_id',Admin::user()->id)
->from($table)
->groupBy('tart_dat');
},'l_tab');
$userNum = 0;
$userArr = [];
$users = DB::table(function ($query) use ($table,$time) {
$query->selectRaw($time ." AS start_date")
->where('agent_id',Admin::user()->id)
->from($table);
},'r_tab')
->joinSub($right, 'l_tab', function ($join) {
$join->on('l_tab.tart_dat', '>=', 'r_tab.start_date');
})
->addSelect(DB::raw('tart_dat as statistics_time,count(tart_dat) as count'))
->orderBy('tart_dat')
->groupBy('tart_dat');
foreach ($users as $user) {
$userNum += $user->sum_price;
array_push($userArr,$userNum);
$dateTime = request('created_at', 0);
if ($dateTime) {
$users->whereBetween('tart_dat',$dateTime);
}
$users = $users->get()
->toArray();
$this->withData([
[
'name' => '用户数',
'data' => $userArr
'data' => Arr::pluck($users,'count')
],
]
);

2
app/AdminGuide/routes.php

@ -12,7 +12,7 @@ Route::group([
'middleware' => config('admin.route.middleware'),
], function (Router $router) {
$router->get('/', 'HomeController@index');
$router->resource('/', 'OrderController');
$router->post('auth/login', 'AuthController@postLogin');
$router->resource('order/list', 'OrderController');

2
app/AdminSupplier/Controllers/FinanceStatisticsController.php

@ -134,7 +134,7 @@ HTML;
$querys = \request()->all();
$querys['time_key'] = $k;
$queryString = http_build_query($querys);
$str = Str::replaceFirst('admin-supplier/','',request()->path());
$str = Str::after(request()->path(),'/');
$url = admin_url($str.'?'.$queryString);
// 此处设置的 data-xxx 属性会作为post数据发送到后端api
return "<a class='switch-bar' data-option='{$k}' href='$url'>{$v}</a>";

2
app/AdminSupplier/Controllers/OrderStatisticsController.php

@ -118,7 +118,7 @@ HTML;
$querys = \request()->all();
$querys['time_key'] = $k;
$queryString = http_build_query($querys);
$str = Str::replaceFirst('admin-supplier/','',request()->path());
$str = Str::after(request()->path(),'/');
$url = admin_url($str.'?'.$queryString);
// 此处设置的 data-xxx 属性会作为post数据发送到后端api
return "<a class='switch-bar' data-option='{$k}' href='$url'>{$v}</a>";

2
app/AdminSupplier/Controllers/ProductStatisticsController.php

@ -139,7 +139,7 @@ HTML;
$querys = \request()->all();
$querys['time_key'] = $k;
$queryString = http_build_query($querys);
$str = Str::replaceFirst('admin-supplier/','',request()->path());
$str = Str::after(request()->path(),'/');
$url = admin_url($str.'?'.$queryString);
// 此处设置的 data-xxx 属性会作为post数据发送到后端api
return "<a class='switch-bar' data-option='{$k}' href='$url'>{$v}</a>";

8
app/Common/AgentType.php

@ -9,21 +9,21 @@ namespace App\Common;
*/
class AgentType
{
/** @var int 计调版旅行社 */
/** @var int 组团版旅行社 */
const OPERATOR = 1;
/** @var int 供应商旅行社 */
const SUPPLIER = 2;
/** @var int 组团版旅行社 */
/** @var int 计调版旅行社 */
const CLUSTER = 3;
public static function array(): array
{
return [
self::OPERATOR => '计调版旅行社',
self::OPERATOR => '组团版旅行社',
self::SUPPLIER => '供应商旅行社',
self::CLUSTER => '组团版旅行社',
self::CLUSTER => '计调版旅行社',
];
}

16
app/Console/Commands/BalanceDue.php

@ -3,6 +3,7 @@
namespace App\Console\Commands;
use App\Common\OrderStatus;
use App\Common\PayType;
use App\Models\Demand;
use App\Models\Order;
use App\Service\SmsService;
@ -50,19 +51,8 @@ class BalanceDue extends Command
$sms = new SmsService();
foreach ($orders as $order) {
if (!empty($order->mobile)) {
$sms->send(
'pay',
[
$order->order_no,
'定金/订金',
$order->timeout,
'定金/订金',
'小程序'
],
[
$order->mobile
],
);
$type = $order->pay_type == PayType::DEPOSIT_PAY ? '订金' : '定金';
$sms->send('pay',['订单号:'.$order->orderNumber,$type,$order->timeout,$type,'小程序'],[$order->mobile]);
}
}
}

12
app/Http/Controllers/Api/OrderController.php

@ -179,6 +179,16 @@ class OrderController extends Controller
$order_timeout = AgentSetting::val($this->agent_id, 'order_timeout') ?? 60; //默认60分钟
$timeout = date('Y-m-d H:i:s', time() + $order_timeout * 60); //60 * 分钟转为秒
//处理预付金额
if ($formData['pay_type'] == PayType::DEPOSIT_PAY) {
//订金支付
$prepayPrice = $ap->deposit;
$prepayTimeout = $ap->deposit_timeout;
} else if($formData['pay_type'] == PayType::EARNEST_PAY) {
//定金支付
$prepayPrice = $ap->earnest;
$prepayTimeout = $ap->earnest_timeout;
}
// 存入订单表
$order = Order::query()->create([
'user_id' => $this->user_id,
@ -201,6 +211,8 @@ class OrderController extends Controller
'timeout' => $timeout,
'agent_cloud_pid' => $ap->agent_cloud_pid,
'agent_cloud_price' => $ap->agentCloudProduct->price ?? 0,
'prepay_price ' => $prepayPrice ?? 0,
'prepay_timeout' => $prepayTimeout ?? 0,
]);
//存入订单产品表

6
app/Http/Controllers/Api/SharePayController.php

@ -52,9 +52,11 @@ class SharePayController extends Controller
//如果已经付定金或首付款,则仅支付尾款
if ($order->status == Status::PAY_EARNEST) {
$price = $order->price - $order->paid_money;
$price = bcsub($order->price,$order->paid_money,2);
} elseif (in_array($order->pay_type, [PayType::DEPOSIT_PAY, PayType::EARNEST_PAY])) {
$price = $order->prepay_price;
} else {
$price = $this->calc($order->price, $order->num, $order->pay_type, $order->agentProduct);
$price = bcmul($order->price,$order->num,2);
}
$setting = AdminSetting::val(['payee_appid', 'payee_mchid', 'payee_mchkey']);

4
app/Http/Controllers/Api/VerificationController.php

@ -2,6 +2,7 @@
namespace App\Http\Controllers\Api;
use App\Common\PayType;
use App\Common\StatementType;
use App\Http\Controllers\Controller;
use App\Models\Agent;
@ -50,7 +51,10 @@ class VerificationController extends Controller
if ($order->save()) {
//分账
//线下订单不分账
if ($order->pay_type != PayType::OFFLINE) {
$this->fund($order);
}
//短信
if (env('SMS_SWITCH', '') == true) {
if (!empty($order->user->mobile)) {

17
app/Http/Controllers/Api/WxpayController.php

@ -2,6 +2,7 @@
namespace App\Http\Controllers\Api;
use App\Common\PayType;
use App\Jobs\BalanceDue;
use App\Models\AdminSetting;
use App\Models\Agent;
use App\Models\AgentProduct;
@ -97,15 +98,23 @@ class WxpayController
$order->paid_money = DB::raw('`paid_money` + ' . $money);
//如果是已付定金,重新设置超时时间,否则清除超时时间
if ($order->status == OrderStatus::PAY_EARNEST) {
if ($pay_type == PayType::DEPOSIT_PAY) { //订金超时
$time = $agent_product->deposit_timeout * 60;
} else if ($pay_type == PayType::EARNEST_PAY) { //定金超时
$time = $agent_product->earnest_timeout * 60;
if ($pay_type == PayType::DEPOSIT_PAY || $pay_type == PayType::EARNEST_PAY) { //订金超时
$time = $order->prepay_timeout * 60;
}
if (empty($time)) { //默认订单超时
$time = (AgentSetting::val($agent_id, 'order_timeout') ?? 60) * 60;
}
$order->timeout = date('Y-m-d H:i:s', time() + $time);
//尾款通知时间 默认为剩余三小时自动通知
$smsEarnest = env('SMS_EARNEST',60*60*24*3);
//短信通知
if(env('SMS_SWITCH' , '') == true && $time > $smsEarnest) {
//如果剩余时间大于三小时 在订单到期前三小时给用户发短信
if ($time > $smsEarnest) {
BalanceDue::dispatch('2108301532315779206730',$time - $smsEarnest);
}
}
} else {
$order->timeout = null;
}

5
app/Jobs/BalanceDue.php

@ -3,6 +3,7 @@
namespace App\Jobs;
use App\Common\OrderStatus;
use App\Common\PayType;
use App\Models\Order;
use App\Service\SmsService;
use App\Traits\SmsTraits;
@ -40,9 +41,9 @@ class BalanceDue implements ShouldQueue
{
$order = Order::query()->where('order_no',$this->orderNumber)->first();
if(env('SMS_SWITCH' , '') == true && !empty($order->status) && $order->status == OrderStatus::PAY_EARNEST){
Log::info('队列执行');
$sms = new SmsService();
$sms->send('demand',['订单号:'.$this->orderNumber,'测试2',SmsTraits::$systeaNameText['supplier']],[15677177320]);
$type = $order->pay_type == PayType::DEPOSIT_PAY ? '订金' : '定金';
$sms->send('pay',['订单号:'.$this->orderNumber,$type,$order->timeout,$type,'小程序'],[$order->mobile]);
}
}
}

5
app/Models/AgentProductItem.php

@ -25,4 +25,9 @@ class AgentProductItem extends BaseModel
{
return $this->belongsTo(AgentProduct::class);
}
public function agent()
{
return $this->belongsTo(Agent::class);
}
}

4
app/Providers/ProductServiceProvider.php

@ -2,6 +2,7 @@
namespace App\Providers;
use App\Common\AgentType;
use App\Common\ProductStatus;
use App\Models\AgentProduct;
use App\Models\AgentProductItem;
@ -42,6 +43,9 @@ class ProductServiceProvider extends ServiceProvider
$agentIds = AgentProductItem::query()
->withoutGlobalScope('orderById')
->where('supplier_id', $product->supplier_id)
->whereHas('agent',function($query) {
$query->where('type','!=',AgentType::CLUSTER);
})
->distinct()
->pluck('agent_id');
foreach ($agentIds as $v) {

2
app/Traits/DemandTraits.php

@ -24,7 +24,7 @@ trait DemandTraits
];
public static $state = [
1 => '竞标' ,
1 => '竞标' ,
2 => '已竞标' ,
3 => '流拍'
];

35
database/migrations/2021_09_15_154853_update_order_table.php

@ -0,0 +1,35 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class UpdateOrderTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('orders', function (Blueprint $table) {
$table->decimal('prepay_price')
->default(0)
->comment('下单时产品的订金/定金');
$table->integer('prepay_timeout')
->default(0)
->comment('订金/定金支付超时时间,单位:分钟');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
//
}
}

1
public/.well-known/acme-challenge/IkivduCTGACeP1iwKnTjOJS9i2MLNechrCoZumTQvNQ

@ -0,0 +1 @@
IkivduCTGACeP1iwKnTjOJS9i2MLNechrCoZumTQvNQ.ewbo8qHVhGp0zEmlJ8NBtVQduym0kunE15446JMC8ag

0
public/CA certificates.url

0
public/cacert-2021-07-05.pem

0
public/css/data_report.css

0
public/css/detail.css

0
public/favicon.ico

0
public/index.php

0
public/js/element.js

0
public/js/helper.js

0
public/js/moment-with-locales.js

0
public/js/workorder-notice.js

0
public/mklink.bat

0
public/robots.txt

0
public/static/images/1.jpg

Before

Width: 333  |  Height: 385  |  Size: 42 KiB

After

Width: 333  |  Height: 385  |  Size: 42 KiB

0
public/static/images/2.jpg

Before

Width: 333  |  Height: 322  |  Size: 27 KiB

After

Width: 333  |  Height: 322  |  Size: 27 KiB

0
public/static/images/article.jpg

Before

Width: 685  |  Height: 288  |  Size: 66 KiB

After

Width: 685  |  Height: 288  |  Size: 66 KiB

0
public/static/images/avatar.png

Before

Width: 384  |  Height: 384  |  Size: 12 KiB

After

Width: 384  |  Height: 384  |  Size: 12 KiB

0
public/static/images/home_ad1.png

Before

Width: 710  |  Height: 221  |  Size: 159 KiB

After

Width: 710  |  Height: 221  |  Size: 159 KiB

0
public/static/images/icon.jpg

Before

Width: 160  |  Height: 160  |  Size: 4.6 KiB

After

Width: 160  |  Height: 160  |  Size: 4.6 KiB

0
public/static/images/slide1.jpg

Before

Width: 714  |  Height: 333  |  Size: 47 KiB

After

Width: 714  |  Height: 333  |  Size: 47 KiB

0
public/static/images/slide2.jpg

Before

Width: 714  |  Height: 333  |  Size: 48 KiB

After

Width: 714  |  Height: 333  |  Size: 48 KiB

0
public/static/images/special.jpg

Before

Width: 750  |  Height: 490  |  Size: 109 KiB

After

Width: 750  |  Height: 490  |  Size: 109 KiB

0
public/vendor/dcat-admin-extensions/super-eggs/dcat-distpicker/dist/distpicker.common.js

0
public/vendor/dcat-admin-extensions/super-eggs/dcat-distpicker/dist/distpicker.esm.js

0
public/vendor/dcat-admin-extensions/super-eggs/dcat-distpicker/dist/distpicker.js

0
public/vendor/dcat-admin-extensions/super-eggs/dcat-distpicker/dist/distpicker.min.js

0
public/vendor/dcat-admin/adminlte/adminlte-blue-light.css

0
public/vendor/dcat-admin/adminlte/adminlte-blue.css

0
public/vendor/dcat-admin/adminlte/adminlte-green.css

0
public/vendor/dcat-admin/adminlte/adminlte.css

0
public/vendor/dcat-admin/adminlte/adminlte.js

0
public/vendor/dcat-admin/adminlte/adminlte.js.map

0
public/vendor/dcat-admin/dcat/css/dcat-app-blue-light.css

0
public/vendor/dcat-admin/dcat/css/dcat-app-blue.css

0
public/vendor/dcat-admin/dcat/css/dcat-app-green.css

0
public/vendor/dcat-admin/dcat/css/dcat-app.css

0
public/vendor/dcat-admin/dcat/css/nunito.css

0
public/vendor/dcat-admin/dcat/extra/action.js

0
public/vendor/dcat-admin/dcat/extra/action.js.map

0
public/vendor/dcat-admin/dcat/extra/grid-extend.js

0
public/vendor/dcat-admin/dcat/extra/grid-extend.js.map

0
public/vendor/dcat-admin/dcat/extra/markdown.css

0
public/vendor/dcat-admin/dcat/extra/select-table.js

0
public/vendor/dcat-admin/dcat/extra/select-table.js.map

0
public/vendor/dcat-admin/dcat/extra/upload.css

0
public/vendor/dcat-admin/dcat/extra/upload.js

0
public/vendor/dcat-admin/dcat/extra/upload.js.map

0
public/vendor/dcat-admin/dcat/js/dcat-app.js

0
public/vendor/dcat-admin/dcat/js/dcat-app.js.map

0
public/vendor/dcat-admin/dcat/plugins/bootstrap-colorpicker/css/bootstrap-colorpicker.css

0
public/vendor/dcat-admin/dcat/plugins/bootstrap-colorpicker/css/bootstrap-colorpicker.css.map

0
public/vendor/dcat-admin/dcat/plugins/bootstrap-colorpicker/css/bootstrap-colorpicker.min.css

0
public/vendor/dcat-admin/dcat/plugins/bootstrap-colorpicker/css/bootstrap-colorpicker.min.css.map

0
public/vendor/dcat-admin/dcat/plugins/bootstrap-colorpicker/js/bootstrap-colorpicker.js

0
public/vendor/dcat-admin/dcat/plugins/bootstrap-colorpicker/js/bootstrap-colorpicker.js.map

0
public/vendor/dcat-admin/dcat/plugins/bootstrap-colorpicker/js/bootstrap-colorpicker.min.js

0
public/vendor/dcat-admin/dcat/plugins/bootstrap-colorpicker/js/bootstrap-colorpicker.min.js.map

0
public/vendor/dcat-admin/dcat/plugins/bootstrap-datetimepicker/bootstrap-datetimepicker.css

0
public/vendor/dcat-admin/dcat/plugins/bootstrap-datetimepicker/bootstrap-datetimepicker.min.css

0
public/vendor/dcat-admin/dcat/plugins/bootstrap-datetimepicker/bootstrap-datetimepicker.min.js

0
public/vendor/dcat-admin/dcat/plugins/bootstrap-duallistbox/.editorconfig

0
public/vendor/dcat-admin/dcat/plugins/bootstrap-duallistbox/.jshintrc

0
public/vendor/dcat-admin/dcat/plugins/bootstrap-duallistbox/.travis.yml

0
public/vendor/dcat-admin/dcat/plugins/bootstrap-duallistbox/dist/bootstrap-duallistbox.css

0
public/vendor/dcat-admin/dcat/plugins/bootstrap-duallistbox/dist/bootstrap-duallistbox.min.css

0
public/vendor/dcat-admin/dcat/plugins/bootstrap-duallistbox/dist/jquery.bootstrap-duallistbox.js

0
public/vendor/dcat-admin/dcat/plugins/bootstrap-duallistbox/dist/jquery.bootstrap-duallistbox.min.js

0
public/vendor/dcat-admin/dcat/plugins/bootstrap-iconpicker/css/bootstrap-iconpicker.css

0
public/vendor/dcat-admin/dcat/plugins/bootstrap-iconpicker/css/bootstrap-iconpicker.min.css

0
public/vendor/dcat-admin/dcat/plugins/bootstrap-iconpicker/js/bootstrap-iconpicker-iconset-all.js

0
public/vendor/dcat-admin/dcat/plugins/bootstrap-iconpicker/js/bootstrap-iconpicker-iconset-all.min.js

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save