| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283 |
- <?php
- /**
- *
- * @author: lyh
- * @date: 2019/4/16
- */
- namespace App\Service;
- use App\Modes\AccountLog;
- use App\Modes\Proxy;
- use App\Modes\ProxyInvite;
- use App\Modes\User;
- use App\Modes\UserFreeze;
- use App\Modes\ProxyArea;
- class AdverService
- {
- /**
- * 广告分佣
- * @author lyh
- * @date 2019/4/16
- * @param int $uid
- * @param $money
- * @description
- */
- public function commission($uid, $money)
- {
- if ($money <= 0) {
- return;
- }
- $user = User::find($uid);
- $this->inviteByDirect($uid, $money);
- // 间一、间二分佣不包含A级
- if ($user->level != 1) {
- $this->inviteOneByIndirect($uid, $money);
- $this->inviteTwoByIndirect($uid, $money);
- }
- $this->inviteTwoByGlobalg($uid, $money);// 全局分佣
-
- }
- /**
- * 广告分佣-直一
- * @author lyh
- * @date 2019/4/16
- * @param int $user
- * @param $money
- * @description
- */
- public function inviteByDirect($user, $money)
- {
- $user = User::find($user);
- $proxy = Proxy::getConfig($user->id);
- $pct = $proxy->adver_invite;
- $UserByDirect = User::find($user->invitor);
- if (!$UserByDirect) {
- return false;
- }
- $commission = moneyFormat($money * ($pct / 100), 2);
- AccountLog::insert([
- 'uid' => $UserByDirect->id,
- 'source_uid' => $user->id,
- 'type' => 10,
- 'status' => 1,
- 'money_type' => 2,
- 'current_money' => $UserByDirect->balance,
- 'remark' => sprintf($proxy->id.'您的直推用户【id:%s】购买广告位成功,获得佣金¥%s', $user->id, $commission),
- 'money' => $commission
- ]);
- // 添加冻结记录
- UserFreeze::insert([
- 'uid' => $UserByDirect->id,
- 'money' => $commission,
- ]);
- /*$UserByDirect->balance += $commission;
- $UserByDirect->save();*/
- }
- /**
- * 广告分佣-间一
- * @author lyh
- * @date 2019/4/16
- * @param int $user
- * @param $money
- * @description
- */
- public function inviteOneByIndirect($user, $money)
- {
- $user = User::find($user);
- // 获取间一用户、
- $UserByDirect = \DB::table('user')->where('id', '=', $user->invitor)->first();
- if (!$UserByDirect) {
- return false;
- }
- $UserByIndirectOne = \DB::table('user')->where('id', '=', $UserByDirect->invitor)->first();
- if (!$UserByIndirectOne) {
- return false;
- }
- // 判断间一用户的邀请数量
- // $inviteNumByIndirectOne = User::whereInvitor($UserByIndirectOne->id)->count('id');
- $inviteNumByIndirectOne = count(User::getInviteeOne($UserByIndirectOne->id));
- $proxy = Proxy::getConfig($user->id);
- // 获取广告的间推一的佣金数据
- $proxyInvite = ProxyInvite::whereProxyId($proxy->id)->whereType(1)->whereProxyType(2)->orderBy('max','desc')->get();
- if (!$proxyInvite) {
- abort(500, '广告间一代理数据为空');
- }
- $pct = 0;
- foreach ($proxyInvite as $item) {
- if ($inviteNumByIndirectOne >= $item->max) {
- $pct = $item->pct;
- break;
- }
- }
- // 获取间一用户的佣金比例
- $commission = moneyFormat($money * ($pct / 100), 2);
- // 添加账号余额、并添加流水记录
- AccountLog::insert([
- 'uid' => $UserByIndirectOne->id,
- 'source_uid' => $user->id,
- 'type' => 11,
- 'status' => 1,
- 'money_type' => 2,
- 'current_money' => $UserByIndirectOne->balance,
- 'remark' => sprintf('您的第一级间推用户【id:%s】购买广告位成功,获得佣金¥%s', $user->id, $commission),
- 'money' => $commission
- ]);
- // 添加冻结记录
- UserFreeze::insert([
- 'uid' => $UserByIndirectOne->id,
- 'money' => $commission,
- ]);
- // \DB::table('user')->where('id', $UserByIndirectOne->id)->increment('balance', $commission);
- }
- /**
- * 广告分佣-间二
- * @author lyh
- * @date 2019/4/16
- * @param int $user
- * @param $money
- * @description
- */
- public function inviteTwoByIndirect($user, $money)
- {
- $user = \DB::table('user')->where('id', '=', $user)->first();
- // 获取间二用户
- $UserByDirect = \DB::table('user')->where('id', '=', $user->invitor)->first();
- if (!$UserByDirect) {
- return false;
- }
- $UserByIndirectOne = \DB::table('user')->where('id', '=', $UserByDirect->invitor)->first();
- if (!$UserByIndirectOne) {
- return false;
- }
- $UserByIndirectTwo = \DB::table('user')->where('id', '=', $UserByIndirectOne->invitor)->first();
- if (!$UserByIndirectTwo) {
- return false;
- }
- // 判断间二用户的邀请数量
- // $inviteNumByIndirectTwo = User::whereInvitor($UserByIndirectTwo->id)->count('id');
- $inviteNumByIndirectTwo = count(User::getInviteeTwo($UserByIndirectTwo->id));
- $proxy = Proxy::getConfig($user->id);
- $proxyInvite = ProxyInvite::whereProxyId($proxy->id)->whereType(2)->whereProxyType(2)->orderBy('max','desc')->get();
- if (!$proxyInvite) {
- abort(500, '广告间二代理数据为空');
- }
- // 获取间二用户的佣金
- $pct = 0;
- foreach ($proxyInvite as $item) {
- if ($inviteNumByIndirectTwo >= $item->max) {
- $pct = $item->pct;
- break;
- }
- }
- $commission = moneyFormat($money * ($pct / 100), 2);
- // 添加账号余额、并添加流水记录
- AccountLog::insert([
- 'uid' => $UserByIndirectTwo->id,
- 'source_uid' => $user->id,
- 'type' => 12,
- 'status' => 1,
- 'money_type' => 2,
- 'current_money' => $UserByIndirectTwo->balance,
- 'remark' => sprintf('您的第二级间推用户【id:%s】购买广告位成功,获得佣金¥%s', $user->id, $commission),
- 'money' => $commission
- ]);
- // 添加冻结记录
- UserFreeze::insert([
- 'uid' => $UserByIndirectTwo->id,
- 'money' => $commission,
- ]);
- // \DB::table('user')->where('id', '=', $UserByIndirectTwo->id)->increment('balance', $commission);
- }
- /**
- * 全局分佣
- * @author lyh
- * @date 2019/4/16
- * @param int $user
- * @param $money
- * @description
- */
- public function inviteTwoByGlobalg($user, $money)
- {
- $user = User::find($user);
- $proxy = Proxy::getConfig($user->id,null,null,null,7);//市级的配置
- $pct = $proxy->adver_invite_global;
- $commission = moneyFormat($money * ($pct / 100), 2);
- // 获取所有市级区域代理
- $UserByArea = ProxyArea::whereProvince($user->province)->whereCity($user->city)->whereDistrict(0)->whereStatus(3)->get();
- // 添加账号余额、并添加流水记录
- foreach ($UserByArea as $UA) {
- AccountLog::insert([
- 'uid' => $UA->uid,
- 'source_uid' => $user->id,
- 'type' => 13,
- 'status' => 1,
- 'money_type' => 2,
- 'current_money' => User::whereId($UA->uid)->value('balance'),
- 'remark' => sprintf('您作为城市运营商【市级】,用户【id:%s】购买广告位成功,获得佣金¥%s', $user->id, $commission),
- 'money' => $commission
- ]);
- // 添加冻结记录
- UserFreeze::insert([
- 'uid' => $UA->uid,
- 'money' => $commission,
- ]);
- // User::whereId($UA->id)->increment('balance', $commission);
- }
-
- $city_uids = $UserByArea->pluck('uid')->toArray();
- $proxy = Proxy::getConfig($user->id,null,null,null,6);//县区的配置
- $pct = $proxy->adver_invite_global;
- $commission = moneyFormat($money * ($pct / 100), 2);
- //所有区县级代理
- $UserByDistrict = ProxyArea::whereProvince($user->province)->whereCity($user->city)->whereDistrict($user->district)->whereStatus(3)->get();
- // 添加账号余额、并添加流水记录
- foreach ($UserByDistrict as $UA) {
- //已经获得过市级的跳过
- if (!empty($city_uids) && in_array($UA->uid, $city_uids)) {
- continue;
- }
- AccountLog::insert([
- 'uid' => $UA->uid,
- 'source_uid' => $user->id,
- 'type' => 13,
- 'status' => 1,
- 'money_type' => 2,
- 'current_money' => User::whereId($UA->uid)->value('balance'),
- 'remark' => sprintf('您作为城市运营商【县区级】,用户【id:%s】购买广告位成功,获得佣金¥%s',$user->id, $commission),
- 'money' => $commission
- ]);
- // 添加冻结记录
- UserFreeze::insert([
- 'uid' => $UA->uid,
- 'money' => $commission,
- ]);
- // User::whereId($UA->id)->increment('balance', $commission);
- }
- }
- }
|