StatisticalController.php 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. <?php
  2. namespace app\admin\controller;
  3. use think\exception\ValidateException;
  4. use app\model\Order;
  5. use app\model\Incomelog;
  6. use app\model\TechnicalIncomelog;
  7. use app\model\StoreIncomelog;
  8. use app\model\OperatingcityIncomelog;
  9. class StatisticalController extends Base
  10. {
  11. function index()
  12. {
  13. $weid = weid();
  14. $create_time = input('post.create_time', '', 'serach_in');
  15. $where[] = ['weid', '=', $weid];
  16. if (!empty($create_time)) {
  17. $where[] = ['create_time', 'between', [strtotime($create_time[0]), strtotime($create_time[1])]];
  18. } else {
  19. $interval = input('post.interval', '', 'serach_in');
  20. $create_time = [];
  21. if ($interval == '日') {
  22. $create_time[0] = date("Y-m-d", strtotime("-1 day"));
  23. $create_time[1] = date("Y-m-d", time());
  24. $where[] = ['create_time', 'between', [strtotime($create_time[0]), strtotime($create_time[1])]];
  25. } elseif ($interval == '周') {
  26. $create_time[0] = date("Y-m-d", mktime(0, 0, 0, date("m"), date("d") - date("w") + 1, date("Y")));
  27. $create_time[1] = date("Y-m-d", time());
  28. $where[] = ['create_time', 'between', [strtotime($create_time[0]), strtotime($create_time[1])]];
  29. } elseif ($interval == '月') {
  30. $create_time[0] = date('Y-m-d', mktime(0, 0, 0, date('m'), 1, date('Y')));
  31. $create_time[1] = date("Y-m-d", time());
  32. $where[] = ['create_time', 'between', [strtotime($create_time[0]), strtotime($create_time[1])]];
  33. } elseif ($interval == '年') {
  34. $create_time[0] = date('Y-m-d', mktime(0, 0, 0, 1, 1, date('Y')));
  35. $create_time[1] = date("Y-m-d", time());
  36. $where[] = ['create_time', 'between', [strtotime($create_time[0]), strtotime($create_time[1])]];
  37. }
  38. }
  39. $list[0]['ptypename'] = '服务';
  40. $list[1]['ptypename'] = '次卡';
  41. $list[2]['ptypename'] = '商品';
  42. foreach ($list as &$vo) {
  43. if ($vo['ptypename'] == '服务') {
  44. $whereService = $where;
  45. $whereService['ptype'] = 2;
  46. $vo['ordercount'] = Order::where($whereService)->count();
  47. $vo['total'] = Order::where($whereService)->where('pay_time', '>', 0)->sum('total');
  48. $vo['deposit'] = Order::where($whereService)->where('is_additional', 1)->sum('total');
  49. $vo['additional'] = Order::where($whereService)->where('is_additional', 1)->sum('additional');
  50. $vo['AgentIncome'] = Incomelog::where('order_id', 'IN', function ($query) use ($whereService) {
  51. $query->name('order')->where($whereService)->field('id');
  52. })
  53. ->sum('income');
  54. $vo['TechnicalIncome'] = TechnicalIncomelog::where('order_id', 'IN', function ($query) use ($whereService) {
  55. $query->name('order')->where($whereService)->field('id');
  56. })
  57. ->sum('income');
  58. $vo['StoreIncome'] = StoreIncomelog::where('order_id', 'IN', function ($query) use ($whereService) {
  59. $query->name('order')->where($whereService)->field('id');
  60. })
  61. ->sum('income');
  62. $vo['OperatingcityIncome'] = OperatingcityIncomelog::where('order_id', 'IN', function ($query) use ($whereService) {
  63. $query->name('order')->where($whereService)->field('id');
  64. })
  65. ->sum('income');
  66. } elseif ($vo['ptypename'] == '次卡') {
  67. $whereTimes = $where;
  68. $whereTimes['ptype'] = 2;
  69. $whereTimes['is_times'] = 1;
  70. $vo['ordercount'] = Order::where($whereTimes)->count();
  71. $vo['total'] = Order::where($whereTimes)->where('pay_time', '>', 0)->sum('total');
  72. $vo['deposit'] = '-';
  73. $vo['additional'] = '-';
  74. $vo['AgentIncome'] = Incomelog::where('order_id', 'IN', function ($query) use ($whereTimes) {
  75. $query->name('order')->where($whereTimes)->field('id');
  76. })
  77. ->sum('income');
  78. $vo['TechnicalIncome'] = TechnicalIncomelog::where('order_id', 'IN', function ($query) use ($whereTimes) {
  79. $query->name('order')->where($whereTimes)->field('id');
  80. })
  81. ->sum('income');
  82. $vo['StoreIncome'] = StoreIncomelog::where('order_id', 'IN', function ($query) use ($whereTimes) {
  83. $query->name('order')->where($whereTimes)->field('id');
  84. })
  85. ->sum('income');
  86. $vo['OperatingcityIncome'] = OperatingcityIncomelog::where('order_id', 'IN', function ($query) use ($whereTimes) {
  87. $query->name('order')->where($whereTimes)->field('id');
  88. })
  89. ->sum('income');
  90. } elseif ($vo['ptypename'] == '商品') {
  91. $whereGoods = $where;
  92. $whereGoods['ptype'] = 1;
  93. $vo['ordercount'] = Order::where($whereGoods)->count();
  94. $vo['total'] = Order::where($whereGoods)->where('pay_time', '>', 0)->sum('total');
  95. $vo['deposit'] = '-';
  96. $vo['additional'] = '-';
  97. $vo['TechnicalIncome'] = '-';
  98. $vo['AgentIncome'] = Incomelog::where('order_id', 'IN', function ($query) use ($whereGoods) {
  99. $query->name('order')->where($whereGoods)->field('id');
  100. })
  101. ->sum('income');
  102. $vo['StoreIncome'] = StoreIncomelog::where('order_id', 'IN', function ($query) use ($whereGoods) {
  103. $query->name('order')->where($whereGoods)->field('id');
  104. })
  105. ->sum('income');
  106. $vo['OperatingcityIncome'] = OperatingcityIncomelog::where('order_id', 'IN', function ($query) use ($whereGoods) {
  107. $query->name('order')->where($whereGoods)->field('id');
  108. })
  109. ->sum('income');
  110. }
  111. $vo['platformIncome'] = (int)$vo['total'] - (int)$vo['AgentIncome'] - (int)$vo['TechnicalIncome'] - (int)$vo['StoreIncome'] - (int)$vo['OperatingcityIncome'];
  112. $vo['starttime'] = $create_time[0];
  113. $vo['endtime'] = $create_time[1];
  114. }
  115. $data['data'] = $list;
  116. return $this->json($data);
  117. }
  118. }