На основе SpringBoot+SpringMVC+MybatisPlus распределённая система быстрой разработки программного обеспечения, поддерживающая SAAS.
Предназначена для создания комплексных решений корпоративного уровня для малых и средних предприятий.
Архитектура системы:
Установка:
Использование:
Если у вас есть вопросы, вы можете присоединиться к группе QQ: 951379340.
Основные функции:
— Демонстрация: http://43.142.119.227/. — Центр пользователей: * Управление пользователями: настройка параметров пользователя, пароль по умолчанию после создания пользователя — cmd.c0m. * Пользователи онлайн: подсчёт количества активных пользователей. * Ролевое управление: назначение разрешений и меню в соответствии с отделами. * Организационная структура отделов: возможность настройки структуры организации. — Системный центр: * Меню управления: реализована динамическая маршрутизация меню, поддерживается многоуровневое меню. * Словарь управления: поддержка управления часто используемыми данными, такими как пол. * Хранилище управления: запись и хранение прикреплённых файлов. * Конфигурация форм: использование генератора форм для создания форм. * Управление данными: централизованное управление данными динамических форм. — Журнал центра: * Ведение журнала: регистрация действий пользователей и исключений. * ELK журнал: не реализовано. — Рабочий процесс центра: * Управление рабочим процессом: создание рабочих процессов вручную. * Задачи на рассмотрении: текущие задачи на рассмотрение. * Отпускные заявки: динамическая настройка, просмотр конфигурации форм. * Финансовые заявки: динамическая настройка, просмотр конфигурации форм.
Структура проекта:
— cmdAdmin-common — общие модули системы, содержащие различные инструменты и общую конфигурацию. — cmdAdmin-gateway — уровень шлюза, через который проходят все входящие запросы. — cmdAdmin-modules — модули системы.
Запуск проекта:
Исключения CmdException используются для обработки общих исключений.
/**
* @author cmd
* @date 2020-11-23 Общая обработка исключений
*/
@Getter
public class CmdException extends RuntimeException {
/**
*
*/
private static final long serialVersionUID = 1L;
private Integer status = BAD_REQUEST.value();
public CmdException(String msg) {
super(msg);
}
public CmdException(Integer status, String msg) {
super(msg);
this.status = status;
}
public CmdException(BusinessEnum bus) {
super(bus.getMsg());
this.status = bus.getStatus();
}
}
Используется глобальный обработчик исключений @RestControllerAdvice для обработки отправленных запросов на исключение.
@RestControllerAdvice: по умолчанию будет сканировать все аннотации @RequestMapping в указанном пакете.
@ExceptionHandler: можно фильтровать и перехватывать условия с помощью свойства value аннотации @ExceptionHandler.
/\*\*
- Обработчик исключений
-
- @author cmd
- @date 2020 年 11 月 28 日 下午 11:22:48
\*/
@Slf4j
@RestControllerAdvice
public class GlobalExceptionHandler {
/**
* Обработка всех неизвестных исключений
*/
@ExceptionHandler(Throwable.class)
public ResponseEntity<CmdError> handleException(Throwable e) {
// Печать стека вызовов
log.error(ThrowableUtil.getStackTrace(e));
return buildResponseEntity(CmdError.error(e.getMessage()));
}
/**
* Обработка пользовательских исключений
*/
@ExceptionHandler(value = CmdException.class)
public ResponseEntity<CmdResponse> badRequestException(CmdException e) {
CmdResponse response = new CmdResponse();
response.setCode(e.getStatus());
response.setMessage(e.getMessage());
return ResponseEntity.ok(response);
}
/**
* Исключение проверки параметров интерфейса
*
* @param e
* @return
*/
@ExceptionHandler(value = MethodArgumentNotValidException.class)
public ResponseEntity<CmdResponse> methodArgumentNotValidException(MethodArgumentNotValidException e) {
List<FieldError> bindingResult = e.getBindingResult().getFieldErrors();
StringBuilder sb = new StringBuilder();
for (FieldError fieldError : bindingResult) {
sb.append(fieldError.getDefaultMessage()).append(";");
}
CmdResponse response = new CmdResponse();
response.setCode(100);
response.setMessage(sb.toString());
return ResponseEntity.ok(response);
}
/**
* Унифицированный ответ
*/
private ResponseEntity<CmdError> buildResponseEntity(CmdError CmdError) {
return new ResponseEntity<>(CmdError, HttpStatus.valueOf(CmdError.getStatus()));
}
}
// Общее исключение
throw new CmdException("Системное напоминание");
// Общее исключение, использование пользовательского кода состояния
throw new CmdException(402, "Системное напоминание");
В этой системе используется AOP для записи журналов операций пользователей. Нужно только использовать аннотацию @Log("") в методе контроллера, чтобы записать операции пользователя в базу данных.
Конкретное использование:
@Log("Удаление пользователя")
@CmdAdmin({"admin","user:delete"})
@DeleteMapping
public ResponseEntity<CmdResponse> delete(@RequestBody String[] ids) {
userService.delete(ids);
CmdResponse response = new CmdResponse();
response.setMessage(BusinessEnum.DELETE_SUCCESS.getMsg());
return ResponseEntity.ok(response);
}
Центр журнала страниц может отображать журналы операций и журналы исключений. Изображения не несут текстовой информации, поэтому их перевод невозможен.
В запросе приведены ссылки на изображения с пометкой «屏幕截图.png», что в переводе означает «скриншот экрана». Вероятно, это скриншоты из какого-то технического документа или инструкции.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )