1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/xi_fan-CompanyManager

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

CompanyManager проект

Техническая часть

  • Проектный менеджмент: maven.
  • Фреймворк: spring, springmvc, mybatis, easyui.
  • Данные: mysql.

Основное назначение Реализованы функции управления пользователями, меню, отделами, финансами, отчётами о финансах, задачами и словарями. Может служить примером для демонстрации возможностей (demo) для тех, кто имеет конкретные потребности, или для обучения новичков.

Блок управления пользователями

Требования:

  • В проекте есть три роли пользователей: обычные пользователи, системные администраторы и суперадминистраторы.
  • Управление правами: суперадминистратор имеет все права, включая добавление, изменение и удаление системных администраторов, а системный администратор может управлять обычными пользователями в соответствии с принципом иерархии.

Реализация блока управления пользователями:

    1. Начнём с уровня dao: в cn.springmvc.dao создаём UserInfoDao, который является интерфейсом и содержит информацию о пользователях. Подробнее см. реализацию в проекте cn.springmvc.dao.UserInfoDao.
    1. В соответствующем каталоге настраиваем маппер (Mapper) для UserInfoDao для реализации конкретных функций в mybatis. Подробнее см. реализацию в проекте cn.springmvc.dao.UserInfoMapper.
    1. В cn.springmvc.service создаём соответствующий сервисный интерфейс и реализуем конкретные функции на уровне сервиса в cn.springmvc.service.impl. Подробнее см. реализацию в проекте cn.springmvc.service.impl.UserInfoServiceImpl.
    1. В cn.springmvc.controller реализуем соответствующий контроллер. Подробнее см. реализацию в проекте cn.springmvc.service.controller.UserInfoController.

Блок управления меню

Требования:

  • Меню проекта можно разделить на две категории: системное меню, которое требует написания соответствующего кода для подключения, и веб-меню, для которого достаточно предоставить ссылку для перехода.
  • Основное внимание уделяется реализации CRUD для меню.

Реализация блока управления меню:

  • Разделение на слои и реализация аналогичны блоку управления пользователями. Можно напрямую обратиться к исходному коду.

Здесь я хотел бы рассказать о том, как я реализовал физическую разбивку на страницы с помощью mybatis:

Все, кто знаком с mybatis, знают, что разбивка на страницы, реализованная с использованием RowBounds, является логической разбивкой, то есть сначала выбираются все записи данных, а затем обрезаются в соответствии со значениями offset и limit. Чтобы реализовать физическую разбивку на страницы без изменения логики функций mybatis, можно написать плагин для перехвата Executorstatementhandler в mybatis и переписать SQL для выполнения запросов.

Как я это реализовал в проекте?

Я передал объект PageInfo, связанный с разбиением на страницы, через три слоя: представление, контроллер и модель.

В контроллере:

 @RequestMapping(value = "/queryUser")
 public String queryUser(Model    model,            @ModelAttribute(value = "pageInfo") PageInfo<UserInfo> pageInfo,@ModelAttribute(value = "user") UserInfo userInfo, @ModelAttribute(value = "dept") DeptInfo dept)  {     //Реализация бизнес-логики }

На уровне сервиса: после того как PageInfo упакован в RowBounds, он передаётся на уровень dao.

public ArrayList<UserInfo> queryUsers(Map<String, String> map,PageInfo<UserInfo> pageInfo) {
return userInfoDao.queryUsers(new     RowBounds(pageInfo.getFromRecord(),pageInfo.getPageSize()), map);}

В файле конфигурации mybatis настройте плагин: атрибут interceptor указывает на перехватчик;

<plugins>
	<plugin interceptor="cn.springmvc.utildao.PaginationInterceptor" />
</plugins>

PaginationInterceptor можно посмотреть в исходном коде проекта cn.springmvc.utildao. Для основных функций CRUD в mapper не было никаких изменений.

Примечание: остальные блоки похожи на два вышеупомянутых, подробности можно найти в исходном коде!


Проблема с сохранением json-данных при запросе в IE и режиме совместимости с 360:

Чтобы решить эту проблему, добавьте следующее в файл springmvc-servlet:

<!-- json формат конфигурации -->
<mvc:annotation-driven>
    <mvc:message-converters register-defaults="true">
        <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
            <property name="supportedMediaTypes">
                <list>
                    <value>text/html;charset=UTF-8</value>
                    <value>application/json;charset=UTF-8</value>
                </list>
            </property>
            <property name="objectMapper">
                <bean class="com.fasterxml.jackson.databind.ObjectMapper">
                    <property name="serializationInclusion">
                        <value type="com.fasterxml.jackson.annotation.JsonInclude.Include">NON_NULL</value>
                    </property>
                    <!-- 
                    <property name="dateFormat">
                        <bean class="java.text.SimpleDateFormat">
                            <constructor-arg value="yyyy-MM-dd HH:mm:ss"/>
                        </bean>
                    </property> -->
                </bean>
            </property>
        </bean>
    </mvc:message-converters>
</mvc:annotation-driven>

Это решит проблему.


Примечание: приглашаем заинтересованных друзей присоединиться к проекту и добавить свои уникальные идеи!

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Нэнкиу сисю проекта. Развернуть Свернуть
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/xi_fan-CompanyManager.git
git@api.gitlife.ru:oschina-mirror/xi_fan-CompanyManager.git
oschina-mirror
xi_fan-CompanyManager
xi_fan-CompanyManager
master