├── .gitattributes
├── .gitignore
├── LICENSE
├── README.md
├── copy_packages.sh
├── doc
├── 123214.json
├── Guns 技术文档 v1.0.pdf
├── Hystrix文档.txt
├── Zipkin文档.txt
├── db
│ ├── guns.sql
│ ├── guns_rest.sql
│ └── guns_rest2.sql
├── 影片模块-建表语句.txt
├── 影片模块-影片演员映射表.txt
├── 影片模块-接口文档.docx
├── 影院模块-建表语句.txt
├── 影院模块-接口分析.txt
├── 影院模块-接口分析2.txt
├── 影院模块-接口文档.docx
├── 支付模块-接口文档.docx
├── 支付模块-支付宝依赖包.txt
├── 用户模块-建表语句.txt
├── 用户模块-接口文档.docx
├── 订单模块-seats_123214.json
├── 订单模块-建表语句.txt
└── 订单模块-接口文档.docx
├── guns-admin
├── pom.xml
└── src
│ ├── main
│ ├── java
│ │ └── com
│ │ │ └── stylefeng
│ │ │ └── guns
│ │ │ ├── GunsApplication.java
│ │ │ ├── GunsServletInitializer.java
│ │ │ ├── config
│ │ │ ├── EhCacheConfig.java
│ │ │ ├── SpringSessionConfig.java
│ │ │ ├── SwaggerConfig.java
│ │ │ ├── properties
│ │ │ │ ├── BeetlProperties.java
│ │ │ │ └── GunsProperties.java
│ │ │ └── web
│ │ │ │ ├── BeetlConfig.java
│ │ │ │ ├── ShiroConfig.java
│ │ │ │ └── WebConfig.java
│ │ │ ├── core
│ │ │ ├── aop
│ │ │ │ ├── GlobalExceptionHandler.java
│ │ │ │ ├── LogAop.java
│ │ │ │ └── PermissionAop.java
│ │ │ ├── beetl
│ │ │ │ ├── BeetlConfiguration.java
│ │ │ │ └── ShiroExt.java
│ │ │ ├── common
│ │ │ │ ├── annotion
│ │ │ │ │ ├── BussinessLog.java
│ │ │ │ │ └── Permission.java
│ │ │ │ ├── constant
│ │ │ │ │ ├── Const.java
│ │ │ │ │ ├── DatasourceEnum.java
│ │ │ │ │ ├── cache
│ │ │ │ │ │ ├── Cache.java
│ │ │ │ │ │ └── CacheKey.java
│ │ │ │ │ ├── dictmap
│ │ │ │ │ │ ├── DeleteDict.java
│ │ │ │ │ │ ├── DeptDict.java
│ │ │ │ │ │ ├── DictMap.java
│ │ │ │ │ │ ├── LogDict.java
│ │ │ │ │ │ ├── MenuDict.java
│ │ │ │ │ │ ├── NoticeMap.java
│ │ │ │ │ │ ├── RoleDict.java
│ │ │ │ │ │ ├── UserDict.java
│ │ │ │ │ │ ├── base
│ │ │ │ │ │ │ ├── AbstractDictMap.java
│ │ │ │ │ │ │ └── SystemDict.java
│ │ │ │ │ │ └── factory
│ │ │ │ │ │ │ └── DictFieldWarpperFactory.java
│ │ │ │ │ ├── factory
│ │ │ │ │ │ ├── ConstantFactory.java
│ │ │ │ │ │ ├── IConstantFactory.java
│ │ │ │ │ │ ├── MutiStrFactory.java
│ │ │ │ │ │ └── PageFactory.java
│ │ │ │ │ └── state
│ │ │ │ │ │ ├── BizLogType.java
│ │ │ │ │ │ ├── ExpenseState.java
│ │ │ │ │ │ ├── LogSucceed.java
│ │ │ │ │ │ ├── LogType.java
│ │ │ │ │ │ ├── ManagerStatus.java
│ │ │ │ │ │ ├── MenuOpenStatus.java
│ │ │ │ │ │ ├── MenuStatus.java
│ │ │ │ │ │ └── Order.java
│ │ │ │ └── exception
│ │ │ │ │ ├── BizExceptionEnum.java
│ │ │ │ │ └── InvalidKaptchaException.java
│ │ │ ├── intercept
│ │ │ │ ├── GunsUserFilter.java
│ │ │ │ └── SessionHolderInterceptor.java
│ │ │ ├── listener
│ │ │ │ └── ConfigListener.java
│ │ │ ├── log
│ │ │ │ ├── LogManager.java
│ │ │ │ ├── LogObjectHolder.java
│ │ │ │ └── factory
│ │ │ │ │ ├── LogFactory.java
│ │ │ │ │ └── LogTaskFactory.java
│ │ │ ├── shiro
│ │ │ │ ├── ShiroDbRealm.java
│ │ │ │ ├── ShiroKit.java
│ │ │ │ ├── ShiroUser.java
│ │ │ │ ├── check
│ │ │ │ │ ├── ICheck.java
│ │ │ │ │ ├── PermissionCheckFactory.java
│ │ │ │ │ └── PermissionCheckManager.java
│ │ │ │ └── factory
│ │ │ │ │ ├── IShiro.java
│ │ │ │ │ └── ShiroFactroy.java
│ │ │ ├── tag
│ │ │ │ └── DictSelectorTag.java
│ │ │ └── util
│ │ │ │ ├── ApiMenuFilter.java
│ │ │ │ ├── Contrast.java
│ │ │ │ └── KaptchaUtil.java
│ │ │ └── modular
│ │ │ ├── code
│ │ │ ├── controller
│ │ │ │ └── CodeController.java
│ │ │ ├── factory
│ │ │ │ └── DefaultTemplateFactory.java
│ │ │ └── service
│ │ │ │ └── TableService.java
│ │ │ └── system
│ │ │ ├── controller
│ │ │ ├── BlackboardController.java
│ │ │ ├── DeptController.java
│ │ │ ├── DictController.java
│ │ │ ├── KaptchaController.java
│ │ │ ├── LogController.java
│ │ │ ├── LoginController.java
│ │ │ ├── LoginLogController.java
│ │ │ ├── MenuController.java
│ │ │ ├── NoticeController.java
│ │ │ ├── RoleController.java
│ │ │ └── UserMgrController.java
│ │ │ ├── dao
│ │ │ ├── DeptMapper.java
│ │ │ ├── DictMapper.java
│ │ │ ├── ExpenseMapper.java
│ │ │ ├── LoginLogMapper.java
│ │ │ ├── MenuMapper.java
│ │ │ ├── NoticeMapper.java
│ │ │ ├── OperationLogMapper.java
│ │ │ ├── RelationMapper.java
│ │ │ ├── RoleMapper.java
│ │ │ ├── UserMapper.java
│ │ │ └── mapping
│ │ │ │ ├── DeptMapper.xml
│ │ │ │ ├── DictMapper.xml
│ │ │ │ ├── ExpenseMapper.xml
│ │ │ │ ├── LoginLogMapper.xml
│ │ │ │ ├── MenuMapper.xml
│ │ │ │ ├── NoticeMapper.xml
│ │ │ │ ├── OperationLogMapper.xml
│ │ │ │ ├── RelationMapper.xml
│ │ │ │ ├── RoleMapper.xml
│ │ │ │ └── UserMapper.xml
│ │ │ ├── factory
│ │ │ └── UserFactory.java
│ │ │ ├── model
│ │ │ ├── Dept.java
│ │ │ ├── Dict.java
│ │ │ ├── Expense.java
│ │ │ ├── LoginLog.java
│ │ │ ├── Menu.java
│ │ │ ├── Notice.java
│ │ │ ├── OperationLog.java
│ │ │ ├── Relation.java
│ │ │ ├── Role.java
│ │ │ └── User.java
│ │ │ ├── service
│ │ │ ├── IDeptService.java
│ │ │ ├── IDictService.java
│ │ │ ├── ILoginLogService.java
│ │ │ ├── IMenuService.java
│ │ │ ├── INoticeService.java
│ │ │ ├── IOperationLogService.java
│ │ │ ├── IRelationService.java
│ │ │ ├── IRoleService.java
│ │ │ ├── IUserService.java
│ │ │ └── impl
│ │ │ │ ├── DeptServiceImpl.java
│ │ │ │ ├── DictServiceImpl.java
│ │ │ │ ├── LoginLogServiceImpl.java
│ │ │ │ ├── MenuServiceImpl.java
│ │ │ │ ├── NoticeServiceImpl.java
│ │ │ │ ├── OperationLogServiceImpl.java
│ │ │ │ ├── RelationServiceImpl.java
│ │ │ │ ├── RoleServiceImpl.java
│ │ │ │ └── UserServiceImpl.java
│ │ │ ├── transfer
│ │ │ ├── ManagerUser.java
│ │ │ ├── ReqAddManager.java
│ │ │ ├── ReqEditManager.java
│ │ │ └── UserDto.java
│ │ │ └── warpper
│ │ │ ├── DeptWarpper.java
│ │ │ ├── DictWarpper.java
│ │ │ ├── LogWarpper.java
│ │ │ ├── MenuWarpper.java
│ │ │ ├── NoticeWrapper.java
│ │ │ ├── RoleWarpper.java
│ │ │ └── UserWarpper.java
│ ├── resources
│ │ ├── META-INF
│ │ │ └── spring-devtools.properties
│ │ ├── application.yml
│ │ ├── ehcache.xml
│ │ └── logback-spring.xml
│ └── webapp
│ │ ├── WEB-INF
│ │ └── view
│ │ │ ├── 404.html
│ │ │ ├── blackboard.html
│ │ │ ├── code
│ │ │ └── code.html
│ │ │ ├── common
│ │ │ ├── _container.html
│ │ │ ├── _right.html
│ │ │ ├── _tab.html
│ │ │ ├── _theme.html
│ │ │ └── tags
│ │ │ │ ├── NameCon.tag
│ │ │ │ ├── SelectCon.tag
│ │ │ │ ├── TimeCon.tag
│ │ │ │ ├── avatar.tag
│ │ │ │ ├── button.tag
│ │ │ │ ├── input.tag
│ │ │ │ ├── select.tag
│ │ │ │ ├── table.tag
│ │ │ │ └── tag_tips
│ │ │ ├── index.html
│ │ │ ├── login.html
│ │ │ └── system
│ │ │ ├── code
│ │ │ └── code.html
│ │ │ ├── dept
│ │ │ ├── dept.html
│ │ │ ├── dept_add.html
│ │ │ └── dept_edit.html
│ │ │ ├── dict
│ │ │ ├── dict.html
│ │ │ ├── dict_add.html
│ │ │ └── dict_edit.html
│ │ │ ├── log
│ │ │ ├── log.html
│ │ │ └── login_log.html
│ │ │ ├── menu
│ │ │ ├── menu.html
│ │ │ ├── menu_add.html
│ │ │ └── menu_edit.html
│ │ │ ├── notice
│ │ │ ├── notice.html
│ │ │ ├── notice_add.html
│ │ │ └── notice_edit.html
│ │ │ ├── role
│ │ │ ├── role.html
│ │ │ ├── role_add.html
│ │ │ ├── role_assign.html
│ │ │ └── role_edit.html
│ │ │ └── user
│ │ │ ├── user.html
│ │ │ ├── user_add.html
│ │ │ ├── user_chpwd.html
│ │ │ ├── user_edit.html
│ │ │ ├── user_roleassign.html
│ │ │ └── user_view.html
│ │ └── static
│ │ ├── css
│ │ ├── _fstyle.css
│ │ ├── bootstrap-rtl.css
│ │ ├── bootstrap.min.css
│ │ ├── font-awesome.css
│ │ ├── font-awesome.min.css
│ │ ├── login.css
│ │ ├── patterns
│ │ │ ├── header-profile-skin-1.png
│ │ │ ├── header-profile-skin-3.png
│ │ │ ├── header-profile.png
│ │ │ └── shattered.png
│ │ ├── plugins
│ │ │ ├── bootstrap-table
│ │ │ │ └── bootstrap-table.min.css
│ │ │ ├── bootstrap-treetable
│ │ │ │ └── bootstrap-treetable.css
│ │ │ ├── chosen
│ │ │ │ ├── chosen-sprite.png
│ │ │ │ ├── chosen-sprite@2x.png
│ │ │ │ └── chosen.css
│ │ │ ├── iCheck
│ │ │ │ ├── custom.css
│ │ │ │ ├── green.png
│ │ │ │ └── green@2x.png
│ │ │ ├── images
│ │ │ │ └── sprite-skin-flat.png
│ │ │ ├── validate
│ │ │ │ └── bootstrapValidator.min.css
│ │ │ ├── webuploader
│ │ │ │ └── webuploader.css
│ │ │ └── ztree
│ │ │ │ ├── demo.css
│ │ │ │ ├── img
│ │ │ │ ├── diy
│ │ │ │ │ ├── 1_close.png
│ │ │ │ │ ├── 1_open.png
│ │ │ │ │ ├── 2.png
│ │ │ │ │ ├── 3.png
│ │ │ │ │ ├── 4.png
│ │ │ │ │ ├── 5.png
│ │ │ │ │ ├── 6.png
│ │ │ │ │ ├── 7.png
│ │ │ │ │ ├── 8.png
│ │ │ │ │ └── 9.png
│ │ │ │ ├── line_conn.gif
│ │ │ │ ├── loading.gif
│ │ │ │ ├── zTreeStandard.gif
│ │ │ │ └── zTreeStandard.png
│ │ │ │ └── zTreeStyle.css
│ │ └── style.css
│ │ ├── favicon.ico
│ │ ├── fonts
│ │ ├── FontAwesome.otf
│ │ ├── fontawesome-webfont.eot
│ │ ├── fontawesome-webfont.svg
│ │ ├── fontawesome-webfont.ttf
│ │ ├── fontawesome-webfont.woff
│ │ ├── fontawesome-webfont.woff2
│ │ ├── glyphicons-halflings-regular.eot
│ │ ├── glyphicons-halflings-regular.svg
│ │ ├── glyphicons-halflings-regular.ttf
│ │ ├── glyphicons-halflings-regular.woff
│ │ └── glyphicons-halflings-regular.woff2
│ │ ├── img
│ │ ├── bg.png
│ │ ├── boy.gif
│ │ ├── girl.gif
│ │ ├── icons.png
│ │ ├── loading-upload.gif
│ │ ├── locked.png
│ │ └── user.png
│ │ ├── js
│ │ ├── bootstrap.min.js
│ │ ├── common
│ │ │ ├── DateUtils.js
│ │ │ ├── Feng.js
│ │ │ ├── ajax-object.js
│ │ │ ├── bootstrap-table-object.js
│ │ │ ├── select-list-object.js
│ │ │ ├── tree-table-object.js
│ │ │ ├── web-upload-object.js
│ │ │ └── ztree-object.js
│ │ ├── contabs.js
│ │ ├── content.js
│ │ ├── hplus.js
│ │ ├── jquery.min.js
│ │ ├── jquery.min.map
│ │ └── plugins
│ │ │ ├── bootstrap-table
│ │ │ ├── bootstrap-table-mobile.min.js
│ │ │ ├── bootstrap-table.min.js
│ │ │ └── locale
│ │ │ │ ├── bootstrap-table-zh-CN.js
│ │ │ │ └── bootstrap-table-zh-CN.min.js
│ │ │ ├── bootstrap-treetable
│ │ │ └── bootstrap-treetable.js
│ │ │ ├── chosen
│ │ │ └── chosen.jquery.js
│ │ │ ├── iCheck
│ │ │ └── icheck.min.js
│ │ │ ├── laydate
│ │ │ ├── laydate.js
│ │ │ └── theme
│ │ │ │ └── default
│ │ │ │ ├── font
│ │ │ │ ├── iconfont.eot
│ │ │ │ ├── iconfont.svg
│ │ │ │ ├── iconfont.ttf
│ │ │ │ └── iconfont.woff
│ │ │ │ └── laydate.css
│ │ │ ├── layer
│ │ │ ├── layer.js
│ │ │ ├── mobile
│ │ │ │ ├── layer.js
│ │ │ │ └── need
│ │ │ │ │ └── layer.css
│ │ │ └── theme
│ │ │ │ └── default
│ │ │ │ ├── icon-ext.png
│ │ │ │ ├── icon.png
│ │ │ │ ├── layer.css
│ │ │ │ ├── loading-0.gif
│ │ │ │ ├── loading-1.gif
│ │ │ │ └── loading-2.gif
│ │ │ ├── metisMenu
│ │ │ └── jquery.metisMenu.js
│ │ │ ├── pace
│ │ │ └── pace.min.js
│ │ │ ├── slimscroll
│ │ │ └── jquery.slimscroll.min.js
│ │ │ ├── validate
│ │ │ ├── additional-methods.min.js
│ │ │ ├── bootstrapValidator.min.js
│ │ │ └── zh_CN.js
│ │ │ ├── wangEditor
│ │ │ └── wangEditor.js
│ │ │ ├── webuploader
│ │ │ ├── Uploader.swf
│ │ │ ├── webuploader.css
│ │ │ ├── webuploader.custom.js
│ │ │ ├── webuploader.custom.min.js
│ │ │ ├── webuploader.fis.js
│ │ │ ├── webuploader.flashonly.js
│ │ │ ├── webuploader.flashonly.min.js
│ │ │ ├── webuploader.html5only.js
│ │ │ ├── webuploader.html5only.min.js
│ │ │ ├── webuploader.js
│ │ │ ├── webuploader.min.js
│ │ │ ├── webuploader.noimage.js
│ │ │ ├── webuploader.noimage.min.js
│ │ │ ├── webuploader.nolog.js
│ │ │ ├── webuploader.nolog.min.js
│ │ │ ├── webuploader.withoutimage.js
│ │ │ └── webuploader.withoutimage.min.js
│ │ │ └── ztree
│ │ │ └── jquery.ztree.all.min.js
│ │ └── modular
│ │ ├── code
│ │ └── gen.js
│ │ ├── flowable
│ │ ├── expense
│ │ │ ├── expense.js
│ │ │ └── expense_info.js
│ │ └── process
│ │ │ ├── process.js
│ │ │ └── process_info.js
│ │ └── system
│ │ ├── code
│ │ └── code.js
│ │ ├── dept
│ │ ├── dept.js
│ │ └── dept_info.js
│ │ ├── dict
│ │ ├── dict.js
│ │ └── dict_info.js
│ │ ├── log
│ │ ├── log.js
│ │ └── login_log.js
│ │ ├── menu
│ │ ├── menu.js
│ │ └── menu_info.js
│ │ ├── notice
│ │ ├── notice.js
│ │ └── notice_info.js
│ │ ├── role
│ │ ├── role.js
│ │ └── role_info.js
│ │ └── user
│ │ ├── user.js
│ │ └── user_info.js
│ └── test
│ └── java
│ └── com
│ └── stylefeng
│ └── guns
│ ├── CommonTest.java
│ ├── base
│ └── BaseJunit.java
│ ├── shiro
│ └── Base64Test.java
│ └── system
│ ├── BlackBoardTest.java
│ ├── DeptTest.java
│ ├── DictTest.java
│ ├── MenuTest.java
│ └── UserTest.java
├── guns-alipay
├── pom.xml
└── src
│ ├── main
│ ├── java
│ │ └── com
│ │ │ └── stylefeng
│ │ │ └── guns
│ │ │ └── rest
│ │ │ ├── AlipayApplication.java
│ │ │ ├── GunsRestServletInitializer.java
│ │ │ ├── common
│ │ │ ├── SimpleObject.java
│ │ │ ├── aop
│ │ │ │ └── GlobalExceptionHandler.java
│ │ │ ├── exception
│ │ │ │ └── BizExceptionEnum.java
│ │ │ └── util
│ │ │ │ └── FtpUtil.java
│ │ │ ├── config
│ │ │ ├── MessageConverConfig.java
│ │ │ ├── MybatisPlusConfig.java
│ │ │ ├── TraceConfig.java
│ │ │ ├── WebConfig.java
│ │ │ └── properties
│ │ │ │ ├── JwtProperties.java
│ │ │ │ └── RestProperties.java
│ │ │ └── modular
│ │ │ ├── alipay
│ │ │ ├── config
│ │ │ │ ├── Configs.java
│ │ │ │ └── Constants.java
│ │ │ ├── model
│ │ │ │ ├── ExtendParams.java
│ │ │ │ ├── GoodsDetail.java
│ │ │ │ ├── TradeStatus.java
│ │ │ │ ├── builder
│ │ │ │ │ ├── AlipayHeartbeatSynRequestBuilder.java
│ │ │ │ │ ├── AlipayTradeCancelRequestBuilder.java
│ │ │ │ │ ├── AlipayTradePayRequestBuilder.java
│ │ │ │ │ ├── AlipayTradePrecreateRequestBuilder.java
│ │ │ │ │ ├── AlipayTradeQueryRequestBuilder.java
│ │ │ │ │ ├── AlipayTradeRefundRequestBuilder.java
│ │ │ │ │ └── RequestBuilder.java
│ │ │ │ ├── hb
│ │ │ │ │ ├── EquipStatus.java
│ │ │ │ │ ├── EquipStatusAdapter.java
│ │ │ │ │ ├── ExceptionInfo.java
│ │ │ │ │ ├── ExceptionInfoAdapter.java
│ │ │ │ │ ├── HbStatus.java
│ │ │ │ │ ├── PosTradeInfo.java
│ │ │ │ │ ├── Product.java
│ │ │ │ │ ├── SysTradeInfo.java
│ │ │ │ │ ├── TradeInfo.java
│ │ │ │ │ ├── TradeInfoAdapter.java
│ │ │ │ │ └── Type.java
│ │ │ │ └── result
│ │ │ │ │ ├── AlipayF2FPayResult.java
│ │ │ │ │ ├── AlipayF2FPrecreateResult.java
│ │ │ │ │ ├── AlipayF2FQueryResult.java
│ │ │ │ │ ├── AlipayF2FRefundResult.java
│ │ │ │ │ └── Result.java
│ │ │ ├── service
│ │ │ │ ├── AlipayMonitorService.java
│ │ │ │ ├── AlipayTradeService.java
│ │ │ │ └── impl
│ │ │ │ │ ├── AbsAlipayService.java
│ │ │ │ │ ├── AbsAlipayTradeService.java
│ │ │ │ │ ├── AlipayMonitorServiceImpl.java
│ │ │ │ │ ├── AlipayTradeServiceImpl.java
│ │ │ │ │ ├── AlipayTradeWithHBServiceImpl.java
│ │ │ │ │ └── hb
│ │ │ │ │ ├── AbsHbRunner.java
│ │ │ │ │ ├── HbListener.java
│ │ │ │ │ ├── HbQueue.java
│ │ │ │ │ └── TradeListener.java
│ │ │ └── utils
│ │ │ │ ├── GsonFactory.java
│ │ │ │ ├── Utils.java
│ │ │ │ └── ZxingUtils.java
│ │ │ ├── auth
│ │ │ ├── controller
│ │ │ │ ├── AuthController.java
│ │ │ │ └── dto
│ │ │ │ │ ├── AuthRequest.java
│ │ │ │ │ └── AuthResponse.java
│ │ │ ├── converter
│ │ │ │ ├── BaseTransferEntity.java
│ │ │ │ └── WithSignMessageConverter.java
│ │ │ ├── filter
│ │ │ │ └── AuthFilter.java
│ │ │ ├── security
│ │ │ │ ├── DataSecurityAction.java
│ │ │ │ └── impl
│ │ │ │ │ └── Base64SecurityAction.java
│ │ │ ├── util
│ │ │ │ └── JwtTokenUtil.java
│ │ │ └── validator
│ │ │ │ ├── IReqValidator.java
│ │ │ │ ├── dto
│ │ │ │ └── Credence.java
│ │ │ │ └── impl
│ │ │ │ └── SimpleValidator.java
│ │ │ ├── service
│ │ │ └── DefaultAliPayServiceImpl.java
│ │ │ └── test
│ │ │ ├── DemoHbRunner.java
│ │ │ └── Main.java
│ └── resources
│ │ ├── application.yml
│ │ ├── log4j.properties
│ │ └── zfbinfo.properties
│ └── test
│ └── java
│ └── com
│ └── stylefeng
│ └── guns
│ ├── GunsRestApplicationTests.java
│ ├── fastjson
│ └── JsonTest.java
│ ├── generator
│ └── EntityGenerator.java
│ └── jwt
│ ├── DecryptTest.java
│ └── JWTTest.java
├── guns-api
├── pom.xml
└── src
│ └── main
│ ├── java
│ └── com
│ │ └── stylefeng
│ │ └── guns
│ │ └── api
│ │ ├── alipay
│ │ ├── AliPayServiceAPI.java
│ │ ├── AliPayServiceMock.java
│ │ └── vo
│ │ │ ├── AliPayInfoVO.java
│ │ │ └── AliPayResultVO.java
│ │ ├── cinema
│ │ ├── CinemaServiceApi.java
│ │ └── vo
│ │ │ ├── AreaVO.java
│ │ │ ├── BrandVO.java
│ │ │ ├── CinemaInfoVO.java
│ │ │ ├── CinemaQueryVO.java
│ │ │ ├── CinemaVO.java
│ │ │ ├── FilmFieldVO.java
│ │ │ ├── FilmInfoVO.java
│ │ │ ├── HallInfoVO.java
│ │ │ ├── HallTypeVO.java
│ │ │ └── OrderQueryVO.java
│ │ ├── film
│ │ ├── FilmAsyncServiceApi.java
│ │ ├── FilmServiceApi.java
│ │ └── vo
│ │ │ ├── ActorRequestVO.java
│ │ │ ├── ActorVO.java
│ │ │ ├── BannerVO.java
│ │ │ ├── CatVO.java
│ │ │ ├── FilmDescVO.java
│ │ │ ├── FilmDetailVO.java
│ │ │ ├── FilmIndexVO.java
│ │ │ ├── FilmInfo.java
│ │ │ ├── FilmVO.java
│ │ │ ├── ImgVO.java
│ │ │ ├── InfoRequestVO.java
│ │ │ ├── SourceVO.java
│ │ │ └── YearVO.java
│ │ ├── order
│ │ ├── OrderServiceAPI.java
│ │ └── vo
│ │ │ └── OrderVO.java
│ │ └── user
│ │ ├── UserAPI.java
│ │ └── vo
│ │ ├── UserInfoModel.java
│ │ └── UserModel.java
│ └── resources
│ ├── META-INF
│ └── spring.factories
│ └── default-config.properties
├── guns-cinema
├── pom.xml
└── src
│ ├── main
│ ├── java
│ │ └── com
│ │ │ └── stylefeng
│ │ │ └── guns
│ │ │ └── rest
│ │ │ ├── CinemaApplication.java
│ │ │ ├── GunsRestServletInitializer.java
│ │ │ ├── common
│ │ │ ├── SimpleObject.java
│ │ │ ├── aop
│ │ │ │ └── GlobalExceptionHandler.java
│ │ │ ├── exception
│ │ │ │ └── BizExceptionEnum.java
│ │ │ └── persistence
│ │ │ │ ├── dao
│ │ │ │ ├── MoocAreaDictTMapper.java
│ │ │ │ ├── MoocBrandDictTMapper.java
│ │ │ │ ├── MoocCinemaTMapper.java
│ │ │ │ ├── MoocFieldTMapper.java
│ │ │ │ ├── MoocHallDictTMapper.java
│ │ │ │ ├── MoocHallFilmInfoTMapper.java
│ │ │ │ └── mapping
│ │ │ │ │ ├── MoocAreaDictTMapper.xml
│ │ │ │ │ ├── MoocBrandDictTMapper.xml
│ │ │ │ │ ├── MoocCinemaTMapper.xml
│ │ │ │ │ ├── MoocFieldTMapper.xml
│ │ │ │ │ ├── MoocHallDictTMapper.xml
│ │ │ │ │ └── MoocHallFilmInfoTMapper.xml
│ │ │ │ └── model
│ │ │ │ ├── MoocAreaDictT.java
│ │ │ │ ├── MoocBrandDictT.java
│ │ │ │ ├── MoocCinemaT.java
│ │ │ │ ├── MoocFieldT.java
│ │ │ │ ├── MoocHallDictT.java
│ │ │ │ └── MoocHallFilmInfoT.java
│ │ │ ├── config
│ │ │ ├── MessageConverConfig.java
│ │ │ ├── MybatisPlusConfig.java
│ │ │ ├── TraceConfig.java
│ │ │ ├── WebConfig.java
│ │ │ └── properties
│ │ │ │ ├── JwtProperties.java
│ │ │ │ └── RestProperties.java
│ │ │ └── modular
│ │ │ ├── auth
│ │ │ ├── controller
│ │ │ │ ├── AuthController.java
│ │ │ │ └── dto
│ │ │ │ │ ├── AuthRequest.java
│ │ │ │ │ └── AuthResponse.java
│ │ │ ├── converter
│ │ │ │ ├── BaseTransferEntity.java
│ │ │ │ └── WithSignMessageConverter.java
│ │ │ ├── filter
│ │ │ │ └── AuthFilter.java
│ │ │ ├── security
│ │ │ │ ├── DataSecurityAction.java
│ │ │ │ └── impl
│ │ │ │ │ └── Base64SecurityAction.java
│ │ │ ├── util
│ │ │ │ └── JwtTokenUtil.java
│ │ │ └── validator
│ │ │ │ ├── IReqValidator.java
│ │ │ │ ├── dto
│ │ │ │ └── Credence.java
│ │ │ │ └── impl
│ │ │ │ └── SimpleValidator.java
│ │ │ └── cinema
│ │ │ └── serivce
│ │ │ └── DefaultCinemaServiceImpl.java
│ └── resources
│ │ └── application.yml
│ └── test
│ └── java
│ └── com
│ └── stylefeng
│ └── guns
│ ├── GunsRestApplicationTests.java
│ ├── fastjson
│ └── JsonTest.java
│ ├── generator
│ └── EntityGenerator.java
│ └── jwt
│ ├── DecryptTest.java
│ └── JWTTest.java
├── guns-core
├── pom.xml
└── src
│ └── main
│ ├── java
│ └── com
│ │ └── stylefeng
│ │ └── guns
│ │ └── core
│ │ ├── CoreFlag.java
│ │ ├── aop
│ │ └── BaseControllerExceptionHandler.java
│ │ ├── base
│ │ ├── controller
│ │ │ ├── BaseController.java
│ │ │ ├── GlobalController.java
│ │ │ └── GunsErrorView.java
│ │ ├── tips
│ │ │ ├── ErrorTip.java
│ │ │ ├── SuccessTip.java
│ │ │ └── Tip.java
│ │ └── warpper
│ │ │ └── BaseControllerWarpper.java
│ │ ├── cache
│ │ ├── BaseCacheFactory.java
│ │ ├── CacheKit.java
│ │ ├── EhcacheFactory.java
│ │ ├── ICache.java
│ │ └── ILoader.java
│ │ ├── config
│ │ ├── DefaultFastjsonConfig.java
│ │ ├── DefaultMultiConfig.java
│ │ ├── DefaultProperties.java
│ │ ├── DefaultWebConfig.java
│ │ ├── MultiDataSourceConfig.java
│ │ ├── SingleDataSourceConfig.java
│ │ └── properties
│ │ │ ├── DruidProperties.java
│ │ │ └── MutiDataSourceProperties.java
│ │ ├── constant
│ │ └── IsMenu.java
│ │ ├── datascope
│ │ ├── DataScope.java
│ │ └── DataScopeInterceptor.java
│ │ ├── db
│ │ └── Db.java
│ │ ├── exception
│ │ ├── GunsException.java
│ │ ├── GunsExceptionEnum.java
│ │ └── ServiceExceptionEnum.java
│ │ ├── mutidatasource
│ │ ├── DataSourceContextHolder.java
│ │ ├── DynamicDataSource.java
│ │ ├── annotion
│ │ │ └── DataSource.java
│ │ └── aop
│ │ │ └── MultiSourceExAop.java
│ │ ├── node
│ │ ├── MenuNode.java
│ │ └── ZTreeNode.java
│ │ ├── page
│ │ ├── PageBT.java
│ │ └── PageInfoBT.java
│ │ ├── qr
│ │ ├── ImgQrTool.java
│ │ ├── MatrixToImageConfig.java
│ │ ├── MatrixToImageWriter.java
│ │ └── QrImage.java
│ │ ├── support
│ │ ├── BasicType.java
│ │ ├── BeanKit.java
│ │ ├── ClassKit.java
│ │ ├── CollectionKit.java
│ │ ├── DateTime.java
│ │ ├── DateTimeKit.java
│ │ ├── HexKit.java
│ │ ├── HttpKit.java
│ │ ├── ObjectKit.java
│ │ ├── PageKit.java
│ │ ├── StrKit.java
│ │ ├── WafKit.java
│ │ ├── WafRequestWrapper.java
│ │ └── exception
│ │ │ └── ToolBoxException.java
│ │ ├── util
│ │ ├── Convert.java
│ │ ├── DateUtil.java
│ │ ├── FileUtil.java
│ │ ├── HttpSessionHolder.java
│ │ ├── IdGenerator.java
│ │ ├── MD5Util.java
│ │ ├── NumUtil.java
│ │ ├── PingYinUtil.java
│ │ ├── RenderUtil.java
│ │ ├── ResKit.java
│ │ ├── SimpleContrast.java
│ │ ├── SpringContextHolder.java
│ │ ├── SqlUtil.java
│ │ ├── TokenBucket.java
│ │ ├── ToolUtil.java
│ │ └── UUIDUtil.java
│ │ └── xss
│ │ ├── XssFilter.java
│ │ └── XssHttpServletRequestWrapper.java
│ └── resources
│ ├── META-INF
│ └── spring.factories
│ └── default-config.properties
├── guns-example-client
├── pom.xml
└── src
│ └── main
│ ├── java
│ └── com
│ │ └── stylefeng
│ │ └── sso
│ │ └── client
│ │ ├── SsoClientExampleApplication.java
│ │ ├── auth
│ │ └── AuthApiFactory.java
│ │ ├── cache
│ │ └── DefaultClientCache.java
│ │ ├── config
│ │ ├── BeetlConfig.java
│ │ ├── RestConfig.java
│ │ ├── WebConfig.java
│ │ └── properties
│ │ │ └── BeetlProperties.java
│ │ └── controller
│ │ └── ClientController.java
│ ├── resources
│ ├── application.yml
│ └── logback-spring.xml
│ └── webapp
│ ├── WEB-INF
│ └── view
│ │ ├── 404.html
│ │ └── index.html
│ └── static
│ ├── css
│ ├── bootstrap.min.css
│ ├── font-awesome.css
│ ├── font-awesome.min.css
│ └── style.css
│ ├── favicon.ico
│ ├── fonts
│ ├── FontAwesome.otf
│ ├── fontawesome-webfont.eot
│ ├── fontawesome-webfont.svg
│ ├── fontawesome-webfont.ttf
│ ├── fontawesome-webfont.woff
│ ├── fontawesome-webfont.woff2
│ ├── glyphicons-halflings-regular.eot
│ ├── glyphicons-halflings-regular.svg
│ ├── glyphicons-halflings-regular.ttf
│ ├── glyphicons-halflings-regular.woff
│ └── glyphicons-halflings-regular.woff2
│ └── js
│ ├── bootstrap.min.js
│ ├── content.js
│ ├── jquery.min.js
│ └── jquery.min.map
├── guns-film
├── pom.xml
└── src
│ ├── main
│ ├── java
│ │ └── com
│ │ │ └── stylefeng
│ │ │ └── guns
│ │ │ └── rest
│ │ │ ├── FilmApplication.java
│ │ │ ├── FilmServletInitializer.java
│ │ │ ├── common
│ │ │ ├── SimpleObject.java
│ │ │ ├── aop
│ │ │ │ └── GlobalExceptionHandler.java
│ │ │ ├── exception
│ │ │ │ └── BizExceptionEnum.java
│ │ │ └── persistence
│ │ │ │ ├── dao
│ │ │ │ ├── MoocActorTMapper.java
│ │ │ │ ├── MoocBannerTMapper.java
│ │ │ │ ├── MoocCatDictTMapper.java
│ │ │ │ ├── MoocFilmInfoTMapper.java
│ │ │ │ ├── MoocFilmTMapper.java
│ │ │ │ ├── MoocSourceDictTMapper.java
│ │ │ │ ├── MoocYearDictTMapper.java
│ │ │ │ └── mapping
│ │ │ │ │ ├── MoocActorTMapper.xml
│ │ │ │ │ ├── MoocBannerTMapper.xml
│ │ │ │ │ ├── MoocCatDictTMapper.xml
│ │ │ │ │ ├── MoocFilmInfoTMapper.xml
│ │ │ │ │ ├── MoocFilmTMapper.xml
│ │ │ │ │ ├── MoocSourceDictTMapper.xml
│ │ │ │ │ └── MoocYearDictTMapper.xml
│ │ │ │ └── model
│ │ │ │ ├── MoocActorT.java
│ │ │ │ ├── MoocBannerT.java
│ │ │ │ ├── MoocCatDictT.java
│ │ │ │ ├── MoocFilmInfoT.java
│ │ │ │ ├── MoocFilmT.java
│ │ │ │ ├── MoocSourceDictT.java
│ │ │ │ └── MoocYearDictT.java
│ │ │ ├── config
│ │ │ ├── MessageConverConfig.java
│ │ │ ├── MybatisPlusConfig.java
│ │ │ ├── WebConfig.java
│ │ │ └── properties
│ │ │ │ ├── JwtProperties.java
│ │ │ │ └── RestProperties.java
│ │ │ └── modular
│ │ │ ├── auth
│ │ │ ├── controller
│ │ │ │ ├── AuthController.java
│ │ │ │ └── dto
│ │ │ │ │ ├── AuthRequest.java
│ │ │ │ │ └── AuthResponse.java
│ │ │ ├── converter
│ │ │ │ ├── BaseTransferEntity.java
│ │ │ │ └── WithSignMessageConverter.java
│ │ │ ├── filter
│ │ │ │ └── AuthFilter.java
│ │ │ ├── security
│ │ │ │ ├── DataSecurityAction.java
│ │ │ │ └── impl
│ │ │ │ │ └── Base64SecurityAction.java
│ │ │ ├── util
│ │ │ │ └── JwtTokenUtil.java
│ │ │ └── validator
│ │ │ │ ├── IReqValidator.java
│ │ │ │ ├── dto
│ │ │ │ └── Credence.java
│ │ │ │ └── impl
│ │ │ │ └── SimpleValidator.java
│ │ │ ├── example
│ │ │ └── ExampleController.java
│ │ │ └── film
│ │ │ └── service
│ │ │ ├── DefaultFilmAsyncServiceImpl.java
│ │ │ └── DefaultFilmServiceImpl.java
│ └── resources
│ │ └── application.yml
│ └── test
│ └── java
│ └── com
│ └── stylefeng
│ └── guns
│ ├── GunsRestApplicationTests.java
│ ├── fastjson
│ └── JsonTest.java
│ ├── generator
│ └── EntityGenerator.java
│ └── jwt
│ ├── DecryptTest.java
│ └── JWTTest.java
├── guns-gateway
├── pom.xml
└── src
│ ├── main
│ ├── java
│ │ └── com
│ │ │ └── stylefeng
│ │ │ └── guns
│ │ │ └── rest
│ │ │ ├── GunsGatewayApplication.java
│ │ │ ├── GunsGatewayServletInitializer.java
│ │ │ ├── common
│ │ │ ├── CurrentUser.java
│ │ │ ├── SimpleObject.java
│ │ │ ├── aop
│ │ │ │ └── GlobalExceptionHandler.java
│ │ │ ├── exception
│ │ │ │ └── BizExceptionEnum.java
│ │ │ └── persistence
│ │ │ │ ├── dao
│ │ │ │ ├── UserMapper.java
│ │ │ │ └── mapping
│ │ │ │ │ └── UserMapper.xml
│ │ │ │ └── model
│ │ │ │ └── User.java
│ │ │ ├── config
│ │ │ ├── MessageConverConfig.java
│ │ │ ├── MybatisPlusConfig.java
│ │ │ ├── TraceConfig.java
│ │ │ ├── WebConfig.java
│ │ │ └── properties
│ │ │ │ ├── JwtProperties.java
│ │ │ │ └── RestProperties.java
│ │ │ └── modular
│ │ │ ├── Client.java
│ │ │ ├── auth
│ │ │ ├── controller
│ │ │ │ ├── AuthController.java
│ │ │ │ └── dto
│ │ │ │ │ ├── AuthRequest.java
│ │ │ │ │ └── AuthResponse.java
│ │ │ ├── converter
│ │ │ │ ├── BaseTransferEntity.java
│ │ │ │ └── WithSignMessageConverter.java
│ │ │ ├── filter
│ │ │ │ └── AuthFilter.java
│ │ │ ├── security
│ │ │ │ ├── DataSecurityAction.java
│ │ │ │ └── impl
│ │ │ │ │ └── Base64SecurityAction.java
│ │ │ ├── util
│ │ │ │ └── JwtTokenUtil.java
│ │ │ └── validator
│ │ │ │ ├── IReqValidator.java
│ │ │ │ ├── dto
│ │ │ │ └── Credence.java
│ │ │ │ └── impl
│ │ │ │ ├── DbValidator.java
│ │ │ │ └── SimpleValidator.java
│ │ │ ├── cinema
│ │ │ ├── CinemaController.java
│ │ │ └── vo
│ │ │ │ ├── CinemaConditionResponseVO.java
│ │ │ │ ├── CinemaFieldResponseVO.java
│ │ │ │ ├── CinemaFieldsResponseVO.java
│ │ │ │ └── CinemaListResponseVO.java
│ │ │ ├── example
│ │ │ └── ExampleController.java
│ │ │ ├── film
│ │ │ ├── FilmController.java
│ │ │ └── vo
│ │ │ │ ├── FilmConditionVO.java
│ │ │ │ ├── FilmIndexVO.java
│ │ │ │ └── FilmRequestVO.java
│ │ │ ├── order
│ │ │ └── OrderController.java
│ │ │ ├── user
│ │ │ └── UserController.java
│ │ │ └── vo
│ │ │ └── ResponseVO.java
│ └── resources
│ │ └── application.yml
│ └── test
│ └── java
│ └── com
│ └── stylefeng
│ └── guns
│ ├── GunsRestApplicationTests.java
│ ├── fastjson
│ └── JsonTest.java
│ ├── generator
│ └── EntityGenerator.java
│ └── jwt
│ ├── DecryptTest.java
│ └── JWTTest.java
├── guns-generator
├── pom.xml
└── src
│ └── main
│ ├── java
│ └── com
│ │ └── stylefeng
│ │ └── guns
│ │ └── generator
│ │ ├── action
│ │ ├── GunsCodeGenerator.java
│ │ ├── config
│ │ │ ├── AbstractGeneratorConfig.java
│ │ │ ├── GunsGeneratorConfig.java
│ │ │ └── WebGeneratorConfig.java
│ │ └── model
│ │ │ └── GenQo.java
│ │ └── engine
│ │ ├── SimpleTemplateEngine.java
│ │ ├── base
│ │ ├── AbstractTemplateEngine.java
│ │ └── GunsTemplateEngine.java
│ │ └── config
│ │ ├── ContextConfig.java
│ │ ├── ControllerConfig.java
│ │ ├── DaoConfig.java
│ │ ├── Menu.java
│ │ ├── PageConfig.java
│ │ ├── ServiceConfig.java
│ │ └── SqlConfig.java
│ └── resources
│ └── gunsTemplate
│ └── advanced
│ ├── Controller.java.btl
│ ├── menu_sql.sql.btl
│ ├── page.html.btl
│ ├── page.js.btl
│ ├── page_add.html.btl
│ ├── page_edit.html.btl
│ └── page_info.js.btl
├── guns-order
├── pom.xml
└── src
│ ├── main
│ ├── java
│ │ └── com
│ │ │ └── stylefeng
│ │ │ └── guns
│ │ │ └── rest
│ │ │ ├── GunsRestServletInitializer.java
│ │ │ ├── OrderApplication.java
│ │ │ ├── common
│ │ │ ├── SimpleObject.java
│ │ │ ├── aop
│ │ │ │ └── GlobalExceptionHandler.java
│ │ │ ├── exception
│ │ │ │ └── BizExceptionEnum.java
│ │ │ ├── persistence
│ │ │ │ ├── dao
│ │ │ │ │ ├── MoocOrder2017TMapper.java
│ │ │ │ │ ├── MoocOrder2018TMapper.java
│ │ │ │ │ ├── MoocOrderTMapper.java
│ │ │ │ │ └── mapping
│ │ │ │ │ │ ├── MoocOrder2017TMapper.xml
│ │ │ │ │ │ ├── MoocOrder2018TMapper.xml
│ │ │ │ │ │ └── MoocOrderTMapper.xml
│ │ │ │ └── model
│ │ │ │ │ ├── MoocOrder2017T.java
│ │ │ │ │ ├── MoocOrder2018T.java
│ │ │ │ │ └── MoocOrderT.java
│ │ │ └── util
│ │ │ │ └── FTPUtil.java
│ │ │ ├── config
│ │ │ ├── MessageConverConfig.java
│ │ │ ├── MybatisPlusConfig.java
│ │ │ ├── TraceConfig.java
│ │ │ ├── WebConfig.java
│ │ │ └── properties
│ │ │ │ ├── JwtProperties.java
│ │ │ │ └── RestProperties.java
│ │ │ └── modular
│ │ │ ├── auth
│ │ │ ├── controller
│ │ │ │ ├── AuthController.java
│ │ │ │ └── dto
│ │ │ │ │ ├── AuthRequest.java
│ │ │ │ │ └── AuthResponse.java
│ │ │ ├── converter
│ │ │ │ ├── BaseTransferEntity.java
│ │ │ │ └── WithSignMessageConverter.java
│ │ │ ├── filter
│ │ │ │ └── AuthFilter.java
│ │ │ ├── security
│ │ │ │ ├── DataSecurityAction.java
│ │ │ │ └── impl
│ │ │ │ │ └── Base64SecurityAction.java
│ │ │ ├── util
│ │ │ │ └── JwtTokenUtil.java
│ │ │ └── validator
│ │ │ │ ├── IReqValidator.java
│ │ │ │ ├── dto
│ │ │ │ └── Credence.java
│ │ │ │ └── impl
│ │ │ │ └── SimpleValidator.java
│ │ │ └── order
│ │ │ ├── DefaultOrderServiceImpl.java
│ │ │ ├── OrderServiceImpl2017.java
│ │ │ └── OrderServiceImpl2018.java
│ └── resources
│ │ └── application.yml
│ └── test
│ └── java
│ └── com
│ └── stylefeng
│ └── guns
│ ├── GunsRestApplicationTests.java
│ ├── fastjson
│ └── JsonTest.java
│ ├── generator
│ └── EntityGenerator.java
│ └── jwt
│ ├── DecryptTest.java
│ └── JWTTest.java
├── guns-rest
├── pom.xml
└── src
│ ├── main
│ ├── java
│ │ └── com
│ │ │ └── stylefeng
│ │ │ └── guns
│ │ │ └── rest
│ │ │ ├── GunsRestApplication.java
│ │ │ ├── GunsRestServletInitializer.java
│ │ │ ├── common
│ │ │ ├── SimpleObject.java
│ │ │ ├── aop
│ │ │ │ └── GlobalExceptionHandler.java
│ │ │ ├── exception
│ │ │ │ └── BizExceptionEnum.java
│ │ │ └── persistence
│ │ │ │ ├── dao
│ │ │ │ ├── UserMapper.java
│ │ │ │ └── mapping
│ │ │ │ │ └── UserMapper.xml
│ │ │ │ └── model
│ │ │ │ └── User.java
│ │ │ ├── config
│ │ │ ├── MessageConverConfig.java
│ │ │ ├── MybatisPlusConfig.java
│ │ │ ├── WebConfig.java
│ │ │ └── properties
│ │ │ │ ├── JwtProperties.java
│ │ │ │ └── RestProperties.java
│ │ │ └── modular
│ │ │ ├── auth
│ │ │ ├── controller
│ │ │ │ ├── AuthController.java
│ │ │ │ └── dto
│ │ │ │ │ ├── AuthRequest.java
│ │ │ │ │ └── AuthResponse.java
│ │ │ ├── converter
│ │ │ │ ├── BaseTransferEntity.java
│ │ │ │ └── WithSignMessageConverter.java
│ │ │ ├── filter
│ │ │ │ └── AuthFilter.java
│ │ │ ├── security
│ │ │ │ ├── DataSecurityAction.java
│ │ │ │ └── impl
│ │ │ │ │ └── Base64SecurityAction.java
│ │ │ ├── util
│ │ │ │ └── JwtTokenUtil.java
│ │ │ └── validator
│ │ │ │ ├── IReqValidator.java
│ │ │ │ ├── dto
│ │ │ │ └── Credence.java
│ │ │ │ └── impl
│ │ │ │ ├── DbValidator.java
│ │ │ │ └── SimpleValidator.java
│ │ │ └── example
│ │ │ └── ExampleController.java
│ └── resources
│ │ └── application.yml
│ └── test
│ └── java
│ └── com
│ └── stylefeng
│ └── guns
│ ├── GunsRestApplicationTests.java
│ ├── fastjson
│ └── JsonTest.java
│ ├── generator
│ └── EntityGenerator.java
│ └── jwt
│ ├── DecryptTest.java
│ └── JWTTest.java
├── guns-sso-plugin
├── pom.xml
└── src
│ └── main
│ ├── java
│ └── com
│ │ └── stylefeng
│ │ └── sso
│ │ └── plugin
│ │ ├── api
│ │ ├── AuthApi.java
│ │ └── SsoApi.java
│ │ ├── cache
│ │ └── ClientCache.java
│ │ ├── config
│ │ └── SsoAutoConfiguration.java
│ │ ├── constants
│ │ └── SsoConstants.java
│ │ ├── interceptor
│ │ ├── SsoClientInterceptor.java
│ │ └── SsoServerInterceptor.java
│ │ ├── model
│ │ ├── LoginUser.java
│ │ ├── SsoResponse.java
│ │ └── enums
│ │ │ └── ResponseStatus.java
│ │ ├── properties
│ │ └── SsoProperties.java
│ │ ├── remote
│ │ └── RemoteService.java
│ │ ├── service
│ │ └── AuthService.java
│ │ └── util
│ │ ├── HttpUtil.java
│ │ └── SsoSpringContextHolder.java
│ └── resources
│ └── META-INF
│ └── spring.factories
├── guns-sso-server
├── pom.xml
├── sql
│ └── sso_server.sql
└── src
│ └── main
│ ├── java
│ └── com
│ │ └── stylefeng
│ │ └── sso
│ │ └── server
│ │ ├── SsoServerApplication.java
│ │ ├── config
│ │ ├── BeetlConfig.java
│ │ ├── DataSourceConfig.java
│ │ ├── WebConfig.java
│ │ └── properties
│ │ │ └── BeetlProperties.java
│ │ └── modular
│ │ ├── controller
│ │ └── AuthController.java
│ │ ├── entity
│ │ └── SysUser.java
│ │ ├── mapper
│ │ ├── SysUserMapper.java
│ │ └── mapping
│ │ │ └── SysUserMapper.xml
│ │ └── service
│ │ ├── SimpleAuthServiceImpl.java
│ │ └── SysUserService.java
│ ├── resources
│ ├── application.yml
│ └── logback-spring.xml
│ └── webapp
│ ├── WEB-INF
│ └── view
│ │ ├── 404.html
│ │ └── login.html
│ └── static
│ ├── css
│ ├── animate.css
│ ├── bootstrap.min.css
│ ├── font-awesome.css
│ ├── font-awesome.min.css
│ └── style.css
│ ├── favicon.ico
│ ├── fonts
│ ├── FontAwesome.otf
│ ├── fontawesome-webfont.eot
│ ├── fontawesome-webfont.svg
│ ├── fontawesome-webfont.ttf
│ ├── fontawesome-webfont.woff
│ ├── fontawesome-webfont.woff2
│ ├── glyphicons-halflings-regular.eot
│ ├── glyphicons-halflings-regular.svg
│ ├── glyphicons-halflings-regular.ttf
│ ├── glyphicons-halflings-regular.woff
│ └── glyphicons-halflings-regular.woff2
│ └── js
│ ├── bootstrap.min.js
│ ├── jquery.min.js
│ └── jquery.min.map
├── guns-user
├── pom.xml
└── src
│ ├── main
│ ├── java
│ │ └── com
│ │ │ └── stylefeng
│ │ │ └── guns
│ │ │ └── rest
│ │ │ ├── UserApplication.java
│ │ │ ├── UserServletInitializer.java
│ │ │ ├── common
│ │ │ ├── SimpleObject.java
│ │ │ ├── aop
│ │ │ │ └── GlobalExceptionHandler.java
│ │ │ ├── exception
│ │ │ │ └── BizExceptionEnum.java
│ │ │ └── persistence
│ │ │ │ ├── dao
│ │ │ │ ├── MoocUserTMapper.java
│ │ │ │ ├── UserMapper.java
│ │ │ │ └── mapping
│ │ │ │ │ ├── MoocUserTMapper.xml
│ │ │ │ │ └── UserMapper.xml
│ │ │ │ └── model
│ │ │ │ ├── MoocUserT.java
│ │ │ │ └── User.java
│ │ │ ├── config
│ │ │ ├── MessageConverConfig.java
│ │ │ ├── MybatisPlusConfig.java
│ │ │ ├── WebConfig.java
│ │ │ └── properties
│ │ │ │ ├── JwtProperties.java
│ │ │ │ └── RestProperties.java
│ │ │ └── modular
│ │ │ ├── auth
│ │ │ ├── controller
│ │ │ │ ├── AuthController.java
│ │ │ │ └── dto
│ │ │ │ │ ├── AuthRequest.java
│ │ │ │ │ └── AuthResponse.java
│ │ │ ├── converter
│ │ │ │ ├── BaseTransferEntity.java
│ │ │ │ └── WithSignMessageConverter.java
│ │ │ ├── filter
│ │ │ │ └── AuthFilter.java
│ │ │ ├── security
│ │ │ │ ├── DataSecurityAction.java
│ │ │ │ └── impl
│ │ │ │ │ └── Base64SecurityAction.java
│ │ │ ├── util
│ │ │ │ └── JwtTokenUtil.java
│ │ │ └── validator
│ │ │ │ ├── IReqValidator.java
│ │ │ │ ├── dto
│ │ │ │ └── Credence.java
│ │ │ │ └── impl
│ │ │ │ ├── DbValidator.java
│ │ │ │ └── SimpleValidator.java
│ │ │ ├── example
│ │ │ └── ExampleController.java
│ │ │ └── user
│ │ │ └── UserServiceImpl.java
│ └── resources
│ │ └── application.yml
│ └── test
│ └── java
│ └── com
│ └── stylefeng
│ └── guns
│ ├── GunsRestApplicationTests.java
│ ├── fastjson
│ └── JsonTest.java
│ ├── generator
│ └── EntityGenerator.java
│ └── jwt
│ ├── DecryptTest.java
│ └── JWTTest.java
└── pom.xml
/.gitattributes:
--------------------------------------------------------------------------------
1 | *.js linguist-language=java
2 | *.css linguist-language=java
3 | *.html linguist-language=java
4 | *.btl linguist-language=java
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Compiled class file
2 | *.class
3 | *.iml
4 | *.idea
5 | target/
6 | logs/
7 |
8 | # Log file
9 | *.log
10 |
11 | # BlueJ files
12 | *.ctxt
13 |
14 | # Mobile Tools for Java (J2ME)
15 | .mtj.tmp/
16 |
17 | # Package Files #
18 | *.jar
19 | *.war
20 | *.ear
21 | *.zip
22 | *.tar.gz
23 | *.rar
24 |
25 | # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
26 | hs_err_pid*
27 |
28 | *velocity.log*
29 |
30 | # Eclipse #
31 | .classpath
32 | .project
33 | .settings/
34 |
35 | # log
36 | *.gz
37 |
--------------------------------------------------------------------------------
/copy_packages.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | mkdir -p ./jars/
4 |
5 | cp ./guns-gateway/target/guns-gateway-0.0.1.jar ./jars/
6 | cp ./guns-user/target/guns-user-0.0.1.jar ./jars/
7 | cp ./guns-film/target/guns-film-0.0.1.jar ./jars/
8 | cp ./guns-cinema/target/guns-cinema-0.0.1.jar ./jars/
9 | cp ./guns-order/target/guns-order-0.0.1.jar ./jars/
10 |
11 | tar czf ./jars/project.tar.gz ./jars/
12 |
--------------------------------------------------------------------------------
/doc/Guns 技术文档 v1.0.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/liuhuiAndroid/cat-movie/b2f88ad311e34e515aa653ef8bf6e9a90b7e092f/doc/Guns 技术文档 v1.0.pdf
--------------------------------------------------------------------------------
/doc/影片模块-接口文档.docx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/liuhuiAndroid/cat-movie/b2f88ad311e34e515aa653ef8bf6e9a90b7e092f/doc/影片模块-接口文档.docx
--------------------------------------------------------------------------------
/doc/影院模块-接口分析2.txt:
--------------------------------------------------------------------------------
1 | 1、根据CinemaQueryVO,查询影院列表
2 | 2、根据条件获取品牌列表
3 | 3、获取行政区域列表
4 | 4、获取影厅类型列表
5 | 5、根据影院编号获取影院信息
6 | 6、获取所有电影的信息和对应的放映场次信息,根据影院编号
7 | 7、根据放映场次ID获取放映信息
8 | 8、根据放映场次查询播放的电影编号,然后根据电影编号获取对应的电影信息
9 |
--------------------------------------------------------------------------------
/doc/影院模块-接口文档.docx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/liuhuiAndroid/cat-movie/b2f88ad311e34e515aa653ef8bf6e9a90b7e092f/doc/影院模块-接口文档.docx
--------------------------------------------------------------------------------
/doc/支付模块-接口文档.docx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/liuhuiAndroid/cat-movie/b2f88ad311e34e515aa653ef8bf6e9a90b7e092f/doc/支付模块-接口文档.docx
--------------------------------------------------------------------------------
/doc/用户模块-接口文档.docx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/liuhuiAndroid/cat-movie/b2f88ad311e34e515aa653ef8bf6e9a90b7e092f/doc/用户模块-接口文档.docx
--------------------------------------------------------------------------------
/doc/订单模块-接口文档.docx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/liuhuiAndroid/cat-movie/b2f88ad311e34e515aa653ef8bf6e9a90b7e092f/doc/订单模块-接口文档.docx
--------------------------------------------------------------------------------
/guns-admin/src/main/java/com/stylefeng/guns/GunsApplication.java:
--------------------------------------------------------------------------------
1 | package com.stylefeng.guns;
2 |
3 | import org.slf4j.Logger;
4 | import org.slf4j.LoggerFactory;
5 | import org.springframework.boot.SpringApplication;
6 | import org.springframework.boot.autoconfigure.SpringBootApplication;
7 |
8 | /**
9 | * SpringBoot方式启动类
10 | *
11 | * @author stylefeng
12 | * @Date 2017/5/21 12:06
13 | */
14 | @SpringBootApplication
15 | public class GunsApplication {
16 |
17 | private final static Logger logger = LoggerFactory.getLogger(GunsApplication.class);
18 |
19 | public static void main(String[] args) {
20 | SpringApplication.run(GunsApplication.class, args);
21 | logger.info("GunsApplication is success!");
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/guns-admin/src/main/java/com/stylefeng/guns/GunsServletInitializer.java:
--------------------------------------------------------------------------------
1 | package com.stylefeng.guns;
2 |
3 | import org.springframework.boot.builder.SpringApplicationBuilder;
4 | import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
5 |
6 | /**
7 | * Guns Web程序启动类
8 | *
9 | * @author fengshuonan
10 | * @date 2017-05-21 9:43
11 | */
12 | public class GunsServletInitializer extends SpringBootServletInitializer {
13 |
14 | @Override
15 | protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
16 | return builder.sources(GunsApplication.class);
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/guns-admin/src/main/java/com/stylefeng/guns/config/SpringSessionConfig.java:
--------------------------------------------------------------------------------
1 | package com.stylefeng.guns.config;
2 |
3 | import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
4 |
5 | /**
6 | * spring session配置
7 | *
8 | * @author fengshuonan
9 | * @date 2017-07-13 21:05
10 | */
11 | //@EnableRedisHttpSession(maxInactiveIntervalInSeconds = 1800) //session过期时间 如果部署多机环境,需要打开注释
12 | @ConditionalOnProperty(prefix = "guns", name = "spring-session-open", havingValue = "true")
13 | public class SpringSessionConfig {
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/guns-admin/src/main/java/com/stylefeng/guns/core/common/annotion/BussinessLog.java:
--------------------------------------------------------------------------------
1 | package com.stylefeng.guns.core.common.annotion;
2 |
3 | import com.stylefeng.guns.core.common.constant.dictmap.base.AbstractDictMap;
4 | import com.stylefeng.guns.core.common.constant.dictmap.base.SystemDict;
5 |
6 | import java.lang.annotation.*;
7 |
8 | /**
9 | * 标记需要做业务日志的方法
10 | *
11 | * @author fengshuonan
12 | * @date 2017-03-31 12:46
13 | */
14 | @Inherited
15 | @Retention(RetentionPolicy.RUNTIME)
16 | @Target({ElementType.METHOD})
17 | public @interface BussinessLog {
18 |
19 | /**
20 | * 业务的名称,例如:"修改菜单"
21 | */
22 | String value() default "";
23 |
24 | /**
25 | * 被修改的实体的唯一标识,例如:菜单实体的唯一标识为"id"
26 | */
27 | String key() default "id";
28 |
29 | /**
30 | * 字典(用于查找key的中文名称和字段的中文名称)
31 | */
32 | Class extends AbstractDictMap> dict() default SystemDict.class;
33 | }
34 |
--------------------------------------------------------------------------------
/guns-admin/src/main/java/com/stylefeng/guns/core/common/annotion/Permission.java:
--------------------------------------------------------------------------------
1 | package com.stylefeng.guns.core.common.annotion;
2 |
3 | import java.lang.annotation.*;
4 |
5 | /**
6 | * 权限注解 用于检查权限 规定访问权限
7 | *
8 | * @example @Permission({role1,role2})
9 | * @example @Permission
10 | */
11 | @Inherited
12 | @Retention(RetentionPolicy.RUNTIME)
13 | @Target({ElementType.METHOD})
14 | public @interface Permission {
15 |
16 | /**
17 | *
角色英文名称
18 | * 使用注解时加上这个值表示限制只有某个角色的才可以访问对应的资源
19 | * 常用在某些资源限制只有超级管理员角色才可访问
20 | */
21 | String[] value() default {};
22 | }
23 |
--------------------------------------------------------------------------------
/guns-admin/src/main/java/com/stylefeng/guns/core/common/constant/Const.java:
--------------------------------------------------------------------------------
1 | package com.stylefeng.guns.core.common.constant;
2 |
3 | /**
4 | * 系统常量
5 | *
6 | * @author fengshuonan
7 | * @date 2017年2月12日 下午9:42:53
8 | */
9 | public interface Const {
10 |
11 | /**
12 | * 系统默认的管理员密码
13 | */
14 | String DEFAULT_PWD = "111111";
15 |
16 | /**
17 | * 管理员角色的名字
18 | */
19 | String ADMIN_NAME = "administrator";
20 |
21 | /**
22 | * 管理员id
23 | */
24 | Integer ADMIN_ID = 1;
25 |
26 | /**
27 | * 超级管理员角色id
28 | */
29 | Integer ADMIN_ROLE_ID = 1;
30 |
31 | /**
32 | * 接口文档的菜单名
33 | */
34 | String API_MENU_NAME = "接口文档";
35 |
36 | }
37 |
--------------------------------------------------------------------------------
/guns-admin/src/main/java/com/stylefeng/guns/core/common/constant/DatasourceEnum.java:
--------------------------------------------------------------------------------
1 | package com.stylefeng.guns.core.common.constant;
2 |
3 | /**
4 | *
5 | * 多数据源的枚举
6 | *
7 | * @author fengshuonan
8 | * @date 2017年3月5日 上午10:15:02
9 | */
10 | public interface DatasourceEnum {
11 |
12 | String DATA_SOURCE_GUNS = "dataSourceGuns"; //guns数据源
13 |
14 | String DATA_SOURCE_BIZ = "dataSourceBiz"; //其他业务的数据源
15 | }
16 |
--------------------------------------------------------------------------------
/guns-admin/src/main/java/com/stylefeng/guns/core/common/constant/cache/Cache.java:
--------------------------------------------------------------------------------
1 | package com.stylefeng.guns.core.common.constant.cache;
2 |
3 | /**
4 | * 所有缓存名称的集合
5 | *
6 | * @author fengshuonan
7 | * @date 2017-04-24 21:56
8 | */
9 | public interface Cache {
10 |
11 | /**
12 | * 常量缓存
13 | */
14 | String CONSTANT = "CONSTANT";
15 | }
16 |
--------------------------------------------------------------------------------
/guns-admin/src/main/java/com/stylefeng/guns/core/common/constant/cache/CacheKey.java:
--------------------------------------------------------------------------------
1 | package com.stylefeng.guns.core.common.constant.cache;
2 |
3 | /**
4 | * 缓存标识前缀集合,常用在ConstantFactory类中
5 | *
6 | * @author fengshuonan
7 | * @date 2017-04-25 9:37
8 | */
9 | public interface CacheKey {
10 |
11 | /**
12 | * 角色名称(多个)
13 | */
14 | String ROLES_NAME = "roles_name_";
15 |
16 | /**
17 | * 角色名称(单个)
18 | */
19 | String SINGLE_ROLE_NAME = "single_role_name_";
20 |
21 | /**
22 | * 角色英文名称
23 | */
24 | String SINGLE_ROLE_TIP = "single_role_tip_";
25 |
26 | /**
27 | * 部门名称
28 | */
29 | String DEPT_NAME = "dept_name_";
30 |
31 | }
32 |
--------------------------------------------------------------------------------
/guns-admin/src/main/java/com/stylefeng/guns/core/common/constant/dictmap/DeptDict.java:
--------------------------------------------------------------------------------
1 | package com.stylefeng.guns.core.common.constant.dictmap;
2 |
3 | import com.stylefeng.guns.core.common.constant.dictmap.base.AbstractDictMap;
4 |
5 | /**
6 | * 部门的映射
7 | *
8 | * @author fengshuonan
9 | * @date 2017-05-06 15:01
10 | */
11 | public class DeptDict extends AbstractDictMap {
12 |
13 | @Override
14 | public void init() {
15 | put("deptId", "部门名称");
16 | put("num", "部门排序");
17 | put("pid", "上级名称");
18 | put("simplename", "部门简称");
19 | put("fullname", "部门全称");
20 | put("tips", "备注");
21 | }
22 |
23 | @Override
24 | protected void initBeWrapped() {
25 | putFieldWrapperMethodName("deptId", "getDeptName");
26 | putFieldWrapperMethodName("pid", "getDeptName");
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/guns-admin/src/main/java/com/stylefeng/guns/core/common/constant/dictmap/DictMap.java:
--------------------------------------------------------------------------------
1 | package com.stylefeng.guns.core.common.constant.dictmap;
2 |
3 | import com.stylefeng.guns.core.common.constant.dictmap.base.AbstractDictMap;
4 |
5 | /**
6 | * 字典map
7 | *
8 | * @author fengshuonan
9 | * @date 2017-05-06 15:43
10 | */
11 | public class DictMap extends AbstractDictMap {
12 |
13 | @Override
14 | public void init() {
15 | put("dictId","字典名称");
16 | put("dictName","字典名称");
17 | put("dictValues","字典内容");
18 | }
19 |
20 | @Override
21 | protected void initBeWrapped() {
22 |
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/guns-admin/src/main/java/com/stylefeng/guns/core/common/constant/dictmap/LogDict.java:
--------------------------------------------------------------------------------
1 | package com.stylefeng.guns.core.common.constant.dictmap;
2 |
3 | import com.stylefeng.guns.core.common.constant.dictmap.base.AbstractDictMap;
4 |
5 | /**
6 | * 日志的字典
7 | *
8 | * @author fengshuonan
9 | * @date 2017-05-06 15:01
10 | */
11 | public class LogDict extends AbstractDictMap {
12 |
13 | @Override
14 | public void init() {
15 | put("tips","备注");
16 | }
17 |
18 | @Override
19 | protected void initBeWrapped() {
20 |
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/guns-admin/src/main/java/com/stylefeng/guns/core/common/constant/dictmap/MenuDict.java:
--------------------------------------------------------------------------------
1 | package com.stylefeng.guns.core.common.constant.dictmap;
2 |
3 | import com.stylefeng.guns.core.common.constant.dictmap.base.AbstractDictMap;
4 |
5 | /**
6 | * 菜单的字典
7 | *
8 | * @author fengshuonan
9 | * @date 2017-05-06 15:01
10 | */
11 | public class MenuDict extends AbstractDictMap {
12 |
13 | @Override
14 | public void init() {
15 | put("menuId","菜单id");
16 | put("id","菜单id");
17 | put("code","菜单编号");
18 | put("pcode","菜单父编号");
19 | put("name","菜单名称");
20 | put("icon","菜单图标");
21 | put("url","url地址");
22 | put("num","菜单排序号");
23 | put("levels","菜单层级");
24 | put("tips","备注");
25 | put("status","菜单状态");
26 | put("isopen","是否打开");
27 | put("","");
28 | }
29 |
30 | @Override
31 | protected void initBeWrapped() {
32 |
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/guns-admin/src/main/java/com/stylefeng/guns/core/common/constant/dictmap/NoticeMap.java:
--------------------------------------------------------------------------------
1 | package com.stylefeng.guns.core.common.constant.dictmap;
2 |
3 | import com.stylefeng.guns.core.common.constant.dictmap.base.AbstractDictMap;
4 |
5 | /**
6 | * 通知的映射
7 | *
8 | * @author fengshuonan
9 | * @date 2017-05-06 15:01
10 | */
11 | public class NoticeMap extends AbstractDictMap {
12 |
13 | @Override
14 | public void init() {
15 | put("title", "标题");
16 | put("content", "内容");
17 | }
18 |
19 | @Override
20 | protected void initBeWrapped() {
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/guns-admin/src/main/java/com/stylefeng/guns/core/common/constant/dictmap/RoleDict.java:
--------------------------------------------------------------------------------
1 | package com.stylefeng.guns.core.common.constant.dictmap;
2 |
3 | import com.stylefeng.guns.core.common.constant.dictmap.base.AbstractDictMap;
4 |
5 | /**
6 | * 角色的字典
7 | *
8 | * @author fengshuonan
9 | * @date 2017-05-06 15:01
10 | */
11 | public class RoleDict extends AbstractDictMap {
12 |
13 | @Override
14 | public void init() {
15 | put("roleId","角色名称");
16 | put("num","角色排序");
17 | put("pid","角色的父级");
18 | put("name","角色名称");
19 | put("deptid","部门名称");
20 | put("tips","备注");
21 | put("ids","资源名称");
22 | }
23 |
24 | @Override
25 | protected void initBeWrapped() {
26 | putFieldWrapperMethodName("pid","getSingleRoleName");
27 | putFieldWrapperMethodName("deptid","getDeptName");
28 | putFieldWrapperMethodName("roleId","getSingleRoleName");
29 | putFieldWrapperMethodName("ids","getMenuNames");
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/guns-admin/src/main/java/com/stylefeng/guns/core/common/constant/dictmap/base/SystemDict.java:
--------------------------------------------------------------------------------
1 | package com.stylefeng.guns.core.common.constant.dictmap.base;
2 |
3 | /**
4 | * 系统相关的字典
5 | *
6 | * @author fengshuonan
7 | * @date 2017-05-06 15:48
8 | */
9 | public class SystemDict extends AbstractDictMap {
10 |
11 | @Override
12 | public void init() {
13 |
14 | }
15 |
16 | @Override
17 | protected void initBeWrapped() {
18 |
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/guns-admin/src/main/java/com/stylefeng/guns/core/common/constant/state/LogSucceed.java:
--------------------------------------------------------------------------------
1 | package com.stylefeng.guns.core.common.constant.state;
2 |
3 | /**
4 | * 业务是否成功的日志记录
5 | *
6 | * @author fengshuonan
7 | * @Date 2017年1月22日 下午12:14:59
8 | */
9 | public enum LogSucceed {
10 |
11 | SUCCESS("成功"),
12 | FAIL("失败");
13 |
14 | String message;
15 |
16 | LogSucceed(String message) {
17 | this.message = message;
18 | }
19 |
20 | public String getMessage() {
21 | return message;
22 | }
23 |
24 | public void setMessage(String message) {
25 | this.message = message;
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/guns-admin/src/main/java/com/stylefeng/guns/core/common/constant/state/LogType.java:
--------------------------------------------------------------------------------
1 | package com.stylefeng.guns.core.common.constant.state;
2 |
3 | /**
4 | * 日志类型
5 | *
6 | * @author fengshuonan
7 | * @Date 2017年1月22日 下午12:14:59
8 | */
9 | public enum LogType {
10 |
11 | LOGIN("登录日志"),
12 | LOGIN_FAIL("登录失败日志"),
13 | EXIT("退出日志"),
14 | EXCEPTION("异常日志"),
15 | BUSSINESS("业务日志");
16 |
17 | String message;
18 |
19 | LogType(String message) {
20 | this.message = message;
21 | }
22 |
23 | public String getMessage() {
24 | return message;
25 | }
26 |
27 | public void setMessage(String message) {
28 | this.message = message;
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/guns-admin/src/main/java/com/stylefeng/guns/core/common/constant/state/Order.java:
--------------------------------------------------------------------------------
1 | package com.stylefeng.guns.core.common.constant.state;
2 |
3 | /**
4 | * 数据库排序
5 | *
6 | * @author fengshuonan
7 | * @Date 2017年5月31日20:48:41
8 | */
9 | public enum Order {
10 |
11 | ASC("asc"), DESC("desc");
12 |
13 | private String des;
14 |
15 | Order(String des) {
16 | this.des = des;
17 | }
18 |
19 | public String getDes() {
20 | return des;
21 | }
22 |
23 | public void setDes(String des) {
24 | this.des = des;
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/guns-admin/src/main/java/com/stylefeng/guns/core/common/exception/InvalidKaptchaException.java:
--------------------------------------------------------------------------------
1 | package com.stylefeng.guns.core.common.exception;
2 |
3 | /**
4 | * 验证码错误异常
5 | *
6 | * @author fengshuonan
7 | * @date 2017-05-05 23:52
8 | */
9 | public class InvalidKaptchaException extends RuntimeException {
10 | }
11 |
--------------------------------------------------------------------------------
/guns-admin/src/main/java/com/stylefeng/guns/core/log/LogManager.java:
--------------------------------------------------------------------------------
1 | package com.stylefeng.guns.core.log;
2 |
3 | import java.util.TimerTask;
4 | import java.util.concurrent.ScheduledThreadPoolExecutor;
5 | import java.util.concurrent.TimeUnit;
6 |
7 | /**
8 | * 日志管理器
9 | *
10 | * @author fengshuonan
11 | * @date 2017-03-30 16:29
12 | */
13 | public class LogManager {
14 |
15 | //日志记录操作延时
16 | private final int OPERATE_DELAY_TIME = 10;
17 |
18 | //异步操作记录日志的线程池
19 | private ScheduledThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(10);
20 |
21 | private LogManager() {
22 | }
23 |
24 | public static LogManager logManager = new LogManager();
25 |
26 | public static LogManager me() {
27 | return logManager;
28 | }
29 |
30 | public void executeLog(TimerTask task) {
31 | executor.schedule(task, OPERATE_DELAY_TIME, TimeUnit.MILLISECONDS);
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/guns-admin/src/main/java/com/stylefeng/guns/core/util/KaptchaUtil.java:
--------------------------------------------------------------------------------
1 | package com.stylefeng.guns.core.util;
2 |
3 | import com.stylefeng.guns.config.properties.GunsProperties;
4 |
5 | /**
6 | * 验证码工具类
7 | */
8 | public class KaptchaUtil {
9 |
10 | /**
11 | * 获取验证码开关
12 | */
13 | public static Boolean getKaptchaOnOff() {
14 | return SpringContextHolder.getBean(GunsProperties.class).getKaptchaOpen();
15 | }
16 | }
--------------------------------------------------------------------------------
/guns-admin/src/main/java/com/stylefeng/guns/modular/code/service/TableService.java:
--------------------------------------------------------------------------------
1 | package com.stylefeng.guns.modular.code.service;
2 |
3 | import com.baomidou.mybatisplus.mapper.SqlRunner;
4 | import org.springframework.beans.factory.annotation.Value;
5 | import org.springframework.stereotype.Service;
6 |
7 | import java.util.List;
8 | import java.util.Map;
9 |
10 | /**
11 | * 获取数据库所有的表
12 | *
13 | * @author fengshuonan
14 | * @date 2017-12-04-下午1:37
15 | */
16 | @Service
17 | public class TableService {
18 |
19 | @Value("${spring.datasource.db-name}")
20 | private String dbName;
21 |
22 | /**
23 | * 获取当前数据库所有的表信息
24 | */
25 | public List