Timedtask.php 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. <?php
  2. namespace app\data\controller\api;
  3. use app\data\controller\api\business\Order;
  4. use app\data\model\DataNewsItem;
  5. use app\data\model\DataNewsMark;
  6. use app\data\model\DataNewsXCollect;
  7. use app\data\model\DataUser;
  8. use app\data\model\ShopOrder;
  9. use app\data\model\ShopOrderPay;
  10. use app\data\service\NewsService;
  11. use think\admin\Controller;
  12. use think\admin\model\SystemConfig;
  13. /**
  14. * 定时脚本
  15. * Class News
  16. * @package app\data\controller\api
  17. */
  18. class Timedtask extends Controller
  19. {
  20. /**
  21. * 用户vip到期判断
  22. */
  23. public function checkuservip(){
  24. DataUser::mk()->where('is_vip',1)->field('id,is_vip,vip_datetime')->chunk(10,function ($list){
  25. $list = $list->toArray();
  26. foreach ($list as &$v) {
  27. if (strtotime($v['vip_datetime'])<time()){
  28. DataUser::mk()->where('id',$v['id'])->update(
  29. [
  30. 'is_vip'=>0,
  31. 'vip_name'=>'普通用户',
  32. 'update_at'=>date('Y-m-d H:i:s')
  33. ]
  34. );
  35. }
  36. }
  37. },'id','asc');
  38. }
  39. /**
  40. * 订单过期
  41. */
  42. public function checkshoporder(){
  43. $config = SystemConfig('merchant_config');
  44. $time = date('Y-m-d H:i:s',time()-($config['cancellation_time']*60));
  45. ShopOrder::mk()->where('status',2)->where('create_at','<',$time)->chunk(20,function ($list){
  46. $list = $list->toArray();
  47. foreach ($list as &$v){
  48. ShopOrder::mk()->where('id',$v['id'])->save(['status'=>0,'cancel_remark'=>'超时自动取消']);
  49. }
  50. });
  51. }
  52. /**
  53. * 订单退款
  54. */
  55. public function order_timeout_refund(){
  56. $config = SystemConfig('merchant_config');
  57. $timeout = $config['refund_time'];
  58. $time = date('Y-m-d H:i:s',time()-($timeout*60*60));
  59. ShopOrder::mk()->where('status',7)->where('refund_time','<',$time)->chunk(20,function ($list){
  60. $list = $list->toArray();
  61. foreach ($list as &$v){
  62. //同意退款
  63. $pay_money = ShopOrderPay::mk()->where(['status' => 2, 'pay_no'=>$v['payment_trade']])->value('money');
  64. if($v['payment_type']=='支付宝支付') {
  65. $result = json_decode(Order::refund_order($v['payment_trade'], $v['refund_money']), true);
  66. }
  67. if($v['payment_type']=='微信支付') {
  68. $result = json_decode(Order::wxrefund_order($v['payment_trade'], $v['refund_money'],$pay_money), true);
  69. }
  70. if($result) {
  71. ShopOrder::mk()->where('id',$v['id'])->save(['status' => 8, 'refund_status' => 2, 'dk_time' => date('Y-m-d H:i:s')]);
  72. }else{
  73. print_r('失败');
  74. }
  75. }
  76. });
  77. }
  78. }