| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275 |
- <?php
- namespace crmeb\services;
- use app\admin\model\system\SystemStore;
- use app\models\store\Card;
- use app\models\store\StoreOrder;
- use app\models\store\StoreProduct;
- use app\models\system\SystemCity;
- use app\models\system\SystemUserLevel;
- use app\models\user\User;
- use app\models\user\UserBill;
- use app\models\user\UserLevel;
- class SysService
- {
- public static function phone_bangding($uid)
- {
- $user = User::find($uid);
- if($user['is_phone_send']==0 and $user['phone'])
- {
- $levelinfo = SystemUserLevel::find(1);
- UserLevel::setUserLevel($uid,1);
- User::bcInc($uid,"contribute",$levelinfo['contribute']);
- User::edit(['is_phone_send'=>1],$uid);
- $contribute = User::where("uid",$uid)->value('contribute');
- UserBill::income("绑定手机号获的贡献值",$uid,"contribute","add",$levelinfo['contribute'],0,$contribute,"绑定手机号获的贡献值:".$levelinfo['contribute']);
- }
- return true;
- }
- public static function level_order($order_info)
- {
- $user = User::find($order_info['uid']);
- if($order_info['is_level']==1) {
- $levelinfo = SystemUserLevel::find($order_info['level']);
- if ($user['level'] = $order_info['level']) {
- UserLevel::setUserLevel($user['uid'], $order_info['level']);
- }
- User::bcInc($order_info['uid'], "contribute", $levelinfo['contribute']);
- $contribute = User::where("uid", $order_info['uid'])->value('contribute');
- UserBill::income("升级获的贡献值", $order_info['uid'], "contribute", "add", $levelinfo['contribute'], 0, $contribute, "升级获的贡献值:" . $levelinfo['contribute']);
- self::recommend($order_info, $user);
- }
- }
- private static function recommend($order,$user)
- {
- if($user['spread_uid']) {
- $sp_user = User::find($user['spread_uid']);
- if($sp_user['level']==0) return true;
- $level = [];
- foreach (sys_data("level") as $v)
- {
- $level[$v['level']] = $v;
- }
- if(!isset($level[$sp_user['level']])) return true;
- $level_info = $level[$sp_user['level']];
- $num = $level_info["level_".$order['level']];
- $data['uid'] = $sp_user['uid'];
- $data['add_time'] = time();
- $all_data = [];
- for ($i=0;$i<$num;$i++)
- {
- $data['verify_code'] = uniqid().$i;
- $all_data[] = $data;
- }
- Card::setAll($all_data);
- $count = Card::where('uid',$user['spread_uid'])->value("count(id)")?:0;
- UserBill::income("推荐用户",$user['spread_uid'],"card","add",$num,0,$count,"推荐用户获得:".$count."张卡券");
- }
- return true;
- }
- public static function area($order,$user)
- {
- //dump($user);
- // dump($order);
- //发放店长
- if($user['level']!=4) {
- $users = User::field('uid,level,spread_uid,brokerage_price')->select();
- $rs = UtilService::getparentid($users, $user['uid']);
- $store_uid = 0;
- foreach ($rs as $v) {
- if ($v['level'] == 4) {
- $store_uid = $v['uid'];
- break;
- }
- }
- if ($store_uid > 0) {
- $trem_count = SystemUserLevel::find(4)['trem_count'];
- $brokerage_price = bcmul($order['total_price'], bcdiv($trem_count, 100, 2), 2);
- UserBill::income("店长团队进货量", $store_uid, "month_performance", "add", $brokerage_price, $order['id'], 0, "订单金额:{$order['total_price']},店长团队进货量:" . $brokerage_price);
- }
- }
- else
- {
- UserBill::income("店长进货量", $user['uid'], "month_performance", "add", $order['total_price'], $order['id'], 0, "订单金额:{$order['total_price']},店长进货量:" . $order['total_price']);
- }
- //发放代理奖
- $one = SystemCity::where("city_id",$order['city_id'])->find();
- $two = SystemCity::where("city_id",$one['parent_id'])->find();
- $three = SystemCity::where("city_id",$two['parent_id'])->find();
- if($one && $one['agent_uid']>0)
- {
- $agent_income = SystemUserLevel::find(5)['agent_income'];
- $brokerage_price = bcmul($order['total_price'],bcdiv($agent_income,100,2),2);
- User::bcInc($one['agent_uid'],"brokerage_price",$brokerage_price,"uid");
- $userInfo = User::find($one['agent_uid']);
- UserBill::income("区代奖励",$one['agent_uid'],"now_money","brokerage",$brokerage_price, $order['id'],$userInfo['brokerage_price'],"用户下单金额{$order['total_price']},市代奖励:".$brokerage_price);
- }
- if($two && $two['agent_uid']>0)
- {
- $agent_income = SystemUserLevel::find(6)['agent_income'];
- $brokerage_price = bcmul($order['total_price'],bcdiv($agent_income,100,2),2);
- User::bcInc($two['agent_uid'],"brokerage_price",$brokerage_price,"uid");
- $userInfo = User::find($two['agent_uid']);
- UserBill::income("市代奖励",$two['agent_uid'],"now_money","brokerage",$brokerage_price, $order['id'],$userInfo['brokerage_price'],"用户下单金额{$order['total_price']},市代奖励:".$brokerage_price);
- }
- if($three && $three['agent_uid']>0)
- {
- $agent_income = SystemUserLevel::find(7)['agent_income'];
- $brokerage_price = bcmul($order['total_price'],bcdiv($agent_income,100,2),2);
- User::bcInc($three['agent_uid'],"brokerage_price",$brokerage_price,"uid");
- $userInfo = User::find($three['agent_uid']);
- UserBill::income("省代奖励",$three['agent_uid'],"now_money","brokerage",$brokerage_price, $order['id'],$userInfo['brokerage_price'],"用户下单金额{$order['total_price']},市代奖励:".$brokerage_price);
- }
- }
- public static function recommend1($orderInfo)
- {
- $user = User::find($orderInfo['uid']);
- $cartId = is_string($orderInfo['cart_id']) ? json_decode($orderInfo['cart_id'], true) : $orderInfo['cart_id'];
- $one = StoreProduct::getProductBrokerage($cartId);
- $two = StoreProduct::getProductBrokerage($cartId,false);
- @file_put_contents('recommend1.txt',$one.'--'.$two);
- $one_user = User::find($user['spread_uid']);
- if($one_user) {
- User::bcInc($one_user['uid'], "brokerage_price", $one, "uid");
- //$one_user = User::find($user['spread_uid']);
- $brokerage_price = bcadd($one_user['brokerage_price'],$one,2);
- UserBill::income("推荐奖励", $one_user['uid'], "now_money", "brokerage", $one, $orderInfo['id'], $brokerage_price, "用户下单金额{$orderInfo['total_price']},推荐奖励:" . $one);
- }
- return true;
- if($one_user && $two_user = User::find($one_user['spread_uid']))
- {
- if($two_user) {
- User::bcInc($two_user['uid'], "brokerage_price", $two, "uid");
- //$one_user = User::find($user['spread_uid']);
- $brokerage_price = bcadd($two_user['brokerage_price'], $two, 2);
- UserBill::income("间推奖励", $two_user['uid'], "now_money", "brokerage", $two, $orderInfo['id'], $brokerage_price, "用户下单金额{$orderInfo['total_price']},间推奖励:" . $two);
- }
- }
- $recommend = bcadd($one,$two,2);
- //处理团队
- $team = 0;
- $profit = bcsub($orderInfo['total_price'],$orderInfo['cost'],2);
- $users = User::field('uid,level,spread_uid,brokerage_price,area_level')->select();
- $rs = UtilService::getparentid($users, $user['uid']);
- $max_differential = SystemUserLevel::max('differential');
- $differential = 0;
- $levels1 = SystemUserLevel::where('is_del',0)->where('is_show',1)->field('id,differential,flat_level')->select()->toArray();
- $levels = [];
- foreach ($levels1 as $v)
- {
- $levels[$v['id']] = $v;
- }
- $flat_level = [];
- foreach ($rs as $v)
- {
- if(isset($levels[$v['level']]) && $levels[$v['level']]['differential']>$differential)
- {
- $num = bcsub($levels[$v['level']]['differential'],$differential,2);
- $brokerage_price = bcmul(bcdiv($num,100,2),$profit,2);
- $team = bcadd($team,$brokerage_price,2);
- User::bcInc($v['uid'], "brokerage_price", $brokerage_price, "uid");
- $sp = User::find($v['uid']);
- UserBill::income("团队奖励", $v['uid'], "now_money", "brokerage", $brokerage_price, $orderInfo['id'], $sp['brokerage_price'], "用户下单金额{$orderInfo['total_price']},团队奖励:" . $brokerage_price);
- $differential = $levels[$v['level']]['differential'];
- }
- elseif(isset($levels[$v['level']]) && !in_array($v['level'],$flat_level))
- {
- $flat_level[] = $v['level'];
- if($levels[$v['level']]['flat_level']>0)
- {
- $num = $levels[$v['level']]['flat_level'];
- $brokerage_price = bcmul(bcdiv($num,100,3),$profit,2);
- $team = bcadd($team,$brokerage_price,2);
- User::bcInc($v['uid'], "brokerage_price", $brokerage_price, "uid");
- $sp = User::find($v['uid']);
- UserBill::income("平级奖励", $v['uid'], "now_money", "brokerage", $brokerage_price, $orderInfo['id'], $sp['brokerage_price'], "用户下单金额{$orderInfo['total_price']},平级奖励:" . $brokerage_price);
- }
- }
- if($differential==$max_differential)
- {
- break;
- }
- }
- //处理全公司分红
- $v3_bonus = sys_config('v3_bonus',2);
- $bonus = bcmul($profit,bcdiv($v3_bonus,100,2),2);
- //处理总公司
- $next_profit = bcsub($profit,bcadd(bcadd($recommend,$team,2),$bonus,2),2);
- $next_profit = bcsub($next_profit,bcmul(bcdiv(sys_config('verifier'),100,2),bcsub($orderInfo['total_price'],$orderInfo['deduction_price'],2),2),2);
- $head_office_uid = sys_config('head_office_uid');
- if($head_office_uid>0)
- {
- $brokerage_price = bcmul(bcdiv(sys_config('head_office'),100,2),$next_profit,2);
- User::bcInc($head_office_uid, "brokerage_price", $brokerage_price, "uid");
- $sp = User::find($head_office_uid);
- UserBill::income("总公司收益分红",$head_office_uid, "now_money", "brokerage", $brokerage_price, $orderInfo['id'], $sp['brokerage_price'], "用户下单金额{$orderInfo['total_price']},总公司收益:" . $brokerage_price);
- }
- //处理分公司
- foreach ($rs as $v)
- {
- if($v['area_level']==9)
- {
- $brokerage_price = bcmul(bcdiv(sys_config('branch_office'),100,2),$next_profit,2);
- User::bcInc($v['uid'], "brokerage_price", $brokerage_price, "uid");
- $sp = User::find($v['uid']);
- UserBill::income("分公司收益分红", $v['uid'], "now_money", "brokerage", $brokerage_price, $orderInfo['id'], $sp['brokerage_price'], "用户下单金额{$orderInfo['total_price']},分公司收益分红:" . $brokerage_price);
- break;
- }
- }
- /*
- //处理店长
- $store_uid = SystemStore::where('id',$orderInfo['store_id'])->value('uid');
- if($store_uid>0)
- {
- $brokerage_price = bcmul(bcdiv(sys_config('branch_office'),100,2),$next_profit,2);
- User::bcInc($store_uid, "brokerage_price", $brokerage_price, "uid");
- $sp = User::find($store_uid);
- UserBill::income("分公司收益分红",$store_uid, "now_money", "brokerage", $brokerage_price, $orderInfo['id'], $sp['brokerage_price'], "用户下单金额{$orderInfo['total_price']},分公司收益:" . $brokerage_price);
- }*/
- //处理股东
- foreach ($rs as $v)
- {
- if($v['area_level']==8)
- {
- $brokerage_price = bcmul(bcdiv(sys_config('shareholder'),100,2),$next_profit,2);
- User::bcInc($v['uid'], "brokerage_price", $brokerage_price, "uid");
- $sp = User::find($v['uid']);
- UserBill::income("股东收益", $v['uid'], "now_money", "brokerage", $brokerage_price, $orderInfo['id'], $sp['brokerage_price'], "用户下单金额{$orderInfo['total_price']},股东收益:" . $brokerage_price);
- break;
- }
- }
- StoreOrder::edit(compact('recommend','bonus','team'),$orderInfo['id']);
- return true;
- }
- public static function day()
- {
- $sum = StoreOrder::where('paid',1)->where('refund_status',0)->whereDay('pay_time','yesterday')->value('sum(bonus)')?:0;
- $uids = User::where('level',4)->column('uid');
- if($sum && sizeof($uids))
- {
- $brokerage_price = bcdiv($sum,sizeof($uids),2);
- foreach ($uids as $v)
- {
- User::bcInc($v, "brokerage_price", $brokerage_price, "uid");
- $sp = User::find($v);
- UserBill::income("V3全公司分红", $v, "now_money", "brokerage", $brokerage_price, 0, $sp['brokerage_price'], "全公司总分红{$sum},V3用户数:".sizeof($uids)."人,每人收益:" . $brokerage_price);
- }
- }
- return true;
- }
- }
|