【新增】增加MySql.Data组件,防止出现Nlog新版mysql不写入的问题。

【优化】优化本地上传写入文件夹缺少反斜杠的问题。
【修复】修复appsetting.json微信公众号配置项命名错误的问题。
【新增】定时任务增加微信公众号获取JS-Token并且全局缓存功能。
【新增】增加微信公众号获取JS-SDK使用权限签名算法。
【新增】新增微信公众号【微信被动回复消息】功能,用于关于公众号提醒,微信聊天被动关键词回复等。
【新增】新增微信公众号【微信菜单管理】功能,用于管理公众号底部三列五横的链接。
【新增】新增微信公众号【消息推送】接口及业务处理。用于接收从微信公众号推送的事件交互。
【新增】新增微信公众号【授权鉴权跳转】功能,用于验证是否为微信公众号访问,及获取openid等信息。
【新增】新增微信公众号用户accressToekn存储机制。
【新增】新增微信公众号发送模板消息方法。
【新增】数据库新增【WeChatMessageResponse】【WeChatUserAccessToken】两个表,【CoreCmsUserWeChatInfo】增加【isSubscribe】是否关注字段。
【新增】商品品牌管理品牌logo增加原图上传 
【新增】商品分类管理分类图片增加原图上传
【新增】新增最新后台左侧管理菜单目录脚本,完整数据库脚本备份新增最新商品商品示例。
This commit is contained in:
大灰灰
2022-12-30 02:32:10 +08:00
parent 4430e6f4e0
commit 7d49668037
52 changed files with 7302 additions and 21 deletions

View File

@@ -5,6 +5,7 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="SKIT.FlurlHttpClient.Wechat.Api" Version="2.20.1" />
<PackageReference Include="sqlSugarCore" Version="5.1.3.32" />
</ItemGroup>

View File

@@ -141,5 +141,12 @@ namespace CoreCms.Net.Model.Entities
[Display(Name = "更新时间")]
[SugarColumn(ColumnDescription = "更新时间", IsNullable = true)]
public System.DateTime? updateTime { get; set; }
/// <summary>
/// 是否订阅
/// </summary>
[Display(Name = "是否订阅")]
[SugarColumn(ColumnDescription = "是否订阅", IsNullable = true)]
public System.Boolean isSubscribe { get; set; }
}
}

View File

@@ -0,0 +1,212 @@
/***********************************************************************
* Project: CoreCms
* ProjectName: 核心内容管理系统
* Web: https://www.corecms.net
* Author: 大灰灰
* Email: jianweie@163.com
* CreateTime: 2022/12/28 22:34:52
* Description: 暂无
***********************************************************************/
using SqlSugar;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
namespace CoreCms.Net.Model.Entities
{
/// <summary>
/// 微信自动回复消息表
/// </summary>
public partial class WeChatMessageResponse
{
/// <summary>
/// 构造函数
/// </summary>
public WeChatMessageResponse()
{
}
/// <summary>
/// 序列
/// </summary>
[Display(Name = "序列")]
[SugarColumn(IsPrimaryKey = true, IsIdentity = true)]
[Required(ErrorMessage = "请输入{0}")]
public System.Int32 id { get; set; }
/// <summary>
/// 消息类型
/// </summary>
[Display(Name = "消息类型")]
public System.Int32? messageRule { get; set; }
/// <summary>
/// 分类
/// </summary>
[Display(Name = "分类")]
public System.Int32? category { get; set; }
/// <summary>
/// 匹配字符
/// </summary>
[Display(Name = "匹配字符")]
[StringLength(maximumLength:100,ErrorMessage = "{0}不能超过{1}字")]
public System.String matchKey { get; set; }
/// <summary>
/// 文本回复内容
/// </summary>
[Display(Name = "文本回复内容")]
public System.String textContent { get; set; }
/// <summary>
/// 图片回复内容
/// </summary>
[Display(Name = "图片回复内容")]
public System.String imgTextContext { get; set; }
/// <summary>
/// 图片回复图片地址
/// </summary>
[Display(Name = "图片回复图片地址")]
[StringLength(maximumLength:1000,ErrorMessage = "{0}不能超过{1}字")]
public System.String imgTextUrl { get; set; }
/// <summary>
/// 图片回复超链接
/// </summary>
[Display(Name = "图片回复超链接")]
[StringLength(maximumLength:1000,ErrorMessage = "{0}不能超过{1}字")]
public System.String imgTextLink { get; set; }
/// <summary>
/// 语音回复地址
/// </summary>
[Display(Name = "语音回复地址")]
[StringLength(maximumLength:1000,ErrorMessage = "{0}不能超过{1}字")]
public System.String meidaUrl { get; set; }
/// <summary>
/// 语音回复超链接
/// </summary>
[Display(Name = "语音回复超链接")]
[StringLength(maximumLength:1000,ErrorMessage = "{0}不能超过{1}字")]
public System.String meidaLink { get; set; }
/// <summary>
/// 是否启用
/// </summary>
[Display(Name = "是否启用")]
[Required(ErrorMessage = "请输入{0}")]
public System.Boolean enable { get; set; }
/// <summary>
/// 是否默认
/// </summary>
[Display(Name = "是否默认")]
[Required(ErrorMessage = "请输入{0}")]
public System.Boolean isDefault { get; set; }
/// <summary>
/// 备注
/// </summary>
[Display(Name = "备注")]
[StringLength(maximumLength:1000,ErrorMessage = "{0}不能超过{1}字")]
public System.String remark { get; set; }
/// <summary>
/// 排序
/// </summary>
[Display(Name = "排序")]
[Required(ErrorMessage = "请输入{0}")]
public System.Int32 sort { get; set; }
/// <summary>
/// 创建时间
/// </summary>
[Display(Name = "创建时间")]
[Required(ErrorMessage = "请输入{0}")]
public System.DateTime createTime { get; set; }
}
}

View File

@@ -0,0 +1,140 @@
/***********************************************************************
* Project: CoreCms
* ProjectName: 核心内容管理系统
* Web: https://www.corecms.net
* Author: 大灰灰
* Email: jianweie@163.com
* CreateTime: 2022/12/28 22:34:42
* Description: 暂无
***********************************************************************/
using SqlSugar;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
namespace CoreCms.Net.Model.Entities
{
/// <summary>
/// 微信用户交互授权
/// </summary>
public partial class WeChatUserAccessToken
{
/// <summary>
/// 构造函数
/// </summary>
public WeChatUserAccessToken()
{
}
/// <summary>
/// 序列
/// </summary>
[Display(Name = "序列")]
[SugarColumn(IsPrimaryKey = true, IsIdentity = true)]
[Required(ErrorMessage = "请输入{0}")]
public System.Int32 id { get; set; }
/// <summary>
/// 网页授权接口调用凭证
/// </summary>
[Display(Name = "网页授权接口调用凭证")]
[Required(ErrorMessage = "请输入{0}")]
[StringLength(maximumLength:120,ErrorMessage = "{0}不能超过{1}字")]
public System.String access_token { get; set; }
/// <summary>
/// 超时时间秒
/// </summary>
[Display(Name = "超时时间秒")]
[Required(ErrorMessage = "请输入{0}")]
public System.Int32 expires_in { get; set; }
/// <summary>
/// 用户刷新access_token
/// </summary>
[Display(Name = "用户刷新access_token")]
[StringLength(maximumLength:120,ErrorMessage = "{0}不能超过{1}字")]
public System.String refresh_token { get; set; }
/// <summary>
/// 需刷新时间
/// </summary>
[Display(Name = "需刷新时间")]
[Required(ErrorMessage = "请输入{0}")]
public System.DateTime refresh_DateTime { get; set; }
/// <summary>
/// 用户唯一标识
/// </summary>
[Display(Name = "用户唯一标识")]
[StringLength(maximumLength:50,ErrorMessage = "{0}不能超过{1}字")]
public System.String openid { get; set; }
/// <summary>
/// 用户授权的作用域
/// </summary>
[Display(Name = "用户授权的作用域")]
[StringLength(maximumLength:50,ErrorMessage = "{0}不能超过{1}字")]
public System.String scope { get; set; }
/// <summary>
/// 是否为快照页模式虚拟账号
/// </summary>
[Display(Name = "是否为快照页模式虚拟账号")]
public System.Int32? is_snapshotuser { get; set; }
/// <summary>
/// 用户统一标识
/// </summary>
[Display(Name = "用户统一标识")]
[StringLength(maximumLength:50,ErrorMessage = "{0}不能超过{1}字")]
public System.String unionid { get; set; }
}
}

View File

@@ -0,0 +1,14 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using SKIT.FlurlHttpClient.Wechat.Api.Models;
namespace CoreCms.Net.Model.WeChatEntites
{
public class MenuFull_ButtonGroupForSkit
{
public List<CgibinMenuCreateRequest.Types.Button> button { get; set; }
}
}

View File

@@ -0,0 +1,28 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CoreCms.Net.Model
{
public class TmpMsgModel
{
public string OpenId { get; set; }
public string TemplateId { get; set; }
public string First { get; set; }
public string Keyword1 { get; set; } = string.Empty;
public string Keyword2 { get; set; } = string.Empty;
public string Keyword3 { get; set; } = string.Empty;
public string Keyword4 { get; set; } = string.Empty;
public string Keyword5 { get; set; } = string.Empty;
public string Keyword6 { get; set; } = string.Empty;
public string Keyword7 { get; set; } = string.Empty;
public string Keyword8 { get; set; } = string.Empty;
public string Keyword9 { get; set; } = string.Empty;
public string Keyword10 { get; set; } = string.Empty;
public string Remark { get; set; } = string.Empty;
public string Url { get; set; } = string.Empty;
}
}