Showing preview only (2,399K chars total). Download the full file or copy to clipboard to get everything.
Repository: u014427391/taoshop
Branch: master
Commit: e3a5b4fb137b
Files: 342
Total size: 2.2 MB
Directory structure:
gitextract_58r9gm9n/
├── .gitignore
├── LICENSE
├── README.md
├── docs/
│ ├── taoshop.sql
│ ├── 数据库设计文档.docx
│ ├── 架构图.pos
│ ├── 电商平台设计.mdl
│ ├── 电商平台设计.md~
│ └── 阿里巴巴Java开发手册.doc
└── src/
├── ReadMe.md
├── pom.xml
├── taoshop-cms/
│ ├── ReadMe.md
│ ├── pom.xml
│ └── src/
│ └── main/
│ └── webapp/
│ ├── WEB-INF/
│ │ └── web.xml
│ └── index.jsp
├── taoshop-common/
│ ├── ReadMe.md
│ ├── pom.xml
│ ├── taoshop-common-cache/
│ │ ├── ReadMe.md
│ │ └── pom.xml
│ ├── taoshop-common-core/
│ │ ├── ReadMe.md
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ └── java/
│ │ │ └── com/
│ │ │ └── muses/
│ │ │ └── taoshop/
│ │ │ └── common/
│ │ │ └── core/
│ │ │ ├── base/
│ │ │ │ ├── Constants.java
│ │ │ │ └── ResultStatus.java
│ │ │ ├── database/
│ │ │ │ ├── annotation/
│ │ │ │ │ ├── AnnotationConstants.java
│ │ │ │ │ ├── MybatisRepository.java
│ │ │ │ │ └── TypeAliasesPackageScanner.java
│ │ │ │ ├── config/
│ │ │ │ │ ├── BaseConfig.java
│ │ │ │ │ ├── DataSourceConfig.java
│ │ │ │ │ ├── MybatisConfig.java
│ │ │ │ │ └── MybatisSqlInterceptor.java
│ │ │ │ └── typehandlers/
│ │ │ │ ├── Spring2BooleanTypeHandler.java
│ │ │ │ └── UnixLong2DateTypeHandler.java
│ │ │ ├── exception/
│ │ │ │ └── CommonException.java
│ │ │ └── util/
│ │ │ ├── DateUtils.java
│ │ │ ├── JsonDateSerializer.java
│ │ │ ├── SerializeUtils.java
│ │ │ └── UUIDGenerator.java
│ │ └── test/
│ │ └── java/
│ │ └── org/
│ │ └── muses/
│ │ └── commo/
│ │ ├── AppTest.java
│ │ ├── MybatisSqlInterceptor.java
│ │ └── RedisWithReentrantLock.java
│ ├── taoshop-common-rpc/
│ │ ├── ReadMe.md
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ └── java/
│ │ │ └── org/
│ │ │ └── muses/
│ │ │ └── common/
│ │ │ └── App.java
│ │ └── test/
│ │ └── java/
│ │ └── org/
│ │ └── muses/
│ │ └── common/
│ │ └── AppTest.java
│ └── taoshop-security-core/
│ ├── ReadMe.md
│ ├── pom.xml
│ └── src/
│ └── main/
│ └── java/
│ └── com/
│ └── muses/
│ └── taoshop/
│ └── common/
│ ├── cas/
│ │ ├── casRealm/
│ │ │ └── ShiroCasRealm.java
│ │ ├── config/
│ │ │ └── CasConfiguration.java
│ │ └── constant/
│ │ └── CasConsts.java
│ └── security/
│ └── core/
│ ├── filter/
│ │ └── SysAccessControllerFilter.java
│ ├── shiro/
│ │ └── realm/
│ │ └── CommonShiroRealm.java
│ └── utils/
│ └── AESUtil.java
├── taoshop-manager/
│ ├── ReadMe.md
│ ├── pom.xml
│ ├── taoshop-manager-api/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ └── java/
│ │ │ └── com/
│ │ │ └── muses/
│ │ │ └── taoshop/
│ │ │ └── manager/
│ │ │ ├── entity/
│ │ │ │ ├── ItemOrders.java
│ │ │ │ ├── Menu.java
│ │ │ │ ├── Operation.java
│ │ │ │ ├── Permission.java
│ │ │ │ ├── SysRole.java
│ │ │ │ └── SysUser.java
│ │ │ └── service/
│ │ │ ├── IItemOrdersService.java
│ │ │ ├── IMenuService.java
│ │ │ ├── ISysPermissionService.java
│ │ │ ├── ISysRoleService.java
│ │ │ └── ISysUserService.java
│ │ └── test/
│ │ └── java/
│ │ └── com/
│ │ └── muses/
│ │ └── taoshop/
│ │ └── AppTest.java
│ ├── taoshop-manager-service/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ ├── java/
│ │ │ │ └── com/
│ │ │ │ └── muses/
│ │ │ │ └── taoshop/
│ │ │ │ └── manager/
│ │ │ │ ├── mapper/
│ │ │ │ │ ├── ItemOrdersMapper.java
│ │ │ │ │ ├── SysMenuMapper.java
│ │ │ │ │ ├── SysPermissionMapper.java
│ │ │ │ │ ├── SysRoleMapper.java
│ │ │ │ │ └── SysUserMapper.java
│ │ │ │ └── service/
│ │ │ │ ├── ItemOrdersServiceImpl.java
│ │ │ │ ├── MenuServiceImpl.java
│ │ │ │ ├── SysPermissionServiceImpl.java
│ │ │ │ ├── SysRoleServiceImpl.java
│ │ │ │ └── SysUserServiceImpl.java
│ │ │ └── resources/
│ │ │ └── mybatis/
│ │ │ ├── SysMenuMapper.xml
│ │ │ ├── SysPermissionMapper.xml
│ │ │ ├── SysRoleMapper.xml
│ │ │ └── SysUserMapper.xml
│ │ └── test/
│ │ └── java/
│ │ └── com/
│ │ └── muses/
│ │ └── taoshop/
│ │ └── AppTest.java
│ └── taoshop-manager-web/
│ ├── ReadMe.md
│ ├── pom.xml
│ └── src/
│ └── main/
│ ├── java/
│ │ └── com/
│ │ └── muses/
│ │ └── taoshop/
│ │ └── manager/
│ │ ├── WebApplication.java
│ │ ├── config/
│ │ │ ├── MybatisConfig.java
│ │ │ ├── ShiroConfig.java
│ │ │ ├── ThymeleafConfig.java
│ │ │ └── WebConfig.java
│ │ ├── core/
│ │ │ ├── Constants.java
│ │ │ └── shiro/
│ │ │ └── ShiroRealm.java
│ │ ├── util/
│ │ │ └── MenuTreeUtil.java
│ │ └── web/
│ │ └── controller/
│ │ ├── BaseController.java
│ │ ├── CodeController.java
│ │ ├── LoginController.java
│ │ ├── item/
│ │ │ └── OrderController.java
│ │ ├── menu/
│ │ │ └── MenuController.java
│ │ └── userCenter/
│ │ └── UserController.java
│ ├── resources/
│ │ ├── application.yml
│ │ ├── plugins/
│ │ │ ├── datepicker/
│ │ │ │ ├── css/
│ │ │ │ │ ├── bootstrap-datepicker.css
│ │ │ │ │ └── bootstrap.css
│ │ │ │ └── js/
│ │ │ │ └── bootstrap-datepicker.js
│ │ │ └── select2/
│ │ │ ├── css/
│ │ │ │ └── select2.css
│ │ │ └── js/
│ │ │ ├── i18n/
│ │ │ │ ├── ar.js
│ │ │ │ ├── az.js
│ │ │ │ ├── bg.js
│ │ │ │ ├── ca.js
│ │ │ │ ├── cs.js
│ │ │ │ ├── da.js
│ │ │ │ ├── de.js
│ │ │ │ ├── en.js
│ │ │ │ ├── es.js
│ │ │ │ ├── et.js
│ │ │ │ ├── eu.js
│ │ │ │ ├── fa.js
│ │ │ │ ├── fi.js
│ │ │ │ ├── fr.js
│ │ │ │ ├── gl.js
│ │ │ │ ├── he.js
│ │ │ │ ├── hi.js
│ │ │ │ ├── hr.js
│ │ │ │ ├── hu.js
│ │ │ │ ├── id.js
│ │ │ │ ├── is.js
│ │ │ │ ├── it.js
│ │ │ │ ├── ja.js
│ │ │ │ ├── ko.js
│ │ │ │ ├── lt.js
│ │ │ │ ├── lv.js
│ │ │ │ ├── mk.js
│ │ │ │ ├── ms.js
│ │ │ │ ├── nb.js
│ │ │ │ ├── nl.js
│ │ │ │ ├── pl.js
│ │ │ │ ├── pt-BR.js
│ │ │ │ ├── pt.js
│ │ │ │ ├── ro.js
│ │ │ │ ├── ru.js
│ │ │ │ ├── sk.js
│ │ │ │ ├── sr-Cyrl.js
│ │ │ │ ├── sr.js
│ │ │ │ ├── sv.js
│ │ │ │ ├── th.js
│ │ │ │ ├── tr.js
│ │ │ │ ├── uk.js
│ │ │ │ ├── vi.js
│ │ │ │ ├── zh-CN.js
│ │ │ │ └── zh-TW.js
│ │ │ ├── select2.full.js
│ │ │ └── select2.js
│ │ ├── static/
│ │ │ ├── css/
│ │ │ │ ├── backend.css
│ │ │ │ ├── page/
│ │ │ │ │ └── backend/
│ │ │ │ │ ├── account_center.css
│ │ │ │ │ ├── login.css
│ │ │ │ │ └── order_manage.css
│ │ │ │ └── style.css
│ │ │ └── js/
│ │ │ ├── common.js
│ │ │ ├── jquery.cookie.js
│ │ │ ├── jquery.js
│ │ │ ├── jquery.pagination.js
│ │ │ └── jquery.tips.js
│ │ └── templates/
│ │ ├── admin/
│ │ │ ├── frame/
│ │ │ │ ├── common.html
│ │ │ │ ├── index.html
│ │ │ │ ├── nav.html
│ │ │ │ └── sider_bar_bk.html
│ │ │ ├── order/
│ │ │ │ ├── order_content_wrap.html
│ │ │ │ └── order_list.html
│ │ │ └── user/
│ │ │ ├── user_center.html
│ │ │ └── user_content_wrap.html
│ │ └── login.html
│ └── webapp/
│ ├── WEB-INF/
│ │ └── web.xml
│ └── index.jsp
├── taoshop-order/
│ ├── ReadMe.md
│ ├── pom.xml
│ └── src/
│ └── main/
│ ├── java/
│ │ └── com/
│ │ └── muses/
│ │ └── taoshop/
│ │ └── order/
│ │ ├── OrderApplication.java
│ │ └── web/
│ │ └── controller/
│ │ ├── BaseController.java
│ │ └── OrderController.java
│ ├── resources/
│ │ └── application.yml
│ └── webapp/
│ ├── WEB-INF/
│ │ └── web.xml
│ └── index.jsp
├── taoshop-portal/
│ ├── ReadMe.md
│ ├── pom.xml
│ └── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── com/
│ │ │ └── muses/
│ │ │ └── taoshop/
│ │ │ ├── PortalApplication.java
│ │ │ ├── aop/
│ │ │ │ └── OperationRecordLog.java
│ │ │ ├── base/
│ │ │ │ ├── ConfigConsts.java
│ │ │ │ ├── SessionConsts.java
│ │ │ │ └── ViewNameConsts.java
│ │ │ ├── config/
│ │ │ │ └── WebConfig.java
│ │ │ ├── util/
│ │ │ │ └── CategoryTreeUtils.java
│ │ │ └── web/
│ │ │ └── controller/
│ │ │ ├── BaseController.java
│ │ │ ├── CodeController.java
│ │ │ ├── LoginController.java
│ │ │ ├── cart/
│ │ │ │ └── ShopCartController.java
│ │ │ ├── portal/
│ │ │ │ ├── IndexController.java
│ │ │ │ ├── ItemCategoryController.java
│ │ │ │ └── ItemDetailController.java
│ │ │ └── user/
│ │ │ └── UserController.java
│ │ ├── resources/
│ │ │ ├── application-dev.properties
│ │ │ ├── application-prod.properties
│ │ │ ├── application-uat.properties
│ │ │ ├── application.properties
│ │ │ ├── application.yml
│ │ │ ├── logback_spring.xml.bat
│ │ │ ├── static/
│ │ │ │ ├── css/
│ │ │ │ │ ├── cart.css
│ │ │ │ │ ├── category.css
│ │ │ │ │ ├── detail.css
│ │ │ │ │ ├── index.css
│ │ │ │ │ ├── jqzoom.css
│ │ │ │ │ ├── public.css
│ │ │ │ │ ├── reg-login.css
│ │ │ │ │ ├── user.css
│ │ │ │ │ └── you_like.css
│ │ │ │ └── js/
│ │ │ │ ├── html5.js
│ │ │ │ ├── jquery.cookie.js
│ │ │ │ ├── jquery.js
│ │ │ │ ├── jquery.tips.js
│ │ │ │ ├── jqzoom.js
│ │ │ │ └── popbox.js
│ │ │ └── templates/
│ │ │ ├── footer.html
│ │ │ ├── header_main.html
│ │ │ ├── header_nav.html
│ │ │ ├── index.html
│ │ │ ├── index_header_nav.html
│ │ │ ├── item/
│ │ │ │ ├── item_category.html
│ │ │ │ └── item_detail.html
│ │ │ ├── login.html
│ │ │ ├── shopcart/
│ │ │ │ └── add_shopcart_success.html
│ │ │ ├── test.html
│ │ │ ├── top_bar.html
│ │ │ └── user/
│ │ │ └── portal_user_center.html
│ │ └── webapp/
│ │ ├── WEB-INF/
│ │ │ └── web.xml
│ │ └── index.jsp
│ └── test/
│ └── java/
│ └── com/
│ └── muses/
│ └── taoshop/
│ ├── Attachment.java
│ ├── Client.java
│ ├── Email.java
│ ├── JDBCFacade.java
│ ├── ParseDateTest.java
│ └── ThreadLocalTest.java
├── taoshop-provider/
│ ├── ReadMe.md
│ ├── pom.xml
│ ├── taoshop-provider-item/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ ├── java/
│ │ │ └── com/
│ │ │ └── muses/
│ │ │ └── taoshop/
│ │ │ └── item/
│ │ │ ├── mapper/
│ │ │ │ ├── ItemBrandMapper.java
│ │ │ │ ├── ItemCategoryMapper.java
│ │ │ │ ├── ItemMapper.java
│ │ │ │ └── ItemSpecMapper.java
│ │ │ └── service/
│ │ │ ├── ItemBrankServiceImpl.java
│ │ │ ├── ItemCategoryServiceImpl.java
│ │ │ ├── ItemServiceImpl.java
│ │ │ └── ItemSpecServiceImpl.java
│ │ └── resources/
│ │ └── mybatis/
│ │ ├── ItemBrandMapper.xml
│ │ ├── ItemCategoryMapper.xml
│ │ ├── ItemMapper.xml
│ │ └── ItemSpecMapper.xml
│ ├── taoshop-provider-order/
│ │ └── pom.xml
│ ├── taoshop-provider-shop/
│ │ └── pom.xml
│ └── taoshop-provider-usc/
│ ├── ReadMe.md
│ ├── pom.xml
│ └── src/
│ └── main/
│ ├── java/
│ │ └── com/
│ │ └── muses/
│ │ └── taoshop/
│ │ └── user/
│ │ ├── mapper/
│ │ │ └── UserMapper.java
│ │ └── service/
│ │ └── UserServiceImpl.java
│ └── resources/
│ └── mybatis/
│ └── UserMapper.xml
├── taoshop-provider-api/
│ ├── ReadMe.md
│ ├── pom.xml
│ ├── taoshop-provider-api-item/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ └── java/
│ │ └── com/
│ │ └── muses/
│ │ └── taoshop/
│ │ └── item/
│ │ ├── entity/
│ │ │ ├── ItemBrand.java
│ │ │ ├── ItemCategory.java
│ │ │ ├── ItemDetail.java
│ │ │ ├── ItemDto.java
│ │ │ ├── ItemList.java
│ │ │ ├── ItemPortal.java
│ │ │ ├── ItemSku.java
│ │ │ ├── ItemSkuSpecValue.java
│ │ │ ├── ItemSpec.java
│ │ │ ├── ItemSpecValue.java
│ │ │ ├── ItemSpu.java
│ │ │ └── ItemSpuSpec.java
│ │ └── service/
│ │ ├── IItemBrankService.java
│ │ ├── IItemCategoryService.java
│ │ ├── IItemService.java
│ │ └── IItemSpecService.java
│ ├── taoshop-provider-api-order/
│ │ ├── ReadMe.md
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ └── java/
│ │ │ └── org/
│ │ │ └── muses/
│ │ │ └── provider/
│ │ │ └── api/
│ │ │ └── App.java
│ │ └── test/
│ │ └── java/
│ │ └── org/
│ │ └── muses/
│ │ └── provider/
│ │ └── api/
│ │ └── AppTest.java
│ ├── taoshop-provider-api-shop/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ └── java/
│ │ └── com/
│ │ └── muses/
│ │ └── taoshop/
│ │ └── item/
│ │ └── entity/
│ │ ├── ShopInfo.java
│ │ └── ShopInfoExample.java
│ └── taoshop-provider-api-usc/
│ ├── pom.xml
│ └── src/
│ └── main/
│ └── java/
│ └── com/
│ └── muses/
│ └── taoshop/
│ └── user/
│ ├── entity/
│ │ └── User.java
│ └── service/
│ └── IUserService.java
├── taoshop-quartz/
│ ├── ReadMe.md
│ └── pom.xml
├── taoshop-search/
│ ├── ReadMe.md
│ ├── pom.xml
│ └── src/
│ ├── main/
│ │ └── java/
│ │ └── com/
│ │ └── muses/
│ │ └── base/
│ │ └── search/
│ │ ├── LuceneConstants.java
│ │ ├── TestLucene.java
│ │ └── biz/
│ │ ├── LuceneIndexer.java
│ │ └── SearchBuilder.java
│ └── test/
│ └── java/
│ └── com/
│ └── test/
│ ├── lucene/
│ │ ├── LuceneIndexer.java
│ │ └── SearchBuilder.java
│ ├── pattern/
│ │ ├── CurrentConditionsDisplay.java
│ │ ├── DisplayElement.java
│ │ ├── ForecastDisplay.java
│ │ ├── Observer.java
│ │ ├── Singleton.java
│ │ ├── StatisticsDisplay.java
│ │ ├── Subject.java
│ │ ├── WeatherData.java
│ │ └── WeatherStation.java
│ └── thread/
│ └── ThreadTest.java
└── taoshop-sso/
├── pom.xml
└── src/
└── main/
├── java/
│ ├── ReadMe.txt
│ ├── com/
│ │ └── muses/
│ │ └── taoshop/
│ │ └── sso/
│ │ └── authentication/
│ │ └── UsernamePasswordAuthenticationHandler.java
│ └── org/
│ └── jasig/
│ └── cas/
│ ├── CentralAuthenticationServiceImpl.java
│ ├── adaptors/
│ │ └── jdbc/
│ │ ├── AbstractJdbcUsernamePasswordAuthenticationHandler.java
│ │ └── QueryDatabaseAuthenticationHandler.java
│ ├── authentication/
│ │ └── UsernamePasswordCredential.java
│ ├── support/
│ │ └── rest/
│ │ └── TicketsResource.java
│ └── web/
│ └── flow/
│ ├── AuthenticationExceptionHandler.java
│ └── AuthenticationViaFormAction.java
├── resources/
│ ├── application.properties
│ ├── application.yml
│ └── services/
│ ├── Apereo-10000002.json
│ └── HTTPSandIMAPS-10000001.json
└── webapp/
└── WEB-INF/
├── cas_dev.properties
├── index.jsp
├── spring-configuration/
│ └── propertyFileConfigurer.xml
└── view/
└── jsp/
├── authorizationFailure.jsp
├── default/
│ └── ui/
│ ├── casAcceptableUsagePolicyView.jsp
│ ├── casAccountDisabledView.jsp
│ ├── casAccountLockedView.jsp
│ ├── casBadHoursView.jsp
│ ├── casBadWorkstationView.jsp
│ ├── casConfirmView.jsp
│ ├── casExpiredPassView.jsp
│ ├── casGenericSuccessView.jsp
│ ├── casLoginMessageView.jsp
│ ├── casLoginView.jsp
│ ├── casLogoutView.jsp
│ ├── casMustChangePassView.jsp
│ ├── serviceErrorSsoView.jsp
│ └── serviceErrorView.jsp
└── errors.jsp
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitignore
================================================
# ---> Java
*.class
# Mobile Tools for Java (J2ME)
.mtj.tmp/
# Package Files #
*.jar
*.war
*.ear
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
# ---> Eclipse
*.pydevproject
.metadata
.gradle
bin/
tmp/
*.tmp
*.bak
*.swp
*~.nib
local.properties
.settings/
.loadpath
# Eclipse Core
.project
# External tool builders
.externalToolBuilders/
# Locally stored "Eclipse launch configurations"
*.launch
# CDT-specific
.cproject
# JDT-specific (Eclipse Java Development Tools)
.classpath
# Java annotation processor (APT)
.factorypath
# PDT-specific
.buildpath
# sbteclipse plugin
.target
# TeXlipse plugin
.texlipse
# ---> Maven
target/
out/
overlays/
pom.xml.tag
pom.xml.releaseBackup
pom.xml.versionsBackup
pom.xml.next
release.properties
dependency-reduced-pom.xml
buildNumber.properties
.mvn/timing.properties
# ---> TortoiseGit
# Project-level settings
/.tgitconfig
# ---> SVN
.svn/
# IDEA
*.iml
.idea/
/*.iml
================================================
FILE: LICENSE
================================================
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
================================================
FILE: README.md
================================================
[](https://travis-ci.org/crossoverJie/taoshop)
# 电子商务项目
## 电商项目简介
电子商务项目[taoshop](https://github.com/u014427391/taoshop)</br>
代码已经捐赠给开源中国社区:https://www.oschina.net/p/taoshop
项目releases链接:https://github.com/u014427391/taoshop/releases
本开源电商项目,SpringBoot+Dubbo技术栈实现微服务,实现一款分布式集群的电商系统。(开发中...)
## 开源协议
taoshop使用Apache2.0开源协议
## 功能
### [门户网站]
- [ ] 商品搜索(Lucene)
- [x] 最新上架
- [ ] 购物车功能
- [x] 品目商品搜索
- [ ] 优惠券秒杀(高并发处理)
- [ ] 商品详情
- [x] 商品品类多级联动
### [运营平台]
- [ ] 会员中心
- [ ] 订单系统
- [ ] 店铺管理
- [ ] 评论管理
- [ ] 风控系统
- [ ] 采购平台
- [ ] 内容管理
## 技术栈
* 模板引擎:Thymeleaf
* 搜索引擎:Lucene
* 负载均衡:Nginx
* 缓存处理:Redis
* 后台主要框架:SpringBoot、Mybatis
* 微服务搭建:Dubbo
## 平台工程目录
```
├─taoshop----------------------------父项目,公共依赖
│ │
│ ├─taoshop-search--------------------------全局搜索
│ │
│ ├─taoshop-quartz-----------------------任务调度系统
│ │
│ ├─taoshop-sso-------------------------单点登录工程
│ │
│ ├─taoshop-portal--------------------------门户网站
│ │
│ ├─taoshop-cms--------------------------平台cms系统
| |
| |─taoshop-order--------------------------平台订单系统
│ │
│ ├─paascloud-provider
│ │ │
│ │ │
│ │ ├─taoshop-provider-usc------------------用户信息服务中心
| | |
| | |-taoshop-provider-item------------------商品信息服务中心
| | |
| | |-taoshop-provider-shop------------------商铺信息服务中心
│ │ │
│ │ └─taoshop-provider-order------------------订单信息服务中心
│ │
│ ├─taoshop-provider-api
│ │ │
│ │ │-taoshop-provider-api-usc------------------用户信息服务API
| | |
| | |-taosho-provider-api-item------------------商品信息服务API
| | |
| | |-taoshop-provider-api-shop------------------商铺信息服务API
| | |
│ │ └─taoshop-provider-api-order------------------订单信息服务API
│ │
│ ├─taoshop-common
│ │ │
│ │ ├─taoshop-common-core------------------平台核心依赖服务
│ │ │
│ │ ├─taoshop-common-zk------------------zookeeper配置工程
│ │ │
│ │ ├─taoshop-common-quartz------------------任务调度服务
│ │ │
│ │ ├─taoshop-security-core------------------安全服务核心服务
│ │ │
│ │ └─taoshop-security-auth2------------------API认证授权服务
│ │
```
## 架构设计

## 平台功能演示
运营系统登录

订单管理页面

## 附录
### 一、分布式基本知识
#### 1.1) 架构演变

先给出dubbo官方的图,图片表示了架构的演变。然后我说一下自己的理解。
应用最开始是单体应用,即一个应用包括了所有应用模块。
随后就是垂直应用架构,也就是将系统拆分为多个应用模块。
随后就是RPC架构,之前的垂直应用架构其实可以说是在一个进程内的通讯,而RPC就是一种进步,RPC是进程之间的通讯,远程过程调用就是这么来的。
有了RPC之后,虽然可以实现进程之间的通讯,但是服务器集群后的服务器资源利用有些时候容易造成浪费,比如有个系统,一般情况都是不能很好地预估需要分配多少机器的,很容易造成一种情况就是业务访问很频繁的模块分配了不足的机器,而访问不是很频繁的模块分配了太多的机器,这种情况就不能实现资源的很好利用,所以针对这种情况就有了SOA(Service Oriented Architecture)的出现,SOA其实就是一个服务注册中心,可以实现资源调度,合理地分配资源,提高资源调度,是一个治理中心。
#### 1.2)、分布式基本概念
所以我们了解了架构演变之后,就可以更好的理解分布式,分布式其实就是一种可以实现不同进程之间通讯的架构,然后进程之间怎么通讯的?一般都是通过RPC框架实现。比如Java方面的,Dubbo框架或者Spring Cloud。
### 二、RCP简介
#### 2.1) RPC概念
RPC:全称远程过程调用,是一种**进程间的通信的方式**,它所做的事情就是实现进程内的通信,允许调用另外一个地址空间,可以是共享网络里的另外一台机器。
#### 2.2) RPC核心模块
RPC有两个核心模块:通信和序列化
### 三、Dubbo原理简介
#### 3.1) Dubbo简介
Dubbo是阿里巴巴开源的一款Java RPC框架,现在已经捐赠给Apache
官网:http://dubbo.apache.org/
#### 3.2) 核心功能
a、智能容错和负载均衡
b、服务注册和发现
c、面向接口的远程方法调用
#### 3.3) 原理简介

上图是Dubbo官方的图
**角色**
Provider:暴露服务的服务提供者
Container:服务运行的容器
Consumer:调用远程服务的消费者
Registry:服务注册和发现的注册中心
Minitor:统计服务调用次数和时间的监控中心
**调用**
下面根据我的理解说明一下
0:服务器容器负责启动、加载、运行服务提供者
1:服务提供者在启动后就可以向注册中心暴露服务
2:服务消费者在启动后就可以向注册中心订阅想要的服务
3:注册中心向服务消费者返回服务调用列表
4:服务消费者基于软负载均衡算法调用服务提供者的服务,这个服务提供者有可能是一个服务提供者列表,调用那个服务提供者就是根据负载均衡来调用了
5:服务提供者和服务消费者定时将保存在内存中的服务调用次数和服务调用时间推送给监控中心
## 博客记录
为了帮助学习者更好地理解代码,下面给出自己写的一些博客链接
### 单点登录
* [CAS单点登录简单介绍](https://blog.csdn.net/u014427391/article/details/82083995)
### 消息队列
* [RocketMQ入门手册](https://blog.csdn.net/u014427391/article/details/79914331)
### 搜索引擎
* [Apache Lucene全局搜索引擎入门教程](https://blog.csdn.net/u014427391/article/details/80006401)
### Dubbo
* [Dubbo学习笔记](https://blog.csdn.net/u014427391/article/details/83716884)
* [SpringBoot+Dubbo搭建微服务](https://blog.csdn.net/u014427391/article/details/84455282)
### 分布式锁
* [Redis学习笔记之分布式锁](https://blog.csdn.net/u014427391/article/details/84934045)
### SpringBoot
* [电商门户网站商品品类多级联动SpringBoot+Thymeleaf实现](https://blog.csdn.net/u014427391/article/details/83685901)
### Mybatis
* [Mybatis+Thymeleaf前端显示时间格式问题解决方法](https://blog.csdn.net/u014427391/article/details/83686014)
* [Mybatis3.2不支持Ant通配符的TypeAliasesPackage扫描解决方案](https://blog.csdn.net/u014427391/article/details/84723292)
### 缓存
* [Redis学习笔记之基本数据结构](https://blog.csdn.net/u014427391/article/details/82860694)
* [Redis学习笔记之位图](https://blog.csdn.net/u014427391/article/details/87923407)
* [Redis学习笔记之延时队列](https://blog.csdn.net/u014427391/article/details/87905450)
* [Redis学习笔记之分布式锁](https://blog.csdn.net/u014427391/article/details/84934045)
* [SpringBoot集成Redis实现缓存处理(Spring AOP技术)](http://blog.csdn.net/u014427391/article/details/78799623)
### 设计模式
创建型
* [设计模式之观察者模式(行为型)](https://blog.csdn.net/u014427391/article/details/81156661)
* [设计模式之桥接模式(结构型)](https://blog.csdn.net/u014427391/article/details/88412075)
* [设计模式之适配器模式(结构型)](https://blog.csdn.net/u014427391/article/details/88412105)
* [设计模式之建造者模式(创建型)](https://blog.csdn.net/u014427391/article/details/80061566)
* [设计模式之简单工厂模式(创建型)](https://blog.csdn.net/u014427391/article/details/85543283)
* [设计模式之抽象工厂模式(创建型)](https://blog.csdn.net/u014427391/article/details/85543242)
* [设计模式之单例模式(创建型)](https://blog.csdn.net/u014427391/article/details/80019048)
* [设计模式之工厂方法模式(创建型)](https://blog.csdn.net/u014427391/article/details/85543251)
* [设计模式之原型模式(创建型)](https://blog.csdn.net/u014427391/article/details/87539023)
结构型
* [设计模式之桥接模式(结构型)](https://blog.csdn.net/u014427391/article/details/88412075)
* [设计模式之适配器模式(结构型)](https://blog.csdn.net/u014427391/article/details/88412105)
行为型
* [设计模式之观察者模式(行为型)](https://blog.csdn.net/u014427391/article/details/81156661)
* [设计模式之命令模式(行为型)](https://blog.csdn.net/u014427391/article/details/89289375)
* [设计模式之备忘录模式(行为型)](https://blog.csdn.net/u014427391/article/details/88598079)
* [设计模式之访问者模式(行为型)](https://blog.csdn.net/u014427391/article/details/88562267)
### Oracle知识
* [Oracle知识整理笔录](https://blog.csdn.net/u014427391/article/details/82317376)
* [Oracle笔记之锁表和解锁](https://blog.csdn.net/u014427391/article/details/83046148)
* [Oracle递归查询start with connect by prior](https://blog.csdn.net/u014427391/article/details/84996259)
* [Oracle列转行函数vm_concat使用](https://blog.csdn.net/u014427391/article/details/84981114)
* [Oracle笔记之修改表字段类型](https://blog.csdn.net/u014427391/article/details/83046006)
* [Oracle的nvl函数和nvl2函数](https://blog.csdn.net/u014427391/article/details/84996009)
================================================
FILE: docs/taoshop.sql
================================================
/*
SQLyog v10.2
MySQL - 5.1.32-community : Database - taoshop
*********************************************************************
*/
/*!40101 SET NAMES utf8 */;
/*!40101 SET SQL_MODE=''*/;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/`taoshop` /*!40100 DEFAULT CHARACTER SET utf8 */;
USE `taoshop`;
/*Table structure for table `item_brand` */
DROP TABLE IF EXISTS `item_brand`;
CREATE TABLE `item_brand` (
`id` bigint(11) NOT NULL AUTO_INCREMENT,
`brand_name` varchar(20) DEFAULT NULL,
`last_modify_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`create_time` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
/*Data for the table `item_brand` */
insert into `item_brand`(`id`,`brand_name`,`last_modify_time`,`create_time`) values (1,'荣耀','2018-07-24 23:21:20','2018-06-24 20:42:37');
/*Table structure for table `item_category` */
DROP TABLE IF EXISTS `item_category`;
CREATE TABLE `item_category` (
`id` bigint(11) NOT NULL AUTO_INCREMENT,
`category_name` varchar(20) DEFAULT NULL,
`sjid` bigint(11) DEFAULT NULL,
`last_modify_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`create_time` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=40 DEFAULT CHARSET=utf8;
/*Data for the table `item_category` */
insert into `item_category`(`id`,`category_name`,`sjid`,`last_modify_time`,`create_time`) values (1,'家用电器',0,'2018-06-24 18:59:07','2018-06-24 15:52:04'),(2,'手机数码',0,'2018-06-24 19:01:39','2018-06-24 16:27:48'),(3,'电脑办公',0,'2018-06-24 19:01:33','2018-06-24 16:27:50'),(4,'家居家具',0,'2018-06-24 19:01:24','2018-06-24 16:27:52'),(5,'品牌衣饰',0,'2018-06-24 19:02:18','2018-06-24 16:27:54'),(6,'美妆洗护',0,'2018-06-24 19:03:08','2018-06-24 16:27:56'),(7,'珠宝眼镜',0,'2018-06-24 19:03:23','2018-06-24 16:27:58'),(8,'学习书籍',0,'2018-06-24 19:03:46','2018-06-24 16:28:00'),(9,'电视',1,'2018-06-24 19:04:11','2018-06-24 17:35:18'),(10,'空调',1,'2018-06-24 19:04:20','2018-06-24 18:27:28'),(11,'洗衣机',1,'2018-06-24 19:04:19','2018-06-24 18:44:41'),(12,'冰箱',1,'2018-06-24 19:06:05','2018-06-24 19:06:04'),(13,'手机通讯',2,'2018-06-24 19:06:07','2018-06-24 19:06:06'),(14,'手机配件',2,'2018-06-24 19:06:09','2018-06-24 19:06:07'),(15,'电脑整机',3,'2018-06-24 19:06:12','2018-06-24 19:06:09'),(16,'曲面电视',9,'2018-06-24 19:08:07','2018-06-24 19:08:05'),(17,'超薄电视',9,'2018-06-24 19:08:08','2018-06-24 19:08:07'),(18,'HDR电视',9,'2018-06-24 19:08:26','2018-06-24 19:08:09'),(19,'人工智能电视',9,'2018-06-24 19:08:36','2018-06-24 19:08:10'),(20,'柜式空调',10,'2018-07-24 22:42:34','2018-07-24 22:42:30'),(21,'中央空调',10,'2018-07-24 22:42:36','2018-07-24 22:42:35'),(22,'变频空调',10,'2018-07-24 22:42:39','2018-07-24 22:42:37'),(23,'滚筒洗衣机',11,'2018-07-24 22:43:40','2018-07-24 22:43:42'),(24,'迷你洗衣机',11,'2018-07-24 22:43:54','2018-07-24 22:43:56'),(25,'洗衣机配件',11,'2018-07-24 22:44:14','2018-07-24 22:44:15'),(26,'酒柜',12,'2018-07-24 22:45:41','2018-07-24 22:45:00'),(27,'多门',12,'2018-07-24 22:45:49','2018-07-24 22:45:51'),(28,'冷柜',12,'2018-07-24 22:46:12','2018-07-24 22:46:14'),(29,'冰箱配件',12,'2018-07-24 22:46:38','2018-07-24 22:46:40'),(30,'手机',13,'2018-07-24 22:48:23','2018-07-24 22:48:25'),(31,'游戏手机',13,'2018-07-24 22:48:29','2018-07-24 22:48:27'),(32,'对讲机',13,'2018-07-24 22:49:24','2018-07-24 22:49:27'),(33,'手机壳',14,'2018-07-25 23:22:38','2018-07-25 23:22:43'),(34,'数据线',14,'2018-07-25 23:23:01','2018-07-25 23:23:03'),(35,'充电器',14,'2018-07-25 23:23:30','2018-07-25 23:23:32'),(36,'手机饰品',14,'2018-07-25 23:24:33','2018-07-25 23:24:35'),(37,'电脑办公',3,'2018-07-25 23:25:36','2018-07-25 23:25:38'),(38,'电脑配件',3,'2018-07-25 23:25:44','2018-07-25 23:25:40'),(39,'外设产品',3,'2018-07-25 23:26:16','2018-07-25 23:26:18');
/*Table structure for table `item_sku` */
DROP TABLE IF EXISTS `item_sku`;
CREATE TABLE `item_sku` (
`id` bigint(11) NOT NULL AUTO_INCREMENT COMMENT 'id,主键',
`sku_code` varchar(50) NOT NULL COMMENT 'sku编号,唯一',
`sku_name` varchar(50) DEFAULT NULL COMMENT 'sku名称,冗余spu_name',
`price` decimal(9,2) NOT NULL COMMENT '商城售价',
`promotion_price` decimal(9,2) DEFAULT NULL COMMENT '促销售价',
`stock` int(11) NOT NULL COMMENT '库存',
`shop_id` bigint(11) NOT NULL COMMENT '商铺id,为0表示自营',
`spu_id` bigint(11) NOT NULL COMMENT 'spu id,外键',
`img_path` varchar(50) DEFAULT NULL COMMENT '图片路径',
`last_modify_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`create_time` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
/*Data for the table `item_sku` */
insert into `item_sku`(`id`,`sku_code`,`sku_name`,`price`,`promotion_price`,`stock`,`shop_id`,`spu_id`,`img_path`,`last_modify_time`,`create_time`) values (1,'112233','112233','1122.00','999.00',111,1,1,'/static/picture/img_small_350x350.jpg','2018-07-24 22:21:07','2018-06-30 15:50:10'),(2,'112234','test','1123.00','999.00',111,2,2,'/static/picture/img_small_350x350.jpg','2018-07-24 22:21:09','2018-06-30 15:55:27'),(3,'112235','112223','1234.00','999.00',123,3,2,'/static/picture/img_small_350x350.jpg','2018-07-24 22:21:13','2018-07-01 16:56:47');
/*Table structure for table `item_sku_spec_value` */
DROP TABLE IF EXISTS `item_sku_spec_value`;
CREATE TABLE `item_sku_spec_value` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`sku_id` bigint(20) NOT NULL COMMENT 'sku_id',
`spec_value_id` bigint(20) NOT NULL COMMENT '规格值id',
`last_modify_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`create_time` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COMMENT='sku规格值';
/*Data for the table `item_sku_spec_value` */
insert into `item_sku_spec_value`(`id`,`sku_id`,`spec_value_id`,`last_modify_time`,`create_time`) values (1,1,1,'2018-07-28 17:20:31','2018-07-28 17:20:34'),(2,1,2,'2018-07-28 17:20:42','2018-07-28 17:20:44');
/*Table structure for table `item_spec` */
DROP TABLE IF EXISTS `item_spec`;
CREATE TABLE `item_spec` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`spec_no` varchar(50) NOT NULL COMMENT '规格编号',
`spec_name` varchar(50) NOT NULL COMMENT '规格名称',
`last_modify_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`create_time` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COMMENT='规格表';
/*Data for the table `item_spec` */
insert into `item_spec`(`id`,`spec_no`,`spec_name`,`last_modify_time`,`create_time`) values (1,'test','系统','2018-07-28 13:56:14','2018-07-28 13:56:16'),(2,'test11','网络','2018-07-28 13:57:00','2018-07-28 13:57:02');
/*Table structure for table `item_spec_value` */
DROP TABLE IF EXISTS `item_spec_value`;
CREATE TABLE `item_spec_value` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`spec_id` bigint(20) DEFAULT NULL COMMENT '外键',
`spec_value` varchar(50) NOT NULL COMMENT '规格值',
`last_modify_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`create_time` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COMMENT='规格值表';
/*Data for the table `item_spec_value` */
insert into `item_spec_value`(`id`,`spec_id`,`spec_value`,`last_modify_time`,`create_time`) values (1,NULL,'苹果(IOS)','2018-07-28 17:19:12','2018-07-28 17:19:14'),(2,NULL,'联通4G','2018-07-28 17:19:59','2018-07-28 17:20:00');
/*Table structure for table `item_spu` */
DROP TABLE IF EXISTS `item_spu`;
CREATE TABLE `item_spu` (
`id` bigint(11) NOT NULL AUTO_INCREMENT COMMENT '商品id,主键',
`spu_code` varchar(50) NOT NULL COMMENT '商品编号,唯一',
`item_name` varchar(50) NOT NULL COMMENT '商品名称',
`category_id` bigint(11) NOT NULL COMMENT '分类id',
`brand_id` bigint(11) NOT NULL COMMENT '品牌id',
`shop_id` bigint(11) NOT NULL COMMENT '商铺id',
`last_modify_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`create_time` timestamp NOT NULL DEFAULT '1978-01-01 00:00:00',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
/*Data for the table `item_spu` */
insert into `item_spu`(`id`,`spu_code`,`item_name`,`category_id`,`brand_id`,`shop_id`,`last_modify_time`,`create_time`) values (1,'112233','荣耀10 GT游戏加速 AIS手持夜景',1,1,1,'2018-07-24 23:31:29','2018-06-30 15:49:26'),(2,'112234','小米MIX2S 全面屏游戏手机',2,1,1,'2018-07-24 23:31:36','1978-01-01 00:00:00');
/*Table structure for table `item_spu_spec` */
DROP TABLE IF EXISTS `item_spu_spec`;
CREATE TABLE `item_spu_spec` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`spu_id` bigint(20) NOT NULL COMMENT 'spu_id',
`spec_id` bigint(20) NOT NULL COMMENT 'spec_id',
`last_modify_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`create_time` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COMMENT='spu规格表';
/*Data for the table `item_spu_spec` */
insert into `item_spu_spec`(`id`,`spu_id`,`spec_id`,`last_modify_time`,`create_time`) values (1,1,1,'2018-07-28 13:57:38','2018-07-28 13:57:40'),(2,1,2,'2018-07-28 13:57:44','2018-07-28 13:57:42');
/*Table structure for table `shop_info` */
DROP TABLE IF EXISTS `shop_info`;
CREATE TABLE `shop_info` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`shop_name` varchar(50) NOT NULL COMMENT '店铺名称',
`last_modify_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`create_time` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COMMENT='店铺表';
/*Data for the table `shop_info` */
insert into `shop_info`(`id`,`shop_name`,`last_modify_time`,`create_time`) values (1,'小米官方旗舰店','2018-07-24 23:31:02','2018-07-24 23:30:58');
/*Table structure for table `sys_menu` */
DROP TABLE IF EXISTS `sys_menu`;
CREATE TABLE `sys_menu` (
`menuId` int(11) NOT NULL AUTO_INCREMENT COMMENT '菜单Id',
`parentId` int(11) DEFAULT NULL COMMENT '上级Id',
`menuName` varchar(100) DEFAULT NULL COMMENT '菜单名称',
`menuIcon` varchar(30) DEFAULT NULL COMMENT '菜单图标',
`menuUrl` varchar(100) DEFAULT NULL COMMENT '菜单链接',
`menuType` varchar(10) DEFAULT NULL COMMENT '菜单类型',
`menuOrder` varchar(10) DEFAULT NULL COMMENT '菜单排序',
`menuStatus` varchar(10) DEFAULT NULL COMMENT '菜单状态',
PRIMARY KEY (`menuId`)
) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8;
/*Data for the table `sys_menu` */
insert into `sys_menu`(`menuId`,`parentId`,`menuName`,`menuIcon`,`menuUrl`,`menuType`,`menuOrder`,`menuStatus`) values (1,0,'用户管理','','#','1','1','1'),(2,1,'管理员管理','','user/queryAll.do','2','2','1'),(3,1,'用户统计','','test','2','3','1'),(4,0,'在线管理','','#','1','4','1'),(5,4,'在线情况','',NULL,'2','5','1'),(6,4,'在线聊天','','article/list.do','2','6','1'),(7,0,'系统管理','','#','1','7','1'),(8,7,'角色管理','','role/queryAll.do','2','8','1'),(9,7,'权限管理','','permission/queryAll.do','2','9','1'),(10,7,'菜单管理','','menu/getMenus.do','2','10','1'),(11,0,'平台资料','','#','1','11','1');
/*Table structure for table `sys_operation` */
DROP TABLE IF EXISTS `sys_operation`;
CREATE TABLE `sys_operation` (
`id` int(11) NOT NULL COMMENT '操作Id,主键',
`desc` varchar(100) DEFAULT NULL COMMENT '操作描述',
`name` varchar(100) DEFAULT NULL COMMENT '操作名称',
`operation` varchar(100) DEFAULT NULL COMMENT '操作标志',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_o_1` (`operation`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*Data for the table `sys_operation` */
insert into `sys_operation`(`id`,`desc`,`name`,`operation`) values (1,'创建操作','创建','create'),(2,'编辑权限','编辑','edit'),(3,'删除权限','删除','delete'),(4,'浏览权限','浏览','view');
/*Table structure for table `sys_permission` */
DROP TABLE IF EXISTS `sys_permission`;
CREATE TABLE `sys_permission` (
`id` int(11) NOT NULL COMMENT '权限Id',
`pdesc` varchar(100) DEFAULT NULL COMMENT '权限描述',
`name` varchar(100) DEFAULT NULL COMMENT '权限名称',
`menuId` int(11) DEFAULT NULL COMMENT '菜单Id',
PRIMARY KEY (`id`),
KEY `p_fk_1` (`menuId`),
CONSTRAINT `p_fk_1` FOREIGN KEY (`menuId`) REFERENCES `sys_menu` (`menuId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*Data for the table `sys_permission` */
insert into `sys_permission`(`id`,`pdesc`,`name`,`menuId`) values (1,'用户管理的权限','用户管理',1),(2,'管理员管理的权限','管理员管理',2),(3,'用户统计的权限','用户统计',3),(4,'在线管理的权限','在线管理',4),(5,'在线情况的权限','在线情况',5),(6,'在线聊天的权限','在线聊天',6),(7,'系统管理的权限','系统管理',7),(8,'角色管理的权限','角色管理',8),(9,'权限管理的权限','权限管理',9),(10,'菜单管理的权限','菜单管理',10),(11,'平台资料的权限','平台资料',11);
/*Table structure for table `sys_permission_operation` */
DROP TABLE IF EXISTS `sys_permission_operation`;
CREATE TABLE `sys_permission_operation` (
`permissionId` int(11) NOT NULL,
`operationId` int(11) NOT NULL,
PRIMARY KEY (`permissionId`,`operationId`),
KEY `po_fk_1` (`operationId`),
CONSTRAINT `po_fk_1` FOREIGN KEY (`operationId`) REFERENCES `sys_operation` (`id`),
CONSTRAINT `po_fk_2` FOREIGN KEY (`permissionId`) REFERENCES `sys_permission` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*Data for the table `sys_permission_operation` */
insert into `sys_permission_operation`(`permissionId`,`operationId`) values (1,1),(2,2),(3,3);
/*Table structure for table `sys_role` */
DROP TABLE IF EXISTS `sys_role`;
CREATE TABLE `sys_role` (
`roleId` int(11) NOT NULL AUTO_INCREMENT COMMENT '角色Id',
`roleName` varchar(100) DEFAULT NULL COMMENT '角色名称',
`roleDesc` varchar(100) DEFAULT NULL COMMENT '角色描述',
`role` varchar(100) DEFAULT NULL COMMENT '角色标志',
PRIMARY KEY (`roleId`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;
/*Data for the table `sys_role` */
insert into `sys_role`(`roleId`,`roleName`,`roleDesc`,`role`) values (1,'超级管理员','超级管理员拥有所有权限','role'),(2,'用户管理员','用户管理权限','role'),(3,'角色管理员','角色管理权限','role'),(4,'资源管理员','资源管理权限','role'),(6,'操作权限管理员','操作权限管理','role'),(7,'查看员','查看系统权限','role'),(9,'用户','可以查看','role');
/*Table structure for table `sys_role_permission` */
DROP TABLE IF EXISTS `sys_role_permission`;
CREATE TABLE `sys_role_permission` (
`rpId` varchar(12) NOT NULL COMMENT '表Id',
`roleId` int(11) NOT NULL COMMENT '角色Id',
`permissionId` int(11) NOT NULL COMMENT '权限Id',
PRIMARY KEY (`rpId`),
KEY `rp_fk_2` (`permissionId`),
KEY `rp_fk_1` (`roleId`),
CONSTRAINT `rp_fk_1` FOREIGN KEY (`roleId`) REFERENCES `sys_role` (`roleId`),
CONSTRAINT `rp_fk_2` FOREIGN KEY (`permissionId`) REFERENCES `sys_permission` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*Data for the table `sys_role_permission` */
insert into `sys_role_permission`(`rpId`,`roleId`,`permissionId`) values ('02a97146f6f4',2,1),('0bc217ced57a',1,1),('1623edee1d80',1,2),('2897c5ff0aa8',1,3),('421ddf008a05',1,4),('4b76f155fd74',9,1),('4dcadb89531b',1,7),('55eb164457e2',9,2),('59084a9f6914',2,2),('5a2b34b2f1a7',1,10),('63a5d5a8dae6',1,9),('9ad0b2c3be28',1,8),('9fa9725142c1',2,3),('ba83ae853640',1,6),('d5aec431edf6',1,5);
/*Table structure for table `sys_user` */
DROP TABLE IF EXISTS `sys_user`;
CREATE TABLE `sys_user` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户Id',
`username` varchar(100) NOT NULL COMMENT '用户名',
`password` varchar(100) NOT NULL COMMENT '密码',
`phone` varchar(11) DEFAULT NULL COMMENT '手机',
`sex` varchar(6) DEFAULT NULL COMMENT '性别',
`email` varchar(100) DEFAULT NULL COMMENT '邮箱',
`mark` varchar(100) DEFAULT NULL COMMENT '备注',
`rank` varchar(10) DEFAULT NULL COMMENT '账号等级',
`lastLogin` date DEFAULT NULL COMMENT '最后一次登录时间',
`loginIp` varchar(30) DEFAULT NULL COMMENT '登录ip',
`imageUrl` varchar(100) DEFAULT NULL COMMENT '头像图片路径',
`regTime` date NOT NULL COMMENT '注册时间',
`locked` tinyint(1) DEFAULT NULL COMMENT '账号是否被锁定',
`rights` varchar(100) DEFAULT NULL COMMENT '权限(没有使用)',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_u_1` (`username`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;
/*Data for the table `sys_user` */
insert into `sys_user`(`id`,`username`,`password`,`phone`,`sex`,`email`,`mark`,`rank`,`lastLogin`,`loginIp`,`imageUrl`,`regTime`,`locked`,`rights`) values (1,'admin','28dca2a7b33b7413ad3bce1d58c26dd679c799f1','1552323312','男','313222@foxmail.com','超级管理员','admin','2017-08-12','127.0.0.1','/static/images/','2017-03-15',0,NULL),(2,'sys','e68feeafe796b666a2e21089eb7aae9c678bf82d','1552323312','男','313222@foxmail.com','系统管理员','sys','2017-08-25','127.0.0.1','/static/images/','2017-03-15',0,NULL),(3,'user','adf8e0d0828bde6e90c2bab72e7a2a763d88a0de','1552323312','男','313222@foxmail.com','用户','user','2017-08-18','127.0.0.1','/static/images/','2017-03-15',0,NULL),(9,'test','123','12332233212','保密','2312@qq.com','没有备注','user','2017-11-25','127.0.0.1',NULL,'2017-11-25',0,NULL);
/*Table structure for table `sys_user_role` */
DROP TABLE IF EXISTS `sys_user_role`;
CREATE TABLE `sys_user_role` (
`userId` int(11) NOT NULL COMMENT '用户Id,联合主键',
`roleId` int(11) NOT NULL COMMENT '角色Id,联合主键',
PRIMARY KEY (`userId`,`roleId`),
KEY `ur_fk_2` (`roleId`),
CONSTRAINT `ur_fk_1` FOREIGN KEY (`userId`) REFERENCES `sys_user` (`id`),
CONSTRAINT `ur_fk_2` FOREIGN KEY (`roleId`) REFERENCES `sys_role` (`roleId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*Data for the table `sys_user_role` */
insert into `sys_user_role`(`userId`,`roleId`) values (1,1),(1,2),(2,2),(1,3),(2,3),(3,3),(1,4),(3,4),(1,6),(1,7),(3,7),(9,9);
/*Table structure for table `tb_user` */
DROP TABLE IF EXISTS `tb_user`;
CREATE TABLE `tb_user` (
`username` varchar(11) DEFAULT NULL,
`password` varchar(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*Data for the table `tb_user` */
insert into `tb_user`(`username`,`password`) values ('user','11');
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
================================================
FILE: docs/架构图.pos
================================================
{"diagram":{"image":{"height":841,"pngdata":"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bdqmbfm2zd4cLBaLxd6VEBEREREREZG8p+79IiIiIiIiIsWUgn4RERERERGRYkpBv4iIiIiIiEgxpaBfREREREREpJhS0C8iIiIiIiJSTCnoFxERERERESmmnOxdAZE79TewC6gHdLVzXURERERERAoTtfRLkZYW8AOcTH0sIiIiIiIiVgr6pchKH/Cn2YUCfxERERERkTQK+qVIyirgT6PAX0RERERExEpBvxQ5Nwv40yjwFxERERERUdAvRUxOAv40CvxFRERERKSkU9AvRUZuAv40CvxFRERERKQkU9AvRcLtBPxpFPiLiIiIiEhJ5WTvCojcyp0E/GnS9m98h8cR+7AAgVinZbwOxNu3OpJLboAPUA9oADgU4Ln12hHJG6Wwvo+bA1UK8Lx6Dxdt9vz8F5F/OFgsFou9KyGSnbwI+NPriAL/osYCbATO2bsikidqAj0pmB9+eu2I5I+7gRYFcB69h4uXgvz8FxFb6t4vhVZeB/ygrv5FUSD6wVecBGN9TguCXjsiec8B2A+EF8C59B4uXgry819EbCnol0IpPwL+NAr8i5aT9q6A5LmCek712hHJexbADJwugHPpPVz86DkVsQ8F/VLo5GfAn0aBf9Fx3d4VkDxXUM+pXjsi+acg3l96Dxc/ek5F7ENBvxQqBRHwp1HgXzQoaVPxU1DPqV47IvmnIN5feg8XP3pORexDQb8UGscouIA/za7U84qIiIiIiBRHCvql0PithJ1XREREREQkvznZuwIiaXoA5wHnm5Q5kMtjugDNbrI9CaiUy2OKiIiIiIgUFQr6pdComvrvZlyAPbk4pj83D/pFRERERESKM3XvFxERERERESmm1NIvIiIixd6n/v7G8pClSynboIEdayMiIlJw1NIvIiIiIiIiUkwp6BcREREREREpphT0i4iIiIiIiBRTCvpFREREREREiikl8hMREREbGZPeRZw7x59ffEH46dN4lC1Lo0GDaDVmDIk3bvDbJ58QtH07cREReNeoQZunnsIvIACAUxs28PNrrxnHenTdOjwrVjQen//1V9Y9+ywAZRs0YMjSpYQeOMCRpUsJO3yYhMhInD098a5ZkxajRxvHTRP4008cXb6c62fO4OjqSs3Onal///2sefJJo8y4Awfy4S8kIiJSdCjoFxERkWz9uWgRpzZsMB7fCAvj93nzSElMJGj7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","width":1021,"y":373,"x":12},"elements":{"page":{"showGrid":true,"gridSize":15,"orientation":"portrait","height":1500,"backgroundColor":"255,255,255","width":1050,"padding":60},"elements":{"1562bc6ba340d1":{"textBlock":[{"position":{"w":"w-20","y":0,"h":"h","x":10},"text":""}],"lineStyle":{"lineColor":"51,153,255"},"link":"","parent":"","attribute":{"linkable":true,"visible":true,"container":false,"rotatable":true,"markerOffset":5,"collapsable":false,"collapsed":false},"children":[],"resizeDir":["tl","tr","br","bl"],"fontStyle":{},"dataAttributes":[{"id":"1562bc6dfdc6b3","category":"default","name":"序号","value":"","type":"number"},{"id":"1562bc6dfdc5f8","category":"default","name":"名称","value":"","type":"string"},{"id":"1562bc6dfdc05d","category":"default","name":"所有者","value":"","type":"string"},{"id":"1562bc6dfdc099","category":"default","name":"连接","value":"","type":"link"},{"id":"1562bc6dfdc131","category":"default","name":"便笺","value":"","type":"string"}],"shapeStyle":{"alpha":1},"id":"1562bc6ba340d1","anchors":[{"y":"0","x":"w/2"},{"y":"h","x":"w/2"},{"y":"h/2","x":"0"},{"y":"h/2","x":"w"}],"title":"圆角矩形","category":"basic","name":"roundRectangle","path":[{"actions":[{"action":"move","y":"4","x":"0"},{"y1":"0","action":"quadraticCurve","y":"0","x1":"0","x":"4"},{"action":"line","y":"0","x":"w-4"},{"y1":"0","action":"quadraticCurve","y":"4","x1":"w","x":"w"},{"action":"line","y":"h-4","x":"w"},{"y1":"h","action":"quadraticCurve","y":"h","x1":"w","x":"w-4"},{"action":"line","y":"h","x":"4"},{"y1":"h","action":"quadraticCurve","y":"h-4","x1":"0","x":"0"},{"action":"close"}]}],"fillStyle":{"color":"255,255,255","type":"solid"},"locked":false,"group":"","props":{"w":51.65032372043129,"y":672.2098765432096,"h":105.54179121117159,"angle":0,"zindex":63,"x":223}},"14b0a4eb0f2775":{"textBlock":[{"position":{"w":"w","h":"h","y":0,"x":0},"text":"集群"}],"lineStyle":{},"link":"","parent":"","attribute":{"linkable":false,"visible":true,"container":false,"rotatable":true,"markerOffset":5,"collapsable":false,"collapsed":false},"children":[],"resizeDir":["tl","tr","br","bl"],"fontStyle":{"bold":true,"size":20},"dataAttributes":[{"id":"14b0a4eb1bd3aa","category":"default","name":"序号","value":"","type":"number"},{"id":"14b0a4eb1bd057","category":"default","name":"名称","value":"","type":"string"},{"id":"14b0a4eb1bd655","category":"default","name":"所有者","value":"","type":"string"},{"id":"14b0a4eb1bd8a6","category":"default","name":"连接","value":"","type":"link"},{"id":"14b0a4eb1bdc2a","category":"default","name":"便笺","value":"","type":"string"}],"shapeStyle":{"alpha":1},"id":"14b0a4eb0f2775","anchors":[],"category":"basic","title":"文本","name":"text","fillStyle":{},"path":[{"lineStyle":{"lineWidth":0},"fillStyle":{"type":"none"},"actions":[{"action":"move","y":"0","x":"0"},{"action":"line","y":"0","x":"w"},{"action":"line","y":"h","x":"w"},{"action":"line","y":"h","x":"0"},{"action":"close"}]}],"locked":false,"group":"","props":{"w":122.35240224323547,"angle":4.71238898038469,"h":46.07544607414468,"y":840.5009907044904,"x":187.8375189387583,"zindex":18}},"14b0a584a934d9":{"textBlock":[{"position":{"w":"w-20","h":"h","y":0,"x":10},"text":"......"}],"lineStyle":{"lineColor":"204,255,230"},"link":"","parent":"","attribute":{"linkable":true,"visible":true,"container":false,"rotatable":true,"markerOffset":5,"collapsable":false,"collapsed":false},"children":[],"resizeDir":["tl","tr","br","bl"],"fontStyle":{"size":15},"dataAttributes":[{"id":"14b0a584b6e8f1","category":"default","name":"序号","value":"","type":"number"},{"id":"14b0a584b6e548","category":"default","name":"名称","value":"","type":"string"},{"id":"14b0a584b6e546","category":"default","name":"所有者","value":"","type":"string"},{"id":"14b0a584b6e5e2","category":"default","name":"连接","value":"","type":"link"},{"id":"14b0a584b6e26a","category":"default","name":"便笺","value":"","type":"string"}],"shapeStyle":{"alpha":1},"id":"14b0a584a934d9","anchors":[{"y":"0","x":"w/2"},{"y":"h","x":"w/2"},{"y":"h/2","x":"0"},{"y":"h/2","x":"w"}],"category":"basic","title":"圆角矩形","name":"roundRectangle","fillStyle":{"color":"204,255,204","type":"solid"},"path":[{"actions":[{"action":"move","y":"4","x":"0"},{"action":"quadraticCurve","y1":"0","y":"0","x":"4","x1":"0"},{"action":"line","y":"0","x":"w-4"},{"action":"quadraticCurve","y1":"0","y":"4","x":"w","x1":"w"},{"action":"line","y":"h-4","x":"w"},{"action":"quadraticCurve","y1":"h","y":"h","x":"w-4","x1":"w"},{"action":"line","y":"h","x":"4"},{"action":"quadraticCurve","y1":"h","y":"h-4","x":"0","x1":"0"},{"action":"close"}]}],"locked":false,"group":"","props":{"w":84.88964346349745,"angle":0,"h":50.49180327868852,"y":849.7377049180329,"x":707.0747028862479,"zindex":35}},"155de392891e64":{"id":"155de392891e64","to":{"id":"14b0a37e265e7e","y":615.0823719894753,"angle":0,"x":571.4380305602718},"text":"","linkerType":"broken","name":"linker","lineStyle":{},"points":[{"y":615.0823719894753,"x":552.6689303904925},{"y":615.0823719894753,"x":552.6689303904925}],"locked":false,"dataAttributes":[],"from":{"id":"14b0a37e17b76d","y":615.0823719894753,"angle":3.141592653589793,"x":533.8998302207132},"group":"","props":{"zindex":47}},"14b0a584a9346b":{"textBlock":[{"position":{"w":"w-20","h":"h","y":0,"x":10},"text":"redis"}],"lineStyle":{"lineColor":"204,255,230"},"link":"","parent":"","attribute":{"linkable":true,"visible":true,"container":false,"rotatable":true,"markerOffset":5,"collapsable":false,"collapsed":false},"children":[],"resizeDir":["tl","tr","br","bl"],"fontStyle":{"size":15},"dataAttributes":[{"id":"14b0a584b6e84a","category":"default","name":"序号","value":"","type":"number"},{"id":"14b0a584b6eca2","category":"default","name":"名称","value":"","type":"string"},{"id":"14b0a584b6e1d","category":"default","name":"所有者","value":"","type":"string"},{"id":"14b0a584b6ee25","category":"default","name":"连接","value":"","type":"link"},{"id":"14b0a584b6e624","category":"default","name":"便笺","value":"","type":"string"}],"shapeStyle":{"alpha":1},"id":"14b0a584a9346b","anchors":[{"y":"0","x":"w/2"},{"y":"h","x":"w/2"},{"y":"h/2","x":"0"},{"y":"h/2","x":"w"}],"category":"basic","title":"圆角矩形","name":"roundRectangle","fillStyle":{"color":"204,255,204","type":"solid"},"path":[{"actions":[{"action":"move","y":"4","x":"0"},{"action":"quadraticCurve","y1":"0","y":"0","x":"4","x1":"0"},{"action":"line","y":"0","x":"w-4"},{"action":"quadraticCurve","y1":"0","y":"4","x":"w","x1":"w"},{"action":"line","y":"h-4","x":"w"},{"action":"quadraticCurve","y1":"h","y":"h","x":"w-4","x1":"w"},{"action":"line","y":"h","x":"4"},{"action":"quadraticCurve","y1":"h","y":"h-4","x":"0","x1":"0"},{"action":"close"}]}],"locked":false,"group":"","props":{"w":84.88964346349745,"angle":0,"h":50.49180327868852,"y":849.7377049180329,"x":449.0101867572157,"zindex":33}},"1562bc6ba34463":{"textBlock":[{"position":{"w":"w-20","h":"h","y":0,"x":10},"text":"im"}],"lineStyle":{"lineColor":"204,255,230"},"link":"","parent":"","attribute":{"linkable":true,"visible":true,"container":false,"rotatable":true,"markerOffset":5,"collapsable":false,"collapsed":false},"children":[],"resizeDir":["tl","tr","br","bl"],"fontStyle":{"size":15},"dataAttributes":[{"id":"1562bc6dfdc502","category":"default","name":"序号","value":"","type":"number"},{"id":"1562bc6dfdcda","category":"default","name":"名称","value":"","type":"string"},{"id":"1562bc6dfdcbce","category":"default","name":"所有者","value":"","type":"string"},{"id":"1562bc6dfdc88f","category":"default","name":"连接","value":"","type":"link"},{"id":"1562bc6dfdc6f5","category":"default","name":"便笺","value":"","type":"string"}],"shapeStyle":{"alpha":1},"id":"1562bc6ba34463","anchors":[{"y":"0","x":"w/2"},{"y":"h","x":"w/2"},{"y":"h/2","x":"0"},{"y":"h/2","x":"w"}],"category":"basic","title":"圆角矩形","name":"roundRectangle","fillStyle":{"color":"204,255,204","type":"solid"},"path":[{"actions":[{"action":"move","y":"4","x":"0"},{"action":"quadraticCurve","y1":"0","y":"0","x":"4","x1":"0"},{"action":"line","y":"0","x":"w-4"},{"action":"quadraticCurve","y1":"0","y":"4","x":"w","x1":"w"},{"action":"line","y":"h-4","x":"w"},{"action":"quadraticCurve","y1":"h","y":"h","x":"w-4","x1":"w"},{"action":"line","y":"h","x":"4"},{"action":"quadraticCurve","y1":"h","y":"h-4","x":"0","x1":"0"},{"action":"close"}]}],"locked":false,"group":"","props":{"w":84.88964346349745,"angle":0,"h":50.49180327868852,"y":716.9475814612425,"x":449.0101867572157,"zindex":66}},"14b0a5b4bb9a02":{"textBlock":[],"lineStyle":{"lineColor":"136,136,136","lineStyle":"dashed","lineWidth":1},"link":"","parent":"","attribute":{"linkable":false,"visible":true,"container":false,"rotatable":true,"markerOffset":5,"collapsable":false,"collapsed":false},"children":[],"resizeDir":["l","r"],"fontStyle":{},"dataAttributes":[],"shapeStyle":{"alpha":1},"id":"14b0a5b4bb9a02","anchors":[],"title":"水平线","category":"ui","name":"uiHLine","path":[{"fillStyle":{"type":"none"},"actions":[{"action":"move","y":"lineWidth%2==0 ? Math.round(h/2) : h/2","x":0},{"action":"line","y":"lineWidth%2==0 ? Math.round(h/2) : h/2","x":"w"}]},{"lineStyle":{"lineWidth":0},"fillStyle":{"type":"none"},"actions":[{"action":"move","y":"0","x":"0"},{"action":"line","y":"0","x":"w"},{"action":"line","y":"h","x":"w"},{"action":"line","y":"h","x":"0"},{"action":"close"}]}],"fillStyle":{},"locked":false,"group":"","props":{"w":931,"y":656,"h":21,"angle":0,"zindex":-2,"x":63}},"14b0a9d19da23f":{"textBlock":[{"position":{"w":"w*1.4","y":"h*0.38","h":"h*0.24","x":"-w*0.2"},"text":""}],"lineStyle":{"lineColor":"153,255,153"},"link":"","parent":"","attribute":{"linkable":true,"visible":true,"container":false,"rotatable":true,"markerOffset":5,"collapsable":false,"collapsed":false},"children":[],"resizeDir":["tl","tr","br","bl"],"fontStyle":{},"dataAttributes":[{"id":"14b0a9d1b8e60d","category":"default","name":"序号","value":"","type":"number"},{"id":"14b0a9d1b8e3ab","category":"default","name":"名称","value":"","type":"string"},{"id":"14b0a9d1b8eaac","category":"default","name":"所有者","value":"","type":"string"},{"id":"14b0a9d1b8ec45","category":"default","name":"连接","value":"","type":"link"},{"id":"14b0a9d1b8e25a","category":"default","name":"便笺","value":"","type":"string"}],"shapeStyle":{"alpha":1},"id":"14b0a9d19da23f","anchors":[{"y":"0","x":"w*0.5"},{"y":"h","x":"w*0.5"}],"title":"上下箭头","category":"basic","name":"doubleVerticalArrow","path":[{"actions":[{"action":"move","y":"0","x":"w*0.5"},{"action":"line","y":"Math.min(w*0.5,h*0.45)","x":"w"},{"action":"line","y":"Math.min(w*0.5,h*0.45)","x":"w*0.67"},{"action":"line","y":"h-Math.min(w*0.5,h*0.45)","x":"w*0.67"},{"action":"line","y":"h-Math.min(w*0.5,h*0.45)","x":"w"},{"action":"line","y":"h","x":"w*0.5"},{"action":"line","y":"h-Math.min(w*0.5,h*0.45)","x":"0"},{"action":"line","y":"h-Math.min(w*0.5,h*0.45)","x":"w*0.33"},{"action":"line","y":"Math.min(w*0.5,h*0.45)","x":"w*0.33"},{"action":"line","y":"Math.min(w*0.5,h*0.45)","x":"0"},{"action":"line","y":"0","x":"w*0.5"},{"action":"close"}]}],"fillStyle":{"color":"153,255,153","type":"solid"},"locked":false,"group":"","props":{"w":29,"y":796.1234567901226,"h":128.7550678287355,"angle":0,"zindex":44,"x":169}},"1562bc9635d9ef":{"textBlock":[{"position":{"w":"w","y":0,"h":"h","x":0},"text":"横向扩增"}],"lineStyle":{},"link":"","parent":"","attribute":{"linkable":false,"visible":true,"container":false,"rotatable":true,"markerOffset":5,"collapsable":false,"collapsed":false},"children":[],"resizeDir":["tl","tr","br","bl"],"fontStyle":{"bold":true,"size":20},"dataAttributes":[{"id":"1562bc966ddf64","category":"default","name":"序号","value":"","type":"number"},{"id":"1562bc966dd906","category":"default","name":"名称","value":"","type":"string"},{"id":"1562bc966ddfd3","category":"default","name":"所有者","value":"","type":"string"},{"id":"1562bc966dd0fc","category":"default","name":"连接","value":"","type":"link"},{"id":"1562bc966ddc3f","category":"default","name":"便笺","value":"","type":"string"}],"shapeStyle":{"alpha":1},"id":"1562bc9635d9ef","anchors":[],"title":"文本","category":"basic","name":"text","path":[{"lineStyle":{"lineWidth":0},"fillStyle":{"type":"none"},"actions":[{"action":"move","y":"0","x":"0"},{"action":"line","y":"0","x":"w"},{"action":"line","y":"h","x":"w"},{"action":"line","y":"h","x":"0"},{"action":"close"}]}],"fillStyle":{},"locked":false,"group":"","props":{"w":160,"y":704.9807721487954,"h":40,"angle":4.71238898038469,"zindex":75,"x":169.01372006037604}},"14b0a52268da0c":{"textBlock":[{"position":{"w":"w","y":0,"h":"h","x":0},"text":"mysql\nmongodb\nhbase等"}],"lineStyle":{},"link":"","parent":"","attribute":{"linkable":false,"visible":true,"container":false,"rotatable":true,"markerOffset":5,"collapsable":false,"collapsed":false},"children":[],"resizeDir":["tl","tr","br","bl"],"fontStyle":{"bold":true,"size":20},"dataAttributes":[{"id":"14b0a522979f53","category":"default","name":"序号","value":"","type":"number"},{"id":"14b0a522979568","category":"default","name":"名称","value":"","type":"string"},{"id":"14b0a52297939b","category":"default","name":"所有者","value":"","type":"string"},{"id":"14b0a522979882","category":"default","name":"连接","value":"","type":"link"},{"id":"14b0a5229793a7","category":"default","name":"便笺","value":"","type":"string"}],"shapeStyle":{"alpha":1},"id":"14b0a52268da0c","anchors":[],"title":"文本","category":"basic","name":"text","path":[{"lineStyle":{"lineWidth":0},"fillStyle":{"type":"none"},"actions":[{"action":"move","y":"0","x":"0"},{"action":"line","y":"0","x":"w"},{"action":"line","y":"h","x":"w"},{"action":"line","y":"h","x":"0"},{"action":"close"}]}],"fillStyle":{},"locked":false,"group":"","props":{"w":135.82342954159594,"y":981.5737704918033,"h":28.85245901639344,"angle":0,"zindex":20,"x":485.08822772465936}},"14b0a584a93271":{"textBlock":[{"position":{"w":"w-20","y":0,"h":"h","x":10},"text":"mq"}],"lineStyle":{"lineColor":"204,255,230"},"link":"","parent":"","attribute":{"linkable":true,"visible":true,"container":false,"rotatable":true,"markerOffset":5,"collapsable":false,"collapsed":false},"children":[],"resizeDir":["tl","tr","br","bl"],"fontStyle":{"size":15},"dataAttributes":[{"id":"14b0a584b6eb52","category":"default","name":"序号","value":"","type":"number"},{"id":"14b0a584b6ea4b","category":"default","name":"名称","value":"","type":"string"},{"id":"14b0a584b6e0ce","category":"default","name":"所有者","value":"","type":"string"},{"id":"14b0a584b6ea01","category":"default","name":"连接","value":"","type":"link"},{"id":"14b0a584b6ec9b","category":"default","name":"便笺","value":"","type":"string"}],"shapeStyle":{"alpha":1},"id":"14b0a584a93271","anchors":[{"y":"0","x":"w/2"},{"y":"h","x":"w/2"},{"y":"h/2","x":"0"},{"y":"h/2","x":"w"}],"title":"圆角矩形","category":"basic","name":"roundRectangle","path":[{"actions":[{"action":"move","y":"4","x":"0"},{"y1":"0","action":"quadraticCurve","y":"0","x1":"0","x":"4"},{"action":"line","y":"0","x":"w-4"},{"y1":"0","action":"quadraticCurve","y":"4","x1":"w","x":"w"},{"action":"line","y":"h-4","x":"w"},{"y1":"h","action":"quadraticCurve","y":"h","x1":"w","x":"w-4"},{"action":"line","y":"h","x":"4"},{"y1":"h","action":"quadraticCurve","y":"h-4","x1":"0","x":"0"},{"action":"close"}]}],"fillStyle":{"color":"204,255,204","type":"solid"},"locked":false,"group":"","props":{"w":92.23089983022061,"y":849.737704918033,"h":50.491803278688394,"angle":0,"zindex":32,"x":326.7691001697794}},"155de395248aa1":{"id":"155de395248aa1","to":{"id":"14b0a37e17b76d","y":615.0823719894753,"angle":0,"x":449.0101867572157},"text":"","linkerType":"broken","name":"linker","lineStyle":{},"points":[{"y":615.0823719894753,"x":430.33446519524625},{"y":615.0823719894753,"x":430.33446519524625}],"locked":false,"dataAttributes":[],"from":{"id":"14b0a37b6c3e8a","y":615.0823719894753,"angle":3.141592653589793,"x":411.65874363327686},"group":"","props":{"zindex":50}},"14b0a5291fc8ec":{"textBlock":[{"position":{"w":"w-20","h":"h","y":0,"x":10},"text":""}],"lineStyle":{"lineColor":"153,255,255"},"link":"","parent":"","attribute":{"linkable":true,"visible":true,"container":false,"rotatable":true,"markerOffset":5,"collapsable":false,"collapsed":false},"children":[],"resizeDir":["tl","tr","br","bl"],"fontStyle":{},"dataAttributes":[{"id":"14b0a5292b789","category":"default","name":"序号","value":"","type":"number"},{"id":"14b0a5292b76d2","category":"default","name":"名称","value":"","type":"string"},{"id":"14b0a5292b7731","category":"default","name":"所有者","value":"","type":"string"},{"id":"14b0a5292b7edb","category":"default","name":"连接","value":"","type":"link"},{"id":"14b0a5292b7f2e","category":"default","name":"便笺","value":"","type":"string"}],"shapeStyle":{"alpha":1},"id":"14b0a5291fc8ec","anchors":[{"y":"0","x":"w/2"},{"y":"h","x":"w/2"},{"y":"h/2","x":"0"},{"y":"h/2","x":"w"}],"category":"basic","title":"圆角矩形","name":"roundRectangle","fillStyle":{"color":"153,255,255","type":"solid"},"path":[{"actions":[{"action":"move","y":"4","x":"0"},{"action":"quadraticCurve","y1":"0","y":"0","x":"4","x1":"0"},{"action":"line","y":"0","x":"w-4"},{"action":"quadraticCurve","y1":"0","y":"4","x":"w","x1":"w"},{"action":"line","y":"h-4","x":"w"},{"action":"quadraticCurve","y1":"h","y":"h","x":"w-4","x1":"w"},{"action":"line","y":"h","x":"4"},{"action":"quadraticCurve","y1":"h","y":"h-4","x":"0","x1":"0"},{"action":"close"}]}],"locked":false,"group":"","props":{"w":116,"angle":0,"h":88.00000000000011,"y":952,"x":303,"zindex":21}},"14b0a584a93a8d":{"textBlock":[{"position":{"w":"w","h":"h","y":0,"x":0},"text":"核心组件"}],"lineStyle":{},"link":"","parent":"","attribute":{"linkable":false,"visible":true,"container":false,"rotatable":true,"markerOffset":5,"collapsable":false,"collapsed":false},"children":[],"resizeDir":["tl","tr","br","bl"],"fontStyle":{"bold":true,"size":20},"dataAttributes":[{"id":"14b0a584b6e9ff","category":"default","name":"序号","value":"","type":"number"},{"id":"14b0a584b6e673","category":"default","name":"名称","value":"","type":"string"},{"id":"14b0a584b6eafb","category":"default","name":"所有者","value":"","type":"string"},{"id":"14b0a584b6eb71","category":"default","name":"连接","value":"","type":"link"},{"id":"14b0a584b6ed74","category":"default","name":"便笺","value":"","type":"string"}],"shapeStyle":{"alpha":1},"id":"14b0a584a93a8d","anchors":[],"category":"basic","title":"文本","name":"text","fillStyle":{},"path":[{"lineStyle":{"lineWidth":0},"fillStyle":{"type":"none"},"actions":[{"action":"move","y":"0","x":"0"},{"action":"line","y":"0","x":"w"},{"action":"line","y":"h","x":"w"},{"action":"line","y":"h","x":"0"},{"action":"close"}]}],"locked":false,"group":"","props":{"w":135.82342954159594,"angle":0,"h":36.393442622950815,"y":810,"x":491.87945670628187,"zindex":36}},"1562bc6ba3448c":{"textBlock":[{"position":{"w":"w-20","y":0,"h":"h","x":10},"text":""}],"lineStyle":{"lineColor":"255,153,51"},"link":"","parent":"","attribute":{"linkable":true,"visible":true,"container":false,"rotatable":true,"markerOffset":5,"collapsable":false,"collapsed":false},"children":[],"resizeDir":["tl","tr","br","bl"],"fontStyle":{},"dataAttributes":[{"id":"1562bc6dfdd305","category":"default","name":"序号","value":"","type":"number"},{"id":"1562bc6dfdd3cc","category":"default","name":"名称","value":"","type":"string"},{"id":"1562bc6dfdd41b","category":"default","name":"所有者","value":"","type":"string"},{"id":"1562bc6dfddc41","category":"default","name":"连接","value":"","type":"link"},{"id":"1562bc6dfdd662","category":"default","name":"便笺","value":"","type":"string"}],"shapeStyle":{"alpha":1},"id":"1562bc6ba3448c","anchors":[{"y":"0","x":"w/2"},{"y":"h","x":"w/2"},{"y":"h/2","x":"0"},{"y":"h/2","x":"w"}],"title":"圆角矩形","category":"basic","name":"roundRectangle","path":[{"actions":[{"action":"move","y":"4","x":"0"},{"y1":"0","action":"quadraticCurve","y":"0","x1":"0","x":"4"},{"action":"line","y":"0","x":"w-4"},{"y1":"0","action":"quadraticCurve","y":"4","x1":"w","x":"w"},{"action":"line","y":"h-4","x":"w"},{"y1":"h","action":"quadraticCurve","y":"h","x1":"w","x":"w-4"},{"action":"line","y":"h","x":"4"},{"y1":"h","action":"quadraticCurve","y":"h-4","x1":"0","x":"0"},{"action":"close"}]}],"fillStyle":{"color":"255,255,255","type":"solid"},"locked":false,"group":"","props":{"w":49.66666666666663,"y":675.2716049382709,"h":111,"angle":0,"zindex":72,"x":816.9994324770992}},"14b0a37ec25377":{"textBlock":[{"position":{"w":"w-20","y":0,"h":"h","x":10},"text":"......."}],"lineStyle":{"lineColor":"255,204,204"},"link":"","parent":"","attribute":{"linkable":true,"visible":true,"container":false,"rotatable":true,"markerOffset":5,"collapsable":false,"collapsed":false},"children":[],"resizeDir":["tl","tr","br","bl"],"fontStyle":{"size":15},"dataAttributes":[{"id":"14b0a37f5498b8","category":"default","name":"序号","value":"","type":"number"},{"id":"14b0a37f549443","category":"default","name":"名称","value":"","type":"string"},{"id":"14b0a37f549d79","category":"default","name":"所有者","value":"","type":"string"},{"id":"14b0a37f54908a","category":"default","name":"连接","value":"","type":"link"},{"id":"14b0a37f5495e5","category":"default","name":"便笺","value":"","type":"string"}],"shapeStyle":{"alpha":1},"id":"14b0a37ec25377","anchors":[{"y":"0","x":"w/2"},{"y":"h","x":"w/2"},{"y":"h/2","x":"0"},{"y":"h/2","x":"w"}],"title":"圆角矩形","category":"basic","name":"roundRectangle","path":[{"actions":[{"action":"move","y":"4","x":"0"},{"y1":"0","action":"quadraticCurve","y":"0","x1":"0","x":"4"},{"action":"line","y":"0","x":"w-4"},{"y1":"0","action":"quadraticCurve","y":"4","x1":"w","x":"w"},{"action":"line","y":"h-4","x":"w"},{"y1":"h","action":"quadraticCurve","y":"h","x1":"w","x":"w-4"},{"action":"line","y":"h","x":"4"},{"y1":"h","action":"quadraticCurve","y":"h-4","x1":"0","x":"0"},{"action":"close"}]}],"fillStyle":{"color":"255,204,204","type":"solid"},"locked":false,"group":"","props":{"w":95.96434634974537,"y":589.8364703501311,"h":50.49180327868851,"angle":0,"zindex":5,"x":696.0000000000001}},"14b0a9d8910683":{"textBlock":[{"position":{"w":"w*1.4","y":"h*0.38","h":"h*0.24","x":"-w*0.2"},"text":""}],"lineStyle":{"lineColor":"102,178,255"},"link":"","parent":"","attribute":{"linkable":true,"visible":true,"container":false,"rotatable":true,"markerOffset":5,"collapsable":false,"collapsed":false},"children":[],"resizeDir":["tl","tr","br","bl"],"fontStyle":{},"dataAttributes":[{"id":"14b0a9d89db29e","category":"default","name":"序号","value":"","type":"number"},{"id":"14b0a9d89db4af","category":"default","name":"名称","value":"","type":"string"},{"id":"14b0a9d89db5b1","category":"default","name":"所有者","value":"","type":"string"},{"id":"14b0a9d89dbc08","category":"default","name":"连接","value":"","type":"link"},{"id":"14b0a9d89db478","category":"default","name":"便笺","value":"","type":"string"}],"shapeStyle":{"alpha":1},"id":"14b0a9d8910683","anchors":[{"y":"0","x":"w*0.5"},{"y":"h","x":"w*0.5"}],"title":"上下箭头","category":"basic","name":"doubleVerticalArrow","path":[{"actions":[{"action":"move","y":"0","x":"w*0.5"},{"action":"line","y":"Math.min(w*0.5,h*0.45)","x":"w"},{"action":"line","y":"Math.min(w*0.5,h*0.45)","x":"w*0.67"},{"action":"line","y":"h-Math.min(w*0.5,h*0.45)","x":"w*0.67"},{"action":"line","y":"h-Math.min(w*0.5,h*0.45)","x":"w"},{"action":"line","y":"h","x":"w*0.5"},{"action":"line","y":"h-Math.min(w*0.5,h*0.45)","x":"0"},{"action":"line","y":"h-Math.min(w*0.5,h*0.45)","x":"w*0.33"},{"action":"line","y":"Math.min(w*0.5,h*0.45)","x":"w*0.33"},{"action":"line","y":"Math.min(w*0.5,h*0.45)","x":"0"},{"action":"line","y":"0","x":"w*0.5"},{"action":"close"}]}],"fillStyle":{"color":"102,178,255","type":"solid"},"locked":false,"group":"","props":{"w":28.969510976942104,"y":1056,"h":118,"angle":0,"zindex":46,"x":169.01524451152895}},"1562bc6ba34bbc":{"textBlock":[{"position":{"w":"w","h":"h","y":0,"x":0},"text":"微服务"}],"lineStyle":{},"link":"","parent":"","attribute":{"linkable":false,"visible":true,"container":false,"rotatable":true,"markerOffset":5,"collapsable":false,"collapsed":false},"children":[],"resizeDir":["tl","tr","br","bl"],"fontStyle":{"bold":true,"size":20},"dataAttributes":[{"id":"1562bc6dfddc1f","category":"default","name":"序号","value":"","type":"number"},{"id":"1562bc6dfdd6b1","category":"default","name":"名称","value":"","type":"string"},{"id":"1562bc6dfddfd1","category":"default","name":"所有者","value":"","type":"string"},{"id":"1562bc6dfddfb3","category":"default","name":"连接","value":"","type":"link"},{"id":"1562bc6dfdde6d","category":"default","name":"便笺","value":"","type":"string"}],"shapeStyle":{"alpha":1},"id":"1562bc6ba34bbc","anchors":[],"category":"basic","title":"文本","name":"text","fillStyle":{},"path":[{"lineStyle":{"lineWidth":0},"fillStyle":{"type":"none"},"actions":[{"action":"move","y":"0","x":"0"},{"action":"line","y":"0","x":"w"},{"action":"line","y":"h","x":"w"},{"action":"line","y":"h","x":"0"},{"action":"close"}]}],"locked":false,"group":"","props":{"w":135.82342954159594,"angle":0,"h":36.393442622950815,"y":677.2098765432096,"x":491.87945670628187,"zindex":69}},"14b0a52e0f5957":{"textBlock":[{"position":{"w":"w","y":0,"h":"h","x":0},"text":"灾备中心"}],"lineStyle":{},"link":"","parent":"","attribute":{"linkable":false,"visible":true,"container":false,"rotatable":true,"markerOffset":5,"collapsable":false,"collapsed":false},"children":[],"resizeDir":["tl","tr","br","bl"],"fontStyle":{"bold":true,"size":20},"dataAttributes":[{"id":"14b0a52e1d0acd","category":"default","name":"序号","value":"","type":"number"},{"id":"14b0a52e1d098c","category":"default","name":"名称","value":"","type":"string"},{"id":"14b0a52e1d0719","category":"default","name":"所有者","value":"","type":"string"},{"id":"14b0a52e1d0241","category":"default","name":"连接","value":"","type":"link"},{"id":"14b0a52e1d057f","category":"default","name":"便笺","value":"","type":"string"}],"shapeStyle":{"alpha":1},"id":"14b0a52e0f5957","anchors":[],"title":"文本","category":"basic","name":"text","path":[{"lineStyle":{"lineWidth":0},"fillStyle":{"type":"none"},"actions":[{"action":"move","y":"0","x":"0"},{"action":"line","y":"0","x":"w"},{"action":"line","y":"h","x":"w"},{"action":"line","y":"h","x":"0"},{"action":"close"}]}],"fillStyle":{},"locked":false,"group":"","props":{"w":135.82342954159594,"y":981.436596280555,"h":28.85245901639344,"angle":0,"zindex":22,"x":293.08828522920203}},"1562bc9e4be1cf":{"textBlock":[{"position":{"w":"w","h":"h","y":0,"x":0},"text":"tcp-haproxy"}],"lineStyle":{},"link":"","parent":"","attribute":{"linkable":false,"visible":true,"container":false,"rotatable":true,"markerOffset":5,"collapsable":false,"collapsed":false},"children":[],"resizeDir":["tl","tr","br","bl"],"fontStyle":{"bold":true,"size":15},"dataAttributes":[{"id":"1562bc9eb2400d","category":"default","name":"序号","value":"","type":"number"},{"id":"1562bc9eb24f63","category":"default","name":"名称","value":"","type":"string"},{"id":"1562bc9eb24cac","category":"default","name":"所有者","value":"","type":"string"},{"id":"1562bc9eb2401b","category":"default","name":"连接","value":"","type":"link"},{"id":"1562bc9eb24d8","category":"default","name":"便笺","value":"","type":"string"}],"shapeStyle":{"alpha":1},"id":"1562bc9e4be1cf","anchors":[],"category":"basic","title":"文本","name":"text","fillStyle":{},"path":[{"lineStyle":{"lineWidth":0},"fillStyle":{"type":"none"},"actions":[{"action":"move","y":"0","x":"0"},{"action":"line","y":"0","x":"w"},{"action":"line","y":"h","x":"w"},{"action":"line","y":"h","x":"0"},{"action":"close"}]}],"locked":false,"group":"","props":{"w":160,"angle":1.5707963267948966,"h":40,"y":710.7716049382709,"x":761.8323885130817,"zindex":76}},"1562bc808ac2ed":{"textBlock":[],"lineStyle":{"lineColor":"136,136,136","lineStyle":"dashed","lineWidth":1},"link":"","parent":"","attribute":{"linkable":false,"visible":true,"container":false,"rotatable":true,"markerOffset":5,"collapsable":false,"collapsed":false},"children":[],"resizeDir":["l","r"],"fontStyle":{},"dataAttributes":[],"shapeStyle":{"alpha":1},"id":"1562bc808ac2ed","anchors":[],"category":"ui","title":"水平线","name":"uiHLine","fillStyle":{},"path":[{"fillStyle":{"type":"none"},"actions":[{"action":"move","y":"lineWidth%2==0 ? Math.round(h/2) : h/2","x":0},{"action":"line","y":"lineWidth%2==0 ? Math.round(h/2) : h/2","x":"w"}]},{"lineStyle":{"lineWidth":0},"fillStyle":{"type":"none"},"actions":[{"action":"move","y":"0","x":"0"},{"action":"line","y":"0","x":"w"},{"action":"line","y":"h","x":"w"},{"action":"line","y":"h","x":"0"},{"action":"close"}]}],"locked":false,"group":"","props":{"w":931,"angle":0,"h":21,"y":780,"x":59,"zindex":73}},"155de39844bc1a":{"id":"155de39844bc1a","to":{"id":"14b0a37ec25377","y":615.0823719894753,"angle":0,"x":696.0000000000001},"text":"","linkerType":"broken","name":"linker","lineStyle":{},"points":[{"y":615.0823719894753,"x":676.1638370118847},{"y":615.0823719894753,"x":676.1638370118847}],"locked":false,"dataAttributes":[],"from":{"id":"14b0a37e265e7e","y":615.0823719894753,"angle":3.141592653589793,"x":656.3276740237693},"group":"","props":{"zindex":52}},"155de45d709d5e":{"textBlock":[{"position":{"w":"w-20","h":"h","y":0,"x":10},"text":""}],"lineStyle":{"lineColor":"255,153,51"},"link":"","parent":"","attribute":{"linkable":true,"visible":true,"container":false,"rotatable":true,"markerOffset":5,"collapsable":false,"collapsed":false},"children":[],"resizeDir":["tl","tr","br","bl"],"fontStyle":{},"dataAttributes":[{"id":"155de45d935ae4","category":"default","name":"序号","value":"","type":"number"},{"id":"155de45d935eca","category":"default","name":"名称","value":"","type":"string"},{"id":"155de45d935fba","category":"default","name":"所有者","value":"","type":"string"},{"id":"155de45d9358f1","category":"default","name":"连接","value":"","type":"link"},{"id":"155de45d935c2c","category":"default","name":"便笺","value":"","type":"string"}],"shapeStyle":{"alpha":1},"id":"155de45d709d5e","anchors":[{"y":"0","x":"w/2"},{"y":"h","x":"w/2"},{"y":"h/2","x":"0"},{"y":"h/2","x":"w"}],"category":"basic","title":"圆角矩形","name":"roundRectangle","fillStyle":{"color":"255,255,255","type":"solid"},"path":[{"actions":[{"action":"move","y":"4","x":"0"},{"action":"quadraticCurve","y1":"0","y":"0","x":"4","x1":"0"},{"action":"line","y":"0","x":"w-4"},{"action":"quadraticCurve","y1":"0","y":"4","x":"w","x1":"w"},{"action":"line","y":"h-4","x":"w"},{"action":"quadraticCurve","y1":"h","y":"h","x":"w-4","x1":"w"},{"action":"line","y":"h","x":"4"},{"action":"quadraticCurve","y1":"h","y":"h-4","x":"0","x1":"0"},{"action":"close"}]}],"locked":false,"group":"","props":{"w":49.66666666666663,"angle":0,"h":111,"y":808.0617283950613,"x":816.9994324770992,"zindex":55}},"14b0a548ba4f98":{"textBlock":[{"position":{"w":"w-20","h":"h","y":0,"x":10},"text":"云服务"}],"lineStyle":{"lineColor":"102,178,255"},"link":"","parent":"","attribute":{"linkable":true,"visible":true,"container":false,"rotatable":true,"markerOffset":5,"collapsable":false,"collapsed":false},"children":[],"resizeDir":["tl","tr","br","bl"],"fontStyle":{"bold":true,"size":30},"dataAttributes":[{"id":"14b0a548c5f624","category":"default","name":"序号","value":"","type":"number"},{"id":"14b0a548c5f9d6","category":"default","name":"名称","value":"","type":"string"},{"id":"14b0a548c5f956","category":"default","name":"所有者","value":"","type":"string"},{"id":"14b0a548c5f85e","category":"default","name":"连接","value":"","type":"link"},{"id":"14b0a548c5f0cd","category":"default","name":"便笺","value":"","type":"string"}],"shapeStyle":{"alpha":1},"id":"14b0a548ba4f98","anchors":[{"y":"0","x":"w/2"},{"y":"h","x":"w/2"},{"y":"h/2","x":"0"},{"y":"h/2","x":"w"}],"category":"basic","title":"圆角矩形","name":"roundRectangle","fillStyle":{"color":"102,178,255","type":"solid"},"path":[{"actions":[{"action":"move","y":"4","x":"0"},{"action":"quadraticCurve","y1":"0","y":"0","x":"4","x1":"0"},{"action":"line","y":"0","x":"w-4"},{"action":"quadraticCurve","y1":"0","y":"4","x":"w","x1":"w"},{"action":"line","y":"h-4","x":"w"},{"action":"quadraticCurve","y1":"h","y":"h","x":"w-4","x1":"w"},{"action":"line","y":"h","x":"4"},{"action":"quadraticCurve","y1":"h","y":"h-4","x":"0","x1":"0"},{"action":"close"}]}],"locked":false,"group":"","props":{"w":500,"angle":0,"h":86,"y":1074.0000000000002,"x":303.00701112618987,"zindex":25}},"14b0a3c2513d8c":{"textBlock":[{"position":{"w":"w-20","h":"h","y":0,"x":10},"text":""}],"lineStyle":{"lineColor":"51,153,255"},"link":"","parent":"","attribute":{"linkable":true,"visible":true,"container":false,"rotatable":true,"markerOffset":5,"collapsable":false,"collapsed":false},"children":[],"resizeDir":["tl","tr","br","bl"],"fontStyle":{},"dataAttributes":[{"id":"14b0a3c262c453","category":"default","name":"序号","value":"","type":"number"},{"id":"14b0a3c262c189","category":"default","name":"名称","value":"","type":"string"},{"id":"14b0a3c262cfed","category":"default","name":"所有者","value":"","type":"string"},{"id":"14b0a3c262cd14","category":"default","name":"连接","value":"","type":"link"},{"id":"14b0a3c262c5b7","category":"default","name":"便笺","value":"","type":"string"}],"shapeStyle":{"alpha":1},"id":"14b0a3c2513d8c","anchors":[{"y":"0","x":"w/2"},{"y":"h","x":"w/2"},{"y":"h/2","x":"0"},{"y":"h/2","x":"w"}],"category":"basic","title":"圆角矩形","name":"roundRectangle","fillStyle":{"color":"255,255,255","type":"solid"},"path":[{"actions":[{"action":"move","y":"4","x":"0"},{"action":"quadraticCurve","y1":"0","y":"0","x":"4","x1":"0"},{"action":"line","y":"0","x":"w-4"},{"action":"quadraticCurve","y1":"0","y":"4","x":"w","x1":"w"},{"action":"line","y":"h-4","x":"w"},{"action":"quadraticCurve","y1":"h","y":"h","x":"w-4","x1":"w"},{"action":"line","y":"h","x":"4"},{"action":"quadraticCurve","y1":"h","y":"h-4","x":"0","x1":"0"},{"action":"close"}]}],"locked":false,"group":"","props":{"w":51.65032372043123,"angle":0,"h":105.73560996273523,"y":812.1158015760096,"x":223.1885582001604,"zindex":16}},"14b0a521054425":{"textBlock":[{"position":{"w":"w-20","h":"h","y":0,"x":10},"text":""}],"lineStyle":{"lineColor":"153,255,255"},"link":"","parent":"","attribute":{"linkable":true,"visible":true,"container":false,"rotatable":true,"markerOffset":5,"collapsable":false,"collapsed":false},"children":[],"resizeDir":["tl","tr","br","bl"],"fontStyle":{},"dataAttributes":[{"id":"14b0a52110f32","category":"default","name":"序号","value":"","type":"number"},{"id":"14b0a52110fc8c","category":"default","name":"名称","value":"","type":"string"},{"id":"14b0a52110f926","category":"default","name":"所有者","value":"","type":"string"},{"id":"14b0a52110f935","category":"default","name":"连接","value":"","type":"link"},{"id":"14b0a52110f6e7","category":"default","name":"便笺","value":"","type":"string"}],"shapeStyle":{"alpha":1},"id":"14b0a521054425","anchors":[{"y":"0","x":"w/2"},{"y":"h","x":"w/2"},{"y":"h/2","x":"0"},{"y":"h/2","x":"w"}],"category":"basic","title":"圆角矩形","name":"roundRectangle","fillStyle":{"color":"153,255,255","type":"solid"},"path":[{"actions":[{"action":"move","y":"4","x":"0"},{"action":"quadraticCurve","y1":"0","y":"0","x":"4","x1":"0"},{"action":"line","y":"0","x":"w-4"},{"action":"quadraticCurve","y1":"0","y":"4","x":"w","x1":"w"},{"action":"line","y":"h-4","x":"w"},{"action":"quadraticCurve","y1":"h","y":"h","x":"w-4","x1":"w"},{"action":"line","y":"h","x":"4"},{"action":"quadraticCurve","y1":"h","y":"h-4","x":"0","x1":"0"},{"action":"close"}]}],"locked":false,"group":"","props":{"w":214.77079796264798,"angle":0,"h":88.24691358024711,"y":951.8902606310014,"x":445.62161214502873,"zindex":19}},"155de3970fa6ae":{"id":"155de3970fa6ae","to":{"id":"14b0a37b6c3e8a","y":615.0823719894753,"angle":3.141592653589793,"x":411.65874363327686},"text":"","linkerType":"broken","name":"linker","lineStyle":{},"points":[{"y":615.0823719894753,"x":430.33446519524625},{"y":615.0823719894753,"x":430.33446519524625}],"locked":false,"dataAttributes":[],"from":{"id":"14b0a37e17b76d","y":615.0823719894753,"angle":0,"x":449.0101867572157},"group":"","props":{"zindex":51}},"1562bc6ba34ff8":{"textBlock":[{"position":{"w":"w","y":0,"h":"h","x":0},"text":"微服务层"}],"lineStyle":{},"link":"","parent":"","attribute":{"linkable":false,"visible":true,"container":false,"rotatable":true,"markerOffset":5,"collapsable":false,"collapsed":false},"children":[],"resizeDir":["tl","tr","br","bl"],"fontStyle":{"bold":false,"size":15},"dataAttributes":[{"id":"1562bc6dfdddf4","category":"default","name":"序号","value":"","type":"number"},{"id":"1562bc6dfdd6e6","category":"default","name":"名称","value":"","type":"string"},{"id":"1562bc6dfddab6","category":"default","name":"所有者","value":"","type":"string"},{"id":"1562bc6dfdd754","category":"default","name":"连接","value":"","type":"link"},{"id":"1562bc6dfddf8a","category":"default","name":"便笺","value":"","type":"string"}],"shapeStyle":{"alpha":1},"id":"1562bc6ba34ff8","anchors":[],"title":"文本","category":"basic","name":"text","path":[{"lineStyle":{"lineWidth":0},"fillStyle":{"type":"none"},"actions":[{"action":"move","y":"0","x":"0"},{"action":"line","y":"0","x":"w"},{"action":"line","y":"h","x":"w"},{"action":"line","y":"h","x":"0"},{"action":"close"}]}],"fillStyle":{},"locked":false,"group":"","props":{"w":160,"y":707.7098765432096,"h":40,"angle":0,"zindex":70,"x":63}},"155de4992de8fb":{"textBlock":[{"position":{"w":"w","h":"h","y":0,"x":0},"text":"读写分离"}],"lineStyle":{},"link":"","parent":"","attribute":{"linkable":false,"visible":true,"container":false,"rotatable":true,"markerOffset":5,"collapsable":false,"collapsed":false},"children":[],"resizeDir":["tl","tr","br","bl"],"fontStyle":{"bold":true,"size":20},"dataAttributes":[{"id":"155de49960a75c","category":"default","name":"序号","value":"","type":"number"},{"id":"155de49960ab7b","category":"default","name":"名称","value":"","type":"string"},{"id":"155de49960a8cb","category":"default","name":"所有者","value":"","type":"string"},{"id":"155de49960a8a6","category":"default","name":"连接","value":"","type":"link"},{"id":"155de49960a1a4","category":"default","name":"便笺","value":"","type":"string"}],"shapeStyle":{"alpha":1},"id":"155de4992de8fb","anchors":[],"category":"basic","title":"文本","name":"text","fillStyle":{},"path":[{"lineStyle":{"lineWidth":0},"fillStyle":{"type":"none"},"actions":[{"action":"move","y":"0","x":"0"},{"action":"line","y":"0","x":"w"},{"action":"line","y":"h","x":"w"},{"action":"line","y":"h","x":"0"},{"action":"close"}]}],"locked":false,"group":"","props":{"w":135.82342954159594,"angle":0,"h":28.85245901639344,"y":979.3820314276365,"x":681.1779522510583,"zindex":62}},"14b0a3aa7c2f3e":{"textBlock":[{"position":{"w":"w","h":"h","y":0,"x":0},"text":"软负载7层nginx,4层lvs"}],"lineStyle":{},"link":"","parent":"","attribute":{"linkable":false,"visible":true,"container":false,"rotatable":true,"markerOffset":5,"collapsable":false,"collapsed":false},"children":[],"resizeDir":["tl","tr","br","bl"],"fontStyle":{"bold":true,"size":20},"dataAttributes":[{"id":"14b0a3aa88d1e8","category":"default","name":"序号","value":"","type":"number"},{"id":"14b0a3aa88dac6","category":"default","name":"名称","value":"","type":"string"},{"id":"14b0a3aa88defa","category":"default","name":"所有者","value":"","type":"string"},{"id":"14b0a3aa88d48a","category":"default","name":"连接","value":"","type":"link"},{"id":"14b0a3aa88df32","category":"default","name":"便笺","value":"","type":"string"}],"shapeStyle":{"alpha":1},"id":"14b0a3aa7c2f3e","anchors":[],"category":"basic","title":"文本","name":"text","fillStyle":{},"path":[{"lineStyle":{"lineWidth":0},"fillStyle":{"type":"none"},"actions":[{"action":"move","y":"0","x":"0"},{"action":"line","y":"0","x":"w"},{"action":"line","y":"h","x":"w"},{"action":"line","y":"h","x":"0"},{"action":"close"}]}],"locked":false,"group":"","props":{"w":263.22222222222223,"angle":0,"h":36.11111111111114,"y":455.44444444444446,"x":287.4016694963216,"zindex":10}},"155de495432e8b":{"textBlock":[{"position":{"w":"w-20","h":"h","y":0,"x":10},"text":""}],"lineStyle":{"lineColor":"153,255,255"},"link":"","parent":"","attribute":{"linkable":true,"visible":true,"container":false,"rotatable":true,"markerOffset":5,"collapsable":false,"collapsed":false},"children":[],"resizeDir":["tl","tr","br","bl"],"fontStyle":{},"dataAttributes":[{"id":"155de4956c3b6a","category":"default","name":"序号","value":"","type":"number"},{"id":"155de4956c3ccf","category":"default","name":"名称","value":"","type":"string"},{"id":"155de4956c35e5","category":"default","name":"所有者","value":"","type":"string"},{"id":"155de4956c38d2","category":"default","name":"连接","value":"","type":"link"},{"id":"155de4956c39e9","category":"default","name":"便笺","value":"","type":"string"}],"shapeStyle":{"alpha":1},"id":"155de495432e8b","anchors":[{"y":"0","x":"w/2"},{"y":"h","x":"w/2"},{"y":"h/2","x":"0"},{"y":"h/2","x":"w"}],"category":"basic","title":"圆角矩形","name":"roundRectangle","fillStyle":{"color":"153,255,255","type":"solid"},"path":[{"actions":[{"action":"move","y":"4","x":"0"},{"action":"quadraticCurve","y1":"0","y":"0","x":"4","x1":"0"},{"action":"line","y":"0","x":"w-4"},{"action":"quadraticCurve","y1":"0","y":"4","x":"w","x1":"w"},{"action":"line","y":"h-4","x":"w"},{"action":"quadraticCurve","y1":"h","y":"h","x":"w-4","x1":"w"},{"action":"line","y":"h","x":"4"},{"action":"quadraticCurve","y1":"h","y":"h-4","x":"0","x1":"0"},{"action":"close"}]}],"locked":false,"group":"","props":{"w":116,"angle":0,"h":88.00000000000011,"y":952.013717421125,"x":687.0070111263527,"zindex":61}},"14b0a5d59c035d":{"textBlock":[{"position":{"w":"w","y":0,"h":"h","x":0},"text":"硬件层"}],"lineStyle":{},"link":"","parent":"","attribute":{"linkable":false,"visible":true,"container":false,"rotatable":true,"markerOffset":5,"collapsable":false,"collapsed":false},"children":[],"resizeDir":["tl","tr","br","bl"],"fontStyle":{"bold":false,"size":15},"dataAttributes":[{"id":"14b0a5d96163ef","category":"default","name":"序号","value":"","type":"number"},{"id":"14b0a5d96165ff","category":"default","name":"名称","value":"","type":"string"},{"id":"14b0a5d9616211","category":"default","name":"所有者","value":"","type":"string"},{"id":"14b0a5d9616dc5","category":"default","name":"连接","value":"","type":"link"},{"id":"14b0a5d9616061","category":"default","name":"便笺","value":"","type":"string"}],"shapeStyle":{"alpha":1},"id":"14b0a5d59c035d","anchors":[],"title":"文本","category":"basic","name":"text","path":[{"lineStyle":{"lineWidth":0},"fillStyle":{"type":"none"},"actions":[{"action":"move","y":"0","x":"0"},{"action":"line","y":"0","x":"w"},{"action":"line","y":"h","x":"w"},{"action":"line","y":"h","x":"0"},{"action":"close"}]}],"fillStyle":{},"locked":false,"group":"","props":{"w":160,"y":1092.8888888888896,"h":40,"angle":0,"zindex":41,"x":66.44002647727805}},"155de39987581":{"id":"155de39987581","to":{"id":"14b0a37e265e7e","y":615.0823719894753,"angle":3.141592653589793,"x":656.3276740237693},"text":"","linkerType":"broken","name":"linker","lineStyle":{},"points":[{"y":615.0823719894753,"x":676.1638370118847},{"y":615.0823719894753,"x":676.1638370118847}],"locked":false,"dataAttributes":[],"from":{"id":"14b0a37ec25377","y":615.0823719894753,"angle":0,"x":696.0000000000001},"group":"","props":{"zindex":53}},"14b0a348331073":{"textBlock":[{"position":{"w":"w-20","y":0,"h":"h","x":10},"text":""}],"lineStyle":{"lineColor":"255,153,153"},"link":"","parent":"","attribute":{"linkable":true,"visible":true,"container":false,"rotatable":true,"markerOffset":5,"collapsable":false,"collapsed":false},"children":[],"resizeDir":["tl","tr","br","bl"],"fontStyle":{},"dataAttributes":[{"id":"14b0a3483317e","category":"default","name":"序号","value":"","type":"number"},{"id":"14b0a348331d9f","category":"default","name":"名称","value":"","type":"string"},{"id":"14b0a348331285","category":"default","name":"所有者","value":"","type":"string"},{"id":"14b0a3483314d8","category":"default","name":"连接","value":"","type":"link"},{"id":"14b0a348331851","category":"default","name":"便笺","value":"","type":"string"}],"shapeStyle":{"alpha":1},"id":"14b0a348331073","anchors":[{"y":"0","x":"w/2"},{"y":"h","x":"w/2"},{"y":"h/2","x":"0"},{"y":"h/2","x":"w"}],"title":"圆角矩形","category":"basic","name":"roundRectangle","path":[{"actions":[{"action":"move","y":"4","x":"0"},{"y1":"0","action":"quadraticCurve","y":"0","x1":"0","x":"4"},{"action":"line","y":"0","x":"w-4"},{"y1":"0","action":"quadraticCurve","y":"4","x1":"w","x":"w"},{"action":"line","y":"h-4","x":"w"},{"y1":"h","action":"quadraticCurve","y":"h","x1":"w","x":"w-4"},{"action":"line","y":"h","x":"4"},{"y1":"h","action":"quadraticCurve","y":"h-4","x1":"0","x":"0"},{"action":"close"}]}],"fillStyle":{"color":"255,153,153","type":"solid"},"locked":false,"group":"","props":{"w":500,"y":546.2098765432096,"h":111,"angle":0,"zindex":1,"x":303}},"14b0a38678b86f":{"textBlock":[{"position":{"w":"w","h":"h","y":0,"x":0},"text":"业务系统"}],"lineStyle":{},"link":"","parent":"","attribute":{"linkable":false,"visible":true,"container":false,"rotatable":true,"markerOffset":5,"collapsable":false,"collapsed":false},"children":[],"resizeDir":["tl","tr","br","bl"],"fontStyle":{"bold":true,"size":20},"dataAttributes":[{"id":"14b0a38678b813","category":"default","name":"序号","value":"","type":"number"},{"id":"14b0a38678b7dc","category":"default","name":"名称","value":"","type":"string"},{"id":"14b0a38678b826","category":"default","name":"所有者","value":"","type":"string"},{"id":"14b0a38678ba34","category":"default","name":"连接","value":"","type":"link"},{"id":"14b0a38678b03e","category":"default","name":"便笺","value":"","type":"string"}],"shapeStyle":{"alpha":1},"id":"14b0a38678b86f","anchors":[],"category":"basic","title":"文本","name":"text","fillStyle":{},"path":[{"lineStyle":{"lineWidth":0},"fillStyle":{"type":"none"},"actions":[{"action":"move","y":"0","x":"0"},{"action":"line","y":"0","x":"w"},{"action":"line","y":"h","x":"w"},{"action":"line","y":"h","x":"0"},{"action":"close"}]}],"locked":false,"group":"","props":{"w":135.82342954159594,"angle":0,"h":36.393442622950815,"y":550.0987654320986,"x":481.879456706282,"zindex":6}},"1564fca6a2f58":{"textBlock":[],"lineStyle":{"lineColor":"136,136,136","lineStyle":"dashed","lineWidth":1},"link":"","parent":"","attribute":{"linkable":false,"visible":true,"container":false,"rotatable":true,"markerOffset":5,"collapsable":false,"collapsed":false},"children":[],"resizeDir":["l","r"],"fontStyle":{},"dataAttributes":[],"shapeStyle":{"alpha":1},"id":"1564fca6a2f58","anchors":[],"category":"ui","title":"水平线","name":"uiHLine","fillStyle":{},"path":[{"fillStyle":{"type":"none"},"actions":[{"action":"move","y":"lineWidth%2==0 ? Math.round(h/2) : h/2","x":0},{"action":"line","y":"lineWidth%2==0 ? Math.round(h/2) : h/2","x":"w"}]},{"lineStyle":{"lineWidth":0},"fillStyle":{"type":"none"},"actions":[{"action":"move","y":"0","x":"0"},{"action":"line","y":"0","x":"w"},{"action":"line","y":"h","x":"w"},{"action":"line","y":"h","x":"0"},{"action":"close"}]}],"locked":false,"group":"","props":{"w":931,"angle":0,"h":21,"y":924.8785246188581,"x":63,"zindex":79}},"14b0a5b96961d8":{"textBlock":[],"lineStyle":{"lineColor":"136,136,136","lineStyle":"dashed","lineWidth":1},"link":"","parent":"","attribute":{"linkable":false,"visible":true,"container":false,"rotatable":true,"markerOffset":5,"collapsable":false,"collapsed":false},"children":[],"resizeDir":["l","r"],"fontStyle":{},"dataAttributes":[],"shapeStyle":{"alpha":1},"id":"14b0a5b96961d8","anchors":[],"category":"ui","title":"水平线","name":"uiHLine","fillStyle":{},"path":[{"fillStyle":{"type":"none"},"actions":[{"action":"move","y":"lineWidth%2==0 ? Math.round(h/2) : h/2","x":0},{"action":"line","y":"lineWidth%2==0 ? Math.round(h/2) : h/2","x":"w"}]},{"lineStyle":{"lineWidth":0},"fillStyle":{"type":"none"},"actions":[{"action":"move","y":"0","x":"0"},{"action":"line","y":"0","x":"w"},{"action":"line","y":"h","x":"w"},{"action":"line","y":"h","x":"0"},{"action":"close"}]}],"locked":false,"group":"","props":{"w":931,"angle":0,"h":21,"y":1041,"x":63,"zindex":-3}},"155de45f6c225e":{"textBlock":[{"position":{"w":"w","y":0,"h":"h","x":0},"text":"tcp-haproxy"}],"lineStyle":{},"link":"","parent":"","attribute":{"linkable":false,"visible":true,"container":false,"rotatable":true,"markerOffset":5,"collapsable":false,"collapsed":false},"children":[],"resizeDir":["tl","tr","br","bl"],"fontStyle":{"bold":true,"size":15},"dataAttributes":[{"id":"155de45f8331d2","category":"default","name":"序号","value":"","type":"number"},{"id":"155de45f833ce8","category":"default","name":"名称","value":"","type":"string"},{"id":"155de45f833ef3","category":"default","name":"所有者","value":"","type":"string"},{"id":"155de45f833413","category":"default","name":"连接","value":"","type":"link"},{"id":"155de45f83323a","category":"default","name":"便笺","value":"","type":"string"}],"shapeStyle":{"alpha":1},"id":"155de45f6c225e","anchors":[],"title":"文本","category":"basic","name":"text","path":[{"lineStyle":{"lineWidth":0},"fillStyle":{"type":"none"},"actions":[{"action":"move","y":"0","x":"0"},{"action":"line","y":"0","x":"w"},{"action":"line","y":"h","x":"w"},{"action":"line","y":"h","x":"0"},{"action":"close"}]}],"fillStyle":{},"locked":false,"group":"","props":{"w":160,"y":840.5009907044904,"h":40,"angle":1.5707963267948966,"zindex":56,"x":761.8323885130817}},"14b0a37e17b76d":{"textBlock":[{"position":{"w":"w-20","h":"h","y":0,"x":10},"text":"用户系统"}],"lineStyle":{"lineColor":"255,204,204"},"link":"","parent":"","attribute":{"linkable":true,"visible":true,"container":false,"rotatable":true,"markerOffset":5,"collapsable":false,"collapsed":false},"children":[],"resizeDir":["tl","tr","br","bl"],"fontStyle":{"size":15},"dataAttributes":[{"id":"14b0a37e26535e","category":"default","name":"序号","value":"","type":"number"},{"id":"14b0a37e265462","category":"default","name":"名称","value":"","type":"string"},{"id":"14b0a37e265ee2","category":"default","name":"所有者","value":"","type":"string"},{"id":"14b0a37e265fd2","category":"default","name":"连接","value":"","type":"link"},{"id":"14b0a37e265c2f","category":"default","name":"便笺","value":"","type":"string"}],"shapeStyle":{"alpha":1},"id":"14b0a37e17b76d","anchors":[{"y":"0","x":"w/2"},{"y":"h","x":"w/2"},{"y":"h/2","x":"0"},{"y":"h/2","x":"w"}],"category":"basic","title":"圆角矩形","name":"roundRectangle","fillStyle":{"color":"255,204,204","type":"solid"},"path":[{"actions":[{"action":"move","y":"4","x":"0"},{"action":"quadraticCurve","y1":"0","y":"0","x":"4","x1":"0"},{"action":"line","y":"0","x":"w-4"},{"action":"quadraticCurve","y1":"0","y":"4","x":"w","x1":"w"},{"action":"line","y":"h-4","x":"w"},{"action":"quadraticCurve","y1":"h","y":"h","x":"w-4","x1":"w"},{"action":"line","y":"h","x":"4"},{"action":"quadraticCurve","y1":"h","y":"h-4","x":"0","x1":"0"},{"action":"close"}]}],"locked":false,"group":"","props":{"w":84.88964346349745,"angle":0,"h":50.49180327868852,"y":589.8364703501311,"x":449.0101867572157,"zindex":3}},"14b0a37b6c3e8a":{"textBlock":[{"position":{"w":"w-20","h":"h","y":0,"x":10},"text":"主站系统"}],"lineStyle":{"lineColor":"255,204,204"},"link":"","parent":"","attribute":{"linkable":true,"visible":true,"container":false,"rotatable":true,"markerOffset":5,"collapsable":false,"collapsed":false},"children":[],"resizeDir":["tl","tr","br","bl"],"fontStyle":{"size":15},"dataAttributes":[{"id":"14b0a37b6c3732","category":"default","name":"序号","value":"","type":"number"},{"id":"14b0a37b6c320a","category":"default","name":"名称","value":"","type":"string"},{"id":"14b0a37b6c3cb9","category":"default","name":"所有者","value":"","type":"string"},{"id":"14b0a37b6c3252","category":"default","name":"连接","value":"","type":"link"},{"id":"14b0a37b6c31e4","category":"default","name":"便笺","value":"","type":"string"}],"shapeStyle":{"alpha":1},"id":"14b0a37b6c3e8a","anchors":[{"y":"0","x":"w/2"},{"y":"h","x":"w/2"},{"y":"h/2","x":"0"},{"y":"h/2","x":"w"}],"category":"basic","title":"圆角矩形","name":"roundRectangle","fillStyle":{"color":"255,204,204","type":"solid"},"path":[{"actions":[{"action":"move","y":"4","x":"0"},{"action":"quadraticCurve","y1":"0","y":"0","x":"4","x1":"0"},{"action":"line","y":"0","x":"w-4"},{"action":"quadraticCurve","y1":"0","y":"4","x":"w","x1":"w"},{"action":"line","y":"h-4","x":"w"},{"action":"quadraticCurve","y1":"h","y":"h","x":"w-4","x1":"w"},{"action":"line","y":"h","x":"4"},{"action":"quadraticCurve","y1":"h","y":"h-4","x":"0","x1":"0"},{"action":"close"}]}],"locked":false,"group":"","props":{"w":84.88964346349745,"angle":0,"h":50.49180327868852,"y":589.8364703501311,"x":326.7691001697794,"zindex":2}},"14b0a9ce0343f3":{"textBlock":[{"position":{"w":"w*1.4","y":"h*0.38","h":"h*0.24","x":"-w*0.2"},"text":""}],"lineStyle":{"lineColor":"255,179,102"},"link":"","parent":"","attribute":{"linkable":true,"visible":true,"container":false,"rotatable":true,"markerOffset":5,"collapsable":false,"collapsed":false},"children":[],"resizeDir":["tl","tr","br","bl"],"fontStyle":{},"dataAttributes":[{"id":"14b0a9ce0ff91a","category":"default","name":"序号","value":"","type":"number"},{"id":"14b0a9ce0ff492","category":"default","name":"名称","value":"","type":"string"},{"id":"14b0a9ce0ff18e","category":"default","name":"所有者","value":"","type":"string"},{"id":"14b0a9ce0ff6c7","category":"default","name":"连接","value":"","type":"link"},{"id":"14b0a9ce0ff592","category":"default","name":"便笺","value":"","type":"string"}],"shapeStyle":{"alpha":1},"id":"14b0a9ce0343f3","anchors":[{"y":"0","x":"w*0.5"},{"y":"h","x":"w*0.5"}],"title":"上下箭头","category":"basic","name":"doubleVerticalArrow","path":[{"actions":[{"action":"move","y":"0","x":"w*0.5"},{"action":"line","y":"Math.min(w*0.5,h*0.45)","x":"w"},{"action":"line","y":"Math.min(w*0.5,h*0.45)","x":"w*0.67"},{"action":"line","y":"h-Math.min(w*0.5,h*0.45)","x":"w*0.67"},{"action":"line","y":"h-Math.min(w*0.5,h*0.45)","x":"w"},{"action":"line","y":"h","x":"w*0.5"},{"action":"line","y":"h-Math.min(w*0.5,h*0.45)","x":"0"},{"action":"line","y":"h-Math.min(w*0.5,h*0.45)","x":"w*0.33"},{"action":"line","y":"Math.min(w*0.5,h*0.45)","x":"w*0.33"},{"action":"line","y":"Math.min(w*0.5,h*0.45)","x":"0"},{"action":"line","y":"0","x":"w*0.5"},{"action":"close"}]}],"fillStyle":{"color":"255,179,102","type":"solid"},"locked":false,"group":"","props":{"w":29,"y":540,"h":113.11111126124933,"angle":0,"zindex":43,"x":169}},"1562bc6ba3451c":{"textBlock":[{"position":{"w":"w*1.4","y":"h*0.38","h":"h*0.24","x":"-w*0.2"},"text":""}],"lineStyle":{"lineColor":"153,255,153"},"link":"","parent":"","attribute":{"linkable":true,"visible":true,"container":false,"rotatable":true,"markerOffset":5,"collapsable":false,"collapsed":false},"children":[],"resizeDir":["tl","tr","br","bl"],"fontStyle":{},"dataAttributes":[{"id":"1562bc6dfdd35d","category":"default","name":"序号","value":"","type":"number"},{"id":"1562bc6dfdd9bd","category":"default","name":"名称","value":"","type":"string"},{"id":"1562bc6dfdd82d","category":"default","name":"所有者","value":"","type":"string"},{"id":"1562bc6dfdd0db","category":"default","name":"连接","value":"","type":"link"},{"id":"1562bc6dfdde5b","category":"default","name":"便笺","value":"","type":"string"}],"shapeStyle":{"alpha":1},"id":"1562bc6ba3451c","anchors":[{"y":"0","x":"w*0.5"},{"y":"h","x":"w*0.5"}],"title":"上下箭头","category":"basic","name":"doubleVerticalArrow","path":[{"actions":[{"action":"move","y":"0","x":"w*0.5"},{"action":"line","y":"Math.min(w*0.5,h*0.45)","x":"w"},{"action":"line","y":"Math.min(w*0.5,h*0.45)","x":"w*0.67"},{"action":"line","y":"h-Math.min(w*0.5,h*0.45)","x":"w*0.67"},{"action":"line","y":"h-Math.min(w*0.5,h*0.45)","x":"w"},{"action":"line","y":"h","x":"w*0.5"},{"action":"line","y":"h-Math.min(w*0.5,h*0.45)","x":"0"},{"action":"line","y":"h-Math.min(w*0.5,h*0.45)","x":"w*0.33"},{"action":"line","y":"Math.min(w*0.5,h*0.45)","x":"w*0.33"},{"action":"line","y":"Math.min(w*0.5,h*0.45)","x":"0"},{"action":"line","y":"0","x":"w*0.5"},{"action":"close"}]}],"fillStyle":{"color":"153,255,153","type":"solid"},"locked":false,"group":"","props":{"w":29,"y":669.9615442975908,"h":110.03845570240924,"angle":0,"zindex":71,"x":169}},"14b0a584a93e29":{"textBlock":[{"position":{"w":"w-20","h":"h","y":0,"x":10},"text":""}],"lineStyle":{"lineColor":"153,255,153","lineWidth":2},"link":"","parent":"","attribute":{"linkable":true,"visible":true,"container":false,"rotatable":true,"markerOffset":5,"collapsable":false,"collapsed":false},"children":[],"resizeDir":["tl","tr","br","bl"],"fontStyle":{},"dataAttributes":[{"id":"14b0a584b5e547","category":"default","name":"序号","value":"","type":"number"},{"id":"14b0a584b5ed3a","category":"default","name":"名称","value":"","type":"string"},{"id":"14b0a584b5ee1","category":"default","name":"所有者","value":"","type":"string"},{"id":"14b0a584b5e62d","category":"default","name":"连接","value":"","type":"link"},{"id":"14b0a584b5e083","category":"default","name":"便笺","value":"","type":"string"}],"shapeStyle":{"alpha":1},"id":"14b0a584a93e29","anchors":[{"y":"0","x":"w/2"},{"y":"h","x":"w/2"},{"y":"h/2","x":"0"},{"y":"h/2","x":"w"}],"category":"basic","title":"圆角矩形","name":"roundRectangle","fillStyle":{"color":"153,255,153","type":"solid"},"path":[{"actions":[{"action":"move","y":"4","x":"0"},{"action":"quadraticCurve","y1":"0","y":"0","x":"4","x1":"0"},{"action":"line","y":"0","x":"w-4"},{"action":"quadraticCurve","y1":"0","y":"4","x":"w","x1":"w"},{"action":"line","y":"h-4","x":"w"},{"action":"quadraticCurve","y1":"h","y":"h","x":"w-4","x1":"w"},{"action":"line","y":"h","x":"4"},{"action":"quadraticCurve","y1":"h","y":"h-4","x":"0","x1":"0"},{"action":"close"}]}],"locked":false,"group":"","props":{"w":500,"angle":0,"h":111,"y":805.0009907044904,"x":303.0070111263527,"zindex":31}},"1562bc6ba341e":{"textBlock":[{"position":{"w":"w-20","h":"h","y":0,"x":10},"text":""}],"lineStyle":{"lineColor":"153,255,153","lineWidth":2},"link":"","parent":"","attribute":{"linkable":true,"visible":true,"container":false,"rotatable":true,"markerOffset":5,"collapsable":false,"collapsed":false},"children":[],"resizeDir":["tl","tr","br","bl"],"fontStyle":{},"dataAttributes":[{"id":"1562bc6dfdc64a","category":"default","name":"序号","value":"","type":"number"},{"id":"1562bc6dfdc4ce","category":"default","name":"名称","value":"","type":"string"},{"id":"1562bc6dfdc42","category":"default","name":"所有者","value":"","type":"string"},{"id":"1562bc6dfdcee2","category":"default","name":"连接","value":"","type":"link"},{"id":"1562bc6dfdc456","category":"default","name":"便笺","value":"","type":"string"}],"shapeStyle":{"alpha":1},"id":"1562bc6ba341e","anchors":[{"y":"0","x":"w/2"},{"y":"h","x":"w/2"},{"y":"h/2","x":"0"},{"y":"h/2","x":"w"}],"category":"basic","title":"圆角矩形","name":"roundRectangle","fillStyle":{"color":"153,255,153","type":"solid"},"path":[{"actions":[{"action":"move","y":"4","x":"0"},{"action":"quadraticCurve","y1":"0","y":"0","x":"4","x1":"0"},{"action":"line","y":"0","x":"w-4"},{"action":"quadraticCurve","y1":"0","y":"4","x":"w","x1":"w"},{"action":"line","y":"h-4","x":"w"},{"action":"quadraticCurve","y1":"h","y":"h","x":"w-4","x1":"w"},{"action":"line","y":"h","x":"4"},{"action":"quadraticCurve","y1":"h","y":"h-4","x":"0","x1":"0"},{"action":"close"}]}],"locked":false,"group":"","props":{"w":500,"angle":0,"h":111,"y":672.2098765432096,"x":303.0070111263527,"zindex":64}},"1562bc6ba342aa":{"textBlock":[{"position":{"w":"w-20","h":"h","y":0,"x":10},"text":"pushy"}],"lineStyle":{"lineColor":"204,255,230"},"link":"","parent":"","attribute":{"linkable":true,"visible":true,"container":false,"rotatable":true,"markerOffset":5,"collapsable":false,"collapsed":false},"children":[],"resizeDir":["tl","tr","br","bl"],"fontStyle":{"size":15},"dataAttributes":[{"id":"1562bc6dfdca4f","category":"default","name":"序号","value":"","type":"number"},{"id":"1562bc6dfdcc08","category":"default","name":"名称","value":"","type":"string"},{"id":"1562bc6dfdc998","category":"default","name":"所有者","value":"","type":"string"},{"id":"1562bc6dfdc70e","category":"default","name":"连接","value":"","type":"link"},{"id":"1562bc6dfdc583","category":"default","name":"便笺","value":"","type":"string"}],"shapeStyle":{"alpha":1},"id":"1562bc6ba342aa","anchors":[{"y":"0","x":"w/2"},{"y":"h","x":"w/2"},{"y":"h/2","x":"0"},{"y":"h/2","x":"w"}],"category":"basic","title":"圆角矩形","name":"roundRectangle","fillStyle":{"color":"204,255,204","type":"solid"},"path":[{"actions":[{"action":"move","y":"4","x":"0"},{"action":"quadraticCurve","y1":"0","y":"0","x":"4","x1":"0"},{"action":"line","y":"0","x":"w-4"},{"action":"quadraticCurve","y1":"0","y":"4","x":"w","x1":"w"},{"action":"line","y":"h-4","x":"w"},{"action":"quadraticCurve","y1":"h","y":"h","x":"w-4","x1":"w"},{"action":"line","y":"h","x":"4"},{"action":"quadraticCurve","y1":"h","y":"h-4","x":"0","x1":"0"},{"action":"close"}]}],"locked":false,"group":"","props":{"w":97.86323335219788,"angle":0,"h":50.491803278688394,"y":716.9475814612426,"x":568.8888888888889,"zindex":67}},"14b0a584a93aaf":{"textBlock":[{"position":{"w":"w-20","h":"h","y":0,"x":10},"text":"zookeeper"}],"lineStyle":{"lineColor":"204,255,230"},"link":"","parent":"","attribute":{"linkable":true,"visible":true,"container":false,"rotatable":true,"markerOffset":5,"collapsable":false,"collapsed":false},"children":[],"resizeDir":["tl","tr","br","bl"],"fontStyle":{"size":15},"dataAttributes":[{"id":"14b0a584b6e40c","category":"default","name":"序号","value":"","type":"number"},{"id":"14b0a584b6ee61","category":"default","name":"名称","value":"","type":"string"},{"id":"14b0a584b6e6bb","category":"default","name":"所有者","value":"","type":"string"},{"id":"14b0a584b6e3e7","category":"default","name":"连接","value":"","type":"link"},{"id":"14b0a584b6e005","category":"default","name":"便笺","value":"","type":"string"}],"shapeStyle":{"alpha":1},"id":"14b0a584a93aaf","anchors":[{"y":"0","x":"w/2"},{"y":"h","x":"w/2"},{"y":"h/2","x":"0"},{"y":"h/2","x":"w"}],"category":
gitextract_58r9gm9n/
├── .gitignore
├── LICENSE
├── README.md
├── docs/
│ ├── taoshop.sql
│ ├── 数据库设计文档.docx
│ ├── 架构图.pos
│ ├── 电商平台设计.mdl
│ ├── 电商平台设计.md~
│ └── 阿里巴巴Java开发手册.doc
└── src/
├── ReadMe.md
├── pom.xml
├── taoshop-cms/
│ ├── ReadMe.md
│ ├── pom.xml
│ └── src/
│ └── main/
│ └── webapp/
│ ├── WEB-INF/
│ │ └── web.xml
│ └── index.jsp
├── taoshop-common/
│ ├── ReadMe.md
│ ├── pom.xml
│ ├── taoshop-common-cache/
│ │ ├── ReadMe.md
│ │ └── pom.xml
│ ├── taoshop-common-core/
│ │ ├── ReadMe.md
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ └── java/
│ │ │ └── com/
│ │ │ └── muses/
│ │ │ └── taoshop/
│ │ │ └── common/
│ │ │ └── core/
│ │ │ ├── base/
│ │ │ │ ├── Constants.java
│ │ │ │ └── ResultStatus.java
│ │ │ ├── database/
│ │ │ │ ├── annotation/
│ │ │ │ │ ├── AnnotationConstants.java
│ │ │ │ │ ├── MybatisRepository.java
│ │ │ │ │ └── TypeAliasesPackageScanner.java
│ │ │ │ ├── config/
│ │ │ │ │ ├── BaseConfig.java
│ │ │ │ │ ├── DataSourceConfig.java
│ │ │ │ │ ├── MybatisConfig.java
│ │ │ │ │ └── MybatisSqlInterceptor.java
│ │ │ │ └── typehandlers/
│ │ │ │ ├── Spring2BooleanTypeHandler.java
│ │ │ │ └── UnixLong2DateTypeHandler.java
│ │ │ ├── exception/
│ │ │ │ └── CommonException.java
│ │ │ └── util/
│ │ │ ├── DateUtils.java
│ │ │ ├── JsonDateSerializer.java
│ │ │ ├── SerializeUtils.java
│ │ │ └── UUIDGenerator.java
│ │ └── test/
│ │ └── java/
│ │ └── org/
│ │ └── muses/
│ │ └── commo/
│ │ ├── AppTest.java
│ │ ├── MybatisSqlInterceptor.java
│ │ └── RedisWithReentrantLock.java
│ ├── taoshop-common-rpc/
│ │ ├── ReadMe.md
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ └── java/
│ │ │ └── org/
│ │ │ └── muses/
│ │ │ └── common/
│ │ │ └── App.java
│ │ └── test/
│ │ └── java/
│ │ └── org/
│ │ └── muses/
│ │ └── common/
│ │ └── AppTest.java
│ └── taoshop-security-core/
│ ├── ReadMe.md
│ ├── pom.xml
│ └── src/
│ └── main/
│ └── java/
│ └── com/
│ └── muses/
│ └── taoshop/
│ └── common/
│ ├── cas/
│ │ ├── casRealm/
│ │ │ └── ShiroCasRealm.java
│ │ ├── config/
│ │ │ └── CasConfiguration.java
│ │ └── constant/
│ │ └── CasConsts.java
│ └── security/
│ └── core/
│ ├── filter/
│ │ └── SysAccessControllerFilter.java
│ ├── shiro/
│ │ └── realm/
│ │ └── CommonShiroRealm.java
│ └── utils/
│ └── AESUtil.java
├── taoshop-manager/
│ ├── ReadMe.md
│ ├── pom.xml
│ ├── taoshop-manager-api/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ └── java/
│ │ │ └── com/
│ │ │ └── muses/
│ │ │ └── taoshop/
│ │ │ └── manager/
│ │ │ ├── entity/
│ │ │ │ ├── ItemOrders.java
│ │ │ │ ├── Menu.java
│ │ │ │ ├── Operation.java
│ │ │ │ ├── Permission.java
│ │ │ │ ├── SysRole.java
│ │ │ │ └── SysUser.java
│ │ │ └── service/
│ │ │ ├── IItemOrdersService.java
│ │ │ ├── IMenuService.java
│ │ │ ├── ISysPermissionService.java
│ │ │ ├── ISysRoleService.java
│ │ │ └── ISysUserService.java
│ │ └── test/
│ │ └── java/
│ │ └── com/
│ │ └── muses/
│ │ └── taoshop/
│ │ └── AppTest.java
│ ├── taoshop-manager-service/
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ ├── java/
│ │ │ │ └── com/
│ │ │ │ └── muses/
│ │ │ │ └── taoshop/
│ │ │ │ └── manager/
│ │ │ │ ├── mapper/
│ │ │ │ │ ├── ItemOrdersMapper.java
│ │ │ │ │ ├── SysMenuMapper.java
│ │ │ │ │ ├── SysPermissionMapper.java
│ │ │ │ │ ├── SysRoleMapper.java
│ │ │ │ │ └── SysUserMapper.java
│ │ │ │ └── service/
│ │ │ │ ├── ItemOrdersServiceImpl.java
│ │ │ │ ├── MenuServiceImpl.java
│ │ │ │ ├── SysPermissionServiceImpl.java
│ │ │ │ ├── SysRoleServiceImpl.java
│ │ │ │ └── SysUserServiceImpl.java
│ │ │ └── resources/
│ │ │ └── mybatis/
│ │ │ ├── SysMenuMapper.xml
│ │ │ ├── SysPermissionMapper.xml
│ │ │ ├── SysRoleMapper.xml
│ │ │ └── SysUserMapper.xml
│ │ └── test/
│ │ └── java/
│ │ └── com/
│ │ └── muses/
│ │ └── taoshop/
│ │ └── AppTest.java
│ └── taoshop-manager-web/
│ ├── ReadMe.md
│ ├── pom.xml
│ └── src/
│ └── main/
│ ├── java/
│ │ └── com/
│ │ └── muses/
│ │ └── taoshop/
│ │ └── manager/
│ │ ├── WebApplication.java
│ │ ├── config/
│ │ │ ├── MybatisConfig.java
│ │ │ ├── ShiroConfig.java
│ │ │ ├── ThymeleafConfig.java
│ │ │ └── WebConfig.java
│ │ ├── core/
│ │ │ ├── Constants.java
│ │ │ └── shiro/
│ │ │ └── ShiroRealm.java
│ │ ├── util/
│ │ │ └── MenuTreeUtil.java
│ │ └── web/
│ │ └── controller/
│ │ ├── BaseController.java
│ │ ├── CodeController.java
│ │ ├── LoginController.java
│ │ ├── item/
│ │ │ └── OrderController.java
│ │ ├── menu/
│ │ │ └── MenuController.java
│ │ └── userCenter/
│ │ └── UserController.java
│ ├── resources/
│ │ ├── application.yml
│ │ ├── plugins/
│ │ │ ├── datepicker/
│ │ │ │ ├── css/
│ │ │ │ │ ├── bootstrap-datepicker.css
│ │ │ │ │ └── bootstrap.css
│ │ │ │ └── js/
│ │ │ │ └── bootstrap-datepicker.js
│ │ │ └── select2/
│ │ │ ├── css/
│ │ │ │ └── select2.css
│ │ │ └── js/
│ │ │ ├── i18n/
│ │ │ │ ├── ar.js
│ │ │ │ ├── az.js
│ │ │ │ ├── bg.js
│ │ │ │ ├── ca.js
│ │ │ │ ├── cs.js
│ │ │ │ ├── da.js
│ │ │ │ ├── de.js
│ │ │ │ ├── en.js
│ │ │ │ ├── es.js
│ │ │ │ ├── et.js
│ │ │ │ ├── eu.js
│ │ │ │ ├── fa.js
│ │ │ │ ├── fi.js
│ │ │ │ ├── fr.js
│ │ │ │ ├── gl.js
│ │ │ │ ├── he.js
│ │ │ │ ├── hi.js
│ │ │ │ ├── hr.js
│ │ │ │ ├── hu.js
│ │ │ │ ├── id.js
│ │ │ │ ├── is.js
│ │ │ │ ├── it.js
│ │ │ │ ├── ja.js
│ │ │ │ ├── ko.js
│ │ │ │ ├── lt.js
│ │ │ │ ├── lv.js
│ │ │ │ ├── mk.js
│ │ │ │ ├── ms.js
│ │ │ │ ├── nb.js
│ │ │ │ ├── nl.js
│ │ │ │ ├── pl.js
│ │ │ │ ├── pt-BR.js
│ │ │ │ ├── pt.js
│ │ │ │ ├── ro.js
│ │ │ │ ├── ru.js
│ │ │ │ ├── sk.js
│ │ │ │ ├── sr-Cyrl.js
│ │ │ │ ├── sr.js
│ │ │ │ ├── sv.js
│ │ │ │ ├── th.js
│ │ │ │ ├── tr.js
│ │ │ │ ├── uk.js
│ │ │ │ ├── vi.js
│ │ │ │ ├── zh-CN.js
│ │ │ │ └── zh-TW.js
│ │ │ ├── select2.full.js
│ │ │ └── select2.js
│ │ ├── static/
│ │ │ ├── css/
│ │ │ │ ├── backend.css
│ │ │ │ ├── page/
│ │ │ │ │ └── backend/
│ │ │ │ │ ├── account_center.css
│ │ │ │ │ ├── login.css
│ │ │ │ │ └── order_manage.css
│ │ │ │ └── style.css
│ │ │ └── js/
│ │ │ ├── common.js
│ │ │ ├── jquery.cookie.js
│ │ │ ├── jquery.js
│ │ │ ├── jquery.pagination.js
│ │ │ └── jquery.tips.js
│ │ └── templates/
│ │ ├── admin/
│ │ │ ├── frame/
│ │ │ │ ├── common.html
│ │ │ │ ├── index.html
│ │ │ │ ├── nav.html
│ │ │ │ └── sider_bar_bk.html
│ │ │ ├── order/
│ │ │ │ ├── order_content_wrap.html
│ │ │ │ └── order_list.html
│ │ │ └── user/
│ │ │ ├── user_center.html
│ │ │ └── user_content_wrap.html
│ │ └── login.html
│ └── webapp/
│ ├── WEB-INF/
│ │ └── web.xml
│ └── index.jsp
├── taoshop-order/
│ ├── ReadMe.md
│ ├── pom.xml
│ └── src/
│ └── main/
│ ├── java/
│ │ └── com/
│ │ └── muses/
│ │ └── taoshop/
│ │ └── order/
│ │ ├── OrderApplication.java
│ │ └── web/
│ │ └── controller/
│ │ ├── BaseController.java
│ │ └── OrderController.java
│ ├── resources/
│ │ └── application.yml
│ └── webapp/
│ ├── WEB-INF/
│ │ └── web.xml
│ └── index.jsp
├── taoshop-portal/
│ ├── ReadMe.md
│ ├── pom.xml
│ └── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── com/
│ │ │ └── muses/
│ │ │ └── taoshop/
│ │ │ ├── PortalApplication.java
│ │ │ ├── aop/
│ │ │ │ └── OperationRecordLog.java
│ │ │ ├── base/
│ │ │ │ ├── ConfigConsts.java
│ │ │ │ ├── SessionConsts.java
│ │ │ │ └── ViewNameConsts.java
│ │ │ ├── config/
│ │ │ │ └── WebConfig.java
│ │ │ ├── util/
│ │ │ │ └── CategoryTreeUtils.java
│ │ │ └── web/
│ │ │ └── controller/
│ │ │ ├── BaseController.java
│ │ │ ├── CodeController.java
│ │ │ ├── LoginController.java
│ │ │ ├── cart/
│ │ │ │ └── ShopCartController.java
│ │ │ ├── portal/
│ │ │ │ ├── IndexController.java
│ │ │ │ ├── ItemCategoryController.java
│ │ │ │ └── ItemDetailController.java
│ │ │ └── user/
│ │ │ └── UserController.java
│ │ ├── resources/
│ │ │ ├── application-dev.properties
│ │ │ ├── application-prod.properties
│ │ │ ├── application-uat.properties
│ │ │ ├── application.properties
│ │ │ ├── application.yml
│ │ │ ├── logback_spring.xml.bat
│ │ │ ├── static/
│ │ │ │ ├── css/
│ │ │ │ │ ├── cart.css
│ │ │ │ │ ├── category.css
│ │ │ │ │ ├── detail.css
│ │ │ │ │ ├── index.css
│ │ │ │ │ ├── jqzoom.css
│ │ │ │ │ ├── public.css
│ │ │ │ │ ├── reg-login.css
│ │ │ │ │ ├── user.css
│ │ │ │ │ └── you_like.css
│ │ │ │ └── js/
│ │ │ │ ├── html5.js
│ │ │ │ ├── jquery.cookie.js
│ │ │ │ ├── jquery.js
│ │ │ │ ├── jquery.tips.js
│ │ │ │ ├── jqzoom.js
│ │ │ │ └── popbox.js
│ │ │ └── templates/
│ │ │ ├── footer.html
│ │ │ ├── header_main.html
│ │ │ ├── header_nav.html
│ │ │ ├── index.html
│ │ │ ├── index_header_nav.html
│ │ │ ├── item/
│ │ │ │ ├── item_category.html
│ │ │ │ └── item_detail.html
│ │ │ ├── login.html
│ │ │ ├── shopcart/
│ │ │ │ └── add_shopcart_success.html
│ │ │ ├── test.html
│ │ │ ├── top_bar.html
│ │ │ └── user/
│ │ │ └── portal_user_center.html
│ │ └── webapp/
│ │ ├── WEB-INF/
│ │ │ └── web.xml
│ │ └── index.jsp
│ └── test/
│ └── java/
│ └── com/
│ └── muses/
│ └── taoshop/
│ ├── Attachment.java
│ ├── Client.java
│ ├── Email.java
│ ├── JDBCFacade.java
│ ├── ParseDateTest.java
│ └── ThreadLocalTest.java
├── taoshop-provider/
│ ├── ReadMe.md
│ ├── pom.xml
│ ├── taoshop-provider-item/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ ├── java/
│ │ │ └── com/
│ │ │ └── muses/
│ │ │ └── taoshop/
│ │ │ └── item/
│ │ │ ├── mapper/
│ │ │ │ ├── ItemBrandMapper.java
│ │ │ │ ├── ItemCategoryMapper.java
│ │ │ │ ├── ItemMapper.java
│ │ │ │ └── ItemSpecMapper.java
│ │ │ └── service/
│ │ │ ├── ItemBrankServiceImpl.java
│ │ │ ├── ItemCategoryServiceImpl.java
│ │ │ ├── ItemServiceImpl.java
│ │ │ └── ItemSpecServiceImpl.java
│ │ └── resources/
│ │ └── mybatis/
│ │ ├── ItemBrandMapper.xml
│ │ ├── ItemCategoryMapper.xml
│ │ ├── ItemMapper.xml
│ │ └── ItemSpecMapper.xml
│ ├── taoshop-provider-order/
│ │ └── pom.xml
│ ├── taoshop-provider-shop/
│ │ └── pom.xml
│ └── taoshop-provider-usc/
│ ├── ReadMe.md
│ ├── pom.xml
│ └── src/
│ └── main/
│ ├── java/
│ │ └── com/
│ │ └── muses/
│ │ └── taoshop/
│ │ └── user/
│ │ ├── mapper/
│ │ │ └── UserMapper.java
│ │ └── service/
│ │ └── UserServiceImpl.java
│ └── resources/
│ └── mybatis/
│ └── UserMapper.xml
├── taoshop-provider-api/
│ ├── ReadMe.md
│ ├── pom.xml
│ ├── taoshop-provider-api-item/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ └── java/
│ │ └── com/
│ │ └── muses/
│ │ └── taoshop/
│ │ └── item/
│ │ ├── entity/
│ │ │ ├── ItemBrand.java
│ │ │ ├── ItemCategory.java
│ │ │ ├── ItemDetail.java
│ │ │ ├── ItemDto.java
│ │ │ ├── ItemList.java
│ │ │ ├── ItemPortal.java
│ │ │ ├── ItemSku.java
│ │ │ ├── ItemSkuSpecValue.java
│ │ │ ├── ItemSpec.java
│ │ │ ├── ItemSpecValue.java
│ │ │ ├── ItemSpu.java
│ │ │ └── ItemSpuSpec.java
│ │ └── service/
│ │ ├── IItemBrankService.java
│ │ ├── IItemCategoryService.java
│ │ ├── IItemService.java
│ │ └── IItemSpecService.java
│ ├── taoshop-provider-api-order/
│ │ ├── ReadMe.md
│ │ ├── pom.xml
│ │ └── src/
│ │ ├── main/
│ │ │ └── java/
│ │ │ └── org/
│ │ │ └── muses/
│ │ │ └── provider/
│ │ │ └── api/
│ │ │ └── App.java
│ │ └── test/
│ │ └── java/
│ │ └── org/
│ │ └── muses/
│ │ └── provider/
│ │ └── api/
│ │ └── AppTest.java
│ ├── taoshop-provider-api-shop/
│ │ ├── pom.xml
│ │ └── src/
│ │ └── main/
│ │ └── java/
│ │ └── com/
│ │ └── muses/
│ │ └── taoshop/
│ │ └── item/
│ │ └── entity/
│ │ ├── ShopInfo.java
│ │ └── ShopInfoExample.java
│ └── taoshop-provider-api-usc/
│ ├── pom.xml
│ └── src/
│ └── main/
│ └── java/
│ └── com/
│ └── muses/
│ └── taoshop/
│ └── user/
│ ├── entity/
│ │ └── User.java
│ └── service/
│ └── IUserService.java
├── taoshop-quartz/
│ ├── ReadMe.md
│ └── pom.xml
├── taoshop-search/
│ ├── ReadMe.md
│ ├── pom.xml
│ └── src/
│ ├── main/
│ │ └── java/
│ │ └── com/
│ │ └── muses/
│ │ └── base/
│ │ └── search/
│ │ ├── LuceneConstants.java
│ │ ├── TestLucene.java
│ │ └── biz/
│ │ ├── LuceneIndexer.java
│ │ └── SearchBuilder.java
│ └── test/
│ └── java/
│ └── com/
│ └── test/
│ ├── lucene/
│ │ ├── LuceneIndexer.java
│ │ └── SearchBuilder.java
│ ├── pattern/
│ │ ├── CurrentConditionsDisplay.java
│ │ ├── DisplayElement.java
│ │ ├── ForecastDisplay.java
│ │ ├── Observer.java
│ │ ├── Singleton.java
│ │ ├── StatisticsDisplay.java
│ │ ├── Subject.java
│ │ ├── WeatherData.java
│ │ └── WeatherStation.java
│ └── thread/
│ └── ThreadTest.java
└── taoshop-sso/
├── pom.xml
└── src/
└── main/
├── java/
│ ├── ReadMe.txt
│ ├── com/
│ │ └── muses/
│ │ └── taoshop/
│ │ └── sso/
│ │ └── authentication/
│ │ └── UsernamePasswordAuthenticationHandler.java
│ └── org/
│ └── jasig/
│ └── cas/
│ ├── CentralAuthenticationServiceImpl.java
│ ├── adaptors/
│ │ └── jdbc/
│ │ ├── AbstractJdbcUsernamePasswordAuthenticationHandler.java
│ │ └── QueryDatabaseAuthenticationHandler.java
│ ├── authentication/
│ │ └── UsernamePasswordCredential.java
│ ├── support/
│ │ └── rest/
│ │ └── TicketsResource.java
│ └── web/
│ └── flow/
│ ├── AuthenticationExceptionHandler.java
│ └── AuthenticationViaFormAction.java
├── resources/
│ ├── application.properties
│ ├── application.yml
│ └── services/
│ ├── Apereo-10000002.json
│ └── HTTPSandIMAPS-10000001.json
└── webapp/
└── WEB-INF/
├── cas_dev.properties
├── index.jsp
├── spring-configuration/
│ └── propertyFileConfigurer.xml
└── view/
└── jsp/
├── authorizationFailure.jsp
├── default/
│ └── ui/
│ ├── casAcceptableUsagePolicyView.jsp
│ ├── casAccountDisabledView.jsp
│ ├── casAccountLockedView.jsp
│ ├── casBadHoursView.jsp
│ ├── casBadWorkstationView.jsp
│ ├── casConfirmView.jsp
│ ├── casExpiredPassView.jsp
│ ├── casGenericSuccessView.jsp
│ ├── casLoginMessageView.jsp
│ ├── casLoginView.jsp
│ ├── casLogoutView.jsp
│ ├── casMustChangePassView.jsp
│ ├── serviceErrorSsoView.jsp
│ └── serviceErrorView.jsp
└── errors.jsp
SYMBOL INDEX (784 symbols across 161 files)
FILE: docs/taoshop.sql
type `item_brand` (line 23) | CREATE TABLE `item_brand` (
type `item_category` (line 39) | CREATE TABLE `item_category` (
type `item_sku` (line 56) | CREATE TABLE `item_sku` (
type `item_sku_spec_value` (line 79) | CREATE TABLE `item_sku_spec_value` (
type `item_spec` (line 96) | CREATE TABLE `item_spec` (
type `item_spec_value` (line 113) | CREATE TABLE `item_spec_value` (
type `item_spu` (line 130) | CREATE TABLE `item_spu` (
type `item_spu_spec` (line 150) | CREATE TABLE `item_spu_spec` (
type `shop_info` (line 167) | CREATE TABLE `shop_info` (
type `sys_menu` (line 183) | CREATE TABLE `sys_menu` (
type `sys_operation` (line 203) | CREATE TABLE `sys_operation` (
type `sys_permission` (line 220) | CREATE TABLE `sys_permission` (
type `sys_permission_operation` (line 238) | CREATE TABLE `sys_permission_operation` (
type `sys_role` (line 255) | CREATE TABLE `sys_role` (
type `sys_role_permission` (line 271) | CREATE TABLE `sys_role_permission` (
type `sys_user` (line 290) | CREATE TABLE `sys_user` (
type `sys_user_role` (line 317) | CREATE TABLE `sys_user_role` (
type `tb_user` (line 334) | CREATE TABLE `tb_user` (
FILE: src/taoshop-common/taoshop-common-core/src/main/java/com/muses/taoshop/common/core/base/Constants.java
class Constants (line 10) | public class Constants {
FILE: src/taoshop-common/taoshop-common-core/src/main/java/com/muses/taoshop/common/core/base/ResultStatus.java
type ResultStatus (line 15) | public enum ResultStatus {
method ResultStatus (line 28) | private ResultStatus(String statusCode, String resonPhrase, String mes...
FILE: src/taoshop-common/taoshop-common-core/src/main/java/com/muses/taoshop/common/core/database/annotation/AnnotationConstants.java
class AnnotationConstants (line 20) | public class AnnotationConstants {
FILE: src/taoshop-common/taoshop-common-core/src/main/java/com/muses/taoshop/common/core/database/annotation/TypeAliasesPackageScanner.java
class TypeAliasesPackageScanner (line 34) | @Component
method getTypeAliasesPackages (line 45) | public static String getTypeAliasesPackages() {
FILE: src/taoshop-common/taoshop-common-core/src/main/java/com/muses/taoshop/common/core/database/config/BaseConfig.java
class BaseConfig (line 15) | public class BaseConfig {
FILE: src/taoshop-common/taoshop-common-core/src/main/java/com/muses/taoshop/common/core/database/config/DataSourceConfig.java
class DataSourceConfig (line 26) | @Configuration
method dataSource (line 29) | @Bean(name = DATA_SOURCE_NAME)
FILE: src/taoshop-common/taoshop-common-core/src/main/java/com/muses/taoshop/common/core/database/config/MybatisConfig.java
class MybatisConfig (line 37) | @MapperScan(
method dataSource (line 53) | @Bean(name = DATA_SOURCE_NAME)
method sqlSessionFactory (line 60) | @Primary
method transactionManager (line 82) | @Bean(name = MYBATIS_TRANSACTION_MANAGER)
FILE: src/taoshop-common/taoshop-common-core/src/main/java/com/muses/taoshop/common/core/database/config/MybatisSqlInterceptor.java
class MybatisSqlInterceptor (line 29) | @Component
method intercept (line 35) | @Override
method plugin (line 51) | @Override
method setProperties (line 56) | @Override
FILE: src/taoshop-common/taoshop-common-core/src/main/java/com/muses/taoshop/common/core/database/typehandlers/Spring2BooleanTypeHandler.java
class Spring2BooleanTypeHandler (line 23) | public class Spring2BooleanTypeHandler implements TypeHandler<Object>{
method setParameter (line 31) | @Override
method getResult (line 40) | @Override
method getResult (line 56) | @Override
method getResult (line 71) | @Override
FILE: src/taoshop-common/taoshop-common-core/src/main/java/com/muses/taoshop/common/core/database/typehandlers/UnixLong2DateTypeHandler.java
class UnixLong2DateTypeHandler (line 28) | public class UnixLong2DateTypeHandler implements TypeHandler<Date> {
method setParameter (line 31) | @Override
method getResult (line 35) | @Override
method getResult (line 42) | @Override
method getResult (line 49) | @Override
FILE: src/taoshop-common/taoshop-common-core/src/main/java/com/muses/taoshop/common/core/exception/CommonException.java
class CommonException (line 15) | public class CommonException {
FILE: src/taoshop-common/taoshop-common-core/src/main/java/com/muses/taoshop/common/core/util/DateUtils.java
class DateUtils (line 20) | public class DateUtils {
method doParse (line 23) | public static Date doParse(String date){
FILE: src/taoshop-common/taoshop-common-core/src/main/java/com/muses/taoshop/common/core/util/JsonDateSerializer.java
class JsonDateSerializer (line 12) | public class JsonDateSerializer extends JsonSerializer<Date> {
method serialize (line 14) | @Override
FILE: src/taoshop-common/taoshop-common-core/src/main/java/com/muses/taoshop/common/core/util/SerializeUtils.java
class SerializeUtils (line 17) | public class SerializeUtils {
method doSerialize (line 26) | public static byte[] doSerialize(Object obj){
method unSerialize (line 51) | public static Object unSerialize(byte[] byteArray){
FILE: src/taoshop-common/taoshop-common-core/src/main/java/com/muses/taoshop/common/core/util/UUIDGenerator.java
class UUIDGenerator (line 15) | public class UUIDGenerator {
FILE: src/taoshop-common/taoshop-common-core/src/test/java/org/muses/commo/AppTest.java
class AppTest (line 10) | public class AppTest
method shouldAnswerWithTrue (line 15) | @Test
FILE: src/taoshop-common/taoshop-common-core/src/test/java/org/muses/commo/MybatisSqlInterceptor.java
class MybatisSqlInterceptor (line 22) | @Component
method intercept (line 28) | @Override
method plugin (line 46) | @Override
method setProperties (line 51) | @Override
method getSqlByInvocation (line 61) | private String getSqlByInvocation(Invocation invocation) {
method resetSql2Invocation (line 75) | private void resetSql2Invocation(Invocation invocation, String sql) th...
method newMappedStatement (line 86) | private MappedStatement newMappedStatement(MappedStatement ms, SqlSour...
method getOperateType (line 112) | private String getOperateType(Invocation invocation) {
class BoundSqlSqlSource (line 131) | class BoundSqlSqlSource implements SqlSource {
method BoundSqlSqlSource (line 133) | public BoundSqlSqlSource(BoundSql boundSql) {
method getBoundSql (line 136) | @Override
FILE: src/taoshop-common/taoshop-common-core/src/test/java/org/muses/commo/RedisWithReentrantLock.java
class RedisWithReentrantLock (line 8) | public class RedisWithReentrantLock {
method RedisWithReentrantLock (line 14) | public RedisWithReentrantLock(Jedis jedis) {
method _lock (line 18) | private boolean _lock(String key) {
method _unlock (line 22) | private void _unlock(String key) {
method currentLockers (line 26) | private Map<String, Integer> currentLockers() {
method lock (line 35) | public boolean lock(String key) {
method unlock (line 50) | public boolean unlock(String key) {
method main (line 66) | public static void main(String[] args) {
FILE: src/taoshop-common/taoshop-common-rpc/src/main/java/org/muses/common/App.java
class App (line 8) | public class App
method main (line 11) | public static void main( String[] args )
FILE: src/taoshop-common/taoshop-common-rpc/src/test/java/org/muses/common/AppTest.java
class AppTest (line 10) | public class AppTest
method shouldAnswerWithTrue (line 15) | @Test
FILE: src/taoshop-common/taoshop-security-core/src/main/java/com/muses/taoshop/common/cas/casRealm/ShiroCasRealm.java
class ShiroCasRealm (line 21) | public class ShiroCasRealm extends CasRealm{
method initProperty (line 25) | @PostConstruct
FILE: src/taoshop-common/taoshop-security-core/src/main/java/com/muses/taoshop/common/cas/config/CasConfiguration.java
class CasConfiguration (line 24) | @Configuration
method getShiroRealm (line 29) | @Bean
method servletListenerRegistrationBean (line 39) | @Bean
FILE: src/taoshop-common/taoshop-security-core/src/main/java/com/muses/taoshop/common/cas/constant/CasConsts.java
class CasConsts (line 15) | public class CasConsts {
FILE: src/taoshop-common/taoshop-security-core/src/main/java/com/muses/taoshop/common/security/core/filter/SysAccessControllerFilter.java
class SysAccessControllerFilter (line 26) | public class SysAccessControllerFilter extends AccessControlFilter{
method setUrl (line 35) | public void setUrl(String url){
method setKickoutAfter (line 39) | public void setKickoutAfter(boolean isKickoutAfter){
method setMaxSession (line 43) | public void setMaxSession(int maxSession){
method setSessionManager (line 47) | public void setSessionManager(SessionManager sessionManager){
method setCacheManager (line 51) | public void setCacheManager(CacheManager cacheManager){
method isAccessAllowed (line 55) | @Override
method onAccessDenied (line 60) | @Override
method out (line 140) | private void out(ServletResponse hresponse, Map<String, String> result...
FILE: src/taoshop-common/taoshop-security-core/src/main/java/com/muses/taoshop/common/security/core/shiro/realm/CommonShiroRealm.java
class CommonShiroRealm (line 22) | public class CommonShiroRealm extends AuthorizingRealm {
method doGetAuthenticationInfo (line 32) | @Override
method doGetAuthorizationInfo (line 61) | @Override
method clearCachedAuthorizationInfo (line 71) | @Override
method clearCachedAuthenticationInfo (line 76) | @Override
method clearCache (line 81) | @Override
FILE: src/taoshop-common/taoshop-security-core/src/main/java/com/muses/taoshop/common/security/core/utils/AESUtil.java
class AESUtil (line 24) | public class AESUtil {
method aesEncryptToBytes (line 33) | public static byte[] aesEncryptToBytes(String content, String encryptK...
method aesEncrypt (line 48) | public static String aesEncrypt(String content, String encryptKey) thr...
method aesDecryptByBytes (line 59) | public static String aesDecryptByBytes(byte[] encryptBytes, String dec...
method base64Encode (line 76) | public static String base64Encode(byte[] bytes) {
FILE: src/taoshop-manager/taoshop-manager-api/src/main/java/com/muses/taoshop/manager/entity/ItemOrders.java
class ItemOrders (line 17) | @Data
FILE: src/taoshop-manager/taoshop-manager-api/src/main/java/com/muses/taoshop/manager/entity/Menu.java
class Menu (line 19) | @Data
FILE: src/taoshop-manager/taoshop-manager-api/src/main/java/com/muses/taoshop/manager/entity/Operation.java
class Operation (line 17) | @Data
FILE: src/taoshop-manager/taoshop-manager-api/src/main/java/com/muses/taoshop/manager/entity/Permission.java
class Permission (line 20) | @Data
FILE: src/taoshop-manager/taoshop-manager-api/src/main/java/com/muses/taoshop/manager/entity/SysRole.java
class SysRole (line 20) | @Data
FILE: src/taoshop-manager/taoshop-manager-api/src/main/java/com/muses/taoshop/manager/entity/SysUser.java
class SysUser (line 20) | @Data
FILE: src/taoshop-manager/taoshop-manager-api/src/main/java/com/muses/taoshop/manager/service/IItemOrdersService.java
type IItemOrdersService (line 15) | public interface IItemOrdersService {
FILE: src/taoshop-manager/taoshop-manager-api/src/main/java/com/muses/taoshop/manager/service/IMenuService.java
type IMenuService (line 8) | public interface IMenuService {
method listMenu (line 14) | Menu listMenu(int permissionId);
method listPermissionMenu (line 20) | List<Menu> listPermissionMenu(int userId);
FILE: src/taoshop-manager/taoshop-manager-api/src/main/java/com/muses/taoshop/manager/service/ISysPermissionService.java
type ISysPermissionService (line 9) | public interface ISysPermissionService {
method getRolePermissions (line 14) | Set<Permission> getRolePermissions(int roleId);
FILE: src/taoshop-manager/taoshop-manager-api/src/main/java/com/muses/taoshop/manager/service/ISysRoleService.java
type ISysRoleService (line 20) | public interface ISysRoleService {
method getUserRoles (line 25) | Set<SysRole> getUserRoles(int userId);
FILE: src/taoshop-manager/taoshop-manager-api/src/main/java/com/muses/taoshop/manager/service/ISysUserService.java
type ISysUserService (line 20) | public interface ISysUserService {
method getSysUser (line 27) | SysUser getSysUser(String username , String password);
method getRoles (line 34) | Set<String> getRoles(String username) ;
method getPermissions (line 41) | Set<String> getPermissions(String username);
method getUserInfoByUsername (line 48) | SysUser getUserInfoByUsername(String username);
method getUserRoles (line 55) | @Deprecated
FILE: src/taoshop-manager/taoshop-manager-api/src/test/java/com/muses/taoshop/AppTest.java
class AppTest (line 10) | public class AppTest
method shouldAnswerWithTrue (line 15) | @Test
FILE: src/taoshop-manager/taoshop-manager-service/src/main/java/com/muses/taoshop/manager/mapper/ItemOrdersMapper.java
type ItemOrdersMapper (line 15) | public interface ItemOrdersMapper {
FILE: src/taoshop-manager/taoshop-manager-service/src/main/java/com/muses/taoshop/manager/mapper/SysMenuMapper.java
type SysMenuMapper (line 21) | @MybatisRepository
method listMenu (line 24) | Menu listMenu(@Param("permissionId") int permissionId);
method listPermissionMenu (line 26) | List<Menu> listPermissionMenu(@Param("userId")int userId);
FILE: src/taoshop-manager/taoshop-manager-service/src/main/java/com/muses/taoshop/manager/mapper/SysPermissionMapper.java
type SysPermissionMapper (line 8) | @MybatisRepository
method listRolePermission (line 10) | List<Permission> listRolePermission(int roleId);
FILE: src/taoshop-manager/taoshop-manager-service/src/main/java/com/muses/taoshop/manager/mapper/SysRoleMapper.java
type SysRoleMapper (line 21) | @MybatisRepository
method listUserRole (line 24) | List<SysRole> listUserRole(@Param("userId")int userId);
FILE: src/taoshop-manager/taoshop-manager-service/src/main/java/com/muses/taoshop/manager/mapper/SysUserMapper.java
type SysUserMapper (line 15) | @MybatisRepository
method getSysUserInfo (line 18) | SysUser getSysUserInfo(@Param("username")String username, @Param("pass...
method getUserInfoByUsername (line 20) | SysUser getUserInfoByUsername(@Param("username") String username);
FILE: src/taoshop-manager/taoshop-manager-service/src/main/java/com/muses/taoshop/manager/service/ItemOrdersServiceImpl.java
class ItemOrdersServiceImpl (line 17) | @Service
FILE: src/taoshop-manager/taoshop-manager-service/src/main/java/com/muses/taoshop/manager/service/MenuServiceImpl.java
class MenuServiceImpl (line 22) | @Service
method listMenu (line 32) | @Override
method listPermissionMenu (line 42) | @Override
FILE: src/taoshop-manager/taoshop-manager-service/src/main/java/com/muses/taoshop/manager/service/SysPermissionServiceImpl.java
class SysPermissionServiceImpl (line 24) | @Service
method getRolePermissions (line 30) | @Override
FILE: src/taoshop-manager/taoshop-manager-service/src/main/java/com/muses/taoshop/manager/service/SysRoleServiceImpl.java
class SysRoleServiceImpl (line 24) | @Service
method getUserRoles (line 36) | @Override
FILE: src/taoshop-manager/taoshop-manager-service/src/main/java/com/muses/taoshop/manager/service/SysUserServiceImpl.java
class SysUserServiceImpl (line 31) | @Service
method getSysUser (line 39) | @Override
method getRoles (line 49) | @Override
method getUserRoles (line 65) | @Override
method getPermissions (line 77) | public Set<String> getPermissions(String username) {
method getUserInfoByUsername (line 98) | @Override
FILE: src/taoshop-manager/taoshop-manager-service/src/test/java/com/muses/taoshop/AppTest.java
class AppTest (line 10) | public class AppTest
method shouldAnswerWithTrue (line 15) | @Test
FILE: src/taoshop-manager/taoshop-manager-web/src/main/java/com/muses/taoshop/manager/WebApplication.java
class WebApplication (line 31) | @Controller
method doTest (line 42) | @RequestMapping("/doTest1")
method main (line 50) | public static void main(String[] args) throws Exception {
FILE: src/taoshop-manager/taoshop-manager-web/src/main/java/com/muses/taoshop/manager/config/MybatisConfig.java
class MybatisConfig (line 45) | @MapperScan(
method dataSource (line 58) | @Bean(name = DATA_SOURCE_NAME)
method sqlSessionFactory (line 65) | @Primary
method transactionManager (line 86) | @Bean(name = MYBATIS_TRANSACTION_MANAGER)
method setTypeAliasesPackage (line 93) | public static String setTypeAliasesPackage(String typeAliasesPackage) {
FILE: src/taoshop-manager/taoshop-manager-web/src/main/java/com/muses/taoshop/manager/config/ShiroConfig.java
class ShiroConfig (line 26) | @Configuration
method shirFilter (line 28) | @Bean
method myShiroRealm (line 52) | @Bean
method securityManager (line 59) | @Bean
FILE: src/taoshop-manager/taoshop-manager-web/src/main/java/com/muses/taoshop/manager/config/ThymeleafConfig.java
class ThymeleafConfig (line 30) | @Configuration
method setApplicationContext (line 33) | @Override
method addFormatters (line 38) | @Override
method dateFormatter (line 44) | @Bean
class MyDateFormatter (line 49) | class MyDateFormatter extends DateFormatter {
method print (line 50) | @Override
FILE: src/taoshop-manager/taoshop-manager-web/src/main/java/com/muses/taoshop/manager/config/WebConfig.java
class WebConfig (line 9) | @EnableWebMvc
method addResourceHandlers (line 13) | @Override
FILE: src/taoshop-manager/taoshop-manager-web/src/main/java/com/muses/taoshop/manager/core/Constants.java
class Constants (line 17) | public class Constants {
FILE: src/taoshop-manager/taoshop-manager-web/src/main/java/com/muses/taoshop/manager/core/shiro/ShiroRealm.java
class ShiroRealm (line 26) | public class ShiroRealm extends AuthorizingRealm {
method doGetAuthenticationInfo (line 36) | @Override
method doGetAuthorizationInfo (line 65) | @Override
method clearCachedAuthorizationInfo (line 74) | @Override
method clearCachedAuthenticationInfo (line 79) | @Override
method clearCache (line 84) | @Override
FILE: src/taoshop-manager/taoshop-manager-web/src/main/java/com/muses/taoshop/manager/util/MenuTreeUtil.java
class MenuTreeUtil (line 11) | public class MenuTreeUtil {
method menuList (line 16) | public List<Menu> menuList(List<Menu> menus){
method menuChild (line 33) | public List<Menu> menuChild(int id){
FILE: src/taoshop-manager/taoshop-manager-web/src/main/java/com/muses/taoshop/manager/web/controller/BaseController.java
class BaseController (line 24) | public class BaseController {
method debug (line 27) | public void debug(String message , Exception e){
method info (line 31) | public void info(String message,Exception e){
method error (line 35) | public void error(String message,Exception e){
method getRequest (line 43) | public HttpServletRequest getRequest() {
method getModelAndView (line 50) | public ModelAndView getModelAndView(){
FILE: src/taoshop-manager/taoshop-manager-web/src/main/java/com/muses/taoshop/manager/web/controller/CodeController.java
class CodeController (line 22) | @Controller
method generate (line 26) | @RequestMapping("/generate")
method drawImg (line 48) | private String drawImg(ByteArrayOutputStream output){
method randomChar (line 85) | private char randomChar(){
method getRandColor (line 97) | Color getRandColor(int fc,int bc){
FILE: src/taoshop-manager/taoshop-manager-web/src/main/java/com/muses/taoshop/manager/web/controller/LoginController.java
class LoginController (line 56) | @Controller
method toLogin (line 69) | @RequestMapping(value = "/toLogin")
method loginCheck (line 84) | @RequestMapping(value="/loginCheck", produces="application/json;charse...
method toMain (line 147) | @RequestMapping(value="/toIndex")
method logout (line 193) | @RequestMapping(value="/logout")
FILE: src/taoshop-manager/taoshop-manager-web/src/main/java/com/muses/taoshop/manager/web/controller/item/OrderController.java
class OrderController (line 21) | @Controller
method toOrder (line 30) | @GetMapping(value = "/toOrder")
FILE: src/taoshop-manager/taoshop-manager-web/src/main/java/com/muses/taoshop/manager/web/controller/menu/MenuController.java
class MenuController (line 17) | @Controller
FILE: src/taoshop-manager/taoshop-manager-web/src/main/java/com/muses/taoshop/manager/web/controller/userCenter/UserController.java
class UserController (line 21) | @Controller
method toUserCenter (line 29) | @GetMapping(value = "/toUserCenter")
FILE: src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/datepicker/js/bootstrap-datepicker.js
function UTCDate (line 17) | function UTCDate(){
function UTCToday (line 20) | function UTCToday(){
function isUTCEquals (line 24) | function isUTCEquals(date1, date2) {
function alias (line 31) | function alias(method){
function isValidDate (line 36) | function isValidDate(d) {
function opts_from_el (line 1537) | function opts_from_el(el, prefix){
function opts_from_locale (line 1554) | function opts_from_locale(lang){
function match_part (line 1775) | function match_part(){
FILE: src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/i18n/cs.js
function e (line 3) | function e(e,t){switch(e){case 2:return t?"dva":"dvě";case 3:return"tři"...
FILE: src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/i18n/hr.js
function e (line 3) | function e(e){var t=" "+e+" znak";return e%10<5&&e%10>0&&(e%100<5||e%100...
FILE: src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/i18n/lt.js
function e (line 3) | function e(e,t,n,r){return e%100>9&&e%100<21||e%10===0?e%10>1?n:r:t}
FILE: src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/i18n/lv.js
function e (line 3) | function e(e,t,n,r){return e===11?t:e%10===1?n:r}
FILE: src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/i18n/ru.js
function e (line 3) | function e(e,t,n,r){return e%10<5&&e%10>0&&e%100<5||e%100>20?e%10>1?n:t:r}
FILE: src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/i18n/sr-Cyrl.js
function e (line 3) | function e(e,t,n,r){return e%10==1&&e%100!=11?t:e%10>=2&&e%10<=4&&(e%100...
FILE: src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/i18n/sr.js
function e (line 3) | function e(e,t,n,r){return e%10==1&&e%100!=11?t:e%10>=2&&e%10<=4&&(e%100...
FILE: src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/i18n/uk.js
function e (line 3) | function e(e,t,n,r){return e%100>10&&e%100<15?r:e%10===1?t:e%10>1&&e%10<...
FILE: src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/select2.full.js
function hasProp (line 53) | function hasProp(obj, prop) {
function normalize (line 65) | function normalize(name, baseName) {
function makeRequire (line 177) | function makeRequire(relName, forceSync) {
function makeNormalize (line 194) | function makeNormalize(relName) {
function makeLoad (line 200) | function makeLoad(depName) {
function callDep (line 206) | function callDep(name) {
function splitPrefix (line 223) | function splitPrefix(name) {
function makeConfig (line 276) | function makeConfig(name) {
function BaseConstructor (line 491) | function BaseConstructor () {
function getMethods (line 508) | function getMethods (theClass) {
function DecoratedClass (line 534) | function DecoratedClass () {
function ctr (line 552) | function ctr () {
function Results (line 750) | function Results ($element, options, dataAdapter) {
function BaseSelection (line 1290) | function BaseSelection ($element, options) {
function SingleSelection (line 1450) | function SingleSelection () {
function MultipleSelection (line 1543) | function MultipleSelection ($element, options) {
function Placeholder (line 1651) | function Placeholder (decorated, $element, options) {
function AllowClear (line 1702) | function AllowClear () { }
function Search (line 1801) | function Search (decorated, $element, options) {
function EventRelay (line 2022) | function EventRelay () { }
function Translation (line 2069) | function Translation (dict) {
function BaseAdapter (line 2953) | function BaseAdapter ($element, options) {
function SelectAdapter (line 2996) | function SelectAdapter ($element, options) {
function ArrayAdapter (line 3282) | function ArrayAdapter ($element, options) {
function onlyItem (line 3317) | function onlyItem (item) {
function AjaxAdapter (line 3362) | function AjaxAdapter ($element, options) {
function request (line 3423) | function request () {
function Tags (line 3464) | function Tags (decorated, $element, options) {
function wrapper (line 3503) | function wrapper (obj, child) {
function Tokenizer (line 3590) | function Tokenizer (decorated, $element, options) {
function select (line 3610) | function select (data) {
function MinimumInputLength (line 3684) | function MinimumInputLength (decorated, $e, options) {
function MaximumInputLength (line 3715) | function MaximumInputLength (decorated, $e, options) {
function MaximumSelectionLength (line 3747) | function MaximumSelectionLength (decorated, $e, options) {
function Dropdown (line 3780) | function Dropdown ($element, options) {
function Search (line 3823) | function Search () { }
function HidePlaceholder (line 3918) | function HidePlaceholder (decorated, $element, options, dataAdapter) {
function InfiniteScroll (line 3961) | function InfiniteScroll (decorated, $element, options, dataAdapter) {
function AttachBody (line 4052) | function AttachBody (decorated, $element, options) {
function countResults (line 4273) | function countResults (data) {
function MinimumResultsForSearch (line 4289) | function MinimumResultsForSearch (decorated, $element, options, dataAdap...
function SelectOnClose (line 4313) | function SelectOnClose () { }
function CloseOnSelect (line 4354) | function CloseOnSelect () { }
function Defaults (line 4481) | function Defaults () {
function stripDiacritics (line 4728) | function stripDiacritics (text) {
function matcher (line 4737) | function matcher (params, data) {
function Options (line 4832) | function Options (options, $element) {
function syncCssClasses (line 5499) | function syncCssClasses ($dest, $src, adapter) {
function _containerAdapter (line 5545) | function _containerAdapter (clazz) {
function ContainerCSS (line 5549) | function ContainerCSS () { }
function _dropdownAdapter (line 5602) | function _dropdownAdapter (clazz) {
function DropdownCSS (line 5606) | function DropdownCSS () { }
function InitSelection (line 5657) | function InitSelection (decorated, $element, options) {
function InputData (line 5700) | function InputData (decorated, $element, options) {
function getSelected (line 5718) | function getSelected (data, selectedIds) {
function oldMatcher (line 5828) | function oldMatcher (matcher) {
function Query (line 5871) | function Query (decorated, $element, options) {
function AttachContainer (line 5898) | function AttachContainer (decorated, $element, options) {
function StopPropagation (line 5917) | function StopPropagation () { }
function StopPropagation (line 5956) | function StopPropagation () { }
function handler (line 6084) | function handler(event) {
function nullLowestDelta (line 6197) | function nullLowestDelta() {
function shouldAdjustOldDeltas (line 6201) | function shouldAdjustOldDeltas(orgEvent, absDelta) {
FILE: src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/select2.js
function hasProp (line 53) | function hasProp(obj, prop) {
function normalize (line 65) | function normalize(name, baseName) {
function makeRequire (line 177) | function makeRequire(relName, forceSync) {
function makeNormalize (line 194) | function makeNormalize(relName) {
function makeLoad (line 200) | function makeLoad(depName) {
function callDep (line 206) | function callDep(name) {
function splitPrefix (line 223) | function splitPrefix(name) {
function makeConfig (line 276) | function makeConfig(name) {
function BaseConstructor (line 491) | function BaseConstructor () {
function getMethods (line 508) | function getMethods (theClass) {
function DecoratedClass (line 534) | function DecoratedClass () {
function ctr (line 552) | function ctr () {
function Results (line 750) | function Results ($element, options, dataAdapter) {
function BaseSelection (line 1290) | function BaseSelection ($element, options) {
function SingleSelection (line 1450) | function SingleSelection () {
function MultipleSelection (line 1543) | function MultipleSelection ($element, options) {
function Placeholder (line 1651) | function Placeholder (decorated, $element, options) {
function AllowClear (line 1702) | function AllowClear () { }
function Search (line 1801) | function Search (decorated, $element, options) {
function EventRelay (line 2022) | function EventRelay () { }
function Translation (line 2069) | function Translation (dict) {
function BaseAdapter (line 2953) | function BaseAdapter ($element, options) {
function SelectAdapter (line 2996) | function SelectAdapter ($element, options) {
function ArrayAdapter (line 3282) | function ArrayAdapter ($element, options) {
function onlyItem (line 3317) | function onlyItem (item) {
function AjaxAdapter (line 3362) | function AjaxAdapter ($element, options) {
function request (line 3423) | function request () {
function Tags (line 3464) | function Tags (decorated, $element, options) {
function wrapper (line 3503) | function wrapper (obj, child) {
function Tokenizer (line 3590) | function Tokenizer (decorated, $element, options) {
function select (line 3610) | function select (data) {
function MinimumInputLength (line 3684) | function MinimumInputLength (decorated, $e, options) {
function MaximumInputLength (line 3715) | function MaximumInputLength (decorated, $e, options) {
function MaximumSelectionLength (line 3747) | function MaximumSelectionLength (decorated, $e, options) {
function Dropdown (line 3780) | function Dropdown ($element, options) {
function Search (line 3823) | function Search () { }
function HidePlaceholder (line 3918) | function HidePlaceholder (decorated, $element, options, dataAdapter) {
function InfiniteScroll (line 3961) | function InfiniteScroll (decorated, $element, options, dataAdapter) {
function AttachBody (line 4052) | function AttachBody (decorated, $element, options) {
function countResults (line 4273) | function countResults (data) {
function MinimumResultsForSearch (line 4289) | function MinimumResultsForSearch (decorated, $element, options, dataAdap...
function SelectOnClose (line 4313) | function SelectOnClose () { }
function CloseOnSelect (line 4354) | function CloseOnSelect () { }
function Defaults (line 4481) | function Defaults () {
function stripDiacritics (line 4728) | function stripDiacritics (text) {
function matcher (line 4737) | function matcher (params, data) {
function Options (line 4832) | function Options (options, $element) {
FILE: src/taoshop-manager/taoshop-manager-web/src/main/resources/static/js/jquery.cookie.js
function encode (line 23) | function encode(s) {
function decode (line 27) | function decode(s) {
function stringifyCookieValue (line 31) | function stringifyCookieValue(value) {
function parseCookieValue (line 35) | function parseCookieValue(s) {
function read (line 50) | function read(s, converter) {
FILE: src/taoshop-manager/taoshop-manager-web/src/main/resources/static/js/jquery.js
function jQuerySub (line 897) | function jQuerySub( selector, context ) {
function doScrollCheck (line 963) | function doScrollCheck() {
function createFlags (line 990) | function createFlags( flags ) {
function resolveFunc (line 1325) | function resolveFunc( i ) {
function progressFunc (line 1333) | function progressFunc( i ) {
function dataAttr (line 1986) | function dataAttr( elem, key, data ) {
function isEmptyDataObject (line 2017) | function isEmptyDataObject( obj ) {
function handleQueueMarkDefer (line 2035) | function handleQueueMarkDefer( elem, type, src ) {
function resolve (line 2194) | function resolve() {
function returnFalse (line 3547) | function returnFalse() {
function returnTrue (line 3550) | function returnTrue() {
function dirNodeCheck (line 5261) | function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
function dirCheck (line 5294) | function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
function isDisconnected (line 5567) | function isDisconnected( node ) {
function winnow (line 5684) | function winnow( elements, qualifier, keep ) {
function createSafeFragment (line 5721) | function createSafeFragment( document ) {
function root (line 6093) | function root( elem, cur ) {
function cloneCopyEvent (line 6100) | function cloneCopyEvent( src, dest ) {
function cloneFixAttributes (line 6128) | function cloneFixAttributes( src, dest ) {
function getAll (line 6273) | function getAll( elem ) {
function fixDefaultChecked (line 6286) | function fixDefaultChecked( elem ) {
function findInputs (line 6292) | function findInputs( elem ) {
function shimCloneNode (line 6303) | function shimCloneNode( elem ) {
function getWidthOrHeight (line 6794) | function getWidthOrHeight( elem, name, extra ) {
function addToPrefiltersOrTransports (line 7035) | function addToPrefiltersOrTransports( structure ) {
function inspectPrefiltersOrTransports (line 7071) | function inspectPrefiltersOrTransports( structure, options, originalOpti...
function ajaxExtend (line 7113) | function ajaxExtend( target, src ) {
function done (line 7455) | function done( status, nativeStatusText, responses, headers ) {
function buildParams (line 7770) | function buildParams( prefix, obj, traditional, add ) {
function ajaxHandleResponses (line 7820) | function ajaxHandleResponses( s, jqXHR, responses ) {
function ajaxConvert (line 7885) | function ajaxConvert( s, response ) {
function createStandardXHR (line 8150) | function createStandardXHR() {
function createActiveXHR (line 8156) | function createActiveXHR() {
function doAnimation (line 8495) | function doAnimation() {
function stopQueue (line 8651) | function stopQueue( elem, data, index ) {
function createFxNow (line 8693) | function createFxNow() {
function clearFxNow (line 8698) | function clearFxNow() {
function genFx (line 8703) | function genFx( type, num ) {
function t (line 8818) | function t( gotoEnd ) {
function defaultDisplay (line 9016) | function defaultDisplay( nodeName ) {
function getWindow (line 9300) | function getWindow( elem ) {
FILE: src/taoshop-manager/taoshop-manager-web/src/main/resources/static/js/jquery.pagination.js
function numPages (line 23) | function numPages() {
function getInterval (line 29) | function getInterval() {
function pageSelected (line 43) | function pageSelected(page_id, evt) {
function drawLinks (line 61) | function drawLinks() {
FILE: src/taoshop-order/src/main/java/com/muses/taoshop/order/OrderApplication.java
class OrderApplication (line 27) | @Controller
method main (line 38) | public static void main(String[] args) throws Exception{
FILE: src/taoshop-order/src/main/java/com/muses/taoshop/order/web/controller/BaseController.java
class BaseController (line 25) | public class BaseController {
method debug (line 28) | public void debug(String message , Exception e){
method info (line 32) | public void info(String message,Exception e){
method error (line 36) | public void error(String message,Exception e){
method getRequest (line 44) | public HttpServletRequest getRequest() {
method getModelAndView (line 51) | public ModelAndView getModelAndView(){
FILE: src/taoshop-order/src/main/java/com/muses/taoshop/order/web/controller/OrderController.java
class OrderController (line 17) | @Controller
FILE: src/taoshop-portal/src/main/java/com/muses/taoshop/PortalApplication.java
class PortalApplication (line 30) | @Controller
method home (line 42) | @RequestMapping("/")
method doTest (line 48) | @RequestMapping("/doTest")
method main (line 57) | public static void main(String[] args) throws Exception {
FILE: src/taoshop-portal/src/main/java/com/muses/taoshop/base/ConfigConsts.java
class ConfigConsts (line 15) | public class ConfigConsts {
FILE: src/taoshop-portal/src/main/java/com/muses/taoshop/base/SessionConsts.java
class SessionConsts (line 15) | public class SessionConsts {
FILE: src/taoshop-portal/src/main/java/com/muses/taoshop/base/ViewNameConsts.java
class ViewNameConsts (line 15) | public class ViewNameConsts {
FILE: src/taoshop-portal/src/main/java/com/muses/taoshop/config/WebConfig.java
class WebConfig (line 11) | @EnableWebMvc
method addResourceHandlers (line 16) | @Override
FILE: src/taoshop-portal/src/main/java/com/muses/taoshop/util/CategoryTreeUtils.java
class CategoryTreeUtils (line 21) | public class CategoryTreeUtils {
method buildCategoryTree (line 28) | public List<ItemCategory> buildCategoryTree(List<ItemCategory> categor...
method treeChild (line 43) | public List<ItemCategory> treeChild(long id){
FILE: src/taoshop-portal/src/main/java/com/muses/taoshop/web/controller/BaseController.java
class BaseController (line 24) | public class BaseController {
method debug (line 27) | public void debug(String message){
method debug (line 31) | public void debug(String message , Exception e){
method info (line 35) | public void info(String message) {
method info (line 39) | public void info(String message,Exception e){
method error (line 43) | public void error(String message) {
method error (line 47) | public void error(String message,Exception e){
method getRequest (line 55) | public HttpServletRequest getRequest() {
method getModelAndView (line 62) | public ModelAndView getModelAndView(){
FILE: src/taoshop-portal/src/main/java/com/muses/taoshop/web/controller/CodeController.java
class CodeController (line 23) | @Controller
method generate (line 27) | @RequestMapping("/generate")
method drawImg (line 50) | private String drawImg(ByteArrayOutputStream output){
method randomChar (line 87) | private char randomChar(){
method getRandColor (line 99) | Color getRandColor(int fc,int bc){
FILE: src/taoshop-portal/src/main/java/com/muses/taoshop/web/controller/LoginController.java
class LoginController (line 30) | @Controller
method toLogin (line 41) | @GetMapping(value = "/toLogin")
method loginCheck (line 52) | @RequestMapping(value = "/loginCheck")
FILE: src/taoshop-portal/src/main/java/com/muses/taoshop/web/controller/cart/ShopCartController.java
class ShopCartController (line 21) | @Controller
method toAddSuccess (line 29) | @GetMapping(value = "/toAddSuccess")
FILE: src/taoshop-portal/src/main/java/com/muses/taoshop/web/controller/portal/IndexController.java
class IndexController (line 34) | @Controller
method toIndex (line 49) | @GetMapping(value = "/toIndex.do")
method doTest (line 63) | @GetMapping(value = "/doTest")
method listCategory (line 75) | @GetMapping(value = "/listCategory" , produces = "application/json;cha...
FILE: src/taoshop-portal/src/main/java/com/muses/taoshop/web/controller/portal/ItemCategoryController.java
class ItemCategoryController (line 27) | @Controller
method toCategoryList (line 39) | @GetMapping(value = "/toCategoryList/{categoryId}")
FILE: src/taoshop-portal/src/main/java/com/muses/taoshop/web/controller/portal/ItemDetailController.java
class ItemDetailController (line 31) | @Controller
method toDetail (line 40) | @GetMapping("/toDetail/{spuId}/{skuId}")
FILE: src/taoshop-portal/src/main/java/com/muses/taoshop/web/controller/user/UserController.java
class UserController (line 21) | @RequestMapping("/portal/user")
method toUserCenter (line 29) | @GetMapping("/toUserCenter")
FILE: src/taoshop-portal/src/main/resources/static/js/jquery.cookie.js
function encode (line 23) | function encode(s) {
function decode (line 27) | function decode(s) {
function stringifyCookieValue (line 31) | function stringifyCookieValue(value) {
function parseCookieValue (line 35) | function parseCookieValue(s) {
function read (line 50) | function read(s, converter) {
FILE: src/taoshop-portal/src/main/resources/static/js/jquery.js
function jQuerySub (line 897) | function jQuerySub( selector, context ) {
function doScrollCheck (line 963) | function doScrollCheck() {
function createFlags (line 990) | function createFlags( flags ) {
function resolveFunc (line 1325) | function resolveFunc( i ) {
function progressFunc (line 1333) | function progressFunc( i ) {
function dataAttr (line 1986) | function dataAttr( elem, key, data ) {
function isEmptyDataObject (line 2017) | function isEmptyDataObject( obj ) {
function handleQueueMarkDefer (line 2035) | function handleQueueMarkDefer( elem, type, src ) {
function resolve (line 2194) | function resolve() {
function returnFalse (line 3547) | function returnFalse() {
function returnTrue (line 3550) | function returnTrue() {
function dirNodeCheck (line 5261) | function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
function dirCheck (line 5294) | function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
function isDisconnected (line 5567) | function isDisconnected( node ) {
function winnow (line 5684) | function winnow( elements, qualifier, keep ) {
function createSafeFragment (line 5721) | function createSafeFragment( document ) {
function root (line 6093) | function root( elem, cur ) {
function cloneCopyEvent (line 6100) | function cloneCopyEvent( src, dest ) {
function cloneFixAttributes (line 6128) | function cloneFixAttributes( src, dest ) {
function getAll (line 6273) | function getAll( elem ) {
function fixDefaultChecked (line 6286) | function fixDefaultChecked( elem ) {
function findInputs (line 6292) | function findInputs( elem ) {
function shimCloneNode (line 6303) | function shimCloneNode( elem ) {
function getWidthOrHeight (line 6794) | function getWidthOrHeight( elem, name, extra ) {
function addToPrefiltersOrTransports (line 7035) | function addToPrefiltersOrTransports( structure ) {
function inspectPrefiltersOrTransports (line 7071) | function inspectPrefiltersOrTransports( structure, options, originalOpti...
function ajaxExtend (line 7113) | function ajaxExtend( target, src ) {
function done (line 7455) | function done( status, nativeStatusText, responses, headers ) {
function buildParams (line 7770) | function buildParams( prefix, obj, traditional, add ) {
function ajaxHandleResponses (line 7820) | function ajaxHandleResponses( s, jqXHR, responses ) {
function ajaxConvert (line 7885) | function ajaxConvert( s, response ) {
function createStandardXHR (line 8150) | function createStandardXHR() {
function createActiveXHR (line 8156) | function createActiveXHR() {
function doAnimation (line 8495) | function doAnimation() {
function stopQueue (line 8651) | function stopQueue( elem, data, index ) {
function createFxNow (line 8693) | function createFxNow() {
function clearFxNow (line 8698) | function clearFxNow() {
function genFx (line 8703) | function genFx( type, num ) {
function t (line 8818) | function t( gotoEnd ) {
function defaultDisplay (line 9016) | function defaultDisplay( nodeName ) {
function getWindow (line 9300) | function getWindow( elem ) {
FILE: src/taoshop-portal/src/main/resources/static/js/jqzoom.js
function Smallimage (line 260) | function Smallimage(image) {
function Loader (line 323) | function Loader() {
function Lens (line 351) | function Lens() {
function Stage (line 506) | function Stage() {
function Largeimage (line 624) | function Largeimage() {
FILE: src/taoshop-portal/src/main/resources/static/js/popbox.js
function popPosition (line 3) | function popPosition(dom){
FILE: src/taoshop-portal/src/test/java/com/muses/taoshop/Attachment.java
class Attachment (line 4) | public class Attachment implements Serializable
method download (line 6) | public void download()
FILE: src/taoshop-portal/src/test/java/com/muses/taoshop/Client.java
class Client (line 2) | public class Client
method main (line 4) | public static void main(String a[])
FILE: src/taoshop-portal/src/test/java/com/muses/taoshop/Email.java
class Email (line 4) | public class Email implements Serializable
method Email (line 8) | public Email()
method deepClone (line 13) | public Object deepClone() throws IOException, ClassNotFoundException, ...
method getAttachment (line 26) | public Attachment getAttachment()
method display (line 31) | public void display()
FILE: src/taoshop-portal/src/test/java/com/muses/taoshop/JDBCFacade.java
class JDBCFacade (line 5) | public class JDBCFacade {
method open (line 10) | public void open(String driver,String jdbcUrl,String userName,String u...
method executeUpdate (line 21) | public int executeUpdate(String sql) {
method executeQuery (line 31) | public ResultSet executeQuery(String sql) {
method close (line 40) | public void close() {
FILE: src/taoshop-portal/src/test/java/com/muses/taoshop/ParseDateTest.java
class ParseDateTest (line 21) | public class ParseDateTest implements Runnable{
method ParseDateTest (line 27) | public ParseDateTest(int i){
method run (line 42) | @Override
method main (line 52) | public static void main(String[] args){
FILE: src/taoshop-portal/src/test/java/com/muses/taoshop/ThreadLocalTest.java
class ThreadLocalTest (line 22) | public class ThreadLocalTest implements Runnable {
method ThreadLocalTest (line 28) | public ThreadLocalTest(int i){
method run (line 43) | @Override
method main (line 54) | public static void main(String[] args){
FILE: src/taoshop-provider-api/taoshop-provider-api-item/src/main/java/com/muses/taoshop/item/entity/ItemBrand.java
class ItemBrand (line 21) | @Data
FILE: src/taoshop-provider-api/taoshop-provider-api-item/src/main/java/com/muses/taoshop/item/entity/ItemCategory.java
class ItemCategory (line 28) | @Data
FILE: src/taoshop-provider-api/taoshop-provider-api-item/src/main/java/com/muses/taoshop/item/entity/ItemDetail.java
class ItemDetail (line 19) | @Data
FILE: src/taoshop-provider-api/taoshop-provider-api-item/src/main/java/com/muses/taoshop/item/entity/ItemDto.java
class ItemDto (line 17) | @Data
FILE: src/taoshop-provider-api/taoshop-provider-api-item/src/main/java/com/muses/taoshop/item/entity/ItemList.java
class ItemList (line 17) | @Data
FILE: src/taoshop-provider-api/taoshop-provider-api-item/src/main/java/com/muses/taoshop/item/entity/ItemPortal.java
class ItemPortal (line 20) | @Data
FILE: src/taoshop-provider-api/taoshop-provider-api-item/src/main/java/com/muses/taoshop/item/entity/ItemSku.java
class ItemSku (line 23) | @Data
FILE: src/taoshop-provider-api/taoshop-provider-api-item/src/main/java/com/muses/taoshop/item/entity/ItemSkuSpecValue.java
class ItemSkuSpecValue (line 21) | @Data
FILE: src/taoshop-provider-api/taoshop-provider-api-item/src/main/java/com/muses/taoshop/item/entity/ItemSpec.java
class ItemSpec (line 21) | @Data
FILE: src/taoshop-provider-api/taoshop-provider-api-item/src/main/java/com/muses/taoshop/item/entity/ItemSpecValue.java
class ItemSpecValue (line 20) | @Data
FILE: src/taoshop-provider-api/taoshop-provider-api-item/src/main/java/com/muses/taoshop/item/entity/ItemSpu.java
class ItemSpu (line 22) | @Data
FILE: src/taoshop-provider-api/taoshop-provider-api-item/src/main/java/com/muses/taoshop/item/entity/ItemSpuSpec.java
class ItemSpuSpec (line 21) | @Data
FILE: src/taoshop-provider-api/taoshop-provider-api-item/src/main/java/com/muses/taoshop/item/service/IItemBrankService.java
type IItemBrankService (line 19) | public interface IItemBrankService {
method listItemBrand (line 24) | List<ItemBrand> listItemBrand();
FILE: src/taoshop-provider-api/taoshop-provider-api-item/src/main/java/com/muses/taoshop/item/service/IItemCategoryService.java
type IItemCategoryService (line 20) | public interface IItemCategoryService {
method listRootCategory (line 25) | List<ItemCategory> listRootCategory();
method listCategory (line 31) | List<ItemCategory> listCategory();
method listItemByCategoryId (line 37) | List<ItemList> listItemByCategoryId(int categoryId);
FILE: src/taoshop-provider-api/taoshop-provider-api-item/src/main/java/com/muses/taoshop/item/service/IItemService.java
type IItemService (line 21) | public interface IItemService {
method listItemPortal (line 26) | List<ItemPortal> listItemPortal();
method getItemDetailInfo (line 32) | ItemDetail getItemDetailInfo(int spuId);
FILE: src/taoshop-provider-api/taoshop-provider-api-item/src/main/java/com/muses/taoshop/item/service/IItemSpecService.java
type IItemSpecService (line 10) | public interface IItemSpecService {
method getSpecBySpuId (line 15) | List<ItemSpec> getSpecBySpuId(int spuId);
method getSpecValueBySkuId (line 22) | List<ItemSpecValue> getSpecValueBySkuId(int skuId);
FILE: src/taoshop-provider-api/taoshop-provider-api-order/src/main/java/org/muses/provider/api/App.java
class App (line 7) | public class App
method main (line 9) | public static void main( String[] args )
FILE: src/taoshop-provider-api/taoshop-provider-api-order/src/test/java/org/muses/provider/api/AppTest.java
class AppTest (line 10) | public class AppTest
method shouldAnswerWithTrue (line 15) | @Test
FILE: src/taoshop-provider-api/taoshop-provider-api-shop/src/main/java/com/muses/taoshop/item/entity/ShopInfo.java
class ShopInfo (line 5) | public class ShopInfo {
method getId (line 14) | public Long getId() {
method setId (line 18) | public void setId(Long id) {
method getShopName (line 22) | public String getShopName() {
method setShopName (line 26) | public void setShopName(String shopName) {
method getLastModifyTime (line 30) | public Date getLastModifyTime() {
method setLastModifyTime (line 34) | public void setLastModifyTime(Date lastModifyTime) {
method getCreateTime (line 38) | public Date getCreateTime() {
method setCreateTime (line 42) | public void setCreateTime(Date createTime) {
FILE: src/taoshop-provider-api/taoshop-provider-api-shop/src/main/java/com/muses/taoshop/item/entity/ShopInfoExample.java
class ShopInfoExample (line 7) | public class ShopInfoExample {
method ShopInfoExample (line 14) | public ShopInfoExample() {
method setOrderByClause (line 18) | public void setOrderByClause(String orderByClause) {
method getOrderByClause (line 22) | public String getOrderByClause() {
method setDistinct (line 26) | public void setDistinct(boolean distinct) {
method isDistinct (line 30) | public boolean isDistinct() {
method getOredCriteria (line 34) | public List<Criteria> getOredCriteria() {
method or (line 38) | public void or(Criteria criteria) {
method or (line 42) | public Criteria or() {
method createCriteria (line 48) | public Criteria createCriteria() {
method createCriteriaInternal (line 56) | protected Criteria createCriteriaInternal() {
method clear (line 61) | public void clear() {
class GeneratedCriteria (line 67) | protected abstract static class GeneratedCriteria {
method GeneratedCriteria (line 70) | protected GeneratedCriteria() {
method isValid (line 75) | public boolean isValid() {
method getAllCriteria (line 79) | public List<Criterion> getAllCriteria() {
method getCriteria (line 83) | public List<Criterion> getCriteria() {
method addCriterion (line 87) | protected void addCriterion(String condition) {
method addCriterion (line 94) | protected void addCriterion(String condition, Object value, String p...
method addCriterion (line 101) | protected void addCriterion(String condition, Object value1, Object ...
method andIdIsNull (line 108) | public Criteria andIdIsNull() {
method andIdIsNotNull (line 113) | public Criteria andIdIsNotNull() {
method andIdEqualTo (line 118) | public Criteria andIdEqualTo(Long value) {
method andIdNotEqualTo (line 123) | public Criteria andIdNotEqualTo(Long value) {
method andIdGreaterThan (line 128) | public Criteria andIdGreaterThan(Long value) {
method andIdGreaterThanOrEqualTo (line 133) | public Criteria andIdGreaterThanOrEqualTo(Long value) {
method andIdLessThan (line 138) | public Criteria andIdLessThan(Long value) {
method andIdLessThanOrEqualTo (line 143) | public Criteria andIdLessThanOrEqualTo(Long value) {
method andIdIn (line 148) | public Criteria andIdIn(List<Long> values) {
method andIdNotIn (line 153) | public Criteria andIdNotIn(List<Long> values) {
method andIdBetween (line 158) | public Criteria andIdBetween(Long value1, Long value2) {
method andIdNotBetween (line 163) | public Criteria andIdNotBetween(Long value1, Long value2) {
method andShopNameIsNull (line 168) | public Criteria andShopNameIsNull() {
method andShopNameIsNotNull (line 173) | public Criteria andShopNameIsNotNull() {
method andShopNameEqualTo (line 178) | public Criteria andShopNameEqualTo(String value) {
method andShopNameNotEqualTo (line 183) | public Criteria andShopNameNotEqualTo(String value) {
method andShopNameGreaterThan (line 188) | public Criteria andShopNameGreaterThan(String value) {
method andShopNameGreaterThanOrEqualTo (line 193) | public Criteria andShopNameGreaterThanOrEqualTo(String value) {
method andShopNameLessThan (line 198) | public Criteria andShopNameLessThan(String value) {
method andShopNameLessThanOrEqualTo (line 203) | public Criteria andShopNameLessThanOrEqualTo(String value) {
method andShopNameLike (line 208) | public Criteria andShopNameLike(String value) {
method andShopNameNotLike (line 213) | public Criteria andShopNameNotLike(String value) {
method andShopNameIn (line 218) | public Criteria andShopNameIn(List<String> values) {
method andShopNameNotIn (line 223) | public Criteria andShopNameNotIn(List<String> values) {
method andShopNameBetween (line 228) | public Criteria andShopNameBetween(String value1, String value2) {
method andShopNameNotBetween (line 233) | public Criteria andShopNameNotBetween(String value1, String value2) {
method andLastModifyTimeIsNull (line 238) | public Criteria andLastModifyTimeIsNull() {
method andLastModifyTimeIsNotNull (line 243) | public Criteria andLastModifyTimeIsNotNull() {
method andLastModifyTimeEqualTo (line 248) | public Criteria andLastModifyTimeEqualTo(Date value) {
method andLastModifyTimeNotEqualTo (line 253) | public Criteria andLastModifyTimeNotEqualTo(Date value) {
method andLastModifyTimeGreaterThan (line 258) | public Criteria andLastModifyTimeGreaterThan(Date value) {
method andLastModifyTimeGreaterThanOrEqualTo (line 263) | public Criteria andLastModifyTimeGreaterThanOrEqualTo(Date value) {
method andLastModifyTimeLessThan (line 268) | public Criteria andLastModifyTimeLessThan(Date value) {
method andLastModifyTimeLessThanOrEqualTo (line 273) | public Criteria andLastModifyTimeLessThanOrEqualTo(Date value) {
method andLastModifyTimeIn (line 278) | public Criteria andLastModifyTimeIn(List<Date> values) {
method andLastModifyTimeNotIn (line 283) | public Criteria andLastModifyTimeNotIn(List<Date> values) {
method andLastModifyTimeBetween (line 288) | public Criteria andLastModifyTimeBetween(Date value1, Date value2) {
method andLastModifyTimeNotBetween (line 293) | public Criteria andLastModifyTimeNotBetween(Date value1, Date value2) {
method andCreateTimeIsNull (line 298) | public Criteria andCreateTimeIsNull() {
method andCreateTimeIsNotNull (line 303) | public Criteria andCreateTimeIsNotNull() {
method andCreateTimeEqualTo (line 308) | public Criteria andCreateTimeEqualTo(Date value) {
method andCreateTimeNotEqualTo (line 313) | public Criteria andCreateTimeNotEqualTo(Date value) {
method andCreateTimeGreaterThan (line 318) | public Criteria andCreateTimeGreaterThan(Date value) {
method andCreateTimeGreaterThanOrEqualTo (line 323) | public Criteria andCreateTimeGreaterThanOrEqualTo(Date value) {
method andCreateTimeLessThan (line 328) | public Criteria andCreateTimeLessThan(Date value) {
method andCreateTimeLessThanOrEqualTo (line 333) | public Criteria andCreateTimeLessThanOrEqualTo(Date value) {
method andCreateTimeIn (line 338) | public Criteria andCreateTimeIn(List<Date> values) {
method andCreateTimeNotIn (line 343) | public Criteria andCreateTimeNotIn(List<Date> values) {
method andCreateTimeBetween (line 348) | public Criteria andCreateTimeBetween(Date value1, Date value2) {
method andCreateTimeNotBetween (line 353) | public Criteria andCreateTimeNotBetween(Date value1, Date value2) {
class Criteria (line 359) | public static class Criteria extends GeneratedCriteria {
method Criteria (line 361) | protected Criteria() {
class Criterion (line 366) | public static class Criterion {
method getCondition (line 383) | public String getCondition() {
method getValue (line 387) | public Object getValue() {
method getSecondValue (line 391) | public Object getSecondValue() {
method isNoValue (line 395) | public boolean isNoValue() {
method isSingleValue (line 399) | public boolean isSingleValue() {
method isBetweenValue (line 403) | public boolean isBetweenValue() {
method isListValue (line 407) | public boolean isListValue() {
method getTypeHandler (line 411) | public String getTypeHandler() {
method Criterion (line 415) | protected Criterion(String condition) {
method Criterion (line 422) | protected Criterion(String condition, Object value, String typeHandl...
method Criterion (line 434) | protected Criterion(String condition, Object value) {
method Criterion (line 438) | protected Criterion(String condition, Object value, Object secondVal...
method Criterion (line 447) | protected Criterion(String condition, Object value, Object secondVal...
FILE: src/taoshop-provider-api/taoshop-provider-api-usc/src/main/java/com/muses/taoshop/user/entity/User.java
class User (line 17) | @Data
FILE: src/taoshop-provider-api/taoshop-provider-api-usc/src/main/java/com/muses/taoshop/user/service/IUserService.java
type IUserService (line 6) | public interface IUserService {
method loginCheck (line 12) | User loginCheck(String username, String password);
FILE: src/taoshop-provider/taoshop-provider-item/src/main/java/com/muses/taoshop/item/mapper/ItemBrandMapper.java
type ItemBrandMapper (line 9) | @Mapper
method listItemBrand (line 11) | List<ItemBrand> listItemBrand();
FILE: src/taoshop-provider/taoshop-provider-item/src/main/java/com/muses/taoshop/item/mapper/ItemCategoryMapper.java
type ItemCategoryMapper (line 9) | @Mapper
method listRootCategory (line 12) | List<ItemCategory> listRootCategory();
method listCategory (line 14) | List<ItemCategory> listCategory();
method listItemByCategoryId (line 16) | List<ItemList> listItemByCategoryId(@Param("categoryId") int categoryId);
FILE: src/taoshop-provider/taoshop-provider-item/src/main/java/com/muses/taoshop/item/mapper/ItemMapper.java
type ItemMapper (line 12) | @Mapper
method listItemPortal (line 15) | List<ItemPortal> listItemPortal();
method getItemDetail (line 17) | ItemDetail getItemDetail(@Param("spuId")int spuId);
FILE: src/taoshop-provider/taoshop-provider-item/src/main/java/com/muses/taoshop/item/mapper/ItemSpecMapper.java
type ItemSpecMapper (line 11) | @Mapper
method getSpecBySpuId (line 13) | List<ItemSpec> getSpecBySpuId(@Param("spuId")int spuId);
method getSpecValueBySkuId (line 15) | List<ItemSpecValue> getSpecValueBySkuId(@Param("skuId")int skuId);
FILE: src/taoshop-provider/taoshop-provider-item/src/main/java/com/muses/taoshop/item/service/ItemBrankServiceImpl.java
class ItemBrankServiceImpl (line 22) | @Service
method listItemBrand (line 28) | @Override
FILE: src/taoshop-provider/taoshop-provider-item/src/main/java/com/muses/taoshop/item/service/ItemCategoryServiceImpl.java
class ItemCategoryServiceImpl (line 23) | @Service
method listRootCategory (line 34) | @Override
method listCategory (line 43) | @Override
method listItemByCategoryId (line 53) | @Override
FILE: src/taoshop-provider/taoshop-provider-item/src/main/java/com/muses/taoshop/item/service/ItemServiceImpl.java
class ItemServiceImpl (line 24) | @Service
method listItemPortal (line 35) | @Override
method getItemDetailInfo (line 44) | @Override
FILE: src/taoshop-provider/taoshop-provider-item/src/main/java/com/muses/taoshop/item/service/ItemSpecServiceImpl.java
class ItemSpecServiceImpl (line 12) | @Service
method getSpecBySpuId (line 23) | @Override
method getSpecValueBySkuId (line 34) | @Override
FILE: src/taoshop-provider/taoshop-provider-usc/src/main/java/com/muses/taoshop/user/mapper/UserMapper.java
type UserMapper (line 8) | @Mapper
method loginCheck (line 10) | User loginCheck(@Param("username") String username, @Param("password")...
FILE: src/taoshop-provider/taoshop-provider-usc/src/main/java/com/muses/taoshop/user/service/UserServiceImpl.java
class UserServiceImpl (line 9) | @Service
method loginCheck (line 21) | @Override
FILE: src/taoshop-search/src/main/java/com/muses/base/search/LuceneConstants.java
class LuceneConstants (line 3) | public class LuceneConstants {
FILE: src/taoshop-search/src/main/java/com/muses/base/search/TestLucene.java
class TestLucene (line 3) | public class TestLucene {
FILE: src/taoshop-search/src/main/java/com/muses/base/search/biz/LuceneIndexer.java
class LuceneIndexer (line 35) | @Component
class SingletonHolder (line 64) | private static class SingletonHolder{
method getInstance (line 68) | public static LuceneIndexer getInstance(){
method createIndex (line 72) | public boolean createIndex(String indexDir) throws IOException{
method main (line 123) | public static void main(String[] args) {
FILE: src/taoshop-search/src/main/java/com/muses/base/search/biz/SearchBuilder.java
class SearchBuilder (line 36) | public class SearchBuilder {
method doSearch (line 38) | public static void doSearch(String indexDir , String queryStr) throws ...
method main (line 74) | public static void main(String[] args){
FILE: src/taoshop-search/src/test/java/com/test/lucene/LuceneIndexer.java
class LuceneIndexer (line 34) | @Component
class SingletonHolder (line 63) | private static class SingletonHolder{
method getInstance (line 67) | public static LuceneIndexer getInstance(){
method createIndex (line 71) | public boolean createIndex(String indexDir) throws IOException{
method main (line 122) | public static void main(String[] args) {
FILE: src/taoshop-search/src/test/java/com/test/lucene/SearchBuilder.java
class SearchBuilder (line 22) | public class SearchBuilder {
method doSearch (line 24) | public static void doSearch(String indexDir , String queryStr) throws ...
method main (line 60) | public static void main(String[] args){
FILE: src/taoshop-search/src/test/java/com/test/pattern/CurrentConditionsDisplay.java
class CurrentConditionsDisplay (line 6) | public class CurrentConditionsDisplay implements Observer, DisplayElement {
method CurrentConditionsDisplay (line 12) | public CurrentConditionsDisplay(Observable observable) {
method update (line 33) | @Override
method display (line 43) | public void display() {
FILE: src/taoshop-search/src/test/java/com/test/pattern/DisplayElement.java
type DisplayElement (line 3) | public interface DisplayElement {
method display (line 4) | public void display();
FILE: src/taoshop-search/src/test/java/com/test/pattern/ForecastDisplay.java
class ForecastDisplay (line 3) | public class ForecastDisplay implements Observer, DisplayElement {
method ForecastDisplay (line 6) | public ForecastDisplay(WeatherData weatherData) {
method update (line 10) | public void update(float temp, float humidity, float pressure) {
method display (line 17) | public void display() {
FILE: src/taoshop-search/src/test/java/com/test/pattern/Observer.java
type Observer (line 3) | public interface Observer {
method update (line 4) | public void update(float temp, float humidity, float pressure);
FILE: src/taoshop-search/src/test/java/com/test/pattern/Singleton.java
class Singleton (line 15) | public class Singleton {
method Singleton (line 18) | private Singleton (){}
class SingletonHolder (line 70) | public static class SingletonHolder{
method getInstance (line 78) | public static Singleton getInstance(){
FILE: src/taoshop-search/src/test/java/com/test/pattern/StatisticsDisplay.java
class StatisticsDisplay (line 3) | public class StatisticsDisplay implements Observer, DisplayElement {
method StatisticsDisplay (line 8) | public StatisticsDisplay(WeatherData weatherData) {
method update (line 12) | public void update(float temp, float humidity, float pressure) {
method display (line 27) | public void display() {
FILE: src/taoshop-search/src/test/java/com/test/pattern/Subject.java
type Subject (line 3) | public interface Subject {
method registerObserver (line 4) | public void registerObserver(Observer o);
method removeObserver (line 5) | public void removeObserver(Observer o);
method notifyObservers (line 6) | public void notifyObservers();
FILE: src/taoshop-search/src/test/java/com/test/pattern/WeatherData.java
class WeatherData (line 9) | public class WeatherData extends Observable {
method WeatherData (line 15) | public WeatherData() {
method registerObserver (line 19) | public void registerObserver(Observer o) {
method removeObserver (line 23) | public void removeObserver(Observer o) {
method notifyObservers (line 30) | public void notifyObservers() {
method measurementsChanged (line 37) | public void measurementsChanged() {
method setMeasurements (line 42) | public void setMeasurements(float temperature, float humidity, float p...
method getTemperature (line 51) | public float getTemperature() {
method getHumidity (line 55) | public float getHumidity() {
method getPressure (line 59) | public float getPressure() {
FILE: src/taoshop-search/src/test/java/com/test/pattern/WeatherStation.java
class WeatherStation (line 3) | public class WeatherStation {
method main (line 5) | public static void main(String[] args) {
FILE: src/taoshop-search/src/test/java/com/test/thread/ThreadTest.java
class ThreadTest (line 22) | @WebServlet(name = "/testThread")
method doPost (line 25) | @Override
method doGet (line 31) | @Override
method main (line 36) | public static void main(String[] args){
FILE: src/taoshop-sso/src/main/java/com/muses/taoshop/sso/authentication/UsernamePasswordAuthenticationHandler.java
class UsernamePasswordAuthenticationHandler (line 22) | public class UsernamePasswordAuthenticationHandler extends AbstractUsern...
method authenticateUsernamePasswordInternal (line 24) | @Override
method doTest (line 29) | protected void doTest(){
FILE: src/taoshop-sso/src/main/java/org/jasig/cas/CentralAuthenticationServiceImpl.java
class CentralAuthenticationServiceImpl (line 66) | @Component("centralAuthenticationService")
method CentralAuthenticationServiceImpl (line 75) | public CentralAuthenticationServiceImpl() {
method CentralAuthenticationServiceImpl (line 87) | public CentralAuthenticationServiceImpl(
method destroyTicketGrantingTicket (line 105) | @Audit(
method grantServiceTicket (line 130) | @Audit(
method evaluatePossibilityOfMixedPrincipals (line 207) | private Authentication evaluatePossibilityOfMixedPrincipals(final Auth...
method grantProxyTicket (line 230) | @Audit(
method createProxyGrantingTicket (line 285) | @Audit(
method validateServiceTicket (line 326) | @Audit(
method createTicketGrantingTicket (line 393) | @Audit(
FILE: src/taoshop-sso/src/main/java/org/jasig/cas/adaptors/jdbc/AbstractJdbcUsernamePasswordAuthenticationHandler.java
class AbstractJdbcUsernamePasswordAuthenticationHandler (line 15) | public abstract class AbstractJdbcUsernamePasswordAuthenticationHandler ...
method setDataSource (line 27) | public void setDataSource(@NotNull final DataSource dataSource) {
method getJdbcTemplate (line 37) | protected final JdbcTemplate getJdbcTemplate() {
method getDataSource (line 41) | protected final DataSource getDataSource() {
FILE: src/taoshop-sso/src/main/java/org/jasig/cas/adaptors/jdbc/QueryDatabaseAuthenticationHandler.java
class QueryDatabaseAuthenticationHandler (line 32) | @Component("queryDatabaseAuthenticationHandler")
method authenticateUsernamePasswordInternal (line 38) | @Override
method setSql (line 68) | @Autowired
method setDataSource (line 73) | @Override
FILE: src/taoshop-sso/src/main/java/org/jasig/cas/authentication/UsernamePasswordCredential.java
class UsernamePasswordCredential (line 16) | public class UsernamePasswordCredential implements Credential, Serializa...
method UsernamePasswordCredential (line 33) | public UsernamePasswordCredential() {}
method UsernamePasswordCredential (line 41) | public UsernamePasswordCredential(final String userName, final String ...
method getPassword (line 46) | public final String getPassword() {
method setPassword (line 51) | public final void setPassword(final String password) {
method getUsername (line 56) | public final String getUsername() {
method setUsername (line 60) | public final void setUsername(final String userName) {
method getId (line 65) | @Override
method toString (line 70) | @Override
method equals (line 75) | @Override
method hashCode (line 97) | @Override
FILE: src/taoshop-sso/src/main/java/org/jasig/cas/support/rest/TicketsResource.java
class TicketsResource (line 61) | @RestController("ticketResourceRestController")
method createTicketGrantingTicket (line 97) | @RequestMapping(value = "/v1/tickets", method = RequestMethod.POST, co...
method createServiceTicket (line 153) | @RequestMapping(value = "/v1/tickets/{tgtId:.+}", method = RequestMeth...
method deleteTicketGrantingTicket (line 185) | @RequestMapping(value = "/v1/tickets/{tgtId:.+}", method = RequestMeth...
method setAuthenticationSystemSupport (line 191) | public void setAuthenticationSystemSupport(final AuthenticationSystemS...
method setWebApplicationServiceFactory (line 195) | public void setWebApplicationServiceFactory(final ServiceFactory webAp...
method setTicketRegistrySupport (line 199) | public void setTicketRegistrySupport(final TicketRegistrySupport ticke...
method setCentralAuthenticationService (line 203) | public void setCentralAuthenticationService(final CentralAuthenticatio...
method getCentralAuthenticationService (line 207) | public CentralAuthenticationService getCentralAuthenticationService() {
method getAuthenticationSystemSupport (line 211) | public AuthenticationSystemSupport getAuthenticationSystemSupport() {
method getCredentialFactory (line 215) | public CredentialFactory getCredentialFactory() {
method getWebApplicationServiceFactory (line 219) | public ServiceFactory getWebApplicationServiceFactory() {
method getTicketRegistrySupport (line 223) | public TicketRegistrySupport getTicketRegistrySupport() {
class DefaultCredentialFactory (line 230) | private static class DefaultCredentialFactory implements CredentialFac...
method fromRequestBody (line 231) | @Override
class BadRequestException (line 245) | private static class BadRequestException extends IllegalArgumentExcept...
method BadRequestException (line 252) | BadRequestException(final String msg) {
FILE: src/taoshop-sso/src/main/java/org/jasig/cas/web/flow/AuthenticationExceptionHandler.java
class AuthenticationExceptionHandler (line 29) | @Component("authenticationExceptionHandler")
method setErrors (line 76) | public void setErrors(final List<Class<? extends Exception>> errors) {
method getErrors (line 80) | public final List<Class<? extends Exception>> getErrors() {
method setMessageBundlePrefix (line 90) | public void setMessageBundlePrefix(final String prefix) {
method handle (line 105) | public String handle(final AuthenticationException e, final MessageCon...
FILE: src/taoshop-sso/src/main/java/org/jasig/cas/web/flow/AuthenticationViaFormAction.java
class AuthenticationViaFormAction (line 45) | @Component("authenticationViaFormAction")
method submit (line 86) | public final Event submit(final RequestContext context, final Credenti...
method isRequestAskingForServiceTicket (line 102) | protected boolean isRequestAskingForServiceTicket(final RequestContext...
method grantServiceTicket (line 119) | protected Event grantServiceTicket(final RequestContext context, final...
method createTicketGrantingTicket (line 157) | protected Event createTicketGrantingTicket(final RequestContext contex...
method addWarningMessagesToMessageContextIfNeeded (line 194) | protected boolean addWarningMessagesToMessageContextIfNeeded(final Tic...
method putPublicWorkstationToFlowIfRequestParameterPresent (line 212) | private static void putPublicWorkstationToFlowIfRequestParameterPresen...
method newEvent (line 225) | private Event newEvent(final String id) {
method newEvent (line 236) | private Event newEvent(final String id, final Exception error) {
method addWarningToContext (line 246) | private static void addWarningToContext(final MessageContext context, ...
method setCentralAuthenticationService (line 255) | public void setCentralAuthenticationService(final CentralAuthenticatio...
method setWarnCookieGenerator (line 259) | public void setWarnCookieGenerator(final CookieGenerator warnCookieGen...
method setAuthenticationSystemSupport (line 263) | public void setAuthenticationSystemSupport(final AuthenticationSystemS...
Condensed preview — 342 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (2,600K chars).
[
{
"path": ".gitignore",
"chars": 979,
"preview": "# ---> Java\n*.class\n\n# Mobile Tools for Java (J2ME)\n.mtj.tmp/\n\n# Package Files #\n*.jar\n*.war\n*.ear\n\n# virtual machine cr"
},
{
"path": "LICENSE",
"chars": 11357,
"preview": " Apache License\n Version 2.0, January 2004\n "
},
{
"path": "README.md",
"chars": 7086,
"preview": "[](https://travis-ci.org/crossoverJie/taos"
},
{
"path": "docs/taoshop.sql",
"chars": 18649,
"preview": "/*\r\nSQLyog v10.2 \r\nMySQL - 5.1.32-community : Database - taoshop\r\n******************************************************"
},
{
"path": "docs/架构图.pos",
"chars": 187314,
"preview": "{\"diagram\":{\"image\":{\"height\":841,\"pngdata\":\"iVBORw0KGgoAAAANSUhEUgAAA/0AAANJCAYAAABeZFwDAAAACXBIWXMAAAsTAAALEwEAmpwYAAA"
},
{
"path": "docs/电商平台设计.mdl",
"chars": 273617,
"preview": "\r\n(object Petal\r\n version \t50\r\n _written \t\"Rose 8.2.0310.2800\"\r\n charSet \t134)\r\n\r\n(object Design \"Logic"
},
{
"path": "docs/电商平台设计.md~",
"chars": 212309,
"preview": "\r\n(object Petal\r\n version \t50\r\n _written \t\"Rose 8.2.0310.2800\"\r\n charSet \t134)\r\n\r\n(object Design \"Logic"
},
{
"path": "src/ReadMe.md",
"chars": 117,
"preview": "### 电子商务项目taoshop\n@version版本1.0.0\n本开源项目拟采用B2C的商业模式,采用SpringBoot+SpringCloud或者Dubbo技术栈实现微服务,实现一款分布式集群的高性能电商系统。(开发中...)"
},
{
"path": "src/pom.xml",
"chars": 6270,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
},
{
"path": "src/taoshop-cms/ReadMe.md",
"chars": 9,
"preview": "### CMS系统"
},
{
"path": "src/taoshop-cms/pom.xml",
"chars": 2634,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/"
},
{
"path": "src/taoshop-cms/src/main/webapp/WEB-INF/web.xml",
"chars": 215,
"preview": "<!DOCTYPE web-app PUBLIC\n \"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN\"\n \"http://java.sun.com/dtd/web-app_2_3"
},
{
"path": "src/taoshop-cms/src/main/webapp/index.jsp",
"chars": 52,
"preview": "<html>\n<body>\n<h2>Hello World!</h2>\n</body>\n</html>\n"
},
{
"path": "src/taoshop-common/ReadMe.md",
"chars": 13,
"preview": "### 电商平台通用工程\n"
},
{
"path": "src/taoshop-common/pom.xml",
"chars": 1370,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/"
},
{
"path": "src/taoshop-common/taoshop-common-cache/ReadMe.md",
"chars": 8,
"preview": "###缓存框架\n"
},
{
"path": "src/taoshop-common/taoshop-common-cache/pom.xml",
"chars": 1373,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\"\n xmlns:xsi=\"http://www"
},
{
"path": "src/taoshop-common/taoshop-common-core/ReadMe.md",
"chars": 38,
"preview": "###电商平台通用工程\n包括统一异常处理类,Mybatis数据库相关的通用类"
},
{
"path": "src/taoshop-common/taoshop-common-core/pom.xml",
"chars": 941,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/"
},
{
"path": "src/taoshop-common/taoshop-common-core/src/main/java/com/muses/taoshop/common/core/base/Constants.java",
"chars": 1118,
"preview": "package com.muses.taoshop.common.core.base;\n\nimport java.util.Locale;\n\n/**\n * @description Constants类,项目的基本信息配置\n * @auth"
},
{
"path": "src/taoshop-common/taoshop-common-core/src/main/java/com/muses/taoshop/common/core/base/ResultStatus.java",
"chars": 721,
"preview": "package com.muses.taoshop.common.core.base;\n\n/**\n * <pre>\n * 返回结果枚举类 TODO 代补充完善\n * </pre>\n *\n * @author nicky.ma\n * @ve"
},
{
"path": "src/taoshop-common/taoshop-common-core/src/main/java/com/muses/taoshop/common/core/database/annotation/AnnotationConstants.java",
"chars": 754,
"preview": "package com.muses.taoshop.common.core.database.annotation;\n\nimport org.springframework.core.io.support.ResourcePatternRe"
},
{
"path": "src/taoshop-common/taoshop-common-core/src/main/java/com/muses/taoshop/common/core/database/annotation/MybatisRepository.java",
"chars": 578,
"preview": "package com.muses.taoshop.common.core.database.annotation;\n\nimport org.apache.ibatis.annotations.Mapper;\nimport org.spri"
},
{
"path": "src/taoshop-common/taoshop-common-core/src/main/java/com/muses/taoshop/common/core/database/annotation/TypeAliasesPackageScanner.java",
"chars": 3417,
"preview": "package com.muses.taoshop.common.core.database.annotation;\n\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimp"
},
{
"path": "src/taoshop-common/taoshop-common-core/src/main/java/com/muses/taoshop/common/core/database/config/BaseConfig.java",
"chars": 1377,
"preview": "package com.muses.taoshop.common.core.database.config;\n\n/**\n * <pre>\n * 基本配置类\n * </pre>\n *\n * @author nicky\n * @version"
},
{
"path": "src/taoshop-common/taoshop-common-core/src/main/java/com/muses/taoshop/common/core/database/config/DataSourceConfig.java",
"chars": 934,
"preview": "package com.muses.taoshop.common.core.database.config;\n\nimport com.alibaba.druid.spring.boot.autoconfigure.DruidDataSour"
},
{
"path": "src/taoshop-common/taoshop-common-core/src/main/java/com/muses/taoshop/common/core/database/config/MybatisConfig.java",
"chars": 3336,
"preview": "package com.muses.taoshop.common.core.database.config;\n\nimport com.muses.taoshop.common.core.database.annotation.Mybatis"
},
{
"path": "src/taoshop-common/taoshop-common-core/src/main/java/com/muses/taoshop/common/core/database/config/MybatisSqlInterceptor.java",
"chars": 1674,
"preview": "package com.muses.taoshop.common.core.database.config;\n\nimport org.apache.commons.lang3.StringUtils;\nimport org.apache.i"
},
{
"path": "src/taoshop-common/taoshop-common-core/src/main/java/com/muses/taoshop/common/core/database/typehandlers/Spring2BooleanTypeHandler.java",
"chars": 1855,
"preview": "package com.muses.taoshop.common.core.database.typehandlers;\n\nimport org.apache.ibatis.type.JdbcType;\nimport org.apache."
},
{
"path": "src/taoshop-common/taoshop-common-core/src/main/java/com/muses/taoshop/common/core/database/typehandlers/UnixLong2DateTypeHandler.java",
"chars": 1422,
"preview": "package com.muses.taoshop.common.core.database.typehandlers;\n\nimport org.apache.ibatis.type.BaseTypeHandler;\nimport org."
},
{
"path": "src/taoshop-common/taoshop-common-core/src/main/java/com/muses/taoshop/common/core/exception/CommonException.java",
"chars": 236,
"preview": "package com.muses.taoshop.common.core.exception;\n\n/**\n * <pre>\n * TODO 实现统一异常处理类\n * </pre>\n *\n * @author nicky\n * @vers"
},
{
"path": "src/taoshop-common/taoshop-common-core/src/main/java/com/muses/taoshop/common/core/util/DateUtils.java",
"chars": 645,
"preview": "package com.muses.taoshop.common.core.util;\n\nimport java.text.DateFormat;\nimport java.text.ParseException;\nimport java.t"
},
{
"path": "src/taoshop-common/taoshop-common-core/src/main/java/com/muses/taoshop/common/core/util/JsonDateSerializer.java",
"chars": 738,
"preview": "package com.muses.taoshop.common.core.util;\n\nimport com.fasterxml.jackson.core.JsonGenerator;\nimport com.fasterxml.jacks"
},
{
"path": "src/taoshop-common/taoshop-common-core/src/main/java/com/muses/taoshop/common/core/util/SerializeUtils.java",
"chars": 1379,
"preview": "package com.muses.taoshop.common.core.util;\n\nimport java.io.*;\n\n/**\n * <pre>\n * 序列化工具类\n * </pre>\n *\n * @author nicky\n *"
},
{
"path": "src/taoshop-common/taoshop-common-core/src/main/java/com/muses/taoshop/common/core/util/UUIDGenerator.java",
"chars": 240,
"preview": "package com.muses.taoshop.common.core.util;\n\n/**\n * <pre>\n * UUID生成器\n * </pre>\n *\n * @author nicky\n * @version 1.00.00\n"
},
{
"path": "src/taoshop-common/taoshop-common-core/src/test/java/org/muses/commo/AppTest.java",
"chars": 287,
"preview": "package org.muses.commo;\n\nimport static org.junit.Assert.assertTrue;\n\nimport org.junit.Test;\n\n/**\n * Unit test for simpl"
},
{
"path": "src/taoshop-common/taoshop-common-core/src/test/java/org/muses/commo/MybatisSqlInterceptor.java",
"chars": 5321,
"preview": "package org.muses.commo;\nimport org.apache.commons.lang3.StringUtils;\nimport org.apache.ibatis.executor.Executor;\nimport"
},
{
"path": "src/taoshop-common/taoshop-common-core/src/test/java/org/muses/commo/RedisWithReentrantLock.java",
"chars": 1701,
"preview": "package org.muses.commo;\n\nimport redis.clients.jedis.Jedis;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\npublic cla"
},
{
"path": "src/taoshop-common/taoshop-common-rpc/ReadMe.md",
"chars": 11,
"preview": "### 项目RPC工程"
},
{
"path": "src/taoshop-common/taoshop-common-rpc/pom.xml",
"chars": 2688,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/"
},
{
"path": "src/taoshop-common/taoshop-common-rpc/src/main/java/org/muses/common/App.java",
"chars": 181,
"preview": "package org.muses.common;\n\n\n/**\n * Hello world!\n *\n */\npublic class App \n{\n\n public static void main( String[] args )"
},
{
"path": "src/taoshop-common/taoshop-common-rpc/src/test/java/org/muses/common/AppTest.java",
"chars": 288,
"preview": "package org.muses.common;\n\nimport static org.junit.Assert.assertTrue;\n\nimport org.junit.Test;\n\n/**\n * Unit test for simp"
},
{
"path": "src/taoshop-common/taoshop-security-core/ReadMe.md",
"chars": 14,
"preview": "### 电商平台安全核心服务"
},
{
"path": "src/taoshop-common/taoshop-security-core/pom.xml",
"chars": 3266,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/"
},
{
"path": "src/taoshop-common/taoshop-security-core/src/main/java/com/muses/taoshop/common/cas/casRealm/ShiroCasRealm.java",
"chars": 540,
"preview": "package com.muses.taoshop.common.cas.casRealm;\n\nimport org.apache.shiro.cas.CasRealm;\nimport org.slf4j.Logger;\nimport or"
},
{
"path": "src/taoshop-common/taoshop-security-core/src/main/java/com/muses/taoshop/common/cas/config/CasConfiguration.java",
"chars": 1367,
"preview": "package com.muses.taoshop.common.cas.config;\n\nimport com.muses.taoshop.common.security.core.shiro.realm.CommonShiroRealm"
},
{
"path": "src/taoshop-common/taoshop-security-core/src/main/java/com/muses/taoshop/common/cas/constant/CasConsts.java",
"chars": 1142,
"preview": "package com.muses.taoshop.common.cas.constant;\n\n/**\n * <pre>\n * 单点登录配置类\n * </pre>\n *\n * @author nicky\n * @version 1.00."
},
{
"path": "src/taoshop-common/taoshop-security-core/src/main/java/com/muses/taoshop/common/security/core/filter/SysAccessControllerFilter.java",
"chars": 5026,
"preview": "package com.muses.taoshop.common.security.core.filter;\n\n\nimport com.alibaba.fastjson.JSON;\nimport org.apache.shiro.cache"
},
{
"path": "src/taoshop-common/taoshop-security-core/src/main/java/com/muses/taoshop/common/security/core/shiro/realm/CommonShiroRealm.java",
"chars": 2778,
"preview": "package com.muses.taoshop.common.security.core.shiro.realm;\n\nimport javax.annotation.Resource;\n\nimport org.apache.shiro."
},
{
"path": "src/taoshop-common/taoshop-security-core/src/main/java/com/muses/taoshop/common/security/core/utils/AESUtil.java",
"chars": 2460,
"preview": "package com.muses.taoshop.common.security.core.utils;\n\nimport sun.misc.BASE64Encoder;\n\nimport java.security.SecureRandom"
},
{
"path": "src/taoshop-manager/ReadMe.md",
"chars": 14,
"preview": "### 电商平台后台维护系统"
},
{
"path": "src/taoshop-manager/pom.xml",
"chars": 2705,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/"
},
{
"path": "src/taoshop-manager/taoshop-manager-api/pom.xml",
"chars": 1146,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/"
},
{
"path": "src/taoshop-manager/taoshop-manager-api/src/main/java/com/muses/taoshop/manager/entity/ItemOrders.java",
"chars": 258,
"preview": "package com.muses.taoshop.manager.entity;\n\nimport lombok.Data;\n\n/**\n * <pre>\n * 订单实体类\n * </pre>\n *\n * @author nicky\n * "
},
{
"path": "src/taoshop-manager/taoshop-manager-api/src/main/java/com/muses/taoshop/manager/entity/Menu.java",
"chars": 906,
"preview": "package com.muses.taoshop.manager.entity;\n\nimport lombok.Data;\n\nimport java.util.List;\n\n/**\n * <pre>\n * 菜单信息实体类\n * </pr"
},
{
"path": "src/taoshop-manager/taoshop-manager-api/src/main/java/com/muses/taoshop/manager/entity/Operation.java",
"chars": 414,
"preview": "package com.muses.taoshop.manager.entity;\n\nimport lombok.Data;\n\n/**\n * <pre>\n * Operation类\n * </pre>\n *\n * @author nick"
},
{
"path": "src/taoshop-manager/taoshop-manager-api/src/main/java/com/muses/taoshop/manager/entity/Permission.java",
"chars": 470,
"preview": "package com.muses.taoshop.manager.entity;\n\nimport lombok.Data;\n\nimport java.util.HashSet;\nimport java.util.Set;\n\n/**\n * "
},
{
"path": "src/taoshop-manager/taoshop-manager-api/src/main/java/com/muses/taoshop/manager/entity/SysRole.java",
"chars": 549,
"preview": "package com.muses.taoshop.manager.entity;\n\nimport lombok.Data;\n\nimport java.util.HashSet;\nimport java.util.Set;\n\n/**\n * "
},
{
"path": "src/taoshop-manager/taoshop-manager-api/src/main/java/com/muses/taoshop/manager/entity/SysUser.java",
"chars": 1128,
"preview": "package com.muses.taoshop.manager.entity;\n\nimport lombok.Data;\n\nimport java.util.Date;\nimport java.util.Set;\n\n/**\n * <pr"
},
{
"path": "src/taoshop-manager/taoshop-manager-api/src/main/java/com/muses/taoshop/manager/service/IItemOrdersService.java",
"chars": 242,
"preview": "package com.muses.taoshop.manager.service;\n\n/**\n * <pre>\n * 订单管理\n * </pre>\n *\n * @author nicky\n * @version 1.00.00\n * <"
},
{
"path": "src/taoshop-manager/taoshop-manager-api/src/main/java/com/muses/taoshop/manager/service/IMenuService.java",
"chars": 375,
"preview": "package com.muses.taoshop.manager.service;\n\n\nimport com.muses.taoshop.manager.entity.Menu;\n\nimport java.util.List;\n\npubl"
},
{
"path": "src/taoshop-manager/taoshop-manager-api/src/main/java/com/muses/taoshop/manager/service/ISysPermissionService.java",
"chars": 286,
"preview": "package com.muses.taoshop.manager.service;\n\n\nimport com.muses.taoshop.manager.entity.Permission;\n\nimport java.util.List;"
},
{
"path": "src/taoshop-manager/taoshop-manager-api/src/main/java/com/muses/taoshop/manager/service/ISysRoleService.java",
"chars": 427,
"preview": "package com.muses.taoshop.manager.service;\n\nimport com.muses.taoshop.manager.entity.SysRole;\n\nimport java.util.List;\nimp"
},
{
"path": "src/taoshop-manager/taoshop-manager-api/src/main/java/com/muses/taoshop/manager/service/ISysUserService.java",
"chars": 1017,
"preview": "package com.muses.taoshop.manager.service;\n\nimport com.muses.taoshop.manager.entity.SysRole;\nimport com.muses.taoshop.ma"
},
{
"path": "src/taoshop-manager/taoshop-manager-api/src/test/java/com/muses/taoshop/AppTest.java",
"chars": 289,
"preview": "package com.muses.taoshop;\n\nimport static org.junit.Assert.assertTrue;\n\nimport org.junit.Test;\n\n/**\n * Unit test for sim"
},
{
"path": "src/taoshop-manager/taoshop-manager-service/pom.xml",
"chars": 1765,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/"
},
{
"path": "src/taoshop-manager/taoshop-manager-service/src/main/java/com/muses/taoshop/manager/mapper/ItemOrdersMapper.java",
"chars": 240,
"preview": "package com.muses.taoshop.manager.mapper;\n\n/**\n * <pre>\n * 订单管理\n * </pre>\n *\n * @author nicky\n * @version 1.00.00\n * <p"
},
{
"path": "src/taoshop-manager/taoshop-manager-service/src/main/java/com/muses/taoshop/manager/mapper/SysMenuMapper.java",
"chars": 571,
"preview": "package com.muses.taoshop.manager.mapper;\n\nimport com.muses.taoshop.common.core.database.annotation.MybatisRepository;\ni"
},
{
"path": "src/taoshop-manager/taoshop-manager-service/src/main/java/com/muses/taoshop/manager/mapper/SysPermissionMapper.java",
"chars": 309,
"preview": "package com.muses.taoshop.manager.mapper;\n\nimport com.muses.taoshop.common.core.database.annotation.MybatisRepository;\ni"
},
{
"path": "src/taoshop-manager/taoshop-manager-service/src/main/java/com/muses/taoshop/manager/mapper/SysRoleMapper.java",
"chars": 519,
"preview": "package com.muses.taoshop.manager.mapper;\n\nimport com.muses.taoshop.common.core.database.annotation.MybatisRepository;\ni"
},
{
"path": "src/taoshop-manager/taoshop-manager-service/src/main/java/com/muses/taoshop/manager/mapper/SysUserMapper.java",
"chars": 565,
"preview": "package com.muses.taoshop.manager.mapper;\n\nimport com.muses.taoshop.common.core.database.annotation.MybatisRepository;\ni"
},
{
"path": "src/taoshop-manager/taoshop-manager-service/src/main/java/com/muses/taoshop/manager/service/ItemOrdersServiceImpl.java",
"chars": 303,
"preview": "package com.muses.taoshop.manager.service;\n\nimport org.springframework.stereotype.Service;\n\n/**\n * <pre>\n * 订单管理业务接口\n *"
},
{
"path": "src/taoshop-manager/taoshop-manager-service/src/main/java/com/muses/taoshop/manager/service/MenuServiceImpl.java",
"chars": 954,
"preview": "package com.muses.taoshop.manager.service;\n\nimport com.muses.taoshop.manager.entity.Menu;\nimport com.muses.taoshop.manag"
},
{
"path": "src/taoshop-manager/taoshop-manager-service/src/main/java/com/muses/taoshop/manager/service/SysPermissionServiceImpl.java",
"chars": 922,
"preview": "package com.muses.taoshop.manager.service;\n\nimport com.muses.taoshop.manager.entity.Permission;\nimport com.muses.taoshop"
},
{
"path": "src/taoshop-manager/taoshop-manager-service/src/main/java/com/muses/taoshop/manager/service/SysRoleServiceImpl.java",
"chars": 907,
"preview": "package com.muses.taoshop.manager.service;\n\nimport com.muses.taoshop.manager.entity.SysRole;\nimport com.muses.taoshop.ma"
},
{
"path": "src/taoshop-manager/taoshop-manager-service/src/main/java/com/muses/taoshop/manager/service/SysUserServiceImpl.java",
"chars": 2687,
"preview": "package com.muses.taoshop.manager.service;\n\nimport com.muses.taoshop.manager.entity.Operation;\nimport com.muses.taoshop."
},
{
"path": "src/taoshop-manager/taoshop-manager-service/src/main/resources/mybatis/SysMenuMapper.xml",
"chars": 1107,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/"
},
{
"path": "src/taoshop-manager/taoshop-manager-service/src/main/resources/mybatis/SysPermissionMapper.xml",
"chars": 513,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/"
},
{
"path": "src/taoshop-manager/taoshop-manager-service/src/main/resources/mybatis/SysRoleMapper.xml",
"chars": 551,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/"
},
{
"path": "src/taoshop-manager/taoshop-manager-service/src/main/resources/mybatis/SysUserMapper.xml",
"chars": 1820,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/"
},
{
"path": "src/taoshop-manager/taoshop-manager-service/src/test/java/com/muses/taoshop/AppTest.java",
"chars": 289,
"preview": "package com.muses.taoshop;\n\nimport static org.junit.Assert.assertTrue;\n\nimport org.junit.Test;\n\n/**\n * Unit test for sim"
},
{
"path": "src/taoshop-manager/taoshop-manager-web/ReadMe.md",
"chars": 13,
"preview": "### 电商维护系统Web"
},
{
"path": "src/taoshop-manager/taoshop-manager-web/pom.xml",
"chars": 3833,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/"
},
{
"path": "src/taoshop-manager/taoshop-manager-web/src/main/java/com/muses/taoshop/manager/WebApplication.java",
"chars": 1780,
"preview": "package com.muses.taoshop.manager;\n\n\n\nimport org.mybatis.spring.boot.autoconfigure.MybatisAutoConfiguration;\nimport org."
},
{
"path": "src/taoshop-manager/taoshop-manager-web/src/main/java/com/muses/taoshop/manager/config/MybatisConfig.java",
"chars": 5963,
"preview": "package com.muses.taoshop.manager.config;\n\nimport com.muses.taoshop.common.core.database.annotation.MybatisRepository;\ni"
},
{
"path": "src/taoshop-manager/taoshop-manager-web/src/main/java/com/muses/taoshop/manager/config/ShiroConfig.java",
"chars": 3048,
"preview": "package com.muses.taoshop.manager.config;\n\n\nimport com.muses.taoshop.manager.core.shiro.ShiroRealm;\nimport org.apache.sh"
},
{
"path": "src/taoshop-manager/taoshop-manager-web/src/main/java/com/muses/taoshop/manager/config/ThymeleafConfig.java",
"chars": 1622,
"preview": "package com.muses.taoshop.manager.config;\n\nimport org.springframework.beans.BeansException;\nimport org.springframework.c"
},
{
"path": "src/taoshop-manager/taoshop-manager-web/src/main/java/com/muses/taoshop/manager/config/WebConfig.java",
"chars": 990,
"preview": "package com.muses.taoshop.manager.config;\n\nimport org.springframework.context.annotation.Configuration;\nimport org.sprin"
},
{
"path": "src/taoshop-manager/taoshop-manager-web/src/main/java/com/muses/taoshop/manager/core/Constants.java",
"chars": 1256,
"preview": "package com.muses.taoshop.manager.core;\n\nimport java.util.Locale;\n\n/**\n * <pre>\n * Constants类\n * </pre>\n *\n * @author n"
},
{
"path": "src/taoshop-manager/taoshop-manager-web/src/main/java/com/muses/taoshop/manager/core/shiro/ShiroRealm.java",
"chars": 2614,
"preview": "package com.muses.taoshop.manager.core.shiro;\n\nimport com.muses.taoshop.manager.entity.SysUser;\nimport com.muses.taoshop"
},
{
"path": "src/taoshop-manager/taoshop-manager-web/src/main/java/com/muses/taoshop/manager/util/MenuTreeUtil.java",
"chars": 1405,
"preview": "package com.muses.taoshop.manager.util;\n\n\nimport com.muses.taoshop.manager.entity.Menu;\n\nimport java.util.ArrayList;\nimp"
},
{
"path": "src/taoshop-manager/taoshop-manager-web/src/main/java/com/muses/taoshop/manager/web/controller/BaseController.java",
"chars": 1212,
"preview": "package com.muses.taoshop.manager.web.controller;\n\n\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimport org."
},
{
"path": "src/taoshop-manager/taoshop-manager-web/src/main/java/com/muses/taoshop/manager/web/controller/CodeController.java",
"chars": 2774,
"preview": "package com.muses.taoshop.manager.web.controller;\n\nimport com.muses.taoshop.manager.core.Constants;\nimport org.apache.sh"
},
{
"path": "src/taoshop-manager/taoshop-manager-web/src/main/java/com/muses/taoshop/manager/web/controller/LoginController.java",
"chars": 7746,
"preview": "package com.muses.taoshop.manager.web.controller;\n\nimport com.alibaba.fastjson.JSON;\nimport com.alibaba.fastjson.JSONObj"
},
{
"path": "src/taoshop-manager/taoshop-manager-web/src/main/java/com/muses/taoshop/manager/web/controller/item/OrderController.java",
"chars": 859,
"preview": "package com.muses.taoshop.manager.web.controller.item;\n\nimport com.muses.taoshop.manager.web.controller.BaseController;\n"
},
{
"path": "src/taoshop-manager/taoshop-manager-web/src/main/java/com/muses/taoshop/manager/web/controller/menu/MenuController.java",
"chars": 311,
"preview": "package com.muses.taoshop.manager.web.controller.menu;\n\nimport org.springframework.stereotype.Controller;\n\n/**\n * <pre>\n"
},
{
"path": "src/taoshop-manager/taoshop-manager-web/src/main/java/com/muses/taoshop/manager/web/controller/userCenter/UserController.java",
"chars": 871,
"preview": "package com.muses.taoshop.manager.web.controller.userCenter;\n\nimport com.muses.taoshop.manager.web.controller.BaseContro"
},
{
"path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/application.yml",
"chars": 1992,
"preview": "server:\n port: 8082\n#logging:\n# config: classpath:logback.xml\n# level:\n# com.muses.taoshop.*.mapper: trace\n\nspring"
},
{
"path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/datepicker/css/bootstrap-datepicker.css",
"chars": 17177,
"preview": "/*!\n * Datepicker for Bootstrap v1.5.1 (https://github.com/eternicode/bootstrap-datepicker)\n *\n * Copyright 2012 Stefan "
},
{
"path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/datepicker/css/bootstrap.css",
"chars": 35832,
"preview": "/*!\n * Bootstrap v3.3.5 (http://getbootstrap.com)\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://gi"
},
{
"path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/datepicker/js/bootstrap-datepicker.js",
"chars": 53261,
"preview": "/*!\n * Datepicker for Bootstrap v1.5.1 (https://github.com/eternicode/bootstrap-datepicker)\n *\n * Copyright 2012 Stefan "
},
{
"path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/css/select2.css",
"chars": 17483,
"preview": ".select2-container {\n box-sizing: border-box;\n display: inline-block;\n margin: 0;\n position: relative;\n vertical-al"
},
{
"path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/i18n/ar.js",
"chars": 768,
"preview": "/*! Select2 4.0.2 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQue"
},
{
"path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/i18n/az.js",
"chars": 681,
"preview": "/*! Select2 4.0.2 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQue"
},
{
"path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/i18n/bg.js",
"chars": 783,
"preview": "/*! Select2 4.0.2 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQue"
},
{
"path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/i18n/ca.js",
"chars": 865,
"preview": "/*! Select2 4.0.2 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQue"
},
{
"path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/i18n/cs.js",
"chars": 1175,
"preview": "/*! Select2 4.0.2 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQue"
},
{
"path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/i18n/da.js",
"chars": 810,
"preview": "/*! Select2 4.0.2 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQue"
},
{
"path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/i18n/de.js",
"chars": 767,
"preview": "/*! Select2 4.0.2 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQue"
},
{
"path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/i18n/en.js",
"chars": 823,
"preview": "/*! Select2 4.0.2 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQue"
},
{
"path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/i18n/es.js",
"chars": 862,
"preview": "/*! Select2 4.0.2 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQue"
},
{
"path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/i18n/et.js",
"chars": 768,
"preview": "/*! Select2 4.0.2 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQue"
},
{
"path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/i18n/eu.js",
"chars": 840,
"preview": "/*! Select2 4.0.2 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQue"
},
{
"path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/i18n/fa.js",
"chars": 833,
"preview": "/*! Select2 4.0.2 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQue"
},
{
"path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/i18n/fi.js",
"chars": 691,
"preview": "/*! Select2 4.0.2 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQue"
},
{
"path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/i18n/fr.js",
"chars": 810,
"preview": "/*! Select2 4.0.2 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQue"
},
{
"path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/i18n/gl.js",
"chars": 792,
"preview": "/*! Select2 4.0.2 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQue"
},
{
"path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/i18n/he.js",
"chars": 827,
"preview": "/*! Select2 4.0.2 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQue"
},
{
"path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/i18n/hi.js",
"chars": 829,
"preview": "/*! Select2 4.0.2 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQue"
},
{
"path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/i18n/hr.js",
"chars": 833,
"preview": "/*! Select2 4.0.2 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQue"
},
{
"path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/i18n/hu.js",
"chars": 711,
"preview": "/*! Select2 4.0.2 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQue"
},
{
"path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/i18n/id.js",
"chars": 748,
"preview": "/*! Select2 4.0.2 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQue"
},
{
"path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/i18n/is.js",
"chars": 755,
"preview": "/*! Select2 4.0.2 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQue"
},
{
"path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/i18n/it.js",
"chars": 870,
"preview": "/*! Select2 4.0.2 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQue"
},
{
"path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/i18n/ja.js",
"chars": 698,
"preview": "/*! Select2 4.0.2 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQue"
},
{
"path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/i18n/ko.js",
"chars": 718,
"preview": "/*! Select2 4.0.2 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQue"
},
{
"path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/i18n/lt.js",
"chars": 861,
"preview": "/*! Select2 4.0.2 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQue"
},
{
"path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/i18n/lv.js",
"chars": 855,
"preview": "/*! Select2 4.0.2 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQue"
},
{
"path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/i18n/mk.js",
"chars": 837,
"preview": "/*! Select2 4.0.2 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQue"
},
{
"path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/i18n/ms.js",
"chars": 787,
"preview": "/*! Select2 4.0.2 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQue"
},
{
"path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/i18n/nb.js",
"chars": 718,
"preview": "/*! Select2 4.0.2 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQue"
},
{
"path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/i18n/nl.js",
"chars": 890,
"preview": "/*! Select2 4.0.2 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQue"
},
{
"path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/i18n/pl.js",
"chars": 910,
"preview": "/*! Select2 4.0.2 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQue"
},
{
"path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/i18n/pt-BR.js",
"chars": 846,
"preview": "/*! Select2 4.0.2 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQue"
},
{
"path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/i18n/pt.js",
"chars": 853,
"preview": "/*! Select2 4.0.2 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQue"
},
{
"path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/i18n/ro.js",
"chars": 888,
"preview": "/*! Select2 4.0.2 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQue"
},
{
"path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/i18n/ru.js",
"chars": 958,
"preview": "/*! Select2 4.0.2 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQue"
},
{
"path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/i18n/sk.js",
"chars": 1148,
"preview": "/*! Select2 4.0.2 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQue"
},
{
"path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/i18n/sr-Cyrl.js",
"chars": 931,
"preview": "/*! Select2 4.0.2 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQue"
},
{
"path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/i18n/sr.js",
"chars": 928,
"preview": "/*! Select2 4.0.2 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQue"
},
{
"path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/i18n/sv.js",
"chars": 777,
"preview": "/*! Select2 4.0.2 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQue"
},
{
"path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/i18n/th.js",
"chars": 715,
"preview": "/*! Select2 4.0.2 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQue"
},
{
"path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/i18n/tr.js",
"chars": 712,
"preview": "/*! Select2 4.0.2 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQue"
},
{
"path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/i18n/uk.js",
"chars": 933,
"preview": "/*! Select2 4.0.2 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQue"
},
{
"path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/i18n/vi.js",
"chars": 747,
"preview": "/*! Select2 4.0.2 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQue"
},
{
"path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/i18n/zh-CN.js",
"chars": 675,
"preview": "/*! Select2 4.0.2 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQue"
},
{
"path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/i18n/zh-TW.js",
"chars": 632,
"preview": "/*! Select2 4.0.2 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n(function(){if(jQuery&&jQuery.fn&&jQue"
},
{
"path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/select2.full.js",
"chars": 157681,
"preview": "/*!\n * Select2 4.0.2\n * https://select2.github.io\n *\n * Released under the MIT license\n * https://github.com/select2/sel"
},
{
"path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/plugins/select2/js/select2.js",
"chars": 137783,
"preview": "/*!\n * Select2 4.0.2\n * https://select2.github.io\n *\n * Released under the MIT license\n * https://github.com/select2/sel"
},
{
"path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/static/css/backend.css",
"chars": 1707,
"preview": ".s-page{display:none;position:fixed;top:60px;bottom:0;right:0;left:300px;background:#fff;overflow:auto;box-shadow:-2px 0"
},
{
"path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/static/css/page/backend/account_center.css",
"chars": 1627,
"preview": ".basic-info{height:334px;background-color:#fff;padding:0 20px;margin-bottom:20px}.basic-info .info-title{height:60px;lin"
},
{
"path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/static/css/page/backend/login.css",
"chars": 2888,
"preview": ".logo {\n height:74px;\n line-height:74px\n}\n.logo h1 {\n float:left\n}\n.logo h1 a {\n display:block;\n height:7"
},
{
"path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/static/css/page/backend/order_manage.css",
"chars": 379,
"preview": ".ip-manage{padding:25px}.ip-manage .search-box .form-kv{float:left;margin-bottom:5px;padding-left:120px;margin-top:0;wid"
},
{
"path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/static/css/style.css",
"chars": 25551,
"preview": "html{color:#333;background:#fff;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;text-rendering:optimizelegibili"
},
{
"path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/static/js/common.js",
"chars": 722,
"preview": "window['layer'] && layer.config({\n extend: ['skin/osa/style.css'], //加载新皮肤\n skin: 'layer-ext-osa' //一旦设定,所有弹层风格都采用"
},
{
"path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/static/js/jquery.cookie.js",
"chars": 3128,
"preview": "/*!\n * jQuery Cookie Plugin v1.4.1\n * https://github.com/carhartl/jquery-cookie\n *\n * Copyright 2006, 2014 Klaus Hartl\n "
},
{
"path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/static/js/jquery.js",
"chars": 252978,
"preview": "/*!\n * jQuery JavaScript Library v1.7.2\n * http://jquery.com/\n *\n * Copyright 2011, John Resig\n * Dual licensed under th"
},
{
"path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/static/js/jquery.pagination.js",
"chars": 6269,
"preview": "jQuery.fn.pagination = function(maxentries, opts) {\n\topts = jQuery.extend({\n\t\t\t\titems_per_page : 10, // 每页显示多少条记录\n\t\t\t\tcu"
},
{
"path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/static/js/jquery.tips.js",
"chars": 4248,
"preview": "/**\n* jquery tips 提示插件 jquery.tips.js v0.1beta\n*\n* 使用方法\n* $(selector).tips({ //selector 为jquery选择器\n* msg:'your messag"
},
{
"path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/templates/admin/frame/common.html",
"chars": 736,
"preview": "<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\"\n xmlns:th=\"http://www.thymeleaf.org\">\n<head th:fragment="
},
{
"path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/templates/admin/frame/index.html",
"chars": 587,
"preview": "<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\"\n xmlns:th=\"http://www.thymeleaf.org\">\n<!-- 引入公共页面的一些样式和脚"
},
{
"path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/templates/admin/frame/nav.html",
"chars": 2623,
"preview": "<div id=\"hd\" xmlns:th=\"http://www.w3.org/1999/xhtml\">\n\n <div class=\"header-nav\">\n <div class=\"navigation-inner"
},
{
"path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/templates/admin/frame/sider_bar_bk.html",
"chars": 798,
"preview": "<div class=\"sider-bar-bk\" xmlns:th=\"http://www.thymeleaf.org\">\n <div class=\"sider-bar-hd\">\n <i class=\"iconfont"
},
{
"path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/templates/admin/order/order_content_wrap.html",
"chars": 5952,
"preview": "<div class=\"bd-content-wrap\">\n <div class=\"bd-content\">\n <div class=\"title-left-line\">订单管理</div>\n\n <div"
},
{
"path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/templates/admin/order/order_list.html",
"chars": 1579,
"preview": "<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\"\n xmlns:th=\"http://www.thymeleaf.org\">\n<!-- 引入公共页面的一些样式和脚"
},
{
"path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/templates/admin/user/user_center.html",
"chars": 1250,
"preview": "<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\"\n xmlns:th=\"http://www.thymeleaf.org\">\n<!-- 引入公共页面的一些样式和脚"
},
{
"path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/templates/admin/user/user_content_wrap.html",
"chars": 4114,
"preview": "<div class=\"bd-content-wrap\" xmlns:th=\"http://www.w3.org/1999/xhtml\">\n <div class=\"bd-content\">\n\n <div class=\""
},
{
"path": "src/taoshop-manager/taoshop-manager-web/src/main/resources/templates/login.html",
"chars": 6310,
"preview": "<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\"\n xmlns:th=\"http://www.thymeleaf.org\">\n<head>\n <meta c"
},
{
"path": "src/taoshop-manager/taoshop-manager-web/src/main/webapp/WEB-INF/web.xml",
"chars": 215,
"preview": "<!DOCTYPE web-app PUBLIC\n \"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN\"\n \"http://java.sun.com/dtd/web-app_2_3"
},
{
"path": "src/taoshop-manager/taoshop-manager-web/src/main/webapp/index.jsp",
"chars": 52,
"preview": "<html>\n<body>\n<h2>Hello World!</h2>\n</body>\n</html>\n"
},
{
"path": "src/taoshop-order/ReadMe.md",
"chars": 8,
"preview": "### 订单系统"
},
{
"path": "src/taoshop-order/pom.xml",
"chars": 2641,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/"
},
{
"path": "src/taoshop-order/src/main/java/com/muses/taoshop/order/OrderApplication.java",
"chars": 1427,
"preview": "package com.muses.taoshop.order;\n\nimport org.mybatis.spring.boot.autoconfigure.MybatisAutoConfiguration;\nimport org.spri"
},
{
"path": "src/taoshop-order/src/main/java/com/muses/taoshop/order/web/controller/BaseController.java",
"chars": 1211,
"preview": "package com.muses.taoshop.order.web.controller;\n\n\n\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimport org.s"
},
{
"path": "src/taoshop-order/src/main/java/com/muses/taoshop/order/web/controller/OrderController.java",
"chars": 306,
"preview": "package com.muses.taoshop.order.web.controller;\n\nimport org.springframework.stereotype.Controller;\n\n/**\n * <pre>\n * 订单控"
},
{
"path": "src/taoshop-order/src/main/resources/application.yml",
"chars": 2010,
"preview": "server:\n port: 8082\n#logging:\n# config: classpath:logback_spring.xml\n# level:\n# com.muses.taoshop: debug\n# path: "
},
{
"path": "src/taoshop-order/src/main/webapp/WEB-INF/web.xml",
"chars": 215,
"preview": "<!DOCTYPE web-app PUBLIC\n \"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN\"\n \"http://java.sun.com/dtd/web-app_2_3"
},
{
"path": "src/taoshop-order/src/main/webapp/index.jsp",
"chars": 52,
"preview": "<html>\n<body>\n<h2>Hello World!</h2>\n</body>\n</html>\n"
},
{
"path": "src/taoshop-portal/ReadMe.md",
"chars": 68,
"preview": "### 门户网站\n电商系统门户网站\n\n电商门户网站,正在开发中...\n\n技术栈:前端拟采用Themeleaf,后台SpringBoot\n"
},
{
"path": "src/taoshop-portal/pom.xml",
"chars": 4359,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/"
},
{
"path": "src/taoshop-portal/src/main/java/com/muses/taoshop/PortalApplication.java",
"chars": 1829,
"preview": "package com.muses.taoshop;\n\n\n\nimport org.mybatis.spring.boot.autoconfigure.MybatisAutoConfiguration;\nimport org.springfr"
},
{
"path": "src/taoshop-portal/src/main/java/com/muses/taoshop/aop/OperationRecordLog.java",
"chars": 1798,
"preview": "//package com.muses.taoshop.aop;\n//\n//import org.aspectj.lang.ProceedingJoinPoint;\n//import org.aspectj.lang.annotation."
},
{
"path": "src/taoshop-portal/src/main/java/com/muses/taoshop/base/ConfigConsts.java",
"chars": 225,
"preview": "package com.muses.taoshop.base;\n\n/**\n * <pre>\n * 配置相关常量类\n * </pre>\n *\n * @author nicky\n * @version 1.00.00\n * <pre>\n * "
},
{
"path": "src/taoshop-portal/src/main/java/com/muses/taoshop/base/SessionConsts.java",
"chars": 436,
"preview": "package com.muses.taoshop.base;\n\n/**\n * <pre>\n * 会话常量类\n * </pre>\n *\n * @author nicky\n * @version 1.00.00\n * <pre>\n * 修改"
},
{
"path": "src/taoshop-portal/src/main/java/com/muses/taoshop/base/ViewNameConsts.java",
"chars": 242,
"preview": "package com.muses.taoshop.base;\n\n/**\n * <pre>\n * ModeAndView的viewName配置\n * </pre>\n *\n * @author nicky\n * @version 1.00."
},
{
"path": "src/taoshop-portal/src/main/java/com/muses/taoshop/config/WebConfig.java",
"chars": 1149,
"preview": "package com.muses.taoshop.config;\n\n\nimport org.mybatis.spring.annotation.MapperScan;\nimport org.springframework.context."
},
{
"path": "src/taoshop-portal/src/main/java/com/muses/taoshop/util/CategoryTreeUtils.java",
"chars": 1610,
"preview": "package com.muses.taoshop.util;\n\nimport com.muses.taoshop.item.entity.ItemCategory;\n\nimport javax.mail.FetchProfile;\nimp"
},
{
"path": "src/taoshop-portal/src/main/java/com/muses/taoshop/web/controller/BaseController.java",
"chars": 1416,
"preview": "package com.muses.taoshop.web.controller;\n\n\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimport org.springfr"
},
{
"path": "src/taoshop-portal/src/main/java/com/muses/taoshop/web/controller/CodeController.java",
"chars": 2809,
"preview": "package com.muses.taoshop.web.controller;\n\n\nimport org.springframework.stereotype.Controller;\nimport org.springframework"
},
{
"path": "src/taoshop-portal/src/main/java/com/muses/taoshop/web/controller/LoginController.java",
"chars": 2389,
"preview": "package com.muses.taoshop.web.controller;\n\nimport com.muses.taoshop.user.entity.User;\nimport com.muses.taoshop.user.serv"
},
{
"path": "src/taoshop-portal/src/main/java/com/muses/taoshop/web/controller/cart/ShopCartController.java",
"chars": 859,
"preview": "package com.muses.taoshop.web.controller.cart;\n\nimport com.muses.taoshop.web.controller.BaseController;\nimport org.sprin"
},
{
"path": "src/taoshop-portal/src/main/java/com/muses/taoshop/web/controller/portal/IndexController.java",
"chars": 2855,
"preview": "package com.muses.taoshop.web.controller.portal;\n\nimport com.alibaba.fastjson.JSON;\nimport com.muses.taoshop.item.entity"
},
{
"path": "src/taoshop-portal/src/main/java/com/muses/taoshop/web/controller/portal/ItemCategoryController.java",
"chars": 1393,
"preview": "package com.muses.taoshop.web.controller.portal;\n\nimport com.muses.taoshop.item.entity.ItemList;\nimport com.muses.taosho"
},
{
"path": "src/taoshop-portal/src/main/java/com/muses/taoshop/web/controller/portal/ItemDetailController.java",
"chars": 1810,
"preview": "package com.muses.taoshop.web.controller.portal;\n\nimport com.muses.taoshop.item.entity.ItemDetail;\nimport com.muses.taos"
},
{
"path": "src/taoshop-portal/src/main/java/com/muses/taoshop/web/controller/user/UserController.java",
"chars": 834,
"preview": "package com.muses.taoshop.web.controller.user;\n\nimport com.muses.taoshop.web.controller.BaseController;\nimport org.sprin"
},
{
"path": "src/taoshop-portal/src/main/resources/application-dev.properties",
"chars": 378,
"preview": "##Դ\n#spring.datasource.shop.url=jdbc:mysql://localhost:3306/taoshop\n#spring.datasource.shop.username=root\n#spring.dataso"
},
{
"path": "src/taoshop-portal/src/main/resources/application-prod.properties",
"chars": 300,
"preview": "##Դ\n#spring.datasource.url=jdbc:mysql://localhost:3306/taoshop\n#spring.datasource.username=root\n#spring.datasource.passw"
},
{
"path": "src/taoshop-portal/src/main/resources/application-uat.properties",
"chars": 300,
"preview": "##Դ\n#spring.datasource.url=jdbc:mysql://localhost:3306/taoshop\n#spring.datasource.username=root\n#spring.datasource.passw"
},
{
"path": "src/taoshop-portal/src/main/resources/application.properties",
"chars": 1284,
"preview": "##server\n#server.port=8081\n#\n##logging\n##logging.config=classpath:logback-spring.xml\n##logging.level.com.muses.taoshop.*"
},
{
"path": "src/taoshop-portal/src/main/resources/application.yml",
"chars": 2014,
"preview": "server:\n port: 8081\n#logging:\n# config: classpath:logback_spring.xml.bat\n# level:\n# com.muses.taoshop: debug\n# pa"
}
]
// ... and 142 more files (download for full content)
About this extraction
This page contains the full source code of the u014427391/taoshop GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 342 files (2.2 MB), approximately 590.8k tokens, and a symbol index with 784 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.