Airdrop.php 4.1 KB

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