GiftPackController.php 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. <?php
  2. namespace App\Http\Controllers;
  3. use Illuminate\Http\Request;
  4. use Illuminate\Support\Facades\DB;
  5. use Illuminate\Support\Facades\Redis;
  6. class GiftPackController extends Controller
  7. {
  8. public $rooms = [
  9. "14578426"=> "战斗吧", //粉丝牌:"战姬众",
  10. "23225527"=> "Nebula-Beat", //"NB人",
  11. "23303212"=> "唐九夏", //"夏韭菜",
  12. "23221095"=> "吉诺儿", //"波波派",
  13. "24087754"=> "罗兹", //罗兹Blazing
  14. ];
  15. //
  16. // 礼包列表接口
  17. public function list(Request $request) {
  18. //
  19. $objUser = unserialize($request->get("account"));
  20. // 获取所有的礼包
  21. $objPacks = \App\Models\GiftPack::with("attire")->orderBy("sort","asc")->get()->toArray();
  22. // 获取用户的兑换情况
  23. $objPackRecords = \App\Models\PackRecord::where("account_id", $objUser->id)->pluck("gift_pack_id")->toArray();
  24. //
  25. $data = [];
  26. foreach($objPacks as $v) {
  27. $data[] = [
  28. 'id' => $v['id'],
  29. 'name' => $v['name'],
  30. 'img' => \Storage::disk('cosv5')->url($v['img']),
  31. 'info' => '内含'.$v['coupon'].'张礼券+1个应援装扮',
  32. 'exchage_info' => "请前往<span style='color:#FF229F;'>".$this->rooms[$v["room_id"]]."直播间</span>,佩戴兑换礼包对应<span style='color:#FF229F;'>粉丝牌</span>,发送<span style='color:#FF229F;'>任意弹幕</span>,如账号身份满足对应兑换要求(粉丝牌1级以上),即可获得礼包。",
  33. 'is_exchange' => in_array($v['id'], $objPackRecords)? 1: 0,
  34. ];
  35. }
  36. //
  37. return [
  38. 'errno'=> 10000,
  39. "errmsg" => 'ok',
  40. 'data' => $data,
  41. ];
  42. }
  43. // 礼包兑换接口
  44. public function exchange(Request $request) {
  45. //
  46. $objUser = unserialize($request->get("account"));
  47. $id = $request->input("id", 0);
  48. if(!$id) {
  49. return [
  50. 'errno'=> 10001,
  51. "errmsg" => '参数错误',
  52. ];
  53. }
  54. // 获取礼包
  55. $objPack = \App\Models\GiftPack::where("id", $id)->with("attire")->first();
  56. if(!$objPack) {
  57. return [
  58. 'errno'=> 10002,
  59. "errmsg" => '参数错误',
  60. ];
  61. }
  62. // 获取用户的兑换情况
  63. $objPackRecords = \App\Models\PackRecord::where("account_id", $objUser->id)
  64. ->where("gift_pack_id",$id)
  65. ->first();
  66. //
  67. if($objPackRecords) {
  68. return [
  69. 'errno'=> 10003,
  70. "errmsg" => '该礼包已经兑换过了',
  71. ];
  72. }
  73. // todo 用户是否直播间发送弹幕,是否符合要求
  74. if(Redis::get("dm_level:".date("Ymd").":{$objUser->id}:{$objPack->room_id}") != 1) {
  75. return [
  76. 'errno'=> 10004,
  77. "errmsg" => '还没有完成礼包任务哦',
  78. ];
  79. }
  80. //
  81. DB::transaction(function () use($objUser, $id, $objPack) {
  82. // 添加兑换记录
  83. $objPackRecord = new \App\Models\PackRecord();
  84. $objPackRecord->account_id = $objUser->id;
  85. $objPackRecord->gift_pack_id = $id;
  86. $objPackRecord->save();
  87. // 增加礼劵
  88. DB::table('accounts')
  89. ->where("id", $objUser->id)
  90. ->increment("coupon", $objPack->coupon);
  91. // 礼劵明细
  92. $objCouponRecord = new \App\Models\CouponRecord();
  93. $objCouponRecord->account_id = $objUser->id;
  94. $objCouponRecord->add_cnt = $objPack->coupon;
  95. $objCouponRecord->type = 5;
  96. $objCouponRecord->pack_record_id = $objPackRecord->id;
  97. $objCouponRecord->day = date("Y-m-d");
  98. $objCouponRecord->save();
  99. // 试衣间增加
  100. if($objPack->attire_id) {
  101. $fittimgRooms[] = [
  102. "account_id" => $objUser->id,
  103. "attire_id" => $objPack->attire_id,
  104. 'created_at' =>date("Y-m-d H:i:s"),
  105. 'updated_at' =>date("Y-m-d H:i:s"),
  106. ];
  107. \App\Models\FittingRoom::insertOrIgnore($fittimgRooms);
  108. }
  109. });
  110. //
  111. return [
  112. 'errno'=> 10000,
  113. "errmsg" => '快去试衣间装扮一下吧~',
  114. ];
  115. }
  116. }