升訊威微信營銷系統(微信第三方平臺) 線上體驗:http://wxcm.eeipo.cn/開源地址:https://github.com/iccb1013/Sheng.WeixinConstruction說明:有問題上QQ群交流 QQ群:173459027 作者最初的期望是實現一個微信雲平臺,類似於 ...
升訊威微信營銷系統(微信第三方平臺)
線上體驗:http://wxcm.eeipo.cn/
開源地址:https://github.com/iccb1013/Sheng.WeixinConstruction
說明:有問題上QQ群交流
QQ群:173459027
作者最初的期望是實現一個微信雲平臺,類似於微盟,只需要商家掃碼綁定即可提供整套的營銷功能。
我的定位是專門服務於線下商家,例如電影院、商業中心、各類線下門店等,線下商家的一些業務場景和業務流程是比較特殊的,和純現上的公眾號運營不盡相同。 這是我最初想找到的切入點,在系統初步上線後,自己也試著做了推廣,包括百度關鍵詞、線下陌拜都嘗試過,這些細節有機會我會再詳細說一說。
本項目開源了全部工程和代碼,可直接編譯後進行部署運行。
微信第三方平臺的部署方法是需要先註冊微信開放平臺,然後申請第三方應用,經過審核和介面聯調確認,就可以使用了。
本微信第三方平臺包括了以下功能:
【吸粉】
投票、定期抽獎、聚人氣抽獎、搖一搖抽獎、粉絲海報、1元奪寶、發紅包、線上捐款 等
【持續變現】
微官網、微會員、積分商城、卡券、微信支付、分類信息、電影排片 等
【管理考核】
電腦手機雙後臺、營銷二維碼、後臺用戶管理、操作日誌 等備註:
一、功能設計
1)設計目標
◇ 為微信服務號提供運營及管理所需的各種功能,包括微官網、微會員、活動中心、營銷輔助、微信支付。
◇ 提供簡潔友好的功能畫面,使非專業技術人員也能夠輕易的使用。
◇ 提供可獨立於系統之外的插件功能或介面,可輕易對接其它系統或功能模塊。
2)詳細設計
如圖,功能的設計從業務上劃分,分為五大塊:
◇ 微官網
微主頁提供若幹預置的模版,可以通過上傳自定義的主題圖片形成自己的微主頁,對於有一定開發能力的使用者,提供模版引擎功能,使用一個類似於輕量級CMS的功能,定製自己的微主頁。
電影排片需要寫一個蜘蛛程式進行抓取。
◇ 微會員
需要實現一套積分系統,包括在後臺對積分規則的設定。積分商城與大多數商城系統類似。
卡券功能需要支持後臺派發和前端線上下通過二維碼核銷,這一塊與微信原生卡券有一個重要區別,在於領取的方式,微信原生卡券主要是自主領取,比如掃碼、分享等,但是對於部分線下商戶,卡券的派發是要嚴格管控的,比如電影院的兌換券、景點的門票等,這種場景目前微信自帶卡券不能實現。
◇ 活動中心
必須將所有的活動全部模版化,使用戶能夠簡單配置就發起活動,併在活動進行的過程中提供運營數據報表。
◇ 微信支付
除了打通微信支付以外,需要提供線下的充值和消費能力,比如會員直接線上下向服務人員現金充值,或線下購物時刷二維碼消費自己預存的現金,這裡實際上意味著需要實現一套比較完整的消費系統。
◇ 營銷輔助
能夠提供各種運營數據,並提供郵件通知、簡訊通知的能力。
二、架構設計
1)設計目標
◇ 穩定可靠,低耦合高內聚,可維護性強。
穩定可靠主要取決於設計及編碼水平,這個無需多解釋。低耦合高內聚應該也是大家都瞭解的原則,為了實現這個目標,項目會按功能模塊進行拆分和抽象,具體拆分方式請見下文的詳細設計。
◇ 易水平擴展,易運維。
將高頻請求的部分和低頻請求的部分分解,將內網請求與外網請求分解,可分散式部署,將內網請求部分完全隔離在防火牆之後或內網環境中,並使對外的高頻請求的部分可通過增加伺服器來增加承載能力。在設計之初就需要考慮負載均衡及CDN分發所帶來的問題,在負載均衡方面,我們以負載均衡不開啟會話保持為設計指標,此外,我們需要將所有用戶上傳的文件,或發送的文件,在獨立的文件伺服器存儲,以便於CDN分發和控制流量及帶寬,要知道伺服器的流量及帶寬費用是相當可觀的,同時也避免文件傳輸對伺服器帶寬的占用而影響業務數據的處理能力。
◇ 所選技術應用成熟,生產性(開發維護的效率)高,編碼實施難度較低,後續開發容易。
在具體的技術選型上,選擇成熟穩定的技術方案,而不是“牛”的方案,這一點非常重要,因為我們不是在做研究,我們是在做項目。或者從另一個角度來說,你對技術“牛”和“不牛”是怎樣理解的。在此項目中我們考量以下幾個因素:
a.是否成熟穩定,後續支持怎樣。成熟穩定通常代表著問題較少,團隊學習成本低,接納度高,後續支持指的是是否有商業公司或開源社區積極的維護更新。
b.生產性怎樣,是否可以提供足夠高的生產性。生產性指的是開發維護的效率,軟體開發過程中最大的成本是人力成本,如何用更少的人做到更多的事,甚至說在市場競爭中你的速度快不快,都相當重要,對於商業項目,我不需要你知道回香豆的“回”有幾種寫法,我只要你又快又好的給我寫一百遍“回”字即可。
能解決我的問題,成熟穩定,生產性高,可以稱之為“牛”的技術。
◇ 資料庫必須支持分庫存儲
基於承載能力擴展性和業務方面的考量,必須要能夠將不同的公眾號數據存儲到不同的資料庫伺服器上。
2)詳細設計
架構設計我想分為兩個部分說明,一是開發架構,二是部署架構。這兩個不同角度的設計互相影響或者互相制約,必須在設計期間就把握好大方向,做好這件事情需要設計者除了懂開發,還要懂運維,否則很容易造成前人挖坑後人填坑。
1.開發架構
註意圖上的一個矩形模塊並不一定就代表著一個程式集,一個邏輯上的“模塊”可能由多個程式集共同構成。
從上向下簡單分析,首先是管理端的UI層和手機端的UI層,我習慣將之稱為Shell。從圖上可以看到管理端Shell和手機端Shell是分開的兩個模塊,在我們的解決方案中它們是兩個不同的工程,我也看到過一些微信項目將管理端和手機端放在一個工程中,無論是從安全性、可維護性上說我都強烈不建議你這麼做。完全分開的好處有很多,首先是部署成本,管理端一般情況下是不需要應對大量請求的,而手機端有這個需求,在部署時管理端甚至只需一臺伺服器即可,而手機端則需要更多的伺服器和帶寬支撐,另外在工程的前期運維階段,管理端的版本發佈頻率可能高於手機端,完全隔離的開發和部署可以避免在發佈管理端時影響到手機端的業務,第二是安全性的問題,手機端從工程上就是完全不包含任何管理功能的,可以在一定程式上提高安全性。
接下來是若幹輔助服務,報表服務、文件服務,這兩個服務是獨立的Web工程。和管理端或手機端並不是一一對應的關係,一個報表伺服器或文件伺服器可以為多台管理端或手機端Shell提供服務。
報表伺服器直接提供報表查詢和顯示的畫面,嵌入在管理端中。
文件伺服器提供文件上傳下載功能,這個服務有幾個技術細節需要註意,聰明的你或許已經想到第一個問題:跨域上傳的問題。管理端和手機端都是獨立部署的,所使用的功能變數名稱自然是不同的,那麼在瀏覽器中上傳就存在跨域的問題,不過這個問題並不難解決,我將的後續篇章中介紹,另一個就是對於(嵌入在微信中的)手機端來說,是不能直接上傳文件的,必須先把文件發送到微信後臺,獲取媒體ID,再下載下來,這個過程需要文件伺服器完成,最後是關註服務號的會員,發文件到服務號上,實際是發到了微信伺服器,我們的文件伺服器要能非同步的把這些文件從微信後臺下載下來。
定時任務是一個或若幹個Windows服務,用於定時執行一些業務。
業務核心模塊這裡的介紹比較籠統,在項目中實際對應著實現不同功能的諸多程式集,限於篇幅和本章節的主旨,還是留到後文中詳細說明業務核心的設計和實現。
中控伺服器主要的功能是維護調用微信API所需的AccessToken,與微信對接時,根據公眾號的AppId和AppSecert,你可以獲取到一個有效期為2個小時的AccessToken,調用幾乎所有的微信介面都需要這個 AccessToken,當然你不能在每次請求API時都獲取一個新的AccessToken,這是完全沒有必要的,所以需要一個獨立的服務來處理這件事,其它模塊需要使用AccessToken時,從中控伺服器獲取。
微信SDK並不是微信官方提供的,是項目里需要自己實現的部分,微信官方並沒有提供完善的開發包,只有若幹示例。網上有一些開源的微信SDK,但是或多或少存在一些問題,此處使用的是我們自己實現的SDK包。
基礎架構部分涉及到數據實體的定義、數據協議的定義等等,數據協議指的是各Web工程之間以前單個Web工程中前後端通信所使用的協議。此外還包括許多共通的功能實現也在這裡。
服務模塊封裝了項目中所需的許多服務,如:日誌、緩存、統一異常處理等等。
最後是數據層,數據層沒有使用Entity Framework,使用的是我的另一個開源項目S-ORM,下文的技術選型部分有簡略的說明和介紹。
2. 部署架構
功能清單:
微官網 |
運營數據 |
可以按時段統計實時運營數據,如各項關註指標,積分訂單數據等。 |
微主頁 |
可以通過模塊版自定義微主頁的樣式和功能,也可以完全通過代碼自定義,方便修改調整。 |
|
公眾號菜單 |
與微信官方的菜單管理功能打通,在平臺中管理髮布菜單。 |
|
快捷菜單 |
在微信端打開的頁面上,懸浮一個快捷菜單,作為公眾號菜單的補充。 |
|
分類信息 |
自定義顯示各項分類信息供粉絲查詢,如樓層導購,產品信息,導購員信息等等。 |
|
自定義頁面 |
自定義 H5 頁面實時發佈到微信端。 |
|
自定義表單 |
自定義表單供粉絲填寫,可用於收集粉絲信息等。 |
|
微會員
|
會員管理 |
與微信官方後臺的會員數據聯動,併在此基礎之上,實現積分管理,現金餘額管理,會員卡管理,等等一系列 CRM 相關功能。 |
群發功能 |
與微信官方的信息群發打通,在此基礎之上,可以與平臺中的會員管理進行聯動,可以根據平臺會員進行有針對性的篩選和定向的發送。 |
|
積分商城 |
一個完整的積分商城功能,支持積分購買、現金購買、積分加現金購買多種方式。 所購商品可以線上下實時核銷。 |
|
卡券 |
電子卡券功能,可在後臺根據需要製作不同功能、類型的電子卡券,派發給會員。會員線上下通過展示卡券的二維碼進行核銷。可製作現金券,代金券,禮品券等等。 本卡券功能完全為線下場景設計,會員出示二維碼,工作人員線下掃碼核銷。 |
|
會員多級推廣 |
為會員生成一個專屬的推廣鏈接,引導會員分享,通過此鏈接引流的新會員,可為老會員獎勵積分。 |
|
活動中心 |
投票 |
在後臺實時發起各類主題的投票活動,可以配置活動的規則,會員參與活動、轉發,都可以獎勵積。 |
|
粉絲海報 |
在後臺發起粉絲海報活動後,上傳一張背景圖片,會員訪問活動頁面後,可自動生成一張帶有會員頭像和二維碼的海報圖片,粉絲轉發此圖片後,其它人掃描此二維碼可落地到指定的營銷頁面,並給會員獎勵積分。 |
定期抽獎 |
定期抽獎可根據周期(如一天、一周等),滾動的讓會員來營銷頁面報名,併在指定的周期結束時,自動開獎。會員轉發活動頁面也可獎勵積分。 |
|
聚人氣抽獎 |
會員訪問營銷頁面時,可自動獲得一個抽獎碼。引導他把活動頁面進行轉發,分享,他的好友點 |
|
|
擊訪問之後,會獎勵他一個新的抽獎碼,引流的人數越多,抽獎碼越多,管理人員可在一定時間後,手工開獎。 |
|
搖一搖抽獎 |
通過手機的搖一搖功能,進行抽獎。在後臺配置好活動周期,獎品,中獎概率後,引導會員訪問營銷頁面,搖動手機進行抽獎。 |
|
線上捐款 |
與微信支付聯動,可發起各類不同的捐款活動,會員可在營銷頁面上直接使用微信支付捐款。 |
|
微信支付 |
1 元奪寶 |
與微信支付聯動,發起 1 元奪寶活動。 |
設置 |
基本設置 |
|
|
會員卡級別 |
可以自定義不同的會員卡級別,金卡、銀卡等,併為會員分配不同的會員卡。所有的會員都會有一個唯一且固定的會員卡號。 |
自動回覆 |
與微信官方的自動回覆聯動,可根據規則配置,自動為會員回覆各類信息。 |
|
場景二維碼 |
場景二維碼與公眾號自帶二維碼功能一致,都是掃碼關註,但是場景二維碼可以實現對粉絲來源的統計,知道粉絲是掃哪個二維碼關註的公眾號,對於地推或不同渠道的推廣來說,可以知道各渠道的引流效果。 |
|
素材管理 |
與微信官方後臺素材管理聯動,管理各類型不同的圖文素材。 |
|
增強圖文素材 |
與微信原有圖文素材相比,可以實現粉絲轉發獎勵積分的功能。 |
|
廣告 |
可以自定義圖片廣告,並顯示在微信平臺相關頁面上,可以統計各廣告的展示,點擊次數,分析營銷效果。 |
|
系統 |
用戶管理 |
後臺用戶管理功能,並支持將用戶綁定到微信,直接在微信端使用微信版後臺。 |
|
個人信息 |
後臺用戶的個人信息維護。 |
|
修改密碼 |
所有密碼使用 MD5 加密傳輸及存儲。 |
|
操作日誌 |
記錄系統中的所有操作情況。 |
更新日誌:
微分銷模塊功能(20180801)
一、後臺:
1、增加渠道管理;
2、增加返傭清單;
3、修改訂單詳情,添加返傭詳情;
4、添加查看下級功能;
5、添加審核渠道人員入口;
6、後臺提供改價功能(解決部分地區有優惠的場景)
7、解決返傭是按照特點價格(例如扣除評測中心部分)
8、微主頁擴展“我的分銷Url” {{#DCCenterUrl}}標簽
二、前端:
1、增加“我的分銷”頁面:實現分銷相關的信息顯示和入口(我的返傭、我的下級、推廣海報、我的推廣碼、)
2、增加“我的返傭”頁面;
3、增加“我的下級”頁面;