├── LICENSE
├── README.md
├── docs
├── .gitignore
├── .vuepress
│ ├── config.js
│ └── public
│ │ ├── puzzle-verify.png
│ │ ├── region-selector_tab.png
│ │ ├── search-form_1.png
│ │ ├── search-form_2.png
│ │ ├── tree-select_multiple.png
│ │ ├── tree-select_single.png
│ │ ├── upload-file.png
│ │ ├── 布局-设置面板.png
│ │ ├── 布局.png
│ │ ├── 路由和菜单-首屏加载效果.png
│ │ └── 路由和菜单-骨架屏.png
├── README.md
├── backend
│ └── README.md
├── frontend
│ ├── README.md
│ ├── components
│ │ ├── abstract.md
│ │ ├── region-selector.md
│ │ ├── search-form.md
│ │ ├── tree-select.md
│ │ └── upload-file.md
│ ├── deploy.md
│ ├── directives.md
│ ├── filters.md
│ ├── global-methods
│ │ ├── bottom-tip.md
│ │ ├── guide.md
│ │ ├── image-viewer.md
│ │ ├── puzzle-verify.md
│ │ └── signature.md
│ ├── icon.md
│ ├── layout.md
│ ├── mock.md
│ ├── new.md
│ ├── permission.md
│ ├── plugins.md
│ ├── router.md
│ └── utils.md
├── installation.md
├── package-lock.json
├── package.json
└── start.md
├── java
├── cloud
│ ├── .gitignore
│ ├── api
│ │ ├── pom.xml
│ │ └── src
│ │ │ └── main
│ │ │ └── java
│ │ │ └── cn
│ │ │ └── toesbieya
│ │ │ └── jxc
│ │ │ └── api
│ │ │ ├── FileApi.java
│ │ │ ├── RecordApi.java
│ │ │ ├── StockApi.java
│ │ │ └── system
│ │ │ ├── DepartmentApi.java
│ │ │ ├── ResourceApi.java
│ │ │ └── RoleApi.java
│ ├── common
│ │ ├── pom.xml
│ │ └── src
│ │ │ └── main
│ │ │ ├── java
│ │ │ └── cn
│ │ │ │ └── toesbieya
│ │ │ │ └── jxc
│ │ │ │ └── common
│ │ │ │ ├── config
│ │ │ │ ├── FastJsonConfigFactory.java
│ │ │ │ └── RedisConfig.java
│ │ │ │ ├── constant
│ │ │ │ ├── DocConstant.java
│ │ │ │ ├── SessionConstant.java
│ │ │ │ └── SocketConstant.java
│ │ │ │ ├── enumeration
│ │ │ │ ├── DataScopeEnum.java
│ │ │ │ ├── GeneralStatusEnum.java
│ │ │ │ └── ResourceTypeEnum.java
│ │ │ │ ├── exception
│ │ │ │ └── JsonResultException.java
│ │ │ │ ├── model
│ │ │ │ ├── entity
│ │ │ │ │ ├── BizDoc.java
│ │ │ │ │ ├── BizDocHistory.java
│ │ │ │ │ ├── BizDocSub.java
│ │ │ │ │ ├── BizPurchaseInbound.java
│ │ │ │ │ ├── BizPurchaseInboundSub.java
│ │ │ │ │ ├── BizPurchaseOrder.java
│ │ │ │ │ ├── BizPurchaseOrderSub.java
│ │ │ │ │ ├── BizSellOrder.java
│ │ │ │ │ ├── BizSellOrderSub.java
│ │ │ │ │ ├── BizSellOutbound.java
│ │ │ │ │ ├── BizSellOutboundSub.java
│ │ │ │ │ ├── BizStock.java
│ │ │ │ │ ├── Msg.java
│ │ │ │ │ ├── MsgState.java
│ │ │ │ │ ├── RecAttachment.java
│ │ │ │ │ ├── RecLoginHistory.java
│ │ │ │ │ ├── RecUserAction.java
│ │ │ │ │ ├── StatFinishOrder.java
│ │ │ │ │ ├── StatProfitGoods.java
│ │ │ │ │ ├── StatProfitTotal.java
│ │ │ │ │ ├── SysCategory.java
│ │ │ │ │ ├── SysCustomer.java
│ │ │ │ │ ├── SysDepartment.java
│ │ │ │ │ ├── SysRegion.java
│ │ │ │ │ ├── SysResource.java
│ │ │ │ │ ├── SysRole.java
│ │ │ │ │ ├── SysSupplier.java
│ │ │ │ │ └── SysUser.java
│ │ │ │ └── vo
│ │ │ │ │ ├── BaseSearch.java
│ │ │ │ │ ├── DepartmentVo.java
│ │ │ │ │ ├── R.java
│ │ │ │ │ ├── ResourceVo.java
│ │ │ │ │ ├── SocketEventVo.java
│ │ │ │ │ ├── SocketOfflineVo.java
│ │ │ │ │ ├── StockOutboundVo.java
│ │ │ │ │ ├── StockSearch.java
│ │ │ │ │ ├── StockSearchResult.java
│ │ │ │ │ └── UserVo.java
│ │ │ │ └── util
│ │ │ │ ├── DateUtil.java
│ │ │ │ ├── RedisUtil.java
│ │ │ │ ├── SessionUtil.java
│ │ │ │ ├── SpringUtil.java
│ │ │ │ ├── Util.java
│ │ │ │ └── WebSocketUtil.java
│ │ │ └── resources
│ │ │ └── script
│ │ │ └── increase_and_expire.lua
│ ├── gateway
│ │ ├── pom.xml
│ │ └── src
│ │ │ └── main
│ │ │ ├── java
│ │ │ └── cn
│ │ │ │ └── toesbieya
│ │ │ │ └── jxc
│ │ │ │ └── gateway
│ │ │ │ ├── GatewayApplication.java
│ │ │ │ ├── config
│ │ │ │ ├── GatewayConfig.java
│ │ │ │ ├── RateConfig.java
│ │ │ │ ├── ResourceConfig.java
│ │ │ │ └── RouteConfig.java
│ │ │ │ ├── controller
│ │ │ │ └── FallbackController.java
│ │ │ │ └── filter
│ │ │ │ ├── SecurityFilter.java
│ │ │ │ └── SentinelFilter.java
│ │ │ └── resources
│ │ │ └── bootstrap.yml
│ ├── nacos-config
│ │ ├── jxc-common-database.yml
│ │ ├── jxc-common-redis.yml
│ │ ├── jxc-gateway.yml
│ │ ├── jxc-web-account.yml
│ │ ├── jxc-web-doc.yml
│ │ ├── jxc-web-file.yml
│ │ ├── jxc-web-message.yml
│ │ ├── jxc-web-record.yml
│ │ ├── jxc-web-statistic.yml
│ │ ├── jxc-web-stock.yml
│ │ ├── jxc-web-system.yml
│ │ └── jxc-websocket.yml
│ ├── pom.xml
│ ├── schedule
│ │ ├── pom.xml
│ │ └── src
│ │ │ └── main
│ │ │ ├── java
│ │ │ └── cn
│ │ │ │ └── toesbieya
│ │ │ │ └── jxc
│ │ │ │ └── schedule
│ │ │ │ ├── ScheduleApplication.java
│ │ │ │ ├── config
│ │ │ │ └── ExecutorConfig.java
│ │ │ │ ├── mapper
│ │ │ │ └── StatisticMapper.java
│ │ │ │ └── task
│ │ │ │ ├── DocTask.java
│ │ │ │ ├── SessionTask.java
│ │ │ │ └── StatisticTask.java
│ │ │ └── resources
│ │ │ ├── bootstrap.yml
│ │ │ └── mapper
│ │ │ └── Statistic.xml
│ ├── web
│ │ ├── file
│ │ │ ├── pom.xml
│ │ │ └── src
│ │ │ │ └── main
│ │ │ │ ├── java
│ │ │ │ └── cn
│ │ │ │ │ └── toesbieya
│ │ │ │ │ └── jxc
│ │ │ │ │ └── file
│ │ │ │ │ ├── FileApplication.java
│ │ │ │ │ ├── config
│ │ │ │ │ ├── QiniuConfig.java
│ │ │ │ │ ├── QiniuProperty.java
│ │ │ │ │ └── QiniuTemplate.java
│ │ │ │ │ ├── controller
│ │ │ │ │ └── FileController.java
│ │ │ │ │ └── service
│ │ │ │ │ └── FileService.java
│ │ │ │ └── resources
│ │ │ │ └── bootstrap.yml
│ │ ├── pom.xml
│ │ ├── web-common
│ │ │ ├── pom.xml
│ │ │ └── src
│ │ │ │ └── main
│ │ │ │ └── java
│ │ │ │ └── cn
│ │ │ │ └── toesbieya
│ │ │ │ └── jxc
│ │ │ │ └── web
│ │ │ │ └── common
│ │ │ │ ├── annoation
│ │ │ │ ├── Lock.java
│ │ │ │ ├── TimeCost.java
│ │ │ │ └── UserAction.java
│ │ │ │ ├── aspect
│ │ │ │ ├── LockAspect.java
│ │ │ │ ├── RestExceptionAspect.java
│ │ │ │ ├── TimeCostAspect.java
│ │ │ │ └── UserActionAspect.java
│ │ │ │ ├── config
│ │ │ │ └── WebConfig.java
│ │ │ │ ├── enumeration
│ │ │ │ └── UserActionEnum.java
│ │ │ │ ├── interceptor
│ │ │ │ ├── PredicateConfig.java
│ │ │ │ ├── SecurityInterceptor.java
│ │ │ │ ├── UserActionInterceptor.java
│ │ │ │ └── predicate
│ │ │ │ │ └── UserActionPredicate.java
│ │ │ │ ├── model
│ │ │ │ └── vo
│ │ │ │ │ └── PageResult.java
│ │ │ │ └── util
│ │ │ │ ├── ExcelUtil.java
│ │ │ │ ├── HttpUtil.java
│ │ │ │ ├── IpUtil.java
│ │ │ │ ├── SecurityUtil.java
│ │ │ │ ├── SessionUtil.java
│ │ │ │ ├── ThreadUtil.java
│ │ │ │ └── WebUtil.java
│ │ └── web-modules
│ │ │ ├── account
│ │ │ ├── pom.xml
│ │ │ └── src
│ │ │ │ └── main
│ │ │ │ ├── java
│ │ │ │ └── cn
│ │ │ │ │ └── toesbieya
│ │ │ │ │ └── jxc
│ │ │ │ │ └── account
│ │ │ │ │ ├── AccountApplication.java
│ │ │ │ │ ├── controller
│ │ │ │ │ └── AccountController.java
│ │ │ │ │ ├── enumeration
│ │ │ │ │ └── RecLoginHistoryEnum.java
│ │ │ │ │ ├── mapper
│ │ │ │ │ ├── SysResourceMapper.java
│ │ │ │ │ ├── SysRoleMapper.java
│ │ │ │ │ └── SysUserMapper.java
│ │ │ │ │ ├── service
│ │ │ │ │ └── AccountService.java
│ │ │ │ │ └── vo
│ │ │ │ │ ├── LoginParam.java
│ │ │ │ │ ├── LoginSuccessInfo.java
│ │ │ │ │ ├── PasswordUpdateParam.java
│ │ │ │ │ └── RegisterParam.java
│ │ │ │ └── resources
│ │ │ │ └── bootstrap.yml
│ │ │ ├── doc
│ │ │ ├── pom.xml
│ │ │ └── src
│ │ │ │ └── main
│ │ │ │ ├── java
│ │ │ │ └── cn
│ │ │ │ │ └── toesbieya
│ │ │ │ │ └── jxc
│ │ │ │ │ └── doc
│ │ │ │ │ ├── DocApplication.java
│ │ │ │ │ ├── controller
│ │ │ │ │ ├── DocHistoryController.java
│ │ │ │ │ ├── PurchaseInboundController.java
│ │ │ │ │ ├── PurchaseOrderController.java
│ │ │ │ │ ├── SellOrderController.java
│ │ │ │ │ └── SellOutboundController.java
│ │ │ │ │ ├── enumeration
│ │ │ │ │ ├── DocFinishEnum.java
│ │ │ │ │ ├── DocHistoryEnum.java
│ │ │ │ │ └── DocStatusEnum.java
│ │ │ │ │ ├── mapper
│ │ │ │ │ ├── DocHistoryMapper.java
│ │ │ │ │ ├── PurchaseInboundMapper.java
│ │ │ │ │ ├── PurchaseInboundSubMapper.java
│ │ │ │ │ ├── PurchaseOrderMapper.java
│ │ │ │ │ ├── PurchaseOrderSubMapper.java
│ │ │ │ │ ├── SellOrderMapper.java
│ │ │ │ │ ├── SellOrderSubMapper.java
│ │ │ │ │ ├── SellOutboundMapper.java
│ │ │ │ │ └── SellOutboundSubMapper.java
│ │ │ │ │ ├── model
│ │ │ │ │ └── vo
│ │ │ │ │ │ ├── DocHistorySearch.java
│ │ │ │ │ │ ├── DocSearch.java
│ │ │ │ │ │ ├── DocStatusUpdate.java
│ │ │ │ │ │ ├── PurchaseInboundExport.java
│ │ │ │ │ │ ├── PurchaseInboundSearch.java
│ │ │ │ │ │ ├── PurchaseInboundVo.java
│ │ │ │ │ │ ├── PurchaseOrderExport.java
│ │ │ │ │ │ ├── PurchaseOrderSearch.java
│ │ │ │ │ │ ├── PurchaseOrderVo.java
│ │ │ │ │ │ ├── SellOrderExport.java
│ │ │ │ │ │ ├── SellOrderSearch.java
│ │ │ │ │ │ ├── SellOrderVo.java
│ │ │ │ │ │ ├── SellOutboundExport.java
│ │ │ │ │ │ ├── SellOutboundSearch.java
│ │ │ │ │ │ └── SellOutboundVo.java
│ │ │ │ │ ├── service
│ │ │ │ │ ├── DocHistoryService.java
│ │ │ │ │ ├── PurchaseInboundService.java
│ │ │ │ │ ├── PurchaseOrderService.java
│ │ │ │ │ ├── SellOrderService.java
│ │ │ │ │ └── SellOutboundService.java
│ │ │ │ │ └── util
│ │ │ │ │ └── DocUtil.java
│ │ │ │ └── resources
│ │ │ │ ├── bootstrap.yml
│ │ │ │ ├── mapper
│ │ │ │ ├── BizPurchaseInbound.xml
│ │ │ │ ├── BizPurchaseInboundSub.xml
│ │ │ │ ├── BizPurchaseOrder.xml
│ │ │ │ ├── BizPurchaseOrderSub.xml
│ │ │ │ ├── BizSellOrder.xml
│ │ │ │ ├── BizSellOrderSub.xml
│ │ │ │ ├── BizSellOutbound.xml
│ │ │ │ └── BizSellOutboundSub.xml
│ │ │ │ └── script
│ │ │ │ └── get_doc_id.lua
│ │ │ ├── message
│ │ │ ├── pom.xml
│ │ │ └── src
│ │ │ │ └── main
│ │ │ │ ├── java
│ │ │ │ └── cn
│ │ │ │ │ └── toesbieya
│ │ │ │ │ └── jxc
│ │ │ │ │ └── message
│ │ │ │ │ ├── MessageApplication.java
│ │ │ │ │ ├── constant
│ │ │ │ │ └── MsgConstant.java
│ │ │ │ │ ├── controller
│ │ │ │ │ ├── ManageController.java
│ │ │ │ │ └── UserController.java
│ │ │ │ │ ├── mapper
│ │ │ │ │ ├── MsgMapper.java
│ │ │ │ │ └── MsgStateMapper.java
│ │ │ │ │ ├── model
│ │ │ │ │ └── vo
│ │ │ │ │ │ ├── MsgPersonalSearch.java
│ │ │ │ │ │ └── MsgSearch.java
│ │ │ │ │ └── service
│ │ │ │ │ ├── ManageService.java
│ │ │ │ │ └── UserService.java
│ │ │ │ └── resources
│ │ │ │ ├── bootstrap.yml
│ │ │ │ └── mapper
│ │ │ │ └── Msg.xml
│ │ │ ├── pom.xml
│ │ │ ├── record
│ │ │ ├── pom.xml
│ │ │ └── src
│ │ │ │ └── main
│ │ │ │ ├── java
│ │ │ │ └── cn
│ │ │ │ │ └── toesbieya
│ │ │ │ │ └── jxc
│ │ │ │ │ └── record
│ │ │ │ │ ├── RecordApplication.java
│ │ │ │ │ ├── config
│ │ │ │ │ └── ExecutorConfig.java
│ │ │ │ │ ├── controller
│ │ │ │ │ └── RecordController.java
│ │ │ │ │ ├── mapper
│ │ │ │ │ ├── RecAttachmentMapper.java
│ │ │ │ │ ├── RecLoginHistoryMapper.java
│ │ │ │ │ └── RecUserActionMapper.java
│ │ │ │ │ ├── model
│ │ │ │ │ └── vo
│ │ │ │ │ │ ├── LoginHistorySearch.java
│ │ │ │ │ │ └── UserActionSearch.java
│ │ │ │ │ └── service
│ │ │ │ │ └── RecordService.java
│ │ │ │ └── resources
│ │ │ │ ├── bootstrap.yml
│ │ │ │ └── mapper
│ │ │ │ └── RecAttachment.xml
│ │ │ ├── statistic
│ │ │ ├── pom.xml
│ │ │ └── src
│ │ │ │ └── main
│ │ │ │ ├── java
│ │ │ │ └── cn
│ │ │ │ │ └── toesbieya
│ │ │ │ │ └── jxc
│ │ │ │ │ └── statistic
│ │ │ │ │ ├── StatisticApplication.java
│ │ │ │ │ ├── controller
│ │ │ │ │ └── StatisticController.java
│ │ │ │ │ ├── mapper
│ │ │ │ │ └── StatisticMapper.java
│ │ │ │ │ ├── model
│ │ │ │ │ └── vo
│ │ │ │ │ │ └── FourBlockStat.java
│ │ │ │ │ └── service
│ │ │ │ │ └── StatisticService.java
│ │ │ │ └── resources
│ │ │ │ ├── bootstrap.yml
│ │ │ │ └── mapper
│ │ │ │ └── Statistic.xml
│ │ │ ├── stock
│ │ │ ├── pom.xml
│ │ │ └── src
│ │ │ │ └── main
│ │ │ │ ├── java
│ │ │ │ └── cn
│ │ │ │ │ └── toesbieya
│ │ │ │ │ └── jxc
│ │ │ │ │ └── stock
│ │ │ │ │ ├── StockApplication.java
│ │ │ │ │ ├── controller
│ │ │ │ │ └── StockController.java
│ │ │ │ │ ├── mapper
│ │ │ │ │ └── StockMapper.java
│ │ │ │ │ ├── model
│ │ │ │ │ └── vo
│ │ │ │ │ │ └── StockExport.java
│ │ │ │ │ └── service
│ │ │ │ │ └── StockService.java
│ │ │ │ └── resources
│ │ │ │ ├── bootstrap.yml
│ │ │ │ └── mapper
│ │ │ │ └── StockMapper.xml
│ │ │ └── system
│ │ │ ├── pom.xml
│ │ │ └── src
│ │ │ └── main
│ │ │ ├── java
│ │ │ └── cn
│ │ │ │ └── toesbieya
│ │ │ │ └── jxc
│ │ │ │ └── system
│ │ │ │ ├── SystemApplication.java
│ │ │ │ ├── controller
│ │ │ │ ├── CategoryController.java
│ │ │ │ ├── CustomerController.java
│ │ │ │ ├── DepartmentController.java
│ │ │ │ ├── ResourceController.java
│ │ │ │ ├── RoleController.java
│ │ │ │ ├── SupplierController.java
│ │ │ │ └── UserController.java
│ │ │ │ ├── mapper
│ │ │ │ ├── SysCategoryMapper.java
│ │ │ │ ├── SysCustomerMapper.java
│ │ │ │ ├── SysDepartmentMapper.java
│ │ │ │ ├── SysRegionMapper.java
│ │ │ │ ├── SysResourceMapper.java
│ │ │ │ ├── SysRoleMapper.java
│ │ │ │ ├── SysSupplierMapper.java
│ │ │ │ └── SysUserMapper.java
│ │ │ │ ├── model
│ │ │ │ └── vo
│ │ │ │ │ ├── CategorySearch.java
│ │ │ │ │ ├── CustomerSearch.java
│ │ │ │ │ ├── CustomerVo.java
│ │ │ │ │ ├── RegionValueResult.java
│ │ │ │ │ ├── RoleSearch.java
│ │ │ │ │ ├── SupplierSearch.java
│ │ │ │ │ ├── SupplierVo.java
│ │ │ │ │ └── UserSearch.java
│ │ │ │ └── service
│ │ │ │ ├── CategoryService.java
│ │ │ │ ├── CustomerService.java
│ │ │ │ ├── DepartmentService.java
│ │ │ │ ├── ResourceService.java
│ │ │ │ ├── RoleService.java
│ │ │ │ ├── SupplierService.java
│ │ │ │ └── UserService.java
│ │ │ └── resources
│ │ │ ├── bootstrap.yml
│ │ │ └── mapper
│ │ │ ├── SysCategory.xml
│ │ │ ├── SysCustomer.xml
│ │ │ ├── SysDepartment.xml
│ │ │ ├── SysResource.xml
│ │ │ └── SysSupplier.xml
│ └── websocket
│ │ ├── pom.xml
│ │ └── src
│ │ └── main
│ │ ├── java
│ │ └── cn
│ │ │ └── toesbieya
│ │ │ └── jxc
│ │ │ └── socket
│ │ │ ├── WebSocketApplication.java
│ │ │ ├── config
│ │ │ ├── RedisEventListenerConfig.java
│ │ │ ├── SocketConfig.java
│ │ │ └── SocketProperty.java
│ │ │ └── server
│ │ │ └── WebSocketServer.java
│ │ └── resources
│ │ └── bootstrap.yml
├── db
│ └── my.rar
└── local
│ ├── .gitignore
│ ├── pom.xml
│ └── src
│ └── main
│ ├── java
│ └── cn
│ │ └── toesbieya
│ │ └── jxc
│ │ ├── MyApplication.java
│ │ ├── annoation
│ │ ├── Lock.java
│ │ ├── TimeCost.java
│ │ └── UserAction.java
│ │ ├── aspect
│ │ ├── LockAspect.java
│ │ ├── RestExceptionAspect.java
│ │ ├── TimeCostAspect.java
│ │ └── UserActionAspect.java
│ │ ├── config
│ │ ├── ExecutorConfig.java
│ │ ├── FastJsonConfigFactory.java
│ │ ├── QiniuConfig.java
│ │ ├── QiniuProperty.java
│ │ ├── QiniuTemplate.java
│ │ ├── RedisConfig.java
│ │ ├── RedisEventListenerConfig.java
│ │ ├── SocketConfig.java
│ │ ├── SocketProperty.java
│ │ └── WebConfig.java
│ │ ├── constant
│ │ ├── DocConstant.java
│ │ ├── MsgConstant.java
│ │ ├── SessionConstant.java
│ │ └── SocketConstant.java
│ │ ├── controller
│ │ ├── AccountController.java
│ │ ├── BizStockController.java
│ │ ├── FileController.java
│ │ ├── RecController.java
│ │ ├── StatisticController.java
│ │ ├── TestController.java
│ │ ├── doc
│ │ │ ├── HistoryController.java
│ │ │ ├── PurchaseInboundController.java
│ │ │ ├── PurchaseOrderController.java
│ │ │ ├── SellOrderController.java
│ │ │ └── SellOutboundController.java
│ │ ├── msg
│ │ │ ├── ManageController.java
│ │ │ └── UserController.java
│ │ └── sys
│ │ │ ├── CategoryController.java
│ │ │ ├── CustomerController.java
│ │ │ ├── DepartmentController.java
│ │ │ ├── ResourceController.java
│ │ │ ├── RoleController.java
│ │ │ ├── SupplierController.java
│ │ │ └── UserController.java
│ │ ├── enumeration
│ │ ├── DataScopeEnum.java
│ │ ├── DocFinishEnum.java
│ │ ├── DocHistoryEnum.java
│ │ ├── DocStatusEnum.java
│ │ ├── GeneralStatusEnum.java
│ │ ├── RecLoginHistoryEnum.java
│ │ ├── ResourceTypeEnum.java
│ │ └── UserActionEnum.java
│ │ ├── exception
│ │ └── JsonResultException.java
│ │ ├── interceptor
│ │ └── SecurityInterceptor.java
│ │ ├── mapper
│ │ ├── BizDocHistoryMapper.java
│ │ ├── BizPurchaseInboundMapper.java
│ │ ├── BizPurchaseInboundSubMapper.java
│ │ ├── BizPurchaseOrderMapper.java
│ │ ├── BizPurchaseOrderSubMapper.java
│ │ ├── BizSellOrderMapper.java
│ │ ├── BizSellOrderSubMapper.java
│ │ ├── BizSellOutboundMapper.java
│ │ ├── BizSellOutboundSubMapper.java
│ │ ├── BizStockMapper.java
│ │ ├── MsgMapper.java
│ │ ├── MsgStateMapper.java
│ │ ├── RecAttachmentMapper.java
│ │ ├── RecLoginHistoryMapper.java
│ │ ├── RecUserActionMapper.java
│ │ ├── StatisticMapper.java
│ │ ├── SysCategoryMapper.java
│ │ ├── SysCustomerMapper.java
│ │ ├── SysDepartmentMapper.java
│ │ ├── SysRegionMapper.java
│ │ ├── SysResourceMapper.java
│ │ ├── SysRoleMapper.java
│ │ ├── SysSupplierMapper.java
│ │ └── SysUserMapper.java
│ │ ├── model
│ │ ├── entity
│ │ │ ├── BizDoc.java
│ │ │ ├── BizDocHistory.java
│ │ │ ├── BizDocSub.java
│ │ │ ├── BizPurchaseInbound.java
│ │ │ ├── BizPurchaseInboundSub.java
│ │ │ ├── BizPurchaseOrder.java
│ │ │ ├── BizPurchaseOrderSub.java
│ │ │ ├── BizSellOrder.java
│ │ │ ├── BizSellOrderSub.java
│ │ │ ├── BizSellOutbound.java
│ │ │ ├── BizSellOutboundSub.java
│ │ │ ├── BizStock.java
│ │ │ ├── Msg.java
│ │ │ ├── MsgState.java
│ │ │ ├── RecAttachment.java
│ │ │ ├── RecLoginHistory.java
│ │ │ ├── RecUserAction.java
│ │ │ ├── StatFinishOrder.java
│ │ │ ├── StatProfitGoods.java
│ │ │ ├── StatProfitTotal.java
│ │ │ ├── SysCategory.java
│ │ │ ├── SysCustomer.java
│ │ │ ├── SysDepartment.java
│ │ │ ├── SysRegion.java
│ │ │ ├── SysResource.java
│ │ │ ├── SysRole.java
│ │ │ ├── SysSupplier.java
│ │ │ └── SysUser.java
│ │ └── vo
│ │ │ ├── CustomerVo.java
│ │ │ ├── DepartmentVo.java
│ │ │ ├── LoginParam.java
│ │ │ ├── LoginSuccessInfo.java
│ │ │ ├── PasswordUpdateParam.java
│ │ │ ├── PurchaseInboundVo.java
│ │ │ ├── PurchaseOrderVo.java
│ │ │ ├── R.java
│ │ │ ├── RegisterParam.java
│ │ │ ├── SellOrderVo.java
│ │ │ ├── SellOutboundVo.java
│ │ │ ├── SocketEventVo.java
│ │ │ ├── SocketOfflineVo.java
│ │ │ ├── SupplierVo.java
│ │ │ ├── UserVo.java
│ │ │ ├── export
│ │ │ ├── PurchaseInboundExport.java
│ │ │ ├── PurchaseOrderExport.java
│ │ │ ├── SellOrderExport.java
│ │ │ ├── SellOutboundExport.java
│ │ │ └── StockExport.java
│ │ │ ├── result
│ │ │ ├── PageResult.java
│ │ │ ├── RegionValueResult.java
│ │ │ └── StockSearchResult.java
│ │ │ ├── search
│ │ │ ├── BaseSearch.java
│ │ │ ├── CategorySearch.java
│ │ │ ├── CustomerSearch.java
│ │ │ ├── DocHistorySearch.java
│ │ │ ├── DocSearch.java
│ │ │ ├── LoginHistorySearch.java
│ │ │ ├── MsgPersonalSearch.java
│ │ │ ├── MsgSearch.java
│ │ │ ├── PurchaseInboundSearch.java
│ │ │ ├── PurchaseOrderSearch.java
│ │ │ ├── RoleSearch.java
│ │ │ ├── SellOrderSearch.java
│ │ │ ├── SellOutboundSearch.java
│ │ │ ├── StockSearch.java
│ │ │ ├── SupplierSearch.java
│ │ │ ├── UserActionSearch.java
│ │ │ └── UserSearch.java
│ │ │ ├── statictis
│ │ │ └── FourBlockStat.java
│ │ │ └── update
│ │ │ ├── DocStatusUpdate.java
│ │ │ └── UserUpdatePwd.java
│ │ ├── module
│ │ ├── PermissionModule.java
│ │ └── WebSocketServer.java
│ │ ├── schedule
│ │ ├── DocTask.java
│ │ ├── SessionTask.java
│ │ └── StatisticTask.java
│ │ ├── service
│ │ ├── AccountService.java
│ │ ├── BizStockService.java
│ │ ├── FileService.java
│ │ ├── RecService.java
│ │ ├── StatisticService.java
│ │ ├── doc
│ │ │ ├── BizDocHistoryService.java
│ │ │ ├── BizPurchaseInboundService.java
│ │ │ ├── BizPurchaseOrderService.java
│ │ │ ├── BizSellOrderService.java
│ │ │ └── BizSellOutboundService.java
│ │ ├── msg
│ │ │ ├── MsgService.java
│ │ │ └── MsgUserService.java
│ │ └── sys
│ │ │ ├── SysCategoryService.java
│ │ │ ├── SysCustomerService.java
│ │ │ ├── SysDepartmentService.java
│ │ │ ├── SysResourceService.java
│ │ │ ├── SysRoleService.java
│ │ │ ├── SysSupplierService.java
│ │ │ └── SysUserService.java
│ │ └── util
│ │ ├── DateUtil.java
│ │ ├── DocUtil.java
│ │ ├── ExcelUtil.java
│ │ ├── IpUtil.java
│ │ ├── RedisUtil.java
│ │ ├── SecurityUtil.java
│ │ ├── SessionUtil.java
│ │ ├── SpringUtil.java
│ │ ├── ThreadUtil.java
│ │ ├── Util.java
│ │ ├── WebSocketUtil.java
│ │ └── WebUtil.java
│ └── resources
│ ├── application-local.yml
│ ├── application.yml
│ ├── mapper
│ ├── BizPurchaseInbound.xml
│ ├── BizPurchaseInboundSub.xml
│ ├── BizPurchaseOrder.xml
│ ├── BizPurchaseOrderSub.xml
│ ├── BizSellOrder.xml
│ ├── BizSellOrderSub.xml
│ ├── BizSellOutbound.xml
│ ├── BizSellOutboundSub.xml
│ ├── BizStock.xml
│ ├── Msg.xml
│ ├── RecAttachment.xml
│ ├── Statistic.xml
│ ├── SysCategory.xml
│ ├── SysCustomer.xml
│ ├── SysDepartment.xml
│ ├── SysResource.xml
│ └── SysSupplier.xml
│ └── script
│ ├── get_doc_id.lua
│ └── increase_and_expire.lua
└── vue
├── full
├── .gitignore
├── babel.config.js
├── element-ui-personal
│ ├── component
│ │ └── Message
│ │ │ ├── index.js
│ │ │ └── main.vue
│ ├── index.js
│ └── style
│ │ ├── index.scss
│ │ └── message.scss
├── package-lock.json
├── package.json
├── public
│ ├── favicon.ico
│ ├── index.html
│ └── static
│ │ ├── echarts
│ │ └── macarons.js
│ │ ├── img
│ │ ├── dot1.png
│ │ ├── dot2.png
│ │ ├── dot3.png
│ │ ├── dot4.png
│ │ ├── fileType
│ │ │ ├── doc.png
│ │ │ ├── pdf.png
│ │ │ ├── ppt.png
│ │ │ ├── rar.png
│ │ │ ├── txt.png
│ │ │ ├── xls.png
│ │ │ └── zip.png
│ │ └── logo.svg
│ │ ├── js
│ │ ├── cjpeg.min.js
│ │ ├── exceljs.min.js
│ │ └── pngquant.min.js
│ │ ├── json
│ │ └── region-pca.json
│ │ ├── lightgallery
│ │ ├── lg-pager.min.js
│ │ ├── lg-thumbnail.min.js
│ │ └── lg-zoom.min.js
│ │ ├── live2d
│ │ ├── live2d.min.js
│ │ ├── waifu-tips.json
│ │ └── waifu.css
│ │ └── tinymce
│ │ └── langs
│ │ └── zh_CN.js
├── src
│ ├── App.vue
│ ├── api
│ │ ├── account
│ │ │ └── index.js
│ │ ├── doc
│ │ │ ├── history.js
│ │ │ ├── purchase
│ │ │ │ ├── inbound.js
│ │ │ │ └── order.js
│ │ │ └── sell
│ │ │ │ ├── order.js
│ │ │ │ └── outbound.js
│ │ ├── file
│ │ │ └── index.js
│ │ ├── message
│ │ │ ├── manage.js
│ │ │ └── user.js
│ │ ├── record
│ │ │ └── index.js
│ │ ├── request.js
│ │ ├── statistic
│ │ │ └── index.js
│ │ ├── stock
│ │ │ └── current.js
│ │ └── system
│ │ │ ├── category.js
│ │ │ ├── customer.js
│ │ │ ├── department.js
│ │ │ ├── resource.js
│ │ │ ├── role.js
│ │ │ ├── supplier.js
│ │ │ └── user.js
│ ├── asset
│ │ └── icon
│ │ │ ├── index.js
│ │ │ └── svg
│ │ │ ├── bug.svg
│ │ │ ├── check.svg
│ │ │ ├── develop.svg
│ │ │ ├── documentation.svg
│ │ │ ├── eye-open.svg
│ │ │ ├── eye.svg
│ │ │ ├── home.svg
│ │ │ ├── icon.svg
│ │ │ ├── message.svg
│ │ │ ├── money.svg
│ │ │ ├── password.svg
│ │ │ ├── qq.svg
│ │ │ ├── sell.svg
│ │ │ ├── shopping.svg
│ │ │ ├── show.svg
│ │ │ ├── stock.svg
│ │ │ ├── system.svg
│ │ │ └── user.svg
│ ├── component
│ │ ├── Charts
│ │ │ └── PieChart.vue
│ │ ├── CollapseCard
│ │ │ └── index.vue
│ │ ├── Empty
│ │ │ ├── DefaultEmptyImage.vue
│ │ │ ├── index.vue
│ │ │ └── style.scss
│ │ ├── ExtraArea
│ │ │ └── index.vue
│ │ ├── Icon
│ │ │ └── index.vue
│ │ ├── LinerProgress
│ │ │ ├── index.vue
│ │ │ └── style.scss
│ │ ├── OrgTree
│ │ │ ├── index.vue
│ │ │ ├── node.vue
│ │ │ └── style.scss
│ │ ├── RegionSelector
│ │ │ ├── Tab
│ │ │ │ ├── index.vue
│ │ │ │ └── style.scss
│ │ │ ├── Tree
│ │ │ │ ├── TreeDialog.vue
│ │ │ │ └── index.vue
│ │ │ ├── index.vue
│ │ │ ├── mixin.js
│ │ │ └── store.js
│ │ ├── Skeleton
│ │ │ ├── constant.js
│ │ │ ├── index.vue
│ │ │ └── style.scss
│ │ ├── TreeSelect
│ │ │ └── index.vue
│ │ ├── Upload
│ │ │ ├── CardList.vue
│ │ │ ├── Qiniu.vue
│ │ │ └── style.scss
│ │ ├── abstract
│ │ │ ├── Dialog
│ │ │ │ ├── LoadingMask.vue
│ │ │ │ ├── index.vue
│ │ │ │ └── style.scss
│ │ │ ├── Form
│ │ │ │ ├── index.vue
│ │ │ │ └── item.vue
│ │ │ ├── Pagination
│ │ │ │ └── index.vue
│ │ │ └── Table
│ │ │ │ └── index.vue
│ │ ├── biz
│ │ │ ├── CategoryTree
│ │ │ │ └── index.vue
│ │ │ ├── UserSelector
│ │ │ │ ├── SimpleMultipleUserSelector.vue
│ │ │ │ └── index.js
│ │ │ └── doc
│ │ │ │ ├── DocHistory.vue
│ │ │ │ └── DocSteps.vue
│ │ ├── editor
│ │ │ ├── JsonEditor.vue
│ │ │ └── RichTextEditor.vue
│ │ └── form
│ │ │ ├── Anchor
│ │ │ └── index.vue
│ │ │ ├── Search
│ │ │ └── index.vue
│ │ │ └── ValidateInfo
│ │ │ ├── index.vue
│ │ │ └── style.scss
│ ├── config
│ │ └── index.js
│ ├── directive
│ │ ├── dragDialog.js
│ │ ├── index.js
│ │ └── ripple
│ │ │ ├── index.js
│ │ │ └── style.scss
│ ├── filter
│ │ └── index.js
│ ├── globalMethod
│ │ ├── BottomTip
│ │ │ ├── index.js
│ │ │ └── main.vue
│ │ ├── Guide
│ │ │ ├── index.js
│ │ │ ├── main.vue
│ │ │ ├── style.scss
│ │ │ └── utils.js
│ │ ├── ImageViewer
│ │ │ └── index.js
│ │ ├── SignautreBoard
│ │ │ ├── index.js
│ │ │ └── main.vue
│ │ ├── Verify
│ │ │ ├── image
│ │ │ │ ├── btn_move.png
│ │ │ │ ├── btn_stop.png
│ │ │ │ ├── icon_close.png
│ │ │ │ ├── icon_info.png
│ │ │ │ ├── icon_refresh_bottom.png
│ │ │ │ ├── icon_refresh_top.png
│ │ │ │ ├── loading.png
│ │ │ │ └── track.png
│ │ │ ├── index.js
│ │ │ ├── main.vue
│ │ │ └── style.scss
│ │ └── index.js
│ ├── layout
│ │ ├── component
│ │ │ ├── Footer
│ │ │ │ ├── index.vue
│ │ │ │ └── style.scss
│ │ │ ├── HeaderRight
│ │ │ │ └── index.vue
│ │ │ ├── NotifyBell
│ │ │ │ ├── index.vue
│ │ │ │ └── style.scss
│ │ │ └── SettingDrawer
│ │ │ │ ├── component
│ │ │ │ └── checkbox
│ │ │ │ │ ├── ColorCheckbox.vue
│ │ │ │ │ ├── Group.vue
│ │ │ │ │ ├── ImgCheckbox.vue
│ │ │ │ │ ├── mixin.js
│ │ │ │ │ └── style.scss
│ │ │ │ ├── index.vue
│ │ │ │ ├── mixin
│ │ │ │ ├── tagsViewPersistent.js
│ │ │ │ └── tagsViewShortcut.js
│ │ │ │ └── style.scss
│ │ ├── index.vue
│ │ ├── mixin
│ │ │ └── offline.js
│ │ └── style.scss
│ ├── main.js
│ ├── mixin
│ │ ├── chart
│ │ │ ├── index.js
│ │ │ ├── logic.js
│ │ │ └── resize.js
│ │ ├── dialogMixin.js
│ │ ├── docDetailMixin.js
│ │ ├── docTableMixin.js
│ │ ├── tablePageMixin.js
│ │ └── treePageMixin.js
│ ├── plugin
│ │ ├── canvasAnimation
│ │ │ ├── firework
│ │ │ │ ├── Particle.js
│ │ │ │ ├── Rocket.js
│ │ │ │ ├── Time.js
│ │ │ │ ├── Trail.js
│ │ │ │ ├── Vector.js
│ │ │ │ └── index.js
│ │ │ ├── fluxRay
│ │ │ │ ├── Particle.js
│ │ │ │ └── index.js
│ │ │ ├── godrays
│ │ │ │ ├── index.js
│ │ │ │ └── original.js
│ │ │ ├── moveFollowMouse
│ │ │ │ ├── Particle.js
│ │ │ │ └── index.js
│ │ │ ├── particleBall
│ │ │ │ ├── Particle.js
│ │ │ │ ├── Vector.js
│ │ │ │ ├── index.js
│ │ │ │ └── util.js
│ │ │ ├── particleNetwork
│ │ │ │ ├── Particle.js
│ │ │ │ └── index.js
│ │ │ ├── particleWave
│ │ │ │ └── index.js
│ │ │ ├── reflectRain
│ │ │ │ ├── RainDrop.js
│ │ │ │ ├── Vector.js
│ │ │ │ └── index.js
│ │ │ ├── sparkRain
│ │ │ │ ├── Spark.js
│ │ │ │ ├── index.js
│ │ │ │ └── util.js
│ │ │ └── sunlight
│ │ │ │ ├── Particle.js
│ │ │ │ └── index.js
│ │ ├── imageCompress
│ │ │ ├── cjpeg.js
│ │ │ ├── pngquant.js
│ │ │ └── util.js
│ │ ├── live2d
│ │ │ └── index.js
│ │ └── webgl
│ │ │ └── fluid
│ │ │ ├── Material.js
│ │ │ ├── Pointer.js
│ │ │ ├── Program.js
│ │ │ ├── config.js
│ │ │ ├── factory.js
│ │ │ ├── index.js
│ │ │ ├── obj.js
│ │ │ ├── shader.js
│ │ │ └── util.js
│ ├── router
│ │ ├── define.js
│ │ ├── guardian
│ │ │ ├── accessControl.js
│ │ │ ├── index.js
│ │ │ └── nprogress.js
│ │ ├── index.js
│ │ ├── module
│ │ │ ├── admin
│ │ │ │ ├── child
│ │ │ │ │ ├── default.js
│ │ │ │ │ ├── message.js
│ │ │ │ │ ├── purchase.js
│ │ │ │ │ ├── sell.js
│ │ │ │ │ ├── stock.js
│ │ │ │ │ └── system.js
│ │ │ │ └── index.js
│ │ │ ├── dev
│ │ │ │ └── index.js
│ │ │ ├── doc
│ │ │ │ └── index.js
│ │ │ ├── example
│ │ │ │ ├── child
│ │ │ │ │ ├── component.js
│ │ │ │ │ ├── cool.js
│ │ │ │ │ ├── directive.js
│ │ │ │ │ ├── globalMethod.js
│ │ │ │ │ ├── icon.js
│ │ │ │ │ ├── iframe.js
│ │ │ │ │ └── test.js
│ │ │ │ └── index.js
│ │ │ └── index.js
│ │ └── util.js
│ ├── store
│ │ ├── index.js
│ │ ├── module
│ │ │ ├── app.js
│ │ │ ├── dataCache.js
│ │ │ ├── message.js
│ │ │ ├── needSearch.js
│ │ │ ├── resource.js
│ │ │ ├── setting.js
│ │ │ ├── user.js
│ │ │ └── websocket.js
│ │ └── util.js
│ ├── style
│ │ ├── cover
│ │ │ ├── element-ui.scss
│ │ │ └── var.scss
│ │ ├── index.scss
│ │ ├── mixin.scss
│ │ ├── nprogress.scss
│ │ └── var.scss
│ ├── util
│ │ ├── auth.js
│ │ ├── browser.js
│ │ ├── element-ui
│ │ │ ├── elForm.js
│ │ │ └── elTree.js
│ │ ├── excel
│ │ │ ├── common.js
│ │ │ ├── exceljs.js
│ │ │ └── index.js
│ │ ├── file.js
│ │ ├── index.js
│ │ ├── math.js
│ │ ├── message.js
│ │ ├── path.js
│ │ ├── route.js
│ │ ├── secret.js
│ │ ├── storage.js
│ │ ├── tree.js
│ │ ├── validate.js
│ │ ├── vue.js
│ │ └── worker.js
│ └── view
│ │ ├── _app
│ │ ├── 403.vue
│ │ ├── 404.vue
│ │ ├── 500.vue
│ │ └── login
│ │ │ ├── LoginForm.vue
│ │ │ ├── RegisterForm.vue
│ │ │ ├── SetAnimation.vue
│ │ │ ├── index.vue
│ │ │ └── style.scss
│ │ ├── _common
│ │ ├── DetailPage
│ │ │ ├── index.vue
│ │ │ └── style.scss
│ │ ├── ExceptionPage
│ │ │ ├── index.vue
│ │ │ └── style.scss
│ │ ├── ListPage
│ │ │ ├── autoAdaptHeightMixin.js
│ │ │ └── index.vue
│ │ └── SkeletonPage
│ │ │ ├── index.vue
│ │ │ └── style.scss
│ │ ├── admin
│ │ ├── index
│ │ │ ├── component
│ │ │ │ ├── DailyFinishOrderStat.vue
│ │ │ │ ├── DailyProfitStat.vue
│ │ │ │ ├── PanelGroup
│ │ │ │ │ ├── PanelGroupItem.vue
│ │ │ │ │ └── index.vue
│ │ │ │ └── TotalProfitGoods.vue
│ │ │ └── indexPage.vue
│ │ ├── message
│ │ │ ├── manage
│ │ │ │ ├── EditDialog.vue
│ │ │ │ └── indexPage.vue
│ │ │ └── user
│ │ │ │ ├── AutoHidden.vue
│ │ │ │ ├── MessageStream.vue
│ │ │ │ └── indexPage.vue
│ │ ├── purchase
│ │ │ ├── inbound
│ │ │ │ ├── component
│ │ │ │ │ └── OrderSelector.vue
│ │ │ │ ├── detailPage.vue
│ │ │ │ └── indexPage.vue
│ │ │ └── order
│ │ │ │ ├── component
│ │ │ │ ├── CategorySelector.vue
│ │ │ │ └── SupplierSelector.vue
│ │ │ │ ├── detailPage.vue
│ │ │ │ └── indexPage.vue
│ │ ├── sell
│ │ │ ├── order
│ │ │ │ ├── component
│ │ │ │ │ ├── CustomerSelector.vue
│ │ │ │ │ └── StockSelector.vue
│ │ │ │ ├── detailPage.vue
│ │ │ │ └── indexPage.vue
│ │ │ └── outbound
│ │ │ │ ├── component
│ │ │ │ ├── OrderSelector.vue
│ │ │ │ └── StockSelector.vue
│ │ │ │ ├── detailPage.vue
│ │ │ │ └── indexPage.vue
│ │ ├── stock
│ │ │ └── current
│ │ │ │ ├── DetailDialog.vue
│ │ │ │ └── indexPage.vue
│ │ ├── system
│ │ │ ├── category
│ │ │ │ ├── component
│ │ │ │ │ ├── Form.vue
│ │ │ │ │ └── List.vue
│ │ │ │ └── indexPage.vue
│ │ │ ├── customer
│ │ │ │ ├── EditDialog.vue
│ │ │ │ └── indexPage.vue
│ │ │ ├── department
│ │ │ │ ├── component
│ │ │ │ │ ├── EditDialog.vue
│ │ │ │ │ ├── OrgTreeView.vue
│ │ │ │ │ └── ZoomControl.vue
│ │ │ │ └── indexPage.vue
│ │ │ ├── menu
│ │ │ │ ├── common.js
│ │ │ │ └── indexPage.vue
│ │ │ ├── role
│ │ │ │ ├── EditDialog.vue
│ │ │ │ └── indexPage.vue
│ │ │ ├── supplier
│ │ │ │ ├── EditDialog.vue
│ │ │ │ └── indexPage.vue
│ │ │ └── user
│ │ │ │ ├── component
│ │ │ │ ├── DepartmentSelector.vue
│ │ │ │ ├── EditDialog.vue
│ │ │ │ └── RoleSelector.vue
│ │ │ │ └── indexPage.vue
│ │ └── userCenter
│ │ │ ├── component
│ │ │ ├── Account.vue
│ │ │ ├── Avatar.vue
│ │ │ ├── LoginHistory.vue
│ │ │ ├── UserAction.vue
│ │ │ └── UserCard.vue
│ │ │ └── indexPage.vue
│ │ ├── dev
│ │ └── index.vue
│ │ └── example
│ │ ├── component
│ │ ├── regionSelectorPage.vue
│ │ ├── skeletonPage.vue
│ │ ├── treeSelectPage.vue
│ │ └── uploadPage.vue
│ │ ├── cool
│ │ ├── fluidPage.vue
│ │ └── l2dPage.vue
│ │ ├── directive
│ │ ├── dragDialogPage.vue
│ │ └── ripplePage.vue
│ │ ├── globalMethod
│ │ ├── bottomTipPage.vue
│ │ ├── guidePage.vue
│ │ ├── imageViewerPage.vue
│ │ ├── messagePage.vue
│ │ ├── signaturePage.vue
│ │ └── verifyPage.vue
│ │ ├── icon
│ │ ├── element-icon.js
│ │ └── indexPage.vue
│ │ └── test
│ │ ├── cache
│ │ └── detailPage.vue
│ │ └── develop
│ │ ├── component
│ │ ├── ApiSpeedTest.vue
│ │ ├── ExportExcelTest.vue
│ │ ├── ImageCompressTest.vue
│ │ └── WebsocketTest.vue
│ │ └── indexPage.vue
├── svgo.config.js
└── vue.config.js
└── template
├── .gitignore
├── babel.config.js
├── element-ui-personal
├── component
│ └── Message
│ │ ├── index.js
│ │ └── main.vue
├── index.js
└── style
│ ├── index.scss
│ └── message.scss
├── package-lock.json
├── package.json
├── public
├── favicon.ico
├── index.html
└── static
│ ├── img
│ ├── dot1.png
│ ├── dot2.png
│ ├── dot3.png
│ ├── dot4.png
│ └── logo.svg
│ └── lightgallery
│ ├── lg-pager.min.js
│ ├── lg-thumbnail.min.js
│ └── lg-zoom.min.js
├── src
├── App.vue
├── asset
│ ├── icon
│ │ ├── index.js
│ │ ├── svg
│ │ │ ├── bug.svg
│ │ │ ├── check.svg
│ │ │ ├── develop.svg
│ │ │ ├── documentation.svg
│ │ │ ├── eye-open.svg
│ │ │ ├── eye.svg
│ │ │ ├── home.svg
│ │ │ ├── icon.svg
│ │ │ ├── message.svg
│ │ │ ├── money.svg
│ │ │ ├── password.svg
│ │ │ ├── qq.svg
│ │ │ ├── sell.svg
│ │ │ ├── shopping.svg
│ │ │ ├── show.svg
│ │ │ ├── stock.svg
│ │ │ ├── system.svg
│ │ │ └── user.svg
│ │ └── svgo.yml
│ └── style
│ │ ├── cover
│ │ ├── element-ui.scss
│ │ └── var.scss
│ │ ├── index.scss
│ │ ├── mixin.scss
│ │ ├── nprogress.scss
│ │ └── var.scss
├── component
│ ├── Icon
│ │ └── index.vue
│ └── Skeleton
│ │ ├── constant.js
│ │ ├── index.vue
│ │ └── style.scss
├── config
│ └── index.js
├── layout
│ ├── component
│ │ ├── Footer
│ │ │ ├── index.vue
│ │ │ └── style.scss
│ │ └── SettingDrawer
│ │ │ ├── component
│ │ │ └── checkbox
│ │ │ │ ├── ColorCheckbox.vue
│ │ │ │ ├── Group.vue
│ │ │ │ ├── ImgCheckbox.vue
│ │ │ │ ├── mixin.js
│ │ │ │ └── style.scss
│ │ │ ├── index.vue
│ │ │ └── style.scss
│ ├── index.vue
│ ├── mixin
│ │ ├── tagsViewPersistent.js
│ │ └── tagsViewShortcut.js
│ └── style.scss
├── main.js
├── router
│ ├── define.js
│ ├── guardian
│ │ ├── accessControl.js
│ │ ├── avoidReuse.js
│ │ ├── iframe.js
│ │ ├── index.js
│ │ ├── nprogress.js
│ │ └── setTitle.js
│ ├── index.js
│ ├── module
│ │ ├── admin
│ │ │ ├── child
│ │ │ │ └── default.js
│ │ │ └── index.js
│ │ ├── doc
│ │ │ └── index.js
│ │ ├── example
│ │ │ ├── child
│ │ │ │ ├── component.js
│ │ │ │ ├── globalMethod.js
│ │ │ │ ├── icon.js
│ │ │ │ ├── iframe.js
│ │ │ │ └── test.js
│ │ │ └── index.js
│ │ └── index.js
│ └── util.js
├── store
│ ├── index.js
│ ├── module
│ │ ├── resource.js
│ │ └── user.js
│ └── util.js
├── util
│ ├── auth.js
│ ├── index.js
│ ├── message.js
│ ├── secret.js
│ ├── storage.js
│ ├── tree.js
│ └── validate.js
└── view
│ ├── _app
│ ├── 403.vue
│ ├── 404.vue
│ ├── 500.vue
│ ├── login
│ │ ├── LoginForm.vue
│ │ ├── RegisterForm.vue
│ │ ├── index.vue
│ │ └── style.scss
│ └── redirect.vue
│ ├── _common
│ ├── ExceptionPage
│ │ ├── index.vue
│ │ └── style.scss
│ └── SkeletonPage
│ │ ├── index.vue
│ │ └── style.scss
│ ├── admin
│ └── index
│ │ └── indexPage.vue
│ └── example
│ ├── component
│ └── skeletonPage.vue
│ ├── globalMethod
│ └── messagePage.vue
│ ├── icon
│ ├── element-icon.js
│ └── indexPage.vue
│ └── test
│ └── cache
│ └── detailPage.vue
└── vue.config.js
/README.md:
--------------------------------------------------------------------------------
1 | ## 简介
2 |
3 | 一个前后端分离的简易进销存后台管理系统,基于 [SpringBoot](https://spring.io/projects/spring-boot/) 和 [vue-element-admin](https://github.com/PanJiaChen/vue-element-admin)实现,具备常见的后台管理功能,后端另有SpringCloud版本。
4 |
5 | - [在线预览](https://toesbieya.cn/jxc-admin) test/123456 (出现被挤掉的情况时请注册一个新账号)
6 |
7 | - [文档](https://doc.toesbieya.cn/jxc-admin)
8 |
9 | **服务器迁移完成,可以访问了**
10 |
--------------------------------------------------------------------------------
/docs/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | node_modules
3 | /dist
4 | /doc
5 | /test
6 |
7 | # local env files
8 | .env.local
9 | .env.*.local
10 |
11 | # Log files
12 | npm-debug.log*
13 | yarn-debug.log*
14 | yarn-error.log*
15 |
16 | # Editor directories and files
17 | .idea
18 | .vscode
19 | *.suo
20 | *.ntvs*
21 | *.njsproj
22 | *.sln
23 | *.sw?
24 |
--------------------------------------------------------------------------------
/docs/.vuepress/public/puzzle-verify.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toesbieya/jxc-admin/5ee06acbe09a68de6d8957be324152ff8978b182/docs/.vuepress/public/puzzle-verify.png
--------------------------------------------------------------------------------
/docs/.vuepress/public/region-selector_tab.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toesbieya/jxc-admin/5ee06acbe09a68de6d8957be324152ff8978b182/docs/.vuepress/public/region-selector_tab.png
--------------------------------------------------------------------------------
/docs/.vuepress/public/search-form_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toesbieya/jxc-admin/5ee06acbe09a68de6d8957be324152ff8978b182/docs/.vuepress/public/search-form_1.png
--------------------------------------------------------------------------------
/docs/.vuepress/public/search-form_2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toesbieya/jxc-admin/5ee06acbe09a68de6d8957be324152ff8978b182/docs/.vuepress/public/search-form_2.png
--------------------------------------------------------------------------------
/docs/.vuepress/public/tree-select_multiple.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toesbieya/jxc-admin/5ee06acbe09a68de6d8957be324152ff8978b182/docs/.vuepress/public/tree-select_multiple.png
--------------------------------------------------------------------------------
/docs/.vuepress/public/tree-select_single.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toesbieya/jxc-admin/5ee06acbe09a68de6d8957be324152ff8978b182/docs/.vuepress/public/tree-select_single.png
--------------------------------------------------------------------------------
/docs/.vuepress/public/upload-file.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toesbieya/jxc-admin/5ee06acbe09a68de6d8957be324152ff8978b182/docs/.vuepress/public/upload-file.png
--------------------------------------------------------------------------------
/docs/.vuepress/public/布局-设置面板.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toesbieya/jxc-admin/5ee06acbe09a68de6d8957be324152ff8978b182/docs/.vuepress/public/布局-设置面板.png
--------------------------------------------------------------------------------
/docs/.vuepress/public/布局.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toesbieya/jxc-admin/5ee06acbe09a68de6d8957be324152ff8978b182/docs/.vuepress/public/布局.png
--------------------------------------------------------------------------------
/docs/.vuepress/public/路由和菜单-首屏加载效果.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toesbieya/jxc-admin/5ee06acbe09a68de6d8957be324152ff8978b182/docs/.vuepress/public/路由和菜单-首屏加载效果.png
--------------------------------------------------------------------------------
/docs/.vuepress/public/路由和菜单-骨架屏.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toesbieya/jxc-admin/5ee06acbe09a68de6d8957be324152ff8978b182/docs/.vuepress/public/路由和菜单-骨架屏.png
--------------------------------------------------------------------------------
/docs/README.md:
--------------------------------------------------------------------------------
1 | ---
2 | home: true
3 | heroImage: https://wpimg.wallstcn.com/69a1c46c-eb1c-4b46-8bd4-e9e686ef5251.png
4 | heroText: jxc-admin
5 | tagline: 前后端分离的简易进销存后台管理系统。
6 | actionText: 快速上手 →
7 | actionLink: ./installation/
8 | footer: MIT Licensed | Copyright © 2020-present toesbieya
9 | ---
10 |
--------------------------------------------------------------------------------
/docs/backend/README.md:
--------------------------------------------------------------------------------
1 | # 介绍
2 |
3 | 后端分local和cloud版,对应 `java/local` 和 `java/cloud` 目录,可以根据自行选择。
4 |
5 | local版基于SpringBoot、SpringMVC、Mybatis-Plus开发。
6 |
7 | cloud版基于SpringBoot、SpringCloud、SpringCloudAlibaba、SpringMVC、Mybatis-Plus开发
8 | ,服务间调用使用dubbo,未使用分布式事务。
9 |
10 | 目前两者在功能上的差别就是local版支持动态修改资源的限流设置,而cloud版由于还在研究sentinel中,
11 | 所以还未实现,暂时以gateway的 `default-filters` 作为替代。
12 |
13 | 具体文档不写啦,代码写得太垃圾了。。。
14 |
--------------------------------------------------------------------------------
/docs/frontend/directives.md:
--------------------------------------------------------------------------------
1 | # 指令
2 |
3 | ## el-dialog拖拽
4 |
5 | 已全局注册,使用方式:
6 | ```html
7 |
8 | ```
9 |
10 | ## 波纹
11 |
12 | 从[quasar](https://quasar.dev/vue-directives/material-ripple)处搬运
13 | 已全局注册,使用方式:
14 | ```html
15 |
16 | ```
17 | 更多细节请根据quasar文档使用
18 |
19 | ## element-ui自带
20 |
21 | ### clickOutside
22 |
23 | 未全局注册,使用方式:
24 | ```js
25 | //引入
26 | import ClickOutside from 'element-ui/lib/utils/clickoutside'
27 |
28 | //组件中注册
29 | directives: {ClickOutside}
30 |
31 | //使用
32 |
33 | ```
34 |
--------------------------------------------------------------------------------
/docs/frontend/filters.md:
--------------------------------------------------------------------------------
1 | # 过滤器
2 |
3 | 项目中将 `@/filter` 中的文件注册为全局过滤器,各自功能作用可以查看注释或代码。
4 |
5 | :::tip 小技巧
6 | 全局注册的过滤器可以在vue示例中以this.$options.filters.xxx调用
7 | :::
8 |
--------------------------------------------------------------------------------
/docs/frontend/global-methods/bottom-tip.md:
--------------------------------------------------------------------------------
1 | # 底部警告信息弹框
2 |
3 | ### 使用:
4 | ```js
5 | this.$bottomTip('hello')
6 | ```
7 |
--------------------------------------------------------------------------------
/docs/frontend/global-methods/image-viewer.md:
--------------------------------------------------------------------------------
1 | # 图片预览
2 |
3 | ### 使用:
4 |
5 | ```js
6 | //开始预览
7 | this.$image({index, urlList})
8 |
9 | //退出预览
10 | this.$image.close()
11 | ```
12 |
13 | ### $image({index, urlList})
14 |
15 | - `index` : `number`,当前图片在图片数组中的下标。
16 |
17 | - `urlList` : `array`,需要预览的图片的url数组
18 |
--------------------------------------------------------------------------------
/docs/frontend/global-methods/puzzle-verify.md:
--------------------------------------------------------------------------------
1 | # 拼图滑块验证
2 |
3 |
4 |
5 | ### 使用:
6 |
7 | ```js
8 | this.$verify().then(...).catch(...)
9 | ```
10 |
11 | 返回一个 `promise`,如果验证失败会 `reject`,否则 `resolve`
12 |
--------------------------------------------------------------------------------
/docs/frontend/global-methods/signature.md:
--------------------------------------------------------------------------------
1 | # 手写签名
2 |
3 | ### 使用:
4 |
5 | ```js
6 | //开始签名
7 | this.$signature({image, lineWidth, lineColor, onConfirm)
8 |
9 | //退出签名
10 | this.$signature.close()
11 | ```
12 |
13 | ### $signature({image, lineWidth, lineColor, onConfirm)
14 |
15 | - `image` : `string`,需要回显的签名图片的src。
16 |
17 | - `lineWidth` : `number`,线的宽度,默认 `6`
18 |
19 | - `lineColor` : `string`,线的颜色,默认 `'#000000'`
20 |
21 | - `onConfirm` : `function`,签名完毕后触发,回调参数为签名图片的base64
22 |
--------------------------------------------------------------------------------
/docs/frontend/icon.md:
--------------------------------------------------------------------------------
1 | # 图标
2 |
3 | 组件已全局注册,以``来使用。
4 | 当`icon`属性以`svg-`开头时,将渲染为`svg`,否则为`i`标签。
5 | svg的引入与[vue-element-admin](https://panjiachen.github.io/vue-element-admin-site/zh/guide/advanced/icon.html)相同。
6 |
--------------------------------------------------------------------------------
/docs/frontend/layout.md:
--------------------------------------------------------------------------------
1 | # 布局
2 |
3 |
4 |
5 | 该布局用的是[el-admin-layout](https://github.com/toesbieya/el-admin-layout) ,[文档](https://doc.toesbieya.cn/el-admin-layout/)
6 |
7 | 项目中没有用到该布局的页面只有 `@/router/define.js` 里的 `login`、`403`、`404`、`500`。
8 |
--------------------------------------------------------------------------------
/docs/frontend/mock.md:
--------------------------------------------------------------------------------
1 | # mock
2 |
3 | 如果不想依赖后端的话,需要将 `@/config` 中的 `useMock` 设为true,
4 | 同时在 `@/mock/controller` 里写对应的处理路由,项目中预先写了三个基础的路由,
5 | 可以让你进行 *登陆-登出* 的基础操作,可以照着代码自行扩展。
6 |
7 | 目前mock和代理不能共存,如果真想要这个功能的话,需要自己在`vue.config.js` 中的 `devServer.proxy` 设置拦截路径。
8 |
--------------------------------------------------------------------------------
/docs/frontend/new.md:
--------------------------------------------------------------------------------
1 | # 新增页面
2 |
3 | 1. 把数据请求api创建出来,在`@/api`下根据模块区分。
4 |
5 | 2. 在`@/view`下创建路由页面,根据模块区分,页面务必以`Page.vue`结尾。
6 |
7 | 3. 如果页面过大过复杂,建议按功能拆分,放在当前页面的文件夹里。
8 |
9 | 4. 独有的样式同样放在当前页面的文件夹里,能公用的提取到`@/asset/style`里。
10 |
11 | 5. 路由定义
12 | - 5.1 如果使用静态路由,在`@/router/module`下参考预设路由创建文件,并在`@/router/module/index.js`中导出。
13 | - 5.2 如果使用动态路由,需要在数据库或`系统管理 -> 菜单管理`中添加路由信息。
14 |
15 | 6. 如果需要创建vuex模块,请在`@/store/module`下创建,该文件夹下的js会被自动导出。
16 |
17 | 7. 如果页面之间存在公共组件,建议抽取出来放到`@/component`中
18 |
19 | 8. 如果页面之间存在公共逻辑,建议抽取出来放到`@/mixin`中
20 |
--------------------------------------------------------------------------------
/docs/frontend/plugins.md:
--------------------------------------------------------------------------------
1 | # 插件
2 |
3 | `@/plugin` 中放的是即使删掉也不会影响运行的东东,都通过`import().then()`的方式来引用。
4 |
5 | ## canvas动画
6 |
7 | 所有动画位于 `@/plugin/canvasAnimation`下,每一个文件夹都会导出一个`Animation`对象,
8 | 使用 `new Animation(canvas)`的方式来创建一个动画,想停止的话调用 `Animation.stop()` 即可。
9 |
10 | ## 图片压缩
11 |
12 | 支持 `png`、`jpg` 两种格式的图片,使用方法参考 `@/view/example/test/develop/component/ImageCompressTest.vue`。
13 |
14 | ::: tip
15 | 由于是以 `worker` 的形式调用,所以需要准备 `cjpeg.min.js` 和 `pngquant.min.js`,这两个文件都放在项目的 `public`下。
16 | :::
17 |
18 | ## 其他
19 |
20 | 此外项目中还有 `live2d` 和 `webgl` 两个插件,有兴趣的可以自行查看。
21 |
--------------------------------------------------------------------------------
/docs/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "docs",
3 | "version": "1.0.0",
4 | "scripts": {
5 | "dev": "vuepress dev .",
6 | "build": "vuepress build ."
7 | },
8 | "devDependencies": {
9 | "vuepress": "^1.5.2"
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/docs/start.md:
--------------------------------------------------------------------------------
1 | # 启动
2 |
3 | ### 前端
4 |
5 | ```shell script
6 | npm run serve
7 | ```
8 |
9 | ### 后端
10 |
11 | local版直接运行启动类即可
12 |
13 | cloud版请按以下步骤启动:
14 |
15 | 1. 下载并配制好nacos后,按照nacos的文档启动nacos。
16 |
17 | 2. 将`/nacos-config`下的文件打包成`DEFAULT_GROUP.ZIP`,然后在nacos的web端上导入。
18 |
19 | 3. 按一定顺序启动各个模块。`websocket`、`schedule` 这两个个可以按任意顺序启动,之后启动 `web/file`,
20 | 然后启动 `web/web-modules/record`,然后启动 `gateway`,剩余的 `web-modules` 中,`web/web-modules/account`
21 | 必须要在 `web/web-modules/system` 之后启动,`web/web-modules/document` 必须要在 `web/web-modules/stock` 之后启动,
22 | 剩余的可以按任意顺序启动。
23 |
--------------------------------------------------------------------------------
/java/cloud/.gitignore:
--------------------------------------------------------------------------------
1 | /target/
2 | /.idea/
3 | *.iml
4 | .mvn
5 | mvnw
6 | *.cmd
7 |
--------------------------------------------------------------------------------
/java/cloud/api/src/main/java/cn/toesbieya/jxc/api/FileApi.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.api;
2 |
3 | import java.util.List;
4 |
5 | public interface FileApi {
6 | String getToken();
7 |
8 | void delete(String key);
9 |
10 | void deleteBatch(String... key);
11 |
12 | default void deleteBatch(List key) {
13 | deleteBatch(key.toArray(new String[0]));
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/java/cloud/api/src/main/java/cn/toesbieya/jxc/api/StockApi.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.api;
2 |
3 | import cn.toesbieya.jxc.common.model.entity.BizStock;
4 | import cn.toesbieya.jxc.common.model.vo.StockOutboundVo;
5 | import cn.toesbieya.jxc.common.model.vo.StockSearch;
6 | import cn.toesbieya.jxc.common.model.vo.StockSearchResult;
7 |
8 | import java.util.List;
9 |
10 | public interface StockApi {
11 | List getByCondition(StockSearch vo);
12 |
13 | List getDetail(String cids);
14 |
15 | void inbound(List list);
16 |
17 | void outbound(List list);
18 | }
19 |
--------------------------------------------------------------------------------
/java/cloud/api/src/main/java/cn/toesbieya/jxc/api/system/DepartmentApi.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.api.system;
2 |
3 | import cn.toesbieya.jxc.common.model.entity.SysUser;
4 | import cn.toesbieya.jxc.common.model.vo.DepartmentVo;
5 |
6 | import java.util.Set;
7 |
8 | public interface DepartmentApi {
9 | //获取用户的数据范围(部门ID集合),返回null说明无需限制
10 | Set getUserDataScope(SysUser user);
11 |
12 | //获取带有全名的部门
13 | DepartmentVo getById(int id);
14 | }
15 |
--------------------------------------------------------------------------------
/java/cloud/api/src/main/java/cn/toesbieya/jxc/api/system/ResourceApi.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.api.system;
2 |
3 | import cn.toesbieya.jxc.common.model.entity.SysResource;
4 | import cn.toesbieya.jxc.common.model.entity.SysRole;
5 |
6 | import java.util.List;
7 |
8 | public interface ResourceApi {
9 | //获取已启用的数据接口列表
10 | List getEnableApi();
11 |
12 | //获取角色的权限列表,包含admin权限
13 | List getResourceByRole(SysRole role);
14 | }
15 |
--------------------------------------------------------------------------------
/java/cloud/api/src/main/java/cn/toesbieya/jxc/api/system/RoleApi.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.api.system;
2 |
3 | import cn.toesbieya.jxc.common.model.entity.SysRole;
4 |
5 | public interface RoleApi {
6 | SysRole getRoleById(Integer roleId);
7 | }
8 |
--------------------------------------------------------------------------------
/java/cloud/common/src/main/java/cn/toesbieya/jxc/common/constant/DocConstant.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.common.constant;
2 |
3 | public interface DocConstant {
4 | //更新单据ID时的redis锁的键
5 | String UPDATE_DOC_LOCK_KEY = "UPDATE_DOC";
6 |
7 | //单据ID的redis缓存的键
8 | String DOC_TYPE_REDIS_KEY = "DOC_ID";
9 |
10 | //单据类型
11 | String[] DOC_TYPE = {"CGDD", "CGRK", "CGTH", "XSDD", "XSCK", "XSTH"};
12 | }
13 |
--------------------------------------------------------------------------------
/java/cloud/common/src/main/java/cn/toesbieya/jxc/common/constant/SessionConstant.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.common.constant;
2 |
3 | public interface SessionConstant {
4 | //session过期时间,单位秒
5 | long EXPIRE = 3600 * 8;
6 |
7 | //存储用户信息的键的前缀
8 | String REDIS_NAMESPACE = "sessions:";
9 |
10 | //key过期事件的前缀
11 | String REDIS_EXPIRE_TOPIC_PREFIX = "__keyspace@0__:";
12 |
13 | //http headers中token的字段名
14 | String TOKEN_KEY = "X-Token";
15 |
16 | //区别无活动用户的时间间隔,单位秒
17 | long NO_ACTION_INTERVAL = 1800;
18 | }
19 |
--------------------------------------------------------------------------------
/java/cloud/common/src/main/java/cn/toesbieya/jxc/common/enumeration/DataScopeEnum.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.common.enumeration;
2 |
3 | public enum DataScopeEnum {
4 | ALL(1), SELF(2), SPECIFIC(3);
5 |
6 | private final int code;
7 |
8 | DataScopeEnum(int code) {
9 | this.code = code;
10 | }
11 |
12 | public int getCode() {
13 | return code;
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/java/cloud/common/src/main/java/cn/toesbieya/jxc/common/enumeration/GeneralStatusEnum.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.common.enumeration;
2 |
3 | public enum GeneralStatusEnum {
4 | DISABLED(0), ENABLED(1);
5 |
6 | private final int code;
7 |
8 | GeneralStatusEnum(int code) {
9 | this.code = code;
10 | }
11 |
12 | public int getCode() {
13 | return code;
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/java/cloud/common/src/main/java/cn/toesbieya/jxc/common/enumeration/ResourceTypeEnum.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.common.enumeration;
2 |
3 | public enum ResourceTypeEnum {
4 | ROOT(0), FOLDER(1), LEAF(2), API(3);
5 |
6 | private final int code;
7 |
8 | ResourceTypeEnum(int code) {
9 | this.code = code;
10 | }
11 |
12 | public int getCode() {
13 | return code;
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/java/cloud/common/src/main/java/cn/toesbieya/jxc/common/exception/JsonResultException.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.common.exception;
2 |
3 | public class JsonResultException extends RuntimeException {
4 | public JsonResultException(String message) {
5 | super(message);
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/java/cloud/common/src/main/java/cn/toesbieya/jxc/common/model/entity/BizDoc.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.common.model.entity;
2 |
3 | import lombok.Data;
4 |
5 | import java.io.Serializable;
6 |
7 | @Data
8 | public class BizDoc implements Serializable {
9 | private static final long serialVersionUID = 1L;
10 | private String id;
11 | private Integer cid;
12 | private String cname;
13 | private Long ctime;
14 | private Integer vid;
15 | private String vname;
16 | private Long vtime;
17 | private Integer status;
18 | private String remark;
19 | }
20 |
--------------------------------------------------------------------------------
/java/cloud/common/src/main/java/cn/toesbieya/jxc/common/model/entity/BizDocSub.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.common.model.entity;
2 |
3 | import lombok.Data;
4 |
5 | import java.io.Serializable;
6 | import java.math.BigDecimal;
7 |
8 | @Data
9 | public class BizDocSub implements Serializable {
10 | private static final long serialVersionUID = 1L;
11 | private Integer id;
12 | private String pid;
13 | private Integer cid;
14 | private String cname;
15 | private BigDecimal num;
16 | }
17 |
--------------------------------------------------------------------------------
/java/cloud/common/src/main/java/cn/toesbieya/jxc/common/model/entity/BizPurchaseInbound.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.common.model.entity;
2 |
3 | import lombok.Data;
4 | import lombok.EqualsAndHashCode;
5 | import lombok.ToString;
6 |
7 | @Data
8 | @ToString(callSuper = true)
9 | @EqualsAndHashCode(callSuper = true)
10 | public class BizPurchaseInbound extends BizDoc {
11 | private String pid;
12 | }
13 |
--------------------------------------------------------------------------------
/java/cloud/common/src/main/java/cn/toesbieya/jxc/common/model/entity/BizPurchaseInboundSub.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.common.model.entity;
2 |
3 | import lombok.Data;
4 | import lombok.EqualsAndHashCode;
5 | import lombok.ToString;
6 |
7 | @Data
8 | @ToString(callSuper = true)
9 | @EqualsAndHashCode(callSuper = true)
10 | public class BizPurchaseInboundSub extends BizDocSub {
11 |
12 | }
13 |
--------------------------------------------------------------------------------
/java/cloud/common/src/main/java/cn/toesbieya/jxc/common/model/entity/BizPurchaseOrder.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.common.model.entity;
2 |
3 | import lombok.Data;
4 | import lombok.EqualsAndHashCode;
5 | import lombok.NoArgsConstructor;
6 | import lombok.ToString;
7 |
8 | import java.math.BigDecimal;
9 |
10 | @Data
11 | @ToString(callSuper = true)
12 | @EqualsAndHashCode(callSuper = true)
13 | @NoArgsConstructor
14 | public class BizPurchaseOrder extends BizDoc {
15 | private Integer sid;
16 | private String sname;
17 | private Integer finish;
18 | private Long ftime;
19 | private BigDecimal total;
20 | }
21 |
--------------------------------------------------------------------------------
/java/cloud/common/src/main/java/cn/toesbieya/jxc/common/model/entity/BizPurchaseOrderSub.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.common.model.entity;
2 |
3 | import lombok.Data;
4 | import lombok.EqualsAndHashCode;
5 | import lombok.ToString;
6 |
7 | import java.math.BigDecimal;
8 |
9 | @Data
10 | @ToString(callSuper = true)
11 | @EqualsAndHashCode(callSuper = true)
12 | public class BizPurchaseOrderSub extends BizDocSub {
13 | private BigDecimal price;
14 | private BigDecimal remainNum;
15 | }
16 |
--------------------------------------------------------------------------------
/java/cloud/common/src/main/java/cn/toesbieya/jxc/common/model/entity/BizSellOrder.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.common.model.entity;
2 |
3 | import lombok.Data;
4 | import lombok.EqualsAndHashCode;
5 | import lombok.NoArgsConstructor;
6 | import lombok.ToString;
7 |
8 | import java.math.BigDecimal;
9 |
10 | @Data
11 | @ToString(callSuper = true)
12 | @EqualsAndHashCode(callSuper = true)
13 | public class BizSellOrder extends BizDoc {
14 | private Integer customerId;
15 | private String customerName;
16 | private Integer finish;
17 | private Long ftime;
18 | private BigDecimal total;
19 | }
20 |
--------------------------------------------------------------------------------
/java/cloud/common/src/main/java/cn/toesbieya/jxc/common/model/entity/BizSellOrderSub.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.common.model.entity;
2 |
3 | import lombok.Data;
4 | import lombok.EqualsAndHashCode;
5 | import lombok.ToString;
6 |
7 | import java.math.BigDecimal;
8 |
9 | @Data
10 | @ToString(callSuper = true)
11 | @EqualsAndHashCode(callSuper = true)
12 | public class BizSellOrderSub extends BizDocSub {
13 | private BigDecimal price;
14 | private BigDecimal remainNum;
15 | }
16 |
--------------------------------------------------------------------------------
/java/cloud/common/src/main/java/cn/toesbieya/jxc/common/model/entity/BizSellOutbound.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.common.model.entity;
2 |
3 | import lombok.Data;
4 | import lombok.EqualsAndHashCode;
5 | import lombok.NoArgsConstructor;
6 | import lombok.ToString;
7 |
8 | @Data
9 | @ToString(callSuper = true)
10 | @EqualsAndHashCode(callSuper = true)
11 | public class BizSellOutbound extends BizDoc {
12 | private String pid;
13 | }
14 |
--------------------------------------------------------------------------------
/java/cloud/common/src/main/java/cn/toesbieya/jxc/common/model/entity/BizSellOutboundSub.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.common.model.entity;
2 |
3 | import lombok.Data;
4 | import lombok.EqualsAndHashCode;
5 | import lombok.ToString;
6 |
7 | @Data
8 | @ToString(callSuper = true)
9 | @EqualsAndHashCode(callSuper = true)
10 | public class BizSellOutboundSub extends BizDocSub {
11 | private Integer sid;
12 | }
13 |
--------------------------------------------------------------------------------
/java/cloud/common/src/main/java/cn/toesbieya/jxc/common/model/entity/MsgState.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.common.model.entity;
2 |
3 | import lombok.Data;
4 |
5 | import java.io.Serializable;
6 |
7 | @Data
8 | public class MsgState implements Serializable {
9 | private static final long serialVersionUID = 1L;
10 | private Integer id;
11 | private Integer mid;
12 | private Integer uid;
13 | private Long time;
14 | }
15 |
--------------------------------------------------------------------------------
/java/cloud/common/src/main/java/cn/toesbieya/jxc/common/model/entity/StatFinishOrder.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.common.model.entity;
2 |
3 | import lombok.Data;
4 |
5 | import java.io.Serializable;
6 |
7 | @Data
8 | public class StatFinishOrder implements Serializable {
9 | private static final long serialVersionUID = 1L;
10 | private Integer id;
11 | private Integer purchase;
12 | private Integer sell;
13 | private Long time;
14 | }
15 |
--------------------------------------------------------------------------------
/java/cloud/common/src/main/java/cn/toesbieya/jxc/common/model/entity/StatProfitGoods.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.common.model.entity;
2 |
3 | import lombok.Data;
4 | import lombok.EqualsAndHashCode;
5 | import lombok.ToString;
6 |
7 | @Data
8 | @ToString(callSuper = true)
9 | @EqualsAndHashCode(callSuper = true)
10 | public class StatProfitGoods extends StatProfitTotal {
11 | private Integer cid;
12 | private String cname;
13 | }
14 |
--------------------------------------------------------------------------------
/java/cloud/common/src/main/java/cn/toesbieya/jxc/common/model/entity/StatProfitTotal.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.common.model.entity;
2 |
3 | import lombok.Data;
4 |
5 | import java.io.Serializable;
6 | import java.math.BigDecimal;
7 |
8 | @Data
9 | public class StatProfitTotal implements Serializable {
10 | private static final long serialVersionUID = 1L;
11 | private Integer id;
12 | private BigDecimal purchase;
13 | private BigDecimal sell;
14 | private BigDecimal profit;
15 | private Long time;
16 | }
17 |
--------------------------------------------------------------------------------
/java/cloud/common/src/main/java/cn/toesbieya/jxc/common/model/entity/SysCategory.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.common.model.entity;
2 |
3 | import lombok.Data;
4 |
5 | import java.io.Serializable;
6 |
7 | @Data
8 | public class SysCategory implements Serializable {
9 | private static final long serialVersionUID = 1L;
10 | private Integer id;
11 | private Integer pid;
12 | private String name;
13 | private boolean leaf = false;
14 | private Long ctime;
15 | }
16 |
--------------------------------------------------------------------------------
/java/cloud/common/src/main/java/cn/toesbieya/jxc/common/model/entity/SysCustomer.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.common.model.entity;
2 |
3 | import lombok.Data;
4 |
5 | import java.io.Serializable;
6 |
7 | @Data
8 | public class SysCustomer implements Serializable {
9 | private static final long serialVersionUID = 1L;
10 | private Integer id;
11 | private String name;
12 | private String address;
13 | private String linkman;
14 | private String linkphone;
15 | private String region;
16 | private boolean enable = false;
17 | private Long ctime;
18 | private String remark;
19 | }
--------------------------------------------------------------------------------
/java/cloud/common/src/main/java/cn/toesbieya/jxc/common/model/entity/SysDepartment.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.common.model.entity;
2 |
3 | import lombok.Data;
4 |
5 | import java.io.Serializable;
6 |
7 | @Data
8 | public class SysDepartment implements Serializable {
9 | private static final long serialVersionUID = 1L;
10 | private Integer id;
11 | private Integer pid;
12 | private String name;
13 | private boolean enable = false;
14 | }
15 |
--------------------------------------------------------------------------------
/java/cloud/common/src/main/java/cn/toesbieya/jxc/common/model/entity/SysRegion.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.common.model.entity;
2 |
3 | import lombok.Data;
4 |
5 | import java.io.Serializable;
6 |
7 | @Data
8 | public class SysRegion implements Serializable {
9 | private static final long serialVersionUID = 1L;
10 | private String id;
11 | private String pid;
12 | private String name;
13 | private String fullname;
14 | private int level;
15 | }
16 |
--------------------------------------------------------------------------------
/java/cloud/common/src/main/java/cn/toesbieya/jxc/common/model/entity/SysResource.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.common.model.entity;
2 |
3 | import lombok.Data;
4 |
5 | import java.io.Serializable;
6 |
7 | @Data
8 | public class SysResource implements Serializable {
9 | private static final long serialVersionUID = 1L;
10 | private Integer id;
11 | private Integer pid;
12 | private Integer type;
13 | private String name;
14 | private String path;
15 | private String component;
16 | private String meta;
17 | private boolean admin = false;
18 | private boolean enable = true;
19 | }
20 |
--------------------------------------------------------------------------------
/java/cloud/common/src/main/java/cn/toesbieya/jxc/common/model/entity/SysSupplier.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.common.model.entity;
2 |
3 | import lombok.Data;
4 |
5 | import java.io.Serializable;
6 |
7 | @Data
8 | public class SysSupplier implements Serializable {
9 | private static final long serialVersionUID = 1L;
10 | private Integer id;
11 | private String name;
12 | private String address;
13 | private String linkman;
14 | private String linkphone;
15 | private String region;
16 | private boolean enable = false;
17 | private Long ctime;
18 | private String remark;
19 | }
20 |
--------------------------------------------------------------------------------
/java/cloud/common/src/main/java/cn/toesbieya/jxc/common/model/entity/SysUser.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.common.model.entity;
2 |
3 | import lombok.Data;
4 |
5 | import java.io.Serializable;
6 |
7 | @Data
8 | public class SysUser implements Serializable {
9 | private static final long serialVersionUID = 1L;
10 | private Integer id;
11 | private String loginName;
12 | private String nickName;
13 | private String pwd;
14 | private Integer role;
15 | private String avatar;
16 | private Long ctime;
17 | private boolean admin = false;
18 | private boolean enable = false;
19 | private Integer dept;
20 | }
21 |
--------------------------------------------------------------------------------
/java/cloud/common/src/main/java/cn/toesbieya/jxc/common/model/vo/BaseSearch.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.common.model.vo;
2 |
3 | import lombok.Data;
4 |
5 | @Data
6 | public class BaseSearch {
7 | private Integer page;
8 | private Integer pageSize;
9 | }
10 |
--------------------------------------------------------------------------------
/java/cloud/common/src/main/java/cn/toesbieya/jxc/common/model/vo/SocketEventVo.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.common.model.vo;
2 |
3 | import cn.toesbieya.jxc.common.constant.SocketConstant;
4 | import lombok.Data;
5 |
6 | import java.util.List;
7 |
8 | @Data
9 | public class SocketEventVo {
10 | //事件类型
11 | private int type = SocketConstant.REDIS_EVENT_SPECIFIC;
12 |
13 | //事件名称
14 | private String event;
15 |
16 | //发送对象的id集合
17 | private List to;
18 |
19 | //数据包
20 | private Object data;
21 | }
22 |
--------------------------------------------------------------------------------
/java/cloud/common/src/main/java/cn/toesbieya/jxc/common/model/vo/SocketOfflineVo.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.common.model.vo;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Data;
5 | import lombok.NoArgsConstructor;
6 |
7 | @Data
8 | @NoArgsConstructor
9 | @AllArgsConstructor
10 | public class SocketOfflineVo {
11 | //用户ID
12 | private Integer uid;
13 |
14 | //断开时间
15 | private Long time;
16 | }
17 |
--------------------------------------------------------------------------------
/java/cloud/common/src/main/java/cn/toesbieya/jxc/common/model/vo/StockOutboundVo.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.common.model.vo;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Data;
5 | import lombok.NoArgsConstructor;
6 |
7 | import java.io.Serializable;
8 | import java.math.BigDecimal;
9 |
10 | @Data
11 | @NoArgsConstructor
12 | @AllArgsConstructor
13 | public class StockOutboundVo implements Serializable {
14 | private static final long serialVersionUID = 1L;
15 | private Integer id;
16 | private BigDecimal num;
17 | }
18 |
--------------------------------------------------------------------------------
/java/cloud/common/src/main/java/cn/toesbieya/jxc/common/model/vo/StockSearchResult.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.common.model.vo;
2 |
3 | import lombok.Data;
4 |
5 | import java.io.Serializable;
6 | import java.math.BigDecimal;
7 |
8 | @Data
9 | public class StockSearchResult implements Serializable {
10 | private static final long serialVersionUID = 1L;
11 | private Integer cid;
12 | private String cname;
13 | private BigDecimal totalNum;
14 | private BigDecimal totalPrice;
15 | }
16 |
--------------------------------------------------------------------------------
/java/cloud/common/src/main/resources/script/increase_and_expire.lua:
--------------------------------------------------------------------------------
1 | local current
2 | current = redis.call("incr", KEYS[1])
3 | if tonumber(current) == 1 then
4 | redis.call("expire", KEYS[1], ARGV[1])
5 | end
6 | return current
--------------------------------------------------------------------------------
/java/cloud/gateway/src/main/java/cn/toesbieya/jxc/gateway/GatewayApplication.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.gateway;
2 |
3 | import org.springframework.boot.SpringApplication;
4 | import org.springframework.boot.autoconfigure.SpringBootApplication;
5 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
6 |
7 | @SpringBootApplication(scanBasePackages = "cn.toesbieya.jxc")
8 | @EnableDiscoveryClient
9 | public class GatewayApplication {
10 | public static void main(String[] args) {
11 | SpringApplication.run(GatewayApplication.class, args);
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/java/cloud/gateway/src/main/java/cn/toesbieya/jxc/gateway/config/GatewayConfig.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.gateway.config;
2 |
3 | import lombok.Data;
4 | import org.springframework.boot.context.properties.ConfigurationProperties;
5 | import org.springframework.stereotype.Component;
6 |
7 | import java.util.HashSet;
8 | import java.util.Set;
9 |
10 | @Component
11 | @ConfigurationProperties("spring.cloud.gateway")
12 | @Data
13 | public class GatewayConfig {
14 | private Set whitelist = new HashSet<>();
15 |
16 | private String dataId = "jxc-gateway.yml";
17 |
18 | private String group = "DEFAULT_GROUP";
19 | }
20 |
--------------------------------------------------------------------------------
/java/cloud/gateway/src/main/java/cn/toesbieya/jxc/gateway/config/RateConfig.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.gateway.config;
2 |
3 | import org.springframework.cloud.gateway.filter.ratelimit.KeyResolver;
4 | import org.springframework.context.annotation.Bean;
5 | import org.springframework.context.annotation.Configuration;
6 | import reactor.core.publisher.Mono;
7 |
8 | @Configuration
9 | public class RateConfig {
10 | @Bean
11 | public KeyResolver urlKeyResolver() {
12 | return exchange -> Mono.just(exchange.getRequest().getPath().value());
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/java/cloud/gateway/src/main/java/cn/toesbieya/jxc/gateway/controller/FallbackController.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.gateway.controller;
2 |
3 | import cn.toesbieya.jxc.common.model.vo.R;
4 | import org.springframework.web.bind.annotation.RequestMapping;
5 | import org.springframework.web.bind.annotation.ResponseBody;
6 |
7 | public class FallbackController {
8 | @RequestMapping("fallback")
9 | @ResponseBody
10 | public R fallback() {
11 | return R.fail("服务异常");
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/java/cloud/gateway/src/main/resources/bootstrap.yml:
--------------------------------------------------------------------------------
1 | spring:
2 | application:
3 | name: jxc-gateway
4 |
5 | cloud:
6 | nacos:
7 | config:
8 | server-addr: 127.0.0.1:8848
9 | shared-configs:
10 | - data-id: jxc-common-redis.yml
11 | file-extension: yml
12 |
13 | discovery:
14 | server-addr: 127.0.0.1:8848
15 |
16 | dubbo:
17 | registry:
18 | address: nacos://127.0.0.1:8848
19 | cloud:
20 | subscribed-services: jxc-web-system
--------------------------------------------------------------------------------
/java/cloud/nacos-config/jxc-common-redis.yml:
--------------------------------------------------------------------------------
1 | spring:
2 | redis:
3 | host: localhost
4 | port: 6379
5 | password:
6 | timeout: 3000
7 | lettuce:
8 | pool:
9 | max-idle: 500
10 | min-idle: 50
11 | max-active: 2000
12 | max-wait: 1000
--------------------------------------------------------------------------------
/java/cloud/nacos-config/jxc-web-account.yml:
--------------------------------------------------------------------------------
1 | server:
2 | port: 8000
--------------------------------------------------------------------------------
/java/cloud/nacos-config/jxc-web-doc.yml:
--------------------------------------------------------------------------------
1 | server:
2 | port: 8001
3 | servlet:
4 | context-path: /doc
--------------------------------------------------------------------------------
/java/cloud/nacos-config/jxc-web-file.yml:
--------------------------------------------------------------------------------
1 | server:
2 | port: 8002
3 |
4 | qiniu:
5 | access-key:
6 | secret-key:
7 | bucket:
8 | #七牛的临时上传凭证的有效期,单位秒
9 | token-expires: 3600
10 | #七牛的临时上传凭证的redis键名
11 | redis-cache-key: qiniu-token
--------------------------------------------------------------------------------
/java/cloud/nacos-config/jxc-web-message.yml:
--------------------------------------------------------------------------------
1 | server:
2 | port: 8003
3 | servlet:
4 | context-path: /message
--------------------------------------------------------------------------------
/java/cloud/nacos-config/jxc-web-record.yml:
--------------------------------------------------------------------------------
1 | server:
2 | port: 8004
--------------------------------------------------------------------------------
/java/cloud/nacos-config/jxc-web-statistic.yml:
--------------------------------------------------------------------------------
1 | server:
2 | port: 8005
--------------------------------------------------------------------------------
/java/cloud/nacos-config/jxc-web-stock.yml:
--------------------------------------------------------------------------------
1 | server:
2 | port: 8006
--------------------------------------------------------------------------------
/java/cloud/nacos-config/jxc-web-system.yml:
--------------------------------------------------------------------------------
1 | server:
2 | port: 8007
3 | servlet:
4 | context-path: /system
--------------------------------------------------------------------------------
/java/cloud/nacos-config/jxc-websocket.yml:
--------------------------------------------------------------------------------
1 | socket:
2 | #hostname: 172.24.52.184
3 | hostname: localhost
4 | port: 12580
5 | max-frame-payload-length: 1048576
6 | max-http-content-length: 1048576
--------------------------------------------------------------------------------
/java/cloud/schedule/src/main/resources/bootstrap.yml:
--------------------------------------------------------------------------------
1 | spring:
2 | application:
3 | name: jxc-schedule
4 |
5 | cloud:
6 | nacos:
7 | config:
8 | server-addr: 127.0.0.1:8848
9 | file-extension: yml
10 | shared-configs:
11 | - data-id: jxc-common-database.yml
12 | - data-id: jxc-common-redis.yml
13 | discovery:
14 | server-addr: 127.0.0.1:8848
--------------------------------------------------------------------------------
/java/cloud/web/file/src/main/java/cn/toesbieya/jxc/file/FileApplication.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.file;
2 |
3 | import org.springframework.boot.SpringApplication;
4 | import org.springframework.boot.autoconfigure.SpringBootApplication;
5 |
6 | @SpringBootApplication(scanBasePackages = "cn.toesbieya.jxc")
7 | public class FileApplication {
8 | public static void main(String[] args) {
9 | SpringApplication.run(FileApplication.class, args);
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/java/cloud/web/file/src/main/resources/bootstrap.yml:
--------------------------------------------------------------------------------
1 | spring:
2 | application:
3 | name: jxc-web-file
4 |
5 | cloud:
6 | nacos:
7 | config:
8 | server-addr: 127.0.0.1:8848
9 | file-extension: yml
10 | shared-configs:
11 | - data-id: jxc-common-redis.yml
12 | discovery:
13 | server-addr: 127.0.0.1:8848
14 |
15 | dubbo:
16 | protocol:
17 | port: -1
18 | name: dubbo
19 | scan:
20 | base-packages: cn.toesbieya.jxc.file.service
21 | registry:
22 | address: nacos://127.0.0.1:8848
--------------------------------------------------------------------------------
/java/cloud/web/web-common/src/main/java/cn/toesbieya/jxc/web/common/annoation/Lock.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.web.common.annoation;
2 |
3 | import java.lang.annotation.*;
4 |
5 | @Target(ElementType.METHOD)
6 | @Retention(RetentionPolicy.RUNTIME)
7 | @Documented
8 | public @interface Lock {
9 | String[] value() default {};
10 | }
11 |
--------------------------------------------------------------------------------
/java/cloud/web/web-common/src/main/java/cn/toesbieya/jxc/web/common/annoation/TimeCost.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.web.common.annoation;
2 |
3 | import java.lang.annotation.*;
4 |
5 | @Target(ElementType.METHOD)
6 | @Retention(RetentionPolicy.RUNTIME)
7 | @Documented
8 | public @interface TimeCost {
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/java/cloud/web/web-common/src/main/java/cn/toesbieya/jxc/web/common/annoation/UserAction.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.web.common.annoation;
2 |
3 | import java.lang.annotation.*;
4 |
5 | @Target(ElementType.METHOD)
6 | @Retention(RetentionPolicy.RUNTIME)
7 | @Documented
8 | public @interface UserAction {
9 | String value() default "";
10 | }
11 |
--------------------------------------------------------------------------------
/java/cloud/web/web-common/src/main/java/cn/toesbieya/jxc/web/common/enumeration/UserActionEnum.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.web.common.enumeration;
2 |
3 | public enum UserActionEnum {
4 | FAIL(0), SUCCESS(1);
5 |
6 | private final int code;
7 |
8 | UserActionEnum(int code) {
9 | this.code = code;
10 | }
11 |
12 | public int getCode() {
13 | return code;
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/java/cloud/web/web-common/src/main/java/cn/toesbieya/jxc/web/common/interceptor/predicate/UserActionPredicate.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.web.common.interceptor.predicate;
2 |
3 | import javax.servlet.http.HttpServletRequest;
4 |
5 | public interface UserActionPredicate {
6 | boolean allowed(HttpServletRequest request);
7 | }
8 |
--------------------------------------------------------------------------------
/java/cloud/web/web-common/src/main/java/cn/toesbieya/jxc/web/common/util/SessionUtil.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.web.common.util;
2 |
3 | import cn.toesbieya.jxc.common.model.vo.UserVo;
4 |
5 | public class SessionUtil extends cn.toesbieya.jxc.common.util.SessionUtil {
6 | public static UserVo get() {
7 | UserVo user = ThreadUtil.getUser();
8 | return user == null ? get(WebUtil.getRequest()) : user;
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/java/cloud/web/web-modules/account/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 | web-modules
7 | cn.toesbieya
8 | 0.0.1-SNAPSHOT
9 |
10 | 4.0.0
11 |
12 | account
13 |
--------------------------------------------------------------------------------
/java/cloud/web/web-modules/account/src/main/java/cn/toesbieya/jxc/account/AccountApplication.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.account;
2 |
3 | import org.mybatis.spring.annotation.MapperScan;
4 | import org.springframework.boot.SpringApplication;
5 | import org.springframework.boot.autoconfigure.SpringBootApplication;
6 |
7 | @SpringBootApplication(scanBasePackages = "cn.toesbieya.jxc")
8 | @MapperScan("cn.toesbieya.jxc.account.mapper")
9 | public class AccountApplication {
10 | public static void main(String[] args) {
11 | SpringApplication.run(AccountApplication.class, args);
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/java/cloud/web/web-modules/account/src/main/java/cn/toesbieya/jxc/account/enumeration/RecLoginHistoryEnum.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.account.enumeration;
2 |
3 | public enum RecLoginHistoryEnum {
4 | LOGOUT(0), LOGIN(1);
5 |
6 | private final int code;
7 |
8 | RecLoginHistoryEnum(int code) {
9 | this.code = code;
10 | }
11 |
12 | public int getCode() {
13 | return code;
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/java/cloud/web/web-modules/account/src/main/java/cn/toesbieya/jxc/account/mapper/SysResourceMapper.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.account.mapper;
2 |
3 | import cn.toesbieya.jxc.common.model.entity.SysResource;
4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
5 |
6 | public interface SysResourceMapper extends BaseMapper {
7 | }
8 |
--------------------------------------------------------------------------------
/java/cloud/web/web-modules/account/src/main/java/cn/toesbieya/jxc/account/mapper/SysRoleMapper.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.account.mapper;
2 |
3 | import cn.toesbieya.jxc.common.model.entity.SysRole;
4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
5 |
6 | public interface SysRoleMapper extends BaseMapper {
7 | }
8 |
--------------------------------------------------------------------------------
/java/cloud/web/web-modules/account/src/main/java/cn/toesbieya/jxc/account/mapper/SysUserMapper.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.account.mapper;
2 |
3 | import cn.toesbieya.jxc.common.model.entity.SysUser;
4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
5 |
6 | public interface SysUserMapper extends BaseMapper {
7 | }
8 |
--------------------------------------------------------------------------------
/java/cloud/web/web-modules/account/src/main/java/cn/toesbieya/jxc/account/vo/LoginParam.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.account.vo;
2 |
3 | import lombok.Data;
4 | import org.hibernate.validator.constraints.Length;
5 |
6 | import javax.validation.constraints.NotNull;
7 |
8 | @Data
9 | public class LoginParam {
10 | @NotNull(message = "用户名不能为空")
11 | @Length(max = 20, message = "用户名太长了")
12 | private String username;
13 |
14 | @NotNull(message = "密码不能为空")
15 | @Length(min = 32, max = 32, message = "密码异常")
16 | private String password;
17 | }
18 |
--------------------------------------------------------------------------------
/java/cloud/web/web-modules/account/src/main/java/cn/toesbieya/jxc/account/vo/PasswordUpdateParam.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.account.vo;
2 |
3 | import lombok.Data;
4 |
5 | @Data
6 | public class PasswordUpdateParam {
7 | private Integer id;
8 | private String newPwd;
9 | private String oldPwd;
10 | }
11 |
--------------------------------------------------------------------------------
/java/cloud/web/web-modules/account/src/main/java/cn/toesbieya/jxc/account/vo/RegisterParam.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.account.vo;
2 |
3 | import lombok.Data;
4 | import lombok.EqualsAndHashCode;
5 | import lombok.ToString;
6 | import org.hibernate.validator.constraints.Length;
7 |
8 | import javax.validation.constraints.NotNull;
9 |
10 | @Data
11 | @ToString(callSuper = true)
12 | @EqualsAndHashCode(callSuper = true)
13 | public class RegisterParam extends LoginParam {
14 | @NotNull(message = "昵称不能为空")
15 | @Length(max = 100, message = "昵称太长了")
16 | private String nick;
17 | }
18 |
--------------------------------------------------------------------------------
/java/cloud/web/web-modules/account/src/main/resources/bootstrap.yml:
--------------------------------------------------------------------------------
1 | spring:
2 | application:
3 | name: jxc-web-account
4 |
5 | cloud:
6 | nacos:
7 | config:
8 | server-addr: 127.0.0.1:8848
9 | file-extension: yml
10 | shared-configs:
11 | - data-id: jxc-common-database.yml
12 | - data-id: jxc-common-redis.yml
13 | discovery:
14 | server-addr: 127.0.0.1:8848
15 |
16 | dubbo:
17 | registry:
18 | address: nacos://127.0.0.1:8848
19 | cloud:
20 | subscribed-services: jxc-web-file,jxc-web-record,jxc-web-system
--------------------------------------------------------------------------------
/java/cloud/web/web-modules/doc/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 | web-modules
7 | cn.toesbieya
8 | 0.0.1-SNAPSHOT
9 |
10 | 4.0.0
11 |
12 | doc
13 |
14 |
15 |
--------------------------------------------------------------------------------
/java/cloud/web/web-modules/doc/src/main/java/cn/toesbieya/jxc/doc/DocApplication.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.doc;
2 |
3 | import org.mybatis.spring.annotation.MapperScan;
4 | import org.springframework.boot.SpringApplication;
5 | import org.springframework.boot.autoconfigure.SpringBootApplication;
6 |
7 | @SpringBootApplication(scanBasePackages = "cn.toesbieya.jxc")
8 | @MapperScan("cn.toesbieya.jxc.doc.mapper")
9 | public class DocApplication {
10 | public static void main(String[] args) {
11 | SpringApplication.run(DocApplication.class, args);
12 | }
13 | }
--------------------------------------------------------------------------------
/java/cloud/web/web-modules/doc/src/main/java/cn/toesbieya/jxc/doc/enumeration/DocFinishEnum.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.doc.enumeration;
2 |
3 | public enum DocFinishEnum {
4 | TO_BE_STARTED(0), UNDERWAY(1), FINISHED(2);
5 |
6 | private final int code;
7 |
8 | DocFinishEnum(int code) {
9 | this.code = code;
10 | }
11 |
12 | public int getCode() {
13 | return code;
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/java/cloud/web/web-modules/doc/src/main/java/cn/toesbieya/jxc/doc/enumeration/DocHistoryEnum.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.doc.enumeration;
2 |
3 | public enum DocHistoryEnum {
4 | WITHDRAW(0), COMMIT(1), PASS(2), REJECT(3);
5 |
6 | private final int code;
7 |
8 | DocHistoryEnum(int code) {
9 | this.code = code;
10 | }
11 |
12 | public int getCode() {
13 | return code;
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/java/cloud/web/web-modules/doc/src/main/java/cn/toesbieya/jxc/doc/enumeration/DocStatusEnum.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.doc.enumeration;
2 |
3 | public enum DocStatusEnum {
4 | DRAFT(0), WAIT_VERIFY(1), VERIFIED(2);
5 |
6 | private final int code;
7 |
8 | DocStatusEnum(int code) {
9 | this.code = code;
10 | }
11 |
12 | public int getCode() {
13 | return code;
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/java/cloud/web/web-modules/doc/src/main/java/cn/toesbieya/jxc/doc/mapper/DocHistoryMapper.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.doc.mapper;
2 |
3 | import cn.toesbieya.jxc.common.model.entity.BizDocHistory;
4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
5 |
6 | public interface DocHistoryMapper extends BaseMapper {
7 | }
8 |
--------------------------------------------------------------------------------
/java/cloud/web/web-modules/doc/src/main/java/cn/toesbieya/jxc/doc/mapper/PurchaseInboundSubMapper.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.doc.mapper;
2 |
3 | import cn.toesbieya.jxc.common.model.entity.BizPurchaseInboundSub;
4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
5 |
6 | import java.util.List;
7 |
8 | public interface PurchaseInboundSubMapper extends BaseMapper {
9 | void insertBatch(List list);
10 | }
11 |
--------------------------------------------------------------------------------
/java/cloud/web/web-modules/doc/src/main/java/cn/toesbieya/jxc/doc/mapper/PurchaseOrderSubMapper.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.doc.mapper;
2 |
3 | import cn.toesbieya.jxc.common.model.entity.BizPurchaseOrderSub;
4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
5 |
6 | import java.util.List;
7 |
8 | public interface PurchaseOrderSubMapper extends BaseMapper {
9 | void insertBatch(List list);
10 | }
11 |
--------------------------------------------------------------------------------
/java/cloud/web/web-modules/doc/src/main/java/cn/toesbieya/jxc/doc/mapper/SellOrderSubMapper.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.doc.mapper;
2 |
3 | import cn.toesbieya.jxc.common.model.entity.BizSellOrderSub;
4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
5 |
6 | import java.util.List;
7 |
8 | public interface SellOrderSubMapper extends BaseMapper {
9 | void insertBatch(List list);
10 | }
11 |
--------------------------------------------------------------------------------
/java/cloud/web/web-modules/doc/src/main/java/cn/toesbieya/jxc/doc/mapper/SellOutboundSubMapper.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.doc.mapper;
2 |
3 | import cn.toesbieya.jxc.common.model.entity.BizSellOutboundSub;
4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
5 |
6 | import java.util.List;
7 |
8 | public interface SellOutboundSubMapper extends BaseMapper {
9 | void insertBatch(List list);
10 | }
11 |
--------------------------------------------------------------------------------
/java/cloud/web/web-modules/doc/src/main/java/cn/toesbieya/jxc/doc/model/vo/DocHistorySearch.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.doc.model.vo;
2 |
3 | import cn.toesbieya.jxc.common.model.vo.BaseSearch;
4 | import lombok.Data;
5 | import lombok.EqualsAndHashCode;
6 | import lombok.ToString;
7 |
8 | @Data
9 | @ToString(callSuper = true)
10 | @EqualsAndHashCode(callSuper = true)
11 | public class DocHistorySearch extends BaseSearch {
12 | private String pid;
13 | private String type;
14 | private String uid;
15 | private String uname;
16 | }
17 |
--------------------------------------------------------------------------------
/java/cloud/web/web-modules/doc/src/main/java/cn/toesbieya/jxc/doc/model/vo/DocStatusUpdate.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.doc.model.vo;
2 |
3 | import lombok.Data;
4 |
5 | @Data
6 | public class DocStatusUpdate {
7 | private String id;
8 | private String pid;
9 | private String info;
10 | }
11 |
--------------------------------------------------------------------------------
/java/cloud/web/web-modules/doc/src/main/java/cn/toesbieya/jxc/doc/model/vo/PurchaseInboundSearch.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.doc.model.vo;
2 |
3 | import lombok.Data;
4 | import lombok.EqualsAndHashCode;
5 | import lombok.ToString;
6 |
7 | @Data
8 | @ToString(callSuper = true)
9 | @EqualsAndHashCode(callSuper = true)
10 | public class PurchaseInboundSearch extends DocSearch {
11 | private String pid;
12 | private String pidFuzzy;
13 | }
14 |
--------------------------------------------------------------------------------
/java/cloud/web/web-modules/doc/src/main/java/cn/toesbieya/jxc/doc/model/vo/PurchaseOrderSearch.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.doc.model.vo;
2 |
3 | import lombok.Data;
4 | import lombok.EqualsAndHashCode;
5 | import lombok.ToString;
6 |
7 | @Data
8 | @ToString(callSuper = true)
9 | @EqualsAndHashCode(callSuper = true)
10 | public class PurchaseOrderSearch extends DocSearch {
11 | private Integer sid;
12 | private String sname;
13 | private String finish;
14 | private Long ftimeStart;
15 | private Long ftimeEnd;
16 | }
17 |
--------------------------------------------------------------------------------
/java/cloud/web/web-modules/doc/src/main/java/cn/toesbieya/jxc/doc/model/vo/SellOrderSearch.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.doc.model.vo;
2 |
3 | import lombok.Data;
4 | import lombok.EqualsAndHashCode;
5 | import lombok.ToString;
6 |
7 | @Data
8 | @ToString(callSuper = true)
9 | @EqualsAndHashCode(callSuper = true)
10 | public class SellOrderSearch extends DocSearch {
11 | private Integer customerId;
12 | private String customerName;
13 | private String finish;
14 | private Long ftimeStart;
15 | private Long ftimeEnd;
16 | }
17 |
--------------------------------------------------------------------------------
/java/cloud/web/web-modules/doc/src/main/java/cn/toesbieya/jxc/doc/model/vo/SellOutboundSearch.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.doc.model.vo;
2 |
3 | import lombok.Data;
4 | import lombok.EqualsAndHashCode;
5 | import lombok.ToString;
6 |
7 | @Data
8 | @ToString(callSuper = true)
9 | @EqualsAndHashCode(callSuper = true)
10 | public class SellOutboundSearch extends DocSearch {
11 | private String pid;
12 | private String pidFuzzy;
13 | }
14 |
--------------------------------------------------------------------------------
/java/cloud/web/web-modules/doc/src/main/resources/bootstrap.yml:
--------------------------------------------------------------------------------
1 | spring:
2 | application:
3 | name: jxc-web-doc
4 |
5 | cloud:
6 | nacos:
7 | config:
8 | server-addr: 127.0.0.1:8848
9 | file-extension: yml
10 | shared-configs:
11 | - data-id: jxc-common-database.yml
12 | - data-id: jxc-common-redis.yml
13 | discovery:
14 | server-addr: 127.0.0.1:8848
15 |
16 | dubbo:
17 | registry:
18 | address: nacos://127.0.0.1:8848
19 | cloud:
20 | subscribed-services: jxc-web-record,jxc-web-stock
--------------------------------------------------------------------------------
/java/cloud/web/web-modules/doc/src/main/resources/script/get_doc_id.lua:
--------------------------------------------------------------------------------
1 | if redis.call('exists', KEYS[1]) == 0 then
2 | if redis.call('hget', KEYS[2], 'date') == ARGV[1] then
3 | if redis.call('hexists', KEYS[2], ARGV[2]) == 1 then
4 | return redis.call('hincrby', KEYS[2], ARGV[2], 1)
5 | else
6 | return 0
7 | end
8 | else
9 | return 0
10 | end
11 | else
12 | return 0
13 | end
--------------------------------------------------------------------------------
/java/cloud/web/web-modules/message/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 | web-modules
7 | cn.toesbieya
8 | 0.0.1-SNAPSHOT
9 |
10 | 4.0.0
11 |
12 | message
13 |
14 |
15 |
--------------------------------------------------------------------------------
/java/cloud/web/web-modules/message/src/main/java/cn/toesbieya/jxc/message/MessageApplication.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.message;
2 |
3 | import org.mybatis.spring.annotation.MapperScan;
4 | import org.springframework.boot.SpringApplication;
5 | import org.springframework.boot.autoconfigure.SpringBootApplication;
6 |
7 | @SpringBootApplication(scanBasePackages = "cn.toesbieya.jxc")
8 | @MapperScan("cn.toesbieya.jxc.message.mapper")
9 | public class MessageApplication {
10 | public static void main(String[] args) {
11 | SpringApplication.run(MessageApplication.class, args);
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/java/cloud/web/web-modules/message/src/main/java/cn/toesbieya/jxc/message/constant/MsgConstant.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.message.constant;
2 |
3 | public interface MsgConstant {
4 | Integer STATUS_DRAFT = 0; //拟定
5 | Integer STATUS_PUBLISHED = 1; //已发布
6 | Integer STATUS_WITHDREW = 2; //已撤回
7 | }
8 |
--------------------------------------------------------------------------------
/java/cloud/web/web-modules/message/src/main/java/cn/toesbieya/jxc/message/mapper/MsgMapper.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.message.mapper;
2 |
3 | import cn.toesbieya.jxc.common.model.entity.Msg;
4 | import cn.toesbieya.jxc.message.model.vo.MsgPersonalSearch;
5 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
6 |
7 | import java.util.List;
8 |
9 | public interface MsgMapper extends BaseMapper {
10 | List getReadByUser(MsgPersonalSearch search);
11 |
12 | List getUnreadByUser(MsgPersonalSearch search);
13 | }
14 |
--------------------------------------------------------------------------------
/java/cloud/web/web-modules/message/src/main/java/cn/toesbieya/jxc/message/mapper/MsgStateMapper.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.message.mapper;
2 |
3 | import cn.toesbieya.jxc.common.model.entity.MsgState;
4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
5 |
6 | public interface MsgStateMapper extends BaseMapper {
7 | }
8 |
--------------------------------------------------------------------------------
/java/cloud/web/web-modules/message/src/main/java/cn/toesbieya/jxc/message/model/vo/MsgPersonalSearch.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.message.model.vo;
2 |
3 | import cn.toesbieya.jxc.common.model.vo.BaseSearch;
4 | import lombok.Data;
5 | import lombok.EqualsAndHashCode;
6 | import lombok.ToString;
7 |
8 | @Data
9 | @ToString(callSuper = true)
10 | @EqualsAndHashCode(callSuper = true)
11 | public class MsgPersonalSearch extends BaseSearch {
12 | private Integer uid;
13 | private Long ctime;
14 | private boolean unread = true;
15 | }
16 |
--------------------------------------------------------------------------------
/java/cloud/web/web-modules/message/src/main/java/cn/toesbieya/jxc/message/model/vo/MsgSearch.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.message.model.vo;
2 |
3 | import cn.toesbieya.jxc.common.model.vo.BaseSearch;
4 | import lombok.Data;
5 | import lombok.EqualsAndHashCode;
6 | import lombok.ToString;
7 |
8 | @Data
9 | @ToString(callSuper = true)
10 | @EqualsAndHashCode(callSuper = true)
11 | public class MsgSearch extends BaseSearch {
12 | private String title;
13 | private String type;
14 | private String status;
15 | }
16 |
--------------------------------------------------------------------------------
/java/cloud/web/web-modules/message/src/main/resources/bootstrap.yml:
--------------------------------------------------------------------------------
1 | spring:
2 | application:
3 | name: jxc-web-message
4 |
5 | cloud:
6 | nacos:
7 | config:
8 | server-addr: 127.0.0.1:8848
9 | file-extension: yml
10 | shared-configs:
11 | - data-id: jxc-common-database.yml
12 | - data-id: jxc-common-redis.yml
13 | discovery:
14 | server-addr: 127.0.0.1:8848
15 |
16 | dubbo:
17 | registry:
18 | address: nacos://127.0.0.1:8848
19 | cloud:
20 | subscribed-services: jxc-web-record
--------------------------------------------------------------------------------
/java/cloud/web/web-modules/record/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 | web-modules
7 | cn.toesbieya
8 | 0.0.1-SNAPSHOT
9 |
10 | 4.0.0
11 |
12 | record
13 |
--------------------------------------------------------------------------------
/java/cloud/web/web-modules/record/src/main/java/cn/toesbieya/jxc/record/RecordApplication.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.record;
2 |
3 | import org.mybatis.spring.annotation.MapperScan;
4 | import org.springframework.boot.SpringApplication;
5 | import org.springframework.boot.autoconfigure.SpringBootApplication;
6 |
7 | @SpringBootApplication(scanBasePackages = "cn.toesbieya.jxc")
8 | @MapperScan("cn.toesbieya.jxc.record.mapper")
9 | public class RecordApplication {
10 | public static void main(String[] args) {
11 | SpringApplication.run(RecordApplication.class, args);
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/java/cloud/web/web-modules/record/src/main/java/cn/toesbieya/jxc/record/mapper/RecAttachmentMapper.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.record.mapper;
2 |
3 | import cn.toesbieya.jxc.common.model.entity.RecAttachment;
4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
5 |
6 | import java.util.List;
7 |
8 | public interface RecAttachmentMapper extends BaseMapper {
9 | int insertBatch(List list);
10 | }
11 |
--------------------------------------------------------------------------------
/java/cloud/web/web-modules/record/src/main/java/cn/toesbieya/jxc/record/mapper/RecLoginHistoryMapper.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.record.mapper;
2 |
3 | import cn.toesbieya.jxc.common.model.entity.RecLoginHistory;
4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
5 |
6 | public interface RecLoginHistoryMapper extends BaseMapper {
7 | }
8 |
--------------------------------------------------------------------------------
/java/cloud/web/web-modules/record/src/main/java/cn/toesbieya/jxc/record/mapper/RecUserActionMapper.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.record.mapper;
2 |
3 | import cn.toesbieya.jxc.common.model.entity.RecUserAction;
4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
5 |
6 | public interface RecUserActionMapper extends BaseMapper {
7 | }
8 |
--------------------------------------------------------------------------------
/java/cloud/web/web-modules/record/src/main/java/cn/toesbieya/jxc/record/model/vo/LoginHistorySearch.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.record.model.vo;
2 |
3 | import cn.toesbieya.jxc.common.model.vo.BaseSearch;
4 | import lombok.Data;
5 | import lombok.EqualsAndHashCode;
6 | import lombok.ToString;
7 |
8 | @Data
9 | @ToString(callSuper = true)
10 | @EqualsAndHashCode(callSuper = true)
11 | public class LoginHistorySearch extends BaseSearch {
12 | private Integer uid;
13 | private String uname;
14 | private Boolean login;
15 | private String ip;
16 | private String address;
17 | private Long endTime;
18 | private Long startTime;
19 | }
20 |
--------------------------------------------------------------------------------
/java/cloud/web/web-modules/record/src/main/java/cn/toesbieya/jxc/record/model/vo/UserActionSearch.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.record.model.vo;
2 |
3 | import cn.toesbieya.jxc.common.model.vo.BaseSearch;
4 | import lombok.Data;
5 | import lombok.EqualsAndHashCode;
6 | import lombok.ToString;
7 |
8 | @Data
9 | @ToString(callSuper = true)
10 | @EqualsAndHashCode(callSuper = true)
11 | public class UserActionSearch extends BaseSearch {
12 | private Integer uid;
13 | private String uname;
14 | private String ip;
15 | private String url;
16 | private Long startTime;
17 | private Long endTime;
18 | private Boolean success;
19 | }
20 |
--------------------------------------------------------------------------------
/java/cloud/web/web-modules/statistic/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 | web-modules
7 | cn.toesbieya
8 | 0.0.1-SNAPSHOT
9 |
10 | 4.0.0
11 |
12 | statistic
13 |
14 |
15 |
--------------------------------------------------------------------------------
/java/cloud/web/web-modules/statistic/src/main/java/cn/toesbieya/jxc/statistic/model/vo/FourBlockStat.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.statistic.model.vo;
2 |
3 | import lombok.Data;
4 |
5 | import java.math.BigDecimal;
6 |
7 | @Data
8 | public class FourBlockStat {
9 | private long online;
10 | private BigDecimal purchase;
11 | private BigDecimal sell;
12 | private BigDecimal profit;
13 | }
14 |
--------------------------------------------------------------------------------
/java/cloud/web/web-modules/statistic/src/main/resources/bootstrap.yml:
--------------------------------------------------------------------------------
1 | spring:
2 | application:
3 | name: jxc-web-statistic
4 |
5 | cloud:
6 | nacos:
7 | config:
8 | server-addr: 127.0.0.1:8848
9 | file-extension: yml
10 | shared-configs:
11 | - data-id: jxc-common-database.yml
12 | - data-id: jxc-common-redis.yml
13 | discovery:
14 | server-addr: 127.0.0.1:8848
15 |
16 | dubbo:
17 | registry:
18 | address: nacos://127.0.0.1:8848
19 | cloud:
20 | subscribed-services: jxc-web-record
--------------------------------------------------------------------------------
/java/cloud/web/web-modules/stock/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 | web-modules
7 | cn.toesbieya
8 | 0.0.1-SNAPSHOT
9 |
10 | 4.0.0
11 |
12 | stock
13 |
14 |
15 |
--------------------------------------------------------------------------------
/java/cloud/web/web-modules/stock/src/main/java/cn/toesbieya/jxc/stock/StockApplication.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.stock;
2 |
3 | import org.mybatis.spring.annotation.MapperScan;
4 | import org.springframework.boot.SpringApplication;
5 | import org.springframework.boot.autoconfigure.SpringBootApplication;
6 | import org.springframework.cloud.openfeign.EnableFeignClients;
7 |
8 | @SpringBootApplication(scanBasePackages = "cn.toesbieya.jxc")
9 | @MapperScan("cn.toesbieya.jxc.stock.mapper")
10 | public class StockApplication {
11 | public static void main(String[] args) {
12 | SpringApplication.run(StockApplication.class, args);
13 | }
14 | }
--------------------------------------------------------------------------------
/java/cloud/web/web-modules/system/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 | web-modules
7 | cn.toesbieya
8 | 0.0.1-SNAPSHOT
9 |
10 | 4.0.0
11 |
12 | system
13 |
14 |
15 |
--------------------------------------------------------------------------------
/java/cloud/web/web-modules/system/src/main/java/cn/toesbieya/jxc/system/SystemApplication.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.system;
2 |
3 | import org.mybatis.spring.annotation.MapperScan;
4 | import org.springframework.boot.SpringApplication;
5 | import org.springframework.boot.autoconfigure.SpringBootApplication;
6 |
7 | @SpringBootApplication(scanBasePackages = "cn.toesbieya.jxc")
8 | @MapperScan("cn.toesbieya.jxc.system.mapper")
9 | public class SystemApplication {
10 | public static void main(String[] args) {
11 | SpringApplication.run(SystemApplication.class, args);
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/java/cloud/web/web-modules/system/src/main/java/cn/toesbieya/jxc/system/mapper/SysCategoryMapper.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.system.mapper;
2 |
3 | import cn.toesbieya.jxc.common.model.entity.SysCategory;
4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
5 | import org.apache.ibatis.annotations.Param;
6 |
7 | public interface SysCategoryMapper extends BaseMapper {
8 | boolean checkIsUse(@Param("cid") Integer cid);
9 | }
10 |
--------------------------------------------------------------------------------
/java/cloud/web/web-modules/system/src/main/java/cn/toesbieya/jxc/system/mapper/SysCustomerMapper.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.system.mapper;
2 |
3 | import cn.toesbieya.jxc.common.model.entity.SysCustomer;
4 | import cn.toesbieya.jxc.system.model.vo.RegionValueResult;
5 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
6 |
7 | import java.util.List;
8 |
9 | public interface SysCustomerMapper extends BaseMapper {
10 | List getLimitRegion();
11 | }
12 |
--------------------------------------------------------------------------------
/java/cloud/web/web-modules/system/src/main/java/cn/toesbieya/jxc/system/mapper/SysDepartmentMapper.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.system.mapper;
2 |
3 | import cn.toesbieya.jxc.common.model.entity.SysDepartment;
4 | import cn.toesbieya.jxc.common.model.vo.DepartmentVo;
5 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
6 | import org.apache.ibatis.annotations.Param;
7 |
8 | import java.util.List;
9 |
10 | public interface SysDepartmentMapper extends BaseMapper {
11 | List selectChildrenById(@Param("id") int id);
12 |
13 | List selectParentsById(@Param("id") int id);
14 | }
15 |
--------------------------------------------------------------------------------
/java/cloud/web/web-modules/system/src/main/java/cn/toesbieya/jxc/system/mapper/SysRegionMapper.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.system.mapper;
2 |
3 | import cn.toesbieya.jxc.common.model.entity.SysRegion;
4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
5 |
6 | public interface SysRegionMapper extends BaseMapper {
7 | }
8 |
--------------------------------------------------------------------------------
/java/cloud/web/web-modules/system/src/main/java/cn/toesbieya/jxc/system/mapper/SysResourceMapper.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.system.mapper;
2 |
3 | import cn.toesbieya.jxc.common.model.entity.SysResource;
4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
5 | import org.apache.ibatis.annotations.Param;
6 |
7 | import java.util.List;
8 |
9 | public interface SysResourceMapper extends BaseMapper {
10 | List selectChildren(@Param("ids") String ids);
11 | }
12 |
--------------------------------------------------------------------------------
/java/cloud/web/web-modules/system/src/main/java/cn/toesbieya/jxc/system/mapper/SysRoleMapper.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.system.mapper;
2 |
3 | import cn.toesbieya.jxc.common.model.entity.SysRole;
4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
5 |
6 | public interface SysRoleMapper extends BaseMapper {
7 | }
8 |
--------------------------------------------------------------------------------
/java/cloud/web/web-modules/system/src/main/java/cn/toesbieya/jxc/system/mapper/SysSupplierMapper.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.system.mapper;
2 |
3 | import cn.toesbieya.jxc.common.model.entity.SysSupplier;
4 | import cn.toesbieya.jxc.system.model.vo.RegionValueResult;
5 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
6 |
7 | import java.util.List;
8 |
9 | public interface SysSupplierMapper extends BaseMapper {
10 | List getLimitRegion();
11 | }
12 |
--------------------------------------------------------------------------------
/java/cloud/web/web-modules/system/src/main/java/cn/toesbieya/jxc/system/mapper/SysUserMapper.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.system.mapper;
2 |
3 | import cn.toesbieya.jxc.common.model.entity.SysUser;
4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
5 |
6 | public interface SysUserMapper extends BaseMapper {
7 | }
8 |
--------------------------------------------------------------------------------
/java/cloud/web/web-modules/system/src/main/java/cn/toesbieya/jxc/system/model/vo/CategorySearch.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.system.model.vo;
2 |
3 | import lombok.Data;
4 |
5 | @Data
6 | public class CategorySearch {
7 | private Integer id;
8 | private String ids;
9 | private Integer pid;
10 | private String pids;
11 | private String name;
12 | private Boolean leaf;
13 | private Long startTime;
14 | private Long endTime;
15 | }
16 |
--------------------------------------------------------------------------------
/java/cloud/web/web-modules/system/src/main/java/cn/toesbieya/jxc/system/model/vo/RegionValueResult.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.system.model.vo;
2 |
3 | import lombok.Data;
4 |
5 | @Data
6 | public class RegionValueResult {
7 | private String id;
8 | private int value;
9 | }
10 |
--------------------------------------------------------------------------------
/java/cloud/web/web-modules/system/src/main/java/cn/toesbieya/jxc/system/model/vo/RoleSearch.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.system.model.vo;
2 |
3 | import cn.toesbieya.jxc.common.model.vo.BaseSearch;
4 | import lombok.Data;
5 | import lombok.EqualsAndHashCode;
6 | import lombok.ToString;
7 |
8 | @Data
9 | @ToString(callSuper = true)
10 | @EqualsAndHashCode(callSuper = true)
11 | public class RoleSearch extends BaseSearch {
12 | private Integer id;
13 | private String name;
14 | private Integer cid;
15 | private String cname;
16 | private Boolean enable;
17 | private Long startTime;
18 | private Long endTime;
19 | }
20 |
--------------------------------------------------------------------------------
/java/cloud/web/web-modules/system/src/main/java/cn/toesbieya/jxc/system/model/vo/UserSearch.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.system.model.vo;
2 |
3 | import cn.toesbieya.jxc.common.model.vo.BaseSearch;
4 | import lombok.Data;
5 | import lombok.EqualsAndHashCode;
6 | import lombok.ToString;
7 |
8 | @Data
9 | @ToString(callSuper = true)
10 | @EqualsAndHashCode(callSuper = true)
11 | public class UserSearch extends BaseSearch {
12 | private Integer id;
13 | private String loginName;
14 | private String nickName;
15 | private String role;
16 | private Long startTime;
17 | private Long endTime;
18 | private Boolean enable;
19 | }
20 |
--------------------------------------------------------------------------------
/java/cloud/web/web-modules/system/src/main/resources/mapper/SysCategory.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
7 |
--------------------------------------------------------------------------------
/java/cloud/web/web-modules/system/src/main/resources/mapper/SysCustomer.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
11 |
--------------------------------------------------------------------------------
/java/cloud/web/web-modules/system/src/main/resources/mapper/SysSupplier.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
11 |
--------------------------------------------------------------------------------
/java/cloud/websocket/src/main/java/cn/toesbieya/jxc/socket/WebSocketApplication.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.socket;
2 |
3 | import org.springframework.boot.WebApplicationType;
4 | import org.springframework.boot.autoconfigure.SpringBootApplication;
5 | import org.springframework.boot.builder.SpringApplicationBuilder;
6 |
7 | @SpringBootApplication(scanBasePackages = "cn.toesbieya.jxc")
8 | public class WebSocketApplication {
9 | public static void main(String[] args) {
10 | new SpringApplicationBuilder(WebSocketApplication.class)
11 | .web(WebApplicationType.NONE)
12 | .run(args);
13 | }
14 | }
--------------------------------------------------------------------------------
/java/cloud/websocket/src/main/resources/bootstrap.yml:
--------------------------------------------------------------------------------
1 | spring:
2 | application:
3 | name: jxc-websocket
4 |
5 | cloud:
6 | nacos:
7 | config:
8 | server-addr: 127.0.0.1:8848
9 | file-extension: yml
10 | shared-configs:
11 | - data-id: jxc-common-redis.yml
12 | discovery:
13 | server-addr: 127.0.0.1:8848
--------------------------------------------------------------------------------
/java/db/my.rar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toesbieya/jxc-admin/5ee06acbe09a68de6d8957be324152ff8978b182/java/db/my.rar
--------------------------------------------------------------------------------
/java/local/.gitignore:
--------------------------------------------------------------------------------
1 | /target/
2 | /.idea/
3 | *.iml
4 | .mvn
5 | mvnw
6 | *.cmd
7 | *.jks
8 | application-prod.yml
--------------------------------------------------------------------------------
/java/local/src/main/java/cn/toesbieya/jxc/MyApplication.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc;
2 |
3 | import org.mybatis.spring.annotation.MapperScan;
4 | import org.springframework.boot.SpringApplication;
5 | import org.springframework.boot.autoconfigure.SpringBootApplication;
6 | import org.springframework.scheduling.annotation.EnableScheduling;
7 |
8 | @EnableScheduling
9 | @MapperScan("cn.toesbieya.jxc.mapper")
10 | @SpringBootApplication
11 | public class MyApplication {
12 | public static void main(String[] args) {
13 | SpringApplication.run(MyApplication.class, args);
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/java/local/src/main/java/cn/toesbieya/jxc/annoation/Lock.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.annoation;
2 |
3 | import java.lang.annotation.*;
4 |
5 | @Target(ElementType.METHOD)
6 | @Retention(RetentionPolicy.RUNTIME)
7 | @Documented
8 | public @interface Lock {
9 | String[] value() default {};
10 | }
11 |
--------------------------------------------------------------------------------
/java/local/src/main/java/cn/toesbieya/jxc/annoation/TimeCost.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.annoation;
2 |
3 | import java.lang.annotation.*;
4 |
5 | @Target(ElementType.METHOD)
6 | @Retention(RetentionPolicy.RUNTIME)
7 | @Documented
8 | public @interface TimeCost {
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/java/local/src/main/java/cn/toesbieya/jxc/annoation/UserAction.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.annoation;
2 |
3 | import java.lang.annotation.*;
4 |
5 | @Target(ElementType.METHOD)
6 | @Retention(RetentionPolicy.RUNTIME)
7 | @Documented
8 | public @interface UserAction {
9 | String value() default "";
10 | }
11 |
--------------------------------------------------------------------------------
/java/local/src/main/java/cn/toesbieya/jxc/config/QiniuConfig.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.config;
2 |
3 | import org.springframework.boot.context.properties.EnableConfigurationProperties;
4 | import org.springframework.context.annotation.Bean;
5 | import org.springframework.context.annotation.Configuration;
6 | import org.springframework.context.annotation.DependsOn;
7 |
8 | @Configuration
9 | @EnableConfigurationProperties(QiniuProperty.class)
10 | @DependsOn("redisUtil")
11 | public class QiniuConfig {
12 | @Bean
13 | public QiniuTemplate qiniuTemplate(QiniuProperty property) {
14 | return new QiniuTemplate(property);
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/java/local/src/main/java/cn/toesbieya/jxc/config/SocketProperty.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.config;
2 |
3 | import lombok.Data;
4 | import org.springframework.boot.context.properties.ConfigurationProperties;
5 |
6 | @ConfigurationProperties("socket")
7 | @Data
8 | public class SocketProperty {
9 | private String hostname = "localhost";
10 | private Integer port = 12580;
11 | private Integer maxFramePayloadLength = 1024 * 1024;
12 | private Integer maxHttpContentLength = 1024 * 1024;
13 |
14 | //ssl证书地址,jks格式,可以是classpath:xxx,也可以是C:\xxx这样的绝对路径
15 | private String keyStore;
16 | private String keyStorePassword;
17 | }
18 |
--------------------------------------------------------------------------------
/java/local/src/main/java/cn/toesbieya/jxc/constant/DocConstant.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.constant;
2 |
3 | public interface DocConstant {
4 | String UPDATE_DOC_LOCK_KEY = "UPDATE_DOC";
5 | String[] DOC_TYPE = {"CGDD", "CGRK", "CGTH", "XSDD", "XSCK", "XSTH"};
6 | String DOC_TYPE_REDIS_KEY = "DOC_ID";
7 | }
8 |
--------------------------------------------------------------------------------
/java/local/src/main/java/cn/toesbieya/jxc/constant/MsgConstant.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.constant;
2 |
3 | public interface MsgConstant {
4 | Integer STATUS_DRAFT = 0; //拟定
5 | Integer STATUS_PUBLISHED = 1; //已发布
6 | Integer STATUS_WITHDREW = 2; //已撤回
7 | }
8 |
--------------------------------------------------------------------------------
/java/local/src/main/java/cn/toesbieya/jxc/constant/SessionConstant.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.constant;
2 |
3 | public interface SessionConstant {
4 | //session过期时间,单位秒
5 | long EXPIRE = 3600 * 8;
6 |
7 | //存储用户信息的键的前缀
8 | String REDIS_NAMESPACE = "sessions:";
9 |
10 | //key过期事件的前缀
11 | String REDIS_EXPIRE_TOPIC_PREFIX = "__keyspace@0__:";
12 |
13 | //http headers中token的字段名
14 | String TOKEN_KEY = "X-Token";
15 |
16 | //区别无活动用户的时间间隔,单位秒
17 | long NO_ACTION_INTERVAL = 1800;
18 | }
19 |
--------------------------------------------------------------------------------
/java/local/src/main/java/cn/toesbieya/jxc/enumeration/DataScopeEnum.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.enumeration;
2 |
3 | public enum DataScopeEnum {
4 | ALL(1), SELF(2), SPECIFIC(3);
5 |
6 | private final int code;
7 |
8 | DataScopeEnum(int code) {
9 | this.code = code;
10 | }
11 |
12 | public int getCode() {
13 | return code;
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/java/local/src/main/java/cn/toesbieya/jxc/enumeration/DocFinishEnum.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.enumeration;
2 |
3 | public enum DocFinishEnum {
4 | TO_BE_STARTED(0), UNDERWAY(1), FINISHED(2);
5 |
6 | private final int code;
7 |
8 | DocFinishEnum(int code) {
9 | this.code = code;
10 | }
11 |
12 | public int getCode() {
13 | return code;
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/java/local/src/main/java/cn/toesbieya/jxc/enumeration/DocHistoryEnum.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.enumeration;
2 |
3 | public enum DocHistoryEnum {
4 | WITHDRAW(0), COMMIT(1), PASS(2), REJECT(3);
5 |
6 | private final int code;
7 |
8 | DocHistoryEnum(int code) {
9 | this.code = code;
10 | }
11 |
12 | public int getCode() {
13 | return code;
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/java/local/src/main/java/cn/toesbieya/jxc/enumeration/DocStatusEnum.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.enumeration;
2 |
3 | public enum DocStatusEnum {
4 | DRAFT(0), WAIT_VERIFY(1), VERIFIED(2);
5 |
6 | private final int code;
7 |
8 | DocStatusEnum(int code) {
9 | this.code = code;
10 | }
11 |
12 | public int getCode() {
13 | return code;
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/java/local/src/main/java/cn/toesbieya/jxc/enumeration/GeneralStatusEnum.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.enumeration;
2 |
3 | public enum GeneralStatusEnum {
4 | DISABLED(0), ENABLED(1);
5 |
6 | private final int code;
7 |
8 | GeneralStatusEnum(int code) {
9 | this.code = code;
10 | }
11 |
12 | public int getCode() {
13 | return code;
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/java/local/src/main/java/cn/toesbieya/jxc/enumeration/RecLoginHistoryEnum.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.enumeration;
2 |
3 | public enum RecLoginHistoryEnum {
4 | LOGOUT(0), LOGIN(1);
5 |
6 | private final int code;
7 |
8 | RecLoginHistoryEnum(int code) {
9 | this.code = code;
10 | }
11 |
12 | public int getCode() {
13 | return code;
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/java/local/src/main/java/cn/toesbieya/jxc/enumeration/ResourceTypeEnum.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.enumeration;
2 |
3 | public enum ResourceTypeEnum {
4 | ROOT(0), FOLDER(1), LEAF(2), API(3);
5 |
6 | private final int code;
7 |
8 | ResourceTypeEnum(int code) {
9 | this.code = code;
10 | }
11 |
12 | public int getCode() {
13 | return code;
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/java/local/src/main/java/cn/toesbieya/jxc/enumeration/UserActionEnum.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.enumeration;
2 |
3 | public enum UserActionEnum {
4 | FAIL(0), SUCCESS(1);
5 |
6 | private final int code;
7 |
8 | UserActionEnum(int code) {
9 | this.code = code;
10 | }
11 |
12 | public int getCode() {
13 | return code;
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/java/local/src/main/java/cn/toesbieya/jxc/exception/JsonResultException.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.exception;
2 |
3 | public class JsonResultException extends RuntimeException {
4 | public JsonResultException(String message) {
5 | super(message);
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/java/local/src/main/java/cn/toesbieya/jxc/mapper/BizDocHistoryMapper.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.mapper;
2 |
3 | import cn.toesbieya.jxc.model.entity.BizDocHistory;
4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
5 |
6 | public interface BizDocHistoryMapper extends BaseMapper {
7 |
8 | }
9 |
--------------------------------------------------------------------------------
/java/local/src/main/java/cn/toesbieya/jxc/mapper/BizPurchaseInboundSubMapper.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.mapper;
2 |
3 | import cn.toesbieya.jxc.model.entity.BizPurchaseInboundSub;
4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
5 |
6 | import java.util.List;
7 |
8 | public interface BizPurchaseInboundSubMapper extends BaseMapper {
9 | void insertBatch(List list);
10 | }
11 |
--------------------------------------------------------------------------------
/java/local/src/main/java/cn/toesbieya/jxc/mapper/BizPurchaseOrderSubMapper.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.mapper;
2 |
3 | import cn.toesbieya.jxc.model.entity.BizPurchaseOrderSub;
4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
5 |
6 | import java.util.List;
7 |
8 | public interface BizPurchaseOrderSubMapper extends BaseMapper {
9 | void insertBatch(List list);
10 | }
11 |
--------------------------------------------------------------------------------
/java/local/src/main/java/cn/toesbieya/jxc/mapper/BizSellOrderSubMapper.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.mapper;
2 |
3 | import cn.toesbieya.jxc.model.entity.BizSellOrderSub;
4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
5 |
6 | import java.util.List;
7 |
8 | public interface BizSellOrderSubMapper extends BaseMapper {
9 | void insertBatch(List list);
10 | }
11 |
--------------------------------------------------------------------------------
/java/local/src/main/java/cn/toesbieya/jxc/mapper/BizSellOutboundSubMapper.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.mapper;
2 |
3 | import cn.toesbieya.jxc.model.entity.BizSellOutboundSub;
4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
5 |
6 | import java.util.List;
7 |
8 | public interface BizSellOutboundSubMapper extends BaseMapper {
9 | void insertBatch(List list);
10 | }
11 |
--------------------------------------------------------------------------------
/java/local/src/main/java/cn/toesbieya/jxc/mapper/MsgMapper.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.mapper;
2 |
3 | import cn.toesbieya.jxc.model.entity.Msg;
4 | import cn.toesbieya.jxc.model.vo.search.MsgPersonalSearch;
5 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
6 |
7 | import java.util.List;
8 |
9 | public interface MsgMapper extends BaseMapper {
10 | List getReadByUser(MsgPersonalSearch search);
11 |
12 | List getUnreadByUser(MsgPersonalSearch search);
13 | }
14 |
--------------------------------------------------------------------------------
/java/local/src/main/java/cn/toesbieya/jxc/mapper/MsgStateMapper.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.mapper;
2 |
3 | import cn.toesbieya.jxc.model.entity.MsgState;
4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
5 |
6 | public interface MsgStateMapper extends BaseMapper {
7 | }
8 |
--------------------------------------------------------------------------------
/java/local/src/main/java/cn/toesbieya/jxc/mapper/RecAttachmentMapper.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.mapper;
2 |
3 | import cn.toesbieya.jxc.model.entity.RecAttachment;
4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
5 |
6 | import java.util.List;
7 |
8 | public interface RecAttachmentMapper extends BaseMapper {
9 | int insertBatch(List list);
10 | }
11 |
--------------------------------------------------------------------------------
/java/local/src/main/java/cn/toesbieya/jxc/mapper/RecLoginHistoryMapper.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.mapper;
2 |
3 | import cn.toesbieya.jxc.model.entity.RecLoginHistory;
4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
5 |
6 | public interface RecLoginHistoryMapper extends BaseMapper {
7 | }
8 |
--------------------------------------------------------------------------------
/java/local/src/main/java/cn/toesbieya/jxc/mapper/RecUserActionMapper.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.mapper;
2 |
3 | import cn.toesbieya.jxc.model.entity.RecUserAction;
4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
5 |
6 | public interface RecUserActionMapper extends BaseMapper {
7 | }
8 |
--------------------------------------------------------------------------------
/java/local/src/main/java/cn/toesbieya/jxc/mapper/SysCategoryMapper.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.mapper;
2 |
3 | import cn.toesbieya.jxc.model.entity.SysCategory;
4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
5 | import org.apache.ibatis.annotations.Param;
6 |
7 | public interface SysCategoryMapper extends BaseMapper {
8 | boolean checkIsUse(@Param("cid") Integer cid);
9 | }
10 |
--------------------------------------------------------------------------------
/java/local/src/main/java/cn/toesbieya/jxc/mapper/SysCustomerMapper.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.mapper;
2 |
3 | import cn.toesbieya.jxc.model.entity.SysCustomer;
4 | import cn.toesbieya.jxc.model.vo.result.RegionValueResult;
5 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
6 |
7 | import java.util.List;
8 |
9 | public interface SysCustomerMapper extends BaseMapper {
10 | List getLimitRegion();
11 | }
--------------------------------------------------------------------------------
/java/local/src/main/java/cn/toesbieya/jxc/mapper/SysDepartmentMapper.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.mapper;
2 |
3 | import cn.toesbieya.jxc.model.entity.SysDepartment;
4 | import cn.toesbieya.jxc.model.vo.DepartmentVo;
5 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
6 | import org.apache.ibatis.annotations.Param;
7 |
8 | import java.util.List;
9 |
10 | public interface SysDepartmentMapper extends BaseMapper {
11 | List selectChildrenById(@Param("id") int id);
12 |
13 | List selectParentsById(@Param("id") int id);
14 | }
15 |
--------------------------------------------------------------------------------
/java/local/src/main/java/cn/toesbieya/jxc/mapper/SysRegionMapper.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.mapper;
2 |
3 | import cn.toesbieya.jxc.model.entity.SysRegion;
4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
5 |
6 | public interface SysRegionMapper extends BaseMapper {
7 | }
8 |
--------------------------------------------------------------------------------
/java/local/src/main/java/cn/toesbieya/jxc/mapper/SysResourceMapper.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.mapper;
2 |
3 | import cn.toesbieya.jxc.model.entity.SysResource;
4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
5 | import org.apache.ibatis.annotations.Param;
6 |
7 | import java.util.List;
8 |
9 | public interface SysResourceMapper extends BaseMapper {
10 | List selectChildren(@Param("ids") String ids);
11 | }
12 |
--------------------------------------------------------------------------------
/java/local/src/main/java/cn/toesbieya/jxc/mapper/SysRoleMapper.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.mapper;
2 |
3 | import cn.toesbieya.jxc.model.entity.SysRole;
4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
5 |
6 | public interface SysRoleMapper extends BaseMapper {
7 | }
8 |
--------------------------------------------------------------------------------
/java/local/src/main/java/cn/toesbieya/jxc/mapper/SysSupplierMapper.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.mapper;
2 |
3 | import cn.toesbieya.jxc.model.entity.SysSupplier;
4 | import cn.toesbieya.jxc.model.vo.result.RegionValueResult;
5 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
6 |
7 | import java.util.List;
8 |
9 | public interface SysSupplierMapper extends BaseMapper {
10 | List getLimitRegion();
11 | }
12 |
--------------------------------------------------------------------------------
/java/local/src/main/java/cn/toesbieya/jxc/mapper/SysUserMapper.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.mapper;
2 |
3 | import cn.toesbieya.jxc.model.entity.SysUser;
4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
5 |
6 | public interface SysUserMapper extends BaseMapper {
7 | }
8 |
--------------------------------------------------------------------------------
/java/local/src/main/java/cn/toesbieya/jxc/model/entity/BizDoc.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.model.entity;
2 |
3 | import lombok.Data;
4 |
5 | @Data
6 | public class BizDoc {
7 | private String id;
8 | private Integer cid;
9 | private String cname;
10 | private Long ctime;
11 | private Integer vid;
12 | private String vname;
13 | private Long vtime;
14 | private Integer status;
15 | private String remark;
16 | }
17 |
--------------------------------------------------------------------------------
/java/local/src/main/java/cn/toesbieya/jxc/model/entity/BizDocHistory.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.model.entity;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Builder;
5 | import lombok.Data;
6 | import lombok.NoArgsConstructor;
7 |
8 | @Data
9 | @Builder
10 | @AllArgsConstructor
11 | @NoArgsConstructor
12 | public class BizDocHistory {
13 | private Integer id;
14 | private String pid;
15 | private Integer type;
16 | private Integer uid;
17 | private String uname;
18 | private Integer statusBefore;
19 | private Integer statusAfter;
20 | private Long time;
21 | private String info;
22 | }
23 |
--------------------------------------------------------------------------------
/java/local/src/main/java/cn/toesbieya/jxc/model/entity/BizDocSub.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.model.entity;
2 |
3 | import lombok.Data;
4 |
5 | import java.math.BigDecimal;
6 |
7 | @Data
8 | public class BizDocSub {
9 | private Integer id;
10 | private String pid;
11 | private Integer cid;
12 | private String cname;
13 | private BigDecimal num;
14 | }
15 |
--------------------------------------------------------------------------------
/java/local/src/main/java/cn/toesbieya/jxc/model/entity/BizPurchaseInbound.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.model.entity;
2 |
3 | import lombok.Data;
4 | import lombok.EqualsAndHashCode;
5 | import lombok.ToString;
6 |
7 | @Data
8 | @ToString(callSuper = true)
9 | @EqualsAndHashCode(callSuper = true)
10 | public class BizPurchaseInbound extends BizDoc {
11 | private String pid;
12 | }
13 |
--------------------------------------------------------------------------------
/java/local/src/main/java/cn/toesbieya/jxc/model/entity/BizPurchaseInboundSub.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.model.entity;
2 |
3 | import lombok.Data;
4 | import lombok.EqualsAndHashCode;
5 | import lombok.ToString;
6 |
7 | @Data
8 | @ToString(callSuper = true)
9 | @EqualsAndHashCode(callSuper = true)
10 | public class BizPurchaseInboundSub extends BizDocSub {
11 |
12 | }
13 |
--------------------------------------------------------------------------------
/java/local/src/main/java/cn/toesbieya/jxc/model/entity/BizPurchaseOrder.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.model.entity;
2 |
3 | import lombok.Data;
4 | import lombok.EqualsAndHashCode;
5 | import lombok.ToString;
6 |
7 | import java.math.BigDecimal;
8 |
9 | @Data
10 | @ToString(callSuper = true)
11 | @EqualsAndHashCode(callSuper = true)
12 | public class BizPurchaseOrder extends BizDoc {
13 | private Integer sid;
14 | private String sname;
15 | private Integer finish;
16 | private Long ftime;
17 | private BigDecimal total;
18 | }
19 |
--------------------------------------------------------------------------------
/java/local/src/main/java/cn/toesbieya/jxc/model/entity/BizPurchaseOrderSub.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.model.entity;
2 |
3 | import lombok.Data;
4 | import lombok.EqualsAndHashCode;
5 | import lombok.ToString;
6 |
7 | import java.math.BigDecimal;
8 |
9 | @Data
10 | @ToString(callSuper = true)
11 | @EqualsAndHashCode(callSuper = true)
12 | public class BizPurchaseOrderSub extends BizDocSub {
13 | private BigDecimal price;
14 | private BigDecimal remainNum;
15 | }
16 |
--------------------------------------------------------------------------------
/java/local/src/main/java/cn/toesbieya/jxc/model/entity/BizSellOrder.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.model.entity;
2 |
3 | import lombok.Data;
4 | import lombok.EqualsAndHashCode;
5 | import lombok.ToString;
6 |
7 | import java.math.BigDecimal;
8 |
9 | @Data
10 | @ToString(callSuper = true)
11 | @EqualsAndHashCode(callSuper = true)
12 | public class BizSellOrder extends BizDoc {
13 | private Integer customerId;
14 | private String customerName;
15 | private Integer finish;
16 | private Long ftime;
17 | private BigDecimal total;
18 | }
19 |
--------------------------------------------------------------------------------
/java/local/src/main/java/cn/toesbieya/jxc/model/entity/BizSellOrderSub.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.model.entity;
2 |
3 | import lombok.Data;
4 | import lombok.EqualsAndHashCode;
5 | import lombok.ToString;
6 |
7 | import java.math.BigDecimal;
8 |
9 | @Data
10 | @ToString(callSuper = true)
11 | @EqualsAndHashCode(callSuper = true)
12 | public class BizSellOrderSub extends BizDocSub {
13 | private BigDecimal price;
14 | private BigDecimal remainNum;
15 | }
--------------------------------------------------------------------------------
/java/local/src/main/java/cn/toesbieya/jxc/model/entity/BizSellOutbound.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.model.entity;
2 |
3 | import lombok.Data;
4 | import lombok.EqualsAndHashCode;
5 | import lombok.ToString;
6 |
7 | @Data
8 | @ToString(callSuper = true)
9 | @EqualsAndHashCode(callSuper = true)
10 | public class BizSellOutbound extends BizDoc {
11 | private String pid;
12 | }
13 |
--------------------------------------------------------------------------------
/java/local/src/main/java/cn/toesbieya/jxc/model/entity/BizSellOutboundSub.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.model.entity;
2 |
3 | import lombok.Data;
4 | import lombok.EqualsAndHashCode;
5 | import lombok.ToString;
6 |
7 | @Data
8 | @ToString(callSuper = true)
9 | @EqualsAndHashCode(callSuper = true)
10 | public class BizSellOutboundSub extends BizDocSub {
11 | private Integer sid;
12 | }
13 |
--------------------------------------------------------------------------------
/java/local/src/main/java/cn/toesbieya/jxc/model/entity/BizStock.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.model.entity;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Builder;
5 | import lombok.Data;
6 | import lombok.NoArgsConstructor;
7 |
8 | import java.math.BigDecimal;
9 |
10 | @Data
11 | @Builder
12 | @AllArgsConstructor
13 | @NoArgsConstructor
14 | public class BizStock {
15 | private Integer id;
16 | private Integer cid;
17 | private String cname;
18 | private BigDecimal num;
19 | private BigDecimal price;
20 | private Long ctime;
21 | private String cgrkid;
22 | private String cgddid;
23 | }
--------------------------------------------------------------------------------
/java/local/src/main/java/cn/toesbieya/jxc/model/entity/MsgState.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.model.entity;
2 |
3 | import lombok.Data;
4 |
5 | @Data
6 | public class MsgState {
7 | private Integer id;
8 | private Integer mid;
9 | private Integer uid;
10 | private Long time;
11 | }
12 |
--------------------------------------------------------------------------------
/java/local/src/main/java/cn/toesbieya/jxc/model/entity/RecAttachment.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.model.entity;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Builder;
5 | import lombok.Data;
6 | import lombok.NoArgsConstructor;
7 |
8 | @Data
9 | @Builder
10 | @NoArgsConstructor
11 | @AllArgsConstructor
12 | public class RecAttachment {
13 | private Integer id;
14 | private String pid;
15 | private String name;
16 | private Long time;
17 | private Integer sort;
18 | private String url;
19 | private Long size;
20 | }
21 |
--------------------------------------------------------------------------------
/java/local/src/main/java/cn/toesbieya/jxc/model/entity/RecLoginHistory.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.model.entity;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Builder;
5 | import lombok.Data;
6 | import lombok.NoArgsConstructor;
7 |
8 | @Data
9 | @Builder
10 | @AllArgsConstructor
11 | @NoArgsConstructor
12 | public class RecLoginHistory {
13 | private Long id;
14 | private Integer uid;
15 | private String uname;
16 | private String ip;
17 | private String address;
18 | private boolean login = false;
19 | private Long time;
20 | }
21 |
--------------------------------------------------------------------------------
/java/local/src/main/java/cn/toesbieya/jxc/model/entity/RecUserAction.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.model.entity;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Builder;
5 | import lombok.Data;
6 | import lombok.NoArgsConstructor;
7 |
8 | @Data
9 | @Builder
10 | @AllArgsConstructor
11 | @NoArgsConstructor
12 | public class RecUserAction {
13 | private Long id;
14 | private Integer uid;
15 | private String uname;
16 | private String url;
17 | private String ip;
18 | private Long time;
19 | private String action;
20 | private String error;
21 | private boolean success = false;
22 | }
23 |
--------------------------------------------------------------------------------
/java/local/src/main/java/cn/toesbieya/jxc/model/entity/StatFinishOrder.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.model.entity;
2 |
3 | import lombok.Data;
4 |
5 | @Data
6 | public class StatFinishOrder {
7 | private Integer id;
8 | private Integer purchase;
9 | private Integer sell;
10 | private Long time;
11 | }
12 |
--------------------------------------------------------------------------------
/java/local/src/main/java/cn/toesbieya/jxc/model/entity/StatProfitGoods.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.model.entity;
2 |
3 | import lombok.Data;
4 | import lombok.EqualsAndHashCode;
5 | import lombok.ToString;
6 |
7 | @Data
8 | @ToString(callSuper = true)
9 | @EqualsAndHashCode(callSuper = true)
10 | public class StatProfitGoods extends StatProfitTotal {
11 | private Integer cid;
12 | private String cname;
13 | }
14 |
--------------------------------------------------------------------------------
/java/local/src/main/java/cn/toesbieya/jxc/model/entity/StatProfitTotal.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.model.entity;
2 |
3 | import lombok.Data;
4 |
5 | import java.math.BigDecimal;
6 |
7 | @Data
8 | public class StatProfitTotal {
9 | private Integer id;
10 | private BigDecimal purchase;
11 | private BigDecimal sell;
12 | private BigDecimal profit;
13 | private Long time;
14 | }
15 |
--------------------------------------------------------------------------------
/java/local/src/main/java/cn/toesbieya/jxc/model/entity/SysCategory.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.model.entity;
2 |
3 | import lombok.Data;
4 |
5 | @Data
6 | public class SysCategory {
7 | private Integer id;
8 | private Integer pid;
9 | private String name;
10 | private boolean leaf = false;
11 | private Long ctime;
12 | }
13 |
--------------------------------------------------------------------------------
/java/local/src/main/java/cn/toesbieya/jxc/model/entity/SysCustomer.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.model.entity;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Builder;
5 | import lombok.Data;
6 | import lombok.NoArgsConstructor;
7 |
8 | @Data
9 | @Builder
10 | @AllArgsConstructor
11 | @NoArgsConstructor
12 | public class SysCustomer {
13 | private Integer id;
14 | private String name;
15 | private String address;
16 | private String linkman;
17 | private String linkphone;
18 | private String region;
19 | private boolean enable = false;
20 | private Long ctime;
21 | private String remark;
22 | }
--------------------------------------------------------------------------------
/java/local/src/main/java/cn/toesbieya/jxc/model/entity/SysDepartment.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.model.entity;
2 |
3 | import lombok.Data;
4 |
5 | @Data
6 | public class SysDepartment {
7 | private Integer id;
8 | private Integer pid;
9 | private String name;
10 | private boolean enable = false;
11 | }
12 |
--------------------------------------------------------------------------------
/java/local/src/main/java/cn/toesbieya/jxc/model/entity/SysRegion.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.model.entity;
2 |
3 | import lombok.Data;
4 |
5 | @Data
6 | public class SysRegion {
7 | private String id;
8 | private String pid;
9 | private String name;
10 | private String fullname;
11 | private int level;
12 | }
13 |
--------------------------------------------------------------------------------
/java/local/src/main/java/cn/toesbieya/jxc/model/entity/SysResource.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.model.entity;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Data;
5 | import lombok.NoArgsConstructor;
6 |
7 | @Data
8 | @AllArgsConstructor
9 | @NoArgsConstructor
10 | public class SysResource {
11 | private Integer id;
12 | private Integer pid;
13 | private Integer type;
14 | private String name;
15 | private String path;
16 | private String component;
17 | private String meta;
18 | private boolean admin = false;
19 | private boolean enable = true;
20 | }
21 |
--------------------------------------------------------------------------------
/java/local/src/main/java/cn/toesbieya/jxc/model/entity/SysRole.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.model.entity;
2 |
3 | import cn.toesbieya.jxc.enumeration.DataScopeEnum;
4 | import lombok.Data;
5 |
6 | @Data
7 | public class SysRole {
8 | private Integer id;
9 | private String name;
10 | private Integer cid;
11 | private String cname;
12 | private Long ctime;
13 | private boolean enable = false;
14 | private int scope = DataScopeEnum.ALL.getCode();
15 | private String departmentId;
16 | private String resourceId;
17 | }
18 |
--------------------------------------------------------------------------------
/java/local/src/main/java/cn/toesbieya/jxc/model/entity/SysSupplier.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.model.entity;
2 |
3 | import lombok.Data;
4 |
5 | @Data
6 | public class SysSupplier {
7 | private Integer id;
8 | private String name;
9 | private String address;
10 | private String linkman;
11 | private String linkphone;
12 | private String region;
13 | private boolean enable = false;
14 | private Long ctime;
15 | private String remark;
16 | }
17 |
--------------------------------------------------------------------------------
/java/local/src/main/java/cn/toesbieya/jxc/model/entity/SysUser.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.model.entity;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Data;
5 | import lombok.NoArgsConstructor;
6 |
7 | @Data
8 | @AllArgsConstructor
9 | @NoArgsConstructor
10 | public class SysUser {
11 | private Integer id;
12 | private String loginName;
13 | private String nickName;
14 | private String pwd;
15 | private Integer role;
16 | private String avatar;
17 | private Long ctime;
18 | private boolean admin = false;
19 | private boolean enable = false;
20 | private Integer dept;
21 | }
22 |
--------------------------------------------------------------------------------
/java/local/src/main/java/cn/toesbieya/jxc/model/vo/CustomerVo.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.model.vo;
2 |
3 | import cn.toesbieya.jxc.model.entity.SysCustomer;
4 | import lombok.Data;
5 | import lombok.EqualsAndHashCode;
6 | import lombok.NoArgsConstructor;
7 | import lombok.ToString;
8 | import org.springframework.beans.BeanUtils;
9 |
10 | @Data
11 | @NoArgsConstructor
12 | @ToString(callSuper = true)
13 | @EqualsAndHashCode(callSuper = true)
14 | public class CustomerVo extends SysCustomer {
15 | private String regionName;
16 |
17 | public CustomerVo(SysCustomer parent) {
18 | BeanUtils.copyProperties(parent, this);
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/java/local/src/main/java/cn/toesbieya/jxc/model/vo/DepartmentVo.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.model.vo;
2 |
3 | import cn.toesbieya.jxc.model.entity.SysDepartment;
4 | import lombok.Data;
5 | import lombok.EqualsAndHashCode;
6 | import lombok.NoArgsConstructor;
7 | import lombok.ToString;
8 | import org.springframework.beans.BeanUtils;
9 |
10 | @Data
11 | @NoArgsConstructor
12 | @ToString(callSuper = true)
13 | @EqualsAndHashCode(callSuper = true)
14 | public class DepartmentVo extends SysDepartment {
15 | String fullname;
16 |
17 | public DepartmentVo(SysDepartment parent) {
18 | BeanUtils.copyProperties(parent, this);
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/java/local/src/main/java/cn/toesbieya/jxc/model/vo/LoginParam.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.model.vo;
2 |
3 | import lombok.Data;
4 | import org.hibernate.validator.constraints.Length;
5 |
6 | import javax.validation.constraints.NotNull;
7 |
8 | @Data
9 | public class LoginParam {
10 | @NotNull(message = "用户名不能为空")
11 | @Length(max = 20, message = "用户名太长了")
12 | private String username;
13 |
14 | @NotNull(message = "密码不能为空")
15 | @Length(min = 32, max = 32, message = "密码异常")
16 | private String password;
17 | }
18 |
--------------------------------------------------------------------------------
/java/local/src/main/java/cn/toesbieya/jxc/model/vo/PasswordUpdateParam.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.model.vo;
2 |
3 | import lombok.Data;
4 |
5 | @Data
6 | public class PasswordUpdateParam {
7 | private Integer id;
8 | private String newPwd;
9 | private String oldPwd;
10 | }
11 |
--------------------------------------------------------------------------------
/java/local/src/main/java/cn/toesbieya/jxc/model/vo/RegisterParam.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.model.vo;
2 |
3 | import lombok.Data;
4 | import lombok.EqualsAndHashCode;
5 | import lombok.ToString;
6 | import org.hibernate.validator.constraints.Length;
7 |
8 | import javax.validation.constraints.NotNull;
9 |
10 | @Data
11 | @ToString(callSuper = true)
12 | @EqualsAndHashCode(callSuper = true)
13 | public class RegisterParam extends LoginParam {
14 | @NotNull(message = "昵称不能为空")
15 | @Length(max = 100, message = "昵称太长了")
16 | private String nick;
17 | }
18 |
--------------------------------------------------------------------------------
/java/local/src/main/java/cn/toesbieya/jxc/model/vo/SocketEventVo.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.model.vo;
2 |
3 | import cn.toesbieya.jxc.constant.SocketConstant;
4 | import lombok.Data;
5 |
6 | import java.util.List;
7 |
8 | @Data
9 | public class SocketEventVo {
10 | //事件类型
11 | private int type = SocketConstant.REDIS_EVENT_SPECIFIC;
12 |
13 | //事件名称
14 | private String event;
15 |
16 | //发送对象的id集合
17 | private List to;
18 |
19 | //数据包
20 | private Object data;
21 | }
22 |
--------------------------------------------------------------------------------
/java/local/src/main/java/cn/toesbieya/jxc/model/vo/SocketOfflineVo.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.model.vo;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Data;
5 | import lombok.NoArgsConstructor;
6 |
7 | @Data
8 | @NoArgsConstructor
9 | @AllArgsConstructor
10 | public class SocketOfflineVo {
11 | //用户ID
12 | private Integer uid;
13 |
14 | //断开时间
15 | private Long time;
16 | }
17 |
--------------------------------------------------------------------------------
/java/local/src/main/java/cn/toesbieya/jxc/model/vo/SupplierVo.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.model.vo;
2 |
3 | import cn.toesbieya.jxc.model.entity.SysSupplier;
4 | import lombok.Data;
5 | import lombok.EqualsAndHashCode;
6 | import lombok.NoArgsConstructor;
7 | import lombok.ToString;
8 | import org.springframework.beans.BeanUtils;
9 |
10 | @Data
11 | @NoArgsConstructor
12 | @ToString(callSuper = true)
13 | @EqualsAndHashCode(callSuper = true)
14 | public class SupplierVo extends SysSupplier {
15 | private String regionName;
16 |
17 | public SupplierVo(SysSupplier parent) {
18 | BeanUtils.copyProperties(parent, this);
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/java/local/src/main/java/cn/toesbieya/jxc/model/vo/result/RegionValueResult.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.model.vo.result;
2 |
3 | import lombok.Data;
4 |
5 | @Data
6 | public class RegionValueResult {
7 | private String id;
8 | private int value;
9 | }
10 |
--------------------------------------------------------------------------------
/java/local/src/main/java/cn/toesbieya/jxc/model/vo/result/StockSearchResult.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.model.vo.result;
2 |
3 | import lombok.Data;
4 |
5 | import java.math.BigDecimal;
6 |
7 | @Data
8 | public class StockSearchResult {
9 | private Integer cid;
10 | private String cname;
11 | private BigDecimal totalNum;
12 | private BigDecimal totalPrice;
13 | }
14 |
--------------------------------------------------------------------------------
/java/local/src/main/java/cn/toesbieya/jxc/model/vo/search/BaseSearch.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.model.vo.search;
2 |
3 | import lombok.Data;
4 |
5 | @Data
6 | class BaseSearch {
7 | private Integer page;
8 | private Integer pageSize;
9 | }
10 |
--------------------------------------------------------------------------------
/java/local/src/main/java/cn/toesbieya/jxc/model/vo/search/CategorySearch.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.model.vo.search;
2 |
3 | import lombok.Data;
4 |
5 | @Data
6 | public class CategorySearch {
7 | private Integer id;
8 | private String ids;
9 | private Integer pid;
10 | private String pids;
11 | private String name;
12 | private Boolean leaf;
13 | private Long startTime;
14 | private Long endTime;
15 | }
16 |
--------------------------------------------------------------------------------
/java/local/src/main/java/cn/toesbieya/jxc/model/vo/search/CustomerSearch.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.model.vo.search;
2 |
3 | import lombok.Data;
4 | import lombok.EqualsAndHashCode;
5 | import lombok.ToString;
6 |
7 | @Data
8 | @ToString(callSuper = true)
9 | @EqualsAndHashCode(callSuper = true)
10 | public class CustomerSearch extends BaseSearch {
11 | private Integer id;
12 | private String name;
13 | private String address;
14 | private String linkman;
15 | private String linkphone;
16 | private String region;
17 | private Boolean enable;
18 | private Long startTime;
19 | private Long endTime;
20 | }
21 |
--------------------------------------------------------------------------------
/java/local/src/main/java/cn/toesbieya/jxc/model/vo/search/DocHistorySearch.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.model.vo.search;
2 |
3 | import lombok.Data;
4 | import lombok.EqualsAndHashCode;
5 | import lombok.ToString;
6 |
7 | @Data
8 | @ToString(callSuper = true)
9 | @EqualsAndHashCode(callSuper = true)
10 | public class DocHistorySearch extends BaseSearch{
11 | private String pid;
12 | private String type;
13 | private String uid;
14 | private String uname;
15 | }
16 |
--------------------------------------------------------------------------------
/java/local/src/main/java/cn/toesbieya/jxc/model/vo/search/LoginHistorySearch.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.model.vo.search;
2 |
3 | import lombok.Data;
4 | import lombok.EqualsAndHashCode;
5 | import lombok.ToString;
6 |
7 | @Data
8 | @ToString(callSuper = true)
9 | @EqualsAndHashCode(callSuper = true)
10 | public class LoginHistorySearch extends BaseSearch {
11 | private Integer uid;
12 | private String uname;
13 | private Boolean login;
14 | private String ip;
15 | private String address;
16 | private Long endTime;
17 | private Long startTime;
18 | }
19 |
--------------------------------------------------------------------------------
/java/local/src/main/java/cn/toesbieya/jxc/model/vo/search/MsgPersonalSearch.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.model.vo.search;
2 |
3 | import lombok.Data;
4 | import lombok.EqualsAndHashCode;
5 | import lombok.ToString;
6 |
7 | @Data
8 | @ToString(callSuper = true)
9 | @EqualsAndHashCode(callSuper = true)
10 | public class MsgPersonalSearch extends BaseSearch {
11 | private Integer uid;
12 | private Long ctime;
13 | private boolean unread = true;
14 | }
15 |
--------------------------------------------------------------------------------
/java/local/src/main/java/cn/toesbieya/jxc/model/vo/search/MsgSearch.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.model.vo.search;
2 |
3 | import lombok.Data;
4 | import lombok.EqualsAndHashCode;
5 | import lombok.ToString;
6 |
7 | @Data
8 | @ToString(callSuper = true)
9 | @EqualsAndHashCode(callSuper = true)
10 | public class MsgSearch extends BaseSearch {
11 | private String title;
12 | private String type;
13 | private Integer uid;
14 | private String status;
15 | }
16 |
--------------------------------------------------------------------------------
/java/local/src/main/java/cn/toesbieya/jxc/model/vo/search/PurchaseInboundSearch.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.model.vo.search;
2 |
3 | import lombok.Data;
4 | import lombok.EqualsAndHashCode;
5 | import lombok.ToString;
6 |
7 | @Data
8 | @ToString(callSuper = true)
9 | @EqualsAndHashCode(callSuper = true)
10 | public class PurchaseInboundSearch extends DocSearch {
11 | private String pid;
12 | private String pidFuzzy;
13 | }
14 |
--------------------------------------------------------------------------------
/java/local/src/main/java/cn/toesbieya/jxc/model/vo/search/PurchaseOrderSearch.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.model.vo.search;
2 |
3 | import lombok.Data;
4 | import lombok.EqualsAndHashCode;
5 | import lombok.ToString;
6 |
7 | @Data
8 | @ToString(callSuper = true)
9 | @EqualsAndHashCode(callSuper = true)
10 | public class PurchaseOrderSearch extends DocSearch {
11 | private Integer sid;
12 | private String sname;
13 | private String finish;
14 | private Long ftimeStart;
15 | private Long ftimeEnd;
16 | }
17 |
--------------------------------------------------------------------------------
/java/local/src/main/java/cn/toesbieya/jxc/model/vo/search/RoleSearch.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.model.vo.search;
2 |
3 | import lombok.Data;
4 | import lombok.EqualsAndHashCode;
5 | import lombok.ToString;
6 |
7 | @Data
8 | @ToString(callSuper = true)
9 | @EqualsAndHashCode(callSuper = true)
10 | public class RoleSearch extends BaseSearch {
11 | private Integer id;
12 | private String name;
13 | private Integer cid;
14 | private String cname;
15 | private Boolean enable;
16 | private Long startTime;
17 | private Long endTime;
18 | }
19 |
--------------------------------------------------------------------------------
/java/local/src/main/java/cn/toesbieya/jxc/model/vo/search/SellOrderSearch.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.model.vo.search;
2 |
3 | import lombok.Data;
4 | import lombok.EqualsAndHashCode;
5 | import lombok.ToString;
6 |
7 | @Data
8 | @ToString(callSuper = true)
9 | @EqualsAndHashCode(callSuper = true)
10 | public class SellOrderSearch extends DocSearch {
11 | private Integer customerId;
12 | private String customerName;
13 | private String finish;
14 | private Long ftimeStart;
15 | private Long ftimeEnd;
16 | }
17 |
--------------------------------------------------------------------------------
/java/local/src/main/java/cn/toesbieya/jxc/model/vo/search/SellOutboundSearch.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.model.vo.search;
2 |
3 | import lombok.Data;
4 | import lombok.EqualsAndHashCode;
5 | import lombok.ToString;
6 |
7 | @Data
8 | @ToString(callSuper = true)
9 | @EqualsAndHashCode(callSuper = true)
10 | public class SellOutboundSearch extends DocSearch {
11 | private String pid;
12 | private String pidFuzzy;
13 | }
14 |
--------------------------------------------------------------------------------
/java/local/src/main/java/cn/toesbieya/jxc/model/vo/search/StockSearch.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.model.vo.search;
2 |
3 | import lombok.Data;
4 | import lombok.EqualsAndHashCode;
5 | import lombok.ToString;
6 |
7 | @Data
8 | @ToString(callSuper = true)
9 | @EqualsAndHashCode(callSuper = true)
10 | public class StockSearch extends BaseSearch {
11 | private Integer id;
12 | private String ids;
13 | private Integer cid;
14 | private String cids;
15 | private Long startTime;
16 | private Long endTime;
17 | private String cgddid;
18 | private String cgddids;
19 | private String cgrkid;
20 | private String cgrkids;
21 | }
22 |
--------------------------------------------------------------------------------
/java/local/src/main/java/cn/toesbieya/jxc/model/vo/search/SupplierSearch.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.model.vo.search;
2 |
3 | import lombok.Data;
4 | import lombok.EqualsAndHashCode;
5 | import lombok.ToString;
6 |
7 | @Data
8 | @ToString(callSuper = true)
9 | @EqualsAndHashCode(callSuper = true)
10 | public class SupplierSearch extends BaseSearch {
11 | private Integer id;
12 | private String name;
13 | private String address;
14 | private String linkman;
15 | private String linkphone;
16 | private String region;
17 | private Boolean enable;
18 | private Long startTime;
19 | private Long endTime;
20 | }
21 |
--------------------------------------------------------------------------------
/java/local/src/main/java/cn/toesbieya/jxc/model/vo/search/UserActionSearch.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.model.vo.search;
2 |
3 | import lombok.Data;
4 | import lombok.EqualsAndHashCode;
5 | import lombok.ToString;
6 |
7 | @Data
8 | @ToString(callSuper = true)
9 | @EqualsAndHashCode(callSuper = true)
10 | public class UserActionSearch extends BaseSearch {
11 | private Integer uid;
12 | private String uname;
13 | private String ip;
14 | private String url;
15 | private Long startTime;
16 | private Long endTime;
17 | private Boolean success;
18 | }
19 |
--------------------------------------------------------------------------------
/java/local/src/main/java/cn/toesbieya/jxc/model/vo/search/UserSearch.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.model.vo.search;
2 |
3 | import lombok.Data;
4 | import lombok.EqualsAndHashCode;
5 | import lombok.ToString;
6 |
7 | @Data
8 | @ToString(callSuper = true)
9 | @EqualsAndHashCode(callSuper = true)
10 | public class UserSearch extends BaseSearch {
11 | private Integer id;
12 | private String loginName;
13 | private String nickName;
14 | private String role;
15 | private Long startTime;
16 | private Long endTime;
17 | private Boolean enable;
18 | }
19 |
--------------------------------------------------------------------------------
/java/local/src/main/java/cn/toesbieya/jxc/model/vo/statictis/FourBlockStat.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.model.vo.statictis;
2 |
3 | import lombok.Data;
4 |
5 | import java.math.BigDecimal;
6 |
7 | @Data
8 | public class FourBlockStat {
9 | private long online;
10 | private BigDecimal purchase;
11 | private BigDecimal sell;
12 | private BigDecimal profit;
13 | }
14 |
--------------------------------------------------------------------------------
/java/local/src/main/java/cn/toesbieya/jxc/model/vo/update/DocStatusUpdate.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.model.vo.update;
2 |
3 | import lombok.Data;
4 |
5 | @Data
6 | public class DocStatusUpdate {
7 | private String id;
8 | private String pid;
9 | private String info;
10 | }
11 |
--------------------------------------------------------------------------------
/java/local/src/main/java/cn/toesbieya/jxc/model/vo/update/UserUpdatePwd.java:
--------------------------------------------------------------------------------
1 | package cn.toesbieya.jxc.model.vo.update;
2 |
3 | import lombok.Data;
4 |
5 | @Data
6 | public class UserUpdatePwd {
7 | private Integer id;
8 | private String old_pwd;
9 | private String new_pwd;
10 | }
11 |
--------------------------------------------------------------------------------
/java/local/src/main/resources/application-local.yml:
--------------------------------------------------------------------------------
1 | spring:
2 | datasource:
3 | url: jdbc:mysql://localhost:3306/my?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=true
4 | username: root
5 | password: root
6 | redis:
7 | host: localhost
8 | port: 6379
9 |
10 | socket:
11 | hostname: localhost
12 | port: 12580
13 |
14 | qiniu:
15 | access-key:
16 | secret-key:
17 | bucket:
--------------------------------------------------------------------------------
/java/local/src/main/resources/mapper/BizPurchaseInboundSub.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | INSERT INTO biz_purchase_inbound_sub(pid, cid, cname, num) VALUES
6 |
7 | (#{i.pid}, #{i.cid}, #{i.cname}, #{i.num})
8 |
9 |
10 |
--------------------------------------------------------------------------------
/java/local/src/main/resources/mapper/BizSellOutboundSub.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | INSERT INTO biz_sell_outbound_sub(pid, sid, cid, cname, num) VALUES
6 |
7 | (#{i.pid}, #{i.sid}, #{i.cid}, #{i.cname}, #{i.num})
8 |
9 |
10 |
--------------------------------------------------------------------------------
/java/local/src/main/resources/mapper/RecAttachment.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | insert into rec_attachment (pid, name, time, sort, url,size)
6 | VALUES
7 |
8 | (#{i.pid}, #{i.name}, #{i.time}, #{i.sort}, #{i.url},#{i.size})
9 |
10 |
11 |
--------------------------------------------------------------------------------
/java/local/src/main/resources/mapper/SysCategory.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
7 |
--------------------------------------------------------------------------------
/java/local/src/main/resources/mapper/SysCustomer.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
11 |
--------------------------------------------------------------------------------
/java/local/src/main/resources/mapper/SysSupplier.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
--------------------------------------------------------------------------------
/java/local/src/main/resources/script/get_doc_id.lua:
--------------------------------------------------------------------------------
1 | if redis.call('exists', KEYS[1]) == 0 then
2 | if redis.call('hget', KEYS[2], 'date') == ARGV[1] then
3 | if redis.call('hexists', KEYS[2], ARGV[2]) == 1 then
4 | return redis.call('hincrby', KEYS[2], ARGV[2], 1)
5 | else
6 | return 0
7 | end
8 | else
9 | return 0
10 | end
11 | else
12 | return 0
13 | end
--------------------------------------------------------------------------------
/java/local/src/main/resources/script/increase_and_expire.lua:
--------------------------------------------------------------------------------
1 | local current
2 | current = redis.call("incr", KEYS[1])
3 | if tonumber(current) == 1 then
4 | redis.call("expire", KEYS[1], ARGV[1])
5 | end
6 | return current
--------------------------------------------------------------------------------
/vue/full/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | node_modules
3 | /dist
4 | /test
5 |
6 | # local env files
7 | .env.local
8 | .env.*.local
9 |
10 | # Log files
11 | npm-debug.log*
12 | yarn-debug.log*
13 | yarn-error.log*
14 |
15 | # Editor directories and files
16 | .idea
17 | .vscode
18 | *.suo
19 | *.ntvs*
20 | *.njsproj
21 | *.sln
22 | *.sw?
23 |
--------------------------------------------------------------------------------
/vue/full/babel.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | presets: [
3 | require('@vue/cli-plugin-babel/preset')
4 | ]
5 | }
6 |
--------------------------------------------------------------------------------
/vue/full/element-ui-personal/index.js:
--------------------------------------------------------------------------------
1 | import Message from "./component/Message"
2 |
3 | export default function (Vue) {
4 | Vue.prototype.$message = Message
5 | }
6 |
--------------------------------------------------------------------------------
/vue/full/element-ui-personal/style/index.scss:
--------------------------------------------------------------------------------
1 | @import "./message.scss";
2 |
--------------------------------------------------------------------------------
/vue/full/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toesbieya/jxc-admin/5ee06acbe09a68de6d8957be324152ff8978b182/vue/full/public/favicon.ico
--------------------------------------------------------------------------------
/vue/full/public/static/img/dot1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toesbieya/jxc-admin/5ee06acbe09a68de6d8957be324152ff8978b182/vue/full/public/static/img/dot1.png
--------------------------------------------------------------------------------
/vue/full/public/static/img/dot2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toesbieya/jxc-admin/5ee06acbe09a68de6d8957be324152ff8978b182/vue/full/public/static/img/dot2.png
--------------------------------------------------------------------------------
/vue/full/public/static/img/dot3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toesbieya/jxc-admin/5ee06acbe09a68de6d8957be324152ff8978b182/vue/full/public/static/img/dot3.png
--------------------------------------------------------------------------------
/vue/full/public/static/img/dot4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toesbieya/jxc-admin/5ee06acbe09a68de6d8957be324152ff8978b182/vue/full/public/static/img/dot4.png
--------------------------------------------------------------------------------
/vue/full/public/static/img/fileType/doc.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toesbieya/jxc-admin/5ee06acbe09a68de6d8957be324152ff8978b182/vue/full/public/static/img/fileType/doc.png
--------------------------------------------------------------------------------
/vue/full/public/static/img/fileType/pdf.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toesbieya/jxc-admin/5ee06acbe09a68de6d8957be324152ff8978b182/vue/full/public/static/img/fileType/pdf.png
--------------------------------------------------------------------------------
/vue/full/public/static/img/fileType/ppt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toesbieya/jxc-admin/5ee06acbe09a68de6d8957be324152ff8978b182/vue/full/public/static/img/fileType/ppt.png
--------------------------------------------------------------------------------
/vue/full/public/static/img/fileType/rar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toesbieya/jxc-admin/5ee06acbe09a68de6d8957be324152ff8978b182/vue/full/public/static/img/fileType/rar.png
--------------------------------------------------------------------------------
/vue/full/public/static/img/fileType/txt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toesbieya/jxc-admin/5ee06acbe09a68de6d8957be324152ff8978b182/vue/full/public/static/img/fileType/txt.png
--------------------------------------------------------------------------------
/vue/full/public/static/img/fileType/xls.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toesbieya/jxc-admin/5ee06acbe09a68de6d8957be324152ff8978b182/vue/full/public/static/img/fileType/xls.png
--------------------------------------------------------------------------------
/vue/full/public/static/img/fileType/zip.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toesbieya/jxc-admin/5ee06acbe09a68de6d8957be324152ff8978b182/vue/full/public/static/img/fileType/zip.png
--------------------------------------------------------------------------------
/vue/full/src/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
12 |
--------------------------------------------------------------------------------
/vue/full/src/api/doc/history.js:
--------------------------------------------------------------------------------
1 | import {PostApi} from "@/api/request"
2 |
3 | export const search = new PostApi('/doc/history/search')
4 |
--------------------------------------------------------------------------------
/vue/full/src/api/file/index.js:
--------------------------------------------------------------------------------
1 | import {GetApi, PostApi} from "@/api/request"
2 |
3 | export const getToken = new GetApi(
4 | '/file/getToken',
5 | null,
6 | promise => promise.then(({data}) => data)
7 | )
8 |
9 | export const deleteUpload = new GetApi('/file/delete', url => ({params: {url: encodeURIComponent(url)}}))
10 |
11 | export const deleteUploadBatch = new PostApi('/file/deleteBatch')
12 |
--------------------------------------------------------------------------------
/vue/full/src/api/message/manage.js:
--------------------------------------------------------------------------------
1 | import {GetApi, PostApi} from "@/api/request"
2 |
3 | export const search = new PostApi(`/message/manage/search`)
4 |
5 | export const add = new PostApi(`/message/manage/add`)
6 |
7 | export const update = new PostApi(`/message/manage/update`)
8 |
9 | export const publish = new PostApi(`/message/manage/publish`)
10 |
11 | export const withdraw = new PostApi(`/message/manage/withdraw`)
12 |
13 | export const del = new GetApi(`/message/manage/del`, (id, title) => ({params: {id, title}}))
14 |
--------------------------------------------------------------------------------
/vue/full/src/api/message/user.js:
--------------------------------------------------------------------------------
1 | import {GetApi, PostApi} from "@/api/request"
2 |
3 | export const search = new PostApi(`/message/user/search`)
4 |
5 | export const read = new GetApi(`/message/user/read`, id => ({params: {id}}))
6 |
7 | export const readAll = new GetApi(`/message/user/readAll`)
8 |
--------------------------------------------------------------------------------
/vue/full/src/api/record/index.js:
--------------------------------------------------------------------------------
1 | import {PostApi} from "@/api/request"
2 |
3 | export const searchLoginHistory = new PostApi(`/record/searchLoginHistory`)
4 |
5 | export const searchUserAction = new PostApi(`/record/searchUserAction`)
6 |
--------------------------------------------------------------------------------
/vue/full/src/api/statistic/index.js:
--------------------------------------------------------------------------------
1 | import {GetApi} from "@/api/request"
2 |
3 | export const getFourBlock = new GetApi(`/statistic/getFourBlock`)
4 |
5 | export const getDailyProfitStat = new GetApi(`/statistic/getDailyProfitStat`)
6 |
7 | export const getDailyFinishOrder = new GetApi(`/statistic/getDailyFinishOrder`)
8 |
9 | export const getTotalProfitGoods = new GetApi(`/statistic/getTotalProfitGoods`)
10 |
--------------------------------------------------------------------------------
/vue/full/src/api/stock/current.js:
--------------------------------------------------------------------------------
1 | import {GetApi, PostApi} from "@/api/request"
2 |
3 | export const search = new PostApi(`/stock/current/search`)
4 |
5 | export const getDetail = new GetApi(`/stock/current/getDetail`, cids => ({params: {cids}}))
6 |
7 | export const getDetailById = new GetApi(`/stock/current/getDetailById`, ids => ({params: {ids}}))
8 |
--------------------------------------------------------------------------------
/vue/full/src/api/system/category.js:
--------------------------------------------------------------------------------
1 | import {GetApi, PostApi} from "@/api/request"
2 |
3 | export const search = new PostApi(`/system/category/search`)
4 |
5 | export const getAll = new GetApi(`/system/category/getAll`)
6 |
7 | export const add = new PostApi(`/system/category/add`)
8 |
9 | export const update = new PostApi(`/system/category/update`)
10 |
11 | export const del = new PostApi(`/system/category/del`)
12 |
--------------------------------------------------------------------------------
/vue/full/src/api/system/customer.js:
--------------------------------------------------------------------------------
1 | import {GetApi, PostApi} from "@/api/request"
2 |
3 | export const getLimitRegion = new GetApi(`/system/customer/getLimitRegion`)
4 |
5 | export const search = new PostApi(`/system/customer/search`)
6 |
7 | export const add = new PostApi(`/system/customer/add`)
8 |
9 | export const update = new PostApi(`/system/customer/update`)
10 |
11 | export const del = new PostApi(`/system/customer/del`)
12 |
--------------------------------------------------------------------------------
/vue/full/src/api/system/department.js:
--------------------------------------------------------------------------------
1 | import {GetApi, PostApi} from "@/api/request"
2 |
3 | export const get = new GetApi(`/system/department/get`, (all = true) => ({params: {all}}))
4 |
5 | export const add = new PostApi(`/system/department/add`)
6 |
7 | export const update = new PostApi(`/system/department/update`)
8 |
9 | export const del = new PostApi(`/system/department/del`)
10 |
--------------------------------------------------------------------------------
/vue/full/src/api/system/resource.js:
--------------------------------------------------------------------------------
1 | import {GetApi, PostApi} from "@/api/request"
2 |
3 | export const getAll = new GetApi(`/system/resource/getAll`)
4 |
5 | export const add = new PostApi(`/system/resource/add`)
6 |
7 | export const update = new PostApi(`/system/resource/update`)
8 |
9 | export const del = new GetApi(`/system/resource/del`, id => ({params: {id}}))
10 |
--------------------------------------------------------------------------------
/vue/full/src/api/system/role.js:
--------------------------------------------------------------------------------
1 | import {GetApi, PostApi} from "@/api/request"
2 |
3 | export const search = new PostApi(`/system/role/search`)
4 |
5 | export const get = new GetApi(`/system/role/get`)
6 |
7 | export const add = new PostApi(`/system/role/add`)
8 |
9 | export const update = new PostApi(`/system/role/update`)
10 |
11 | export const del = new PostApi(`/system/role/del`)
12 |
--------------------------------------------------------------------------------
/vue/full/src/api/system/supplier.js:
--------------------------------------------------------------------------------
1 | import {GetApi, PostApi} from "@/api/request"
2 |
3 | export const getLimitRegion = new GetApi(`/system/supplier/getLimitRegion`)
4 |
5 | export const search = new PostApi(`/system/supplier/search`)
6 |
7 | export const add = new PostApi(`/system/supplier/add`)
8 |
9 | export const update = new PostApi(`/system/supplier/update`)
10 |
11 | export const del = new PostApi(`/system/supplier/del`)
12 |
--------------------------------------------------------------------------------
/vue/full/src/api/system/user.js:
--------------------------------------------------------------------------------
1 | import {PostApi} from "@/api/request"
2 |
3 | export const search = new PostApi(`/system/user/search`)
4 |
5 | export const kick = new PostApi(`/system/user/kick`)
6 |
7 | export const add = new PostApi(`/system/user/add`)
8 |
9 | export const update = new PostApi(`/system/user/update`)
10 |
11 | export const del = new PostApi(`/system/user/del`)
12 |
13 | export const resetPwd = new PostApi(`/system/user/resetPwd`)
14 |
--------------------------------------------------------------------------------
/vue/full/src/asset/icon/index.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import VIcon from '@/component/Icon'
3 |
4 | Vue.component('v-icon', VIcon)
5 |
6 | const req = require.context('./svg', false, /\.svg$/)
7 | const keys = req.keys()
8 | keys.map(req)
9 | export default keys.map(i => i.match(/\.\/(.*)\.svg/)[1])
10 |
--------------------------------------------------------------------------------
/vue/full/src/asset/icon/svg/check.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/vue/full/src/asset/icon/svg/documentation.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/vue/full/src/asset/icon/svg/home.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/vue/full/src/asset/icon/svg/money.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/vue/full/src/asset/icon/svg/password.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/vue/full/src/asset/icon/svg/show.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/vue/full/src/asset/icon/svg/stock.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/vue/full/src/asset/icon/svg/user.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/vue/full/src/component/RegionSelector/mixin.js:
--------------------------------------------------------------------------------
1 | export default {
2 | props: {
3 | value: String,
4 | readonly: Boolean,
5 | size: String,
6 | getChildrenOnSelect: Boolean,
7 | limit: Boolean,
8 | limitApi: Function,
9 | regionDataUrl: String
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/vue/full/src/component/RegionSelector/store.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 |
3 | export const store = Vue.observable({
4 | data: []
5 | })
6 |
7 | export function init(url) {
8 | return fetch(url)
9 | .then(r => r.json())
10 | .then(r => store.data = r || [])
11 | }
12 |
--------------------------------------------------------------------------------
/vue/full/src/component/Skeleton/constant.js:
--------------------------------------------------------------------------------
1 | export const skeletonTypes = [
2 | 'text', 'circle'
3 | ]
4 | export const skeletonAnimations = [
5 | 'wave', 'pulse', 'pulse-x', 'pulse-y', 'fade', 'blink', 'none'
6 | ]
7 |
--------------------------------------------------------------------------------
/vue/full/src/component/abstract/Dialog/style.scss:
--------------------------------------------------------------------------------
1 | .abstract-dialog {
2 | .el-dialog__body {
3 | padding: 0;
4 | }
5 |
6 | .abstract-dialog-container {
7 | position: relative;
8 | width: 100%;
9 |
10 | .abstract-dialog-body {
11 | padding: 24px 24px 0
12 | }
13 |
14 | .el-form {
15 | padding: 0;
16 | }
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/vue/full/src/component/biz/UserSelector/index.js:
--------------------------------------------------------------------------------
1 | import SimpleMultipleUserSelector from "./SimpleMultipleUserSelector"
2 |
3 | export {
4 | SimpleMultipleUserSelector
5 | }
6 |
--------------------------------------------------------------------------------
/vue/full/src/directive/index.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import dragDialog from './dragDialog'
3 | import ripple from './ripple'
4 |
5 | Vue.directive('drag-dialog', dragDialog)
6 | Vue.directive('ripple', ripple)
7 |
8 |
--------------------------------------------------------------------------------
/vue/full/src/globalMethod/BottomTip/index.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import Main from './main.vue'
3 |
4 | const BottomTipConstructor = Vue.extend(Main)
5 |
6 | let instance
7 |
8 | const bottomTip = function (message) {
9 | instance && instance.close()
10 | instance = new BottomTipConstructor({data: {message}})
11 | instance.$mount()
12 | document.body.appendChild(instance.$el)
13 | instance.value = true
14 | return instance
15 | }
16 |
17 | bottomTip.close = function () {
18 | if (instance) {
19 | instance.close()
20 | instance = null
21 | }
22 | }
23 |
24 | export default bottomTip
25 |
--------------------------------------------------------------------------------
/vue/full/src/globalMethod/Verify/image/btn_move.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toesbieya/jxc-admin/5ee06acbe09a68de6d8957be324152ff8978b182/vue/full/src/globalMethod/Verify/image/btn_move.png
--------------------------------------------------------------------------------
/vue/full/src/globalMethod/Verify/image/btn_stop.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toesbieya/jxc-admin/5ee06acbe09a68de6d8957be324152ff8978b182/vue/full/src/globalMethod/Verify/image/btn_stop.png
--------------------------------------------------------------------------------
/vue/full/src/globalMethod/Verify/image/icon_close.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toesbieya/jxc-admin/5ee06acbe09a68de6d8957be324152ff8978b182/vue/full/src/globalMethod/Verify/image/icon_close.png
--------------------------------------------------------------------------------
/vue/full/src/globalMethod/Verify/image/icon_info.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toesbieya/jxc-admin/5ee06acbe09a68de6d8957be324152ff8978b182/vue/full/src/globalMethod/Verify/image/icon_info.png
--------------------------------------------------------------------------------
/vue/full/src/globalMethod/Verify/image/icon_refresh_bottom.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toesbieya/jxc-admin/5ee06acbe09a68de6d8957be324152ff8978b182/vue/full/src/globalMethod/Verify/image/icon_refresh_bottom.png
--------------------------------------------------------------------------------
/vue/full/src/globalMethod/Verify/image/icon_refresh_top.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toesbieya/jxc-admin/5ee06acbe09a68de6d8957be324152ff8978b182/vue/full/src/globalMethod/Verify/image/icon_refresh_top.png
--------------------------------------------------------------------------------
/vue/full/src/globalMethod/Verify/image/loading.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toesbieya/jxc-admin/5ee06acbe09a68de6d8957be324152ff8978b182/vue/full/src/globalMethod/Verify/image/loading.png
--------------------------------------------------------------------------------
/vue/full/src/globalMethod/Verify/image/track.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toesbieya/jxc-admin/5ee06acbe09a68de6d8957be324152ff8978b182/vue/full/src/globalMethod/Verify/image/track.png
--------------------------------------------------------------------------------
/vue/full/src/globalMethod/index.js:
--------------------------------------------------------------------------------
1 | import BottomTip from './BottomTip'
2 | import Guide from './Guide'
3 | import ImageViewer from './ImageViewer'
4 | import Verify from './Verify'
5 | import Signature from './SignautreBoard'
6 |
7 | export default function (Vue) {
8 | Vue.prototype.$bottomTip = BottomTip
9 | Vue.prototype.$guide = Guide
10 | Vue.prototype.$image = ImageViewer
11 | Vue.prototype.$verify = Verify
12 | Vue.prototype.$signature = Signature
13 | }
14 |
--------------------------------------------------------------------------------
/vue/full/src/layout/component/Footer/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
12 |
--------------------------------------------------------------------------------
/vue/full/src/layout/component/Footer/style.scss:
--------------------------------------------------------------------------------
1 | .page-footer > .copyright {
2 | color: $--color-text-secondary;
3 | font-size: 14px;
4 |
5 | > a:hover {
6 | color: $--color-primary;
7 | text-decoration: underline;
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/vue/full/src/layout/component/NotifyBell/style.scss:
--------------------------------------------------------------------------------
1 | .notify-bell-badge .el-badge__content {
2 | top: 15px !important;
3 | right: 10px !important;
4 | border: none;
5 | }
6 |
--------------------------------------------------------------------------------
/vue/full/src/layout/component/SettingDrawer/component/checkbox/ColorCheckbox.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
16 |
--------------------------------------------------------------------------------
/vue/full/src/layout/component/SettingDrawer/component/checkbox/Group.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
16 |
--------------------------------------------------------------------------------
/vue/full/src/layout/component/SettingDrawer/component/checkbox/ImgCheckbox.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
![]()
4 |
5 |
6 |
7 |
8 |
22 |
--------------------------------------------------------------------------------
/vue/full/src/layout/component/SettingDrawer/component/checkbox/mixin.js:
--------------------------------------------------------------------------------
1 | export default {
2 | props: ['value'],
3 |
4 | computed: {
5 | checked() {
6 | const group = this.$parent
7 | return group && group.value === this.value
8 | }
9 | },
10 |
11 | methods: {
12 | click() {
13 | if (this.checked) return
14 | this.$parent.$emit('input', this.value)
15 | }
16 | },
17 |
18 | created() {
19 | const group = this.$parent
20 | group && group.children.push(this.value)
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/vue/full/src/layout/component/SettingDrawer/style.scss:
--------------------------------------------------------------------------------
1 | @import "~@/style/var";
2 | @import "./component/checkbox/style";
3 |
4 | .setting-drawer {
5 | overflow-y: auto;
6 |
7 | .el-drawer__body {
8 | padding: $--dialog-padding-primary;
9 | }
10 |
11 | &-item {
12 | display: flex;
13 | justify-content: space-between;
14 | color: $--color-text-regular;
15 | font-size: 14px;
16 | padding: 12px 0;
17 | }
18 |
19 | .el-select {
20 | width: 80px;
21 | }
22 |
23 | .el-button {
24 | width: 100%;
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/vue/full/src/layout/mixin/offline.js:
--------------------------------------------------------------------------------
1 | import {isLogin} from "@/util/auth"
2 |
3 | export default {
4 | computed: {
5 | showOfflineTip() {
6 | return !this.$store.state.websocket.online && isLogin()
7 | },
8 | },
9 |
10 | watch: {
11 | showOfflineTip(v) {
12 | v ? this.$bottomTip('与服务器失去连接') : this.$bottomTip.close()
13 | }
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/vue/full/src/layout/style.scss:
--------------------------------------------------------------------------------
1 | @import "~el-admin-layout/src/style";
2 | @import "~el-admin-layout/src/style/maxViewHeight";
3 |
4 | @import "./component/Footer/style";
5 | @import "./component/NotifyBell/style";
6 | @import "./component/SettingDrawer/style";
7 |
8 |
9 |
--------------------------------------------------------------------------------
/vue/full/src/mixin/chart/index.js:
--------------------------------------------------------------------------------
1 | import logic from "./logic"
2 | import resize from "./resize"
3 |
4 | export {logic, resize}
5 |
--------------------------------------------------------------------------------
/vue/full/src/mixin/dialogMixin.js:
--------------------------------------------------------------------------------
1 | export default {
2 | methods: {
3 | closeDialog() {
4 | this.$emit('input', false)
5 | }
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/vue/full/src/plugin/canvasAnimation/firework/Rocket.js:
--------------------------------------------------------------------------------
1 | import Vector from "./Vector"
2 | import Trail from "./Trail"
3 |
4 | export default class Rocket extends Trail {
5 | constructor(childFactory, explosionFactory, position, velocity = new Vector()) {
6 | super(childFactory, position, velocity)
7 |
8 | this.explosionFactory = explosionFactory
9 | this.lifetime = 10
10 | }
11 |
12 | update(time) {
13 | if (this.getRemainingLifetime() && this.velocity.y > 0) {
14 | this.explosionFactory(this)
15 | this.lifetime = 0
16 | }
17 |
18 | super.update(time)
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/vue/full/src/plugin/canvasAnimation/firework/Time.js:
--------------------------------------------------------------------------------
1 | export default class Time {
2 | constructor() {
3 | const now = Time.now()
4 | this.delta = 0
5 | this.elapsed = 0
6 | this.start = now
7 | this.previous = now
8 | }
9 |
10 | update() {
11 | const now = Time.now()
12 | this.delta = now - this.previous
13 | this.elapsed = now - this.start
14 | this.previous = now
15 | }
16 |
17 | static now() {
18 | return Date.now() / 1000
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/vue/full/src/plugin/canvasAnimation/firework/Vector.js:
--------------------------------------------------------------------------------
1 | export default class Vector {
2 | constructor(x = 0, y = 0) {
3 | this.x = x
4 | this.y = y
5 | }
6 |
7 | add(v) {
8 | this.x += v.x
9 | this.y += v.y
10 | return this
11 | }
12 |
13 | multiplyScalar(s) {
14 | this.x *= s
15 | this.y *= s
16 | return this
17 | }
18 |
19 | clone() {
20 | return new Vector(this.x, this.y)
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/vue/full/src/plugin/canvasAnimation/particleBall/util.js:
--------------------------------------------------------------------------------
1 | const util = {
2 | norm: function (value, min, max) {
3 | return (value - min) / (max - min)
4 | },
5 | lerp: function (norm, min, max) {
6 | return min + norm * (max - min)
7 | },
8 | map: function (value, sourceMin, sourceMax, destMin, destMax) {
9 | return this.lerp(this.norm(value, sourceMin, sourceMax), destMin, destMax)
10 | }
11 | }
12 |
13 | export default util
14 |
--------------------------------------------------------------------------------
/vue/full/src/plugin/canvasAnimation/reflectRain/Vector.js:
--------------------------------------------------------------------------------
1 | export default class Vector {
2 | constructor(x, y) {
3 | this.x = x || 0
4 | this.y = y || 0
5 | }
6 |
7 | add({x, y}) {
8 | this.x += x
9 | this.y += y
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/vue/full/src/plugin/canvasAnimation/sparkRain/util.js:
--------------------------------------------------------------------------------
1 | export function rand(min, max) {
2 | return Math.floor(Math.random() * (max - min + 1)) + min
3 | }
4 |
--------------------------------------------------------------------------------
/vue/full/src/plugin/webgl/fluid/Pointer.js:
--------------------------------------------------------------------------------
1 | class Pointer {
2 | constructor() {
3 | this.id = -1
4 | this.texcoordX = 0
5 | this.texcoordY = 0
6 | this.prevTexcoordX = 0
7 | this.prevTexcoordY = 0
8 | this.deltaX = 0
9 | this.deltaY = 0
10 | this.down = false
11 | this.moved = false
12 | this.color = [30, 0, 300]
13 | }
14 | }
15 |
16 | export default Pointer
17 |
--------------------------------------------------------------------------------
/vue/full/src/plugin/webgl/fluid/Program.js:
--------------------------------------------------------------------------------
1 | import {createProgram, getUniforms} from "./util"
2 |
3 | class Program {
4 | constructor(gl, vertexShader, fragmentShader) {
5 | this.uniforms = {}
6 | this.program = createProgram(gl, vertexShader, fragmentShader)
7 | this.uniforms = getUniforms(gl, this.program)
8 | }
9 |
10 | bind(gl) {
11 | gl.useProgram(this.program)
12 | }
13 | }
14 |
15 | export default Program
16 |
--------------------------------------------------------------------------------
/vue/full/src/router/guardian/index.js:
--------------------------------------------------------------------------------
1 | import nprogress from './nprogress'
2 | import accessControl from './accessControl'
3 |
4 | export default function (router) {
5 | nprogress(router)
6 | accessControl(router)
7 | }
8 |
--------------------------------------------------------------------------------
/vue/full/src/router/guardian/nprogress.js:
--------------------------------------------------------------------------------
1 | import NProgress from 'nprogress'
2 | import {Const} from 'el-admin-layout'
3 |
4 | NProgress.configure({showSpinner: false})
5 |
6 | const beforeEach = (to, from, next) => {
7 | //使用redirect进行跳转时不显示进度条
8 | !to.path.startsWith(Const.redirectPath) && NProgress.start()
9 |
10 | next()
11 | }
12 |
13 | const afterEach = () => NProgress.done()
14 |
15 | export default function (router) {
16 | router.beforeEach(beforeEach)
17 | router.afterEach(afterEach)
18 | }
19 |
--------------------------------------------------------------------------------
/vue/full/src/router/module/admin/child/default.js:
--------------------------------------------------------------------------------
1 | //路由表:默认页面
2 |
3 | /**
4 | * @type {import('vue-router').RouteConfig[]}
5 | */
6 | const router = [
7 | {
8 | path: 'index',
9 | component: 'admin/index/',
10 | name: 'index',
11 | meta: {title: '首页', affix: true, icon: 'svg-home', noAuth: true, pageHeader: false, sort: 0}
12 | },
13 | {
14 | path: 'user',
15 | name: 'userCenter',
16 | component: 'admin/userCenter/',
17 | meta: {title: '个人中心', noCache: true, icon: 'svg-user', noAuth: true, pageHeader: false, hidden: true},
18 | }
19 | ]
20 |
21 | export default router
22 |
--------------------------------------------------------------------------------
/vue/full/src/router/module/admin/child/message.js:
--------------------------------------------------------------------------------
1 | /*路由表:消息中心*/
2 |
3 | const router = {
4 | path: 'message',
5 | meta: {title: '消息中心', icon: 'svg-message'},
6 | children: [
7 | {
8 | path: 'manage',
9 | name: 'messageManagement',
10 | component: 'admin/message/manage/',
11 | meta: {title: '消息管理'}
12 | },
13 | {
14 | path: 'user',
15 | name: 'userMessage',
16 | component: 'admin/message/user/',
17 | meta: {title: '个人消息', noAuth: true, noCache: true}
18 | }
19 | ]
20 | }
21 |
22 | export default router
23 |
--------------------------------------------------------------------------------
/vue/full/src/router/module/admin/child/stock.js:
--------------------------------------------------------------------------------
1 | /*路由表:库存管理*/
2 |
3 | const router = {
4 | path: 'stock',
5 | meta: {title: '库存管理', icon: 'svg-stock'},
6 | children: [
7 | {
8 | path: 'current',
9 | name: 'currentStock',
10 | component: 'admin/stock/current/',
11 | meta: {title: '当前库存'}
12 | }
13 | ]
14 | }
15 |
16 | export default router
17 |
--------------------------------------------------------------------------------
/vue/full/src/router/module/admin/index.js:
--------------------------------------------------------------------------------
1 | /*顶级菜单:后台管理*/
2 |
3 | import {context2array} from '@/router/util'
4 |
5 | const files = require.context('./child', false, /\.js$/)
6 |
7 | export default {
8 | path: '/',
9 | component: 'Layout',
10 | meta: {title: '后台管理', icon: 'svg-home', sort: 0},
11 | children: context2array(files)
12 | }
13 |
--------------------------------------------------------------------------------
/vue/full/src/router/module/dev/index.js:
--------------------------------------------------------------------------------
1 | /*顶级菜单:开发用的页面*/
2 | import component from "@/view/dev"
3 |
4 | export default {
5 | path: '/dev',
6 | component,
7 | meta: {title: '开发专用页面', icon: 'svg-develop', noAuth: true, noCache: true}
8 | }
9 |
--------------------------------------------------------------------------------
/vue/full/src/router/module/doc/index.js:
--------------------------------------------------------------------------------
1 | export default {
2 | path: 'https://doc.toesbieya.cn/jxc-admin',
3 | meta: {title: '文档', icon: 'svg-documentation', noAuth: true}
4 | }
5 |
--------------------------------------------------------------------------------
/vue/full/src/router/module/example/child/cool.js:
--------------------------------------------------------------------------------
1 | export default {
2 | path: 'cool',
3 | meta: {title: '好玩的东东', icon: 'el-icon-s-opportunity'},
4 | children: [
5 | {
6 | path: 'fluid',
7 | component: 'example/cool/fluid',
8 | meta: {title: '流体动画'}
9 | },
10 | {
11 | path: 'l2d',
12 | component: 'example/cool/l2d',
13 | meta: {title: '看板娘'}
14 | },
15 | ]
16 | }
17 |
--------------------------------------------------------------------------------
/vue/full/src/router/module/example/child/directive.js:
--------------------------------------------------------------------------------
1 | export default {
2 | path: 'directive',
3 | meta: {title: '全局指令', icon: 'el-icon-s-grid'},
4 | children: [
5 | {
6 | path: 'dragDialog',
7 | component: 'example/directive/dragDialog',
8 | meta: {title: '可拖拽dialog'}
9 | },
10 | {
11 | path: 'ripple',
12 | component: 'example/directive/ripple',
13 | meta: {title: '波纹'}
14 | }
15 | ]
16 | }
17 |
--------------------------------------------------------------------------------
/vue/full/src/router/module/example/child/icon.js:
--------------------------------------------------------------------------------
1 | export default {
2 | path: 'icon',
3 | component: 'example/icon/',
4 | meta: {title: '图 标', icon: 'el-icon-eleme'}
5 | }
6 |
--------------------------------------------------------------------------------
/vue/full/src/router/module/example/child/iframe.js:
--------------------------------------------------------------------------------
1 | export default {
2 | path: 'iframe',
3 | meta: {title: 'iframe', noCache: false, icon: 'el-icon-s-flag'},
4 | children: [
5 | {
6 | path: 'taobao',
7 | meta: {title: '淘宝', iframe: 'https://www.taobao.com'}
8 | },
9 | {
10 | path: 'baidu',
11 | meta: {title: '百度', iframe: 'https://www.baidu.com'}
12 | }
13 | ]
14 | }
15 |
--------------------------------------------------------------------------------
/vue/full/src/router/module/example/index.js:
--------------------------------------------------------------------------------
1 | /*顶级菜单:演示用例*/
2 |
3 | import {context2array} from '@/router/util'
4 |
5 | const files = require.context('./child', false, /\.js$/)
6 |
7 | export default {
8 | path: '/example',
9 | component: 'Layout',
10 | meta: {title: '演示用例', icon: 'svg-show', noAuth: true, noCache: true, sort: 1},
11 | children: context2array(files)
12 | }
13 |
--------------------------------------------------------------------------------
/vue/full/src/router/module/index.js:
--------------------------------------------------------------------------------
1 | import admin from './admin'
2 | import example from './example'
3 | import dev from './dev'
4 | import doc from './doc'
5 |
6 | export default [admin, example, dev, doc]
7 |
--------------------------------------------------------------------------------
/vue/full/src/store/index.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import Vuex from 'vuex'
3 |
4 | Vue.use(Vuex)
5 |
6 | const modulesFiles = require.context('./module', true, /\.js$/)
7 |
8 | // you do not need `import app from './modules/app'`
9 | // it will auto require all vuex module from modules file
10 | const modules = modulesFiles.keys().reduce((modules, modulePath) => {
11 | // set './app.js' => 'app'
12 | const moduleName = modulePath.replace(/^\.\/(.*)\.\w+$/, '$1')
13 | const value = modulesFiles(modulePath)
14 | modules[moduleName] = value.default
15 | return modules
16 | }, {})
17 |
18 | export default new Vuex.Store({modules})
19 |
--------------------------------------------------------------------------------
/vue/full/src/store/module/app.js:
--------------------------------------------------------------------------------
1 | import {createMutations} from "@/store/util"
2 |
3 | const state = {
4 | //登录页背景动画
5 | loginBackgroundAnimation: 'sparkRain',
6 | }
7 |
8 | const mutations = createMutations(state)
9 |
10 | export default {
11 | namespaced: true,
12 | state,
13 | mutations
14 | }
15 |
--------------------------------------------------------------------------------
/vue/full/src/store/module/dataCache.js:
--------------------------------------------------------------------------------
1 | /*
2 | * 数据缓存
3 | * 比如商品分类信息等等
4 | * */
5 | import {createTree} from '@/util/tree'
6 |
7 | const state = {
8 | categories: [],
9 | categoryTree: []
10 | }
11 |
12 | const mutations = {
13 | categories(state, categories) {
14 | state.categories = categories || []
15 | state.categoryTree = createTree(state.categories)
16 | }
17 | }
18 |
19 |
20 | export default {
21 | namespaced: true,
22 | state,
23 | mutations
24 | }
25 |
--------------------------------------------------------------------------------
/vue/full/src/store/module/message.js:
--------------------------------------------------------------------------------
1 | import {createMutations} from "@/store/util"
2 | import {search} from '@/api/message/user'
3 |
4 | const state = {
5 | unreadCount: 0
6 | }
7 |
8 | const mutations = createMutations(state)
9 |
10 | const actions = {
11 | refresh({commit}) {
12 | search
13 | .request({page: 1, pageSize: 1, unread: true})
14 | .then(({data}) => commit('unreadCount', data.total))
15 | }
16 | }
17 |
18 | export default {
19 | namespaced: true,
20 | state,
21 | mutations,
22 | actions
23 | }
24 |
--------------------------------------------------------------------------------
/vue/full/src/store/module/needSearch.js:
--------------------------------------------------------------------------------
1 | import Vue from "vue"
2 |
3 | const state = {
4 | map: {}
5 | }
6 |
7 | const mutations = {
8 | init(state, key) {
9 | if (state.map.hasOwnProperty(key)) {
10 | state.map[key] = false
11 | }
12 | else Vue.set(state.map, key, false)
13 | },
14 |
15 | emit(state, key) {
16 | state.map[key] = true
17 | },
18 |
19 | renew(state, key) {
20 | state.map[key] = false
21 | }
22 | }
23 |
24 | export default {
25 | namespaced: true,
26 | state,
27 | mutations
28 | }
29 |
--------------------------------------------------------------------------------
/vue/full/src/store/util.js:
--------------------------------------------------------------------------------
1 | import {getInitialValue} from "@/util"
2 |
3 | //vuex中根据state批量生成对应的mutation
4 | export function createMutations(state, all = false) {
5 | const keys = Object.keys(state)
6 | const obj = {}
7 | keys.forEach(key => {
8 | obj[key] = (s, v) => s[key] = v
9 | })
10 | if (all) {
11 | obj['$all'] = (s, v) => {
12 | keys.forEach(key => {
13 | s[key] = v && v[key] || getInitialValue(s[key])
14 | })
15 | }
16 | }
17 | return obj
18 | }
19 |
--------------------------------------------------------------------------------
/vue/full/src/style/cover/var.scss:
--------------------------------------------------------------------------------
1 | /*仅覆盖element-ui中的预设变量,不会被使用*/
2 |
3 | //返回顶部的背景色
4 | $--backtop-background-color: $--background-color-base;
5 | //返回顶部hover背景色
6 | $--backtop-hover-background-color: $--border-color-lighter;
7 |
8 | //el-table的表头字体颜色
9 | $--table-header-font-color: $--color-text-primary;
10 | //el-table的表头背景颜色
11 | $--table-header-background-color: #fbfbfb;
12 |
13 | //引入element的scss时需要覆盖字体路径
14 | $--font-path: '~element-ui/lib/theme-chalk/fonts';
15 |
--------------------------------------------------------------------------------
/vue/full/src/style/nprogress.scss:
--------------------------------------------------------------------------------
1 | @import "~nprogress/nprogress.css";
2 |
3 | #nprogress {
4 | .bar {
5 | background-color: $--color-primary;
6 |
7 | .peg {
8 | box-shadow: 0 0 10px $--color-primary, 0 0 5px $--color-primary;;
9 | }
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/vue/full/src/util/excel/index.js:
--------------------------------------------------------------------------------
1 | export {exportExcel, json2workbook, workbook2excel} from "./exceljs"
2 |
--------------------------------------------------------------------------------
/vue/full/src/util/worker.js:
--------------------------------------------------------------------------------
1 | export function createWorker(func, data, callback) {
2 | const blob = new Blob(['(' + func.toString() + ')()'])
3 | const url = window.URL.createObjectURL(blob)
4 | const worker = new Worker(url)
5 |
6 | worker.onmessage = callback
7 | worker.postMessage(data)
8 |
9 | window.URL.revokeObjectURL(url)
10 |
11 | return worker
12 | }
13 |
--------------------------------------------------------------------------------
/vue/full/src/view/_app/403.vue:
--------------------------------------------------------------------------------
1 |
14 |
--------------------------------------------------------------------------------
/vue/full/src/view/_app/404.vue:
--------------------------------------------------------------------------------
1 |
14 |
--------------------------------------------------------------------------------
/vue/full/src/view/_app/500.vue:
--------------------------------------------------------------------------------
1 |
14 |
--------------------------------------------------------------------------------
/vue/full/src/view/admin/system/menu/common.js:
--------------------------------------------------------------------------------
1 | export const nodeType = [
2 | {label: '顶部菜单', value: 0, icon: 'el-icon-s-promotion'},
3 | {label: '聚合菜单', value: 1, icon: 'el-icon-folder'},
4 | {label: '页面菜单', value: 2, icon: 'el-icon-document'},
5 | {label: '数据接口', value: 3, icon: 'el-icon-open'},
6 | ]
7 |
8 | export function getNodeInfo({data: {type}} = {}) {
9 | return nodeType.find(i => i.value === type)
10 | }
11 |
12 | export function getNodeTitle({data: {type, name, meta}}) {
13 | return type === 3 ? name : meta.title
14 | }
15 |
--------------------------------------------------------------------------------
/vue/full/src/view/dev/index.vue:
--------------------------------------------------------------------------------
1 |
2 | haha
3 |
4 |
5 |
10 |
--------------------------------------------------------------------------------
/vue/full/src/view/example/directive/dragDialogPage.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 可拖拽的dialog
5 |
6 |
7 |
打开dialog
8 |
9 |
10 | 蛤蛤
11 |
12 |
13 |
14 |
15 |
26 |
--------------------------------------------------------------------------------
/vue/full/src/view/example/globalMethod/bottomTipPage.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 底部消息提示
5 |
6 |
7 |
8 | 触发底部消息提示
9 | 关闭底部消息提示
10 |
11 |
12 |
13 |
14 |
19 |
--------------------------------------------------------------------------------
/vue/full/src/view/example/test/cache/detailPage.vue:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
18 |
--------------------------------------------------------------------------------
/vue/full/svgo.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | plugins: [
3 | {
4 | name: 'removeAttrs',
5 | params: {
6 | attrs: '(fill|fill-rule)'
7 | }
8 | }
9 | ]
10 | }
11 |
--------------------------------------------------------------------------------
/vue/template/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | node_modules
3 | /dist
4 | /test
5 |
6 | # local env files
7 | .env.local
8 | .env.*.local
9 |
10 | # Log files
11 | npm-debug.log*
12 | yarn-debug.log*
13 | yarn-error.log*
14 |
15 | # Editor directories and files
16 | .idea
17 | .vscode
18 | *.suo
19 | *.ntvs*
20 | *.njsproj
21 | *.sln
22 | *.sw?
23 |
--------------------------------------------------------------------------------
/vue/template/babel.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | presets: [
3 | '@vue/cli-plugin-babel/preset'
4 | ]
5 | }
6 |
--------------------------------------------------------------------------------
/vue/template/element-ui-personal/index.js:
--------------------------------------------------------------------------------
1 | import Message from "./component/Message"
2 |
3 | export default function (Vue) {
4 |
5 | Vue.prototype.$message = Message
6 | }
7 |
--------------------------------------------------------------------------------
/vue/template/element-ui-personal/style/index.scss:
--------------------------------------------------------------------------------
1 | @import "./message.scss";
2 |
--------------------------------------------------------------------------------
/vue/template/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toesbieya/jxc-admin/5ee06acbe09a68de6d8957be324152ff8978b182/vue/template/public/favicon.ico
--------------------------------------------------------------------------------
/vue/template/public/static/img/dot1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toesbieya/jxc-admin/5ee06acbe09a68de6d8957be324152ff8978b182/vue/template/public/static/img/dot1.png
--------------------------------------------------------------------------------
/vue/template/public/static/img/dot2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toesbieya/jxc-admin/5ee06acbe09a68de6d8957be324152ff8978b182/vue/template/public/static/img/dot2.png
--------------------------------------------------------------------------------
/vue/template/public/static/img/dot3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toesbieya/jxc-admin/5ee06acbe09a68de6d8957be324152ff8978b182/vue/template/public/static/img/dot3.png
--------------------------------------------------------------------------------
/vue/template/public/static/img/dot4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/toesbieya/jxc-admin/5ee06acbe09a68de6d8957be324152ff8978b182/vue/template/public/static/img/dot4.png
--------------------------------------------------------------------------------
/vue/template/src/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
12 |
--------------------------------------------------------------------------------
/vue/template/src/asset/icon/index.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import VIcon from '@/component/Icon'
3 |
4 | Vue.component('v-icon', VIcon)
5 |
6 | const req = require.context('./svg', false, /\.svg$/)
7 | const keys = req.keys()
8 | keys.map(req)
9 | export default keys.map(i => i.match(/\.\/(.*)\.svg/)[1])
10 |
--------------------------------------------------------------------------------
/vue/template/src/asset/icon/svg/check.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/vue/template/src/asset/icon/svg/documentation.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/vue/template/src/asset/icon/svg/home.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/vue/template/src/asset/icon/svg/money.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/vue/template/src/asset/icon/svg/password.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/vue/template/src/asset/icon/svg/show.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/vue/template/src/asset/icon/svg/stock.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/vue/template/src/asset/icon/svg/user.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/vue/template/src/asset/icon/svgo.yml:
--------------------------------------------------------------------------------
1 | # replace default config
2 |
3 | # multipass: true
4 | # full: true
5 |
6 | plugins:
7 |
8 | # - name
9 | #
10 | # or:
11 | # - name: false
12 | # - name: true
13 | #
14 | # or:
15 | # - name:
16 | # param1: 1
17 | # param2: 2
18 |
19 | - removeAttrs:
20 | attrs:
21 | - 'fill'
22 | - 'fill-rule'
23 |
--------------------------------------------------------------------------------
/vue/template/src/asset/style/cover/var.scss:
--------------------------------------------------------------------------------
1 | /*仅覆盖element-ui中的预设变量,不会被使用*/
2 |
3 | //引入element的scss时需要覆盖字体路径
4 | $--font-path: '~element-ui/lib/theme-chalk/fonts';
5 |
--------------------------------------------------------------------------------
/vue/template/src/asset/style/nprogress.scss:
--------------------------------------------------------------------------------
1 | @import "~nprogress/nprogress.css";
2 |
3 | #nprogress {
4 | .bar {
5 | background-color: $--color-primary;
6 |
7 | .peg {
8 | box-shadow: 0 0 10px $--color-primary, 0 0 5px $--color-primary;;
9 | }
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/vue/template/src/asset/style/var.scss:
--------------------------------------------------------------------------------
1 | @import "~element-ui/packages/theme-chalk/src/common/var";
2 |
3 | //设定移动端的最大宽度,只能是number类型
4 | $max-mobile-width: $--sm;
5 |
6 | //覆盖element颜色
7 | $--color-primary: #1890ff;
8 | $--color-success: #21BA45;
9 | $--color-warning: #FF5722;
10 | $--color-danger: #F44336;
11 | $--color-info: #009688;
12 |
--------------------------------------------------------------------------------
/vue/template/src/component/Skeleton/constant.js:
--------------------------------------------------------------------------------
1 | export const skeletonTypes = [
2 | 'text', 'circle'
3 | ]
4 | export const skeletonAnimations = [
5 | 'wave', 'pulse', 'pulse-x', 'pulse-y', 'fade', 'blink', 'none'
6 | ]
7 |
--------------------------------------------------------------------------------
/vue/template/src/config/index.js:
--------------------------------------------------------------------------------
1 | const isDev = process.env.NODE_ENV === 'development'
2 |
3 | module.exports = {
4 | isDev,
5 |
6 | //项目的部署路径,始终以'/'开头,以'/'结束
7 | contextPath: '/',
8 |
9 | //页面标题、登录注册页的标题
10 | title: 'BiuBiuBiu~',
11 |
12 | //logo地址
13 | logo: `/static/img/logo.svg`,
14 |
15 | //路由配置
16 | route: {
17 | //路由模式,['hash','history']
18 | mode: 'history'
19 | },
20 |
21 | //本地存储配置
22 | storage: {
23 | //键名前缀
24 | keyPrefix: 'GCC-',
25 |
26 | //读写时是否进行压缩的默认值
27 | zip: !isDev
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/vue/template/src/layout/component/Footer/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
12 |
--------------------------------------------------------------------------------
/vue/template/src/layout/component/Footer/style.scss:
--------------------------------------------------------------------------------
1 | .page-footer > .copyright {
2 | color: $--color-text-secondary;
3 | font-size: 14px;
4 |
5 | > a:hover {
6 | color: $--color-primary;
7 | text-decoration: underline;
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/vue/template/src/layout/component/SettingDrawer/component/checkbox/ColorCheckbox.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
16 |
--------------------------------------------------------------------------------
/vue/template/src/layout/component/SettingDrawer/component/checkbox/Group.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
16 |
--------------------------------------------------------------------------------
/vue/template/src/layout/component/SettingDrawer/component/checkbox/ImgCheckbox.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
![]()
4 |
5 |
6 |
7 |
8 |
22 |
--------------------------------------------------------------------------------
/vue/template/src/layout/component/SettingDrawer/component/checkbox/mixin.js:
--------------------------------------------------------------------------------
1 | export default {
2 | props: ['value'],
3 |
4 | computed: {
5 | checked() {
6 | const group = this.$parent
7 | return group && group.value === this.value
8 | }
9 | },
10 |
11 | methods: {
12 | click() {
13 | if (this.checked) return
14 | this.$parent.$emit('input', this.value)
15 | }
16 | },
17 |
18 | created() {
19 | const group = this.$parent
20 | group && group.children.push(this.value)
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/vue/template/src/layout/component/SettingDrawer/style.scss:
--------------------------------------------------------------------------------
1 | @import "~@/asset/style/var";
2 | @import "./component/checkbox/style";
3 |
4 | .drawer-container {
5 | padding: 24px;
6 | font-size: 14px;
7 | line-height: 1.5;
8 | word-wrap: break-word;
9 |
10 | .drawer-item {
11 | display: flex;
12 | justify-content: space-between;
13 | color: $--color-text-regular;
14 | font-size: 14px;
15 | padding: 12px 0;
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/vue/template/src/layout/style.scss:
--------------------------------------------------------------------------------
1 | @import "~el-admin-layout/src/style";
2 |
3 | @import "./component/Footer/style";
4 | @import "./component/SettingDrawer/style";
5 |
6 |
7 |
--------------------------------------------------------------------------------
/vue/template/src/main.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import Element from 'element-ui'
3 | import ElementPersonal from '@ele'
4 | import '@/asset/style/index.scss'
5 | import App from '@/App'
6 | import store from '@/store'
7 | import router from '@/router'
8 | import '@/asset/icon'
9 |
10 | Vue.use(Element)
11 | Vue.use(ElementPersonal)
12 |
13 | Vue.config.productionTip = false
14 |
15 | new Vue({
16 | el: '#app',
17 | router,
18 | store,
19 | render: h => h(App)
20 | })
21 |
--------------------------------------------------------------------------------
/vue/template/src/router/guardian/index.js:
--------------------------------------------------------------------------------
1 | import nprogress from './nprogress'
2 | import avoidReuse from './avoidReuse'
3 | import setTitle from './setTitle'
4 | import accessControl from './accessControl'
5 | import iframe from './iframe'
6 |
7 | export default function (router) {
8 | nprogress(router)
9 | avoidReuse(router)
10 | accessControl(router)
11 | setTitle(router)
12 | iframe(router)
13 | }
14 |
--------------------------------------------------------------------------------
/vue/template/src/router/guardian/nprogress.js:
--------------------------------------------------------------------------------
1 | import NProgress from 'nprogress'
2 |
3 | NProgress.configure({showSpinner: false})
4 |
5 | const beforeEach = (to, from, next) => {
6 | //使用redirect进行跳转时不显示进度条
7 | !to.path.startsWith('/redirect') && NProgress.start()
8 |
9 | next()
10 | }
11 |
12 | const afterEach = () => NProgress.done()
13 |
14 | export default function (router) {
15 | router.beforeEach(beforeEach)
16 | router.afterEach(afterEach)
17 | }
18 |
--------------------------------------------------------------------------------
/vue/template/src/router/guardian/setTitle.js:
--------------------------------------------------------------------------------
1 | import {title} from "@/config"
2 |
3 | const beforeEach = (to, from, next) => {
4 | const {path, meta} = to
5 |
6 | if (!path.startsWith('/redirect')) {
7 | if (typeof meta.dynamicTitle === 'function') {
8 | meta.title = meta.dynamicTitle(to, from)
9 | }
10 |
11 | const pageTitle = meta.title
12 | document.title = pageTitle ? `${pageTitle} - ${title}` : title
13 | }
14 |
15 | next()
16 | }
17 |
18 | export default function (router) {
19 | router.beforeEach(beforeEach)
20 | }
21 |
--------------------------------------------------------------------------------
/vue/template/src/router/module/admin/child/default.js:
--------------------------------------------------------------------------------
1 | //路由表:默认页面
2 |
3 | const router = [
4 | {
5 | path: 'index',
6 | component: 'admin/index/',
7 | name: 'index',
8 | meta: {title: '首页', affix: true, icon: 'svg-home', noAuth: true, pageHeader: false, sort: 0}
9 | }
10 | ]
11 |
12 | export default router
13 |
--------------------------------------------------------------------------------
/vue/template/src/router/module/admin/index.js:
--------------------------------------------------------------------------------
1 | /*顶级菜单:后台管理*/
2 |
3 | import {context2array} from '@/router/util'
4 |
5 | const files = require.context('./child', false, /\.js$/)
6 |
7 | export default {
8 | path: '/',
9 | component: 'Layout',
10 | meta: {title: '后台管理', icon: 'svg-home', sort: 0},
11 | children: context2array(files)
12 | }
13 |
--------------------------------------------------------------------------------
/vue/template/src/router/module/doc/index.js:
--------------------------------------------------------------------------------
1 | export default {
2 | path: 'https://doc.toesbieya.cn',
3 | meta: {title: '文档', icon: 'svg-documentation', noAuth: true}
4 | }
5 |
--------------------------------------------------------------------------------
/vue/template/src/router/module/example/child/component.js:
--------------------------------------------------------------------------------
1 | export default {
2 | path: 'component',
3 | meta: {title: '组件', icon: 'el-icon-s-grid', alwaysShow: true},
4 | children: [
5 | {
6 | path: 'skeleton',
7 | component: 'example/component/skeleton',
8 | meta: {title: '骨架屏'}
9 | }
10 | ]
11 | }
12 |
--------------------------------------------------------------------------------
/vue/template/src/router/module/example/child/globalMethod.js:
--------------------------------------------------------------------------------
1 | export default {
2 | path: 'global',
3 | meta: {title: '全局方法', icon: 'el-icon-s-opportunity', alwaysShow: true},
4 | children: [
5 | {
6 | path: 'message',
7 | component: 'example/globalMethod/message',
8 | meta: {title: '消息提示'}
9 | }
10 | ]
11 | }
12 |
--------------------------------------------------------------------------------
/vue/template/src/router/module/example/child/icon.js:
--------------------------------------------------------------------------------
1 | export default {
2 | path: 'icon',
3 | component: 'example/icon/',
4 | meta: {title: '图 标', icon: 'el-icon-eleme'}
5 | }
6 |
--------------------------------------------------------------------------------
/vue/template/src/router/module/example/child/iframe.js:
--------------------------------------------------------------------------------
1 | export default {
2 | path: 'iframe',
3 | meta: {title: 'iframe', noCache: false, icon: 'el-icon-s-flag'},
4 | children: [
5 | {
6 | path: 'taobao',
7 | meta: {title: '淘宝', iframe: 'https://www.taobao.com'}
8 | },
9 | {
10 | path: 'baidu',
11 | meta: {title: '百度', iframe: 'https://www.baidu.com'}
12 | }
13 | ]
14 | }
15 |
--------------------------------------------------------------------------------
/vue/template/src/router/module/example/index.js:
--------------------------------------------------------------------------------
1 | /*顶级菜单:演示用例*/
2 |
3 | import {context2array} from '@/router/util'
4 |
5 | const files = require.context('./child', false, /\.js$/)
6 |
7 | export default {
8 | path: '/example',
9 | component: 'Layout',
10 | meta: {title: '演示用例', icon: 'svg-show', noAuth: true, noCache: true, sort: 1},
11 | children: context2array(files)
12 | }
13 |
--------------------------------------------------------------------------------
/vue/template/src/router/module/index.js:
--------------------------------------------------------------------------------
1 | import admin from './admin'
2 | import example from './example'
3 | import doc from './doc'
4 |
5 | export default [admin, example, doc]
6 |
--------------------------------------------------------------------------------
/vue/template/src/store/util.js:
--------------------------------------------------------------------------------
1 | import {getInitialValue} from "@/util"
2 |
3 | //vuex中根据state批量生成对应的mutation
4 | export function createMutations(state, all = false) {
5 | const keys = Object.keys(state)
6 | const obj = {}
7 | keys.forEach(key => {
8 | obj[key] = (s, v) => s[key] = v
9 | })
10 | if (all) {
11 | obj['$all'] = (s, v) => {
12 | keys.forEach(key => {
13 | s[key] = v && v[key] || getInitialValue(s[key])
14 | })
15 | }
16 | }
17 | return obj
18 | }
19 |
--------------------------------------------------------------------------------
/vue/template/src/util/message.js:
--------------------------------------------------------------------------------
1 | import Message from '@ele/component/Message'
2 | import {MessageBox} from 'element-ui'
3 |
4 | export function elSuccess(message = '操作成功') {
5 | Message.success({
6 | message,
7 | dangerouslyUseHTMLString: true
8 | })
9 | }
10 |
11 | export function elConfirm(msg = '确认进行该操作?', ignoreReject = true) {
12 | const promise = MessageBox.confirm(msg, {
13 | type: 'warning',
14 | cancelButtonClass: 'is-plain'
15 | })
16 |
17 | if (ignoreReject) {
18 | promise.catch(() => ({}))
19 | }
20 |
21 | return promise
22 | }
23 |
--------------------------------------------------------------------------------
/vue/template/src/util/validate.js:
--------------------------------------------------------------------------------
1 | export function isString(str) {
2 | return typeof str === 'string' || str instanceof String
3 | }
4 |
5 | export function isExternal(path) {
6 | return /^(https?:|mailto:|tel:)/.test(path)
7 | }
8 |
--------------------------------------------------------------------------------
/vue/template/src/view/_app/403.vue:
--------------------------------------------------------------------------------
1 |
14 |
--------------------------------------------------------------------------------
/vue/template/src/view/_app/404.vue:
--------------------------------------------------------------------------------
1 |
14 |
--------------------------------------------------------------------------------
/vue/template/src/view/_app/500.vue:
--------------------------------------------------------------------------------
1 |
14 |
--------------------------------------------------------------------------------
/vue/template/src/view/_app/redirect.vue:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/vue/template/src/view/admin/index/indexPage.vue:
--------------------------------------------------------------------------------
1 |
2 | 我是首页
3 |
4 |
5 |
10 |
--------------------------------------------------------------------------------
/vue/template/src/view/example/test/cache/detailPage.vue:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
18 |
--------------------------------------------------------------------------------