shish преди 5 години
родител
ревизия
dc2631da35
променени са 2 файла, в които са добавени 34 реда и са изтрити 68 реда
  1. 17 33
      biz/stat/classes/StatOutClass.php
  2. 17 35
      biz/stat/classes/StatOutMonthClass.php

+ 17 - 33
biz/stat/classes/StatOutClass.php

@@ -7,6 +7,7 @@
 namespace biz\stat\classes;
 
 use biz\base\classes\BaseClass;
+use common\components\util;
 
 class StatOutClass extends BaseClass
 {
@@ -15,43 +16,26 @@ class StatOutClass extends BaseClass
 
     //更新当前商家的数据 linqh 2021.4.13
     // 当采购后台,将价格更新
-    public static function updateOrInsert($sjId, $shopId, $amount)
+    public static function updateOrInsert($shop, $amount)
     {
+        $sjId = $shop->sjId;
+        $shopId = $shop->id;
         $time = date('Ymd');
-        $where = [
-            'sjId' => $sjId,
-            'shopId' => $shopId,
-            'time' => $time,
-        ];
-        $model = self::getByCondition($where);
-        if ($model) {
-            $id = $model['id'];
-            //累加金额 amount
-            $newAmount = bcadd($amount, $model['amount'], 2);
-            $totalAmount = bcadd($amount, $model['totalAmount'], 2);
-            self::updateById($id, ['amount' => $newAmount, 'totalAmount' => $totalAmount]);
-        } else {
-            //insert
-            $data = $where;
-            $data['amount'] = $amount;
-            //totalAmount = 前一天的 totalAmount
-            $totalAmount = 0;
-            $lastDate = date('Ymd', strtotime("-1 day"));
-            $lastWhere = [
-                'sjId' => $sjId,
-                'shopId' => $shopId,
-                'time' => $lastDate,
-            ];
-            $lastModel = self::getByCondition($lastWhere);
-            if ($lastModel) {
-                $totalAmount = $lastModel['totalAmount'];
-            }
-            $data['totalAmount'] = bcadd($amount, $totalAmount, 2);
-            $data['createTime'] = date('Y-m-d H:i:s');
-            self::add($data);
+        $stat = self::getByCondition(['sjId' => $sjId, 'shopId' => $shopId, 'time' => $time], true);
+        if (empty($stat)) {
+            $stat = self::add(['shopId' => $shopId, 'sjId' => $sjId, 'time' => $time], true);
         }
+        $id = $stat->id;
+        $unique = self::getLockById($id);
+        if (empty($unique)) {
+            util::fail('没有记录');
+        }
+        $currentAmount = bcadd($unique->amount, $amount, 2);
+        $unique->amount = $currentAmount;
+        $unique->totalAmount = $shop->totalExpend;
+        $unique->save();
         //当月
-        StatOutMonthClass::updateOrInsert($sjId, $shopId, $amount);
+        StatOutMonthClass::updateOrInsert($shop, $amount);
     }
 
 }

+ 17 - 35
biz/stat/classes/StatOutMonthClass.php

@@ -7,50 +7,32 @@
 namespace biz\stat\classes;
 
 use biz\base\classes\BaseClass;
-use common\components\dateUtil;
 
 class StatOutMonthClass extends BaseClass
 {
+
     public static $baseFile = '\biz\stat\models\StatOutMonth';
 
-    public static function updateOrInsert($sjId,$shopId,$amount)
+    public static function updateOrInsert($shop, $amount)
     {
         $time = date('Ym');
         $year = date('Y');
         $month = date('m');
-        $where = [
-            'sjId'=>$sjId,
-            'shopId'=>$shopId,
-            'year'=>$year,
-            'month'=>$month,
-            'time'=>$time,
-        ];
-        $model = self::getByCondition($where);
-        if($model){
-            $id = $model['id'];
-            //累加金额 amount
-            $newAmount = bcadd($amount,$model['amount'],2);
-            $totalAmount = bcadd($amount,$model['totalAmount'],2);
-            self::updateById($id,['amount'=>$newAmount,'totalAmount'=>$totalAmount]);
-        }else{
-            //insert
-            $data = $where;
-            $data['amount'] = $amount;
-            //totalAmount = 前一天的 totalAmount
-            $totalAmount = 0;
-            $lastTime =  date('Ym',strtotime("-1 month"));
-            $lastWhere = [
-                'sjId'=>$sjId,
-                'shopId'=>$shopId,
-                'time'=>$lastTime,
-            ];
-            $lastModel = self::getByCondition($lastWhere);
-            if($lastModel){
-                $totalAmount = $lastModel['totalAmount'];
-            }
-            $data['totalAmount'] = bcadd($amount,$totalAmount,2);
-            $data['createTime'] = date('Y-m-d H:i:s');
-            self::add($data);
+        $sjId = $shop->sjId;
+        $shopId = $shop->id;
+        $stat = self::getByCondition(['sjId' => $sjId, 'shopId' => $shopId, 'time' => $time], true);
+        if (empty($stat)) {
+            $stat = self::add(['shopId' => $shopId, 'sjId' => $sjId, 'time' => $time, 'year' => $year, 'month' => $month], true);
+        }
+        $id = $stat->id;
+        $unique = self::getLockById($id);
+        if (empty($unique)) {
+            util::fail('没有记录');
         }
+        $currentAmount = bcadd($unique->amount, $amount, 2);
+        $unique->amount = $currentAmount;
+        $unique->totalAmount = $shop->totalExpend;
+        $unique->save();
     }
+
 }