1. 前言
本次負責開發銀企直聯(到賬信息總覽,到賬通知,消息提醒模塊等功能),前端花的時間比較多,做個總結。
2. 收獲
2.1 sql中用if語句增加靈活性
比如到賬信息總覽的銷售分析表

總體上屬於分組求和,難點在於每一個列的求和條件都不一樣,如果分別寫sql來查詢的話,那至少要寫3條sql,而且查詢出來之后還要用代碼把查出來的數據一一拼裝起來,從性能和代碼量來說都不是合理的解決辦法,用if語句完美的解決了這個問題。

對每一列用if語句增加不同的條件過濾數據之后再求和,而共同的條件則放在where語句。
然后因為表格中的數據的細粒度也不一樣,所以用了mybatis的choose語句,來達到sql復用的目的。這樣,本來要寫9條sql語句來查詢,現在用一條sql就解決了。
2.2 異步提高程序性能
一般來說,如果是在分布式系統中,一個服務調用其他服務都是要用異步調用來提高響應速度。
到賬通知的下載功能因為要調用第三方接口,而第三方接口響應速度很慢,而業務上這個接口調用需要獨占式進行,所以要用異步加分布式鎖來處理。

分布式鎖采用的是redis分布式鎖,這樣保證最多只有一個線程在調用這個接口(除非這個線程阻塞超過10分鍾而導致過期了),而這里之所以沒有用new一個線程來處理,而是采用只有一個線程的線程池來處理,是為了避免線程管理混亂,導致程序奔潰。
