Sfoglia il codice sorgente

菜单可以提交

shish 6 anni fa
parent
commit
f20420c242

+ 58 - 56
app/business/controllers/WxMenuController.php

@@ -14,71 +14,72 @@ class WxMenuController extends BaseController
 	//更新菜单
 	public function actionReplace()
 	{
-		//xhWxMenuService::delMenuList($this->merchantId);
-		$now = time();
-		$date = date("Y-m-d H:i:s", $now);
-
-		$submitToWx = isset($post['submitToWx']) ? $post['submitToWx'] : '';
-		$level1String = '0◇◇0◇◇商城◇◇0◇◇1◇◇0◆◆1◇◇0◇◇申请接入◇◇1◇◇http://o.huahb.com/join/apply◇◇0◆◆2◇◇1◇◇申请公众号◇◇1◇◇http://o.huahb.com/main/apply◇◇0◆◆';
-		$level2String = '0◇◇2◇◇子菜单名2◇◇0◇◇2◇◇0◆◆1◇◇2◇◇子菜单名◇◇0◇◇2◇◇0◆◆';
-		$level1String = rtrim($level1String, '◆◆');
-		$level1 = explode('◆◆', $level1String);
-		$parentIdList = [];//记录一级菜单的数据库id
+		$menu = Yii::$app->request->post('menu');
+		
+		$menu =
+			
+			[
+				
+				['name' => '商城', 'menuOption' => 0, 'menuOrder' => 1, 'replyType' => 0, 'replyUrl' => 'http://www.baidu.com/', 'children' => [['name' => '鲜花类别', 'menuOption' => 0, 'menuOrder' => 1, 'replyUrl' => 'http://www.baidu.com/', 'replyType' => 0]]],
+				
+				['name' => '商城', 'menuOption' => 0, 'menuOrder' => 2, 'replyType' => 0,'replyUrl' => 'http://www.baidu.com/', 'children' => []],
+				
+				['name' => '商城', 'menuOption' => 0, 'menuOrder' => 3, 'replyType' => 0,'replyUrl' => 'http://www.baidu.com/', 'children' => []],
+			
+			];
+		
 		
-		foreach ($level1 as $key => $val) {//一级菜单数据整理
-			$arr = explode('◇◇', $val);
-			$menuOrder = $arr[0];//一级菜单序号
-			$wxMenuOption = $arr[3];//选项
-			$wxMenuContent = $arr[4];//内容
+		//删除原有菜单
+		xhWxMenuService::delMenuList($this->merchantId);
+		
+		$date = date("Y-m-d H:i:s");
+		foreach ($menu as $key => $val) {//一级菜单数据整理
+			$parentOrder = $val['menuOrder'];
+			$parentWxMenuOption = $val['menuOption'];
+			$parentName = $val['name'];
 			$addData = [];
 			$addData['parentId'] = 0;
 			$addData['merchantId'] = $this->merchantId;
-			$addData['menuOrder'] = $menuOrder;
-			$addData['menuOption'] = $wxMenuOption;
-			$addData['hasSonMenu'] = $arr[1];
-			$addData['name'] = $arr[2];
-			$addData['menuKey'] = $this->merchantId . '_' . $menuOrder;
+			$addData['menuOrder'] = $parentOrder;
+			$addData['menuOption'] = $parentWxMenuOption;
+			$addData['hasSonMenu'] = isset($val['children']) && !empty($val['children']) ? 1 : 0;
+			$addData['name'] = $parentName;
+			$addData['menuKey'] = $this->merchantId . '_' . $parentOrder;
 			$addData['createTime'] = $date;
-			$addData['replyType'] = $arr[5];
+			$addData['replyType'] = $val['replyType'];
+			$addData['replyUrl'] = $val['replyUrl'];
 			if (!empty($wxMenuContent)) {
-				$formatData = xhWxMenuService::getFormatData($wxMenuContent, $wxMenuOption, $this->merchant);
+				$formatData = xhWxMenuService::getFormatData($wxMenuContent, $parentWxMenuOption, $this->merchant);
 				$addData = array_merge($addData, $formatData);
 			}
 			$return = xhWxMenuService::add($addData);
-			$parentIdList[$menuOrder] = $return['id'];
-		}
-
-		if (!empty($level2String)) {
-			$level2String = rtrim($level2String, '◆◆');
-			$level2 = explode('◆◆', $level2String);
-			foreach ($level2 as $key => $val) {//二级菜单数据整理
-				$arr = explode('◇◇', $val);
-				$menuOrder = $arr[0];
-				$parentMenuOrder = $arr[1];
-				$wxMenuOption = $arr[3];
-				$wxMenuContent = $arr[4];
-				$addData['parentId'] = $parentIdList[$parentMenuOrder];
-				$addData['merchantId'] = $this->merchantId;
-				$addData['menuOrder'] = $menuOrder;
-				$addData['menuOption'] = $wxMenuOption;
-				$addData['name'] = $arr[2];
-				$addData['menuKey'] = $this->merchantId . '_' . $parentMenuOrder . '_' . $menuOrder;
-				$addData['createTime'] = $date;
-				$addData['replyType'] = $arr[5];
-				if (!empty($wxMenuContent)) {
-					$formatData = xhWxMenuService::getFormatData($wxMenuContent, $wxMenuOption, $this->merchant);
-					$addData = array_merge($addData, $formatData);
+			$parentId = $return['id'];
+			if (isset($val['children']) && !empty($val['children'])) {
+				foreach ($val['children'] as $childKey => $childValue) {
+					$childOrder = $childValue['menuOrder'];
+					$childWxMenuOption = $childValue['menuOption'];
+					$childName = $childValue['name'];
+					$addChildData = [];
+					$addChildData['parentId'] = $parentId;
+					$addChildData['merchantId'] = $this->merchantId;
+					$addChildData['menuOrder'] = $childOrder;
+					$addChildData['menuOption'] = $childWxMenuOption;
+					$addChildData['name'] = $childName;
+					$addChildData['menuKey'] = $this->merchantId . '_' . $parentOrder . '_' . $childOrder;
+					$addChildData['createTime'] = $date;
+					$addChildData['replyType'] = $childValue['replyType'];
+					$addChildData['replyUrl'] = $childValue['replyUrl'];
+					if (!empty($wxMenuContent)) {
+						$formatData = xhWxMenuService::getFormatData($wxMenuContent, $childWxMenuOption, $this->merchant);
+						$addChildData = array_merge($addChildData, $formatData);
+					}
+					xhWxMenuService::add($addChildData);
 				}
-				xhWxMenuService::add($addData);
 			}
 		}
-		
-		if (empty($submitToWx)) {
-			util::successInfo();
-		}
 		$wxMenu = xhWxMenuService::getMenuList($this->merchantId);
 		if (empty($wxMenu)) {
-			util::failInfo();
+			util::fail('没有找到菜单');
 		}
 		$replyType = configDict::getConfig('replyType');
 		$menuData = [];
@@ -101,14 +102,15 @@ class WxMenuController extends BaseController
 				}
 			}
 		}
+
 		$subData['button'] = $menuData;
 		$wxUtil = new weixinUtil($this->merchant);
-		$json = $wxUtil->userMenuToWeiXin($subData);
-		$r = json_decode($json, true);
-		if ($r['errcode'] == 0) {
-			util::ok('操作成功,5分钟后生效');
+		$jsonData = $wxUtil->userMenuToWeiXin($subData);
+		$respond = json_decode($jsonData, true);
+		if ($respond['errcode'] == 0) {
+			util::ok('提交成功,5分钟后生效');
 		}
-		util::fail('发布失败');
+		util::fail('提交失败');
 	}
 	
 }

+ 0 - 1
common/components/configDict.php

@@ -58,7 +58,6 @@ class configDict
 			0 => ['name' => '跳转到-常用链接', 'key' => 0, 'replyType' => 0],//replyType 回复类型
 			1 => ['name' => '跳转到-自定义网址', 'key' => 1, 'replyType' => 0],
 			2 => ['name' => '跳转到-文字', 'key' => 2, 'replyType' => 1],
-			3 => ['name' => '跳转到-报名类活动', 'key' => 3, 'replyType' => 0],
 		],
 		
 		'reachPeriodName' => [0 => '上午', 1 => '下午', 2 => '晚上'],

+ 1 - 3
common/models/xhWxMenu.php

@@ -16,7 +16,6 @@ namespace common\models;
  * @property string $replyText 回复文字
  * @property string $replyMultiNews 回复多图文
  * @property string $replyNews 回复单图文
- * @property int $targetId 目标id 如活动id
  * @property int $hasSonMenu 是否子菜单 0没有 1有
  * @property int $menuOrder 菜单顺序
  * @property string $createTime 创建时间
@@ -38,7 +37,7 @@ class xhWxMenu extends xhBaseModel
     public function rules()
     {
         return [
-            [['parentId', 'merchantId', 'menuOption', 'replyType', 'targetId', 'hasSonMenu', 'menuOrder'], 'integer'],
+            [['parentId', 'merchantId', 'menuOption', 'replyType', 'hasSonMenu', 'menuOrder'], 'integer'],
             [['createTime'], 'required'],
             [['createTime', 'updateTime'], 'safe'],
             [['name'], 'string', 'max' => 50],
@@ -67,7 +66,6 @@ class xhWxMenu extends xhBaseModel
             'replyText' => 'Reply Text',
             'replyMultiNews' => 'Reply Multi News',
             'replyNews' => 'Reply News',
-            'targetId' => 'Target ID',
             'hasSonMenu' => 'Has Son Menu',
             'menuOrder' => 'Menu Order',
             'createTime' => 'Create Time',

+ 9 - 66
common/services/xhWxMenuService.php

@@ -105,56 +105,15 @@ class xhWxMenuService
 	
 	public static function getByMenuKey($menuKey)
 	{
-		$cacheKey = configDict::getCacheKey('xhWxMenuKey') . $menuKey;
-		$menu = Yii::$app->redis->executeCommand('HGETALL', [$cacheKey]);
-		if (!empty($menu)) {
-			$arr = [];
-			$i = 0;
-			$x = 0;
-			foreach ($menu as $key => $val) {
-				$i++;
-				if ($i % 2 == 0) {
-					$arr[$x]['value'] = $val;
-					$x++;
-				} else {
-					$arr[$x]['key'] = $val;
-				}
-			}
-			$menuArr = [];
-			foreach ($arr as $key => $val) {
-				$menuArr[$val['key']] = $val['value'];
-			}
-			unset($menuArr['info_already_get_by_sql']);
-			return $menuArr;
-		}
-		$menu = xhWxMenu::find()->where(['menuKey' => $menuKey])->asArray()->one();
-		$params = [$cacheKey];
-		$params[] = 'info_already_get_by_sql';
-		$params[] = 'ok';//redis没有办法设置带空值的键,加此可以数据空时表示取过
-		if (!empty($menu)) {
-			foreach ($menu as $key => $val) {
-				$params[] = $key;
-				$params[] = $val;
-			}
-		}
-		Yii::$app->redis->executeCommand('HMSET', $params);
-		return $menu;
+		return xhWxMenu::find()->where(['menuKey' => $menuKey])->asArray()->one();
 	}
 	
 	public static function getMenuList($merchantId)
 	{
-		$cacheKey = configDict::getCacheKey('xhWxMenuList') . $merchantId;
-		$menuString = Yii::$app->redis->executeCommand('GET', [$cacheKey]);
-		if (empty($menuString)) {
-			$list = self::getAllMenu($merchantId);
-			$menuString = json_encode($list);
-			Yii::$app->redis->executeCommand('SET', [$cacheKey, $menuString]);
-		} else {
-			$list = json_decode($menuString, true);
-		}
+		$list = self::getAllMenu($merchantId);
 		return $list;
 	}
-	
+
 	/**
 	 * 取出商家所有菜单
 	 */
@@ -208,33 +167,21 @@ class xhWxMenuService
 	
 	public static function delMenuList($merchantId)
 	{
-		
-		$menu = xhWxMenu::getAllByCondition(['merchantId' => $merchantId]);
-		if (!empty($menu)) {
-			foreach ($menu as $val) {
-				$id = $val['id'];
-				$menuKey = $val['menuKey'];
-				xhWxMenu::deleteById($id);
-				$cacheKey = configDict::getCacheKey('xhWxMenuKey') . $menuKey;
-				Yii::$app->redis->executeCommand('DEL', [$cacheKey]);
-			}
-		}
-		$cacheKey = configDict::getCacheKey('xhWxMenuList') . $merchantId;
-		Yii::$app->redis->executeCommand('DEL', [$cacheKey]);
+		xhWxMenu::deleteByCondition(['merchantId'=>$merchantId]);
 	}
 	
 	public static function add($data)
 	{
 		return xhWxMenu::add($data);
 	}
-	
+
 	public static function getFormatData($wxMenuContent, $wxMenuOption, $merchant)
 	{
 		$addData = [];
 		$wxMenuOptionList = configDict::getConfig('wxMenuOption');
 		$commonUseUrl = configDict::getConfig('commonUseUrl');
 		switch ($wxMenuOption) {
-			case $wxMenuOptionList['redirectToCommonUseUrl']://链接到 常用链接
+			case $wxMenuOptionList['redirectToCommonUseUrl']://跳转到常用链接
 				foreach ($commonUseUrl as $comKey => $comVal) {
 					if ($comKey == $wxMenuContent) {
 						$addData['replyUrl'] = Yii::$app->params['frontUrl'] . $comVal['url'] . '?account=' . $merchant['id'];
@@ -242,19 +189,15 @@ class xhWxMenuService
 					}
 				}
 				break;
-			case $wxMenuOptionList['redirectToCustomUrl']://链接到-自定义网址
+			case $wxMenuOptionList['redirectToCustomUrl']://跳转到自定义网址
 				$addData['replyUrl'] = urldecode($wxMenuContent);
 				break;
-			case $wxMenuOptionList['showText']://链接到-文字
+			case $wxMenuOptionList['showText']://回复文字
 				$addData['replyText'] = $wxMenuContent;
 				break;
-			case $wxMenuOptionList['redirectToActive']://链接到-报名类活动
-				$addData['targetId'] = $wxMenuContent;
-				$addData['replyUrl'] = Yii::$app->params['frontUrl'] . '/pay/active?id=' . $wxMenuContent . '&account=' . $merchant['id'];
-				break;
 			default:
 		}
 		return $addData;
 	}
-	
+
 }

+ 4 - 0
sql.txt

@@ -1,3 +1,7 @@
+2019.12.19 shish 微信菜单相关
+ALTER TABLE `xhWxMenu` MODIFY `replyType` TINYINT NOT NULL DEFAULT 0 COMMENT '回复给粉丝的类型 0跳转链接 1文字 2单图文';
+ALTER TABLE `xhWxMenu` DROP COLUMN `targetId`;
+
 2019.12.18 shish 新人优惠券
 DROP TABLE IF EXISTS `xhCouponAsset`;
 CREATE TABLE IF NOT EXISTS `xhCouponAsset`(