shish 6 лет назад
Родитель
Сommit
54964d6f25
2 измененных файлов с 48 добавлено и 155 удалено
  1. 0 124
      biz/stat/services/StatViewService.php
  2. 48 31
      biz/stat/services/StatVisitService.php

+ 0 - 124
biz/stat/services/StatViewService.php

@@ -13,128 +13,4 @@ class StatViewService extends BaseService
 	
 	public static $baseFile = '\biz\stat\classes\StatViewClass';
 	
-	/**
-	 * 收集访问次数和访问IP
-	 */
-	public static function gatherVisit($merchantId)
-	{
-		//收集访问次数
-		$wholeSiteView = StatVisitClass::getKeyName($merchantId, 'whole_site_view');
-		Yii::$app->redis->executeCommand('INCRBY', [$wholeSiteView, 1]);//记录当天访问人数
-		//收集访问客数
-		$ip = Yii::$app->request->userIP;
-		$wholeSiteIp = StatVisitClass::getKeyName($merchantId, 'whole_site_visit');
-		$exists = Yii::$app->redis->executeCommand('SISMEMBER', [$wholeSiteIp, $ip]);
-		if (!empty($exists)) {
-			return;
-		}
-		Yii::$app->redis->executeCommand('SADD', [$wholeSiteIp, $ip]);//记录当天的IP
-	}
-
-	/**
-	 * 将昨天的保存入库
-	 */
-	public static function saveYesterdayNum($merchantId)
-	{
-		$yesTime = date("Ymd", strtotime("-1 day"));
-		$resource = self::getByCondition(['merchantId' => $merchantId, 'time' => $yesTime]);
-		//有数据表示已经保存过了
-		if (!empty($resource)) {
-			return [];
-		}
-		$wholeSiteView = StatVisitClass::getKeyName($merchantId, 'whole_site_view', $yesTime);
-		$num = Yii::$app->redis->executeCommand('GET', [$wholeSiteView]);//记录当天访问网站人数
-		$asset = MerchantAssetService::getByMerchantId($merchantId);
-		$totalVisit = $asset['totalVisit'];
-		$totalVisit = stringUtil::calcAdd($totalVisit, $num);
-		$data = ['time' => $yesTime, 'totalNum' => $totalVisit, 'riseNum' => $num, 'merchantId' => $merchantId, 'createTime' => date("Y-m-d H:i:s")];
-		//保存每天的访问量
-		$saveData = self::add($data);
-		//保存累计访问量
-		MerchantAssetService::updateByCondition(['merchantId' => $merchantId], ['totalView' => $totalVisit]);
-		self::clearYesNum($merchantId);
-		return $saveData;
-	}
-	
-	/**
-	 * 清空昨天的缓存
-	 */
-	public static function clearYesNum($merchantId)
-	{
-		$yesTime = date("Ymd", strtotime("-1 day"));
-		//访问量
-		$wholeSiteView = StatVisitClass::getKeyName($merchantId, 'whole_site_view', $yesTime);
-		Yii::$app->redis->executeCommand('DEL', [$wholeSiteView]);
-		//访问IP量
-		$wholeSiteIp = StatVisitClass::getKeyName($merchantId, 'whole_site_ip', $yesTime);
-		Yii::$app->redis->executeCommand('DEL', [$wholeSiteIp]);
-	}
-	
-	/**
-	 * 获取今天整站的访问量
-	 */
-	public static function getTodayNum($merchantId)
-	{
-		$wholeSiteView = StatVisitClass::getKeyName($merchantId, 'whole_site_view');
-		//记录当天访问网站人数
-		$nowNum = Yii::$app->redis->executeCommand('GET', [$wholeSiteView]);
-		$nowNum = !empty($nowNum) ? $nowNum : 0;
-		return $nowNum;
-	}
-	
-	/**
-	 * 总访问量
-	 */
-	public static function getTotalVisit($merchantId)
-	{
-		$todayNum = self::getTodayNum($merchantId);
-		$asset = MerchantAssetService::getByMerchantId($merchantId);
-		$totalVisit = $asset['totalVisit'];
-		$newTotalVisit = stringUtil::calcAdd($totalVisit, $todayNum);
-		return $newTotalVisit;
-	}
-	
-	/**
-	 * 模拟创建昨天的访问IP与数据
-	 */
-	public static function randYesNum($merchantId)
-	{
-		$count = rand(10, 30);
-		$yesTime = date("Ymd", strtotime("-1 day"));
-		echo "\n开始创建昨天的访问量…\n";
-		for ($i = 0; $i < $count; $i++) {
-			$ip = stringUtil::randIP();
-			$wholeSiteIp = StatVisitClass::getKeyName($merchantId, 'whole_site_ip', $yesTime);
-			$exists = Yii::$app->redis->executeCommand('SISMEMBER', [$wholeSiteIp, $ip]);
-			if (!empty($exists)) {
-				return;
-			}
-			echo $wholeSiteIp . "\n";
-			Yii::$app->redis->executeCommand('SADD', [$wholeSiteIp, $ip]);//记录访问过网站的IP
-			$wholeSiteView = StatVisitClass::getKeyName($merchantId, 'whole_site_view', $yesTime);
-			Yii::$app->redis->executeCommand('INCRBY', [$wholeSiteView, 1]);//记录访问网站人数
-		}
-		echo "\n创建完成\n";
-		self::getYesNum($merchantId);
-	}
-	
-	/**
-	 * 获取昨天的访问IP和数据
-	 */
-	public static function getYesNum($merchantId)
-	{
-		$yesTime = date("Ymd", strtotime("-1 day"));
-		$wholeSiteView = StatVisitClass::getKeyName($merchantId, 'whole_site_view', $yesTime);
-		$yesterdayVisitNum = Yii::$app->redis->executeCommand('GET', [$wholeSiteView]);
-		echo '<pre>';
-		echo '昨天的访问总量:' . $yesterdayVisitNum . '<br />';
-		$wholeSiteIp = StatVisitClass::getKeyName($merchantId, 'whole_site_ip', $yesTime);
-		echo 'ipList的Key:' . $wholeSiteIp . '<br />';
-		$list = Yii::$app->redis->executeCommand('SMEMBERS', [$wholeSiteIp]);
-		echo 'ipList:<br />';
-		print_r($list);
-		$num = Yii::$app->redis->executeCommand('SCARD', [$wholeSiteIp]);
-		echo 'ipList里的访问数量统计:' . $num;
-	}
-	
 }

