链街Dcat后台
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

110 lines
4.4 KiB

5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
  1. <?php
  2. namespace App\Admin\Extensions;
  3. use App\Admin\Common\LinkUrl;
  4. use Dcat\Admin\Admin;
  5. use Dcat\Admin\Support\LazyRenderable;
  6. use Illuminate\Support\Facades\DB;
  7. use App\Models\ImsCjdcOrder as orderModel;
  8. use App\Models\ImsCjdcOrderMain as orderMainModel;
  9. use App\Models\v3\Market as MarketModel;
  10. use App\Models\StoreAccount as StoreAccountModel;
  11. use App\Models\v3\Store as StoreModel;
  12. use App\Models\v3\User as UserModel;
  13. class OrderReportPage extends LazyRenderable
  14. {
  15. protected static $js = [LinkUrl::VUE_JS, LinkUrl::ELEMENT_UI_JS];
  16. protected static $css = [LinkUrl::DETAIL_CSS, LinkUrl::ELEMENT_UI_CSS];
  17. public function render()
  18. {
  19. $marketId = request()->input('market_id');
  20. $startTime = request()->input('start_time');
  21. $endTime = request()->input('end_time');
  22. $orderMain = orderMainModel::select(DB::raw('COUNT(id) AS total_num, SUM(money) AS total_money'))->whereIn('state',[4,5,10]);
  23. $storeNewUser = StoreAccountModel::select(DB::raw("SUM( CASE WHEN note = '新用户下单成功,平台奖励' THEN 1 ELSE 0 END ) AS new_add_total, SUM( CASE WHEN note = '新用户下单成功,平台奖励' THEN money ELSE 0 END ) AS new_user_total,SUM( CASE WHEN note = '用户下单成功,平台奖励' THEN money ELSE 0 END ) AS store_total"));
  24. $newUser = UserModel::select(DB::raw('count(id) AS total'));
  25. if($marketId){
  26. $orderMain->where('market_id',$marketId);
  27. // 查询这个市场下的店铺id
  28. $storeIds = StoreModel::where('market_id',$marketId)->pluck('id');
  29. $storeNewUser->whereIn('store_id',$storeIds);
  30. }
  31. if($startTime){
  32. $orderMain->where([['created_at','>=',strtotime($startTime)]]);
  33. $storeNewUser->where([['time','>=',$startTime]]);
  34. $newUser->where([['created_at','>=',strtotime($startTime)]]);
  35. }
  36. if($endTime){
  37. $orderMain->where([['created_at','<=',strtotime($endTime)]]);
  38. $storeNewUser->where([['time','<=',$endTime]]);
  39. $newUser->where([['created_at','<=',strtotime($endTime)]]);
  40. }
  41. if(empty($startTime) && empty($endTime)){
  42. $time = date('Y-m-d',time());
  43. $todayStart = $time.'00:00:00';
  44. $todayEnd = $time.'23:59:59';
  45. $orderMain->where([['created_at','>=',strtotime($todayStart)]]);
  46. $storeNewUser->where([['time','>=',$todayStart]]);
  47. $newUser->where([['created_at','>=',strtotime($todayStart)]]);
  48. $orderMain->where([['created_at','<=',strtotime($todayEnd)]]);
  49. $storeNewUser->where([['time','<=',$todayEnd]]);
  50. $newUser->where([['created_at','<=',strtotime($todayEnd)]]);
  51. }
  52. // 订单总额
  53. $orderReport = $orderMain->get()->toArray();
  54. // 总补贴金额
  55. $storeNewUsers = $storeNewUser->get()->toArray();
  56. // 总用户
  57. $userTotal = $newUser->get()->toArray();
  58. $query = [
  59. 'order_total_num' => !empty($orderReport[0]['total_num'])?$orderReport[0]['total_num']:0,
  60. 'order_total_money' => !empty($orderReport[0]['total_money'])?$orderReport[0]['total_money']:0,
  61. 'new_user_total_money' => !empty($storeNewUsers[0]['new_user_total'])?$storeNewUsers[0]['new_user_total']:0,
  62. 'store_user_total_money' => !empty($storeNewUsers[0]['store_total'])?$storeNewUsers[0]['store_total']:0,
  63. 'new_add_user' => !empty($storeNewUsers[0]['new_add_total'])?$storeNewUsers[0]['new_add_total']:0,
  64. 'user_total' => !empty($userTotal[0]['total'])?$userTotal[0]['total']:0,
  65. ];
  66. if ($query) {
  67. // $marketList = MarketModel::getMarket();
  68. Admin::script(
  69. <<<JS
  70. var app = new Vue({
  71. el:"#order_report",
  72. data:{
  73. order_total_num:"{$query['order_total_num']}",
  74. order_total_money:"{$query['order_total_money']}",
  75. new_user_total_money:"{$query['new_user_total_money']}",
  76. store_user_total_money:"{$query['store_user_total_money']}",
  77. new_add_user:"{$query['new_add_user']}",
  78. user_total:"{$query['user_total']}",
  79. },
  80. methods: {
  81. }
  82. });
  83. JS
  84. );
  85. }
  86. return view('order_report');
  87. }
  88. }