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

前言

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

你也能够按本身所分析的情形结构来建表数据库

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

思惟导图

我这我的比较喜欢用思惟导图来分析和表达一些模型:spa

 

表结构

根据思惟导图,咱们能够创建的表能够是3张表:消息表,规则表,类型表设计

消息表:实际的消息code

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

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

也能够是两张表:规制表,消息表(+一个类型字段)排序

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

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

复制代码
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]

GO

SET ANSI_PADDING OFF
GO

ALTER TABLE [dbo].[WC_MessageResponse]  WITH CHECK ADD  CONSTRAINT [FK_WC_MessageResponse_WC_OfficalAcconts] FOREIGN KEY([OfficalAccountId])
REFERENCES [dbo].[WC_OfficalAccounts] ([Id])
ON DELETE CASCADE
GO

ALTER 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

相关文章
相关标签/搜索