開發(fā)微信公眾平臺(tái)之前,先去微信官方了解下大概的情況 這里:http://mp.weixin.QQ.com/wiki/index.php;看了之后心里大致有數(shù)了,開始設(shè)計(jì)數(shù)據(jù)庫(kù),盡可能的考慮,未考慮到的,以后再補(bǔ)充。
1、首先是用戶部分,根據(jù)微信官方的接口結(jié)合實(shí)際運(yùn)用,用戶部分有3個(gè)表:用戶表、用戶資料表、用戶分組表,我設(shè)計(jì)的如下:
2、用戶設(shè)計(jì)好之后就是文章部分,包括:文章分類表、文章表, 設(shè)計(jì)如下:
3、有了用戶相關(guān)的表我們可以保存用戶,有了文章模塊的表我們可以根據(jù)用戶輸入的信息查詢文章進(jìn)行返回(返回文本、圖文、圖片、音樂、視頻、語(yǔ)音等等),但是實(shí)際運(yùn)用中,我們存在需要指定特定的關(guān)鍵字返回特定的內(nèi)容的情況,那么就需要專門的特定關(guān)鍵字模塊, 包括:關(guān)鍵字表、關(guān)鍵字返回的內(nèi)容表, 這里的內(nèi)容表看著像是與上面的文章表有重合,實(shí)則不然, 這里是特定關(guān)鍵字指定的回復(fù)內(nèi)容,可以指定返回文本、圖文或其他多媒體信息,當(dāng)返回多媒體信息時(shí)內(nèi)容中存入文件地址, 上面的文章表是標(biāo)準(zhǔn)的通用的文章內(nèi)容表, 供用戶查詢多數(shù)情況下直接返回圖文信息,且圖文信息點(diǎn)擊鏈接時(shí)就是這篇文章對(duì)應(yīng)的展示地址, 相當(dāng)于一個(gè)微網(wǎng)站, 所以文章和這個(gè)關(guān)鍵字的內(nèi)容表分開設(shè)計(jì)更加方便管理。 設(shè)計(jì)如下:
4、消息記錄, 把用戶發(fā)來的消息進(jìn)行記錄,方便后續(xù)處理, 比如 根據(jù)用戶上次發(fā)來的事件消息,之后再發(fā)同一個(gè)關(guān)鍵詞時(shí),返回對(duì)應(yīng)菜單下的內(nèi)容,而不用用戶每次發(fā)送消息都帶對(duì)應(yīng)的菜單選項(xiàng);客服消息根據(jù)記錄的信息做個(gè)性化的服務(wù) 等等。 包括:用戶發(fā)來的消息記錄表、回復(fù)給用戶的消息記錄表 ,有了這些可以完整的還原和用戶的對(duì)話,這里是記錄和用戶交流的過程,具體用戶發(fā)來的消息需要返回什么樣的消息,由項(xiàng)目代碼中業(yè)務(wù)決定。 設(shè)計(jì)如下:
5、自定義菜單,創(chuàng)建和管理微信公眾平臺(tái)中的自定義菜單,設(shè)計(jì)如下:
6、其他, 具體根據(jù)做的實(shí)際項(xiàng)目來設(shè)計(jì), 比如 用戶分析、訪問統(tǒng)計(jì); 用戶積分; 二維碼相關(guān) 等等 , 此處先不設(shè)計(jì)。
以上設(shè)計(jì)中,有一些是沒有設(shè)計(jì)到數(shù)據(jù)庫(kù)的, 比如關(guān)鍵字模塊中的回復(fù)消息類型、消息記錄中的消息類型, 這些固定不變(由騰訊決定)的少量的單選項(xiàng)形式的數(shù)據(jù),我們?cè)诰唧w項(xiàng)目中使用其他方法來實(shí)現(xiàn)(固定靜態(tài)、配置文件、緩存等),無需設(shè)計(jì)數(shù)據(jù)庫(kù)。
完整設(shè)計(jì)如下:(為了方便截圖 ,我把各個(gè)模塊的表拖動(dòng)覆蓋了)
下載腳本,如下:在數(shù)據(jù)庫(kù)中創(chuàng)建一個(gè)名為微信(設(shè)計(jì)數(shù)據(jù)庫(kù)時(shí)自己定義的)的數(shù)據(jù)庫(kù),腳本執(zhí)行一下就OK,
1 use weixin -------微信公眾平臺(tái) 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 , --自有系統(tǒng)的用戶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 , --創(chuàng)建時(shí)間 12 State int default 1 NOT NULL , --狀態(tài)-1為正常 13 PreFirst varchar(150) default '' NOT NULL , --預(yù)留字段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 , --對(duì)應(yīng)微信分組ID 24 WeiName varchar(50) default '' NOT NULL , --微信分組名 25 Note varchar(100) default '' NOT NULL , --備注 26 CreateTime datetime default getdate() NOT NULL , --創(chuàng)建時(shí)間 27 State int default 1 NOT NULL , --狀態(tài) 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 , --國(guó)家 40 Province varchar(20) default '' NOT NULL , --省份 41 Language varchar(15) default '' NOT NULL , --語(yǔ)言 42 HeadImgUrl varchar(250) default '' NOT NULL , --用戶頭像 43 SubTime varchar(50) default '' NOT NULL , --最后次關(guān)注時(shí)間戳 44 CreateTime datetime default getdate() NOT NULL , --創(chuàng)建時(shí)間 45 State int default 1 NOT NULL , --狀態(tài) 46 PreFirst varchar(150) default '' NOT NULL , --預(yù)留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 , --置頂開始時(shí)間 58 TopEndTime datetime default getdate() NOT NULL , --置頂結(jié)束時(shí)間 59 Title varchar(100) default '' NOT NULL , --標(biāo)題 60 KeyWorld varchar(150) default '' NOT NULL , --關(guān)鍵字 61 Summary varchar(680) default '' NOT NULL , --簡(jiǎn)介//680為微信文字上限左右 62 Content ntext default '' NOT NULL , --內(nèi)容 63 Source varchar(50) default '獨(dú)家原創(chuàng)' NOT NULL , --來源 64 CreateTime datetime default getdate() NOT NULL , --創(chuàng)建時(shí)間 65 PublishTime datetime default getdate() NOT NULL , --發(fā)布時(shí)間 66 AOrder int default 99 NOT NULL , --排序 67 State int default 1 NOT NULL , --狀態(tài) 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 , --父級(jí)ID 79 IndexLevel int default 1 NOT NULL , --當(dāng)前級(jí)別 80 SOrder int default 99 NOT NULL , --排序 81 State int default 1 NOT NULL , --狀態(tài) 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---------------------------------------------------------關(guān)鍵字表 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 , --狀態(tài) 94 CreateTime datetime
新聞熱點(diǎn)
疑難解答
圖片精選