瀏覽代碼

Merge branch 'zhongqi-hdAppModify'

shizhongqi 11 月之前
父節點
當前提交
b3a12ef6b8

+ 0 - 1
app-ghs/controllers/ConsoleController.php

@@ -16,7 +16,6 @@ use Yii;
 
 class ConsoleController extends BaseController
 {
-
     public $guestAccess = ['init', 'profile', 'Stroke-count', 'stat'];
 
     //总览

+ 3 - 0
app-hd/controllers/ChatController.php

@@ -214,6 +214,9 @@ class ChatController extends BaseController
     {
         $key = Yii::$app->request->post('key');
         $keyArr = explode('-', $key);
+        if (count($keyArr) != 3) {
+            util::error(-1, '校验失败,key格式错误');
+        }
         $shopId = intval($keyArr[0]);
         if ($shopId != $this->shopId) {
             util::error(-1, '校验失败');

+ 66 - 32
app-hd/controllers/ConsoleController.php

@@ -2,50 +2,78 @@
 
 namespace hd\controllers;
 
-use bizHd\purchase\classes\PurchaseClass;
+use bizHd\custom\classes\CustomClass;
+use bizHd\goods\classes\GoodsClass;
+use bizHd\order\classes\OrderClass;
 use bizHd\stat\classes\StatOrderClass;
 use bizHd\stat\classes\StatVisitClass;
 use bizGhs\item\classes\ItemClass;
 use common\components\dict;
 use common\components\util;
-use bizGhs\order\classes\OrderClass;
-use Yii;
 
 class ConsoleController extends BaseController
 {
-
     public $guestAccess = ['init', 'profile'];
 
     //总览
     public function actionStat()
     {
-        $itemList = ItemClass::getAllByCondition(['mainId' => $this->mainId], null, 'id,stock,cost', null, true);
-        $totalItemNum = 0;
-        $totalCost = 0;
-        if (!empty($itemList)) {
-            foreach ($itemList as $item) {
-                $stock = $item->stock ?? 0;
-                $cost = $item->cost ?? 0;
-                $totalItemNum = bcadd($stock, $totalItemNum, 2);
-                $currentCost = bcmul($stock, $cost, 2);
-                $totalCost = bcadd($currentCost, $totalCost, 2);
-            }
-        }
-        $totalItemNum = floor($totalItemNum);
-
-        $main = $this->main;
-        $totalCustom = $main->totalUser ?? 0;
-        $totalVisit = $main->totalVisit ?? 0;
-        $totalOrder = $main->finishOrder ?? 0;
-        $overview = [
-            ['name' => "花材数", "url" => '/admin/stat/stock', 'value' => $totalItemNum, 'type' => 1],
-            ['name' => "花材值", "url" => '/admin/stat/stock', 'value' => $totalCost, 'type' => 1],
-            ['name' => "花束", "url" => '/admin/custom/showTotalBalance', 'value' => 0, 'type' => 1],
-            ['name' => "总客户", "url" => '/admin/stat/stock', 'value' => 10, 'type' => 1],
-            ['name' => "总订单", "url" => '/admin/home/member', 'value' => $totalCustom, 'type' => 4],
-            ['name' => "总赊账", "url" => '/admin/home/order', 'value' => $totalOrder, 'type' => 4],
-        ];
-        util::success(['overview' => $overview]);
+		$cacheKey = 'hd_console_stat_overview:' . $this->mainId . '_' . $this->shopId;
+		$cache = \Yii::$app->redis->executeCommand('GET', [$cacheKey]);
+		$cached = !empty($cache) ? json_decode($cache, true) : null;
+		if (is_array($cached)
+			&& isset($cached['totalItemNum'], $cached['totalCost'], $cached['goodsCount'], $cached['customCount'], $cached['orderCount'], $cached['debtCount'])) {
+			$overview = [
+				['name' => "花材数", "url" => '/admin/stat/stock', 'value' => $cached['totalItemNum'], 'type' => 1],
+				['name' => "花材值", "url" => '/admin/stat/stock', 'value' => $cached['totalCost'], 'type' => 1],
+				['name' => "花束", "url" => '/admin/custom/showTotalBalance', 'value' => $cached['goodsCount'], 'type' => 1],
+				['name' => "总客户", "url" => '/admin/stat/stock', 'value' => $cached['customCount'], 'type' => 1],
+				['name' => "总订单", "url" => '/admin/home/member', 'value' => $cached['orderCount'], 'type' => 4],
+				['name' => "总赊账", "url" => '/admin/home/order', 'value' => $cached['debtCount'], 'type' => 4],
+			];
+			util::success(['overview' => $overview]);
+		}
+
+		// 缓存未命中时计算
+		$itemList = ItemClass::getAllByCondition(['mainId' => $this->mainId], null, 'id,stock,cost', null, true);
+		$totalItemNum = 0;
+		$totalCost = 0;
+		if (!empty($itemList)) {
+			foreach ($itemList as $item) {
+				$stock = $item->stock ?? 0;
+				$cost = $item->cost ?? 0;
+				$totalItemNum = bcadd($stock, $totalItemNum, 2);
+				$currentCost = bcmul($stock, $cost, 2);
+				$totalCost = bcadd($currentCost, $totalCost, 2);
+			}
+		}
+		$totalItemNum = floor($totalItemNum);
+
+		$goodsCount = GoodsClass::getCount(['mainId'=>$this->mainId]);
+		$customCount = CustomClass::getCount(['shopId'=>$this->shopId]);
+		$orderCount = OrderClass::getCount(['mainId'=>$this->mainId, 'status'=>4]);
+		$debtCount = OrderClass::debtCount($this->mainId);
+
+		$overview = [
+			['name' => "花材数", "url" => '/admin/stat/stock', 'value' => $totalItemNum, 'type' => 1],
+			['name' => "花材值", "url" => '/admin/stat/stock', 'value' => $totalCost, 'type' => 1],
+			['name' => "花束", "url" => '/admin/custom/showTotalBalance', 'value' => $goodsCount, 'type' => 1],
+			['name' => "总客户", "url" => '/admin/stat/stock', 'value' => $customCount, 'type' => 1],
+			['name' => "总订单", "url" => '/admin/home/member', 'value' => $orderCount, 'type' => 4],
+			['name' => "总赊账", "url" => '/admin/home/order', 'value' => $debtCount, 'type' => 4],
+		];
+
+		$numbers = [
+			'totalItemNum' => $totalItemNum,
+			'totalCost' => $totalCost,
+			'goodsCount' => $goodsCount,
+			'customCount' => $customCount,
+			'orderCount' => $orderCount,
+			'debtCount' => $debtCount,
+		];
+        // 缓存一小时
+		\Yii::$app->redis->executeCommand('SETEX', [$cacheKey, 3600, json_encode($numbers, JSON_UNESCAPED_UNICODE)]);
+		util::success(['overview' => $overview]);
     }
 
     //概况 ssh 2019.12.19
@@ -100,7 +128,13 @@ class ConsoleController extends BaseController
             'asset' => $this->main,
             'notice' => $notice,
             'warning' => $warning,
-            'todayData' => ['visit' => $visitCustom, 'income' => $todaySale, 'order' => $orderNum, 'wastage' => $wastage, 'bouquet' => $hsNum],
+            'todayData' => [
+                'visit' => $visitCustom,
+                'income' => $todaySale,
+                'order' => $orderNum,
+                'wastage' => $wastage,
+                'bouquet' => $hsNum
+            ],
             'incomeStat' => [],
             'menu' => $menu,
             'lookMoney' => $lookMoney,

+ 6 - 7
app-hd/controllers/RechargeController.php

@@ -87,12 +87,11 @@ class RechargeController extends BaseController
 		$miniCodeResizeBase64 = stringUtil::ossBase64($miniCodeResizeUrl);
 		$posterProcess .= '/watermark,image_' . $miniCodeResizeBase64 . ',g_se,x_' . $qrRightPadding . ',y_' . $qrBottomPadding;
         $positions = [
-            ['recharge' => ['x' => 240, 'y' => 665], 'give' => ['x' => 520, 'y' => 665]],
-            ['recharge' => ['x' => 220, 'y' => 845], 'give' => ['x' => 500, 'y' => 845]],
-            ['recharge' => ['x' => 220, 'y' => 1030], 'give' => ['x' => 500, 'y' => 1030]],
+            ['recharge' => ['x' => 220, 'y' => 655], 'give' => ['x' => 500, 'y' => 655]],
+            ['recharge' => ['x' => 220, 'y' => 840], 'give' => ['x' => 500, 'y' => 840]],
+            ['recharge' => ['x' => 220, 'y' => 1020], 'give' => ['x' => 500, 'y' => 1020]],
         ];
-        $fontSize = 44; // 数值字号
-        $fontColor = '333333';
+        $fontSize = 50; // 数值字号
 		if (!empty($recharge)) {
 			// 先生成同一张图片上的文字水印串,最后再与$posterProcess合并
 			$textProcess = '';
@@ -106,11 +105,11 @@ class RechargeController extends BaseController
                 $giveText = (string)(intval($val['give']) ?? '');
                 if ($rechargeText !== '') {
                     $rechargeBase64 = stringUtil::ossBase64($rechargeText);
-					$textProcess .= '/watermark,text_' . $rechargeBase64 . ',g_nw,x_' . $pos['recharge']['x'] . ',y_' . $pos['recharge']['y'] . ',size_' . $fontSize . ',color_' . $fontColor;
+					$textProcess .= '/watermark,text_' . $rechargeBase64 . ',g_nw,x_' . $pos['recharge']['x'] . ',y_' . $pos['recharge']['y'] . ',size_' . $fontSize . ',color_333333,type_' . stringUtil::ossBase64('fangzhengheiti');
                 }
                 if ($giveText !== '') {
                     $giveBase64 = stringUtil::ossBase64($giveText);
-					$textProcess .= '/watermark,text_' . $giveBase64 . ',g_nw,x_' . $pos['give']['x'] . ',y_' . $pos['give']['y'] . ',size_' . $fontSize . ',color_' . $fontColor;
+					$textProcess .= '/watermark,text_' . $giveBase64 . ',g_nw,x_' . $pos['give']['x'] . ',y_' . $pos['give']['y'] . ',size_' . $fontSize . ',color_FFD100,type_' . stringUtil::ossBase64('fangzhengheiti');
                 }
             }
 			$posterProcess .= $textProcess;

+ 16 - 3
app-mall/controllers/OrderController.php

@@ -10,14 +10,12 @@ use bizHd\order\classes\ScanPayClass;
 use bizHd\wx\classes\WxOpenClass;
 use bizMall\custom\classes\CustomClass;
 use bizMall\goods\classes\GoodsClass;
-use bizMall\item\classes\ItemClass;
 use bizMall\order\classes\OrderClass;
 use bizMall\order\classes\OrderForwardClass;
 use bizMall\order\classes\OrderItemClass;
 use bizMall\order\services\OrderService;
 use bizMall\promote\services\CouponService;
 use bizMall\saas\services\RegionService;
-use bizMall\shop\classes\ShopExtClass;
 use bizMall\user\services\UserService;
 use common\components\dateUtil;
 use common\components\dict;
@@ -25,7 +23,6 @@ use common\components\imgUtil;
 use common\components\noticeUtil;
 use common\components\orderSn;
 use common\components\stringUtil;
-use common\services\xhPayToolService;
 use Yii;
 use common\components\util;
 use common\components\lakala\Lakala;
@@ -167,6 +164,22 @@ class OrderController extends BaseController
         $post['mainId'] = $this->mainId ?? 0;
         $post['userId'] = $this->userId ?? 0;
 
+        // 判断是否在营业时间窗口
+        $openTime = $this->shop->openStartTime;
+        $closeTime = $this->shop->openEndTime;
+        if ($openTime != '' && $closeTime != '') {
+            $openHourMinute = explode(':', $openTime);
+            $closeHourMinute = explode(':', $closeTime);
+            $currentHour = date('H');
+            $currentMinute = date('i');
+            if ($currentHour < intval($openHourMinute[0]) || ($currentHour == intval($openHourMinute[0]) && $currentMinute < intval($openHourMinute[1]))) {
+                util::fail('不在营业时间窗口');
+            }
+            if ($currentHour > intval($closeHourMinute[0]) || ($currentHour == intval($closeHourMinute[0]) && $currentMinute > intval($closeHourMinute[1]))) {
+                util::fail('不在营业时间窗口');
+            }
+        }
+
         //普莲花艺、叶上花、丰行、小武鲜花、九江云朵、源花汇、紫荆不能在花卉宝下单,多处要同步修改,关键词ls_mall_not_open
         $mainId = $this->mainId;
         if (getenv('YII_ENV') == 'production') {

+ 10 - 0
biz-hd/order/classes/OrderClass.php

@@ -1233,4 +1233,14 @@ class OrderClass extends BaseClass
         return $order;
     }
 
+    public static function debtCount($mainId)
+    {
+        $debtAmount = 0;
+        $orders = self::getAllByCondition(['mainId' => $mainId, 'debt' => 1], null, 'remainDebtPrice', null, true);
+        foreach ($orders as $order) {
+            $remainDebtPrice = $order->remainDebtPrice ?? 0;
+            $debtAmount = bcadd($debtAmount, $remainDebtPrice, 2);
+        }
+        return $debtAmount;
+    }
 }