AuctionController.php 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. <?php
  2. namespace app\api\controller\auction;
  3. use app\models\auction\Auction;
  4. use app\models\auction\AuctionBooking;
  5. use app\models\user\User;
  6. use app\models\user\UserBill;
  7. use app\Request;
  8. use Monolog\Handler\Curl\Util;
  9. use think\facade\Cache;
  10. use crmeb\services\{
  11. CacheService,
  12. ExpressService,
  13. SystemConfigService,
  14. };
  15. use crmeb\services\UtilService;
  16. use crmeb\repositories\OrderRepository;
  17. class AuctionController
  18. {
  19. /**
  20. * 场馆列表
  21. * @param Request $request
  22. * @return mixed
  23. */
  24. public function list(Request $request)
  25. {
  26. $data = UtilService::getMore([
  27. [['page', 'd'], 0],
  28. [['limit', 'd'], 0],
  29. ['advance']
  30. ], $request);
  31. $auctionModel = new \app\models\auction\Auction();
  32. return app('json')->successful($auctionModel->list($data, $request->uid()));
  33. }
  34. /**
  35. * 预约场馆
  36. * @param Request $request
  37. * @return void
  38. */
  39. public function subscribe(Request $request)
  40. {
  41. $data = UtilService::postMore([
  42. ['id']
  43. ]);
  44. if (!$data['id']) return app('json')->fail('数据传入错误');
  45. $auctionModel = new Auction();
  46. $auction = $auctionModel->find($data['id']);
  47. if (!$auction)return app('json')->fail('没有此数据');
  48. if (time() < strtotime($auction['add_time'])){
  49. return app('json')->fail('预约未开始');
  50. }
  51. if (time() > strtotime($auction['end_time'])){
  52. return app('json')->fail('预约时间已过');
  53. }
  54. if (AuctionBooking::where([['uid', '=', $request->uid()], ['auction_id' , '=', $auction['id']], ['frequency', '=', $auction['frequency']]])->find()){
  55. return app('json')->fail('当前场馆已预约');
  56. }
  57. $userModel = new User();
  58. $user = $userModel->find($request->uid());
  59. if ($user['anticipate'] < $auction['anticipate']) return app('json')->fail('预约卷不够');
  60. $user['anticipate'] = $user['anticipate'] - $auction['anticipate'];// 扣除预约卷
  61. User::rollbackTrans();
  62. $res = $user->save();
  63. if ($res){
  64. AuctionBooking::booking($user['uid'], $auction);
  65. UserBill::expend('预约场馆', $user['uid'], 'anticipate','reduce_anticipate', $auction['anticipate'], 0, $user['anticipate'], '预约扣除预约卷'); // 写入记录
  66. User::commitTrans();
  67. return app('json')->successful('预约成功');
  68. }else{
  69. User::rollbackTrans();
  70. return app('json')->fail('预约失败');
  71. }
  72. }
  73. /**
  74. * 进入场馆
  75. * @param Request $request
  76. * @return void
  77. */
  78. public function advance(Request $request)
  79. {
  80. $data = UtilService::getMore([
  81. ['id']
  82. ]);
  83. if (!$data['id']) return app('json')->fail('数据传入错误');
  84. $auction = Auction::find($data['id']);
  85. $booking = AuctionBooking::where([['auction_id', '=',$auction['id']], ['frequency', '=', $auction['frequency']]])->find();
  86. $user = $request->user();
  87. $time = strtotime(date('Y-m-d', time()));// 今天
  88. $today = strtotime(date('Y-m-d', strtotime('+1day')));// 明天
  89. if ($user['is_new'] == 1 or ($user['green_time'] >= $time and $user['green_time'] <= $today)){
  90. // 新人或者绿色通道提前三分钟入场
  91. if (strtotime($auction['radd_time']) -3000 > time()){
  92. return app('json')->fail('未到进入时间');
  93. }
  94. if (strtotime($auction['rend_time']) < time()){
  95. return app('json')->fail('进场时间已过');
  96. }
  97. }else{
  98. if (strtotime($auction['radd_time']) > time()){
  99. return app('json')->fail('未到进入时间');
  100. }
  101. if (strtotime($auction['rend_time']) < time()){
  102. return app('json')->fail('进场时间已过');
  103. }
  104. }
  105. if ($booking){
  106. return app('json')->successful('可进入');
  107. }else{
  108. return app('json')->fail('未预约');
  109. }
  110. }
  111. }