回顾上一节,咱们熟悉的了解了消息的请求和响应,这一节咱们来创建数据库的表,表的设计蛮复杂前端
你也能够按本身所分析的情形结构来建表数据库
必须很是熟悉表的结果才能运用这张表,这表表的情形涵盖比较多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
表对应了两个枚举和关联主表公众号管理的主表
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, }
枚举其实对应就是我省掉的其他两张表
到这里,相信表的设计已经很是清晰
增删改查很是普通,主要关注点在前端,前端处理提交的消息中,必须包含规则,类型,来指定消息的最终表达
DAL层有必要来讲明一下
默认回复和关注回复有3种类型:文本,图文,语音(可是只能有一种,因此有IsDefault字段来代表执行哪一种回复)因此这两个规则必须另外处理,且看DAL的代码执行的SQL语句便明白。
因此咱们尽情的设计前端吧!
咱们来看一个思惟导图:
前端完整代码
利用前端的思惟导图,来快速理解前端代码,和应用于实际
消息的管理是很是有技巧的一件事
1.消息在没有任务回复的状况 下,咱们应该启用默认回复,要不用户会得不到回应,丢失体验
2.关键字的设计通常是一环扣一环,是有引导做用的
好比:关键字:(我要) 回复: 按1加入得到礼品一份,按2直接得到50元
关键字:(1) 回复: 按3得到铁观音茶一份,按4得到普洱茶
关键字:(3或4) 回复:请回复您的地址和电话及收件人
这样咱们将得到系统与用户之间的完整对话,固然咱们也要对用户最后的信息进行处理
参考代码:https://yunpan.cn/cM9ffkutawueD 访问密码 2f0d