Airdrop.php 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. <?php
  2. namespace app\api\controller;
  3. use app\common\model\UserAirdrop;
  4. use think\Exception;
  5. use app\api\logic\WelfareLoginc;
  6. use app\common\model\UserModel;
  7. use app\common\controller\Api;
  8. use app\common\model\UserWelfare;
  9. use think\Db;
  10. use app\common\model\LedgerWalletModel;
  11. use app\common\model\ProductOrder;
  12. //空投
  13. class Airdrop extends Api
  14. {
  15. protected array $noNeedLogin = [''];
  16. protected string $lan = '';
  17. public function _initialize()
  18. {
  19. parent::_initialize();
  20. $this->lan = $this->request->getLan();
  21. }
  22. //获取领取福利信息
  23. public function getNewbieWeal(UserWelfare $userWelfare, ProductOrder $productOrder)
  24. {
  25. $info = $productOrder::getUserWelfare($this->auth->id, $productOrder::Newbie);
  26. $endTime = isset($info->create_time)? bcadd($info->create_time, 86400): 0;
  27. $rows = $userWelfare::getIsWelfare();
  28. $this->success('', ['is_super'=>$this->auth->is_super, 'end_time'=>$endTime, 'chabao'=>$rows->frozen]);
  29. }
  30. //新人福利
  31. public function setNewbieWeal(UserWelfare $userWelfare, ProductOrder $productOrder, UserModel $userModel)
  32. {
  33. $row = $userWelfare::getIsWelfare();
  34. if(empty($row->is_newbie)) $this->error(__('暂未开启'));
  35. $info = $productOrder::getUserWelfare($this->auth->id, $productOrder::Newbie);
  36. if(!empty($info)) $this->error(__('您已领取'));
  37. Db::startTrans();
  38. try {
  39. //添加Rwa茶记录
  40. $result = WelfareLoginc::setUserWelfareLos($this->auth->id, $row->new_product_id, $row->new_num, time(), $this->lan, $productOrder::Newbie);
  41. //添加茶数量
  42. if($result['price'] > config('min_rwa_price')) $userModel::updateForRwaNum($this->auth->id, $this->auth->parent_id, $row->new_num, '+');
  43. Db::commit();
  44. } catch (\Exception $e) {
  45. Db::rollback();
  46. $this->error($e->getMessage());
  47. }
  48. $this->success('', $result);
  49. }
  50. //超级福利
  51. public function setSuperWeal(UserWelfare $userWelfare, UserModel $userModel, ProductOrder $productOrder)
  52. {
  53. $row = $userWelfare::getIsWelfare();
  54. if(empty($row->is_super)) $this->error(__('暂未开启'));
  55. if(!empty($this->auth->is_super)) $this->error(__('您已领取'));
  56. //判断距离领取新人福利是否超过一天
  57. $info = $productOrder::getUserWelfare($this->auth->id, $productOrder::Newbie);
  58. if((time()-$info->create_time) >= 86400) $this->error(__('您已过期'));
  59. Db::startTrans();
  60. try {
  61. //把9.9茶宝转入冻结账号
  62. if($row->frozen > 0) (new LedgerWalletModel)->sendUserSubFrozen($this->auth->id, $row->frozen, LedgerWalletModel::Super, '-');
  63. //添加Rwa茶记录
  64. $result = WelfareLoginc::setUserWelfareLos($this->auth->id, $row->super_product_id, $row->super_num, time(), $this->lan, $productOrder::Super);
  65. //添加超级福利标识/上级
  66. $userModel::updateUserSuper($this->auth->id, $this->auth->parent_id);
  67. //添加茶数量
  68. if($result['price'] > config('min_rwa_price')) $userModel::updateForRwaNum($this->auth->id, $this->auth->parent_id, $row->super_num, '+');
  69. //插入待空投记录
  70. $rs = UserAirdrop::insert([
  71. 'user_id' => $this->auth->id,
  72. 'type_id' => UserAirdrop::typeSuperWeal,
  73. 'product_id' => $row->super_product_id,
  74. 'num' => $row->super_num,
  75. 'address' => $this->auth->address,
  76. 'remark' => '超级福利空投',
  77. 'create_time' =>time(),
  78. 'status' =>UserAirdrop::NORMAL,//为0 待发放层级奖励
  79. ]);
  80. Db::commit();
  81. } catch (\Exception $e) {
  82. Db::rollback();
  83. $this->error($e->getMessage());
  84. }
  85. $this->success('', $result);
  86. }
  87. }