首页 > 代码库 > ASP.NET MVC5+EF6+EasyUI 后台管理系统(73)-微信公众平台开发-消息管理

ASP.NET MVC5+EF6+EasyUI 后台管理系统(73)-微信公众平台开发-消息管理

前言

回顾上一节,我们熟悉的了解了消息的请求和响应,这一节我们来建立数据库的表,表的设计蛮复杂

你也可以按自己所分析的情形结构来建表

必须非常熟悉表的结果才能运用这张表,这表表的情形涵盖比较多

思维导图

我这个人比较喜欢用思维导图来分析和表达一些模型:

 技术分享

表结构

根据思维导图,我们可以建立的表可以是3张表:消息表,规则表,类型表

消息表:实际的消息

规则表:文本、图文、语音等

类型表:文本、图文、语音(默认回复,订阅回复)

也可以是两张表:规制表,消息表(+一个类型字段)

我这里只设计一张表:消息表(+一个规则字段+一个类型字段)

设计表结构与个人的平时习惯有关系,我还是喜欢简单的东西,别为了设计而去专门设计,这样只会增加系统的复杂度

CREATE TABLE [dbo].[WC_MessageResponse](    [Id] [varchar](50) NOT NULL,              --主键            [OfficalAccountId] [varchar](50) NULL,    --所属公众号    [MessageRule] [int] NULL,                 --消息规则(枚举)    [Category] [int] NULL,                    --类型(枚举)    [MatchKey] [varchar](1000) NULL,          --关键字    [TextContent] [varchar](max) NULL,        --文本内容    [ImgTextContext] [varchar](max) NULL,     --图文文本内容    [ImgTextUrl] [varchar](1000) NULL,        --图文图片URL    [ImgTextLink] [varchar](1000) NULL,       --图文图片超链接    [MeidaUrl] [varchar](1000) NULL,          --语音URL    [MeidaLink] [varchar](1000) NULL,         --语音超链接    [Enable] [bit] NOT NULL,                  --是否启用    [IsDefault] [bit] NOT NULL,               --是否默认    [Remark] [varchar](2000) NULL,            --说明    [Sort] [int] NOT NULL,                    --排序    [CreateTime] [datetime] NOT NULL,         --创建时间    [CreateBy] [varchar](50) NOT NULL,        --创建人    [ModifyTime] [datetime] NOT NULL,         --修改时间    [ModifyBy] [varchar](50) NULL,            --修改人 CONSTRAINT [PK_WC_MessageResponse] PRIMARY KEY CLUSTERED (    [Id] ASC)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]GOSET ANSI_PADDING OFFGOALTER TABLE [dbo].[WC_MessageResponse]  WITH CHECK ADD  CONSTRAINT [FK_WC_MessageResponse_WC_OfficalAcconts] FOREIGN KEY([OfficalAccountId])REFERENCES [dbo].[WC_OfficalAccounts] ([Id])ON DELETE CASCADEGOALTER TABLE [dbo].[WC_MessageResponse] CHECK CONSTRAINT [FK_WC_MessageResponse_WC_OfficalAcconts]GO

表对应了两个枚举和关联主表公众号管理的主表

技术分享 公众号管理在70节

对应的枚举

 public enum WeChatReplyCategory    {        //文本        Text =1,        //图文        Image =2,        //语音        Voice =3,        //相等,用于回复关键字        Equal=4,        //包含,用于回复关键字        Contain = 5    }    public enum WeChatRequestRuleEnum    {        /// <summary>        /// 默认回复,没有处理的        /// </summary>        Default =0,        /// <summary>        /// 关注回复        /// </summary>        Subscriber =1,        /// <summary>        /// 文本回复        /// </summary>        Text =2,        /// <summary>        /// 图片回复        /// </summary>        Image =3,        /// <summary>        /// 语音回复        /// </summary>        Voice =4,        /// <summary>        /// 视频回复        /// </summary>        Video =5,        /// <summary>        /// 超链接回复        /// </summary>        Link =6,        /// <summary>        /// LBS位置回复        /// </summary>        Location =7,    }

枚举其实对应就是我省掉的其余两张表

到这里,相信表的设计已经非常清晰

后台代码

增删改查非常普通,主要关注点在前端,前端处理提交的消息中,必须包含规则,类型,来指定消息的最终表达

技术分享 Controller
技术分享 BLL
技术分享 DAL

DAL层有必要来说明一下

默认回复和关注回复有3种类型:文本,图文,语音(但是只能有一种,所以有IsDefault字段来表明执行哪种回复)所以这两个规则必须另外处理,且看DAL的代码执行的SQL语句便明白。

所以我们尽情的设计前端吧!

技术分享

前端如何设计?

我们来看一个思维导图:

 技术分享

前端完整代码

技术分享 View Code

利用前端的思维导图,来快速理解前端代码,和应用于实际

总结

消息的管理是非常有技巧的一件事

1.消息在没有任务回复的情况 下,我们应该启用默认回复,要不用户会得不到回应,丢失体验

2.关键字的设计一般是一环扣一环,是有引导作用的

   比如:关键字:(我要)   回复: 按1加入获得礼品一份,按2直接获得50元

    关键字:(1)       回复: 按3获得铁观音茶一份,按4获得普洱茶

    关键字:(3或4)  回复:请回复您的地址和电话及收件人

   这样我们将获得系统与用户之间的完整对话,当然我们也要对用户最后的信息进行处理

参考代码:https://yunpan.cn/cM9ffkutawueD  访问密码 2f0d

ASP.NET MVC5+EF6+EasyUI 后台管理系统(73)-微信公众平台开发-消息管理