shish 6 rokov pred
rodič
commit
4aa8c7a53e
1 zmenil súbory, kde vykonal 52 pridanie a 39 odobranie
  1. 52 39
      biz/admin/classes/AdminClass.php

+ 52 - 39
biz/admin/classes/AdminClass.php

@@ -75,12 +75,15 @@ class AdminClass extends BaseClass
 		AdminRoleClass::valid($role, $merchantId);
 		
 		//验证关联的微信
-		$userId = $data['userId'];
-		$user = UserClass::getById($userId);
-		UserClass::valid($user, $merchantId);
+		$adminId = $data['admin'];
+		$admin = self::getById($adminId);
+		if (empty($admin)) {
+			util::fail('没有找到管理员信息');
+		}
+		AdminClass::valid($admin, $merchantId);
 		
 		$relateUserIdList = self::getAdminShopUserId($merchantId);
-		if (in_array($userId, $relateUserIdList)) {
+		if (in_array($adminId, $relateUserIdList)) {
 			util::fail('您选择的微信已经绑定别的帐号');
 		}
 		
@@ -140,7 +143,7 @@ class AdminClass extends BaseClass
 		self::updateById($id, ['delStatus' => 1]);
 	}
 	
-	//更新员工 shish 2019.12
+	//更新员工信息 shish 2019.12
 	public static function updateAdmin($admin, $data)
 	{
 		$id = $admin['id'];
@@ -153,13 +156,12 @@ class AdminClass extends BaseClass
 		}
 		
 		//验证关联的微信
-		$userId = $data['userId'];
-		if ($userId != $admin['userId']) {
-			$user = UserClass::getById($userId);
-			UserClass::valid($user, $merchantId);
-			
+		$adminId = $data['userId'];
+		if ($adminId != $admin['userId']) {
+			$admin = self::getById($adminId);
+			self::valid($admin, $merchantId);
 			$relateUserIdList = self::getAdminShopUserId($merchantId);
-			if (in_array($userId, $relateUserIdList)) {
+			if (in_array($adminId, $relateUserIdList)) {
 				util::fail('您选择的微信已经绑定别的帐号');
 			}
 		}
@@ -180,52 +182,63 @@ class AdminClass extends BaseClass
 		}
 		self::updateById($id, $data);
 	}
-
+	
 	public static function getByMiniOpenId($miniOpenId)
 	{
 		return self::getByCondition(['miniOpenId' => $miniOpenId]);
 	}
-
+	
+	public static function getByUnionId($unionId)
+	{
+		return self::getByCondition(['unionId' => $unionId]);
+	}
+	
 	//创建以及更新用户 shish 2020.2.7
 	public static function replaceAdmin($adminInfo, $source)
 	{
 		$adminInfo = self::switchAdminInfo($adminInfo, $source);
-		$userSource = UserClass::$userSourceId;
-		
+		$adminSource = UserClass::$userSourceId;
+		$unionId = isset($adminInfo['unionId']) && !empty($adminInfo['unionId']) ? $adminInfo['unionId'] : '';
+		$unionAdmin = [];
+		if (!empty($unionId)) {
+			$unionAdmin = self::getByUnionId($unionId);
+		}
 		switch ($source) {
-			case $userSource['mini']['name']:
-				$sourceId = $userSource['mini']['id'];
+			case $adminSource['mini']['name']:
+				$sourceId = $adminSource['mini']['id'];
 				$miniOpenId = $adminInfo['miniOpenId'];
-				$user = self::getByMiniOpenId($miniOpenId);
+				$admin = self::getByMiniOpenId($miniOpenId);
 				break;
-			case $userSource['official']['name']:
-				$sourceId = $userSource['official']['id'];
+			case $adminSource['official']['name']:
+				$sourceId = $adminSource['official']['id'];
 				$openId = isset($adminInfo['openId']) ? $adminInfo['openId'] : '';
-				$user = [];
+				$admin = [];
 				if (!empty($openId)) {
-					$user = self::getByOpenId($openId);
+					$admin = self::getByOpenId($openId);
 				}
 				break;
 			default:
 				throw new \Exception('未知来源的用户');
 		}
-		if (empty($user)) {
-			$adminInfo['source'] = $sourceId;
-			$user = self::generateAdmin($adminInfo);
+		if (empty($admin)) {
+			if (!empty($unionAdmin)) {
+				//1、在小程序端已经授权用户信息和unionId之后,关注公众号时走这里
+				//2、关注了公众号或者H5已经授权时,并首次访问小程序
+				$admin = self::updateAdmin($unionAdmin, $adminInfo);
+			} else {
+				$adminInfo['sourceType'] = $sourceId;
+				$admin = self::generateAdmin($adminInfo);
+			}
 		} else {
-			$user = self::updateAdminInfo($user, $adminInfo);
-		}
-		//存在相同unionId进行合并
-		$unionId = isset($adminInfo['unionId']) ? $adminInfo['unionId'] : '';
-		if (!empty($unionId)) {
-			$same = self::getSameUnionId($unionId);
-			if (count($same) == 2) {
-				$delUser = $same[0];
-				$retainUser = $same[1];
-				$user = self::mergeAdmin($delUser, $retainUser);
+			if (!empty($unionAdmin)) {
+				if (isset($unionAdmin['id']) && isset($admin['id']) && $admin['id'] != $unionAdmin['id']) {
+					//合并相同客户
+					$admin = self::mergeAdmin($unionAdmin, $admin);
+				}
 			}
+			$admin = self::updateAdmin($admin, $adminInfo);
 		}
-		return $user;
+		return $admin;
 	}
 	
 	public static function updateAdminInfo($originalUser, $getUserInfo)
@@ -357,12 +370,12 @@ class AdminClass extends BaseClass
 			unset($info['openId']);
 		}
 		if (!empty($openId)) {
-			$userSource = UserClass::$userSourceId;
+			$adminSource = UserClass::$adminSourceId;
 			switch ($source) {
-				case $userSource['mini']['name']:
+				case $adminSource['mini']['name']:
 					$info['miniOpenId'] = $openId;
 					break;
-				case $userSource['official']['name']:
+				case $adminSource['official']['name']:
 					$info['openId'] = $openId;
 					break;
 				default: