1. 程式人生 > >專案開發細節(小專案後端完整細節)

專案開發細節(小專案後端完整細節)

XXX酒店專案總結(後端開發)
1.專案功能:
    a)業務邏輯:
        i.使用者:
                1.使用者通過APP註冊(手機號),然後登入,可以修改賬號密碼;忘記密碼,可以通過手機號重新設定密碼;退出登入;檢視自己的資料;修改自己的資料;
                2.使用者搜尋酒店:範圍,經緯度,關鍵字;
                3.查詢到酒店,檢視酒店詳情;獲取酒店評價;獲取房間列表;收藏喜歡的酒店(取消,檢視 );
                4.下訂單預定房間;檢視訂單詳情;檢視歷史訂單;新增評論;更改訂單狀態;支付; 
    ii.商家 :
                1.接收訂單通知;處理訂單,檢視單個訂單詳情;修改訂單;獲取訂單列表;回覆客戶訂單評論;檢視評論列表; 
                2.管理員(酒店創始人)註冊,登入;退出登入;修改密碼;忘記密碼(用手機號重新設定密碼);新增酒店操作員(員工); 檢視酒店員工;登出員工;
                3.酒店管理員建立酒店;修改酒店資訊;刪除酒店;檢視單個酒店資訊 ;建立酒店房間;修改酒店房間;刪除酒店房間;檢視單個酒店的單個房間的資訊;檢視酒店房間列表;
                4.檢視客戶的資訊
2.表設計(以及詳細欄位,型別Dao層)
    a)使用者表user
    b)酒店表hotel
    c)房間表room
    d)訂單表order
    e)管理員admin
    f)評論表comment
    g)酒店收藏表(使用者酒店關係,多對多關係)user_hotel
    h)同住客人表(訂單住客關係表,一對多關係)order_customer
    i)檔案表file


3.專案搭建 
    a)Spring +SpringMvc+Mybatis+maven整體專案技術架構
    b)MVC整體架構,dao service model
    c)建立maven(webapp)專案時加上:archetypeCatalog=internal ,為了可以從網上下載缺失的資源
    d)多模組的建立:祖父模組,父模組,子模組
        i.建立空白祖父專案(空白標準的Maven project,即不要選擇Create from archetype選項)File->New->Project,填寫專案座標:GroupId(工程組):org.jsoncloud(com.xxx),ArtifactId(專案名稱):Hotel;Version(版本):1.0-SNAPSHOT;刪除src資料夾。
祖父pom.xml
打包方式:pom:祖父專案使用;
<packing>pom<packing> 
<modules>
<module>子模組<module>
<module>子模組<module>
<modules>
<pluginRepositories>


<repositories>
<repository>遠端倉庫,資源地址<repository>
<repository>遠端倉庫,資源地<repository>
<repositories>


<pluginRepositories>
<pluginRepository>外掛地址<pluginRepository>
<pluginRepository>外掛地址<pluginRepository>
<pluginRepositories>


<dependencies>
<dependency>依賴jar包<dependency>
<dependency>依賴jar包<dependency>
<!-- mybatis --> <!-- mysql--> <!-- Spring -->
<!-- fastjson --> <!-- jackson --> <!-- redis --> <!--資料庫連線方式 --c3p0> <!-- 七牛-->  <!-- jsoncloud --> <!-- jpush -->
<dependencies>
父pom.xml
<parent>依賴祖父模組
<parent>
        <artifactId>Hotel</artifactId>
        <groupId>org.jsoncloud</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>

子pom.xml
<parent>依賴父模組
<parent>
        <artifactId>父模組名稱</artifactId>
        <groupId>org.jsoncloud</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
▶注意:打包方式:
1.pom:父專案使用;
2.war:Controller層是用,並且對用的模組是Webapp型別,對應的(SSM,SSH)諸多配置檔案都在此模組配置


MVC(manven)專案架構基本模組:
1.base-module(存放一些基礎的公用的功能類)
a)annotation(註解)
b)enums(列舉類)
c)interceptor(攔截器,全域性)
d)util(常用工具類:集合,日期格式化,分頁等等)
2.generator-module(mybatis反向生成工具模組)
a)doc,存放資料庫生成sql
b)生成程式碼類
3.dao-module(資料訪問介面模組,通過generator反向生成)
a)xxxMapper
b)xxxMapper.xml
4.model-module(實體類模組,通過generator反向生成)
5.service-module(服務層模組)
a)service-business-module(業務層模組)
b)service-domain-module(domain層,裡面的所有類都繼承對應的實體類,大多存放分頁、概率等前臺所需要的引數)
6.server-module(controller層模組,介面)
a)server-inter-module(移動端模組)此模組為webapp模組,配置檔案都在此處配置;打包方式WAR
b)server-web-module(web模組) 此模組為webapp模組,配置檔案都在此處配置;打包方式WAR




▶注意:祖父類、父類(有兒子的情況)打包方式必pom :<packaging>pom</packaging>,controller層子類打包必須為war;模組依賴關係用<parent>進行關聯,建立新模組是,要在專案根目錄下加上模組名稱


ii.建立web-app專案(war打包方式)
1.右擊祖父模組,新建module,選擇Create from archetype下面的org.apache.maven.archetypes:maven-archetype-webapp
2.配置檔案:
a)commons.properties(存放一些登入賬號密碼等,七牛,簡訊,jpush)
b)jdbc.properties(資料庫連線地址,賬號密碼)
c)log4j.properties(日誌,級別一般使用四個:ERROR、WARN、INFO、DEBUG)
d)mybatis-config.xml(mubatis配置檔案)
e)spring-context.xml(全域性對映)
f)spring-mvc.xml(攔截器)
▶注意:建立maven(webapp)模組時加上:(maven 3.0移除archetypeCatalog=internal) ,為了可以從網上下載缺失的資源
<vm options; -Dmaven.multiModuleProjectDirectory=$M2_HOME 
或者-DarchetypeCatalog=internal
 >



關鍵幾點
1.Parent project和各個Module擁有獨立pom檔案,他們之間的關係後續會專門寫文章介紹。
2.Parent project用於組織不同的Module,不實現邏輯
3.Module整合Parent project的groupId和version,Module只需要指定自己的artifactId即可。


4.介面設計(Controller層)








零散技術點:
1.簡訊驗證碼接收、驗證(互億簡訊),


2.支付回撥(付錢拉),


3.Jpush推送(極光推送)


4.SpringMvc 自定義註解+攔截器實現後臺許可權(即介面訪問許可權)


5.Mybatis Generator反向生成,插入語句無法返回Id加入:keyProperty="id" useGeneratedKeys="true"
<insert id="insert" parameterType="org.jsoncloud.hotel.model.UserHotel" keyProperty="id" useGeneratedKeys="true">


<insert id="insertSelective" parameterType="org.jsoncloud.hotel.model.UserHotel" keyProperty="id" useGeneratedKeys="true">
以下三個需要在伺服器安裝:
Redis:用於token(驗證單個登入),推送訊息


Nginx(1、靜態HTTP伺服器,2、反向代理伺服器,3.負載均衡4.虛擬主機)


Nexus建立私服(Maven)