1. 程式人生 > >一個Almost完整的電商專案後臺+安卓客戶端

一個Almost完整的電商專案後臺+安卓客戶端

一轉眼就已經大三了,作為非CS專業的一個普通大學生,應該對自己的未來做規劃了。於是,大三開始我就開始著手準備一個“大專案”。將前兩年學習的知識做一個總結,歸納。於是就有了這個專案。專案的名字叫OscsMall,為什麼叫這個名字我也不知道。至於Almost是因為整個專案缺少了支付部分的程式碼,原因是拿不到微信的key。整個專案分為後端和客戶端,後端程式碼顯得稚嫩,客戶端程式碼也算拿的的出手。還懇請個位大佬輕噴。專案自然參考了其他大神的程式碼。這個專案我也會一直維護下去的,懇請大佬們star一下。

後臺

後臺其實沒什麼好介紹的,整個專案使用Spring+MyBatis+MySQL,專案採用MVC模式。包含前臺和後臺管理部分程式碼。是一個很普通的電商專案,包含了8大結構,6大模組。

專案結構

common

作用:用來處理公共的資訊,包括Token,常量,全域性異常,公共類等封裝

controller

作用:包括前臺和後臺部分的controller程式碼

service

作用:專案中要到的service部分

dao

作用:負責dao

pojo

作用:資料庫物件

vo

作用:view object前端物件

util

作用:一些簡單的工具類

專案模組(詳情見文件)

使用者資訊

包括:使用者登入,註冊,資訊獲取,登出等流程,管理登入

商品資訊

商品增加刪除更新,同時放置非管理員對商品的屬性進行操作

商品分類資訊

商品分類資訊,包括子分類的資訊獲取

購物車

購物車新增,刪除,選擇,更新等管理

訂單

訂單生成,不同型別的訂單查詢等管理

地址

地址增加,刪除,選擇等功能

具體的內容在wiki

客戶端

展示

  • 分類

  • 尋覓(混合開發,圖中展示了js與java互相呼叫的場景)

  • 購物車(購物車每次點選都以為著網路請求,所以這裡的請求是相對比較密集的)

  • 個人中心(我的,其中空白的是由於我直接更改資料庫造成的)

客戶端的整體架構

架構

網路模組(兩種)
  1. 使用rxJava與retrofit2和okhttp3組成網路請求框架(有些時候Rxjava並不能按照預期給出結果,讓我有點苦惱。水平不夠,嚶嚶嚶)

  2. 未使用rxJava的網路框架,整個請求寫法上類似於Velloy

App配置相關
  • 整個App的圖示全部使用icon
  • 使用Builder設計模式來配置整個應用資訊(使用什麼icon,內建了iconify中給出的所有Icon)
代理Activity

作為整個程式唯一一個Activity,作為所有Fragment的代理

MVP相關

作為MVP模式的基類

UI相關

UI處理部分

App的整體流程

App的整體流程分為三部分

第一部分

流程:首頁展示前,整個Activity作為Fragment的排程站,負責Fragment的跳轉和資訊傳遞。這樣的好處是,避免跳轉流程複雜,導致自己開發時候很暈。一般Fragment的跳轉需要App的當前狀態,使用者的當前狀態,通過這兩狀態去決定下一個Fragment是什麼。

同時整個Activity代理了所有的toast資訊的展示,和Loading載入。這樣整個流程更加清晰。
第一部分

第二部分

首頁展示後,整個Bottom Fragment作為排程站,負責在各個頁面之間進行跳轉。

第二部分

第三部分

不同首頁需要其他額外的Fragment,由該Fragment自己掌控。
第三部分

目的:

App整體流程是我自己的一些小技巧的總結,讓同級的Fragment之間的呼叫更加清楚,這樣設計,如果App加入新的型別的啟動頁,我們就不用更改相關所有Fragment的程式碼,而只需要更改Activity的程式碼就可以了。

總結:

總結
整個App被分成4層,第一層是Activity,把握了第二層的Fragment的呼叫順序,第二層Fragment把握了第三層的呼叫,以此類推。

使用到的依賴