+ 48 - 31
biz/stat/services/StatVisitService.php

@@ -4,6 +4,7 @@ namespace biz\stat\services;
 
 use biz\base\services\BaseService;
 use biz\merchant\services\MerchantAssetService;
+use biz\stat\classes\StatViewClass;
 use biz\stat\classes\StatVisitClass;
 use Yii;
 use common\components\stringUtil;
@@ -23,14 +24,14 @@ class StatVisitService extends BaseService
 		Yii::$app->redis->executeCommand('INCRBY', [$wholeSiteView, 1]);//记录当天访问人数
 		//收集访问客数
 		$ip = Yii::$app->request->userIP;
-		$wholeSiteIp = StatVisitClass::getKeyName($merchantId, 'whole_site_visit');
-		$exists = Yii::$app->redis->executeCommand('SISMEMBER', [$wholeSiteIp, $ip]);
-		if (!empty($exists)) {
-			return;
+		$wholeSiteVisit = StatVisitClass::getKeyName($merchantId, 'whole_site_visit');
+		$exists = Yii::$app->redis->executeCommand('SISMEMBER', [$wholeSiteVisit, $ip]);
+		if (empty($exists)) {
+			//记录当天的IP
+			Yii::$app->redis->executeCommand('SADD', [$wholeSiteVisit, $ip]);
 		}
-		Yii::$app->redis->executeCommand('SADD', [$wholeSiteIp, $ip]);//记录当天的IP
 	}
-
+	
 	/**
 	 * 将昨天的保存入库
 	 */
@@ -43,17 +44,28 @@ class StatVisitService extends BaseService
 			return [];
 		}
 		$wholeSiteView = StatVisitClass::getKeyName($merchantId, 'whole_site_view', $yesTime);
-		$num = Yii::$app->redis->executeCommand('GET', [$wholeSiteView]);//记录当天访问网站人数
+		//获取访问次数
+		$viewNum = Yii::$app->redis->executeCommand('GET', [$wholeSiteView]);
+		
+		//获取访问客户数
+		$wholeSiteVisit = StatVisitClass::getKeyName($merchantId, 'whole_site_visit', $yesTime);
+		$visitNum = Yii::$app->redis->executeCommand('SCARD', [$wholeSiteVisit]);
+		
 		$asset = MerchantAssetService::getByMerchantId($merchantId);
 		$totalVisit = $asset['totalVisit'];
-		$totalVisit = stringUtil::calcAdd($totalVisit, $num);
-		$data = ['time' => $yesTime, 'totalNum' => $totalVisit, 'riseNum' => $num, 'merchantId' => $merchantId, 'createTime' => date("Y-m-d H:i:s")];
-		//保存每天的访问量
-		$saveData = self::add($data);
+		$totalView = $asset['totalView'];
+		$totalVisit = stringUtil::calcAdd($totalVisit, $visitNum);
+		$totalView = stringUtil::calcAdd($totalView, $viewNum);
+		//保存访客数
+		$data = ['time' => $yesTime, 'totalNum' => $totalVisit, 'riseNum' => $visitNum, 'merchantId' => $merchantId, 'createTime' => date("Y-m-d H:i:s")];
+		self::add($data);
+		//保存访问量
+		$data = ['time' => $yesTime, 'totalNum' => $totalView, 'riseNum' => $viewNum, 'merchantId' => $merchantId, 'addTime' => time()];
+		StatViewClass::add($data);
+		
 		//保存累计访问量
-		MerchantAssetService::updateByCondition(['merchantId' => $merchantId], ['totalView' => $totalVisit]);
+		MerchantAssetService::updateByCondition(['merchantId' => $merchantId], ['totalView' => $totalView, 'totalVisit' => $totalVisit]);
 		self::clearYesNum($merchantId);
-		return $saveData;
 	}
 	
 	/**
@@ -62,26 +74,31 @@ class StatVisitService extends BaseService
 	public static function clearYesNum($merchantId)
 	{
 		$yesTime = date("Ymd", strtotime("-1 day"));
-		//访问量
+		//访问量清零
 		$wholeSiteView = StatVisitClass::getKeyName($merchantId, 'whole_site_view', $yesTime);
 		Yii::$app->redis->executeCommand('DEL', [$wholeSiteView]);
-		//访问IP量
-		$wholeSiteIp = StatVisitClass::getKeyName($merchantId, 'whole_site_ip', $yesTime);
-		Yii::$app->redis->executeCommand('DEL', [$wholeSiteIp]);
+		//访客数清零
+		$wholeSiteVisit = StatVisitClass::getKeyName($merchantId, 'whole_site_visit', $yesTime);
+		Yii::$app->redis->executeCommand('DEL', [$wholeSiteVisit]);
 	}
 	
-	/**
-	 * 获取今天整站的访问量
-	 */
-	public static function getTodayNum($merchantId)
+	//获取今天的访问量
+	public static function getTodayViewNum($merchantId)
 	{
 		$wholeSiteView = StatVisitClass::getKeyName($merchantId, 'whole_site_view');
-		//记录当天访问网站人数
 		$nowNum = Yii::$app->redis->executeCommand('GET', [$wholeSiteView]);
 		$nowNum = !empty($nowNum) ? $nowNum : 0;
 		return $nowNum;
 	}
-	
+
+	//获取今天的访客数 shish 2020.2.2
+	public static function getTodayVisitNum($merchantId)
+	{
+		$wholeSiteVisit = StatVisitClass::getKeyName($merchantId, 'whole_site_visit');
+		$num = Yii::$app->redis->executeCommand('SCARD', [$wholeSiteVisit]);
+		return !empty($num) ? $num : 0;
+	}
+
 	/**
 	 * 总访问量
 	 */
@@ -104,13 +121,13 @@ class StatVisitService extends BaseService
 		echo "\n开始创建昨天的访问量…\n";
 		for ($i = 0; $i < $count; $i++) {
 			$ip = stringUtil::randIP();
-			$wholeSiteIp = StatVisitClass::getKeyName($merchantId, 'whole_site_ip', $yesTime);
-			$exists = Yii::$app->redis->executeCommand('SISMEMBER', [$wholeSiteIp, $ip]);
+			$wholeSiteVisit = StatVisitClass::getKeyName($merchantId, 'whole_site_visit', $yesTime);
+			$exists = Yii::$app->redis->executeCommand('SISMEMBER', [$wholeSiteVisit, $ip]);
 			if (!empty($exists)) {
 				return;
 			}
-			echo $wholeSiteIp . "\n";
-			Yii::$app->redis->executeCommand('SADD', [$wholeSiteIp, $ip]);//记录访问过网站的IP
+			echo $wholeSiteVisit . "\n";
+			Yii::$app->redis->executeCommand('SADD', [$wholeSiteVisit, $ip]);//记录访问过网站的IP
 			$wholeSiteView = StatVisitClass::getKeyName($merchantId, 'whole_site_view', $yesTime);
 			Yii::$app->redis->executeCommand('INCRBY', [$wholeSiteView, 1]);//记录访问网站人数
 		}
@@ -128,12 +145,12 @@ class StatVisitService extends BaseService
 		$yesterdayVisitNum = Yii::$app->redis->executeCommand('GET', [$wholeSiteView]);
 		echo '<pre>';
 		echo '昨天的访问总量:' . $yesterdayVisitNum . '<br />';
-		$wholeSiteIp = StatVisitClass::getKeyName($merchantId, 'whole_site_ip', $yesTime);
-		echo 'ipList的Key:' . $wholeSiteIp . '<br />';
-		$list = Yii::$app->redis->executeCommand('SMEMBERS', [$wholeSiteIp]);
+		$wholeSiteVisit = StatVisitClass::getKeyName($merchantId, 'whole_site_visit', $yesTime);
+		echo 'ipList的Key:' . $wholeSiteVisit . '<br />';
+		$list = Yii::$app->redis->executeCommand('SMEMBERS', [$wholeSiteVisit]);
 		echo 'ipList:<br />';
 		print_r($list);
-		$num = Yii::$app->redis->executeCommand('SCARD', [$wholeSiteIp]);
+		$num = Yii::$app->redis->executeCommand('SCARD', [$wholeSiteVisit]);
 		echo 'ipList里的访问数量统计:' . $num;
 	}