Данный проект является тренировочным проектом автора, созданным год назад, и больше не обновляется. Он предоставляется для изучения и использования.
Ранее два друга также сделали пожертвования проекту. Большое спасибо!
Проект:
Данный проект основан на SpringBoot и нацелен на автоматизацию офисной работы. На текущем этапе он объединяет Spring MVC, Shiro, MyBatis и Thymeleaf, а также другие распространённые фреймворки. Проект включает в себя управление пользователями, отделами, уведомлениями, журналами, закладками, ролями, меню, отпусками и их одобрением, а также генерацию кода.
Функции:
★ После добавления пользователя пароль по умолчанию устанавливается как 111111.
★ Если пользователь сбрасывает свой пароль, то по умолчанию ему устанавливается пароль 111111.
★ Когда отдел расформировывается, все пользователи этого отдела автоматически получают статус «не распределён».
★ При удалении роли все пользователи этой роли автоматически становятся обычными пользователями.
★ Можно настроить отображаемые меню через роли.
Видеоматериалы:
Импорт проекта. Руководство по использованию. Генерация кода.
Особенности проекта:
Основан на Spring Boot, что упрощает конфигурацию и зависимости Maven.
Система регистрации журналов записывает действия пользователей, такие как вход, выход и операции. С помощью аннотации @BizLog и функции AOP в Spring регистрируются конкретные бизнес-операции пользователей, включая вход и выход. Журналы можно скачать в формате Excel для удобства просмотра.
Использование Thymeleaf делает HTML-код более понятным.
Управление ролями позволяет настраивать меню для разных отделов, косвенно управляя правами доступа.
После создания таблицы класс LinGenerater может генерировать код, включающий HTML, JS, Dao, Service, Controller и т. д. Этот код можно скопировать в проект и использовать напрямую.
Конфигурация файла в стиле javabean:
В Lin отказались от традиционных XML-файлов конфигурации, сделав файлы конфигурации более понятными и лаконичными. Ниже приведён фрагмент из файла конфигурации Shiro:
@Configuration
public class ShiroConfig {
/**
* 安全管理器
* @param rememberMeManager
* @return
*/
@Bean
public DefaultWebSecurityManager securityManager(CookieRememberMeManager rememberMeManager){
DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
securityManager.setRememberMeManager(rememberMeManager);
securityManager.setRealm(this.shiroDbRealm());
return securityManager;
}
@Bean
public ShiroDbRealm shiroDbRealm(){
return new ShiroDbRealm();
}
Генерация кода:
Проект использует генератор Mybatis Plus для создания Bean и Dao. Velocity используется для генерации Controller, Service, ServiceImpl, HTML и JS файлов. После создания новой таблицы в базе данных, файлы кода могут быть сгенерированы на основе этой таблицы, реализуя базовые функции отображения таблиц, вставки, обновления, удаления и поиска, которые можно сразу же использовать, скопировав в проект. Также можно добавить данные меню в базу данных, чтобы увидеть эту страницу меню в проекте.
public static void main(String[] args) throws IOException {
// 参数为表名
LinGenerater lg = new LinGenerater("thing");
// 此方法可以 генерировать код
lg.execute();
// Этот метод может вставлять данные меню
lg.insertMenu("thing", "Тестирование генерации", "globe");
}
Регистрация журнала:
Регистрация журналов осуществляется через аспектно-ориентированное программирование (AOP) с использованием класса LogAop. Все методы, содержащие аннотацию @BizLog, подвергаются AOP-внедрению. Значение свойства value в аннотации используется для получения действий пользователя и упаковки их в класс журнала. Затем данные асинхронно сохраняются в базе данных с помощью класса ScheduledThreadPoolExecutor.
@Pointcut("@annotation(com.du.lin.annotation.BizLog)")
public void logCut() {
}
Использование Thymeleaf для упрощения HTML-кода:
Ниже приведён фрагмент кода для реализации функции закладок. На стороне сервера:
List<Memo> list = service.getUserMemoList();
request.setAttribute("memolist", list);
На стороне клиента HTML:
<li th:each="memo,memoStat:${memolist}">
<div>
<small th:text="${memo.time}"></small>
<small th:text="${memo.time}"></small>
<h4 th:text="${memo.title}"></h4>
<p th:text="${memo.text}"></p>
<a th:id="${memo.id}" onclick="deletememodialog(this)">
<i class="fa fa-trash-o "></i></a>
</div>
</li>
Используемые фреймворки:
Скриншоты проекта:
Интерфейс входа:
.
Интерфейс управления пользователями:
.
Интерфейс управления уведомлениями:
.
Интерфейс журнала входа:
.
Изменение пароля:
.
Интерфейс закладок:
.
Управление ролями:
}.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )