YearOrderService.php 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. <?php
  2. namespace App\Modules\Subscribe\Services;
  3. use App\Modules\Statistic\Services\DataAnalysisSelectUserService;
  4. use App\Modules\Subscribe\Models\YearOrder;
  5. use Redis;
  6. class YearOrderService
  7. {
  8. /**
  9. * 获取订购记录
  10. * @param $uid
  11. * @return mixed
  12. */
  13. public static function getRecord($uid)
  14. {
  15. $now = date('Y-m-d H:i:s');
  16. $where = [
  17. ['uid', '=', $uid],
  18. ['begin_time', '<=', $now],
  19. ['end_time', '>=', $now],
  20. ];
  21. return YearOrder::where($where)->select('id', 'uid', 'u', 'begin_time', 'end_time')->first();
  22. }
  23. static function save_year_order($data)
  24. {
  25. $insert_data = array();
  26. $insert_data['uid'] = $data['uid'];
  27. $insert_data['begin_time'] = date('Y-m-d H:i:s');
  28. $insert_data['end_time'] = date('Y-m-d H:i:s', strtotime('+365 day'));
  29. $insert_data['distribution_channel_id'] = $data['distribution_channel_id'];
  30. $insert_data['fee'] = $data['fee'];
  31. $insert_data['send_order_id'] = $data['send_order_id'];
  32. $old = YearOrder::where('uid', $data['uid'])->select('id', 'uid', 'u', 'begin_time', 'end_time', 'fee')->first();
  33. if ($old) {
  34. //如果包过年
  35. if (strtotime($old->end_time) > time()) {
  36. //旧的包年没过期
  37. $old->end_time = date('Y-m-d H:i:s', strtotime($old->end_time) + 86400 * 365);
  38. $old->fee = $old->fee + $data['fee'];
  39. $old->save();
  40. } else {
  41. //旧的包年过期了
  42. $old->end_time = date('Y-m-d H:i:s', strtotime('+365 day'));
  43. $old->fee = $old->fee + $data['fee'];
  44. $old->save();
  45. }
  46. return $old;
  47. } else {
  48. return YearOrder::save_year_order($insert_data);
  49. }
  50. }
  51. static function save_month_order($data)
  52. {
  53. $insert_data = array();
  54. $insert_data['uid'] = $data['uid'];
  55. $insert_data['begin_time'] = date('Y-m-d H:i:s');
  56. $insert_data['end_time'] = date('Y-m-d H:i:s', strtotime('+1 month'));
  57. $insert_data['distribution_channel_id'] = $data['distribution_channel_id'];
  58. $insert_data['fee'] = $data['fee'];
  59. $insert_data['send_order_id'] = $data['send_order_id'];
  60. $old = YearOrder::where('uid', $data['uid'])->select('id', 'uid', 'u', 'begin_time', 'end_time', 'fee')->first();
  61. if ($old) {
  62. //如果包过年
  63. if (strtotime($old->end_time) > time()) {
  64. //旧的包年没过期
  65. $old->end_time = date('Y-m-d H:i:s', strtotime($old->end_time) + 86400 * 30);
  66. $old->fee = $old->fee + $data['fee'];
  67. $old->save();
  68. } else {
  69. //旧的包年过期了
  70. $old->end_time = date('Y-m-d H:i:s', strtotime('+1 month'));
  71. $old->fee = $old->fee + $data['fee'];
  72. $old->save();
  73. }
  74. return $old;
  75. } else {
  76. return YearOrder::create($insert_data);
  77. }
  78. }
  79. static function save_vip_order_daynum($data)
  80. {
  81. $insert_data = array();
  82. $insert_data['uid'] = $data['uid'];
  83. $insert_data['begin_time'] = date('Y-m-d H:i:s');
  84. $insert_data['end_time'] = date('Y-m-d H:i:s', time()+$data['day_num']*86400);
  85. $insert_data['distribution_channel_id'] = $data['distribution_channel_id'];
  86. $insert_data['fee'] = $data['fee'];
  87. $insert_data['send_order_id'] = $data['send_order_id'];
  88. $old = YearOrder::where('uid', $data['uid'])->select('id', 'uid', 'u', 'begin_time', 'end_time', 'fee')->first();
  89. if ($old) {
  90. //如果包过年
  91. if (strtotime($old->end_time) > time()) {
  92. //旧的包年没过期
  93. $old->end_time = date('Y-m-d H:i:s', strtotime($old->end_time) + 86400 * $data['day_num']);
  94. $old->fee = $old->fee + $data['fee'];
  95. $old->save();
  96. } else {
  97. //旧的包年过期了
  98. $old->end_time = $insert_data['end_time'];
  99. $old->fee = $old->fee + $data['fee'];
  100. $old->save();
  101. }
  102. return $old;
  103. } else {
  104. return YearOrder::create($insert_data);
  105. }
  106. }
  107. static function foreverFree($data)
  108. {
  109. $insert_data = array();
  110. $insert_data['uid'] = $data['uid'];
  111. $insert_data['begin_time'] = date('Y-m-d H:i:s');
  112. $insert_data['end_time'] = date('Y-m-d H:i:s', time() + 86400 * 365 * 80);
  113. $insert_data['distribution_channel_id'] = $data['distribution_channel_id'];
  114. $insert_data['fee'] = $data['fee'];
  115. $insert_data['send_order_id'] = $data['send_order_id'];
  116. $old = YearOrder::where('uid', $data['uid'])->select('id', 'uid', 'u', 'begin_time', 'end_time', 'fee')->first();
  117. if ($old) {
  118. $old->end_time = date('Y-m-d H:i:s', time() + 86400 * 365 * 80);
  119. $old->fee = $old->fee + $data['fee'];
  120. $old->save();
  121. return $old;
  122. } else {
  123. return YearOrder::save_year_order($insert_data);
  124. }
  125. }
  126. /**
  127. * 幸运用户终身免费
  128. * @param $uid
  129. * @param $distribution_channel_id
  130. * @param $send_order_id
  131. * @return bool
  132. */
  133. static function luckyYearOrder($uid,$distribution_channel_id,$send_order_id){
  134. if(empty($uid)){
  135. return false;
  136. }
  137. try{
  138. Redis::sadd('luckyYearOrderUser',$uid);
  139. }catch (\Exception $e){}
  140. self::foreverFree([
  141. 'uid'=>$uid,
  142. 'distribution_channel_id'=>$distribution_channel_id,
  143. 'send_order_id'=>$send_order_id
  144. ]);
  145. return true;
  146. }
  147. static function cancel_year_order($uid){
  148. $old = YearOrder::where('uid', $uid)->select('id', 'uid', 'u', 'begin_time', 'end_time', 'fee')->first();
  149. if ($old) {
  150. $old->end_time = date('Y-m-d H:i:s');
  151. $old->save();
  152. }
  153. }
  154. }