大三了,一年一度的軟件設計與編程實踐到來了。javascript
繼今年的軟件工程實驗以後第二個大實驗;要求相似,多用戶登陸的複雜系統,軟件工程實驗要求五個下午,本實驗要求八個上午。java
感謝Spring Data JPA
,此框架真的是實驗利器,大大提升了開發效率。git
感謝團隊,感謝潘老師。要不我可能也要和個人同窗同樣一塊兒學Tomcat
,寫Servlet
,生連JDBC
,手寫SELECT
,最後把實驗寫黃。github
三個角色:貨主、司機、管理員。npm
管理員負責維護基礎信息,就是基礎模塊的增刪改查,就是實體有點多。編程
主要的就是業務流程:api
貨主在平臺發起訂單,司機能綜合查詢相關訂單。框架
司機進行搶單,一個單能夠被多個司機搶,而後貨主選擇我這批貨由哪一個司機進行承運,並進行付款。ide
司機能更改運輸狀態,當貨物到站時,貨主確認後,平臺將通過抽成的錢轉給司機。grunt
@RepositoryRestResource(path = "Tax") public interface TaxRepository extends JpaRepository<Tax, Long> { Tax findByMinPriceLessThanAndMaxPriceGreaterThanEqual(BigDecimal priceMin, BigDecimal priceMax); }
直接在倉庫接口上加註解,而後就在當前的path
上生成了增刪改查、分頁、排序等接口。
這個框架用是很好用,就是有一個問題,查詢數據時後臺不序列化id
。
id: 1 name: zhangsan age: 18
假如數據表中由這樣一個實體,若是調用getAll
接口的話,返回的倒是這樣的數據。
[{ name: zhangsan, age: 18 }]
沒有id
在首頁顯示是沒問題的,可是若是編輯的時候怎麼辦呢?
查找官方文檔,實現RepositoryRestConfigurer
接口,在configureRepositoryRestConfiguration
中配置爲哪一個實體暴露id
。
@Configuration public class CustomRestConfiguration implements RepositoryRestConfigurer { @Override public void configureRepositoryRestConfiguration(RepositoryRestConfiguration config) { config.exposeIdsFor(GoodCategory.class) .exposeIdsFor(OrderDetail.class) .exposeIdsFor(Orders.class) .exposeIdsFor(Payment.class) .exposeIdsFor(Price.class) .exposeIdsFor(Tax.class) .exposeIdsFor(User.class) .exposeIdsFor(Vehicle.class); } }
咱們設計的是貨主發起訂單時的出發地與目的地都是在百度地圖上選的。
因此,須要解決三個問題:
設計
和以前寫定時任務不知道本初子午線同樣,解決地圖問題的時候,又暴露了我地理沒學好的缺陷。
一直想怎麼存儲位置呢?後來學習了一下百度地圖的開發文檔發現,經緯度是最好的解決方法。
經緯度惟一地標識一個位置,咱們能夠根據經緯度再去百度查這個經緯度是一個什麼地點。
最後就是這麼設計的,先選出經緯度,而後前臺去根據當前選中的經緯度去百度要數據,這個經緯度對應的是哪一個市哪一個區那條街?同時根據起點與終點調百度的接口查詢距離是多少。
private String startPlace; // 起點 private String endPlace; // 終點 private Float startLongitude; // 起點經度 private Float startLatitude; // 起點緯度 private Float endLongitude; // 終點經度 private Float endLatitude; // 終點緯度 private Float distance; // 運輸距離
定位
百度地圖開放平臺上的DEMO
特別詳細,有四種定位方式肯定當前用戶在哪,咱們採用的是根據ip
的定位方式,雖然距離不太精確,但對於實驗來講足夠了。
算距離
發現百度地圖的api
和我想象中的有差距,點開獲取兩點間的距離,沒想到居然是勾股定理。
司機查訂單的時候,用到了團隊的核心庫。
想把這個YunzhiService
的實例放到個人應用上下文中。
@Configuration public class BeanConfig { @Bean public YunzhiService yunzhiService() { return new YunzhiServiceImpl(); } }
雖然不太願意認可,可是當我幫同窗裝環境的時候,npm
提示grunt
不推薦使用。新技術將至。
文檔對於一個項目的參考價值來講十分重要,我以前在Github
上看到過很多開源的項目,我看過之後以爲毫無參考價值,一個文檔都不寫,這個項目開源對他人來講有何意義嗎?
深覺文檔的價值,之後開源的每一個項目,無論代碼如何,在至少保證文檔齊全。至少保證我這個項目開源,對他人有意義!