|
@@ -4,6 +4,7 @@
|
|
|
namespace app\models\user;
|
|
|
|
|
|
use app\models\store\StoreOrder;
|
|
|
+use app\models\store\StoreOrderCartInfo;
|
|
|
use app\models\store\StoreProduct;
|
|
|
use crmeb\services\SystemConfigService;
|
|
|
use think\db\exception\DataNotFoundException;
|
|
@@ -736,4 +737,143 @@ class User extends BaseModel
|
|
|
}
|
|
|
return $model->where('brokerage_price', '>', $brokerage_price)->count('uid');
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
+ public static function bonus($type, $money, $uid = 0, $order_id = '')
|
|
|
+ {
|
|
|
+ $model = new self();
|
|
|
+ $silver_user = $model->where([['level', '=', 1], ['brokerage_price', '<', 200]])->select();// 白银会员
|
|
|
+ $silver = count($silver_user);// 白银会员总数
|
|
|
+ $silver_user = $silver_user ? $silver_user->toArray() : [];
|
|
|
+
|
|
|
+ $gold_user = $model->where([['level', '=', 2], ['brokerage_price', '<', 6000]])->select();// 黄金会员
|
|
|
+ $gold = count($gold_user);// 黄金会员总数
|
|
|
+ $gold_user = $gold_user ? $gold_user->toArray() : [];
|
|
|
+
|
|
|
+ $diamonds_user = $model->where([['level', '=', 3]])->select();// 钻石会员总数
|
|
|
+ $diamonds = count($diamonds_user);// 钻石会员总数
|
|
|
+ $diamonds_user = $diamonds_user ? $diamonds_user->toArray() : [];
|
|
|
+ switch ($type){
|
|
|
+ case 1:
|
|
|
+ //商家转账积分后
|
|
|
+ $divide = ($money * 0.1)/($silver+$gold);//白银会员和黄金会员分百分之十的金额
|
|
|
+ $diamonds_divide = ($money * 0.01)/$diamonds;//钻石会员销售的百分之1
|
|
|
+ $user = array_merge($silver_user, $gold_user);
|
|
|
+ if ($user){
|
|
|
+ // 黄金会员和白银会员
|
|
|
+ foreach ($user as &$item){
|
|
|
+ if ($item['level'] == 1){
|
|
|
+ if ($item['brokerage_price']+$divide > 200){
|
|
|
+ $item['brokerage_price'] += 200 - $item['brokerage_price'];
|
|
|
+ UserBill::income('佣金', $item['uid'], 'now_money', 'brokerage', 200 - $item['brokerage_price'], $item['spread_uid'], $item['brokerage_price'], '商家销售额分红,已达到上限');
|
|
|
+ }else{
|
|
|
+ $item['brokerage_price'] += $divide;
|
|
|
+ UserBill::income('佣金', $item['uid'], 'now_money', 'brokerage', $divide, $item['spread_uid'], $item['brokerage_price'], '商家销售额分红');
|
|
|
+ }
|
|
|
+
|
|
|
+ }elseif ($item['level'] == 2){
|
|
|
+ if ($item['brokerage_price']+$divide > 6000){
|
|
|
+ $item['brokerage_price'] += 6000 - $item['brokerage_price'];
|
|
|
+ UserBill::income('佣金', $item['uid'], 'now_money', 'brokerage', 6000 - $item['brokerage_price'], $item['spread_uid'], $item['brokerage_price'], '商家销售额分红,已达到上限');
|
|
|
+ }else{
|
|
|
+ $item['brokerage_price'] += $divide;
|
|
|
+ UserBill::income('佣金', $item['uid'], 'now_money', 'brokerage', $divide, $item['spread_uid'], $item['brokerage_price'], '商家销售额分红');
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ $model->saveAll($user);
|
|
|
+ }
|
|
|
+
|
|
|
+ if ($diamonds_user){
|
|
|
+ // 钻石会员
|
|
|
+ foreach ($diamonds_user as &$item){
|
|
|
+ $item['brokerage_price'] += $diamonds_divide;
|
|
|
+ UserBill::income('佣金', $item['uid'], 'now_money', 'brokerage', $diamonds_divide, $item['spread_uid'], $item['brokerage_price'], '商家销售额分红');
|
|
|
+ }
|
|
|
+ $model->saveAll($diamonds_user);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case 2:
|
|
|
+ // 礼包分红
|
|
|
+ $order = StoreOrder::where('order_id', $order_id)->find();
|
|
|
+ $user = User::where('uid', $order['uid'])->find();
|
|
|
+ $info = StoreOrderCartInfo::where('oid', $order['id'])->where('product_id', '<=', 2)->select();
|
|
|
+ foreach ($info as $item){
|
|
|
+ $product = StoreProduct::where('id', $item['product_id'])->find();
|
|
|
+ if ($user['spread_uid']){
|
|
|
+ // 当前用户是否有上级
|
|
|
+ $spread = User::where('uid', $user['spread_uid'])->find();
|
|
|
+ if ($spread['level'] == 2){
|
|
|
+ // 如果用户是黄金会员
|
|
|
+ $push = $product['price'] * 0.2; //获得价格百分之20的佣金
|
|
|
+ if ($spread['brokerage_price']+$push > 6000){
|
|
|
+ $spread['brokerage_price'] += 6000 - $spread['brokerage_price'];
|
|
|
+ UserBill::income('佣金', $spread['uid'], 'now_money', 'brokerage', 6000 - $spread['brokerage_price'], $spread['spread_uid'], $spread['brokerage_price'], '礼包销售额20%分红,已达到上限');
|
|
|
+ }else{
|
|
|
+ $spread['brokerage_price'] += $push;
|
|
|
+ UserBill::income('佣金', $spread['uid'], 'now_money', 'brokerage', $push, $spread['spread_uid'], $spread['brokerage_price'], '礼包销售直推佣金');
|
|
|
+ }
|
|
|
+ $spread->save();
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ if ($product['price'] == 200){
|
|
|
+ $divide = ($product['price'] * 0.1)/$silver; // 200礼包的百分之十白银会员平分
|
|
|
+ $diamonds_divide = ($product['price'] * 0.03)/$diamonds;//钻石会员200礼包的百分之3
|
|
|
+ if ($silver_user){
|
|
|
+ foreach ($silver_user as &$value){
|
|
|
+ if ($value['brokerage_price']+$divide > 200){
|
|
|
+ $value['brokerage_price'] += 200 - $value['brokerage_price'];
|
|
|
+ UserBill::income('佣金', $value['uid'], 'now_money', 'brokerage', 200 - $value['brokerage_price'], $value['spread_uid'], $value['brokerage_price'], '200礼包销售额分红,已达到上限');
|
|
|
+ }else{
|
|
|
+ $value['brokerage_price'] += $divide;
|
|
|
+ UserBill::income('佣金', $value['uid'], 'now_money', 'brokerage', $divide, $value['spread_uid'], $value['brokerage_price'], '200礼包销售额分红');
|
|
|
+ }
|
|
|
+ }
|
|
|
+ $model->saveAll($silver_user);
|
|
|
+ }
|
|
|
+ if ($diamonds_user){
|
|
|
+ // 钻石会员
|
|
|
+ foreach ($diamonds_user as &$value){
|
|
|
+ $value['brokerage_price'] += $diamonds_divide;
|
|
|
+ UserBill::income('佣金', $value['uid'], 'now_money', 'brokerage', $diamonds_divide, $value['spread_uid'], $value['brokerage_price'], '200礼包销售额分红');
|
|
|
+ }
|
|
|
+ $model->saveAll($diamonds_user);
|
|
|
+ }
|
|
|
+ }elseif ($product['price'] == 1991){
|
|
|
+ //1991礼包 白银会员和黄金会员分百分之十的金额
|
|
|
+ $divide = ($product['price'] * 0.1)/($silver+$gold);
|
|
|
+ $user = array_merge($silver_user, $gold_user);
|
|
|
+ if ($user){
|
|
|
+ // 黄金会员和白银会员
|
|
|
+ foreach ($user as &$value){
|
|
|
+ if ($value['level'] == 1){
|
|
|
+ if ($value['brokerage_price']+$divide > 200){
|
|
|
+ $value['brokerage_price'] += 200 - $value['brokerage_price'];
|
|
|
+ UserBill::income('佣金', $value['uid'], 'now_money', 'brokerage', 200 - $value['brokerage_price'], $value['spread_uid'], $value['brokerage_price'], '1991礼包销售额分红,已达到上限');
|
|
|
+ }else{
|
|
|
+ $value['brokerage_price'] += $divide;
|
|
|
+ UserBill::income('佣金', $value['uid'], 'now_money', 'brokerage', $divide, $value['spread_uid'], $value['brokerage_price'], '1991礼包销售额分红');
|
|
|
+ }
|
|
|
+
|
|
|
+ }elseif ($value['level'] == 2){
|
|
|
+ if ($value['brokerage_price']+$divide > 6000){
|
|
|
+ $value['brokerage_price'] += 6000 - $value['brokerage_price'];
|
|
|
+ UserBill::income('佣金', $value['uid'], 'now_money', 'brokerage', 6000 - $value['brokerage_price'], $value['spread_uid'], $value['brokerage_price'], '1991礼包销售额分红,已达到上限');
|
|
|
+ }else{
|
|
|
+ $value['brokerage_price'] += $divide;
|
|
|
+ UserBill::income('佣金', $value['uid'], 'now_money', 'brokerage', $divide, $value['spread_uid'], $value['brokerage_price'], '1991礼包销售额分红');
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ $model->saveAll($user);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+ return [];
|
|
|
+ }
|
|
|
}
|