天天看點

Winform開發架構中實作資訊閱讀狀态的顯示和存儲

在很多項目中,可能會有要求對一些資料的閱讀狀态進行記錄,使用者閱讀過或者未閱讀過,都做不同的辨別,友善了解資料的狀态。如在我的客戶關系管理系統中,對于客戶的狀态進行跟蹤,如果最近聯系時間超過配置天數的,那麼特别顯示出來。類似的應用場景,還有很多地方應用到,如對于通知公告、流程記錄、内部資訊等狀态檢視都可能是這樣的類型。那麼如何解決這些通用的需求呢,是需要每個都設定一個表來記錄這些狀态嗎?

前面說了,我們可能在一些資料上需要記錄不同使用者的閱讀狀态,如下面是我客戶關系管理系統裡面,對于最近沒有聯系的客戶清單,其中對他們的檢視狀态進行特别顯示。

當然,在我們業務系統裡面,可能還有其他類似的場景。

Winform開發架構中實作資訊閱讀狀态的顯示和存儲

對于這些相似的需求我們把這些應用場景的狀态,用一個表來存儲它的資料變化就可以做到了,我們設計一個表TB_InformationStatus來存儲這些資料的狀态。

Winform開發架構中實作資訊閱讀狀态的顯示和存儲

上面的Information_ID就是對應不同表資料的ID,Status為我們需要記錄的狀态,User_ID為對應使用人員,這樣對于不同業務表,不同的人員都可以把他們的資料記錄起來,供我們處理顯示了。

對于這個資訊狀态的記錄表,我們需要定義幾個接口來進行資訊的處理。

我們設計了上面的輔助表TB_InformationStatus來存儲這些資料的狀态,但并沒有改變主表的字段資料,但是我們在顯示主表的資料的時候,聯合處理一下就可以了。

以客戶資訊為例,我們聯合處理,獲得的資料,依舊是客戶資訊的清單,如下代碼所示。

在業務層,我們隻需要構造我們的過濾條件擷取到使用者的資料,并處理它狀态就可以了。

上面代碼的Data1是我們實體類基類的屬性,這裡我們很方面用它來記錄狀态,否則我們需要把實體類集合轉換為DataTable類型了。

這樣我們傳回的資料就帶有這個記錄的閱讀狀态,我們隻需要在顯示的時候,把Data1屬性的别名修改一下就可以了。

為了更有效展示不同類型客戶的記錄,我們可能需要設定普通客戶7天需要跟進,VIP客戶5天跟進,進階VIP客戶3天跟進的時效,也就是對于同一個記錄,不同屬性類型,可能要求不同。

我們如果要實作這個需求,那麼就需要再另外一個表裡面記錄客戶類型和間隔天數的資料了。

Winform開發架構中實作資訊閱讀狀态的顯示和存儲

然後在業務邏輯層處理傳回未聯系客戶的時候,對他們進行分别處理,擷取資料後進行合并,如下代碼所示。

對于混合架構上的應用,我們注意到接口的地方,需要使用一個枚舉的參數(資訊類别名稱),我們在接口定義的時候,需要特别聲明幾個地方,否則容易出現錯誤。

枚舉的對象需要聲明一下的。

定義的WCF接口,用到了枚舉類型的參數,也需要特别聲明枚舉的類型

注意上這些,使用枚舉就一切都順利了。

繼續閱讀