Quasar Sika Design Admin
Quasar Sika Design Admin — готовое решение пользовательского интерфейса (UI) для корпоративных приложений на основе шаблона Vue.
Основывается на Quasar.
| English | 简体中文
Quasar Sika Design Admin представляет собой набор решений для управления системами корпоративного уровня, которые включают в себя интерфейс пользователя и дизайн. Это шаблон для создания корпоративных систем управления, который основан на Ant Design и его ценностях в области дизайна. Он направлен на дальнейшее развитие на основе принципов проектирования и базовых компонентов, включая создание типовых шаблонов, бизнес-компонентов и соответствующих дизайнерских ресурсов. Цель проекта — повысить качество взаимодействия с пользователем и опыт разработчиков в процессе проектирования корпоративных систем.
Проект начался с Sika Design, но не ограничивается им. Каждый элемент разработан с целью обеспечить исключительный опыт. Видение: открытый исходный код может изменить мир. Sika Design Admin позволяет создавать код без трудностей.
- quasar-sika-design-admin
- quasar-sika-design // интерфейс пользователя на основе vue+quasar
- quasar-sika-design-server // серверная часть на основе springboot+mybatis
- doc // документация
- sql // сценарии SQL
- quasar-sika-design-server-common // общие компоненты; включая бизнес-константы, DTO, запросы и базовые DTO и сервисы и т. д.
- quasar-sika-design-server-core // основные бизнес-модули; включая сервисы, основную логику предметной области и т.д.
- quasar-sika-design-server-ataaccess // уровень доступа к базе данных
- quasar-sika-design-server-generator // модуль генератора кода [без необходимости разработки]
- quasar-sika-design-server-web // слой контроллера
- sika-code-cor // основные общие компоненты, включая, но не ограничиваясь, кэш-компоненты, генераторы кода, общие компоненты, доступ к данным, распределённые блокировки, фреймворк
- cache // кэш-компонент
- code-generator // генератор кода
- common // общий компонент
- databasse // доступ к базе данных
- hutool-starter // интеграция hutool
- lock // распределённая блокировка
- standard-footer // стандартный фреймворк
Технология | Официальный сайт | Примечание |
---|---|---|
Spring Framework | http://projects.spring.io/spring-framework/ | Контейнер |
spring-boot-dependencies | https://spring.io/projects/spring-boot/ | Без объяснений |
Apache Shiro | http://shiro.apache.org/ | Платформа безопасности |
MyBatis | http://www.mybatis.org/mybatis-3/zh/index.html | ORM-фреймворк |
MyBatisPlus | https://mp.baomidou.com/ | Расширенный ORM-фреймворк |
Mybatis-plus-boot-starter | https://mp.baomidou.com/ | Расширенный ORM-фреймворк |
Mybatis-Plus-Generator | https://baomidou.gitee.io/mybatis-plus-doc/#/generate-code/ | Расширенный ORM-генератор кода |
HikariCP | https://github.com/brettwooldridge/HikariCP/ | Пул соединений с базой данных |
ShardingSphere | https://shardingsphere.apache.org/ | Компонент сегментирования и разделения таблиц |
Redis | https://redis.io/ | Распределённое хранилище кэша |
commons-collections | http://commons.apache.org/proper/commons-collections/ | Набор инструментов для коллекций |
Log4J | http://logging.apache.org/log4j/1.2/ | Компонент ведения журнала |
FastJson | https://mvnrepository.com/artifact/com.alibaba/fastjson/ | Компонент сериализации и десериализации JSON |
Lombok | https://www.projectlombok.org/ | Упрощение кода Java |
Hutool | http://hutool.mydoc.io/ | Инструменты, соответствующие привычкам китайских пользователей |
MapStruct | http://mapstruct.org/ | Компонент преобразования сущностей |
Технология | Официальный сайт | Примечание |
---|---|---|
Vue | https://cn.vuejs.org/ | Фреймворк JavaScript, реализующий постепенное внедрение |
Quasar | http://www.quasarchs.com/quasar-cli/installation/#Introduction | Фреймворк интерфейса пользователя на базе Vue |
Echarts | https://echarts.apache.org/zh/index.html/ | Библиотека визуализации диаграмм на JavaScript |
Lodashi | https://www.lodashjs.com/ | Коллекция инструментов JavaScript для согласованности, модульности и производительности |
super.success(menuService.saveForBatch(menuDtos));
}
@RequestMapping(value = "update_by_id")
public Result updateById(@RequestBody MenuDTO menuDto) {
return super.success(menuService.updateById(menuDto));
}
@RequestMapping(value = "page")
public Result page(@RequestBody MenuQuery menuQuery) {
return super.success(menuService.page(menuQuery));
}
@RequestMapping(value = "find")
public Result find(@RequestBody MenuQuery menuQuery) {
return super.success(menuService.find(menuQuery));
}
@RequestMapping(value = "list")
public Result list(@RequestBody MenuQuery menuQuery) {
return super.success(menuService.list(menuQuery));
}
**Сервис, сгенерированный кодом:**
package com.quasar.sika.design.server.business.menu.service;
import com.quasar.sika.design.server.business.menu.pojo.dto.MenuDTO;
import com.sika.code.standard.base.service.BaseStandardService;
import java.util.List;
/**
}
**ServiceImpl, сгенерированный кодом:**
package com.quasar.sika.design.server.business.menu.service.impl;
import cn.hutool.core.collection.CollUtil;
import com.google.common.collect.Lists;
import com.quasar.sika.design.server.business.menu.convert.MenuConvert;
import com.quasar.sika.design.server.business.menu.entity.MenuEntity;
import com.quasar.sika.design.server.business.menu.mapper.MenuMapper;
import com.quasar.sika.design.server.business.menu.pojo.dto.MenuDTO;
import com.quasar.sika.design.server.business.menu.pojo.query.MenuQuery;
import com.quasar.sika.design.server.business.menu.service.MenuService;
import com.quasar.sika.design.server.business.rolemenu.service.RoleMenuService;
import com.sika.code.standard.base.convert.BaseConvert;
import com.sika.code.standard.base.service.impl.BaseStandardServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Set;
/**
菜单权限表 服务实现类
@author daiqi
@since 2021-01-07 23:35:10
*/
@Service(value = "menuService")
public class MenuServiceImpl extends BaseStandardServiceImpl<MenuMapper, MenuEntity, MenuDTO> implements MenuService {
@Autowired
private MenuMapper menuMapper;
@Override
protected BaseConvert<MenuEntity, MenuDTO> convert() {
return MenuConvert.INSTANCE;
}
}
**Mapper, сгенерированный кодом:**
package com.quasar.sika.design.server.business.menu.mapper;
import com.quasar.sika.design.server.business.menu.entity.MenuEntity;
import org.springframework.stereotype.Repository;
import com.sika.code.standard.base.basemapper.BaseStandardMapper;
/**
}
column="target" property="target" />
<result column="menu_type" property="menuType" />
<result column="visible" property="visible" />
<result column="perms" property="perms" />
<result column="icon" property="icon" />
</resultMap>
<!-- 通用查询结果列 -->
<sql id="columnList">
id, create_by, update_by, create_date, update_date, version, available, is_deleted, remark, menu_name, parent_id, order_num, url, target, menu_type, visible, perms, icon
</sql>
<!-- 根据查询条件获取列表信息 -->
<select id="listByQuery" resultMap="ResultMap" parameterType="com.quasar.sika.design.server.business.menu.pojo.query.MenuQuery" >
SELECT <include refid="columnList" />
FROM sika_menu
<where>
is_deleted = 0
<include refid="query_sql" />
</where>
</select>
**Перевод текста на русский язык:**
Колонка = «target» свойство = «target».
Результат колонка = «menu_type» свойство = «menuType».
Результат колонка = «visible» свойство = «visible».
Результат колонка = «perms» свойство = «perms».
Результат колонка = «icon» свойство = «icon».
// Общий список столбцов результатов запросов
SQL ID = "columnList":
ID, create_by, update_by, create_date, update_date, версия, доступно, is_deleted, примечание, menu_name, родительский_ID, order_num, URL, цель, тип_меню, видно, разрешения, значок.
// Получение списка информации по запросу
SELECT ID, create_by, update_by, create_date, update_date, версия, доступно, is_deleted, примечание, menu_name, родительский_ID, order_num, URL, цель, тип_меню, видно, разрешения, значок
FROM sika_menu,
WHERE is_deleted = 0,
INCLUDE refid = "query_sql". ```
test="query.sortColumn == 'menuId'">
id
</when>
<otherwise>
id
</otherwise>
В этом фрагменте кода на языке программирования используется язык разметки, который не является языком программирования. Это язык Markdown.
<!-- 排序类型的sql -->
<sql id="order_by_type_sql">
<choose>
<when test="query.sortType == 'DESC'">
DESC
</when>
<otherwise>
ASC
</otherwise>
</choose>
</sql>
Этот фрагмент представляет собой код на языке XML.
package com.quasar.sika.design.server.common.auth.context;
import com.quasar.sika.design.server.common.auth.executor.AuthRegisterRequestExecutor;
import com.quasar.sika.design.server.common.auth.pojo.request.AuthRegisterRequest;
import com.quasar.sika.design.server.common.captcha.pojo.request.CaptchaCheckRequest;
import com.quasar.sika.design.server.common.mail.context.CheckMailCodeContext;
import com.quasar.sika.design.server.common.mail.pojo.request.CheckMailRequest;
import com.quasar.sika.design.server.common.shiro.util.SHA256Util;
import com.sika.code.standard.base.pojo.context.BaseStandardContext;
import com.sika.code.standard.base.pojo.executor.BaseStandardExecutor;
@Data
@Accessors(chain = true)
public class AuthRegisterContext extends BaseStandardContext {
private AuthRegisterRequest registerRequest;
private CheckMailRequest checkMailRequest;
protected CaptchaCheckRequest captchaCheckRequest;
private CheckMailCodeContext checkMailCodeContext;
private Boolean bindOauthUser;
@Override
public void initCustomer() {
checkMailCodeContext = new CheckMailCodeContext().setRequest(checkMailRequest);
registerRequest.setPassword(SHA256Util.sha256(registerRequest));
}
@Override
protected Class<? extends BaseStandardExecutor> buildExecutorClass() {
return AuthRegisterRequestExecutor.class;
}
}
Это похоже на фрагмент кода на языке Java.
package com.quasar.sika.design.server.common.auth.executor;
import cn.hutool.core.util.BooleanUtil;
import com.quasar.sika.design.server.common.auth.context.AuthRegisterContext;
import com.quasar.sika.design.server.common.auth.domain.AuthDomain;
import com.quasar.sika.design.server.common.auth.pojo.request.AuthLoginRequest;
import com.quasar.sika.design.server.common.auth.pojo.request.AuthRegisterRequest;
import com.quasar.sika.design.server.common.auth.pojo.response.AuthResponse;
import com.sika.code.basic.pojo.dto.ServiceResult;
import com.sika.code.exception.BusinessException;
import lombok.Data;
import lombok.experimental.Accessors;
@Data
@Accessors(chain = true)
public class AuthRegisterRequestExecutor extends BaseStandardExecutor<AuthRegisterContext> implements AuthDomain {
@Override
protected void executeBefore() {
verify();
}
protected void verify() {
// 图片验证码校验
captchaService().checkCaptchaVerifyCode(context.getCaptchaCheckRequest());
// 邮箱验证码校验
executorManager().execute(context.getCheckMailCodeContext());
// 校验用户名
AuthRegisterRequest registerRequest = context.getRegisterRequest();
authService().checkRegisterUsername(registerRequest);
// 校验邮箱
authService().checkRegisterEmail(registerRequest);
// 校验手机号
authService().checkRegisterPhone(registerRequest);
}
@Override
protected ServiceResult doExecute() {
AuthRegisterRequest registerRequest = context.getRegisterRequest();
boolean saveSuccess = userService().save(registerRequest);
if (BooleanUtil.isFalse(saveSuccess)) {
throw new BusinessException("保存失败,请校验注册参数");
}
return ServiceResult.newInstanceOfSucResult(AuthResponse.success(registerRequest));
}
@Override
protected void executeAfter() {
// 自动登录
AuthRegisterRequest registerRequest = context.getRegisterRequest();
}
Это также похоже на фрагмент кода на языке Java.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )