mirror of
http://git.coreshop.cn/jianweie/coreshoppro.git
synced 2025-12-06 16:03:25 +08:00
【修复】修复公众号管理创建二级菜单失败的问题。
This commit is contained in:
@@ -13450,6 +13450,61 @@
|
||||
订单号
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:CoreCms.Net.Model.WeChatEntites.MenuFull_ButtonGroupForSkit">
|
||||
<summary>
|
||||
公众号菜单按钮提交参数类
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:CoreCms.Net.Model.WeChatEntites.MenuFull_ButtonGroupForSkit.button">
|
||||
<summary>
|
||||
按钮列表
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:CoreCms.Net.Model.WeChatEntites.MenuFull_RootButton">
|
||||
<summary>
|
||||
按钮具体类型
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:CoreCms.Net.Model.WeChatEntites.MenuFull_RootButton.type">
|
||||
<summary>
|
||||
菜单的响应动作类型,view表示网页类型,click表示点击类型,miniprogram表示小程序类型
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:CoreCms.Net.Model.WeChatEntites.MenuFull_RootButton.key">
|
||||
<summary>
|
||||
菜单KEY值,用于消息接口推送,不超过128字节
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:CoreCms.Net.Model.WeChatEntites.MenuFull_RootButton.name">
|
||||
<summary>
|
||||
菜单标题,不超过16个字节,子菜单不超过60个字节
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:CoreCms.Net.Model.WeChatEntites.MenuFull_RootButton.url">
|
||||
<summary>
|
||||
网页 链接,用户点击菜单可打开链接,不超过1024字节。 type为miniprogram时,不支持小程序的老版本客户端将打开本url。
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:CoreCms.Net.Model.WeChatEntites.MenuFull_RootButton.appid">
|
||||
<summary>
|
||||
小程序的appid(仅认证公众号可配置)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:CoreCms.Net.Model.WeChatEntites.MenuFull_RootButton.pagepath">
|
||||
<summary>
|
||||
小程序的页面路径
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:CoreCms.Net.Model.WeChatEntites.MenuFull_RootButton.media_id">
|
||||
<summary>
|
||||
调用新增永久素材接口返回的合法media_id
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:CoreCms.Net.Model.WeChatEntites.MenuFull_RootButton.sub_button">
|
||||
<summary>
|
||||
二级菜单数组,个数应为1~5个
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:CoreCms.Net.Model.WeChatEntites.MyWxaBusinessGetLiveInfoRequest">
|
||||
<summary>
|
||||
<para>扩展 表示 [POST] /wxa/business/getliveinfo 接口的请求。</para>
|
||||
|
||||
@@ -7,8 +7,14 @@ using SKIT.FlurlHttpClient.Wechat.Api.Models;
|
||||
|
||||
namespace CoreCms.Net.Model.WeChatEntites
|
||||
{
|
||||
/// <summary>
|
||||
/// 公众号菜单按钮提交参数类
|
||||
/// </summary>
|
||||
public class MenuFull_ButtonGroupForSkit
|
||||
{
|
||||
public List<CgibinMenuCreateRequest.Types.Button> button { get; set; }
|
||||
/// <summary>
|
||||
/// 按钮列表
|
||||
/// </summary>
|
||||
public List<MenuFull_RootButton> button { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
54
CoreCms.Net.Model/WeChatEntites/MenuFull_RootButton.cs
Normal file
54
CoreCms.Net.Model/WeChatEntites/MenuFull_RootButton.cs
Normal file
@@ -0,0 +1,54 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace CoreCms.Net.Model.WeChatEntites
|
||||
{
|
||||
/// <summary>
|
||||
/// 按钮具体类型
|
||||
/// </summary>
|
||||
public class MenuFull_RootButton
|
||||
{
|
||||
/// <summary>
|
||||
/// 菜单的响应动作类型,view表示网页类型,click表示点击类型,miniprogram表示小程序类型
|
||||
/// </summary>
|
||||
public string type { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 菜单KEY值,用于消息接口推送,不超过128字节
|
||||
/// </summary>
|
||||
public string key { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 菜单标题,不超过16个字节,子菜单不超过60个字节
|
||||
/// </summary>
|
||||
public string name { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 网页 链接,用户点击菜单可打开链接,不超过1024字节。 type为miniprogram时,不支持小程序的老版本客户端将打开本url。
|
||||
/// </summary>
|
||||
public string url { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 小程序的appid(仅认证公众号可配置)
|
||||
/// </summary>
|
||||
public string appid { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 小程序的页面路径
|
||||
/// </summary>
|
||||
public string pagepath { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 调用新增永久素材接口返回的合法media_id
|
||||
/// </summary>
|
||||
public string media_id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 二级菜单数组,个数应为1~5个
|
||||
/// </summary>
|
||||
public List<MenuFull_RootButton> sub_button { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -18,6 +18,7 @@ using SKIT.FlurlHttpClient.Wechat.Api.Models;
|
||||
using CoreCms.Net.WeChat.Service.HttpClients;
|
||||
using CoreCms.Net.WeChat.Service.Enums;
|
||||
using SKIT.FlurlHttpClient.Wechat.Api;
|
||||
using Microsoft.IdentityModel.Tokens;
|
||||
|
||||
namespace CoreCms.Net.Web.Admin.Controllers.Api.WeChat
|
||||
{
|
||||
@@ -70,6 +71,53 @@ namespace CoreCms.Net.Web.Admin.Controllers.Api.WeChat
|
||||
public async Task<AdminUiCallBack> CreateMenu(MenuFull_ButtonGroupForSkit menu)
|
||||
{
|
||||
var jm = new AdminUiCallBack();
|
||||
|
||||
if (!menu.button.Any())
|
||||
{
|
||||
jm.msg = "请不要提交空的菜单数据";
|
||||
return jm;
|
||||
}
|
||||
|
||||
var skitButtons = new List<CgibinMenuCreateRequest.Types.Button>();
|
||||
|
||||
foreach (var itemParent in menu.button)
|
||||
{
|
||||
if (string.IsNullOrEmpty(itemParent.name) && string.IsNullOrEmpty(itemParent.name)) continue;
|
||||
|
||||
var bt = new CgibinMenuCreateRequest.Types.Button
|
||||
{
|
||||
Type = itemParent.type,
|
||||
Key = itemParent.key,
|
||||
Name = itemParent.name,
|
||||
Url = itemParent.url,
|
||||
MiniProgramAppId = itemParent.appid,
|
||||
MiniProgramPagePath = itemParent.pagepath,
|
||||
MediaId = itemParent.media_id,
|
||||
ArticleId = "",
|
||||
SubButtonList = new List<CgibinMenuCreateRequest.Types.Button>()
|
||||
};
|
||||
|
||||
if (!itemParent.sub_button.Any()) continue;
|
||||
|
||||
foreach (var btChild in from itemChild in itemParent.sub_button
|
||||
where !string.IsNullOrEmpty(itemChild.key) || !string.IsNullOrEmpty(itemChild.name)
|
||||
select new CgibinMenuCreateRequest.Types.Button
|
||||
{
|
||||
Type = itemChild.type,
|
||||
Key = itemChild.key,
|
||||
Name = itemChild.name,
|
||||
Url = itemChild.url,
|
||||
MiniProgramAppId = itemChild.appid,
|
||||
MiniProgramPagePath = itemChild.pagepath,
|
||||
MediaId = itemChild.media_id,
|
||||
ArticleId = ""
|
||||
})
|
||||
{
|
||||
bt.SubButtonList.Add(btChild);
|
||||
}
|
||||
skitButtons.Add(bt);
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
var client = _weChatApiHttpClientFactory.CreateWeXinClient();
|
||||
@@ -77,7 +125,7 @@ namespace CoreCms.Net.Web.Admin.Controllers.Api.WeChat
|
||||
var request = new CgibinMenuCreateRequest()
|
||||
{
|
||||
AccessToken = accessToken,
|
||||
ButtonList = menu.button
|
||||
ButtonList = skitButtons
|
||||
};
|
||||
|
||||
var response = await client.ExecuteCgibinMenuCreateAsync(request, HttpContext.RequestAborted);
|
||||
|
||||
@@ -9,8 +9,15 @@
|
||||
</div>
|
||||
<!--当前位置结束-->
|
||||
<style>
|
||||
.mydiv { margin-top: 10px; }
|
||||
.mydiv p { width: 100%; line-height: 30px; margin-bottom: 5px; }
|
||||
.mydiv {
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
.mydiv p {
|
||||
width: 100%;
|
||||
line-height: 30px;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
</style>
|
||||
<script type="text/html" template lay-type="Post" lay-url="Api/WeChatMenu/GetIndex" lay-done="layui.data.done(d);">
|
||||
<div class="layui-fluid">
|
||||
|
||||
Reference in New Issue
Block a user