Invitation.php 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. <?php
  2. namespace app\job\event;
  3. use app\api\model\plus\invitationgift\InvitationReward as InvitationRewardModel;
  4. use app\api\model\plus\invitationgift\InvitationReceive as InvitationReceiveModel;
  5. use app\api\model\plus\invitationgift\Partake as PartakeModel;
  6. use app\job\model\user\User as UserModel;
  7. use app\job\model\order\Order as OrderModel;
  8. use app\api\model\plus\coupon\UserCoupon;
  9. /**
  10. * 邀请好友管理
  11. */
  12. class Invitation
  13. {
  14. private $user_id;
  15. private $invitation_gift_id;
  16. /**
  17. * 执行函数
  18. */
  19. public function handle($data)
  20. {
  21. $this->user_id = $data['user_id'];
  22. $this->invitation_gift_id = $data['invitation_gift_id'];
  23. if ($data['type'] == 0) {
  24. $this->inviteStatus();
  25. } else if ($data['type'] == 1) {
  26. $this->inviteOrderStatus();
  27. }
  28. return true;
  29. }
  30. //判断邀请好友数量
  31. public function inviteStatus()
  32. {
  33. $PartakeModel = new PartakeModel();
  34. //邀请总人数
  35. $count = $PartakeModel->where('invitation_gift_id', '=', $this->invitation_gift_id)
  36. ->where('user_id', '=', $this->user_id)
  37. ->count();
  38. $data['count'] = $count;
  39. $this->receiveGift($data);
  40. }
  41. //判断邀请好友且消费
  42. public function inviteOrderStatus()
  43. {
  44. $PartakeModel = new PartakeModel();
  45. //邀请总人数
  46. $partake_id = $PartakeModel->where('invitation_gift_id', '=', $this->invitation_gift_id)
  47. ->where('user_id', '=', $this->user_id)
  48. ->column('partake_id');
  49. $count = (new OrderModel())->where('user_id', 'in', $partake_id)
  50. ->where('pay_status', '=', 20)
  51. ->count();
  52. $data['count'] = $count;
  53. $this->receiveGift($data);
  54. }
  55. //判断是否满足条件赠送礼品
  56. private function receiveGift($data)
  57. {
  58. $count = $data['count'];
  59. //奖品
  60. $InvitationRewardModel = new InvitationRewardModel();
  61. $reward = $InvitationRewardModel->where('invitation_gift_id', '=', $this->invitation_gift_id)
  62. ->order('invitation_num desc')
  63. ->select();
  64. $gift = [];
  65. foreach ($reward as $key => $value) {
  66. if ($count >= $value['invitation_num']) {
  67. $gift['invitation_reward_id'] = $value['invitation_reward_id'];
  68. $gift['point'] = $value['is_point'] == 1 ? $value['point'] : 0;
  69. $gift['coupon_ids'] = $value['is_coupon'] == 1 ? $value['coupon_ids'] : '';
  70. $gift['coupon_name'] = $value['is_point'] == 1 ? $value['coupon_name'] : '';
  71. $gift['app_id'] = $value['app_id'];
  72. break;
  73. }
  74. }
  75. //满足条件送礼品
  76. if ($gift) {
  77. //判断有没有送
  78. $receive = (new InvitationReceiveModel())->where('user_id', '=', $this->user_id)
  79. ->where('invitation_gift_id', '=', $this->invitation_gift_id)
  80. ->where('invitation_reward_id', '=', $gift['invitation_reward_id'])
  81. ->find();
  82. if (!$receive) {
  83. $gift['user_id'] = $this->user_id;
  84. $gift['invitation_gift_id'] = $this->invitation_gift_id;
  85. //增加记录
  86. (new InvitationReceiveModel())->save($gift);
  87. // 用户模型
  88. $user = UserModel::detail($this->user_id);
  89. // 修改用户积分
  90. if ($gift['point']) {
  91. $user->setIncPoints($gift['point'], '邀请有礼奖励');
  92. }
  93. //添加优惠券
  94. if ($gift['coupon_ids']) {
  95. $UserCouponModel = new UserCoupon;
  96. $UserCouponModel->addUserCoupon($gift['coupon_ids'], $user);
  97. }
  98. }
  99. }
  100. return true;
  101. }
  102. }