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>
|
</summary>
|
||||||
</member>
|
</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">
|
<member name="T:CoreCms.Net.Model.WeChatEntites.MyWxaBusinessGetLiveInfoRequest">
|
||||||
<summary>
|
<summary>
|
||||||
<para>扩展 表示 [POST] /wxa/business/getliveinfo 接口的请求。</para>
|
<para>扩展 表示 [POST] /wxa/business/getliveinfo 接口的请求。</para>
|
||||||
|
|||||||
@@ -7,8 +7,14 @@ using SKIT.FlurlHttpClient.Wechat.Api.Models;
|
|||||||
|
|
||||||
namespace CoreCms.Net.Model.WeChatEntites
|
namespace CoreCms.Net.Model.WeChatEntites
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 公众号菜单按钮提交参数类
|
||||||
|
/// </summary>
|
||||||
public class MenuFull_ButtonGroupForSkit
|
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.HttpClients;
|
||||||
using CoreCms.Net.WeChat.Service.Enums;
|
using CoreCms.Net.WeChat.Service.Enums;
|
||||||
using SKIT.FlurlHttpClient.Wechat.Api;
|
using SKIT.FlurlHttpClient.Wechat.Api;
|
||||||
|
using Microsoft.IdentityModel.Tokens;
|
||||||
|
|
||||||
namespace CoreCms.Net.Web.Admin.Controllers.Api.WeChat
|
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)
|
public async Task<AdminUiCallBack> CreateMenu(MenuFull_ButtonGroupForSkit menu)
|
||||||
{
|
{
|
||||||
var jm = new AdminUiCallBack();
|
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
|
try
|
||||||
{
|
{
|
||||||
var client = _weChatApiHttpClientFactory.CreateWeXinClient();
|
var client = _weChatApiHttpClientFactory.CreateWeXinClient();
|
||||||
@@ -77,7 +125,7 @@ namespace CoreCms.Net.Web.Admin.Controllers.Api.WeChat
|
|||||||
var request = new CgibinMenuCreateRequest()
|
var request = new CgibinMenuCreateRequest()
|
||||||
{
|
{
|
||||||
AccessToken = accessToken,
|
AccessToken = accessToken,
|
||||||
ButtonList = menu.button
|
ButtonList = skitButtons
|
||||||
};
|
};
|
||||||
|
|
||||||
var response = await client.ExecuteCgibinMenuCreateAsync(request, HttpContext.RequestAborted);
|
var response = await client.ExecuteCgibinMenuCreateAsync(request, HttpContext.RequestAborted);
|
||||||
|
|||||||
@@ -9,8 +9,15 @@
|
|||||||
</div>
|
</div>
|
||||||
<!--当前位置结束-->
|
<!--当前位置结束-->
|
||||||
<style>
|
<style>
|
||||||
.mydiv { margin-top: 10px; }
|
.mydiv {
|
||||||
.mydiv p { width: 100%; line-height: 30px; margin-bottom: 5px; }
|
margin-top: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mydiv p {
|
||||||
|
width: 100%;
|
||||||
|
line-height: 30px;
|
||||||
|
margin-bottom: 5px;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
<script type="text/html" template lay-type="Post" lay-url="Api/WeChatMenu/GetIndex" lay-done="layui.data.done(d);">
|
<script type="text/html" template lay-type="Post" lay-url="Api/WeChatMenu/GetIndex" lay-done="layui.data.done(d);">
|
||||||
<div class="layui-fluid">
|
<div class="layui-fluid">
|
||||||
|
|||||||
Reference in New Issue
Block a user