//iconify icon圖示庫
compile 'com.joanzapata.iconify:android-iconify:2.2.2'
compile 'com.joanzapata.iconify:android-iconify-fontawesome:2.2.2'
// (v4.5)
compile 'com.joanzapata.iconify:android-iconify-entypo:2.2.2'
// (v3,2015)
compile 'com.joanzapata.iconify:android-iconify-typicons:2.2.2'
// (v2.0.7)
compile 'com.joanzapata.iconify:android-iconify-material:2.2.2'
// (v2.0.0)
compile 'com.joanzapata.iconify:android-iconify-material-community:2.2.2'
// (v1.4.57)
compile 'com.joanzapata.iconify:android-iconify-meteocons:2.2.2'
// (latest)
compile 'com.joanzapata.iconify:android-iconify-weathericons:2.2.2'
// (v2.0)
compile 'com.joanzapata.iconify:android-iconify-simplelineicons:2.2.2'
// (v1.0.0)
compile 'com.joanzapata.iconify:android-iconify-ionicons:2.2.2'
// (v2.0.1)
//AndroidUtilCode安卓工具類
compile 'com.blankj:utilcode:1.9.8'
//logger
compile 'com.orhanobut:logger:2.1.1'
//網路請求依賴
compile 'com.squareup.okio:okio:1.13.0'
compile 'com.squareup.okhttp3:okhttp:3.8.1'
compile 'com.squareup.retrofit2:retrofit:2.3.0'
compile 'com.squareup.retrofit2:converter-scalars:2.3.0'
//rx全家桶
compile 'io.reactivex.rxjava2:rxjava:2.1.6'
compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
compile 'com.squareup.retrofit2:adapter-rxjava2:2.3.0'
//JSON依賴Android版
compile 'com.alibaba:fastjson:1.1.57.android'
//AVLoadIndicatorView 載入
compile 'com.wang.avi:library:2.1.3'
// fragmentation Fragment
compile 'me.yokeyword:fragmentation:1.1.8'
compile 'me.yokeyword:fragmentation-swipeback:1.1.8'
//ButterKnife依賴
compile 'com.jakewharton:butterknife:8.6.0'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.6.0'
//Banner依賴
compile 'com.bigkoo:convenientbanner:2.0.5'
compile 'com.ToxicBakery.viewpager.transforms:view-pager-transforms:[email protected]'
//RecyclerView依賴
compile 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.32'
//RecyclerView分割線
compile 'com.choices.divider:RecyclerView_Divider:1.0.0'
//StatusBarCompat
dependencies {
    compile('com.github.niorgai:StatusBarCompat:2.1.4', {
        exclude group: 'com.android.support'
    })
}
//Google AutoValue provided代表只在編譯期間,產生作用,最後在原始碼中是不存在的
provided 'com.google.auto.value:auto-value:1.4.1'
annotationProcessor "com.google.auto.value:auto-value:1.4.1"
//圖片載入
compile 'com.github.bumptech.glide:glide:4.0.0-RC0'
compile 'com.github.bumptech.glide:okhttp3-integration:[email protected]'
annotationProcessor 'com.github.bumptech.glide:compiler:4.0.0-RC0'
//circleimageview 圓形頭像
compile 'de.hdodenhof:circleimageview:2.2.0'
//資料庫依賴
compile 'org.greenrobot:greendao-generator:3.2.2'
compile 'org.greenrobot:greendao:3.2.2'
//圖片裁剪
compile 'com.github.yalantis:ucrop:2.2.1-native'
//permissionsdispatcher
compile("com.github.hotchemi:permissionsdispatcher:3.0.1") {
    exclude module: "support-v13"
}
annotationProcessor "com.github.hotchemi:permissionsdispatcher-processor:3.0.1"
//富文字
compile 'com.zzhoujay.richtext:richtext:2.5.4'
//二維碼掃描
compile 'me.dm7.barcodescanner:zbar:1.9.3'

相關推薦

一個Almost完整專案後臺客戶

一轉眼就已經大三了,作為非CS專業的一個普通大學生,應該對自己的未來做規劃了。於是,大三開始我就開始著手準備一個“大專案”。將前兩年學習的知識做一個總結,歸納。於是就有了這個專案。專案的名字叫OscsMall,為什麼叫這個名字我也不知道。至於Almost是因為整

一個專案的Web服務化改造7 Dubbo服務的呼叫 4個專案

使用dubbo服務的過程,很簡單,和之前學習的WebService完全一樣,和本地介面呼叫也基本一致。    dubbo和WebService的區別:我認為dubbo就是封裝了WebService,然後提供了更多的配套功能。看jar包依賴,dubbo依賴的WebService。(青出於藍,而勝於藍。冰,水為之

分散式專案(02)--後臺管理系統SSM框架整合

前言:上一篇部落格講了此次分散式電商專案後臺管理系統的工程的搭建,這一篇就講一下SSM框架的整合 1.整合思路 下面說到的配置檔案都需要放到manager-web工程下,因為此工程為war工程,而其它的工程都只是一個jar包,具體如下圖所示 1.1 DAO層 mybatis整合spring,通過spr

【SSM分散式架構專案-07】後臺管理系統查詢商品列表以及日誌的書寫

查詢商品列表 JS EasyUI的datagrid的格式化輸出 預設情況下,會直接顯示返回的資料,但是有些情況下不能直接顯示,如:價格、日期、性別,需要指定formatter函式。

如何使用django框架開發一個牛逼的專案

第一部分:開發流程 1. 架構設計 分析可能用到的技術點 前後端是否分離 前端使用哪些框架 後端使用哪些框架 選擇什麼資料庫 如何實現快取 是否搭建分散式服務 如何管理原始碼 2. 資料庫設計 資料庫表的設計至關重要 根據專案需求,設計合適的資料庫表

系統後臺統計報表模塊》需求分析與設計的課程小結

很好 人員 過程 店鋪 顯示效果 情況 rod tle 報表 1)分工情況介紹,小組分工合作情況介紹 邱慧堅-張順程選題,功能分析,建模 2)選題討論 電商後臺的統計報表也是非常重要的一個功能模塊,一個功能齊全且具有良好顯示效果的報表功能可以幫助管理人員很好的分析當前商鋪的

