Files
2026-04-21 23:02:15 +08:00

8.5 KiB

Technology Stack

Analysis Date: 2026-04-21

Languages

Primary:

  • PHP >= 7.4 - Server-side application code (all application/ and addons/)
  • JavaScript (ES5) - Frontend client code (public/assets/js/)

Secondary:

  • HTML/Think Template - View templates (application/*/view/)

Runtime

Environment:

  • PHP >= 7.4.0 (required by composer.json)
  • Required extensions: ext-json, ext-curl, ext-pdo, ext-bcmath

Package Manager:

  • Composer - PHP dependency management; lockfile composer.lock present
  • npm - Frontend dependency management; node_modules/ present
  • Lockfiles: composer.lock (present), package-lock.json (not detected)

Frameworks

Core:

  • ThinkPHP 5.x (dev-master from https://gitee.com/fastadminnet/framework.git) - PHP MVC framework, the foundation of the entire application
  • FastAdmin 1.6.1 - Admin backend framework built on ThinkPHP + Bootstrap; actual internal version 1.6.2.20260323 (from application/config.php fastadmin.version)

Frontend:

  • RequireJS 2.x - AMD module loader for JavaScript (public/assets/js/require-backend.js, require-frontend.js)
  • Bootstrap 3.4.1 (via fastadmin-bootstrap) - UI component framework
  • jQuery 3.7.1 - DOM manipulation and AJAX
  • AdminLTE - Admin dashboard theme (referenced in require-backend.js paths)

Testing:

  • Not detected - No test framework configured (no PHPUnit, no tests/ directory)

Build/Dev:

  • Grunt 1.5.3 - Task runner for frontend asset build
  • requirejs optimizer (r.js) - JS/CSS minification via custom application/admin/command/Min/r
  • uglify - JavaScript minification
  • parse-config-file + jsonminify - RequireJS config parsing during build

Key Dependencies

Critical:

  • topthink/framework dev-master - ThinkPHP core framework (Gitee mirror)
  • topthink/think-captcha ^1.0.9 - CAPTCHA image generation
  • topthink/think-queue 1.1.6 - Redis-backed job queue system
  • topthink/think-helper ^1.0.7 - ThinkPHP utility helpers
  • fastadminnet/fastadmin-addons ~1.4.0 - Plugin/addon system
  • fastadminnet/fastadmin-mailer ^2.0.0 - Email sending

Infrastructure:

  • guzzlehttp/guzzle ^7.10 - HTTP client for external API requests (used in application/index/controller/Index.php to scrape macaumarksix.com)
  • overtrue/pinyin ^3.0 - Chinese Pinyin conversion
  • overtrue/wechat ^4.6 - WeChat SDK integration
  • phpoffice/phpspreadsheet ^1.29.1 - Excel/CSV import-export (used in application/admin/library/traits/Backend.php import() method)

Frontend Libraries (via npm):

  • fastadmin-bootstraptable ^1.11.12 - Data table with search/sort/pagination
  • fastadmin-layer ^3.5.6 - Modal/overlay dialogs
  • fastadmin-selectpage ^1.1.1 - Select with autocomplete
  • fastadmin-nicevalidator ^1.1.6 - Form validation
  • eonasdan-bootstrap-datetimepicker ^4.17.49 - Date/time picker
  • bootstrap-daterangepicker ~2.1.25 - Date range picker
  • bootstrap-select ^1.13.18 - Enhanced select dropdown
  • jstree ~3.3.2 - Tree view component
  • font-awesome ^4.6.1 - Icon font
  • moment ^2.10 - Date manipulation
  • art-template (via fastadmin-arttemplate) ^3.1.4 - Template engine
  • toastr ~2.1.3 - Notification toasts
  • jquery-slimscroll ~1.3.8 - Custom scrollbar
  • jquery.cookie ~1.4.1 - Cookie utility
  • sortablejs ^1.12.0 - Drag and drop sorting
  • fastadmin-dragsort ^1.0.5 - Drag sort plugin
  • fastadmin-addtabs ^1.0.8 - Multi-tab navigation
  • fastadmin-citypicker ^1.3.6 - City selector
  • fastadmin-cxselect ^1.4.0 - Cascading select
  • bootstrap-slider ^11.0.2 - Range slider
  • tableexport.jquery.plugin ^1.20 - Table export to Excel/CSV/PDF
  • require-css ~0.1.8 - CSS loading via RequireJS

Configuration

Environment:

  • Configuration via PHP arrays in application/config.php, application/database.php, application/extra/*.php
  • Environment variable override via think\Env class (e.g., Env::get('database.hostname', '127.0.0.1'))
  • .env file present for environment-specific overrides (secrets not inspected)
  • Key configs: site.php (site settings, email SMTP), upload.php (file upload rules), queue.php (Redis connection), addons.php (plugin hooks/routes)

Build:

  • Gruntfile.js - Build orchestration
  • Build tasks: deploy (copy libs from node_modules to public/assets/libs/), frontend:js, backend:js, frontend:css, backend:css (RequireJS r.js optimization)
  • Default task: grunt = ['deploy', 'frontend:js', 'backend:js', 'frontend:css', 'backend:css']
  • Output: public/assets/js/require-backend.min.js, require-frontend.min.js, etc.

Platform Requirements

Development:

  • PHP >= 7.4 with extensions: json, curl, pdo, bcmath
  • MySQL database (utf8mb4 charset)
  • Redis (for queue system)
  • Node.js + npm (for frontend dependencies and Grunt build)
  • Composer (for PHP dependencies)
  • .env file configured with database credentials

Production:

  • Self-hosted PHP deployment (no Docker detected)
  • Apache or Nginx web server (with URL rewriting for ThinkPHP PATH_INFO)
  • MySQL database with fa_ table prefix
  • Redis for queue processing (think-queue)
  • public/ directory as web root
  • application/admin/command/Install/install.lock present - indicates installation completed

Module Structure

The application uses ThinkPHP multi-module architecture:

Module Purpose Location
admin Backend admin panel application/admin/
index Frontend website application/index/
api REST API endpoints application/api/
common Shared code application/common/

Recently Added Components

Num Controller/Model - New "数字波色" (number color/wave) feature:

  • Controller: D:\code\php\amlhc\application\admin\controller\Num.php - Returns number-to-color mapping via getColorMap() API endpoint
  • Model: D:\code\php\amlhc\application\admin\model\Num.php - Simple model for fa_num table, no timestamp fields
  • Used by history.js frontend to render colored number balls in lottery result tables

Command Controller/Model - Online CLI command management:

  • Controller: D:\code\php\amlhc\application\admin\controller\Command.php - CRUD for CLI commands (crud/menu/min/api generation and execution)
  • Model: D:\code\php\amlhc\application\admin\model\Command.php - Tracks command execution history with integer timestamps, status tracking
  • Validate: D:\code\php\amlhc\application\admin\validate\Command.php - Empty validation rules
  • Addon: D:\code\php\amlhc\addons\command\ - Plugin wrapper with menu installation via addons\command\Command.php
  • Output library: D:\code\php\amlhc\addons\command\library\Output.php - Extends \think\console\Output to capture command output
  • Frontend: D:\code\php\amlhc\public\assets\js\backend\command.js - Complex UI with dynamic form, table field selection, relation config

History Controller/Model - Lottery history records:

  • Controller: D:\code\php\amlhc\application\admin\controller\History.php - Standard CRUD (inherits Backend trait)
  • Model: D:\code\php\amlhc\application\admin\model\History.php - Simple model for fa_history table, no timestamp fields
  • Validate: D:\code\php\amlhc\application\admin\validate\History.php - Empty validation rules
  • Frontend: D:\code\php\amlhc\public\assets\js\backend\history.js - Custom colored ball rendering, loads color map from Num API at num/getColorMap
  • Index controller: D:\code\php\amlhc\application\index\controller\Index.php - get_history() scrapes https://history.macaumarksix.com/history/macaujc2/y/2026 using Guzzle

SQL Schema: D:\code\php\amlhc\sql\macaujc_history.sql - Defines macaujc_history table with full lottery record fields (expect, open_code, wave, zodiac, odd_even, big_small, etc.)

CLI Commands

Registered in application/command.php:

  • Crud - Code generator for CRUD operations (app\admin\command\Crud)
  • Menu - Menu generator (app\admin\command\Menu)
  • Install - Installation wizard (app\admin\command\Install)
  • Min - Asset minification (app\admin\command\Min)
  • Addon - Addon management (app\admin\command\Addon)
  • Api - API documentation generator (app\admin\command\Api)

Custom Extensions (extend/fast/)

Located in extend/fast/:

  • Auth.php - Authentication and permission library
  • Date.php - Date/time utilities
  • Form.php - Form builder/generator (largest utility)
  • Http.php - HTTP request utilities
  • Pinyin.php - Chinese pinyin wrapper
  • Random.php - Random string generation
  • Rsa.php - RSA encryption utilities
  • Tree.php - Tree data structure utilities
  • Version.php - Version comparison utilities

Stack analysis: 2026-04-21