WIN-2308041133\Administrator há 4 meses atrás
pai
commit
ade3c81387
2 ficheiros alterados com 55 adições e 31 exclusões
  1. 53 31
      app/models/store/StoreOrder.php
  2. 2 0
      crmeb/services/WechatTemplateService.php

+ 53 - 31
app/models/store/StoreOrder.php

@@ -327,12 +327,12 @@ class StoreOrder extends BaseModel
                 if (!$combinationId) $combinationId = $cart['combination_id'];
                 $cartInfoGainIntegral = isset($cart['productInfo']['give_integral']) ? bcmul($cart['cart_num'], $cart['productInfo']['give_integral'], 2) : 0;
                 $gainIntegral = bcadd($gainIntegral, $cartInfoGainIntegral, 2);
-                if ($cart['productInfo']['is_health']==1){
+                if ($cart['productInfo']['is_health'] == 1) {
                     $is_type = 4;
-                }elseif($cart['productInfo']['is_life']==1){
+                } elseif ($cart['productInfo']['is_life'] == 1) {
                     $is_type = 5;
                 }
-                if ($cart['productInfo']['is_explosive']!=1&&$userInfo['is_first']==0){
+                if ($cart['productInfo']['is_explosive'] != 1 && $userInfo['is_first'] == 0) {
                     return self::setErrorInfo('首单只能购买报单商品', true);
                 }
             }
@@ -384,9 +384,9 @@ class StoreOrder extends BaseModel
                     return self::setErrorInfo('请选择门店', true);
                 }
             }
