AuctionController.php 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  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. use think\facade\Db;
  18. class AuctionController
  19. {
  20. /**
  21. * 场馆列表
  22. * @param Request $request
  23. * @return mixed
  24. */
  25. public function list(Request $request)
  26. {
  27. $data = UtilService::getMore([
  28. [['page', 'd'], 0],
  29. [['limit', 'd'], 0],
  30. ['advance']
  31. ], $request);
  32. $auctionModel = new \app\models\auction\Auction();
  33. return app('json')->successful($auctionModel->list($data, $request->uid()));
  34. }
  35. /**
  36. * 预约场馆
  37. * @param Request $request
  38. * @return void
  39. */
  40. public function subscribe(Request $request)
  41. {
  42. $data = UtilService::postMore([
  43. ['id']
  44. ]);
  45. if (!$data['id']) return app('json')->fail('数据传入错误');
  46. $auctionModel = new Auction();
  47. $auction = $auctionModel->find($data['id']);
  48. if (!$auction)return app('json')->fail('没有此数据');
  49. if (time() < strtotime($auction['add_time'])){
  50. return app('json')->fail('预约未开始');
  51. }
  52. if (time() > strtotime($auction['end_time'])){
  53. return app('json')->fail('预约时间已过');
  54. }
  55. if (AuctionBooking::where([['uid', '=', $request->uid()], ['auction_id' , '=', $auction['id']], ['frequency', '=', $auction['frequency']]])->find()){
  56. return app('json')->fail('当前场馆已预约');
  57. }
  58. $userModel = new User();
  59. $user = $userModel->find($request->uid());
  60. if ($user['anticipate'] < $auction['anticipate']) return app('json')->fail('预约卷不够');
  61. $user['anticipate'] = $user['anticipate'] - $auction['anticipate'];// 扣除预约卷
  62. User::rollbackTrans();
  63. $res = $user->save();
  64. if ($res){
  65. AuctionBooking::booking($user['uid'], $auction);
  66. UserBill::expend('预约场馆', $user['uid'], 'anticipate','reduce_anticipate', $auction['anticipate'], 0, $user['anticipate'], '预约扣除预约卷'); // 写入记录
  67. User::commitTrans();
  68. return app('json')->successful('预约成功');
  69. }else{
  70. User::rollbackTrans();
  71. return app('json')->fail('预约失败');
  72. }
  73. }
  74. /**
  75. * 进入场馆
  76. * @param Request $request
  77. * @return void
  78. */
  79. public function advance(Request $request)
  80. {
  81. $data = UtilService::getMore([
  82. ['id']
  83. ]);
  84. if (!$data['id']) return app('json')->fail('数据传入错误');
  85. $auction = Auction::find($data['id']);
  86. $booking = AuctionBooking::where([['auction_id', '=',$auction['id']], ['frequency', '=', $auction['frequency']]])->find();
  87. $user = $request->user();
  88. $time = strtotime(date('Y-m-d', time()));// 今天
  89. $today = strtotime(date('Y-m-d', strtotime('+1day')));// 明天
  90. if ($user['is_new'] == 1 or ($user['green_time'] >= $time and $user['green_time'] <= $today)){
  91. // 新人或者绿色通道提前三分钟入场
  92. if (strtotime($auction['radd_time']) -3000 > time()){
  93. return app('json')->fail('未到进入时间');
  94. }
  95. if (strtotime($auction['rend_time']) < time()){
  96. return app('json')->fail('进场时间已过');
  97. }
  98. }else{
  99. if (strtotime($auction['radd_time']) > time()){
  100. return app('json')->fail('未到进入时间');
  101. }
  102. if (strtotime($auction['rend_time']) < time()){
  103. return app('json')->fail('进场时间已过');
  104. }
  105. }
  106. if ($booking){
  107. return app('json')->successful('可进入');
  108. }else{
  109. return app('json')->fail('未预约');
  110. }
  111. }
  112. /**
  113. * 用户下级
  114. * @param Request $request
  115. * @return mixed
  116. */
  117. public function lower(Request $request){
  118. $data = UtilService::getMore([
  119. [['page', 'd'], 0],
  120. [['limit', 'd'], 0],
  121. ], $request);
  122. $user = User::where('spread_uid', $request->uid())->page($data['page'], $data['limit'])->order('uid DESC')->select()->toArray();
  123. return app('json')->successful($user);
  124. }
  125. public function transfer_accounts(Request $request){
  126. $data = UtilService::getMore([
  127. ['uid'],
  128. ['anticipate']
  129. ], $request);
  130. if (!$data['uid'] or !$data['anticipate']) return app('json')->fail('数据传入错误');
  131. $user = User::find($request->uid());
  132. if ($user['anticipate'] < $data['anticipate']) return app('json')->fail('预约卷不够');
  133. $me = User::find($data['uid']);
  134. $user['anticipate'] = $user['anticipate'] - $data['anticipate'];// 扣除预约卷
  135. $me['anticipate'] = $me['anticipate'] + $data['anticipate'];// 增加预约卷
  136. try {
  137. Db::startTrans();
  138. UserBill::expend('预约卷减少',$user['uid'], 'anticipate', 'reduce_anticipate', $data['anticipate'], 0, $user['anticipate'], '转账给用户'.$me['nickname'].$data['anticipate'].'预约卷');
  139. UserBill::income('预约卷增加',$me['uid'], 'anticipate', 'add_anticipate', $data['anticipate'], 0, $me['anticipate'], $me['nickname'].'转账'.$data['anticipate'].'预约卷');
  140. $user->save();
  141. $me->save();
  142. Db::commit();
  143. return app('json')->successful('成功');
  144. } catch (\Exception $e) {
  145. Db::rollback();
  146. return app('json')->fail('失败');
  147. }
  148. }
  149. }