Plantask.php 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. <?php
  2. namespace app\index\controller;
  3. use think\Controller;
  4. use think\Db;
  5. class Plantask extends Controller
  6. {
  7. public function index()
  8. {
  9. exit;
  10. }
  11. //10天不买的用户,第10天结算完,第11天自动滑落,上下级自动衔接
  12. //该用户的所有下级,的推荐人,改成此人的上级。
  13. public function auto_hualuo(){
  14. $nowtime = time();
  15. $toweek = date('w',$nowtime);
  16. if($toweek == 1){
  17. //周日不结算(自动到下周一),所以,周一不滑落
  18. exit;
  19. }
  20. $tendays_ago = $this->hualuo_tendays_ago();
  21. $list = Db::name('user')->where('last_paytime','lt',$tendays_ago)->where('intro_num','gt',0)->select(); //最后买东西是11天前了
  22. if(!empty($list)){
  23. Db::startTrans();
  24. foreach($list as $key => $user){
  25. //我的下级,的推荐人,改成我的上级。也就是跳过了我
  26. $rs = Db::name('user')->where('intro_uid',$user['id'])->update(['intro_uid',$user['intro_uid']]);
  27. if($rs === false){
  28. Db::rollback();
  29. }
  30. //我的推荐人数变0
  31. $rs2 = Db::name('user')->where('id',$user['id'])->update(['intro_num',0]);
  32. if($rs2 === false){
  33. Db::rollback();
  34. }
  35. }
  36. Db::commit();
  37. }
  38. }
  39. //滑落要按11天算
  40. private function hualuo_tendays_ago(){
  41. $nowtime = time();
  42. /*if(input('date','')){
  43. $nowtime = strtotime(input('date',''));
  44. }*/
  45. $today = strtotime(date('Y-m-d',$nowtime));
  46. $toweek = date('w',$nowtime);
  47. $enum = [
  48. 1 => 12,//这一天没人滑落
  49. 2 => 12,
  50. 3 => 12,
  51. 4 => 12,
  52. 5 => 11,
  53. 6 => 11,
  54. 0 => 11,
  55. ];
  56. $rs = $today - ($enum[$toweek] * 86400);
  57. // dump(date('Y-m-d',$rs));
  58. return $rs;
  59. }
  60. }