CK2040-Spring高效開發帶前後開發完整平臺

detail 整合 gmv 定時任務 每次 ack 基類 全部 交流 CK2040-Spring高效開發帶前後端開發完整電商平臺 隨筆背景:在很多時候,很多入門不久的朋友都會問我:我是從其他語言轉到程序開發的,有沒有一些基礎性的資料給我們學習學習呢,你的框架感覺一下太大了,

Kotlin打造完整APP 模塊化+MVP+主流框架

dea mongo cse 快速 性能 thinkphp react 並發實戰 微服務 詳情請交流 QQ 709639943 01、Kotlin打造完整電商APP 模塊化+MVP+主流框架 02、Kotlin系統入門與進階 03、Node.js入門到企業Web開發

慕課網 Kotlin打造完整APP 模塊化+MVP+主流框架 百度雲網盤分享

png OS mvp 網盤 分享 模塊 慕課 電商 .com 慕課網 Kotlin打造完整電商APP 模塊化+MVP+主流框架 百度雲網盤分享 慕課網 Kotlin打造完整電商APP 模塊化+MVP+主流框架 百度雲網盤分享

專案中高流量大併發的一攬子解決思路

1.硬體升級 普通的P4伺服器一般最多能支援每天10萬獨立IP,如果訪問量比這個還要大, 那麼必須首先配置一臺更高效能的專用伺服器才能解決問題 ,否則怎麼優化都不可能徹底解決效能問題。 2.負載均衡 它是根據某種負載策略把請求分發到叢集中的每一臺伺服器上,讓整個伺服器群來處理網站的請求。

專案客戶歷史紀錄

1.點進商品訪問的servlet package com.itheima.web.servlet; import java.io.IOException; import java.util.Arrays; import java.util.LinkedList; import ja

python專案之啟動各種服務

電商專案執行前需要啟動各種服務 1.資料庫 mysql redis 2.伺服器 nginx 3.排程器 tracker 4.儲存器 storage 5.任務佇列 celery 1.首先要聯網,自己機器的 ip 要和往常一樣 ,這樣mysql 會自動連線

Python Django框架下做專案

這個專案是在Linux 環境下做的,需要安裝的有 ubuntu、pycharm、 pycharm如果沒有啟用的可以使用-----pycharm 最新啟用碼啟用可用 流程 總體流程 https://blog.csdn.net/youzi_yun/article/det

JAVA架構師大型分散式高併發專案實戰,效能優化,叢集,億級高併發,web安全,快取架構實戰

現任58到家技術委員會主席,高階技術總監,負責企業,支付,營銷、客戶關係等多個後端業務部門。本質,技術人一枚。網際網路架構技術專家,“架構師之路”公眾號作者。曾任百度高階工程師,58同城高階架構師,58同城技術委員會主席,58同城C2C技術部負責人。 內容介紹 1.大資

專案需求分析 七月實習總結

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Django REST framework+Vue 打造生鮮專案(筆記四)

 (PS:部分程式碼和圖片來自部落格:http://www.cnblogs.com/derek1184405959/p/8813641.html。有增刪) 一、使用者登入和手機註冊 1、drf的token功能 (前言:為什麼有了session了,還要用token呢?因為每次認證使用者發起請求時

Django REST framework+Vue 打造生鮮專案(筆記五)

一、viewsets實現商品詳情頁介面 (1)商品詳情頁只需要多繼承一個類(mixins.RetrieveModelMixin)就可以了,(它的功能就是展示商品詳情) class GoodsListViewSet(mixins.ListModelMixin, mixins.RetrieveModel

Django REST framework+Vue 打造生鮮專案(筆記六)

九、個人中心功能開發1、drf的api文件自動生成(1) url #drf文件,title自定義 path('docs',include_docs_urls(title='火影忍者')), 訪問:http://127.0.0.1:8000/docs  就可以自動生成 &

Django REST framework+Vue 打造生鮮專案(筆記九)

(from:http://www.cnblogs.com/derek1184405959/p/8859309.html) 十二、支付寶沙箱環境配置 12.1.建立應用 進入螞蟻金服開放平臺(https://open.alipay.com/platform/home.htm),登入後進入管理中心-->

Django REST framework+Vue 打造生鮮專案(筆記八)

(form:http://www.cnblogs.com/derek1184405959/p/8862569.html) 十一、pycharm 遠端程式碼除錯 第三方登入和支付,都需要有伺服器才行(回撥url),我們可以用pycharm去遠端除錯伺服器程式碼 伺服器環境搭建 以全新阿里雲centos7