Django之路 - 項目實戰之<教育行業CRM開發>

本節內容

業務痛點分析

項目需求討論

使用場景分析

表結構設計

業務痛點分析

 我2013年剛加入老男孩教育的時候,學校就一間教室,2個招生老師,招了學生後,招生老師就在自己的excel表裏記錄一下,每月算工資時,就按這個表來統計招生提成, 後來學校大了點,教室變成了3間,招生老師變成了4個人,招的學生也開始多了起來,不過大家依然是招了學生就紀錄在自己的excel裏,但問題開始出現了,我們的招生多是通過網絡qq聊天在線諮詢,好多客戶需要聊很久才能轉化成學員,經常會出現一個客戶跟一個招生老師聊過後,過了一段時間卻在另一個招生老師那報名了。 於是爭執就出現了,A銷售說這個人是先找我諮詢的,我幫他回答了大多數問題,報名提成卻算成B的,不公平。B銷售也會講,這個客戶找他諮詢時並未說自己之前跟其它銷售聊過呀,所以對B來講,這就是個新客戶呀,並且是在B這報的名, 憑什麼要分提成給A呀。爲了解決這個問題,於是想出一個辦法,搞了一個機器做共享服務器,共享服務器上搞了個統一的客戶信息excel表,大家每人聊過的客戶都在這個表裏紀錄, 這樣每個人錄入前,先在表格裏全局查一下,這個客戶的qq號是不是已經在表裏了,這樣就能避免衝突了。 但用過共享文件的應該都遇到過一個問題就是,爲保證數據一致性,同一時間系統只允許一個用戶修改數據, 但我們的每個招生老師一上班,就會打開這個共享文件,隨時聊的學生,隨時會錄入到表裏。但這個限制使的大家,只要一有人錄入信息,就得要求其它銷售人員都把文件先關閉,錄入信息後其它人才能再用,這搞的大家很難受。  所以銷售人員經常讓我幫開發個系統,可以解決一些類似這樣的問題。

 另外, 我們在講課時, 爲了保證和檢驗學員的學習效果, 每節課講完時都會給學生部置一個作業,要求他必須在下節上課前完成並提交作業,老師會給學員統一批作業,作業成績也紀錄在excel表中,就像下圖一樣。每個老師維護自己班級的作業,校長如果想看各個班級的成績,還要跟每個老師要學員成績表,很不方便, 當時校長就跟我講,學員的成績\出勤情況等要是也能統一管理就好了。

wKioL1jaVauRoQPrAADeBdeS2r4274.png-wh_50

於是我心裏也一直紀着這個事,想幫學校開發一個學員開發一個類似CRM(客戶關係管理軟件)的系統,集銷售管理\學員管理等功能於一體。但平常要上班,周未還要講課,一直沒時間,終於有一次,我要去美帝度假,飛機要飛13個小時纔到紐約,在飛機上突然想,反正也是沒事幹, 不如就開發這個東西吧, 於是一路未眠,狂寫了近千行代碼,飛機的上的美女空乘都心疼的多給我倒了2杯咖啡,哈哈,下飛機時,已是兩眼痛紅,不過,這個學員管理系統的雛形也做出來了,接下來幾天在紐約又完善了下細節,於是就開始上線讓大家用了。到現在,這個系統在公司已經用了一年多了,大家每天都在使用,之前的痛點都解決了,特別是銷售人員, 工作已經離不開這個系統了,自己做的東西幫別人解決具體問題,心裏還是蠻開森的!


個人覺得這個學員管理系統的挺適合新手練習的,難度適中,用戶的知識點也比較綜合,所以把學校裏的系統簡化了一下,提練成了一個教學項目,下面我們就一起來做一個嘍。


噢,對了,最後說一下這個項目涉及到的知識點,請確保你以充分掌握了下面所列知識點再學習此項目噢!

Django

JQuery

BootStrap

Ajax

HTMS\\CSS

項目需求討論

首先給我們的項目起個名字吧,這個系統要同時支持銷售管理\學員管理\講師管理等功能,功能比較雜,不能稱之爲嚴格意上的CRM,因爲CRM一般只包括銷售管理,but anyway, who cares,我們就叫它”老男孩crm管理系統”吧,

 起好了名字,開始動手寫之前, 肯定要把需求想清楚,需求想不清楚就開始寫的話,等於給自己挖坑,你肯定不想出現寫了5千行代碼後,突然發現,需求搞錯了,還要重新推到重來的事情吧。所以,現在靜下心,把需求想明白,畫好思維導圖,跟同事多討論應用場景,做了各方面論證後,再開始動工噢。

 我們的系統的用戶分3種,銷售\學生\講師,這3個角色關注的事情是不同的, 銷售只關注招了多少學員,講師關注自己管理的班級學習成績怎樣,學員只關注自己的學習成績。 因此在想需求時,你要從每個角色出發,看他關心的是什麼, 於是我畫出了這個思維導圖


 wKiom1jaVduj0QjPAAEqUZjwLpE984.png-wh_50


根據思維導圖,我們總結出以下具體需求:

把用戶分爲銷售\學員\講師3種角色,每個角色關心的事情不同,所以有要不同的用戶視圖,即銷售人員登陸後只需要看他與他工作相關的就可以,講師關心的事情不需要在銷售視圖裏顯示

銷售人員可以錄入客戶信息,和後續跟進信息,因爲一個客戶可能要跟進好幾次纔會報名。 可以多種條件過濾查詢用戶,可以查看自己的銷售業績報表

學員主要2個功能,查詢成績\提交作業

講師的主要功能是管理班級\\ 批作業\上課點名

雖然現在只有一個校區,但要考慮到以後的擴展,以後全國可能有好多個校區,不同校區之間的數據應該是隔離的

這個系統裏存放着大量的客戶信息\學員數據等,都是公司的機密信息,設計系統時就要考慮到權限問題,不同的角色要有不同的權限,同一角色的不同用戶也要允許有不同的權限

使用場景分析

爲了更加理清我們的項目開發需求,在動手寫代碼前,建議再有一個業務場景分析的步驟,即從用戶角度寫出你使用這個項目的具體場景,我們這裏分爲銷售、講師、學員3個角色,我分別給每個角色列出了幾個使用場景:

一. 銷售:

銷售人員張三剛通過qq羣聊了一個客戶,諮詢了"Python全棧開發課程",錄入了CRM

張三 回訪了一個 一個月多前諮詢的老客戶,老客戶說最近考慮報名,讓張三 下週聯繫他辦報名手續, 張三把這個回訪信息 錄入了crm

李四 今天錄入了8個新客戶,但發現有一個客戶在錄入時,系統提示,此客戶信息已存在,於是就在客戶庫查了一下,發現 此客戶 已被  張 三  在上週錄入了,銷售部有規定,在客戶被錄入一個月內,其它銷售是不能搶這個單的,於是就提醒張三,讓他跟這個客戶主動再跟進一下

李四今天 有一個客戶要報名,李四給客戶發了在線報名 鏈接,要求其填寫一些個人信息,上傳證件照片等,交了500報名費後,將其正式添加到了報名的 班級裏

銷售主管 BigSB  查看了今天的銷售報表, 查看了每個銷售的最近一週 諮詢的客戶量,成單比, 每個課程 分別 報名了多少學員, 這些客戶 都是從哪些渠道 過來的

二. 講師:

講師Alex 今天 要給 Python自動化 周未班上課, 上課前要進行點名, 於是創建了一條生課紀錄 ,這條上課記錄關聯 着每個學員 這節課的 出勤狀態,alex 邊點名邊在系統 中紀錄每個學員的狀態 ,簽到、遲到或缺勤。

今天的課上完後,ALEX給大家留了作業,在系統 裏 找到今天 的上課記錄,把作業 需求 寫到了 上課紀錄 裏

過了一週, Alex 登錄 系統 下載了所有學員這節課的作業 , 爲每個學員批改了作業 並將學員的成績紀錄在了系統 裏

三. 學員:

學員小明 報名了“Go語言開發課程第2期周未班”, 交完報名費後,招生老師 給他發了一個報名地址 要求其填寫,填寫了個人信息 並上傳了證件信息, 提交後, 過了一會,就發現自己的qq郵箱裏收到了一封 老男孩學校的郵件, 告知他 已爲其 生成了 學員賬號,他按照郵件 提示 登錄 了 老男孩的學員系統 ,看到系統 中可以  進入自己的班級,不過現在班級裏 還沒有上課紀錄, 他還能在線查看 他的學員合同

過了一週, 正式上課了,上了一天課,講師Alex佈置了作業 , 小明過了幾天 完成 作業後,登錄 學員管理系統 , 發現有一條 自己的上課記錄, 他點進去,看到了當節課的 作業 需求,及提交作業的方式 ,他只需要把作業 打包成.zip格式 ,直接拖拽到頁面上的交作業區就可以了。

過了兩天, 小明收到郵件提醒 ,說自己作業 得了個A,非常 的開森。

小明學了幾個月好,發現老男孩講師講的好,自己學的也不錯,於是極力推薦自己的2個朋友也來學習, 於是在自己的學員系統 裏錄入了2條推薦朋友學習的信息, 沒過一會, 小明之前的招生老師就聯繫他說,已經收到他的推薦名單,很快就會聯繫 小明的朋友 。 

 好啦, 業務場景也分析完了,接下來我們終於可以開始搞事情啦!

 

表結構設計

在設計表結構前,咱們先創建好一個項目吧,項目名就叫PerfectCRM,app名叫crm

wKiom1jaVh7C8d_9AAEeZ3QebwM015.png-wh_50


 我這裏先列出來我們大體需要的表,爾等先過目一下,然後我們再分別爲什麼需要每個具體的表,及這個表裏要存什麼樣的數據

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

from django.db import models

 

# Create your models here.

 

 

class Customer(models.Model):

    '''存儲所有客戶信息'''

    pass

 

class Enrollment(models.Model):

    '''存儲已報名學員的信息'''

    pass

 

class CustomerFollowUp(models.Model):

    '''存儲客戶的後續跟進信息'''

    pass

 

class ClassList(models.Model):

    '''存儲班級信息'''

    pass

 

class Course(models.Model):

    '''存儲所開設課程的信息'''

    pass

 

class CourseRecord(models.Model):

    '''存儲各班級的上課記錄'''

    pass

 

class StudyRecord(models.Model):

    '''存儲所有學員的詳細的學習成績情況'''

    pass

 

class UserProfile(models.Model):

    '''存儲所有講師\銷售人員\\ 學員 用戶信息'''

    pass

 

 

class Role(models.Model):

    '''角色信息'''

    pass

 

class Branch(models.Model):

    '''存儲所有校區'''

    pass

 

接下來分別解釋每張表

1. Customer表, 主要給銷售人員用, 存儲所有客戶信息,裏面要記錄客戶來源\姓名\qq \客戶來源\諮詢的內容等 

 Customer

2. 學員報名表,這裏爲什麼要把客戶信息表 和 這個學員報名表分開呢? 因內一個學員可以報多個課程 ,每個課程 都需要單獨記錄學習成績呀什麼的,所以每報一個課程 ,就在這裏生成 一條相應的報名記錄

 Enrollment

3. 客戶跟進表,這張表的意義很容易理解, 一個客戶今天諮詢後,你錄入到了客戶信息表,但他沒報名, 所以過了一段時間,銷售還得再跟他聊聊吧,聊完後,結果又沒報,那也得紀錄下來吧,因爲每個銷售每天要聊很多人,你不紀錄的話, 可能下次再跟這個人聊時,你早已忘記上次聊了什麼了, 這樣會讓客戶覺得這個銷售不專業,相反,如果把每次跟進的內容都紀錄下來, 過了幾個月,這個客戶再跟你聊時,竟然發現,你還記得他的所有情況,他就覺得你很重視他,說不定一感動就報名了,哈哈。 所以,一條客戶信息可能會對應多條跟進記錄,是個1對多的關係,必須單獨搞張表來記錄

 CustomerFollowUp

4. 班級表, 學生以班級爲單位管理,這個表被學員表反向關聯, 即每個學員報名時需要選擇班級

 ClassList

5. 課程表,存儲課程介紹\大綱等基本信息

 Course

6. 上課紀錄表,每個班級都要上很多次課,講師每上一次課的紀錄都要紀錄下來,以後可以方便統計講師工資什麼的

 CourseRecord

7. 學員學習紀錄表,思考一下,如果你想實現紀錄每位學員的詳細學習紀錄,即精確到每節課的成績\出勤情況,怎麼辦?其實很簡單, 先來看一下此時班級\上課紀錄\學員學習紀錄的關係圖:

wKiom1jaVk6Re1vTAAB5QNITODk977.png-wh_50



 StudyRecord

可以看出,一個班級對應多節課,每節課又對應多個學生的出勤和成績,我們已經通過班級表(”ClassList”)和上課紀錄表(”CourseRecord”)存儲了班級信息和每節上課紀錄,想存學生的每節課學習紀錄的話只需要再搞一個表就可以了。

 

8. 用戶表,存儲銷售、講師賬戶信息

這裏我們用django自帶的認證系統,並對其進行自定製

 UserProfile

9. 角色表,用於角色劃分,用於權限管理,權限功能我們後面會實現,這裏只在表裏先存個簡單的角色名

 Role 

10. 校區表,存儲不同校區

 Branch

11. 菜單表,不同的角色看到的菜單不同, 我們支持動態菜單 ,所以需要把菜單 以及 和角色的關聯存下來

 FirstLayerMenu

12. 二級菜單表, 還可以支持2級子菜單

 SubMenu

13. 繳費記錄

 PaymentRecord

好啦,表基本都建完了,接下來同步數據庫,不過在同步數據庫前,要改一下settings.py, 因爲我們自定義了django的認證表,所以需要明確的告訴django,用我們改過的過來做默認的認證系統。

在settings.py中添加以下行,格式爲 app.modelname 


1

AUTH_USER_MODEL = 'crm.UserProfile'

  

最後一步,同步數據庫! 

1

2

python3 manage.py makemigrations

python3 manage.py migrate

  

本文轉載於老男孩IT教育官網。

首發網址:http://www.oldboyedu.com/


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章