-            $is_brokerage=0;
-            if ($is_type==4||$is_type==5){
-                $is_brokerage=1;
+            $is_brokerage = 0;
+            if ($is_type == 4 || $is_type == 5) {
+                $is_brokerage = 1;
                 //佣金抵扣
                 $res2 = true;
                 $SurplusIntegral = $userInfo['brokerage_price'];
@@ -422,10 +422,10 @@ class StoreOrder extends BaseModel
                 if (!$res2) return self::setErrorInfo('使用健康币抵扣失败!', true);
                 if ($payPrice <= 0) $payPrice = 0;
 
-            }else{
+            } else {
 //                //积分抵扣
                 $res2 = true;
-                $is_brokerage=0;
+                $is_brokerage = 0;
                 $SurplusIntegral = $userInfo['integral'];
                 if ($payIntegral > 0) {
                     if ($userInfo['integral'] < $payIntegral) {
@@ -548,8 +548,8 @@ class StoreOrder extends BaseModel
      */
     public static function RegressionIntegral($order)
     {
-        if (!empty($order['is_brokerage'])){
-            if ($order['is_brokerage']==1){
+        if (!empty($order['is_brokerage'])) {
+            if ($order['is_brokerage'] == 1) {
                 return self::RegressionBrokerage($order);
             }
         }
@@ -635,9 +635,9 @@ class StoreOrder extends BaseModel
         self::beginTrans();
         try {
             $orderInfo = $order->toArray();
-            if ($orderInfo['is_brokerage']==1){
+            if ($orderInfo['is_brokerage'] == 1) {
                 $res = self::RegressionBrokerage($order) && self::RegressionStock($order) && self::RegressionCoupon($order);
-            }else{
+            } else {
                 $res = self::RegressionIntegral($order) && self::RegressionStock($order) && self::RegressionCoupon($order);
             }
             $order->is_del = 1;
@@ -760,6 +760,7 @@ class StoreOrder extends BaseModel
         self::checkTrans($res);
         return $res;
     }
+
     /**
      * 佣金(健康币)支付
      * @param $order_id
@@ -795,6 +796,7 @@ class StoreOrder extends BaseModel
         self::checkTrans($res);
         return $res;
     }
+
     /**
      * 微信支付 为 0元时
      * @param $order_id
@@ -896,19 +898,21 @@ class StoreOrder extends BaseModel
         //支付成功后
         event('OrderPaySuccess', [$order, $formId]);
         $type = User::where('uid', $order['uid'])->value('is_first');
-        if ($type == 1){
+        if ($type == 1) {
             self::team_rewards($order, 2); //分发团队奖励 2复购
-        }else{
+        } else {
             self::team_rewards($order, 1); //分发团队奖励 1首单
             User::where('uid', $order['uid'])->update(['is_first' => 1]); //修改用户是否首单
         }
         $res = $res1 && $resPink && UserSpread::setSpreadSure($order['uid']) && User::backOrderBrokerage($order);
         return false !== $res;
     }
+
 //    分发团队奖励  1首单 2复购
     public static function team_rewards($order, $type)
     {
         try {
+            $nickname = User::where('uid', $order['uid'])->value('nickname');
             $user_spread_group = self::get_spread_user($order['uid']);  //获取所有上级id
             @file_put_contents('quanju.txt', json_encode($user_spread_group) . "-所有上级\r\n", 8);
             $group_info = User::where('uid', 'in', $user_spread_group)->column('uid,level');  //获取所有上级信息
@@ -920,16 +924,16 @@ class StoreOrder extends BaseModel
             // 统计每个level出现的次数
             $levelCounts = array_count_values($groupIds);
             @file_put_contents('quanju.txt', json_encode($levelCounts) . "-所有等级的人数2222\r\n", 8);
-            $levelCounts2=[];
+            $levelCounts2 = [];
             foreach ($levelCounts as $k => $v) {  //遍历所有等级
-                $level_id=$make->where('id',$k)->value('grade');
+                $level_id = $make->where('id', $k)->value('grade');
                 $levelCounts2[$level_id] = $v;
             }
 
             if ($type == 1) {
                 $field = 'first_ratio';
                 $title = '首单奖励';
-            }elseif ($type == 2){
+            } elseif ($type == 2) {
                 $field = 'ratio';
                 $title = '复购奖励';
             }
@@ -938,36 +942,53 @@ class StoreOrder extends BaseModel
             $last_num = 0;
             $last_level = 0;
             foreach ($levelCounts2 as $k => $v) {  //遍历所有等级
-                if ($v>0){
+                if ($v > 0) {
                     @file_put_contents('quanju.txt', $v . "-当前等级的人数\r\n", 8);
                     @file_put_contents('quanju.txt', $k . "-当前等级\r\n", 8);
                     $level_group = User::where('level', $k)->where('uid', 'in', $user_spread_group)->column('uid,nickname,brokerage_price,level');  //获取这个等级的所有用户
 
-                    $level = $make->where('grade',$k)->find();  //用户等级
+                    $level = $make->where('grade', $k)->find();  //用户等级
                     if ($level) {
-                        $ratio = bcmul($level[$field],0.01,2);  //奖励比例
+                        $ratio = bcmul($level[$field], 0.01, 2);  //奖励比例
                         @file_put_contents('quanju.txt', $ratio . "-当前等级比例\r\n", 8);
                         $award_price = bcmul($order['total_price'], $ratio, 2);  //奖励金额
                         @file_put_contents('quanju.txt', $award_price . "-当前等级分到的总金额\r\n", 8);
-                        if ($last_num>0){
-                            $award_price = bcsub($award_price,$last_num,2); //当前等级分到的总金额扣除上个等级分到的总金额
+                        if ($last_num > 0) {
+                            $award_price = bcsub($award_price, $last_num, 2); //当前等级分到的总金额扣除上个等级分到的总金额
                         }
                         @file_put_contents('quanju.txt', $award_price . "-扣除上个等级分到的总金额后的当前等级分到的总金额\r\n", 8);
-                        $last_num = bcadd($last_num,$award_price,2); //之前等级分到的总金额
+                        $last_num = bcadd($last_num, $award_price, 2); //之前等级分到的总金额
                         @file_put_contents('quanju.txt', $last_num . "-需要扣除的上个等级分到的总金额\r\n", 8);
-                        $user_award = bcdiv($award_price,$v,2); //每个用户奖励金额
+                        $user_award = bcdiv($award_price, $v, 2); //每个用户奖励金额
                         @file_put_contents('quanju.txt', $user_award . "-当前等级分到的个人金额\r\n", 8);
-                        if ($user_award <=0){
+                        if ($user_award <= 0) {
                             continue;
                         }
-                        foreach ($level_group as $key => $value){
+                        foreach ($level_group as $key => $value) {
                             $after = bcadd($value['brokerage_price'], $user_award, 2);  //更新用户奖励金额
                             @file_put_contents('quanju.txt', $after . "-当前等级分到个人金额结算之后\r\n", 8);
-                            $mark = $value['nickname'].'获得分账健康币'.$title . ':' . $user_award . '元';
+                            $mark = $value['nickname'] . '获得分账健康币' . $title . ':' . $user_award . '元';
                             $res = UserBill::income('获得分账健康币', $value['uid'], 'brokerage_price', 'spread_award', $user_award, $order['id'], $after, $mark, 1);
                             User::where('uid', $value['uid'])->update(['brokerage_price' => $after]);
+                            //        通知提现用户
+                            $openid = WechatUser::where('uid', $value['uid'])->value('openid');
+                            if (!empty($openid)) {
+                                $group = [
+                                    'first' => '获得健康币分账',
+                                    'remark' => '点击查看订单详情'
+                                ];
+                                $time = date('Y-m-d H:i:s', time());
+                                $group = array_merge($group, [
+                                    'amount1' => $user_award,  //到账金额
+                                    'thing12' => $nickname,  //付款人
+                                    'time3' => $time, //支付时间
+                                ]);
+
+                                @file_put_contents('quanju.txt', json_encode($group) . "-模版消息5\r\n", 8);
+                                $res = WechatTemplateService::sendTemplate($openid, WechatTemplateService::BROKERAGE_PRICE, $group);
+                                @file_put_contents('quanju.txt', json_encode($res) . "-模版消息返回5\r\n", 8);
+                            }
                         }
-
                     }
                 }
             }
@@ -976,13 +997,14 @@ class StoreOrder extends BaseModel
             @file_put_contents('quanju.txt', $e->getLine() . "-团队奖励错误位置\r\n", 8);
         }
     }
+
     //获取所有上级id
     public static function get_spread_user($id, $init = true, $parentMap = null)
     {
         if ($init) {
             // 获取所有用户的上级映射 (uid => spread_uid)
             $us = User::column('spread_uid', 'uid');
-            @file_put_contents('quanju.txt',json_encode($us) . "-所有人选\r\n", 8);
+            @file_put_contents('quanju.txt', json_encode($us) . "-所有人选\r\n", 8);
             $parentMap = $us;  // 存储 uid->上级ID 的映射
             $id = (array)$id; // 确保ID转为数组
         }
@@ -1711,9 +1733,9 @@ class StoreOrder extends BaseModel
         if ($time == 0) return true;
         if (($order['add_time'] + bcmul($time, 3600, 0)) < time()) {
             $res1 = self::RegressionStock($order);
-            if ($order['is_brokerage']==1){
+            if ($order['is_brokerage'] == 1) {
                 $res2 = self::RegressionBrokerage($order);
-            }else{
+            } else {
                 $res2 = self::RegressionIntegral($order);
             }
             $res3 = self::RegressionCoupon($order);

+ 2 - 0
crmeb/services/WechatTemplateService.php

@@ -59,6 +59,8 @@ class WechatTemplateService implements ProviderInterface
     const SUBORDINATE_BINDING = 60720;
     //    提现通知
     const Extract_SUCCESS = 42935;
+    //    健康币分账
+    const BROKERAGE_PRICE = 47568;
     public static function getConstants($code = '')
     {
         $oClass = new \ReflectionClass(__CLASS__);