Mars-Admin : Solution de gestion d'entreprise basée sur Spring Boot 3, Vue 3 et UniApp

Mars-Admin est une plateforme de gestion full-stack moderne conçue pour répondre aux besoins des entreprises souhaitant déployer rapidement des outils d'administration robustes. S'appuyant sur les dernières versions de Spring Boot, Vue.js et UniApp, cette solution offre une architecture découplée permettant une exploitation sur le Web, les mini-programmes et les applications mobiles natives.

Caractéristiques principales du système

  • Écosystème unifié : Une seule base de code pour gérer l'API back end, l'interface d'administration Web et l'application mobile.
  • Sécurité avancée : Authentification gérée par Sa-Token avec stockage des sessions dans Redis et un modèle de contrôle d'accès basé sur les rôles (RBAC).
  • Design moderne : Interface Web utilisant Ant Design Vue 4 et application mobile exploitant des effets visuels contemporains comme le dépoli (glassmorphism).
  • Observabilité : Monitoring des requêtes SQL en temps réel, analyse des performances et détection des requêtes lentes directement dans le tableau de bord.
  • Automatisation : Intégration native avec Snail-Job pour la gestion distribuée des tâches planifiées.

Architecture Technique

Le projet est structuré de manière modulaire pour faciliter la maintenance et l'évolution de chaque composant :

  • Backend : Framework Spring Boot 3, persistance avec MyBatis-Flex et base de données MySQL 8.
  • Frontend Web : Vue 3, TypeScript et Vite pour une expérience de développement fluide.
  • Application Mobile : Framework UniApp permettant un déploiement multi-plateforme (iOS, Android, H5, WeChat).

// Structure simplifiée du projet
mars-admin-project/
├── mars-server/          // API Spring Boot 3
├── mars-console-web/     // Interface Web (Vue 3 + Vite)
├── mars-mobile-app/      // Application UniApp
├── snail-job-service/    // Planificateur de tâches
└── data-scripts/         // Scripts SQL et configuration
   

Spécifications du Stack Logiciel

Composant Technologie Rôle
Cœur Backend Spring Boot 3.0+ / Java 17 Logique métier et API REST
Accès Données MyBatis-Flex Mapping Objet-Relationnel (ORM)
Sécurité Sa-Token Gestion des jetons et permissions
Interface Web Vue 3.5+ / Ant Design Vue Panneau d'administration
Mobile UniApp / Vue 2/3 Client multi-support
Cache / MQ Redis 7.0+ Performance et messagerie

Guide de Développement Backend

La création de nouveaux modules suit un pattern standardisé pour assurer la cohérence du code. Voici un exemple d'implémentation pour un module de gestion d'inventaire.

1. Définition de l'Entité


@Data
@Table(value = "inv_produit")
public class Produit extends BaseEntity {
   @Id(keyType = KeyType.Auto)
   private Long id;
   
   private String nom;
   private Integer stockActuel;
   private BigDecimal prixUnitaire;
}
   

2. Contrôleur et Sécurisation

L'accès aux ressources est protégé par des annotations simples qui vérifient les permissions de l'utilisateur connecté.


@RestController
@RequestMapping("/api/inventaire")
public class InventaireController {

   @Autowired
   private InventaireService stockService;

   @SaCheckPermission("inv:produit:view")
   @GetMapping("/liste")
   public ApiResponse<List<Produit>> obtenirProduits() {
       return ApiResponse.success(stockService.listAll());
   }

   @SaCheckRole("admin")
   @PostMapping("/ajouter")
   public ApiResponse<Void> creerProduit(@RequestBody Produit p) {
       stockService.save(p);
       return ApiResponse.success();
   }
}
   

Développement Frontend (Vue 3)

Le frontend utilise l'API de composition (Script Setup) pour une meilleure lisibilité et réutilisation du code.


<script setup lang="ts">
import { ref, onMounted } from 'vue';
import { getStockData } from '@/api/stock';

const items = ref([]);
const loading = ref(false);

async function refreshStock() {
 loading.value = true;
 try {
   const { data } = await getStockData();
   items.value = data;
 } finally {
   loading.value = false;
 }
}

onMounted(() => {
 refreshStock();
});
</script>

<template>
 <a-table :data-source="items" :loading="loading">
   <a-table-column title="Nom" data-index="nom" />
   <a-table-column title="Quantité" data-index="stockActuel" />
 </a-table>
</template>
   

Surveillance et Maintenance

Le système intègre nativement des outils de diagnostic essentiels pour la mise en production :

  • Journalisation SQL : Affichage coloré des requêtes dans la console avec identification visuelle de la durée d'exécution (vert pour rapide, jaune pour modéré, rouge pour lent).
  • État du Serveur : monitoring de l'utilisation du processeur, de la mémoire JVM et de l'espace disque.
  • Gestion des Sessions : Visualisation des utilisateurs actifs avec possibilité de forcer la déconnexion en cas de comportement suspect.

Procédure d'Installation Rapide

Pour déployer l'environnement de développement, assurez-vous de disposer de Java 17 et Node.js 18+.

Configuration de la base de données


# Création de la base
CREATE DATABASE mars_db DEFAULT CHARACTER SET utf8mb4;

# Importation du schéma (localisé dans /data-scripts/init.sql)
mysql -u root -p mars_db < schema.sql
   

Lancement du Backend

Modifiez le fichier application-dev.yml pour configurer vos accès MySQL et Redis, puis exécutez :


mvn clean install
mvn spring-boot:run -Dspring-boot.run.mainClass=com.mars.AdminApplication
   

Lancement du Frontend


cd mars-console-web
pnpm install
pnpm dev
   

Étiquettes: Spring Boot 3 Vue 3 uniapp TypeScript MyBatis-Flex

Publié le 17 juillet à 17h32