oscsMall icon indicating copy to clipboard operation
oscsMall copied to clipboard

Open Source E-commerce App With Server

README English Version

一个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里

## 客户端

更新Login界面

很多人吐槽很丑所以我会一步一步的慢慢将界面逐渐美化

展示页面Bate

注意:这个界面并没有直接接到当前项目中,只是一个测试版(有很多bug,需要慢慢修复),如果要在OscsMall中使用这个界面,需要在MainActivity中指定。

newIndex

展示

  • 分类

  • 寻觅(混合开发,图中展示了js与java互相调用的场景)

  • 购物车(购物车每次点击都以为着网络请求,所以这里的请求是相对比较密集的)

  • 个人中心(我的,其中空白的是由于我直接更改数据库造成的)

客户端的整体架构

App架构

整体采用了单Activity多fragment的设计思路

网络模块(两种)
  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把握了第三层的调用,以此类推。