知识点

相关文章

更多

最近更新

更多

[c#]asp.net开发微信公众平台(1)数据库设计

2019-03-02 00:58|来源: 网路

    开发微信公众平台之前,先去微信官方了解下大概的情况 这里:http://mp.weixin.qq.com/wiki/index.php ;看了之后心里大致有数了,开始设计数据库,尽可能的考虑,未考虑到的,以后再补充。

    1、首先是用户部分,根据微信官方的接口结合实际运用,用户部分有3个表:用户表、用户资料表、用户分组表,我设计的如下:

 

 

 

2、用户设计好之后就是文章部分,包括:文章分类表、文章表,  设计如下:

 

 

 

3、有了用户相关的表我们可以保存用户,有了文章模块的表我们可以根据用户输入的信息查询文章进行返回(返回文本、图文、图片、音乐、视频、语音等等),但是实际运用中,我们存在需要指定特定的关键字返回特定的内容的情况,那么就需要专门的特定关键字模块,  包括:关键字表、关键字返回的内容表,  这里的内容表看着像是与上面的文章表有重合,实则不然, 这里是特定关键字指定的回复内容,可以指定返回文本、图文或其他多媒体信息,当返回多媒体信息时内容中存入文件地址,  上面的文章表是标准的通用的文章内容表, 供用户查询多数情况下直接返回图文信息,且图文信息点击链接时就是这篇文章对应的展示地址, 相当于一个微网站,  所以文章和这个关键字的内容表分开设计更加方便管理。  设计如下:

 

 

 

 

4、消息记录,  把用户发来的消息进行记录,方便后续处理,  比如 根据用户上次发来的事件消息,之后再发同一个关键词时,返回对应菜单下的内容,而不用用户每次发送消息都带对应的菜单选项;客服消息根据记录的信息做个性化的服务 等等。   包括:用户发来的消息记录表、回复给用户的消息记录表  ,有了这些可以完整的还原和用户的对话,这里是记录和用户交流的过程,具体用户发来的消息需要返回什么样的消息,由项目代码中业务决定。   设计如下:

 

 

5、自定义菜单,创建和管理微信公众平台中的自定义菜单,设计如下:

 

 

6、其他,  具体根据做的实际项目来设计, 比如 用户分析、访问统计;   用户积分;  二维码相关 等等 ,  此处先不设计。

 

 

 

     以上设计中,有一些是没有设计到数据库的, 比如关键字模块中的回复消息类型、消息记录中的消息类型,  这些固定不变(由腾讯决定)的少量的单选项形式的数据,我们在具体项目中使用其他方法来实现(固定静态、配置文件、缓存等),无需设计数据库。

 

 

完整设计如下:(为了方便截图 ,我把各个模块的表拖动覆盖了)

下载脚本,如下:在数据库中创建一个名为微信(设计数据库时自己定义的)的数据库,脚本执行一下就OK,

  1 use  weixin -------微信公众平台
  2 if exists ( select *  from  sysobjects where name = 'tb_User' and xtype='U') 
  3 drop table tb_User
  4 create table  tb_User------------------------------------------------------------用户表
  5 (
  6   ID               int              primary key identity(1,1)       NOT NULL , --主键-主键
  7   InId             int              default  0                      NOT NULL , --自有系统的用户ID
  8   OpenId           varchar(150)     default ''                      NOT NULL , --微信openid
  9   Group            int              default  0                      NOT NULL , --分组ID
 10   NickName         varchar(50)      default ''                      NOT NULL , --昵称-微信
 11   CreateTime       datetime         default  getdate()              NOT NULL , --创建时间
 12   State            int              default  1                      NOT NULL , --状态-1为正常
 13   PreFirst         varchar(150)     default ''                      NOT NULL , --预留字段1
 14 );
 15 
 16 
 17 if exists ( select *  from  sysobjects where name = 'tb_Group' and xtype='U') 
 18 drop table tb_Group
 19 create table  tb_Group-----------------------------------------------------------分组表
 20 (
 21   ID               int              primary key identity(1,1)       NOT NULL , --主键-主键
 22   Name             varchar(50)      default ''                      NOT NULL , --名称-本地
 23   WeiId            int              default  0                      NOT NULL , --对应微信分组ID
 24   WeiName          varchar(50)      default ''                      NOT NULL , --微信分组名
 25   Note             varchar(100)     default ''                      NOT NULL , --备注
 26   CreateTime       datetime         default  getdate()              NOT NULL , --创建时间
 27   State            int              default  1                      NOT NULL , --状态
 28 );
 29 
 30 
 31 if exists ( select *  from  sysobjects where name = 'tb_UserData' and xtype='U') 
 32 drop table tb_UserData
 33 create table  tb_UserData--------------------------------------------------------用户资料表
 34 (
 35   ID               int              primary key identity(1,1)       NOT NULL , --主键-主键
 36   UserId           int              default  0                      NOT NULL , --用户表主键
 37   Sex              int              default  0                      NOT NULL , --性别0未知1男2女
 38   City             varchar(20)      default ''                      NOT NULL , --城市
 39   Country          varchar(30)      default ''                      NOT NULL , --国家
 40   Province         varchar(20)      default ''                      NOT NULL , --省份
 41   Language         varchar(15)      default ''                      NOT NULL , --语言
 42   HeadImgUrl       varchar(250)     default ''                      NOT NULL , --用户头像
 43   SubTime          varchar(50)      default ''                      NOT NULL , --最后次关注时间戳
 44   CreateTime       datetime         default  getdate()              NOT NULL , --创建时间
 45   State            int              default  1                      NOT NULL , --状态
 46   PreFirst         varchar(150)     default ''                      NOT NULL , --预留1
 47 );
 48 
 49 
 50 if exists ( select *  from  sysobjects where name = 'tb_Article' and xtype='U') 
 51 drop table tb_Article
 52 create table  tb_Article---------------------------------------------------------文章表
 53 (
 54   ID               int              primary key identity(1,1)       NOT NULL , --主键-主键
 55   SortId           int              default  0                      NOT NULL , --类别ID
 56   ITop             int              default  0                      NOT NULL , --置顶0不1是
 57   TopBeginTime     datetime         default  getdate()              NOT NULL , --置顶开始时间
 58   TopEndTime       datetime         default  getdate()              NOT NULL , --置顶结束时间
 59   Title            varchar(100)     default ''                      NOT NULL , --标题
 60   KeyWorld         varchar(150)     default ''                      NOT NULL , --关键字
 61   Summary          varchar(680)     default ''                      NOT NULL , --简介//680为微信文字上限左右
 62   Content          ntext            default ''                      NOT NULL , --内容
 63   Source           varchar(50)      default  '独家原创'                 NOT NULL , --来源
 64   CreateTime       datetime         default  getdate()              NOT NULL , --创建时间
 65   PublishTime      datetime         default  getdate()              NOT NULL , --发布时间
 66   AOrder           int              default  99                     NOT NULL , --排序
 67   State            int              default  1                      NOT NULL , --状态
 68   MinImg           varchar(350)     default ''                      NOT NULL , --缩略图
 69 );
 70 
 71 
 72 if exists ( select *  from  sysobjects where name = 'tb_ArtSort' and xtype='U') 
 73 drop table tb_ArtSort
 74 create table  tb_ArtSort---------------------------------------------------------文章分类表
 75 (
 76   ID               int              primary key identity(1,1)       NOT NULL , --主键-主键
 77   Name             varchar(50)      default ''                      NOT NULL , --名称
 78   ParentId         int              default  0                      NOT NULL , --父级ID
 79   IndexLevel       int              default  1                      NOT NULL , --当前级别
 80   SOrder           int              default  99                     NOT NULL , --排序
 81   State            int              default  1                      NOT NULL , --状态
 82   Note             varchar(150)     default ''                      NOT NULL , --备注
 83 );
 84 
 85 
 86 if exists ( select *  from  sysobjects where name = 'tb_KeyWord' and xtype='U') 
 87 drop table tb_KeyWord
 88 create table  tb_KeyWord---------------------------------------------------------关键字表
 89 (
 90   ID               int              primary key identity(1,1)       NOT NULL , --主键-主键
 91   Name             varchar(50)      default ''                      NOT NULL , --名称
 92   Note             varchar(250)     default ''                      NOT NULL , --备注
 93   State            int              default  1                      NOT NULL , --状态
 94   CreateTime       datetime         default  getdate()              NOT NULL , --创建时间
 95   ReType           int              default  1                      NOT NULL , --回复消息类型1为文本
 96 );
 97 
 98 
 99 if exists ( select *  from  sysobjects where name = 'tb_KeyContent' and xtype='U') 
100 drop table tb_KeyContent
101 create table  tb_KeyContent------------------------------------------------------关键字返回内容表
102 (
103   ID               int              primary key identity(1,1)       NOT NULL , --主键-主键
104   Title            varchar(150)     default ''                      NOT NULL , --标题
105   Content          varchar(700)     default ''                      NOT NULL , --内容
106   KeyId            int              default  0                      NOT NULL , --关键字ID
107   Type             int              default  1                      NOT NULL , --类型-文本图文等
108   MinImg           varchar(250)     default ''                      NOT NULL , --图片
109   ITop             int              default  0                      NOT NULL , --置顶
110   TopBeginTime     datetime         default  getdate()              NOT NULL , --置顶开始时间
111   TopEndTime       datetime         default  getdate()              NOT NULL , --置顶结束时间
112   CreateTime       datetime         default  getdate()              NOT NULL , --创建时间
113   State            int              default  1                      NOT NULL , --状态
114   Href             varchar(250)     default  '#'                    NOT NULL , --图文时点开的链接
115 );
116 
117 
118 if exists ( select *  from  sysobjects where name = 'tb_UserMsg' and xtype='U') 
119 drop table tb_UserMsg
120 create table  tb_UserMsg---------------------------------------------------------用户消息记录表
121 (
122   ID               int              primary key identity(1,1)       NOT NULL , --主键-主键
123   MsgType          int              default  1                      NOT NULL , --消息类型文本、事件
124   EventId          int              default  1                      NOT NULL , --事件ID//自定义菜单的ID
125   Content          varchar(700)     default ''                      NOT NULL , --消息内容
126   CreateTime       datetime         default  getdate()              NOT NULL , --创建时间
127   State            int              default  1                      NOT NULL , --状态
128   ReState          int              default  0                      NOT NULL , --回复状态
129   WeiMsgId         varchar(50)      default ''                      NOT NULL , --微信消息ID
130   UserId           int              default  0                      NOT NULL , --用户表主键
131 );
132 
133 
134 if exists ( select *  from  sysobjects where name = 'tb_245' and xtype='U') 
135 drop table tb_245
136 create table  tb_245-------------------------------------------------------------回复消息表
137 (
138   ID               int              primary key identity(1,1)       NOT NULL , --主键-主键
139   UserId           int              default  0                      NOT NULL , --用户表主键
140   MsgID            int              default  0                      NOT NULL , --消息表主键
141   ReType           int              default  1                      NOT NULL , --回复类型//文本图文
142   ReFrom           int              default  1                      NOT NULL , --回复点//1文章2关键词
143   ReContentId      varchar(80)      default  '0,'                   NOT NULL , --回复的内容ID串
144   CreateTime       datetime         default  getdate()              NOT NULL , --回复记录时间
145 );
146 
147 
148 if exists ( select *  from  sysobjects where name = 'tb_PersonalMenu' and xtype='U') 
149 drop table tb_PersonalMenu
150 create table  tb_PersonalMenu----------------------------------------------------自定义菜单表
151 (
152   ID               int              primary key identity(1,1)       NOT NULL , --主键-主键
153   Name             varchar(50)      default ''                      NOT NULL , --名称
154   Type             int              default  1                      NOT NULL , --类型1click2view
155   ParentId         int              default  0                      NOT NULL , --父级ID
156   IndexLevel       int              default  1                      NOT NULL , --当前级别
157   LinkUrl          varchar(350)     default  '#'                    NOT NULL , --链接地址view时用
158   CreateTime       datetime         default  getdate()              NOT NULL , --创建时间
159   POrder           int              default  99                     NOT NULL , --排序
160   State            int              default  1                      NOT NULL , --状态
161   Note             varchar(150)     default ''                      NOT NULL , --备注
162 );
View Code

 

    第一步数据库设计就到这里结束了, 后续开始项目的代码旅程...


转自:http://www.cnblogs.com/mochen/p/3645372

相关问答

更多
  • 能使用的!微信 在安卓手机里可以使用,安装是用java 开发的,所以 可以用java开发
  • 首先订阅号要通过微信认证才可以成为拥有自定义菜单不通过验证成为开发者也无法获得自定义菜单其次成为开发者要有个能够公网访问的URL也就是通常使用的网址现常用的有新浪的sae平台或者百度的开发者平台然后在该网.址下部署微信提供的接口文件修改接口文件中的token然后在token一栏中填写修改过后的token即可。‘动拇指’的团队做的,需要的话可以问.问去
  • 微信公众平台开发注意事项: 一、微信公众平台开发是指为微信公众号进行业务开发,为移动应用、PC端网站、公众号第三方平台(为各行各业公众号运营者提供服务)的开发,请前往微信开放平台接入。 二、在申请到认证公众号之前,你可以先通过测试号申请系统,快速申请一个接口测试号,立即开始接口测试开发。 三、在开发过程中,可以使用接口调试工具来在线调试某些接口。 四、每个接口都有每日接口调用频次限制,可以在公众平台官网-开发者中心处查看具体频次。 五、在开发出现问题时,可以通过接口调用的返回码,以及报警排查指引(在公众平台 ...
  • 小猪cms还凑合,,有源码的 ,每周更新两三个模板的 ,你可以看下 ,,
  • 登录微信公众平台,点击左下角的 开发者工具,即可看到相关文档。
  • 微网站开发模式教程:   第一步:申请消息接口   在公众平台网站的高级功能 – 开发模式页,点击“成为开发者”按钮,填写URL和Token,其中URL是开发者用来接收微信服务器数据的接口URL。Token可由开发者可以任意填写,用作生成签名。   第二步:验证URL有效性   开发者提交信息后,微信服务器将发送GET请求到填写的URL上,GET请求携带四个参数:   开发者通过检验signature对请求进行校验。若确认此次GET请求来自微信服务器,请原样返回 echostr参数内容,则接入生效,成为开发 ...
  • 有很多不错的,我们的工程师有多年开发经验。
  • 不是仿,是直接登录到微信公众平台,但是没有通过他们的登录界面登录进去,而是用程序提交用户名密码登录进去,然后进行相关操作,往相关接口提交数据
  • 这个需要根据你找什么样的开发商,然后开发什么样的功能,如果是该需要对接你们系统之类的功能比较复杂,有几千的,也有好几万的,这个看你的需求
  • 微信公众平台的开发价格取决于功能和具体的外包公司,不同的地域价格也会略有差异。 我们给客户做的微信有30000元的也有10000多元的。 建议先把微信开发的需求整理好,然后多找几家公司进行报价。综合对比来选择。