Operation.php 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. <?php
  2. namespace app\admin\command;
  3. use think\console\Command;
  4. use app\admin\model\Operation as OperationModel;
  5. use app\admin\model\Recharge;
  6. use app\admin\model\Withdraw;
  7. use app\admin\model\Order;
  8. use app\admin\model\User;
  9. use think\console\Input;
  10. use think\console\Output;
  11. class Operation extends Command
  12. {
  13. public function configure()
  14. {
  15. $this->setName('operation')
  16. ->setDescription('统计昨日的充值提现订单等数据(每天00:00 之后执行)');
  17. }
  18. public function execute(Input $input, Output $output)
  19. {
  20. echo ('开始执行统计充值提现订单等数据任务...');
  21. $this->addYesterdayOperationData();
  22. echo ('结束执行统计充值提现订单等数据任务');
  23. }
  24. public function addYesterdayOperationData()
  25. {
  26. $yesterday = date('Y-m-d', strtotime('-1 day'));
  27. $data = [
  28. 'date' => $yesterday,
  29. 'recharge' => 0,
  30. 'user_total_money' => 0,
  31. ];
  32. $start_time = strtotime($yesterday . ' 00:00:00');
  33. $end_time = strtotime($yesterday . ' 23:59:59');
  34. $data['recharge'] = Recharge::where('status', 1)
  35. ->where('operation_time', '>=', $start_time)
  36. ->where('operation_time', '<=', $end_time)
  37. ->sum('actual_received');
  38. $data['withdraw'] = Withdraw::where('status', 1)
  39. ->where('operation_time', '>=', $start_time)
  40. ->where('operation_time', '<=', $end_time)
  41. ->sum('actual_received');
  42. $data['balance_difference'] = $data['recharge'] - $data['withdraw'];
  43. $data['total_price'] = Order::where('create_time', '>=', $start_time)
  44. ->where('create_time', '<=', $end_time)
  45. ->whereIn('status', [1, 2, 3, 4, 5])->sum('amount');
  46. $data['user_total_money'] = User::sum('money');
  47. $info = OperationModel::where('date', $data['date'])->find();
  48. if ($info) {
  49. OperationModel::update($data, ['date' => $data['date']]);
  50. } else {
  51. OperationModel::create($data);
  52. }
  53. return true;
  54. }
  55. }