Airdrop.php 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. <?php
  2. namespace app\api\controller;
  3. use app\common\model\UserAirdrop;
  4. use think\Db;
  5. use think\Exception;
  6. use app\api\logic\WelfareLoginc;
  7. use app\common\model\UserModel;
  8. use app\common\controller\Api;
  9. use app\common\model\UserWelfare;
  10. use app\common\model\LedgerFrozenChangeModel;
  11. use app\common\model\LedgerWalletModel;
  12. use app\common\model\ProductOrder;
  13. use app\common\model\LedgerTokenChangeModel;
  14. //空投
  15. class Airdrop extends Api
  16. {
  17. protected array $noNeedLogin = [''];
  18. protected string $lan = '';
  19. public function _initialize()
  20. {
  21. parent::_initialize();
  22. $this->lan = $this->request->getLan();
  23. }
  24. //获取领取福利信息
  25. public function getNewbieWeal(UserWelfare $userWelfare, ProductOrder $productOrder)
  26. {
  27. $info = $productOrder::getUserWelfare($this->auth->id, $productOrder::Newbie);
  28. $endTime = isset($info->create_time)? bcadd($info->create_time, config('super_weal_end_time')): 0;
  29. $rows = $userWelfare::getIsWelfare();
  30. $this->success('', ['is_super'=>$this->auth->is_super, 'end_time'=>$endTime, 'chabao'=>$rows->frozen]);
  31. }
  32. //新人福利
  33. public function setNewbieWeal(UserWelfare $userWelfare, ProductOrder $productOrder, UserModel $userModel)
  34. {
  35. $row = $userWelfare::getIsWelfare();
  36. if(empty($row->is_newbie)) $this->error(__('暂未开启'));
  37. $info = $productOrder::getUserWelfare($this->auth->id, $productOrder::Newbie);
  38. if(!empty($info)) $this->error(__('您已领取'));
  39. Db::startTrans();
  40. try {
  41. //添加Rwa茶记录
  42. $result = WelfareLoginc::setUserWelfareLos($this->auth->id, $row->new_product_id, $row->new_num, time(), $this->lan, $productOrder::Newbie);
  43. //修改标识
  44. $userModel::where('id', $this->auth->id)->update(['is_super'=> $userModel::NewPeo]);
  45. Db::commit();
  46. } catch (\Exception $e) {
  47. Db::rollback();
  48. $this->error($e->getMessage());
  49. }
  50. $this->success('', $result);
  51. }
  52. //超级福利
  53. public function setSuperWeal(UserWelfare $userWelfare, UserModel $userModel, ProductOrder $productOrder, LedgerWalletModel $ledgerWalletModel)
  54. {
  55. $row = $userWelfare::getIsWelfare();
  56. if(empty($row->is_super)) $this->error(__('暂未开启'));
  57. if($this->auth->is_super != $userModel::NewPeo) $this->error(__('您已领取'));
  58. //判断距离领取新人福利是否超过一天
  59. $info = $productOrder::getUserWelfare($this->auth->id, $productOrder::Newbie);
  60. if((time()-$info->create_time) >= config('super_weal_end_time')) $this->error(__('您已过期'));
  61. Db::startTrans();
  62. try {
  63. //把9.9茶宝转入冻结账号
  64. if($row->frozen > 0) $ledgerWalletModel->setChangeFrozen($this->auth->id, $row->frozen, LedgerFrozenChangeModel::Super, LedgerTokenChangeModel::Super, '+');
  65. //添加Rwa茶记录
  66. WelfareLoginc::setUserWelfareLos($this->auth->id, $row->super_product_id, $row->super_num, time(), $this->lan, $productOrder::Super);
  67. //添加超级福利标识/上级
  68. $userModel::updateUserLevel($this->auth->id, $this->auth->parent_id, $this->auth->address_level);
  69. //插入待空投记录
  70. $result = 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. }