# OLX Buy & Sell Classified App
## 项目概述
### 项目类型
**移动应用 + Web后端管理系统** - 一个类似于OLX的二手物品买卖分类广告平台
### 主要功能
- **用户系统**:注册、登录、Google登录集成、个人资料管理
- **商品发布**:用户可以发布二手物品出售信息,支持图片上传
- **分类浏览**:按类别浏览商品,支持多级分类
- **搜索与筛选**:支持关键词搜索、按城市和分类筛选
- **即时通讯**:买家与卖家之间的私信聊天功能
- **收藏功能**:用户可以收藏感兴趣的商品
- **推广功能**:付费推广商品,提升曝光率
- **支付集成**:支持PayPal、银行转账等多种支付方式
- **广告系统**:集成Google AdMob、AppLovin、StartApp、Unity、Yandex等广告平台
- **推送通知**:通过OneSignal实现消息推送
- **多语言支持**:支持多种语言切换
- **主题切换**:支持浅色/深色主题
### 技术栈
#### Android客户端
- **开发语言**:Java
- **开发环境**:Android Studio
- **最低SDK**:Android 6.0 (API 23)
- **目标SDK**:Android 14 (API 36)
- **架构组件**:View Binding, Lifecycle Components
- **网络请求**:Retrofit/OkHttp
- **图片加载**:Glide/Picasso
- **本地数据库**:SQLite (DBHelper)
- **依赖注入**:手动管理
- **广告SDK**:AdMob, AppLovin, StartApp, Unity Ads, Yandex Ads
- **推送服务**:OneSignal
- **支付SDK**:PayPal Android SDK
#### 后端管理系统 (PHP)
- **框架**:CodeIgniter 4 (PHP 8.1+)
- **数据库**:MySQL 5.6+
- **架构模式**:MVC (Model-View-Controller)
- **API通信**:RESTful API + JSON
- **邮件服务**:SMTP支持
- **文件存储**:本地存储 + 云存储支持
- **安全特性**:密码哈希、输入净化、CSRF保护
---
## 模块结构
### Android客户端模块结构
```
app/src/main/java/nemosofts/classified/
├── activity/ # Activity页面
│ ├── MainActivity.java # 主页面
│ ├── SignInActivity.java # 登录页面
│ ├── SignUpActivity.java # 注册页面
│ ├── AddPostActivity.java # 发布商品页面
│ ├── PostDetailsActivity.java # 商品详情页面
│ ├── ChatPrivateActivity.java # 私信聊天页面
│ ├── ProfileActivity.java # 个人资料页面
│ └── ...
├── adapter/ # RecyclerView适配器
│ ├── AdapterPost.java # 商品列表适配器
│ ├── AdapterChat.java # 聊天列表适配器
│ └── ...
├── callback/ # 回调接口
├── dialog/ # 自定义对话框
├── executor/ # 异步任务执行器
│ ├── LoadHome.java # 加载首页数据
│ ├── LoadLogin.java # 登录请求
│ ├── LoadPost.java # 加载商品数据
│ └── ...
├── interfaces/ # 接口定义
├── item/ # 数据模型类
│ ├── ItemPostHome.java # 商品数据模型
│ ├── ItemChat.java # 聊天数据模型
│ └── ...
└── utils/ # 工具类
├── helper/ # 辅助类
│ ├── Helper.java # 通用工具
│ ├── DBHelper.java # 数据库帮助类
│ └── SPHelper.java # SharedPreferences
├── advertising/ # 广告管理
└── recycler/ # RecyclerView工具
```
### PHP后端模块结构
```
classified-app/
├── app/
│ ├── Config/ # 配置文件
│ ├── Controllers/ # 控制器
│ │ ├── ApiController.php # API接口控制器
│ │ ├── AuthController.php # 认证控制器
│ │ ├── PostController.php # 商品管理控制器
│ │ └── ...
│ ├── Models/ # 数据模型
│ │ ├── PostModel.php # 商品模型
│ │ ├── UsersModel.php # 用户模型
│ │ └── ...
│ ├── Libraries/ # 自定义库
│ │ ├── NemoSoftsAPI.php # API核心库
│ │ ├── EmailService.php # 邮件服务
│ │ └── ...
│ └── Views/ # 视图模板
├── public/ # 公共资源
└── writable/ # 可写目录
```
---
## 核心业务逻辑
### 1. 用户认证流程
```
1. 用户输入手机号/邮箱和密码
2. 客户端加密数据并发送到API
3. 后端验证凭据并返回用户信息和JWT令牌
4. 客户端存储令牌用于后续请求
5. 支持Google OAuth登录
```
### 2. 商品发布流程
```
1. 用户选择分类(支持多级分类)
2. 填写商品信息(标题、描述、价格、位置)
3. 上传商品图片(支持多图)
4. 选择是否付费推广
5. 提交审核(部分商品需要管理员审核)
6. 发布成功后显示在列表中
```
### 3. 商品浏览与搜索
```
1. 首页展示推荐商品和分类
2. 支持按分类筛选商品
3. 支持按城市/地区筛选
4. 支持关键词搜索
5. 支持排序(最新、价格等)
6. 分页加载更多商品
```
### 4. 即时通讯流程
```
1. 买家点击"联系卖家"按钮
2. 创建或获取现有聊天会话
3. 通过Firebase Realtime Database或API轮询获取消息
4. 支持发送文字、图片消息
5. 消息实时推送通知
```
### 5. 支付与推广
```
1. 用户选择推广套餐
2. 通过PayPal或银行转账支付
3. 支付成功后激活推广状态
4. 商品在首页获得更高曝光位置
5. 推广到期后自动降级
```
---
## 核心代码分析
### 1. API通信加密机制
**位置**:`Android Code/ClassifiedApp/app/src/main/java/nemosofts/classified/utils/EncryptData.java`
```java
// 加密通信数据,保护API请求安全
public class EncryptData {
// 使用AES加密算法
// 密钥通过BuildConfig.ENC_KEY配置
// 所有API请求数据都经过加密传输
}
```
### 2. 首页数据加载
**位置**:`Android Code/ClassifiedApp/app/src/main/java/nemosofts/classified/executor/LoadHome.java`
```java
// 加载首页数据包括:
// - 分类列表
// - 推荐商品(Spotlight)
// - 最新商品
// - 自定义板块内容
```
### 3. API控制器核心逻辑
**位置**:`PHP Code/classified-app/app/Controllers/ApiController.php`
```php
class ApiController extends BaseController {
// 验证购买码
// 解析加密数据
... (content truncated)