A3Mall.php 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | A3Mall
  4. // +----------------------------------------------------------------------
  5. // | Copyright (c) 2020 http://www.a3-mall.com All rights reserved.
  6. // +----------------------------------------------------------------------
  7. // | Author: xzncit <158373108@qq.com>
  8. // +----------------------------------------------------------------------
  9. namespace mall\command;
  10. use mall\basic\Setting;
  11. use think\console\Command;
  12. use think\console\Input;
  13. use think\console\input\Argument;
  14. use think\console\input\Option;
  15. use think\console\Output;
  16. use think\facade\Db;
  17. class A3Mall extends Command {
  18. protected function configure(){
  19. $this->setName('task')
  20. ->addArgument('name', Argument::OPTIONAL, "Order type")
  21. ->addOption('time', null, Option::VALUE_REQUIRED, 'Time is optional')
  22. ->setDescription('Order task');
  23. }
  24. protected function execute(Input $input, Output $output){
  25. $name = trim($input->getArgument('name'));
  26. if(empty($name)){
  27. $output->writeln("Please enter the type of order to be executed");
  28. return ;
  29. }
  30. $setting = Setting::get("order",true);
  31. switch($name){
  32. case "cancle":
  33. $time = $input->hasOption('time') ? $input->getOption('time') : $setting["cancel_time"];
  34. $count = Db::name("order")->where(["pay_status"=>0,"status"=>1])->where("create_time","<=",(time() - ($time * 60 * 60 * 24)))->count();
  35. Db::name("order")->where(["pay_status"=>0,"status"=>1])->where("create_time","<=",(time() - ($time * 60 * 60 * 24)))->update(["status"=>4]);
  36. break;
  37. case "complete":
  38. $time = $input->hasOption('time') ? $input->getOption('time') : $setting["complete_time"];
  39. $count = Db::name("order")->where(["pay_status"=>1,"status"=>2])->where("pay_time","<=",(time() - ($time * 60 * 60 * 24)))->count();
  40. Db::name("order")->where(["pay_status"=>1,"status"=>2])->where("pay_time","<=",(time() - ($time * 60 * 60 * 24)))->update([
  41. "completion_time"=>time(),"status"=>5
  42. ]);
  43. break;
  44. case "sign":
  45. $time = $input->hasOption('time') ? $input->getOption('time') : $setting["confirm_time"];
  46. $count = Db::name("order")->where(["pay_status"=>1,"status"=>2])->where("send_time","<=",(time() - ($time * 60 * 60 * 24)))->count();
  47. Db::name("order")->where(["pay_status"=>1,"status"=>2])->where("send_time","<=",(time() - ($time * 60 * 60 * 24)))->update([
  48. "status"=>5,"accept_time"=>time(),"completion_time"=>time(),"delivery_status"=>1
  49. ]);
  50. break;
  51. case "cart":
  52. $time = $input->hasOption('time') ? $input->getOption('time') : 30;
  53. $count = Db::name("cart")->where("create_time","<=",(time() - ($time * 60 * 60 * 24)))->count();
  54. Db::name("cart")->where("create_time","<=",(time() - ($time * 60 * 60 * 24)))->delete();
  55. break;
  56. }
  57. $output->writeln("Processing {$count} pieces of data");
  58. }
  59. }