LaraClassifier – 地理分类广告CMS系统项目分析
LaraClassifier – 地理分类广告CMS系统
项目概述
LaraClassifier 是一个功能强大的分类广告内容管理系统(CMS),具有完全响应式设计,支持地理位置定位功能。该系统允许用户发布、浏览和管理分类广告,适用于各种行业和市场。
- 项目类型:Web应用 / 分类广告CMS
- 主要功能:
- 分类广告发布与管理
- 地理位置定位与搜索
- 多语言支持
- 支付集成(PayPal、Stripe等)
- 社交登录(Facebook、LinkedIn、Twitter、Google)
- 短信API集成
- 广告推广系统
- 用户管理系统
- 管理后台
- API接口
- 技术栈:
- 后端:PHP 8.2+, Laravel 12.x
- 前端:Bootstrap, Vue.js
- 数据库:MySQL/PostgreSQL/SQLite
- 缓存:Redis
- 队列:Laravel Queue
- 搜索引擎:内置搜索
模块结构
laraclassified/
├── app/ # 应用程序核心代码
│ ├── Console/ # Artisan命令
│ ├── Enums/ # 枚举类型
│ ├── Events/ # 事件类
│ ├── Exceptions/ # 异常处理
│ ├── Helpers/ # 辅助函数
│ │ ├── Common/ # 通用辅助函数
│ │ └── Services/ # 服务辅助函数
│ ├── Http/ # HTTP层
│ │ ├── Controllers/ # 控制器
│ │ │ ├── Admin/ # 后台管理控制器
│ │ │ ├── Auth/ # 认证控制器
│ │ │ ├── Front/ # 前端控制器
│ │ │ └── Setup/ # 安装控制器
│ │ └── Middleware/ # 中间件
│ ├── Jobs/ # 队列任务
│ ├── Models/ # Eloquent模型
│ │ ├── Advertising.php # 广告模型
│ │ ├── Category.php # 分类模型
│ │ ├── City.php # 城市模型
│ │ ├── Country.php # 国家模型
│ │ ├── Package.php # 套餐模型
│ │ ├── Post.php # 帖子/广告模型
│ │ ├── User.php # 用户模型
│ │ └── ... # 其他模型
│ ├── Notifications/ # 通知类
│ ├── Observers/ # 模型观察者
│ ├── Providers/ # 服务提供者
│ ├── Rules/ # 验证规则
│ └── Services/ # 业务服务层
├── bootstrap/ # 启动文件
├── config/ # 配置文件
├── database/ # 数据库
│ ├── migrations/ # 迁移文件
│ ├── seeders/ # 数据填充
│ └── factories/ # 模型工厂
├── documentation/ # 项目文档
├── extras/ # 额外功能模块
│ └── addons/ # 插件目录
├── lang/ # 语言文件
├── packages/ # 自定义包
├── public/ # 公共资源
├── resources/ # 资源文件
│ ├── views/ # Blade模板
│ ├── css/ # CSS源文件
│ └── js/ # JavaScript源文件
├── routes/ # 路由定义
│ ├── web.php # Web路由
│ ├── api.php # API路由
│ └── web/ # 分组路由
├── storage/ # 存储目录
├── tests/ # 测试文件
└── vendor/ # Composer依赖
核心业务逻辑
1. 广告发布流程
用户注册/登录 → 选择分类 → 填写广告信息 → 上传图片 → 选择套餐 → 支付 → 广告发布
2. 地理位置系统
- 基于GeoIP2实现地理位置自动检测
- 支持国家、城市、区域多级定位
- 地图集成(Google Maps)
- 基于位置的搜索和筛选
3. 支付系统
- 支持多种支付方式:PayPal、Stripe、Razorpay等
- 套餐定价系统
- 广告推广付费
- 交易记录管理
4. 用户系统
- 多角色权限管理(Spatie Laravel Permission)
- 社交登录集成
- 用户资料管理
- 消息通知系统
5. 搜索与筛选
- 全文搜索
- 多维度筛选(分类、位置、价格等)
- 保存搜索条件
- 收藏广告
核心代码分析
路由结构 (routes/web.php)
Route::namespace('Setup')->group(__DIR__ . '/web/setup.php');
Route::middleware([‘installed’]) ->group(function () { $authBasePath = urlGen()->getAuthBasePath(); $adminBasePath = urlGen()->getAdminBasePath(); Route::namespace(‘Auth’)->prefix($authBasePath)->group(__DIR__ . ‘/web/auth.php’); Route::namespace(‘Admin’)->prefix($adminBasePath)->group(__DIR__ . ‘/web/admin.php’); Route::namespace(‘Front’)->group(__DIR__ . ‘/web/front.php’); });
主要模型关系
- Post(广告)→ belongsTo → Category(分类)
- Post → belongsTo → User(用户)
- Post → belongsTo → City(城市)
- City → belongsTo → Country(国家)
- User → hasMany → Post(用户发布的广告)
- Package → hasMany → Post(套餐包含的广告)
支付处理示例
// PaymentController.php
public function payment(Request $request)
{
$package = Package::find($request->package_id);
$paymentMethod = PaymentMethod::find($request->payment_method_id);
// 根据支付方式调用不同网关
switch($paymentMethod->name) {
case 'paypal':
return $this->payWithPayPal($package);
case 'stripe':
return $this->payWithStripe($package);
// ...
}
}
地理定位服务
// 使用GeoIP2获取用户位置
$geoIp = new GeoIp2();
$location = $geoIp->getLocation($ip);
// 自动设置用户城市 if ($location) { $city = City::where(‘code’, $location->city)->first(); session([‘user_city’ => $city]); }
技术特点
- 模块化设计:支持插件扩展,extras/addons目录可添加新功能
- 多语言支持:基于Laravel的本地化系统,支持RTL语言
- 响应式设计:Bootstrap框架,适配移动端
- API支持:内置API路由,支持移动端应用
- 缓存优化:支持Redis缓存,提升性能
- 队列系统:后台任务异步处理
- 安全机制:SQL注入防护、XSS防护、CSRF保护
- SEO优化:友好的URL结构、Meta标签管理、站点地图
数据库架构
主要数据表
posts– 广告帖子categories– 分类cities– 城市countries– 国家packages– 付费套餐payments– 支付记录users– 用户roles– 角色permissions– 权限messages– 站内消息saved_posts– 收藏的广告saved_searches– 保存的搜索
安装要求
- PHP >= 8.2
- MySQL >= 5.7 或 PostgreSQL >= 10
- Composer
- Node.js & NPM
- Redis(可选,用于缓存)
- Imagick(图片处理)
扩展功能
系统支持通过插件扩展功能,位于 extras/addons/ 目录:
- 支付网关插件(Adyen、Flutterwave、Iyzico等)
- 自定义功能模块
- 第三方服务集成
—
分析时间:2026-03-10
版本:基于Laravel 12.x