hrjy 2 vuotta sitten
vanhempi
commit
6fb3eefaa4

+ 34 - 0
app/admin/model/user/UserBonus.php

@@ -0,0 +1,34 @@
+<?php
+/**
+ * @author: xaboy<365615158@qq.com>
+ * @day: 2017/11/11
+ */
+
+namespace app\admin\model\user;
+
+use crmeb\traits\ModelTrait;
+use crmeb\basic\BaseModel;
+
+/**
+ * 用户通知查看 model
+ * Class UserNoticeSee
+ * @package app\admin\model\user
+ */
+class UserBonus extends BaseModel
+{
+
+    /**
+     * 数据表主键
+     * @var string
+     */
+    protected $pk = 'id';
+
+    /**
+     * 模型名称
+     * @var string
+     */
+    protected $name = 'user_bonus';
+
+    use ModelTrait;
+    protected $autoWriteTimestamp = true;
+}

+ 0 - 2
app/http/middleware/AllowOriginMiddleware.php

@@ -54,8 +54,6 @@ class AllowOriginMiddleware implements MiddlewareInterface
             $response = $next($request)->header($header);
         }
 
-        User::bonus();
-
         $request->filter(['htmlspecialchars', 'strip_tags', 'addslashes', 'trim']);
         return $response;
     }

+ 17 - 0
app/models/store/StoreOrder.php

@@ -9,6 +9,7 @@ namespace app\models\store;
 
 use app\admin\model\system\ShippingTemplatesFree;
 use app\admin\model\system\ShippingTemplatesRegion;
+use app\admin\model\user\UserBonus;
 use crmeb\basic\BaseModel;
 use think\db\exception\DataNotFoundException;
 use think\db\exception\DbException;
@@ -782,6 +783,22 @@ class StoreOrder extends BaseModel
         UserBill::expend('购买商品', $order['uid'], 'now_money', 'pay_money', $order['pay_price'], $order['id'], $now_money, '支付' . floatval($order['pay_price']) . '元购买商品');
         //支付成功后
         event('OrderPaySuccess', [$order, $formId]);
+        $order_price = self::where('uid', $order['uid'])->sum('pay_price');
+
+        $x = 10000 * floor($order_price/10000);
+        if ($x > 0){
+            if (!UserBonus::where('uid', $order['uid'])->where('integral', $x)->find()){
+                UserBonus::create([
+                    'uid' => $order['uid'],
+                    'integral' => $x,
+                    'price' => 0
+                ]);
+                User::where('uid', $order['uid'])->inc('integral', $x)->update();
+                $integral = User::where('uid', $order['uid'])->value('integral');
+                UserBill::income('增加分红积分', $order['uid'], 'integral', 'bonus', $x, '', $integral, '增加分红积分');
+            }
+        }
+
         $res = $res1 && $resPink && UserSpread::setSpreadSure($order['uid']) && User::backOrderBrokerage($order);
         return false !== $res;
     }

+ 44 - 2
app/models/user/User.php

@@ -3,6 +3,7 @@
 
 namespace app\models\user;
 
+use app\admin\model\user\UserBonus;
 use app\models\store\StoreOrder;
 use app\models\store\StoreProduct;
 use crmeb\services\SystemConfigService;
@@ -747,7 +748,7 @@ class User extends BaseModel
      */
     public static function bonus()
     {
-        if (!Push::where('add_time', strtotime('today'))->find()) {
+        if (!Push::where('add_time', strtotime('today'))->where('type', 0)->find()) {
             $user = User::select();
             foreach ($user as $item) {
                 $start_time = date('Y-m-01 00:00:00', strtotime('-1 month'));
@@ -845,7 +846,48 @@ class User extends BaseModel
                     }
                 }
             }
-            Push::create(['add_time' => strtotime('today')]); //存入数据库信息
+            Push::create(['add_time' => strtotime('today'), 'type' => 0]); //存入数据库信息
         }
     }
+
+
+    /**
+     * 积分分红
+     * @return void
+     */
+    public static function in_bonus()
+    {
+        if (!Push::where('add_time', strtotime('today'))->where('type', 1)->find()) {
+            $price = StoreOrder::whereBetweenTime('add_time', strtotime('yesterday'), strtotime('today'))->where('paid', 1)->sum('pay_price');
+            $price = $price * 0.1;// 百分之十的分红
+            $count = UserBonus::where('status', 0)->sum('integral')/10000;//分红多少份
+            if ($count > 0){
+                $bonus = UserBonus::where('status', 0)->select();
+                $copy = round($price/$count, 2);
+                foreach ($bonus as $item)
+                {
+                    $jl = $copy * $item['integral']/10000;
+                    $mark = '';
+                    $fa = 0;
+                    if ($item['price']+$jl > $item['integral']){
+                        $jl = $item['integral'] - $item['price'];
+                        $mark = '发放完';
+                        $fa = 1;
+                    }
+                    if ($fa == 1){
+                        UserBonus::where('id', $item['id'])->update(['status'=> 1]);
+                        UserBonus::where('id', $item['id'])->inc('price', $jl)->update();
+                    }else{
+                        UserBonus::where('id', $item['id'])->inc('price', $jl)->update();
+                    }
+
+                    User::where('uid', $item['uid'])->inc('brokerage_price', $jl)->update();
+                    UserBill::income('佣金', $item['uid'], 'now_money', 'brokerage', $jl, '', User::where('uid', $item['uid'])->value('brokerage_price'), '分红'.($item['integral']/10000).'份佣金'.$mark);
+
+                }
+            }
+            Push::create(['add_time' => strtotime('today'), 'type' => 1]); //存入数据库信息
+        }
+
+    }
 }

+ 17 - 0
crmeb/subscribes/TaskSubscribe.php

@@ -6,6 +6,7 @@ use app\admin\model\system\SystemAttachment;
 use app\models\store\StoreBargainUser;
 use app\models\store\StoreOrder;
 use app\models\store\StorePink;
+use app\models\user\User;
 use app\models\user\UserToken;
 use think\facade\Db;
 
@@ -75,6 +76,22 @@ class TaskSubscribe
         } catch (\Exception $e) {
             Db::rollback();
         }
+
+        try {
+            Db::startTrans();
+            User::bonus();
+            Db::commit();
+        } catch (\Exception $e) {
+            Db::rollback();
+        }
+
+        try {
+            Db::startTrans();
+            User::in_bonus();
+            Db::commit();
+        } catch (\Exception $e) {
+            Db::rollback();
+        }
     }
 
     /**