Plantask.php 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. <?php
  2. namespace app\index\controller;
  3. use think\Controller;
  4. use think\Db;
  5. use think\Cache;
  6. class Plantask extends Controller
  7. {
  8. //未支付订单,下单N分钟后,自动取消
  9. public function auto_cancel_nopay_order(){
  10. $nowtime = time();
  11. $second = config('site.nopay_order_autocancel_minute') * 60;
  12. $lasttime = $nowtime - $second;
  13. //dump(datetime($lasttime));exit;
  14. $rs = Db::name('wenzhen_order')->where('status',0)->where('createtime','lt',$lasttime)->update([
  15. 'status' => 3,
  16. 'cancel_time' => $nowtime,
  17. 'cancel_reason' => '超时未支付',
  18. 'finish_time' => $nowtime,
  19. ]);
  20. echo $rs;
  21. }
  22. //待接诊订单,医生不操作,支付N分钟后,自动退诊
  23. public function auto_tuizhen_noaccept_order(){
  24. $nowtime = time();
  25. $second = config('site.payorder_noaccept_autotuizhen_minute') * 60;
  26. $lasttime = $nowtime - $second;
  27. //dump(datetime($lasttime));exit;
  28. Db::startTrans();
  29. $wenzhen_order = Db::name('wenzhen_order')->where('status',10)->where('pay_time','lt',$lasttime)->order('id asc')->lock(true)->find();
  30. if(empty($order_list)){
  31. Db::rollback();
  32. echo 'empty';
  33. exit;
  34. }
  35. $order_id = $wenzhen_order['id'];
  36. //修改订单
  37. $update = [
  38. 'status' => 16,
  39. 'cancel_time' => $nowtime,
  40. 'cancel_reason' => '超时未接诊',
  41. 'finish_time' => $nowtime,
  42. ];
  43. //余额支付的直接退款
  44. if($wenzhen_order['pay_type'] == 'wallet'){
  45. //用户加钱
  46. $logtype = $wenzhen_order['ordertype'] == 1 ? 13 : 14;
  47. $rs_wallet = model('wallet')->lockChangeAccountRemain($wenzhen_order['user_id'],'money',$wenzhen_order['total_fee'],$logtype,$remark='超时未接诊','wenzhen_order',$order_id);
  48. if($rs_wallet['status'] === false){
  49. Db::rollback();
  50. echo $rs_wallet['msg'];
  51. exit;
  52. }
  53. //订单退款参数
  54. $update['refund_price'] = $wenzhen_order['total_fee'];
  55. $update['refund_status'] = 3;
  56. }else{
  57. $update['refund_status'] = 1; //待退款
  58. //发起退款
  59. $Wenzhenorder_model = new Wenzhenorder;
  60. $refund_rs = $Wenzhenorder_model->old_refund($wenzhen_order,$wenzhen_order['total_fee']);
  61. if($refund_rs === true){
  62. $update['refund_status'] = 3; //退款完成
  63. }
  64. }
  65. $update_rs = Db::name('wenzhen_order')->where('id',$order_id)->update($update);
  66. if(!$update_rs){
  67. Db::rollback();
  68. echo '退诊失败';
  69. exit;
  70. }
  71. Db::commit();
  72. echo '退诊成功'.$order_id.'结束';
  73. exit;
  74. }
  75. //视频订单,已拨打,通话N分钟后,自动结束
  76. public function auto_finish_firstvideo_videoorder(){
  77. $nowtime = time();
  78. $second = config('site.firstvideo_videoorder_autofinish_minute') * 60;
  79. $lasttime = $nowtime - $second;
  80. $rs = Db::name('wenzhen_order')->where('status',25)->where('ordertype',2)->where('video_time','lt',$lasttime)->update([
  81. 'status' => 30,
  82. 'finish_time' => $nowtime,
  83. ]);
  84. echo $rs;
  85. }
  86. //图文订单,已接诊,接诊N分钟后,自动结束
  87. public function auto_finish_accept_textorder(){
  88. $nowtime = time();
  89. $second = config('site.accept_textorder_autofinish_minute') * 60;
  90. $lasttime = $nowtime - $second;
  91. $rs = Db::name('wenzhen_order')->where('status',20)->where('ordertype',1)->where('accept_time','lt',$lasttime)->update([
  92. 'status' => 30,
  93. 'finish_time' => $nowtime,
  94. ]);
  95. echo $rs;
  96. }
  97. /////////////////////////////////////////////////////////////////////////
  98. //定时跑用户活跃,改成离线
  99. public function auto_user_active(){
  100. $actitime = time() - 7200;
  101. $sql = 'update `mt_user` set is_active = 0 where is_active = 1 and id in (select user_id from mt_user_active where requesttime < '.$actitime.')';
  102. db()->query($sql);
  103. }
  104. //vip过期的,三个隐私设置改成0
  105. //vip过期的,更新用户表is_vip
  106. public function auto_vipend(){
  107. // $sql = 'update `mt_user_power` set yinsi = 0,yinshen = 0,wuhen = 0 where user_id in (select user_id from mt_user_wallet where vip_endtime > 0 and vip_endtime < '.time().')';
  108. // db()->query($sql);
  109. /*$sql2 = 'update `mt_user` set is_vip = 0 where is_vip = 1 and user_id in (select user_id from mt_user_wallet where vip_endtime > 0 and vip_endtime < '.time().')';
  110. db()->query($sql2);*/
  111. }
  112. }