From 222476b9c872331b2b12d961730c58530015a1d9 Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期三, 06 九月 2023 11:34:19 +0800
Subject: [PATCH] 提交

---
 company_admin/public/index.html                                                                  |    0 
 company_admin/src/components/system/permission/OperaPermissionWindow.vue                         |    0 
 server/service/src/main/java/com/doumee/service/system/SystemDictService.java                    |    0 
 server/service/src/main/java/com/doumee/service/system/impl/SystemDepartmentServiceImpl.java     |    0 
 company_admin/src/components/system/position/OperaPositionWindow.vue                             |    0 
 server/service/src/main/java/com/doumee/service/system/SystemDictDataService.java                |    0 
 server/service/src/main/java/com/doumee/service/system/impl/SystemDictServiceImpl.java           |    0 
 company_admin/src/assets/icons/system/role.svg                                                   |    0 
 company_admin/src/views/no-permissions.vue                                                       |    0 
 server/service/src/main/java/com/doumee/biz/system/SystemRoleBiz.java                            |    0 
 server/service/src/main/java/com/doumee/dao/system/dto/QuerySystemRoleDTO.java                   |   26 
 server/service/src/main/resources/application-pro.yml                                            |   55 
 server/service/src/main/java/com/doumee/service/aware/DepartmentDataPermissionAware.java         |    0 
 server/service/src/main/java/com/doumee/service/system/SystemRolePermissionService.java          |    0 
 server/service/src/main/java/com/doumee/core/constants/ResponseStatus.java                       |    0 
 server/service/src/main/java/com/doumee/dao/system/model/SystemDict.java                         |    0 
 company_admin/package-lock.json                                                                  |    0 
 company_admin/README.md                                                                          |    0 
 company_admin/src/views/system/department.vue                                                    |    0 
 server/service/src/main/java/com/doumee/config/shiroMemory/ShiroCacheManager.java                |   44 
 server/company/src/main/java/com/doumee/api/system/SystemUserController.java                     |  129 
 server/service/src/main/java/com/doumee/core/utils/Date.java                                     |    0 
 company_admin/src/components/common/Value.vue                                                    |    0 
 server/service/src/main/resources/mappers/SystemDictDataMapper.xml                               |    0 
 server/service/src/main/java/com/doumee/dao/system/dto/LoginDTO.java                             |    0 
 company_admin/src/components/common/Pagination.vue                                               |    0 
 company_admin/src/components/system/user/ResetPwdWindow.vue                                      |    0 
 server/company/src/main/java/com/doumee/config/shiro/ShiroRealm.java                             |   94 
 server/service/src/main/java/com/doumee/core/annotation/pr/PreventRepeatInterceptor.java         |    0 
 server/service/pom.xml                                                                           |   20 
 server/service/src/main/java/com/doumee/dao/business/CateAttrMapper.java                         |    0 
 company_admin/src/plugins/cache.js                                                               |    0 
 company_admin/src/components/common/Header.vue                                                   |    0 
 server/service/src/main/java/com/doumee/core/utils/monitor/Disk.java                             |    0 
 company_admin/src/components/common/Menu.vue                                                     |    0 
 company_admin/src/components/system/datapermission/OperaDataPermissionWindow.vue                 |    0 
 company_admin/src/assets/images/qq.png                                                           |    0 
 server/company/src/main/java/com/doumee/api/business/CateAttrController.java                     |  100 
 server/company/src/main/java/com/doumee/api/system/SystemLoginLogController.java                 |    0 
 company_admin/src/views/index.vue                                                                |    0 
 server/service/src/main/java/com/doumee/core/aware/DataPermissionMapping.java                    |    0 
 company_admin/src/assets/images/woman.png                                                        |    0 
 company_admin/src/components/business/OperaBrandWindow.vue                                       |    0 
 server/service/src/main/java/com/doumee/dao/system/SystemUserMapper.java                         |    0 
 server/platform/src/main/java/com/doumee/api/common/PublicController.java                        |  327 ++
 server/platform/src/main/java/com/doumee/task/ScheduleTool.java                                  |    0 
 company_admin/src/assets/images/404-tip.png                                                      |    0 
 server/service/src/main/java/com/doumee/service/system/impl/SystemUserServiceImpl.java           |    0 
 server/service/src/main/java/com/doumee/biz/system/impl/SystemDictBizImpl.java                   |    0 
 server/service/src/main/java/com/doumee/service/business/impl/CateAttrServiceImpl.java           |    0 
 server/service/src/main/java/com/doumee/dao/system/vo/SystemUserListVO.java                      |    0 
 server/platform/src/main/java/com/doumee/swagger/SwaggerInterceptor.java                         |   45 
 server/service/src/main/java/com/doumee/service/system/impl/SystemUserRoleServiceImpl.java       |    0 
 server/platform/src/main/java/com/doumee/api/business/CateParamController.java                   |   90 
 server/company/src/main/java/com/doumee/CompanyApplication.java                                  |   23 
 server/service/src/main/java/com/doumee/config/shiroMemory/ShiroRealm.java                       |   90 
 company_admin/src/directives/index.js                                                            |    0 
 server/service/src/main/java/com/doumee/dao/system/vo/CompanyDeclaresVo.java                     |    0 
 company_admin/src/assets/images/not-allow.png                                                    |    0 
 company_admin/src/assets/images/wxpay.jpeg                                                       |    0 
 server/platform/src/main/java/com/doumee/shiro/ShiroConfig.java                                  |  142 +
 server/service/src/main/java/com/doumee/dao/system/model/SystemLoginLog.java                     |   78 
 server/service/src/main/java/com/doumee/service/system/impl/SystemLoginLogServiceImpl.java       |    0 
 server/service/src/main/java/com/doumee/dao/system/model/SystemPosition.java                     |    0 
 company_admin/public/favicon.ico                                                                 |    0 
 server/platform/src/main/java/com/doumee/api/common/CaptchaController.java                       |    0 
 server/service/src/main/java/com/doumee/dao/business/model/Brand.java                            |   77 
 server/service/src/main/java/com/doumee/dao/system/model/SystemDictData.java                     |    0 
 server/service/src/main/java/com/doumee/biz/system/impl/SystemDictDataBizImpl.java               |    0 
 company_admin/src/utils/request.js                                                               |    0 
 server/service/src/main/java/com/doumee/dao/system/dto/ResetSystemUserPwdDTO.java                |    0 
 company_admin/src/components/common/ColumnDetail.vue                                             |    0 
 server/service/src/main/resources/mappers/SystemDepartmentMapper.xml                             |    0 
 server/service/src/main/java/com/doumee/core/utils/ExcelUtil.java                                |    0 
 server/service/src/main/java/com/doumee/core/annotation/trace/TraceInterceptorConfig.java        |    0 
 server/service/src/main/java/com/doumee/dao/system/model/SystemRolePermission.java               |    0 
 server/service/src/main/java/com/doumee/biz/system/SystemPositionBiz.java                        |    0 
 server/service/src/main/java/com/doumee/core/utils/monitor/CPU.java                              |    0 
 server/company/src/main/java/com/doumee/api/system/SystemDepartmentController.java               |    0 
 company_admin/src/assets/icons/system/position.svg                                               |    0 
 company_admin/src/components/system/datapermission/DataPermModuleSelect.vue                      |    0 
 server/service/src/main/java/com/doumee/core/annotation/trace/TraceStatus.java                   |    0 
 company_admin/src/utils/icons.js                                                                 |    0 
 server/service/src/main/java/com/doumee/dao/business/CategoryMapper.java                         |    0 
 company_admin/src/components/system/role/PermissionConfigWindow.vue                              |    0 
 server/service/src/main/java/com/doumee/config/shiroMemory/ShiroConfig.java                      |  142 +
 server/company/src/main/java/com/doumee/api/BaseController.java                                  |    0 
 server/service/src/main/java/com/doumee/core/utils/Monitor.java                                  |    0 
 server/service/src/main/java/com/doumee/dao/system/model/SystemTraceLog.java                     |    0 
 company_admin/src/components/common/TreeSelect.vue                                               |    0 
 server/service/src/main/java/com/doumee/dao/system/vo/SystemDepartmentListVO.java                |    0 
 server/company/src/main/java/com/doumee/config/shiro/ShiroCredentialsMatcher.java                |   45 
 server/service/src/main/java/com/doumee/dao/system/vo/SystemPermissionListVO.java                |    0 
 server/service/src/main/java/com/doumee/core/exception/BusinessException.java                    |    0 
 company_admin/src/assets/style/variables.scss                                                    |    0 
 server/service/src/main/java/com/doumee/dao/business/model/CateAttr.java                         |    0 
 server/platform/src/main/java/com/doumee/api/system/SystemMonitorController.java                 |    0 
 server/service/src/main/resources/mappers/SystemUserMapper.xml                                   |    0 
 server/service/src/main/java/com/doumee/core/utils/DateUtil.java                                 |    0 
 server/platform/src/main/java/com/doumee/shiro/ShiroTokenManager.java                            |   25 
 server/service/src/main/java/com/doumee/core/model/PageData.java                                 |    0 
 company_admin/src/views/system/dict.vue                                                          |    0 
 server/platform/src/main/java/com/doumee/shiro/ShiroRealm.java                                   |   94 
 company_admin/src/components/business/OperaCategoryWindow.vue                                    |    0 
 server/service/src/main/java/com/doumee/config/handler/GlobalExceptionHandler.java               |    0 
 company_admin/src/filters/index.js                                                               |    0 
 server/company/src/main/java/com/doumee/api/system/SystemDataPermissionController.java           |    0 
 server/service/src/main/java/com/doumee/dao/system/dto/AreasDto.java                             |    0 
 company_admin/src/plugins/message.js                                                             |    0 
 server/company/src/main/java/com/doumee/api/business/MultifileController.java                    |   90 
 server/service/src/main/java/com/doumee/dao/system/vo/SystemUserDetailVO.java                    |    0 
 server/platform/src/main/java/com/doumee/api/system/SystemMenuController.java                    |    0 
 server/service/src/main/java/com/doumee/config/mybatis/MyBatisInterceptor.java                   |    0 
 server/service/src/main/java/com/doumee/dao/system/SystemDictDataMapper.java                     |    0 
 company_admin/src/components/common/Scrollbar.vue                                                |    0 
 company_admin/babel.config.js                                                                    |    0 
 server/service/src/main/resources/banner.txt                                                     |    0 
 company_admin/src/components/common/NotAllow.vue                                                 |    0 
 server/platform/src/main/java/com/doumee/api/system/SystemLoginLogController.java                |    0 
 server/service/src/main/java/com/doumee/core/annotation/trace/TraceType.java                     |    0 
 server/platform/src/main/java/com/doumee/api/BaseController.java                                 |   25 
 server/company/src/main/java/com/doumee/api/business/CateParamController.java                    |   90 
 server/service/src/main/java/com/doumee/service/system/impl/SystemPositionUserServiceImpl.java   |    0 
 server/company/src/main/java/com/doumee/api/system/SystemController.java                         |    0 
 server/service/src/main/java/com/doumee/core/annotation/pr/PreventRepeatAdapter.java             |    0 
 .idea/jarRepositories.xml                                                                        |   20 
 .idea/uiDesigner.xml                                                                             |  124 
 server/service/src/main/java/com/doumee/biz/system/impl/SystemPositionBizImpl.java               |    0 
 server/service/src/main/java/com/doumee/dao/business/model/CateParam.java                        |    0 
 server/company/src/main/java/com/doumee/Main.java                                                |    7 
 server/service/src/main/java/com/doumee/dao/system/SystemUserJoinMapper.java                     |    0 
 server/service/src/main/java/com/doumee/service/business/GoodsParamService.java                  |    0 
 server/service/src/main/resources/mappers/SystemDictMapper.xml                                   |    0 
 company_admin/src/api/system/common.js                                                           |    0 
 server/service/src/main/java/com/doumee/dao/business/model/CateBudget.java                       |    0 
 server/company/src/main/java/com/doumee/api/system/SystemPositionController.java                 |    0 
 server/service/src/main/java/com/doumee/core/model/LoginUserInfo.java                            |    0 
 server/service/src/main/java/com/doumee/dao/system/vo/SystemMenuListVO.java                      |    0 
 server/company/src/main/java/com/doumee/config/shiro/ShiroConfig.java                            |  142 +
 server/company/src/main/java/com/doumee/config/swagger/SwaggerInterceptor.java                   |   45 
 company_admin/src/components/system/department/DepartmentUserWindow.vue                          |    0 
 company_admin/src/components/common/Light.vue                                                    |    0 
 server/platform/src/main/java/com/doumee/api/system/SystemDepartmentController.java              |    0 
 server/service/src/main/java/com/doumee/biz/system/impl/SystemMenuBizImpl.java                   |    0 
 company_admin/src/components/system/user/RoleConfigWindow.vue                                    |    0 
 company_admin/src/api/business/brand.js                                                          |    0 
 company_admin/src/directives/v-permissions.js                                                    |    0 
 .idea/preselect.iml                                                                              |    6 
 company_admin/.env                                                                               |    0 
 company_admin/src/api/system/dict.js                                                             |    0 
 server/company/src/main/java/com/doumee/api/system/SystemDictDataController.java                 |   95 
 server/platform/src/main/java/com/doumee/shiro/ShiroCredentialsMatcher.java                      |   45 
 server/company/src/main/java/com/doumee/api/business/GoodsController.java                        |  144 +
 server/platform/pom.xml                                                                          |   26 
 server/service/src/main/java/com/doumee/service/system/impl/SystemTraceLogServiceImpl.java       |    0 
 server/service/src/main/resources/static/file/goodsExcelTemp.xlsx                                |    0 
 server/service/src/main/java/com/doumee/service/system/SystemUserService.java                    |    0 
 company_admin/src/api/system/department.js                                                       |    0 
 server/platform/src/main/java/com/doumee/api/system/SystemTraceLogController.java                |    0 
 server/service/src/main/java/com/doumee/biz/system/SystemDataPermissionBiz.java                  |    0 
 server/service/src/main/java/com/doumee/dao/system/dto/QuerySystemDictDTO.java                   |    0 
 company_admin/src/assets/icons/system/department.svg                                             |    0 
 company_admin/src/router/index.js                                                                |    0 
 server/company/src/main/java/com/doumee/config/shiro/ShiroTokenManager.java                      |   25 
 company_admin/src/views/business/category.vue                                                    |    0 
 server/pom.xml                                                                                   |   37 
 server/service/src/main/resources/mappers/SystemMenuMapper.xml                                   |    0 
 server/platform/src/main/java/com/doumee/shiro/ShiroRedisSessionDAO.java                         |  139 +
 server/service/src/main/resources/mappers/SystemPositionMapper.xml                               |    0 
 company_admin/src/components/common/Profile.vue                                                  |    0 
 server/service/src/main/java/com/doumee/core/annotation/excel/ExcelExporter.java                 |    0 
 server/service/src/main/java/com/doumee/dao/business/join/GoodsJoinMapper.java                   |    0 
 server/company/src/main/java/com/doumee/config/shiro/ShiroRedisSessionDAO.java                   |  139 +
 server/service/src/main/java/com/doumee/dao/system/dto/MultiFileDTO.java                         |    0 
 server/service/src/main/java/com/doumee/dao/business/GoodsParamMapper.java                       |    0 
 server/service/src/main/java/com/doumee/service/system/SystemRoleService.java                    |    0 
 company_admin/src/api/system/menu.js                                                             |    0 
 log/eva.log                                                                                      |    0 
 server/service/src/main/java/com/doumee/core/utils/monitor/JVM.java                              |    0 
 server/service/src/main/java/com/doumee/service/system/impl/SystemPositionServiceImpl.java       |    0 
 server/platform/src/main/java/com/doumee/api/system/SystemDataPermissionController.java          |    0 
 company_admin/.gitignore                                                                         |    0 
 server/service/src/main/java/com/doumee/core/annotation/excel/ExcelDataHandlerAdapter.java       |    0 
 server/service/src/main/java/com/doumee/dao/system/dto/CreateRolePermissionDTO.java              |   32 
 server/service/src/main/java/com/doumee/dao/system/vo/SystemRoleListVO.java                      |    0 
 server/platform/src/main/java/com/doumee/swagger/SwaggerInterceptorConfig.java                   |   23 
 server/service/src/main/java/com/doumee/dao/system/dto/ChangeStatusDTO.java                      |    0 
 company_admin/src/views/system/monitor.vue                                                       |    0 
 server/company/src/main/java/com/doumee/config/shiro/ShiroSessionDAO.java                        |  113 
 company_admin/package.json                                                                       |    0 
 company_admin/src/directives/v-trim.js                                                           |    0 
 server/service/src/main/java/com/doumee/service/system/SystemPermissionService.java              |    0 
 server/service/src/main/java/com/doumee/core/utils/Server.java                                   |    0 
 server/service/src/main/java/com/doumee/service/business/MultifileService.java                   |    0 
 server/service/src/main/java/com/doumee/dao/system/SystemPositionMapper.java                     |    0 
 server/company/src/main/java/com/doumee/config/shiro/ShiroCache.java                             |  159 +
 server/company/pom.xml                                                                           |   27 
 company_admin/src/views/system/menu.vue                                                          |    0 
 company_admin/src/api/system/position.js                                                         |    0 
 server/service/src/main/java/com/doumee/core/aware/DataPermissionAware.java                      |    0 
 server/service/src/main/java/com/doumee/service/common/CaptchaService.java                       |    0 
 company_admin/.env.development                                                                   |    0 
 server/service/src/main/java/com/doumee/core/utils/aliyun/ALiYunUtil.java                        |    0 
 server/service/src/main/java/com/doumee/dao/business/model/Goods.java                            |  162 +
 server/service/src/main/java/com/doumee/dao/system/vo/SystemDictListVO.java                      |    0 
 server/service/src/main/java/com/doumee/service/business/CategoryService.java                    |    0 
 server/service/src/main/java/com/doumee/service/system/SystemLoginLogService.java                |    0 
 company_admin/src/components/system/menu/OperaMenuWindow.vue                                     |    0 
 server/service/src/main/java/com/doumee/dao/system/dto/QuerySystemPermissionDTO.java             |   25 
 server/service/src/main/java/com/doumee/service/business/CateBudgetService.java                  |    0 
 server/service/src/main/java/com/doumee/service/system/impl/SystemPermissionServiceImpl.java     |    0 
 server/service/src/main/java/com/doumee/core/annotation/pr/PreventRepeatDefaultHandler.java      |    0 
 server/service/src/main/java/com/doumee/dao/system/SystemDataPermissionMapper.java               |    0 
 server/service/src/main/java/com/doumee/service/system/impl/SystemRoleServiceImpl.java           |    0 
 company_admin/src/components/base/BasePage.vue                                                   |    0 
 company_admin/src/components/common/PositionSelect.vue                                           |    0 
 server/service/src/main/java/com/doumee/service/system/impl/SystemMenuServiceImpl.java           |    0 
 server/service/src/main/java/com/doumee/dao/system/model/SystemRole.java                         |   61 
 company_admin/src/assets/icons/ext/index.scss                                                    |    0 
 server/service/src/main/java/com/doumee/core/annotation/excel/ExcelImporter.java                 |    0 
 server/service/src/main/java/com/doumee/core/constants/DataPermissionConstants.java              |    0 
 server/service/src/main/java/com/doumee/core/model/PageWrap.java                                 |    0 
 server/platform/src/main/java/com/doumee/shiro/ShiroCacheManager.java                            |   44 
 server/platform/src/main/java/com/doumee/api/business/BrandController.java                       |   98 
 server/platform/src/main/java/com/doumee/shiro/ShiroSessionSerializer.java                       |   36 
 server/service/src/main/java/com/doumee/core/exception/UnSafeSessionException.java               |    0 
 server/service/src/main/java/com/doumee/dao/system/vo/ServiceCompany.java                        |    0 
 server/service/src/main/java/com/doumee/dao/system/SystemDepartmentMapper.java                   |    0 
 server/service/src/main/java/com/doumee/dao/system/model/SystemPositionUser.java                 |    0 
 server/service/src/main/java/com/doumee/dao/system/model/SystemPermission.java                   |   60 
 server/company/src/main/java/com/doumee/api/system/SystemMonitorController.java                  |    0 
 server/service/src/main/java/com/doumee/biz/system/impl/SystemDepartmentBizImpl.java             |    0 
 server/service/src/main/java/com/doumee/core/utils/MyBatisPlus.java                              |    0 
 server/service/src/main/java/com/doumee/core/annotation/excel/ExcelColumn.java                   |    0 
 company_admin/src/views/system/role.vue                                                          |    0 
 server/company/src/main/java/com/doumee/config/shiro/ShiroToken.java                             |   54 
 server/service/src/main/java/com/doumee/core/utils/monitor/Memory.java                           |    0 
 company_admin/src/assets/images/404.png                                                          |    0 
 company_admin/public/avatar/woman.png                                                            |    0 
 company_admin/src/plugins/consts.js                                                              |    0 
 server/service/src/main/java/com/doumee/dao/system/SystemPositionUserMapper.java                 |    0 
 server/service/src/main/java/com/doumee/core/servlet/ServletDuplicateInputStream.java            |    0 
 company_admin/src/components/base/BaseTable.vue                                                  |    0 
 server/service/src/main/java/com/doumee/dao/system/dto/CreateUserRoleDTO.java                    |    0 
 company_admin/src/assets/images/man.png                                                          |    0 
 server/service/src/main/java/com/doumee/service/system/impl/SystemLoginServiceImpl.java          |    0 
 .idea/misc.xml                                                                                   |   17 
 server/service/src/main/java/com/doumee/service/business/BrandService.java                       |    0 
 company_admin/src/store/index.js                                                                 |    0 
 server/service/src/main/java/com/doumee/biz/system/SystemDepartmentBiz.java                      |    0 
 company_admin/src/assets/icons/system/listener.svg                                               |    0 
 company_admin/src/api/system/user.js                                                             |    0 
 company_admin/src/components/base/BaseOpera.vue                                                  |    0 
 server/service/src/main/java/com/doumee/dao/system/dto/QuerySystemUserDTO.java                   |   60 
 server/platform/src/main/java/com/doumee/api/system/SystemDictDataController.java                |   95 
 server/service/src/main/resources/mappers/SystemDataPermissionMapper.xml                         |    0 
 server/service/src/main/java/com/doumee/core/cache/LocalCache.java                               |    0 
 server/service/src/main/java/com/doumee/core/annotation/pr/PreventRepeat.java                    |    0 
 server/service/src/main/java/com/doumee/core/annotation/trace/Trace.java                         |    0 
 server/service/src/main/java/com/doumee/dao/system/vo/CompanyEconomicsVo.java                    |    0 
 company_admin/src/assets/style/style.scss                                                        |    0 
 company_admin/src/components/system/datapermission/DataPermTypeSelect.vue                        |    0 
 company_admin/src/layouts/AppLayout.vue                                                          |    0 
 company_admin/src/views/not-found.vue                                                            |    0 
 server/service/src/main/java/com/doumee/core/utils/Secure.java                                   |    0 
 company_admin/src/views/system/loginLog.vue                                                      |    0 
 company_admin/src/assets/logo.png                                                                |    0 
 server/service/src/main/java/com/doumee/service/system/SystemPositionService.java                |    0 
 server/service/src/main/java/com/doumee/biz/system/SystemUserBiz.java                            |    0 
 server/platform/src/main/java/com/doumee/api/system/SystemPermissionController.java              |    0 
 server/service/src/main/java/com/doumee/core/model/ApiResponse.java                              |    0 
 server/service/src/main/java/com/doumee/biz/system/SystemDictDataBiz.java                        |    0 
 server/service/src/main/java/com/doumee/biz/system/impl/SystemDataPermissionBizImpl.java         |    0 
 server/service/src/main/resources/application-test.yml                                           |   41 
 company_admin/src/components/system/role/OperaRoleWindow.vue                                     |    0 
 server/platform/src/main/java/com/doumee/api/business/CateAttrController.java                    |  100 
 server/service/src/main/java/com/doumee/service/system/impl/SystemDictDataServiceImpl.java       |    0 
 company_admin/src/components/common/DepartmentSelect.vue                                         |    0 
 server/platform/src/main/java/com/doumee/PlatformApplication.java                                |   23 
 server/service/src/main/java/com/doumee/config/mybatis/MyBatisPlusConfig.java                    |    0 
 server/service/src/main/java/com/doumee/dao/system/SystemRoleMapper.java                         |    0 
 company_admin/src/plugins/messagebox.js                                                          |    0 
 company_admin/src/components/system/position/PositionUserWindow.vue                              |    0 
 company_admin/src/components/system/user/OperaUserWindow.vue                                     |    0 
 server/service/src/main/java/com/doumee/dao/business/model/GoodsImport.java                      |    0 
 server/company/src/main/java/com/doumee/config/shiro/ShiroCacheManager.java                      |   44 
 server/company/src/main/resources/application.yml                                                |   66 
 server/platform/src/main/java/com/doumee/api/business/MultifileController.java                   |   90 
 company_admin/public/avatar/man.png                                                              |    0 
 server/service/src/main/java/com/doumee/core/utils/PinYinUtil.java                               |    0 
 server/service/src/main/java/com/doumee/service/business/impl/GoodsServiceImpl.java              |    0 
 company_admin/src/assets/icons/system/log.svg                                                    |    0 
 company_admin/src/utils/util.js                                                                  |    0 
 server/platform/src/main/java/com/doumee/api/system/SystemPositionController.java                |    0 
 server/service/src/main/resources/application-dev.yml                                            |   54 
 server/platform/src/main/java/com/doumee/shiro/ShiroSessionManager.java                          |   85 
 server/service/src/main/java/com/doumee/dao/system/model/SystemDepartmentUser.java               |    0 
 server/service/src/main/java/com/doumee/dao/system/vo/SystemMenuNodeVO.java                      |    0 
 server/service/src/main/java/com/doumee/service/system/impl/SystemRoleMenuServiceImpl.java       |    0 
 server/service/src/main/java/com/doumee/service/system/impl/SystemRolePermissionServiceImpl.java |    0 
 .idea/encodings.xml                                                                              |   13 
 server/service/src/main/java/com/doumee/biz/system/SystemMenuBiz.java                            |    0 
 server/service/src/main/java/com/doumee/dao/system/SystemDepartmentUserMapper.java               |    0 
 server/platform/src/main/java/com/doumee/api/system/SystemRoleController.java                    |    0 
 company_admin/src/assets/icons/system/shield.svg                                                 |    0 
 server/service/src/main/resources/logback-spring.xml                                             |    0 
 server/service/src/main/java/com/doumee/core/utils/UserClient.java                               |    0 
 server/service/src/main/java/com/doumee/core/utils/Constants.java                                |  711 +++++
 server/service/src/main/java/com/doumee/service/system/SystemTraceLogService.java                |    0 
 server/service/src/main/java/com/doumee/core/annotation/pr/PreventRepeatInterceptorConfig.java   |    0 
 server/service/src/main/java/com/doumee/dao/system/dto/QuerySystemDepartmentDTO.java             |    0 
 company_admin/src/assets/icons/system/log-login.svg                                              |    0 
 server/platform/src/main/java/com/doumee/api/business/CateBudgetController.java                  |   65 
 server/company/src/main/java/com/doumee/config/shiro/ShiroAuthFilter.java                        |   30 
 company_admin/src/views/system/user.vue                                                          |    0 
 company_admin/src/components/common/GlobalWindow.vue                                             |    0 
 server/platform/src/main/java/com/doumee/swagger/SwaggerConfig.java                              |   99 
 server/platform/src/main/java/com/doumee/shiro/ShiroToken.java                                   |   54 
 server/service/src/main/java/com/doumee/service/system/SystemMenuService.java                    |    0 
 server/service/src/main/java/com/doumee/service/aware/PositionDataPermissionAware.java           |    0 
 server/company/src/main/java/com/doumee/api/business/GoodsParamController.java                   |   90 
 company_admin/src/plugins/download.js                                                            |    0 
 server/service/src/main/java/com/doumee/config/shiroMemory/ShiroCache.java                       |  113 
 server/service/src/main/java/com/doumee/dao/system/dto/CompanyUserDTO.java                       |    0 
 server/service/src/main/java/com/doumee/dao/system/model/SystemRoleMenu.java                     |    0 
 server/service/src/main/java/com/doumee/dao/system/dto/ExpertReportDTO.java                      |    0 
 company_admin/src/views/business/goods.vue                                                       |    0 
 server/platform/src/main/resources/application.yml                                               |   66 
 server/service/src/main/java/com/doumee/service/system/impl/SystemDataPermissionServiceImpl.java |    0 
 server/service/src/main/java/com/doumee/config/shiroMemory/ShiroSessionManager.java              |   86 
 .gitignore                                                                                       |   28 
 company_admin/src/assets/icons/system/dictionary.svg                                             |    0 
 server/service/src/main/java/com/doumee/core/utils/FileDigest.java                               |    0 
 server/service/src/main/java/com/doumee/core/servlet/ServletDuplicateRequestWrapper.java         |    0 
 server/company/src/main/java/com/doumee/api/business/CateBudgetController.java                   |   65 
 server/service/src/main/java/com/doumee/dao/system/model/SystemDataPermission.java               |    0 
 server/platform/src/main/java/com/doumee/Main.java                                               |    7 
 server/platform/src/main/java/com/doumee/shiro/ShiroCache.java                                   |  159 +
 server/service/src/main/java/com/doumee/dao/system/vo/SystemDataPermissionListVO.java            |    0 
 server/service/src/main/java/com/doumee/dao/system/dto/QuerySystemTraceLogDTO.java               |    0 
 server/platform/src/main/java/com/doumee/api/system/SystemController.java                        |    0 
 server/service/src/main/java/com/doumee/core/utils/Location.java                                 |    0 
 server/service/src/main/java/com/doumee/service/business/CateParamService.java                   |    0 
 server/service/src/main/java/com/doumee/service/business/impl/CateBudgetServiceImpl.java         |    0 
 server/platform/src/main/java/com/doumee/api/business/GoodsParamController.java                  |   90 
 server/service/src/main/java/com/doumee/dao/system/SystemTraceLogMapper.java                     |    0 
 company_admin/src/components/system/dict/OperaDictDataWindow.vue                                 |    0 
 company_admin/src/views/system/traceLog.vue                                                      |    0 
 server/service/src/main/java/com/doumee/service/business/impl/MultifileServiceImpl.java          |    0 
 company_admin/src/api/system/role.js                                                             |    0 
 company_admin/src/components/business/OperaGoodsWindow.vue                                       |    0 
 server/service/src/main/java/com/doumee/service/system/SystemDepartmentUserService.java          |    0 
 server/service/src/main/java/com/doumee/config/shiroMemory/ShiroSessionDAO.java                  |  110 
 server/service/src/main/java/com/doumee/dao/system/SystemMenuMapper.java                         |    0 
 server/company/src/main/java/com/doumee/config/swagger/SwaggerConfig.java                        |   99 
 server/service/src/main/java/com/doumee/biz/system/SystemPermissionBiz.java                      |    0 
 server/company/src/main/java/com/doumee/config/shiro/ShiroSessionManager.java                    |   85 
 server/service/src/main/java/com/doumee/service/system/SystemRoleMenuService.java                |    0 
 company_admin/src/components/system/role/MenuConfigWindow.vue                                    |    0 
 server/company/src/main/java/com/doumee/api/system/SystemDictController.java                     |    0 
 company_admin/src/components/system/role/RoleSelect.vue                                          |    0 
 server/service/src/main/java/com/doumee/biz/system/SystemDictBiz.java                            |    0 
 server/service/src/main/java/com/doumee/core/constants/ExceptionLevel.java                       |    0 
 server/service/src/main/java/com/doumee/dao/system/SystemUserRoleMapper.java                     |    0 
 company_admin/src/api/business/category.js                                                       |    0 
 server/service/src/main/java/com/doumee/dao/system/dto/CompanyDTO.java                           |    0 
 company_admin/src/assets/images/login.jpg                                                        |    0 
 company_admin/src/assets/icons/system/permission.svg                                             |    0 
 company_admin/src/assets/style/element-variables.scss                                            |    0 
 server/service/src/main/java/com/doumee/dao/system/model/SystemDepartment.java                   |    0 
 server/company/src/main/java/com/doumee/api/business/BrandController.java                        |   98 
 company_admin/src/api/system/loginLog.js                                                         |    0 
 server/company/src/main/java/com/doumee/api/common/CaptchaController.java                        |    0 
 company_admin/.env.staging                                                                       |    0 
 server/company/src/main/java/com/doumee/api/business/CategoryController.java                     |  111 
 company_admin/.env.production                                                                    |    0 
 company_admin/src/views/system/position.vue                                                      |    0 
 company_admin/src/layouts/TableLayout.vue                                                        |    0 
 server/service/src/main/java/com/doumee/dao/system/dto/UpdateSystemMenuSortDTO.java              |    0 
 server/service/src/main/java/com/doumee/dao/system/model/SystemUserRole.java                     |    0 
 server/company/src/main/java/com/doumee/api/system/SystemRoleController.java                     |    0 
 company_admin/src/views/system/data-permission.vue                                               |    0 
 company_admin/src/App.vue                                                                        |    0 
 server/service/src/main/java/com/doumee/core/utils/Utils.java                                    |    0 
 company_admin/src/components/system/dict/OperaDictWindow.vue                                     |    0 
 server/company/src/main/java/com/doumee/config/shiro/ShiroSessionSerializer.java                 |   36 
 company_admin/src/api/business/goods.js                                                          |    0 
 .idea/compiler.xml                                                                               |   27 
 company_admin/src/api/system/traceLog.js                                                         |    0 
 server/service/src/main/java/com/doumee/dao/system/SystemRoleMenuMapper.java                     |    0 
 server/service/src/main/java/com/doumee/dao/system/SystemLoginLogMapper.java                     |    0 
 server/platform/src/main/java/com/doumee/api/business/GoodsController.java                       |  144 +
 server/service/src/main/java/com/doumee/dao/system/vo/SystemPositionListVO.java                  |    0 
 company_admin/src/components/system/department/OperaDepartmentWindow.vue                         |    0 
 server/service/src/main/java/com/doumee/dao/business/GoodsMapper.java                            |    0 
 server/service/src/main/java/com/doumee/service/business/impl/GoodsParamServiceImpl.java         |    0 
 server/platform/src/main/java/com/doumee/api/business/CategoryController.java                    |  112 
 company_admin/src/components/common/SearchFormCollapse.vue                                       |    0 
 company_admin/src/views/business/brand.vue                                                       |    0 
 company_admin/src/directives/v-roles.js                                                          |    0 
 company_admin/src/components/common/MenuSelect.vue                                               |    0 
 server/company/src/main/java/com/doumee/api/system/SystemMenuController.java                     |    0 
 company_admin/src/assets/images/alipay.jpeg                                                      |    0 
 server/platform/src/main/java/com/doumee/api/system/SystemDictController.java                    |    0 
 server/service/src/main/java/com/doumee/config/shiroMemory/ShiroAuthFilter.java                  |   30 
 server/service/src/main/java/com/doumee/dao/business/model/GoodsParam.java                       |    0 
 server/service/src/main/resources/mappers/SystemRoleMapper.xml                                   |    0 
 server/service/src/main/java/com/doumee/core/servlet/ServletRewriteFilter.java                   |    0 
 server/service/src/main/java/com/doumee/dao/system/vo/SystemDictDataListVO.java                  |    0 
 server/service/src/main/java/com/doumee/dao/business/model/CateBudgetMapper.java                 |    0 
 server/company/src/main/java/com/doumee/api/common/PublicController.java                         |  327 ++
 server/service/src/main/java/com/doumee/biz/system/impl/SystemRoleBizImpl.java                   |    0 
 company_admin/src/components/system/dict/DictDataManagerWindow.vue                               |    0 
 server/service/src/main/java/com/doumee/core/servlet/ServletDuplicateOutputStream.java           |    0 
 server/service/src/main/java/com/doumee/core/constants/OperaType.java                            |    0 
 server/service/src/main/java/com/doumee/dao/business/model/Category.java                         |  112 
 server/service/src/main/java/com/doumee/dao/system/dto/CreateSystemUserDTO.java                  |    0 
 company_admin/src/assets/icons/system/pwd.svg                                                    |    0 
 server/platform/src/main/java/com/doumee/shiro/ShiroAuthFilter.java                              |   30 
 server/service/src/main/java/com/doumee/service/system/impl/SystemDepartmentUserServiceImpl.java |    0 
 server/service/src/main/java/com/doumee/biz/system/impl/SystemPermissionBizImpl.java             |    0 
 server/service/src/main/java/com/doumee/dao/business/MultifileMapper.java                        |    0 
 server/service/src/main/java/com/doumee/dao/system/model/SystemMenu.java                         |   76 
 server/service/src/main/java/com/doumee/service/business/impl/CategoryServiceImpl.java           |    0 
 server/service/src/main/java/com/doumee/service/proxy/CacheProxy.java                            |    0 
 server/service/src/main/java/com/doumee/service/system/SystemDataPermissionService.java          |    0 
 company_admin/src/api/system/dictData.js                                                         |    0 
 company_admin/src/views/login.vue                                                                |    0 
 server/company/src/main/java/com/doumee/config/swagger/SwaggerInterceptorConfig.java             |    0 
 server/service/src/main/java/com/doumee/service/system/SystemUserRoleService.java                |    0 
 company_admin/src/api/system/dataPermission.js                                                   |    0 
 server/service/src/main/java/com/doumee/dao/system/model/SystemUser.java                         |  100 
 server/service/src/main/resources/mappers/SystemPermissionMapper.xml                             |    0 
 server/service/src/main/java/com/doumee/core/servlet/ServletDuplicateResponseWrapper.java        |    0 
 server/service/src/main/java/com/doumee/dao/system/dto/CreateRoleMenuDTO.java                    |    0 
 server/service/src/main/java/com/doumee/dao/business/BrandMapper.java                            |    0 
 company_admin/src/plugins/index.js                                                               |    0 
 server/service/src/main/java/com/doumee/config/shiroMemory/ShiroTokenManager.java                |   25 
 company_admin/src/api/system/permission.js                                                       |    0 
 company_admin/src/assets/icons/system/log-opera.svg                                              |    0 
 server/service/src/main/java/com/doumee/core/aware/DefaultDataPermissionAware.java               |    0 
 server/service/src/main/java/com/doumee/dao/business/CateParamMapper.java                        |    0 
 server/service/src/main/java/com/doumee/dao/system/dto/UpdatePwdDto.java                         |    0 
 server/service/src/main/java/com/doumee/core/annotation/trace/TraceInterceptor.java              |    0 
 company_admin/src/api/system/monitor.js                                                          |    0 
 server/service/src/main/java/com/doumee/dao/system/SystemDictMapper.java                         |    0 
 company_admin/src/components/common/MenuItems.vue                                                |    0 
 server/service/src/main/java/com/doumee/service/business/GoodsService.java                       |    0 
 company_admin/vue.config.js                                                                      |    0 
 server/service/src/main/java/com/doumee/core/utils/Http.java                                     |    0 
 server/service/src/main/java/com/doumee/config/shiroMemory/ShiroCredentialsMatcher.java          |   41 
 server/service/src/main/java/com/doumee/dao/system/SystemPermissionMapper.java                   |    0 
 server/service/src/main/java/com/doumee/service/business/impl/CateParamServiceImpl.java          |    0 
 server/company/src/main/java/com/doumee/api/system/SystemTraceLogController.java                 |    0 
 server/company/src/main/java/com/doumee/api/system/SystemPermissionController.java               |    0 
 server/platform/src/main/java/com/doumee/shiro/ShiroSessionDAO.java                              |  113 
 company_admin/src/views/system/permission.vue                                                    |    0 
 server/service/src/main/java/com/doumee/dao/system/dto/QuerySystemLoginLogDTO.java               |   23 
 server/service/src/main/java/com/doumee/service/business/CateAttrService.java                    |    0 
 server/service/src/main/java/com/doumee/dao/system/dto/QuerySystemDictDataDTO.java               |    0 
 server/service/src/main/java/com/doumee/dao/system/SystemRolePermissionMapper.java               |    0 
 server/service/src/main/java/com/doumee/service/system/SystemDepartmentService.java              |    0 
 company_admin/src/main.js                                                                        |    0 
 company_admin/src/components/system/datapermission/CustomSelect.vue                              |    0 
 server/service/src/main/java/com/doumee/core/annotation/excel/Reflections.java                   |    0 
 server/service/src/main/java/com/doumee/dao/business/model/dto/GoodsRequest.java                 |    0 
 company_admin/src/assets/icons/system/index.scss                                                 |    0 
 server/service/src/main/java/com/doumee/service/system/SystemPositionUserService.java            |    0 
 server/service/src/main/java/com/doumee/biz/system/impl/SystemUserBizImpl.java                   |    0 
 /dev/null                                                                                        |  110 
 server/platform/src/main/java/com/doumee/api/system/SystemUserController.java                    |  129 
 server/service/src/main/java/com/doumee/service/system/SystemLoginService.java                   |    0 
 server/service/src/main/java/com/doumee/service/business/impl/BrandServiceImpl.java              |    0 
 server/service/src/main/java/com/doumee/dao/business/model/Multifile.java                        |   81 
 company_admin/src/utils/form.js                                                                  |    0 
 475 files changed, 7,989 insertions(+), 120 deletions(-)

diff --git a/.gitignore b/.gitignore
index 9dae333..fbaf2b6 100644
--- a/.gitignore
+++ b/.gitignore
@@ -8,7 +8,33 @@
 *.war
 *.ear
 
+target/
 # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
 hs_err_pid*
+
 log/
-.gitignore
\ No newline at end of file
+.gitignore
+.DS_Store
+coderd.json
+node_modules
+/dist
+
+
+# local env files
+.env.local
+.env.*.local
+
+# Log files
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+pnpm-debug.log*
+
+# Editor directories and files
+.idea
+.vscode
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
+*.sw?
diff --git a/.idea/compiler.xml b/.idea/compiler.xml
new file mode 100644
index 0000000..92917a1
--- /dev/null
+++ b/.idea/compiler.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="CompilerConfiguration">
+    <annotationProcessing>
+      <profile name="Maven default annotation processors profile" enabled="true">
+        <sourceOutputDir name="target/generated-sources/annotations" />
+        <sourceTestOutputDir name="target/generated-test-sources/test-annotations" />
+        <outputRelativeToContentRoot value="true" />
+        <module name="platform" />
+        <module name="service" />
+        <module name="company" />
+      </profile>
+    </annotationProcessing>
+    <bytecodeTargetLevel>
+      <module name="pre_select" target="1.8" />
+    </bytecodeTargetLevel>
+  </component>
+  <component name="JavacSettings">
+    <option name="ADDITIONAL_OPTIONS_OVERRIDE">
+      <module name="company" options="-parameters" />
+      <module name="platform" options="-parameters" />
+      <module name="pre_select" options="" />
+      <module name="preselect" options="-parameters" />
+      <module name="service" options="-parameters" />
+    </option>
+  </component>
+</project>
\ No newline at end of file
diff --git a/.idea/encodings.xml b/.idea/encodings.xml
new file mode 100644
index 0000000..0956fda
--- /dev/null
+++ b/.idea/encodings.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="Encoding">
+    <file url="file://$PROJECT_DIR$/server/company/src/main/java" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/server/company/src/main/resources" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/server/platform/src/main/java" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/server/platform/src/main/resources" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/server/service/src/main/java" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/server/service/src/main/resources" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/server/src/main/java" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/server/src/main/resources" charset="UTF-8" />
+  </component>
+</project>
\ No newline at end of file
diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml
new file mode 100644
index 0000000..712ab9d
--- /dev/null
+++ b/.idea/jarRepositories.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="RemoteRepositoriesConfiguration">
+    <remote-repository>
+      <option name="id" value="central" />
+      <option name="name" value="Central Repository" />
+      <option name="url" value="https://repo.maven.apache.org/maven2" />
+    </remote-repository>
+    <remote-repository>
+      <option name="id" value="central" />
+      <option name="name" value="Maven Central repository" />
+      <option name="url" value="https://repo1.maven.org/maven2" />
+    </remote-repository>
+    <remote-repository>
+      <option name="id" value="jboss.community" />
+      <option name="name" value="JBoss Community repository" />
+      <option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" />
+    </remote-repository>
+  </component>
+</project>
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..66c9c8c
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ExternalStorageConfigurationManager" enabled="true" />
+  <component name="MavenProjectsManager">
+    <option name="originalFiles">
+      <list>
+        <option value="$PROJECT_DIR$/server/pom.xml" />
+      </list>
+    </option>
+  </component>
+  <component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" project-jdk-name="1.8" project-jdk-type="JavaSDK">
+    <output url="file://$PROJECT_DIR$/out" />
+  </component>
+  <component name="SuppressionsComponent">
+    <option name="suppComments" value="[]" />
+  </component>
+</project>
\ No newline at end of file
diff --git a/.idea/preselect.iml b/.idea/preselect.iml
new file mode 100644
index 0000000..741b22b
--- /dev/null
+++ b/.idea/preselect.iml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module type="JAVA_MODULE" version="4">
+  <component name="NewModuleRootManager">
+    <content url="file://$MODULE_DIR$" />
+  </component>
+</module>
\ No newline at end of file
diff --git a/.idea/uiDesigner.xml b/.idea/uiDesigner.xml
new file mode 100644
index 0000000..2b63946
--- /dev/null
+++ b/.idea/uiDesigner.xml
@@ -0,0 +1,124 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="Palette2">
+    <group name="Swing">
+      <item class="com.intellij.uiDesigner.HSpacer" tooltip-text="Horizontal Spacer" icon="/com/intellij/uiDesigner/icons/hspacer.svg" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="1" hsize-policy="6" anchor="0" fill="1" />
+      </item>
+      <item class="com.intellij.uiDesigner.VSpacer" tooltip-text="Vertical Spacer" icon="/com/intellij/uiDesigner/icons/vspacer.svg" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="1" anchor="0" fill="2" />
+      </item>
+      <item class="javax.swing.JPanel" icon="/com/intellij/uiDesigner/icons/panel.svg" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3" />
+      </item>
+      <item class="javax.swing.JScrollPane" icon="/com/intellij/uiDesigner/icons/scrollPane.svg" removable="false" auto-create-binding="false" can-attach-label="true">
+        <default-constraints vsize-policy="7" hsize-policy="7" anchor="0" fill="3" />
+      </item>
+      <item class="javax.swing.JButton" icon="/com/intellij/uiDesigner/icons/button.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="3" anchor="0" fill="1" />
+        <initial-values>
+          <property name="text" value="Button" />
+        </initial-values>
+      </item>
+      <item class="javax.swing.JRadioButton" icon="/com/intellij/uiDesigner/icons/radioButton.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
+        <initial-values>
+          <property name="text" value="RadioButton" />
+        </initial-values>
+      </item>
+      <item class="javax.swing.JCheckBox" icon="/com/intellij/uiDesigner/icons/checkBox.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
+        <initial-values>
+          <property name="text" value="CheckBox" />
+        </initial-values>
+      </item>
+      <item class="javax.swing.JLabel" icon="/com/intellij/uiDesigner/icons/label.svg" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="0" anchor="8" fill="0" />
+        <initial-values>
+          <property name="text" value="Label" />
+        </initial-values>
+      </item>
+      <item class="javax.swing.JTextField" icon="/com/intellij/uiDesigner/icons/textField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
+          <preferred-size width="150" height="-1" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JPasswordField" icon="/com/intellij/uiDesigner/icons/passwordField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
+          <preferred-size width="150" height="-1" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JFormattedTextField" icon="/com/intellij/uiDesigner/icons/formattedTextField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
+          <preferred-size width="150" height="-1" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JTextArea" icon="/com/intellij/uiDesigner/icons/textArea.svg" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JTextPane" icon="/com/intellij/uiDesigner/icons/textPane.svg" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JEditorPane" icon="/com/intellij/uiDesigner/icons/editorPane.svg" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JComboBox" icon="/com/intellij/uiDesigner/icons/comboBox.svg" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="0" hsize-policy="2" anchor="8" fill="1" />
+      </item>
+      <item class="javax.swing.JTable" icon="/com/intellij/uiDesigner/icons/table.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JList" icon="/com/intellij/uiDesigner/icons/list.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="2" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JTree" icon="/com/intellij/uiDesigner/icons/tree.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JTabbedPane" icon="/com/intellij/uiDesigner/icons/tabbedPane.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
+          <preferred-size width="200" height="200" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JSplitPane" icon="/com/intellij/uiDesigner/icons/splitPane.svg" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
+          <preferred-size width="200" height="200" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JSpinner" icon="/com/intellij/uiDesigner/icons/spinner.svg" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
+      </item>
+      <item class="javax.swing.JSlider" icon="/com/intellij/uiDesigner/icons/slider.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
+      </item>
+      <item class="javax.swing.JSeparator" icon="/com/intellij/uiDesigner/icons/separator.svg" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3" />
+      </item>
+      <item class="javax.swing.JProgressBar" icon="/com/intellij/uiDesigner/icons/progressbar.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1" />
+      </item>
+      <item class="javax.swing.JToolBar" icon="/com/intellij/uiDesigner/icons/toolbar.svg" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1">
+          <preferred-size width="-1" height="20" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JToolBar$Separator" icon="/com/intellij/uiDesigner/icons/toolbarSeparator.svg" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="0" anchor="0" fill="1" />
+      </item>
+      <item class="javax.swing.JScrollBar" icon="/com/intellij/uiDesigner/icons/scrollbar.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="0" anchor="0" fill="2" />
+      </item>
+    </group>
+  </component>
+</project>
\ No newline at end of file
diff --git a/admin/.env b/company_admin/.env
similarity index 100%
rename from admin/.env
rename to company_admin/.env
diff --git a/admin/.env.development b/company_admin/.env.development
similarity index 100%
rename from admin/.env.development
rename to company_admin/.env.development
diff --git a/admin/.env.production b/company_admin/.env.production
similarity index 100%
rename from admin/.env.production
rename to company_admin/.env.production
diff --git a/admin/.env.staging b/company_admin/.env.staging
similarity index 100%
rename from admin/.env.staging
rename to company_admin/.env.staging
diff --git a/admin/.gitignore b/company_admin/.gitignore
similarity index 100%
rename from admin/.gitignore
rename to company_admin/.gitignore
diff --git a/admin/README.md b/company_admin/README.md
similarity index 100%
rename from admin/README.md
rename to company_admin/README.md
diff --git a/admin/babel.config.js b/company_admin/babel.config.js
similarity index 100%
rename from admin/babel.config.js
rename to company_admin/babel.config.js
diff --git a/admin/package-lock.json b/company_admin/package-lock.json
similarity index 100%
rename from admin/package-lock.json
rename to company_admin/package-lock.json
diff --git a/admin/package.json b/company_admin/package.json
similarity index 100%
rename from admin/package.json
rename to company_admin/package.json
diff --git a/admin/public/avatar/man.png b/company_admin/public/avatar/man.png
similarity index 100%
rename from admin/public/avatar/man.png
rename to company_admin/public/avatar/man.png
Binary files differ
diff --git a/admin/public/avatar/woman.png b/company_admin/public/avatar/woman.png
similarity index 100%
rename from admin/public/avatar/woman.png
rename to company_admin/public/avatar/woman.png
Binary files differ
diff --git a/admin/public/favicon.ico b/company_admin/public/favicon.ico
similarity index 100%
rename from admin/public/favicon.ico
rename to company_admin/public/favicon.ico
Binary files differ
diff --git a/admin/public/index.html b/company_admin/public/index.html
similarity index 100%
rename from admin/public/index.html
rename to company_admin/public/index.html
diff --git a/admin/src/App.vue b/company_admin/src/App.vue
similarity index 100%
rename from admin/src/App.vue
rename to company_admin/src/App.vue
diff --git a/admin/src/api/business/brand.js b/company_admin/src/api/business/brand.js
similarity index 100%
rename from admin/src/api/business/brand.js
rename to company_admin/src/api/business/brand.js
diff --git a/admin/src/api/business/category.js b/company_admin/src/api/business/category.js
similarity index 100%
rename from admin/src/api/business/category.js
rename to company_admin/src/api/business/category.js
diff --git a/admin/src/api/business/goods.js b/company_admin/src/api/business/goods.js
similarity index 100%
rename from admin/src/api/business/goods.js
rename to company_admin/src/api/business/goods.js
diff --git a/admin/src/api/system/common.js b/company_admin/src/api/system/common.js
similarity index 100%
rename from admin/src/api/system/common.js
rename to company_admin/src/api/system/common.js
diff --git a/admin/src/api/system/dataPermission.js b/company_admin/src/api/system/dataPermission.js
similarity index 100%
rename from admin/src/api/system/dataPermission.js
rename to company_admin/src/api/system/dataPermission.js
diff --git a/admin/src/api/system/department.js b/company_admin/src/api/system/department.js
similarity index 100%
rename from admin/src/api/system/department.js
rename to company_admin/src/api/system/department.js
diff --git a/admin/src/api/system/dict.js b/company_admin/src/api/system/dict.js
similarity index 100%
rename from admin/src/api/system/dict.js
rename to company_admin/src/api/system/dict.js
diff --git a/admin/src/api/system/dictData.js b/company_admin/src/api/system/dictData.js
similarity index 100%
rename from admin/src/api/system/dictData.js
rename to company_admin/src/api/system/dictData.js
diff --git a/admin/src/api/system/loginLog.js b/company_admin/src/api/system/loginLog.js
similarity index 100%
rename from admin/src/api/system/loginLog.js
rename to company_admin/src/api/system/loginLog.js
diff --git a/admin/src/api/system/menu.js b/company_admin/src/api/system/menu.js
similarity index 100%
rename from admin/src/api/system/menu.js
rename to company_admin/src/api/system/menu.js
diff --git a/admin/src/api/system/monitor.js b/company_admin/src/api/system/monitor.js
similarity index 100%
rename from admin/src/api/system/monitor.js
rename to company_admin/src/api/system/monitor.js
diff --git a/admin/src/api/system/permission.js b/company_admin/src/api/system/permission.js
similarity index 100%
rename from admin/src/api/system/permission.js
rename to company_admin/src/api/system/permission.js
diff --git a/admin/src/api/system/position.js b/company_admin/src/api/system/position.js
similarity index 100%
rename from admin/src/api/system/position.js
rename to company_admin/src/api/system/position.js
diff --git a/admin/src/api/system/role.js b/company_admin/src/api/system/role.js
similarity index 100%
rename from admin/src/api/system/role.js
rename to company_admin/src/api/system/role.js
diff --git a/admin/src/api/system/traceLog.js b/company_admin/src/api/system/traceLog.js
similarity index 100%
rename from admin/src/api/system/traceLog.js
rename to company_admin/src/api/system/traceLog.js
diff --git a/admin/src/api/system/user.js b/company_admin/src/api/system/user.js
similarity index 100%
rename from admin/src/api/system/user.js
rename to company_admin/src/api/system/user.js
diff --git a/admin/src/assets/icons/ext/index.scss b/company_admin/src/assets/icons/ext/index.scss
similarity index 100%
rename from admin/src/assets/icons/ext/index.scss
rename to company_admin/src/assets/icons/ext/index.scss
diff --git a/admin/src/assets/icons/system/department.svg b/company_admin/src/assets/icons/system/department.svg
similarity index 100%
rename from admin/src/assets/icons/system/department.svg
rename to company_admin/src/assets/icons/system/department.svg
diff --git a/admin/src/assets/icons/system/dictionary.svg b/company_admin/src/assets/icons/system/dictionary.svg
similarity index 100%
rename from admin/src/assets/icons/system/dictionary.svg
rename to company_admin/src/assets/icons/system/dictionary.svg
diff --git a/admin/src/assets/icons/system/index.scss b/company_admin/src/assets/icons/system/index.scss
similarity index 100%
rename from admin/src/assets/icons/system/index.scss
rename to company_admin/src/assets/icons/system/index.scss
diff --git a/admin/src/assets/icons/system/listener.svg b/company_admin/src/assets/icons/system/listener.svg
similarity index 100%
rename from admin/src/assets/icons/system/listener.svg
rename to company_admin/src/assets/icons/system/listener.svg
diff --git a/admin/src/assets/icons/system/log-login.svg b/company_admin/src/assets/icons/system/log-login.svg
similarity index 100%
rename from admin/src/assets/icons/system/log-login.svg
rename to company_admin/src/assets/icons/system/log-login.svg
diff --git a/admin/src/assets/icons/system/log-opera.svg b/company_admin/src/assets/icons/system/log-opera.svg
similarity index 100%
rename from admin/src/assets/icons/system/log-opera.svg
rename to company_admin/src/assets/icons/system/log-opera.svg
diff --git a/admin/src/assets/icons/system/log.svg b/company_admin/src/assets/icons/system/log.svg
similarity index 100%
rename from admin/src/assets/icons/system/log.svg
rename to company_admin/src/assets/icons/system/log.svg
diff --git a/admin/src/assets/icons/system/permission.svg b/company_admin/src/assets/icons/system/permission.svg
similarity index 100%
rename from admin/src/assets/icons/system/permission.svg
rename to company_admin/src/assets/icons/system/permission.svg
diff --git a/admin/src/assets/icons/system/position.svg b/company_admin/src/assets/icons/system/position.svg
similarity index 100%
rename from admin/src/assets/icons/system/position.svg
rename to company_admin/src/assets/icons/system/position.svg
diff --git a/admin/src/assets/icons/system/pwd.svg b/company_admin/src/assets/icons/system/pwd.svg
similarity index 100%
rename from admin/src/assets/icons/system/pwd.svg
rename to company_admin/src/assets/icons/system/pwd.svg
diff --git a/admin/src/assets/icons/system/role.svg b/company_admin/src/assets/icons/system/role.svg
similarity index 100%
rename from admin/src/assets/icons/system/role.svg
rename to company_admin/src/assets/icons/system/role.svg
diff --git a/admin/src/assets/icons/system/shield.svg b/company_admin/src/assets/icons/system/shield.svg
similarity index 100%
rename from admin/src/assets/icons/system/shield.svg
rename to company_admin/src/assets/icons/system/shield.svg
diff --git a/admin/src/assets/images/404-tip.png b/company_admin/src/assets/images/404-tip.png
similarity index 100%
rename from admin/src/assets/images/404-tip.png
rename to company_admin/src/assets/images/404-tip.png
Binary files differ
diff --git a/admin/src/assets/images/404.png b/company_admin/src/assets/images/404.png
similarity index 100%
rename from admin/src/assets/images/404.png
rename to company_admin/src/assets/images/404.png
Binary files differ
diff --git a/admin/src/assets/images/alipay.jpeg b/company_admin/src/assets/images/alipay.jpeg
similarity index 100%
rename from admin/src/assets/images/alipay.jpeg
rename to company_admin/src/assets/images/alipay.jpeg
Binary files differ
diff --git a/admin/src/assets/images/login.jpg b/company_admin/src/assets/images/login.jpg
similarity index 100%
rename from admin/src/assets/images/login.jpg
rename to company_admin/src/assets/images/login.jpg
Binary files differ
diff --git a/admin/src/assets/images/man.png b/company_admin/src/assets/images/man.png
similarity index 100%
rename from admin/src/assets/images/man.png
rename to company_admin/src/assets/images/man.png
Binary files differ
diff --git a/admin/src/assets/images/not-allow.png b/company_admin/src/assets/images/not-allow.png
similarity index 100%
rename from admin/src/assets/images/not-allow.png
rename to company_admin/src/assets/images/not-allow.png
Binary files differ
diff --git a/admin/src/assets/images/qq.png b/company_admin/src/assets/images/qq.png
similarity index 100%
rename from admin/src/assets/images/qq.png
rename to company_admin/src/assets/images/qq.png
Binary files differ
diff --git a/admin/src/assets/images/woman.png b/company_admin/src/assets/images/woman.png
similarity index 100%
rename from admin/src/assets/images/woman.png
rename to company_admin/src/assets/images/woman.png
Binary files differ
diff --git a/admin/src/assets/images/wxpay.jpeg b/company_admin/src/assets/images/wxpay.jpeg
similarity index 100%
rename from admin/src/assets/images/wxpay.jpeg
rename to company_admin/src/assets/images/wxpay.jpeg
Binary files differ
diff --git a/admin/src/assets/logo.png b/company_admin/src/assets/logo.png
similarity index 100%
rename from admin/src/assets/logo.png
rename to company_admin/src/assets/logo.png
Binary files differ
diff --git a/admin/src/assets/style/element-variables.scss b/company_admin/src/assets/style/element-variables.scss
similarity index 100%
rename from admin/src/assets/style/element-variables.scss
rename to company_admin/src/assets/style/element-variables.scss
diff --git a/admin/src/assets/style/style.scss b/company_admin/src/assets/style/style.scss
similarity index 100%
rename from admin/src/assets/style/style.scss
rename to company_admin/src/assets/style/style.scss
diff --git a/admin/src/assets/style/variables.scss b/company_admin/src/assets/style/variables.scss
similarity index 100%
rename from admin/src/assets/style/variables.scss
rename to company_admin/src/assets/style/variables.scss
diff --git a/admin/src/components/base/BaseOpera.vue b/company_admin/src/components/base/BaseOpera.vue
similarity index 100%
rename from admin/src/components/base/BaseOpera.vue
rename to company_admin/src/components/base/BaseOpera.vue
diff --git a/admin/src/components/base/BasePage.vue b/company_admin/src/components/base/BasePage.vue
similarity index 100%
rename from admin/src/components/base/BasePage.vue
rename to company_admin/src/components/base/BasePage.vue
diff --git a/admin/src/components/base/BaseTable.vue b/company_admin/src/components/base/BaseTable.vue
similarity index 100%
rename from admin/src/components/base/BaseTable.vue
rename to company_admin/src/components/base/BaseTable.vue
diff --git a/admin/src/components/business/OperaBrandWindow.vue b/company_admin/src/components/business/OperaBrandWindow.vue
similarity index 100%
rename from admin/src/components/business/OperaBrandWindow.vue
rename to company_admin/src/components/business/OperaBrandWindow.vue
diff --git a/admin/src/components/business/OperaCategoryWindow.vue b/company_admin/src/components/business/OperaCategoryWindow.vue
similarity index 100%
rename from admin/src/components/business/OperaCategoryWindow.vue
rename to company_admin/src/components/business/OperaCategoryWindow.vue
diff --git a/admin/src/components/business/OperaGoodsWindow.vue b/company_admin/src/components/business/OperaGoodsWindow.vue
similarity index 100%
rename from admin/src/components/business/OperaGoodsWindow.vue
rename to company_admin/src/components/business/OperaGoodsWindow.vue
diff --git a/admin/src/components/common/ColumnDetail.vue b/company_admin/src/components/common/ColumnDetail.vue
similarity index 100%
rename from admin/src/components/common/ColumnDetail.vue
rename to company_admin/src/components/common/ColumnDetail.vue
diff --git a/admin/src/components/common/DepartmentSelect.vue b/company_admin/src/components/common/DepartmentSelect.vue
similarity index 100%
rename from admin/src/components/common/DepartmentSelect.vue
rename to company_admin/src/components/common/DepartmentSelect.vue
diff --git a/admin/src/components/common/GlobalWindow.vue b/company_admin/src/components/common/GlobalWindow.vue
similarity index 100%
rename from admin/src/components/common/GlobalWindow.vue
rename to company_admin/src/components/common/GlobalWindow.vue
diff --git a/admin/src/components/common/Header.vue b/company_admin/src/components/common/Header.vue
similarity index 100%
rename from admin/src/components/common/Header.vue
rename to company_admin/src/components/common/Header.vue
diff --git a/admin/src/components/common/Light.vue b/company_admin/src/components/common/Light.vue
similarity index 100%
rename from admin/src/components/common/Light.vue
rename to company_admin/src/components/common/Light.vue
diff --git a/admin/src/components/common/Menu.vue b/company_admin/src/components/common/Menu.vue
similarity index 100%
rename from admin/src/components/common/Menu.vue
rename to company_admin/src/components/common/Menu.vue
diff --git a/admin/src/components/common/MenuItems.vue b/company_admin/src/components/common/MenuItems.vue
similarity index 100%
rename from admin/src/components/common/MenuItems.vue
rename to company_admin/src/components/common/MenuItems.vue
diff --git a/admin/src/components/common/MenuSelect.vue b/company_admin/src/components/common/MenuSelect.vue
similarity index 100%
rename from admin/src/components/common/MenuSelect.vue
rename to company_admin/src/components/common/MenuSelect.vue
diff --git a/admin/src/components/common/NotAllow.vue b/company_admin/src/components/common/NotAllow.vue
similarity index 100%
rename from admin/src/components/common/NotAllow.vue
rename to company_admin/src/components/common/NotAllow.vue
diff --git a/admin/src/components/common/Pagination.vue b/company_admin/src/components/common/Pagination.vue
similarity index 100%
rename from admin/src/components/common/Pagination.vue
rename to company_admin/src/components/common/Pagination.vue
diff --git a/admin/src/components/common/PositionSelect.vue b/company_admin/src/components/common/PositionSelect.vue
similarity index 100%
rename from admin/src/components/common/PositionSelect.vue
rename to company_admin/src/components/common/PositionSelect.vue
diff --git a/admin/src/components/common/Profile.vue b/company_admin/src/components/common/Profile.vue
similarity index 100%
rename from admin/src/components/common/Profile.vue
rename to company_admin/src/components/common/Profile.vue
diff --git a/admin/src/components/common/Scrollbar.vue b/company_admin/src/components/common/Scrollbar.vue
similarity index 100%
rename from admin/src/components/common/Scrollbar.vue
rename to company_admin/src/components/common/Scrollbar.vue
diff --git a/admin/src/components/common/SearchFormCollapse.vue b/company_admin/src/components/common/SearchFormCollapse.vue
similarity index 100%
rename from admin/src/components/common/SearchFormCollapse.vue
rename to company_admin/src/components/common/SearchFormCollapse.vue
diff --git a/admin/src/components/common/TreeSelect.vue b/company_admin/src/components/common/TreeSelect.vue
similarity index 100%
rename from admin/src/components/common/TreeSelect.vue
rename to company_admin/src/components/common/TreeSelect.vue
diff --git a/admin/src/components/common/Value.vue b/company_admin/src/components/common/Value.vue
similarity index 100%
rename from admin/src/components/common/Value.vue
rename to company_admin/src/components/common/Value.vue
diff --git a/admin/src/components/system/datapermission/CustomSelect.vue b/company_admin/src/components/system/datapermission/CustomSelect.vue
similarity index 100%
rename from admin/src/components/system/datapermission/CustomSelect.vue
rename to company_admin/src/components/system/datapermission/CustomSelect.vue
diff --git a/admin/src/components/system/datapermission/DataPermModuleSelect.vue b/company_admin/src/components/system/datapermission/DataPermModuleSelect.vue
similarity index 100%
rename from admin/src/components/system/datapermission/DataPermModuleSelect.vue
rename to company_admin/src/components/system/datapermission/DataPermModuleSelect.vue
diff --git a/admin/src/components/system/datapermission/DataPermTypeSelect.vue b/company_admin/src/components/system/datapermission/DataPermTypeSelect.vue
similarity index 100%
rename from admin/src/components/system/datapermission/DataPermTypeSelect.vue
rename to company_admin/src/components/system/datapermission/DataPermTypeSelect.vue
diff --git a/admin/src/components/system/datapermission/OperaDataPermissionWindow.vue b/company_admin/src/components/system/datapermission/OperaDataPermissionWindow.vue
similarity index 100%
rename from admin/src/components/system/datapermission/OperaDataPermissionWindow.vue
rename to company_admin/src/components/system/datapermission/OperaDataPermissionWindow.vue
diff --git a/admin/src/components/system/department/DepartmentUserWindow.vue b/company_admin/src/components/system/department/DepartmentUserWindow.vue
similarity index 100%
rename from admin/src/components/system/department/DepartmentUserWindow.vue
rename to company_admin/src/components/system/department/DepartmentUserWindow.vue
diff --git a/admin/src/components/system/department/OperaDepartmentWindow.vue b/company_admin/src/components/system/department/OperaDepartmentWindow.vue
similarity index 100%
rename from admin/src/components/system/department/OperaDepartmentWindow.vue
rename to company_admin/src/components/system/department/OperaDepartmentWindow.vue
diff --git a/admin/src/components/system/dict/DictDataManagerWindow.vue b/company_admin/src/components/system/dict/DictDataManagerWindow.vue
similarity index 100%
rename from admin/src/components/system/dict/DictDataManagerWindow.vue
rename to company_admin/src/components/system/dict/DictDataManagerWindow.vue
diff --git a/admin/src/components/system/dict/OperaDictDataWindow.vue b/company_admin/src/components/system/dict/OperaDictDataWindow.vue
similarity index 100%
rename from admin/src/components/system/dict/OperaDictDataWindow.vue
rename to company_admin/src/components/system/dict/OperaDictDataWindow.vue
diff --git a/admin/src/components/system/dict/OperaDictWindow.vue b/company_admin/src/components/system/dict/OperaDictWindow.vue
similarity index 100%
rename from admin/src/components/system/dict/OperaDictWindow.vue
rename to company_admin/src/components/system/dict/OperaDictWindow.vue
diff --git a/admin/src/components/system/menu/OperaMenuWindow.vue b/company_admin/src/components/system/menu/OperaMenuWindow.vue
similarity index 100%
rename from admin/src/components/system/menu/OperaMenuWindow.vue
rename to company_admin/src/components/system/menu/OperaMenuWindow.vue
diff --git a/admin/src/components/system/permission/OperaPermissionWindow.vue b/company_admin/src/components/system/permission/OperaPermissionWindow.vue
similarity index 100%
rename from admin/src/components/system/permission/OperaPermissionWindow.vue
rename to company_admin/src/components/system/permission/OperaPermissionWindow.vue
diff --git a/admin/src/components/system/position/OperaPositionWindow.vue b/company_admin/src/components/system/position/OperaPositionWindow.vue
similarity index 100%
rename from admin/src/components/system/position/OperaPositionWindow.vue
rename to company_admin/src/components/system/position/OperaPositionWindow.vue
diff --git a/admin/src/components/system/position/PositionUserWindow.vue b/company_admin/src/components/system/position/PositionUserWindow.vue
similarity index 100%
rename from admin/src/components/system/position/PositionUserWindow.vue
rename to company_admin/src/components/system/position/PositionUserWindow.vue
diff --git a/admin/src/components/system/role/MenuConfigWindow.vue b/company_admin/src/components/system/role/MenuConfigWindow.vue
similarity index 100%
rename from admin/src/components/system/role/MenuConfigWindow.vue
rename to company_admin/src/components/system/role/MenuConfigWindow.vue
diff --git a/admin/src/components/system/role/OperaRoleWindow.vue b/company_admin/src/components/system/role/OperaRoleWindow.vue
similarity index 100%
rename from admin/src/components/system/role/OperaRoleWindow.vue
rename to company_admin/src/components/system/role/OperaRoleWindow.vue
diff --git a/admin/src/components/system/role/PermissionConfigWindow.vue b/company_admin/src/components/system/role/PermissionConfigWindow.vue
similarity index 100%
rename from admin/src/components/system/role/PermissionConfigWindow.vue
rename to company_admin/src/components/system/role/PermissionConfigWindow.vue
diff --git a/admin/src/components/system/role/RoleSelect.vue b/company_admin/src/components/system/role/RoleSelect.vue
similarity index 100%
rename from admin/src/components/system/role/RoleSelect.vue
rename to company_admin/src/components/system/role/RoleSelect.vue
diff --git a/admin/src/components/system/user/OperaUserWindow.vue b/company_admin/src/components/system/user/OperaUserWindow.vue
similarity index 100%
rename from admin/src/components/system/user/OperaUserWindow.vue
rename to company_admin/src/components/system/user/OperaUserWindow.vue
diff --git a/admin/src/components/system/user/ResetPwdWindow.vue b/company_admin/src/components/system/user/ResetPwdWindow.vue
similarity index 100%
rename from admin/src/components/system/user/ResetPwdWindow.vue
rename to company_admin/src/components/system/user/ResetPwdWindow.vue
diff --git a/admin/src/components/system/user/RoleConfigWindow.vue b/company_admin/src/components/system/user/RoleConfigWindow.vue
similarity index 100%
rename from admin/src/components/system/user/RoleConfigWindow.vue
rename to company_admin/src/components/system/user/RoleConfigWindow.vue
diff --git a/admin/src/directives/index.js b/company_admin/src/directives/index.js
similarity index 100%
rename from admin/src/directives/index.js
rename to company_admin/src/directives/index.js
diff --git a/admin/src/directives/v-permissions.js b/company_admin/src/directives/v-permissions.js
similarity index 100%
rename from admin/src/directives/v-permissions.js
rename to company_admin/src/directives/v-permissions.js
diff --git a/admin/src/directives/v-roles.js b/company_admin/src/directives/v-roles.js
similarity index 100%
rename from admin/src/directives/v-roles.js
rename to company_admin/src/directives/v-roles.js
diff --git a/admin/src/directives/v-trim.js b/company_admin/src/directives/v-trim.js
similarity index 100%
rename from admin/src/directives/v-trim.js
rename to company_admin/src/directives/v-trim.js
diff --git a/admin/src/filters/index.js b/company_admin/src/filters/index.js
similarity index 100%
rename from admin/src/filters/index.js
rename to company_admin/src/filters/index.js
diff --git a/admin/src/layouts/AppLayout.vue b/company_admin/src/layouts/AppLayout.vue
similarity index 100%
rename from admin/src/layouts/AppLayout.vue
rename to company_admin/src/layouts/AppLayout.vue
diff --git a/admin/src/layouts/TableLayout.vue b/company_admin/src/layouts/TableLayout.vue
similarity index 100%
rename from admin/src/layouts/TableLayout.vue
rename to company_admin/src/layouts/TableLayout.vue
diff --git a/admin/src/main.js b/company_admin/src/main.js
similarity index 100%
rename from admin/src/main.js
rename to company_admin/src/main.js
diff --git a/admin/src/plugins/cache.js b/company_admin/src/plugins/cache.js
similarity index 100%
rename from admin/src/plugins/cache.js
rename to company_admin/src/plugins/cache.js
diff --git a/admin/src/plugins/consts.js b/company_admin/src/plugins/consts.js
similarity index 100%
rename from admin/src/plugins/consts.js
rename to company_admin/src/plugins/consts.js
diff --git a/admin/src/plugins/download.js b/company_admin/src/plugins/download.js
similarity index 100%
rename from admin/src/plugins/download.js
rename to company_admin/src/plugins/download.js
diff --git a/admin/src/plugins/index.js b/company_admin/src/plugins/index.js
similarity index 100%
rename from admin/src/plugins/index.js
rename to company_admin/src/plugins/index.js
diff --git a/admin/src/plugins/message.js b/company_admin/src/plugins/message.js
similarity index 100%
rename from admin/src/plugins/message.js
rename to company_admin/src/plugins/message.js
diff --git a/admin/src/plugins/messagebox.js b/company_admin/src/plugins/messagebox.js
similarity index 100%
rename from admin/src/plugins/messagebox.js
rename to company_admin/src/plugins/messagebox.js
diff --git a/admin/src/router/index.js b/company_admin/src/router/index.js
similarity index 100%
rename from admin/src/router/index.js
rename to company_admin/src/router/index.js
diff --git a/admin/src/store/index.js b/company_admin/src/store/index.js
similarity index 100%
rename from admin/src/store/index.js
rename to company_admin/src/store/index.js
diff --git a/admin/src/utils/form.js b/company_admin/src/utils/form.js
similarity index 100%
rename from admin/src/utils/form.js
rename to company_admin/src/utils/form.js
diff --git a/admin/src/utils/icons.js b/company_admin/src/utils/icons.js
similarity index 100%
rename from admin/src/utils/icons.js
rename to company_admin/src/utils/icons.js
diff --git a/admin/src/utils/request.js b/company_admin/src/utils/request.js
similarity index 100%
rename from admin/src/utils/request.js
rename to company_admin/src/utils/request.js
diff --git a/admin/src/utils/util.js b/company_admin/src/utils/util.js
similarity index 100%
rename from admin/src/utils/util.js
rename to company_admin/src/utils/util.js
diff --git a/admin/src/views/business/brand.vue b/company_admin/src/views/business/brand.vue
similarity index 100%
rename from admin/src/views/business/brand.vue
rename to company_admin/src/views/business/brand.vue
diff --git a/admin/src/views/business/category.vue b/company_admin/src/views/business/category.vue
similarity index 100%
rename from admin/src/views/business/category.vue
rename to company_admin/src/views/business/category.vue
diff --git a/admin/src/views/business/goods.vue b/company_admin/src/views/business/goods.vue
similarity index 100%
rename from admin/src/views/business/goods.vue
rename to company_admin/src/views/business/goods.vue
diff --git a/admin/src/views/index.vue b/company_admin/src/views/index.vue
similarity index 100%
rename from admin/src/views/index.vue
rename to company_admin/src/views/index.vue
diff --git a/admin/src/views/login.vue b/company_admin/src/views/login.vue
similarity index 100%
rename from admin/src/views/login.vue
rename to company_admin/src/views/login.vue
diff --git a/admin/src/views/no-permissions.vue b/company_admin/src/views/no-permissions.vue
similarity index 100%
rename from admin/src/views/no-permissions.vue
rename to company_admin/src/views/no-permissions.vue
diff --git a/admin/src/views/not-found.vue b/company_admin/src/views/not-found.vue
similarity index 100%
rename from admin/src/views/not-found.vue
rename to company_admin/src/views/not-found.vue
diff --git a/admin/src/views/system/data-permission.vue b/company_admin/src/views/system/data-permission.vue
similarity index 100%
rename from admin/src/views/system/data-permission.vue
rename to company_admin/src/views/system/data-permission.vue
diff --git a/admin/src/views/system/department.vue b/company_admin/src/views/system/department.vue
similarity index 100%
rename from admin/src/views/system/department.vue
rename to company_admin/src/views/system/department.vue
diff --git a/admin/src/views/system/dict.vue b/company_admin/src/views/system/dict.vue
similarity index 100%
rename from admin/src/views/system/dict.vue
rename to company_admin/src/views/system/dict.vue
diff --git a/admin/src/views/system/loginLog.vue b/company_admin/src/views/system/loginLog.vue
similarity index 100%
rename from admin/src/views/system/loginLog.vue
rename to company_admin/src/views/system/loginLog.vue
diff --git a/admin/src/views/system/menu.vue b/company_admin/src/views/system/menu.vue
similarity index 100%
rename from admin/src/views/system/menu.vue
rename to company_admin/src/views/system/menu.vue
diff --git a/admin/src/views/system/monitor.vue b/company_admin/src/views/system/monitor.vue
similarity index 100%
rename from admin/src/views/system/monitor.vue
rename to company_admin/src/views/system/monitor.vue
diff --git a/admin/src/views/system/permission.vue b/company_admin/src/views/system/permission.vue
similarity index 100%
rename from admin/src/views/system/permission.vue
rename to company_admin/src/views/system/permission.vue
diff --git a/admin/src/views/system/position.vue b/company_admin/src/views/system/position.vue
similarity index 100%
rename from admin/src/views/system/position.vue
rename to company_admin/src/views/system/position.vue
diff --git a/admin/src/views/system/role.vue b/company_admin/src/views/system/role.vue
similarity index 100%
rename from admin/src/views/system/role.vue
rename to company_admin/src/views/system/role.vue
diff --git a/admin/src/views/system/traceLog.vue b/company_admin/src/views/system/traceLog.vue
similarity index 100%
rename from admin/src/views/system/traceLog.vue
rename to company_admin/src/views/system/traceLog.vue
diff --git a/admin/src/views/system/user.vue b/company_admin/src/views/system/user.vue
similarity index 100%
rename from admin/src/views/system/user.vue
rename to company_admin/src/views/system/user.vue
diff --git a/admin/vue.config.js b/company_admin/vue.config.js
similarity index 100%
rename from admin/vue.config.js
rename to company_admin/vue.config.js
diff --git a/log/eva.log b/log/eva.log
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/log/eva.log
diff --git a/server/company/pom.xml b/server/company/pom.xml
new file mode 100644
index 0000000..d9e5f21
--- /dev/null
+++ b/server/company/pom.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.doumee</groupId>
+        <artifactId>preselect</artifactId>
+        <version>1.0.0-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>company</artifactId>
+
+    <properties>
+        <maven.compiler.source>8</maven.compiler.source>
+        <maven.compiler.target>8</maven.compiler.target>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>com.doumee</groupId>
+            <artifactId>service</artifactId>
+            <version>1.0.0-SNAPSHOT</version>
+        </dependency>
+    </dependencies>
+</project>
\ No newline at end of file
diff --git a/server/company/src/main/java/com/doumee/CompanyApplication.java b/server/company/src/main/java/com/doumee/CompanyApplication.java
new file mode 100644
index 0000000..884105a
--- /dev/null
+++ b/server/company/src/main/java/com/doumee/CompanyApplication.java
@@ -0,0 +1,23 @@
+package com.doumee;
+
+import lombok.extern.slf4j.Slf4j;
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.ApplicationContext;
+
+/**
+ * 鍚姩绫�
+ * @author Eva.Caesar Liu
+ * @date 2023/02/14 11:14
+ */
+@Slf4j
+@SpringBootApplication
+@MapperScan("com.doumee.dao")
+public class CompanyApplication {
+
+    public static void main(String[] args) {
+        ApplicationContext context = SpringApplication.run(CompanyApplication.class);
+        context.getEnvironment();
+    }
+}
diff --git a/server/company/src/main/java/com/doumee/Main.java b/server/company/src/main/java/com/doumee/Main.java
new file mode 100644
index 0000000..ada0d0d
--- /dev/null
+++ b/server/company/src/main/java/com/doumee/Main.java
@@ -0,0 +1,7 @@
+package com.doumee;
+
+public class Main {
+    public static void main(String[] args) {
+        System.out.println("Hello world!");
+    }
+}
\ No newline at end of file
diff --git a/server/src/main/java/com/doumee/api/BaseController.java b/server/company/src/main/java/com/doumee/api/BaseController.java
similarity index 100%
rename from server/src/main/java/com/doumee/api/BaseController.java
rename to server/company/src/main/java/com/doumee/api/BaseController.java
diff --git a/server/company/src/main/java/com/doumee/api/business/BrandController.java b/server/company/src/main/java/com/doumee/api/business/BrandController.java
new file mode 100644
index 0000000..c10e7ad
--- /dev/null
+++ b/server/company/src/main/java/com/doumee/api/business/BrandController.java
@@ -0,0 +1,98 @@
+package com.doumee.api.business;
+
+import com.doumee.api.BaseController;
+import com.doumee.core.annotation.excel.ExcelExporter;
+import com.doumee.core.annotation.pr.PreventRepeat;
+import com.doumee.core.model.ApiResponse;
+import com.doumee.core.model.PageData;
+import com.doumee.core.model.PageWrap;
+import com.doumee.dao.business.model.Brand;
+import com.doumee.service.business.BrandService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author 姹熻箘韫�
+ * @date 2023/05/12 13:58
+ */
+@Api(tags = "鍝佺墝淇℃伅琛�")
+@RestController
+@RequestMapping("/business/brand")
+public class BrandController extends BaseController {
+
+    @Autowired
+    private BrandService brandService;
+
+    @PreventRepeat
+    @ApiOperation("鏂板缓")
+    @PostMapping("/create")
+    @RequiresPermissions("business:brand:create")
+    public ApiResponse create(@RequestBody Brand brand) {
+        return ApiResponse.success(brandService.create(brand));
+    }
+
+    @ApiOperation("鏍规嵁ID鍒犻櫎")
+    @GetMapping("/delete/{id}")
+    @RequiresPermissions("business:brand:delete")
+    public ApiResponse deleteById(@PathVariable Integer id) {
+        brandService.deleteById(id);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鎵归噺鍒犻櫎")
+    @GetMapping("/delete/batch")
+    @RequiresPermissions("business:brand:delete")
+    public ApiResponse deleteByIdInBatch(@RequestParam String ids) {
+        String [] idArray = ids.split(",");
+        List<Integer> idList = new ArrayList<>();
+        for (String id : idArray) {
+            idList.add(Integer.valueOf(id));
+        }
+        brandService.deleteByIdInBatch(idList);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鏍规嵁ID淇敼")
+    @PostMapping("/updateById")
+    @RequiresPermissions("business:brand:update")
+    public ApiResponse updateById(@RequestBody Brand brand) {
+        brandService.updateById(brand);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鍒嗛〉鏌ヨ")
+    @PostMapping("/page")
+    @RequiresPermissions("business:brand:query")
+    public ApiResponse<PageData<Brand>> findPage (@RequestBody PageWrap<Brand> pageWrap) {
+        return ApiResponse.success(brandService.findPage(pageWrap));
+    }
+
+    @ApiOperation("瀵煎嚭Excel")
+    @PostMapping("/exportExcel")
+    @RequiresPermissions("business:brand:exportExcel")
+    public void exportExcel (@RequestBody PageWrap<Brand> pageWrap, HttpServletResponse response) {
+        ExcelExporter.build(Brand.class).export(brandService.findPage(pageWrap).getRecords(), "鍝佺墝淇℃伅琛�", response);
+    }
+
+    @ApiOperation("鏍规嵁ID鏌ヨ")
+    @GetMapping("/{id}")
+    @RequiresPermissions("business:brand:query")
+    public ApiResponse findById(@PathVariable Integer id) {
+        return ApiResponse.success(brandService.findById(id));
+    }
+
+    @ApiOperation("鍒楄〃鏌ヨ")
+    @PostMapping("/list")
+    public ApiResponse<List<Brand>> findList (@RequestBody Brand brand) {
+        return ApiResponse.success(brandService.findList(brand));
+    }
+
+
+}
diff --git a/server/company/src/main/java/com/doumee/api/business/CateAttrController.java b/server/company/src/main/java/com/doumee/api/business/CateAttrController.java
new file mode 100644
index 0000000..41b7594
--- /dev/null
+++ b/server/company/src/main/java/com/doumee/api/business/CateAttrController.java
@@ -0,0 +1,100 @@
+package com.doumee.api.business;
+
+import com.doumee.api.BaseController;
+import com.doumee.core.annotation.excel.ExcelExporter;
+import com.doumee.core.annotation.pr.PreventRepeat;
+import com.doumee.core.model.ApiResponse;
+import com.doumee.core.model.PageData;
+import com.doumee.core.model.PageWrap;
+import com.doumee.dao.business.model.CateAttr;
+import com.doumee.service.business.CateAttrService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author 姹熻箘韫�
+ * @date 2023/05/12 13:58
+ */
+@Api(tags = "鍝佺被灞炴�ц鏍煎�间俊鎭〃")
+@RestController
+@RequestMapping("/business/cateAttr")
+public class CateAttrController extends BaseController {
+
+    @Autowired
+    private CateAttrService cateAttrService;
+
+    @PreventRepeat
+    @ApiOperation("鏂板缓")
+    @PostMapping("/create")
+    @RequiresPermissions("business:cateattr:create")
+    public ApiResponse create(@RequestBody CateAttr cateAttr) {
+        return ApiResponse.success(cateAttrService.create(cateAttr));
+    }
+
+    @ApiOperation("鏍规嵁ID鍒犻櫎")
+    @GetMapping("/delete/{id}")
+    @RequiresPermissions("business:cateattr:delete")
+    public ApiResponse deleteById(@PathVariable Integer id) {
+        cateAttrService.deleteById(id);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鎵归噺鍒犻櫎")
+    @GetMapping("/delete/batch")
+    @RequiresPermissions("business:cateattr:delete")
+    public ApiResponse deleteByIdInBatch(@RequestParam String ids) {
+        String [] idArray = ids.split(",");
+        List<Integer> idList = new ArrayList<>();
+        for (String id : idArray) {
+            idList.add(Integer.valueOf(id));
+        }
+        cateAttrService.deleteByIdInBatch(idList);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鏍规嵁ID淇敼")
+    @PostMapping("/updateById")
+    @RequiresPermissions("business:cateattr:update")
+    public ApiResponse updateById(@RequestBody CateAttr cateAttr) {
+        cateAttrService.updateById(cateAttr);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鍒嗛〉鏌ヨ")
+    @PostMapping("/page")
+    @RequiresPermissions("business:cateattr:query")
+    public ApiResponse<PageData<CateAttr>> findPage (@RequestBody PageWrap<CateAttr> pageWrap) {
+        return ApiResponse.success(cateAttrService.findPage(pageWrap));
+    }
+
+    @ApiOperation("瀵煎嚭Excel")
+    @PostMapping("/exportExcel")
+    @RequiresPermissions("business:cateattr:exportExcel")
+    public void exportExcel (@RequestBody PageWrap<CateAttr> pageWrap, HttpServletResponse response) {
+        ExcelExporter.build(CateAttr.class).export(cateAttrService.findPage(pageWrap).getRecords(), "鍝佺被灞炴�ц鏍煎�间俊鎭〃", response);
+    }
+
+    @ApiOperation("鏍规嵁ID鏌ヨ")
+    @GetMapping("/{id}")
+    @RequiresPermissions("business:cateattr:query")
+    public ApiResponse findById(@PathVariable Integer id) {
+        return ApiResponse.success(cateAttrService.findById(id));
+    }
+
+
+
+    @ApiOperation("鍒楄〃鏌ヨ")
+    @PostMapping("/list")
+    public ApiResponse<List<CateAttr>> findList (@RequestBody CateAttr cateAttr) {
+        return ApiResponse.success(cateAttrService.findList(cateAttr));
+    }
+
+
+}
diff --git a/server/company/src/main/java/com/doumee/api/business/CateBudgetController.java b/server/company/src/main/java/com/doumee/api/business/CateBudgetController.java
new file mode 100644
index 0000000..d70e772
--- /dev/null
+++ b/server/company/src/main/java/com/doumee/api/business/CateBudgetController.java
@@ -0,0 +1,65 @@
+package com.doumee.api.business;
+
+import com.doumee.api.BaseController;
+import com.doumee.core.annotation.pr.PreventRepeat;
+import com.doumee.core.model.ApiResponse;
+import com.doumee.core.model.PageData;
+import com.doumee.core.model.PageWrap;
+import com.doumee.dao.business.model.CateBudget;
+import com.doumee.service.business.CateBudgetService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * @author 姹熻箘韫�
+ * @since 2023/05/15 17:09
+ */
+@Api(tags = "鍝佺被浠锋牸鍖洪棿琛�")
+@RestController
+@RequestMapping("/business/cateBudget")
+public class CateBudgetController extends BaseController {
+
+    @Autowired
+    private CateBudgetService cateBudgetService;
+
+    @PreventRepeat
+    @ApiOperation("鏂板缓")
+    @PostMapping("/create")
+    @RequiresPermissions("business:catebudget:create")
+    public ApiResponse create(@RequestBody CateBudget cateBudget) {
+        return ApiResponse.success(cateBudgetService.create(cateBudget));
+    }
+
+    @ApiOperation("鏍规嵁ID鍒犻櫎")
+    @GetMapping("/delete/{id}")
+    @RequiresPermissions("business:catebudget:delete")
+    public ApiResponse deleteById(@PathVariable Integer id) {
+        cateBudgetService.deleteById(id);
+        return ApiResponse.success(null);
+    }
+    @ApiOperation("鏍规嵁ID淇敼")
+    @PostMapping("/updateById")
+    @RequiresPermissions("business:catebudget:update")
+    public ApiResponse updateById(@RequestBody CateBudget cateBudget) {
+        cateBudgetService.updateById(cateBudget);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鍒嗛〉鏌ヨ")
+    @PostMapping("/page")
+    @RequiresPermissions("business:catebudget:query")
+    public ApiResponse<PageData<CateBudget>> findPage (@RequestBody PageWrap<CateBudget> pageWrap) {
+        return ApiResponse.success(cateBudgetService.findPage(pageWrap));
+    }
+
+
+    @ApiOperation("鏍规嵁ID鏌ヨ")
+    @GetMapping("/{id}")
+    @RequiresPermissions("business:catebudget:query")
+    public ApiResponse findById(@PathVariable Integer id) {
+        return ApiResponse.success(cateBudgetService.findById(id));
+    }
+}
diff --git a/server/company/src/main/java/com/doumee/api/business/CateParamController.java b/server/company/src/main/java/com/doumee/api/business/CateParamController.java
new file mode 100644
index 0000000..5b23d31
--- /dev/null
+++ b/server/company/src/main/java/com/doumee/api/business/CateParamController.java
@@ -0,0 +1,90 @@
+package com.doumee.api.business;
+
+import com.doumee.api.BaseController;
+import com.doumee.core.annotation.excel.ExcelExporter;
+import com.doumee.core.annotation.pr.PreventRepeat;
+import com.doumee.core.model.ApiResponse;
+import com.doumee.core.model.PageData;
+import com.doumee.core.model.PageWrap;
+import com.doumee.dao.business.model.CateParam;
+import com.doumee.service.business.CateParamService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author 姹熻箘韫�
+ * @date 2023/05/12 13:58
+ */
+@Api(tags = "鍝佺被鍙傛暟淇℃伅琛�")
+@RestController
+@RequestMapping("/business/cateParam")
+public class CateParamController extends BaseController {
+
+    @Autowired
+    private CateParamService cateParamService;
+
+    @PreventRepeat
+    @ApiOperation("鏂板缓")
+    @PostMapping("/create")
+    @RequiresPermissions("business:cateparam:create")
+    public ApiResponse create(@RequestBody CateParam cateParam) {
+        return ApiResponse.success(cateParamService.create(cateParam));
+    }
+
+    @ApiOperation("鏍规嵁ID鍒犻櫎")
+    @GetMapping("/delete/{id}")
+    @RequiresPermissions("business:cateparam:delete")
+    public ApiResponse deleteById(@PathVariable Integer id) {
+        cateParamService.deleteById(id);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鎵归噺鍒犻櫎")
+    @GetMapping("/delete/batch")
+    @RequiresPermissions("business:cateparam:delete")
+    public ApiResponse deleteByIdInBatch(@RequestParam String ids) {
+        String [] idArray = ids.split(",");
+        List<Integer> idList = new ArrayList<>();
+        for (String id : idArray) {
+            idList.add(Integer.valueOf(id));
+        }
+        cateParamService.deleteByIdInBatch(idList);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鏍规嵁ID淇敼")
+    @PostMapping("/updateById")
+    @RequiresPermissions("business:cateparam:update")
+    public ApiResponse updateById(@RequestBody CateParam cateParam) {
+        cateParamService.updateById(cateParam);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鍒嗛〉鏌ヨ")
+    @PostMapping("/page")
+    @RequiresPermissions("business:cateparam:query")
+    public ApiResponse<PageData<CateParam>> findPage (@RequestBody PageWrap<CateParam> pageWrap) {
+        return ApiResponse.success(cateParamService.findPage(pageWrap));
+    }
+
+    @ApiOperation("瀵煎嚭Excel")
+    @PostMapping("/exportExcel")
+    @RequiresPermissions("business:cateparam:exportExcel")
+    public void exportExcel (@RequestBody PageWrap<CateParam> pageWrap, HttpServletResponse response) {
+        ExcelExporter.build(CateParam.class).export(cateParamService.findPage(pageWrap).getRecords(), "鍝佺被鍙傛暟淇℃伅琛�", response);
+    }
+
+    @ApiOperation("鏍规嵁ID鏌ヨ")
+    @GetMapping("/{id}")
+    @RequiresPermissions("business:cateparam:query")
+    public ApiResponse findById(@PathVariable Integer id) {
+        return ApiResponse.success(cateParamService.findById(id));
+    }
+}
diff --git a/server/company/src/main/java/com/doumee/api/business/CategoryController.java b/server/company/src/main/java/com/doumee/api/business/CategoryController.java
new file mode 100644
index 0000000..a666280
--- /dev/null
+++ b/server/company/src/main/java/com/doumee/api/business/CategoryController.java
@@ -0,0 +1,111 @@
+package com.doumee.api.business;
+
+import com.doumee.api.BaseController;
+import com.doumee.core.annotation.excel.ExcelExporter;
+import com.doumee.core.annotation.pr.PreventRepeat;
+import com.doumee.core.model.ApiResponse;
+import com.doumee.core.model.PageData;
+import com.doumee.core.model.PageWrap;
+import com.doumee.dao.business.model.Category;
+import com.doumee.service.business.CategoryService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author 姹熻箘韫�
+ * @date 2023/05/12 13:58
+ */
+@Api(tags = "鍝佺被淇℃伅琛�")
+@RestController
+@RequestMapping("/business/category")
+public class CategoryController extends BaseController {
+
+    @Autowired
+    private CategoryService categoryService;
+
+    @PreventRepeat
+    @ApiOperation("鏂板缓")
+    @PostMapping("/create")
+    @RequiresPermissions("business:category:create")
+    public ApiResponse create(@RequestBody Category category) {
+        return ApiResponse.success(categoryService.create(category));
+    }
+
+    @ApiOperation("鏍规嵁ID鍒犻櫎")
+    @GetMapping("/delete/{id}")
+    @RequiresPermissions("business:category:delete")
+    public ApiResponse deleteById(@PathVariable Integer id) {
+        categoryService.deleteById(id);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鎵归噺鍒犻櫎")
+    @GetMapping("/delete/batch")
+    @RequiresPermissions("business:category:delete")
+    public ApiResponse deleteByIdInBatch(@RequestParam String ids) {
+        String [] idArray = ids.split(",");
+        List<Integer> idList = new ArrayList<>();
+        for (String id : idArray) {
+            idList.add(Integer.valueOf(id));
+        }
+        categoryService.deleteByIdInBatch(idList);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鏍规嵁ID淇敼")
+    @PostMapping("/updateById")
+    @RequiresPermissions("business:category:update")
+    public ApiResponse updateById(@RequestBody Category category) {
+        categoryService.updateById(category);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鍒嗛〉鏌ヨ")
+    @PostMapping("/page")
+    @RequiresPermissions("business:category:query")
+    public ApiResponse<PageData<Category>> findPage (@RequestBody PageWrap<Category> pageWrap) {
+        return ApiResponse.success(categoryService.findPage(pageWrap));
+    }
+
+    @ApiOperation("瀵煎嚭Excel")
+    @PostMapping("/exportExcel")
+    @RequiresPermissions("business:category:exportExcel")
+    public void exportExcel (@RequestBody PageWrap<Category> pageWrap, HttpServletResponse response) {
+        ExcelExporter.build(Category.class).export(categoryService.findPage(pageWrap).getRecords(), "鍝佺被淇℃伅琛�", response);
+    }
+
+    @ApiOperation("鏍规嵁ID鏌ヨ")
+    @GetMapping("/{id}")
+    @RequiresPermissions("business:category:query")
+    public ApiResponse findById(@PathVariable Integer id) {
+        return ApiResponse.success(categoryService.findById(id));
+    }
+
+    @ApiOperation("淇敼鐘舵��")
+    @PostMapping("/updateDisableById")
+    @RequiresPermissions("business:category:update")
+    public ApiResponse updateDisableById(@RequestBody Category category) {
+        categoryService.updateDisableById(category);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鍒楄〃 - H5")
+    @PostMapping("/list")
+    public ApiResponse<List<Category>> findList (@RequestBody Category category) {
+        return ApiResponse.success(categoryService.findList(category));
+    }
+
+    @ApiOperation("鍒楄〃 - 鍟嗗搧閫夋嫨")
+    @GetMapping("/findListForGoodsId")
+    public ApiResponse<List<Category>> findListForGoodsId (Integer goodsId) {
+        return ApiResponse.success(categoryService.findListForGoods(goodsId));
+    }
+
+}
diff --git a/server/company/src/main/java/com/doumee/api/business/GoodsController.java b/server/company/src/main/java/com/doumee/api/business/GoodsController.java
new file mode 100644
index 0000000..b6fdd44
--- /dev/null
+++ b/server/company/src/main/java/com/doumee/api/business/GoodsController.java
@@ -0,0 +1,144 @@
+package com.doumee.api.business;
+
+import com.doumee.api.BaseController;
+import com.doumee.core.annotation.excel.ExcelExporter;
+import com.doumee.core.annotation.pr.PreventRepeat;
+import com.doumee.core.model.PageData;
+import com.doumee.core.model.PageWrap;
+import com.doumee.dao.business.model.Goods;
+import com.doumee.dao.business.model.dto.GoodsRequest;
+import com.doumee.service.business.GoodsService;
+import io.swagger.annotations.*;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+
+import com.doumee.core.model.ApiResponse;
+/**
+ * @author 姹熻箘韫�
+ * @date 2023/05/12 13:58
+ */
+@Api(tags = "鍟嗗搧淇℃伅琛�")
+@RestController
+@RequestMapping("/business/goods")
+public class GoodsController extends BaseController {
+
+    @Autowired
+    private GoodsService goodsService;
+
+    @PreventRepeat
+    @ApiOperation("鏂板缓")
+    @PostMapping("/create")
+    @RequiresPermissions("business:goods:create")
+    public ApiResponse create(@RequestBody Goods goods) {
+        return ApiResponse.success(goodsService.create(goods));
+    }
+
+    @ApiOperation("鏍规嵁ID鍒犻櫎")
+    @GetMapping("/delete/{id}")
+    @RequiresPermissions("business:goods:delete")
+    public ApiResponse deleteById(@PathVariable Integer id) {
+        goodsService.deleteById(id);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鎵归噺鍒犻櫎")
+    @GetMapping("/delete/batch")
+    @RequiresPermissions("business:goods:delete")
+    public ApiResponse deleteByIdInBatch(@RequestParam String ids) {
+        String [] idArray = ids.split(",");
+        List<Integer> idList = new ArrayList<>();
+        for (String id : idArray) {
+            idList.add(Integer.valueOf(id));
+        }
+        goodsService.deleteByIdInBatch(idList);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鏍规嵁ID淇敼")
+    @PostMapping("/updateById")
+    @RequiresPermissions("business:goods:update")
+    public ApiResponse updateById(@RequestBody Goods goods) {
+        goodsService.updateById(goods);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鍒嗛〉鏌ヨ")
+    @PostMapping("/page")
+    @RequiresPermissions("business:goods:query")
+    public ApiResponse<PageData<Goods>> findPage (@RequestBody PageWrap<Goods> pageWrap) {
+        return ApiResponse.success(goodsService.findPage(pageWrap));
+    }
+
+    @ApiOperation("瀵煎嚭Excel")
+    @PostMapping("/exportExcel")
+    @RequiresPermissions("business:goods:exportExcel")
+    public void exportExcel (@RequestBody PageWrap<Goods> pageWrap, HttpServletResponse response) {
+        ExcelExporter.build(Goods.class).export(goodsService.findPage(pageWrap).getRecords(), "鍟嗗搧淇℃伅琛�", response);
+    }
+
+    @ApiOperation("鏍规嵁ID鏌ヨ")
+    @GetMapping("/{id}")
+    @RequiresPermissions("business:goods:query")
+    public ApiResponse findById(@PathVariable Integer id) {
+        return ApiResponse.success(goodsService.findById(id));
+    }
+
+    @ApiOperation("瀵煎叆妯℃澘")
+    @PostMapping("/importExcel")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "file", value = "file", required = true, paramType = "query", dataType = "file", dataTypeClass = File.class),
+    })
+//    @RequiresPermissions("business:goods:create")
+    public ApiResponse<Integer> importExcel (@ApiParam(value = "file") MultipartFile file) {
+        return ApiResponse.success(goodsService.importBatch(file));
+    }
+
+
+    @ApiOperation("淇敼鐘舵��")
+    @PostMapping("/updateDisableById")
+    @RequiresPermissions("business:category:update")
+    public ApiResponse updateDisableById(@RequestBody Goods goods) {
+        goodsService.updateDisableById(goods);
+        return ApiResponse.success(null);
+    }
+
+
+    @ApiOperation("鍒楄〃 - H5")
+    @PostMapping("/list")
+    public ApiResponse<List<Goods>> findList (@RequestBody Goods goods) {
+        return ApiResponse.success(goodsService.findList(goods));
+    }
+
+
+    @ApiOperation("鍟嗗搧鍒嗛〉鍒楄〃 - H5")
+    @PostMapping("/goodsPage")
+    public ApiResponse<PageData<Goods>> goodsPage(@RequestBody PageWrap<GoodsRequest> pageWrap) {
+        return ApiResponse.success(goodsService.getGoodsPage(pageWrap));
+    }
+
+    @ApiOperation("鍒楄〃鏌ヨ - H5")
+    @PostMapping("/listForH5")
+    public ApiResponse<List<Goods>> listForH5 (@RequestBody GoodsRequest goodsRequest) {
+        return ApiResponse.success(goodsService.findListForH5(goodsRequest));
+    }
+
+    @ApiOperation("鑾峰彇H5棣栭〉鍥�")
+    @PostMapping("/h5Image")
+    public ApiResponse<String> h5Image () {
+        return ApiResponse.success(goodsService.h5Image());
+    }
+
+    @ApiOperation("瀵煎嚭瀵煎叆妯℃澘")
+    @PostMapping("/export")
+    public void export (HttpServletRequest request, HttpServletResponse response) throws Exception  {
+        goodsService.export(request,response);
+    }
+}
diff --git a/server/company/src/main/java/com/doumee/api/business/GoodsParamController.java b/server/company/src/main/java/com/doumee/api/business/GoodsParamController.java
new file mode 100644
index 0000000..70242f8
--- /dev/null
+++ b/server/company/src/main/java/com/doumee/api/business/GoodsParamController.java
@@ -0,0 +1,90 @@
+package com.doumee.api.business;
+
+import com.doumee.api.BaseController;
+import com.doumee.core.annotation.excel.ExcelExporter;
+import com.doumee.core.annotation.pr.PreventRepeat;
+import com.doumee.core.model.ApiResponse;
+import com.doumee.core.model.PageData;
+import com.doumee.core.model.PageWrap;
+import com.doumee.dao.business.model.GoodsParam;
+import com.doumee.service.business.GoodsParamService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author 姹熻箘韫�
+ * @date 2023/05/12 13:58
+ */
+@Api(tags = "鍟嗗搧鍙傛暟閰嶇疆琛�")
+@RestController
+@RequestMapping("/business/goodsParam")
+public class GoodsParamController extends BaseController {
+
+    @Autowired
+    private GoodsParamService goodsParamService;
+
+    @PreventRepeat
+    @ApiOperation("鏂板缓")
+    @PostMapping("/create")
+    @RequiresPermissions("business:goodsparam:create")
+    public ApiResponse create(@RequestBody GoodsParam goodsParam) {
+        return ApiResponse.success(goodsParamService.create(goodsParam));
+    }
+
+    @ApiOperation("鏍规嵁ID鍒犻櫎")
+    @GetMapping("/delete/{id}")
+    @RequiresPermissions("business:goodsparam:delete")
+    public ApiResponse deleteById(@PathVariable Integer id) {
+        goodsParamService.deleteById(id);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鎵归噺鍒犻櫎")
+    @GetMapping("/delete/batch")
+    @RequiresPermissions("business:goodsparam:delete")
+    public ApiResponse deleteByIdInBatch(@RequestParam String ids) {
+        String [] idArray = ids.split(",");
+        List<Integer> idList = new ArrayList<>();
+        for (String id : idArray) {
+            idList.add(Integer.valueOf(id));
+        }
+        goodsParamService.deleteByIdInBatch(idList);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鏍规嵁ID淇敼")
+    @PostMapping("/updateById")
+    @RequiresPermissions("business:goodsparam:update")
+    public ApiResponse updateById(@RequestBody GoodsParam goodsParam) {
+        goodsParamService.updateById(goodsParam);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鍒嗛〉鏌ヨ")
+    @PostMapping("/page")
+    @RequiresPermissions("business:goodsparam:query")
+    public ApiResponse<PageData<GoodsParam>> findPage (@RequestBody PageWrap<GoodsParam> pageWrap) {
+        return ApiResponse.success(goodsParamService.findPage(pageWrap));
+    }
+
+    @ApiOperation("瀵煎嚭Excel")
+    @PostMapping("/exportExcel")
+    @RequiresPermissions("business:goodsparam:exportExcel")
+    public void exportExcel (@RequestBody PageWrap<GoodsParam> pageWrap, HttpServletResponse response) {
+        ExcelExporter.build(GoodsParam.class).export(goodsParamService.findPage(pageWrap).getRecords(), "鍟嗗搧鍙傛暟閰嶇疆琛�", response);
+    }
+
+    @ApiOperation("鏍规嵁ID鏌ヨ")
+    @GetMapping("/{id}")
+    @RequiresPermissions("business:goodsparam:query")
+    public ApiResponse findById(@PathVariable Integer id) {
+        return ApiResponse.success(goodsParamService.findById(id));
+    }
+}
diff --git a/server/company/src/main/java/com/doumee/api/business/MultifileController.java b/server/company/src/main/java/com/doumee/api/business/MultifileController.java
new file mode 100644
index 0000000..0fcfd2a
--- /dev/null
+++ b/server/company/src/main/java/com/doumee/api/business/MultifileController.java
@@ -0,0 +1,90 @@
+package com.doumee.api.business;
+
+import com.doumee.api.BaseController;
+import com.doumee.core.annotation.excel.ExcelExporter;
+import com.doumee.core.annotation.pr.PreventRepeat;
+import com.doumee.core.model.ApiResponse;
+import com.doumee.core.model.PageData;
+import com.doumee.core.model.PageWrap;
+import com.doumee.dao.business.model.Multifile;
+import com.doumee.service.business.MultifileService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author 姹熻箘韫�
+ * @date 2023/05/12 13:58
+ */
+@Api(tags = "闄勪欢淇℃伅琛�")
+@RestController
+@RequestMapping("/business/multifile")
+public class MultifileController extends BaseController {
+
+    @Autowired
+    private MultifileService multifileService;
+
+    @PreventRepeat
+    @ApiOperation("鏂板缓")
+    @PostMapping("/create")
+    @RequiresPermissions("business:multifile:create")
+    public ApiResponse create(@RequestBody Multifile multifile) {
+        return ApiResponse.success(multifileService.create(multifile));
+    }
+
+    @ApiOperation("鏍规嵁ID鍒犻櫎")
+    @GetMapping("/delete/{id}")
+    @RequiresPermissions("business:multifile:delete")
+    public ApiResponse deleteById(@PathVariable Integer id) {
+        multifileService.deleteById(id);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鎵归噺鍒犻櫎")
+    @GetMapping("/delete/batch")
+    @RequiresPermissions("business:multifile:delete")
+    public ApiResponse deleteByIdInBatch(@RequestParam String ids) {
+        String [] idArray = ids.split(",");
+        List<Integer> idList = new ArrayList<>();
+        for (String id : idArray) {
+            idList.add(Integer.valueOf(id));
+        }
+        multifileService.deleteByIdInBatch(idList);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鏍规嵁ID淇敼")
+    @PostMapping("/updateById")
+    @RequiresPermissions("business:multifile:update")
+    public ApiResponse updateById(@RequestBody Multifile multifile) {
+        multifileService.updateById(multifile);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鍒嗛〉鏌ヨ")
+    @PostMapping("/page")
+    @RequiresPermissions("business:multifile:query")
+    public ApiResponse<PageData<Multifile>> findPage (@RequestBody PageWrap<Multifile> pageWrap) {
+        return ApiResponse.success(multifileService.findPage(pageWrap));
+    }
+
+    @ApiOperation("瀵煎嚭Excel")
+    @PostMapping("/exportExcel")
+    @RequiresPermissions("business:multifile:exportExcel")
+    public void exportExcel (@RequestBody PageWrap<Multifile> pageWrap, HttpServletResponse response) {
+        ExcelExporter.build(Multifile.class).export(multifileService.findPage(pageWrap).getRecords(), "闄勪欢淇℃伅琛�", response);
+    }
+
+    @ApiOperation("鏍规嵁ID鏌ヨ")
+    @GetMapping("/{id}")
+    @RequiresPermissions("business:multifile:query")
+    public ApiResponse findById(@PathVariable Integer id) {
+        return ApiResponse.success(multifileService.findById(id));
+    }
+}
diff --git a/server/src/main/java/com/doumee/api/common/CaptchaController.java b/server/company/src/main/java/com/doumee/api/common/CaptchaController.java
similarity index 100%
rename from server/src/main/java/com/doumee/api/common/CaptchaController.java
rename to server/company/src/main/java/com/doumee/api/common/CaptchaController.java
diff --git a/server/company/src/main/java/com/doumee/api/common/PublicController.java b/server/company/src/main/java/com/doumee/api/common/PublicController.java
new file mode 100644
index 0000000..ab7e6b6
--- /dev/null
+++ b/server/company/src/main/java/com/doumee/api/common/PublicController.java
@@ -0,0 +1,327 @@
+package com.doumee.api.common;
+
+import com.alibaba.fastjson.JSONObject;
+import com.doumee.api.BaseController;
+import com.doumee.biz.system.SystemDictDataBiz;
+import com.doumee.core.annotation.trace.Trace;
+import com.doumee.core.utils.Constants;
+import com.doumee.core.utils.DateUtil;
+import com.doumee.core.utils.aliyun.ALiYunUtil;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
+import org.springframework.web.multipart.commons.CommonsMultipartResolver;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.File;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.UUID;
+
+/**
+ * @author Eva.Caesar Liu
+ * @date 2023/02/14 11:14
+ */
+@Api(tags = "鍏叡鎺ュ彛")
+@Trace(exclude = true)
+@RestController
+@RequestMapping("/public")
+@Slf4j
+public class PublicController extends BaseController {
+
+
+    @Autowired
+    private SystemDictDataBiz systemDictDataBiz;
+
+
+    @ApiOperation(value = "涓婁紶", notes = "涓婁紶", httpMethod = "POST", position = 6)
+    @ApiImplicitParams({
+        @ApiImplicitParam(name = "folder", value = "鏂囦欢澶�", required = true, paramType = "query", dataType = "String", dataTypeClass = String.class),
+    })
+    @PostMapping(value = "/upload", headers = "content-type=multipart/form-data")
+    public void uploadMobile(String folder, HttpServletRequest request, HttpServletResponse response) throws Exception {
+        MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
+        upload(multipartRequest, response, folder + "/",
+            systemDictDataBiz.queryByCode(Constants.OSS,Constants.BUCKETNAME).getCode(),
+            systemDictDataBiz.queryByCode(Constants.OSS,Constants.ACCESS_ID).getCode(),
+            systemDictDataBiz.queryByCode(Constants.OSS,Constants.ACCESS_KEY).getCode(),
+            systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode(),
+            systemDictDataBiz.queryByCode(Constants.OSS,Constants.ENDPOINT).getCode());
+    }
+
+
+    @ApiOperation(value = "涓婁紶鍥剧墖", notes = "涓婁紶鍥剧墖", httpMethod = "POST", position = 6)
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "folder", value = "鏂囦欢澶�", required = true, paramType = "query", dataType = "String", dataTypeClass = String.class),
+    })
+    @PostMapping(value = "/uploadPicture", headers = "content-type=multipart/form-data")
+    public void uploadPicture(String folder, HttpServletRequest request, HttpServletResponse response) throws Exception {
+        MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
+        Iterator<String> fileNames = multipartRequest.getFileNames();
+        Map<String, Object> context = new HashMap<>();
+        while (fileNames.hasNext()){
+            MultipartFile file = multipartRequest.getFile(fileNames.next());
+            String fileName = file.getOriginalFilename();
+            String suffix = fileName.substring(fileName.lastIndexOf("."));
+            if ( !StringUtils.equalsIgnoreCase(suffix, ".jpg") || !StringUtils.equalsIgnoreCase(suffix, ".png")) {
+                context.put("code", 0);
+                context.put("message", "瀵逛笉璧凤紝鏂囦欢鏍煎紡涓婁紶鏈夎锛�");
+            }
+        }
+        upload(multipartRequest, response, folder + "/",
+                systemDictDataBiz.queryByCode(Constants.OSS,Constants.BUCKETNAME).getCode(),
+                systemDictDataBiz.queryByCode(Constants.OSS,Constants.ACCESS_ID).getCode(),
+                systemDictDataBiz.queryByCode(Constants.OSS,Constants.ACCESS_KEY).getCode(),
+                systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode(),
+                systemDictDataBiz.queryByCode(Constants.OSS,Constants.ENDPOINT).getCode());
+    }
+
+    public void upload(HttpServletRequest request, HttpServletResponse response, String folder, String bucketName,
+        String access_id, String access_key, String resourcePath, String endpoint) throws Exception {
+        response.setCharacterEncoding("UTF-8");
+        response.setContentType("text/html;charset=UTF-8");
+        Map<String, Object> context = new HashMap<>();
+        CommonsMultipartResolver multipartResovler = new CommonsMultipartResolver();
+        if (multipartResovler.isMultipart(request)) {
+            MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
+            Iterator<String> it = multipartRequest.getFileNames();
+            while (it.hasNext()) {
+                MultipartFile file = multipartRequest.getFile((String) it.next());// file
+                // multipartRequest.getFile((String)
+                // it.next());
+                if (file != null) {
+                    // 1銆佷笂浼犲埌鏈嶅姟鍣ㄤ复鏃舵枃浠跺す
+                    String uploadFileName = file.getOriginalFilename();
+                    String originname = uploadFileName;
+                    if (originname.lastIndexOf("/") >= 0) {
+                        originname = originname.substring(originname.lastIndexOf("/") + 1);
+                    }
+                    String nfix = "";// 鍚庣紑鍚�
+                    if (StringUtils.isNotBlank(uploadFileName)) {
+                        nfix = uploadFileName.substring(uploadFileName.lastIndexOf("."));
+                    }
+                    if (StringUtils.equalsIgnoreCase(nfix, ".exe")) {
+                        context.put("code", 4000);
+                        context.put("message", "瀵逛笉璧凤紝鏂囦欢鏍煎紡\".exe\"涓婁紶鏈夎锛�");
+                        return;
+                    }
+                    if (StringUtils.equalsIgnoreCase(nfix, ".dll")) {
+                        context.put("code", 4000);
+                        context.put("message", "瀵逛笉璧凤紝鏂囦欢鏍煎紡\".dll\"涓婁紶鏈夎锛�");
+                        return;
+                    }
+                    String nowDate = DateUtil.getNowShortDate();// 褰撳墠鏃堕棿锛堝勾鏈堟棩锛�
+                    String fileName = UUID.randomUUID().toString() + nfix;
+                    String tempFileName = nowDate + "/" + fileName;
+                    String key = folder + tempFileName;// 鏂囦欢鍚�
+                    ALiYunUtil obs = new ALiYunUtil(endpoint,access_id, access_key);
+                    if (obs.uploadOnlineObject(file.getInputStream(),bucketName, key,null)) {
+                        // 绉诲姩鎴愬姛,杩斿洖鏂囦欢鍚�
+                        // sendSuccessMessage(response, resourcePath+key);
+                        context.put("success", true);
+                        context.put("code", 200);
+                        context.put("errno",0);
+                        JSONObject fileJSON = new JSONObject();
+                        fileJSON.put("url", resourcePath + key);
+                        fileJSON.put("imgaddr", tempFileName);
+                        fileJSON.put("imgname", fileName);
+                        fileJSON.put("originname", originname);
+                        context.put("data",fileJSON);
+                        context.put("message","璇锋眰鎴愬姛");
+                        writerJson(response, context);
+                        return;
+                    } else {
+                        // 绉诲姩澶辫触
+                        context.put("code", 0);
+                        context.put("message", "涓婁紶澶辫触");
+                        writerJson(response, context);
+                        return;
+                    }
+                }
+
+            }
+        }
+        context.put("code", 0);
+        context.put("message", "涓婁紶澶辫触");
+        context.put("errno",0);
+        writerJson(response, context);
+        return;
+    }
+
+    public static void writerJson(HttpServletResponse response, Object object) {
+        response.setContentType("application/json");
+        writer(response, JSONObject.toJSONString(object));
+    }
+
+    private static void writer(HttpServletResponse response, String str) {
+        try {
+            StringBuffer result = new StringBuffer();
+            //璁剧疆椤甸潰涓嶇紦瀛�
+            response.setHeader("Pragma", "No-cache");
+            response.setHeader("Cache-Control", "no-cache");
+            response.setCharacterEncoding("UTF-8");
+            PrintWriter out = null;
+            out = response.getWriter();
+            out.print(str);
+            out.flush();
+            out.close();
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+    }
+
+
+
+    @ApiOperation(value = "涓婁紶", notes = "涓婁紶", httpMethod = "POST", position = 6)
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "folder", value = "鏂囦欢澶�", required = true, paramType = "query", dataType = "String", dataTypeClass = String.class),
+    })
+    @PostMapping(value = "/uploadLocal", headers = "content-type=multipart/form-data")
+    public void uploadLocal(String folder, HttpServletRequest request, HttpServletResponse response) throws Exception {
+        MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
+
+        // CommonsMultipartFile files = (CommonsMultipartFile) multipartRequest.getFile("filedata");
+        uploadFileLocal(multipartRequest,  folder+ "/", response,
+                systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.GOODS_IMG_DIR).getCode() ,
+                systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.FILE_DIR).getCode());
+
+    }
+
+    public void uploadFileLocal(HttpServletRequest request, String folder, HttpServletResponse response, String rootPath,String dir) throws Exception {
+        response.setCharacterEncoding("UTF-8");
+        response.setContentType("text/html;charset=UTF-8");
+        CommonsMultipartResolver multipartResovler = new CommonsMultipartResolver();
+        Map<String, Object> context = new HashMap<>();
+        if (multipartResovler.isMultipart(request)) {
+            MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
+            Iterator<String> it = multipartRequest.getFileNames();
+            while (it.hasNext()) {
+                MultipartFile file = multipartRequest.getFile((String) it.next());// file
+                // =
+                // (CommonsMultipartFile)
+                // multipartRequest.getFile((String)
+                // it.next());
+                if (file != null) {
+                    if (file.getSize() > 200 * 1024 * 1024L) {
+                        context.put("code", 4000);
+                        context.put("message", "涓婁紶鏂囦欢杩囧ぇ");
+                        return;
+                    }
+                    System.out.println(file.getOriginalFilename());
+                    if (file.getOriginalFilename() == null) {
+                        context.put("code", 4000);
+                        context.put("message", "鏂囦欢鍚嶄笉鍙负绌�");
+                        return;
+                    }
+                    /*
+                     * if(file.getOriginalFilename().contains(",")||file.getOriginalFilename().
+                     * contains(" ")){ sendFailureMessage(response,"鏂囦欢鍚嶇О鏈夎,涓嶅彲鍚湁閫楀彿绛夌壒娈婂瓧绗�"); }
+                     */
+
+                    String nowDate = DateUtil.getNowShortDate();
+                    folder += nowDate + "/";
+                    String strDirPath = rootPath + folder;
+                    File dirPath = new File(strDirPath);
+                    if (!dirPath.exists()) {
+                        dirPath.mkdirs();
+                    }
+                    String uploadFileName = file.getOriginalFilename();
+                    String x = UUID.randomUUID().toString().replace("-", "")
+                            + uploadFileName.substring(uploadFileName.lastIndexOf("."));
+                    String fileName = folder + x;
+                    String fileNames = nowDate + "/" + x;
+                    uploadFileName = uploadFileName.replace(" ", "");
+                    uploadFileName = uploadFileName.replace("锛�", ",");
+                    uploadFileName = uploadFileName.replaceAll(",", "-");
+                    System.err.println("R:" + fileName);
+                    String fileAndPath = dir + fileName;
+                    System.err.println("A:" + fileAndPath);
+                    // 鍒ゆ柇濡傛灉涓存椂鐩綍涓瓨鍦ㄧ浉鍚屽悕绉扮殑鏂囦欢鍏堝垹闄わ紝鍦ㄤ笂浼�
+                    File tempFile = new File(rootPath + fileName);
+                    if (tempFile.isFile() && tempFile.exists()) {
+                        tempFile.getAbsoluteFile().delete();
+                    }
+                    // 涓婁紶鍒版湇鍔″櫒涓存椂鏂囦欢澶�
+                    file.transferTo(tempFile);
+                    // 杞Щ鍒癋TP鏈嶅姟鍣�
+                    String nfix = "";
+                    if (null != uploadFileName) {
+                        nfix = uploadFileName.substring(uploadFileName.lastIndexOf("."));
+                    }
+
+                    if (StringUtils.equalsIgnoreCase(nfix, ".exe")) {
+                        context.put("code", 4000);
+                        context.put("message", "瀵逛笉璧凤紝鏂囦欢鏍煎紡\".exe\"涓婁紶鏈夎锛�");
+                        return;
+                    }
+                    if (StringUtils.equalsIgnoreCase(nfix, ".dll")) {
+                        context.put("code", 4000);
+                        context.put("message", "瀵逛笉璧凤紝鏂囦欢鏍煎紡\".dll\"涓婁紶鏈夎锛�");
+                        return;
+                    }
+
+                    String remoteName = fileName;
+                    String remoteFileName = fileAndPath;
+
+             /*       Map map = new HashMap();
+                    map.put("url", remoteFileName);
+                    map.put("alt", uploadFileName);
+                    map.put("href", remoteFileName);
+                    List maps = Arrays.asList(remoteFileName);*/
+
+                    if (true) {
+                        // 鍏抽棴FTP娴�
+                        // 绉诲姩鎴愬姛,杩斿洖鏂囦欢鍚�
+
+                        /*context.put("error", 0);
+                        context.put("url", remoteFileName);
+                        context.put("fullurl", remoteFileName);
+                        context.put("fname", uploadFileName);
+                        context.put("data", maps);
+                        context.put("halfurl", fileNames);*/
+
+                        context.put("success", true);
+                        context.put("code", 200);
+                        context.put("errno",0);
+                        JSONObject fileJSON = new JSONObject();
+                        fileJSON.put("url", remoteFileName);
+                        fileJSON.put("imgaddr", fileNames);
+                        fileJSON.put("imgname", uploadFileName);
+                        fileJSON.put("originname", uploadFileName);
+                        context.put("data",fileJSON);
+                        context.put("message","璇锋眰鎴愬姛");
+
+                        writerJson(response, context);
+                        return;
+                    } else {
+                        // 绉诲姩澶辫触
+                        context.put("code", 0);
+                        context.put("message", "涓婁紶澶辫触");
+                        writerJson(response, context);
+                    }
+                }
+                context.put("code", 0);
+                context.put("message", "涓婁紶澶辫触");
+                writerJson(response, context);
+                return;
+            }
+        }
+        context.put("code", 0);
+        context.put("message", "涓婁紶澶辫触");
+        writerJson(response, context);
+        return;
+    }
+}
diff --git a/server/src/main/java/com/doumee/api/system/SystemController.java b/server/company/src/main/java/com/doumee/api/system/SystemController.java
similarity index 100%
rename from server/src/main/java/com/doumee/api/system/SystemController.java
rename to server/company/src/main/java/com/doumee/api/system/SystemController.java
diff --git a/server/src/main/java/com/doumee/api/system/SystemDataPermissionController.java b/server/company/src/main/java/com/doumee/api/system/SystemDataPermissionController.java
similarity index 100%
rename from server/src/main/java/com/doumee/api/system/SystemDataPermissionController.java
rename to server/company/src/main/java/com/doumee/api/system/SystemDataPermissionController.java
diff --git a/server/src/main/java/com/doumee/api/system/SystemDepartmentController.java b/server/company/src/main/java/com/doumee/api/system/SystemDepartmentController.java
similarity index 100%
rename from server/src/main/java/com/doumee/api/system/SystemDepartmentController.java
rename to server/company/src/main/java/com/doumee/api/system/SystemDepartmentController.java
diff --git a/server/src/main/java/com/doumee/api/system/SystemDictController.java b/server/company/src/main/java/com/doumee/api/system/SystemDictController.java
similarity index 100%
rename from server/src/main/java/com/doumee/api/system/SystemDictController.java
rename to server/company/src/main/java/com/doumee/api/system/SystemDictController.java
diff --git a/server/company/src/main/java/com/doumee/api/system/SystemDictDataController.java b/server/company/src/main/java/com/doumee/api/system/SystemDictDataController.java
new file mode 100644
index 0000000..4c76bfc
--- /dev/null
+++ b/server/company/src/main/java/com/doumee/api/system/SystemDictDataController.java
@@ -0,0 +1,95 @@
+package com.doumee.api.system;
+
+import com.doumee.api.BaseController;
+import com.doumee.biz.system.SystemDictDataBiz;
+import com.doumee.core.annotation.pr.PreventRepeat;
+import com.doumee.core.constants.OperaType;
+import com.doumee.core.model.ApiResponse;
+import com.doumee.core.model.PageData;
+import com.doumee.core.model.PageWrap;
+import com.doumee.dao.system.dto.QuerySystemDictDataDTO;
+import com.doumee.dao.system.model.SystemDictData;
+import com.doumee.dao.system.vo.SystemDictDataListVO;
+import com.doumee.service.system.SystemDictDataService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author Eva.Caesar Liu
+ * @date 2023/03/21 14:49
+ */
+@Api(tags = "瀛楀吀鏁版嵁")
+@RestController
+@RequestMapping("/system/dictData")
+public class SystemDictDataController extends BaseController {
+
+    @Autowired
+    private SystemDictDataService systemDictDataService;
+
+    @Autowired
+    private SystemDictDataBiz systemDictDataBiz;
+
+    @PreventRepeat
+    @ApiOperation("鏂板缓")
+    @PostMapping("/create")
+    @RequiresPermissions("system:dict:update")
+    public ApiResponse create(@Validated(OperaType.Create.class) @RequestBody SystemDictData systemDictData) {
+        return ApiResponse.success(systemDictDataBiz.create(systemDictData));
+    }
+
+    @ApiOperation("鍒犻櫎")
+    @GetMapping("/delete/{id}")
+    @RequiresPermissions("system:dict:update")
+    public ApiResponse deleteById(@PathVariable Integer id) {
+        systemDictDataService.deleteById(id);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鎵归噺鍒犻櫎")
+    @GetMapping("/delete/batch")
+    @RequiresPermissions("system:dict:delete")
+    public ApiResponse deleteByIdInBatch(@RequestParam String ids) {
+        String [] idArray = ids.split(",");
+        List<Integer> idList = new ArrayList<>();
+        for (String id : idArray) {
+            idList.add(Integer.valueOf(id));
+        }
+        systemDictDataService.deleteByIdInBatch(idList);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("淇敼")
+    @PostMapping("/updateById")
+    @RequiresPermissions("system:dict:update")
+    public ApiResponse updateById(@Validated(OperaType.Update.class) @RequestBody SystemDictData systemDictData) {
+        systemDictDataBiz.updateById(systemDictData);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鍒嗛〉鏌ヨ")
+    @PostMapping("/page")
+    @RequiresPermissions("system:dict:update")
+    public ApiResponse<PageData<SystemDictDataListVO>> findPage (@RequestBody PageWrap<QuerySystemDictDataDTO> pageWrap) {
+        return ApiResponse.success(systemDictDataService.findPage(pageWrap));
+    }
+
+
+
+
+
+    @ApiOperation("缂栬緫鏌ヨ鍜栬眴浠诲姟瑙勫垯")
+    @PostMapping("/createCoffeeTask")
+    @RequiresPermissions("system:dict:update")
+    public ApiResponse createCoffeeTask(@Validated(OperaType.Create.class) @RequestBody List<SystemDictData> list) {
+           systemDictDataBiz.updateByDicId(list);
+        return ApiResponse.success(null);
+    }
+
+}
diff --git a/server/src/main/java/com/doumee/api/system/SystemLoginLogController.java b/server/company/src/main/java/com/doumee/api/system/SystemLoginLogController.java
similarity index 100%
rename from server/src/main/java/com/doumee/api/system/SystemLoginLogController.java
rename to server/company/src/main/java/com/doumee/api/system/SystemLoginLogController.java
diff --git a/server/src/main/java/com/doumee/api/system/SystemMenuController.java b/server/company/src/main/java/com/doumee/api/system/SystemMenuController.java
similarity index 100%
rename from server/src/main/java/com/doumee/api/system/SystemMenuController.java
rename to server/company/src/main/java/com/doumee/api/system/SystemMenuController.java
diff --git a/server/src/main/java/com/doumee/api/system/SystemMonitorController.java b/server/company/src/main/java/com/doumee/api/system/SystemMonitorController.java
similarity index 100%
rename from server/src/main/java/com/doumee/api/system/SystemMonitorController.java
rename to server/company/src/main/java/com/doumee/api/system/SystemMonitorController.java
diff --git a/server/src/main/java/com/doumee/api/system/SystemPermissionController.java b/server/company/src/main/java/com/doumee/api/system/SystemPermissionController.java
similarity index 100%
rename from server/src/main/java/com/doumee/api/system/SystemPermissionController.java
rename to server/company/src/main/java/com/doumee/api/system/SystemPermissionController.java
diff --git a/server/src/main/java/com/doumee/api/system/SystemPositionController.java b/server/company/src/main/java/com/doumee/api/system/SystemPositionController.java
similarity index 100%
rename from server/src/main/java/com/doumee/api/system/SystemPositionController.java
rename to server/company/src/main/java/com/doumee/api/system/SystemPositionController.java
diff --git a/server/src/main/java/com/doumee/api/system/SystemRoleController.java b/server/company/src/main/java/com/doumee/api/system/SystemRoleController.java
similarity index 100%
rename from server/src/main/java/com/doumee/api/system/SystemRoleController.java
rename to server/company/src/main/java/com/doumee/api/system/SystemRoleController.java
diff --git a/server/src/main/java/com/doumee/api/system/SystemTraceLogController.java b/server/company/src/main/java/com/doumee/api/system/SystemTraceLogController.java
similarity index 100%
rename from server/src/main/java/com/doumee/api/system/SystemTraceLogController.java
rename to server/company/src/main/java/com/doumee/api/system/SystemTraceLogController.java
diff --git a/server/company/src/main/java/com/doumee/api/system/SystemUserController.java b/server/company/src/main/java/com/doumee/api/system/SystemUserController.java
new file mode 100644
index 0000000..0d14fb7
--- /dev/null
+++ b/server/company/src/main/java/com/doumee/api/system/SystemUserController.java
@@ -0,0 +1,129 @@
+package com.doumee.api.system;
+
+import com.doumee.api.BaseController;
+import com.doumee.biz.system.SystemUserBiz;
+import com.doumee.core.annotation.pr.PreventRepeat;
+import com.doumee.core.annotation.trace.Trace;
+import com.doumee.core.constants.OperaType;
+import com.doumee.core.model.PageData;
+import com.doumee.core.model.PageWrap;
+import com.doumee.dao.system.dto.CreateSystemUserDTO;
+import com.doumee.dao.system.dto.CreateUserRoleDTO;
+import com.doumee.dao.system.dto.QuerySystemUserDTO;
+import com.doumee.dao.system.dto.ResetSystemUserPwdDTO;
+import com.doumee.dao.system.model.SystemUser;
+import com.doumee.dao.system.vo.SystemUserListVO;
+import com.doumee.service.system.SystemUserService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import com.doumee.core.model.ApiResponse;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author Eva.Caesar Liu
+ * @date 2023/03/21 14:49
+ */
+@Api(tags = "鐢ㄦ埛")
+@RestController
+@RequestMapping("/system/user")
+public class SystemUserController extends BaseController {
+
+    @Autowired
+    private SystemUserService systemUserService;
+
+    @Autowired
+    private SystemUserBiz systemUserBiz;
+
+    @PreventRepeat
+    @ApiOperation("閰嶇疆鐢ㄦ埛瑙掕壊")
+    @PostMapping("/createUserRole")
+    @RequiresPermissions("system:user:createUserRole")
+    public ApiResponse createUserRole (@Validated @RequestBody CreateUserRoleDTO dto) {
+        systemUserBiz.createUserRole(dto);
+        return ApiResponse.success(null);
+    }
+
+    @Trace(withRequestParameters = false)
+    @PreventRepeat
+    @ApiOperation("閲嶇疆鐢ㄦ埛瀵嗙爜")
+    @PostMapping("/resetPwd")
+    @RequiresPermissions("system:user:resetPwd")
+    public ApiResponse resetPwd (@Validated @RequestBody ResetSystemUserPwdDTO dto) {
+        dto.setOperaUserId(this.getLoginUser().getId());
+        systemUserBiz.resetPwd(dto);
+        return ApiResponse.success(null);
+    }
+
+    @Trace(withRequestParameters = false)
+    @PreventRepeat
+    @ApiOperation("鏂板缓")
+    @PostMapping("/create")
+    @RequiresPermissions("system:user:create")
+    public ApiResponse create(@Validated(OperaType.Create.class) @RequestBody CreateSystemUserDTO systemUser) {
+        systemUser.setCreateUser(this.getLoginUser().getId());
+        systemUserBiz.create(systemUser);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鍒犻櫎")
+    @GetMapping("/delete/{id}")
+    @RequiresPermissions("system:user:delete")
+    public ApiResponse deleteById(@PathVariable Integer id) {
+        systemUserBiz.deleteById(id);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鎵归噺鍒犻櫎")
+    @GetMapping("/delete/batch")
+    @RequiresPermissions("system:user:delete")
+    public ApiResponse deleteByIdInBatch(@RequestParam String ids) {
+        String [] idArray = ids.split(",");
+        List<Integer> idList = new ArrayList<>();
+        for (String id : idArray) {
+            idList.add(Integer.valueOf(id));
+        }
+        systemUserBiz.deleteByIdInBatch(idList);
+        return ApiResponse.success(null);
+    }
+
+    @Trace(withRequestParameters = false)
+    @ApiOperation("淇敼")
+    @PostMapping("/updateById")
+    @RequiresPermissions("system:user:update")
+    public ApiResponse updateById( @RequestBody CreateSystemUserDTO systemUser) {
+        systemUser.setUpdateUser(this.getLoginUser().getId());
+        systemUserBiz.updateById(systemUser);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鍒嗛〉鏌ヨ")
+    @PostMapping("/page")
+    @RequiresPermissions("system:user:query")
+    public ApiResponse<PageData<SystemUserListVO>> findPage (@RequestBody PageWrap<QuerySystemUserDTO> pageWrap) {
+        return ApiResponse.success(systemUserService.findPage(pageWrap));
+    }
+
+
+
+    @ApiOperation("鍒嗛〉鏌ヨ绯荤粺鐢ㄦ埛")
+    @PostMapping("/findAllList")
+    @RequiresPermissions("system:user:query")
+    public ApiResponse<PageData<SystemUser>> findAllList (@RequestBody PageWrap<SystemUser> pageWrap) {
+        return ApiResponse.success(systemUserService.findAllList(pageWrap));
+    }
+
+
+    @ApiOperation("鏍规嵁ID鏌ヨ")
+    @GetMapping("/{id}")
+    @RequiresPermissions("system:user:query")
+    public ApiResponse findById(@PathVariable Integer id) {
+        return ApiResponse.success(systemUserService.findById(id));
+    }
+
+}
diff --git a/server/company/src/main/java/com/doumee/config/shiro/ShiroAuthFilter.java b/server/company/src/main/java/com/doumee/config/shiro/ShiroAuthFilter.java
new file mode 100644
index 0000000..30d7dc0
--- /dev/null
+++ b/server/company/src/main/java/com/doumee/config/shiro/ShiroAuthFilter.java
@@ -0,0 +1,30 @@
+package com.doumee.config.shiro;
+
+import com.alibaba.fastjson.JSON;
+import com.doumee.core.model.ApiResponse;
+import org.apache.shiro.web.filter.authc.FormAuthenticationFilter;
+import org.springframework.http.HttpStatus;
+
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * Shiro璁よ瘉杩囨护鍣紝澶勭悊鏈璇佹儏鍐电殑鍝嶅簲
+ * @author Eva.Caesar Liu
+ * @date 2023/04/17 12:11
+ */
+public class ShiroAuthFilter extends FormAuthenticationFilter {
+
+    public ShiroAuthFilter() {
+        super();
+    }
+
+    @Override
+    protected boolean onAccessDenied(ServletRequest request, ServletResponse response) throws Exception {
+        HttpServletResponse servletResponse = (HttpServletResponse) response;
+        servletResponse.setHeader("content-type", "application/json;charset=UTF-8");
+        servletResponse.getWriter().write(JSON.toJSONString(ApiResponse.failed(HttpStatus.UNAUTHORIZED.value(), "鏈櫥褰曟垨鐧诲綍淇℃伅宸茶繃鏈�")));
+        return Boolean.FALSE;
+    }
+}
diff --git a/server/company/src/main/java/com/doumee/config/shiro/ShiroCache.java b/server/company/src/main/java/com/doumee/config/shiro/ShiroCache.java
new file mode 100644
index 0000000..c71de30
--- /dev/null
+++ b/server/company/src/main/java/com/doumee/config/shiro/ShiroCache.java
@@ -0,0 +1,159 @@
+package com.doumee.config.shiro;
+
+import lombok.extern.slf4j.Slf4j;
+import org.apache.shiro.cache.Cache;
+import org.apache.shiro.cache.CacheException;
+import org.apache.shiro.subject.PrincipalCollection;
+import org.apache.shiro.util.CollectionUtils;
+import org.springframework.context.annotation.Scope;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.data.redis.serializer.SerializationException;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.io.Serializable;
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Set;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Shiro缂撳瓨
+ * @author Eva.Caesar Liu
+ * @date 2023/04/17 12:11
+ */
+@Scope(value = "prototype")
+@Slf4j
+@Component
+public class ShiroCache implements Cache<Object, Serializable> {
+
+    private String keyPrefix = "ProSelect";
+
+    @Resource(name="sessionRedisTemplate")
+    private RedisTemplate<Object, Serializable> redisTemplate;
+
+    public ShiroCache () {
+        log.debug("ShiroCache: new, keyPrefix = [" + keyPrefix + "]");
+    }
+
+    public ShiroCache(String keyPrefix) {
+        log.debug("ShiroCache: new, keyPrefix = [" + keyPrefix + "]");
+        this.keyPrefix = keyPrefix;
+    }
+
+    @Override
+    public Serializable get(Object key) throws CacheException {
+        if (key == null) {
+            return null;
+        }
+        return redisTemplate.opsForValue().get(getKey(key));
+    }
+
+    @Override
+    public Serializable put(Object key, Serializable value) throws CacheException {
+        if (key == null) {
+            return null;
+        }
+        redisTemplate.opsForValue().set(getKey(key), value);
+        return value;
+    }
+
+    public Serializable put(Object key, Serializable value, int timeout) throws CacheException {
+        if (key == null) {
+            return null;
+        }
+        redisTemplate.opsForValue().set(getKey(key), value, timeout, TimeUnit.SECONDS);
+        return value;
+    }
+
+    @Override
+    public void clear() throws CacheException {
+        Set<Object> keys = this.keys();
+        redisTemplate.delete(keys);
+    }
+
+    @Override
+    public int size() {
+        return this.keys().size();
+    }
+
+    @Override
+    public Set<Object> keys() {
+        Set<Object> keys = redisTemplate.keys(keyPrefix + "*");
+        if (CollectionUtils.isEmpty(keys)) {
+            return Collections.emptySet();
+        }
+        return keys;
+    }
+
+    @Override
+    public Collection<Serializable> values() {
+        Collection<Serializable> values = new ArrayList<>();
+        Set<Object> keys = this.keys();
+        if (CollectionUtils.isEmpty(keys)) {
+            return values;
+        }
+        for (Object k : keys) {
+            values.add(redisTemplate.opsForValue().get(k));
+        }
+        return values;
+    }
+
+    @Override
+    public Serializable remove(Object key) throws CacheException {
+        if (key == null) {
+            return null;
+        }
+        Serializable value = this.get(getKey(key));
+        redisTemplate.delete(getKey(key));
+        return value;
+    }
+
+    private Object getKey (Object key) {
+        if (key instanceof PrincipalCollection) {
+            return this.keyPrefix + getRedisKeyFromPrincipalIdField((PrincipalCollection)key);
+        }
+        return (key instanceof String ? (this.keyPrefix + key) : key);
+    }
+
+    /**
+     * 鑾峰彇redis cache key
+     */
+    private String getRedisKeyFromPrincipalIdField(PrincipalCollection key) {
+        Object principalObject = key.getPrimaryPrincipal();
+        if (principalObject instanceof String) {
+            return principalObject.toString();
+        } else {
+            Method pincipalIdGetter = this.getPrincipalIdGetter(principalObject);
+            return this.getIdObj(principalObject, pincipalIdGetter);
+        }
+    }
+
+    private Method getPrincipalIdGetter(Object principalObject) {
+        Method pincipalIdGetter;
+        String principalIdMethodName = this.getPrincipalIdMethodName();
+
+        try {
+            pincipalIdGetter = principalObject.getClass().getMethod(principalIdMethodName);
+            return pincipalIdGetter;
+        } catch (NoSuchMethodException e) {
+            throw new SerializationException(e.getMessage(), e);
+        }
+    }
+
+    private String getIdObj(Object principalObject, Method pincipalIdGetter) {
+        try {
+            Object idObj = pincipalIdGetter.invoke(principalObject);
+            String redisKey = idObj.toString();
+            return redisKey;
+        } catch (Exception e) {
+            throw new SerializationException(e.getMessage(), e);
+        }
+    }
+
+    private String getPrincipalIdMethodName() {
+        return "getId";
+    }
+}
diff --git a/server/company/src/main/java/com/doumee/config/shiro/ShiroCacheManager.java b/server/company/src/main/java/com/doumee/config/shiro/ShiroCacheManager.java
new file mode 100644
index 0000000..4c11155
--- /dev/null
+++ b/server/company/src/main/java/com/doumee/config/shiro/ShiroCacheManager.java
@@ -0,0 +1,44 @@
+package com.doumee.config.shiro;
+
+import lombok.extern.slf4j.Slf4j;
+import org.apache.shiro.cache.Cache;
+import org.apache.shiro.cache.CacheException;
+import org.apache.shiro.cache.CacheManager;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.ApplicationContext;
+import org.springframework.stereotype.Component;
+
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
+
+/**
+ * 鑷畾涔塖hiro CacheManager
+ * @author Eva.Caesar Liu
+ * @date 2023/04/17 12:11
+ */
+@Slf4j
+@Component
+public class ShiroCacheManager implements CacheManager {
+
+    private final ConcurrentMap<String, Cache> caches = new ConcurrentHashMap();
+
+    private static ApplicationContext applicationContext;
+
+    @Override
+    public <K, V> Cache<K, V> getCache(String name) throws CacheException {
+        log.debug("get cache, name=" + name);
+        Cache cache = this.caches.get(name);
+        if (cache == null) {
+            cache = applicationContext.getBean(ShiroCache.class, "shiro:cache:");
+            this.caches.put(name, cache);
+        }
+        return cache;
+    }
+
+    @Autowired
+    public void setApplicationContext (ApplicationContext applicationContext) {
+        if (ShiroCacheManager.applicationContext == null) {
+            ShiroCacheManager.applicationContext = applicationContext;
+        }
+    }
+}
diff --git a/server/company/src/main/java/com/doumee/config/shiro/ShiroConfig.java b/server/company/src/main/java/com/doumee/config/shiro/ShiroConfig.java
new file mode 100644
index 0000000..6422760
--- /dev/null
+++ b/server/company/src/main/java/com/doumee/config/shiro/ShiroConfig.java
@@ -0,0 +1,142 @@
+package com.doumee.config.shiro;
+
+import org.apache.shiro.mgt.SecurityManager;
+import org.apache.shiro.session.mgt.SessionManager;
+import org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor;
+import org.apache.shiro.spring.web.ShiroFilterFactoryBean;
+import org.apache.shiro.web.mgt.DefaultWebSecurityManager;
+import org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.data.redis.connection.RedisConnectionFactory;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.data.redis.serializer.StringRedisSerializer;
+
+import javax.servlet.Filter;
+import java.io.Serializable;
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+/**
+ * Shiro閰嶇疆
+ * @author Eva.Caesar Liu
+ * @date 2023/04/17 12:11
+ */
+@Configuration
+public class ShiroConfig {
+
+    @Value("${cache.session.expire}")
+    private int sessionExpireTime;
+
+    @Autowired
+    private ShiroCredentialsMatcher shiroCredentialsMatcher;
+
+    @Autowired
+    private ShiroSessionDAO shiroSessionDAO;
+
+    @Autowired
+    private ShiroCacheManager shiroCacheManager;
+
+    @Autowired
+    private ShiroRealm shiroRealm;
+
+    @Bean("sessionRedisTemplate")
+    public RedisTemplate<Object, Serializable> sessionRedisTemplate(RedisConnectionFactory redisConnectionFactory) {
+        RedisTemplate<Object, Serializable> redisTemplate = new RedisTemplate<>();
+        redisTemplate.setConnectionFactory(redisConnectionFactory);
+        // 榛樿搴忓垪鍖栨柟寮�
+        redisTemplate.setDefaultSerializer(new StringRedisSerializer());
+        // 鍊煎簭鍒楀寲鏂瑰紡
+        ShiroSessionSerializer serializer = new ShiroSessionSerializer();
+        redisTemplate.setValueSerializer(serializer);
+        redisTemplate.setHashValueSerializer(serializer);
+        redisTemplate.afterPropertiesSet();
+        return redisTemplate;
+    }
+
+    @Bean
+    public DefaultAdvisorAutoProxyCreator defaultAdvisorAutoProxyCreator() {
+        DefaultAdvisorAutoProxyCreator autoProxyCreator = new DefaultAdvisorAutoProxyCreator();
+        autoProxyCreator.setProxyTargetClass(true);
+        return autoProxyCreator;
+    }
+
+    @Bean
+    public SessionManager sessionManager() {
+        ShiroSessionManager sessionManager = new ShiroSessionManager();
+        sessionManager.setSessionDAO(shiroSessionDAO);
+        sessionManager.setGlobalSessionTimeout(sessionExpireTime*1000);
+        // 鍒犻櫎澶辨晥鐨剆ession
+        sessionManager.setDeleteInvalidSessions(true);
+        return sessionManager;
+    }
+
+    @Bean
+    public SecurityManager securityManager() {
+        DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
+        securityManager.setRealm(shiroRealm);
+        securityManager.setSessionManager(this.sessionManager());
+        securityManager.setCacheManager(shiroCacheManager);
+        return securityManager;
+    }
+
+    @Bean
+    public ShiroFilterFactoryBean shiroFilterFactoryBean(SecurityManager securityManager) {
+        ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean();
+        shiroFilterFactoryBean.setSecurityManager(securityManager);
+        Map<String, String> map = new LinkedHashMap<>();
+        // 璺緞鎷︽埅閰嶇疆
+        // 璺緞鎷︽埅閰嶇疆
+        map.put("/system/dictData/companyUserRules","anon");
+        map.put("/system/login", "anon");
+        map.put("/system/logout", "anon");
+        map.put("/common/captcha", "anon");
+        map.put("/business/areas/*", "anon");
+        map.put("/business/company/register", "anon");
+        map.put("/business/labels/page","anon");
+        map.put("/public/uploadPicture","anon");
+        map.put("/public/uploadLocal","anon");
+        map.put("/business/*/list","anon");
+        map.put("/business/goods/goodsPage","anon");
+        map.put("/business/goods/h5Image","anon");
+        map.put("/business/goods/export","anon");
+        map.put("/business/goods/listForH5","anon");
+
+
+        // - 鏀捐swagger
+        map.put("/doc.html", "anon");
+        map.put("/webjars/**", "anon");
+        map.put("/swagger-resources/**", "anon");
+        map.put("/v2/api-docs/**", "anon");
+
+        // - 鍏朵粬鎺ュ彛缁熶竴鎷︽埅
+        map.put("/**", "authc");
+        shiroFilterFactoryBean.setFilterChainDefinitionMap(map);
+        // 娣诲姞璁よ瘉杩囨护鍣�
+        Map<String, Filter> filters = new LinkedHashMap<>();
+        filters.put("authc", new ShiroAuthFilter());
+        shiroFilterFactoryBean.setFilters(filters);
+        return shiroFilterFactoryBean;
+    }
+
+    @Bean
+    public AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor(SecurityManager securityManager) {
+        AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor = new AuthorizationAttributeSourceAdvisor();
+        authorizationAttributeSourceAdvisor.setSecurityManager(securityManager);
+        return authorizationAttributeSourceAdvisor;
+    }
+
+    @Bean
+    public ShiroSessionDAO getShiroSessionDAO () {
+        shiroSessionDAO.setExpireTime(sessionExpireTime);
+        return shiroSessionDAO;
+    }
+
+    @Bean
+    public ShiroRealm getShiroRealm () {
+        shiroRealm.setCredentialsMatcher(shiroCredentialsMatcher);
+        return shiroRealm;
+    }
+}
diff --git a/server/company/src/main/java/com/doumee/config/shiro/ShiroCredentialsMatcher.java b/server/company/src/main/java/com/doumee/config/shiro/ShiroCredentialsMatcher.java
new file mode 100644
index 0000000..890ade0
--- /dev/null
+++ b/server/company/src/main/java/com/doumee/config/shiro/ShiroCredentialsMatcher.java
@@ -0,0 +1,45 @@
+package com.doumee.config.shiro;
+
+import com.doumee.core.utils.Utils;
+import com.doumee.dao.system.model.SystemUser;
+import com.doumee.service.system.SystemUserService;
+import org.apache.shiro.authc.AuthenticationInfo;
+import org.apache.shiro.authc.AuthenticationToken;
+import org.apache.shiro.authc.credential.HashedCredentialsMatcher;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.stereotype.Component;
+
+/**
+ * Shiro瀵嗙爜姣斿澶勭悊
+ * @author Eva.Caesar Liu
+ * @date 2023/04/17 12:11
+ */
+@Component
+public class ShiroCredentialsMatcher extends HashedCredentialsMatcher {
+    @Lazy
+    @Autowired
+    private SystemUserService systemUserService;
+
+    @Override
+    public boolean doCredentialsMatch(AuthenticationToken token, AuthenticationInfo info) {
+        ShiroToken usernamePasswordToken = (ShiroToken) token;
+        SystemUser queryUserDto = new SystemUser();
+        queryUserDto.setUsername(usernamePasswordToken.getUsername());
+        queryUserDto.setDeleted(Boolean.FALSE);
+        SystemUser systemUser = systemUserService.findOne(queryUserDto);
+        if (systemUser == null) {
+            return Boolean.FALSE;
+        }
+        if(usernamePasswordToken.getDdLogin()){
+            return Boolean.TRUE;
+        }
+        if(usernamePasswordToken.getWxLogin()){
+            return Boolean.TRUE;
+        }
+        // 鍔犲瘑瀵嗙爜
+        String pwd = Utils.Secure.encryptPassword(new String(usernamePasswordToken.getPassword()), systemUser.getSalt());
+        // 姣旇緝瀵嗙爜
+        return this.equals(pwd, systemUser.getPassword());
+    }
+}
diff --git a/server/company/src/main/java/com/doumee/config/shiro/ShiroRealm.java b/server/company/src/main/java/com/doumee/config/shiro/ShiroRealm.java
new file mode 100644
index 0000000..299fb97
--- /dev/null
+++ b/server/company/src/main/java/com/doumee/config/shiro/ShiroRealm.java
@@ -0,0 +1,94 @@
+package com.doumee.config.shiro;
+
+import com.doumee.core.constants.ResponseStatus;
+import com.doumee.core.exception.BusinessException;
+import com.doumee.core.model.LoginUserInfo;
+import com.doumee.core.utils.Constants;
+import com.doumee.dao.system.model.SystemPermission;
+import com.doumee.dao.system.model.SystemRole;
+import com.doumee.dao.system.model.SystemUser;
+import com.doumee.service.system.SystemDataPermissionService;
+import com.doumee.service.system.SystemPermissionService;
+import com.doumee.service.system.SystemRoleService;
+import com.doumee.service.system.SystemUserService;
+import org.apache.shiro.authc.AuthenticationException;
+import org.apache.shiro.authc.AuthenticationInfo;
+import org.apache.shiro.authc.AuthenticationToken;
+import org.apache.shiro.authc.SimpleAuthenticationInfo;
+import org.apache.shiro.authz.AuthorizationInfo;
+import org.apache.shiro.authz.SimpleAuthorizationInfo;
+import org.apache.shiro.realm.AuthorizingRealm;
+import org.apache.shiro.subject.PrincipalCollection;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+/**
+ * 鑷畾涔塕ealm锛屽鐞嗚璇佸拰鏉冮檺
+ * @author Eva.Caesar Liu
+ * @date 2022/03/15 09:54
+ */
+@Component
+public class ShiroRealm extends AuthorizingRealm {
+
+    @Lazy
+    @Autowired
+    private SystemDataPermissionService systemDataPermissionService;
+    @Lazy
+    @Autowired
+    private SystemUserService systemUserService;
+
+    @Lazy
+    @Autowired
+    private SystemRoleService systemRoleService;
+
+    @Lazy
+    @Autowired
+    private SystemPermissionService systemPermissionService;
+
+    /**
+     * 鏉冮檺澶勭悊
+     * @author Eva.Caesar Liu
+     * @date 2022/03/15 09:54
+     */
+    @Override
+    protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) {
+        LoginUserInfo loginUserInfo = (LoginUserInfo)principalCollection.getPrimaryPrincipal();
+        // 璁剧疆鐢ㄦ埛瑙掕壊鍜屾潈闄�
+        SimpleAuthorizationInfo authorizationInfo = new SimpleAuthorizationInfo();
+        authorizationInfo.addRoles(loginUserInfo.getRoles());
+        authorizationInfo.addStringPermissions(loginUserInfo.getPermissions());
+        return authorizationInfo;
+    }
+
+    /**
+     * 璁よ瘉澶勭悊
+     * @author Eva.Caesar Liu
+     * @date 2022/03/15 09:54
+     */
+    @Override
+    protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) throws AuthenticationException {
+        // 鑾峰彇鐢ㄦ埛鍚�
+        String username = authenticationToken.getPrincipal().toString();
+        // 鏍规嵁鐢ㄦ埛鍚嶆煡璇㈢敤鎴峰璞�
+        SystemUser queryDto = new SystemUser();
+        queryDto.setUsername(username);
+        queryDto.setDeleted(Boolean.FALSE);
+        SystemUser user = systemUserService.findOne(queryDto);
+        if(!Constants.equalsInteger(user.getStatus(),Constants.ZERO)){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝璐﹀彿淇℃伅宸茶绂佺敤锛屽鏈夌枒闂鑱旂郴绯荤粺绠$悊鍛橈紒");
+        }
+        if (user == null) {
+            return null;
+        }
+        // 鑾峰彇鐧诲綍鐢ㄦ埛淇℃伅
+        List<SystemRole> roles = systemRoleService.findByUserId(user.getId());
+        List<SystemPermission> permissions = systemPermissionService.findByUserId(user.getId());
+        LoginUserInfo userInfo = LoginUserInfo.from(user, roles, permissions);
+        // 楠岃瘉鐢ㄦ埛
+        return new SimpleAuthenticationInfo(userInfo, user.getPassword(), this.getName());
+    }
+
+}
diff --git a/server/company/src/main/java/com/doumee/config/shiro/ShiroRedisSessionDAO.java b/server/company/src/main/java/com/doumee/config/shiro/ShiroRedisSessionDAO.java
new file mode 100644
index 0000000..aac166d
--- /dev/null
+++ b/server/company/src/main/java/com/doumee/config/shiro/ShiroRedisSessionDAO.java
@@ -0,0 +1,139 @@
+package com.doumee.config.shiro;
+
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang.SerializationUtils;
+import org.apache.shiro.session.Session;
+import org.apache.shiro.session.UnknownSessionException;
+import org.apache.shiro.session.mgt.SimpleSession;
+import org.apache.shiro.session.mgt.eis.SessionDAO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.data.redis.core.StringRedisTemplate;
+
+import java.io.Serializable;
+import java.util.Collection;
+import java.util.concurrent.TimeUnit;
+
+//@Component
+@Slf4j
+@SuppressWarnings({ "rawtypes", "unchecked" })
+public class ShiroRedisSessionDAO  implements SessionDAO {
+// Session瓒呮椂鏃堕棿锛屽崟浣嶄负姣
+private static final String KEY_PREFIX = "shiro:session:";
+    private long expireTime = 120000;
+    @Autowired
+    private ShiroTokenManager shiroTokenManager;
+    @Autowired
+    private RedisTemplate redisTemplate;// Redis鎿嶄綔绫伙紝瀵硅繖涓娇鐢ㄤ笉鐔熸倝鐨勶紝鍙互鍙傝�冨墠闈㈢殑鍗氬
+
+    public ShiroRedisSessionDAO() {
+
+        super();
+
+    }
+
+    public ShiroRedisSessionDAO(long expireTime, StringRedisTemplate redisTemplate) {
+
+        super();
+
+        this.expireTime = expireTime;
+
+        this.redisTemplate = redisTemplate;
+
+    }
+
+    @Override // 鏇存柊session
+
+    public void update(Session session) throws UnknownSessionException {
+
+        System.out.println("===============update================");
+
+        if (session == null || session.getId() == null) {
+            return;
+        }
+        session.setTimeout(expireTime);
+        byte[] bytes = SerializationUtils.serialize((Serializable) session);
+        redisTemplate.opsForValue().set(KEY_PREFIX+session.getId(), bytes, expireTime, TimeUnit.MILLISECONDS);
+    }
+
+    @Override // 鍒犻櫎session
+
+    public void delete(Session session) {
+
+        System.out.println("===============delete================");
+
+        if (null == session) {
+
+            return;
+
+        }
+
+        redisTemplate.opsForValue().getOperations().delete(KEY_PREFIX+session.getId());
+
+    }
+
+    @Override// 鑾峰彇娲昏穬鐨剆ession锛屽彲浠ョ敤鏉ョ粺璁″湪绾夸汉鏁帮紝濡傛灉瑕佸疄鐜拌繖涓姛鑳斤紝鍙互鍦ㄥ皢session鍔犲叆redis鏃舵寚瀹氫竴涓猻ession鍓嶇紑锛岀粺璁$殑鏃跺�欏垯浣跨敤keys("session-prefix*")鐨勬柟寮忔潵妯$硦鏌ユ壘redis涓墍鏈夌殑session闆嗗悎
+    public Collection getActiveSessions() {
+
+        System.out.println("==============getActiveSessions=================");
+
+        return redisTemplate.keys("*");
+
+    }
+
+    @Override
+    public Serializable create(Session session) {
+
+        System.out.println("===============doCreate================");
+
+        if (session == null) {
+            log.error("session is null");
+            throw new UnknownSessionException("session is null");
+        }
+        Serializable sessionId = shiroTokenManager.build();
+        ((SimpleSession)session).setId(sessionId);
+        byte[] bytes = SerializationUtils.serialize((Serializable) session);
+        redisTemplate.opsForValue().set(session.getId(), bytes, expireTime, TimeUnit.MILLISECONDS);
+        return sessionId;
+
+    }
+    public Session readSession(Serializable sessionId) throws UnknownSessionException{
+        if (sessionId == null) {
+            log.warn("session id is null");
+            return null;
+        }
+        if (sessionId instanceof String) {
+            // 瀵筍essionId杩涜楠岃瘉锛堝彲鐢ㄤ簬闃叉Session鎹曡幏銆佹毚鍔涙崟鎹夌瓑涓�绯诲垪瀹夊叏闂锛屾渶缁堝畨鍏ㄦ�у彇鍐充簬check濡備綍瀹炵幇锛�
+            shiroTokenManager.check((String) sessionId);
+        }
+        log.debug("read session from cache");
+
+        SimpleSession simpleSession = (SimpleSession) SerializationUtils.deserialize((byte[])redisTemplate.opsForValue().get(KEY_PREFIX+sessionId));
+       return simpleSession;
+
+    }
+
+    public long getExpireTime() {
+
+        return expireTime;
+
+    }
+
+    public void setExpireTime(long expireTime) {
+
+        this.expireTime = expireTime;
+
+    }
+
+    public RedisTemplate getRedisTemplate() {
+
+        return redisTemplate;
+
+    }
+
+    public void setRedisTemplate(RedisTemplate redisTemplate) {
+
+        this.redisTemplate = redisTemplate;
+
+    }
+}
diff --git a/server/company/src/main/java/com/doumee/config/shiro/ShiroSessionDAO.java b/server/company/src/main/java/com/doumee/config/shiro/ShiroSessionDAO.java
new file mode 100644
index 0000000..1fe90bf
--- /dev/null
+++ b/server/company/src/main/java/com/doumee/config/shiro/ShiroSessionDAO.java
@@ -0,0 +1,113 @@
+package com.doumee.config.shiro;
+
+import lombok.Data;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.shiro.session.Session;
+import org.apache.shiro.session.UnknownSessionException;
+import org.apache.shiro.session.mgt.SimpleSession;
+import org.apache.shiro.session.mgt.eis.SessionDAO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.io.Serializable;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Set;
+
+/**
+ * 鑷畾涔塖hiro SessionDAO锛屽皢浼氳瘽淇℃伅瀛樺叆缂撳瓨涓�
+ * @author Eva.Caesar Liu
+ * @date 2023/04/17 12:11
+ */
+@Data
+@Slf4j
+@Component
+public class ShiroSessionDAO implements SessionDAO {
+
+    private static final String KEY_PREFIX = "shiro:session:";
+
+    @Autowired
+    private ShiroCache shiroCache;
+
+    private int expireTime = 60 * 60 * 24;
+
+    @Autowired
+    private ShiroTokenManager shiroTokenManager;
+
+    @Override
+    public Serializable create(Session session) {
+        if (session == null) {
+            log.error("session is null");
+            throw new UnknownSessionException("session is null");
+        }
+        Serializable sessionId = shiroTokenManager.build();
+        ((SimpleSession)session).setId(sessionId);
+        this.saveSession(session);
+        return sessionId;
+    }
+
+    @Override
+    public Session readSession(Serializable sessionId) throws UnknownSessionException{
+        if (sessionId == null) {
+            log.warn("session id is null");
+            return null;
+        }
+        if (sessionId instanceof String) {
+            // 瀵筍essionId杩涜楠岃瘉锛堝彲鐢ㄤ簬闃叉Session鎹曡幏銆佹毚鍔涙崟鎹夌瓑涓�绯诲垪瀹夊叏闂锛屾渶缁堝畨鍏ㄦ�у彇鍐充簬check濡備綍瀹炵幇锛�
+            shiroTokenManager.check((String) sessionId);
+        }
+        log.debug("read session from cache");
+        Session session = getSessionFromCache(sessionId);
+        if (session == null) {
+            throw new UnknownSessionException("There is no session with id [" + sessionId + "]");
+        }
+        return session;
+    }
+
+    @Override
+    public void update(Session session) throws UnknownSessionException {
+        this.saveSession(session);
+    }
+
+    @Override
+    public void delete(Session session) {
+        if (session != null && session.getId() != null) {
+            shiroCache.remove(KEY_PREFIX + session.getId());
+        }
+    }
+
+    @Override
+    public Collection<Session> getActiveSessions() {
+        Set<Session> sessions = new HashSet<>();
+        Set<Object> keys = shiroCache.keys();
+        if (keys != null && keys.size() > 0) {
+            Iterator iter = keys.iterator();
+            while(iter.hasNext()) {
+                sessions.add((Session) shiroCache.get(iter.next()));
+            }
+        }
+        return sessions;
+    }
+
+    private void saveSession(Session session) throws UnknownSessionException {
+        if (session == null || session.getId() == null) {
+            log.error("session or session id is null");
+            throw new UnknownSessionException("session or session id is null");
+        }
+        shiroCache.put(KEY_PREFIX + session.getId(), (SimpleSession)session, expireTime);
+    }
+
+    private Session getSessionFromCache (Serializable sessionId) {
+        Serializable object = shiroCache.get(KEY_PREFIX + sessionId);
+        Session session = null;
+        if (object != null) {
+            session = (Session)shiroCache.get(KEY_PREFIX + sessionId);
+        }
+        return session;
+    }
+
+    public void setExpireTime (int expireTime) {
+        this.expireTime = expireTime;
+    }
+}
diff --git a/server/company/src/main/java/com/doumee/config/shiro/ShiroSessionManager.java b/server/company/src/main/java/com/doumee/config/shiro/ShiroSessionManager.java
new file mode 100644
index 0000000..32b0379
--- /dev/null
+++ b/server/company/src/main/java/com/doumee/config/shiro/ShiroSessionManager.java
@@ -0,0 +1,85 @@
+package com.doumee.config.shiro;
+
+import lombok.extern.slf4j.Slf4j;
+import org.apache.shiro.session.Session;
+import org.apache.shiro.session.mgt.DefaultSessionManager;
+import org.apache.shiro.session.mgt.SessionContext;
+import org.apache.shiro.session.mgt.SessionKey;
+import org.apache.shiro.web.servlet.Cookie;
+import org.apache.shiro.web.servlet.ShiroHttpServletRequest;
+import org.apache.shiro.web.servlet.SimpleCookie;
+import org.apache.shiro.web.session.mgt.WebSessionManager;
+import org.apache.shiro.web.util.WebUtils;
+
+import javax.servlet.ServletRequest;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.Serializable;
+
+/**
+ * 鑷畾涔変細璇濈鐞嗗櫒
+ * @author Eva.Caesar Liu
+ * @date 2023/04/17 12:11
+ */
+@Slf4j
+public class ShiroSessionManager extends DefaultSessionManager implements WebSessionManager {
+
+    private static final String AUTH_TOKEN = "eva-auth-token";
+
+    @Override
+    protected void onStart(Session session, SessionContext context) {
+        super.onStart(session, context);
+        if (!WebUtils.isHttp(context)) {
+            log.debug("SessionContext argument is not Http compatible or does not have an Http request/response pair. No session ID cookie will be set.");
+            return;
+        }
+        HttpServletRequest request = WebUtils.getHttpRequest(context);
+        HttpServletResponse response = WebUtils.getHttpResponse(context);
+        Serializable sessionId = session.getId();
+        this.storeSessionId(sessionId, request, response);
+        request.removeAttribute(ShiroHttpServletRequest.REFERENCED_SESSION_ID_SOURCE);
+        request.setAttribute(ShiroHttpServletRequest.REFERENCED_SESSION_IS_NEW, Boolean.TRUE);
+    }
+
+    @Override
+    public Serializable getSessionId(SessionKey key) {
+        Serializable sessionId = super.getSessionId(key);
+        if (sessionId == null && WebUtils.isWeb(key)) {
+            ServletRequest servletRequest = WebUtils.getRequest(key);
+            if (!(servletRequest instanceof HttpServletRequest)) {
+                log.trace("Can not get sessionId from header, the request is not HttpServletRequest");
+                return null;
+            }
+            HttpServletRequest request = (HttpServletRequest) servletRequest;
+            // 浠巆ookie涓幏鍙栬璇�
+            javax.servlet.http.Cookie[] cookies = request.getCookies();
+            if (cookies != null) {
+                for (javax.servlet.http.Cookie cookie : cookies) {
+                    if (AUTH_TOKEN.equals(cookie.getName())) {
+                        return cookie.getValue();
+                    }
+                }
+            }
+            // 浠巋eader涓幏鍙栬璇�
+            return request.getHeader(AUTH_TOKEN);
+        }
+        return sessionId;
+    }
+    @Override
+    public boolean isServletContainerSessions() {
+        return false;
+    }
+
+    private void storeSessionId(Serializable currentId, HttpServletRequest request, HttpServletResponse response) {
+        if (currentId == null) {
+            String msg = "sessionId cannot be null when persisting for subsequent requests.";
+            throw new IllegalArgumentException(msg);
+        }
+        Cookie cookie = new SimpleCookie(AUTH_TOKEN);
+        cookie.setHttpOnly(false);
+        String idString = currentId.toString();
+        cookie.setValue(idString);
+        cookie.saveTo(request, response);
+        log.trace("Set session ID cookie for session with id {}", idString);
+    }
+}
diff --git a/server/company/src/main/java/com/doumee/config/shiro/ShiroSessionSerializer.java b/server/company/src/main/java/com/doumee/config/shiro/ShiroSessionSerializer.java
new file mode 100644
index 0000000..d334adf
--- /dev/null
+++ b/server/company/src/main/java/com/doumee/config/shiro/ShiroSessionSerializer.java
@@ -0,0 +1,36 @@
+package com.doumee.config.shiro;
+
+import org.apache.commons.lang3.SerializationUtils;
+import org.apache.shiro.codec.Base64;
+import org.springframework.data.redis.serializer.RedisSerializer;
+import org.springframework.data.redis.serializer.SerializationException;
+
+import java.io.Serializable;
+import java.nio.charset.StandardCharsets;
+
+/**
+ * Session搴忓垪鍖�
+ * @author Eva.Caesar Liu
+ * @date 2023/04/17 12:11
+ */
+public class ShiroSessionSerializer implements RedisSerializer<Serializable> {
+
+    @Override
+    public byte[] serialize(Serializable obj) throws SerializationException {
+        if (obj == null) {
+            return new byte[0];
+        }
+        String sessionBase64 = Base64.encodeToString(SerializationUtils.serialize(obj));
+        return sessionBase64.getBytes(StandardCharsets.UTF_8);
+    }
+
+    @Override
+    public Serializable deserialize(byte[] bytes) throws SerializationException {
+        if (bytes == null || bytes.length == 0) {
+            return null;
+        }
+        String sessionString = new String(bytes, StandardCharsets.UTF_8);
+        byte[] sessionBytes = Base64.decode(sessionString);
+        return SerializationUtils.deserialize(sessionBytes);
+    }
+}
diff --git a/server/company/src/main/java/com/doumee/config/shiro/ShiroToken.java b/server/company/src/main/java/com/doumee/config/shiro/ShiroToken.java
new file mode 100644
index 0000000..74c09df
--- /dev/null
+++ b/server/company/src/main/java/com/doumee/config/shiro/ShiroToken.java
@@ -0,0 +1,54 @@
+package com.doumee.config.shiro;
+
+import org.apache.shiro.authc.UsernamePasswordToken;
+import org.springframework.stereotype.Component;
+
+/**
+ * 鑷畾涔塗oken 锛屽鐞嗚璇佸拰鏉冮檺
+ * @author Eva.Caesar Liu
+ * @date 2022/04/18 18:12
+ */
+@Component
+public class ShiroToken extends UsernamePasswordToken {
+
+    /**
+     * 鍏徃ID
+     */
+    Integer companyId;
+    Boolean isDdLogin;
+    Boolean isWxLogin;
+
+    public ShiroToken() {
+    }
+    public ShiroToken(Integer companyId, String username, String password, boolean isDdLogin, boolean isWxLogin) {
+        super(username,  password, false, (String)null);
+        this.companyId = companyId;
+        this.isDdLogin = isDdLogin;
+        this.isWxLogin = isWxLogin;
+    }
+
+    public Boolean getDdLogin() {
+        return isDdLogin;
+    }
+
+    public void setDdLogin(Boolean ddLogin) {
+        isDdLogin = ddLogin;
+    }
+
+
+    public Boolean getWxLogin() {
+        return isWxLogin;
+    }
+
+    public void setWxLogin(Boolean wxLogin) {
+        isWxLogin = wxLogin;
+    }
+
+    public Integer getCompanyId() {
+        return companyId;
+    }
+
+    public void setCompanyId(Integer companyId) {
+        this.companyId = companyId;
+    }
+}
diff --git a/server/company/src/main/java/com/doumee/config/shiro/ShiroTokenManager.java b/server/company/src/main/java/com/doumee/config/shiro/ShiroTokenManager.java
new file mode 100644
index 0000000..ba35da6
--- /dev/null
+++ b/server/company/src/main/java/com/doumee/config/shiro/ShiroTokenManager.java
@@ -0,0 +1,25 @@
+package com.doumee.config.shiro;
+
+import com.doumee.core.exception.UnSafeSessionException;
+import org.springframework.stereotype.Component;
+
+import java.util.UUID;
+
+/**
+ * 榛樿Token绠$悊鍣�
+ * @author Eva.Caesar Liu
+ * @date 2023/04/17 12:11
+ */
+@Component
+public class ShiroTokenManager {
+
+    String build() {
+        return UUID.randomUUID().toString();
+    }
+
+    void check(String token) throws UnSafeSessionException {
+        if (token == null || token.length() != 36) {
+            throw new UnSafeSessionException();
+        }
+    }
+}
diff --git a/server/company/src/main/java/com/doumee/config/swagger/SwaggerConfig.java b/server/company/src/main/java/com/doumee/config/swagger/SwaggerConfig.java
new file mode 100644
index 0000000..9817cda
--- /dev/null
+++ b/server/company/src/main/java/com/doumee/config/swagger/SwaggerConfig.java
@@ -0,0 +1,99 @@
+package com.doumee.config.swagger;
+
+import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j;
+import com.google.common.base.Function;
+import com.google.common.base.Optional;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import springfox.documentation.RequestHandler;
+import springfox.documentation.builders.ApiInfoBuilder;
+import springfox.documentation.builders.PathSelectors;
+import springfox.documentation.oas.annotations.EnableOpenApi;
+import springfox.documentation.service.ApiInfo;
+import springfox.documentation.spi.DocumentationType;
+import springfox.documentation.spring.web.plugins.Docket;
+
+import java.util.function.Predicate;
+
+/**
+ * Swagger閰嶇疆
+ * @author Eva.Caesar Liu
+ * @date 2022/03/11 10:24
+ */
+@Configuration
+@EnableOpenApi
+@EnableKnife4j
+public class SwaggerConfig {
+
+    @Value("${swagger.host:}")
+    private String host;
+
+    @Value("${swagger.title:鎺ュ彛鏂囨。}")
+    private String title;
+
+    @Value("${swagger.description:}")
+    private String description;
+
+    @Value("${project.version:}")
+    private String version;
+
+    @Bean
+    public ApiInfo getApiInfo() {
+        return new ApiInfoBuilder()
+                .title(title)
+                .description(description)
+                .version(version)
+                .build();
+    }
+    @Bean
+    public Docket getDocket() {
+        return new Docket(DocumentationType.SWAGGER_2)
+                .apiInfo(this.getApiInfo()).groupName("銆愮郴缁熺鐞嗘帴鍙PI銆�")
+                .host(host)
+                .select()
+                .apis( basePackage("com.doumee.api.system;com.doumee.api.business;"))
+                // 璁剧疆闇�瑕佽鎵弿鐨勭被锛岃繖閲岃缃负娣诲姞浜咢Api娉ㄨВ鐨勭被
+//                .apis(RequestHandlerSelectors.withClassAnnotation(Api.class))
+                .paths(PathSelectors.any())
+                .build();
+    }
+    @Bean
+    public Docket getDocket1() {
+        return new Docket(DocumentationType.SWAGGER_2)
+            .apiInfo(this.getApiInfo()).groupName("銆愬叕鍏辨帴鍙PI銆�")
+            .host(host)
+            .select()
+            .apis( basePackage("com.doumee.api.common"))
+            // 璁剧疆闇�瑕佽鎵弿鐨勭被锛岃繖閲岃缃负娣诲姞浜咢Api娉ㄨВ鐨勭被
+//                .apis(RequestHandlerSelectors.withClassAnnotation(Api.class))
+            .paths(PathSelectors.any())
+            .build();
+    }
+    /**
+     * 閲嶅啓basePackage鏂规硶锛屼娇鑳藉瀹炵幇澶氬寘璁块棶锛屽鍒惰创涓婂幓
+     * @author  teavamc
+     * @date 2019/1/26
+     * @return com.google.common.base.Predicate<springfox.documentation.RequestHandler>
+     */
+    public static Predicate<RequestHandler> basePackage(String basePackage) {
+        return input -> declaringClass(input).transform(handlerPackage(basePackage)).or(true);
+    }
+
+    private static Function<Class<?>, Boolean> handlerPackage(String basePackage)     {
+        return input -> {
+            // 寰幆鍒ゆ柇鍖归厤
+            for (String strPackage : basePackage.split(";")) {
+                boolean isMatch = input.getPackage().getName().startsWith(strPackage);
+                if (isMatch) {
+                    return true;
+                }
+            }
+            return false;
+        };
+    }
+
+    private static Optional<? extends Class<?>> declaringClass(RequestHandler input) {
+        return Optional.fromNullable(input.declaringClass());
+    }
+}
diff --git a/server/company/src/main/java/com/doumee/config/swagger/SwaggerInterceptor.java b/server/company/src/main/java/com/doumee/config/swagger/SwaggerInterceptor.java
new file mode 100644
index 0000000..8fd55c6
--- /dev/null
+++ b/server/company/src/main/java/com/doumee/config/swagger/SwaggerInterceptor.java
@@ -0,0 +1,45 @@
+package com.doumee.config.swagger;
+
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+import org.springframework.web.servlet.HandlerInterceptor;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+
+/**
+ * Swagger鎷︽埅鍣�
+ * @author Eva.Caesar Liu
+ * @date 2022/04/18 18:12
+ */
+@Slf4j
+@Component
+public class SwaggerInterceptor implements HandlerInterceptor {
+
+    @Value("${swagger.enabled:false}")
+    private Boolean enabledSwagger;
+
+    @Value("${swagger.redirect-uri:/}")
+    private String redirectUri;
+
+    @Override
+    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
+        if (!enabledSwagger) {
+            String uri = request.getContextPath();
+            if (StringUtils.isNotBlank(redirectUri))
+                uri = request.getContextPath() + redirectUri;
+            if (StringUtils.isBlank(uri))
+                uri = "/";
+            try {
+                response.sendRedirect(uri);
+            } catch (IOException e) {
+                log.error(String.format("Redirect to '%s' for swagger throw an exception : %s", uri, e.getMessage()), e);
+            }
+            return Boolean.FALSE;
+        }
+        return Boolean.TRUE;
+    }
+}
diff --git a/server/src/main/java/com/doumee/config/swagger/SwaggerInterceptorConfig.java b/server/company/src/main/java/com/doumee/config/swagger/SwaggerInterceptorConfig.java
similarity index 100%
rename from server/src/main/java/com/doumee/config/swagger/SwaggerInterceptorConfig.java
rename to server/company/src/main/java/com/doumee/config/swagger/SwaggerInterceptorConfig.java
diff --git a/server/company/src/main/resources/application.yml b/server/company/src/main/resources/application.yml
new file mode 100644
index 0000000..ee9d370
--- /dev/null
+++ b/server/company/src/main/resources/application.yml
@@ -0,0 +1,66 @@
+# 椤圭洰淇℃伅閰嶇疆
+project:
+  name: 棰勯�夋竻鍗曟煡璇�
+  version: 1.0.0
+  env: development
+#  env: production
+server:
+  port: 10012
+
+spring:
+#  application:
+#    name: doumeemes
+  profiles:
+    active: dev
+
+  # JSON杩斿洖閰嶇疆
+  jackson:
+    # 榛樿鏃跺尯
+    time-zone: GMT+8
+    # 榛樿鏃ユ湡鏍煎紡鍖�
+    date-format: yyyy-MM-dd HH:mm:ss
+  servlet:
+    multipart:
+      max-file-size: 200MB
+      max-request-size: 200MB
+      enabled: true
+# MyBatis閰嶇疆
+mybatis-plus:
+  mapper-locations: classpath*:/mappers/**/*.xml
+  configuration:
+    map-underscore-to-camel-case: true
+    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+
+
+# 缂撳瓨鍐呭璁剧疆
+cache:
+  session:
+    # 浼氳瘽杩囨湡鏃堕暱(s)
+    expire: 18000
+  captcha:
+    # 楠岃瘉鐮佽繃鏈熸椂闀�(s)
+    expire: 300
+
+# 璺熻釜鏃ュ織
+trace:
+  # 寮�鍚櫤鑳借窡韪ā寮�
+  smart: true
+  # 鎺掗櫎璺熻釜鐨刄RL姝e垯
+  exclude-patterns: .+/list[a-zA-Z0-9\-\_]*$, .+/tree[a-zA-Z0-9\-\_]*$, .+/page[a-zA-Z0-9\-\_]*$, .+/all[a-zA-Z0-9\-\_]*$, /swagger-resources.*
+
+
+# 鏃ュ織閰嶇疆
+logback:
+  level: INFO
+  appender: ${project.env}
+# dao灞傜殑鏃ュ織璁剧疆涓篸ebug锛屾柟渚挎煡鐪媠ql
+logging:
+  level:
+    doumeemes.dao: debug
+
+knife4j:
+  enable: true
+  basic:
+    enable: true
+    username: admin
+    password: 111111
\ No newline at end of file
diff --git a/server/platform/pom.xml b/server/platform/pom.xml
new file mode 100644
index 0000000..c283208
--- /dev/null
+++ b/server/platform/pom.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.doumee</groupId>
+        <artifactId>preselect</artifactId>
+        <version>1.0.0-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>platform</artifactId>
+
+    <properties>
+        <maven.compiler.source>8</maven.compiler.source>
+        <maven.compiler.target>8</maven.compiler.target>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+    <dependencies>
+        <dependency>
+            <groupId>com.doumee</groupId>
+            <artifactId>service</artifactId>
+            <version>1.0.0-SNAPSHOT</version>
+        </dependency>
+    </dependencies>
+</project>
\ No newline at end of file
diff --git a/server/platform/src/main/java/com/doumee/Main.java b/server/platform/src/main/java/com/doumee/Main.java
new file mode 100644
index 0000000..ada0d0d
--- /dev/null
+++ b/server/platform/src/main/java/com/doumee/Main.java
@@ -0,0 +1,7 @@
+package com.doumee;
+
+public class Main {
+    public static void main(String[] args) {
+        System.out.println("Hello world!");
+    }
+}
\ No newline at end of file
diff --git a/server/platform/src/main/java/com/doumee/PlatformApplication.java b/server/platform/src/main/java/com/doumee/PlatformApplication.java
new file mode 100644
index 0000000..e49767a
--- /dev/null
+++ b/server/platform/src/main/java/com/doumee/PlatformApplication.java
@@ -0,0 +1,23 @@
+package com.doumee;
+
+import lombok.extern.slf4j.Slf4j;
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.ApplicationContext;
+
+/**
+ * 鍚姩绫�
+ * @author Eva.Caesar Liu
+ * @date 2023/02/14 11:14
+ */
+@Slf4j
+@SpringBootApplication
+@MapperScan("com.doumee.dao")
+public class PlatformApplication {
+
+    public static void main(String[] args) {
+        ApplicationContext context = SpringApplication.run(PlatformApplication.class);
+        context.getEnvironment();
+    }
+}
diff --git a/server/platform/src/main/java/com/doumee/api/BaseController.java b/server/platform/src/main/java/com/doumee/api/BaseController.java
new file mode 100644
index 0000000..0231966
--- /dev/null
+++ b/server/platform/src/main/java/com/doumee/api/BaseController.java
@@ -0,0 +1,25 @@
+package com.doumee.api;
+
+import com.doumee.core.model.LoginUserInfo;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.shiro.SecurityUtils;
+import  com.doumee.core.model.ApiResponse;
+
+/**
+ * Controller鍩虹被
+ * @author Eva.Caesar Liu
+ * @date 2023/02/14 11:14
+ */
+@Slf4j
+public class BaseController {
+
+    /**
+     * 鑾峰彇褰撳墠鐧诲綍鐢ㄦ埛
+     * @author Eva.Caesar Liu
+     * @date 2023/02/14 11:14
+     */
+    protected LoginUserInfo getLoginUser () {
+        return (LoginUserInfo)SecurityUtils.getSubject().getPrincipal();
+    }
+
+}
diff --git a/server/platform/src/main/java/com/doumee/api/business/BrandController.java b/server/platform/src/main/java/com/doumee/api/business/BrandController.java
new file mode 100644
index 0000000..c10e7ad
--- /dev/null
+++ b/server/platform/src/main/java/com/doumee/api/business/BrandController.java
@@ -0,0 +1,98 @@
+package com.doumee.api.business;
+
+import com.doumee.api.BaseController;
+import com.doumee.core.annotation.excel.ExcelExporter;
+import com.doumee.core.annotation.pr.PreventRepeat;
+import com.doumee.core.model.ApiResponse;
+import com.doumee.core.model.PageData;
+import com.doumee.core.model.PageWrap;
+import com.doumee.dao.business.model.Brand;
+import com.doumee.service.business.BrandService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author 姹熻箘韫�
+ * @date 2023/05/12 13:58
+ */
+@Api(tags = "鍝佺墝淇℃伅琛�")
+@RestController
+@RequestMapping("/business/brand")
+public class BrandController extends BaseController {
+
+    @Autowired
+    private BrandService brandService;
+
+    @PreventRepeat
+    @ApiOperation("鏂板缓")
+    @PostMapping("/create")
+    @RequiresPermissions("business:brand:create")
+    public ApiResponse create(@RequestBody Brand brand) {
+        return ApiResponse.success(brandService.create(brand));
+    }
+
+    @ApiOperation("鏍规嵁ID鍒犻櫎")
+    @GetMapping("/delete/{id}")
+    @RequiresPermissions("business:brand:delete")
+    public ApiResponse deleteById(@PathVariable Integer id) {
+        brandService.deleteById(id);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鎵归噺鍒犻櫎")
+    @GetMapping("/delete/batch")
+    @RequiresPermissions("business:brand:delete")
+    public ApiResponse deleteByIdInBatch(@RequestParam String ids) {
+        String [] idArray = ids.split(",");
+        List<Integer> idList = new ArrayList<>();
+        for (String id : idArray) {
+            idList.add(Integer.valueOf(id));
+        }
+        brandService.deleteByIdInBatch(idList);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鏍规嵁ID淇敼")
+    @PostMapping("/updateById")
+    @RequiresPermissions("business:brand:update")
+    public ApiResponse updateById(@RequestBody Brand brand) {
+        brandService.updateById(brand);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鍒嗛〉鏌ヨ")
+    @PostMapping("/page")
+    @RequiresPermissions("business:brand:query")
+    public ApiResponse<PageData<Brand>> findPage (@RequestBody PageWrap<Brand> pageWrap) {
+        return ApiResponse.success(brandService.findPage(pageWrap));
+    }
+
+    @ApiOperation("瀵煎嚭Excel")
+    @PostMapping("/exportExcel")
+    @RequiresPermissions("business:brand:exportExcel")
+    public void exportExcel (@RequestBody PageWrap<Brand> pageWrap, HttpServletResponse response) {
+        ExcelExporter.build(Brand.class).export(brandService.findPage(pageWrap).getRecords(), "鍝佺墝淇℃伅琛�", response);
+    }
+
+    @ApiOperation("鏍规嵁ID鏌ヨ")
+    @GetMapping("/{id}")
+    @RequiresPermissions("business:brand:query")
+    public ApiResponse findById(@PathVariable Integer id) {
+        return ApiResponse.success(brandService.findById(id));
+    }
+
+    @ApiOperation("鍒楄〃鏌ヨ")
+    @PostMapping("/list")
+    public ApiResponse<List<Brand>> findList (@RequestBody Brand brand) {
+        return ApiResponse.success(brandService.findList(brand));
+    }
+
+
+}
diff --git a/server/platform/src/main/java/com/doumee/api/business/CateAttrController.java b/server/platform/src/main/java/com/doumee/api/business/CateAttrController.java
new file mode 100644
index 0000000..41b7594
--- /dev/null
+++ b/server/platform/src/main/java/com/doumee/api/business/CateAttrController.java
@@ -0,0 +1,100 @@
+package com.doumee.api.business;
+
+import com.doumee.api.BaseController;
+import com.doumee.core.annotation.excel.ExcelExporter;
+import com.doumee.core.annotation.pr.PreventRepeat;
+import com.doumee.core.model.ApiResponse;
+import com.doumee.core.model.PageData;
+import com.doumee.core.model.PageWrap;
+import com.doumee.dao.business.model.CateAttr;
+import com.doumee.service.business.CateAttrService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author 姹熻箘韫�
+ * @date 2023/05/12 13:58
+ */
+@Api(tags = "鍝佺被灞炴�ц鏍煎�间俊鎭〃")
+@RestController
+@RequestMapping("/business/cateAttr")
+public class CateAttrController extends BaseController {
+
+    @Autowired
+    private CateAttrService cateAttrService;
+
+    @PreventRepeat
+    @ApiOperation("鏂板缓")
+    @PostMapping("/create")
+    @RequiresPermissions("business:cateattr:create")
+    public ApiResponse create(@RequestBody CateAttr cateAttr) {
+        return ApiResponse.success(cateAttrService.create(cateAttr));
+    }
+
+    @ApiOperation("鏍规嵁ID鍒犻櫎")
+    @GetMapping("/delete/{id}")
+    @RequiresPermissions("business:cateattr:delete")
+    public ApiResponse deleteById(@PathVariable Integer id) {
+        cateAttrService.deleteById(id);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鎵归噺鍒犻櫎")
+    @GetMapping("/delete/batch")
+    @RequiresPermissions("business:cateattr:delete")
+    public ApiResponse deleteByIdInBatch(@RequestParam String ids) {
+        String [] idArray = ids.split(",");
+        List<Integer> idList = new ArrayList<>();
+        for (String id : idArray) {
+            idList.add(Integer.valueOf(id));
+        }
+        cateAttrService.deleteByIdInBatch(idList);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鏍规嵁ID淇敼")
+    @PostMapping("/updateById")
+    @RequiresPermissions("business:cateattr:update")
+    public ApiResponse updateById(@RequestBody CateAttr cateAttr) {
+        cateAttrService.updateById(cateAttr);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鍒嗛〉鏌ヨ")
+    @PostMapping("/page")
+    @RequiresPermissions("business:cateattr:query")
+    public ApiResponse<PageData<CateAttr>> findPage (@RequestBody PageWrap<CateAttr> pageWrap) {
+        return ApiResponse.success(cateAttrService.findPage(pageWrap));
+    }
+
+    @ApiOperation("瀵煎嚭Excel")
+    @PostMapping("/exportExcel")
+    @RequiresPermissions("business:cateattr:exportExcel")
+    public void exportExcel (@RequestBody PageWrap<CateAttr> pageWrap, HttpServletResponse response) {
+        ExcelExporter.build(CateAttr.class).export(cateAttrService.findPage(pageWrap).getRecords(), "鍝佺被灞炴�ц鏍煎�间俊鎭〃", response);
+    }
+
+    @ApiOperation("鏍规嵁ID鏌ヨ")
+    @GetMapping("/{id}")
+    @RequiresPermissions("business:cateattr:query")
+    public ApiResponse findById(@PathVariable Integer id) {
+        return ApiResponse.success(cateAttrService.findById(id));
+    }
+
+
+
+    @ApiOperation("鍒楄〃鏌ヨ")
+    @PostMapping("/list")
+    public ApiResponse<List<CateAttr>> findList (@RequestBody CateAttr cateAttr) {
+        return ApiResponse.success(cateAttrService.findList(cateAttr));
+    }
+
+
+}
diff --git a/server/platform/src/main/java/com/doumee/api/business/CateBudgetController.java b/server/platform/src/main/java/com/doumee/api/business/CateBudgetController.java
new file mode 100644
index 0000000..d70e772
--- /dev/null
+++ b/server/platform/src/main/java/com/doumee/api/business/CateBudgetController.java
@@ -0,0 +1,65 @@
+package com.doumee.api.business;
+
+import com.doumee.api.BaseController;
+import com.doumee.core.annotation.pr.PreventRepeat;
+import com.doumee.core.model.ApiResponse;
+import com.doumee.core.model.PageData;
+import com.doumee.core.model.PageWrap;
+import com.doumee.dao.business.model.CateBudget;
+import com.doumee.service.business.CateBudgetService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * @author 姹熻箘韫�
+ * @since 2023/05/15 17:09
+ */
+@Api(tags = "鍝佺被浠锋牸鍖洪棿琛�")
+@RestController
+@RequestMapping("/business/cateBudget")
+public class CateBudgetController extends BaseController {
+
+    @Autowired
+    private CateBudgetService cateBudgetService;
+
+    @PreventRepeat
+    @ApiOperation("鏂板缓")
+    @PostMapping("/create")
+    @RequiresPermissions("business:catebudget:create")
+    public ApiResponse create(@RequestBody CateBudget cateBudget) {
+        return ApiResponse.success(cateBudgetService.create(cateBudget));
+    }
+
+    @ApiOperation("鏍规嵁ID鍒犻櫎")
+    @GetMapping("/delete/{id}")
+    @RequiresPermissions("business:catebudget:delete")
+    public ApiResponse deleteById(@PathVariable Integer id) {
+        cateBudgetService.deleteById(id);
+        return ApiResponse.success(null);
+    }
+    @ApiOperation("鏍规嵁ID淇敼")
+    @PostMapping("/updateById")
+    @RequiresPermissions("business:catebudget:update")
+    public ApiResponse updateById(@RequestBody CateBudget cateBudget) {
+        cateBudgetService.updateById(cateBudget);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鍒嗛〉鏌ヨ")
+    @PostMapping("/page")
+    @RequiresPermissions("business:catebudget:query")
+    public ApiResponse<PageData<CateBudget>> findPage (@RequestBody PageWrap<CateBudget> pageWrap) {
+        return ApiResponse.success(cateBudgetService.findPage(pageWrap));
+    }
+
+
+    @ApiOperation("鏍规嵁ID鏌ヨ")
+    @GetMapping("/{id}")
+    @RequiresPermissions("business:catebudget:query")
+    public ApiResponse findById(@PathVariable Integer id) {
+        return ApiResponse.success(cateBudgetService.findById(id));
+    }
+}
diff --git a/server/platform/src/main/java/com/doumee/api/business/CateParamController.java b/server/platform/src/main/java/com/doumee/api/business/CateParamController.java
new file mode 100644
index 0000000..5b23d31
--- /dev/null
+++ b/server/platform/src/main/java/com/doumee/api/business/CateParamController.java
@@ -0,0 +1,90 @@
+package com.doumee.api.business;
+
+import com.doumee.api.BaseController;
+import com.doumee.core.annotation.excel.ExcelExporter;
+import com.doumee.core.annotation.pr.PreventRepeat;
+import com.doumee.core.model.ApiResponse;
+import com.doumee.core.model.PageData;
+import com.doumee.core.model.PageWrap;
+import com.doumee.dao.business.model.CateParam;
+import com.doumee.service.business.CateParamService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author 姹熻箘韫�
+ * @date 2023/05/12 13:58
+ */
+@Api(tags = "鍝佺被鍙傛暟淇℃伅琛�")
+@RestController
+@RequestMapping("/business/cateParam")
+public class CateParamController extends BaseController {
+
+    @Autowired
+    private CateParamService cateParamService;
+
+    @PreventRepeat
+    @ApiOperation("鏂板缓")
+    @PostMapping("/create")
+    @RequiresPermissions("business:cateparam:create")
+    public ApiResponse create(@RequestBody CateParam cateParam) {
+        return ApiResponse.success(cateParamService.create(cateParam));
+    }
+
+    @ApiOperation("鏍规嵁ID鍒犻櫎")
+    @GetMapping("/delete/{id}")
+    @RequiresPermissions("business:cateparam:delete")
+    public ApiResponse deleteById(@PathVariable Integer id) {
+        cateParamService.deleteById(id);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鎵归噺鍒犻櫎")
+    @GetMapping("/delete/batch")
+    @RequiresPermissions("business:cateparam:delete")
+    public ApiResponse deleteByIdInBatch(@RequestParam String ids) {
+        String [] idArray = ids.split(",");
+        List<Integer> idList = new ArrayList<>();
+        for (String id : idArray) {
+            idList.add(Integer.valueOf(id));
+        }
+        cateParamService.deleteByIdInBatch(idList);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鏍规嵁ID淇敼")
+    @PostMapping("/updateById")
+    @RequiresPermissions("business:cateparam:update")
+    public ApiResponse updateById(@RequestBody CateParam cateParam) {
+        cateParamService.updateById(cateParam);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鍒嗛〉鏌ヨ")
+    @PostMapping("/page")
+    @RequiresPermissions("business:cateparam:query")
+    public ApiResponse<PageData<CateParam>> findPage (@RequestBody PageWrap<CateParam> pageWrap) {
+        return ApiResponse.success(cateParamService.findPage(pageWrap));
+    }
+
+    @ApiOperation("瀵煎嚭Excel")
+    @PostMapping("/exportExcel")
+    @RequiresPermissions("business:cateparam:exportExcel")
+    public void exportExcel (@RequestBody PageWrap<CateParam> pageWrap, HttpServletResponse response) {
+        ExcelExporter.build(CateParam.class).export(cateParamService.findPage(pageWrap).getRecords(), "鍝佺被鍙傛暟淇℃伅琛�", response);
+    }
+
+    @ApiOperation("鏍规嵁ID鏌ヨ")
+    @GetMapping("/{id}")
+    @RequiresPermissions("business:cateparam:query")
+    public ApiResponse findById(@PathVariable Integer id) {
+        return ApiResponse.success(cateParamService.findById(id));
+    }
+}
diff --git a/server/platform/src/main/java/com/doumee/api/business/CategoryController.java b/server/platform/src/main/java/com/doumee/api/business/CategoryController.java
new file mode 100644
index 0000000..2bd2e82
--- /dev/null
+++ b/server/platform/src/main/java/com/doumee/api/business/CategoryController.java
@@ -0,0 +1,112 @@
+package com.doumee.api.business;
+
+import   com.doumee.core.model.ApiResponse;
+import com.doumee.api.BaseController;
+import com.doumee.core.annotation.excel.ExcelExporter;
+import com.doumee.core.annotation.pr.PreventRepeat;
+import com.doumee.core.model.ApiResponse;
+import com.doumee.core.model.PageData;
+import com.doumee.core.model.PageWrap;
+import com.doumee.dao.business.model.Category;
+import com.doumee.service.business.CategoryService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author 姹熻箘韫�
+ * @date 2023/05/12 13:58
+ */
+@Api(tags = "鍝佺被淇℃伅琛�")
+@RestController
+@RequestMapping("/business/category")
+public class CategoryController extends BaseController {
+
+    @Autowired
+    private CategoryService categoryService;
+
+    @PreventRepeat
+    @ApiOperation("鏂板缓")
+    @PostMapping("/create")
+    @RequiresPermissions("business:category:create")
+    public ApiResponse create(@RequestBody Category category) {
+        return ApiResponse.success(categoryService.create(category));
+    }
+
+    @ApiOperation("鏍规嵁ID鍒犻櫎")
+    @GetMapping("/delete/{id}")
+    @RequiresPermissions("business:category:delete")
+    public ApiResponse deleteById(@PathVariable Integer id) {
+        categoryService.deleteById(id);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鎵归噺鍒犻櫎")
+    @GetMapping("/delete/batch")
+    @RequiresPermissions("business:category:delete")
+    public ApiResponse deleteByIdInBatch(@RequestParam String ids) {
+        String [] idArray = ids.split(",");
+        List<Integer> idList = new ArrayList<>();
+        for (String id : idArray) {
+            idList.add(Integer.valueOf(id));
+        }
+        categoryService.deleteByIdInBatch(idList);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鏍规嵁ID淇敼")
+    @PostMapping("/updateById")
+    @RequiresPermissions("business:category:update")
+    public ApiResponse updateById(@RequestBody Category category) {
+        categoryService.updateById(category);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鍒嗛〉鏌ヨ")
+    @PostMapping("/page")
+    @RequiresPermissions("business:category:query")
+    public ApiResponse<PageData<Category>> findPage (@RequestBody PageWrap<Category> pageWrap) {
+        return ApiResponse.success(categoryService.findPage(pageWrap));
+    }
+
+    @ApiOperation("瀵煎嚭Excel")
+    @PostMapping("/exportExcel")
+    @RequiresPermissions("business:category:exportExcel")
+    public void exportExcel (@RequestBody PageWrap<Category> pageWrap, HttpServletResponse response) {
+        ExcelExporter.build(Category.class).export(categoryService.findPage(pageWrap).getRecords(), "鍝佺被淇℃伅琛�", response);
+    }
+
+    @ApiOperation("鏍规嵁ID鏌ヨ")
+    @GetMapping("/{id}")
+    @RequiresPermissions("business:category:query")
+    public ApiResponse findById(@PathVariable Integer id) {
+        return ApiResponse.success(categoryService.findById(id));
+    }
+
+    @ApiOperation("淇敼鐘舵��")
+    @PostMapping("/updateDisableById")
+    @RequiresPermissions("business:category:update")
+    public ApiResponse updateDisableById(@RequestBody Category category) {
+        categoryService.updateDisableById(category);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鍒楄〃 - H5")
+    @PostMapping("/list")
+    public ApiResponse<List<Category>> findList (@RequestBody Category category) {
+        return ApiResponse.success(categoryService.findList(category));
+    }
+
+    @ApiOperation("鍒楄〃 - 鍟嗗搧閫夋嫨")
+    @GetMapping("/findListForGoodsId")
+    public ApiResponse<List<Category>> findListForGoodsId (Integer goodsId) {
+        return ApiResponse.success(categoryService.findListForGoods(goodsId));
+    }
+
+}
diff --git a/server/platform/src/main/java/com/doumee/api/business/GoodsController.java b/server/platform/src/main/java/com/doumee/api/business/GoodsController.java
new file mode 100644
index 0000000..2720321
--- /dev/null
+++ b/server/platform/src/main/java/com/doumee/api/business/GoodsController.java
@@ -0,0 +1,144 @@
+package com.doumee.api.business;
+
+import com.doumee.api.BaseController;
+import com.doumee.core.annotation.excel.ExcelExporter;
+import com.doumee.core.annotation.pr.PreventRepeat;
+import com.doumee.core.model.PageData;
+import com.doumee.core.model.PageWrap;
+import com.doumee.dao.business.model.Goods;
+import com.doumee.dao.business.model.dto.GoodsRequest;
+import com.doumee.service.business.GoodsService;
+import io.swagger.annotations.*;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+import  com.doumee.core.model.ApiResponse;
+
+/**
+ * @author 姹熻箘韫�
+ * @date 2023/05/12 13:58
+ */
+@Api(tags = "鍟嗗搧淇℃伅琛�")
+@RestController
+@RequestMapping("/business/goods")
+public class GoodsController extends BaseController {
+
+    @Autowired
+    private GoodsService goodsService;
+
+    @PreventRepeat
+    @ApiOperation("鏂板缓")
+    @PostMapping("/create")
+    @RequiresPermissions("business:goods:create")
+    public ApiResponse create(@RequestBody Goods goods) {
+        return ApiResponse.success(goodsService.create(goods));
+    }
+
+    @ApiOperation("鏍规嵁ID鍒犻櫎")
+    @GetMapping("/delete/{id}")
+    @RequiresPermissions("business:goods:delete")
+    public ApiResponse deleteById(@PathVariable Integer id) {
+        goodsService.deleteById(id);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鎵归噺鍒犻櫎")
+    @GetMapping("/delete/batch")
+    @RequiresPermissions("business:goods:delete")
+    public ApiResponse deleteByIdInBatch(@RequestParam String ids) {
+        String [] idArray = ids.split(",");
+        List<Integer> idList = new ArrayList<>();
+        for (String id : idArray) {
+            idList.add(Integer.valueOf(id));
+        }
+        goodsService.deleteByIdInBatch(idList);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鏍规嵁ID淇敼")
+    @PostMapping("/updateById")
+    @RequiresPermissions("business:goods:update")
+    public ApiResponse updateById(@RequestBody Goods goods) {
+        goodsService.updateById(goods);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鍒嗛〉鏌ヨ")
+    @PostMapping("/page")
+    @RequiresPermissions("business:goods:query")
+    public ApiResponse<PageData<Goods>> findPage (@RequestBody PageWrap<Goods> pageWrap) {
+        return ApiResponse.success(goodsService.findPage(pageWrap));
+    }
+
+    @ApiOperation("瀵煎嚭Excel")
+    @PostMapping("/exportExcel")
+    @RequiresPermissions("business:goods:exportExcel")
+    public void exportExcel (@RequestBody PageWrap<Goods> pageWrap, HttpServletResponse response) {
+        ExcelExporter.build(Goods.class).export(goodsService.findPage(pageWrap).getRecords(), "鍟嗗搧淇℃伅琛�", response);
+    }
+
+    @ApiOperation("鏍规嵁ID鏌ヨ")
+    @GetMapping("/{id}")
+    @RequiresPermissions("business:goods:query")
+    public ApiResponse findById(@PathVariable Integer id) {
+        return ApiResponse.success(goodsService.findById(id));
+    }
+
+    @ApiOperation("瀵煎叆妯℃澘")
+    @PostMapping("/importExcel")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "file", value = "file", required = true, paramType = "query", dataType = "file", dataTypeClass = File.class),
+    })
+//    @RequiresPermissions("business:goods:create")
+    public ApiResponse<Integer> importExcel (@ApiParam(value = "file") MultipartFile file) {
+        return ApiResponse.success(goodsService.importBatch(file));
+    }
+
+
+    @ApiOperation("淇敼鐘舵��")
+    @PostMapping("/updateDisableById")
+    @RequiresPermissions("business:category:update")
+    public ApiResponse updateDisableById(@RequestBody Goods goods) {
+        goodsService.updateDisableById(goods);
+        return ApiResponse.success(null);
+    }
+
+
+    @ApiOperation("鍒楄〃 - H5")
+    @PostMapping("/list")
+    public  ApiResponse<List<Goods>> findList (@RequestBody Goods goods) {
+        return com.doumee.core.model.ApiResponse.success(goodsService.findList(goods));
+    }
+
+
+    @ApiOperation("鍟嗗搧鍒嗛〉鍒楄〃 - H5")
+    @PostMapping("/goodsPage")
+    public ApiResponse<PageData<Goods>> goodsPage(@RequestBody PageWrap<GoodsRequest> pageWrap) {
+        return ApiResponse.success(goodsService.getGoodsPage(pageWrap));
+    }
+
+    @ApiOperation("鍒楄〃鏌ヨ - H5")
+    @PostMapping("/listForH5")
+    public ApiResponse<List<Goods>> listForH5 (@RequestBody GoodsRequest goodsRequest) {
+        return ApiResponse.success(goodsService.findListForH5(goodsRequest));
+    }
+
+    @ApiOperation("鑾峰彇H5棣栭〉鍥�")
+    @PostMapping("/h5Image")
+    public ApiResponse<String> h5Image () {
+        return ApiResponse.success(goodsService.h5Image());
+    }
+
+    @ApiOperation("瀵煎嚭瀵煎叆妯℃澘")
+    @PostMapping("/export")
+    public void export (HttpServletRequest request, HttpServletResponse response) throws Exception  {
+        goodsService.export(request,response);
+    }
+}
diff --git a/server/platform/src/main/java/com/doumee/api/business/GoodsParamController.java b/server/platform/src/main/java/com/doumee/api/business/GoodsParamController.java
new file mode 100644
index 0000000..70242f8
--- /dev/null
+++ b/server/platform/src/main/java/com/doumee/api/business/GoodsParamController.java
@@ -0,0 +1,90 @@
+package com.doumee.api.business;
+
+import com.doumee.api.BaseController;
+import com.doumee.core.annotation.excel.ExcelExporter;
+import com.doumee.core.annotation.pr.PreventRepeat;
+import com.doumee.core.model.ApiResponse;
+import com.doumee.core.model.PageData;
+import com.doumee.core.model.PageWrap;
+import com.doumee.dao.business.model.GoodsParam;
+import com.doumee.service.business.GoodsParamService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author 姹熻箘韫�
+ * @date 2023/05/12 13:58
+ */
+@Api(tags = "鍟嗗搧鍙傛暟閰嶇疆琛�")
+@RestController
+@RequestMapping("/business/goodsParam")
+public class GoodsParamController extends BaseController {
+
+    @Autowired
+    private GoodsParamService goodsParamService;
+
+    @PreventRepeat
+    @ApiOperation("鏂板缓")
+    @PostMapping("/create")
+    @RequiresPermissions("business:goodsparam:create")
+    public ApiResponse create(@RequestBody GoodsParam goodsParam) {
+        return ApiResponse.success(goodsParamService.create(goodsParam));
+    }
+
+    @ApiOperation("鏍规嵁ID鍒犻櫎")
+    @GetMapping("/delete/{id}")
+    @RequiresPermissions("business:goodsparam:delete")
+    public ApiResponse deleteById(@PathVariable Integer id) {
+        goodsParamService.deleteById(id);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鎵归噺鍒犻櫎")
+    @GetMapping("/delete/batch")
+    @RequiresPermissions("business:goodsparam:delete")
+    public ApiResponse deleteByIdInBatch(@RequestParam String ids) {
+        String [] idArray = ids.split(",");
+        List<Integer> idList = new ArrayList<>();
+        for (String id : idArray) {
+            idList.add(Integer.valueOf(id));
+        }
+        goodsParamService.deleteByIdInBatch(idList);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鏍规嵁ID淇敼")
+    @PostMapping("/updateById")
+    @RequiresPermissions("business:goodsparam:update")
+    public ApiResponse updateById(@RequestBody GoodsParam goodsParam) {
+        goodsParamService.updateById(goodsParam);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鍒嗛〉鏌ヨ")
+    @PostMapping("/page")
+    @RequiresPermissions("business:goodsparam:query")
+    public ApiResponse<PageData<GoodsParam>> findPage (@RequestBody PageWrap<GoodsParam> pageWrap) {
+        return ApiResponse.success(goodsParamService.findPage(pageWrap));
+    }
+
+    @ApiOperation("瀵煎嚭Excel")
+    @PostMapping("/exportExcel")
+    @RequiresPermissions("business:goodsparam:exportExcel")
+    public void exportExcel (@RequestBody PageWrap<GoodsParam> pageWrap, HttpServletResponse response) {
+        ExcelExporter.build(GoodsParam.class).export(goodsParamService.findPage(pageWrap).getRecords(), "鍟嗗搧鍙傛暟閰嶇疆琛�", response);
+    }
+
+    @ApiOperation("鏍规嵁ID鏌ヨ")
+    @GetMapping("/{id}")
+    @RequiresPermissions("business:goodsparam:query")
+    public ApiResponse findById(@PathVariable Integer id) {
+        return ApiResponse.success(goodsParamService.findById(id));
+    }
+}
diff --git a/server/platform/src/main/java/com/doumee/api/business/MultifileController.java b/server/platform/src/main/java/com/doumee/api/business/MultifileController.java
new file mode 100644
index 0000000..0fcfd2a
--- /dev/null
+++ b/server/platform/src/main/java/com/doumee/api/business/MultifileController.java
@@ -0,0 +1,90 @@
+package com.doumee.api.business;
+
+import com.doumee.api.BaseController;
+import com.doumee.core.annotation.excel.ExcelExporter;
+import com.doumee.core.annotation.pr.PreventRepeat;
+import com.doumee.core.model.ApiResponse;
+import com.doumee.core.model.PageData;
+import com.doumee.core.model.PageWrap;
+import com.doumee.dao.business.model.Multifile;
+import com.doumee.service.business.MultifileService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author 姹熻箘韫�
+ * @date 2023/05/12 13:58
+ */
+@Api(tags = "闄勪欢淇℃伅琛�")
+@RestController
+@RequestMapping("/business/multifile")
+public class MultifileController extends BaseController {
+
+    @Autowired
+    private MultifileService multifileService;
+
+    @PreventRepeat
+    @ApiOperation("鏂板缓")
+    @PostMapping("/create")
+    @RequiresPermissions("business:multifile:create")
+    public ApiResponse create(@RequestBody Multifile multifile) {
+        return ApiResponse.success(multifileService.create(multifile));
+    }
+
+    @ApiOperation("鏍规嵁ID鍒犻櫎")
+    @GetMapping("/delete/{id}")
+    @RequiresPermissions("business:multifile:delete")
+    public ApiResponse deleteById(@PathVariable Integer id) {
+        multifileService.deleteById(id);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鎵归噺鍒犻櫎")
+    @GetMapping("/delete/batch")
+    @RequiresPermissions("business:multifile:delete")
+    public ApiResponse deleteByIdInBatch(@RequestParam String ids) {
+        String [] idArray = ids.split(",");
+        List<Integer> idList = new ArrayList<>();
+        for (String id : idArray) {
+            idList.add(Integer.valueOf(id));
+        }
+        multifileService.deleteByIdInBatch(idList);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鏍规嵁ID淇敼")
+    @PostMapping("/updateById")
+    @RequiresPermissions("business:multifile:update")
+    public ApiResponse updateById(@RequestBody Multifile multifile) {
+        multifileService.updateById(multifile);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鍒嗛〉鏌ヨ")
+    @PostMapping("/page")
+    @RequiresPermissions("business:multifile:query")
+    public ApiResponse<PageData<Multifile>> findPage (@RequestBody PageWrap<Multifile> pageWrap) {
+        return ApiResponse.success(multifileService.findPage(pageWrap));
+    }
+
+    @ApiOperation("瀵煎嚭Excel")
+    @PostMapping("/exportExcel")
+    @RequiresPermissions("business:multifile:exportExcel")
+    public void exportExcel (@RequestBody PageWrap<Multifile> pageWrap, HttpServletResponse response) {
+        ExcelExporter.build(Multifile.class).export(multifileService.findPage(pageWrap).getRecords(), "闄勪欢淇℃伅琛�", response);
+    }
+
+    @ApiOperation("鏍规嵁ID鏌ヨ")
+    @GetMapping("/{id}")
+    @RequiresPermissions("business:multifile:query")
+    public ApiResponse findById(@PathVariable Integer id) {
+        return ApiResponse.success(multifileService.findById(id));
+    }
+}
diff --git a/server/src/main/java/com/doumee/api/common/CaptchaController.java b/server/platform/src/main/java/com/doumee/api/common/CaptchaController.java
similarity index 100%
copy from server/src/main/java/com/doumee/api/common/CaptchaController.java
copy to server/platform/src/main/java/com/doumee/api/common/CaptchaController.java
diff --git a/server/platform/src/main/java/com/doumee/api/common/PublicController.java b/server/platform/src/main/java/com/doumee/api/common/PublicController.java
new file mode 100644
index 0000000..ab7e6b6
--- /dev/null
+++ b/server/platform/src/main/java/com/doumee/api/common/PublicController.java
@@ -0,0 +1,327 @@
+package com.doumee.api.common;
+
+import com.alibaba.fastjson.JSONObject;
+import com.doumee.api.BaseController;
+import com.doumee.biz.system.SystemDictDataBiz;
+import com.doumee.core.annotation.trace.Trace;
+import com.doumee.core.utils.Constants;
+import com.doumee.core.utils.DateUtil;
+import com.doumee.core.utils.aliyun.ALiYunUtil;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
+import org.springframework.web.multipart.commons.CommonsMultipartResolver;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.File;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.UUID;
+
+/**
+ * @author Eva.Caesar Liu
+ * @date 2023/02/14 11:14
+ */
+@Api(tags = "鍏叡鎺ュ彛")
+@Trace(exclude = true)
+@RestController
+@RequestMapping("/public")
+@Slf4j
+public class PublicController extends BaseController {
+
+
+    @Autowired
+    private SystemDictDataBiz systemDictDataBiz;
+
+
+    @ApiOperation(value = "涓婁紶", notes = "涓婁紶", httpMethod = "POST", position = 6)
+    @ApiImplicitParams({
+        @ApiImplicitParam(name = "folder", value = "鏂囦欢澶�", required = true, paramType = "query", dataType = "String", dataTypeClass = String.class),
+    })
+    @PostMapping(value = "/upload", headers = "content-type=multipart/form-data")
+    public void uploadMobile(String folder, HttpServletRequest request, HttpServletResponse response) throws Exception {
+        MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
+        upload(multipartRequest, response, folder + "/",
+            systemDictDataBiz.queryByCode(Constants.OSS,Constants.BUCKETNAME).getCode(),
+            systemDictDataBiz.queryByCode(Constants.OSS,Constants.ACCESS_ID).getCode(),
+            systemDictDataBiz.queryByCode(Constants.OSS,Constants.ACCESS_KEY).getCode(),
+            systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode(),
+            systemDictDataBiz.queryByCode(Constants.OSS,Constants.ENDPOINT).getCode());
+    }
+
+
+    @ApiOperation(value = "涓婁紶鍥剧墖", notes = "涓婁紶鍥剧墖", httpMethod = "POST", position = 6)
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "folder", value = "鏂囦欢澶�", required = true, paramType = "query", dataType = "String", dataTypeClass = String.class),
+    })
+    @PostMapping(value = "/uploadPicture", headers = "content-type=multipart/form-data")
+    public void uploadPicture(String folder, HttpServletRequest request, HttpServletResponse response) throws Exception {
+        MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
+        Iterator<String> fileNames = multipartRequest.getFileNames();
+        Map<String, Object> context = new HashMap<>();
+        while (fileNames.hasNext()){
+            MultipartFile file = multipartRequest.getFile(fileNames.next());
+            String fileName = file.getOriginalFilename();
+            String suffix = fileName.substring(fileName.lastIndexOf("."));
+            if ( !StringUtils.equalsIgnoreCase(suffix, ".jpg") || !StringUtils.equalsIgnoreCase(suffix, ".png")) {
+                context.put("code", 0);
+                context.put("message", "瀵逛笉璧凤紝鏂囦欢鏍煎紡涓婁紶鏈夎锛�");
+            }
+        }
+        upload(multipartRequest, response, folder + "/",
+                systemDictDataBiz.queryByCode(Constants.OSS,Constants.BUCKETNAME).getCode(),
+                systemDictDataBiz.queryByCode(Constants.OSS,Constants.ACCESS_ID).getCode(),
+                systemDictDataBiz.queryByCode(Constants.OSS,Constants.ACCESS_KEY).getCode(),
+                systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode(),
+                systemDictDataBiz.queryByCode(Constants.OSS,Constants.ENDPOINT).getCode());
+    }
+
+    public void upload(HttpServletRequest request, HttpServletResponse response, String folder, String bucketName,
+        String access_id, String access_key, String resourcePath, String endpoint) throws Exception {
+        response.setCharacterEncoding("UTF-8");
+        response.setContentType("text/html;charset=UTF-8");
+        Map<String, Object> context = new HashMap<>();
+        CommonsMultipartResolver multipartResovler = new CommonsMultipartResolver();
+        if (multipartResovler.isMultipart(request)) {
+            MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
+            Iterator<String> it = multipartRequest.getFileNames();
+            while (it.hasNext()) {
+                MultipartFile file = multipartRequest.getFile((String) it.next());// file
+                // multipartRequest.getFile((String)
+                // it.next());
+                if (file != null) {
+                    // 1銆佷笂浼犲埌鏈嶅姟鍣ㄤ复鏃舵枃浠跺す
+                    String uploadFileName = file.getOriginalFilename();
+                    String originname = uploadFileName;
+                    if (originname.lastIndexOf("/") >= 0) {
+                        originname = originname.substring(originname.lastIndexOf("/") + 1);
+                    }
+                    String nfix = "";// 鍚庣紑鍚�
+                    if (StringUtils.isNotBlank(uploadFileName)) {
+                        nfix = uploadFileName.substring(uploadFileName.lastIndexOf("."));
+                    }
+                    if (StringUtils.equalsIgnoreCase(nfix, ".exe")) {
+                        context.put("code", 4000);
+                        context.put("message", "瀵逛笉璧凤紝鏂囦欢鏍煎紡\".exe\"涓婁紶鏈夎锛�");
+                        return;
+                    }
+                    if (StringUtils.equalsIgnoreCase(nfix, ".dll")) {
+                        context.put("code", 4000);
+                        context.put("message", "瀵逛笉璧凤紝鏂囦欢鏍煎紡\".dll\"涓婁紶鏈夎锛�");
+                        return;
+                    }
+                    String nowDate = DateUtil.getNowShortDate();// 褰撳墠鏃堕棿锛堝勾鏈堟棩锛�
+                    String fileName = UUID.randomUUID().toString() + nfix;
+                    String tempFileName = nowDate + "/" + fileName;
+                    String key = folder + tempFileName;// 鏂囦欢鍚�
+                    ALiYunUtil obs = new ALiYunUtil(endpoint,access_id, access_key);
+                    if (obs.uploadOnlineObject(file.getInputStream(),bucketName, key,null)) {
+                        // 绉诲姩鎴愬姛,杩斿洖鏂囦欢鍚�
+                        // sendSuccessMessage(response, resourcePath+key);
+                        context.put("success", true);
+                        context.put("code", 200);
+                        context.put("errno",0);
+                        JSONObject fileJSON = new JSONObject();
+                        fileJSON.put("url", resourcePath + key);
+                        fileJSON.put("imgaddr", tempFileName);
+                        fileJSON.put("imgname", fileName);
+                        fileJSON.put("originname", originname);
+                        context.put("data",fileJSON);
+                        context.put("message","璇锋眰鎴愬姛");
+                        writerJson(response, context);
+                        return;
+                    } else {
+                        // 绉诲姩澶辫触
+                        context.put("code", 0);
+                        context.put("message", "涓婁紶澶辫触");
+                        writerJson(response, context);
+                        return;
+                    }
+                }
+
+            }
+        }
+        context.put("code", 0);
+        context.put("message", "涓婁紶澶辫触");
+        context.put("errno",0);
+        writerJson(response, context);
+        return;
+    }
+
+    public static void writerJson(HttpServletResponse response, Object object) {
+        response.setContentType("application/json");
+        writer(response, JSONObject.toJSONString(object));
+    }
+
+    private static void writer(HttpServletResponse response, String str) {
+        try {
+            StringBuffer result = new StringBuffer();
+            //璁剧疆椤甸潰涓嶇紦瀛�
+            response.setHeader("Pragma", "No-cache");
+            response.setHeader("Cache-Control", "no-cache");
+            response.setCharacterEncoding("UTF-8");
+            PrintWriter out = null;
+            out = response.getWriter();
+            out.print(str);
+            out.flush();
+            out.close();
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+    }
+
+
+
+    @ApiOperation(value = "涓婁紶", notes = "涓婁紶", httpMethod = "POST", position = 6)
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "folder", value = "鏂囦欢澶�", required = true, paramType = "query", dataType = "String", dataTypeClass = String.class),
+    })
+    @PostMapping(value = "/uploadLocal", headers = "content-type=multipart/form-data")
+    public void uploadLocal(String folder, HttpServletRequest request, HttpServletResponse response) throws Exception {
+        MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
+
+        // CommonsMultipartFile files = (CommonsMultipartFile) multipartRequest.getFile("filedata");
+        uploadFileLocal(multipartRequest,  folder+ "/", response,
+                systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.GOODS_IMG_DIR).getCode() ,
+                systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.FILE_DIR).getCode());
+
+    }
+
+    public void uploadFileLocal(HttpServletRequest request, String folder, HttpServletResponse response, String rootPath,String dir) throws Exception {
+        response.setCharacterEncoding("UTF-8");
+        response.setContentType("text/html;charset=UTF-8");
+        CommonsMultipartResolver multipartResovler = new CommonsMultipartResolver();
+        Map<String, Object> context = new HashMap<>();
+        if (multipartResovler.isMultipart(request)) {
+            MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
+            Iterator<String> it = multipartRequest.getFileNames();
+            while (it.hasNext()) {
+                MultipartFile file = multipartRequest.getFile((String) it.next());// file
+                // =
+                // (CommonsMultipartFile)
+                // multipartRequest.getFile((String)
+                // it.next());
+                if (file != null) {
+                    if (file.getSize() > 200 * 1024 * 1024L) {
+                        context.put("code", 4000);
+                        context.put("message", "涓婁紶鏂囦欢杩囧ぇ");
+                        return;
+                    }
+                    System.out.println(file.getOriginalFilename());
+                    if (file.getOriginalFilename() == null) {
+                        context.put("code", 4000);
+                        context.put("message", "鏂囦欢鍚嶄笉鍙负绌�");
+                        return;
+                    }
+                    /*
+                     * if(file.getOriginalFilename().contains(",")||file.getOriginalFilename().
+                     * contains(" ")){ sendFailureMessage(response,"鏂囦欢鍚嶇О鏈夎,涓嶅彲鍚湁閫楀彿绛夌壒娈婂瓧绗�"); }
+                     */
+
+                    String nowDate = DateUtil.getNowShortDate();
+                    folder += nowDate + "/";
+                    String strDirPath = rootPath + folder;
+                    File dirPath = new File(strDirPath);
+                    if (!dirPath.exists()) {
+                        dirPath.mkdirs();
+                    }
+                    String uploadFileName = file.getOriginalFilename();
+                    String x = UUID.randomUUID().toString().replace("-", "")
+                            + uploadFileName.substring(uploadFileName.lastIndexOf("."));
+                    String fileName = folder + x;
+                    String fileNames = nowDate + "/" + x;
+                    uploadFileName = uploadFileName.replace(" ", "");
+                    uploadFileName = uploadFileName.replace("锛�", ",");
+                    uploadFileName = uploadFileName.replaceAll(",", "-");
+                    System.err.println("R:" + fileName);
+                    String fileAndPath = dir + fileName;
+                    System.err.println("A:" + fileAndPath);
+                    // 鍒ゆ柇濡傛灉涓存椂鐩綍涓瓨鍦ㄧ浉鍚屽悕绉扮殑鏂囦欢鍏堝垹闄わ紝鍦ㄤ笂浼�
+                    File tempFile = new File(rootPath + fileName);
+                    if (tempFile.isFile() && tempFile.exists()) {
+                        tempFile.getAbsoluteFile().delete();
+                    }
+                    // 涓婁紶鍒版湇鍔″櫒涓存椂鏂囦欢澶�
+                    file.transferTo(tempFile);
+                    // 杞Щ鍒癋TP鏈嶅姟鍣�
+                    String nfix = "";
+                    if (null != uploadFileName) {
+                        nfix = uploadFileName.substring(uploadFileName.lastIndexOf("."));
+                    }
+
+                    if (StringUtils.equalsIgnoreCase(nfix, ".exe")) {
+                        context.put("code", 4000);
+                        context.put("message", "瀵逛笉璧凤紝鏂囦欢鏍煎紡\".exe\"涓婁紶鏈夎锛�");
+                        return;
+                    }
+                    if (StringUtils.equalsIgnoreCase(nfix, ".dll")) {
+                        context.put("code", 4000);
+                        context.put("message", "瀵逛笉璧凤紝鏂囦欢鏍煎紡\".dll\"涓婁紶鏈夎锛�");
+                        return;
+                    }
+
+                    String remoteName = fileName;
+                    String remoteFileName = fileAndPath;
+
+             /*       Map map = new HashMap();
+                    map.put("url", remoteFileName);
+                    map.put("alt", uploadFileName);
+                    map.put("href", remoteFileName);
+                    List maps = Arrays.asList(remoteFileName);*/
+
+                    if (true) {
+                        // 鍏抽棴FTP娴�
+                        // 绉诲姩鎴愬姛,杩斿洖鏂囦欢鍚�
+
+                        /*context.put("error", 0);
+                        context.put("url", remoteFileName);
+                        context.put("fullurl", remoteFileName);
+                        context.put("fname", uploadFileName);
+                        context.put("data", maps);
+                        context.put("halfurl", fileNames);*/
+
+                        context.put("success", true);
+                        context.put("code", 200);
+                        context.put("errno",0);
+                        JSONObject fileJSON = new JSONObject();
+                        fileJSON.put("url", remoteFileName);
+                        fileJSON.put("imgaddr", fileNames);
+                        fileJSON.put("imgname", uploadFileName);
+                        fileJSON.put("originname", uploadFileName);
+                        context.put("data",fileJSON);
+                        context.put("message","璇锋眰鎴愬姛");
+
+                        writerJson(response, context);
+                        return;
+                    } else {
+                        // 绉诲姩澶辫触
+                        context.put("code", 0);
+                        context.put("message", "涓婁紶澶辫触");
+                        writerJson(response, context);
+                    }
+                }
+                context.put("code", 0);
+                context.put("message", "涓婁紶澶辫触");
+                writerJson(response, context);
+                return;
+            }
+        }
+        context.put("code", 0);
+        context.put("message", "涓婁紶澶辫触");
+        writerJson(response, context);
+        return;
+    }
+}
diff --git a/server/src/main/java/com/doumee/api/system/SystemController.java b/server/platform/src/main/java/com/doumee/api/system/SystemController.java
similarity index 100%
copy from server/src/main/java/com/doumee/api/system/SystemController.java
copy to server/platform/src/main/java/com/doumee/api/system/SystemController.java
diff --git a/server/src/main/java/com/doumee/api/system/SystemDataPermissionController.java b/server/platform/src/main/java/com/doumee/api/system/SystemDataPermissionController.java
similarity index 100%
copy from server/src/main/java/com/doumee/api/system/SystemDataPermissionController.java
copy to server/platform/src/main/java/com/doumee/api/system/SystemDataPermissionController.java
diff --git a/server/src/main/java/com/doumee/api/system/SystemDepartmentController.java b/server/platform/src/main/java/com/doumee/api/system/SystemDepartmentController.java
similarity index 100%
copy from server/src/main/java/com/doumee/api/system/SystemDepartmentController.java
copy to server/platform/src/main/java/com/doumee/api/system/SystemDepartmentController.java
diff --git a/server/src/main/java/com/doumee/api/system/SystemDictController.java b/server/platform/src/main/java/com/doumee/api/system/SystemDictController.java
similarity index 100%
copy from server/src/main/java/com/doumee/api/system/SystemDictController.java
copy to server/platform/src/main/java/com/doumee/api/system/SystemDictController.java
diff --git a/server/platform/src/main/java/com/doumee/api/system/SystemDictDataController.java b/server/platform/src/main/java/com/doumee/api/system/SystemDictDataController.java
new file mode 100644
index 0000000..4c76bfc
--- /dev/null
+++ b/server/platform/src/main/java/com/doumee/api/system/SystemDictDataController.java
@@ -0,0 +1,95 @@
+package com.doumee.api.system;
+
+import com.doumee.api.BaseController;
+import com.doumee.biz.system.SystemDictDataBiz;
+import com.doumee.core.annotation.pr.PreventRepeat;
+import com.doumee.core.constants.OperaType;
+import com.doumee.core.model.ApiResponse;
+import com.doumee.core.model.PageData;
+import com.doumee.core.model.PageWrap;
+import com.doumee.dao.system.dto.QuerySystemDictDataDTO;
+import com.doumee.dao.system.model.SystemDictData;
+import com.doumee.dao.system.vo.SystemDictDataListVO;
+import com.doumee.service.system.SystemDictDataService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author Eva.Caesar Liu
+ * @date 2023/03/21 14:49
+ */
+@Api(tags = "瀛楀吀鏁版嵁")
+@RestController
+@RequestMapping("/system/dictData")
+public class SystemDictDataController extends BaseController {
+
+    @Autowired
+    private SystemDictDataService systemDictDataService;
+
+    @Autowired
+    private SystemDictDataBiz systemDictDataBiz;
+
+    @PreventRepeat
+    @ApiOperation("鏂板缓")
+    @PostMapping("/create")
+    @RequiresPermissions("system:dict:update")
+    public ApiResponse create(@Validated(OperaType.Create.class) @RequestBody SystemDictData systemDictData) {
+        return ApiResponse.success(systemDictDataBiz.create(systemDictData));
+    }
+
+    @ApiOperation("鍒犻櫎")
+    @GetMapping("/delete/{id}")
+    @RequiresPermissions("system:dict:update")
+    public ApiResponse deleteById(@PathVariable Integer id) {
+        systemDictDataService.deleteById(id);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鎵归噺鍒犻櫎")
+    @GetMapping("/delete/batch")
+    @RequiresPermissions("system:dict:delete")
+    public ApiResponse deleteByIdInBatch(@RequestParam String ids) {
+        String [] idArray = ids.split(",");
+        List<Integer> idList = new ArrayList<>();
+        for (String id : idArray) {
+            idList.add(Integer.valueOf(id));
+        }
+        systemDictDataService.deleteByIdInBatch(idList);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("淇敼")
+    @PostMapping("/updateById")
+    @RequiresPermissions("system:dict:update")
+    public ApiResponse updateById(@Validated(OperaType.Update.class) @RequestBody SystemDictData systemDictData) {
+        systemDictDataBiz.updateById(systemDictData);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鍒嗛〉鏌ヨ")
+    @PostMapping("/page")
+    @RequiresPermissions("system:dict:update")
+    public ApiResponse<PageData<SystemDictDataListVO>> findPage (@RequestBody PageWrap<QuerySystemDictDataDTO> pageWrap) {
+        return ApiResponse.success(systemDictDataService.findPage(pageWrap));
+    }
+
+
+
+
+
+    @ApiOperation("缂栬緫鏌ヨ鍜栬眴浠诲姟瑙勫垯")
+    @PostMapping("/createCoffeeTask")
+    @RequiresPermissions("system:dict:update")
+    public ApiResponse createCoffeeTask(@Validated(OperaType.Create.class) @RequestBody List<SystemDictData> list) {
+           systemDictDataBiz.updateByDicId(list);
+        return ApiResponse.success(null);
+    }
+
+}
diff --git a/server/src/main/java/com/doumee/api/system/SystemLoginLogController.java b/server/platform/src/main/java/com/doumee/api/system/SystemLoginLogController.java
similarity index 100%
copy from server/src/main/java/com/doumee/api/system/SystemLoginLogController.java
copy to server/platform/src/main/java/com/doumee/api/system/SystemLoginLogController.java
diff --git a/server/src/main/java/com/doumee/api/system/SystemMenuController.java b/server/platform/src/main/java/com/doumee/api/system/SystemMenuController.java
similarity index 100%
copy from server/src/main/java/com/doumee/api/system/SystemMenuController.java
copy to server/platform/src/main/java/com/doumee/api/system/SystemMenuController.java
diff --git a/server/src/main/java/com/doumee/api/system/SystemMonitorController.java b/server/platform/src/main/java/com/doumee/api/system/SystemMonitorController.java
similarity index 100%
copy from server/src/main/java/com/doumee/api/system/SystemMonitorController.java
copy to server/platform/src/main/java/com/doumee/api/system/SystemMonitorController.java
diff --git a/server/src/main/java/com/doumee/api/system/SystemPermissionController.java b/server/platform/src/main/java/com/doumee/api/system/SystemPermissionController.java
similarity index 100%
copy from server/src/main/java/com/doumee/api/system/SystemPermissionController.java
copy to server/platform/src/main/java/com/doumee/api/system/SystemPermissionController.java
diff --git a/server/src/main/java/com/doumee/api/system/SystemPositionController.java b/server/platform/src/main/java/com/doumee/api/system/SystemPositionController.java
similarity index 100%
copy from server/src/main/java/com/doumee/api/system/SystemPositionController.java
copy to server/platform/src/main/java/com/doumee/api/system/SystemPositionController.java
diff --git a/server/src/main/java/com/doumee/api/system/SystemRoleController.java b/server/platform/src/main/java/com/doumee/api/system/SystemRoleController.java
similarity index 100%
copy from server/src/main/java/com/doumee/api/system/SystemRoleController.java
copy to server/platform/src/main/java/com/doumee/api/system/SystemRoleController.java
diff --git a/server/src/main/java/com/doumee/api/system/SystemTraceLogController.java b/server/platform/src/main/java/com/doumee/api/system/SystemTraceLogController.java
similarity index 100%
copy from server/src/main/java/com/doumee/api/system/SystemTraceLogController.java
copy to server/platform/src/main/java/com/doumee/api/system/SystemTraceLogController.java
diff --git a/server/platform/src/main/java/com/doumee/api/system/SystemUserController.java b/server/platform/src/main/java/com/doumee/api/system/SystemUserController.java
new file mode 100644
index 0000000..788a68b
--- /dev/null
+++ b/server/platform/src/main/java/com/doumee/api/system/SystemUserController.java
@@ -0,0 +1,129 @@
+package com.doumee.api.system;
+
+import  com.doumee.core.model.ApiResponse;
+import com.doumee.api.BaseController;
+import com.doumee.biz.system.SystemUserBiz;
+import com.doumee.core.annotation.pr.PreventRepeat;
+import com.doumee.core.annotation.trace.Trace;
+import com.doumee.core.constants.OperaType;
+import com.doumee.core.model.PageData;
+import com.doumee.core.model.PageWrap;
+import com.doumee.dao.system.dto.CreateSystemUserDTO;
+import com.doumee.dao.system.dto.CreateUserRoleDTO;
+import com.doumee.dao.system.dto.QuerySystemUserDTO;
+import com.doumee.dao.system.dto.ResetSystemUserPwdDTO;
+import com.doumee.dao.system.model.SystemUser;
+import com.doumee.dao.system.vo.SystemUserListVO;
+import com.doumee.service.system.SystemUserService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author Eva.Caesar Liu
+ * @date 2023/03/21 14:49
+ */
+@Api(tags = "鐢ㄦ埛")
+@RestController
+@RequestMapping("/system/user")
+public class SystemUserController extends BaseController {
+
+    @Autowired
+    private SystemUserService systemUserService;
+
+    @Autowired
+    private SystemUserBiz systemUserBiz;
+
+    @PreventRepeat
+    @ApiOperation("閰嶇疆鐢ㄦ埛瑙掕壊")
+    @PostMapping("/createUserRole")
+    @RequiresPermissions("system:user:createUserRole")
+    public ApiResponse createUserRole (@Validated @RequestBody CreateUserRoleDTO dto) {
+        systemUserBiz.createUserRole(dto);
+        return ApiResponse.success(null);
+    }
+
+    @Trace(withRequestParameters = false)
+    @PreventRepeat
+    @ApiOperation("閲嶇疆鐢ㄦ埛瀵嗙爜")
+    @PostMapping("/resetPwd")
+    @RequiresPermissions("system:user:resetPwd")
+    public ApiResponse resetPwd (@Validated @RequestBody ResetSystemUserPwdDTO dto) {
+        dto.setOperaUserId(this.getLoginUser().getId());
+        systemUserBiz.resetPwd(dto);
+        return ApiResponse.success(null);
+    }
+
+    @Trace(withRequestParameters = false)
+    @PreventRepeat
+    @ApiOperation("鏂板缓")
+    @PostMapping("/create")
+    @RequiresPermissions("system:user:create")
+    public ApiResponse create(@Validated(OperaType.Create.class) @RequestBody CreateSystemUserDTO systemUser) {
+        systemUser.setCreateUser(this.getLoginUser().getId());
+        systemUserBiz.create(systemUser);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鍒犻櫎")
+    @GetMapping("/delete/{id}")
+    @RequiresPermissions("system:user:delete")
+    public ApiResponse deleteById(@PathVariable Integer id) {
+        systemUserBiz.deleteById(id);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鎵归噺鍒犻櫎")
+    @GetMapping("/delete/batch")
+    @RequiresPermissions("system:user:delete")
+    public ApiResponse deleteByIdInBatch(@RequestParam String ids) {
+        String [] idArray = ids.split(",");
+        List<Integer> idList = new ArrayList<>();
+        for (String id : idArray) {
+            idList.add(Integer.valueOf(id));
+        }
+        systemUserBiz.deleteByIdInBatch(idList);
+        return ApiResponse.success(null);
+    }
+
+    @Trace(withRequestParameters = false)
+    @ApiOperation("淇敼")
+    @PostMapping("/updateById")
+    @RequiresPermissions("system:user:update")
+    public ApiResponse updateById( @RequestBody CreateSystemUserDTO systemUser) {
+        systemUser.setUpdateUser(this.getLoginUser().getId());
+        systemUserBiz.updateById(systemUser);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鍒嗛〉鏌ヨ")
+    @PostMapping("/page")
+    @RequiresPermissions("system:user:query")
+    public ApiResponse<PageData<SystemUserListVO>> findPage (@RequestBody PageWrap<QuerySystemUserDTO> pageWrap) {
+        return ApiResponse.success(systemUserService.findPage(pageWrap));
+    }
+
+
+
+    @ApiOperation("鍒嗛〉鏌ヨ绯荤粺鐢ㄦ埛")
+    @PostMapping("/findAllList")
+    @RequiresPermissions("system:user:query")
+    public ApiResponse<PageData<SystemUser>> findAllList (@RequestBody PageWrap<SystemUser> pageWrap) {
+        return ApiResponse.success(systemUserService.findAllList(pageWrap));
+    }
+
+
+    @ApiOperation("鏍规嵁ID鏌ヨ")
+    @GetMapping("/{id}")
+    @RequiresPermissions("system:user:query")
+    public ApiResponse findById(@PathVariable Integer id) {
+        return ApiResponse.success(systemUserService.findById(id));
+    }
+
+}
diff --git a/server/platform/src/main/java/com/doumee/shiro/ShiroAuthFilter.java b/server/platform/src/main/java/com/doumee/shiro/ShiroAuthFilter.java
new file mode 100644
index 0000000..838a581
--- /dev/null
+++ b/server/platform/src/main/java/com/doumee/shiro/ShiroAuthFilter.java
@@ -0,0 +1,30 @@
+package com.doumee.shiro;
+
+import com.alibaba.fastjson.JSON;
+import com.doumee.core.model.ApiResponse;
+import org.apache.shiro.web.filter.authc.FormAuthenticationFilter;
+import org.springframework.http.HttpStatus;
+
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * Shiro璁よ瘉杩囨护鍣紝澶勭悊鏈璇佹儏鍐电殑鍝嶅簲
+ * @author Eva.Caesar Liu
+ * @date 2023/04/17 12:11
+ */
+public class ShiroAuthFilter extends FormAuthenticationFilter {
+
+    public ShiroAuthFilter() {
+        super();
+    }
+
+    @Override
+    protected boolean onAccessDenied(ServletRequest request, ServletResponse response) throws Exception {
+        HttpServletResponse servletResponse = (HttpServletResponse) response;
+        servletResponse.setHeader("content-type", "application/json;charset=UTF-8");
+        servletResponse.getWriter().write(JSON.toJSONString(ApiResponse.failed(HttpStatus.UNAUTHORIZED.value(), "鏈櫥褰曟垨鐧诲綍淇℃伅宸茶繃鏈�")));
+        return Boolean.FALSE;
+    }
+}
diff --git a/server/platform/src/main/java/com/doumee/shiro/ShiroCache.java b/server/platform/src/main/java/com/doumee/shiro/ShiroCache.java
new file mode 100644
index 0000000..4e28b64
--- /dev/null
+++ b/server/platform/src/main/java/com/doumee/shiro/ShiroCache.java
@@ -0,0 +1,159 @@
+package com.doumee.shiro;
+
+import lombok.extern.slf4j.Slf4j;
+import org.apache.shiro.cache.Cache;
+import org.apache.shiro.cache.CacheException;
+import org.apache.shiro.subject.PrincipalCollection;
+import org.apache.shiro.util.CollectionUtils;
+import org.springframework.context.annotation.Scope;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.data.redis.serializer.SerializationException;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.io.Serializable;
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Set;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Shiro缂撳瓨
+ * @author Eva.Caesar Liu
+ * @date 2023/04/17 12:11
+ */
+@Scope(value = "prototype")
+@Slf4j
+@Component
+public class ShiroCache implements Cache<Object, Serializable> {
+
+    private String keyPrefix = "ProSelect";
+
+    @Resource(name="sessionRedisTemplate")
+    private RedisTemplate<Object, Serializable> redisTemplate;
+
+    public ShiroCache () {
+        log.debug("ShiroCache: new, keyPrefix = [" + keyPrefix + "]");
+    }
+
+    public ShiroCache(String keyPrefix) {
+        log.debug("ShiroCache: new, keyPrefix = [" + keyPrefix + "]");
+        this.keyPrefix = keyPrefix;
+    }
+
+    @Override
+    public Serializable get(Object key) throws CacheException {
+        if (key == null) {
+            return null;
+        }
+        return redisTemplate.opsForValue().get(getKey(key));
+    }
+
+    @Override
+    public Serializable put(Object key, Serializable value) throws CacheException {
+        if (key == null) {
+            return null;
+        }
+        redisTemplate.opsForValue().set(getKey(key), value);
+        return value;
+    }
+
+    public Serializable put(Object key, Serializable value, int timeout) throws CacheException {
+        if (key == null) {
+            return null;
+        }
+        redisTemplate.opsForValue().set(getKey(key), value, timeout, TimeUnit.SECONDS);
+        return value;
+    }
+
+    @Override
+    public void clear() throws CacheException {
+        Set<Object> keys = this.keys();
+        redisTemplate.delete(keys);
+    }
+
+    @Override
+    public int size() {
+        return this.keys().size();
+    }
+
+    @Override
+    public Set<Object> keys() {
+        Set<Object> keys = redisTemplate.keys(keyPrefix + "*");
+        if (CollectionUtils.isEmpty(keys)) {
+            return Collections.emptySet();
+        }
+        return keys;
+    }
+
+    @Override
+    public Collection<Serializable> values() {
+        Collection<Serializable> values = new ArrayList<>();
+        Set<Object> keys = this.keys();
+        if (CollectionUtils.isEmpty(keys)) {
+            return values;
+        }
+        for (Object k : keys) {
+            values.add(redisTemplate.opsForValue().get(k));
+        }
+        return values;
+    }
+
+    @Override
+    public Serializable remove(Object key) throws CacheException {
+        if (key == null) {
+            return null;
+        }
+        Serializable value = this.get(getKey(key));
+        redisTemplate.delete(getKey(key));
+        return value;
+    }
+
+    private Object getKey (Object key) {
+        if (key instanceof PrincipalCollection) {
+            return this.keyPrefix + getRedisKeyFromPrincipalIdField((PrincipalCollection)key);
+        }
+        return (key instanceof String ? (this.keyPrefix + key) : key);
+    }
+
+    /**
+     * 鑾峰彇redis cache key
+     */
+    private String getRedisKeyFromPrincipalIdField(PrincipalCollection key) {
+        Object principalObject = key.getPrimaryPrincipal();
+        if (principalObject instanceof String) {
+            return principalObject.toString();
+        } else {
+            Method pincipalIdGetter = this.getPrincipalIdGetter(principalObject);
+            return this.getIdObj(principalObject, pincipalIdGetter);
+        }
+    }
+
+    private Method getPrincipalIdGetter(Object principalObject) {
+        Method pincipalIdGetter;
+        String principalIdMethodName = this.getPrincipalIdMethodName();
+
+        try {
+            pincipalIdGetter = principalObject.getClass().getMethod(principalIdMethodName);
+            return pincipalIdGetter;
+        } catch (NoSuchMethodException e) {
+            throw new SerializationException(e.getMessage(), e);
+        }
+    }
+
+    private String getIdObj(Object principalObject, Method pincipalIdGetter) {
+        try {
+            Object idObj = pincipalIdGetter.invoke(principalObject);
+            String redisKey = idObj.toString();
+            return redisKey;
+        } catch (Exception e) {
+            throw new SerializationException(e.getMessage(), e);
+        }
+    }
+
+    private String getPrincipalIdMethodName() {
+        return "getId";
+    }
+}
diff --git a/server/platform/src/main/java/com/doumee/shiro/ShiroCacheManager.java b/server/platform/src/main/java/com/doumee/shiro/ShiroCacheManager.java
new file mode 100644
index 0000000..246bfe0
--- /dev/null
+++ b/server/platform/src/main/java/com/doumee/shiro/ShiroCacheManager.java
@@ -0,0 +1,44 @@
+package com.doumee.shiro;
+
+import lombok.extern.slf4j.Slf4j;
+import org.apache.shiro.cache.Cache;
+import org.apache.shiro.cache.CacheException;
+import org.apache.shiro.cache.CacheManager;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.ApplicationContext;
+import org.springframework.stereotype.Component;
+
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
+
+/**
+ * 鑷畾涔塖hiro CacheManager
+ * @author Eva.Caesar Liu
+ * @date 2023/04/17 12:11
+ */
+@Slf4j
+@Component
+public class ShiroCacheManager implements CacheManager {
+
+    private final ConcurrentMap<String, Cache> caches = new ConcurrentHashMap();
+
+    private static ApplicationContext applicationContext;
+
+    @Override
+    public <K, V> Cache<K, V> getCache(String name) throws CacheException {
+        log.debug("get cache, name=" + name);
+        Cache cache = this.caches.get(name);
+        if (cache == null) {
+            cache = applicationContext.getBean(ShiroCache.class, "shiro:cache:");
+            this.caches.put(name, cache);
+        }
+        return cache;
+    }
+
+    @Autowired
+    public void setApplicationContext (ApplicationContext applicationContext) {
+        if (ShiroCacheManager.applicationContext == null) {
+            ShiroCacheManager.applicationContext = applicationContext;
+        }
+    }
+}
diff --git a/server/platform/src/main/java/com/doumee/shiro/ShiroConfig.java b/server/platform/src/main/java/com/doumee/shiro/ShiroConfig.java
new file mode 100644
index 0000000..fce72c7
--- /dev/null
+++ b/server/platform/src/main/java/com/doumee/shiro/ShiroConfig.java
@@ -0,0 +1,142 @@
+package com.doumee.shiro;
+
+import org.apache.shiro.mgt.SecurityManager;
+import org.apache.shiro.session.mgt.SessionManager;
+import org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor;
+import org.apache.shiro.spring.web.ShiroFilterFactoryBean;
+import org.apache.shiro.web.mgt.DefaultWebSecurityManager;
+import org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.data.redis.connection.RedisConnectionFactory;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.data.redis.serializer.StringRedisSerializer;
+
+import javax.servlet.Filter;
+import java.io.Serializable;
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+/**
+ * Shiro閰嶇疆
+ * @author Eva.Caesar Liu
+ * @date 2023/04/17 12:11
+ */
+@Configuration
+public class ShiroConfig {
+
+    @Value("${cache.session.expire}")
+    private int sessionExpireTime;
+
+    @Autowired
+    private ShiroCredentialsMatcher shiroCredentialsMatcher;
+
+    @Autowired
+    private ShiroSessionDAO shiroSessionDAO;
+
+    @Autowired
+    private ShiroCacheManager shiroCacheManager;
+
+    @Autowired
+    private ShiroRealm shiroRealm;
+
+    @Bean("sessionRedisTemplate")
+    public RedisTemplate<Object, Serializable> sessionRedisTemplate(RedisConnectionFactory redisConnectionFactory) {
+        RedisTemplate<Object, Serializable> redisTemplate = new RedisTemplate<>();
+        redisTemplate.setConnectionFactory(redisConnectionFactory);
+        // 榛樿搴忓垪鍖栨柟寮�
+        redisTemplate.setDefaultSerializer(new StringRedisSerializer());
+        // 鍊煎簭鍒楀寲鏂瑰紡
+        ShiroSessionSerializer serializer = new ShiroSessionSerializer();
+        redisTemplate.setValueSerializer(serializer);
+        redisTemplate.setHashValueSerializer(serializer);
+        redisTemplate.afterPropertiesSet();
+        return redisTemplate;
+    }
+
+    @Bean
+    public DefaultAdvisorAutoProxyCreator defaultAdvisorAutoProxyCreator() {
+        DefaultAdvisorAutoProxyCreator autoProxyCreator = new DefaultAdvisorAutoProxyCreator();
+        autoProxyCreator.setProxyTargetClass(true);
+        return autoProxyCreator;
+    }
+
+    @Bean
+    public SessionManager sessionManager() {
+        ShiroSessionManager sessionManager = new ShiroSessionManager();
+        sessionManager.setSessionDAO(shiroSessionDAO);
+        sessionManager.setGlobalSessionTimeout(sessionExpireTime*1000);
+        // 鍒犻櫎澶辨晥鐨剆ession
+        sessionManager.setDeleteInvalidSessions(true);
+        return sessionManager;
+    }
+
+    @Bean
+    public SecurityManager securityManager() {
+        DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
+        securityManager.setRealm(shiroRealm);
+        securityManager.setSessionManager(this.sessionManager());
+        securityManager.setCacheManager(shiroCacheManager);
+        return securityManager;
+    }
+
+    @Bean
+    public ShiroFilterFactoryBean shiroFilterFactoryBean(SecurityManager securityManager) {
+        ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean();
+        shiroFilterFactoryBean.setSecurityManager(securityManager);
+        Map<String, String> map = new LinkedHashMap<>();
+        // 璺緞鎷︽埅閰嶇疆
+        // 璺緞鎷︽埅閰嶇疆
+        map.put("/system/dictData/companyUserRules","anon");
+        map.put("/system/login", "anon");
+        map.put("/system/logout", "anon");
+        map.put("/common/captcha", "anon");
+        map.put("/business/areas/*", "anon");
+        map.put("/business/company/register", "anon");
+        map.put("/business/labels/page","anon");
+        map.put("/public/uploadPicture","anon");
+        map.put("/public/uploadLocal","anon");
+        map.put("/business/*/list","anon");
+        map.put("/business/goods/goodsPage","anon");
+        map.put("/business/goods/h5Image","anon");
+        map.put("/business/goods/export","anon");
+        map.put("/business/goods/listForH5","anon");
+
+
+        // - 鏀捐swagger
+        map.put("/doc.html", "anon");
+        map.put("/webjars/**", "anon");
+        map.put("/swagger-resources/**", "anon");
+        map.put("/v2/api-docs/**", "anon");
+
+        // - 鍏朵粬鎺ュ彛缁熶竴鎷︽埅
+        map.put("/**", "authc");
+        shiroFilterFactoryBean.setFilterChainDefinitionMap(map);
+        // 娣诲姞璁よ瘉杩囨护鍣�
+        Map<String, Filter> filters = new LinkedHashMap<>();
+        filters.put("authc", new ShiroAuthFilter());
+        shiroFilterFactoryBean.setFilters(filters);
+        return shiroFilterFactoryBean;
+    }
+
+    @Bean
+    public AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor(SecurityManager securityManager) {
+        AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor = new AuthorizationAttributeSourceAdvisor();
+        authorizationAttributeSourceAdvisor.setSecurityManager(securityManager);
+        return authorizationAttributeSourceAdvisor;
+    }
+
+    @Bean
+    public ShiroSessionDAO getShiroSessionDAO () {
+        shiroSessionDAO.setExpireTime(sessionExpireTime);
+        return shiroSessionDAO;
+    }
+
+    @Bean
+    public ShiroRealm getShiroRealm () {
+        shiroRealm.setCredentialsMatcher(shiroCredentialsMatcher);
+        return shiroRealm;
+    }
+}
diff --git a/server/platform/src/main/java/com/doumee/shiro/ShiroCredentialsMatcher.java b/server/platform/src/main/java/com/doumee/shiro/ShiroCredentialsMatcher.java
new file mode 100644
index 0000000..4906c0c
--- /dev/null
+++ b/server/platform/src/main/java/com/doumee/shiro/ShiroCredentialsMatcher.java
@@ -0,0 +1,45 @@
+package com.doumee.shiro;
+
+import com.doumee.core.utils.Utils;
+import com.doumee.dao.system.model.SystemUser;
+import com.doumee.service.system.SystemUserService;
+import org.apache.shiro.authc.AuthenticationInfo;
+import org.apache.shiro.authc.AuthenticationToken;
+import org.apache.shiro.authc.credential.HashedCredentialsMatcher;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.stereotype.Component;
+
+/**
+ * Shiro瀵嗙爜姣斿澶勭悊
+ * @author Eva.Caesar Liu
+ * @date 2023/04/17 12:11
+ */
+@Component
+public class ShiroCredentialsMatcher extends HashedCredentialsMatcher {
+    @Lazy
+    @Autowired
+    private SystemUserService systemUserService;
+
+    @Override
+    public boolean doCredentialsMatch(AuthenticationToken token, AuthenticationInfo info) {
+        ShiroToken usernamePasswordToken = (ShiroToken) token;
+        SystemUser queryUserDto = new SystemUser();
+        queryUserDto.setUsername(usernamePasswordToken.getUsername());
+        queryUserDto.setDeleted(Boolean.FALSE);
+        SystemUser systemUser = systemUserService.findOne(queryUserDto);
+        if (systemUser == null) {
+            return Boolean.FALSE;
+        }
+        if(usernamePasswordToken.getDdLogin()){
+            return Boolean.TRUE;
+        }
+        if(usernamePasswordToken.getWxLogin()){
+            return Boolean.TRUE;
+        }
+        // 鍔犲瘑瀵嗙爜
+        String pwd = Utils.Secure.encryptPassword(new String(usernamePasswordToken.getPassword()), systemUser.getSalt());
+        // 姣旇緝瀵嗙爜
+        return this.equals(pwd, systemUser.getPassword());
+    }
+}
diff --git a/server/platform/src/main/java/com/doumee/shiro/ShiroRealm.java b/server/platform/src/main/java/com/doumee/shiro/ShiroRealm.java
new file mode 100644
index 0000000..44c84e2
--- /dev/null
+++ b/server/platform/src/main/java/com/doumee/shiro/ShiroRealm.java
@@ -0,0 +1,94 @@
+package com.doumee.shiro;
+
+import com.doumee.core.constants.ResponseStatus;
+import com.doumee.core.exception.BusinessException;
+import com.doumee.core.model.LoginUserInfo;
+import com.doumee.core.utils.Constants;
+import com.doumee.dao.system.model.SystemPermission;
+import com.doumee.dao.system.model.SystemRole;
+import com.doumee.dao.system.model.SystemUser;
+import com.doumee.service.system.SystemDataPermissionService;
+import com.doumee.service.system.SystemPermissionService;
+import com.doumee.service.system.SystemRoleService;
+import com.doumee.service.system.SystemUserService;
+import org.apache.shiro.authc.AuthenticationException;
+import org.apache.shiro.authc.AuthenticationInfo;
+import org.apache.shiro.authc.AuthenticationToken;
+import org.apache.shiro.authc.SimpleAuthenticationInfo;
+import org.apache.shiro.authz.AuthorizationInfo;
+import org.apache.shiro.authz.SimpleAuthorizationInfo;
+import org.apache.shiro.realm.AuthorizingRealm;
+import org.apache.shiro.subject.PrincipalCollection;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+/**
+ * 鑷畾涔塕ealm锛屽鐞嗚璇佸拰鏉冮檺
+ * @author Eva.Caesar Liu
+ * @date 2022/03/15 09:54
+ */
+@Component
+public class ShiroRealm extends AuthorizingRealm {
+
+    @Lazy
+    @Autowired
+    private SystemDataPermissionService systemDataPermissionService;
+    @Lazy
+    @Autowired
+    private SystemUserService systemUserService;
+
+    @Lazy
+    @Autowired
+    private SystemRoleService systemRoleService;
+
+    @Lazy
+    @Autowired
+    private SystemPermissionService systemPermissionService;
+
+    /**
+     * 鏉冮檺澶勭悊
+     * @author Eva.Caesar Liu
+     * @date 2022/03/15 09:54
+     */
+    @Override
+    protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) {
+        LoginUserInfo loginUserInfo = (LoginUserInfo)principalCollection.getPrimaryPrincipal();
+        // 璁剧疆鐢ㄦ埛瑙掕壊鍜屾潈闄�
+        SimpleAuthorizationInfo authorizationInfo = new SimpleAuthorizationInfo();
+        authorizationInfo.addRoles(loginUserInfo.getRoles());
+        authorizationInfo.addStringPermissions(loginUserInfo.getPermissions());
+        return authorizationInfo;
+    }
+
+    /**
+     * 璁よ瘉澶勭悊
+     * @author Eva.Caesar Liu
+     * @date 2022/03/15 09:54
+     */
+    @Override
+    protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) throws AuthenticationException {
+        // 鑾峰彇鐢ㄦ埛鍚�
+        String username = authenticationToken.getPrincipal().toString();
+        // 鏍规嵁鐢ㄦ埛鍚嶆煡璇㈢敤鎴峰璞�
+        SystemUser queryDto = new SystemUser();
+        queryDto.setUsername(username);
+        queryDto.setDeleted(Boolean.FALSE);
+        SystemUser user = systemUserService.findOne(queryDto);
+        if(!Constants.equalsInteger(user.getStatus(),Constants.ZERO)){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝璐﹀彿淇℃伅宸茶绂佺敤锛屽鏈夌枒闂鑱旂郴绯荤粺绠$悊鍛橈紒");
+        }
+        if (user == null) {
+            return null;
+        }
+        // 鑾峰彇鐧诲綍鐢ㄦ埛淇℃伅
+        List<SystemRole> roles = systemRoleService.findByUserId(user.getId());
+        List<SystemPermission> permissions = systemPermissionService.findByUserId(user.getId());
+        LoginUserInfo userInfo = LoginUserInfo.from(user, roles, permissions);
+        // 楠岃瘉鐢ㄦ埛
+        return new SimpleAuthenticationInfo(userInfo, user.getPassword(), this.getName());
+    }
+
+}
diff --git a/server/platform/src/main/java/com/doumee/shiro/ShiroRedisSessionDAO.java b/server/platform/src/main/java/com/doumee/shiro/ShiroRedisSessionDAO.java
new file mode 100644
index 0000000..b592ada
--- /dev/null
+++ b/server/platform/src/main/java/com/doumee/shiro/ShiroRedisSessionDAO.java
@@ -0,0 +1,139 @@
+package com.doumee.shiro;
+
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang.SerializationUtils;
+import org.apache.shiro.session.Session;
+import org.apache.shiro.session.UnknownSessionException;
+import org.apache.shiro.session.mgt.SimpleSession;
+import org.apache.shiro.session.mgt.eis.SessionDAO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.data.redis.core.StringRedisTemplate;
+
+import java.io.Serializable;
+import java.util.Collection;
+import java.util.concurrent.TimeUnit;
+
+//@Component
+@Slf4j
+@SuppressWarnings({ "rawtypes", "unchecked" })
+public class ShiroRedisSessionDAO  implements SessionDAO {
+// Session瓒呮椂鏃堕棿锛屽崟浣嶄负姣
+private static final String KEY_PREFIX = "shiro:session:";
+    private long expireTime = 120000;
+    @Autowired
+    private ShiroTokenManager shiroTokenManager;
+    @Autowired
+    private RedisTemplate redisTemplate;// Redis鎿嶄綔绫伙紝瀵硅繖涓娇鐢ㄤ笉鐔熸倝鐨勶紝鍙互鍙傝�冨墠闈㈢殑鍗氬
+
+    public ShiroRedisSessionDAO() {
+
+        super();
+
+    }
+
+    public ShiroRedisSessionDAO(long expireTime, StringRedisTemplate redisTemplate) {
+
+        super();
+
+        this.expireTime = expireTime;
+
+        this.redisTemplate = redisTemplate;
+
+    }
+
+    @Override // 鏇存柊session
+
+    public void update(Session session) throws UnknownSessionException {
+
+        System.out.println("===============update================");
+
+        if (session == null || session.getId() == null) {
+            return;
+        }
+        session.setTimeout(expireTime);
+        byte[] bytes = SerializationUtils.serialize((Serializable) session);
+        redisTemplate.opsForValue().set(KEY_PREFIX+session.getId(), bytes, expireTime, TimeUnit.MILLISECONDS);
+    }
+
+    @Override // 鍒犻櫎session
+
+    public void delete(Session session) {
+
+        System.out.println("===============delete================");
+
+        if (null == session) {
+
+            return;
+
+        }
+
+        redisTemplate.opsForValue().getOperations().delete(KEY_PREFIX+session.getId());
+
+    }
+
+    @Override// 鑾峰彇娲昏穬鐨剆ession锛屽彲浠ョ敤鏉ョ粺璁″湪绾夸汉鏁帮紝濡傛灉瑕佸疄鐜拌繖涓姛鑳斤紝鍙互鍦ㄥ皢session鍔犲叆redis鏃舵寚瀹氫竴涓猻ession鍓嶇紑锛岀粺璁$殑鏃跺�欏垯浣跨敤keys("session-prefix*")鐨勬柟寮忔潵妯$硦鏌ユ壘redis涓墍鏈夌殑session闆嗗悎
+    public Collection getActiveSessions() {
+
+        System.out.println("==============getActiveSessions=================");
+
+        return redisTemplate.keys("*");
+
+    }
+
+    @Override
+    public Serializable create(Session session) {
+
+        System.out.println("===============doCreate================");
+
+        if (session == null) {
+            log.error("session is null");
+            throw new UnknownSessionException("session is null");
+        }
+        Serializable sessionId = shiroTokenManager.build();
+        ((SimpleSession)session).setId(sessionId);
+        byte[] bytes = SerializationUtils.serialize((Serializable) session);
+        redisTemplate.opsForValue().set(session.getId(), bytes, expireTime, TimeUnit.MILLISECONDS);
+        return sessionId;
+
+    }
+    public Session readSession(Serializable sessionId) throws UnknownSessionException{
+        if (sessionId == null) {
+            log.warn("session id is null");
+            return null;
+        }
+        if (sessionId instanceof String) {
+            // 瀵筍essionId杩涜楠岃瘉锛堝彲鐢ㄤ簬闃叉Session鎹曡幏銆佹毚鍔涙崟鎹夌瓑涓�绯诲垪瀹夊叏闂锛屾渶缁堝畨鍏ㄦ�у彇鍐充簬check濡備綍瀹炵幇锛�
+            shiroTokenManager.check((String) sessionId);
+        }
+        log.debug("read session from cache");
+
+        SimpleSession simpleSession = (SimpleSession) SerializationUtils.deserialize((byte[])redisTemplate.opsForValue().get(KEY_PREFIX+sessionId));
+       return simpleSession;
+
+    }
+
+    public long getExpireTime() {
+
+        return expireTime;
+
+    }
+
+    public void setExpireTime(long expireTime) {
+
+        this.expireTime = expireTime;
+
+    }
+
+    public RedisTemplate getRedisTemplate() {
+
+        return redisTemplate;
+
+    }
+
+    public void setRedisTemplate(RedisTemplate redisTemplate) {
+
+        this.redisTemplate = redisTemplate;
+
+    }
+}
diff --git a/server/platform/src/main/java/com/doumee/shiro/ShiroSessionDAO.java b/server/platform/src/main/java/com/doumee/shiro/ShiroSessionDAO.java
new file mode 100644
index 0000000..7d4e7a7
--- /dev/null
+++ b/server/platform/src/main/java/com/doumee/shiro/ShiroSessionDAO.java
@@ -0,0 +1,113 @@
+package com.doumee.shiro;
+
+import lombok.Data;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.shiro.session.Session;
+import org.apache.shiro.session.UnknownSessionException;
+import org.apache.shiro.session.mgt.SimpleSession;
+import org.apache.shiro.session.mgt.eis.SessionDAO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.io.Serializable;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Set;
+
+/**
+ * 鑷畾涔塖hiro SessionDAO锛屽皢浼氳瘽淇℃伅瀛樺叆缂撳瓨涓�
+ * @author Eva.Caesar Liu
+ * @date 2023/04/17 12:11
+ */
+@Data
+@Slf4j
+@Component
+public class ShiroSessionDAO implements SessionDAO {
+
+    private static final String KEY_PREFIX = "shiro:session:";
+
+    @Autowired
+    private ShiroCache shiroCache;
+
+    private int expireTime = 60 * 60 * 24;
+
+    @Autowired
+    private ShiroTokenManager shiroTokenManager;
+
+    @Override
+    public Serializable create(Session session) {
+        if (session == null) {
+            log.error("session is null");
+            throw new UnknownSessionException("session is null");
+        }
+        Serializable sessionId = shiroTokenManager.build();
+        ((SimpleSession)session).setId(sessionId);
+        this.saveSession(session);
+        return sessionId;
+    }
+
+    @Override
+    public Session readSession(Serializable sessionId) throws UnknownSessionException{
+        if (sessionId == null) {
+            log.warn("session id is null");
+            return null;
+        }
+        if (sessionId instanceof String) {
+            // 瀵筍essionId杩涜楠岃瘉锛堝彲鐢ㄤ簬闃叉Session鎹曡幏銆佹毚鍔涙崟鎹夌瓑涓�绯诲垪瀹夊叏闂锛屾渶缁堝畨鍏ㄦ�у彇鍐充簬check濡備綍瀹炵幇锛�
+            shiroTokenManager.check((String) sessionId);
+        }
+        log.debug("read session from cache");
+        Session session = getSessionFromCache(sessionId);
+        if (session == null) {
+            throw new UnknownSessionException("There is no session with id [" + sessionId + "]");
+        }
+        return session;
+    }
+
+    @Override
+    public void update(Session session) throws UnknownSessionException {
+        this.saveSession(session);
+    }
+
+    @Override
+    public void delete(Session session) {
+        if (session != null && session.getId() != null) {
+            shiroCache.remove(KEY_PREFIX + session.getId());
+        }
+    }
+
+    @Override
+    public Collection<Session> getActiveSessions() {
+        Set<Session> sessions = new HashSet<>();
+        Set<Object> keys = shiroCache.keys();
+        if (keys != null && keys.size() > 0) {
+            Iterator iter = keys.iterator();
+            while(iter.hasNext()) {
+                sessions.add((Session) shiroCache.get(iter.next()));
+            }
+        }
+        return sessions;
+    }
+
+    private void saveSession(Session session) throws UnknownSessionException {
+        if (session == null || session.getId() == null) {
+            log.error("session or session id is null");
+            throw new UnknownSessionException("session or session id is null");
+        }
+        shiroCache.put(KEY_PREFIX + session.getId(), (SimpleSession)session, expireTime);
+    }
+
+    private Session getSessionFromCache (Serializable sessionId) {
+        Serializable object = shiroCache.get(KEY_PREFIX + sessionId);
+        Session session = null;
+        if (object != null) {
+            session = (Session)shiroCache.get(KEY_PREFIX + sessionId);
+        }
+        return session;
+    }
+
+    public void setExpireTime (int expireTime) {
+        this.expireTime = expireTime;
+    }
+}
diff --git a/server/platform/src/main/java/com/doumee/shiro/ShiroSessionManager.java b/server/platform/src/main/java/com/doumee/shiro/ShiroSessionManager.java
new file mode 100644
index 0000000..c4fd006
--- /dev/null
+++ b/server/platform/src/main/java/com/doumee/shiro/ShiroSessionManager.java
@@ -0,0 +1,85 @@
+package com.doumee.shiro;
+
+import lombok.extern.slf4j.Slf4j;
+import org.apache.shiro.session.Session;
+import org.apache.shiro.session.mgt.DefaultSessionManager;
+import org.apache.shiro.session.mgt.SessionContext;
+import org.apache.shiro.session.mgt.SessionKey;
+import org.apache.shiro.web.servlet.Cookie;
+import org.apache.shiro.web.servlet.ShiroHttpServletRequest;
+import org.apache.shiro.web.servlet.SimpleCookie;
+import org.apache.shiro.web.session.mgt.WebSessionManager;
+import org.apache.shiro.web.util.WebUtils;
+
+import javax.servlet.ServletRequest;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.Serializable;
+
+/**
+ * 鑷畾涔変細璇濈鐞嗗櫒
+ * @author Eva.Caesar Liu
+ * @date 2023/04/17 12:11
+ */
+@Slf4j
+public class ShiroSessionManager extends DefaultSessionManager implements WebSessionManager {
+
+    private static final String AUTH_TOKEN = "eva-auth-token";
+
+    @Override
+    protected void onStart(Session session, SessionContext context) {
+        super.onStart(session, context);
+        if (!WebUtils.isHttp(context)) {
+            log.debug("SessionContext argument is not Http compatible or does not have an Http request/response pair. No session ID cookie will be set.");
+            return;
+        }
+        HttpServletRequest request = WebUtils.getHttpRequest(context);
+        HttpServletResponse response = WebUtils.getHttpResponse(context);
+        Serializable sessionId = session.getId();
+        this.storeSessionId(sessionId, request, response);
+        request.removeAttribute(ShiroHttpServletRequest.REFERENCED_SESSION_ID_SOURCE);
+        request.setAttribute(ShiroHttpServletRequest.REFERENCED_SESSION_IS_NEW, Boolean.TRUE);
+    }
+
+    @Override
+    public Serializable getSessionId(SessionKey key) {
+        Serializable sessionId = super.getSessionId(key);
+        if (sessionId == null && WebUtils.isWeb(key)) {
+            ServletRequest servletRequest = WebUtils.getRequest(key);
+            if (!(servletRequest instanceof HttpServletRequest)) {
+                log.trace("Can not get sessionId from header, the request is not HttpServletRequest");
+                return null;
+            }
+            HttpServletRequest request = (HttpServletRequest) servletRequest;
+            // 浠巆ookie涓幏鍙栬璇�
+            javax.servlet.http.Cookie[] cookies = request.getCookies();
+            if (cookies != null) {
+                for (javax.servlet.http.Cookie cookie : cookies) {
+                    if (AUTH_TOKEN.equals(cookie.getName())) {
+                        return cookie.getValue();
+                    }
+                }
+            }
+            // 浠巋eader涓幏鍙栬璇�
+            return request.getHeader(AUTH_TOKEN);
+        }
+        return sessionId;
+    }
+    @Override
+    public boolean isServletContainerSessions() {
+        return false;
+    }
+
+    private void storeSessionId(Serializable currentId, HttpServletRequest request, HttpServletResponse response) {
+        if (currentId == null) {
+            String msg = "sessionId cannot be null when persisting for subsequent requests.";
+            throw new IllegalArgumentException(msg);
+        }
+        Cookie cookie = new SimpleCookie(AUTH_TOKEN);
+        cookie.setHttpOnly(false);
+        String idString = currentId.toString();
+        cookie.setValue(idString);
+        cookie.saveTo(request, response);
+        log.trace("Set session ID cookie for session with id {}", idString);
+    }
+}
diff --git a/server/platform/src/main/java/com/doumee/shiro/ShiroSessionSerializer.java b/server/platform/src/main/java/com/doumee/shiro/ShiroSessionSerializer.java
new file mode 100644
index 0000000..5ab375c
--- /dev/null
+++ b/server/platform/src/main/java/com/doumee/shiro/ShiroSessionSerializer.java
@@ -0,0 +1,36 @@
+package com.doumee.shiro;
+
+import org.apache.commons.lang3.SerializationUtils;
+import org.apache.shiro.codec.Base64;
+import org.springframework.data.redis.serializer.RedisSerializer;
+import org.springframework.data.redis.serializer.SerializationException;
+
+import java.io.Serializable;
+import java.nio.charset.StandardCharsets;
+
+/**
+ * Session搴忓垪鍖�
+ * @author Eva.Caesar Liu
+ * @date 2023/04/17 12:11
+ */
+public class ShiroSessionSerializer implements RedisSerializer<Serializable> {
+
+    @Override
+    public byte[] serialize(Serializable obj) throws SerializationException {
+        if (obj == null) {
+            return new byte[0];
+        }
+        String sessionBase64 = Base64.encodeToString(SerializationUtils.serialize(obj));
+        return sessionBase64.getBytes(StandardCharsets.UTF_8);
+    }
+
+    @Override
+    public Serializable deserialize(byte[] bytes) throws SerializationException {
+        if (bytes == null || bytes.length == 0) {
+            return null;
+        }
+        String sessionString = new String(bytes, StandardCharsets.UTF_8);
+        byte[] sessionBytes = Base64.decode(sessionString);
+        return SerializationUtils.deserialize(sessionBytes);
+    }
+}
diff --git a/server/platform/src/main/java/com/doumee/shiro/ShiroToken.java b/server/platform/src/main/java/com/doumee/shiro/ShiroToken.java
new file mode 100644
index 0000000..2964cde
--- /dev/null
+++ b/server/platform/src/main/java/com/doumee/shiro/ShiroToken.java
@@ -0,0 +1,54 @@
+package com.doumee.shiro;
+
+import org.apache.shiro.authc.UsernamePasswordToken;
+import org.springframework.stereotype.Component;
+
+/**
+ * 鑷畾涔塗oken 锛屽鐞嗚璇佸拰鏉冮檺
+ * @author Eva.Caesar Liu
+ * @date 2022/04/18 18:12
+ */
+@Component
+public class ShiroToken extends UsernamePasswordToken {
+
+    /**
+     * 鍏徃ID
+     */
+    Integer companyId;
+    Boolean isDdLogin;
+    Boolean isWxLogin;
+
+    public ShiroToken() {
+    }
+    public ShiroToken(Integer companyId, String username, String password, boolean isDdLogin, boolean isWxLogin) {
+        super(username,  password, false, (String)null);
+        this.companyId = companyId;
+        this.isDdLogin = isDdLogin;
+        this.isWxLogin = isWxLogin;
+    }
+
+    public Boolean getDdLogin() {
+        return isDdLogin;
+    }
+
+    public void setDdLogin(Boolean ddLogin) {
+        isDdLogin = ddLogin;
+    }
+
+
+    public Boolean getWxLogin() {
+        return isWxLogin;
+    }
+
+    public void setWxLogin(Boolean wxLogin) {
+        isWxLogin = wxLogin;
+    }
+
+    public Integer getCompanyId() {
+        return companyId;
+    }
+
+    public void setCompanyId(Integer companyId) {
+        this.companyId = companyId;
+    }
+}
diff --git a/server/platform/src/main/java/com/doumee/shiro/ShiroTokenManager.java b/server/platform/src/main/java/com/doumee/shiro/ShiroTokenManager.java
new file mode 100644
index 0000000..5870cf2
--- /dev/null
+++ b/server/platform/src/main/java/com/doumee/shiro/ShiroTokenManager.java
@@ -0,0 +1,25 @@
+package com.doumee.shiro;
+
+import com.doumee.core.exception.UnSafeSessionException;
+import org.springframework.stereotype.Component;
+
+import java.util.UUID;
+
+/**
+ * 榛樿Token绠$悊鍣�
+ * @author Eva.Caesar Liu
+ * @date 2023/04/17 12:11
+ */
+@Component
+public class ShiroTokenManager {
+
+    String build() {
+        return UUID.randomUUID().toString();
+    }
+
+    void check(String token) throws UnSafeSessionException {
+        if (token == null || token.length() != 36) {
+            throw new UnSafeSessionException();
+        }
+    }
+}
diff --git a/server/platform/src/main/java/com/doumee/swagger/SwaggerConfig.java b/server/platform/src/main/java/com/doumee/swagger/SwaggerConfig.java
new file mode 100644
index 0000000..69650da
--- /dev/null
+++ b/server/platform/src/main/java/com/doumee/swagger/SwaggerConfig.java
@@ -0,0 +1,99 @@
+package com.doumee.swagger;
+
+import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j;
+import com.google.common.base.Function;
+import com.google.common.base.Optional;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import springfox.documentation.RequestHandler;
+import springfox.documentation.builders.ApiInfoBuilder;
+import springfox.documentation.builders.PathSelectors;
+import springfox.documentation.oas.annotations.EnableOpenApi;
+import springfox.documentation.service.ApiInfo;
+import springfox.documentation.spi.DocumentationType;
+import springfox.documentation.spring.web.plugins.Docket;
+
+import java.util.function.Predicate;
+
+/**
+ * Swagger閰嶇疆
+ * @author Eva.Caesar Liu
+ * @date 2022/03/11 10:24
+ */
+@Configuration
+@EnableOpenApi
+@EnableKnife4j
+public class SwaggerConfig {
+
+    @Value("${swagger.host:}")
+    private String host;
+
+    @Value("${swagger.title:鎺ュ彛鏂囨。}")
+    private String title;
+
+    @Value("${swagger.description:}")
+    private String description;
+
+    @Value("${project.version:}")
+    private String version;
+
+    @Bean
+    public ApiInfo getApiInfo() {
+        return new ApiInfoBuilder()
+                .title(title)
+                .description(description)
+                .version(version)
+                .build();
+    }
+    @Bean
+    public Docket getDocket() {
+        return new Docket(DocumentationType.SWAGGER_2)
+                .apiInfo(this.getApiInfo()).groupName("銆愮郴缁熺鐞嗘帴鍙PI銆�")
+                .host(host)
+                .select()
+                .apis( basePackage("com.doumee.api.system;com.doumee.api.business;"))
+                // 璁剧疆闇�瑕佽鎵弿鐨勭被锛岃繖閲岃缃负娣诲姞浜咢Api娉ㄨВ鐨勭被
+//                .apis(RequestHandlerSelectors.withClassAnnotation(Api.class))
+                .paths(PathSelectors.any())
+                .build();
+    }
+    @Bean
+    public Docket getDocket1() {
+        return new Docket(DocumentationType.SWAGGER_2)
+            .apiInfo(this.getApiInfo()).groupName("銆愬叕鍏辨帴鍙PI銆�")
+            .host(host)
+            .select()
+            .apis( basePackage("com.doumee.api.common"))
+            // 璁剧疆闇�瑕佽鎵弿鐨勭被锛岃繖閲岃缃负娣诲姞浜咢Api娉ㄨВ鐨勭被
+//                .apis(RequestHandlerSelectors.withClassAnnotation(Api.class))
+            .paths(PathSelectors.any())
+            .build();
+    }
+    /**
+     * 閲嶅啓basePackage鏂规硶锛屼娇鑳藉瀹炵幇澶氬寘璁块棶锛屽鍒惰创涓婂幓
+     * @author  teavamc
+     * @date 2019/1/26
+     * @return com.google.common.base.Predicate<springfox.documentation.RequestHandler>
+     */
+    public static Predicate<RequestHandler> basePackage(String basePackage) {
+        return input -> declaringClass(input).transform(handlerPackage(basePackage)).or(true);
+    }
+
+    private static Function<Class<?>, Boolean> handlerPackage(String basePackage)     {
+        return input -> {
+            // 寰幆鍒ゆ柇鍖归厤
+            for (String strPackage : basePackage.split(";")) {
+                boolean isMatch = input.getPackage().getName().startsWith(strPackage);
+                if (isMatch) {
+                    return true;
+                }
+            }
+            return false;
+        };
+    }
+
+    private static Optional<? extends Class<?>> declaringClass(RequestHandler input) {
+        return Optional.fromNullable(input.declaringClass());
+    }
+}
diff --git a/server/platform/src/main/java/com/doumee/swagger/SwaggerInterceptor.java b/server/platform/src/main/java/com/doumee/swagger/SwaggerInterceptor.java
new file mode 100644
index 0000000..8c417e1
--- /dev/null
+++ b/server/platform/src/main/java/com/doumee/swagger/SwaggerInterceptor.java
@@ -0,0 +1,45 @@
+package com.doumee.swagger;
+
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+import org.springframework.web.servlet.HandlerInterceptor;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+
+/**
+ * Swagger鎷︽埅鍣�
+ * @author Eva.Caesar Liu
+ * @date 2022/04/18 18:12
+ */
+@Slf4j
+@Component
+public class SwaggerInterceptor implements HandlerInterceptor {
+
+    @Value("${swagger.enabled:false}")
+    private Boolean enabledSwagger;
+
+    @Value("${swagger.redirect-uri:/}")
+    private String redirectUri;
+
+    @Override
+    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
+        if (!enabledSwagger) {
+            String uri = request.getContextPath();
+            if (StringUtils.isNotBlank(redirectUri))
+                uri = request.getContextPath() + redirectUri;
+            if (StringUtils.isBlank(uri))
+                uri = "/";
+            try {
+                response.sendRedirect(uri);
+            } catch (IOException e) {
+                log.error(String.format("Redirect to '%s' for swagger throw an exception : %s", uri, e.getMessage()), e);
+            }
+            return Boolean.FALSE;
+        }
+        return Boolean.TRUE;
+    }
+}
diff --git a/server/platform/src/main/java/com/doumee/swagger/SwaggerInterceptorConfig.java b/server/platform/src/main/java/com/doumee/swagger/SwaggerInterceptorConfig.java
new file mode 100644
index 0000000..133fe7a
--- /dev/null
+++ b/server/platform/src/main/java/com/doumee/swagger/SwaggerInterceptorConfig.java
@@ -0,0 +1,23 @@
+package com.doumee.swagger;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+
+/**
+ * Swagger鎷︽埅鍣ㄩ厤缃�
+ * @author Eva.Caesar Liu
+ * @date 2022/04/18 18:12
+ */
+@Configuration
+public class SwaggerInterceptorConfig implements WebMvcConfigurer {
+
+    @Autowired
+    private SwaggerInterceptor swaggerInterceptor;
+
+    @Override
+    public void addInterceptors(InterceptorRegistry registry) {
+        registry.addInterceptor(swaggerInterceptor).addPathPatterns("/swagger-ui.html", "/doc.html");
+    }
+}
diff --git a/server/src/main/java/com/doumee/task/ScheduleTool.java b/server/platform/src/main/java/com/doumee/task/ScheduleTool.java
similarity index 100%
rename from server/src/main/java/com/doumee/task/ScheduleTool.java
rename to server/platform/src/main/java/com/doumee/task/ScheduleTool.java
diff --git a/server/platform/src/main/resources/application.yml b/server/platform/src/main/resources/application.yml
new file mode 100644
index 0000000..c6d3f67
--- /dev/null
+++ b/server/platform/src/main/resources/application.yml
@@ -0,0 +1,66 @@
+# 椤圭洰淇℃伅閰嶇疆
+project:
+  name: 棰勯�夋竻鍗曟煡璇�
+  version: 1.0.0
+  env: development
+#  env: production
+server:
+  port: 10011
+
+spring:
+#  application:
+#    name: doumeemes
+  profiles:
+    active: dev
+
+  # JSON杩斿洖閰嶇疆
+  jackson:
+    # 榛樿鏃跺尯
+    time-zone: GMT+8
+    # 榛樿鏃ユ湡鏍煎紡鍖�
+    date-format: yyyy-MM-dd HH:mm:ss
+  servlet:
+    multipart:
+      max-file-size: 200MB
+      max-request-size: 200MB
+      enabled: true
+# MyBatis閰嶇疆
+mybatis-plus:
+  mapper-locations: classpath*:/mappers/**/*.xml
+  configuration:
+    map-underscore-to-camel-case: true
+    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+
+# 缂撳瓨鍐呭璁剧疆
+cache:
+  session:
+    # 浼氳瘽杩囨湡鏃堕暱(s)
+    expire: 18000
+  captcha:
+    # 楠岃瘉鐮佽繃鏈熸椂闀�(s)
+    expire: 300
+
+
+# 璺熻釜鏃ュ織
+trace:
+  # 寮�鍚櫤鑳借窡韪ā寮�
+  smart: true
+  # 鎺掗櫎璺熻釜鐨刄RL姝e垯
+  exclude-patterns: .+/list[a-zA-Z0-9\-\_]*$, .+/tree[a-zA-Z0-9\-\_]*$, .+/page[a-zA-Z0-9\-\_]*$, .+/all[a-zA-Z0-9\-\_]*$, /swagger-resources.*
+
+
+# 鏃ュ織閰嶇疆
+logback:
+  level: INFO
+  appender: ${project.env}
+# dao灞傜殑鏃ュ織璁剧疆涓篸ebug锛屾柟渚挎煡鐪媠ql
+logging:
+  level:
+    doumeemes.dao: debug
+
+knife4j:
+  enable: true
+  basic:
+    enable: true
+    username: admin
+    password: 111111
\ No newline at end of file
diff --git a/server/pom.xml b/server/pom.xml
index e7ce42f..012fa87 100644
--- a/server/pom.xml
+++ b/server/pom.xml
@@ -4,14 +4,18 @@
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.doumee</groupId>
-  <artifactId>pre_select</artifactId>
+  <artifactId>preselect</artifactId>
   <version>1.0.0-SNAPSHOT</version>
-  <packaging>jar</packaging>
-
-  <name>pre_select</name>
+  <packaging>pom</packaging>
+  <name>preselect</name>
   <description></description>
+    <modules>
+      <module>platform</module>
+      <module>service</module>
+      <module>company</module>
+    </modules>
 
-  <parent>
+    <parent>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-parent</artifactId>
     <version>2.2.5.RELEASE</version>
@@ -38,6 +42,10 @@
     <dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-web</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.springframework.boot</groupId>
+      <artifactId>spring-boot-starter-data-redis</artifactId>
     </dependency>
     <!-- Shiro -->
     <dependency>
@@ -214,15 +222,26 @@
       </properties>
     </profile>
   </profiles>
-
   <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-compiler-plugin</artifactId>
+        <configuration>
+          <source>${java.version}</source>
+          <target>${java.version}</target>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+  <!--<build>
 
     <finalName>${project.artifactId}</finalName>
 
     <resources>
       <resource>
-        <directory>src/main/resources</directory>
-<!--        <filtering>true</filtering>-->
+        <directory>service/src/main/resources</directory>
+&lt;!&ndash;        <filtering>true</filtering>&ndash;&gt;
       </resource>
     </resources>
     <plugins>
@@ -234,6 +253,6 @@
         </configuration>
       </plugin>
     </plugins>
-  </build>
+  </build>-->
 
 </project>
diff --git a/server/service/pom.xml b/server/service/pom.xml
new file mode 100644
index 0000000..5ff9058
--- /dev/null
+++ b/server/service/pom.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.doumee</groupId>
+        <artifactId>preselect</artifactId>
+        <version>1.0.0-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>service</artifactId>
+
+    <properties>
+        <maven.compiler.source>8</maven.compiler.source>
+        <maven.compiler.target>8</maven.compiler.target>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+
+</project>
\ No newline at end of file
diff --git a/server/src/main/java/com/doumee/biz/system/SystemDataPermissionBiz.java b/server/service/src/main/java/com/doumee/biz/system/SystemDataPermissionBiz.java
similarity index 100%
rename from server/src/main/java/com/doumee/biz/system/SystemDataPermissionBiz.java
rename to server/service/src/main/java/com/doumee/biz/system/SystemDataPermissionBiz.java
diff --git a/server/src/main/java/com/doumee/biz/system/SystemDepartmentBiz.java b/server/service/src/main/java/com/doumee/biz/system/SystemDepartmentBiz.java
similarity index 100%
rename from server/src/main/java/com/doumee/biz/system/SystemDepartmentBiz.java
rename to server/service/src/main/java/com/doumee/biz/system/SystemDepartmentBiz.java
diff --git a/server/src/main/java/com/doumee/biz/system/SystemDictBiz.java b/server/service/src/main/java/com/doumee/biz/system/SystemDictBiz.java
similarity index 100%
rename from server/src/main/java/com/doumee/biz/system/SystemDictBiz.java
rename to server/service/src/main/java/com/doumee/biz/system/SystemDictBiz.java
diff --git a/server/src/main/java/com/doumee/biz/system/SystemDictDataBiz.java b/server/service/src/main/java/com/doumee/biz/system/SystemDictDataBiz.java
similarity index 100%
rename from server/src/main/java/com/doumee/biz/system/SystemDictDataBiz.java
rename to server/service/src/main/java/com/doumee/biz/system/SystemDictDataBiz.java
diff --git a/server/src/main/java/com/doumee/biz/system/SystemMenuBiz.java b/server/service/src/main/java/com/doumee/biz/system/SystemMenuBiz.java
similarity index 100%
rename from server/src/main/java/com/doumee/biz/system/SystemMenuBiz.java
rename to server/service/src/main/java/com/doumee/biz/system/SystemMenuBiz.java
diff --git a/server/src/main/java/com/doumee/biz/system/SystemPermissionBiz.java b/server/service/src/main/java/com/doumee/biz/system/SystemPermissionBiz.java
similarity index 100%
rename from server/src/main/java/com/doumee/biz/system/SystemPermissionBiz.java
rename to server/service/src/main/java/com/doumee/biz/system/SystemPermissionBiz.java
diff --git a/server/src/main/java/com/doumee/biz/system/SystemPositionBiz.java b/server/service/src/main/java/com/doumee/biz/system/SystemPositionBiz.java
similarity index 100%
rename from server/src/main/java/com/doumee/biz/system/SystemPositionBiz.java
rename to server/service/src/main/java/com/doumee/biz/system/SystemPositionBiz.java
diff --git a/server/src/main/java/com/doumee/biz/system/SystemRoleBiz.java b/server/service/src/main/java/com/doumee/biz/system/SystemRoleBiz.java
similarity index 100%
rename from server/src/main/java/com/doumee/biz/system/SystemRoleBiz.java
rename to server/service/src/main/java/com/doumee/biz/system/SystemRoleBiz.java
diff --git a/server/src/main/java/com/doumee/biz/system/SystemUserBiz.java b/server/service/src/main/java/com/doumee/biz/system/SystemUserBiz.java
similarity index 100%
rename from server/src/main/java/com/doumee/biz/system/SystemUserBiz.java
rename to server/service/src/main/java/com/doumee/biz/system/SystemUserBiz.java
diff --git a/server/src/main/java/com/doumee/biz/system/impl/SystemDataPermissionBizImpl.java b/server/service/src/main/java/com/doumee/biz/system/impl/SystemDataPermissionBizImpl.java
similarity index 100%
rename from server/src/main/java/com/doumee/biz/system/impl/SystemDataPermissionBizImpl.java
rename to server/service/src/main/java/com/doumee/biz/system/impl/SystemDataPermissionBizImpl.java
diff --git a/server/src/main/java/com/doumee/biz/system/impl/SystemDepartmentBizImpl.java b/server/service/src/main/java/com/doumee/biz/system/impl/SystemDepartmentBizImpl.java
similarity index 100%
rename from server/src/main/java/com/doumee/biz/system/impl/SystemDepartmentBizImpl.java
rename to server/service/src/main/java/com/doumee/biz/system/impl/SystemDepartmentBizImpl.java
diff --git a/server/src/main/java/com/doumee/biz/system/impl/SystemDictBizImpl.java b/server/service/src/main/java/com/doumee/biz/system/impl/SystemDictBizImpl.java
similarity index 100%
rename from server/src/main/java/com/doumee/biz/system/impl/SystemDictBizImpl.java
rename to server/service/src/main/java/com/doumee/biz/system/impl/SystemDictBizImpl.java
diff --git a/server/src/main/java/com/doumee/biz/system/impl/SystemDictDataBizImpl.java b/server/service/src/main/java/com/doumee/biz/system/impl/SystemDictDataBizImpl.java
similarity index 100%
rename from server/src/main/java/com/doumee/biz/system/impl/SystemDictDataBizImpl.java
rename to server/service/src/main/java/com/doumee/biz/system/impl/SystemDictDataBizImpl.java
diff --git a/server/src/main/java/com/doumee/biz/system/impl/SystemMenuBizImpl.java b/server/service/src/main/java/com/doumee/biz/system/impl/SystemMenuBizImpl.java
similarity index 100%
rename from server/src/main/java/com/doumee/biz/system/impl/SystemMenuBizImpl.java
rename to server/service/src/main/java/com/doumee/biz/system/impl/SystemMenuBizImpl.java
diff --git a/server/src/main/java/com/doumee/biz/system/impl/SystemPermissionBizImpl.java b/server/service/src/main/java/com/doumee/biz/system/impl/SystemPermissionBizImpl.java
similarity index 100%
rename from server/src/main/java/com/doumee/biz/system/impl/SystemPermissionBizImpl.java
rename to server/service/src/main/java/com/doumee/biz/system/impl/SystemPermissionBizImpl.java
diff --git a/server/src/main/java/com/doumee/biz/system/impl/SystemPositionBizImpl.java b/server/service/src/main/java/com/doumee/biz/system/impl/SystemPositionBizImpl.java
similarity index 100%
rename from server/src/main/java/com/doumee/biz/system/impl/SystemPositionBizImpl.java
rename to server/service/src/main/java/com/doumee/biz/system/impl/SystemPositionBizImpl.java
diff --git a/server/src/main/java/com/doumee/biz/system/impl/SystemRoleBizImpl.java b/server/service/src/main/java/com/doumee/biz/system/impl/SystemRoleBizImpl.java
similarity index 100%
rename from server/src/main/java/com/doumee/biz/system/impl/SystemRoleBizImpl.java
rename to server/service/src/main/java/com/doumee/biz/system/impl/SystemRoleBizImpl.java
diff --git a/server/src/main/java/com/doumee/biz/system/impl/SystemUserBizImpl.java b/server/service/src/main/java/com/doumee/biz/system/impl/SystemUserBizImpl.java
similarity index 100%
rename from server/src/main/java/com/doumee/biz/system/impl/SystemUserBizImpl.java
rename to server/service/src/main/java/com/doumee/biz/system/impl/SystemUserBizImpl.java
diff --git a/server/src/main/java/com/doumee/config/handler/GlobalExceptionHandler.java b/server/service/src/main/java/com/doumee/config/handler/GlobalExceptionHandler.java
similarity index 100%
rename from server/src/main/java/com/doumee/config/handler/GlobalExceptionHandler.java
rename to server/service/src/main/java/com/doumee/config/handler/GlobalExceptionHandler.java
diff --git a/server/src/main/java/com/doumee/config/mybatis/MyBatisInterceptor.java b/server/service/src/main/java/com/doumee/config/mybatis/MyBatisInterceptor.java
similarity index 100%
rename from server/src/main/java/com/doumee/config/mybatis/MyBatisInterceptor.java
rename to server/service/src/main/java/com/doumee/config/mybatis/MyBatisInterceptor.java
diff --git a/server/src/main/java/com/doumee/config/mybatis/MyBatisPlusConfig.java b/server/service/src/main/java/com/doumee/config/mybatis/MyBatisPlusConfig.java
similarity index 100%
rename from server/src/main/java/com/doumee/config/mybatis/MyBatisPlusConfig.java
rename to server/service/src/main/java/com/doumee/config/mybatis/MyBatisPlusConfig.java
diff --git a/server/service/src/main/java/com/doumee/config/shiroMemory/ShiroAuthFilter.java b/server/service/src/main/java/com/doumee/config/shiroMemory/ShiroAuthFilter.java
new file mode 100644
index 0000000..8f0932f
--- /dev/null
+++ b/server/service/src/main/java/com/doumee/config/shiroMemory/ShiroAuthFilter.java
@@ -0,0 +1,30 @@
+package com.doumee.config.shiroMemory;
+
+import com.doumee.core.model.ApiResponse;
+import com.alibaba.fastjson.JSON;
+import org.apache.shiro.web.filter.authc.FormAuthenticationFilter;
+import org.springframework.http.HttpStatus;
+
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * Shiro璁よ瘉杩囨护鍣紝澶勭悊鏈璇佹儏鍐电殑鍝嶅簲
+ * @author Eva.Caesar Liu
+ * @date 2023/02/14 11:14
+ */
+public class ShiroAuthFilter extends FormAuthenticationFilter {
+
+    public ShiroAuthFilter() {
+        super();
+    }
+
+    @Override
+    protected boolean onAccessDenied(ServletRequest request, ServletResponse response) throws Exception {
+        HttpServletResponse servletResponse = (HttpServletResponse) response;
+        servletResponse.setHeader("content-type", "application/json;charset=UTF-8");
+        servletResponse.getWriter().write(JSON.toJSONString(ApiResponse.failed(HttpStatus.UNAUTHORIZED.value(), "鏈櫥褰曟垨鐧诲綍淇℃伅宸茶繃鏈�")));
+        return Boolean.FALSE;
+    }
+}
diff --git a/server/service/src/main/java/com/doumee/config/shiroMemory/ShiroCache.java b/server/service/src/main/java/com/doumee/config/shiroMemory/ShiroCache.java
new file mode 100644
index 0000000..6390a49
--- /dev/null
+++ b/server/service/src/main/java/com/doumee/config/shiroMemory/ShiroCache.java
@@ -0,0 +1,113 @@
+package com.doumee.config.shiroMemory;
+
+import com.doumee.service.proxy.CacheProxy;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.shiro.cache.Cache;
+import org.apache.shiro.cache.CacheException;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Scope;
+import org.springframework.stereotype.Component;
+import org.springframework.util.CollectionUtils;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Set;
+
+/**
+ * Shiro缂撳瓨
+ * @author Eva.Caesar Liu
+ * @date 2023/02/14 11:14
+ */
+@Scope(value = "prototype")
+@Slf4j
+//@Component
+public class ShiroCache implements Cache<Object, Serializable> {
+
+    private String keyPrefix = "";
+
+    @Autowired
+    private CacheProxy<Object, Serializable> cacheProxy;
+
+    public ShiroCache () {
+        log.debug("ShiroCache: new, keyPrefix = [" + keyPrefix + "]");
+    }
+
+    public ShiroCache(String keyPrefix) {
+        log.debug("ShiroCache: new, keyPrefix = [" + keyPrefix + "]");
+        this.keyPrefix = keyPrefix;
+    }
+
+    @Override
+    public Serializable get(Object key) throws CacheException {
+        if (key == null) {
+            return null;
+        }
+        return cacheProxy.get(getKey(key));
+    }
+
+    @Override
+    public Serializable put(Object key, Serializable value) throws CacheException {
+        if (key == null) {
+            return null;
+        }
+        cacheProxy.put(getKey(key), value);
+        return value;
+    }
+
+    public Serializable put(Object key, Serializable value, int timeout) throws CacheException {
+        if (key == null) {
+            return null;
+        }
+        cacheProxy.put(getKey(key), value, timeout);
+        return value;
+    }
+
+    @Override
+    public void clear() throws CacheException {
+        Set<Object> keys = this.keys();
+        cacheProxy.remove(keys);
+    }
+
+    @Override
+    public int size() {
+        return this.keys().size();
+    }
+
+    @Override
+    public Set<Object> keys() {
+        Set<Object> keys = cacheProxy.keys(keyPrefix + "*");
+        if (CollectionUtils.isEmpty(keys)) {
+            return Collections.emptySet();
+        }
+        return keys;
+    }
+
+    @Override
+    public Collection<Serializable> values() {
+        Collection<Serializable> values = new ArrayList<>();
+        Set<Object> keys = this.keys();
+        if (CollectionUtils.isEmpty(keys)) {
+            return values;
+        }
+        for (Object k : keys) {
+            values.add(cacheProxy.get(k));
+        }
+        return values;
+    }
+
+    @Override
+    public Serializable remove(Object key) throws CacheException {
+        if (key == null) {
+            return null;
+        }
+        Serializable value = this.get(getKey(key));
+        cacheProxy.remove(getKey(key));
+        return value;
+    }
+
+    private Object getKey (Object key) {
+        return (key instanceof String ? (this.keyPrefix + key) : key);
+    }
+}
diff --git a/server/service/src/main/java/com/doumee/config/shiroMemory/ShiroCacheManager.java b/server/service/src/main/java/com/doumee/config/shiroMemory/ShiroCacheManager.java
new file mode 100644
index 0000000..d437489
--- /dev/null
+++ b/server/service/src/main/java/com/doumee/config/shiroMemory/ShiroCacheManager.java
@@ -0,0 +1,44 @@
+package com.doumee.config.shiroMemory;
+
+import lombok.extern.slf4j.Slf4j;
+import org.apache.shiro.cache.Cache;
+import org.apache.shiro.cache.CacheException;
+import org.apache.shiro.cache.CacheManager;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.ApplicationContext;
+import org.springframework.stereotype.Component;
+
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
+
+/**
+ * 鑷畾涔塖hiro CacheManager
+ * @author Eva.Caesar Liu
+ * @date 2023/02/14 11:14
+ */
+@Slf4j
+//@Component
+public class ShiroCacheManager implements CacheManager {
+
+    private final ConcurrentMap<String, Cache> caches = new ConcurrentHashMap();
+
+    private static ApplicationContext applicationContext;
+
+    @Override
+    public <K, V> Cache<K, V> getCache(String name) throws CacheException {
+        log.debug("get cache, name=" + name);
+        Cache cache = this.caches.get(name);
+        if (cache == null) {
+            cache = applicationContext.getBean(ShiroCache.class, "shiro:cache:");
+            this.caches.put(name, cache);
+        }
+        return cache;
+    }
+
+    @Autowired
+    public void setApplicationContext (ApplicationContext applicationContext) {
+        if (ShiroCacheManager.applicationContext == null) {
+            ShiroCacheManager.applicationContext = applicationContext;
+        }
+    }
+}
diff --git a/server/service/src/main/java/com/doumee/config/shiroMemory/ShiroConfig.java b/server/service/src/main/java/com/doumee/config/shiroMemory/ShiroConfig.java
new file mode 100644
index 0000000..509c63d
--- /dev/null
+++ b/server/service/src/main/java/com/doumee/config/shiroMemory/ShiroConfig.java
@@ -0,0 +1,142 @@
+package com.doumee.config.shiroMemory;
+
+import org.apache.coyote.http11.AbstractHttp11Protocol;
+import org.apache.shiro.mgt.SecurityManager;
+import org.apache.shiro.session.mgt.SessionManager;
+import org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor;
+import org.apache.shiro.spring.web.ShiroFilterFactoryBean;
+import org.apache.shiro.web.mgt.DefaultWebSecurityManager;
+import org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.boot.web.embedded.tomcat.TomcatConnectorCustomizer;
+import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
+import org.springframework.boot.web.servlet.server.ServletWebServerFactory;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+import javax.servlet.Filter;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+/**
+ * Shiro閰嶇疆
+ * @author Eva.Caesar Liu
+ * @date 2023/02/14 11:14
+ */
+//@Configuration
+public class ShiroConfig {
+
+    @Value("${cache.session.expire}")
+    private int sessionExpireTime;
+
+    @Autowired
+    private ShiroCredentialsMatcher shiroCredentialsMatcher;
+
+    @Autowired
+    private ShiroSessionDAO shiroSessionDAO;
+
+    @Autowired
+    private ShiroCacheManager shiroCacheManager;
+
+    @Autowired
+    private ShiroRealm shiroRealm;
+
+    @Bean
+    public DefaultAdvisorAutoProxyCreator defaultAdvisorAutoProxyCreator() {
+        DefaultAdvisorAutoProxyCreator autoProxyCreator = new DefaultAdvisorAutoProxyCreator();
+        autoProxyCreator.setProxyTargetClass(true);
+        return autoProxyCreator;
+    }
+
+    @Bean
+    public SessionManager sessionManager() {
+        ShiroSessionManager sessionManager = new ShiroSessionManager();
+        sessionManager.setSessionDAO(shiroSessionDAO);
+        return sessionManager;
+    }
+
+    @Bean
+    public SecurityManager securityManager() {
+        DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
+        securityManager.setRealm(shiroRealm);
+        securityManager.setSessionManager(this.sessionManager());
+        securityManager.setCacheManager(shiroCacheManager);
+        return securityManager;
+    }
+
+    @Bean
+    public ShiroFilterFactoryBean shiroFilterFactoryBean(SecurityManager securityManager) {
+        ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean();
+        shiroFilterFactoryBean.setSecurityManager(securityManager);
+        Map<String, String> map = new LinkedHashMap<>();
+        // 璺緞鎷︽埅閰嶇疆
+        map.put("/system/dictData/companyUserRules","anon");
+        map.put("/system/login", "anon");
+        map.put("/system/logout", "anon");
+        map.put("/common/captcha", "anon");
+        map.put("/business/areas/*", "anon");
+        map.put("/business/company/register", "anon");
+        map.put("/business/labels/page","anon");
+        map.put("/public/uploadPicture","anon");
+        map.put("/public/uploadLocal","anon");
+        map.put("/business/*/list","anon");
+        map.put("/business/goods/goodsPage","anon");
+        map.put("/business/goods/h5Image","anon");
+        map.put("/business/goods/export","anon");
+        map.put("/business/goods/listForH5","anon");
+
+
+        // - 鏀捐swagger
+        map.put("/doc.html", "anon");
+        map.put("/webjars/**", "anon");
+        map.put("/swagger-resources/**", "anon");
+        map.put("/v2/api-docs/**", "anon");
+
+        // - 鍏朵粬鎺ュ彛缁熶竴鎷︽埅
+        map.put("/**", "authc");
+        shiroFilterFactoryBean.setFilterChainDefinitionMap(map);
+        // 娣诲姞璁よ瘉杩囨护鍣�
+        Map<String, Filter> filters = new LinkedHashMap<>();
+        filters.put("authc", new ShiroAuthFilter());
+        shiroFilterFactoryBean.setFilters(filters);
+        return shiroFilterFactoryBean;
+    }
+
+    @Bean
+    public AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor(SecurityManager securityManager) {
+        AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor = new AuthorizationAttributeSourceAdvisor();
+        authorizationAttributeSourceAdvisor.setSecurityManager(securityManager);
+        return authorizationAttributeSourceAdvisor;
+    }
+
+    @Bean
+    public ShiroSessionDAO getShiroSessionDAO () {
+        shiroSessionDAO.setExpireTime(sessionExpireTime);
+        return shiroSessionDAO;
+    }
+
+    @Bean
+    public ShiroRealm getShiroRealm () {
+        shiroRealm.setCredentialsMatcher(shiroCredentialsMatcher);
+        return shiroRealm;
+    }
+
+    private int maxUploadSizeInMb = 10 * 1024 * 1024; // 10 MB
+
+    @Bean
+    public TomcatServletWebServerFactory tomcatEmbedded() {
+
+        TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory();
+        tomcat.addConnectorCustomizers((TomcatConnectorCustomizer) connector -> {
+            // connector other settings...
+            // configure maxSwallowSize
+            if ((connector.getProtocolHandler() instanceof AbstractHttp11Protocol<?>)) {
+                // -1 means unlimited, accept bytes
+                ((AbstractHttp11Protocol<?>) connector.getProtocolHandler()).setMaxSwallowSize(-1);
+            }
+        });
+        return tomcat;
+    }
+}
diff --git a/server/service/src/main/java/com/doumee/config/shiroMemory/ShiroCredentialsMatcher.java b/server/service/src/main/java/com/doumee/config/shiroMemory/ShiroCredentialsMatcher.java
new file mode 100644
index 0000000..434588b
--- /dev/null
+++ b/server/service/src/main/java/com/doumee/config/shiroMemory/ShiroCredentialsMatcher.java
@@ -0,0 +1,41 @@
+package com.doumee.config.shiroMemory;
+
+import com.doumee.core.utils.Utils;
+import com.doumee.dao.system.model.SystemUser;
+import com.doumee.service.system.SystemUserService;
+import org.apache.shiro.authc.AuthenticationInfo;
+import org.apache.shiro.authc.AuthenticationToken;
+import org.apache.shiro.authc.UsernamePasswordToken;
+import org.apache.shiro.authc.credential.HashedCredentialsMatcher;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.stereotype.Component;
+
+/**
+ * Shiro瀵嗙爜姣斿澶勭悊
+ * @author Eva.Caesar Liu
+ * @date 2023/02/14 11:14
+ */
+//@Component
+public class ShiroCredentialsMatcher extends HashedCredentialsMatcher {
+
+    @Lazy
+    @Autowired
+    private SystemUserService systemUserService;
+
+    @Override
+    public boolean doCredentialsMatch(AuthenticationToken token, AuthenticationInfo info) {
+        UsernamePasswordToken usernamePasswordToken = (UsernamePasswordToken) token;
+        SystemUser queryUserDto = new SystemUser();
+        queryUserDto.setUsername(usernamePasswordToken.getUsername());
+        queryUserDto.setDeleted(Boolean.FALSE);
+        SystemUser systemUser = systemUserService.findOne(queryUserDto);
+        if (systemUser == null) {
+            return Boolean.FALSE;
+        }
+        // 鍔犲瘑瀵嗙爜
+        String pwd = Utils.Secure.encryptPassword(new String(usernamePasswordToken.getPassword()), systemUser.getSalt());
+        // 姣旇緝瀵嗙爜
+        return this.equals(pwd, systemUser.getPassword());
+    }
+}
diff --git a/server/service/src/main/java/com/doumee/config/shiroMemory/ShiroRealm.java b/server/service/src/main/java/com/doumee/config/shiroMemory/ShiroRealm.java
new file mode 100644
index 0000000..6e5d23e
--- /dev/null
+++ b/server/service/src/main/java/com/doumee/config/shiroMemory/ShiroRealm.java
@@ -0,0 +1,90 @@
+package com.doumee.config.shiroMemory;
+
+import com.doumee.core.constants.ResponseStatus;
+import com.doumee.core.exception.BusinessException;
+import com.doumee.core.model.LoginUserInfo;
+import com.doumee.core.utils.Constants;
+import com.doumee.dao.system.model.SystemPermission;
+import com.doumee.dao.system.model.SystemRole;
+import com.doumee.dao.system.model.SystemUser;
+import com.doumee.service.system.SystemPermissionService;
+import com.doumee.service.system.SystemRoleService;
+import com.doumee.service.system.SystemUserService;
+import org.apache.shiro.authc.AuthenticationException;
+import org.apache.shiro.authc.AuthenticationInfo;
+import org.apache.shiro.authc.AuthenticationToken;
+import org.apache.shiro.authc.SimpleAuthenticationInfo;
+import org.apache.shiro.authz.AuthorizationInfo;
+import org.apache.shiro.authz.SimpleAuthorizationInfo;
+import org.apache.shiro.realm.AuthorizingRealm;
+import org.apache.shiro.subject.PrincipalCollection;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+/**
+ * 鑷畾涔塕ealm锛屽鐞嗚璇佸拰鏉冮檺
+ * @author Eva.Caesar Liu
+ * @date 2023/02/14 11:14
+ */
+//@Component
+public class ShiroRealm extends AuthorizingRealm {
+
+    @Lazy
+    @Autowired
+    private SystemUserService systemUserService;
+
+    @Lazy
+    @Autowired
+    private SystemRoleService systemRoleService;
+
+    @Lazy
+    @Autowired
+    private SystemPermissionService systemPermissionService;
+
+    /**
+     * 鏉冮檺澶勭悊
+     * @author Eva.Caesar Liu
+     * @date 2023/02/14 11:14
+     */
+    @Override
+    protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) {
+        LoginUserInfo loginUserInfo = (LoginUserInfo)principalCollection.getPrimaryPrincipal();
+        // 璁剧疆鐢ㄦ埛瑙掕壊鍜屾潈闄�
+        SimpleAuthorizationInfo authorizationInfo = new SimpleAuthorizationInfo();
+        authorizationInfo.addRoles(loginUserInfo.getRoles());
+        authorizationInfo.addStringPermissions(loginUserInfo.getPermissions());
+        return authorizationInfo;
+    }
+
+    /**
+     * 璁よ瘉澶勭悊
+     * @author Eva.Caesar Liu
+     * @date 2023/02/14 11:14
+     */
+    @Override
+    protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) throws AuthenticationException {
+        // 鑾峰彇鐢ㄦ埛鍚�
+        String username = authenticationToken.getPrincipal().toString();
+        // 鏍规嵁鐢ㄦ埛鍚嶆煡璇㈢敤鎴峰璞�
+        SystemUser queryDto = new SystemUser();
+        queryDto.setUsername(username);
+        queryDto.setDeleted(Boolean.FALSE);
+        SystemUser user = systemUserService.findOne(queryDto);
+        if(!Constants.equalsInteger(user.getStatus(),Constants.ZERO)){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝璐﹀彿淇℃伅宸茶绂佺敤锛屽鏈夌枒闂鑱旂郴绯荤粺绠$悊鍛橈紒");
+        }
+        if (user == null) {
+            return null;
+        }
+        // 鑾峰彇鐧诲綍鐢ㄦ埛淇℃伅
+        List<SystemRole> roles = systemRoleService.findByUserId(user.getId());
+        List<SystemPermission> permissions = systemPermissionService.findByUserId(user.getId());
+        LoginUserInfo userInfo = LoginUserInfo.from(user, roles, permissions);
+        // 楠岃瘉鐢ㄦ埛
+        return new SimpleAuthenticationInfo(userInfo, user.getPassword(), this.getName());
+    }
+
+}
diff --git a/server/service/src/main/java/com/doumee/config/shiroMemory/ShiroSessionDAO.java b/server/service/src/main/java/com/doumee/config/shiroMemory/ShiroSessionDAO.java
new file mode 100644
index 0000000..b9e9316
--- /dev/null
+++ b/server/service/src/main/java/com/doumee/config/shiroMemory/ShiroSessionDAO.java
@@ -0,0 +1,110 @@
+package com.doumee.config.shiroMemory;
+
+import lombok.Data;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.shiro.session.Session;
+import org.apache.shiro.session.UnknownSessionException;
+import org.apache.shiro.session.mgt.SimpleSession;
+import org.apache.shiro.session.mgt.eis.SessionDAO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.io.Serializable;
+import java.util.*;
+
+/**
+ * 鑷畾涔塖hiro SessionDAO锛屽皢浼氳瘽淇℃伅瀛樺叆缂撳瓨涓�
+ * @author Eva.Caesar Liu
+ * @date 2023/02/14 11:14
+ */
+@Data
+@Slf4j
+//@Component
+public class ShiroSessionDAO implements SessionDAO {
+
+    private static final String KEY_PREFIX = "shiro:session:";
+
+    @Autowired
+    private ShiroCache shiroCache;
+
+    private int expireTime = 1800;
+
+    @Autowired
+    private ShiroTokenManager shiroTokenManager;
+
+    @Override
+    public Serializable create(Session session) {
+        if (session == null) {
+            log.error("session is null");
+            throw new UnknownSessionException("session is null");
+        }
+        Serializable sessionId = shiroTokenManager.build();
+        ((SimpleSession)session).setId(sessionId);
+        this.saveSession(session);
+        return sessionId;
+    }
+
+    @Override
+    public Session readSession(Serializable sessionId) throws UnknownSessionException{
+        if (sessionId == null) {
+            log.warn("session id is null");
+            return null;
+        }
+        if (sessionId instanceof String) {
+            // 瀵筍essionId杩涜楠岃瘉锛堝彲鐢ㄤ簬闃叉Session鎹曡幏銆佹毚鍔涙崟鎹夌瓑涓�绯诲垪瀹夊叏闂锛屾渶缁堝畨鍏ㄦ�у彇鍐充簬check濡備綍瀹炵幇锛�
+            shiroTokenManager.check((String) sessionId);
+        }
+        log.debug("read session from cache");
+        Session session = getSessionFromCache(sessionId);
+        if (session == null) {
+            throw new UnknownSessionException("There is no session with id [" + sessionId + "]");
+        }
+        return session;
+    }
+
+    @Override
+    public void update(Session session) throws UnknownSessionException {
+        this.saveSession(session);
+    }
+
+    @Override
+    public void delete(Session session) {
+        if (session != null && session.getId() != null) {
+            shiroCache.remove(KEY_PREFIX + session.getId());
+        }
+    }
+
+    @Override
+    public Collection<Session> getActiveSessions() {
+        Set<Session> sessions = new HashSet<>();
+        Set<Object> keys = shiroCache.keys();
+        if (keys != null && keys.size() > 0) {
+            Iterator iter = keys.iterator();
+            while(iter.hasNext()) {
+                sessions.add((Session) shiroCache.get(iter.next()));
+            }
+        }
+        return sessions;
+    }
+
+    private void saveSession(Session session) throws UnknownSessionException {
+        if (session == null || session.getId() == null) {
+            log.error("session or session id is null");
+            throw new UnknownSessionException("session or session id is null");
+        }
+        shiroCache.put(KEY_PREFIX + session.getId(), (SimpleSession)session, expireTime);
+    }
+
+    private Session getSessionFromCache (Serializable sessionId) {
+        Serializable object = shiroCache.get(KEY_PREFIX + sessionId);
+        Session session = null;
+        if (object != null) {
+            session = (Session)shiroCache.get(KEY_PREFIX + sessionId);
+        }
+        return session;
+    }
+
+    public void setExpireTime (int expireTime) {
+        this.expireTime = expireTime;
+    }
+}
diff --git a/server/service/src/main/java/com/doumee/config/shiroMemory/ShiroSessionManager.java b/server/service/src/main/java/com/doumee/config/shiroMemory/ShiroSessionManager.java
new file mode 100644
index 0000000..9f26e06
--- /dev/null
+++ b/server/service/src/main/java/com/doumee/config/shiroMemory/ShiroSessionManager.java
@@ -0,0 +1,86 @@
+package com.doumee.config.shiroMemory;
+
+import lombok.extern.slf4j.Slf4j;
+import org.apache.shiro.session.Session;
+import org.apache.shiro.session.mgt.DefaultSessionManager;
+import org.apache.shiro.session.mgt.SessionContext;
+import org.apache.shiro.session.mgt.SessionKey;
+import org.apache.shiro.web.servlet.Cookie;
+import org.apache.shiro.web.servlet.ShiroHttpServletRequest;
+import org.apache.shiro.web.servlet.SimpleCookie;
+import org.apache.shiro.web.session.mgt.WebSessionManager;
+import org.apache.shiro.web.util.WebUtils;
+
+import javax.servlet.ServletRequest;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.Serializable;
+
+/**
+ * 鑷畾涔変細璇濈鐞嗗櫒
+ * @author Eva.Caesar Liu
+ * @date 2023/02/14 11:14
+ */
+@Slf4j
+public class ShiroSessionManager extends DefaultSessionManager implements WebSessionManager {
+
+    private static final String AUTH_TOKEN = "eva-auth-token";
+
+    @Override
+    protected void onStart(Session session, SessionContext context) {
+        super.onStart(session, context);
+        if (!WebUtils.isHttp(context)) {
+            log.debug("SessionContext argument is not Http compatible or does not have an Http request/response pair. No session ID cookie will be set.");
+            return;
+        }
+        HttpServletRequest request = WebUtils.getHttpRequest(context);
+        HttpServletResponse response = WebUtils.getHttpResponse(context);
+        Serializable sessionId = session.getId();
+        this.storeSessionId(sessionId, request, response);
+        request.removeAttribute(ShiroHttpServletRequest.REFERENCED_SESSION_ID_SOURCE);
+        request.setAttribute(ShiroHttpServletRequest.REFERENCED_SESSION_IS_NEW, Boolean.TRUE);
+    }
+
+    @Override
+    public Serializable getSessionId(SessionKey key) {
+        Serializable sessionId = super.getSessionId(key);
+        if (sessionId == null && WebUtils.isWeb(key)) {
+            ServletRequest servletRequest = WebUtils.getRequest(key);
+            if (!(servletRequest instanceof HttpServletRequest)) {
+                log.trace("Can not get sessionId from header, the request is not HttpServletRequest");
+                return null;
+            }
+            HttpServletRequest request = (HttpServletRequest) servletRequest;
+            // 浠巆ookie涓幏鍙栬璇�
+            javax.servlet.http.Cookie[] cookies = request.getCookies();
+            if (cookies != null) {
+                for (javax.servlet.http.Cookie cookie : cookies) {
+                    if (AUTH_TOKEN.equals(cookie.getName())) {
+                        return cookie.getValue();
+                    }
+                }
+            }
+            // 浠巋eader涓幏鍙栬璇�
+            return request.getHeader(AUTH_TOKEN);
+        }
+        return sessionId;
+    }
+
+    @Override
+    public boolean isServletContainerSessions() {
+        return false;
+    }
+
+    private void storeSessionId(Serializable currentId, HttpServletRequest request, HttpServletResponse response) {
+        if (currentId == null) {
+            String msg = "sessionId cannot be null when persisting for subsequent requests.";
+            throw new IllegalArgumentException(msg);
+        }
+        Cookie cookie = new SimpleCookie(AUTH_TOKEN);
+        cookie.setHttpOnly(false);
+        String idString = currentId.toString();
+        cookie.setValue(idString);
+        cookie.saveTo(request, response);
+        log.trace("Set session ID cookie for session with id {}", idString);
+    }
+}
diff --git a/server/service/src/main/java/com/doumee/config/shiroMemory/ShiroTokenManager.java b/server/service/src/main/java/com/doumee/config/shiroMemory/ShiroTokenManager.java
new file mode 100644
index 0000000..795bdcf
--- /dev/null
+++ b/server/service/src/main/java/com/doumee/config/shiroMemory/ShiroTokenManager.java
@@ -0,0 +1,25 @@
+package com.doumee.config.shiroMemory;
+
+import com.doumee.core.exception.UnSafeSessionException;
+import org.springframework.stereotype.Component;
+
+import java.util.UUID;
+
+/**
+ * 榛樿Token绠$悊鍣�
+ * @author Eva.Caesar Liu
+ * @date 2023/02/14 11:14
+ */
+//@Component
+public class ShiroTokenManager {
+
+    String build() {
+        return UUID.randomUUID().toString();
+    }
+
+    void check(String token) throws UnSafeSessionException {
+        if (token == null || token.length() != 36) {
+            throw new UnSafeSessionException();
+        }
+    }
+}
diff --git a/server/src/main/java/com/doumee/core/annotation/excel/ExcelColumn.java b/server/service/src/main/java/com/doumee/core/annotation/excel/ExcelColumn.java
similarity index 100%
rename from server/src/main/java/com/doumee/core/annotation/excel/ExcelColumn.java
rename to server/service/src/main/java/com/doumee/core/annotation/excel/ExcelColumn.java
diff --git a/server/src/main/java/com/doumee/core/annotation/excel/ExcelDataHandlerAdapter.java b/server/service/src/main/java/com/doumee/core/annotation/excel/ExcelDataHandlerAdapter.java
similarity index 100%
rename from server/src/main/java/com/doumee/core/annotation/excel/ExcelDataHandlerAdapter.java
rename to server/service/src/main/java/com/doumee/core/annotation/excel/ExcelDataHandlerAdapter.java
diff --git a/server/src/main/java/com/doumee/core/annotation/excel/ExcelExporter.java b/server/service/src/main/java/com/doumee/core/annotation/excel/ExcelExporter.java
similarity index 100%
rename from server/src/main/java/com/doumee/core/annotation/excel/ExcelExporter.java
rename to server/service/src/main/java/com/doumee/core/annotation/excel/ExcelExporter.java
diff --git a/server/src/main/java/com/doumee/core/annotation/excel/ExcelImporter.java b/server/service/src/main/java/com/doumee/core/annotation/excel/ExcelImporter.java
similarity index 100%
rename from server/src/main/java/com/doumee/core/annotation/excel/ExcelImporter.java
rename to server/service/src/main/java/com/doumee/core/annotation/excel/ExcelImporter.java
diff --git a/server/src/main/java/com/doumee/core/annotation/excel/Reflections.java b/server/service/src/main/java/com/doumee/core/annotation/excel/Reflections.java
similarity index 100%
rename from server/src/main/java/com/doumee/core/annotation/excel/Reflections.java
rename to server/service/src/main/java/com/doumee/core/annotation/excel/Reflections.java
diff --git a/server/src/main/java/com/doumee/core/annotation/pr/PreventRepeat.java b/server/service/src/main/java/com/doumee/core/annotation/pr/PreventRepeat.java
similarity index 100%
rename from server/src/main/java/com/doumee/core/annotation/pr/PreventRepeat.java
rename to server/service/src/main/java/com/doumee/core/annotation/pr/PreventRepeat.java
diff --git a/server/src/main/java/com/doumee/core/annotation/pr/PreventRepeatAdapter.java b/server/service/src/main/java/com/doumee/core/annotation/pr/PreventRepeatAdapter.java
similarity index 100%
rename from server/src/main/java/com/doumee/core/annotation/pr/PreventRepeatAdapter.java
rename to server/service/src/main/java/com/doumee/core/annotation/pr/PreventRepeatAdapter.java
diff --git a/server/src/main/java/com/doumee/core/annotation/pr/PreventRepeatDefaultHandler.java b/server/service/src/main/java/com/doumee/core/annotation/pr/PreventRepeatDefaultHandler.java
similarity index 100%
rename from server/src/main/java/com/doumee/core/annotation/pr/PreventRepeatDefaultHandler.java
rename to server/service/src/main/java/com/doumee/core/annotation/pr/PreventRepeatDefaultHandler.java
diff --git a/server/src/main/java/com/doumee/core/annotation/pr/PreventRepeatInterceptor.java b/server/service/src/main/java/com/doumee/core/annotation/pr/PreventRepeatInterceptor.java
similarity index 100%
rename from server/src/main/java/com/doumee/core/annotation/pr/PreventRepeatInterceptor.java
rename to server/service/src/main/java/com/doumee/core/annotation/pr/PreventRepeatInterceptor.java
diff --git a/server/src/main/java/com/doumee/core/annotation/pr/PreventRepeatInterceptorConfig.java b/server/service/src/main/java/com/doumee/core/annotation/pr/PreventRepeatInterceptorConfig.java
similarity index 100%
rename from server/src/main/java/com/doumee/core/annotation/pr/PreventRepeatInterceptorConfig.java
rename to server/service/src/main/java/com/doumee/core/annotation/pr/PreventRepeatInterceptorConfig.java
diff --git a/server/src/main/java/com/doumee/core/annotation/trace/Trace.java b/server/service/src/main/java/com/doumee/core/annotation/trace/Trace.java
similarity index 100%
rename from server/src/main/java/com/doumee/core/annotation/trace/Trace.java
rename to server/service/src/main/java/com/doumee/core/annotation/trace/Trace.java
diff --git a/server/src/main/java/com/doumee/core/annotation/trace/TraceInterceptor.java b/server/service/src/main/java/com/doumee/core/annotation/trace/TraceInterceptor.java
similarity index 100%
rename from server/src/main/java/com/doumee/core/annotation/trace/TraceInterceptor.java
rename to server/service/src/main/java/com/doumee/core/annotation/trace/TraceInterceptor.java
diff --git a/server/src/main/java/com/doumee/core/annotation/trace/TraceInterceptorConfig.java b/server/service/src/main/java/com/doumee/core/annotation/trace/TraceInterceptorConfig.java
similarity index 100%
rename from server/src/main/java/com/doumee/core/annotation/trace/TraceInterceptorConfig.java
rename to server/service/src/main/java/com/doumee/core/annotation/trace/TraceInterceptorConfig.java
diff --git a/server/src/main/java/com/doumee/core/annotation/trace/TraceStatus.java b/server/service/src/main/java/com/doumee/core/annotation/trace/TraceStatus.java
similarity index 100%
rename from server/src/main/java/com/doumee/core/annotation/trace/TraceStatus.java
rename to server/service/src/main/java/com/doumee/core/annotation/trace/TraceStatus.java
diff --git a/server/src/main/java/com/doumee/core/annotation/trace/TraceType.java b/server/service/src/main/java/com/doumee/core/annotation/trace/TraceType.java
similarity index 100%
rename from server/src/main/java/com/doumee/core/annotation/trace/TraceType.java
rename to server/service/src/main/java/com/doumee/core/annotation/trace/TraceType.java
diff --git a/server/src/main/java/com/doumee/core/aware/DataPermissionAware.java b/server/service/src/main/java/com/doumee/core/aware/DataPermissionAware.java
similarity index 100%
rename from server/src/main/java/com/doumee/core/aware/DataPermissionAware.java
rename to server/service/src/main/java/com/doumee/core/aware/DataPermissionAware.java
diff --git a/server/src/main/java/com/doumee/core/aware/DataPermissionMapping.java b/server/service/src/main/java/com/doumee/core/aware/DataPermissionMapping.java
similarity index 100%
rename from server/src/main/java/com/doumee/core/aware/DataPermissionMapping.java
rename to server/service/src/main/java/com/doumee/core/aware/DataPermissionMapping.java
diff --git a/server/src/main/java/com/doumee/core/aware/DefaultDataPermissionAware.java b/server/service/src/main/java/com/doumee/core/aware/DefaultDataPermissionAware.java
similarity index 100%
rename from server/src/main/java/com/doumee/core/aware/DefaultDataPermissionAware.java
rename to server/service/src/main/java/com/doumee/core/aware/DefaultDataPermissionAware.java
diff --git a/server/src/main/java/com/doumee/core/cache/LocalCache.java b/server/service/src/main/java/com/doumee/core/cache/LocalCache.java
similarity index 100%
rename from server/src/main/java/com/doumee/core/cache/LocalCache.java
rename to server/service/src/main/java/com/doumee/core/cache/LocalCache.java
diff --git a/server/src/main/java/com/doumee/core/constants/DataPermissionConstants.java b/server/service/src/main/java/com/doumee/core/constants/DataPermissionConstants.java
similarity index 100%
rename from server/src/main/java/com/doumee/core/constants/DataPermissionConstants.java
rename to server/service/src/main/java/com/doumee/core/constants/DataPermissionConstants.java
diff --git a/server/src/main/java/com/doumee/core/constants/ExceptionLevel.java b/server/service/src/main/java/com/doumee/core/constants/ExceptionLevel.java
similarity index 100%
rename from server/src/main/java/com/doumee/core/constants/ExceptionLevel.java
rename to server/service/src/main/java/com/doumee/core/constants/ExceptionLevel.java
diff --git a/server/src/main/java/com/doumee/core/constants/OperaType.java b/server/service/src/main/java/com/doumee/core/constants/OperaType.java
similarity index 100%
rename from server/src/main/java/com/doumee/core/constants/OperaType.java
rename to server/service/src/main/java/com/doumee/core/constants/OperaType.java
diff --git a/server/src/main/java/com/doumee/core/constants/ResponseStatus.java b/server/service/src/main/java/com/doumee/core/constants/ResponseStatus.java
similarity index 100%
rename from server/src/main/java/com/doumee/core/constants/ResponseStatus.java
rename to server/service/src/main/java/com/doumee/core/constants/ResponseStatus.java
diff --git a/server/src/main/java/com/doumee/core/exception/BusinessException.java b/server/service/src/main/java/com/doumee/core/exception/BusinessException.java
similarity index 100%
rename from server/src/main/java/com/doumee/core/exception/BusinessException.java
rename to server/service/src/main/java/com/doumee/core/exception/BusinessException.java
diff --git a/server/src/main/java/com/doumee/core/exception/UnSafeSessionException.java b/server/service/src/main/java/com/doumee/core/exception/UnSafeSessionException.java
similarity index 100%
rename from server/src/main/java/com/doumee/core/exception/UnSafeSessionException.java
rename to server/service/src/main/java/com/doumee/core/exception/UnSafeSessionException.java
diff --git a/server/src/main/java/com/doumee/core/model/ApiResponse.java b/server/service/src/main/java/com/doumee/core/model/ApiResponse.java
similarity index 100%
rename from server/src/main/java/com/doumee/core/model/ApiResponse.java
rename to server/service/src/main/java/com/doumee/core/model/ApiResponse.java
diff --git a/server/src/main/java/com/doumee/core/model/LoginUserInfo.java b/server/service/src/main/java/com/doumee/core/model/LoginUserInfo.java
similarity index 100%
rename from server/src/main/java/com/doumee/core/model/LoginUserInfo.java
rename to server/service/src/main/java/com/doumee/core/model/LoginUserInfo.java
diff --git a/server/src/main/java/com/doumee/core/model/PageData.java b/server/service/src/main/java/com/doumee/core/model/PageData.java
similarity index 100%
rename from server/src/main/java/com/doumee/core/model/PageData.java
rename to server/service/src/main/java/com/doumee/core/model/PageData.java
diff --git a/server/src/main/java/com/doumee/core/model/PageWrap.java b/server/service/src/main/java/com/doumee/core/model/PageWrap.java
similarity index 100%
rename from server/src/main/java/com/doumee/core/model/PageWrap.java
rename to server/service/src/main/java/com/doumee/core/model/PageWrap.java
diff --git a/server/src/main/java/com/doumee/core/servlet/ServletDuplicateInputStream.java b/server/service/src/main/java/com/doumee/core/servlet/ServletDuplicateInputStream.java
similarity index 100%
rename from server/src/main/java/com/doumee/core/servlet/ServletDuplicateInputStream.java
rename to server/service/src/main/java/com/doumee/core/servlet/ServletDuplicateInputStream.java
diff --git a/server/src/main/java/com/doumee/core/servlet/ServletDuplicateOutputStream.java b/server/service/src/main/java/com/doumee/core/servlet/ServletDuplicateOutputStream.java
similarity index 100%
rename from server/src/main/java/com/doumee/core/servlet/ServletDuplicateOutputStream.java
rename to server/service/src/main/java/com/doumee/core/servlet/ServletDuplicateOutputStream.java
diff --git a/server/src/main/java/com/doumee/core/servlet/ServletDuplicateRequestWrapper.java b/server/service/src/main/java/com/doumee/core/servlet/ServletDuplicateRequestWrapper.java
similarity index 100%
rename from server/src/main/java/com/doumee/core/servlet/ServletDuplicateRequestWrapper.java
rename to server/service/src/main/java/com/doumee/core/servlet/ServletDuplicateRequestWrapper.java
diff --git a/server/src/main/java/com/doumee/core/servlet/ServletDuplicateResponseWrapper.java b/server/service/src/main/java/com/doumee/core/servlet/ServletDuplicateResponseWrapper.java
similarity index 100%
rename from server/src/main/java/com/doumee/core/servlet/ServletDuplicateResponseWrapper.java
rename to server/service/src/main/java/com/doumee/core/servlet/ServletDuplicateResponseWrapper.java
diff --git a/server/src/main/java/com/doumee/core/servlet/ServletRewriteFilter.java b/server/service/src/main/java/com/doumee/core/servlet/ServletRewriteFilter.java
similarity index 100%
rename from server/src/main/java/com/doumee/core/servlet/ServletRewriteFilter.java
rename to server/service/src/main/java/com/doumee/core/servlet/ServletRewriteFilter.java
diff --git a/server/service/src/main/java/com/doumee/core/utils/Constants.java b/server/service/src/main/java/com/doumee/core/utils/Constants.java
new file mode 100644
index 0000000..412fa7e
--- /dev/null
+++ b/server/service/src/main/java/com/doumee/core/utils/Constants.java
@@ -0,0 +1,711 @@
+package com.doumee.core.utils;
+
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
+
+import java.io.File;
+import java.math.BigDecimal;
+import java.net.URLDecoder;
+import java.util.*;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+public class Constants {
+
+    public static final int ZERO = 0 ;
+    public static final int ONE = 1 ;
+    public static final int TWO = 2 ;
+    public static final int THREE = 3 ;
+    public static final int SEVEN = 7 ;
+    public static final String ACCESS_ID="ACCESS_ID";
+    public static final String BUCKETNAME = "BUCKETNAME";
+    public static final String OSS = "OSS";
+    public static final String ACCESS_KEY = "ACCESS_KEY";
+    public static final String ENDPOINT = "ENDPOINT";
+    public static final String RESOURCE_PATH = "RESOURCE_PATH";
+
+
+    public static final String SYSTEM ="SYSTEM";
+    public static final String GOODS_IMG_DIR ="GOODS_IMG_DIR";
+    public static final String CREDIT_CODE_REGEX = "[0-9A-HJ-NPQRTUWXY]{2}\\d{6}[0-9A-HJ-NPQRTUWXY]{10}";
+
+
+    public static final String  ROOT_PATH="ROOT_PATH";//鏈湴鏂囦欢涓婁紶鍦板潃閰嶇疆
+    public static final String  FILE_DIR="FILE_DIR";//鏈湴鏂囦欢璁块棶鍦板潃閰嶇疆
+    public static final String  HOME_IMAGE="HOME_IMAGE";//H5 棣栭〉鍥�
+
+    public static final String PROJECTS = "PROJECTS";
+    /**
+     * 浼佷笟鏁版嵁鏉ユ簮 0骞冲彴娉ㄥ唽 1鍚庡彴瀵煎叆
+     */
+    public interface ORIGIN{
+        public static final  int platformRegister  = 0;
+        public static final  int backstageImport  = 1;
+    }
+
+    public static BigDecimal formatBigdecimal(BigDecimal d) {
+        if (d == null) {
+            d = new BigDecimal(0.0);
+        }
+        //淇濈暀涓や綅灏忔暟涓斿洓鑸嶄簲鍏�
+//        d = d.setScale(2, BigDecimal.ROUND_HALF_UP);
+        return  d;
+    }
+    public static BigDecimal formatBigdecimal4Float(BigDecimal d) {
+        if (d == null) {
+            d = new BigDecimal(0.0);
+        }
+        //淇濈暀涓や綅灏忔暟涓斿洓鑸嶄簲鍏�
+        d = d.setScale(4, BigDecimal.ROUND_HALF_UP);
+        return  d;
+    }
+
+    public static boolean equalsObject(Object a, Object b) {
+        if (a == null && b == null) {
+            return true;
+        }
+        if (a != null){
+            return a.equals(b);
+        }
+        return false;
+    }
+
+    public static boolean equalsInteger(Integer a, Integer b) {
+        if (formatIntegerNum(a) == formatIntegerNum(b)) {
+            return true;
+        }
+        return false;
+    }
+
+    public static int formatIntegerNum(Integer d) {
+        if (d == null) {
+            d = 0;
+        }
+        return d.intValue();
+    }
+    /**
+     * 鐘舵�� 0宸蹭繚瀛樸��1寰呭鏍搞��2瀹℃牳閫氳繃銆�3閫�鍥炰慨鏀广��4瀹℃牳椹冲洖銆�5寰呮湇鍔℃満鏋勭‘璁ゃ��6鏈嶅姟鏈烘瀯鎷掔粷銆�7宸插垎閰嶆湇鍔℃満鏋勩��8璇婃柇涓�
+     * 锛堟垚鍔熶笂浼犵涓�浠芥湇鍔¤祫鏂欙級銆�9鏈嶅姟瀹屾垚銆�10宸插垎閰嶈瘎鍒嗕笓瀹躲��11宸插畬鎴愶紙涓撳涓婁紶璇勫垎锛� 12閫�鍥炰慨鏀逛腑 13 宸插畬鎴愰��鍥炰慨鏀�
+     */
+    public  enum DeclareStatus {
+
+        EDITING(0, "宸蹭繚瀛�", "宸蹭繚瀛�"),
+        CHECK_WAIT(1, "寰呭鏍�", "寰呭鏍�"),
+        CHECK_PASS(2, "瀹℃牳閫氳繃", "瀹℃牳閫氳繃"),
+        CHECK_EDIT(3, "閫�鍥炰慨鏀�", "閫�鍥炰慨鏀�"),
+        CHECK_BACK(4, "瀹℃牳椹冲洖", "瀹℃牳椹冲洖"),
+        WAIT_SO_COMFIRM(5, "寰呮湇鍔℃満鏋勭‘璁�", "寰呮湇鍔℃満鏋勭‘璁�"),
+        SO_BACK(6, "鏈嶅姟鏈烘瀯鎷掔粷", "鏈嶅姟鏈烘瀯鎷掔粷"),
+        SELECTED_SO(7, "宸插垎閰嶆湇鍔℃満鏋�", "宸插垎閰嶆湇鍔℃満鏋�"),
+        SERVING(8, "璇婃柇涓�", "璇婃柇涓�"),
+        SERVICE_DONE(9, "鏈嶅姟瀹屾垚", "鏈嶅姟瀹屾垚"),
+        SELECT_EXPERT(10, "宸插垎閰嶈瘎鍒嗕笓瀹�", "宸插垎閰嶈瘎鍒嗕笓瀹�"),
+        DONE(11, "宸插畬鎴�", "宸插畬鎴�"),
+        BACK_SERVER_ING(12, "閫�鍥炰慨鏀�", "璇婃柇鏈嶅姟閫�鍥炰慨鏀�"),
+        BACK_SERVER_DONE(13, "閫�鍥炰慨鏀瑰畬鎴�", "璇婃柇鏈嶅姟閫�鍥炲凡淇敼"),
+        ;
+        // 鎴愬憳鍙橀噺
+        private String name;
+        private int key;
+        private String noteinfo;// 鎻忚堪
+
+        // 鏋勯�犳柟娉�
+        DeclareStatus(int key, String name, String noteinfo) {
+            this.name = name;
+            this.key = key;
+            this.noteinfo = noteinfo;
+        }
+
+        // 鏅�氭柟娉�
+        public static String getName(int index) {
+            for (DeclareStatus c : DeclareStatus.values()) {
+                if (c.getKey() == index) {
+                    return c.name;
+                }
+            }
+            return null;
+        }
+
+        // 鏅�氭柟娉�
+        public static String getNoteinfo(int index) {
+            for (DeclareStatus c : DeclareStatus.values()) {
+                if (c.getKey() == index) {
+                    return c.noteinfo;
+                }
+            }
+            return "-";
+        }
+
+        // 鏅�氭柟娉�
+        public static String getInfo(int index) {
+            for (DeclareStatus c : DeclareStatus.values()) {
+                if (c.getKey() == index) {
+                    return c.noteinfo;
+                }
+            }
+            return null;
+        }
+
+        // get set 鏂规硶
+        public String getName() {
+            return name;
+        }
+
+        public void setName(String name) {
+            this.name = name;
+        }
+
+        public int getKey() {
+            return key;
+        }
+
+        public void setKey(int key) {
+            this.key = key;
+        }
+
+        public String getNoteinfo() {
+            return noteinfo;
+        }
+
+    }
+
+    public  enum DeclareCheckType{
+        EDITING(0, "宸蹭繚瀛�", "宸蹭繚瀛�"),
+        CHECK_WAIT(1, "寰呭鏍�", "寰呭鏍�"),
+        CHECK_PASS(2, "瀹℃牳閫氳繃", "瀹℃牳閫氳繃"),
+        CHECK_EDIT(3, "閫�鍥炰慨鏀�", "閫�鍥炰慨鏀�"),
+        CHECK_BACK(4, "瀹℃牳椹冲洖", "瀹℃牳椹冲洖"),
+        WAIT_SO_COMFIRM(5, "寰呮湇鍔℃満鏋勭‘璁�", "寰呮湇鍔℃満鏋勭‘璁�"),
+        SO_BACK(6, "鏈嶅姟鏈烘瀯鎷掔粷", "鏈嶅姟鏈烘瀯鎷掔粷"),
+        SELECTED_SO(7, "宸插垎閰嶆湇鍔℃満鏋�", "宸插垎閰嶆湇鍔℃満鏋�"),
+        SERVING(8, "璇婃柇涓�", "璇婃柇涓�"),
+        SERVICE_DONE(9, "鏈嶅姟瀹屾垚", "鏈嶅姟瀹屾垚"),
+        SELECT_EXPERT(10, "宸插垎閰嶈瘎鍒嗕笓瀹�", "宸插垎閰嶈瘎鍒嗕笓瀹�"),
+        DONE(11, "宸插畬鎴�", "宸插畬鎴�"),
+        ;
+        // 鎴愬憳鍙橀噺
+        private String name;
+        private int key;
+        private String noteinfo;// 鎻忚堪
+
+        // 鏋勯�犳柟娉�
+        DeclareCheckType(int key, String name, String noteinfo) {
+            this.name = name;
+            this.key = key;
+            this.noteinfo = noteinfo;
+        }
+
+        // 鏅�氭柟娉�
+        public static String getName(int index) {
+            for (ProjectRecord c : ProjectRecord.values()) {
+                if (c.getKey() == index) {
+                    return c.name;
+                }
+            }
+            return null;
+        }
+
+        // 鏅�氭柟娉�
+        public static String getInfo(int index) {
+            for (ProjectRecord c : ProjectRecord.values()) {
+                if (c.getKey() == index) {
+                    return c.noteinfo;
+                }
+            }
+            return null;
+        }
+
+        // get set 鏂规硶
+        public String getName() {
+            return name;
+        }
+
+        public void setName(String name) {
+            this.name = name;
+        }
+
+        public int getKey() {
+            return key;
+        }
+
+        public void setKey(int key) {
+            this.key = key;
+        }
+
+        public String getNoteinfo() {
+            return noteinfo;
+        }
+    }
+
+    public enum DeclareHistoryType{
+
+        EDITING(0,"淇濆瓨","淇濆瓨"),
+        CHECK_WAIT_COUNTY(1,"寰呭幙鍖哄鏍�",""),
+        CHECK_PASS_COUNTY(2,"鍘垮尯瀹℃牳閫氳繃",""),
+        CHECK_EDIT_COUNTY(3,"鍘垮尯閫�鍥炰慨鏀�",""),
+        CHECK_BACK_COUNTY(4,"鍘垮尯瀹℃牳椹冲洖",""),
+        TWO_WAY_WAIT_SO_COMFIRM(5,"鍙岄�夊緟鏈嶅姟鏈烘瀯纭",""),
+        WO_WAY_WAIT_SO_BACK(6,"鍙岄�夋湇鍔℃満鏋勬嫆缁�",""),
+        SELECTED_SO(7,"宸插垎閰嶆湇鍔℃満鏋�",""),
+        SO_SERVICE(8,"鏈嶅姟鏈烘瀯璇婃柇",""),
+        SO_SERVICE_DONE(9,"鏈嶅姟鏈烘瀯鏈嶅姟瀹屾垚",""),
+        SELECT_EXPERT(10,"鍒嗛厤璇勫垎涓撳",""),
+        EXPERT_SCORE(11,"涓撳瀹屾垚璇勫垎","")
+        ;
+
+        private int key;
+        private String name;
+
+        private String noteInfo;
+
+        DeclareHistoryType(int key, String name, String noteInfo) {
+            this.key = key;
+            this.name = name;
+            this.noteInfo = noteInfo;
+        }
+
+        public int getKey() {
+            return key;
+        }
+
+        public void setKey(int key) {
+            this.key = key;
+        }
+
+        public String getName() {
+            return name;
+        }
+
+        public void setName(String name) {
+            this.name = name;
+        }
+
+        public String getNoteInfo() {
+            return noteInfo;
+        }
+
+        public void setNoteInfo(String noteInfo) {
+            this.noteInfo = noteInfo;
+        }
+    }
+    /**
+     * 鍏宠仈瀵硅薄绫诲瀷 0浼佷笟钀ヤ笟鎵х収 1宸ュ晢鍙樻洿鐧昏  2椤圭洰鐢虫姤浼佷笟璧勬枡 3浼佷笟璇勫垎琛� 4璇婃柇鎶ュ憡 5璇婃柇鏈嶅姟璧勬枡 6涓撳璇勫垎鎶ュ憡 7鏈嶅姟鏈烘瀯涓婁紶鏈嶅姟璧勬枡 8浼佷笟璧勮川 9浼佷笟涓爣閫氱煡涔� 10椤圭洰鍥剧墖
+     */
+    public  enum MultiFile{
+        BUSINESS_LICENSE(0, "浼佷笟钀ヤ笟鎵х収", "浼佷笟钀ヤ笟鎵х収"),
+        BUSINESS_CHANGE(1, "宸ュ晢鍙樻洿鐧昏", "宸ュ晢鍙樻洿鐧昏"),
+        BUSINESS_DECLARE(2, "椤圭洰鐢虫姤浼佷笟璧勬枡", "椤圭洰鐢虫姤浼佷笟璧勬枡"),
+        BUSINESS_SCORE(3, "浼佷笟璇勫垎琛�", "浼佷笟璇勫垎琛�"),
+        BUSINESS_DIAGNOSIS(4, "璇婃柇鎶ュ憡", "璇婃柇鎶ュ憡"),
+        BUSINESS_DIA_SERVICE(5, "璇婃柇鏈嶅姟璧勬枡", "璇婃柇鏈嶅姟璧勬枡"),
+        BUSINESS_EXPERT(6, "涓撳璇勫垎鎶ュ憡", "涓撳璇勫垎鎶ュ憡"),
+        BUSINESS_UP_SERVICE(7, "鏈嶅姟鏈烘瀯涓婁紶鏈嶅姟璧勬枡", "鏈嶅姟鏈烘瀯涓婁紶鏈嶅姟璧勬枡"),
+        BUSINESS_ZZ(8, "浼佷笟璧勮川", "浼佷笟璧勮川"),
+        BUSINESS_NOTICE(9, "浼佷笟涓爣閫氱煡涔�", "浼佷笟涓爣閫氱煡涔�"),
+        BUSINESS_PROURL(10, "椤圭洰鍥剧墖", "椤圭洰鍥剧墖"),
+
+        COMPANY_CHANGE_LICENSE(11,"鍙樻洿浼佷笟钀ヤ笟鎵х収","鍙樻洿浼佷笟钀ヤ笟鎵х収"),
+
+        COMPANY_CHANGE_CHANGE(12,"鍙樻洿宸ュ晢鍙樻洿鐧昏","鍙樻洿宸ュ晢鍙樻洿鐧昏"),
+        BUSINESS_HC(13, "缁煎悎鏈嶅姟鍗曚綅鏍告煡璧勬枡", "缁煎悎鏈嶅姟鍗曚綅鏍告煡璧勬枡"),
+
+        BUSINESS_UP_EXTRA(14, "鏈嶅姟鏈烘瀯涓婁紶鏈嶅姟琛ュ厖璧勬枡", "鏈嶅姟鏈烘瀯涓婁紶鏈嶅姟琛ュ厖璧勬枡"),
+
+
+        ;
+        // 鎴愬憳鍙橀噺
+        private String name;
+        private int key;
+        private String noteinfo;// 鎻忚堪
+
+        // 鏋勯�犳柟娉�
+        MultiFile(int key, String name, String noteinfo) {
+            this.name = name;
+            this.key = key;
+            this.noteinfo = noteinfo;
+        }
+
+        // 鏅�氭柟娉�
+        public static String getName(int index) {
+            for (ProjectRecord c : ProjectRecord.values()) {
+                if (c.getKey() == index) {
+                    return c.name;
+                }
+            }
+            return null;
+        }
+
+        // 鏅�氭柟娉�
+        public static String getInfo(int index) {
+            for (ProjectRecord c : ProjectRecord.values()) {
+                if (c.getKey() == index) {
+                    return c.noteinfo;
+                }
+            }
+            return null;
+        }
+
+        // get set 鏂规硶
+        public String getName() {
+            return name;
+        }
+
+        public void setName(String name) {
+            this.name = name;
+        }
+
+        public int getKey() {
+            return key;
+        }
+
+        public void setKey(int key) {
+            this.key = key;
+        }
+
+        public String getNoteinfo() {
+            return noteinfo;
+        }
+
+        private volatile static Set<Integer> multifileCompanyType;
+
+        private volatile static Set<Integer> multifileProjectType;
+
+        public static Set<Integer> multifileCompanyType(){
+            //		0浼佷笟钀ヤ笟鎵х収 1宸ュ晢鍙樻洿鐧昏 7浼佷笟璧勮川 8浼佷笟涓爣閫氱煡涔� 11 鍙樻洿浼佷笟钀ヤ笟鎵х収 12 鍙樻洿宸ュ晢鍙樻洿鐧昏
+
+            if (CollectionUtils.isEmpty(multifileCompanyType)){
+                synchronized (MultiFile.class){
+                    if (CollectionUtils.isEmpty(multifileCompanyType)){
+                        multifileCompanyType = new HashSet<>();
+                        multifileCompanyType.add(0);
+                        multifileCompanyType.add(1);
+                        multifileCompanyType.add(8);
+                        multifileCompanyType.add(9);
+                        multifileCompanyType.add(11);
+                        multifileCompanyType.add(12);
+                    }
+                }
+            }
+            return multifileCompanyType;
+        }
+
+        public static Set<Integer> multifileProjectType(){
+
+            //2椤圭洰鐢虫姤浼佷笟璧勬枡 3浼佷笟璇勫垎琛� 4璇婃柇鎶ュ憡 5璇婃柇鏈嶅姟璧勬枡 6涓撳璇勫垎鎶ュ憡 7鏈嶅姟鏈烘瀯涓婁紶鏈嶅姟璧勬枡
+            if (CollectionUtils.isEmpty(multifileProjectType)){
+                synchronized (MultiFile.class){
+                    if(CollectionUtils.isEmpty(multifileProjectType)){
+                        multifileProjectType = new HashSet<>();
+                        multifileProjectType.add(2);
+                        multifileProjectType.add(3);
+                        multifileProjectType.add(4);
+                        multifileProjectType.add(5);
+                        multifileProjectType.add(6);
+                        multifileProjectType.add(7);
+                        multifileProjectType.add(10);
+                        multifileProjectType.add(13);
+                    }
+                }
+            }
+            return multifileProjectType;
+        }
+
+        public static Integer multifileType(String name){
+
+            boolean pic = Arrays.asList(".jpg", "png", "jpeg").stream().anyMatch(s -> name.contains(s));
+            if (pic){
+                return Constants.ZERO;
+            }
+            boolean  ivc = Arrays.asList(".avi", "mp4").stream().anyMatch(s -> name.contains(s));
+            if (ivc){
+                return Constants.ONE;
+            }
+            return Constants.TWO;
+
+        }
+
+
+    }
+
+    public static void main(String[] args) {
+
+        System.out.println("hello&&devicenumber=22110002&&uuid=1e52008fb8ff\n".length());
+    }
+    /**
+     * 鐢ㄦ埛绫诲瀷 0绯荤粺鐢ㄦ埛 1浼佷笟鐢ㄦ埛 2鏈嶅姟鏈烘瀯绠$悊鍛� 3鏈嶅姟鏈烘瀯瀛愯处鍙� 4缁煎悎鏈嶅姟鍗曚綅绠$悊鍛� 5缁煎悎鏈嶅姟鍗曚綅瀛愯处鍙� 6涓撳 7鍘垮尯鐢ㄦ埛 8甯傚眬鐢ㄦ埛
+     */
+    public  enum UserType {
+
+        SYSTEM(0, "绯荤粺鐢ㄦ埛", "绠$悊鍛�",Arrays.asList(0,1,2,3,4,5,6,7,8,9,10,11)),
+        COMPANY(1, "浼佷笟鐢ㄦ埛", "浼佷笟",Arrays.asList(-1)),
+        SO_ADMIN(2, "鏈嶅姟鏈烘瀯绠$悊鍛�", "鏈嶅姟鏈烘瀯",Arrays.asList(-1)),
+        SO_CHILD(3, "鏈嶅姟鏈烘瀯瀛愯处鍙�", "鏈嶅姟鏈烘瀯",Arrays.asList(-1)),
+        SD_ADMIN(4, "缁煎悎鏈嶅姟鍗曚綅绠$悊鍛�", "缁煎悎鏈嶅姟鍗曚綅",Arrays.asList(0,1,2,3,4,5,6,7,8,9,10,11)),
+        SD_CHILD(5, "缁煎悎鏈嶅姟鍗曚綅瀛愯处鍙�", "缁煎悎鏈嶅姟鍗曚綅",Arrays.asList(0,1,2,3,4,5,6,7,8,9,10,11)),
+        EXPERT(6, "涓撳", "涓撳", Arrays.asList(-1)),
+        AREA(7, "鍘垮尯鐢ㄦ埛", "鍘垮尯",Arrays.asList(0,1,2,3,4,5,6,7,8,9)),
+        SJ(8, "甯傚眬鐢ㄦ埛", "甯傚眬",Arrays.asList(0,1,2,3,4,5,6,7,8,9,10,11)),
+        SJ_CHILD(9, "甯傚眬瀛愯处鍙�", "甯傚眬瀛愯处鍙�",Arrays.asList(0,1,2,3,4,5,6,7,8,9,10,11)),
+        ;
+        // 鎴愬憳鍙橀噺
+        private String name;
+        private int key;
+        private List<Integer> historyStatus;
+        private String noteinfo;// 鎻忚堪
+
+        // 鏋勯�犳柟娉�
+        UserType(int key, String name, String noteinfo,List<Integer> historyStatus) {
+            this.name = name;
+            this.key = key;
+            this.noteinfo = noteinfo;
+            this.historyStatus=historyStatus;
+        }
+
+        // 鏅�氭柟娉�
+        public static String getName(int index) {
+            for (UserType c : UserType.values()) {
+                if (c.getKey() == index) {
+                    return c.name;
+                }
+            }
+            return null;
+        }
+
+        // 鏅�氭柟娉�
+        public static String getInfo(int index) {
+            for (UserType c : UserType.values()) {
+                if (c.getKey() == index) {
+                    return c.noteinfo;
+                }
+            }
+            return null;
+        }
+        // 鏅�氭柟娉�
+        public static List<Integer> getHistoryStatus(int index) {
+            for (UserType c : UserType.values()) {
+                if (c.getKey() == index) {
+                    return c.historyStatus;
+                }
+            }
+            return null;
+        }
+
+        // get set 鏂规硶
+        public String getName() {
+            return name;
+        }
+
+        public void setName(String name) {
+            this.name = name;
+        }
+
+        public int getKey() {
+            return key;
+        }
+        public List<Integer> getHistoryStatus() {
+            return historyStatus;
+        }
+
+        public void setKey(int key) {
+            this.key = key;
+        }
+
+        public String getNoteinfo() {
+            return noteinfo;
+        }
+
+        /**
+         * 涓嶉渶瑕佸鎵逛慨鏀逛俊鎭鑹�
+         * @return
+         */
+        public static List<Integer> getNoCheckUserChange(){
+            return Arrays.asList(SO_ADMIN.key, AREA.key, SJ.key, EXPERT.key, SD_ADMIN.key,SYSTEM.key);
+        }
+
+        /**
+         * 鑾峰彇瀛愯处鍙风被鍨�
+         * @return
+         */
+        public static List<Integer> getSonUserType(){
+            return Arrays.asList(SO_CHILD.key, SD_CHILD.key);
+        }
+
+        /**
+         * 鑾峰彇鍏宠仈浼佷笟鐨勭敤鎴风被鍨�
+         * @return
+         */
+        public static List<Integer> getHasCompanyType(){
+            return Arrays.asList(COMPANY.key, SO_ADMIN.key, SD_ADMIN.key);
+        }
+
+    }
+
+    public  enum ProjectRecord {
+
+        COM_EDITING(0, "浼佷笟淇濆瓨鏁版嵁", "鐢� ${param2} ${param3}淇濆瓨鎴愬姛锛屽綋鍓嶈繘搴︿负 銆�${param4}銆�"),
+        COM_SUBMIT(1, "浼佷笟鎻愪氦鏁版嵁", "鐢�  ${param2} ${param3}鎻愪氦鎴愬姛锛屽綋鍓嶈繘搴︿负 銆�${param4}銆�"),
+        XQ_CHECK_PASS(2, "鍘垮尯瀹℃牳閫氳繃", "鐢�  ${param2} ${param3}瀹℃牳閫氳繃锛屽鏍稿娉ㄤ负锛�${param5}锛涘綋鍓嶈繘搴︿负 銆�${param4}銆�"),
+        XQ_CHECK_EDIT(3, "鍘垮尯瀹℃牳閫�鍥炰慨鏀�", "鐢�  ${param2} ${param3}瀹℃牳閫�鍥炰慨鏀癸紝瀹℃牳澶囨敞涓猴細${param5}锛涘綋鍓嶈繘搴︿负 銆�${param4}銆�"),
+        XQ_CHECK_BACK(4, "鍘垮尯瀹℃牳椹冲洖", "鐢�  ${param2} ${param3}瀹℃牳椹冲洖锛屽鏍稿娉ㄤ负锛�${param5}锛涘綋鍓嶈繘搴︿负 瀹℃牳椹冲洖锛屾祦绋嬬粨鏉熴��"),
+        COM_SELECT_SO(5, "浼佷笟閫夋嫨鏈嶅姟鏈烘瀯", "鐢�  ${param2} ${param3}閫夋嫨 ${param5}锛屽綋鍓嶈繘搴︿负 銆�${param4}銆�"),
+        SO_PASS(6, "鏈嶅姟鏈烘瀯纭鏈嶅姟", "鐢�  ${param2} ${param3}纭鏈嶅姟锛屽綋鍓嶈繘搴︿负 銆�${param4}銆�"),
+        SO_BACK(7, "鏈嶅姟鏈烘瀯鎷掔粷鏈嶅姟", "鐢�  ${param2} ${param3}鎷掔粷鏈嶅姟锛屽綋鍓嶈繘搴︿负 銆�${param4}銆�"),
+        SJ_SELECT_SO(8, "甯傚眬鍒嗛厤鏈嶅姟鏈烘瀯", "鐢�  ${param2} ${param3}瀹屾垚鍒嗛厤鏈嶅姟鏈烘瀯锛屽綋鍓嶈繘搴︿负 銆�${param4}銆�"),
+        SD_SELECT_SO(9, "缁煎悎鏈嶅姟鍗曚綅鍒嗛厤鏈嶅姟鏈烘瀯", "鐢�  ${param2} ${param3}瀹屾垚鍒嗛厤鏈嶅姟鏈烘瀯锛屽綋鍓嶈繘搴︿负 銆�${param4}銆�"),
+        SJ_RESELECT_SO(10, "甯傚眬閲嶆柊鍒嗛厤鏈嶅姟鏈烘瀯", "鐢�  ${param2} ${param3}瀹屾垚閲嶆柊鍒嗛厤鏈嶅姟鏈烘瀯锛屽綋鍓嶈繘搴︿负 銆�${param4}銆�"),
+        SD_RESELECT_SO(11, "缁煎悎鏈嶅姟鍗曚綅閲嶆柊鍒嗛厤鏈嶅姟鏈烘瀯", "鐢�  ${param2} ${param3}瀹屾垚閲嶆柊鍒嗛厤鏈嶅姟鏈烘瀯锛屽綋鍓嶈繘搴︿负 銆�${param4}銆�"),
+        SO_SERVICE_UPLOAD(12, "鏈嶅姟鏈烘瀯涓婁紶鏈嶅姟鏁版嵁", "鐢�  ${param2} ${param3}瀹屾垚涓婁紶鏈嶅姟鏁版嵁锛屽綋鍓嶈繘搴︿负 銆�${param4}銆�"),
+        SO_DONE_SERVICE(13, "鏈嶅姟鏈烘瀯瀹屾垚鏈嶅姟", "鐢�  ${param2} ${param3}瀹屾垚鏈嶅姟锛屽綋鍓嶈繘搴︿负 銆�${param4}銆�"),
+        SJ_SELECT_EXPERT(14, "甯傚眬鍒嗛厤璇勫垎涓撳", "鐢�  ${param2} ${param3}瀹屾垚鍒嗛厤璇勫垎涓撳锛屽綋鍓嶈繘搴︿负 銆�${param4}銆�"),
+        SD_SELECT_EXPERT(15, "缁煎悎鏈嶅姟鍗曚綅鍒嗛厤璇勫垎涓撳", "鐢�  ${param2} ${param3}瀹屾垚鍒嗛厤璇勫垎涓撳锛屽綋鍓嶈繘搴︿负 銆�${param4}銆�"),
+        SJ_RESELECT_EXPERT(16, "甯傚眬閲嶆柊鍒嗛厤璇勫垎涓撳", "鐢�  ${param2} ${param3}瀹屾垚閲嶆柊鍒嗛厤璇勫垎涓撳锛屽綋鍓嶈繘搴︿负 銆�${param4}銆�"),
+        SD_RESELECT_EXPERT(17, "缁煎悎鏈嶅姟鍗曚綅閲嶆柊鍒嗛厤璇勫垎涓撳", "鐢�  ${param2} ${param3}瀹屾垚閲嶆柊鍒嗛厤璇勫垎涓撳锛屽綋鍓嶈繘搴︿负 銆�${param4}銆�"),
+        EXPERT_SCORE(18, "涓撳涓婁紶璇勫垎", "鐢�  ${param2} ${param3}瀹屾垚璇勫垎锛屽綋鍓嶈繘搴︿负 銆�${param4}銆�"),
+        SD_SERVICE_UPLOAD(19, "缁煎悎鏈嶅姟鍗曚綅涓婁紶璇婃柇璧勬枡", "鐢�  ${param2} ${param3}瀹屾垚涓婁紶璇婃柇璧勬枡锛屽綋鍓嶈繘搴︿负 銆�${param4}銆�"),
+        SD_BACK_DONE(20, "缁煎悎鏈嶅姟鍗曚綅閫�鍥炰慨鏀�", "鐢�  ${param2} ${param3}閫�鍥炰慨鏀癸紝褰撳墠杩涘害涓� 銆�${param4}銆�"),
+
+        SO_BACK_SUBMIT(21 , "鏈嶅姟鏈烘瀯淇敼瀹屾垚鏈嶅姟", "鐢�  ${param2} ${param3}瀹屾垚鏈嶅姟锛屽綋鍓嶈繘搴︿负 銆�${param4}銆�"),
+
+        ;
+        // 鎴愬憳鍙橀噺
+        private String name;
+        private int key;
+        private String noteinfo;// 鎻忚堪
+
+        // 鏋勯�犳柟娉�
+        ProjectRecord(int key, String name, String noteinfo) {
+            this.name = name;
+            this.key = key;
+            this.noteinfo = noteinfo;
+        }
+
+        // 鏅�氭柟娉�
+        public static String getName(int index) {
+            for (ProjectRecord c : ProjectRecord.values()) {
+                if (c.getKey() == index) {
+                    return c.name;
+                }
+            }
+            return null;
+        }
+
+        // 鏅�氭柟娉�
+        public static String getInfo(int index) {
+            for (ProjectRecord c : ProjectRecord.values()) {
+                if (c.getKey() == index) {
+                    return c.noteinfo;
+                }
+            }
+            return null;
+        }
+
+        // get set 鏂规硶
+        public String getName() {
+            return name;
+        }
+
+        public void setName(String name) {
+            this.name = name;
+        }
+
+        public int getKey() {
+            return key;
+        }
+
+        public void setKey(int key) {
+            this.key = key;
+        }
+
+        public String getNoteinfo() {
+            return noteinfo;
+        }
+
+        public void setNoteinfo(String noteinfo) {
+            this.noteinfo = noteinfo;
+        }
+
+        public static String getContentWithData(ProjectRecord template, Map<String, String> params){
+            String pattern = "\\$\\{(.+?)\\}";
+            Pattern p = Pattern.compile(pattern);
+            Matcher m = p.matcher(template.noteinfo);
+            StringBuffer sb = new StringBuffer();
+            while (m.find()){
+                String key = m.group(1);
+                String value = params.get(key);
+                m.appendReplacement(sb, value == null ? "" : value);
+            }
+            m.appendTail(sb);
+            return sb.toString();
+        }
+
+    }
+
+    /**
+     * 鏁版嵁鐘舵�佹灇涓�
+     *
+     */
+    public enum Status {
+
+        /** 鐢ㄦ埛鍚敤绂佺敤鏋氫妇鍊�*/
+        ENABLE(0,"姝e父"),
+        DISABLE(1,"绂佺敤");
+
+        private  Integer value;
+        private  String des;
+
+
+        Status(Integer value, String des) {
+            this.value = value;
+            this.des = des;
+        }
+
+        public Integer getValue() {
+            return value;
+        }
+
+        public void setValue(Integer value) {
+            this.value = value;
+        }
+
+        public String getDes() {
+            return des;
+        }
+
+        public void setDes(String des) {
+            this.des = des;
+        }
+    }
+
+    public enum CompanyType{
+
+        BUSINESS_COMPANYTYPE(0,"浼佷笟"),
+
+        SERVICE_COMPANYTYPE(1,"鏈嶅姟鏈烘瀯"),
+
+        ZF_SERVICE_COMPANY(2,"缁煎悎鏈嶅姟鍗曚綅");
+
+        private  Integer value;
+        private  String des;
+
+        CompanyType(Integer value, String des) {
+            this.value = value;
+            this.des = des;
+        }
+
+        public Integer getValue() {
+            return value;
+        }
+
+        public void setValue(Integer value) {
+            this.value = value;
+        }
+
+        public String getDes() {
+            return des;
+        }
+
+        public void setDes(String des) {
+            this.des = des;
+        }
+    }
+}
diff --git a/server/src/main/java/com/doumee/core/utils/Date.java b/server/service/src/main/java/com/doumee/core/utils/Date.java
similarity index 100%
rename from server/src/main/java/com/doumee/core/utils/Date.java
rename to server/service/src/main/java/com/doumee/core/utils/Date.java
diff --git a/server/src/main/java/com/doumee/core/utils/DateUtil.java b/server/service/src/main/java/com/doumee/core/utils/DateUtil.java
similarity index 100%
rename from server/src/main/java/com/doumee/core/utils/DateUtil.java
rename to server/service/src/main/java/com/doumee/core/utils/DateUtil.java
diff --git a/server/src/main/java/com/doumee/core/utils/ExcelUtil.java b/server/service/src/main/java/com/doumee/core/utils/ExcelUtil.java
similarity index 100%
rename from server/src/main/java/com/doumee/core/utils/ExcelUtil.java
rename to server/service/src/main/java/com/doumee/core/utils/ExcelUtil.java
diff --git a/server/src/main/java/com/doumee/core/utils/FileDigest.java b/server/service/src/main/java/com/doumee/core/utils/FileDigest.java
similarity index 100%
rename from server/src/main/java/com/doumee/core/utils/FileDigest.java
rename to server/service/src/main/java/com/doumee/core/utils/FileDigest.java
diff --git a/server/src/main/java/com/doumee/core/utils/Http.java b/server/service/src/main/java/com/doumee/core/utils/Http.java
similarity index 100%
rename from server/src/main/java/com/doumee/core/utils/Http.java
rename to server/service/src/main/java/com/doumee/core/utils/Http.java
diff --git a/server/src/main/java/com/doumee/core/utils/Location.java b/server/service/src/main/java/com/doumee/core/utils/Location.java
similarity index 100%
rename from server/src/main/java/com/doumee/core/utils/Location.java
rename to server/service/src/main/java/com/doumee/core/utils/Location.java
diff --git a/server/src/main/java/com/doumee/core/utils/Monitor.java b/server/service/src/main/java/com/doumee/core/utils/Monitor.java
similarity index 100%
rename from server/src/main/java/com/doumee/core/utils/Monitor.java
rename to server/service/src/main/java/com/doumee/core/utils/Monitor.java
diff --git a/server/src/main/java/com/doumee/core/utils/MyBatisPlus.java b/server/service/src/main/java/com/doumee/core/utils/MyBatisPlus.java
similarity index 100%
rename from server/src/main/java/com/doumee/core/utils/MyBatisPlus.java
rename to server/service/src/main/java/com/doumee/core/utils/MyBatisPlus.java
diff --git a/server/src/main/java/com/doumee/core/utils/PinYinUtil.java b/server/service/src/main/java/com/doumee/core/utils/PinYinUtil.java
similarity index 100%
rename from server/src/main/java/com/doumee/core/utils/PinYinUtil.java
rename to server/service/src/main/java/com/doumee/core/utils/PinYinUtil.java
diff --git a/server/src/main/java/com/doumee/core/utils/Secure.java b/server/service/src/main/java/com/doumee/core/utils/Secure.java
similarity index 100%
rename from server/src/main/java/com/doumee/core/utils/Secure.java
rename to server/service/src/main/java/com/doumee/core/utils/Secure.java
diff --git a/server/src/main/java/com/doumee/core/utils/Server.java b/server/service/src/main/java/com/doumee/core/utils/Server.java
similarity index 100%
rename from server/src/main/java/com/doumee/core/utils/Server.java
rename to server/service/src/main/java/com/doumee/core/utils/Server.java
diff --git a/server/src/main/java/com/doumee/core/utils/UserClient.java b/server/service/src/main/java/com/doumee/core/utils/UserClient.java
similarity index 100%
rename from server/src/main/java/com/doumee/core/utils/UserClient.java
rename to server/service/src/main/java/com/doumee/core/utils/UserClient.java
diff --git a/server/src/main/java/com/doumee/core/utils/Utils.java b/server/service/src/main/java/com/doumee/core/utils/Utils.java
similarity index 100%
rename from server/src/main/java/com/doumee/core/utils/Utils.java
rename to server/service/src/main/java/com/doumee/core/utils/Utils.java
diff --git a/server/src/main/java/com/doumee/core/utils/aliyun/ALiYunUtil.java b/server/service/src/main/java/com/doumee/core/utils/aliyun/ALiYunUtil.java
similarity index 100%
rename from server/src/main/java/com/doumee/core/utils/aliyun/ALiYunUtil.java
rename to server/service/src/main/java/com/doumee/core/utils/aliyun/ALiYunUtil.java
diff --git a/server/src/main/java/com/doumee/core/utils/monitor/CPU.java b/server/service/src/main/java/com/doumee/core/utils/monitor/CPU.java
similarity index 100%
rename from server/src/main/java/com/doumee/core/utils/monitor/CPU.java
rename to server/service/src/main/java/com/doumee/core/utils/monitor/CPU.java
diff --git a/server/src/main/java/com/doumee/core/utils/monitor/Disk.java b/server/service/src/main/java/com/doumee/core/utils/monitor/Disk.java
similarity index 100%
rename from server/src/main/java/com/doumee/core/utils/monitor/Disk.java
rename to server/service/src/main/java/com/doumee/core/utils/monitor/Disk.java
diff --git a/server/src/main/java/com/doumee/core/utils/monitor/JVM.java b/server/service/src/main/java/com/doumee/core/utils/monitor/JVM.java
similarity index 100%
rename from server/src/main/java/com/doumee/core/utils/monitor/JVM.java
rename to server/service/src/main/java/com/doumee/core/utils/monitor/JVM.java
diff --git a/server/src/main/java/com/doumee/core/utils/monitor/Memory.java b/server/service/src/main/java/com/doumee/core/utils/monitor/Memory.java
similarity index 100%
rename from server/src/main/java/com/doumee/core/utils/monitor/Memory.java
rename to server/service/src/main/java/com/doumee/core/utils/monitor/Memory.java
diff --git a/server/src/main/java/com/doumee/dao/business/BrandMapper.java b/server/service/src/main/java/com/doumee/dao/business/BrandMapper.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/business/BrandMapper.java
rename to server/service/src/main/java/com/doumee/dao/business/BrandMapper.java
diff --git a/server/src/main/java/com/doumee/dao/business/CateAttrMapper.java b/server/service/src/main/java/com/doumee/dao/business/CateAttrMapper.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/business/CateAttrMapper.java
rename to server/service/src/main/java/com/doumee/dao/business/CateAttrMapper.java
diff --git a/server/src/main/java/com/doumee/dao/business/CateParamMapper.java b/server/service/src/main/java/com/doumee/dao/business/CateParamMapper.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/business/CateParamMapper.java
rename to server/service/src/main/java/com/doumee/dao/business/CateParamMapper.java
diff --git a/server/src/main/java/com/doumee/dao/business/CategoryMapper.java b/server/service/src/main/java/com/doumee/dao/business/CategoryMapper.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/business/CategoryMapper.java
rename to server/service/src/main/java/com/doumee/dao/business/CategoryMapper.java
diff --git a/server/src/main/java/com/doumee/dao/business/GoodsMapper.java b/server/service/src/main/java/com/doumee/dao/business/GoodsMapper.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/business/GoodsMapper.java
rename to server/service/src/main/java/com/doumee/dao/business/GoodsMapper.java
diff --git a/server/src/main/java/com/doumee/dao/business/GoodsParamMapper.java b/server/service/src/main/java/com/doumee/dao/business/GoodsParamMapper.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/business/GoodsParamMapper.java
rename to server/service/src/main/java/com/doumee/dao/business/GoodsParamMapper.java
diff --git a/server/src/main/java/com/doumee/dao/business/MultifileMapper.java b/server/service/src/main/java/com/doumee/dao/business/MultifileMapper.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/business/MultifileMapper.java
rename to server/service/src/main/java/com/doumee/dao/business/MultifileMapper.java
diff --git a/server/src/main/java/com/doumee/dao/business/join/GoodsJoinMapper.java b/server/service/src/main/java/com/doumee/dao/business/join/GoodsJoinMapper.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/business/join/GoodsJoinMapper.java
rename to server/service/src/main/java/com/doumee/dao/business/join/GoodsJoinMapper.java
diff --git a/server/service/src/main/java/com/doumee/dao/business/model/Brand.java b/server/service/src/main/java/com/doumee/dao/business/model/Brand.java
new file mode 100644
index 0000000..7fbe0e1
--- /dev/null
+++ b/server/service/src/main/java/com/doumee/dao/business/model/Brand.java
@@ -0,0 +1,77 @@
+package com.doumee.dao.business.model;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.doumee.core.annotation.excel.ExcelColumn;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import java.util.Date;
+
+/**
+ * 鍝佺墝淇℃伅琛�
+ * @author 姹熻箘韫�
+ * @date 2023/05/12 13:58
+ */
+@Data
+@ApiModel("鍝佺墝淇℃伅琛�")
+@TableName("`brand`")
+public class Brand {
+
+    @TableId(type = IdType.AUTO)
+    @ApiModelProperty(value = "涓婚敭", example = "1")
+    @ExcelColumn(name="涓婚敭")
+    private Integer id;
+
+    @ApiModelProperty(value = "鍒涘缓浜虹紪鐮�", example = "1")
+    @ExcelColumn(name="鍒涘缓浜虹紪鐮�")
+    private Integer creator;
+
+    @ApiModelProperty(value = "鍒涘缓鏃堕棿")
+    @ExcelColumn(name="鍒涘缓鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date createDate;
+
+    @ApiModelProperty(value = "鏇存柊浜虹紪鐮�", example = "1")
+    @ExcelColumn(name="鏇存柊浜虹紪鐮�")
+    private Integer editor;
+
+    @ApiModelProperty(value = "鏇存柊鏃堕棿")
+    @ExcelColumn(name="鏇存柊鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date editDate;
+
+    @ApiModelProperty(value = "鏄惁鍒犻櫎0鍚� 1鏄�", example = "1")
+    @ExcelColumn(name="鏄惁鍒犻櫎0鍚� 1鏄�")
+    private Integer isdeleted;
+
+    @ApiModelProperty(value = "鍚嶇О锛堜笉鍙噸澶嶏級")
+    @ExcelColumn(name="鍚嶇О锛堜笉鍙噸澶嶏級")
+    private String name;
+
+    @ApiModelProperty(value = "澶囨敞")
+    @ExcelColumn(name="澶囨敞")
+    private String remark;
+    @ApiModelProperty(value = "浼佷笟缂栫爜")
+    @ExcelColumn(name="浼佷笟缂栫爜")
+    private Integer companyId;
+    @ApiModelProperty(value = "鐘舵�� 0鍚敤 1绂佺敤", example = "1")
+    @ExcelColumn(name="鐘舵�� 0鍚敤 1绂佺敤")
+    private Integer status;
+
+    @ApiModelProperty(value = "鎺掑簭鐮�", example = "1")
+    @ExcelColumn(name="鎺掑簭鐮�")
+    private Integer sortnum;
+
+    @ApiModelProperty(value = "鍥炬爣")
+    @ExcelColumn(name="鍥炬爣")
+    private String imgurl;
+
+    @ApiModelProperty(value = "鍓嶇紑璺緞")
+    @TableField(exist = false)
+    private String prefixUrl;
+
+}
diff --git a/server/src/main/java/com/doumee/dao/business/model/CateAttr.java b/server/service/src/main/java/com/doumee/dao/business/model/CateAttr.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/business/model/CateAttr.java
rename to server/service/src/main/java/com/doumee/dao/business/model/CateAttr.java
diff --git a/server/src/main/java/com/doumee/dao/business/model/CateBudget.java b/server/service/src/main/java/com/doumee/dao/business/model/CateBudget.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/business/model/CateBudget.java
rename to server/service/src/main/java/com/doumee/dao/business/model/CateBudget.java
diff --git a/server/src/main/java/com/doumee/dao/business/model/CateBudgetMapper.java b/server/service/src/main/java/com/doumee/dao/business/model/CateBudgetMapper.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/business/model/CateBudgetMapper.java
rename to server/service/src/main/java/com/doumee/dao/business/model/CateBudgetMapper.java
diff --git a/server/src/main/java/com/doumee/dao/business/model/CateParam.java b/server/service/src/main/java/com/doumee/dao/business/model/CateParam.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/business/model/CateParam.java
rename to server/service/src/main/java/com/doumee/dao/business/model/CateParam.java
diff --git a/server/service/src/main/java/com/doumee/dao/business/model/Category.java b/server/service/src/main/java/com/doumee/dao/business/model/Category.java
new file mode 100644
index 0000000..d178550
--- /dev/null
+++ b/server/service/src/main/java/com/doumee/dao/business/model/Category.java
@@ -0,0 +1,112 @@
+package com.doumee.dao.business.model;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.doumee.core.annotation.excel.ExcelColumn;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 鍝佺被淇℃伅琛�
+ * @author 姹熻箘韫�
+ * @date 2023/05/12 13:58
+ */
+@Data
+@ApiModel("鍝佺被淇℃伅琛�")
+@TableName("`category`")
+public class Category {
+
+    @TableId(type = IdType.AUTO)
+    @ApiModelProperty(value = "涓婚敭", example = "1")
+    @ExcelColumn(name="涓婚敭")
+    private Integer id;
+
+    @ApiModelProperty(value = "鍒涘缓浜虹紪鐮�", example = "1")
+    @ExcelColumn(name="鍒涘缓浜虹紪鐮�")
+    private Integer creator;
+
+    @ApiModelProperty(value = "鍒涘缓鏃堕棿")
+    @ExcelColumn(name="鍒涘缓鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date createDate;
+
+    @ApiModelProperty(value = "鏇存柊浜虹紪鐮�", example = "1")
+    @ExcelColumn(name="鏇存柊浜虹紪鐮�")
+    private Integer editor;
+
+    @ApiModelProperty(value = "鏇存柊鏃堕棿")
+    @ExcelColumn(name="鏇存柊鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date editDate;
+
+    @ApiModelProperty(value = "鏄惁鍒犻櫎0鍚� 1鏄�", example = "1")
+    @ExcelColumn(name="鏄惁鍒犻櫎0鍚� 1鏄�")
+    private Integer isdeleted;
+
+    @ApiModelProperty(value = "鍚嶇О锛堜笉鍙噸澶嶏級")
+    @ExcelColumn(name="鍚嶇О锛堜笉鍙噸澶嶏級")
+    private String name;
+
+    @ApiModelProperty(value = "澶囨敞")
+    @ExcelColumn(name="澶囨敞")
+    private String remark;
+
+    @ApiModelProperty(value = "灞炴��1鍚嶇О")
+    @ExcelColumn(name="灞炴��1鍚嶇О")
+    private String attrFirst;
+
+    @ApiModelProperty(value = "灞炴��2鍚嶇О")
+    @ExcelColumn(name="灞炴��2鍚嶇О")
+    private String attrSecond;
+
+    @ApiModelProperty(value = "鐘舵�� 0鍚敤 1绂佺敤", example = "1")
+    @ExcelColumn(name="鐘舵�� 0鍚敤 1绂佺敤")
+    private Integer status;
+
+    @ApiModelProperty(value = "鎺掑簭鐮�", example = "1")
+    @ExcelColumn(name="鎺掑簭鐮�")
+    private Integer sortnum;
+
+    @ApiModelProperty(value = "鍥炬爣")
+    @ExcelColumn(name="鍥炬爣")
+    private String imgurl;
+
+    @ApiModelProperty(value = "鍓嶇紑璺緞")
+    @TableField(exist = false)
+    private String prefixUrl;
+
+    @ApiModelProperty(value = "鍚嶇О鎷奸煶")
+    @ExcelColumn(name="鍚嶇О鎷奸煶")
+    private String pinyin;
+
+    @ApiModelProperty(value = "鍚嶇О鎷奸煶棣栧瓧姣�")
+    @ExcelColumn(name="鍚嶇О鎷奸煶棣栧瓧姣�")
+    private String shortPinyin;
+    @ApiModelProperty(value = "浼佷笟缂栫爜")
+    @ExcelColumn(name="浼佷笟缂栫爜")
+    private Integer companyId;
+
+
+    @ApiModelProperty(value = "鍙傛暟鍚嶇О 鍒楄〃鍊�")
+    @TableField(exist = false)
+    private List<CateParam> paramList;
+
+    @ApiModelProperty(value = "灞炴��1 鍒楄〃鍊�")
+    @TableField(exist = false)
+    private List<CateAttr> attrFirstList;
+
+    @ApiModelProperty(value = "灞炴��2 鍒楄〃鍊�")
+    @TableField(exist = false)
+    private List<CateAttr> attrSecondList;
+
+    @ApiModelProperty(value = "浠锋牸鍖洪棿 鍒楄〃")
+    @TableField(exist = false)
+    private List<CateBudget> budgetList;
+
+}
diff --git a/server/service/src/main/java/com/doumee/dao/business/model/Goods.java b/server/service/src/main/java/com/doumee/dao/business/model/Goods.java
new file mode 100644
index 0000000..180afe4
--- /dev/null
+++ b/server/service/src/main/java/com/doumee/dao/business/model/Goods.java
@@ -0,0 +1,162 @@
+package com.doumee.dao.business.model;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.doumee.core.annotation.excel.ExcelColumn;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import java.util.Date;
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * 鍟嗗搧淇℃伅琛�
+ * @author 姹熻箘韫�
+ * @date 2023/05/12 13:58
+ */
+@Data
+@ApiModel("鍟嗗搧淇℃伅琛�")
+@TableName("`goods`")
+public class Goods {
+
+    @TableId(type = IdType.AUTO)
+    @ApiModelProperty(value = "涓婚敭", example = "1")
+    @ExcelColumn(name="涓婚敭")
+    private Integer id;
+
+    @ApiModelProperty(value = "鍒涘缓浜虹紪鐮�", example = "1")
+    @ExcelColumn(name="鍒涘缓浜虹紪鐮�")
+    private Integer creator;
+
+    @ApiModelProperty(value = "鍒涘缓鏃堕棿")
+    @ExcelColumn(name="鍒涘缓鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date createDate;
+
+    @ApiModelProperty(value = "鏇存柊浜虹紪鐮�", example = "1")
+    @ExcelColumn(name="鏇存柊浜虹紪鐮�")
+    private Integer editor;
+
+    @ApiModelProperty(value = "鏇存柊鏃堕棿")
+    @ExcelColumn(name="鏇存柊鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date editDate;
+
+    @ApiModelProperty(value = "鏄惁鍒犻櫎0鍚� 1鏄�", example = "1")
+    @ExcelColumn(name="鏄惁鍒犻櫎0鍚� 1鏄�")
+    private Integer isdeleted;
+
+    @ApiModelProperty(value = "澶囨敞")
+    @ExcelColumn(name="澶囨敞")
+    private String remark;
+    @ApiModelProperty(value = "浼佷笟缂栫爜")
+    @ExcelColumn(name="浼佷笟缂栫爜")
+    private Integer companyId;
+
+    @ApiModelProperty(value = "鍚嶇О锛堜笉鍙噸澶嶏級")
+    @ExcelColumn(name="鍚嶇О锛堜笉鍙噸澶嶏級")
+    private String name;
+
+    @ApiModelProperty(value = "鐘舵�� 0鍚敤 1绂佺敤", example = "1")
+    @ExcelColumn(name="鐘舵�� 0鍚敤 1绂佺敤")
+    private Integer status;
+
+    @ApiModelProperty(value = "鎺掑簭鐮�", example = "1")
+    @ExcelColumn(name="鎺掑簭鐮�")
+    private Integer sortnum;
+
+    @ApiModelProperty(value = "鍥炬爣")
+    @ExcelColumn(name="鍥炬爣")
+    private String imgurl;
+
+    @ApiModelProperty(value = "鎵�灞炲搧绫荤紪鐮�", example = "1")
+    @ExcelColumn(name="鎵�灞炲搧绫荤紪鐮�")
+    private Integer categoryId;
+
+    @ApiModelProperty(value = "鎵�灞炲搧鐗岀紪鐮�", example = "1")
+    @ExcelColumn(name="鎵�灞炲搧鐗岀紪鐮�")
+    private Integer brandId;
+
+    @ApiModelProperty(value = "鎸囧浠凤紙鍏冿級", example = "1")
+    @ExcelColumn(name="鎸囧浠凤紙鍏冿級")
+    private BigDecimal zdPrice;
+
+    @ApiModelProperty(value = "鍏ユ墜浠锋牸锛堝厓锛�", example = "1")
+    @ExcelColumn(name="鍏ユ墜浠锋牸锛堝厓锛�")
+    private BigDecimal price;
+
+    @ApiModelProperty(value = "鍟嗗搧璇︽儏")
+    @ExcelColumn(name="鍟嗗搧璇︽儏")
+    private String content;
+
+    @ApiModelProperty(value = "鍝佺被灞炴�у��1锛堝叧鑱攃ate_attr琛級锛屽涓嫳鏂囬�楀彿闅斿紑")
+    @ExcelColumn(name="鍝佺被灞炴�у��1锛堝叧鑱攃ate_attr琛級锛屽涓嫳鏂囬�楀彿闅斿紑")
+    private String attrFirstIds;
+
+    @ApiModelProperty(value = "鍝佺被灞炴�у��2锛堝叧鑱攃ate_attr琛級锛屽涓嫳鏂囬�楀彿闅斿紑")
+    @ExcelColumn(name="鍝佺被灞炴�у��2锛堝叧鑱攃ate_attr琛級锛屽涓嫳鏂囬�楀彿闅斿紑")
+    private String attrSecodIds;
+
+    @ApiModelProperty(value = "鍝佺被灞炴�у��1闆嗗悎锛屽涓嫳鏂囬�楀彿闅斿紑")
+    @ExcelColumn(name="鍝佺被灞炴�у��1闆嗗悎锛屽涓嫳鏂囬�楀彿闅斿紑")
+    private String attrFirstNames;
+
+    @ApiModelProperty(value = "鍝佺被灞炴�у��2闆嗗悎锛屽涓嫳鏂囬�楀彿闅斿紑")
+    @ExcelColumn(name="鍝佺被灞炴�у��2闆嗗悎锛屽涓嫳鏂囬�楀彿闅斿紑")
+    private String attrSecodNames;
+
+    @ApiModelProperty(value = "鍚嶇О鎷奸煶")
+    @ExcelColumn(name="鍚嶇О鎷奸煶")
+    private String pinyin;
+
+    @ApiModelProperty(value = "鍚嶇О鎷奸煶棣栧瓧姣�")
+    @ExcelColumn(name="鍚嶇О鎷奸煶棣栧瓧姣�")
+    private String shortPinyin;
+
+    @ApiModelProperty(value = "鍓嶇紑璺緞")
+    @TableField(exist = false)
+    private String prefixUrl;
+
+    @ApiModelProperty(value = "闄勪欢鍒楄〃")
+    @TableField(exist = false)
+    private List<Multifile> multifileList;
+
+    @ApiModelProperty(value = "绫诲埆鍚嶇О")
+    @TableField(exist = false)
+    private String categoryName;
+
+    @ApiModelProperty(value = "鍝佺墝鍚嶇О")
+    @TableField(exist = false)
+    private String brandName;
+
+    @ApiModelProperty(value = "灞炴��1鍚嶇О")
+    @TableField(exist = false)
+    private String attrFirst;
+
+    @ApiModelProperty(value = "灞炴��2鍚嶇О")
+    @TableField(exist = false)
+    private String attrSecond;
+
+    @ApiModelProperty(value = "鍟嗗搧鍝佺被鍙傛暟閰嶇疆")
+    @TableField(exist = false)
+    private List<GoodsParam> goodsParamList;
+
+    @ApiModelProperty(value = "鍟嗗搧鍒嗙被鍥剧墖")
+    @TableField(exist = false)
+    private String categoryImgurl;
+
+    @ApiModelProperty(value = "璧峰浠锋牸 - 鏌ヨ鐢�")
+    @TableField(exist = false)
+    private BigDecimal sPrice;
+
+    @ApiModelProperty(value = "鏈�楂樹环鏍� - 鏌ヨ鐢�")
+    @TableField(exist = false)
+    private BigDecimal ePrice;
+
+
+
+}
diff --git a/server/src/main/java/com/doumee/dao/business/model/GoodsImport.java b/server/service/src/main/java/com/doumee/dao/business/model/GoodsImport.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/business/model/GoodsImport.java
rename to server/service/src/main/java/com/doumee/dao/business/model/GoodsImport.java
diff --git a/server/src/main/java/com/doumee/dao/business/model/GoodsParam.java b/server/service/src/main/java/com/doumee/dao/business/model/GoodsParam.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/business/model/GoodsParam.java
rename to server/service/src/main/java/com/doumee/dao/business/model/GoodsParam.java
diff --git a/server/service/src/main/java/com/doumee/dao/business/model/Multifile.java b/server/service/src/main/java/com/doumee/dao/business/model/Multifile.java
new file mode 100644
index 0000000..8c7115e
--- /dev/null
+++ b/server/service/src/main/java/com/doumee/dao/business/model/Multifile.java
@@ -0,0 +1,81 @@
+package com.doumee.dao.business.model;
+
+import com.doumee.core.annotation.excel.ExcelColumn;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import java.util.Date;
+
+/**
+ * 闄勪欢淇℃伅琛�
+ * @author 姹熻箘韫�
+ * @date 2023/05/12 13:58
+ */
+@Data
+@ApiModel("闄勪欢淇℃伅琛�")
+@TableName("`multifile`")
+public class Multifile {
+
+    @TableId(type = IdType.AUTO)
+    @ApiModelProperty(value = "涓婚敭", example = "1")
+    @ExcelColumn(name="涓婚敭")
+    private Integer id;
+
+    @ApiModelProperty(value = "鍒涘缓浜虹紪鐮�", example = "1")
+    @ExcelColumn(name="鍒涘缓浜虹紪鐮�")
+    private Integer creator;
+
+    @ApiModelProperty(value = "鍒涘缓鏃堕棿")
+    @ExcelColumn(name="鍒涘缓鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date createDate;
+
+    @ApiModelProperty(value = "鏇存柊浜虹紪鐮�", example = "1")
+    @ExcelColumn(name="鏇存柊浜虹紪鐮�")
+    private Integer editor;
+
+    @ApiModelProperty(value = "鏇存柊鏃堕棿")
+    @ExcelColumn(name="鏇存柊鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date editDate;
+
+    @ApiModelProperty(value = "鏄惁鍒犻櫎0鍚� 1鏄�", example = "1")
+    @ExcelColumn(name="鏄惁鍒犻櫎0鍚� 1鏄�")
+    private Integer isdeleted;
+
+    @ApiModelProperty(value = "鏂囦欢鍚�")
+    @ExcelColumn(name="鏂囦欢鍚�")
+    private String name;
+
+    @ApiModelProperty(value = "澶囨敞")
+    @ExcelColumn(name="澶囨敞")
+    private String info;
+
+    @ApiModelProperty(value = "鍏宠仈瀵硅薄缂栫爜", example = "1")
+    @ExcelColumn(name="鍏宠仈瀵硅薄缂栫爜")
+    private Integer objId;
+
+    @ApiModelProperty(value = "绫诲瀷0鍥剧墖 1瑙嗛 2鍏朵粬", example = "1")
+    @ExcelColumn(name="绫诲瀷0鍥剧墖 1瑙嗛 2鍏朵粬")
+    private Integer type;
+
+    @ApiModelProperty(value = "鍏宠仈瀵硅薄绫诲瀷 0鍟嗗搧澶氬浘", example = "1")
+    @ExcelColumn(name="鍏宠仈瀵硅薄绫诲瀷 0鍟嗗搧澶氬浘")
+    private Integer objType;
+
+    @ApiModelProperty(value = "鏂囦欢鍦板潃")
+    @ExcelColumn(name="鏂囦欢鍦板潃")
+    private String fileurl;
+
+    @ApiModelProperty(value = "浼佷笟缂栫爜")
+    @ExcelColumn(name="浼佷笟缂栫爜")
+    private Integer companyId;
+    @ApiModelProperty(value = "鎺掑簭鐮�", example = "1")
+    @ExcelColumn(name="鎺掑簭鐮�")
+    private Integer sortnum;
+
+}
diff --git a/server/src/main/java/com/doumee/dao/business/model/dto/GoodsRequest.java b/server/service/src/main/java/com/doumee/dao/business/model/dto/GoodsRequest.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/business/model/dto/GoodsRequest.java
rename to server/service/src/main/java/com/doumee/dao/business/model/dto/GoodsRequest.java
diff --git a/server/src/main/java/com/doumee/dao/system/SystemDataPermissionMapper.java b/server/service/src/main/java/com/doumee/dao/system/SystemDataPermissionMapper.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/system/SystemDataPermissionMapper.java
rename to server/service/src/main/java/com/doumee/dao/system/SystemDataPermissionMapper.java
diff --git a/server/src/main/java/com/doumee/dao/system/SystemDepartmentMapper.java b/server/service/src/main/java/com/doumee/dao/system/SystemDepartmentMapper.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/system/SystemDepartmentMapper.java
rename to server/service/src/main/java/com/doumee/dao/system/SystemDepartmentMapper.java
diff --git a/server/src/main/java/com/doumee/dao/system/SystemDepartmentUserMapper.java b/server/service/src/main/java/com/doumee/dao/system/SystemDepartmentUserMapper.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/system/SystemDepartmentUserMapper.java
rename to server/service/src/main/java/com/doumee/dao/system/SystemDepartmentUserMapper.java
diff --git a/server/src/main/java/com/doumee/dao/system/SystemDictDataMapper.java b/server/service/src/main/java/com/doumee/dao/system/SystemDictDataMapper.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/system/SystemDictDataMapper.java
rename to server/service/src/main/java/com/doumee/dao/system/SystemDictDataMapper.java
diff --git a/server/src/main/java/com/doumee/dao/system/SystemDictMapper.java b/server/service/src/main/java/com/doumee/dao/system/SystemDictMapper.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/system/SystemDictMapper.java
rename to server/service/src/main/java/com/doumee/dao/system/SystemDictMapper.java
diff --git a/server/src/main/java/com/doumee/dao/system/SystemLoginLogMapper.java b/server/service/src/main/java/com/doumee/dao/system/SystemLoginLogMapper.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/system/SystemLoginLogMapper.java
rename to server/service/src/main/java/com/doumee/dao/system/SystemLoginLogMapper.java
diff --git a/server/src/main/java/com/doumee/dao/system/SystemMenuMapper.java b/server/service/src/main/java/com/doumee/dao/system/SystemMenuMapper.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/system/SystemMenuMapper.java
rename to server/service/src/main/java/com/doumee/dao/system/SystemMenuMapper.java
diff --git a/server/src/main/java/com/doumee/dao/system/SystemPermissionMapper.java b/server/service/src/main/java/com/doumee/dao/system/SystemPermissionMapper.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/system/SystemPermissionMapper.java
rename to server/service/src/main/java/com/doumee/dao/system/SystemPermissionMapper.java
diff --git a/server/src/main/java/com/doumee/dao/system/SystemPositionMapper.java b/server/service/src/main/java/com/doumee/dao/system/SystemPositionMapper.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/system/SystemPositionMapper.java
rename to server/service/src/main/java/com/doumee/dao/system/SystemPositionMapper.java
diff --git a/server/src/main/java/com/doumee/dao/system/SystemPositionUserMapper.java b/server/service/src/main/java/com/doumee/dao/system/SystemPositionUserMapper.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/system/SystemPositionUserMapper.java
rename to server/service/src/main/java/com/doumee/dao/system/SystemPositionUserMapper.java
diff --git a/server/src/main/java/com/doumee/dao/system/SystemRoleMapper.java b/server/service/src/main/java/com/doumee/dao/system/SystemRoleMapper.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/system/SystemRoleMapper.java
rename to server/service/src/main/java/com/doumee/dao/system/SystemRoleMapper.java
diff --git a/server/src/main/java/com/doumee/dao/system/SystemRoleMenuMapper.java b/server/service/src/main/java/com/doumee/dao/system/SystemRoleMenuMapper.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/system/SystemRoleMenuMapper.java
rename to server/service/src/main/java/com/doumee/dao/system/SystemRoleMenuMapper.java
diff --git a/server/src/main/java/com/doumee/dao/system/SystemRolePermissionMapper.java b/server/service/src/main/java/com/doumee/dao/system/SystemRolePermissionMapper.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/system/SystemRolePermissionMapper.java
rename to server/service/src/main/java/com/doumee/dao/system/SystemRolePermissionMapper.java
diff --git a/server/src/main/java/com/doumee/dao/system/SystemTraceLogMapper.java b/server/service/src/main/java/com/doumee/dao/system/SystemTraceLogMapper.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/system/SystemTraceLogMapper.java
rename to server/service/src/main/java/com/doumee/dao/system/SystemTraceLogMapper.java
diff --git a/server/src/main/java/com/doumee/dao/system/SystemUserJoinMapper.java b/server/service/src/main/java/com/doumee/dao/system/SystemUserJoinMapper.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/system/SystemUserJoinMapper.java
rename to server/service/src/main/java/com/doumee/dao/system/SystemUserJoinMapper.java
diff --git a/server/src/main/java/com/doumee/dao/system/SystemUserMapper.java b/server/service/src/main/java/com/doumee/dao/system/SystemUserMapper.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/system/SystemUserMapper.java
rename to server/service/src/main/java/com/doumee/dao/system/SystemUserMapper.java
diff --git a/server/src/main/java/com/doumee/dao/system/SystemUserRoleMapper.java b/server/service/src/main/java/com/doumee/dao/system/SystemUserRoleMapper.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/system/SystemUserRoleMapper.java
rename to server/service/src/main/java/com/doumee/dao/system/SystemUserRoleMapper.java
diff --git a/server/src/main/java/com/doumee/dao/system/dto/AreasDto.java b/server/service/src/main/java/com/doumee/dao/system/dto/AreasDto.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/system/dto/AreasDto.java
rename to server/service/src/main/java/com/doumee/dao/system/dto/AreasDto.java
diff --git a/server/src/main/java/com/doumee/dao/system/dto/ChangeStatusDTO.java b/server/service/src/main/java/com/doumee/dao/system/dto/ChangeStatusDTO.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/system/dto/ChangeStatusDTO.java
rename to server/service/src/main/java/com/doumee/dao/system/dto/ChangeStatusDTO.java
diff --git a/server/src/main/java/com/doumee/dao/system/dto/CompanyDTO.java b/server/service/src/main/java/com/doumee/dao/system/dto/CompanyDTO.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/system/dto/CompanyDTO.java
rename to server/service/src/main/java/com/doumee/dao/system/dto/CompanyDTO.java
diff --git a/server/src/main/java/com/doumee/dao/system/dto/CompanyUserDTO.java b/server/service/src/main/java/com/doumee/dao/system/dto/CompanyUserDTO.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/system/dto/CompanyUserDTO.java
rename to server/service/src/main/java/com/doumee/dao/system/dto/CompanyUserDTO.java
diff --git a/server/src/main/java/com/doumee/dao/system/dto/CreateRoleMenuDTO.java b/server/service/src/main/java/com/doumee/dao/system/dto/CreateRoleMenuDTO.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/system/dto/CreateRoleMenuDTO.java
rename to server/service/src/main/java/com/doumee/dao/system/dto/CreateRoleMenuDTO.java
diff --git a/server/service/src/main/java/com/doumee/dao/system/dto/CreateRolePermissionDTO.java b/server/service/src/main/java/com/doumee/dao/system/dto/CreateRolePermissionDTO.java
new file mode 100644
index 0000000..a873798
--- /dev/null
+++ b/server/service/src/main/java/com/doumee/dao/system/dto/CreateRolePermissionDTO.java
@@ -0,0 +1,32 @@
+package com.doumee.dao.system.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @author Eva.Caesar Liu
+ * @date 2023/02/14 11:14
+ */
+@Data
+@ApiModel("鍒涘缓瑙掕壊鏉冮檺鍙傛暟")
+public class CreateRolePermissionDTO implements Serializable {
+
+    @ApiModelProperty(value = "瑙掕壊ID")
+    @NotNull(message = "瑙掕壊ID涓嶈兘涓虹┖")
+    private Integer roleId;
+
+    @ApiModelProperty(value = "鏉冮檺ID闆�")
+    @NotNull(message = "鏉冮檺ID闆嗕笉鑳戒负绌�")
+    private List<Integer> permissionIds;
+
+    @ApiModelProperty(value = "鍒涘缓浜�", hidden = true)
+    private Integer createUser;
+
+    @ApiModelProperty(value = "绫诲瀷 0骞冲彴鐢ㄦ埛 1浼佷笟鐢ㄦ埛")
+    private Integer type;
+}
diff --git a/server/src/main/java/com/doumee/dao/system/dto/CreateSystemUserDTO.java b/server/service/src/main/java/com/doumee/dao/system/dto/CreateSystemUserDTO.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/system/dto/CreateSystemUserDTO.java
rename to server/service/src/main/java/com/doumee/dao/system/dto/CreateSystemUserDTO.java
diff --git a/server/src/main/java/com/doumee/dao/system/dto/CreateUserRoleDTO.java b/server/service/src/main/java/com/doumee/dao/system/dto/CreateUserRoleDTO.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/system/dto/CreateUserRoleDTO.java
rename to server/service/src/main/java/com/doumee/dao/system/dto/CreateUserRoleDTO.java
diff --git a/server/src/main/java/com/doumee/dao/system/dto/ExpertReportDTO.java b/server/service/src/main/java/com/doumee/dao/system/dto/ExpertReportDTO.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/system/dto/ExpertReportDTO.java
rename to server/service/src/main/java/com/doumee/dao/system/dto/ExpertReportDTO.java
diff --git a/server/src/main/java/com/doumee/dao/system/dto/LoginDTO.java b/server/service/src/main/java/com/doumee/dao/system/dto/LoginDTO.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/system/dto/LoginDTO.java
rename to server/service/src/main/java/com/doumee/dao/system/dto/LoginDTO.java
diff --git a/server/src/main/java/com/doumee/dao/system/dto/MultiFileDTO.java b/server/service/src/main/java/com/doumee/dao/system/dto/MultiFileDTO.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/system/dto/MultiFileDTO.java
rename to server/service/src/main/java/com/doumee/dao/system/dto/MultiFileDTO.java
diff --git a/server/src/main/java/com/doumee/dao/system/dto/QuerySystemDepartmentDTO.java b/server/service/src/main/java/com/doumee/dao/system/dto/QuerySystemDepartmentDTO.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/system/dto/QuerySystemDepartmentDTO.java
rename to server/service/src/main/java/com/doumee/dao/system/dto/QuerySystemDepartmentDTO.java
diff --git a/server/src/main/java/com/doumee/dao/system/dto/QuerySystemDictDTO.java b/server/service/src/main/java/com/doumee/dao/system/dto/QuerySystemDictDTO.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/system/dto/QuerySystemDictDTO.java
rename to server/service/src/main/java/com/doumee/dao/system/dto/QuerySystemDictDTO.java
diff --git a/server/src/main/java/com/doumee/dao/system/dto/QuerySystemDictDataDTO.java b/server/service/src/main/java/com/doumee/dao/system/dto/QuerySystemDictDataDTO.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/system/dto/QuerySystemDictDataDTO.java
rename to server/service/src/main/java/com/doumee/dao/system/dto/QuerySystemDictDataDTO.java
diff --git a/server/service/src/main/java/com/doumee/dao/system/dto/QuerySystemLoginLogDTO.java b/server/service/src/main/java/com/doumee/dao/system/dto/QuerySystemLoginLogDTO.java
new file mode 100644
index 0000000..5bc2a9e
--- /dev/null
+++ b/server/service/src/main/java/com/doumee/dao/system/dto/QuerySystemLoginLogDTO.java
@@ -0,0 +1,23 @@
+package com.doumee.dao.system.dto;
+
+import com.doumee.dao.system.model.SystemLoginLog;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * 鏌ヨ鐧诲綍鏃ュ織鍙傛暟
+ * @author Eva.Caesar Liu
+ * @date 2023/02/14 11:14
+ */
+@Data
+public class QuerySystemLoginLogDTO extends SystemLoginLog {
+
+    @ApiModelProperty("鐧诲綍寮�濮嬫椂闂�")
+    private Date startTime;
+
+    @ApiModelProperty("鐧诲綍缁撴潫鏃堕棿")
+    private Date endTime;
+
+}
diff --git a/server/service/src/main/java/com/doumee/dao/system/dto/QuerySystemPermissionDTO.java b/server/service/src/main/java/com/doumee/dao/system/dto/QuerySystemPermissionDTO.java
new file mode 100644
index 0000000..013ebf5
--- /dev/null
+++ b/server/service/src/main/java/com/doumee/dao/system/dto/QuerySystemPermissionDTO.java
@@ -0,0 +1,25 @@
+package com.doumee.dao.system.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @author Eva.Caesar Liu
+ * @date 2023/02/14 11:14
+ */
+@Data
+@ApiModel("鏌ヨ绯荤粺鏉冮檺鍙傛暟")
+public class QuerySystemPermissionDTO implements Serializable {
+
+    @ApiModelProperty(value = "鏉冮檺缂栫爜")
+    private String code;
+
+    @ApiModelProperty(value = "鏉冮檺鍚嶇О")
+    private String name;
+
+    @ApiModelProperty(value = "绫诲瀷 0骞冲彴鐢ㄦ埛 1浼佷笟鐢ㄦ埛")
+    private Integer type;
+}
diff --git a/server/service/src/main/java/com/doumee/dao/system/dto/QuerySystemRoleDTO.java b/server/service/src/main/java/com/doumee/dao/system/dto/QuerySystemRoleDTO.java
new file mode 100644
index 0000000..80a1254
--- /dev/null
+++ b/server/service/src/main/java/com/doumee/dao/system/dto/QuerySystemRoleDTO.java
@@ -0,0 +1,26 @@
+package com.doumee.dao.system.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @author Eva.Caesar Liu
+ * @date 2023/02/14 11:14
+ */
+@Data
+@ApiModel("鏌ヨ绯荤粺瑙掕壊鍙傛暟")
+public class QuerySystemRoleDTO implements Serializable {
+
+    @ApiModelProperty(value = "瑙掕壊缂栫爜")
+    private String code;
+
+    @ApiModelProperty(value = "瑙掕壊鍚嶇О")
+    private String name;
+
+    @ApiModelProperty(value = "绫诲瀷 0骞冲彴鐢ㄦ埛 1浼佷笟鐢ㄦ埛")
+    private Integer type;
+
+}
diff --git a/server/src/main/java/com/doumee/dao/system/dto/QuerySystemTraceLogDTO.java b/server/service/src/main/java/com/doumee/dao/system/dto/QuerySystemTraceLogDTO.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/system/dto/QuerySystemTraceLogDTO.java
rename to server/service/src/main/java/com/doumee/dao/system/dto/QuerySystemTraceLogDTO.java
diff --git a/server/service/src/main/java/com/doumee/dao/system/dto/QuerySystemUserDTO.java b/server/service/src/main/java/com/doumee/dao/system/dto/QuerySystemUserDTO.java
new file mode 100644
index 0000000..1824ab9
--- /dev/null
+++ b/server/service/src/main/java/com/doumee/dao/system/dto/QuerySystemUserDTO.java
@@ -0,0 +1,60 @@
+package com.doumee.dao.system.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @author Eva.Caesar Liu
+ * @date 2023/02/14 11:14
+ */
+@Data
+@ApiModel("鏌ヨ绯荤粺鐢ㄦ埛鍙傛暟")
+public class QuerySystemUserDTO implements Serializable {
+
+    @ApiModelProperty(value = "鐢ㄤ簬鏌ヨ瀛愰儴闂ㄧ殑閮ㄩ棬ID", hidden = true)
+    private Integer rootDeptId;
+
+    @ApiModelProperty(value = "绮惧噯鍖归厤鐨勯儴闂↖D", hidden = true)
+    private Integer strictDeptId;
+
+    @ApiModelProperty(value = "閮ㄩ棬ID闆�", hidden = true)
+    private List<Integer> departmentIds;
+
+    @ApiModelProperty(value = "宀椾綅ID", hidden = true)
+    private Integer positionId;
+
+    @ApiModelProperty(value = "鐢ㄦ埛鍚�")
+    private String username;
+
+    @ApiModelProperty(value = "濮撳悕" , hidden = true)
+    private String realname;
+
+    @ApiModelProperty(value = "鎵嬫満鍙风爜", hidden = true)
+    private String mobile;
+
+    @ApiModelProperty(value = "鎵�灞炰紒涓氱紪鐮�", example = "1", hidden = true )
+    private Integer companyId;
+
+    @ApiModelProperty(value = "鍖哄煙缂栫爜", example = "1" )
+    private Integer areaId;
+
+    @ApiModelProperty(value = "鐪佺紪鐮�")
+    private Integer  provinceId;
+
+    @ApiModelProperty(value = "鍩庡競缂栫爜", example = "1" )
+    private Integer cityId;
+
+    @ApiModelProperty(value = "鍩庡競缂栫爜", hidden = true)
+    private List<Integer> cityIds;
+    @ApiModelProperty(value = "绫诲瀷 0骞冲彴鐢ㄦ埛 1浼佷笟鐢ㄦ埛")
+    private Integer type;
+
+
+    @ApiModelProperty(value = "鐢ㄦ埛绫诲瀷闆嗗悎",hidden = true )
+    private List<Integer> typeList;
+
+}
diff --git a/server/src/main/java/com/doumee/dao/system/dto/ResetSystemUserPwdDTO.java b/server/service/src/main/java/com/doumee/dao/system/dto/ResetSystemUserPwdDTO.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/system/dto/ResetSystemUserPwdDTO.java
rename to server/service/src/main/java/com/doumee/dao/system/dto/ResetSystemUserPwdDTO.java
diff --git a/server/src/main/java/com/doumee/dao/system/dto/UpdatePwdDto.java b/server/service/src/main/java/com/doumee/dao/system/dto/UpdatePwdDto.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/system/dto/UpdatePwdDto.java
rename to server/service/src/main/java/com/doumee/dao/system/dto/UpdatePwdDto.java
diff --git a/server/src/main/java/com/doumee/dao/system/dto/UpdateSystemMenuSortDTO.java b/server/service/src/main/java/com/doumee/dao/system/dto/UpdateSystemMenuSortDTO.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/system/dto/UpdateSystemMenuSortDTO.java
rename to server/service/src/main/java/com/doumee/dao/system/dto/UpdateSystemMenuSortDTO.java
diff --git a/server/src/main/java/com/doumee/dao/system/model/SystemDataPermission.java b/server/service/src/main/java/com/doumee/dao/system/model/SystemDataPermission.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/system/model/SystemDataPermission.java
rename to server/service/src/main/java/com/doumee/dao/system/model/SystemDataPermission.java
diff --git a/server/src/main/java/com/doumee/dao/system/model/SystemDepartment.java b/server/service/src/main/java/com/doumee/dao/system/model/SystemDepartment.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/system/model/SystemDepartment.java
rename to server/service/src/main/java/com/doumee/dao/system/model/SystemDepartment.java
diff --git a/server/src/main/java/com/doumee/dao/system/model/SystemDepartmentUser.java b/server/service/src/main/java/com/doumee/dao/system/model/SystemDepartmentUser.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/system/model/SystemDepartmentUser.java
rename to server/service/src/main/java/com/doumee/dao/system/model/SystemDepartmentUser.java
diff --git a/server/src/main/java/com/doumee/dao/system/model/SystemDict.java b/server/service/src/main/java/com/doumee/dao/system/model/SystemDict.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/system/model/SystemDict.java
rename to server/service/src/main/java/com/doumee/dao/system/model/SystemDict.java
diff --git a/server/src/main/java/com/doumee/dao/system/model/SystemDictData.java b/server/service/src/main/java/com/doumee/dao/system/model/SystemDictData.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/system/model/SystemDictData.java
rename to server/service/src/main/java/com/doumee/dao/system/model/SystemDictData.java
diff --git a/server/service/src/main/java/com/doumee/dao/system/model/SystemLoginLog.java b/server/service/src/main/java/com/doumee/dao/system/model/SystemLoginLog.java
new file mode 100644
index 0000000..ac85f34
--- /dev/null
+++ b/server/service/src/main/java/com/doumee/dao/system/model/SystemLoginLog.java
@@ -0,0 +1,78 @@
+package com.doumee.dao.system.model;
+
+import com.doumee.core.annotation.excel.ExcelColumn;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+import org.apache.poi.ss.usermodel.HorizontalAlignment;
+import org.apache.poi.ss.usermodel.IndexedColors;
+
+import java.util.Date;
+
+/**
+ * 鐧诲綍鏃ュ織
+ * @author Eva.Caesar Liu
+ * @date 2023/02/14 11:14
+ */
+@Data
+@ApiModel("鐧诲綍鏃ュ織")
+public class SystemLoginLog {
+
+    @TableId(type = IdType.AUTO)
+    @ApiModelProperty(value = "涓婚敭", example = "1")
+    private Integer id;
+
+    @ApiModelProperty(value = "鐧诲綍鐢ㄦ埛ID", example = "1")
+    private Integer userId;
+
+    @ApiModelProperty(value = "鐧诲綍鐢ㄦ埛鍚�")
+    @ExcelColumn(name="鐧诲綍鐢ㄦ埛鍚�")
+    private String loginUsername;
+
+    @ApiModelProperty(value = "鐧诲綍IP")
+    @ExcelColumn(name="鐧诲綍IP", color = IndexedColors.RED, width = 8)
+    private String ip;
+
+    @ApiModelProperty(value = "鐧诲綍鍦板潃")
+    @ExcelColumn(name="鐧诲綍鍦板潃", width = 10)
+    private String location;
+
+    @ApiModelProperty(value = "瀹㈡埛绔�")
+    @ExcelColumn(name="瀹㈡埛绔�", width = 10)
+    private String clientInfo;
+
+    @ApiModelProperty(value = "鎿嶄綔绯荤粺")
+    @ExcelColumn(name="鎿嶄綔绯荤粺")
+    private String osInfo;
+
+    @ApiModelProperty(value = "鐧诲綍骞冲彴")
+    @ExcelColumn(name="鐧诲綍骞冲彴")
+    private String platform;
+
+    @ApiModelProperty(value = "绯荤粺鐗堟湰")
+    @ExcelColumn(name="绯荤粺鐗堟湰")
+    private String systemVersion;
+
+    @ApiModelProperty(value = "鏈嶅姟鍣↖P")
+    @ExcelColumn(name="鏈嶅姟鍣↖P", width = 8)
+    private String serverIp;
+
+    @ApiModelProperty(value = "鏄惁鐧诲綍鎴愬姛")
+    @ExcelColumn(name="鏄惁鐧诲綍鎴愬姛", valueMapping = "true=鏄�;false=鍚�", align = HorizontalAlignment.CENTER)
+    private Boolean success;
+
+    @ApiModelProperty(value = "澶辫触鍘熷洜")
+    @ExcelColumn(name="澶辫触鍘熷洜", color = IndexedColors.RED, width = 16)
+    private String reason;
+
+    @ApiModelProperty(value = "鐧诲綍鏃堕棿")
+    @ExcelColumn(name="鐧诲綍鏃堕棿", dateFormat = "yyyy-MM-dd HH:mm:ss", width = 10)
+    private Date loginTime;
+
+    @ApiModelProperty(value = "浼佷笟缂栫爜")
+    @ExcelColumn(name="浼佷笟缂栫爜")
+    private Integer companyId;
+
+}
diff --git a/server/service/src/main/java/com/doumee/dao/system/model/SystemMenu.java b/server/service/src/main/java/com/doumee/dao/system/model/SystemMenu.java
new file mode 100644
index 0000000..4a0cd84
--- /dev/null
+++ b/server/service/src/main/java/com/doumee/dao/system/model/SystemMenu.java
@@ -0,0 +1,76 @@
+package com.doumee.dao.system.model;
+
+import com.baomidou.mybatisplus.annotation.FieldStrategy;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.doumee.core.constants.OperaType;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 绯荤粺鑿滃崟
+ * @author Eva.Caesar Liu
+ * @date 2023/02/14 11:14
+ */
+@Data
+@ApiModel("绯荤粺鑿滃崟")
+public class SystemMenu implements Serializable {
+
+    @TableId(type = IdType.AUTO)
+    @ApiModelProperty(value = "涓婚敭", example = "1")
+    @NotNull(message = "涓婚敭涓嶈兘涓虹┖", groups = {OperaType.Update.class, OperaType.UpdateStatus.class})
+    private Integer id;
+
+    @ApiModelProperty(value = "涓婁竴绾ц彍鍗�", example = "1")
+    @TableField(updateStrategy = FieldStrategy.IGNORED)
+    private Integer parentId;
+
+    @ApiModelProperty(value = "鑿滃崟鍚嶇О")
+    @NotBlank(message = "鑿滃崟鍚嶇О涓嶈兘涓虹┖", groups = {OperaType.Create.class, OperaType.Update.class})
+    private String name;
+
+    @ApiModelProperty(value = "鑿滃崟璁块棶璺緞")
+    private String path;
+
+    @ApiModelProperty(value = "澶囨敞")
+    private String remark;
+
+    @ApiModelProperty(value = "鍥炬爣")
+    private String icon;
+
+    @ApiModelProperty(value = "鏄惁绂佺敤")
+    @NotNull(message = "鏄惁绂佺敤涓嶈兘涓虹┖", groups = OperaType.UpdateStatus.class)
+    private Boolean disabled;
+
+    @ApiModelProperty(value = "鎺掑簭", example = "1")
+    private Integer sort;
+
+    @ApiModelProperty(value = "鏄惁涓哄浐瀹氳彍鍗�", hidden = true)
+    private Boolean fixed;
+
+    @ApiModelProperty(value = "鍒涘缓鏃堕棿")
+    private Date createTime;
+
+    @ApiModelProperty(value = "鏇存柊鏃堕棿")
+    private Date updateTime;
+
+    @ApiModelProperty(value = "鍒涘缓鑰匢D", example = "1", hidden = true)
+    private Integer createUser;
+
+    @ApiModelProperty(value = "鏇存柊鑰匢D", example = "1", hidden = true)
+    private Integer updateUser;
+
+    @ApiModelProperty(value = "鏄惁宸插垹闄�", hidden = true)
+    private Boolean deleted;
+    @ApiModelProperty(value = "绫诲瀷 0骞冲彴鐢ㄦ埛 1浼佷笟鐢ㄦ埛")
+    private Integer type;
+
+
+}
diff --git a/server/service/src/main/java/com/doumee/dao/system/model/SystemPermission.java b/server/service/src/main/java/com/doumee/dao/system/model/SystemPermission.java
new file mode 100644
index 0000000..1710692
--- /dev/null
+++ b/server/service/src/main/java/com/doumee/dao/system/model/SystemPermission.java
@@ -0,0 +1,60 @@
+package com.doumee.dao.system.model;
+
+import com.doumee.core.constants.OperaType;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 绯荤粺鏉冮檺
+ * @author Eva.Caesar Liu
+ * @date 2023/02/14 11:14
+ */
+@Data
+@ApiModel("绯荤粺鏉冮檺")
+public class SystemPermission implements Serializable {
+
+    @TableId(type = IdType.AUTO)
+    @ApiModelProperty(value = "涓婚敭", example = "1")
+    @NotNull(message = "涓婚敭涓嶈兘涓虹┖", groups = {OperaType.Update.class})
+    private Integer id;
+
+    @ApiModelProperty(value = "鏉冮檺缂栫爜")
+    @NotBlank(message = "鏉冮檺缂栫爜涓嶈兘涓虹┖", groups = {OperaType.Create.class,OperaType.Update.class})
+    private String code;
+
+    @ApiModelProperty(value = "鏉冮檺鍚嶇О")
+    @NotBlank(message = "鏉冮檺鍚嶇О涓嶈兘涓虹┖", groups = {OperaType.Create.class,OperaType.Update.class})
+    private String name;
+
+    @ApiModelProperty(value = "鏉冮檺澶囨敞")
+    private String remark;
+
+    @ApiModelProperty(value = "鏄惁涓哄浐瀹氭潈闄�", hidden = true)
+    private Boolean fixed;
+
+    @ApiModelProperty(value = "鍒涘缓鏃堕棿")
+    private Date createTime;
+
+    @ApiModelProperty(value = "鏇存柊鏃堕棿")
+    private Date updateTime;
+
+    @ApiModelProperty(value = "鍒涘缓鑰匢D", example = "1", hidden = true)
+    private Integer createUser;
+
+    @ApiModelProperty(value = "鏇存柊鑰匢D", example = "1", hidden = true)
+    private Integer updateUser;
+
+    @ApiModelProperty(value = "鏄惁宸插垹闄�", hidden = true)
+    private Boolean deleted;
+    @ApiModelProperty(value = "绫诲瀷 0骞冲彴鐢ㄦ埛 1浼佷笟鐢ㄦ埛")
+    private Integer type;
+
+}
diff --git a/server/src/main/java/com/doumee/dao/system/model/SystemPosition.java b/server/service/src/main/java/com/doumee/dao/system/model/SystemPosition.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/system/model/SystemPosition.java
rename to server/service/src/main/java/com/doumee/dao/system/model/SystemPosition.java
diff --git a/server/src/main/java/com/doumee/dao/system/model/SystemPositionUser.java b/server/service/src/main/java/com/doumee/dao/system/model/SystemPositionUser.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/system/model/SystemPositionUser.java
rename to server/service/src/main/java/com/doumee/dao/system/model/SystemPositionUser.java
diff --git a/server/service/src/main/java/com/doumee/dao/system/model/SystemRole.java b/server/service/src/main/java/com/doumee/dao/system/model/SystemRole.java
new file mode 100644
index 0000000..5b2be1a
--- /dev/null
+++ b/server/service/src/main/java/com/doumee/dao/system/model/SystemRole.java
@@ -0,0 +1,61 @@
+package com.doumee.dao.system.model;
+
+import com.doumee.core.constants.OperaType;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 绯荤粺瑙掕壊
+ * @author Eva.Caesar Liu
+ * @date 2023/02/14 11:14
+ */
+@Data
+@ApiModel("绯荤粺瑙掕壊")
+public class SystemRole implements Serializable {
+
+    @TableId(type = IdType.AUTO)
+    @ApiModelProperty(value = "涓婚敭", example = "1")
+    @NotNull(message = "涓婚敭涓嶈兘涓虹┖", groups = {OperaType.Update.class})
+    private Integer id;
+
+    @ApiModelProperty(value = "瑙掕壊缂栫爜")
+    @NotBlank(message = "瑙掕壊缂栫爜涓嶈兘涓虹┖", groups = {OperaType.Create.class, OperaType.Update.class})
+    private String code;
+
+    @ApiModelProperty(value = "瑙掕壊鍚嶇О")
+    @NotBlank(message = "瑙掕壊鍚嶇О涓嶈兘涓虹┖", groups = {OperaType.Create.class, OperaType.Update.class})
+    private String name;
+
+    @ApiModelProperty(value = "绫诲瀷 0骞冲彴鐢ㄦ埛 1浼佷笟鐢ㄦ埛")
+    private Integer type;
+
+    @ApiModelProperty(value = "瑙掕壊澶囨敞")
+    private String remark;
+
+    @ApiModelProperty(value = "鏄惁涓哄浐瀹氳鑹�", hidden = true)
+    private Boolean fixed;
+
+    @ApiModelProperty(value = "鍒涘缓鏃堕棿")
+    private Date createTime;
+
+    @ApiModelProperty(value = "鏇存柊鏃堕棿")
+    private Date updateTime;
+
+    @ApiModelProperty(value = "鍒涘缓鑰匢D", example = "1", hidden = true)
+    private Integer createUser;
+
+    @ApiModelProperty(value = "鏇存柊鑰匢D", example = "1", hidden = true)
+    private Integer updateUser;
+
+    @ApiModelProperty(value = "鏄惁宸插垹闄�", hidden = true)
+    private Boolean deleted;
+
+}
diff --git a/server/src/main/java/com/doumee/dao/system/model/SystemRoleMenu.java b/server/service/src/main/java/com/doumee/dao/system/model/SystemRoleMenu.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/system/model/SystemRoleMenu.java
rename to server/service/src/main/java/com/doumee/dao/system/model/SystemRoleMenu.java
diff --git a/server/src/main/java/com/doumee/dao/system/model/SystemRolePermission.java b/server/service/src/main/java/com/doumee/dao/system/model/SystemRolePermission.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/system/model/SystemRolePermission.java
rename to server/service/src/main/java/com/doumee/dao/system/model/SystemRolePermission.java
diff --git a/server/src/main/java/com/doumee/dao/system/model/SystemTraceLog.java b/server/service/src/main/java/com/doumee/dao/system/model/SystemTraceLog.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/system/model/SystemTraceLog.java
rename to server/service/src/main/java/com/doumee/dao/system/model/SystemTraceLog.java
diff --git a/server/service/src/main/java/com/doumee/dao/system/model/SystemUser.java b/server/service/src/main/java/com/doumee/dao/system/model/SystemUser.java
new file mode 100644
index 0000000..3995cfb
--- /dev/null
+++ b/server/service/src/main/java/com/doumee/dao/system/model/SystemUser.java
@@ -0,0 +1,100 @@
+package com.doumee.dao.system.model;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.doumee.core.constants.OperaType;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+import javax.validation.constraints.Email;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Pattern;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 绯荤粺鐢ㄦ埛
+ * @author Eva.Caesar Liu
+ * @date 2023/03/21 14:49
+ */
+@Data
+@ApiModel("绯荤粺鐢ㄦ埛")
+@TableName("`SYSTEM_USER`")
+public class SystemUser implements Serializable {
+
+    @TableId(type = IdType.AUTO)
+    @ApiModelProperty(value = "涓婚敭", example = "1")
+    @NotNull(message = "涓婚敭涓嶈兘涓虹┖", groups = {OperaType.Update.class})
+    private Integer id;
+
+    @ApiModelProperty(value = "鐢ㄦ埛鍚�")
+    @NotBlank(message = "鐢ㄦ埛鍚嶄笉鑳戒负绌�")
+    private String username;
+
+    @ApiModelProperty(value = "鍛樺伐鍚嶇О")
+    @NotBlank(message = "濮撳悕涓嶈兘涓虹┖", groups = {OperaType.Create.class, OperaType.Update.class})
+    private String realname;
+
+    @ApiModelProperty(value = "宸ュ彿")
+    private String empNo;
+
+    @ApiModelProperty(value = "鐢熸棩")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date birthday;
+
+    @ApiModelProperty(value = "鎬у埆")
+    @NotBlank(message = "鎬у埆涓嶈兘涓虹┖")
+    private String sex;
+
+    @ApiModelProperty(value = "閭")
+    @Email(message = "閭鏍煎紡涓嶆纭�")
+    private String email;
+
+    @ApiModelProperty(value = "鎵嬫満鍙风爜")
+    @Pattern(message = "鎵嬫満鍙风爜鏍煎紡涓嶆纭�", regexp = "^\\d*$", groups = {OperaType.Create.class, OperaType.Update.class})
+    private String mobile;
+
+    @ApiModelProperty(value = "澶村儚")
+    @NotBlank(message = "澶村儚涓嶈兘涓虹┖")
+    private String avatar;
+
+    @ApiModelProperty(value = "浼佷笟缂栫爜")
+    private Integer companyId;
+    @ApiModelProperty(value = "绫诲瀷 0骞冲彴鐢ㄦ埛 1浼佷笟鐢ㄦ埛")
+    private Integer type;
+
+    @ApiModelProperty(value = "瀵嗙爜")
+    @NotBlank(message = "鍒濆瀵嗙爜涓嶈兘涓虹┖")
+    private String password;
+
+    @ApiModelProperty(value = "鐩�")
+    private String salt;
+
+    @ApiModelProperty(value = "鏄惁涓哄浐瀹氱敤鎴�", hidden = true)
+    private Boolean fixed;
+
+    @ApiModelProperty(value = "鍒涘缓鏃堕棿")
+    private Date createTime;
+
+    @ApiModelProperty(value = "鏇存柊鏃堕棿")
+    private Date updateTime;
+
+    @ApiModelProperty(value = "鍒涘缓浜�", example = "1", hidden = true)
+    private Integer createUser;
+
+    @ApiModelProperty(value = "鏇存柊浜�", example = "1", hidden = true)
+    private Integer updateUser;
+
+
+    @ApiModelProperty(value = "鏄惁宸插垹闄�", hidden = true)
+    private Boolean deleted;
+
+    @ApiModelProperty(value = "0 鍚敤 1 绂佺敤")
+    private Integer status;
+
+}
diff --git a/server/src/main/java/com/doumee/dao/system/model/SystemUserRole.java b/server/service/src/main/java/com/doumee/dao/system/model/SystemUserRole.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/system/model/SystemUserRole.java
rename to server/service/src/main/java/com/doumee/dao/system/model/SystemUserRole.java
diff --git a/server/src/main/java/com/doumee/dao/system/vo/CompanyDeclaresVo.java b/server/service/src/main/java/com/doumee/dao/system/vo/CompanyDeclaresVo.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/system/vo/CompanyDeclaresVo.java
rename to server/service/src/main/java/com/doumee/dao/system/vo/CompanyDeclaresVo.java
diff --git a/server/src/main/java/com/doumee/dao/system/vo/CompanyEconomicsVo.java b/server/service/src/main/java/com/doumee/dao/system/vo/CompanyEconomicsVo.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/system/vo/CompanyEconomicsVo.java
rename to server/service/src/main/java/com/doumee/dao/system/vo/CompanyEconomicsVo.java
diff --git a/server/src/main/java/com/doumee/dao/system/vo/ServiceCompany.java b/server/service/src/main/java/com/doumee/dao/system/vo/ServiceCompany.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/system/vo/ServiceCompany.java
rename to server/service/src/main/java/com/doumee/dao/system/vo/ServiceCompany.java
diff --git a/server/src/main/java/com/doumee/dao/system/vo/SystemDataPermissionListVO.java b/server/service/src/main/java/com/doumee/dao/system/vo/SystemDataPermissionListVO.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/system/vo/SystemDataPermissionListVO.java
rename to server/service/src/main/java/com/doumee/dao/system/vo/SystemDataPermissionListVO.java
diff --git a/server/src/main/java/com/doumee/dao/system/vo/SystemDepartmentListVO.java b/server/service/src/main/java/com/doumee/dao/system/vo/SystemDepartmentListVO.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/system/vo/SystemDepartmentListVO.java
rename to server/service/src/main/java/com/doumee/dao/system/vo/SystemDepartmentListVO.java
diff --git a/server/src/main/java/com/doumee/dao/system/vo/SystemDictDataListVO.java b/server/service/src/main/java/com/doumee/dao/system/vo/SystemDictDataListVO.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/system/vo/SystemDictDataListVO.java
rename to server/service/src/main/java/com/doumee/dao/system/vo/SystemDictDataListVO.java
diff --git a/server/src/main/java/com/doumee/dao/system/vo/SystemDictListVO.java b/server/service/src/main/java/com/doumee/dao/system/vo/SystemDictListVO.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/system/vo/SystemDictListVO.java
rename to server/service/src/main/java/com/doumee/dao/system/vo/SystemDictListVO.java
diff --git a/server/src/main/java/com/doumee/dao/system/vo/SystemMenuListVO.java b/server/service/src/main/java/com/doumee/dao/system/vo/SystemMenuListVO.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/system/vo/SystemMenuListVO.java
rename to server/service/src/main/java/com/doumee/dao/system/vo/SystemMenuListVO.java
diff --git a/server/src/main/java/com/doumee/dao/system/vo/SystemMenuNodeVO.java b/server/service/src/main/java/com/doumee/dao/system/vo/SystemMenuNodeVO.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/system/vo/SystemMenuNodeVO.java
rename to server/service/src/main/java/com/doumee/dao/system/vo/SystemMenuNodeVO.java
diff --git a/server/src/main/java/com/doumee/dao/system/vo/SystemPermissionListVO.java b/server/service/src/main/java/com/doumee/dao/system/vo/SystemPermissionListVO.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/system/vo/SystemPermissionListVO.java
rename to server/service/src/main/java/com/doumee/dao/system/vo/SystemPermissionListVO.java
diff --git a/server/src/main/java/com/doumee/dao/system/vo/SystemPositionListVO.java b/server/service/src/main/java/com/doumee/dao/system/vo/SystemPositionListVO.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/system/vo/SystemPositionListVO.java
rename to server/service/src/main/java/com/doumee/dao/system/vo/SystemPositionListVO.java
diff --git a/server/src/main/java/com/doumee/dao/system/vo/SystemRoleListVO.java b/server/service/src/main/java/com/doumee/dao/system/vo/SystemRoleListVO.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/system/vo/SystemRoleListVO.java
rename to server/service/src/main/java/com/doumee/dao/system/vo/SystemRoleListVO.java
diff --git a/server/src/main/java/com/doumee/dao/system/vo/SystemUserDetailVO.java b/server/service/src/main/java/com/doumee/dao/system/vo/SystemUserDetailVO.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/system/vo/SystemUserDetailVO.java
rename to server/service/src/main/java/com/doumee/dao/system/vo/SystemUserDetailVO.java
diff --git a/server/src/main/java/com/doumee/dao/system/vo/SystemUserListVO.java b/server/service/src/main/java/com/doumee/dao/system/vo/SystemUserListVO.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/system/vo/SystemUserListVO.java
rename to server/service/src/main/java/com/doumee/dao/system/vo/SystemUserListVO.java
diff --git a/server/src/main/java/com/doumee/service/aware/DepartmentDataPermissionAware.java b/server/service/src/main/java/com/doumee/service/aware/DepartmentDataPermissionAware.java
similarity index 100%
rename from server/src/main/java/com/doumee/service/aware/DepartmentDataPermissionAware.java
rename to server/service/src/main/java/com/doumee/service/aware/DepartmentDataPermissionAware.java
diff --git a/server/src/main/java/com/doumee/service/aware/PositionDataPermissionAware.java b/server/service/src/main/java/com/doumee/service/aware/PositionDataPermissionAware.java
similarity index 100%
rename from server/src/main/java/com/doumee/service/aware/PositionDataPermissionAware.java
rename to server/service/src/main/java/com/doumee/service/aware/PositionDataPermissionAware.java
diff --git a/server/src/main/java/com/doumee/service/business/BrandService.java b/server/service/src/main/java/com/doumee/service/business/BrandService.java
similarity index 100%
rename from server/src/main/java/com/doumee/service/business/BrandService.java
rename to server/service/src/main/java/com/doumee/service/business/BrandService.java
diff --git a/server/src/main/java/com/doumee/service/business/CateAttrService.java b/server/service/src/main/java/com/doumee/service/business/CateAttrService.java
similarity index 100%
rename from server/src/main/java/com/doumee/service/business/CateAttrService.java
rename to server/service/src/main/java/com/doumee/service/business/CateAttrService.java
diff --git a/server/src/main/java/com/doumee/service/business/CateBudgetService.java b/server/service/src/main/java/com/doumee/service/business/CateBudgetService.java
similarity index 100%
rename from server/src/main/java/com/doumee/service/business/CateBudgetService.java
rename to server/service/src/main/java/com/doumee/service/business/CateBudgetService.java
diff --git a/server/src/main/java/com/doumee/service/business/CateParamService.java b/server/service/src/main/java/com/doumee/service/business/CateParamService.java
similarity index 100%
rename from server/src/main/java/com/doumee/service/business/CateParamService.java
rename to server/service/src/main/java/com/doumee/service/business/CateParamService.java
diff --git a/server/src/main/java/com/doumee/service/business/CategoryService.java b/server/service/src/main/java/com/doumee/service/business/CategoryService.java
similarity index 100%
rename from server/src/main/java/com/doumee/service/business/CategoryService.java
rename to server/service/src/main/java/com/doumee/service/business/CategoryService.java
diff --git a/server/src/main/java/com/doumee/service/business/GoodsParamService.java b/server/service/src/main/java/com/doumee/service/business/GoodsParamService.java
similarity index 100%
rename from server/src/main/java/com/doumee/service/business/GoodsParamService.java
rename to server/service/src/main/java/com/doumee/service/business/GoodsParamService.java
diff --git a/server/src/main/java/com/doumee/service/business/GoodsService.java b/server/service/src/main/java/com/doumee/service/business/GoodsService.java
similarity index 100%
rename from server/src/main/java/com/doumee/service/business/GoodsService.java
rename to server/service/src/main/java/com/doumee/service/business/GoodsService.java
diff --git a/server/src/main/java/com/doumee/service/business/MultifileService.java b/server/service/src/main/java/com/doumee/service/business/MultifileService.java
similarity index 100%
rename from server/src/main/java/com/doumee/service/business/MultifileService.java
rename to server/service/src/main/java/com/doumee/service/business/MultifileService.java
diff --git a/server/src/main/java/com/doumee/service/business/impl/BrandServiceImpl.java b/server/service/src/main/java/com/doumee/service/business/impl/BrandServiceImpl.java
similarity index 100%
rename from server/src/main/java/com/doumee/service/business/impl/BrandServiceImpl.java
rename to server/service/src/main/java/com/doumee/service/business/impl/BrandServiceImpl.java
diff --git a/server/src/main/java/com/doumee/service/business/impl/CateAttrServiceImpl.java b/server/service/src/main/java/com/doumee/service/business/impl/CateAttrServiceImpl.java
similarity index 100%
rename from server/src/main/java/com/doumee/service/business/impl/CateAttrServiceImpl.java
rename to server/service/src/main/java/com/doumee/service/business/impl/CateAttrServiceImpl.java
diff --git a/server/src/main/java/com/doumee/service/business/impl/CateBudgetServiceImpl.java b/server/service/src/main/java/com/doumee/service/business/impl/CateBudgetServiceImpl.java
similarity index 100%
rename from server/src/main/java/com/doumee/service/business/impl/CateBudgetServiceImpl.java
rename to server/service/src/main/java/com/doumee/service/business/impl/CateBudgetServiceImpl.java
diff --git a/server/src/main/java/com/doumee/service/business/impl/CateParamServiceImpl.java b/server/service/src/main/java/com/doumee/service/business/impl/CateParamServiceImpl.java
similarity index 100%
rename from server/src/main/java/com/doumee/service/business/impl/CateParamServiceImpl.java
rename to server/service/src/main/java/com/doumee/service/business/impl/CateParamServiceImpl.java
diff --git a/server/src/main/java/com/doumee/service/business/impl/CategoryServiceImpl.java b/server/service/src/main/java/com/doumee/service/business/impl/CategoryServiceImpl.java
similarity index 100%
rename from server/src/main/java/com/doumee/service/business/impl/CategoryServiceImpl.java
rename to server/service/src/main/java/com/doumee/service/business/impl/CategoryServiceImpl.java
diff --git a/server/src/main/java/com/doumee/service/business/impl/GoodsParamServiceImpl.java b/server/service/src/main/java/com/doumee/service/business/impl/GoodsParamServiceImpl.java
similarity index 100%
rename from server/src/main/java/com/doumee/service/business/impl/GoodsParamServiceImpl.java
rename to server/service/src/main/java/com/doumee/service/business/impl/GoodsParamServiceImpl.java
diff --git a/server/src/main/java/com/doumee/service/business/impl/GoodsServiceImpl.java b/server/service/src/main/java/com/doumee/service/business/impl/GoodsServiceImpl.java
similarity index 100%
rename from server/src/main/java/com/doumee/service/business/impl/GoodsServiceImpl.java
rename to server/service/src/main/java/com/doumee/service/business/impl/GoodsServiceImpl.java
diff --git a/server/src/main/java/com/doumee/service/business/impl/MultifileServiceImpl.java b/server/service/src/main/java/com/doumee/service/business/impl/MultifileServiceImpl.java
similarity index 100%
rename from server/src/main/java/com/doumee/service/business/impl/MultifileServiceImpl.java
rename to server/service/src/main/java/com/doumee/service/business/impl/MultifileServiceImpl.java
diff --git a/server/src/main/java/com/doumee/service/common/CaptchaService.java b/server/service/src/main/java/com/doumee/service/common/CaptchaService.java
similarity index 100%
rename from server/src/main/java/com/doumee/service/common/CaptchaService.java
rename to server/service/src/main/java/com/doumee/service/common/CaptchaService.java
diff --git a/server/src/main/java/com/doumee/service/proxy/CacheProxy.java b/server/service/src/main/java/com/doumee/service/proxy/CacheProxy.java
similarity index 100%
rename from server/src/main/java/com/doumee/service/proxy/CacheProxy.java
rename to server/service/src/main/java/com/doumee/service/proxy/CacheProxy.java
diff --git a/server/src/main/java/com/doumee/service/system/SystemDataPermissionService.java b/server/service/src/main/java/com/doumee/service/system/SystemDataPermissionService.java
similarity index 100%
rename from server/src/main/java/com/doumee/service/system/SystemDataPermissionService.java
rename to server/service/src/main/java/com/doumee/service/system/SystemDataPermissionService.java
diff --git a/server/src/main/java/com/doumee/service/system/SystemDepartmentService.java b/server/service/src/main/java/com/doumee/service/system/SystemDepartmentService.java
similarity index 100%
rename from server/src/main/java/com/doumee/service/system/SystemDepartmentService.java
rename to server/service/src/main/java/com/doumee/service/system/SystemDepartmentService.java
diff --git a/server/src/main/java/com/doumee/service/system/SystemDepartmentUserService.java b/server/service/src/main/java/com/doumee/service/system/SystemDepartmentUserService.java
similarity index 100%
rename from server/src/main/java/com/doumee/service/system/SystemDepartmentUserService.java
rename to server/service/src/main/java/com/doumee/service/system/SystemDepartmentUserService.java
diff --git a/server/src/main/java/com/doumee/service/system/SystemDictDataService.java b/server/service/src/main/java/com/doumee/service/system/SystemDictDataService.java
similarity index 100%
rename from server/src/main/java/com/doumee/service/system/SystemDictDataService.java
rename to server/service/src/main/java/com/doumee/service/system/SystemDictDataService.java
diff --git a/server/src/main/java/com/doumee/service/system/SystemDictService.java b/server/service/src/main/java/com/doumee/service/system/SystemDictService.java
similarity index 100%
rename from server/src/main/java/com/doumee/service/system/SystemDictService.java
rename to server/service/src/main/java/com/doumee/service/system/SystemDictService.java
diff --git a/server/src/main/java/com/doumee/service/system/SystemLoginLogService.java b/server/service/src/main/java/com/doumee/service/system/SystemLoginLogService.java
similarity index 100%
rename from server/src/main/java/com/doumee/service/system/SystemLoginLogService.java
rename to server/service/src/main/java/com/doumee/service/system/SystemLoginLogService.java
diff --git a/server/src/main/java/com/doumee/service/system/SystemLoginService.java b/server/service/src/main/java/com/doumee/service/system/SystemLoginService.java
similarity index 100%
rename from server/src/main/java/com/doumee/service/system/SystemLoginService.java
rename to server/service/src/main/java/com/doumee/service/system/SystemLoginService.java
diff --git a/server/src/main/java/com/doumee/service/system/SystemMenuService.java b/server/service/src/main/java/com/doumee/service/system/SystemMenuService.java
similarity index 100%
rename from server/src/main/java/com/doumee/service/system/SystemMenuService.java
rename to server/service/src/main/java/com/doumee/service/system/SystemMenuService.java
diff --git a/server/src/main/java/com/doumee/service/system/SystemPermissionService.java b/server/service/src/main/java/com/doumee/service/system/SystemPermissionService.java
similarity index 100%
rename from server/src/main/java/com/doumee/service/system/SystemPermissionService.java
rename to server/service/src/main/java/com/doumee/service/system/SystemPermissionService.java
diff --git a/server/src/main/java/com/doumee/service/system/SystemPositionService.java b/server/service/src/main/java/com/doumee/service/system/SystemPositionService.java
similarity index 100%
rename from server/src/main/java/com/doumee/service/system/SystemPositionService.java
rename to server/service/src/main/java/com/doumee/service/system/SystemPositionService.java
diff --git a/server/src/main/java/com/doumee/service/system/SystemPositionUserService.java b/server/service/src/main/java/com/doumee/service/system/SystemPositionUserService.java
similarity index 100%
rename from server/src/main/java/com/doumee/service/system/SystemPositionUserService.java
rename to server/service/src/main/java/com/doumee/service/system/SystemPositionUserService.java
diff --git a/server/src/main/java/com/doumee/service/system/SystemRoleMenuService.java b/server/service/src/main/java/com/doumee/service/system/SystemRoleMenuService.java
similarity index 100%
rename from server/src/main/java/com/doumee/service/system/SystemRoleMenuService.java
rename to server/service/src/main/java/com/doumee/service/system/SystemRoleMenuService.java
diff --git a/server/src/main/java/com/doumee/service/system/SystemRolePermissionService.java b/server/service/src/main/java/com/doumee/service/system/SystemRolePermissionService.java
similarity index 100%
rename from server/src/main/java/com/doumee/service/system/SystemRolePermissionService.java
rename to server/service/src/main/java/com/doumee/service/system/SystemRolePermissionService.java
diff --git a/server/src/main/java/com/doumee/service/system/SystemRoleService.java b/server/service/src/main/java/com/doumee/service/system/SystemRoleService.java
similarity index 100%
rename from server/src/main/java/com/doumee/service/system/SystemRoleService.java
rename to server/service/src/main/java/com/doumee/service/system/SystemRoleService.java
diff --git a/server/src/main/java/com/doumee/service/system/SystemTraceLogService.java b/server/service/src/main/java/com/doumee/service/system/SystemTraceLogService.java
similarity index 100%
rename from server/src/main/java/com/doumee/service/system/SystemTraceLogService.java
rename to server/service/src/main/java/com/doumee/service/system/SystemTraceLogService.java
diff --git a/server/src/main/java/com/doumee/service/system/SystemUserRoleService.java b/server/service/src/main/java/com/doumee/service/system/SystemUserRoleService.java
similarity index 100%
rename from server/src/main/java/com/doumee/service/system/SystemUserRoleService.java
rename to server/service/src/main/java/com/doumee/service/system/SystemUserRoleService.java
diff --git a/server/src/main/java/com/doumee/service/system/SystemUserService.java b/server/service/src/main/java/com/doumee/service/system/SystemUserService.java
similarity index 100%
rename from server/src/main/java/com/doumee/service/system/SystemUserService.java
rename to server/service/src/main/java/com/doumee/service/system/SystemUserService.java
diff --git a/server/src/main/java/com/doumee/service/system/impl/SystemDataPermissionServiceImpl.java b/server/service/src/main/java/com/doumee/service/system/impl/SystemDataPermissionServiceImpl.java
similarity index 100%
rename from server/src/main/java/com/doumee/service/system/impl/SystemDataPermissionServiceImpl.java
rename to server/service/src/main/java/com/doumee/service/system/impl/SystemDataPermissionServiceImpl.java
diff --git a/server/src/main/java/com/doumee/service/system/impl/SystemDepartmentServiceImpl.java b/server/service/src/main/java/com/doumee/service/system/impl/SystemDepartmentServiceImpl.java
similarity index 100%
rename from server/src/main/java/com/doumee/service/system/impl/SystemDepartmentServiceImpl.java
rename to server/service/src/main/java/com/doumee/service/system/impl/SystemDepartmentServiceImpl.java
diff --git a/server/src/main/java/com/doumee/service/system/impl/SystemDepartmentUserServiceImpl.java b/server/service/src/main/java/com/doumee/service/system/impl/SystemDepartmentUserServiceImpl.java
similarity index 100%
rename from server/src/main/java/com/doumee/service/system/impl/SystemDepartmentUserServiceImpl.java
rename to server/service/src/main/java/com/doumee/service/system/impl/SystemDepartmentUserServiceImpl.java
diff --git a/server/src/main/java/com/doumee/service/system/impl/SystemDictDataServiceImpl.java b/server/service/src/main/java/com/doumee/service/system/impl/SystemDictDataServiceImpl.java
similarity index 100%
rename from server/src/main/java/com/doumee/service/system/impl/SystemDictDataServiceImpl.java
rename to server/service/src/main/java/com/doumee/service/system/impl/SystemDictDataServiceImpl.java
diff --git a/server/src/main/java/com/doumee/service/system/impl/SystemDictServiceImpl.java b/server/service/src/main/java/com/doumee/service/system/impl/SystemDictServiceImpl.java
similarity index 100%
rename from server/src/main/java/com/doumee/service/system/impl/SystemDictServiceImpl.java
rename to server/service/src/main/java/com/doumee/service/system/impl/SystemDictServiceImpl.java
diff --git a/server/src/main/java/com/doumee/service/system/impl/SystemLoginLogServiceImpl.java b/server/service/src/main/java/com/doumee/service/system/impl/SystemLoginLogServiceImpl.java
similarity index 100%
rename from server/src/main/java/com/doumee/service/system/impl/SystemLoginLogServiceImpl.java
rename to server/service/src/main/java/com/doumee/service/system/impl/SystemLoginLogServiceImpl.java
diff --git a/server/src/main/java/com/doumee/service/system/impl/SystemLoginServiceImpl.java b/server/service/src/main/java/com/doumee/service/system/impl/SystemLoginServiceImpl.java
similarity index 100%
rename from server/src/main/java/com/doumee/service/system/impl/SystemLoginServiceImpl.java
rename to server/service/src/main/java/com/doumee/service/system/impl/SystemLoginServiceImpl.java
diff --git a/server/src/main/java/com/doumee/service/system/impl/SystemMenuServiceImpl.java b/server/service/src/main/java/com/doumee/service/system/impl/SystemMenuServiceImpl.java
similarity index 100%
rename from server/src/main/java/com/doumee/service/system/impl/SystemMenuServiceImpl.java
rename to server/service/src/main/java/com/doumee/service/system/impl/SystemMenuServiceImpl.java
diff --git a/server/src/main/java/com/doumee/service/system/impl/SystemPermissionServiceImpl.java b/server/service/src/main/java/com/doumee/service/system/impl/SystemPermissionServiceImpl.java
similarity index 100%
rename from server/src/main/java/com/doumee/service/system/impl/SystemPermissionServiceImpl.java
rename to server/service/src/main/java/com/doumee/service/system/impl/SystemPermissionServiceImpl.java
diff --git a/server/src/main/java/com/doumee/service/system/impl/SystemPositionServiceImpl.java b/server/service/src/main/java/com/doumee/service/system/impl/SystemPositionServiceImpl.java
similarity index 100%
rename from server/src/main/java/com/doumee/service/system/impl/SystemPositionServiceImpl.java
rename to server/service/src/main/java/com/doumee/service/system/impl/SystemPositionServiceImpl.java
diff --git a/server/src/main/java/com/doumee/service/system/impl/SystemPositionUserServiceImpl.java b/server/service/src/main/java/com/doumee/service/system/impl/SystemPositionUserServiceImpl.java
similarity index 100%
rename from server/src/main/java/com/doumee/service/system/impl/SystemPositionUserServiceImpl.java
rename to server/service/src/main/java/com/doumee/service/system/impl/SystemPositionUserServiceImpl.java
diff --git a/server/src/main/java/com/doumee/service/system/impl/SystemRoleMenuServiceImpl.java b/server/service/src/main/java/com/doumee/service/system/impl/SystemRoleMenuServiceImpl.java
similarity index 100%
rename from server/src/main/java/com/doumee/service/system/impl/SystemRoleMenuServiceImpl.java
rename to server/service/src/main/java/com/doumee/service/system/impl/SystemRoleMenuServiceImpl.java
diff --git a/server/src/main/java/com/doumee/service/system/impl/SystemRolePermissionServiceImpl.java b/server/service/src/main/java/com/doumee/service/system/impl/SystemRolePermissionServiceImpl.java
similarity index 100%
rename from server/src/main/java/com/doumee/service/system/impl/SystemRolePermissionServiceImpl.java
rename to server/service/src/main/java/com/doumee/service/system/impl/SystemRolePermissionServiceImpl.java
diff --git a/server/src/main/java/com/doumee/service/system/impl/SystemRoleServiceImpl.java b/server/service/src/main/java/com/doumee/service/system/impl/SystemRoleServiceImpl.java
similarity index 100%
rename from server/src/main/java/com/doumee/service/system/impl/SystemRoleServiceImpl.java
rename to server/service/src/main/java/com/doumee/service/system/impl/SystemRoleServiceImpl.java
diff --git a/server/src/main/java/com/doumee/service/system/impl/SystemTraceLogServiceImpl.java b/server/service/src/main/java/com/doumee/service/system/impl/SystemTraceLogServiceImpl.java
similarity index 100%
rename from server/src/main/java/com/doumee/service/system/impl/SystemTraceLogServiceImpl.java
rename to server/service/src/main/java/com/doumee/service/system/impl/SystemTraceLogServiceImpl.java
diff --git a/server/src/main/java/com/doumee/service/system/impl/SystemUserRoleServiceImpl.java b/server/service/src/main/java/com/doumee/service/system/impl/SystemUserRoleServiceImpl.java
similarity index 100%
rename from server/src/main/java/com/doumee/service/system/impl/SystemUserRoleServiceImpl.java
rename to server/service/src/main/java/com/doumee/service/system/impl/SystemUserRoleServiceImpl.java
diff --git a/server/src/main/java/com/doumee/service/system/impl/SystemUserServiceImpl.java b/server/service/src/main/java/com/doumee/service/system/impl/SystemUserServiceImpl.java
similarity index 100%
rename from server/src/main/java/com/doumee/service/system/impl/SystemUserServiceImpl.java
rename to server/service/src/main/java/com/doumee/service/system/impl/SystemUserServiceImpl.java
diff --git a/server/service/src/main/resources/application-dev.yml b/server/service/src/main/resources/application-dev.yml
new file mode 100644
index 0000000..1571004
--- /dev/null
+++ b/server/service/src/main/resources/application-dev.yml
@@ -0,0 +1,54 @@
+# WEB鏈嶅姟鍣ㄩ厤缃�
+server:
+  compression:
+    enabled: true
+    mime-types: application/json
+
+  tomcat:
+    max-swallow-size: -1
+  servlet:
+    session:
+      timeout: PT3H  #琛ㄧず12灏忔椂
+
+spring:
+  # 鏁版嵁婧愰厤缃�
+  datasource:
+    url: jdbc:mysql://57b57595ddc66.sh.cdb.myqcloud.com:4464/pre_select_saas?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=GMT%2B8
+    username: test
+    password: doumee@168
+    driver-class-name: com.mysql.cj.jdbc.Driver
+    type: com.alibaba.druid.pool.DruidDataSource
+
+  redis:
+    #    database: 0
+    host: 127.0.0.1
+    port: 6379
+    password:
+    timeout: 5000      # 杩炴帴姹犱腑鐨勬渶灏忕┖闂茶繛鎺�
+
+  jackson:
+    time-zone: GMT+8
+    date-format: yyyy-MM-dd HH:mm:ss
+
+knife4j:
+  enable: true
+  basic:
+    enable: true
+    username: admin
+    password: 111111
+
+debug_model: true
+
+captcha_check: false
+
+# Swagger閰嶇疆
+swagger:
+  host:
+  title: ${project.name}鎺ュ彛鏂囨。
+  description: ${project.name}鎺ュ彛鏂囨。
+  enabled: true
+  # 绂佺敤swagger鏃剁殑閲嶅畾鍚戝湴鍧�
+  redirect-uri: /
+
+project:
+  imgAuthen: false
\ No newline at end of file
diff --git a/server/service/src/main/resources/application-pro.yml b/server/service/src/main/resources/application-pro.yml
new file mode 100644
index 0000000..4aa2fcd
--- /dev/null
+++ b/server/service/src/main/resources/application-pro.yml
@@ -0,0 +1,55 @@
+# WEB鏈嶅姟鍣ㄩ厤缃�
+server:
+  compression:
+    enabled: true
+    mime-types: application/json
+
+  tomcat:
+    max-swallow-size: -1
+  servlet:
+    session:
+      timeout: PT3H  #琛ㄧず12灏忔椂
+
+spring:
+  # 鏁版嵁婧愰厤缃�
+  datasource:
+    url: jdbc:mysql://57b57595ddc66.sh.cdb.myqcloud.com:4464/pre_select_saas_pro?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=GMT%2B8
+    username: test
+    password: doumee@168
+    driver-class-name: com.mysql.cj.jdbc.Driver
+    type: com.alibaba.druid.pool.DruidDataSource
+
+  redis:
+    #    database: 0
+    host: 127.0.0.1
+    port: 6379
+    password:
+    timeout: 5000      # 杩炴帴姹犱腑鐨勬渶灏忕┖闂茶繛鎺�
+
+
+  jackson:
+    time-zone: GMT+8
+    date-format: yyyy-MM-dd HH:mm:ss
+
+knife4j:
+  enable: true
+  basic:
+    enable: true
+    username: admin
+    password: 111111
+
+debug_model: true
+
+captcha_check: true
+
+# Swagger閰嶇疆
+swagger:
+  host:
+  title: ${project.name}鎺ュ彛鏂囨。
+  description: ${project.name}鎺ュ彛鏂囨。
+  enabled: true
+  # 绂佺敤swagger鏃剁殑閲嶅畾鍚戝湴鍧�
+  redirect-uri: /
+
+project:
+  imgAuthen: false
\ No newline at end of file
diff --git a/server/service/src/main/resources/application-test.yml b/server/service/src/main/resources/application-test.yml
new file mode 100644
index 0000000..cf41b3f
--- /dev/null
+++ b/server/service/src/main/resources/application-test.yml
@@ -0,0 +1,41 @@
+# WEB鏈嶅姟鍣ㄩ厤缃�
+server:
+  compression:
+    enabled: true
+    mime-types: application/json
+
+  servlet:
+    session:
+      timeout: PT3H  #琛ㄧず12灏忔椂
+
+spring:
+  # 鏁版嵁婧愰厤缃�
+  datasource:
+    url: jdbc:mysql://57b57595ddc66.sh.cdb.myqcloud.com:4464/intelligent_manufacture?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=GMT%2B8
+    username: test
+    password: doumee@168
+    driver-class-name: com.mysql.cj.jdbc.Driver
+    type: com.alibaba.druid.pool.DruidDataSource
+
+knife4j:
+  enable: true
+  basic:
+    enable: true
+    username: admin
+    password: test@168.com
+
+debug_model: true
+
+captcha_check: false
+
+# Swagger閰嶇疆
+swagger:
+  host:
+  title: ${project.name}鎺ュ彛鏂囨。
+  description: ${project.name}鎺ュ彛鏂囨。
+  enabled: true
+  # 绂佺敤swagger鏃剁殑閲嶅畾鍚戝湴鍧�
+  redirect-uri: /
+
+project:
+  imgAuthenti: false
\ No newline at end of file
diff --git a/server/src/main/resources/banner.txt b/server/service/src/main/resources/banner.txt
similarity index 100%
rename from server/src/main/resources/banner.txt
rename to server/service/src/main/resources/banner.txt
diff --git a/server/src/main/resources/logback-spring.xml b/server/service/src/main/resources/logback-spring.xml
similarity index 100%
rename from server/src/main/resources/logback-spring.xml
rename to server/service/src/main/resources/logback-spring.xml
diff --git a/server/src/main/resources/mappers/SystemDataPermissionMapper.xml b/server/service/src/main/resources/mappers/SystemDataPermissionMapper.xml
similarity index 100%
rename from server/src/main/resources/mappers/SystemDataPermissionMapper.xml
rename to server/service/src/main/resources/mappers/SystemDataPermissionMapper.xml
diff --git a/server/src/main/resources/mappers/SystemDepartmentMapper.xml b/server/service/src/main/resources/mappers/SystemDepartmentMapper.xml
similarity index 100%
rename from server/src/main/resources/mappers/SystemDepartmentMapper.xml
rename to server/service/src/main/resources/mappers/SystemDepartmentMapper.xml
diff --git a/server/src/main/resources/mappers/SystemDictDataMapper.xml b/server/service/src/main/resources/mappers/SystemDictDataMapper.xml
similarity index 100%
rename from server/src/main/resources/mappers/SystemDictDataMapper.xml
rename to server/service/src/main/resources/mappers/SystemDictDataMapper.xml
diff --git a/server/src/main/resources/mappers/SystemDictMapper.xml b/server/service/src/main/resources/mappers/SystemDictMapper.xml
similarity index 100%
rename from server/src/main/resources/mappers/SystemDictMapper.xml
rename to server/service/src/main/resources/mappers/SystemDictMapper.xml
diff --git a/server/src/main/resources/mappers/SystemMenuMapper.xml b/server/service/src/main/resources/mappers/SystemMenuMapper.xml
similarity index 100%
rename from server/src/main/resources/mappers/SystemMenuMapper.xml
rename to server/service/src/main/resources/mappers/SystemMenuMapper.xml
diff --git a/server/src/main/resources/mappers/SystemPermissionMapper.xml b/server/service/src/main/resources/mappers/SystemPermissionMapper.xml
similarity index 100%
rename from server/src/main/resources/mappers/SystemPermissionMapper.xml
rename to server/service/src/main/resources/mappers/SystemPermissionMapper.xml
diff --git a/server/src/main/resources/mappers/SystemPositionMapper.xml b/server/service/src/main/resources/mappers/SystemPositionMapper.xml
similarity index 100%
rename from server/src/main/resources/mappers/SystemPositionMapper.xml
rename to server/service/src/main/resources/mappers/SystemPositionMapper.xml
diff --git a/server/src/main/resources/mappers/SystemRoleMapper.xml b/server/service/src/main/resources/mappers/SystemRoleMapper.xml
similarity index 100%
rename from server/src/main/resources/mappers/SystemRoleMapper.xml
rename to server/service/src/main/resources/mappers/SystemRoleMapper.xml
diff --git a/server/src/main/resources/mappers/SystemUserMapper.xml b/server/service/src/main/resources/mappers/SystemUserMapper.xml
similarity index 100%
rename from server/src/main/resources/mappers/SystemUserMapper.xml
rename to server/service/src/main/resources/mappers/SystemUserMapper.xml
diff --git a/server/src/main/resources/static/file/goodsExcelTemp.xlsx b/server/service/src/main/resources/static/file/goodsExcelTemp.xlsx
similarity index 100%
rename from server/src/main/resources/static/file/goodsExcelTemp.xlsx
rename to server/service/src/main/resources/static/file/goodsExcelTemp.xlsx
Binary files differ
diff --git a/server/src/main/java/com/doumee/Application.java b/server/src/main/java/com/doumee/Application.java
deleted file mode 100644
index 3dac562..0000000
--- a/server/src/main/java/com/doumee/Application.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package com.doumee;
-
-import lombok.extern.slf4j.Slf4j;
-import org.mybatis.spring.annotation.MapperScan;
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.context.ApplicationContext;
-
-/**
- * 鍚姩绫�
- * @author Eva.Caesar Liu
- * @date 2023/02/14 11:14
- */
-@Slf4j
-@SpringBootApplication
-@MapperScan("com.doumee.dao")
-public class Application {
-
-    public static void main(String[] args) {
-        ApplicationContext context = SpringApplication.run(Application.class);
-        context.getEnvironment();
-    }
-}
diff --git a/server/src/main/java/com/doumee/api/business/BrandController.java b/server/src/main/java/com/doumee/api/business/BrandController.java
deleted file mode 100644
index fb59422..0000000
--- a/server/src/main/java/com/doumee/api/business/BrandController.java
+++ /dev/null
@@ -1,98 +0,0 @@
-package com.doumee.api.business;
-
-import com.doumee.api.BaseController;
-import com.doumee.core.annotation.excel.ExcelExporter;
-import com.doumee.core.annotation.pr.PreventRepeat;
-import com.doumee.core.model.ApiResponse;
-import com.doumee.core.model.PageWrap;
-import com.doumee.core.model.PageData;
-import com.doumee.dao.business.model.Brand;
-import com.doumee.service.business.BrandService;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import org.apache.shiro.authz.annotation.RequiresPermissions;    
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
-import javax.servlet.http.HttpServletResponse;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * @author 姹熻箘韫�
- * @date 2023/05/12 13:58
- */
-@Api(tags = "鍝佺墝淇℃伅琛�")
-@RestController
-@RequestMapping("/business/brand")
-public class BrandController extends BaseController {
-
-    @Autowired
-    private BrandService brandService;
-
-    @PreventRepeat
-    @ApiOperation("鏂板缓")
-    @PostMapping("/create")
-    @RequiresPermissions("business:brand:create")
-    public ApiResponse create(@RequestBody Brand brand) {
-        return ApiResponse.success(brandService.create(brand));
-    }
-
-    @ApiOperation("鏍规嵁ID鍒犻櫎")
-    @GetMapping("/delete/{id}")
-    @RequiresPermissions("business:brand:delete")
-    public ApiResponse deleteById(@PathVariable Integer id) {
-        brandService.deleteById(id);
-        return ApiResponse.success(null);
-    }
-
-    @ApiOperation("鎵归噺鍒犻櫎")
-    @GetMapping("/delete/batch")
-    @RequiresPermissions("business:brand:delete")
-    public ApiResponse deleteByIdInBatch(@RequestParam String ids) {
-        String [] idArray = ids.split(",");
-        List<Integer> idList = new ArrayList<>();
-        for (String id : idArray) {
-            idList.add(Integer.valueOf(id));
-        }
-        brandService.deleteByIdInBatch(idList);
-        return ApiResponse.success(null);
-    }
-
-    @ApiOperation("鏍规嵁ID淇敼")
-    @PostMapping("/updateById")
-    @RequiresPermissions("business:brand:update")
-    public ApiResponse updateById(@RequestBody Brand brand) {
-        brandService.updateById(brand);
-        return ApiResponse.success(null);
-    }
-
-    @ApiOperation("鍒嗛〉鏌ヨ")
-    @PostMapping("/page")
-    @RequiresPermissions("business:brand:query")
-    public ApiResponse<PageData<Brand>> findPage (@RequestBody PageWrap<Brand> pageWrap) {
-        return ApiResponse.success(brandService.findPage(pageWrap));
-    }
-
-    @ApiOperation("瀵煎嚭Excel")
-    @PostMapping("/exportExcel")
-    @RequiresPermissions("business:brand:exportExcel")
-    public void exportExcel (@RequestBody PageWrap<Brand> pageWrap, HttpServletResponse response) {
-        ExcelExporter.build(Brand.class).export(brandService.findPage(pageWrap).getRecords(), "鍝佺墝淇℃伅琛�", response);
-    }
-
-    @ApiOperation("鏍规嵁ID鏌ヨ")
-    @GetMapping("/{id}")
-    @RequiresPermissions("business:brand:query")
-    public ApiResponse findById(@PathVariable Integer id) {
-        return ApiResponse.success(brandService.findById(id));
-    }
-
-    @ApiOperation("鍒楄〃鏌ヨ")
-    @PostMapping("/list")
-    public ApiResponse<List<Brand>> findList (@RequestBody Brand brand) {
-        return ApiResponse.success(brandService.findList(brand));
-    }
-
-
-}
diff --git a/server/src/main/java/com/doumee/api/business/CateAttrController.java b/server/src/main/java/com/doumee/api/business/CateAttrController.java
deleted file mode 100644
index cf297e1..0000000
--- a/server/src/main/java/com/doumee/api/business/CateAttrController.java
+++ /dev/null
@@ -1,101 +0,0 @@
-package com.doumee.api.business;
-
-import com.doumee.api.BaseController;
-import com.doumee.core.annotation.excel.ExcelExporter;
-import com.doumee.core.annotation.pr.PreventRepeat;
-import com.doumee.core.model.ApiResponse;
-import com.doumee.core.model.PageWrap;
-import com.doumee.core.model.PageData;
-import com.doumee.dao.business.model.Brand;
-import com.doumee.dao.business.model.CateAttr;
-import com.doumee.service.business.CateAttrService;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import org.apache.shiro.authz.annotation.RequiresPermissions;    
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
-import javax.servlet.http.HttpServletResponse;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * @author 姹熻箘韫�
- * @date 2023/05/12 13:58
- */
-@Api(tags = "鍝佺被灞炴�ц鏍煎�间俊鎭〃")
-@RestController
-@RequestMapping("/business/cateAttr")
-public class CateAttrController extends BaseController {
-
-    @Autowired
-    private CateAttrService cateAttrService;
-
-    @PreventRepeat
-    @ApiOperation("鏂板缓")
-    @PostMapping("/create")
-    @RequiresPermissions("business:cateattr:create")
-    public ApiResponse create(@RequestBody CateAttr cateAttr) {
-        return ApiResponse.success(cateAttrService.create(cateAttr));
-    }
-
-    @ApiOperation("鏍规嵁ID鍒犻櫎")
-    @GetMapping("/delete/{id}")
-    @RequiresPermissions("business:cateattr:delete")
-    public ApiResponse deleteById(@PathVariable Integer id) {
-        cateAttrService.deleteById(id);
-        return ApiResponse.success(null);
-    }
-
-    @ApiOperation("鎵归噺鍒犻櫎")
-    @GetMapping("/delete/batch")
-    @RequiresPermissions("business:cateattr:delete")
-    public ApiResponse deleteByIdInBatch(@RequestParam String ids) {
-        String [] idArray = ids.split(",");
-        List<Integer> idList = new ArrayList<>();
-        for (String id : idArray) {
-            idList.add(Integer.valueOf(id));
-        }
-        cateAttrService.deleteByIdInBatch(idList);
-        return ApiResponse.success(null);
-    }
-
-    @ApiOperation("鏍规嵁ID淇敼")
-    @PostMapping("/updateById")
-    @RequiresPermissions("business:cateattr:update")
-    public ApiResponse updateById(@RequestBody CateAttr cateAttr) {
-        cateAttrService.updateById(cateAttr);
-        return ApiResponse.success(null);
-    }
-
-    @ApiOperation("鍒嗛〉鏌ヨ")
-    @PostMapping("/page")
-    @RequiresPermissions("business:cateattr:query")
-    public ApiResponse<PageData<CateAttr>> findPage (@RequestBody PageWrap<CateAttr> pageWrap) {
-        return ApiResponse.success(cateAttrService.findPage(pageWrap));
-    }
-
-    @ApiOperation("瀵煎嚭Excel")
-    @PostMapping("/exportExcel")
-    @RequiresPermissions("business:cateattr:exportExcel")
-    public void exportExcel (@RequestBody PageWrap<CateAttr> pageWrap, HttpServletResponse response) {
-        ExcelExporter.build(CateAttr.class).export(cateAttrService.findPage(pageWrap).getRecords(), "鍝佺被灞炴�ц鏍煎�间俊鎭〃", response);
-    }
-
-    @ApiOperation("鏍规嵁ID鏌ヨ")
-    @GetMapping("/{id}")
-    @RequiresPermissions("business:cateattr:query")
-    public ApiResponse findById(@PathVariable Integer id) {
-        return ApiResponse.success(cateAttrService.findById(id));
-    }
-
-
-
-    @ApiOperation("鍒楄〃鏌ヨ")
-    @PostMapping("/list")
-    public ApiResponse<List<CateAttr>> findList (@RequestBody CateAttr cateAttr) {
-        return ApiResponse.success(cateAttrService.findList(cateAttr));
-    }
-
-
-}
diff --git a/server/src/main/java/com/doumee/api/business/CateBudgetController.java b/server/src/main/java/com/doumee/api/business/CateBudgetController.java
deleted file mode 100644
index 49971f6..0000000
--- a/server/src/main/java/com/doumee/api/business/CateBudgetController.java
+++ /dev/null
@@ -1,70 +0,0 @@
-package com.doumee.api.business;
-
-import com.doumee.api.BaseController;
-import com.doumee.core.annotation.excel.ExcelExporter;
-import com.doumee.core.annotation.pr.PreventRepeat;
-import com.doumee.core.model.ApiResponse;
-import com.doumee.core.model.PageWrap;
-import com.doumee.core.model.PageData;
-import com.doumee.dao.business.model.CateBudget;
-import com.doumee.service.business.CateBudgetService;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import org.apache.shiro.authz.annotation.RequiresPermissions;    
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
-import javax.servlet.http.HttpServletResponse;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * @author 姹熻箘韫�
- * @since 2023/05/15 17:09
- */
-@Api(tags = "鍝佺被浠锋牸鍖洪棿琛�")
-@RestController
-@RequestMapping("/business/cateBudget")
-public class CateBudgetController extends BaseController {
-
-    @Autowired
-    private CateBudgetService cateBudgetService;
-
-    @PreventRepeat
-    @ApiOperation("鏂板缓")
-    @PostMapping("/create")
-    @RequiresPermissions("business:catebudget:create")
-    public ApiResponse create(@RequestBody CateBudget cateBudget) {
-        return ApiResponse.success(cateBudgetService.create(cateBudget));
-    }
-
-    @ApiOperation("鏍规嵁ID鍒犻櫎")
-    @GetMapping("/delete/{id}")
-    @RequiresPermissions("business:catebudget:delete")
-    public ApiResponse deleteById(@PathVariable Integer id) {
-        cateBudgetService.deleteById(id);
-        return ApiResponse.success(null);
-    }
-    @ApiOperation("鏍规嵁ID淇敼")
-    @PostMapping("/updateById")
-    @RequiresPermissions("business:catebudget:update")
-    public ApiResponse updateById(@RequestBody CateBudget cateBudget) {
-        cateBudgetService.updateById(cateBudget);
-        return ApiResponse.success(null);
-    }
-
-    @ApiOperation("鍒嗛〉鏌ヨ")
-    @PostMapping("/page")
-    @RequiresPermissions("business:catebudget:query")
-    public ApiResponse<PageData<CateBudget>> findPage (@RequestBody PageWrap<CateBudget> pageWrap) {
-        return ApiResponse.success(cateBudgetService.findPage(pageWrap));
-    }
-
-
-    @ApiOperation("鏍规嵁ID鏌ヨ")
-    @GetMapping("/{id}")
-    @RequiresPermissions("business:catebudget:query")
-    public ApiResponse findById(@PathVariable Integer id) {
-        return ApiResponse.success(cateBudgetService.findById(id));
-    }
-}
diff --git a/server/src/main/java/com/doumee/api/business/CateParamController.java b/server/src/main/java/com/doumee/api/business/CateParamController.java
deleted file mode 100644
index a611b01..0000000
--- a/server/src/main/java/com/doumee/api/business/CateParamController.java
+++ /dev/null
@@ -1,90 +0,0 @@
-package com.doumee.api.business;
-
-import com.doumee.api.BaseController;
-import com.doumee.core.annotation.excel.ExcelExporter;
-import com.doumee.core.annotation.pr.PreventRepeat;
-import com.doumee.core.model.ApiResponse;
-import com.doumee.core.model.PageWrap;
-import com.doumee.core.model.PageData;
-import com.doumee.dao.business.model.CateParam;
-import com.doumee.service.business.CateParamService;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import org.apache.shiro.authz.annotation.RequiresPermissions;    
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
-import javax.servlet.http.HttpServletResponse;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * @author 姹熻箘韫�
- * @date 2023/05/12 13:58
- */
-@Api(tags = "鍝佺被鍙傛暟淇℃伅琛�")
-@RestController
-@RequestMapping("/business/cateParam")
-public class CateParamController extends BaseController {
-
-    @Autowired
-    private CateParamService cateParamService;
-
-    @PreventRepeat
-    @ApiOperation("鏂板缓")
-    @PostMapping("/create")
-    @RequiresPermissions("business:cateparam:create")
-    public ApiResponse create(@RequestBody CateParam cateParam) {
-        return ApiResponse.success(cateParamService.create(cateParam));
-    }
-
-    @ApiOperation("鏍规嵁ID鍒犻櫎")
-    @GetMapping("/delete/{id}")
-    @RequiresPermissions("business:cateparam:delete")
-    public ApiResponse deleteById(@PathVariable Integer id) {
-        cateParamService.deleteById(id);
-        return ApiResponse.success(null);
-    }
-
-    @ApiOperation("鎵归噺鍒犻櫎")
-    @GetMapping("/delete/batch")
-    @RequiresPermissions("business:cateparam:delete")
-    public ApiResponse deleteByIdInBatch(@RequestParam String ids) {
-        String [] idArray = ids.split(",");
-        List<Integer> idList = new ArrayList<>();
-        for (String id : idArray) {
-            idList.add(Integer.valueOf(id));
-        }
-        cateParamService.deleteByIdInBatch(idList);
-        return ApiResponse.success(null);
-    }
-
-    @ApiOperation("鏍规嵁ID淇敼")
-    @PostMapping("/updateById")
-    @RequiresPermissions("business:cateparam:update")
-    public ApiResponse updateById(@RequestBody CateParam cateParam) {
-        cateParamService.updateById(cateParam);
-        return ApiResponse.success(null);
-    }
-
-    @ApiOperation("鍒嗛〉鏌ヨ")
-    @PostMapping("/page")
-    @RequiresPermissions("business:cateparam:query")
-    public ApiResponse<PageData<CateParam>> findPage (@RequestBody PageWrap<CateParam> pageWrap) {
-        return ApiResponse.success(cateParamService.findPage(pageWrap));
-    }
-
-    @ApiOperation("瀵煎嚭Excel")
-    @PostMapping("/exportExcel")
-    @RequiresPermissions("business:cateparam:exportExcel")
-    public void exportExcel (@RequestBody PageWrap<CateParam> pageWrap, HttpServletResponse response) {
-        ExcelExporter.build(CateParam.class).export(cateParamService.findPage(pageWrap).getRecords(), "鍝佺被鍙傛暟淇℃伅琛�", response);
-    }
-
-    @ApiOperation("鏍规嵁ID鏌ヨ")
-    @GetMapping("/{id}")
-    @RequiresPermissions("business:cateparam:query")
-    public ApiResponse findById(@PathVariable Integer id) {
-        return ApiResponse.success(cateParamService.findById(id));
-    }
-}
diff --git a/server/src/main/java/com/doumee/api/business/CategoryController.java b/server/src/main/java/com/doumee/api/business/CategoryController.java
deleted file mode 100644
index 9480ce1..0000000
--- a/server/src/main/java/com/doumee/api/business/CategoryController.java
+++ /dev/null
@@ -1,112 +0,0 @@
-package com.doumee.api.business;
-
-import com.doumee.api.BaseController;
-import com.doumee.core.annotation.excel.ExcelExporter;
-import com.doumee.core.annotation.pr.PreventRepeat;
-import com.doumee.core.model.ApiResponse;
-import com.doumee.core.model.PageWrap;
-import com.doumee.core.model.PageData;
-import com.doumee.dao.business.model.Brand;
-import com.doumee.dao.business.model.Category;
-import com.doumee.service.business.CategoryService;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import org.apache.shiro.authz.annotation.RequiresPermissions;    
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
-import javax.servlet.http.HttpServletResponse;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * @author 姹熻箘韫�
- * @date 2023/05/12 13:58
- */
-@Api(tags = "鍝佺被淇℃伅琛�")
-@RestController
-@RequestMapping("/business/category")
-public class CategoryController extends BaseController {
-
-    @Autowired
-    private CategoryService categoryService;
-
-    @PreventRepeat
-    @ApiOperation("鏂板缓")
-    @PostMapping("/create")
-    @RequiresPermissions("business:category:create")
-    public ApiResponse create(@RequestBody Category category) {
-        return ApiResponse.success(categoryService.create(category));
-    }
-
-    @ApiOperation("鏍规嵁ID鍒犻櫎")
-    @GetMapping("/delete/{id}")
-    @RequiresPermissions("business:category:delete")
-    public ApiResponse deleteById(@PathVariable Integer id) {
-        categoryService.deleteById(id);
-        return ApiResponse.success(null);
-    }
-
-    @ApiOperation("鎵归噺鍒犻櫎")
-    @GetMapping("/delete/batch")
-    @RequiresPermissions("business:category:delete")
-    public ApiResponse deleteByIdInBatch(@RequestParam String ids) {
-        String [] idArray = ids.split(",");
-        List<Integer> idList = new ArrayList<>();
-        for (String id : idArray) {
-            idList.add(Integer.valueOf(id));
-        }
-        categoryService.deleteByIdInBatch(idList);
-        return ApiResponse.success(null);
-    }
-
-    @ApiOperation("鏍规嵁ID淇敼")
-    @PostMapping("/updateById")
-    @RequiresPermissions("business:category:update")
-    public ApiResponse updateById(@RequestBody Category category) {
-        categoryService.updateById(category);
-        return ApiResponse.success(null);
-    }
-
-    @ApiOperation("鍒嗛〉鏌ヨ")
-    @PostMapping("/page")
-    @RequiresPermissions("business:category:query")
-    public ApiResponse<PageData<Category>> findPage (@RequestBody PageWrap<Category> pageWrap) {
-        return ApiResponse.success(categoryService.findPage(pageWrap));
-    }
-
-    @ApiOperation("瀵煎嚭Excel")
-    @PostMapping("/exportExcel")
-    @RequiresPermissions("business:category:exportExcel")
-    public void exportExcel (@RequestBody PageWrap<Category> pageWrap, HttpServletResponse response) {
-        ExcelExporter.build(Category.class).export(categoryService.findPage(pageWrap).getRecords(), "鍝佺被淇℃伅琛�", response);
-    }
-
-    @ApiOperation("鏍规嵁ID鏌ヨ")
-    @GetMapping("/{id}")
-    @RequiresPermissions("business:category:query")
-    public ApiResponse findById(@PathVariable Integer id) {
-        return ApiResponse.success(categoryService.findById(id));
-    }
-
-    @ApiOperation("淇敼鐘舵��")
-    @PostMapping("/updateDisableById")
-    @RequiresPermissions("business:category:update")
-    public ApiResponse updateDisableById(@RequestBody Category category) {
-        categoryService.updateDisableById(category);
-        return ApiResponse.success(null);
-    }
-
-    @ApiOperation("鍒楄〃 - H5")
-    @PostMapping("/list")
-    public ApiResponse<List<Category>> findList (@RequestBody Category category) {
-        return ApiResponse.success(categoryService.findList(category));
-    }
-
-    @ApiOperation("鍒楄〃 - 鍟嗗搧閫夋嫨")
-    @GetMapping("/findListForGoodsId")
-    public ApiResponse<List<Category>> findListForGoodsId (Integer goodsId) {
-        return ApiResponse.success(categoryService.findListForGoods(goodsId));
-    }
-
-}
diff --git a/server/src/main/java/com/doumee/api/business/GoodsController.java b/server/src/main/java/com/doumee/api/business/GoodsController.java
deleted file mode 100644
index b072830..0000000
--- a/server/src/main/java/com/doumee/api/business/GoodsController.java
+++ /dev/null
@@ -1,150 +0,0 @@
-package com.doumee.api.business;
-
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.doumee.api.BaseController;
-import com.doumee.core.annotation.excel.ExcelExporter;
-import com.doumee.core.annotation.pr.PreventRepeat;
-import com.doumee.core.model.ApiResponse;
-import com.doumee.core.model.PageWrap;
-import com.doumee.core.model.PageData;
-import com.doumee.dao.business.model.Category;
-import com.doumee.dao.business.model.Goods;
-import com.doumee.dao.business.model.dto.GoodsRequest;
-import com.doumee.service.business.GoodsService;
-import io.swagger.annotations.*;
-import org.apache.http.HttpRequest;
-import org.apache.shiro.authz.annotation.RequiresPermissions;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
-import org.springframework.web.multipart.MultipartFile;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import java.io.File;
-import java.net.URLEncoder;
-import java.nio.charset.Charset;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * @author 姹熻箘韫�
- * @date 2023/05/12 13:58
- */
-@Api(tags = "鍟嗗搧淇℃伅琛�")
-@RestController
-@RequestMapping("/business/goods")
-public class GoodsController extends BaseController {
-
-    @Autowired
-    private GoodsService goodsService;
-
-    @PreventRepeat
-    @ApiOperation("鏂板缓")
-    @PostMapping("/create")
-    @RequiresPermissions("business:goods:create")
-    public ApiResponse create(@RequestBody Goods goods) {
-        return ApiResponse.success(goodsService.create(goods));
-    }
-
-    @ApiOperation("鏍规嵁ID鍒犻櫎")
-    @GetMapping("/delete/{id}")
-    @RequiresPermissions("business:goods:delete")
-    public ApiResponse deleteById(@PathVariable Integer id) {
-        goodsService.deleteById(id);
-        return ApiResponse.success(null);
-    }
-
-    @ApiOperation("鎵归噺鍒犻櫎")
-    @GetMapping("/delete/batch")
-    @RequiresPermissions("business:goods:delete")
-    public ApiResponse deleteByIdInBatch(@RequestParam String ids) {
-        String [] idArray = ids.split(",");
-        List<Integer> idList = new ArrayList<>();
-        for (String id : idArray) {
-            idList.add(Integer.valueOf(id));
-        }
-        goodsService.deleteByIdInBatch(idList);
-        return ApiResponse.success(null);
-    }
-
-    @ApiOperation("鏍规嵁ID淇敼")
-    @PostMapping("/updateById")
-    @RequiresPermissions("business:goods:update")
-    public ApiResponse updateById(@RequestBody Goods goods) {
-        goodsService.updateById(goods);
-        return ApiResponse.success(null);
-    }
-
-    @ApiOperation("鍒嗛〉鏌ヨ")
-    @PostMapping("/page")
-    @RequiresPermissions("business:goods:query")
-    public ApiResponse<PageData<Goods>> findPage (@RequestBody PageWrap<Goods> pageWrap) {
-        return ApiResponse.success(goodsService.findPage(pageWrap));
-    }
-
-    @ApiOperation("瀵煎嚭Excel")
-    @PostMapping("/exportExcel")
-    @RequiresPermissions("business:goods:exportExcel")
-    public void exportExcel (@RequestBody PageWrap<Goods> pageWrap, HttpServletResponse response) {
-        ExcelExporter.build(Goods.class).export(goodsService.findPage(pageWrap).getRecords(), "鍟嗗搧淇℃伅琛�", response);
-    }
-
-    @ApiOperation("鏍规嵁ID鏌ヨ")
-    @GetMapping("/{id}")
-    @RequiresPermissions("business:goods:query")
-    public ApiResponse findById(@PathVariable Integer id) {
-        return ApiResponse.success(goodsService.findById(id));
-    }
-
-    @ApiOperation("瀵煎叆妯℃澘")
-    @PostMapping("/importExcel")
-    @ApiImplicitParams({
-            @ApiImplicitParam(name = "file", value = "file", required = true, paramType = "query", dataType = "file", dataTypeClass = File.class),
-    })
-//    @RequiresPermissions("business:goods:create")
-    public ApiResponse<Integer> importExcel (@ApiParam(value = "file") MultipartFile file) {
-        return ApiResponse.success(goodsService.importBatch(file));
-    }
-
-
-    @ApiOperation("淇敼鐘舵��")
-    @PostMapping("/updateDisableById")
-    @RequiresPermissions("business:category:update")
-    public ApiResponse updateDisableById(@RequestBody Goods goods) {
-        goodsService.updateDisableById(goods);
-        return ApiResponse.success(null);
-    }
-
-
-    @ApiOperation("鍒楄〃 - H5")
-    @PostMapping("/list")
-    public ApiResponse<List<Goods>> findList (@RequestBody Goods goods) {
-        return ApiResponse.success(goodsService.findList(goods));
-    }
-
-
-    @ApiOperation("鍟嗗搧鍒嗛〉鍒楄〃 - H5")
-    @PostMapping("/goodsPage")
-    public ApiResponse<PageData<Goods>> goodsPage(@RequestBody PageWrap<GoodsRequest> pageWrap) {
-        return ApiResponse.success(goodsService.getGoodsPage(pageWrap));
-    }
-
-    @ApiOperation("鍒楄〃鏌ヨ - H5")
-    @PostMapping("/listForH5")
-    public ApiResponse<List<Goods>> listForH5 (@RequestBody GoodsRequest goodsRequest) {
-        return ApiResponse.success(goodsService.findListForH5(goodsRequest));
-    }
-
-    @ApiOperation("鑾峰彇H5棣栭〉鍥�")
-    @PostMapping("/h5Image")
-    public ApiResponse<String> h5Image () {
-        return ApiResponse.success(goodsService.h5Image());
-    }
-
-    @ApiOperation("瀵煎嚭瀵煎叆妯℃澘")
-    @PostMapping("/export")
-    public void export (HttpServletRequest request, HttpServletResponse response) throws Exception  {
-        goodsService.export(request,response);
-    }
-}
diff --git a/server/src/main/java/com/doumee/api/business/GoodsParamController.java b/server/src/main/java/com/doumee/api/business/GoodsParamController.java
deleted file mode 100644
index 5bf15fc..0000000
--- a/server/src/main/java/com/doumee/api/business/GoodsParamController.java
+++ /dev/null
@@ -1,90 +0,0 @@
-package com.doumee.api.business;
-
-import com.doumee.api.BaseController;
-import com.doumee.core.annotation.excel.ExcelExporter;
-import com.doumee.core.annotation.pr.PreventRepeat;
-import com.doumee.core.model.ApiResponse;
-import com.doumee.core.model.PageWrap;
-import com.doumee.core.model.PageData;
-import com.doumee.dao.business.model.GoodsParam;
-import com.doumee.service.business.GoodsParamService;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import org.apache.shiro.authz.annotation.RequiresPermissions;    
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
-import javax.servlet.http.HttpServletResponse;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * @author 姹熻箘韫�
- * @date 2023/05/12 13:58
- */
-@Api(tags = "鍟嗗搧鍙傛暟閰嶇疆琛�")
-@RestController
-@RequestMapping("/business/goodsParam")
-public class GoodsParamController extends BaseController {
-
-    @Autowired
-    private GoodsParamService goodsParamService;
-
-    @PreventRepeat
-    @ApiOperation("鏂板缓")
-    @PostMapping("/create")
-    @RequiresPermissions("business:goodsparam:create")
-    public ApiResponse create(@RequestBody GoodsParam goodsParam) {
-        return ApiResponse.success(goodsParamService.create(goodsParam));
-    }
-
-    @ApiOperation("鏍规嵁ID鍒犻櫎")
-    @GetMapping("/delete/{id}")
-    @RequiresPermissions("business:goodsparam:delete")
-    public ApiResponse deleteById(@PathVariable Integer id) {
-        goodsParamService.deleteById(id);
-        return ApiResponse.success(null);
-    }
-
-    @ApiOperation("鎵归噺鍒犻櫎")
-    @GetMapping("/delete/batch")
-    @RequiresPermissions("business:goodsparam:delete")
-    public ApiResponse deleteByIdInBatch(@RequestParam String ids) {
-        String [] idArray = ids.split(",");
-        List<Integer> idList = new ArrayList<>();
-        for (String id : idArray) {
-            idList.add(Integer.valueOf(id));
-        }
-        goodsParamService.deleteByIdInBatch(idList);
-        return ApiResponse.success(null);
-    }
-
-    @ApiOperation("鏍规嵁ID淇敼")
-    @PostMapping("/updateById")
-    @RequiresPermissions("business:goodsparam:update")
-    public ApiResponse updateById(@RequestBody GoodsParam goodsParam) {
-        goodsParamService.updateById(goodsParam);
-        return ApiResponse.success(null);
-    }
-
-    @ApiOperation("鍒嗛〉鏌ヨ")
-    @PostMapping("/page")
-    @RequiresPermissions("business:goodsparam:query")
-    public ApiResponse<PageData<GoodsParam>> findPage (@RequestBody PageWrap<GoodsParam> pageWrap) {
-        return ApiResponse.success(goodsParamService.findPage(pageWrap));
-    }
-
-    @ApiOperation("瀵煎嚭Excel")
-    @PostMapping("/exportExcel")
-    @RequiresPermissions("business:goodsparam:exportExcel")
-    public void exportExcel (@RequestBody PageWrap<GoodsParam> pageWrap, HttpServletResponse response) {
-        ExcelExporter.build(GoodsParam.class).export(goodsParamService.findPage(pageWrap).getRecords(), "鍟嗗搧鍙傛暟閰嶇疆琛�", response);
-    }
-
-    @ApiOperation("鏍规嵁ID鏌ヨ")
-    @GetMapping("/{id}")
-    @RequiresPermissions("business:goodsparam:query")
-    public ApiResponse findById(@PathVariable Integer id) {
-        return ApiResponse.success(goodsParamService.findById(id));
-    }
-}
diff --git a/server/src/main/java/com/doumee/api/business/MultifileController.java b/server/src/main/java/com/doumee/api/business/MultifileController.java
deleted file mode 100644
index 3107cf1..0000000
--- a/server/src/main/java/com/doumee/api/business/MultifileController.java
+++ /dev/null
@@ -1,90 +0,0 @@
-package com.doumee.api.business;
-
-import com.doumee.api.BaseController;
-import com.doumee.core.annotation.excel.ExcelExporter;
-import com.doumee.core.annotation.pr.PreventRepeat;
-import com.doumee.core.model.ApiResponse;
-import com.doumee.core.model.PageWrap;
-import com.doumee.core.model.PageData;
-import com.doumee.dao.business.model.Multifile;
-import com.doumee.service.business.MultifileService;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import org.apache.shiro.authz.annotation.RequiresPermissions;    
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
-import javax.servlet.http.HttpServletResponse;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * @author 姹熻箘韫�
- * @date 2023/05/12 13:58
- */
-@Api(tags = "闄勪欢淇℃伅琛�")
-@RestController
-@RequestMapping("/business/multifile")
-public class MultifileController extends BaseController {
-
-    @Autowired
-    private MultifileService multifileService;
-
-    @PreventRepeat
-    @ApiOperation("鏂板缓")
-    @PostMapping("/create")
-    @RequiresPermissions("business:multifile:create")
-    public ApiResponse create(@RequestBody Multifile multifile) {
-        return ApiResponse.success(multifileService.create(multifile));
-    }
-
-    @ApiOperation("鏍规嵁ID鍒犻櫎")
-    @GetMapping("/delete/{id}")
-    @RequiresPermissions("business:multifile:delete")
-    public ApiResponse deleteById(@PathVariable Integer id) {
-        multifileService.deleteById(id);
-        return ApiResponse.success(null);
-    }
-
-    @ApiOperation("鎵归噺鍒犻櫎")
-    @GetMapping("/delete/batch")
-    @RequiresPermissions("business:multifile:delete")
-    public ApiResponse deleteByIdInBatch(@RequestParam String ids) {
-        String [] idArray = ids.split(",");
-        List<Integer> idList = new ArrayList<>();
-        for (String id : idArray) {
-            idList.add(Integer.valueOf(id));
-        }
-        multifileService.deleteByIdInBatch(idList);
-        return ApiResponse.success(null);
-    }
-
-    @ApiOperation("鏍规嵁ID淇敼")
-    @PostMapping("/updateById")
-    @RequiresPermissions("business:multifile:update")
-    public ApiResponse updateById(@RequestBody Multifile multifile) {
-        multifileService.updateById(multifile);
-        return ApiResponse.success(null);
-    }
-
-    @ApiOperation("鍒嗛〉鏌ヨ")
-    @PostMapping("/page")
-    @RequiresPermissions("business:multifile:query")
-    public ApiResponse<PageData<Multifile>> findPage (@RequestBody PageWrap<Multifile> pageWrap) {
-        return ApiResponse.success(multifileService.findPage(pageWrap));
-    }
-
-    @ApiOperation("瀵煎嚭Excel")
-    @PostMapping("/exportExcel")
-    @RequiresPermissions("business:multifile:exportExcel")
-    public void exportExcel (@RequestBody PageWrap<Multifile> pageWrap, HttpServletResponse response) {
-        ExcelExporter.build(Multifile.class).export(multifileService.findPage(pageWrap).getRecords(), "闄勪欢淇℃伅琛�", response);
-    }
-
-    @ApiOperation("鏍规嵁ID鏌ヨ")
-    @GetMapping("/{id}")
-    @RequiresPermissions("business:multifile:query")
-    public ApiResponse findById(@PathVariable Integer id) {
-        return ApiResponse.success(multifileService.findById(id));
-    }
-}
diff --git a/server/src/main/java/com/doumee/api/common/PublicController.java b/server/src/main/java/com/doumee/api/common/PublicController.java
deleted file mode 100644
index af11f05..0000000
--- a/server/src/main/java/com/doumee/api/common/PublicController.java
+++ /dev/null
@@ -1,332 +0,0 @@
-package com.doumee.api.common;
-
-import com.alibaba.fastjson.JSONObject;
-import com.doumee.api.BaseController;
-import com.doumee.biz.system.SystemDictDataBiz;
-import com.doumee.core.annotation.trace.Trace;
-import com.doumee.core.model.ApiResponse;
-import com.doumee.core.utils.Constants;
-import com.doumee.core.utils.DateUtil;
-import com.doumee.core.utils.aliyun.ALiYunUtil;
-import com.doumee.service.common.CaptchaService;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiImplicitParam;
-import io.swagger.annotations.ApiImplicitParams;
-import io.swagger.annotations.ApiOperation;
-
-import java.io.File;
-import java.io.IOException;
-import java.io.PrintWriter;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.UUID;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.collections.MapUtils;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-import org.springframework.web.multipart.MultipartFile;
-import org.springframework.web.multipart.MultipartHttpServletRequest;
-import org.springframework.web.multipart.commons.CommonsMultipartResolver;
-
-/**
- * @author Eva.Caesar Liu
- * @date 2023/02/14 11:14
- */
-@Api(tags = "鍏叡鎺ュ彛")
-@Trace(exclude = true)
-@RestController
-@RequestMapping("/public")
-@Slf4j
-public class PublicController extends BaseController {
-
-
-    @Autowired
-    private SystemDictDataBiz systemDictDataBiz;
-
-
-    @ApiOperation(value = "涓婁紶", notes = "涓婁紶", httpMethod = "POST", position = 6)
-    @ApiImplicitParams({
-        @ApiImplicitParam(name = "folder", value = "鏂囦欢澶�", required = true, paramType = "query", dataType = "String", dataTypeClass = String.class),
-    })
-    @PostMapping(value = "/upload", headers = "content-type=multipart/form-data")
-    public void uploadMobile(String folder, HttpServletRequest request, HttpServletResponse response) throws Exception {
-        MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
-        upload(multipartRequest, response, folder + "/",
-            systemDictDataBiz.queryByCode(Constants.OSS,Constants.BUCKETNAME).getCode(),
-            systemDictDataBiz.queryByCode(Constants.OSS,Constants.ACCESS_ID).getCode(),
-            systemDictDataBiz.queryByCode(Constants.OSS,Constants.ACCESS_KEY).getCode(),
-            systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode(),
-            systemDictDataBiz.queryByCode(Constants.OSS,Constants.ENDPOINT).getCode());
-    }
-
-
-    @ApiOperation(value = "涓婁紶鍥剧墖", notes = "涓婁紶鍥剧墖", httpMethod = "POST", position = 6)
-    @ApiImplicitParams({
-            @ApiImplicitParam(name = "folder", value = "鏂囦欢澶�", required = true, paramType = "query", dataType = "String", dataTypeClass = String.class),
-    })
-    @PostMapping(value = "/uploadPicture", headers = "content-type=multipart/form-data")
-    public void uploadPicture(String folder, HttpServletRequest request, HttpServletResponse response) throws Exception {
-        MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
-        Iterator<String> fileNames = multipartRequest.getFileNames();
-        Map<String, Object> context = new HashMap<>();
-        while (fileNames.hasNext()){
-            MultipartFile file = multipartRequest.getFile(fileNames.next());
-            String fileName = file.getOriginalFilename();
-            String suffix = fileName.substring(fileName.lastIndexOf("."));
-            if ( !StringUtils.equalsIgnoreCase(suffix, ".jpg") || !StringUtils.equalsIgnoreCase(suffix, ".png")) {
-                context.put("code", 0);
-                context.put("message", "瀵逛笉璧凤紝鏂囦欢鏍煎紡涓婁紶鏈夎锛�");
-            }
-        }
-        upload(multipartRequest, response, folder + "/",
-                systemDictDataBiz.queryByCode(Constants.OSS,Constants.BUCKETNAME).getCode(),
-                systemDictDataBiz.queryByCode(Constants.OSS,Constants.ACCESS_ID).getCode(),
-                systemDictDataBiz.queryByCode(Constants.OSS,Constants.ACCESS_KEY).getCode(),
-                systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode(),
-                systemDictDataBiz.queryByCode(Constants.OSS,Constants.ENDPOINT).getCode());
-    }
-
-    public void upload(HttpServletRequest request, HttpServletResponse response, String folder, String bucketName,
-        String access_id, String access_key, String resourcePath, String endpoint) throws Exception {
-        response.setCharacterEncoding("UTF-8");
-        response.setContentType("text/html;charset=UTF-8");
-        Map<String, Object> context = new HashMap<>();
-        CommonsMultipartResolver multipartResovler = new CommonsMultipartResolver();
-        if (multipartResovler.isMultipart(request)) {
-            MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
-            Iterator<String> it = multipartRequest.getFileNames();
-            while (it.hasNext()) {
-                MultipartFile file = multipartRequest.getFile((String) it.next());// file
-                // multipartRequest.getFile((String)
-                // it.next());
-                if (file != null) {
-                    // 1銆佷笂浼犲埌鏈嶅姟鍣ㄤ复鏃舵枃浠跺す
-                    String uploadFileName = file.getOriginalFilename();
-                    String originname = uploadFileName;
-                    if (originname.lastIndexOf("/") >= 0) {
-                        originname = originname.substring(originname.lastIndexOf("/") + 1);
-                    }
-                    String nfix = "";// 鍚庣紑鍚�
-                    if (StringUtils.isNotBlank(uploadFileName)) {
-                        nfix = uploadFileName.substring(uploadFileName.lastIndexOf("."));
-                    }
-                    if (StringUtils.equalsIgnoreCase(nfix, ".exe")) {
-                        context.put("code", 4000);
-                        context.put("message", "瀵逛笉璧凤紝鏂囦欢鏍煎紡\".exe\"涓婁紶鏈夎锛�");
-                        return;
-                    }
-                    if (StringUtils.equalsIgnoreCase(nfix, ".dll")) {
-                        context.put("code", 4000);
-                        context.put("message", "瀵逛笉璧凤紝鏂囦欢鏍煎紡\".dll\"涓婁紶鏈夎锛�");
-                        return;
-                    }
-                    String nowDate = DateUtil.getNowShortDate();// 褰撳墠鏃堕棿锛堝勾鏈堟棩锛�
-                    String fileName = UUID.randomUUID().toString() + nfix;
-                    String tempFileName = nowDate + "/" + fileName;
-                    String key = folder + tempFileName;// 鏂囦欢鍚�
-                    ALiYunUtil obs = new ALiYunUtil(endpoint,access_id, access_key);
-                    if (obs.uploadOnlineObject(file.getInputStream(),bucketName, key,null)) {
-                        // 绉诲姩鎴愬姛,杩斿洖鏂囦欢鍚�
-                        // sendSuccessMessage(response, resourcePath+key);
-                        context.put("success", true);
-                        context.put("code", 200);
-                        context.put("errno",0);
-                        JSONObject fileJSON = new JSONObject();
-                        fileJSON.put("url", resourcePath + key);
-                        fileJSON.put("imgaddr", tempFileName);
-                        fileJSON.put("imgname", fileName);
-                        fileJSON.put("originname", originname);
-                        context.put("data",fileJSON);
-                        context.put("message","璇锋眰鎴愬姛");
-                        writerJson(response, context);
-                        return;
-                    } else {
-                        // 绉诲姩澶辫触
-                        context.put("code", 0);
-                        context.put("message", "涓婁紶澶辫触");
-                        writerJson(response, context);
-                        return;
-                    }
-                }
-
-            }
-        }
-        context.put("code", 0);
-        context.put("message", "涓婁紶澶辫触");
-        context.put("errno",0);
-        writerJson(response, context);
-        return;
-    }
-
-    public static void writerJson(HttpServletResponse response, Object object) {
-        response.setContentType("application/json");
-        writer(response, JSONObject.toJSONString(object));
-    }
-
-    private static void writer(HttpServletResponse response, String str) {
-        try {
-            StringBuffer result = new StringBuffer();
-            //璁剧疆椤甸潰涓嶇紦瀛�
-            response.setHeader("Pragma", "No-cache");
-            response.setHeader("Cache-Control", "no-cache");
-            response.setCharacterEncoding("UTF-8");
-            PrintWriter out = null;
-            out = response.getWriter();
-            out.print(str);
-            out.flush();
-            out.close();
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
-    }
-
-
-
-    @ApiOperation(value = "涓婁紶", notes = "涓婁紶", httpMethod = "POST", position = 6)
-    @ApiImplicitParams({
-            @ApiImplicitParam(name = "folder", value = "鏂囦欢澶�", required = true, paramType = "query", dataType = "String", dataTypeClass = String.class),
-    })
-    @PostMapping(value = "/uploadLocal", headers = "content-type=multipart/form-data")
-    public void uploadLocal(String folder, HttpServletRequest request, HttpServletResponse response) throws Exception {
-        MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
-
-        // CommonsMultipartFile files = (CommonsMultipartFile) multipartRequest.getFile("filedata");
-        uploadFileLocal(multipartRequest,  folder+ "/", response,
-                systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.GOODS_IMG_DIR).getCode() ,
-                systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.FILE_DIR).getCode());
-
-    }
-
-    public void uploadFileLocal(HttpServletRequest request, String folder, HttpServletResponse response, String rootPath,String dir) throws Exception {
-        response.setCharacterEncoding("UTF-8");
-        response.setContentType("text/html;charset=UTF-8");
-        CommonsMultipartResolver multipartResovler = new CommonsMultipartResolver();
-        Map<String, Object> context = new HashMap<>();
-        if (multipartResovler.isMultipart(request)) {
-            MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
-            Iterator<String> it = multipartRequest.getFileNames();
-            while (it.hasNext()) {
-                MultipartFile file = multipartRequest.getFile((String) it.next());// file
-                // =
-                // (CommonsMultipartFile)
-                // multipartRequest.getFile((String)
-                // it.next());
-                if (file != null) {
-                    if (file.getSize() > 200 * 1024 * 1024L) {
-                        context.put("code", 4000);
-                        context.put("message", "涓婁紶鏂囦欢杩囧ぇ");
-                        return;
-                    }
-                    System.out.println(file.getOriginalFilename());
-                    if (file.getOriginalFilename() == null) {
-                        context.put("code", 4000);
-                        context.put("message", "鏂囦欢鍚嶄笉鍙负绌�");
-                        return;
-                    }
-                    /*
-                     * if(file.getOriginalFilename().contains(",")||file.getOriginalFilename().
-                     * contains(" ")){ sendFailureMessage(response,"鏂囦欢鍚嶇О鏈夎,涓嶅彲鍚湁閫楀彿绛夌壒娈婂瓧绗�"); }
-                     */
-
-                    String nowDate = DateUtil.getNowShortDate();
-                    folder += nowDate + "/";
-                    String strDirPath = rootPath + folder;
-                    File dirPath = new File(strDirPath);
-                    if (!dirPath.exists()) {
-                        dirPath.mkdirs();
-                    }
-                    String uploadFileName = file.getOriginalFilename();
-                    String x = UUID.randomUUID().toString().replace("-", "")
-                            + uploadFileName.substring(uploadFileName.lastIndexOf("."));
-                    String fileName = folder + x;
-                    String fileNames = nowDate + "/" + x;
-                    uploadFileName = uploadFileName.replace(" ", "");
-                    uploadFileName = uploadFileName.replace("锛�", ",");
-                    uploadFileName = uploadFileName.replaceAll(",", "-");
-                    System.err.println("R:" + fileName);
-                    String fileAndPath = dir + fileName;
-                    System.err.println("A:" + fileAndPath);
-                    // 鍒ゆ柇濡傛灉涓存椂鐩綍涓瓨鍦ㄧ浉鍚屽悕绉扮殑鏂囦欢鍏堝垹闄わ紝鍦ㄤ笂浼�
-                    File tempFile = new File(rootPath + fileName);
-                    if (tempFile.isFile() && tempFile.exists()) {
-                        tempFile.getAbsoluteFile().delete();
-                    }
-                    // 涓婁紶鍒版湇鍔″櫒涓存椂鏂囦欢澶�
-                    file.transferTo(tempFile);
-                    // 杞Щ鍒癋TP鏈嶅姟鍣�
-                    String nfix = "";
-                    if (null != uploadFileName) {
-                        nfix = uploadFileName.substring(uploadFileName.lastIndexOf("."));
-                    }
-
-                    if (StringUtils.equalsIgnoreCase(nfix, ".exe")) {
-                        context.put("code", 4000);
-                        context.put("message", "瀵逛笉璧凤紝鏂囦欢鏍煎紡\".exe\"涓婁紶鏈夎锛�");
-                        return;
-                    }
-                    if (StringUtils.equalsIgnoreCase(nfix, ".dll")) {
-                        context.put("code", 4000);
-                        context.put("message", "瀵逛笉璧凤紝鏂囦欢鏍煎紡\".dll\"涓婁紶鏈夎锛�");
-                        return;
-                    }
-
-                    String remoteName = fileName;
-                    String remoteFileName = fileAndPath;
-
-             /*       Map map = new HashMap();
-                    map.put("url", remoteFileName);
-                    map.put("alt", uploadFileName);
-                    map.put("href", remoteFileName);
-                    List maps = Arrays.asList(remoteFileName);*/
-
-                    if (true) {
-                        // 鍏抽棴FTP娴�
-                        // 绉诲姩鎴愬姛,杩斿洖鏂囦欢鍚�
-
-                        /*context.put("error", 0);
-                        context.put("url", remoteFileName);
-                        context.put("fullurl", remoteFileName);
-                        context.put("fname", uploadFileName);
-                        context.put("data", maps);
-                        context.put("halfurl", fileNames);*/
-
-                        context.put("success", true);
-                        context.put("code", 200);
-                        context.put("errno",0);
-                        JSONObject fileJSON = new JSONObject();
-                        fileJSON.put("url", remoteFileName);
-                        fileJSON.put("imgaddr", fileNames);
-                        fileJSON.put("imgname", uploadFileName);
-                        fileJSON.put("originname", uploadFileName);
-                        context.put("data",fileJSON);
-                        context.put("message","璇锋眰鎴愬姛");
-
-                        writerJson(response, context);
-                        return;
-                    } else {
-                        // 绉诲姩澶辫触
-                        context.put("code", 0);
-                        context.put("message", "涓婁紶澶辫触");
-                        writerJson(response, context);
-                    }
-                }
-                context.put("code", 0);
-                context.put("message", "涓婁紶澶辫触");
-                writerJson(response, context);
-                return;
-            }
-        }
-        context.put("code", 0);
-        context.put("message", "涓婁紶澶辫触");
-        writerJson(response, context);
-        return;
-    }
-}
diff --git a/server/src/main/java/com/doumee/api/system/SystemDictDataController.java b/server/src/main/java/com/doumee/api/system/SystemDictDataController.java
deleted file mode 100644
index 31989ab..0000000
--- a/server/src/main/java/com/doumee/api/system/SystemDictDataController.java
+++ /dev/null
@@ -1,96 +0,0 @@
-package com.doumee.api.system;
-
-import com.doumee.api.BaseController;
-import com.doumee.biz.system.SystemDictDataBiz;
-import com.doumee.core.annotation.pr.PreventRepeat;
-import com.doumee.core.constants.OperaType;
-import com.doumee.core.model.ApiResponse;
-import com.doumee.core.model.PageData;
-import com.doumee.core.model.PageWrap;
-import com.doumee.core.utils.Constants;
-import com.doumee.dao.system.dto.QuerySystemDictDataDTO;
-import com.doumee.dao.system.model.SystemDictData;
-import com.doumee.dao.system.vo.SystemDictDataListVO;
-import com.doumee.service.system.SystemDictDataService;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import org.apache.shiro.authz.annotation.RequiresPermissions;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * @author Eva.Caesar Liu
- * @date 2023/03/21 14:49
- */
-@Api(tags = "瀛楀吀鏁版嵁")
-@RestController
-@RequestMapping("/system/dictData")
-public class SystemDictDataController extends BaseController {
-
-    @Autowired
-    private SystemDictDataService systemDictDataService;
-
-    @Autowired
-    private SystemDictDataBiz systemDictDataBiz;
-
-    @PreventRepeat
-    @ApiOperation("鏂板缓")
-    @PostMapping("/create")
-    @RequiresPermissions("system:dict:update")
-    public ApiResponse create(@Validated(OperaType.Create.class) @RequestBody SystemDictData systemDictData) {
-        return ApiResponse.success(systemDictDataBiz.create(systemDictData));
-    }
-
-    @ApiOperation("鍒犻櫎")
-    @GetMapping("/delete/{id}")
-    @RequiresPermissions("system:dict:update")
-    public ApiResponse deleteById(@PathVariable Integer id) {
-        systemDictDataService.deleteById(id);
-        return ApiResponse.success(null);
-    }
-
-    @ApiOperation("鎵归噺鍒犻櫎")
-    @GetMapping("/delete/batch")
-    @RequiresPermissions("system:dict:delete")
-    public ApiResponse deleteByIdInBatch(@RequestParam String ids) {
-        String [] idArray = ids.split(",");
-        List<Integer> idList = new ArrayList<>();
-        for (String id : idArray) {
-            idList.add(Integer.valueOf(id));
-        }
-        systemDictDataService.deleteByIdInBatch(idList);
-        return ApiResponse.success(null);
-    }
-
-    @ApiOperation("淇敼")
-    @PostMapping("/updateById")
-    @RequiresPermissions("system:dict:update")
-    public ApiResponse updateById(@Validated(OperaType.Update.class) @RequestBody SystemDictData systemDictData) {
-        systemDictDataBiz.updateById(systemDictData);
-        return ApiResponse.success(null);
-    }
-
-    @ApiOperation("鍒嗛〉鏌ヨ")
-    @PostMapping("/page")
-    @RequiresPermissions("system:dict:update")
-    public ApiResponse<PageData<SystemDictDataListVO>> findPage (@RequestBody PageWrap<QuerySystemDictDataDTO> pageWrap) {
-        return ApiResponse.success(systemDictDataService.findPage(pageWrap));
-    }
-
-
-
-
-
-    @ApiOperation("缂栬緫鏌ヨ鍜栬眴浠诲姟瑙勫垯")
-    @PostMapping("/createCoffeeTask")
-    @RequiresPermissions("system:dict:update")
-    public ApiResponse createCoffeeTask(@Validated(OperaType.Create.class) @RequestBody List<SystemDictData> list) {
-           systemDictDataBiz.updateByDicId(list);
-        return ApiResponse.success(null);
-    }
-
-}
diff --git a/server/src/main/java/com/doumee/api/system/SystemUserController.java b/server/src/main/java/com/doumee/api/system/SystemUserController.java
deleted file mode 100644
index 6512fb0..0000000
--- a/server/src/main/java/com/doumee/api/system/SystemUserController.java
+++ /dev/null
@@ -1,130 +0,0 @@
-package com.doumee.api.system;
-
-import com.doumee.api.BaseController;
-import com.doumee.biz.system.SystemUserBiz;
-import com.doumee.core.annotation.pr.PreventRepeat;
-import com.doumee.core.annotation.trace.Trace;
-import com.doumee.core.constants.OperaType;
-import com.doumee.core.model.ApiResponse;
-import com.doumee.core.model.PageData;
-import com.doumee.core.model.PageWrap;
-import com.doumee.dao.system.dto.CreateSystemUserDTO;
-import com.doumee.dao.system.dto.CreateUserRoleDTO;
-import com.doumee.dao.system.dto.QuerySystemUserDTO;
-import com.doumee.dao.system.dto.ResetSystemUserPwdDTO;
-import com.doumee.dao.system.model.SystemUser;
-import com.doumee.dao.system.vo.SystemUserListVO;
-import com.doumee.service.system.SystemUserService;
-import io.swagger.annotations.*;
-import org.apache.shiro.authz.annotation.RequiresPermissions;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
-import org.springframework.web.multipart.MultipartFile;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * @author Eva.Caesar Liu
- * @date 2023/03/21 14:49
- */
-@Api(tags = "鐢ㄦ埛")
-@RestController
-@RequestMapping("/system/user")
-public class SystemUserController extends BaseController {
-
-    @Autowired
-    private SystemUserService systemUserService;
-
-    @Autowired
-    private SystemUserBiz systemUserBiz;
-
-    @PreventRepeat
-    @ApiOperation("閰嶇疆鐢ㄦ埛瑙掕壊")
-    @PostMapping("/createUserRole")
-    @RequiresPermissions("system:user:createUserRole")
-    public ApiResponse createUserRole (@Validated @RequestBody CreateUserRoleDTO dto) {
-        systemUserBiz.createUserRole(dto);
-        return ApiResponse.success(null);
-    }
-
-    @Trace(withRequestParameters = false)
-    @PreventRepeat
-    @ApiOperation("閲嶇疆鐢ㄦ埛瀵嗙爜")
-    @PostMapping("/resetPwd")
-    @RequiresPermissions("system:user:resetPwd")
-    public ApiResponse resetPwd (@Validated @RequestBody ResetSystemUserPwdDTO dto) {
-        dto.setOperaUserId(this.getLoginUser().getId());
-        systemUserBiz.resetPwd(dto);
-        return ApiResponse.success(null);
-    }
-
-    @Trace(withRequestParameters = false)
-    @PreventRepeat
-    @ApiOperation("鏂板缓")
-    @PostMapping("/create")
-    @RequiresPermissions("system:user:create")
-    public ApiResponse create(@Validated(OperaType.Create.class) @RequestBody CreateSystemUserDTO systemUser) {
-        systemUser.setCreateUser(this.getLoginUser().getId());
-        systemUserBiz.create(systemUser);
-        return ApiResponse.success(null);
-    }
-
-    @ApiOperation("鍒犻櫎")
-    @GetMapping("/delete/{id}")
-    @RequiresPermissions("system:user:delete")
-    public ApiResponse deleteById(@PathVariable Integer id) {
-        systemUserBiz.deleteById(id);
-        return ApiResponse.success(null);
-    }
-
-    @ApiOperation("鎵归噺鍒犻櫎")
-    @GetMapping("/delete/batch")
-    @RequiresPermissions("system:user:delete")
-    public ApiResponse deleteByIdInBatch(@RequestParam String ids) {
-        String [] idArray = ids.split(",");
-        List<Integer> idList = new ArrayList<>();
-        for (String id : idArray) {
-            idList.add(Integer.valueOf(id));
-        }
-        systemUserBiz.deleteByIdInBatch(idList);
-        return ApiResponse.success(null);
-    }
-
-    @Trace(withRequestParameters = false)
-    @ApiOperation("淇敼")
-    @PostMapping("/updateById")
-    @RequiresPermissions("system:user:update")
-    public ApiResponse updateById( @RequestBody CreateSystemUserDTO systemUser) {
-        systemUser.setUpdateUser(this.getLoginUser().getId());
-        systemUserBiz.updateById(systemUser);
-        return ApiResponse.success(null);
-    }
-
-    @ApiOperation("鍒嗛〉鏌ヨ")
-    @PostMapping("/page")
-    @RequiresPermissions("system:user:query")
-    public ApiResponse<PageData<SystemUserListVO>> findPage (@RequestBody PageWrap<QuerySystemUserDTO> pageWrap) {
-        return ApiResponse.success(systemUserService.findPage(pageWrap));
-    }
-
-
-
-    @ApiOperation("鍒嗛〉鏌ヨ绯荤粺鐢ㄦ埛")
-    @PostMapping("/findAllList")
-    @RequiresPermissions("system:user:query")
-    public ApiResponse<PageData<SystemUser>> findAllList (@RequestBody PageWrap<SystemUser> pageWrap) {
-        return ApiResponse.success(systemUserService.findAllList(pageWrap));
-    }
-
-
-    @ApiOperation("鏍规嵁ID鏌ヨ")
-    @GetMapping("/{id}")
-    @RequiresPermissions("system:user:query")
-    public ApiResponse findById(@PathVariable Integer id) {
-        return ApiResponse.success(systemUserService.findById(id));
-    }
-
-}
diff --git a/server/src/main/java/com/doumee/config/shiro/ShiroAuthFilter.java b/server/src/main/java/com/doumee/config/shiro/ShiroAuthFilter.java
deleted file mode 100644
index 1ece7ec..0000000
--- a/server/src/main/java/com/doumee/config/shiro/ShiroAuthFilter.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package com.doumee.config.shiro;
-
-import com.doumee.core.model.ApiResponse;
-import com.alibaba.fastjson.JSON;
-import org.apache.shiro.web.filter.authc.FormAuthenticationFilter;
-import org.springframework.http.HttpStatus;
-
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
-import javax.servlet.http.HttpServletResponse;
-
-/**
- * Shiro璁よ瘉杩囨护鍣紝澶勭悊鏈璇佹儏鍐电殑鍝嶅簲
- * @author Eva.Caesar Liu
- * @date 2023/02/14 11:14
- */
-public class ShiroAuthFilter extends FormAuthenticationFilter {
-
-    public ShiroAuthFilter() {
-        super();
-    }
-
-    @Override
-    protected boolean onAccessDenied(ServletRequest request, ServletResponse response) throws Exception {
-        HttpServletResponse servletResponse = (HttpServletResponse) response;
-        servletResponse.setHeader("content-type", "application/json;charset=UTF-8");
-        servletResponse.getWriter().write(JSON.toJSONString(ApiResponse.failed(HttpStatus.UNAUTHORIZED.value(), "鏈櫥褰曟垨鐧诲綍淇℃伅宸茶繃鏈�")));
-        return Boolean.FALSE;
-    }
-}
diff --git a/server/src/main/java/com/doumee/config/shiro/ShiroCache.java b/server/src/main/java/com/doumee/config/shiro/ShiroCache.java
deleted file mode 100644
index f751199..0000000
--- a/server/src/main/java/com/doumee/config/shiro/ShiroCache.java
+++ /dev/null
@@ -1,113 +0,0 @@
-package com.doumee.config.shiro;
-
-import com.doumee.service.proxy.CacheProxy;
-import lombok.extern.slf4j.Slf4j;
-import org.apache.shiro.cache.Cache;
-import org.apache.shiro.cache.CacheException;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Scope;
-import org.springframework.stereotype.Component;
-import org.springframework.util.CollectionUtils;
-
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Set;
-
-/**
- * Shiro缂撳瓨
- * @author Eva.Caesar Liu
- * @date 2023/02/14 11:14
- */
-@Scope(value = "prototype")
-@Slf4j
-@Component
-public class ShiroCache implements Cache<Object, Serializable> {
-
-    private String keyPrefix = "";
-
-    @Autowired
-    private CacheProxy<Object, Serializable> cacheProxy;
-
-    public ShiroCache () {
-        log.debug("ShiroCache: new, keyPrefix = [" + keyPrefix + "]");
-    }
-
-    public ShiroCache(String keyPrefix) {
-        log.debug("ShiroCache: new, keyPrefix = [" + keyPrefix + "]");
-        this.keyPrefix = keyPrefix;
-    }
-
-    @Override
-    public Serializable get(Object key) throws CacheException {
-        if (key == null) {
-            return null;
-        }
-        return cacheProxy.get(getKey(key));
-    }
-
-    @Override
-    public Serializable put(Object key, Serializable value) throws CacheException {
-        if (key == null) {
-            return null;
-        }
-        cacheProxy.put(getKey(key), value);
-        return value;
-    }
-
-    public Serializable put(Object key, Serializable value, int timeout) throws CacheException {
-        if (key == null) {
-            return null;
-        }
-        cacheProxy.put(getKey(key), value, timeout);
-        return value;
-    }
-
-    @Override
-    public void clear() throws CacheException {
-        Set<Object> keys = this.keys();
-        cacheProxy.remove(keys);
-    }
-
-    @Override
-    public int size() {
-        return this.keys().size();
-    }
-
-    @Override
-    public Set<Object> keys() {
-        Set<Object> keys = cacheProxy.keys(keyPrefix + "*");
-        if (CollectionUtils.isEmpty(keys)) {
-            return Collections.emptySet();
-        }
-        return keys;
-    }
-
-    @Override
-    public Collection<Serializable> values() {
-        Collection<Serializable> values = new ArrayList<>();
-        Set<Object> keys = this.keys();
-        if (CollectionUtils.isEmpty(keys)) {
-            return values;
-        }
-        for (Object k : keys) {
-            values.add(cacheProxy.get(k));
-        }
-        return values;
-    }
-
-    @Override
-    public Serializable remove(Object key) throws CacheException {
-        if (key == null) {
-            return null;
-        }
-        Serializable value = this.get(getKey(key));
-        cacheProxy.remove(getKey(key));
-        return value;
-    }
-
-    private Object getKey (Object key) {
-        return (key instanceof String ? (this.keyPrefix + key) : key);
-    }
-}
diff --git a/server/src/main/java/com/doumee/config/shiro/ShiroCacheManager.java b/server/src/main/java/com/doumee/config/shiro/ShiroCacheManager.java
deleted file mode 100644
index 4b65d78..0000000
--- a/server/src/main/java/com/doumee/config/shiro/ShiroCacheManager.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package com.doumee.config.shiro;
-
-import lombok.extern.slf4j.Slf4j;
-import org.apache.shiro.cache.Cache;
-import org.apache.shiro.cache.CacheException;
-import org.apache.shiro.cache.CacheManager;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.ApplicationContext;
-import org.springframework.stereotype.Component;
-
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
-
-/**
- * 鑷畾涔塖hiro CacheManager
- * @author Eva.Caesar Liu
- * @date 2023/02/14 11:14
- */
-@Slf4j
-@Component
-public class ShiroCacheManager implements CacheManager {
-
-    private final ConcurrentMap<String, Cache> caches = new ConcurrentHashMap();
-
-    private static ApplicationContext applicationContext;
-
-    @Override
-    public <K, V> Cache<K, V> getCache(String name) throws CacheException {
-        log.debug("get cache, name=" + name);
-        Cache cache = this.caches.get(name);
-        if (cache == null) {
-            cache = applicationContext.getBean(ShiroCache.class, "shiro:cache:");
-            this.caches.put(name, cache);
-        }
-        return cache;
-    }
-
-    @Autowired
-    public void setApplicationContext (ApplicationContext applicationContext) {
-        if (ShiroCacheManager.applicationContext == null) {
-            ShiroCacheManager.applicationContext = applicationContext;
-        }
-    }
-}
diff --git a/server/src/main/java/com/doumee/config/shiro/ShiroConfig.java b/server/src/main/java/com/doumee/config/shiro/ShiroConfig.java
deleted file mode 100644
index 9765736..0000000
--- a/server/src/main/java/com/doumee/config/shiro/ShiroConfig.java
+++ /dev/null
@@ -1,142 +0,0 @@
-package com.doumee.config.shiro;
-
-import org.apache.coyote.http11.AbstractHttp11Protocol;
-import org.apache.shiro.mgt.SecurityManager;
-import org.apache.shiro.session.mgt.SessionManager;
-import org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor;
-import org.apache.shiro.spring.web.ShiroFilterFactoryBean;
-import org.apache.shiro.web.mgt.DefaultWebSecurityManager;
-import org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.boot.web.embedded.tomcat.TomcatConnectorCustomizer;
-import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
-import org.springframework.boot.web.servlet.server.ServletWebServerFactory;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-
-import javax.servlet.Filter;
-import java.util.HashMap;
-import java.util.LinkedHashMap;
-import java.util.Map;
-
-/**
- * Shiro閰嶇疆
- * @author Eva.Caesar Liu
- * @date 2023/02/14 11:14
- */
-@Configuration
-public class ShiroConfig {
-
-    @Value("${cache.session.expire}")
-    private int sessionExpireTime;
-
-    @Autowired
-    private ShiroCredentialsMatcher shiroCredentialsMatcher;
-
-    @Autowired
-    private ShiroSessionDAO shiroSessionDAO;
-
-    @Autowired
-    private ShiroCacheManager shiroCacheManager;
-
-    @Autowired
-    private ShiroRealm shiroRealm;
-
-    @Bean
-    public DefaultAdvisorAutoProxyCreator defaultAdvisorAutoProxyCreator() {
-        DefaultAdvisorAutoProxyCreator autoProxyCreator = new DefaultAdvisorAutoProxyCreator();
-        autoProxyCreator.setProxyTargetClass(true);
-        return autoProxyCreator;
-    }
-
-    @Bean
-    public SessionManager sessionManager() {
-        ShiroSessionManager sessionManager = new ShiroSessionManager();
-        sessionManager.setSessionDAO(shiroSessionDAO);
-        return sessionManager;
-    }
-
-    @Bean
-    public SecurityManager securityManager() {
-        DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
-        securityManager.setRealm(shiroRealm);
-        securityManager.setSessionManager(this.sessionManager());
-        securityManager.setCacheManager(shiroCacheManager);
-        return securityManager;
-    }
-
-    @Bean
-    public ShiroFilterFactoryBean shiroFilterFactoryBean(SecurityManager securityManager) {
-        ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean();
-        shiroFilterFactoryBean.setSecurityManager(securityManager);
-        Map<String, String> map = new LinkedHashMap<>();
-        // 璺緞鎷︽埅閰嶇疆
-        map.put("/system/dictData/companyUserRules","anon");
-        map.put("/system/login", "anon");
-        map.put("/system/logout", "anon");
-        map.put("/common/captcha", "anon");
-        map.put("/business/areas/*", "anon");
-        map.put("/business/company/register", "anon");
-        map.put("/business/labels/page","anon");
-        map.put("/public/uploadPicture","anon");
-        map.put("/public/uploadLocal","anon");
-        map.put("/business/*/list","anon");
-        map.put("/business/goods/goodsPage","anon");
-        map.put("/business/goods/h5Image","anon");
-        map.put("/business/goods/export","anon");
-        map.put("/business/goods/listForH5","anon");
-
-
-        // - 鏀捐swagger
-        map.put("/doc.html", "anon");
-        map.put("/webjars/**", "anon");
-        map.put("/swagger-resources/**", "anon");
-        map.put("/v2/api-docs/**", "anon");
-
-        // - 鍏朵粬鎺ュ彛缁熶竴鎷︽埅
-        map.put("/**", "authc");
-        shiroFilterFactoryBean.setFilterChainDefinitionMap(map);
-        // 娣诲姞璁よ瘉杩囨护鍣�
-        Map<String, Filter> filters = new LinkedHashMap<>();
-        filters.put("authc", new ShiroAuthFilter());
-        shiroFilterFactoryBean.setFilters(filters);
-        return shiroFilterFactoryBean;
-    }
-
-    @Bean
-    public AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor(SecurityManager securityManager) {
-        AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor = new AuthorizationAttributeSourceAdvisor();
-        authorizationAttributeSourceAdvisor.setSecurityManager(securityManager);
-        return authorizationAttributeSourceAdvisor;
-    }
-
-    @Bean
-    public ShiroSessionDAO getShiroSessionDAO () {
-        shiroSessionDAO.setExpireTime(sessionExpireTime);
-        return shiroSessionDAO;
-    }
-
-    @Bean
-    public ShiroRealm getShiroRealm () {
-        shiroRealm.setCredentialsMatcher(shiroCredentialsMatcher);
-        return shiroRealm;
-    }
-
-    private int maxUploadSizeInMb = 10 * 1024 * 1024; // 10 MB
-
-    @Bean
-    public TomcatServletWebServerFactory tomcatEmbedded() {
-
-        TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory();
-        tomcat.addConnectorCustomizers((TomcatConnectorCustomizer) connector -> {
-            // connector other settings...
-            // configure maxSwallowSize
-            if ((connector.getProtocolHandler() instanceof AbstractHttp11Protocol<?>)) {
-                // -1 means unlimited, accept bytes
-                ((AbstractHttp11Protocol<?>) connector.getProtocolHandler()).setMaxSwallowSize(-1);
-            }
-        });
-        return tomcat;
-    }
-}
diff --git a/server/src/main/java/com/doumee/config/shiro/ShiroCredentialsMatcher.java b/server/src/main/java/com/doumee/config/shiro/ShiroCredentialsMatcher.java
deleted file mode 100644
index 39398c9..0000000
--- a/server/src/main/java/com/doumee/config/shiro/ShiroCredentialsMatcher.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package com.doumee.config.shiro;
-
-import com.doumee.core.utils.Utils;
-import com.doumee.dao.system.model.SystemUser;
-import com.doumee.service.system.SystemUserService;
-import org.apache.shiro.authc.AuthenticationInfo;
-import org.apache.shiro.authc.AuthenticationToken;
-import org.apache.shiro.authc.UsernamePasswordToken;
-import org.apache.shiro.authc.credential.HashedCredentialsMatcher;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Lazy;
-import org.springframework.stereotype.Component;
-
-/**
- * Shiro瀵嗙爜姣斿澶勭悊
- * @author Eva.Caesar Liu
- * @date 2023/02/14 11:14
- */
-@Component
-public class ShiroCredentialsMatcher extends HashedCredentialsMatcher {
-
-    @Lazy
-    @Autowired
-    private SystemUserService systemUserService;
-
-    @Override
-    public boolean doCredentialsMatch(AuthenticationToken token, AuthenticationInfo info) {
-        UsernamePasswordToken usernamePasswordToken = (UsernamePasswordToken) token;
-        SystemUser queryUserDto = new SystemUser();
-        queryUserDto.setUsername(usernamePasswordToken.getUsername());
-        queryUserDto.setDeleted(Boolean.FALSE);
-        SystemUser systemUser = systemUserService.findOne(queryUserDto);
-        if (systemUser == null) {
-            return Boolean.FALSE;
-        }
-        // 鍔犲瘑瀵嗙爜
-        String pwd = Utils.Secure.encryptPassword(new String(usernamePasswordToken.getPassword()), systemUser.getSalt());
-        // 姣旇緝瀵嗙爜
-        return this.equals(pwd, systemUser.getPassword());
-    }
-}
diff --git a/server/src/main/java/com/doumee/config/shiro/ShiroRealm.java b/server/src/main/java/com/doumee/config/shiro/ShiroRealm.java
deleted file mode 100644
index e88e641..0000000
--- a/server/src/main/java/com/doumee/config/shiro/ShiroRealm.java
+++ /dev/null
@@ -1,90 +0,0 @@
-package com.doumee.config.shiro;
-
-import com.doumee.core.constants.ResponseStatus;
-import com.doumee.core.exception.BusinessException;
-import com.doumee.core.model.LoginUserInfo;
-import com.doumee.core.utils.Constants;
-import com.doumee.dao.system.model.SystemPermission;
-import com.doumee.dao.system.model.SystemRole;
-import com.doumee.dao.system.model.SystemUser;
-import com.doumee.service.system.SystemPermissionService;
-import com.doumee.service.system.SystemRoleService;
-import com.doumee.service.system.SystemUserService;
-import org.apache.shiro.authc.AuthenticationException;
-import org.apache.shiro.authc.AuthenticationInfo;
-import org.apache.shiro.authc.AuthenticationToken;
-import org.apache.shiro.authc.SimpleAuthenticationInfo;
-import org.apache.shiro.authz.AuthorizationInfo;
-import org.apache.shiro.authz.SimpleAuthorizationInfo;
-import org.apache.shiro.realm.AuthorizingRealm;
-import org.apache.shiro.subject.PrincipalCollection;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Lazy;
-import org.springframework.stereotype.Component;
-
-import java.util.List;
-
-/**
- * 鑷畾涔塕ealm锛屽鐞嗚璇佸拰鏉冮檺
- * @author Eva.Caesar Liu
- * @date 2023/02/14 11:14
- */
-@Component
-public class ShiroRealm extends AuthorizingRealm {
-
-    @Lazy
-    @Autowired
-    private SystemUserService systemUserService;
-
-    @Lazy
-    @Autowired
-    private SystemRoleService systemRoleService;
-
-    @Lazy
-    @Autowired
-    private SystemPermissionService systemPermissionService;
-
-    /**
-     * 鏉冮檺澶勭悊
-     * @author Eva.Caesar Liu
-     * @date 2023/02/14 11:14
-     */
-    @Override
-    protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) {
-        LoginUserInfo loginUserInfo = (LoginUserInfo)principalCollection.getPrimaryPrincipal();
-        // 璁剧疆鐢ㄦ埛瑙掕壊鍜屾潈闄�
-        SimpleAuthorizationInfo authorizationInfo = new SimpleAuthorizationInfo();
-        authorizationInfo.addRoles(loginUserInfo.getRoles());
-        authorizationInfo.addStringPermissions(loginUserInfo.getPermissions());
-        return authorizationInfo;
-    }
-
-    /**
-     * 璁よ瘉澶勭悊
-     * @author Eva.Caesar Liu
-     * @date 2023/02/14 11:14
-     */
-    @Override
-    protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) throws AuthenticationException {
-        // 鑾峰彇鐢ㄦ埛鍚�
-        String username = authenticationToken.getPrincipal().toString();
-        // 鏍规嵁鐢ㄦ埛鍚嶆煡璇㈢敤鎴峰璞�
-        SystemUser queryDto = new SystemUser();
-        queryDto.setUsername(username);
-        queryDto.setDeleted(Boolean.FALSE);
-        SystemUser user = systemUserService.findOne(queryDto);
-        if(!Constants.equalsInteger(user.getStatus(),Constants.ZERO)){
-            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝璐﹀彿淇℃伅宸茶绂佺敤锛屽鏈夌枒闂鑱旂郴绯荤粺绠$悊鍛橈紒");
-        }
-        if (user == null) {
-            return null;
-        }
-        // 鑾峰彇鐧诲綍鐢ㄦ埛淇℃伅
-        List<SystemRole> roles = systemRoleService.findByUserId(user.getId());
-        List<SystemPermission> permissions = systemPermissionService.findByUserId(user.getId());
-        LoginUserInfo userInfo = LoginUserInfo.from(user, roles, permissions);
-        // 楠岃瘉鐢ㄦ埛
-        return new SimpleAuthenticationInfo(userInfo, user.getPassword(), this.getName());
-    }
-
-}
diff --git a/server/src/main/java/com/doumee/config/shiro/ShiroSessionDAO.java b/server/src/main/java/com/doumee/config/shiro/ShiroSessionDAO.java
deleted file mode 100644
index 17e0e60..0000000
--- a/server/src/main/java/com/doumee/config/shiro/ShiroSessionDAO.java
+++ /dev/null
@@ -1,110 +0,0 @@
-package com.doumee.config.shiro;
-
-import lombok.Data;
-import lombok.extern.slf4j.Slf4j;
-import org.apache.shiro.session.Session;
-import org.apache.shiro.session.UnknownSessionException;
-import org.apache.shiro.session.mgt.SimpleSession;
-import org.apache.shiro.session.mgt.eis.SessionDAO;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-import java.io.Serializable;
-import java.util.*;
-
-/**
- * 鑷畾涔塖hiro SessionDAO锛屽皢浼氳瘽淇℃伅瀛樺叆缂撳瓨涓�
- * @author Eva.Caesar Liu
- * @date 2023/02/14 11:14
- */
-@Data
-@Slf4j
-@Component
-public class ShiroSessionDAO implements SessionDAO {
-
-    private static final String KEY_PREFIX = "shiro:session:";
-
-    @Autowired
-    private ShiroCache shiroCache;
-
-    private int expireTime = 1800;
-
-    @Autowired
-    private ShiroTokenManager shiroTokenManager;
-
-    @Override
-    public Serializable create(Session session) {
-        if (session == null) {
-            log.error("session is null");
-            throw new UnknownSessionException("session is null");
-        }
-        Serializable sessionId = shiroTokenManager.build();
-        ((SimpleSession)session).setId(sessionId);
-        this.saveSession(session);
-        return sessionId;
-    }
-
-    @Override
-    public Session readSession(Serializable sessionId) throws UnknownSessionException{
-        if (sessionId == null) {
-            log.warn("session id is null");
-            return null;
-        }
-        if (sessionId instanceof String) {
-            // 瀵筍essionId杩涜楠岃瘉锛堝彲鐢ㄤ簬闃叉Session鎹曡幏銆佹毚鍔涙崟鎹夌瓑涓�绯诲垪瀹夊叏闂锛屾渶缁堝畨鍏ㄦ�у彇鍐充簬check濡備綍瀹炵幇锛�
-            shiroTokenManager.check((String) sessionId);
-        }
-        log.debug("read session from cache");
-        Session session = getSessionFromCache(sessionId);
-        if (session == null) {
-            throw new UnknownSessionException("There is no session with id [" + sessionId + "]");
-        }
-        return session;
-    }
-
-    @Override
-    public void update(Session session) throws UnknownSessionException {
-        this.saveSession(session);
-    }
-
-    @Override
-    public void delete(Session session) {
-        if (session != null && session.getId() != null) {
-            shiroCache.remove(KEY_PREFIX + session.getId());
-        }
-    }
-
-    @Override
-    public Collection<Session> getActiveSessions() {
-        Set<Session> sessions = new HashSet<>();
-        Set<Object> keys = shiroCache.keys();
-        if (keys != null && keys.size() > 0) {
-            Iterator iter = keys.iterator();
-            while(iter.hasNext()) {
-                sessions.add((Session) shiroCache.get(iter.next()));
-            }
-        }
-        return sessions;
-    }
-
-    private void saveSession(Session session) throws UnknownSessionException {
-        if (session == null || session.getId() == null) {
-            log.error("session or session id is null");
-            throw new UnknownSessionException("session or session id is null");
-        }
-        shiroCache.put(KEY_PREFIX + session.getId(), (SimpleSession)session, expireTime);
-    }
-
-    private Session getSessionFromCache (Serializable sessionId) {
-        Serializable object = shiroCache.get(KEY_PREFIX + sessionId);
-        Session session = null;
-        if (object != null) {
-            session = (Session)shiroCache.get(KEY_PREFIX + sessionId);
-        }
-        return session;
-    }
-
-    public void setExpireTime (int expireTime) {
-        this.expireTime = expireTime;
-    }
-}
diff --git a/server/src/main/java/com/doumee/config/shiro/ShiroSessionManager.java b/server/src/main/java/com/doumee/config/shiro/ShiroSessionManager.java
deleted file mode 100644
index 7024277..0000000
--- a/server/src/main/java/com/doumee/config/shiro/ShiroSessionManager.java
+++ /dev/null
@@ -1,86 +0,0 @@
-package com.doumee.config.shiro;
-
-import lombok.extern.slf4j.Slf4j;
-import org.apache.shiro.session.Session;
-import org.apache.shiro.session.mgt.DefaultSessionManager;
-import org.apache.shiro.session.mgt.SessionContext;
-import org.apache.shiro.session.mgt.SessionKey;
-import org.apache.shiro.web.servlet.Cookie;
-import org.apache.shiro.web.servlet.ShiroHttpServletRequest;
-import org.apache.shiro.web.servlet.SimpleCookie;
-import org.apache.shiro.web.session.mgt.WebSessionManager;
-import org.apache.shiro.web.util.WebUtils;
-
-import javax.servlet.ServletRequest;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import java.io.Serializable;
-
-/**
- * 鑷畾涔変細璇濈鐞嗗櫒
- * @author Eva.Caesar Liu
- * @date 2023/02/14 11:14
- */
-@Slf4j
-public class ShiroSessionManager extends DefaultSessionManager implements WebSessionManager {
-
-    private static final String AUTH_TOKEN = "eva-auth-token";
-
-    @Override
-    protected void onStart(Session session, SessionContext context) {
-        super.onStart(session, context);
-        if (!WebUtils.isHttp(context)) {
-            log.debug("SessionContext argument is not Http compatible or does not have an Http request/response pair. No session ID cookie will be set.");
-            return;
-        }
-        HttpServletRequest request = WebUtils.getHttpRequest(context);
-        HttpServletResponse response = WebUtils.getHttpResponse(context);
-        Serializable sessionId = session.getId();
-        this.storeSessionId(sessionId, request, response);
-        request.removeAttribute(ShiroHttpServletRequest.REFERENCED_SESSION_ID_SOURCE);
-        request.setAttribute(ShiroHttpServletRequest.REFERENCED_SESSION_IS_NEW, Boolean.TRUE);
-    }
-
-    @Override
-    public Serializable getSessionId(SessionKey key) {
-        Serializable sessionId = super.getSessionId(key);
-        if (sessionId == null && WebUtils.isWeb(key)) {
-            ServletRequest servletRequest = WebUtils.getRequest(key);
-            if (!(servletRequest instanceof HttpServletRequest)) {
-                log.trace("Can not get sessionId from header, the request is not HttpServletRequest");
-                return null;
-            }
-            HttpServletRequest request = (HttpServletRequest) servletRequest;
-            // 浠巆ookie涓幏鍙栬璇�
-            javax.servlet.http.Cookie[] cookies = request.getCookies();
-            if (cookies != null) {
-                for (javax.servlet.http.Cookie cookie : cookies) {
-                    if (AUTH_TOKEN.equals(cookie.getName())) {
-                        return cookie.getValue();
-                    }
-                }
-            }
-            // 浠巋eader涓幏鍙栬璇�
-            return request.getHeader(AUTH_TOKEN);
-        }
-        return sessionId;
-    }
-
-    @Override
-    public boolean isServletContainerSessions() {
-        return false;
-    }
-
-    private void storeSessionId(Serializable currentId, HttpServletRequest request, HttpServletResponse response) {
-        if (currentId == null) {
-            String msg = "sessionId cannot be null when persisting for subsequent requests.";
-            throw new IllegalArgumentException(msg);
-        }
-        Cookie cookie = new SimpleCookie(AUTH_TOKEN);
-        cookie.setHttpOnly(false);
-        String idString = currentId.toString();
-        cookie.setValue(idString);
-        cookie.saveTo(request, response);
-        log.trace("Set session ID cookie for session with id {}", idString);
-    }
-}
diff --git a/server/src/main/java/com/doumee/config/shiro/ShiroTokenManager.java b/server/src/main/java/com/doumee/config/shiro/ShiroTokenManager.java
deleted file mode 100644
index 00997d1..0000000
--- a/server/src/main/java/com/doumee/config/shiro/ShiroTokenManager.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package com.doumee.config.shiro;
-
-import com.doumee.core.exception.UnSafeSessionException;
-import org.springframework.stereotype.Component;
-
-import java.util.UUID;
-
-/**
- * 榛樿Token绠$悊鍣�
- * @author Eva.Caesar Liu
- * @date 2023/02/14 11:14
- */
-@Component
-public class ShiroTokenManager {
-
-    String build() {
-        return UUID.randomUUID().toString();
-    }
-
-    void check(String token) throws UnSafeSessionException {
-        if (token == null || token.length() != 36) {
-            throw new UnSafeSessionException();
-        }
-    }
-}
diff --git a/server/src/main/java/com/doumee/config/swagger/SwaggerConfig.java b/server/src/main/java/com/doumee/config/swagger/SwaggerConfig.java
deleted file mode 100644
index 6e902c1..0000000
--- a/server/src/main/java/com/doumee/config/swagger/SwaggerConfig.java
+++ /dev/null
@@ -1,98 +0,0 @@
-package com.doumee.config.swagger;
-
-import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j;
-import com.google.common.base.Function;
-import com.google.common.base.Optional;
-import java.util.function.Predicate;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import springfox.documentation.RequestHandler;
-import springfox.documentation.builders.ApiInfoBuilder;
-import springfox.documentation.builders.PathSelectors;
-import springfox.documentation.oas.annotations.EnableOpenApi;
-import springfox.documentation.service.ApiInfo;
-import springfox.documentation.spi.DocumentationType;
-import springfox.documentation.spring.web.plugins.Docket;
-
-/**
- * Swagger閰嶇疆
- * @author Eva.Caesar Liu
- * @date 2022/03/11 10:24
- */
-@Configuration
-@EnableOpenApi
-@EnableKnife4j
-public class SwaggerConfig {
-
-    @Value("${swagger.host:}")
-    private String host;
-
-    @Value("${swagger.title:鎺ュ彛鏂囨。}")
-    private String title;
-
-    @Value("${swagger.description:}")
-    private String description;
-
-    @Value("${project.version:}")
-    private String version;
-
-    @Bean
-    public ApiInfo getApiInfo() {
-        return new ApiInfoBuilder()
-                .title(title)
-                .description(description)
-                .version(version)
-                .build();
-    }
-    @Bean
-    public Docket getDocket() {
-        return new Docket(DocumentationType.SWAGGER_2)
-                .apiInfo(this.getApiInfo()).groupName("銆愮郴缁熺鐞嗘帴鍙PI銆�")
-                .host(host)
-                .select()
-                .apis( basePackage("com.doumee.api.system;com.doumee.api.business;"))
-                // 璁剧疆闇�瑕佽鎵弿鐨勭被锛岃繖閲岃缃负娣诲姞浜咢Api娉ㄨВ鐨勭被
-//                .apis(RequestHandlerSelectors.withClassAnnotation(Api.class))
-                .paths(PathSelectors.any())
-                .build();
-    }
-    @Bean
-    public Docket getDocket1() {
-        return new Docket(DocumentationType.SWAGGER_2)
-            .apiInfo(this.getApiInfo()).groupName("銆愬叕鍏辨帴鍙PI銆�")
-            .host(host)
-            .select()
-            .apis( basePackage("com.doumee.api.common"))
-            // 璁剧疆闇�瑕佽鎵弿鐨勭被锛岃繖閲岃缃负娣诲姞浜咢Api娉ㄨВ鐨勭被
-//                .apis(RequestHandlerSelectors.withClassAnnotation(Api.class))
-            .paths(PathSelectors.any())
-            .build();
-    }
-    /**
-     * 閲嶅啓basePackage鏂规硶锛屼娇鑳藉瀹炵幇澶氬寘璁块棶锛屽鍒惰创涓婂幓
-     * @author  teavamc
-     * @date 2019/1/26
-     * @return com.google.common.base.Predicate<springfox.documentation.RequestHandler>
-     */
-    public static Predicate<RequestHandler> basePackage(String basePackage) {
-        return input -> declaringClass(input).transform(handlerPackage(basePackage)).or(true);
-    }
-
-    private static Function<Class<?>, Boolean> handlerPackage(String basePackage)     {
-        return input -> {
-            // 寰幆鍒ゆ柇鍖归厤
-            for (String strPackage : basePackage.split(";")) {
-                boolean isMatch = input.getPackage().getName().startsWith(strPackage);
-                if (isMatch) {
-                    return true;
-                }
-            }
-            return false;
-        };
-    }
-
-    private static Optional<? extends Class<?>> declaringClass(RequestHandler input) {
-        return Optional.fromNullable(input.declaringClass());
-    }
-}
diff --git a/server/src/main/java/com/doumee/config/swagger/SwaggerInterceptor.java b/server/src/main/java/com/doumee/config/swagger/SwaggerInterceptor.java
deleted file mode 100644
index 07629b1..0000000
--- a/server/src/main/java/com/doumee/config/swagger/SwaggerInterceptor.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package com.doumee.config.swagger;
-
-import java.io.IOException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Component;
-import org.springframework.web.servlet.HandlerInterceptor;
-
-/**
- * Swagger鎷︽埅鍣�
- * @author Eva.Caesar Liu
- * @date 2022/04/18 18:12
- */
-@Slf4j
-@Component
-public class SwaggerInterceptor implements HandlerInterceptor {
-
-    @Value("${swagger.enabled:false}")
-    private Boolean enabledSwagger;
-
-    @Value("${swagger.redirect-uri:/}")
-    private String redirectUri;
-
-    @Override
-    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
-        if (!enabledSwagger) {
-            String uri = request.getContextPath();
-            if (StringUtils.isNotBlank(redirectUri))
-                uri = request.getContextPath() + redirectUri;
-            if (StringUtils.isBlank(uri))
-                uri = "/";
-            try {
-                response.sendRedirect(uri);
-            } catch (IOException e) {
-                log.error(String.format("Redirect to '%s' for swagger throw an exception : %s", uri, e.getMessage()), e);
-            }
-            return Boolean.FALSE;
-        }
-        return Boolean.TRUE;
-    }
-}
diff --git a/server/src/main/java/com/doumee/core/utils/Constants.java b/server/src/main/java/com/doumee/core/utils/Constants.java
deleted file mode 100644
index ca55038..0000000
--- a/server/src/main/java/com/doumee/core/utils/Constants.java
+++ /dev/null
@@ -1,726 +0,0 @@
-package com.doumee.core.utils;
-
-import org.apache.commons.collections4.CollectionUtils;
-import org.apache.commons.lang3.StringUtils;
-
-import java.io.File;
-import java.math.BigDecimal;
-import java.net.URLDecoder;
-import java.util.*;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-public class Constants {
-
-
-    public static final int ZERO = 0 ;
-    public static final int ONE = 1 ;
-    public static final int TWO = 2 ;
-    public static final int THREE = 3 ;
-    public static final int SEVEN = 7 ;
-
-    public static final String ACCESS_ID="ACCESS_ID";
-    public static final String BUCKETNAME = "BUCKETNAME";
-    public static final String OSS = "OSS";
-    public static final String ACCESS_KEY = "ACCESS_KEY";
-    public static final String ENDPOINT = "ENDPOINT";
-    public static final String RESOURCE_PATH = "RESOURCE_PATH";
-
-
-    public static final String SYSTEM ="SYSTEM";
-    public static final String GOODS_IMG_DIR ="GOODS_IMG_DIR";
-    public static final String CREDIT_CODE_REGEX = "[0-9A-HJ-NPQRTUWXY]{2}\\d{6}[0-9A-HJ-NPQRTUWXY]{10}";
-
-
-
-    public static final String  ROOT_PATH="ROOT_PATH";//鏈湴鏂囦欢涓婁紶鍦板潃閰嶇疆
-    public static final String  FILE_DIR="FILE_DIR";//鏈湴鏂囦欢璁块棶鍦板潃閰嶇疆
-    public static final String  HOME_IMAGE="HOME_IMAGE";//H5 棣栭〉鍥�
-
-    public static final String PROJECTS = "PROJECTS";
-    /**
-     * 浼佷笟鏁版嵁鏉ユ簮 0骞冲彴娉ㄥ唽 1鍚庡彴瀵煎叆
-     */
-    public interface ORIGIN{
-        public static final  int platformRegister  = 0;
-        public static final  int backstageImport  = 1;
-    }
-
-    public static BigDecimal formatBigdecimal(BigDecimal d) {
-        if (d == null) {
-            d = new BigDecimal(0.0);
-        }
-        //淇濈暀涓や綅灏忔暟涓斿洓鑸嶄簲鍏�
-//        d = d.setScale(2, BigDecimal.ROUND_HALF_UP);
-        return  d;
-    }
-    public static BigDecimal formatBigdecimal4Float(BigDecimal d) {
-        if (d == null) {
-            d = new BigDecimal(0.0);
-        }
-        //淇濈暀涓や綅灏忔暟涓斿洓鑸嶄簲鍏�
-        d = d.setScale(4, BigDecimal.ROUND_HALF_UP);
-        return  d;
-    }
-
-    public static boolean equalsObject(Object a, Object b) {
-        if (a == null && b == null) {
-            return true;
-        }
-        if (a != null){
-            return a.equals(b);
-        }
-        return false;
-    }
-
-
-    public static boolean equalsInteger(Integer a, Integer b) {
-        if (formatIntegerNum(a) == formatIntegerNum(b)) {
-            return true;
-        }
-        return false;
-    }
-
-    public static int formatIntegerNum(Integer d) {
-        if (d == null) {
-            d = 0;
-        }
-        return d.intValue();
-    }
-    /**
-     * 鐘舵�� 0宸蹭繚瀛樸��1寰呭鏍搞��2瀹℃牳閫氳繃銆�3閫�鍥炰慨鏀广��4瀹℃牳椹冲洖銆�5寰呮湇鍔℃満鏋勭‘璁ゃ��6鏈嶅姟鏈烘瀯鎷掔粷銆�7宸插垎閰嶆湇鍔℃満鏋勩��8璇婃柇涓�
-     * 锛堟垚鍔熶笂浼犵涓�浠芥湇鍔¤祫鏂欙級銆�9鏈嶅姟瀹屾垚銆�10宸插垎閰嶈瘎鍒嗕笓瀹躲��11宸插畬鎴愶紙涓撳涓婁紶璇勫垎锛� 12閫�鍥炰慨鏀逛腑 13 宸插畬鎴愰��鍥炰慨鏀�
-     */
-    public  enum DeclareStatus {
-
-        EDITING(0, "宸蹭繚瀛�", "宸蹭繚瀛�"),
-        CHECK_WAIT(1, "寰呭鏍�", "寰呭鏍�"),
-        CHECK_PASS(2, "瀹℃牳閫氳繃", "瀹℃牳閫氳繃"),
-        CHECK_EDIT(3, "閫�鍥炰慨鏀�", "閫�鍥炰慨鏀�"),
-        CHECK_BACK(4, "瀹℃牳椹冲洖", "瀹℃牳椹冲洖"),
-        WAIT_SO_COMFIRM(5, "寰呮湇鍔℃満鏋勭‘璁�", "寰呮湇鍔℃満鏋勭‘璁�"),
-        SO_BACK(6, "鏈嶅姟鏈烘瀯鎷掔粷", "鏈嶅姟鏈烘瀯鎷掔粷"),
-        SELECTED_SO(7, "宸插垎閰嶆湇鍔℃満鏋�", "宸插垎閰嶆湇鍔℃満鏋�"),
-        SERVING(8, "璇婃柇涓�", "璇婃柇涓�"),
-        SERVICE_DONE(9, "鏈嶅姟瀹屾垚", "鏈嶅姟瀹屾垚"),
-        SELECT_EXPERT(10, "宸插垎閰嶈瘎鍒嗕笓瀹�", "宸插垎閰嶈瘎鍒嗕笓瀹�"),
-        DONE(11, "宸插畬鎴�", "宸插畬鎴�"),
-        BACK_SERVER_ING(12, "閫�鍥炰慨鏀�", "璇婃柇鏈嶅姟閫�鍥炰慨鏀�"),
-        BACK_SERVER_DONE(13, "閫�鍥炰慨鏀瑰畬鎴�", "璇婃柇鏈嶅姟閫�鍥炲凡淇敼"),
-        ;
-        // 鎴愬憳鍙橀噺
-        private String name;
-        private int key;
-        private String noteinfo;// 鎻忚堪
-
-        // 鏋勯�犳柟娉�
-        DeclareStatus(int key, String name, String noteinfo) {
-            this.name = name;
-            this.key = key;
-            this.noteinfo = noteinfo;
-        }
-
-        // 鏅�氭柟娉�
-        public static String getName(int index) {
-            for (DeclareStatus c : DeclareStatus.values()) {
-                if (c.getKey() == index) {
-                    return c.name;
-                }
-            }
-            return null;
-        }
-
-        // 鏅�氭柟娉�
-        public static String getNoteinfo(int index) {
-            for (DeclareStatus c : DeclareStatus.values()) {
-                if (c.getKey() == index) {
-                    return c.noteinfo;
-                }
-            }
-            return "-";
-        }
-
-        // 鏅�氭柟娉�
-        public static String getInfo(int index) {
-            for (DeclareStatus c : DeclareStatus.values()) {
-                if (c.getKey() == index) {
-                    return c.noteinfo;
-                }
-            }
-            return null;
-        }
-
-        // get set 鏂规硶
-        public String getName() {
-            return name;
-        }
-
-        public void setName(String name) {
-            this.name = name;
-        }
-
-        public int getKey() {
-            return key;
-        }
-
-        public void setKey(int key) {
-            this.key = key;
-        }
-
-        public String getNoteinfo() {
-            return noteinfo;
-        }
-
-    }
-
-    public  enum DeclareCheckType{
-        EDITING(0, "宸蹭繚瀛�", "宸蹭繚瀛�"),
-        CHECK_WAIT(1, "寰呭鏍�", "寰呭鏍�"),
-        CHECK_PASS(2, "瀹℃牳閫氳繃", "瀹℃牳閫氳繃"),
-        CHECK_EDIT(3, "閫�鍥炰慨鏀�", "閫�鍥炰慨鏀�"),
-        CHECK_BACK(4, "瀹℃牳椹冲洖", "瀹℃牳椹冲洖"),
-        WAIT_SO_COMFIRM(5, "寰呮湇鍔℃満鏋勭‘璁�", "寰呮湇鍔℃満鏋勭‘璁�"),
-        SO_BACK(6, "鏈嶅姟鏈烘瀯鎷掔粷", "鏈嶅姟鏈烘瀯鎷掔粷"),
-        SELECTED_SO(7, "宸插垎閰嶆湇鍔℃満鏋�", "宸插垎閰嶆湇鍔℃満鏋�"),
-        SERVING(8, "璇婃柇涓�", "璇婃柇涓�"),
-        SERVICE_DONE(9, "鏈嶅姟瀹屾垚", "鏈嶅姟瀹屾垚"),
-        SELECT_EXPERT(10, "宸插垎閰嶈瘎鍒嗕笓瀹�", "宸插垎閰嶈瘎鍒嗕笓瀹�"),
-        DONE(11, "宸插畬鎴�", "宸插畬鎴�"),
-        ;
-        // 鎴愬憳鍙橀噺
-        private String name;
-        private int key;
-        private String noteinfo;// 鎻忚堪
-
-        // 鏋勯�犳柟娉�
-        DeclareCheckType(int key, String name, String noteinfo) {
-            this.name = name;
-            this.key = key;
-            this.noteinfo = noteinfo;
-        }
-
-        // 鏅�氭柟娉�
-        public static String getName(int index) {
-            for (ProjectRecord c : ProjectRecord.values()) {
-                if (c.getKey() == index) {
-                    return c.name;
-                }
-            }
-            return null;
-        }
-
-        // 鏅�氭柟娉�
-        public static String getInfo(int index) {
-            for (ProjectRecord c : ProjectRecord.values()) {
-                if (c.getKey() == index) {
-                    return c.noteinfo;
-                }
-            }
-            return null;
-        }
-
-        // get set 鏂规硶
-        public String getName() {
-            return name;
-        }
-
-        public void setName(String name) {
-            this.name = name;
-        }
-
-        public int getKey() {
-            return key;
-        }
-
-        public void setKey(int key) {
-            this.key = key;
-        }
-
-        public String getNoteinfo() {
-            return noteinfo;
-        }
-    }
-
-    public enum DeclareHistoryType{
-
-        EDITING(0,"淇濆瓨","淇濆瓨"),
-        CHECK_WAIT_COUNTY(1,"寰呭幙鍖哄鏍�",""),
-        CHECK_PASS_COUNTY(2,"鍘垮尯瀹℃牳閫氳繃",""),
-        CHECK_EDIT_COUNTY(3,"鍘垮尯閫�鍥炰慨鏀�",""),
-        CHECK_BACK_COUNTY(4,"鍘垮尯瀹℃牳椹冲洖",""),
-        TWO_WAY_WAIT_SO_COMFIRM(5,"鍙岄�夊緟鏈嶅姟鏈烘瀯纭",""),
-        WO_WAY_WAIT_SO_BACK(6,"鍙岄�夋湇鍔℃満鏋勬嫆缁�",""),
-        SELECTED_SO(7,"宸插垎閰嶆湇鍔℃満鏋�",""),
-        SO_SERVICE(8,"鏈嶅姟鏈烘瀯璇婃柇",""),
-        SO_SERVICE_DONE(9,"鏈嶅姟鏈烘瀯鏈嶅姟瀹屾垚",""),
-        SELECT_EXPERT(10,"鍒嗛厤璇勫垎涓撳",""),
-        EXPERT_SCORE(11,"涓撳瀹屾垚璇勫垎","")
-        ;
-
-        private int key;
-        private String name;
-
-        private String noteInfo;
-
-        DeclareHistoryType(int key, String name, String noteInfo) {
-            this.key = key;
-            this.name = name;
-            this.noteInfo = noteInfo;
-        }
-
-        public int getKey() {
-            return key;
-        }
-
-        public void setKey(int key) {
-            this.key = key;
-        }
-
-        public String getName() {
-            return name;
-        }
-
-        public void setName(String name) {
-            this.name = name;
-        }
-
-        public String getNoteInfo() {
-            return noteInfo;
-        }
-
-        public void setNoteInfo(String noteInfo) {
-            this.noteInfo = noteInfo;
-        }
-    }
-    /**
-     * 鍏宠仈瀵硅薄绫诲瀷 0浼佷笟钀ヤ笟鎵х収 1宸ュ晢鍙樻洿鐧昏  2椤圭洰鐢虫姤浼佷笟璧勬枡 3浼佷笟璇勫垎琛� 4璇婃柇鎶ュ憡 5璇婃柇鏈嶅姟璧勬枡 6涓撳璇勫垎鎶ュ憡 7鏈嶅姟鏈烘瀯涓婁紶鏈嶅姟璧勬枡 8浼佷笟璧勮川 9浼佷笟涓爣閫氱煡涔� 10椤圭洰鍥剧墖
-     */
-    public  enum MultiFile{
-        BUSINESS_LICENSE(0, "浼佷笟钀ヤ笟鎵х収", "浼佷笟钀ヤ笟鎵х収"),
-        BUSINESS_CHANGE(1, "宸ュ晢鍙樻洿鐧昏", "宸ュ晢鍙樻洿鐧昏"),
-        BUSINESS_DECLARE(2, "椤圭洰鐢虫姤浼佷笟璧勬枡", "椤圭洰鐢虫姤浼佷笟璧勬枡"),
-        BUSINESS_SCORE(3, "浼佷笟璇勫垎琛�", "浼佷笟璇勫垎琛�"),
-        BUSINESS_DIAGNOSIS(4, "璇婃柇鎶ュ憡", "璇婃柇鎶ュ憡"),
-        BUSINESS_DIA_SERVICE(5, "璇婃柇鏈嶅姟璧勬枡", "璇婃柇鏈嶅姟璧勬枡"),
-        BUSINESS_EXPERT(6, "涓撳璇勫垎鎶ュ憡", "涓撳璇勫垎鎶ュ憡"),
-        BUSINESS_UP_SERVICE(7, "鏈嶅姟鏈烘瀯涓婁紶鏈嶅姟璧勬枡", "鏈嶅姟鏈烘瀯涓婁紶鏈嶅姟璧勬枡"),
-        BUSINESS_ZZ(8, "浼佷笟璧勮川", "浼佷笟璧勮川"),
-        BUSINESS_NOTICE(9, "浼佷笟涓爣閫氱煡涔�", "浼佷笟涓爣閫氱煡涔�"),
-        BUSINESS_PROURL(10, "椤圭洰鍥剧墖", "椤圭洰鍥剧墖"),
-
-        COMPANY_CHANGE_LICENSE(11,"鍙樻洿浼佷笟钀ヤ笟鎵х収","鍙樻洿浼佷笟钀ヤ笟鎵х収"),
-
-        COMPANY_CHANGE_CHANGE(12,"鍙樻洿宸ュ晢鍙樻洿鐧昏","鍙樻洿宸ュ晢鍙樻洿鐧昏"),
-        BUSINESS_HC(13, "缁煎悎鏈嶅姟鍗曚綅鏍告煡璧勬枡", "缁煎悎鏈嶅姟鍗曚綅鏍告煡璧勬枡"),
-
-        BUSINESS_UP_EXTRA(14, "鏈嶅姟鏈烘瀯涓婁紶鏈嶅姟琛ュ厖璧勬枡", "鏈嶅姟鏈烘瀯涓婁紶鏈嶅姟琛ュ厖璧勬枡"),
-
-
-        ;
-        // 鎴愬憳鍙橀噺
-        private String name;
-        private int key;
-        private String noteinfo;// 鎻忚堪
-
-        // 鏋勯�犳柟娉�
-        MultiFile(int key, String name, String noteinfo) {
-            this.name = name;
-            this.key = key;
-            this.noteinfo = noteinfo;
-        }
-
-        // 鏅�氭柟娉�
-        public static String getName(int index) {
-            for (ProjectRecord c : ProjectRecord.values()) {
-                if (c.getKey() == index) {
-                    return c.name;
-                }
-            }
-            return null;
-        }
-
-        // 鏅�氭柟娉�
-        public static String getInfo(int index) {
-            for (ProjectRecord c : ProjectRecord.values()) {
-                if (c.getKey() == index) {
-                    return c.noteinfo;
-                }
-            }
-            return null;
-        }
-
-        // get set 鏂规硶
-        public String getName() {
-            return name;
-        }
-
-        public void setName(String name) {
-            this.name = name;
-        }
-
-        public int getKey() {
-            return key;
-        }
-
-        public void setKey(int key) {
-            this.key = key;
-        }
-
-        public String getNoteinfo() {
-            return noteinfo;
-        }
-
-        private volatile static Set<Integer> multifileCompanyType;
-
-        private volatile static Set<Integer> multifileProjectType;
-
-        public static Set<Integer> multifileCompanyType(){
-            //		0浼佷笟钀ヤ笟鎵х収 1宸ュ晢鍙樻洿鐧昏 7浼佷笟璧勮川 8浼佷笟涓爣閫氱煡涔� 11 鍙樻洿浼佷笟钀ヤ笟鎵х収 12 鍙樻洿宸ュ晢鍙樻洿鐧昏
-
-            if (CollectionUtils.isEmpty(multifileCompanyType)){
-                synchronized (MultiFile.class){
-                    if (CollectionUtils.isEmpty(multifileCompanyType)){
-                        multifileCompanyType = new HashSet<>();
-                        multifileCompanyType.add(0);
-                        multifileCompanyType.add(1);
-                        multifileCompanyType.add(8);
-                        multifileCompanyType.add(9);
-                        multifileCompanyType.add(11);
-                        multifileCompanyType.add(12);
-                    }
-                }
-            }
-            return multifileCompanyType;
-        }
-
-        public static Set<Integer> multifileProjectType(){
-
-            //2椤圭洰鐢虫姤浼佷笟璧勬枡 3浼佷笟璇勫垎琛� 4璇婃柇鎶ュ憡 5璇婃柇鏈嶅姟璧勬枡 6涓撳璇勫垎鎶ュ憡 7鏈嶅姟鏈烘瀯涓婁紶鏈嶅姟璧勬枡
-            if (CollectionUtils.isEmpty(multifileProjectType)){
-                synchronized (MultiFile.class){
-                    if(CollectionUtils.isEmpty(multifileProjectType)){
-                        multifileProjectType = new HashSet<>();
-                        multifileProjectType.add(2);
-                        multifileProjectType.add(3);
-                        multifileProjectType.add(4);
-                        multifileProjectType.add(5);
-                        multifileProjectType.add(6);
-                        multifileProjectType.add(7);
-                        multifileProjectType.add(10);
-                        multifileProjectType.add(13);
-                    }
-                }
-            }
-            return multifileProjectType;
-        }
-
-        public static Integer multifileType(String name){
-
-            boolean pic = Arrays.asList(".jpg", "png", "jpeg").stream().anyMatch(s -> name.contains(s));
-            if (pic){
-                return Constants.ZERO;
-            }
-            boolean  ivc = Arrays.asList(".avi", "mp4").stream().anyMatch(s -> name.contains(s));
-            if (ivc){
-                return Constants.ONE;
-            }
-            return Constants.TWO;
-
-        }
-
-
-    }
-
-    public static void main(String[] args) {
-        File[] files = null;
-        String path ="D:\\dist\\imgs\\21";
-        if(StringUtils.isNotBlank(path)){
-            File dir =new File(path);
-            if(dir!=null && dir.isDirectory()){
-                files = dir.listFiles();
-                if(files!=null && files.length>0){
-                    for(File f : files){
-                        System.out.println(f.getPath());
-                    }
-                }
-            }
-        }
-    }
-    /**
-     * 鐢ㄦ埛绫诲瀷 0绯荤粺鐢ㄦ埛 1浼佷笟鐢ㄦ埛 2鏈嶅姟鏈烘瀯绠$悊鍛� 3鏈嶅姟鏈烘瀯瀛愯处鍙� 4缁煎悎鏈嶅姟鍗曚綅绠$悊鍛� 5缁煎悎鏈嶅姟鍗曚綅瀛愯处鍙� 6涓撳 7鍘垮尯鐢ㄦ埛 8甯傚眬鐢ㄦ埛
-     */
-    public  enum UserType {
-
-        SYSTEM(0, "绯荤粺鐢ㄦ埛", "绠$悊鍛�",Arrays.asList(0,1,2,3,4,5,6,7,8,9,10,11)),
-        COMPANY(1, "浼佷笟鐢ㄦ埛", "浼佷笟",Arrays.asList(-1)),
-        SO_ADMIN(2, "鏈嶅姟鏈烘瀯绠$悊鍛�", "鏈嶅姟鏈烘瀯",Arrays.asList(-1)),
-        SO_CHILD(3, "鏈嶅姟鏈烘瀯瀛愯处鍙�", "鏈嶅姟鏈烘瀯",Arrays.asList(-1)),
-        SD_ADMIN(4, "缁煎悎鏈嶅姟鍗曚綅绠$悊鍛�", "缁煎悎鏈嶅姟鍗曚綅",Arrays.asList(0,1,2,3,4,5,6,7,8,9,10,11)),
-        SD_CHILD(5, "缁煎悎鏈嶅姟鍗曚綅瀛愯处鍙�", "缁煎悎鏈嶅姟鍗曚綅",Arrays.asList(0,1,2,3,4,5,6,7,8,9,10,11)),
-        EXPERT(6, "涓撳", "涓撳", Arrays.asList(-1)),
-        AREA(7, "鍘垮尯鐢ㄦ埛", "鍘垮尯",Arrays.asList(0,1,2,3,4,5,6,7,8,9)),
-        SJ(8, "甯傚眬鐢ㄦ埛", "甯傚眬",Arrays.asList(0,1,2,3,4,5,6,7,8,9,10,11)),
-        SJ_CHILD(9, "甯傚眬瀛愯处鍙�", "甯傚眬瀛愯处鍙�",Arrays.asList(0,1,2,3,4,5,6,7,8,9,10,11)),
-        ;
-        // 鎴愬憳鍙橀噺
-        private String name;
-        private int key;
-        private List<Integer> historyStatus;
-        private String noteinfo;// 鎻忚堪
-
-        // 鏋勯�犳柟娉�
-        UserType(int key, String name, String noteinfo,List<Integer> historyStatus) {
-            this.name = name;
-            this.key = key;
-            this.noteinfo = noteinfo;
-            this.historyStatus=historyStatus;
-        }
-
-        // 鏅�氭柟娉�
-        public static String getName(int index) {
-            for (UserType c : UserType.values()) {
-                if (c.getKey() == index) {
-                    return c.name;
-                }
-            }
-            return null;
-        }
-
-        // 鏅�氭柟娉�
-        public static String getInfo(int index) {
-            for (UserType c : UserType.values()) {
-                if (c.getKey() == index) {
-                    return c.noteinfo;
-                }
-            }
-            return null;
-        }
-        // 鏅�氭柟娉�
-        public static List<Integer> getHistoryStatus(int index) {
-            for (UserType c : UserType.values()) {
-                if (c.getKey() == index) {
-                    return c.historyStatus;
-                }
-            }
-            return null;
-        }
-
-        // get set 鏂规硶
-        public String getName() {
-            return name;
-        }
-
-        public void setName(String name) {
-            this.name = name;
-        }
-
-        public int getKey() {
-            return key;
-        }
-        public List<Integer> getHistoryStatus() {
-            return historyStatus;
-        }
-
-        public void setKey(int key) {
-            this.key = key;
-        }
-
-        public String getNoteinfo() {
-            return noteinfo;
-        }
-
-        /**
-         * 涓嶉渶瑕佸鎵逛慨鏀逛俊鎭鑹�
-         * @return
-         */
-        public static List<Integer> getNoCheckUserChange(){
-            return Arrays.asList(SO_ADMIN.key, AREA.key, SJ.key, EXPERT.key, SD_ADMIN.key,SYSTEM.key);
-        }
-
-        /**
-         * 鑾峰彇瀛愯处鍙风被鍨�
-         * @return
-         */
-        public static List<Integer> getSonUserType(){
-            return Arrays.asList(SO_CHILD.key, SD_CHILD.key);
-        }
-
-        /**
-         * 鑾峰彇鍏宠仈浼佷笟鐨勭敤鎴风被鍨�
-         * @return
-         */
-        public static List<Integer> getHasCompanyType(){
-            return Arrays.asList(COMPANY.key, SO_ADMIN.key, SD_ADMIN.key);
-        }
-
-    }
-
-    public  enum ProjectRecord {
-
-        COM_EDITING(0, "浼佷笟淇濆瓨鏁版嵁", "鐢� ${param2} ${param3}淇濆瓨鎴愬姛锛屽綋鍓嶈繘搴︿负 銆�${param4}銆�"),
-        COM_SUBMIT(1, "浼佷笟鎻愪氦鏁版嵁", "鐢�  ${param2} ${param3}鎻愪氦鎴愬姛锛屽綋鍓嶈繘搴︿负 銆�${param4}銆�"),
-        XQ_CHECK_PASS(2, "鍘垮尯瀹℃牳閫氳繃", "鐢�  ${param2} ${param3}瀹℃牳閫氳繃锛屽鏍稿娉ㄤ负锛�${param5}锛涘綋鍓嶈繘搴︿负 銆�${param4}銆�"),
-        XQ_CHECK_EDIT(3, "鍘垮尯瀹℃牳閫�鍥炰慨鏀�", "鐢�  ${param2} ${param3}瀹℃牳閫�鍥炰慨鏀癸紝瀹℃牳澶囨敞涓猴細${param5}锛涘綋鍓嶈繘搴︿负 銆�${param4}銆�"),
-        XQ_CHECK_BACK(4, "鍘垮尯瀹℃牳椹冲洖", "鐢�  ${param2} ${param3}瀹℃牳椹冲洖锛屽鏍稿娉ㄤ负锛�${param5}锛涘綋鍓嶈繘搴︿负 瀹℃牳椹冲洖锛屾祦绋嬬粨鏉熴��"),
-        COM_SELECT_SO(5, "浼佷笟閫夋嫨鏈嶅姟鏈烘瀯", "鐢�  ${param2} ${param3}閫夋嫨 ${param5}锛屽綋鍓嶈繘搴︿负 銆�${param4}銆�"),
-        SO_PASS(6, "鏈嶅姟鏈烘瀯纭鏈嶅姟", "鐢�  ${param2} ${param3}纭鏈嶅姟锛屽綋鍓嶈繘搴︿负 銆�${param4}銆�"),
-        SO_BACK(7, "鏈嶅姟鏈烘瀯鎷掔粷鏈嶅姟", "鐢�  ${param2} ${param3}鎷掔粷鏈嶅姟锛屽綋鍓嶈繘搴︿负 銆�${param4}銆�"),
-        SJ_SELECT_SO(8, "甯傚眬鍒嗛厤鏈嶅姟鏈烘瀯", "鐢�  ${param2} ${param3}瀹屾垚鍒嗛厤鏈嶅姟鏈烘瀯锛屽綋鍓嶈繘搴︿负 銆�${param4}銆�"),
-        SD_SELECT_SO(9, "缁煎悎鏈嶅姟鍗曚綅鍒嗛厤鏈嶅姟鏈烘瀯", "鐢�  ${param2} ${param3}瀹屾垚鍒嗛厤鏈嶅姟鏈烘瀯锛屽綋鍓嶈繘搴︿负 銆�${param4}銆�"),
-        SJ_RESELECT_SO(10, "甯傚眬閲嶆柊鍒嗛厤鏈嶅姟鏈烘瀯", "鐢�  ${param2} ${param3}瀹屾垚閲嶆柊鍒嗛厤鏈嶅姟鏈烘瀯锛屽綋鍓嶈繘搴︿负 銆�${param4}銆�"),
-        SD_RESELECT_SO(11, "缁煎悎鏈嶅姟鍗曚綅閲嶆柊鍒嗛厤鏈嶅姟鏈烘瀯", "鐢�  ${param2} ${param3}瀹屾垚閲嶆柊鍒嗛厤鏈嶅姟鏈烘瀯锛屽綋鍓嶈繘搴︿负 銆�${param4}銆�"),
-        SO_SERVICE_UPLOAD(12, "鏈嶅姟鏈烘瀯涓婁紶鏈嶅姟鏁版嵁", "鐢�  ${param2} ${param3}瀹屾垚涓婁紶鏈嶅姟鏁版嵁锛屽綋鍓嶈繘搴︿负 銆�${param4}銆�"),
-        SO_DONE_SERVICE(13, "鏈嶅姟鏈烘瀯瀹屾垚鏈嶅姟", "鐢�  ${param2} ${param3}瀹屾垚鏈嶅姟锛屽綋鍓嶈繘搴︿负 銆�${param4}銆�"),
-        SJ_SELECT_EXPERT(14, "甯傚眬鍒嗛厤璇勫垎涓撳", "鐢�  ${param2} ${param3}瀹屾垚鍒嗛厤璇勫垎涓撳锛屽綋鍓嶈繘搴︿负 銆�${param4}銆�"),
-        SD_SELECT_EXPERT(15, "缁煎悎鏈嶅姟鍗曚綅鍒嗛厤璇勫垎涓撳", "鐢�  ${param2} ${param3}瀹屾垚鍒嗛厤璇勫垎涓撳锛屽綋鍓嶈繘搴︿负 銆�${param4}銆�"),
-        SJ_RESELECT_EXPERT(16, "甯傚眬閲嶆柊鍒嗛厤璇勫垎涓撳", "鐢�  ${param2} ${param3}瀹屾垚閲嶆柊鍒嗛厤璇勫垎涓撳锛屽綋鍓嶈繘搴︿负 銆�${param4}銆�"),
-        SD_RESELECT_EXPERT(17, "缁煎悎鏈嶅姟鍗曚綅閲嶆柊鍒嗛厤璇勫垎涓撳", "鐢�  ${param2} ${param3}瀹屾垚閲嶆柊鍒嗛厤璇勫垎涓撳锛屽綋鍓嶈繘搴︿负 銆�${param4}銆�"),
-        EXPERT_SCORE(18, "涓撳涓婁紶璇勫垎", "鐢�  ${param2} ${param3}瀹屾垚璇勫垎锛屽綋鍓嶈繘搴︿负 銆�${param4}銆�"),
-        SD_SERVICE_UPLOAD(19, "缁煎悎鏈嶅姟鍗曚綅涓婁紶璇婃柇璧勬枡", "鐢�  ${param2} ${param3}瀹屾垚涓婁紶璇婃柇璧勬枡锛屽綋鍓嶈繘搴︿负 銆�${param4}銆�"),
-        SD_BACK_DONE(20, "缁煎悎鏈嶅姟鍗曚綅閫�鍥炰慨鏀�", "鐢�  ${param2} ${param3}閫�鍥炰慨鏀癸紝褰撳墠杩涘害涓� 銆�${param4}銆�"),
-
-        SO_BACK_SUBMIT(21 , "鏈嶅姟鏈烘瀯淇敼瀹屾垚鏈嶅姟", "鐢�  ${param2} ${param3}瀹屾垚鏈嶅姟锛屽綋鍓嶈繘搴︿负 銆�${param4}銆�"),
-
-        ;
-        // 鎴愬憳鍙橀噺
-        private String name;
-        private int key;
-        private String noteinfo;// 鎻忚堪
-
-        // 鏋勯�犳柟娉�
-        ProjectRecord(int key, String name, String noteinfo) {
-            this.name = name;
-            this.key = key;
-            this.noteinfo = noteinfo;
-        }
-
-        // 鏅�氭柟娉�
-        public static String getName(int index) {
-            for (ProjectRecord c : ProjectRecord.values()) {
-                if (c.getKey() == index) {
-                    return c.name;
-                }
-            }
-            return null;
-        }
-
-        // 鏅�氭柟娉�
-        public static String getInfo(int index) {
-            for (ProjectRecord c : ProjectRecord.values()) {
-                if (c.getKey() == index) {
-                    return c.noteinfo;
-                }
-            }
-            return null;
-        }
-
-        // get set 鏂规硶
-        public String getName() {
-            return name;
-        }
-
-        public void setName(String name) {
-            this.name = name;
-        }
-
-        public int getKey() {
-            return key;
-        }
-
-        public void setKey(int key) {
-            this.key = key;
-        }
-
-        public String getNoteinfo() {
-            return noteinfo;
-        }
-
-        public void setNoteinfo(String noteinfo) {
-            this.noteinfo = noteinfo;
-        }
-
-        public static String getContentWithData(ProjectRecord template, Map<String, String> params){
-            String pattern = "\\$\\{(.+?)\\}";
-            Pattern p = Pattern.compile(pattern);
-            Matcher m = p.matcher(template.noteinfo);
-            StringBuffer sb = new StringBuffer();
-            while (m.find()){
-                String key = m.group(1);
-                String value = params.get(key);
-                m.appendReplacement(sb, value == null ? "" : value);
-            }
-            m.appendTail(sb);
-            return sb.toString();
-        }
-
-    }
-
-    /**
-     * 鏁版嵁鐘舵�佹灇涓�
-     *
-     */
-    public enum Status {
-
-        /** 鐢ㄦ埛鍚敤绂佺敤鏋氫妇鍊�*/
-        ENABLE(0,"姝e父"),
-        DISABLE(1,"绂佺敤");
-
-        private  Integer value;
-        private  String des;
-
-
-        Status(Integer value, String des) {
-            this.value = value;
-            this.des = des;
-        }
-
-        public Integer getValue() {
-            return value;
-        }
-
-        public void setValue(Integer value) {
-            this.value = value;
-        }
-
-        public String getDes() {
-            return des;
-        }
-
-        public void setDes(String des) {
-            this.des = des;
-        }
-    }
-
-    public enum CompanyType{
-
-        BUSINESS_COMPANYTYPE(0,"浼佷笟"),
-
-        SERVICE_COMPANYTYPE(1,"鏈嶅姟鏈烘瀯"),
-
-        ZF_SERVICE_COMPANY(2,"缁煎悎鏈嶅姟鍗曚綅");
-
-        private  Integer value;
-        private  String des;
-
-        CompanyType(Integer value, String des) {
-            this.value = value;
-            this.des = des;
-        }
-
-        public Integer getValue() {
-            return value;
-        }
-
-        public void setValue(Integer value) {
-            this.value = value;
-        }
-
-        public String getDes() {
-            return des;
-        }
-
-        public void setDes(String des) {
-            this.des = des;
-        }
-    }
-}
diff --git a/server/src/main/java/com/doumee/dao/business/model/Brand.java b/server/src/main/java/com/doumee/dao/business/model/Brand.java
deleted file mode 100644
index a382023..0000000
--- a/server/src/main/java/com/doumee/dao/business/model/Brand.java
+++ /dev/null
@@ -1,74 +0,0 @@
-package com.doumee.dao.business.model;
-
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.doumee.core.annotation.excel.ExcelColumn;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.Data;
-import com.fasterxml.jackson.annotation.JsonFormat;
-import java.util.Date;
-
-/**
- * 鍝佺墝淇℃伅琛�
- * @author 姹熻箘韫�
- * @date 2023/05/12 13:58
- */
-@Data
-@ApiModel("鍝佺墝淇℃伅琛�")
-@TableName("`brand`")
-public class Brand {
-
-    @TableId(type = IdType.AUTO)
-    @ApiModelProperty(value = "涓婚敭", example = "1")
-    @ExcelColumn(name="涓婚敭")
-    private Integer id;
-
-    @ApiModelProperty(value = "鍒涘缓浜虹紪鐮�", example = "1")
-    @ExcelColumn(name="鍒涘缓浜虹紪鐮�")
-    private Integer creator;
-
-    @ApiModelProperty(value = "鍒涘缓鏃堕棿")
-    @ExcelColumn(name="鍒涘缓鏃堕棿")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    private Date createDate;
-
-    @ApiModelProperty(value = "鏇存柊浜虹紪鐮�", example = "1")
-    @ExcelColumn(name="鏇存柊浜虹紪鐮�")
-    private Integer editor;
-
-    @ApiModelProperty(value = "鏇存柊鏃堕棿")
-    @ExcelColumn(name="鏇存柊鏃堕棿")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    private Date editDate;
-
-    @ApiModelProperty(value = "鏄惁鍒犻櫎0鍚� 1鏄�", example = "1")
-    @ExcelColumn(name="鏄惁鍒犻櫎0鍚� 1鏄�")
-    private Integer isdeleted;
-
-    @ApiModelProperty(value = "鍚嶇О锛堜笉鍙噸澶嶏級")
-    @ExcelColumn(name="鍚嶇О锛堜笉鍙噸澶嶏級")
-    private String name;
-
-    @ApiModelProperty(value = "澶囨敞")
-    @ExcelColumn(name="澶囨敞")
-    private String remark;
-
-    @ApiModelProperty(value = "鐘舵�� 0鍚敤 1绂佺敤", example = "1")
-    @ExcelColumn(name="鐘舵�� 0鍚敤 1绂佺敤")
-    private Integer status;
-
-    @ApiModelProperty(value = "鎺掑簭鐮�", example = "1")
-    @ExcelColumn(name="鎺掑簭鐮�")
-    private Integer sortnum;
-
-    @ApiModelProperty(value = "鍥炬爣")
-    @ExcelColumn(name="鍥炬爣")
-    private String imgurl;
-
-    @ApiModelProperty(value = "鍓嶇紑璺緞")
-    @TableField(exist = false)
-    private String prefixUrl;
-}
diff --git a/server/src/main/java/com/doumee/dao/business/model/Category.java b/server/src/main/java/com/doumee/dao/business/model/Category.java
deleted file mode 100644
index c4b968d..0000000
--- a/server/src/main/java/com/doumee/dao/business/model/Category.java
+++ /dev/null
@@ -1,109 +0,0 @@
-package com.doumee.dao.business.model;
-
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.doumee.core.annotation.excel.ExcelColumn;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.Data;
-import com.fasterxml.jackson.annotation.JsonFormat;
-import java.util.Date;
-import java.util.List;
-
-/**
- * 鍝佺被淇℃伅琛�
- * @author 姹熻箘韫�
- * @date 2023/05/12 13:58
- */
-@Data
-@ApiModel("鍝佺被淇℃伅琛�")
-@TableName("`category`")
-public class Category {
-
-    @TableId(type = IdType.AUTO)
-    @ApiModelProperty(value = "涓婚敭", example = "1")
-    @ExcelColumn(name="涓婚敭")
-    private Integer id;
-
-    @ApiModelProperty(value = "鍒涘缓浜虹紪鐮�", example = "1")
-    @ExcelColumn(name="鍒涘缓浜虹紪鐮�")
-    private Integer creator;
-
-    @ApiModelProperty(value = "鍒涘缓鏃堕棿")
-    @ExcelColumn(name="鍒涘缓鏃堕棿")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    private Date createDate;
-
-    @ApiModelProperty(value = "鏇存柊浜虹紪鐮�", example = "1")
-    @ExcelColumn(name="鏇存柊浜虹紪鐮�")
-    private Integer editor;
-
-    @ApiModelProperty(value = "鏇存柊鏃堕棿")
-    @ExcelColumn(name="鏇存柊鏃堕棿")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    private Date editDate;
-
-    @ApiModelProperty(value = "鏄惁鍒犻櫎0鍚� 1鏄�", example = "1")
-    @ExcelColumn(name="鏄惁鍒犻櫎0鍚� 1鏄�")
-    private Integer isdeleted;
-
-    @ApiModelProperty(value = "鍚嶇О锛堜笉鍙噸澶嶏級")
-    @ExcelColumn(name="鍚嶇О锛堜笉鍙噸澶嶏級")
-    private String name;
-
-    @ApiModelProperty(value = "澶囨敞")
-    @ExcelColumn(name="澶囨敞")
-    private String remark;
-
-    @ApiModelProperty(value = "灞炴��1鍚嶇О")
-    @ExcelColumn(name="灞炴��1鍚嶇О")
-    private String attrFirst;
-
-    @ApiModelProperty(value = "灞炴��2鍚嶇О")
-    @ExcelColumn(name="灞炴��2鍚嶇О")
-    private String attrSecond;
-
-    @ApiModelProperty(value = "鐘舵�� 0鍚敤 1绂佺敤", example = "1")
-    @ExcelColumn(name="鐘舵�� 0鍚敤 1绂佺敤")
-    private Integer status;
-
-    @ApiModelProperty(value = "鎺掑簭鐮�", example = "1")
-    @ExcelColumn(name="鎺掑簭鐮�")
-    private Integer sortnum;
-
-    @ApiModelProperty(value = "鍥炬爣")
-    @ExcelColumn(name="鍥炬爣")
-    private String imgurl;
-
-    @ApiModelProperty(value = "鍓嶇紑璺緞")
-    @TableField(exist = false)
-    private String prefixUrl;
-
-    @ApiModelProperty(value = "鍚嶇О鎷奸煶")
-    @ExcelColumn(name="鍚嶇О鎷奸煶")
-    private String pinyin;
-
-    @ApiModelProperty(value = "鍚嶇О鎷奸煶棣栧瓧姣�")
-    @ExcelColumn(name="鍚嶇О鎷奸煶棣栧瓧姣�")
-    private String shortPinyin;
-
-
-    @ApiModelProperty(value = "鍙傛暟鍚嶇О 鍒楄〃鍊�")
-    @TableField(exist = false)
-    private List<CateParam> paramList;
-
-    @ApiModelProperty(value = "灞炴��1 鍒楄〃鍊�")
-    @TableField(exist = false)
-    private List<CateAttr> attrFirstList;
-
-    @ApiModelProperty(value = "灞炴��2 鍒楄〃鍊�")
-    @TableField(exist = false)
-    private List<CateAttr> attrSecondList;
-
-    @ApiModelProperty(value = "浠锋牸鍖洪棿 鍒楄〃")
-    @TableField(exist = false)
-    private List<CateBudget> budgetList;
-
-}
diff --git a/server/src/main/java/com/doumee/dao/business/model/Goods.java b/server/src/main/java/com/doumee/dao/business/model/Goods.java
deleted file mode 100644
index e909122..0000000
--- a/server/src/main/java/com/doumee/dao/business/model/Goods.java
+++ /dev/null
@@ -1,159 +0,0 @@
-package com.doumee.dao.business.model;
-
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.doumee.core.annotation.excel.ExcelColumn;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.Data;
-import com.fasterxml.jackson.annotation.JsonFormat;
-import java.util.Date;
-import java.math.BigDecimal;
-import java.util.List;
-
-/**
- * 鍟嗗搧淇℃伅琛�
- * @author 姹熻箘韫�
- * @date 2023/05/12 13:58
- */
-@Data
-@ApiModel("鍟嗗搧淇℃伅琛�")
-@TableName("`goods`")
-public class Goods {
-
-    @TableId(type = IdType.AUTO)
-    @ApiModelProperty(value = "涓婚敭", example = "1")
-    @ExcelColumn(name="涓婚敭")
-    private Integer id;
-
-    @ApiModelProperty(value = "鍒涘缓浜虹紪鐮�", example = "1")
-    @ExcelColumn(name="鍒涘缓浜虹紪鐮�")
-    private Integer creator;
-
-    @ApiModelProperty(value = "鍒涘缓鏃堕棿")
-    @ExcelColumn(name="鍒涘缓鏃堕棿")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    private Date createDate;
-
-    @ApiModelProperty(value = "鏇存柊浜虹紪鐮�", example = "1")
-    @ExcelColumn(name="鏇存柊浜虹紪鐮�")
-    private Integer editor;
-
-    @ApiModelProperty(value = "鏇存柊鏃堕棿")
-    @ExcelColumn(name="鏇存柊鏃堕棿")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    private Date editDate;
-
-    @ApiModelProperty(value = "鏄惁鍒犻櫎0鍚� 1鏄�", example = "1")
-    @ExcelColumn(name="鏄惁鍒犻櫎0鍚� 1鏄�")
-    private Integer isdeleted;
-
-    @ApiModelProperty(value = "澶囨敞")
-    @ExcelColumn(name="澶囨敞")
-    private String remark;
-
-    @ApiModelProperty(value = "鍚嶇О锛堜笉鍙噸澶嶏級")
-    @ExcelColumn(name="鍚嶇О锛堜笉鍙噸澶嶏級")
-    private String name;
-
-    @ApiModelProperty(value = "鐘舵�� 0鍚敤 1绂佺敤", example = "1")
-    @ExcelColumn(name="鐘舵�� 0鍚敤 1绂佺敤")
-    private Integer status;
-
-    @ApiModelProperty(value = "鎺掑簭鐮�", example = "1")
-    @ExcelColumn(name="鎺掑簭鐮�")
-    private Integer sortnum;
-
-    @ApiModelProperty(value = "鍥炬爣")
-    @ExcelColumn(name="鍥炬爣")
-    private String imgurl;
-
-    @ApiModelProperty(value = "鎵�灞炲搧绫荤紪鐮�", example = "1")
-    @ExcelColumn(name="鎵�灞炲搧绫荤紪鐮�")
-    private Integer categoryId;
-
-    @ApiModelProperty(value = "鎵�灞炲搧鐗岀紪鐮�", example = "1")
-    @ExcelColumn(name="鎵�灞炲搧鐗岀紪鐮�")
-    private Integer brandId;
-
-    @ApiModelProperty(value = "鎸囧浠凤紙鍏冿級", example = "1")
-    @ExcelColumn(name="鎸囧浠凤紙鍏冿級")
-    private BigDecimal zdPrice;
-
-    @ApiModelProperty(value = "鍏ユ墜浠锋牸锛堝厓锛�", example = "1")
-    @ExcelColumn(name="鍏ユ墜浠锋牸锛堝厓锛�")
-    private BigDecimal price;
-
-    @ApiModelProperty(value = "鍟嗗搧璇︽儏")
-    @ExcelColumn(name="鍟嗗搧璇︽儏")
-    private String content;
-
-    @ApiModelProperty(value = "鍝佺被灞炴�у��1锛堝叧鑱攃ate_attr琛級锛屽涓嫳鏂囬�楀彿闅斿紑")
-    @ExcelColumn(name="鍝佺被灞炴�у��1锛堝叧鑱攃ate_attr琛級锛屽涓嫳鏂囬�楀彿闅斿紑")
-    private String attrFirstIds;
-
-    @ApiModelProperty(value = "鍝佺被灞炴�у��2锛堝叧鑱攃ate_attr琛級锛屽涓嫳鏂囬�楀彿闅斿紑")
-    @ExcelColumn(name="鍝佺被灞炴�у��2锛堝叧鑱攃ate_attr琛級锛屽涓嫳鏂囬�楀彿闅斿紑")
-    private String attrSecodIds;
-
-    @ApiModelProperty(value = "鍝佺被灞炴�у��1闆嗗悎锛屽涓嫳鏂囬�楀彿闅斿紑")
-    @ExcelColumn(name="鍝佺被灞炴�у��1闆嗗悎锛屽涓嫳鏂囬�楀彿闅斿紑")
-    private String attrFirstNames;
-
-    @ApiModelProperty(value = "鍝佺被灞炴�у��2闆嗗悎锛屽涓嫳鏂囬�楀彿闅斿紑")
-    @ExcelColumn(name="鍝佺被灞炴�у��2闆嗗悎锛屽涓嫳鏂囬�楀彿闅斿紑")
-    private String attrSecodNames;
-
-    @ApiModelProperty(value = "鍚嶇О鎷奸煶")
-    @ExcelColumn(name="鍚嶇О鎷奸煶")
-    private String pinyin;
-
-    @ApiModelProperty(value = "鍚嶇О鎷奸煶棣栧瓧姣�")
-    @ExcelColumn(name="鍚嶇О鎷奸煶棣栧瓧姣�")
-    private String shortPinyin;
-
-    @ApiModelProperty(value = "鍓嶇紑璺緞")
-    @TableField(exist = false)
-    private String prefixUrl;
-
-    @ApiModelProperty(value = "闄勪欢鍒楄〃")
-    @TableField(exist = false)
-    private List<Multifile> multifileList;
-
-    @ApiModelProperty(value = "绫诲埆鍚嶇О")
-    @TableField(exist = false)
-    private String categoryName;
-
-    @ApiModelProperty(value = "鍝佺墝鍚嶇О")
-    @TableField(exist = false)
-    private String brandName;
-
-    @ApiModelProperty(value = "灞炴��1鍚嶇О")
-    @TableField(exist = false)
-    private String attrFirst;
-
-    @ApiModelProperty(value = "灞炴��2鍚嶇О")
-    @TableField(exist = false)
-    private String attrSecond;
-
-    @ApiModelProperty(value = "鍟嗗搧鍝佺被鍙傛暟閰嶇疆")
-    @TableField(exist = false)
-    private List<GoodsParam> goodsParamList;
-
-    @ApiModelProperty(value = "鍟嗗搧鍒嗙被鍥剧墖")
-    @TableField(exist = false)
-    private String categoryImgurl;
-
-    @ApiModelProperty(value = "璧峰浠锋牸 - 鏌ヨ鐢�")
-    @TableField(exist = false)
-    private BigDecimal sPrice;
-
-    @ApiModelProperty(value = "鏈�楂樹环鏍� - 鏌ヨ鐢�")
-    @TableField(exist = false)
-    private BigDecimal ePrice;
-
-
-
-}
diff --git a/server/src/main/java/com/doumee/dao/business/model/Multifile.java b/server/src/main/java/com/doumee/dao/business/model/Multifile.java
deleted file mode 100644
index 6783869..0000000
--- a/server/src/main/java/com/doumee/dao/business/model/Multifile.java
+++ /dev/null
@@ -1,78 +0,0 @@
-package com.doumee.dao.business.model;
-
-import com.doumee.core.annotation.excel.ExcelColumn;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.Data;
-import com.fasterxml.jackson.annotation.JsonFormat;
-import java.util.Date;
-
-/**
- * 闄勪欢淇℃伅琛�
- * @author 姹熻箘韫�
- * @date 2023/05/12 13:58
- */
-@Data
-@ApiModel("闄勪欢淇℃伅琛�")
-@TableName("`multifile`")
-public class Multifile {
-
-    @TableId(type = IdType.AUTO)
-    @ApiModelProperty(value = "涓婚敭", example = "1")
-    @ExcelColumn(name="涓婚敭")
-    private Integer id;
-
-    @ApiModelProperty(value = "鍒涘缓浜虹紪鐮�", example = "1")
-    @ExcelColumn(name="鍒涘缓浜虹紪鐮�")
-    private Integer creator;
-
-    @ApiModelProperty(value = "鍒涘缓鏃堕棿")
-    @ExcelColumn(name="鍒涘缓鏃堕棿")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    private Date createDate;
-
-    @ApiModelProperty(value = "鏇存柊浜虹紪鐮�", example = "1")
-    @ExcelColumn(name="鏇存柊浜虹紪鐮�")
-    private Integer editor;
-
-    @ApiModelProperty(value = "鏇存柊鏃堕棿")
-    @ExcelColumn(name="鏇存柊鏃堕棿")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    private Date editDate;
-
-    @ApiModelProperty(value = "鏄惁鍒犻櫎0鍚� 1鏄�", example = "1")
-    @ExcelColumn(name="鏄惁鍒犻櫎0鍚� 1鏄�")
-    private Integer isdeleted;
-
-    @ApiModelProperty(value = "鏂囦欢鍚�")
-    @ExcelColumn(name="鏂囦欢鍚�")
-    private String name;
-
-    @ApiModelProperty(value = "澶囨敞")
-    @ExcelColumn(name="澶囨敞")
-    private String info;
-
-    @ApiModelProperty(value = "鍏宠仈瀵硅薄缂栫爜", example = "1")
-    @ExcelColumn(name="鍏宠仈瀵硅薄缂栫爜")
-    private Integer objId;
-
-    @ApiModelProperty(value = "绫诲瀷0鍥剧墖 1瑙嗛 2鍏朵粬", example = "1")
-    @ExcelColumn(name="绫诲瀷0鍥剧墖 1瑙嗛 2鍏朵粬")
-    private Integer type;
-
-    @ApiModelProperty(value = "鍏宠仈瀵硅薄绫诲瀷 0鍟嗗搧澶氬浘", example = "1")
-    @ExcelColumn(name="鍏宠仈瀵硅薄绫诲瀷 0鍟嗗搧澶氬浘")
-    private Integer objType;
-
-    @ApiModelProperty(value = "鏂囦欢鍦板潃")
-    @ExcelColumn(name="鏂囦欢鍦板潃")
-    private String fileurl;
-
-    @ApiModelProperty(value = "鎺掑簭鐮�", example = "1")
-    @ExcelColumn(name="鎺掑簭鐮�")
-    private Integer sortnum;
-
-}
diff --git a/server/src/main/java/com/doumee/dao/system/dto/CreateRolePermissionDTO.java b/server/src/main/java/com/doumee/dao/system/dto/CreateRolePermissionDTO.java
deleted file mode 100644
index 121590d..0000000
--- a/server/src/main/java/com/doumee/dao/system/dto/CreateRolePermissionDTO.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package com.doumee.dao.system.dto;
-
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-
-import javax.validation.constraints.NotNull;
-import java.io.Serializable;
-import java.util.List;
-
-/**
- * @author Eva.Caesar Liu
- * @date 2023/02/14 11:14
- */
-@Data
-@ApiModel("鍒涘缓瑙掕壊鏉冮檺鍙傛暟")
-public class CreateRolePermissionDTO implements Serializable {
-
-    @ApiModelProperty(value = "瑙掕壊ID")
-    @NotNull(message = "瑙掕壊ID涓嶈兘涓虹┖")
-    private Integer roleId;
-
-    @ApiModelProperty(value = "鏉冮檺ID闆�")
-    @NotNull(message = "鏉冮檺ID闆嗕笉鑳戒负绌�")
-    private List<Integer> permissionIds;
-
-    @ApiModelProperty(value = "鍒涘缓浜�", hidden = true)
-    private Integer createUser;
-}
diff --git a/server/src/main/java/com/doumee/dao/system/dto/QuerySystemLoginLogDTO.java b/server/src/main/java/com/doumee/dao/system/dto/QuerySystemLoginLogDTO.java
deleted file mode 100644
index 279bb8c..0000000
--- a/server/src/main/java/com/doumee/dao/system/dto/QuerySystemLoginLogDTO.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package com.doumee.dao.system.dto;
-
-import com.doumee.dao.system.model.SystemLoginLog;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-
-import java.util.Date;
-
-/**
- * 鏌ヨ鐧诲綍鏃ュ織鍙傛暟
- * @author Eva.Caesar Liu
- * @date 2023/02/14 11:14
- */
-@Data
-public class QuerySystemLoginLogDTO extends SystemLoginLog {
-
-    @ApiModelProperty("鐧诲綍寮�濮嬫椂闂�")
-    private Date startTime;
-
-    @ApiModelProperty("鐧诲綍缁撴潫鏃堕棿")
-    private Date endTime;
-}
diff --git a/server/src/main/java/com/doumee/dao/system/dto/QuerySystemPermissionDTO.java b/server/src/main/java/com/doumee/dao/system/dto/QuerySystemPermissionDTO.java
deleted file mode 100644
index 5a8d2e6..0000000
--- a/server/src/main/java/com/doumee/dao/system/dto/QuerySystemPermissionDTO.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package com.doumee.dao.system.dto;
-
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-
-import java.io.Serializable;
-
-/**
- * @author Eva.Caesar Liu
- * @date 2023/02/14 11:14
- */
-@Data
-@ApiModel("鏌ヨ绯荤粺鏉冮檺鍙傛暟")
-public class QuerySystemPermissionDTO implements Serializable {
-
-    @ApiModelProperty(value = "鏉冮檺缂栫爜")
-    private String code;
-
-    @ApiModelProperty(value = "鏉冮檺鍚嶇О")
-    private String name;
-
-}
diff --git a/server/src/main/java/com/doumee/dao/system/dto/QuerySystemRoleDTO.java b/server/src/main/java/com/doumee/dao/system/dto/QuerySystemRoleDTO.java
deleted file mode 100644
index d104723..0000000
--- a/server/src/main/java/com/doumee/dao/system/dto/QuerySystemRoleDTO.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package com.doumee.dao.system.dto;
-
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-
-import java.io.Serializable;
-
-/**
- * @author Eva.Caesar Liu
- * @date 2023/02/14 11:14
- */
-@Data
-@ApiModel("鏌ヨ绯荤粺瑙掕壊鍙傛暟")
-public class QuerySystemRoleDTO implements Serializable {
-
-    @ApiModelProperty(value = "瑙掕壊缂栫爜")
-    private String code;
-
-    @ApiModelProperty(value = "瑙掕壊鍚嶇О")
-    private String name;
-}
diff --git a/server/src/main/java/com/doumee/dao/system/dto/QuerySystemUserDTO.java b/server/src/main/java/com/doumee/dao/system/dto/QuerySystemUserDTO.java
deleted file mode 100644
index 20563c6..0000000
--- a/server/src/main/java/com/doumee/dao/system/dto/QuerySystemUserDTO.java
+++ /dev/null
@@ -1,63 +0,0 @@
-package com.doumee.dao.system.dto;
-
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-
-import java.io.Serializable;
-import java.util.List;
-
-/**
- * @author Eva.Caesar Liu
- * @date 2023/02/14 11:14
- */
-@Data
-@ApiModel("鏌ヨ绯荤粺鐢ㄦ埛鍙傛暟")
-public class QuerySystemUserDTO implements Serializable {
-
-    @ApiModelProperty(value = "鐢ㄤ簬鏌ヨ瀛愰儴闂ㄧ殑閮ㄩ棬ID", hidden = true)
-    private Integer rootDeptId;
-
-    @ApiModelProperty(value = "绮惧噯鍖归厤鐨勯儴闂↖D", hidden = true)
-    private Integer strictDeptId;
-
-    @ApiModelProperty(value = "閮ㄩ棬ID闆�", hidden = true)
-    private List<Integer> departmentIds;
-
-    @ApiModelProperty(value = "宀椾綅ID", hidden = true)
-    private Integer positionId;
-
-    @ApiModelProperty(value = "鐢ㄦ埛鍚�")
-    private String username;
-
-    @ApiModelProperty(value = "濮撳悕" , hidden = true)
-    private String realname;
-
-    @ApiModelProperty(value = "鎵嬫満鍙风爜", hidden = true)
-    private String mobile;
-
-    @ApiModelProperty(value = "鎵�灞炰紒涓氱紪鐮�", example = "1", hidden = true )
-    private Integer companyId;
-
-    @ApiModelProperty(value = "鍖哄煙缂栫爜", example = "1" )
-    private Integer areaId;
-
-    @ApiModelProperty(value = "鐪佺紪鐮�")
-    private Integer  provinceId;
-
-    @ApiModelProperty(value = "鍩庡競缂栫爜", example = "1" )
-    private Integer cityId;
-
-    @ApiModelProperty(value = "鍩庡競缂栫爜", hidden = true)
-    private List<Integer> cityIds;
-
-    @ApiModelProperty(value = "鐢ㄦ埛绫诲瀷 0绯荤粺鐢ㄦ埛 " +
-            "1浼佷笟鐢ㄦ埛 2鏈嶅姟鏈烘瀯绠$悊鍛� 3鏈嶅姟鏈烘瀯瀛愯处鍙� " +
-            "4缁煎悎鏈嶅姟鍗曚綅绠$悊鍛� 5缁煎悎鏈嶅姟鍗曚綅瀛愯处鍙� " +
-            "6涓撳 7鍘垮尯鐢ㄦ埛 8甯傚眬鐢ㄦ埛", example = "1" , hidden = true)
-    private Integer type;
-
-    @ApiModelProperty(value = "鐢ㄦ埛绫诲瀷闆嗗悎",hidden = true )
-    private List<Integer> typeList;
-
-}
diff --git a/server/src/main/java/com/doumee/dao/system/model/SystemLoginLog.java b/server/src/main/java/com/doumee/dao/system/model/SystemLoginLog.java
deleted file mode 100644
index 323895f..0000000
--- a/server/src/main/java/com/doumee/dao/system/model/SystemLoginLog.java
+++ /dev/null
@@ -1,74 +0,0 @@
-package com.doumee.dao.system.model;
-
-import com.doumee.core.annotation.excel.ExcelColumn;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import lombok.Data;
-import org.apache.poi.ss.usermodel.HorizontalAlignment;
-import org.apache.poi.ss.usermodel.IndexedColors;
-
-import java.util.Date;
-
-/**
- * 鐧诲綍鏃ュ織
- * @author Eva.Caesar Liu
- * @date 2023/02/14 11:14
- */
-@Data
-@ApiModel("鐧诲綍鏃ュ織")
-public class SystemLoginLog {
-
-    @TableId(type = IdType.AUTO)
-    @ApiModelProperty(value = "涓婚敭", example = "1")
-    private Integer id;
-
-    @ApiModelProperty(value = "鐧诲綍鐢ㄦ埛ID", example = "1")
-    private Integer userId;
-
-    @ApiModelProperty(value = "鐧诲綍鐢ㄦ埛鍚�")
-    @ExcelColumn(name="鐧诲綍鐢ㄦ埛鍚�")
-    private String loginUsername;
-
-    @ApiModelProperty(value = "鐧诲綍IP")
-    @ExcelColumn(name="鐧诲綍IP", color = IndexedColors.RED, width = 8)
-    private String ip;
-
-    @ApiModelProperty(value = "鐧诲綍鍦板潃")
-    @ExcelColumn(name="鐧诲綍鍦板潃", width = 10)
-    private String location;
-
-    @ApiModelProperty(value = "瀹㈡埛绔�")
-    @ExcelColumn(name="瀹㈡埛绔�", width = 10)
-    private String clientInfo;
-
-    @ApiModelProperty(value = "鎿嶄綔绯荤粺")
-    @ExcelColumn(name="鎿嶄綔绯荤粺")
-    private String osInfo;
-
-    @ApiModelProperty(value = "鐧诲綍骞冲彴")
-    @ExcelColumn(name="鐧诲綍骞冲彴")
-    private String platform;
-
-    @ApiModelProperty(value = "绯荤粺鐗堟湰")
-    @ExcelColumn(name="绯荤粺鐗堟湰")
-    private String systemVersion;
-
-    @ApiModelProperty(value = "鏈嶅姟鍣↖P")
-    @ExcelColumn(name="鏈嶅姟鍣↖P", width = 8)
-    private String serverIp;
-
-    @ApiModelProperty(value = "鏄惁鐧诲綍鎴愬姛")
-    @ExcelColumn(name="鏄惁鐧诲綍鎴愬姛", valueMapping = "true=鏄�;false=鍚�", align = HorizontalAlignment.CENTER)
-    private Boolean success;
-
-    @ApiModelProperty(value = "澶辫触鍘熷洜")
-    @ExcelColumn(name="澶辫触鍘熷洜", color = IndexedColors.RED, width = 16)
-    private String reason;
-
-    @ApiModelProperty(value = "鐧诲綍鏃堕棿")
-    @ExcelColumn(name="鐧诲綍鏃堕棿", dateFormat = "yyyy-MM-dd HH:mm:ss", width = 10)
-    private Date loginTime;
-
-}
diff --git a/server/src/main/java/com/doumee/dao/system/model/SystemMenu.java b/server/src/main/java/com/doumee/dao/system/model/SystemMenu.java
deleted file mode 100644
index d538d1f..0000000
--- a/server/src/main/java/com/doumee/dao/system/model/SystemMenu.java
+++ /dev/null
@@ -1,73 +0,0 @@
-package com.doumee.dao.system.model;
-
-import com.baomidou.mybatisplus.annotation.FieldStrategy;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.doumee.core.constants.OperaType;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import lombok.Data;
-
-import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.NotNull;
-import java.io.Serializable;
-import java.util.Date;
-
-/**
- * 绯荤粺鑿滃崟
- * @author Eva.Caesar Liu
- * @date 2023/02/14 11:14
- */
-@Data
-@ApiModel("绯荤粺鑿滃崟")
-public class SystemMenu implements Serializable {
-
-    @TableId(type = IdType.AUTO)
-    @ApiModelProperty(value = "涓婚敭", example = "1")
-    @NotNull(message = "涓婚敭涓嶈兘涓虹┖", groups = {OperaType.Update.class, OperaType.UpdateStatus.class})
-    private Integer id;
-
-    @ApiModelProperty(value = "涓婁竴绾ц彍鍗�", example = "1")
-    @TableField(updateStrategy = FieldStrategy.IGNORED)
-    private Integer parentId;
-
-    @ApiModelProperty(value = "鑿滃崟鍚嶇О")
-    @NotBlank(message = "鑿滃崟鍚嶇О涓嶈兘涓虹┖", groups = {OperaType.Create.class, OperaType.Update.class})
-    private String name;
-
-    @ApiModelProperty(value = "鑿滃崟璁块棶璺緞")
-    private String path;
-
-    @ApiModelProperty(value = "澶囨敞")
-    private String remark;
-
-    @ApiModelProperty(value = "鍥炬爣")
-    private String icon;
-
-    @ApiModelProperty(value = "鏄惁绂佺敤")
-    @NotNull(message = "鏄惁绂佺敤涓嶈兘涓虹┖", groups = OperaType.UpdateStatus.class)
-    private Boolean disabled;
-
-    @ApiModelProperty(value = "鎺掑簭", example = "1")
-    private Integer sort;
-
-    @ApiModelProperty(value = "鏄惁涓哄浐瀹氳彍鍗�", hidden = true)
-    private Boolean fixed;
-
-    @ApiModelProperty(value = "鍒涘缓鏃堕棿")
-    private Date createTime;
-
-    @ApiModelProperty(value = "鏇存柊鏃堕棿")
-    private Date updateTime;
-
-    @ApiModelProperty(value = "鍒涘缓鑰匢D", example = "1", hidden = true)
-    private Integer createUser;
-
-    @ApiModelProperty(value = "鏇存柊鑰匢D", example = "1", hidden = true)
-    private Integer updateUser;
-
-    @ApiModelProperty(value = "鏄惁宸插垹闄�", hidden = true)
-    private Boolean deleted;
-
-}
diff --git a/server/src/main/java/com/doumee/dao/system/model/SystemPermission.java b/server/src/main/java/com/doumee/dao/system/model/SystemPermission.java
deleted file mode 100644
index cf94819..0000000
--- a/server/src/main/java/com/doumee/dao/system/model/SystemPermission.java
+++ /dev/null
@@ -1,58 +0,0 @@
-package com.doumee.dao.system.model;
-
-import com.doumee.core.constants.OperaType;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import lombok.Data;
-
-import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.NotNull;
-import java.io.Serializable;
-import java.util.Date;
-
-/**
- * 绯荤粺鏉冮檺
- * @author Eva.Caesar Liu
- * @date 2023/02/14 11:14
- */
-@Data
-@ApiModel("绯荤粺鏉冮檺")
-public class SystemPermission implements Serializable {
-
-    @TableId(type = IdType.AUTO)
-    @ApiModelProperty(value = "涓婚敭", example = "1")
-    @NotNull(message = "涓婚敭涓嶈兘涓虹┖", groups = {OperaType.Update.class})
-    private Integer id;
-
-    @ApiModelProperty(value = "鏉冮檺缂栫爜")
-    @NotBlank(message = "鏉冮檺缂栫爜涓嶈兘涓虹┖", groups = {OperaType.Create.class,OperaType.Update.class})
-    private String code;
-
-    @ApiModelProperty(value = "鏉冮檺鍚嶇О")
-    @NotBlank(message = "鏉冮檺鍚嶇О涓嶈兘涓虹┖", groups = {OperaType.Create.class,OperaType.Update.class})
-    private String name;
-
-    @ApiModelProperty(value = "鏉冮檺澶囨敞")
-    private String remark;
-
-    @ApiModelProperty(value = "鏄惁涓哄浐瀹氭潈闄�", hidden = true)
-    private Boolean fixed;
-
-    @ApiModelProperty(value = "鍒涘缓鏃堕棿")
-    private Date createTime;
-
-    @ApiModelProperty(value = "鏇存柊鏃堕棿")
-    private Date updateTime;
-
-    @ApiModelProperty(value = "鍒涘缓鑰匢D", example = "1", hidden = true)
-    private Integer createUser;
-
-    @ApiModelProperty(value = "鏇存柊鑰匢D", example = "1", hidden = true)
-    private Integer updateUser;
-
-    @ApiModelProperty(value = "鏄惁宸插垹闄�", hidden = true)
-    private Boolean deleted;
-
-}
diff --git a/server/src/main/java/com/doumee/dao/system/model/SystemRole.java b/server/src/main/java/com/doumee/dao/system/model/SystemRole.java
deleted file mode 100644
index 00e3364..0000000
--- a/server/src/main/java/com/doumee/dao/system/model/SystemRole.java
+++ /dev/null
@@ -1,58 +0,0 @@
-package com.doumee.dao.system.model;
-
-import com.doumee.core.constants.OperaType;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import lombok.Data;
-
-import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.NotNull;
-import java.io.Serializable;
-import java.util.Date;
-
-/**
- * 绯荤粺瑙掕壊
- * @author Eva.Caesar Liu
- * @date 2023/02/14 11:14
- */
-@Data
-@ApiModel("绯荤粺瑙掕壊")
-public class SystemRole implements Serializable {
-
-    @TableId(type = IdType.AUTO)
-    @ApiModelProperty(value = "涓婚敭", example = "1")
-    @NotNull(message = "涓婚敭涓嶈兘涓虹┖", groups = {OperaType.Update.class})
-    private Integer id;
-
-    @ApiModelProperty(value = "瑙掕壊缂栫爜")
-    @NotBlank(message = "瑙掕壊缂栫爜涓嶈兘涓虹┖", groups = {OperaType.Create.class, OperaType.Update.class})
-    private String code;
-
-    @ApiModelProperty(value = "瑙掕壊鍚嶇О")
-    @NotBlank(message = "瑙掕壊鍚嶇О涓嶈兘涓虹┖", groups = {OperaType.Create.class, OperaType.Update.class})
-    private String name;
-
-    @ApiModelProperty(value = "瑙掕壊澶囨敞")
-    private String remark;
-
-    @ApiModelProperty(value = "鏄惁涓哄浐瀹氳鑹�", hidden = true)
-    private Boolean fixed;
-
-    @ApiModelProperty(value = "鍒涘缓鏃堕棿")
-    private Date createTime;
-
-    @ApiModelProperty(value = "鏇存柊鏃堕棿")
-    private Date updateTime;
-
-    @ApiModelProperty(value = "鍒涘缓鑰匢D", example = "1", hidden = true)
-    private Integer createUser;
-
-    @ApiModelProperty(value = "鏇存柊鑰匢D", example = "1", hidden = true)
-    private Integer updateUser;
-
-    @ApiModelProperty(value = "鏄惁宸插垹闄�", hidden = true)
-    private Boolean deleted;
-
-}
diff --git a/server/src/main/java/com/doumee/dao/system/model/SystemUser.java b/server/src/main/java/com/doumee/dao/system/model/SystemUser.java
deleted file mode 100644
index 2ec60cb..0000000
--- a/server/src/main/java/com/doumee/dao/system/model/SystemUser.java
+++ /dev/null
@@ -1,95 +0,0 @@
-package com.doumee.dao.system.model;
-
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.doumee.core.constants.OperaType;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import lombok.Data;
-import com.fasterxml.jackson.annotation.JsonFormat;
-
-import javax.validation.constraints.Email;
-import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.NotNull;
-import javax.validation.constraints.Pattern;
-import java.io.Serializable;
-import java.util.Date;
-
-/**
- * 绯荤粺鐢ㄦ埛
- * @author Eva.Caesar Liu
- * @date 2023/03/21 14:49
- */
-@Data
-@ApiModel("绯荤粺鐢ㄦ埛")
-@TableName("`SYSTEM_USER`")
-public class SystemUser implements Serializable {
-
-    @TableId(type = IdType.AUTO)
-    @ApiModelProperty(value = "涓婚敭", example = "1")
-    @NotNull(message = "涓婚敭涓嶈兘涓虹┖", groups = {OperaType.Update.class})
-    private Integer id;
-
-    @ApiModelProperty(value = "鐢ㄦ埛鍚�")
-    @NotBlank(message = "鐢ㄦ埛鍚嶄笉鑳戒负绌�")
-    private String username;
-
-    @ApiModelProperty(value = "鍛樺伐鍚嶇О")
-    @NotBlank(message = "濮撳悕涓嶈兘涓虹┖", groups = {OperaType.Create.class, OperaType.Update.class})
-    private String realname;
-
-    @ApiModelProperty(value = "宸ュ彿")
-    private String empNo;
-
-    @ApiModelProperty(value = "鐢熸棩")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    private Date birthday;
-
-    @ApiModelProperty(value = "鎬у埆")
-    @NotBlank(message = "鎬у埆涓嶈兘涓虹┖")
-    private String sex;
-
-    @ApiModelProperty(value = "閭")
-    @Email(message = "閭鏍煎紡涓嶆纭�")
-    private String email;
-
-    @ApiModelProperty(value = "鎵嬫満鍙风爜")
-    @Pattern(message = "鎵嬫満鍙风爜鏍煎紡涓嶆纭�", regexp = "^\\d*$", groups = {OperaType.Create.class, OperaType.Update.class})
-    private String mobile;
-
-    @ApiModelProperty(value = "澶村儚")
-    @NotBlank(message = "澶村儚涓嶈兘涓虹┖")
-    private String avatar;
-
-    @ApiModelProperty(value = "瀵嗙爜")
-    @NotBlank(message = "鍒濆瀵嗙爜涓嶈兘涓虹┖")
-    private String password;
-
-    @ApiModelProperty(value = "鐩�")
-    private String salt;
-
-    @ApiModelProperty(value = "鏄惁涓哄浐瀹氱敤鎴�", hidden = true)
-    private Boolean fixed;
-
-    @ApiModelProperty(value = "鍒涘缓鏃堕棿")
-    private Date createTime;
-
-    @ApiModelProperty(value = "鏇存柊鏃堕棿")
-    private Date updateTime;
-
-    @ApiModelProperty(value = "鍒涘缓浜�", example = "1", hidden = true)
-    private Integer createUser;
-
-    @ApiModelProperty(value = "鏇存柊浜�", example = "1", hidden = true)
-    private Integer updateUser;
-
-
-    @ApiModelProperty(value = "鏄惁宸插垹闄�", hidden = true)
-    private Boolean deleted;
-
-    @ApiModelProperty(value = "0 鍚敤 1 绂佺敤")
-    private Integer status;
-
-}
diff --git a/server/src/main/resources/application-dev.yml b/server/src/main/resources/application-dev.yml
deleted file mode 100644
index 112082f..0000000
--- a/server/src/main/resources/application-dev.yml
+++ /dev/null
@@ -1,48 +0,0 @@
-# WEB鏈嶅姟鍣ㄩ厤缃�
-server:
-  compression:
-    enabled: true
-    mime-types: application/json
-
-  port: 10017
-  tomcat:
-    max-swallow-size: -1
-  servlet:
-    session:
-      timeout: PT3H  #琛ㄧず12灏忔椂
-
-spring:
-  # 鏁版嵁婧愰厤缃�
-  datasource:
-    url: jdbc:mysql://57b57595ddc66.sh.cdb.myqcloud.com:4464/pre_select?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=GMT%2B8
-    username: test
-    password: doumee@168
-    driver-class-name: com.mysql.cj.jdbc.Driver
-    type: com.alibaba.druid.pool.DruidDataSource
-
-  jackson:
-    time-zone: GMT+8
-    date-format: yyyy-MM-dd HH:mm:ss
-
-knife4j:
-  enable: true
-  basic:
-    enable: true
-    username: admin
-    password: 111111
-
-debug_model: true
-
-captcha_check: false
-
-# Swagger閰嶇疆
-swagger:
-  host:
-  title: ${project.name}鎺ュ彛鏂囨。
-  description: ${project.name}鎺ュ彛鏂囨。
-  enabled: true
-  # 绂佺敤swagger鏃剁殑閲嶅畾鍚戝湴鍧�
-  redirect-uri: /
-
-project:
-  imgAuthen: false
\ No newline at end of file
diff --git a/server/src/main/resources/application-pro.yml b/server/src/main/resources/application-pro.yml
deleted file mode 100644
index 8da29e5..0000000
--- a/server/src/main/resources/application-pro.yml
+++ /dev/null
@@ -1,48 +0,0 @@
-# WEB鏈嶅姟鍣ㄩ厤缃�
-server:
-  compression:
-    enabled: true
-    mime-types: application/json
-
-  port: 10017
-  tomcat:
-    max-swallow-size: -1
-  servlet:
-    session:
-      timeout: PT3H  #琛ㄧず12灏忔椂
-
-spring:
-  # 鏁版嵁婧愰厤缃�
-  datasource:
-    url: jdbc:mysql://57b57595ddc66.sh.cdb.myqcloud.com:4464/pre_select_pro?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=GMT%2B8
-    username: test
-    password: doumee@168
-    driver-class-name: com.mysql.cj.jdbc.Driver
-    type: com.alibaba.druid.pool.DruidDataSource
-
-  jackson:
-    time-zone: GMT+8
-    date-format: yyyy-MM-dd HH:mm:ss
-
-knife4j:
-  enable: true
-  basic:
-    enable: true
-    username: admin
-    password: 111111
-
-debug_model: true
-
-captcha_check: true
-
-# Swagger閰嶇疆
-swagger:
-  host:
-  title: ${project.name}鎺ュ彛鏂囨。
-  description: ${project.name}鎺ュ彛鏂囨。
-  enabled: true
-  # 绂佺敤swagger鏃剁殑閲嶅畾鍚戝湴鍧�
-  redirect-uri: /
-
-project:
-  imgAuthen: false
\ No newline at end of file
diff --git a/server/src/main/resources/application-proLocal.yml b/server/src/main/resources/application-proLocal.yml
deleted file mode 100644
index 811c4ab..0000000
--- a/server/src/main/resources/application-proLocal.yml
+++ /dev/null
@@ -1,48 +0,0 @@
-# WEB鏈嶅姟鍣ㄩ厤缃�
-server:
-  compression:
-    enabled: true
-    mime-types: application/json
-
-  port: 10017
-  tomcat:
-    max-swallow-size: -1
-  servlet:
-    session:
-      timeout: PT3H  #琛ㄧず12灏忔椂
-
-spring:
-  # 鏁版嵁婧愰厤缃�
-  datasource:
-    url: jdbc:mysql://127.0.0.1:3306/pre_select?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=GMT%2B8
-    username: root
-    password: Doumee@168
-    driver-class-name: com.mysql.cj.jdbc.Driver
-    type: com.alibaba.druid.pool.DruidDataSource
-
-  jackson:
-    time-zone: GMT+8
-    date-format: yyyy-MM-dd HH:mm:ss
-
-knife4j:
-  enable: true
-  basic:
-    enable: true
-    username: admin
-    password: 111111
-
-debug_model: true
-
-captcha_check: false
-
-# Swagger閰嶇疆
-swagger:
-  host:
-  title: ${project.name}鎺ュ彛鏂囨。
-  description: ${project.name}鎺ュ彛鏂囨。
-  enabled: true
-  # 绂佺敤swagger鏃剁殑閲嶅畾鍚戝湴鍧�
-  redirect-uri: /
-
-project:
-  imgAuthen: false
\ No newline at end of file
diff --git a/server/src/main/resources/application-pro_mjyx.yml b/server/src/main/resources/application-pro_mjyx.yml
deleted file mode 100644
index 12e40ae..0000000
--- a/server/src/main/resources/application-pro_mjyx.yml
+++ /dev/null
@@ -1,48 +0,0 @@
-# WEB鏈嶅姟鍣ㄩ厤缃�
-server:
-  compression:
-    enabled: true
-    mime-types: application/json
-
-  port: 10019
-  tomcat:
-    max-swallow-size: -1
-  servlet:
-    session:
-      timeout: PT3H  #琛ㄧず12灏忔椂
-
-spring:
-  # 鏁版嵁婧愰厤缃�
-  datasource:
-    url: jdbc:mysql://57b57595ddc66.sh.cdb.myqcloud.com:4464/pre_select_mjyx?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=GMT%2B8
-    username: test
-    password: doumee@168
-    driver-class-name: com.mysql.cj.jdbc.Driver
-    type: com.alibaba.druid.pool.DruidDataSource
-
-  jackson:
-    time-zone: GMT+8
-    date-format: yyyy-MM-dd HH:mm:ss
-
-knife4j:
-  enable: true
-  basic:
-    enable: true
-    username: admin
-    password: 111111
-
-debug_model: true
-
-captcha_check: true
-
-# Swagger閰嶇疆
-swagger:
-  host:
-  title: ${project.name}鎺ュ彛鏂囨。
-  description: ${project.name}鎺ュ彛鏂囨。
-  enabled: true
-  # 绂佺敤swagger鏃剁殑閲嶅畾鍚戝湴鍧�
-  redirect-uri: /
-
-project:
-  imgAuthen: false
\ No newline at end of file
diff --git a/server/src/main/resources/application-pro_yx.yml b/server/src/main/resources/application-pro_yx.yml
deleted file mode 100644
index 4224f60..0000000
--- a/server/src/main/resources/application-pro_yx.yml
+++ /dev/null
@@ -1,48 +0,0 @@
-# WEB鏈嶅姟鍣ㄩ厤缃�
-server:
-  compression:
-    enabled: true
-    mime-types: application/json
-
-  port: 10018
-  tomcat:
-    max-swallow-size: -1
-  servlet:
-    session:
-      timeout: PT3H  #琛ㄧず12灏忔椂
-
-spring:
-  # 鏁版嵁婧愰厤缃�
-  datasource:
-    url: jdbc:mysql://57b57595ddc66.sh.cdb.myqcloud.com:4464/pre_select_yx?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=GMT%2B8
-    username: test
-    password: doumee@168
-    driver-class-name: com.mysql.cj.jdbc.Driver
-    type: com.alibaba.druid.pool.DruidDataSource
-
-  jackson:
-    time-zone: GMT+8
-    date-format: yyyy-MM-dd HH:mm:ss
-
-knife4j:
-  enable: true
-  basic:
-    enable: true
-    username: admin
-    password: 111111
-
-debug_model: true
-
-captcha_check: true
-
-# Swagger閰嶇疆
-swagger:
-  host:
-  title: ${project.name}鎺ュ彛鏂囨。
-  description: ${project.name}鎺ュ彛鏂囨。
-  enabled: true
-  # 绂佺敤swagger鏃剁殑閲嶅畾鍚戝湴鍧�
-  redirect-uri: /
-
-project:
-  imgAuthen: false
\ No newline at end of file
diff --git a/server/src/main/resources/application-test.yml b/server/src/main/resources/application-test.yml
deleted file mode 100644
index e1b22f9..0000000
--- a/server/src/main/resources/application-test.yml
+++ /dev/null
@@ -1,42 +0,0 @@
-# WEB鏈嶅姟鍣ㄩ厤缃�
-server:
-  compression:
-    enabled: true
-    mime-types: application/json
-
-  port: 10010
-  servlet:
-    session:
-      timeout: PT3H  #琛ㄧず12灏忔椂
-
-spring:
-  # 鏁版嵁婧愰厤缃�
-  datasource:
-    url: jdbc:mysql://57b57595ddc66.sh.cdb.myqcloud.com:4464/intelligent_manufacture?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=GMT%2B8
-    username: test
-    password: doumee@168
-    driver-class-name: com.mysql.cj.jdbc.Driver
-    type: com.alibaba.druid.pool.DruidDataSource
-
-knife4j:
-  enable: true
-  basic:
-    enable: true
-    username: admin
-    password: test@168.com
-
-debug_model: true
-
-captcha_check: false
-
-# Swagger閰嶇疆
-swagger:
-  host:
-  title: ${project.name}鎺ュ彛鏂囨。
-  description: ${project.name}鎺ュ彛鏂囨。
-  enabled: true
-  # 绂佺敤swagger鏃剁殑閲嶅畾鍚戝湴鍧�
-  redirect-uri: /
-
-project:
-  imgAuthenti: false
\ No newline at end of file
diff --git a/server/src/main/resources/application.yml b/server/src/main/resources/application.yml
deleted file mode 100644
index 3206633..0000000
--- a/server/src/main/resources/application.yml
+++ /dev/null
@@ -1,65 +0,0 @@
-# 椤圭洰淇℃伅閰嶇疆
-project:
-  name: 棰勯�夋竻鍗曟煡璇�
-  version: 1.0.0
-  env: development
-#  env: production
-
-
-spring:
-#  application:
-#    name: doumeemes
-  profiles:
-    active: dev
-
-  # JSON杩斿洖閰嶇疆
-  jackson:
-    # 榛樿鏃跺尯
-    time-zone: GMT+8
-    # 榛樿鏃ユ湡鏍煎紡鍖�
-    date-format: yyyy-MM-dd HH:mm:ss
-  servlet:
-    multipart:
-      max-file-size: 200MB
-      max-request-size: 200MB
-      enabled: true
-# MyBatis閰嶇疆
-mybatis-plus:
-  mapper-locations: classpath*:/mappers/**/*.xml
-  configuration:
-    map-underscore-to-camel-case: true
-    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
-
-
-# 缂撳瓨鍐呭璁剧疆
-cache:
-  session:
-    # 浼氳瘽杩囨湡鏃堕暱(s)
-    expire: 18000
-  captcha:
-    # 楠岃瘉鐮佽繃鏈熸椂闀�(s)
-    expire: 300
-
-# 璺熻釜鏃ュ織
-trace:
-  # 寮�鍚櫤鑳借窡韪ā寮�
-  smart: true
-  # 鎺掗櫎璺熻釜鐨刄RL姝e垯
-  exclude-patterns: .+/list[a-zA-Z0-9\-\_]*$, .+/tree[a-zA-Z0-9\-\_]*$, .+/page[a-zA-Z0-9\-\_]*$, .+/all[a-zA-Z0-9\-\_]*$, /swagger-resources.*
-
-
-# 鏃ュ織閰嶇疆
-logback:
-  level: INFO
-  appender: ${project.env}
-# dao灞傜殑鏃ュ織璁剧疆涓篸ebug锛屾柟渚挎煡鐪媠ql
-logging:
-  level:
-    doumeemes.dao: debug
-
-knife4j:
-  enable: true
-  basic:
-    enable: true
-    username: admin
-    password: 111111
\ No newline at end of file
diff --git a/server/target/classes/application-dev.yml b/server/target/classes/application-dev.yml
deleted file mode 100644
index 9cb7630..0000000
--- a/server/target/classes/application-dev.yml
+++ /dev/null
@@ -1,48 +0,0 @@
-# WEB鏈嶅姟鍣ㄩ厤缃�
-server:
-  compression:
-    enabled: true
-    mime-types: application/json
-
-  port: 10011
-  tomcat:
-    max-swallow-size: -1
-  servlet:
-    session:
-      timeout: PT3H  #琛ㄧず12灏忔椂
-
-spring:
-  # 鏁版嵁婧愰厤缃�
-  datasource:
-    url: jdbc:mysql://57b57595ddc66.sh.cdb.myqcloud.com:4464/pre_select?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=GMT%2B8
-    username: test
-    password: doumee@168
-    driver-class-name: com.mysql.cj.jdbc.Driver
-    type: com.alibaba.druid.pool.DruidDataSource
-
-  jackson:
-    time-zone: GMT+8
-    date-format: yyyy-MM-dd HH:mm:ss
-
-knife4j:
-  enable: true
-  basic:
-    enable: true
-    username: admin
-    password: 111111
-
-debug_model: true
-
-captcha_check: false
-
-# Swagger閰嶇疆
-swagger:
-  host:
-  title: ${project.name}鎺ュ彛鏂囨。
-  description: ${project.name}鎺ュ彛鏂囨。
-  enabled: true
-  # 绂佺敤swagger鏃剁殑閲嶅畾鍚戝湴鍧�
-  redirect-uri: /
-
-project:
-  imgAuthen: false
\ No newline at end of file
diff --git a/server/target/classes/application-pro.yml b/server/target/classes/application-pro.yml
deleted file mode 100644
index 3e97711..0000000
--- a/server/target/classes/application-pro.yml
+++ /dev/null
@@ -1,38 +0,0 @@
-# WEB鏈嶅姟鍣ㄩ厤缃�
-server:
-  port: 8080
-  servlet:
-    session:
-      timeout: PT3H  #琛ㄧず12灏忔椂
-
-spring:
-  # 鏁版嵁婧愰厤缃�
-  datasource:
-    url: jdbc:mysql://rm-uf6rke0j757nt6eppfo.mysql.rds.aliyuncs.com:3306/intelligent_manufacture?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=GMT%2B8
-    username: rgkj2
-    password: Rgkj2023
-    driver-class-name: com.mysql.cj.jdbc.Driver
-    type: com.alibaba.druid.pool.DruidDataSource
-
-knife4j:
-  enable: true
-  basic:
-    enable: true
-    username: admin
-    password: doumee@168.com
-
-debug_model: true
-
-captcha_check: false
-
-# Swagger閰嶇疆
-swagger:
-  host:
-  title: ${project.name}鎺ュ彛鏂囨。
-  description: ${project.name}鎺ュ彛鏂囨。
-  enabled: true
-  # 绂佺敤swagger鏃剁殑閲嶅畾鍚戝湴鍧�
-  redirect-uri: /
-
-project:
-  imgAuthen: true
\ No newline at end of file
diff --git a/server/target/classes/application-test.yml b/server/target/classes/application-test.yml
deleted file mode 100644
index e1b22f9..0000000
--- a/server/target/classes/application-test.yml
+++ /dev/null
@@ -1,42 +0,0 @@
-# WEB鏈嶅姟鍣ㄩ厤缃�
-server:
-  compression:
-    enabled: true
-    mime-types: application/json
-
-  port: 10010
-  servlet:
-    session:
-      timeout: PT3H  #琛ㄧず12灏忔椂
-
-spring:
-  # 鏁版嵁婧愰厤缃�
-  datasource:
-    url: jdbc:mysql://57b57595ddc66.sh.cdb.myqcloud.com:4464/intelligent_manufacture?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=GMT%2B8
-    username: test
-    password: doumee@168
-    driver-class-name: com.mysql.cj.jdbc.Driver
-    type: com.alibaba.druid.pool.DruidDataSource
-
-knife4j:
-  enable: true
-  basic:
-    enable: true
-    username: admin
-    password: test@168.com
-
-debug_model: true
-
-captcha_check: false
-
-# Swagger閰嶇疆
-swagger:
-  host:
-  title: ${project.name}鎺ュ彛鏂囨。
-  description: ${project.name}鎺ュ彛鏂囨。
-  enabled: true
-  # 绂佺敤swagger鏃剁殑閲嶅畾鍚戝湴鍧�
-  redirect-uri: /
-
-project:
-  imgAuthenti: false
\ No newline at end of file
diff --git a/server/target/classes/application.yml b/server/target/classes/application.yml
deleted file mode 100644
index 3206633..0000000
--- a/server/target/classes/application.yml
+++ /dev/null
@@ -1,65 +0,0 @@
-# 椤圭洰淇℃伅閰嶇疆
-project:
-  name: 棰勯�夋竻鍗曟煡璇�
-  version: 1.0.0
-  env: development
-#  env: production
-
-
-spring:
-#  application:
-#    name: doumeemes
-  profiles:
-    active: dev
-
-  # JSON杩斿洖閰嶇疆
-  jackson:
-    # 榛樿鏃跺尯
-    time-zone: GMT+8
-    # 榛樿鏃ユ湡鏍煎紡鍖�
-    date-format: yyyy-MM-dd HH:mm:ss
-  servlet:
-    multipart:
-      max-file-size: 200MB
-      max-request-size: 200MB
-      enabled: true
-# MyBatis閰嶇疆
-mybatis-plus:
-  mapper-locations: classpath*:/mappers/**/*.xml
-  configuration:
-    map-underscore-to-camel-case: true
-    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
-
-
-# 缂撳瓨鍐呭璁剧疆
-cache:
-  session:
-    # 浼氳瘽杩囨湡鏃堕暱(s)
-    expire: 18000
-  captcha:
-    # 楠岃瘉鐮佽繃鏈熸椂闀�(s)
-    expire: 300
-
-# 璺熻釜鏃ュ織
-trace:
-  # 寮�鍚櫤鑳借窡韪ā寮�
-  smart: true
-  # 鎺掗櫎璺熻釜鐨刄RL姝e垯
-  exclude-patterns: .+/list[a-zA-Z0-9\-\_]*$, .+/tree[a-zA-Z0-9\-\_]*$, .+/page[a-zA-Z0-9\-\_]*$, .+/all[a-zA-Z0-9\-\_]*$, /swagger-resources.*
-
-
-# 鏃ュ織閰嶇疆
-logback:
-  level: INFO
-  appender: ${project.env}
-# dao灞傜殑鏃ュ織璁剧疆涓篸ebug锛屾柟渚挎煡鐪媠ql
-logging:
-  level:
-    doumeemes.dao: debug
-
-knife4j:
-  enable: true
-  basic:
-    enable: true
-    username: admin
-    password: 111111
\ No newline at end of file
diff --git a/server/target/classes/banner.txt b/server/target/classes/banner.txt
deleted file mode 100644
index e1d9b57..0000000
--- a/server/target/classes/banner.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-
-${AnsiColor.BLUE}
-================================================================================
-
-                             娆㈣繋浣跨敤浼婂▋妗嗘灦锛堝崟搴旂敤鐗堬級
-                                 Version :: 1.0
-
-                         鈻堚枅鈻堚枅鈻堚枅鈻堚枅 鈻堚枅      鈻堚枅     鈻堚枅
-                        鈻戔枅鈻堚枒鈻戔枒鈻戔枒 鈻戔枅鈻�     鈻戔枅鈻�    鈻堚枅鈻堚枅
-                        鈻戔枅鈻�      鈻戔枅鈻�     鈻戔枅鈻�   鈻堚枅鈻戔枒鈻堚枅
-                        鈻戔枅鈻堚枅鈻堚枅鈻堚枅 鈻戔枒鈻堚枅    鈻堚枅   鈻堚枅  鈻戔枒鈻堚枅
-                        鈻戔枅鈻堚枒鈻戔枒鈻�   鈻戔枒鈻堚枅  鈻堚枅   鈻堚枅鈻堚枅鈻堚枅鈻堚枅鈻堚枅
-                        鈻戔枅鈻�        鈻戔枒鈻堚枅鈻堚枅   鈻戔枅鈻堚枒鈻戔枒鈻戔枒鈻戔枅鈻�
-                        鈻戔枅鈻堚枅鈻堚枅鈻堚枅鈻�   鈻戔枒鈻堚枅    鈻戔枅鈻�     鈻戔枅鈻�
-                        鈻戔枒鈻戔枒鈻戔枒鈻戔枒     鈻戔枒     鈻戔枒      鈻戔枒
-
-      鍚姩绔彛: ${server.port}  鍚姩鐜: ${project.env}  鏃ュ織绛夌骇: ${logback.level}  鍚敤Swagger: ${swagger.enabled}
-
-================================================================================
-
diff --git a/server/target/classes/com/doumee/Application.class b/server/target/classes/com/doumee/Application.class
deleted file mode 100644
index 234e6f4..0000000
--- a/server/target/classes/com/doumee/Application.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/api/BaseController.class b/server/target/classes/com/doumee/api/BaseController.class
deleted file mode 100644
index db939c6..0000000
--- a/server/target/classes/com/doumee/api/BaseController.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/api/business/BrandController.class b/server/target/classes/com/doumee/api/business/BrandController.class
deleted file mode 100644
index 9ef76b2..0000000
--- a/server/target/classes/com/doumee/api/business/BrandController.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/api/business/CateAttrController.class b/server/target/classes/com/doumee/api/business/CateAttrController.class
deleted file mode 100644
index ce54c52..0000000
--- a/server/target/classes/com/doumee/api/business/CateAttrController.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/api/business/CateParamController.class b/server/target/classes/com/doumee/api/business/CateParamController.class
deleted file mode 100644
index 19e97f4..0000000
--- a/server/target/classes/com/doumee/api/business/CateParamController.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/api/business/CategoryController.class b/server/target/classes/com/doumee/api/business/CategoryController.class
deleted file mode 100644
index 8847f1b..0000000
--- a/server/target/classes/com/doumee/api/business/CategoryController.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/api/business/GoodsController.class b/server/target/classes/com/doumee/api/business/GoodsController.class
deleted file mode 100644
index f1e8543..0000000
--- a/server/target/classes/com/doumee/api/business/GoodsController.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/api/business/GoodsParamController.class b/server/target/classes/com/doumee/api/business/GoodsParamController.class
deleted file mode 100644
index 0c2f37c..0000000
--- a/server/target/classes/com/doumee/api/business/GoodsParamController.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/api/business/MultifileController.class b/server/target/classes/com/doumee/api/business/MultifileController.class
deleted file mode 100644
index a23de6d..0000000
--- a/server/target/classes/com/doumee/api/business/MultifileController.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/api/common/CaptchaController.class b/server/target/classes/com/doumee/api/common/CaptchaController.class
deleted file mode 100644
index 462916f..0000000
--- a/server/target/classes/com/doumee/api/common/CaptchaController.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/api/common/PublicController.class b/server/target/classes/com/doumee/api/common/PublicController.class
deleted file mode 100644
index c429aa4..0000000
--- a/server/target/classes/com/doumee/api/common/PublicController.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/api/system/SystemController.class b/server/target/classes/com/doumee/api/system/SystemController.class
deleted file mode 100644
index 1ce9087..0000000
--- a/server/target/classes/com/doumee/api/system/SystemController.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/api/system/SystemDataPermissionController.class b/server/target/classes/com/doumee/api/system/SystemDataPermissionController.class
deleted file mode 100644
index 5c8d58d..0000000
--- a/server/target/classes/com/doumee/api/system/SystemDataPermissionController.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/api/system/SystemDepartmentController.class b/server/target/classes/com/doumee/api/system/SystemDepartmentController.class
deleted file mode 100644
index fe0d61d..0000000
--- a/server/target/classes/com/doumee/api/system/SystemDepartmentController.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/api/system/SystemDictController.class b/server/target/classes/com/doumee/api/system/SystemDictController.class
deleted file mode 100644
index 27a67c8..0000000
--- a/server/target/classes/com/doumee/api/system/SystemDictController.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/api/system/SystemDictDataController.class b/server/target/classes/com/doumee/api/system/SystemDictDataController.class
deleted file mode 100644
index 47639c0..0000000
--- a/server/target/classes/com/doumee/api/system/SystemDictDataController.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/api/system/SystemLoginLogController.class b/server/target/classes/com/doumee/api/system/SystemLoginLogController.class
deleted file mode 100644
index 4848f58..0000000
--- a/server/target/classes/com/doumee/api/system/SystemLoginLogController.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/api/system/SystemMenuController.class b/server/target/classes/com/doumee/api/system/SystemMenuController.class
deleted file mode 100644
index 438ee00..0000000
--- a/server/target/classes/com/doumee/api/system/SystemMenuController.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/api/system/SystemMonitorController.class b/server/target/classes/com/doumee/api/system/SystemMonitorController.class
deleted file mode 100644
index a1a4da3..0000000
--- a/server/target/classes/com/doumee/api/system/SystemMonitorController.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/api/system/SystemPermissionController.class b/server/target/classes/com/doumee/api/system/SystemPermissionController.class
deleted file mode 100644
index 298a12c..0000000
--- a/server/target/classes/com/doumee/api/system/SystemPermissionController.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/api/system/SystemPositionController.class b/server/target/classes/com/doumee/api/system/SystemPositionController.class
deleted file mode 100644
index b1b1704..0000000
--- a/server/target/classes/com/doumee/api/system/SystemPositionController.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/api/system/SystemRoleController.class b/server/target/classes/com/doumee/api/system/SystemRoleController.class
deleted file mode 100644
index 4ed8cda..0000000
--- a/server/target/classes/com/doumee/api/system/SystemRoleController.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/api/system/SystemTraceLogController.class b/server/target/classes/com/doumee/api/system/SystemTraceLogController.class
deleted file mode 100644
index 6f2b33e..0000000
--- a/server/target/classes/com/doumee/api/system/SystemTraceLogController.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/api/system/SystemUserController.class b/server/target/classes/com/doumee/api/system/SystemUserController.class
deleted file mode 100644
index 5bc1b2b..0000000
--- a/server/target/classes/com/doumee/api/system/SystemUserController.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/biz/system/SystemDataPermissionBiz.class b/server/target/classes/com/doumee/biz/system/SystemDataPermissionBiz.class
deleted file mode 100644
index 2175fee..0000000
--- a/server/target/classes/com/doumee/biz/system/SystemDataPermissionBiz.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/biz/system/SystemDepartmentBiz.class b/server/target/classes/com/doumee/biz/system/SystemDepartmentBiz.class
deleted file mode 100644
index aa2976f..0000000
--- a/server/target/classes/com/doumee/biz/system/SystemDepartmentBiz.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/biz/system/SystemDictBiz.class b/server/target/classes/com/doumee/biz/system/SystemDictBiz.class
deleted file mode 100644
index 1068263..0000000
--- a/server/target/classes/com/doumee/biz/system/SystemDictBiz.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/biz/system/SystemDictDataBiz.class b/server/target/classes/com/doumee/biz/system/SystemDictDataBiz.class
deleted file mode 100644
index 585dff1..0000000
--- a/server/target/classes/com/doumee/biz/system/SystemDictDataBiz.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/biz/system/SystemMenuBiz.class b/server/target/classes/com/doumee/biz/system/SystemMenuBiz.class
deleted file mode 100644
index f7df264..0000000
--- a/server/target/classes/com/doumee/biz/system/SystemMenuBiz.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/biz/system/SystemPermissionBiz.class b/server/target/classes/com/doumee/biz/system/SystemPermissionBiz.class
deleted file mode 100644
index 32d73f0..0000000
--- a/server/target/classes/com/doumee/biz/system/SystemPermissionBiz.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/biz/system/SystemPositionBiz.class b/server/target/classes/com/doumee/biz/system/SystemPositionBiz.class
deleted file mode 100644
index a6046ff..0000000
--- a/server/target/classes/com/doumee/biz/system/SystemPositionBiz.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/biz/system/SystemRoleBiz.class b/server/target/classes/com/doumee/biz/system/SystemRoleBiz.class
deleted file mode 100644
index f9e2b2e..0000000
--- a/server/target/classes/com/doumee/biz/system/SystemRoleBiz.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/biz/system/SystemUserBiz.class b/server/target/classes/com/doumee/biz/system/SystemUserBiz.class
deleted file mode 100644
index 82d097f..0000000
--- a/server/target/classes/com/doumee/biz/system/SystemUserBiz.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/biz/system/impl/SystemDataPermissionBizImpl.class b/server/target/classes/com/doumee/biz/system/impl/SystemDataPermissionBizImpl.class
deleted file mode 100644
index dd87df2..0000000
--- a/server/target/classes/com/doumee/biz/system/impl/SystemDataPermissionBizImpl.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/biz/system/impl/SystemDepartmentBizImpl.class b/server/target/classes/com/doumee/biz/system/impl/SystemDepartmentBizImpl.class
deleted file mode 100644
index c107761..0000000
--- a/server/target/classes/com/doumee/biz/system/impl/SystemDepartmentBizImpl.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/biz/system/impl/SystemDictBizImpl.class b/server/target/classes/com/doumee/biz/system/impl/SystemDictBizImpl.class
deleted file mode 100644
index a1c05a9..0000000
--- a/server/target/classes/com/doumee/biz/system/impl/SystemDictBizImpl.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/biz/system/impl/SystemDictDataBizImpl.class b/server/target/classes/com/doumee/biz/system/impl/SystemDictDataBizImpl.class
deleted file mode 100644
index d33ad1f..0000000
--- a/server/target/classes/com/doumee/biz/system/impl/SystemDictDataBizImpl.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/biz/system/impl/SystemMenuBizImpl.class b/server/target/classes/com/doumee/biz/system/impl/SystemMenuBizImpl.class
deleted file mode 100644
index f697ffd..0000000
--- a/server/target/classes/com/doumee/biz/system/impl/SystemMenuBizImpl.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/biz/system/impl/SystemPermissionBizImpl.class b/server/target/classes/com/doumee/biz/system/impl/SystemPermissionBizImpl.class
deleted file mode 100644
index 586324c..0000000
--- a/server/target/classes/com/doumee/biz/system/impl/SystemPermissionBizImpl.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/biz/system/impl/SystemPositionBizImpl.class b/server/target/classes/com/doumee/biz/system/impl/SystemPositionBizImpl.class
deleted file mode 100644
index 1e643f9..0000000
--- a/server/target/classes/com/doumee/biz/system/impl/SystemPositionBizImpl.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/biz/system/impl/SystemRoleBizImpl.class b/server/target/classes/com/doumee/biz/system/impl/SystemRoleBizImpl.class
deleted file mode 100644
index 2dba65d..0000000
--- a/server/target/classes/com/doumee/biz/system/impl/SystemRoleBizImpl.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/biz/system/impl/SystemUserBizImpl.class b/server/target/classes/com/doumee/biz/system/impl/SystemUserBizImpl.class
deleted file mode 100644
index 152db74..0000000
--- a/server/target/classes/com/doumee/biz/system/impl/SystemUserBizImpl.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/config/handler/GlobalExceptionHandler.class b/server/target/classes/com/doumee/config/handler/GlobalExceptionHandler.class
deleted file mode 100644
index 5af7e64..0000000
--- a/server/target/classes/com/doumee/config/handler/GlobalExceptionHandler.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/config/mybatis/MyBatisInterceptor.class b/server/target/classes/com/doumee/config/mybatis/MyBatisInterceptor.class
deleted file mode 100644
index e34942f..0000000
--- a/server/target/classes/com/doumee/config/mybatis/MyBatisInterceptor.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/config/mybatis/MyBatisPlusConfig.class b/server/target/classes/com/doumee/config/mybatis/MyBatisPlusConfig.class
deleted file mode 100644
index 7f58458..0000000
--- a/server/target/classes/com/doumee/config/mybatis/MyBatisPlusConfig.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/config/shiro/ShiroAuthFilter.class b/server/target/classes/com/doumee/config/shiro/ShiroAuthFilter.class
deleted file mode 100644
index 8ca27a0..0000000
--- a/server/target/classes/com/doumee/config/shiro/ShiroAuthFilter.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/config/shiro/ShiroCache.class b/server/target/classes/com/doumee/config/shiro/ShiroCache.class
deleted file mode 100644
index 09e49e9..0000000
--- a/server/target/classes/com/doumee/config/shiro/ShiroCache.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/config/shiro/ShiroCacheManager.class b/server/target/classes/com/doumee/config/shiro/ShiroCacheManager.class
deleted file mode 100644
index 2efa336..0000000
--- a/server/target/classes/com/doumee/config/shiro/ShiroCacheManager.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/config/shiro/ShiroConfig.class b/server/target/classes/com/doumee/config/shiro/ShiroConfig.class
deleted file mode 100644
index 24e6b9a..0000000
--- a/server/target/classes/com/doumee/config/shiro/ShiroConfig.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/config/shiro/ShiroCredentialsMatcher.class b/server/target/classes/com/doumee/config/shiro/ShiroCredentialsMatcher.class
deleted file mode 100644
index b3843e1..0000000
--- a/server/target/classes/com/doumee/config/shiro/ShiroCredentialsMatcher.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/config/shiro/ShiroRealm.class b/server/target/classes/com/doumee/config/shiro/ShiroRealm.class
deleted file mode 100644
index 0597385..0000000
--- a/server/target/classes/com/doumee/config/shiro/ShiroRealm.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/config/shiro/ShiroSessionDAO.class b/server/target/classes/com/doumee/config/shiro/ShiroSessionDAO.class
deleted file mode 100644
index d41f8e7..0000000
--- a/server/target/classes/com/doumee/config/shiro/ShiroSessionDAO.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/config/shiro/ShiroSessionManager.class b/server/target/classes/com/doumee/config/shiro/ShiroSessionManager.class
deleted file mode 100644
index 154b8bf..0000000
--- a/server/target/classes/com/doumee/config/shiro/ShiroSessionManager.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/config/shiro/ShiroTokenManager.class b/server/target/classes/com/doumee/config/shiro/ShiroTokenManager.class
deleted file mode 100644
index 40577a8..0000000
--- a/server/target/classes/com/doumee/config/shiro/ShiroTokenManager.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/config/swagger/SwaggerConfig.class b/server/target/classes/com/doumee/config/swagger/SwaggerConfig.class
deleted file mode 100644
index 4d30ead..0000000
--- a/server/target/classes/com/doumee/config/swagger/SwaggerConfig.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/config/swagger/SwaggerInterceptor.class b/server/target/classes/com/doumee/config/swagger/SwaggerInterceptor.class
deleted file mode 100644
index 6ab6b92..0000000
--- a/server/target/classes/com/doumee/config/swagger/SwaggerInterceptor.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/config/swagger/SwaggerInterceptorConfig.class b/server/target/classes/com/doumee/config/swagger/SwaggerInterceptorConfig.class
deleted file mode 100644
index 6f5592c..0000000
--- a/server/target/classes/com/doumee/config/swagger/SwaggerInterceptorConfig.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/core/annotation/excel/ExcelColumn.class b/server/target/classes/com/doumee/core/annotation/excel/ExcelColumn.class
deleted file mode 100644
index 16f7a2c..0000000
--- a/server/target/classes/com/doumee/core/annotation/excel/ExcelColumn.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/core/annotation/excel/ExcelDataHandlerAdapter.class b/server/target/classes/com/doumee/core/annotation/excel/ExcelDataHandlerAdapter.class
deleted file mode 100644
index 475dd4e..0000000
--- a/server/target/classes/com/doumee/core/annotation/excel/ExcelDataHandlerAdapter.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/core/annotation/excel/ExcelExporter$ColumnInfo.class b/server/target/classes/com/doumee/core/annotation/excel/ExcelExporter$ColumnInfo.class
deleted file mode 100644
index e8f450d..0000000
--- a/server/target/classes/com/doumee/core/annotation/excel/ExcelExporter$ColumnInfo.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/core/annotation/excel/ExcelExporter.class b/server/target/classes/com/doumee/core/annotation/excel/ExcelExporter.class
deleted file mode 100644
index a48b11f..0000000
--- a/server/target/classes/com/doumee/core/annotation/excel/ExcelExporter.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/core/annotation/excel/ExcelImporter.class b/server/target/classes/com/doumee/core/annotation/excel/ExcelImporter.class
deleted file mode 100644
index dcb93ab..0000000
--- a/server/target/classes/com/doumee/core/annotation/excel/ExcelImporter.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/core/annotation/excel/Reflections.class b/server/target/classes/com/doumee/core/annotation/excel/Reflections.class
deleted file mode 100644
index be4629e..0000000
--- a/server/target/classes/com/doumee/core/annotation/excel/Reflections.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/core/annotation/pr/PreventRepeat.class b/server/target/classes/com/doumee/core/annotation/pr/PreventRepeat.class
deleted file mode 100644
index 9eed294..0000000
--- a/server/target/classes/com/doumee/core/annotation/pr/PreventRepeat.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/core/annotation/pr/PreventRepeatAdapter$MassiveUnit.class b/server/target/classes/com/doumee/core/annotation/pr/PreventRepeatAdapter$MassiveUnit.class
deleted file mode 100644
index e116632..0000000
--- a/server/target/classes/com/doumee/core/annotation/pr/PreventRepeatAdapter$MassiveUnit.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/core/annotation/pr/PreventRepeatAdapter.class b/server/target/classes/com/doumee/core/annotation/pr/PreventRepeatAdapter.class
deleted file mode 100644
index 27656ff..0000000
--- a/server/target/classes/com/doumee/core/annotation/pr/PreventRepeatAdapter.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/core/annotation/pr/PreventRepeatDefaultHandler.class b/server/target/classes/com/doumee/core/annotation/pr/PreventRepeatDefaultHandler.class
deleted file mode 100644
index 466c07a..0000000
--- a/server/target/classes/com/doumee/core/annotation/pr/PreventRepeatDefaultHandler.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/core/annotation/pr/PreventRepeatInterceptor.class b/server/target/classes/com/doumee/core/annotation/pr/PreventRepeatInterceptor.class
deleted file mode 100644
index c18ba61..0000000
--- a/server/target/classes/com/doumee/core/annotation/pr/PreventRepeatInterceptor.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/core/annotation/pr/PreventRepeatInterceptorConfig.class b/server/target/classes/com/doumee/core/annotation/pr/PreventRepeatInterceptorConfig.class
deleted file mode 100644
index 247714a..0000000
--- a/server/target/classes/com/doumee/core/annotation/pr/PreventRepeatInterceptorConfig.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/core/annotation/trace/Trace.class b/server/target/classes/com/doumee/core/annotation/trace/Trace.class
deleted file mode 100644
index 8ec787e..0000000
--- a/server/target/classes/com/doumee/core/annotation/trace/Trace.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/core/annotation/trace/TraceInterceptor.class b/server/target/classes/com/doumee/core/annotation/trace/TraceInterceptor.class
deleted file mode 100644
index 6c2e956..0000000
--- a/server/target/classes/com/doumee/core/annotation/trace/TraceInterceptor.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/core/annotation/trace/TraceInterceptorConfig.class b/server/target/classes/com/doumee/core/annotation/trace/TraceInterceptorConfig.class
deleted file mode 100644
index a5245da..0000000
--- a/server/target/classes/com/doumee/core/annotation/trace/TraceInterceptorConfig.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/core/annotation/trace/TraceStatus.class b/server/target/classes/com/doumee/core/annotation/trace/TraceStatus.class
deleted file mode 100644
index 1830063..0000000
--- a/server/target/classes/com/doumee/core/annotation/trace/TraceStatus.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/core/annotation/trace/TraceType.class b/server/target/classes/com/doumee/core/annotation/trace/TraceType.class
deleted file mode 100644
index 207dfe6..0000000
--- a/server/target/classes/com/doumee/core/annotation/trace/TraceType.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/core/aware/DataPermissionAware.class b/server/target/classes/com/doumee/core/aware/DataPermissionAware.class
deleted file mode 100644
index 14156ab..0000000
--- a/server/target/classes/com/doumee/core/aware/DataPermissionAware.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/core/aware/DataPermissionMapping.class b/server/target/classes/com/doumee/core/aware/DataPermissionMapping.class
deleted file mode 100644
index f1f5cac..0000000
--- a/server/target/classes/com/doumee/core/aware/DataPermissionMapping.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/core/aware/DefaultDataPermissionAware.class b/server/target/classes/com/doumee/core/aware/DefaultDataPermissionAware.class
deleted file mode 100644
index fe7a2a8..0000000
--- a/server/target/classes/com/doumee/core/aware/DefaultDataPermissionAware.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/core/cache/LocalCache$Value.class b/server/target/classes/com/doumee/core/cache/LocalCache$Value.class
deleted file mode 100644
index b71a51b..0000000
--- a/server/target/classes/com/doumee/core/cache/LocalCache$Value.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/core/cache/LocalCache.class b/server/target/classes/com/doumee/core/cache/LocalCache.class
deleted file mode 100644
index 9cf773e..0000000
--- a/server/target/classes/com/doumee/core/cache/LocalCache.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/core/constants/DataPermissionConstants$Module$1.class b/server/target/classes/com/doumee/core/constants/DataPermissionConstants$Module$1.class
deleted file mode 100644
index fae46e8..0000000
--- a/server/target/classes/com/doumee/core/constants/DataPermissionConstants$Module$1.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/core/constants/DataPermissionConstants$Module.class b/server/target/classes/com/doumee/core/constants/DataPermissionConstants$Module.class
deleted file mode 100644
index 467e71a..0000000
--- a/server/target/classes/com/doumee/core/constants/DataPermissionConstants$Module.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/core/constants/DataPermissionConstants$Type$1.class b/server/target/classes/com/doumee/core/constants/DataPermissionConstants$Type$1.class
deleted file mode 100644
index 3a2bb68..0000000
--- a/server/target/classes/com/doumee/core/constants/DataPermissionConstants$Type$1.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/core/constants/DataPermissionConstants$Type.class b/server/target/classes/com/doumee/core/constants/DataPermissionConstants$Type.class
deleted file mode 100644
index 8f2a523..0000000
--- a/server/target/classes/com/doumee/core/constants/DataPermissionConstants$Type.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/core/constants/DataPermissionConstants.class b/server/target/classes/com/doumee/core/constants/DataPermissionConstants.class
deleted file mode 100644
index 165ef13..0000000
--- a/server/target/classes/com/doumee/core/constants/DataPermissionConstants.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/core/constants/ExceptionLevel.class b/server/target/classes/com/doumee/core/constants/ExceptionLevel.class
deleted file mode 100644
index 7ff8838..0000000
--- a/server/target/classes/com/doumee/core/constants/ExceptionLevel.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/core/constants/OperaType$Create.class b/server/target/classes/com/doumee/core/constants/OperaType$Create.class
deleted file mode 100644
index 7f27bb8..0000000
--- a/server/target/classes/com/doumee/core/constants/OperaType$Create.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/core/constants/OperaType$Update.class b/server/target/classes/com/doumee/core/constants/OperaType$Update.class
deleted file mode 100644
index e7c55a2..0000000
--- a/server/target/classes/com/doumee/core/constants/OperaType$Update.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/core/constants/OperaType$UpdateStatus.class b/server/target/classes/com/doumee/core/constants/OperaType$UpdateStatus.class
deleted file mode 100644
index cbe8c62..0000000
--- a/server/target/classes/com/doumee/core/constants/OperaType$UpdateStatus.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/core/constants/OperaType.class b/server/target/classes/com/doumee/core/constants/OperaType.class
deleted file mode 100644
index bd75baa..0000000
--- a/server/target/classes/com/doumee/core/constants/OperaType.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/core/constants/ResponseStatus.class b/server/target/classes/com/doumee/core/constants/ResponseStatus.class
deleted file mode 100644
index a4eee80..0000000
--- a/server/target/classes/com/doumee/core/constants/ResponseStatus.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/core/exception/BusinessException.class b/server/target/classes/com/doumee/core/exception/BusinessException.class
deleted file mode 100644
index 8aa3549..0000000
--- a/server/target/classes/com/doumee/core/exception/BusinessException.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/core/exception/UnSafeSessionException.class b/server/target/classes/com/doumee/core/exception/UnSafeSessionException.class
deleted file mode 100644
index bb148bd..0000000
--- a/server/target/classes/com/doumee/core/exception/UnSafeSessionException.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/core/model/ApiResponse.class b/server/target/classes/com/doumee/core/model/ApiResponse.class
deleted file mode 100644
index 8376cf8..0000000
--- a/server/target/classes/com/doumee/core/model/ApiResponse.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/core/model/LoginUserInfo.class b/server/target/classes/com/doumee/core/model/LoginUserInfo.class
deleted file mode 100644
index 55b5610..0000000
--- a/server/target/classes/com/doumee/core/model/LoginUserInfo.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/core/model/PageData.class b/server/target/classes/com/doumee/core/model/PageData.class
deleted file mode 100644
index 1464ac1..0000000
--- a/server/target/classes/com/doumee/core/model/PageData.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/core/model/PageWrap$SortData.class b/server/target/classes/com/doumee/core/model/PageWrap$SortData.class
deleted file mode 100644
index 9f0409a..0000000
--- a/server/target/classes/com/doumee/core/model/PageWrap$SortData.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/core/model/PageWrap.class b/server/target/classes/com/doumee/core/model/PageWrap.class
deleted file mode 100644
index 62d1658..0000000
--- a/server/target/classes/com/doumee/core/model/PageWrap.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/core/servlet/ServletDuplicateInputStream.class b/server/target/classes/com/doumee/core/servlet/ServletDuplicateInputStream.class
deleted file mode 100644
index ac2451b..0000000
--- a/server/target/classes/com/doumee/core/servlet/ServletDuplicateInputStream.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/core/servlet/ServletDuplicateOutputStream.class b/server/target/classes/com/doumee/core/servlet/ServletDuplicateOutputStream.class
deleted file mode 100644
index 2696c43..0000000
--- a/server/target/classes/com/doumee/core/servlet/ServletDuplicateOutputStream.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/core/servlet/ServletDuplicateRequestWrapper.class b/server/target/classes/com/doumee/core/servlet/ServletDuplicateRequestWrapper.class
deleted file mode 100644
index 7100aba..0000000
--- a/server/target/classes/com/doumee/core/servlet/ServletDuplicateRequestWrapper.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/core/servlet/ServletDuplicateResponseWrapper.class b/server/target/classes/com/doumee/core/servlet/ServletDuplicateResponseWrapper.class
deleted file mode 100644
index f277e43..0000000
--- a/server/target/classes/com/doumee/core/servlet/ServletDuplicateResponseWrapper.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/core/servlet/ServletRewriteFilter.class b/server/target/classes/com/doumee/core/servlet/ServletRewriteFilter.class
deleted file mode 100644
index 67bcbbf..0000000
--- a/server/target/classes/com/doumee/core/servlet/ServletRewriteFilter.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/core/utils/Constants$CompanyType.class b/server/target/classes/com/doumee/core/utils/Constants$CompanyType.class
deleted file mode 100644
index de5c436..0000000
--- a/server/target/classes/com/doumee/core/utils/Constants$CompanyType.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/core/utils/Constants$DeclareCheckType.class b/server/target/classes/com/doumee/core/utils/Constants$DeclareCheckType.class
deleted file mode 100644
index c023a97..0000000
--- a/server/target/classes/com/doumee/core/utils/Constants$DeclareCheckType.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/core/utils/Constants$DeclareHistoryType.class b/server/target/classes/com/doumee/core/utils/Constants$DeclareHistoryType.class
deleted file mode 100644
index 36abc91..0000000
--- a/server/target/classes/com/doumee/core/utils/Constants$DeclareHistoryType.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/core/utils/Constants$DeclareStatus.class b/server/target/classes/com/doumee/core/utils/Constants$DeclareStatus.class
deleted file mode 100644
index 19e8f3b..0000000
--- a/server/target/classes/com/doumee/core/utils/Constants$DeclareStatus.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/core/utils/Constants$MultiFile.class b/server/target/classes/com/doumee/core/utils/Constants$MultiFile.class
deleted file mode 100644
index 268967b..0000000
--- a/server/target/classes/com/doumee/core/utils/Constants$MultiFile.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/core/utils/Constants$ORIGIN.class b/server/target/classes/com/doumee/core/utils/Constants$ORIGIN.class
deleted file mode 100644
index ea11cea..0000000
--- a/server/target/classes/com/doumee/core/utils/Constants$ORIGIN.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/core/utils/Constants$ProjectRecord.class b/server/target/classes/com/doumee/core/utils/Constants$ProjectRecord.class
deleted file mode 100644
index ede9c62..0000000
--- a/server/target/classes/com/doumee/core/utils/Constants$ProjectRecord.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/core/utils/Constants$Status.class b/server/target/classes/com/doumee/core/utils/Constants$Status.class
deleted file mode 100644
index 8467620..0000000
--- a/server/target/classes/com/doumee/core/utils/Constants$Status.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/core/utils/Constants$UserType.class b/server/target/classes/com/doumee/core/utils/Constants$UserType.class
deleted file mode 100644
index a1ec72a..0000000
--- a/server/target/classes/com/doumee/core/utils/Constants$UserType.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/core/utils/Constants.class b/server/target/classes/com/doumee/core/utils/Constants.class
deleted file mode 100644
index 069410f..0000000
--- a/server/target/classes/com/doumee/core/utils/Constants.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/core/utils/Date.class b/server/target/classes/com/doumee/core/utils/Date.class
deleted file mode 100644
index 33467fb..0000000
--- a/server/target/classes/com/doumee/core/utils/Date.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/core/utils/DateUtil.class b/server/target/classes/com/doumee/core/utils/DateUtil.class
deleted file mode 100644
index 1e57d90..0000000
--- a/server/target/classes/com/doumee/core/utils/DateUtil.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/core/utils/FileDigest.class b/server/target/classes/com/doumee/core/utils/FileDigest.class
deleted file mode 100644
index a87b55a..0000000
--- a/server/target/classes/com/doumee/core/utils/FileDigest.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/core/utils/Http$HttpResult.class b/server/target/classes/com/doumee/core/utils/Http$HttpResult.class
deleted file mode 100644
index c22a7a4..0000000
--- a/server/target/classes/com/doumee/core/utils/Http$HttpResult.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/core/utils/Http$HttpWrap.class b/server/target/classes/com/doumee/core/utils/Http$HttpWrap.class
deleted file mode 100644
index 136b659..0000000
--- a/server/target/classes/com/doumee/core/utils/Http$HttpWrap.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/core/utils/Http.class b/server/target/classes/com/doumee/core/utils/Http.class
deleted file mode 100644
index 49b437b..0000000
--- a/server/target/classes/com/doumee/core/utils/Http.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/core/utils/Location$Info.class b/server/target/classes/com/doumee/core/utils/Location$Info.class
deleted file mode 100644
index bd034ec..0000000
--- a/server/target/classes/com/doumee/core/utils/Location$Info.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/core/utils/Location.class b/server/target/classes/com/doumee/core/utils/Location.class
deleted file mode 100644
index 2956585..0000000
--- a/server/target/classes/com/doumee/core/utils/Location.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/core/utils/Monitor.class b/server/target/classes/com/doumee/core/utils/Monitor.class
deleted file mode 100644
index 7974d32..0000000
--- a/server/target/classes/com/doumee/core/utils/Monitor.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/core/utils/MyBatisPlus.class b/server/target/classes/com/doumee/core/utils/MyBatisPlus.class
deleted file mode 100644
index 21f286c..0000000
--- a/server/target/classes/com/doumee/core/utils/MyBatisPlus.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/core/utils/Secure.class b/server/target/classes/com/doumee/core/utils/Secure.class
deleted file mode 100644
index de08096..0000000
--- a/server/target/classes/com/doumee/core/utils/Secure.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/core/utils/Server.class b/server/target/classes/com/doumee/core/utils/Server.class
deleted file mode 100644
index 208db27..0000000
--- a/server/target/classes/com/doumee/core/utils/Server.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/core/utils/UserClient.class b/server/target/classes/com/doumee/core/utils/UserClient.class
deleted file mode 100644
index f0ed395..0000000
--- a/server/target/classes/com/doumee/core/utils/UserClient.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/core/utils/Utils.class b/server/target/classes/com/doumee/core/utils/Utils.class
deleted file mode 100644
index 4ae0963..0000000
--- a/server/target/classes/com/doumee/core/utils/Utils.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/core/utils/aliyun/ALiYunUtil.class b/server/target/classes/com/doumee/core/utils/aliyun/ALiYunUtil.class
deleted file mode 100644
index a442765..0000000
--- a/server/target/classes/com/doumee/core/utils/aliyun/ALiYunUtil.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/core/utils/monitor/CPU.class b/server/target/classes/com/doumee/core/utils/monitor/CPU.class
deleted file mode 100644
index 26bccd0..0000000
--- a/server/target/classes/com/doumee/core/utils/monitor/CPU.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/core/utils/monitor/Disk.class b/server/target/classes/com/doumee/core/utils/monitor/Disk.class
deleted file mode 100644
index 2cdffdb..0000000
--- a/server/target/classes/com/doumee/core/utils/monitor/Disk.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/core/utils/monitor/JVM.class b/server/target/classes/com/doumee/core/utils/monitor/JVM.class
deleted file mode 100644
index b0548d4..0000000
--- a/server/target/classes/com/doumee/core/utils/monitor/JVM.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/core/utils/monitor/Memory.class b/server/target/classes/com/doumee/core/utils/monitor/Memory.class
deleted file mode 100644
index 77b9254..0000000
--- a/server/target/classes/com/doumee/core/utils/monitor/Memory.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/dao/business/BrandMapper.class b/server/target/classes/com/doumee/dao/business/BrandMapper.class
deleted file mode 100644
index 2ec024c..0000000
--- a/server/target/classes/com/doumee/dao/business/BrandMapper.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/dao/business/CateAttrMapper.class b/server/target/classes/com/doumee/dao/business/CateAttrMapper.class
deleted file mode 100644
index d370a19..0000000
--- a/server/target/classes/com/doumee/dao/business/CateAttrMapper.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/dao/business/CateParamMapper.class b/server/target/classes/com/doumee/dao/business/CateParamMapper.class
deleted file mode 100644
index b81a3aa..0000000
--- a/server/target/classes/com/doumee/dao/business/CateParamMapper.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/dao/business/CategoryMapper.class b/server/target/classes/com/doumee/dao/business/CategoryMapper.class
deleted file mode 100644
index 2d4ca08..0000000
--- a/server/target/classes/com/doumee/dao/business/CategoryMapper.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/dao/business/GoodsMapper.class b/server/target/classes/com/doumee/dao/business/GoodsMapper.class
deleted file mode 100644
index cda8c12..0000000
--- a/server/target/classes/com/doumee/dao/business/GoodsMapper.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/dao/business/GoodsParamMapper.class b/server/target/classes/com/doumee/dao/business/GoodsParamMapper.class
deleted file mode 100644
index 064682e..0000000
--- a/server/target/classes/com/doumee/dao/business/GoodsParamMapper.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/dao/business/MultifileMapper.class b/server/target/classes/com/doumee/dao/business/MultifileMapper.class
deleted file mode 100644
index 29a0982..0000000
--- a/server/target/classes/com/doumee/dao/business/MultifileMapper.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/dao/business/model/Brand.class b/server/target/classes/com/doumee/dao/business/model/Brand.class
deleted file mode 100644
index a9a4ac8..0000000
--- a/server/target/classes/com/doumee/dao/business/model/Brand.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/dao/business/model/CateAttr.class b/server/target/classes/com/doumee/dao/business/model/CateAttr.class
deleted file mode 100644
index 392fbe9..0000000
--- a/server/target/classes/com/doumee/dao/business/model/CateAttr.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/dao/business/model/CateParam.class b/server/target/classes/com/doumee/dao/business/model/CateParam.class
deleted file mode 100644
index 62e4967..0000000
--- a/server/target/classes/com/doumee/dao/business/model/CateParam.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/dao/business/model/Category.class b/server/target/classes/com/doumee/dao/business/model/Category.class
deleted file mode 100644
index 33d1afa..0000000
--- a/server/target/classes/com/doumee/dao/business/model/Category.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/dao/business/model/Goods.class b/server/target/classes/com/doumee/dao/business/model/Goods.class
deleted file mode 100644
index 6337160..0000000
--- a/server/target/classes/com/doumee/dao/business/model/Goods.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/dao/business/model/GoodsParam.class b/server/target/classes/com/doumee/dao/business/model/GoodsParam.class
deleted file mode 100644
index 03063d7..0000000
--- a/server/target/classes/com/doumee/dao/business/model/GoodsParam.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/dao/business/model/Multifile.class b/server/target/classes/com/doumee/dao/business/model/Multifile.class
deleted file mode 100644
index 5e952da..0000000
--- a/server/target/classes/com/doumee/dao/business/model/Multifile.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/dao/system/SystemDataPermissionMapper.class b/server/target/classes/com/doumee/dao/system/SystemDataPermissionMapper.class
deleted file mode 100644
index 47ab129..0000000
--- a/server/target/classes/com/doumee/dao/system/SystemDataPermissionMapper.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/dao/system/SystemDepartmentMapper.class b/server/target/classes/com/doumee/dao/system/SystemDepartmentMapper.class
deleted file mode 100644
index b3d05ca..0000000
--- a/server/target/classes/com/doumee/dao/system/SystemDepartmentMapper.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/dao/system/SystemDepartmentUserMapper.class b/server/target/classes/com/doumee/dao/system/SystemDepartmentUserMapper.class
deleted file mode 100644
index 7117424..0000000
--- a/server/target/classes/com/doumee/dao/system/SystemDepartmentUserMapper.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/dao/system/SystemDictDataMapper.class b/server/target/classes/com/doumee/dao/system/SystemDictDataMapper.class
deleted file mode 100644
index 0617e50..0000000
--- a/server/target/classes/com/doumee/dao/system/SystemDictDataMapper.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/dao/system/SystemDictMapper.class b/server/target/classes/com/doumee/dao/system/SystemDictMapper.class
deleted file mode 100644
index cdd8f90..0000000
--- a/server/target/classes/com/doumee/dao/system/SystemDictMapper.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/dao/system/SystemLoginLogMapper.class b/server/target/classes/com/doumee/dao/system/SystemLoginLogMapper.class
deleted file mode 100644
index 10e5000..0000000
--- a/server/target/classes/com/doumee/dao/system/SystemLoginLogMapper.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/dao/system/SystemMenuMapper.class b/server/target/classes/com/doumee/dao/system/SystemMenuMapper.class
deleted file mode 100644
index e8605f6..0000000
--- a/server/target/classes/com/doumee/dao/system/SystemMenuMapper.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/dao/system/SystemPermissionMapper.class b/server/target/classes/com/doumee/dao/system/SystemPermissionMapper.class
deleted file mode 100644
index a39fb4d..0000000
--- a/server/target/classes/com/doumee/dao/system/SystemPermissionMapper.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/dao/system/SystemPositionMapper.class b/server/target/classes/com/doumee/dao/system/SystemPositionMapper.class
deleted file mode 100644
index c1edca8..0000000
--- a/server/target/classes/com/doumee/dao/system/SystemPositionMapper.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/dao/system/SystemPositionUserMapper.class b/server/target/classes/com/doumee/dao/system/SystemPositionUserMapper.class
deleted file mode 100644
index 8f3d8fd..0000000
--- a/server/target/classes/com/doumee/dao/system/SystemPositionUserMapper.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/dao/system/SystemRoleMapper.class b/server/target/classes/com/doumee/dao/system/SystemRoleMapper.class
deleted file mode 100644
index 8cd40de..0000000
--- a/server/target/classes/com/doumee/dao/system/SystemRoleMapper.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/dao/system/SystemRoleMenuMapper.class b/server/target/classes/com/doumee/dao/system/SystemRoleMenuMapper.class
deleted file mode 100644
index 322f04b..0000000
--- a/server/target/classes/com/doumee/dao/system/SystemRoleMenuMapper.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/dao/system/SystemRolePermissionMapper.class b/server/target/classes/com/doumee/dao/system/SystemRolePermissionMapper.class
deleted file mode 100644
index 8b064e8..0000000
--- a/server/target/classes/com/doumee/dao/system/SystemRolePermissionMapper.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/dao/system/SystemTraceLogMapper.class b/server/target/classes/com/doumee/dao/system/SystemTraceLogMapper.class
deleted file mode 100644
index c640fcb..0000000
--- a/server/target/classes/com/doumee/dao/system/SystemTraceLogMapper.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/dao/system/SystemUserJoinMapper.class b/server/target/classes/com/doumee/dao/system/SystemUserJoinMapper.class
deleted file mode 100644
index 4ed99e9..0000000
--- a/server/target/classes/com/doumee/dao/system/SystemUserJoinMapper.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/dao/system/SystemUserMapper.class b/server/target/classes/com/doumee/dao/system/SystemUserMapper.class
deleted file mode 100644
index c436480..0000000
--- a/server/target/classes/com/doumee/dao/system/SystemUserMapper.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/dao/system/SystemUserRoleMapper.class b/server/target/classes/com/doumee/dao/system/SystemUserRoleMapper.class
deleted file mode 100644
index 9010604..0000000
--- a/server/target/classes/com/doumee/dao/system/SystemUserRoleMapper.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/dao/system/dto/AreasDto.class b/server/target/classes/com/doumee/dao/system/dto/AreasDto.class
deleted file mode 100644
index 275029e..0000000
--- a/server/target/classes/com/doumee/dao/system/dto/AreasDto.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/dao/system/dto/ChangeStatusDTO.class b/server/target/classes/com/doumee/dao/system/dto/ChangeStatusDTO.class
deleted file mode 100644
index 38f612c..0000000
--- a/server/target/classes/com/doumee/dao/system/dto/ChangeStatusDTO.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/dao/system/dto/CompanyDTO.class b/server/target/classes/com/doumee/dao/system/dto/CompanyDTO.class
deleted file mode 100644
index a885a51..0000000
--- a/server/target/classes/com/doumee/dao/system/dto/CompanyDTO.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/dao/system/dto/CompanyUserDTO.class b/server/target/classes/com/doumee/dao/system/dto/CompanyUserDTO.class
deleted file mode 100644
index da5f610..0000000
--- a/server/target/classes/com/doumee/dao/system/dto/CompanyUserDTO.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/dao/system/dto/CreateRoleMenuDTO.class b/server/target/classes/com/doumee/dao/system/dto/CreateRoleMenuDTO.class
deleted file mode 100644
index e3bb162..0000000
--- a/server/target/classes/com/doumee/dao/system/dto/CreateRoleMenuDTO.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/dao/system/dto/CreateRolePermissionDTO.class b/server/target/classes/com/doumee/dao/system/dto/CreateRolePermissionDTO.class
deleted file mode 100644
index 5d20eac..0000000
--- a/server/target/classes/com/doumee/dao/system/dto/CreateRolePermissionDTO.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/dao/system/dto/CreateSystemUserDTO.class b/server/target/classes/com/doumee/dao/system/dto/CreateSystemUserDTO.class
deleted file mode 100644
index 79fd478..0000000
--- a/server/target/classes/com/doumee/dao/system/dto/CreateSystemUserDTO.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/dao/system/dto/CreateUserRoleDTO.class b/server/target/classes/com/doumee/dao/system/dto/CreateUserRoleDTO.class
deleted file mode 100644
index ac45ae1..0000000
--- a/server/target/classes/com/doumee/dao/system/dto/CreateUserRoleDTO.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/dao/system/dto/ExpertReportDTO.class b/server/target/classes/com/doumee/dao/system/dto/ExpertReportDTO.class
deleted file mode 100644
index 4a77ffb..0000000
--- a/server/target/classes/com/doumee/dao/system/dto/ExpertReportDTO.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/dao/system/dto/LoginDTO.class b/server/target/classes/com/doumee/dao/system/dto/LoginDTO.class
deleted file mode 100644
index d675301..0000000
--- a/server/target/classes/com/doumee/dao/system/dto/LoginDTO.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/dao/system/dto/MultiFileDTO.class b/server/target/classes/com/doumee/dao/system/dto/MultiFileDTO.class
deleted file mode 100644
index 0cdf313..0000000
--- a/server/target/classes/com/doumee/dao/system/dto/MultiFileDTO.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/dao/system/dto/QuerySystemDepartmentDTO.class b/server/target/classes/com/doumee/dao/system/dto/QuerySystemDepartmentDTO.class
deleted file mode 100644
index ae90a8c..0000000
--- a/server/target/classes/com/doumee/dao/system/dto/QuerySystemDepartmentDTO.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/dao/system/dto/QuerySystemDictDTO.class b/server/target/classes/com/doumee/dao/system/dto/QuerySystemDictDTO.class
deleted file mode 100644
index d8b067c..0000000
--- a/server/target/classes/com/doumee/dao/system/dto/QuerySystemDictDTO.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/dao/system/dto/QuerySystemDictDataDTO.class b/server/target/classes/com/doumee/dao/system/dto/QuerySystemDictDataDTO.class
deleted file mode 100644
index e783d61..0000000
--- a/server/target/classes/com/doumee/dao/system/dto/QuerySystemDictDataDTO.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/dao/system/dto/QuerySystemLoginLogDTO.class b/server/target/classes/com/doumee/dao/system/dto/QuerySystemLoginLogDTO.class
deleted file mode 100644
index 45e44cb..0000000
--- a/server/target/classes/com/doumee/dao/system/dto/QuerySystemLoginLogDTO.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/dao/system/dto/QuerySystemPermissionDTO.class b/server/target/classes/com/doumee/dao/system/dto/QuerySystemPermissionDTO.class
deleted file mode 100644
index cb660a0..0000000
--- a/server/target/classes/com/doumee/dao/system/dto/QuerySystemPermissionDTO.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/dao/system/dto/QuerySystemRoleDTO.class b/server/target/classes/com/doumee/dao/system/dto/QuerySystemRoleDTO.class
deleted file mode 100644
index 63df710..0000000
--- a/server/target/classes/com/doumee/dao/system/dto/QuerySystemRoleDTO.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/dao/system/dto/QuerySystemTraceLogDTO.class b/server/target/classes/com/doumee/dao/system/dto/QuerySystemTraceLogDTO.class
deleted file mode 100644
index bc0d00b..0000000
--- a/server/target/classes/com/doumee/dao/system/dto/QuerySystemTraceLogDTO.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/dao/system/dto/QuerySystemUserDTO.class b/server/target/classes/com/doumee/dao/system/dto/QuerySystemUserDTO.class
deleted file mode 100644
index 0ebea17..0000000
--- a/server/target/classes/com/doumee/dao/system/dto/QuerySystemUserDTO.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/dao/system/dto/ResetSystemUserPwdDTO.class b/server/target/classes/com/doumee/dao/system/dto/ResetSystemUserPwdDTO.class
deleted file mode 100644
index 3a904d3..0000000
--- a/server/target/classes/com/doumee/dao/system/dto/ResetSystemUserPwdDTO.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/dao/system/dto/UpdatePwdDto.class b/server/target/classes/com/doumee/dao/system/dto/UpdatePwdDto.class
deleted file mode 100644
index da555b5..0000000
--- a/server/target/classes/com/doumee/dao/system/dto/UpdatePwdDto.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/dao/system/dto/UpdateSystemMenuSortDTO.class b/server/target/classes/com/doumee/dao/system/dto/UpdateSystemMenuSortDTO.class
deleted file mode 100644
index e3cc3ea..0000000
--- a/server/target/classes/com/doumee/dao/system/dto/UpdateSystemMenuSortDTO.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/dao/system/model/SystemDataPermission.class b/server/target/classes/com/doumee/dao/system/model/SystemDataPermission.class
deleted file mode 100644
index d42fb11..0000000
--- a/server/target/classes/com/doumee/dao/system/model/SystemDataPermission.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/dao/system/model/SystemDepartment.class b/server/target/classes/com/doumee/dao/system/model/SystemDepartment.class
deleted file mode 100644
index f2cef3a..0000000
--- a/server/target/classes/com/doumee/dao/system/model/SystemDepartment.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/dao/system/model/SystemDepartmentUser.class b/server/target/classes/com/doumee/dao/system/model/SystemDepartmentUser.class
deleted file mode 100644
index c31771d..0000000
--- a/server/target/classes/com/doumee/dao/system/model/SystemDepartmentUser.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/dao/system/model/SystemDict.class b/server/target/classes/com/doumee/dao/system/model/SystemDict.class
deleted file mode 100644
index 85e8150..0000000
--- a/server/target/classes/com/doumee/dao/system/model/SystemDict.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/dao/system/model/SystemDictData.class b/server/target/classes/com/doumee/dao/system/model/SystemDictData.class
deleted file mode 100644
index 4cf1c86..0000000
--- a/server/target/classes/com/doumee/dao/system/model/SystemDictData.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/dao/system/model/SystemLoginLog.class b/server/target/classes/com/doumee/dao/system/model/SystemLoginLog.class
deleted file mode 100644
index 750381b..0000000
--- a/server/target/classes/com/doumee/dao/system/model/SystemLoginLog.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/dao/system/model/SystemMenu.class b/server/target/classes/com/doumee/dao/system/model/SystemMenu.class
deleted file mode 100644
index d360bee..0000000
--- a/server/target/classes/com/doumee/dao/system/model/SystemMenu.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/dao/system/model/SystemPermission.class b/server/target/classes/com/doumee/dao/system/model/SystemPermission.class
deleted file mode 100644
index 7838d5e..0000000
--- a/server/target/classes/com/doumee/dao/system/model/SystemPermission.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/dao/system/model/SystemPosition.class b/server/target/classes/com/doumee/dao/system/model/SystemPosition.class
deleted file mode 100644
index a415e23..0000000
--- a/server/target/classes/com/doumee/dao/system/model/SystemPosition.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/dao/system/model/SystemPositionUser.class b/server/target/classes/com/doumee/dao/system/model/SystemPositionUser.class
deleted file mode 100644
index 6b68423..0000000
--- a/server/target/classes/com/doumee/dao/system/model/SystemPositionUser.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/dao/system/model/SystemRole.class b/server/target/classes/com/doumee/dao/system/model/SystemRole.class
deleted file mode 100644
index 868d559..0000000
--- a/server/target/classes/com/doumee/dao/system/model/SystemRole.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/dao/system/model/SystemRoleMenu.class b/server/target/classes/com/doumee/dao/system/model/SystemRoleMenu.class
deleted file mode 100644
index 9ccfb24..0000000
--- a/server/target/classes/com/doumee/dao/system/model/SystemRoleMenu.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/dao/system/model/SystemRolePermission.class b/server/target/classes/com/doumee/dao/system/model/SystemRolePermission.class
deleted file mode 100644
index ac263bb..0000000
--- a/server/target/classes/com/doumee/dao/system/model/SystemRolePermission.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/dao/system/model/SystemTraceLog.class b/server/target/classes/com/doumee/dao/system/model/SystemTraceLog.class
deleted file mode 100644
index 45dcd5b..0000000
--- a/server/target/classes/com/doumee/dao/system/model/SystemTraceLog.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/dao/system/model/SystemUser.class b/server/target/classes/com/doumee/dao/system/model/SystemUser.class
deleted file mode 100644
index 3838469..0000000
--- a/server/target/classes/com/doumee/dao/system/model/SystemUser.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/dao/system/model/SystemUserRole.class b/server/target/classes/com/doumee/dao/system/model/SystemUserRole.class
deleted file mode 100644
index 67678ff..0000000
--- a/server/target/classes/com/doumee/dao/system/model/SystemUserRole.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/dao/system/vo/CompanyDeclaresVo.class b/server/target/classes/com/doumee/dao/system/vo/CompanyDeclaresVo.class
deleted file mode 100644
index a0ebfd5..0000000
--- a/server/target/classes/com/doumee/dao/system/vo/CompanyDeclaresVo.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/dao/system/vo/CompanyEconomicsVo.class b/server/target/classes/com/doumee/dao/system/vo/CompanyEconomicsVo.class
deleted file mode 100644
index 51f2a8e..0000000
--- a/server/target/classes/com/doumee/dao/system/vo/CompanyEconomicsVo.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/dao/system/vo/ServiceCompany.class b/server/target/classes/com/doumee/dao/system/vo/ServiceCompany.class
deleted file mode 100644
index 01ef0e1..0000000
--- a/server/target/classes/com/doumee/dao/system/vo/ServiceCompany.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/dao/system/vo/SystemDataPermissionListVO.class b/server/target/classes/com/doumee/dao/system/vo/SystemDataPermissionListVO.class
deleted file mode 100644
index d1a058c..0000000
--- a/server/target/classes/com/doumee/dao/system/vo/SystemDataPermissionListVO.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/dao/system/vo/SystemDepartmentListVO.class b/server/target/classes/com/doumee/dao/system/vo/SystemDepartmentListVO.class
deleted file mode 100644
index fc31ae5..0000000
--- a/server/target/classes/com/doumee/dao/system/vo/SystemDepartmentListVO.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/dao/system/vo/SystemDictDataListVO.class b/server/target/classes/com/doumee/dao/system/vo/SystemDictDataListVO.class
deleted file mode 100644
index 88f200e..0000000
--- a/server/target/classes/com/doumee/dao/system/vo/SystemDictDataListVO.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/dao/system/vo/SystemDictListVO.class b/server/target/classes/com/doumee/dao/system/vo/SystemDictListVO.class
deleted file mode 100644
index eae4539..0000000
--- a/server/target/classes/com/doumee/dao/system/vo/SystemDictListVO.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/dao/system/vo/SystemMenuListVO.class b/server/target/classes/com/doumee/dao/system/vo/SystemMenuListVO.class
deleted file mode 100644
index fcd97a0..0000000
--- a/server/target/classes/com/doumee/dao/system/vo/SystemMenuListVO.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/dao/system/vo/SystemMenuNodeVO.class b/server/target/classes/com/doumee/dao/system/vo/SystemMenuNodeVO.class
deleted file mode 100644
index d158ab4..0000000
--- a/server/target/classes/com/doumee/dao/system/vo/SystemMenuNodeVO.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/dao/system/vo/SystemPermissionListVO.class b/server/target/classes/com/doumee/dao/system/vo/SystemPermissionListVO.class
deleted file mode 100644
index 816e8fb..0000000
--- a/server/target/classes/com/doumee/dao/system/vo/SystemPermissionListVO.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/dao/system/vo/SystemPositionListVO.class b/server/target/classes/com/doumee/dao/system/vo/SystemPositionListVO.class
deleted file mode 100644
index c3c9739..0000000
--- a/server/target/classes/com/doumee/dao/system/vo/SystemPositionListVO.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/dao/system/vo/SystemRoleListVO.class b/server/target/classes/com/doumee/dao/system/vo/SystemRoleListVO.class
deleted file mode 100644
index 05f6ffa..0000000
--- a/server/target/classes/com/doumee/dao/system/vo/SystemRoleListVO.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/dao/system/vo/SystemUserDetailVO.class b/server/target/classes/com/doumee/dao/system/vo/SystemUserDetailVO.class
deleted file mode 100644
index 392c07b..0000000
--- a/server/target/classes/com/doumee/dao/system/vo/SystemUserDetailVO.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/dao/system/vo/SystemUserListVO.class b/server/target/classes/com/doumee/dao/system/vo/SystemUserListVO.class
deleted file mode 100644
index f0a08a5..0000000
--- a/server/target/classes/com/doumee/dao/system/vo/SystemUserListVO.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/service/aware/DepartmentDataPermissionAware$1.class b/server/target/classes/com/doumee/service/aware/DepartmentDataPermissionAware$1.class
deleted file mode 100644
index fe8c6c3..0000000
--- a/server/target/classes/com/doumee/service/aware/DepartmentDataPermissionAware$1.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/service/aware/DepartmentDataPermissionAware.class b/server/target/classes/com/doumee/service/aware/DepartmentDataPermissionAware.class
deleted file mode 100644
index fe117bb..0000000
--- a/server/target/classes/com/doumee/service/aware/DepartmentDataPermissionAware.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/service/aware/PositionDataPermissionAware.class b/server/target/classes/com/doumee/service/aware/PositionDataPermissionAware.class
deleted file mode 100644
index 4b1fedd..0000000
--- a/server/target/classes/com/doumee/service/aware/PositionDataPermissionAware.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/service/business/BrandService.class b/server/target/classes/com/doumee/service/business/BrandService.class
deleted file mode 100644
index e565f6f..0000000
--- a/server/target/classes/com/doumee/service/business/BrandService.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/service/business/CateAttrService.class b/server/target/classes/com/doumee/service/business/CateAttrService.class
deleted file mode 100644
index 89bf7e5..0000000
--- a/server/target/classes/com/doumee/service/business/CateAttrService.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/service/business/CateParamService.class b/server/target/classes/com/doumee/service/business/CateParamService.class
deleted file mode 100644
index f66cab9..0000000
--- a/server/target/classes/com/doumee/service/business/CateParamService.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/service/business/CategoryService.class b/server/target/classes/com/doumee/service/business/CategoryService.class
deleted file mode 100644
index 46ebed3..0000000
--- a/server/target/classes/com/doumee/service/business/CategoryService.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/service/business/GoodsParamService.class b/server/target/classes/com/doumee/service/business/GoodsParamService.class
deleted file mode 100644
index acd73c0..0000000
--- a/server/target/classes/com/doumee/service/business/GoodsParamService.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/service/business/GoodsService.class b/server/target/classes/com/doumee/service/business/GoodsService.class
deleted file mode 100644
index e2315e0..0000000
--- a/server/target/classes/com/doumee/service/business/GoodsService.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/service/business/MultifileService.class b/server/target/classes/com/doumee/service/business/MultifileService.class
deleted file mode 100644
index 17e8e54..0000000
--- a/server/target/classes/com/doumee/service/business/MultifileService.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/service/business/impl/BrandServiceImpl.class b/server/target/classes/com/doumee/service/business/impl/BrandServiceImpl.class
deleted file mode 100644
index 812e087..0000000
--- a/server/target/classes/com/doumee/service/business/impl/BrandServiceImpl.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/service/business/impl/CateAttrServiceImpl.class b/server/target/classes/com/doumee/service/business/impl/CateAttrServiceImpl.class
deleted file mode 100644
index 6ce46e6..0000000
--- a/server/target/classes/com/doumee/service/business/impl/CateAttrServiceImpl.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/service/business/impl/CateParamServiceImpl.class b/server/target/classes/com/doumee/service/business/impl/CateParamServiceImpl.class
deleted file mode 100644
index f216819..0000000
--- a/server/target/classes/com/doumee/service/business/impl/CateParamServiceImpl.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/service/business/impl/CategoryServiceImpl.class b/server/target/classes/com/doumee/service/business/impl/CategoryServiceImpl.class
deleted file mode 100644
index fe0616a..0000000
--- a/server/target/classes/com/doumee/service/business/impl/CategoryServiceImpl.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/service/business/impl/GoodsParamServiceImpl.class b/server/target/classes/com/doumee/service/business/impl/GoodsParamServiceImpl.class
deleted file mode 100644
index 1ab842d..0000000
--- a/server/target/classes/com/doumee/service/business/impl/GoodsParamServiceImpl.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/service/business/impl/GoodsServiceImpl.class b/server/target/classes/com/doumee/service/business/impl/GoodsServiceImpl.class
deleted file mode 100644
index 981d7fe..0000000
--- a/server/target/classes/com/doumee/service/business/impl/GoodsServiceImpl.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/service/business/impl/MultifileServiceImpl.class b/server/target/classes/com/doumee/service/business/impl/MultifileServiceImpl.class
deleted file mode 100644
index 4691df7..0000000
--- a/server/target/classes/com/doumee/service/business/impl/MultifileServiceImpl.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/service/common/CaptchaService$Captcha.class b/server/target/classes/com/doumee/service/common/CaptchaService$Captcha.class
deleted file mode 100644
index de4b0b2..0000000
--- a/server/target/classes/com/doumee/service/common/CaptchaService$Captcha.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/service/common/CaptchaService.class b/server/target/classes/com/doumee/service/common/CaptchaService.class
deleted file mode 100644
index 0eba064..0000000
--- a/server/target/classes/com/doumee/service/common/CaptchaService.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/service/proxy/CacheProxy.class b/server/target/classes/com/doumee/service/proxy/CacheProxy.class
deleted file mode 100644
index 68df042..0000000
--- a/server/target/classes/com/doumee/service/proxy/CacheProxy.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/service/system/SystemDataPermissionService.class b/server/target/classes/com/doumee/service/system/SystemDataPermissionService.class
deleted file mode 100644
index 75a58f5..0000000
--- a/server/target/classes/com/doumee/service/system/SystemDataPermissionService.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/service/system/SystemDepartmentService.class b/server/target/classes/com/doumee/service/system/SystemDepartmentService.class
deleted file mode 100644
index b8fc3e0..0000000
--- a/server/target/classes/com/doumee/service/system/SystemDepartmentService.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/service/system/SystemDepartmentUserService.class b/server/target/classes/com/doumee/service/system/SystemDepartmentUserService.class
deleted file mode 100644
index d8d81d9..0000000
--- a/server/target/classes/com/doumee/service/system/SystemDepartmentUserService.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/service/system/SystemDictDataService.class b/server/target/classes/com/doumee/service/system/SystemDictDataService.class
deleted file mode 100644
index 2300932..0000000
--- a/server/target/classes/com/doumee/service/system/SystemDictDataService.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/service/system/SystemDictService.class b/server/target/classes/com/doumee/service/system/SystemDictService.class
deleted file mode 100644
index 4583372..0000000
--- a/server/target/classes/com/doumee/service/system/SystemDictService.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/service/system/SystemLoginLogService.class b/server/target/classes/com/doumee/service/system/SystemLoginLogService.class
deleted file mode 100644
index 58177d7..0000000
--- a/server/target/classes/com/doumee/service/system/SystemLoginLogService.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/service/system/SystemLoginService.class b/server/target/classes/com/doumee/service/system/SystemLoginService.class
deleted file mode 100644
index 2cbd4c5..0000000
--- a/server/target/classes/com/doumee/service/system/SystemLoginService.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/service/system/SystemMenuService.class b/server/target/classes/com/doumee/service/system/SystemMenuService.class
deleted file mode 100644
index 96ea2ee..0000000
--- a/server/target/classes/com/doumee/service/system/SystemMenuService.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/service/system/SystemPermissionService.class b/server/target/classes/com/doumee/service/system/SystemPermissionService.class
deleted file mode 100644
index 85f4492..0000000
--- a/server/target/classes/com/doumee/service/system/SystemPermissionService.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/service/system/SystemPositionService.class b/server/target/classes/com/doumee/service/system/SystemPositionService.class
deleted file mode 100644
index ec519b0..0000000
--- a/server/target/classes/com/doumee/service/system/SystemPositionService.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/service/system/SystemPositionUserService.class b/server/target/classes/com/doumee/service/system/SystemPositionUserService.class
deleted file mode 100644
index 275afaa..0000000
--- a/server/target/classes/com/doumee/service/system/SystemPositionUserService.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/service/system/SystemRoleMenuService.class b/server/target/classes/com/doumee/service/system/SystemRoleMenuService.class
deleted file mode 100644
index 1c523fb..0000000
--- a/server/target/classes/com/doumee/service/system/SystemRoleMenuService.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/service/system/SystemRolePermissionService.class b/server/target/classes/com/doumee/service/system/SystemRolePermissionService.class
deleted file mode 100644
index 152c260..0000000
--- a/server/target/classes/com/doumee/service/system/SystemRolePermissionService.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/service/system/SystemRoleService.class b/server/target/classes/com/doumee/service/system/SystemRoleService.class
deleted file mode 100644
index e274250..0000000
--- a/server/target/classes/com/doumee/service/system/SystemRoleService.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/service/system/SystemTraceLogService.class b/server/target/classes/com/doumee/service/system/SystemTraceLogService.class
deleted file mode 100644
index 4667fea..0000000
--- a/server/target/classes/com/doumee/service/system/SystemTraceLogService.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/service/system/SystemUserRoleService.class b/server/target/classes/com/doumee/service/system/SystemUserRoleService.class
deleted file mode 100644
index 81c2607..0000000
--- a/server/target/classes/com/doumee/service/system/SystemUserRoleService.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/service/system/SystemUserService.class b/server/target/classes/com/doumee/service/system/SystemUserService.class
deleted file mode 100644
index ef99665..0000000
--- a/server/target/classes/com/doumee/service/system/SystemUserService.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/service/system/impl/SystemDataPermissionServiceImpl.class b/server/target/classes/com/doumee/service/system/impl/SystemDataPermissionServiceImpl.class
deleted file mode 100644
index bedf535..0000000
--- a/server/target/classes/com/doumee/service/system/impl/SystemDataPermissionServiceImpl.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/service/system/impl/SystemDepartmentServiceImpl.class b/server/target/classes/com/doumee/service/system/impl/SystemDepartmentServiceImpl.class
deleted file mode 100644
index be0a529..0000000
--- a/server/target/classes/com/doumee/service/system/impl/SystemDepartmentServiceImpl.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/service/system/impl/SystemDepartmentUserServiceImpl.class b/server/target/classes/com/doumee/service/system/impl/SystemDepartmentUserServiceImpl.class
deleted file mode 100644
index 5e2edfd..0000000
--- a/server/target/classes/com/doumee/service/system/impl/SystemDepartmentUserServiceImpl.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/service/system/impl/SystemDictDataServiceImpl.class b/server/target/classes/com/doumee/service/system/impl/SystemDictDataServiceImpl.class
deleted file mode 100644
index c69d102..0000000
--- a/server/target/classes/com/doumee/service/system/impl/SystemDictDataServiceImpl.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/service/system/impl/SystemDictServiceImpl.class b/server/target/classes/com/doumee/service/system/impl/SystemDictServiceImpl.class
deleted file mode 100644
index 6d8c011..0000000
--- a/server/target/classes/com/doumee/service/system/impl/SystemDictServiceImpl.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/service/system/impl/SystemLoginLogServiceImpl.class b/server/target/classes/com/doumee/service/system/impl/SystemLoginLogServiceImpl.class
deleted file mode 100644
index f43f1d5..0000000
--- a/server/target/classes/com/doumee/service/system/impl/SystemLoginLogServiceImpl.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/service/system/impl/SystemLoginServiceImpl.class b/server/target/classes/com/doumee/service/system/impl/SystemLoginServiceImpl.class
deleted file mode 100644
index 32e79e8..0000000
--- a/server/target/classes/com/doumee/service/system/impl/SystemLoginServiceImpl.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/service/system/impl/SystemMenuServiceImpl.class b/server/target/classes/com/doumee/service/system/impl/SystemMenuServiceImpl.class
deleted file mode 100644
index 7dc5365..0000000
--- a/server/target/classes/com/doumee/service/system/impl/SystemMenuServiceImpl.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/service/system/impl/SystemPermissionServiceImpl.class b/server/target/classes/com/doumee/service/system/impl/SystemPermissionServiceImpl.class
deleted file mode 100644
index e71eeb4..0000000
--- a/server/target/classes/com/doumee/service/system/impl/SystemPermissionServiceImpl.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/service/system/impl/SystemPositionServiceImpl.class b/server/target/classes/com/doumee/service/system/impl/SystemPositionServiceImpl.class
deleted file mode 100644
index 69c0e8d..0000000
--- a/server/target/classes/com/doumee/service/system/impl/SystemPositionServiceImpl.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/service/system/impl/SystemPositionUserServiceImpl.class b/server/target/classes/com/doumee/service/system/impl/SystemPositionUserServiceImpl.class
deleted file mode 100644
index 330a1da..0000000
--- a/server/target/classes/com/doumee/service/system/impl/SystemPositionUserServiceImpl.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/service/system/impl/SystemRoleMenuServiceImpl.class b/server/target/classes/com/doumee/service/system/impl/SystemRoleMenuServiceImpl.class
deleted file mode 100644
index 6048f97..0000000
--- a/server/target/classes/com/doumee/service/system/impl/SystemRoleMenuServiceImpl.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/service/system/impl/SystemRolePermissionServiceImpl.class b/server/target/classes/com/doumee/service/system/impl/SystemRolePermissionServiceImpl.class
deleted file mode 100644
index 05d329c..0000000
--- a/server/target/classes/com/doumee/service/system/impl/SystemRolePermissionServiceImpl.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/service/system/impl/SystemRoleServiceImpl.class b/server/target/classes/com/doumee/service/system/impl/SystemRoleServiceImpl.class
deleted file mode 100644
index 8c3cd53..0000000
--- a/server/target/classes/com/doumee/service/system/impl/SystemRoleServiceImpl.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/service/system/impl/SystemTraceLogServiceImpl.class b/server/target/classes/com/doumee/service/system/impl/SystemTraceLogServiceImpl.class
deleted file mode 100644
index 73c60f0..0000000
--- a/server/target/classes/com/doumee/service/system/impl/SystemTraceLogServiceImpl.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/service/system/impl/SystemUserRoleServiceImpl.class b/server/target/classes/com/doumee/service/system/impl/SystemUserRoleServiceImpl.class
deleted file mode 100644
index f5e14f7..0000000
--- a/server/target/classes/com/doumee/service/system/impl/SystemUserRoleServiceImpl.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/service/system/impl/SystemUserServiceImpl.class b/server/target/classes/com/doumee/service/system/impl/SystemUserServiceImpl.class
deleted file mode 100644
index f1d7fea..0000000
--- a/server/target/classes/com/doumee/service/system/impl/SystemUserServiceImpl.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/com/doumee/task/ScheduleTool.class b/server/target/classes/com/doumee/task/ScheduleTool.class
deleted file mode 100644
index b3c7b75..0000000
--- a/server/target/classes/com/doumee/task/ScheduleTool.class
+++ /dev/null
Binary files differ
diff --git a/server/target/classes/logback-spring.xml b/server/target/classes/logback-spring.xml
deleted file mode 100644
index 3f47325..0000000
--- a/server/target/classes/logback-spring.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<configuration>
-  <springProperty scope="context" name="logbackLevel" source="logback.level"/>
-  <springProperty scope="context" name="logbackAppender" source="logback.appender"/>
-  <!-- 寮�鍙戠幆澧冿紙杈撳嚭鍒版帶鍒跺彴锛�  -->
-  <appender name="development" class="ch.qos.logback.core.ConsoleAppender">
-    <encoder>
-      <!-- 璁剧疆鏃ュ織杈撳嚭鏍煎紡 -->
-      <pattern>%d %p (%file:%line\)- %m%n</pattern>
-      <!-- 杈撳嚭缂栫爜 -->
-      <charset>UTF-8</charset>
-    </encoder>
-  </appender>
-
-  <!-- 娴嬭瘯/绾夸笂鐜锛堥�氳繃鏃ユ湡鍒嗗壊鏃ュ織鏂囦欢锛� -->
-  <appender name="production"
-            class="ch.qos.logback.core.rolling.RollingFileAppender">
-    <File>log/eva.log</File>
-    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-      <!-- 鏂囦欢鍚嶉厤缃� -->
-      <fileNamePattern>log/eva-%d.%i.log</fileNamePattern>
-      <!-- 鏃ュ織鏂囦欢淇濆瓨鏈熼檺锛堝崟浣嶅ぉ锛� -->
-      <maxHistory>30</maxHistory>
-      <timeBasedFileNamingAndTriggeringPolicy  class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
-        <!-- 璁剧疆鏃ュ織鏂囦欢澶у皬锛岄粯璁ゅ�兼槸10MB-->
-        <maxFileSize>100MB</maxFileSize>
-      </timeBasedFileNamingAndTriggeringPolicy>
-    </rollingPolicy>
-    <encoder>
-      <!-- 璁剧疆鏃ュ織杈撳嚭鏍煎紡 -->
-      <pattern>%d %p (%file:%line\)- %m%n</pattern>
-      <!-- 杈撳嚭缂栫爜 -->
-      <charset>UTF-8</charset>
-    </encoder>
-  </appender>
-  <!-- 璁剧疆鏃ュ織绾у埆鍜岃緭鍑烘ā寮� -->
-  <root level="${logbackLevel}">
-    <appender-ref ref="${logbackAppender}" />
-  </root>
-</configuration>
diff --git a/server/target/classes/mappers/SystemDataPermissionMapper.xml b/server/target/classes/mappers/SystemDataPermissionMapper.xml
deleted file mode 100644
index 13f821f..0000000
--- a/server/target/classes/mappers/SystemDataPermissionMapper.xml
+++ /dev/null
@@ -1,47 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.doumee.dao.system.SystemDataPermissionMapper">
-
-  <!-- 鏌ヨ閮ㄩ棬鍒楄〃 -->
-  <resultMap id="SystemDataPermissionListVO" type="com.doumee.dao.system.vo.SystemDataPermissionListVO" autoMapping="true">
-    <id column="ID" property="id"/>
-    <association property="role" javaType="com.doumee.dao.system.model.SystemRole">
-      <result column="ROLE_ID" property="id"/>
-      <result column="ROLE_CODE" property="code"/>
-      <result column="ROLE_NAME" property="name"/>
-    </association>
-    <association property="createUserInfo" javaType="com.doumee.dao.system.model.SystemUser">
-      <result column="CREATE_USER_ID" property="id"/>
-      <result column="CREATE_USER_NAME" property="username"/>
-    </association>
-    <association property="updateUserInfo" javaType="com.doumee.dao.system.model.SystemUser">
-      <result column="UPDATE_USER_ID" property="id"/>
-      <result column="UPDATE_USER_NAME" property="username"/>
-    </association>
-  </resultMap>
-  <select id="selectManageList" resultMap="SystemDataPermissionListVO">
-    SELECT
-      sdp.`ID`, sdp.`BUSINESS_CODE`, sdp.`ROLE_ID`, sdp.`TYPE`, sdp.`CUSTOM_DATA`, sdp.`DISABLED`, sdp.`REMARK`, sdp.DISABLED, sdp.`CREATE_TIME`, sdp.`UPDATE_TIME`,
-      role.`ID` AS ROLE_ID, role.`CODE` AS ROLE_CODE, role.`NAME` AS ROLE_NAME,
-      create_user.ID CREATE_USER_ID, create_user.`USERNAME` CREATE_USER_NAME,
-      update_user.ID UPDETE_USER_ID, update_user.`USERNAME` UPDATE_USER_NAME
-    FROM SYSTEM_DATA_PERMISSION sdp
-    INNER JOIN `SYSTEM_ROLE` role ON role.ID = sdp.ROLE_ID
-    LEFT JOIN `SYSTEM_USER` create_user ON create_user.ID = sdp.CREATE_USER
-    LEFT JOIN `SYSTEM_USER` update_user ON update_user.ID = sdp.UPDATE_USER
-    <where>
-      sdp.DELETED = 0
-      <if test="dto.businessCode != null and dto.businessCode != ''">
-        AND sdp.`BUSINESS_CODE` = #{dto.businessCode}
-      </if>
-      <if test="dto.roleId != null">
-        AND role.`ID` =  #{dto.roleId}
-      </if>
-      <if test="dto.type != null">
-        AND sdp.`TYPE` =  #{dto.type}
-      </if>
-    </where>
-    ${orderByClause}
-  </select>
-
-</mapper>
diff --git a/server/target/classes/mappers/SystemDepartmentMapper.xml b/server/target/classes/mappers/SystemDepartmentMapper.xml
deleted file mode 100644
index 0a57944..0000000
--- a/server/target/classes/mappers/SystemDepartmentMapper.xml
+++ /dev/null
@@ -1,43 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.doumee.dao.system.SystemDepartmentMapper">
-
-  <!-- 鏌ヨ閮ㄩ棬鍒楄〃 -->
-  <resultMap id="SystemDepartmentListVO" type="com.doumee.dao.system.vo.SystemDepartmentListVO" autoMapping="true">
-    <id column="ID" property="id"/>
-    <association property="createUserInfo" javaType="com.doumee.dao.system.model.SystemUser">
-      <result column="CREATE_USER_ID" property="id"/>
-      <result column="CREATE_USER_NAME" property="username"/>
-    </association>
-    <association property="updateUserInfo" javaType="com.doumee.dao.system.model.SystemUser">
-      <result column="UPDATE_USER_ID" property="id"/>
-      <result column="UPDATE_USER_NAME" property="username"/>
-    </association>
-  </resultMap>
-  <select id="selectManageList" parameterType="com.doumee.dao.system.dto.QuerySystemDepartmentDTO" resultMap="SystemDepartmentListVO">
-    SELECT
-      dept.`ID`, dept.`PARENT_ID`, dept.`CODE`, dept.`NAME`, dept.`PHONE`, dept.`EMAIL`, dept.`CREATE_TIME`, dept.`UPDATE_TIME`, dept.`CREATE_USER`, dept.`UPDATE_USER`, dept.`DELETED`,
-      create_user.ID CREATE_USER_ID, create_user.`USERNAME` CREATE_USER_NAME,
-      update_user.ID UPDETE_USER_ID, update_user.`USERNAME` UPDATE_USER_NAME,
-      COUNT(usr.ID) USER_COUNT
-    FROM SYSTEM_DEPARTMENT dept
-    LEFT JOIN `SYSTEM_DEPARTMENT_USER` sdu ON sdu.DEPARTMENT_ID = dept.ID AND sdu.DELETED = 0
-    LEFT JOIN `SYSTEM_USER` usr ON usr.ID = sdu.USER_ID AND usr.DELETED = 0
-    LEFT JOIN `SYSTEM_USER` create_user ON create_user.ID = dept.CREATE_USER
-    LEFT JOIN `SYSTEM_USER` update_user ON update_user.ID = dept.UPDATE_USER
-    <where>
-      dept.DELETED = 0
-      <if test="id != null">
-        AND dept.ID = #{id}
-      </if>
-      <if test="ids != null">
-        AND dept.ID IN
-        <foreach collection="ids" item="id" separator="," open="(" close=")">
-          #{id}
-        </foreach>
-      </if>
-    </where>
-    GROUP BY dept.`ID`
-  </select>
-
-</mapper>
diff --git a/server/target/classes/mappers/SystemDictDataMapper.xml b/server/target/classes/mappers/SystemDictDataMapper.xml
deleted file mode 100644
index 6de601b..0000000
--- a/server/target/classes/mappers/SystemDictDataMapper.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.doumee.dao.system.SystemDictDataMapper">
-
-  <!-- 鏌ヨ瀛楀吀鏁版嵁鍒楄〃 -->
-  <resultMap id="SystemDictDataListVO" type="com.doumee.dao.system.vo.SystemDictDataListVO" autoMapping="true">
-    <id column="ID" property="id"/>
-    <association property="createUserInfo" javaType="com.doumee.dao.system.model.SystemUser">
-      <result column="CREATE_USER_ID" property="id"/>
-      <result column="CREATE_USER_NAME" property="username"/>
-    </association>
-    <association property="updateUserInfo" javaType="com.doumee.dao.system.model.SystemUser">
-      <result column="UPDATE_USER_ID" property="id"/>
-      <result column="UPDATE_USER_NAME" property="username"/>
-    </association>
-  </resultMap>
-  <select id="selectManageList" parameterType="com.doumee.dao.system.dto.QuerySystemDictDataDTO" resultMap="SystemDictDataListVO">
-    SELECT
-      dict_data.`ID`, dict_data.`DICT_ID`, dict_data.`CODE`, dict_data.`LABEL`, dict_data.`SORT`, dict_data.`DISABLED`, dict_data.`CREATE_TIME`, dict_data.`UPDATE_TIME`, dict_data.`CREATE_USER`, dict_data.`UPDATE_USER`,
-      create_user.ID CREATE_USER_ID, create_user.`USERNAME` CREATE_USER_NAME,
-      update_user.ID UPDETE_USER_ID, update_user.`USERNAME` UPDATE_USER_NAME
-    FROM SYSTEM_DICT_DATA dict_data
-    LEFT JOIN `SYSTEM_USER` create_user ON create_user.ID = dict_data.CREATE_USER
-    LEFT JOIN `SYSTEM_USER` update_user ON update_user.ID = dict_data.UPDATE_USER
-    <where>
-      dict_data.DELETED = 0
-      <if test="dictId != null">
-        AND dict_data.`DICT_ID` = #{dictId}
-      </if>
-    </where>
-  </select>
-
-</mapper>
diff --git a/server/target/classes/mappers/SystemDictMapper.xml b/server/target/classes/mappers/SystemDictMapper.xml
deleted file mode 100644
index 76338cb..0000000
--- a/server/target/classes/mappers/SystemDictMapper.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.doumee.dao.system.SystemDictMapper">
-
-  <!-- 鏌ヨ瀛楀吀鍒楄〃 -->
-  <resultMap id="SystemDictListVO" type="com.doumee.dao.system.vo.SystemDictListVO" autoMapping="true">
-    <id column="ID" property="id"/>
-    <association property="createUserInfo" javaType="com.doumee.dao.system.model.SystemUser">
-      <result column="CREATE_USER_ID" property="id"/>
-      <result column="CREATE_USER_NAME" property="username"/>
-    </association>
-    <association property="updateUserInfo" javaType="com.doumee.dao.system.model.SystemUser">
-      <result column="UPDATE_USER_ID" property="id"/>
-      <result column="UPDATE_USER_NAME" property="username"/>
-    </association>
-  </resultMap>
-  <select id="selectManageList" parameterType="com.doumee.dao.system.dto.QuerySystemDictDTO" resultMap="SystemDictListVO">
-    SELECT
-      dict.`ID`, dict.`CODE`, dict.`NAME`, dict.`REMARK`, dict.`CREATE_TIME`, dict.`UPDATE_TIME`, dict.`CREATE_USER`, dict.`UPDATE_USER`,
-      create_user.ID CREATE_USER_ID, create_user.`USERNAME` CREATE_USER_NAME,
-      update_user.ID UPDETE_USER_ID, update_user.`USERNAME` UPDATE_USER_NAME
-    FROM SYSTEM_DICT dict
-    LEFT JOIN `SYSTEM_USER` create_user ON create_user.ID = dict.CREATE_USER
-    LEFT JOIN `SYSTEM_USER` update_user ON update_user.ID = dict.UPDATE_USER
-    <where>
-      dict.DELETED = 0
-      <if test="dto.code != null and dto.code != ''">
-        AND dict.`CODE` LIKE concat('%', #{dto.code}, '%')
-      </if>
-      <if test="dto.name != null and dto.name != ''">
-        AND dict.`NAME` LIKE concat('%', #{dto.name}, '%')
-      </if>
-    </where>
-    ${orderByClause}
-  </select>
-
-</mapper>
diff --git a/server/target/classes/mappers/SystemMenuMapper.xml b/server/target/classes/mappers/SystemMenuMapper.xml
deleted file mode 100644
index 39df661..0000000
--- a/server/target/classes/mappers/SystemMenuMapper.xml
+++ /dev/null
@@ -1,58 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.doumee.dao.system.SystemMenuMapper">
-
-  <!-- 鏌ヨ鑿滃崟鍒楄〃 -->
-  <resultMap id="SystemMenuListVO" type="com.doumee.dao.system.vo.SystemMenuListVO" autoMapping="true">
-    <id column="ID" property="id"/>
-    <association property="createUserInfo" javaType="com.doumee.dao.system.model.SystemUser">
-      <result column="CREATE_USER_ID" property="id"/>
-      <result column="CREATE_USER_NAME" property="username"/>
-    </association>
-    <association property="updateUserInfo" javaType="com.doumee.dao.system.model.SystemUser">
-      <result column="UPDATE_USER_ID" property="id"/>
-      <result column="UPDATE_USER_NAME" property="username"/>
-    </association>
-  </resultMap>
-  <select id="selectManageList" resultMap="SystemMenuListVO">
-    SELECT
-      menu.`ID`, menu.`PARENT_ID`, menu.`NAME`, menu.`PATH`, menu.`FIXED`, menu.`REMARK`, menu.`DISABLED`, menu.SORT, menu.`ICON`, menu.`CREATE_TIME`, menu.`UPDATE_TIME`, menu.`CREATE_USER`, menu.`UPDATE_USER`, menu.`DELETED`,
-      create_user.ID CREATE_USER_ID, create_user.`USERNAME` CREATE_USER_NAME,
-      update_user.ID UPDETE_USER_ID, update_user.`USERNAME` UPDATE_USER_NAME
-    FROM SYSTEM_MENU menu
-     JOIN `SYSTEM_USER` create_user ON create_user.ID = menu.CREATE_USER
-    LEFT JOIN `SYSTEM_USER` update_user ON update_user.ID = menu.UPDATE_USER
-    <where>
-      menu.DELETED = 0
-    </where>
-    ORDER BY menu.SORT
-  </select>
-
-  <!-- 鏌ヨ鑿滃崟鏍� -->
-  <select id="selectByUserId" parameterType="java.lang.Integer" resultType="com.doumee.dao.system.model.SystemMenu">
-    SELECT
-      DISTINCT menu.`ID`, menu.`PARENT_ID`, menu.`NAME`, menu.`PATH`, menu.`REMARK`, menu.`DISABLED`, menu.SORT, menu.`ICON`, menu.`CREATE_TIME`, menu.`UPDATE_TIME`, menu.`CREATE_USER`, menu.`UPDATE_USER`, menu.`DELETED`
-    FROM `SYSTEM_MENU` menu
-    INNER JOIN SYSTEM_ROLE_MENU role_menu ON role_menu.MENU_ID = menu.ID AND role_menu.DELETED = 0
-    INNER JOIN SYSTEM_USER_ROLE user_role ON user_role.ROLE_ID = role_menu.ROLE_ID AND user_role.DELETED = 0
-    <where>
-      AND menu.DELETED = 0
-      AND menu.DISABLED = 0
-      AND user_role.USER_ID = #{userId}
-    </where>
-    ORDER BY menu.SORT
-  </select>
-
-  <!-- 鏍规嵁瑙掕壊ID鏌ヨ鑿滃崟鍒楄〃 -->
-  <select id="selectByRoleId" parameterType="java.lang.Integer" resultType="com.doumee.dao.system.model.SystemMenu">
-    SELECT
-      menu.`ID`, menu.`PARENT_ID`, menu.`NAME`, menu.`PATH`, menu.`REMARK`, menu.`DISABLED`, menu.SORT, menu.`ICON`, menu.`CREATE_TIME`, menu.`UPDATE_TIME`, menu.`CREATE_USER`, menu.`UPDATE_USER`, menu.`DELETED`
-    FROM `SYSTEM_MENU` menu
-    INNER JOIN `SYSTEM_ROLE_MENU` role_menu ON role_menu.MENU_ID = menu.ID AND role_menu.DELETED = 0
-    <where>
-      menu.DELETED = 0
-      AND role_menu.ROLE_ID = #{roleId}
-    </where>
-  </select>
-
-</mapper>
diff --git a/server/target/classes/mappers/SystemPermissionMapper.xml b/server/target/classes/mappers/SystemPermissionMapper.xml
deleted file mode 100644
index 9568ef5..0000000
--- a/server/target/classes/mappers/SystemPermissionMapper.xml
+++ /dev/null
@@ -1,63 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.doumee.dao.system.SystemPermissionMapper">
-
-  <!-- 鏌ヨ绯荤粺鏉冮檺鍒楄〃 -->
-  <resultMap id="SystemPermissionListVO" type="com.doumee.dao.system.vo.SystemPermissionListVO" autoMapping="true">
-    <id column="ID" property="id"/>
-    <association property="createUserInfo" javaType="com.doumee.dao.system.model.SystemUser">
-      <id column="CREATE_USER_ID" property="id"/>
-      <result column="CREATE_USER_NAME" property="username"/>
-    </association>
-    <association property="updateUserInfo" javaType="com.doumee.dao.system.model.SystemUser">
-      <id column="UPDATE_USER_ID" property="id"/>
-      <result column="UPDATE_USER_NAME" property="username"/>
-    </association>
-  </resultMap>
-  <select id="selectManageList" resultMap="SystemPermissionListVO">
-    SELECT
-      perm.`ID`, perm.`CODE`, perm.`NAME`, perm.`REMARK`, perm.`FIXED`, perm.`CREATE_TIME`, perm.`UPDATE_TIME`, perm.`CREATE_USER`, perm.`UPDATE_USER`, perm.`DELETED`,
-      create_user.ID CREATE_USER_ID, create_user.`USERNAME` CREATE_USER_NAME,
-      update_user.ID UPDETE_USER_ID, update_user.`USERNAME` UPDATE_USER_NAME
-    FROM SYSTEM_PERMISSION perm
-    LEFT JOIN `SYSTEM_USER` create_user ON create_user.ID = perm.CREATE_USER
-    LEFT JOIN `SYSTEM_USER` update_user ON update_user.ID = perm.UPDATE_USER
-    <where>
-      perm.DELETED = 0
-      <if test="dto.code != null">
-        AND perm.CODE LIKE CONCAT('%', #{dto.code}, '%')
-      </if>
-      <if test="dto.name != null">
-        AND perm.`NAME` LIKE CONCAT('%', #{dto.name}, '%')
-      </if>
-    </where>
-    ${orderByClause}
-  </select>
-
-  <!-- 鏍规嵁鐢ㄦ埛ID鏌ヨ鏉冮檺 -->
-  <select id="selectByUserId" parameterType="java.lang.Integer" resultType="com.doumee.dao.system.model.SystemPermission">
-    SELECT
-      perm.`ID`, perm.`CODE`, perm.`NAME`, perm.`REMARK`, perm.`CREATE_TIME`, perm.`UPDATE_TIME`, perm.`CREATE_USER`, perm.`UPDATE_USER`, perm.`DELETED`
-    FROM SYSTEM_PERMISSION perm
-    INNER JOIN SYSTEM_ROLE_PERMISSION role_perm ON role_perm.PERMISSION_ID = perm.ID AND role_perm.DELETED = 0
-    INNER JOIN SYSTEM_ROLE role ON role.ID = role_perm.ROLE_ID AND role.DELETED = 0
-    INNER JOIN SYSTEM_USER_ROLE user_role ON user_role.ROLE_ID = role.ID AND user_role.DELETED = 0
-    <where>
-      perm.DELETED = 0
-      AND user_role.USER_ID = #{userId}
-    </where>
-  </select>
-
-  <!-- 鏍规嵁瑙掕壊ID鏌ヨ鏉冮檺 -->
-  <select id="selectByRoleId" parameterType="java.lang.Integer" resultType="com.doumee.dao.system.model.SystemPermission">
-    SELECT
-      perm.`ID`, perm.`CODE`, perm.`NAME`, perm.`REMARK`, perm.`CREATE_TIME`, perm.`UPDATE_TIME`, perm.`CREATE_USER`, perm.`UPDATE_USER`, perm.`DELETED`
-    FROM SYSTEM_PERMISSION perm
-    INNER JOIN SYSTEM_ROLE_PERMISSION role_perm ON role_perm.PERMISSION_ID = perm.ID AND role_perm.DELETED = 0
-    <where>
-      perm.DELETED = 0
-      AND role_perm.ROLE_ID = #{roleId}
-    </where>
-  </select>
-
-</mapper>
diff --git a/server/target/classes/mappers/SystemPositionMapper.xml b/server/target/classes/mappers/SystemPositionMapper.xml
deleted file mode 100644
index fc15235..0000000
--- a/server/target/classes/mappers/SystemPositionMapper.xml
+++ /dev/null
@@ -1,49 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.doumee.dao.system.SystemPositionMapper">
-
-  <!-- 鏌ヨ宀椾綅鍒楄〃 -->
-  <resultMap id="SystemPositionListVO" type="com.doumee.dao.system.vo.SystemPositionListVO" autoMapping="true">
-    <id column="ID" property="id"/>
-    <association property="createUserInfo" javaType="com.doumee.dao.system.model.SystemUser">
-      <result column="CREATE_USER_ID" property="id"/>
-      <result column="CREATE_USER_NAME" property="username"/>
-    </association>
-    <association property="updateUserInfo" javaType="com.doumee.dao.system.model.SystemUser">
-      <result column="UPDATE_USER_ID" property="id"/>
-      <result column="UPDATE_USER_NAME" property="username"/>
-    </association>
-  </resultMap>
-  <select id="selectManageList" resultMap="SystemPositionListVO">
-    SELECT
-      posi.`ID`, posi.`PARENT_ID`, posi.`CODE`, posi.`NAME`, posi.`CREATE_TIME`, posi.`UPDATE_TIME`, posi.`CREATE_USER`, posi.`UPDATE_USER`,
-      create_user.ID CREATE_USER_ID, create_user.`USERNAME` CREATE_USER_NAME,
-      update_user.ID UPDETE_USER_ID, update_user.`USERNAME` UPDATE_USER_NAME,
-      COUNT(usr.ID) USER_COUNT
-    FROM SYSTEM_POSITION posi
-    LEFT JOIN `SYSTEM_POSITION_USER` spu ON spu.POSITION_ID = posi.ID AND spu.DELETED = 0
-    LEFT JOIN `SYSTEM_USER` usr ON usr.ID = spu.USER_ID AND usr.DELETED = 0
-    LEFT JOIN `SYSTEM_USER` create_user ON create_user.ID = posi.CREATE_USER
-    LEFT JOIN `SYSTEM_USER` update_user ON update_user.ID = posi.UPDATE_USER
-    <where>
-      posi.DELETED = 0
-      <if test="name != null and name != ''">
-        AND posi.`NAME` LIKE concat('%', #{name}, '%')
-      </if>
-    </where>
-    GROUP BY posi.`ID`
-  </select>
-
-  <!-- 鏌ヨ鐢ㄦ埛宀椾綅鍒楄〃 -->
-  <select id="selectByUserId" parameterType="java.lang.Integer" resultType="com.doumee.dao.system.model.SystemPosition">
-    SELECT
-      sp.`ID`, sp.`PARENT_ID`, sp.`CODE`, sp.`NAME`
-    FROM `SYSTEM_POSITION` sp
-    INNER JOIN `SYSTEM_POSITION_USER` spu ON spu.`POSITION_ID` = sp.`ID` AND spu.`DELETED` = 0
-    INNER JOIN `SYSTEM_USER` su ON su.`ID` = spu.`USER_ID`
-    <where>
-      sp.DELETED = 0
-      AND spu.USER_ID = #{userId}
-    </where>
-  </select>
-</mapper>
diff --git a/server/target/classes/mappers/SystemRoleMapper.xml b/server/target/classes/mappers/SystemRoleMapper.xml
deleted file mode 100644
index e2851b9..0000000
--- a/server/target/classes/mappers/SystemRoleMapper.xml
+++ /dev/null
@@ -1,49 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.doumee.dao.system.SystemRoleMapper">
-
-  <!-- 鏌ヨ瑙掕壊鍒楄〃 -->
-  <resultMap id="SystemRoleListVO" type="com.doumee.dao.system.vo.SystemRoleListVO" autoMapping="true">
-    <id column="ID" property="id"/>
-    <association property="createUserInfo" javaType="com.doumee.dao.system.model.SystemUser">
-      <id column="CREATE_USER_ID" property="id"/>
-      <result column="CREATE_USER_NAME" property="username"/>
-    </association>
-    <association property="updateUserInfo" javaType="com.doumee.dao.system.model.SystemUser">
-      <id column="UPDATE_USER_ID" property="id"/>
-      <result column="UPDATE_USER_NAME" property="username"/>
-    </association>
-  </resultMap>
-  <select id="selectManageList" parameterType="com.doumee.dao.system.dto.QuerySystemUserDTO" resultMap="SystemRoleListVO">
-    SELECT
-      role.ID, role.`CODE`, role.`NAME`, role.`REMARK`, role.`FIXED`, role.`CREATE_TIME`, role.`UPDATE_TIME`,
-      create_user.ID CREATE_USER_ID, create_user.`USERNAME` CREATE_USER_NAME,
-      update_user.ID UPDETE_USER_ID, update_user.`USERNAME` UPDATE_USER_NAME
-    FROM SYSTEM_ROLE role
-    LEFT JOIN `SYSTEM_USER` create_user ON create_user.ID = role.CREATE_USER
-    LEFT JOIN `SYSTEM_USER` update_user ON update_user.ID = role.UPDATE_USER
-    <where>
-      role.DELETED = 0
-      <if test="dto.code != null and dto.code != ''">
-        AND role.`CODE` LIKE CONCAT('%', #{dto.code}, '%')
-      </if>
-      <if test="dto.name != null and dto.name != ''">
-        AND role.`NAME` LIKE CONCAT('%', #{dto.name}, '%')
-      </if>
-    </where>
-    ${orderByClause}
-  </select>
-
-  <!-- 鏌ヨ鐢ㄦ埛瑙掕壊鍒楄〃 -->
-  <select id="selectByUserId" parameterType="java.lang.Integer" resultType="com.doumee.dao.system.model.SystemRole">
-    SELECT
-    role.ID, role.`CODE`, role.`NAME`, role.`REMARK`, role.`CREATE_TIME`, role.`UPDATE_TIME`
-    FROM SYSTEM_ROLE role
-    INNER JOIN SYSTEM_USER_ROLE user_role ON user_role.ROLE_ID = role.ID AND user_role.DELETED = 0
-    <where>
-      role.DELETED = 0
-      AND user_role.USER_ID = #{userId}
-    </where>
-  </select>
-
-</mapper>
diff --git a/server/target/classes/mappers/SystemUserMapper.xml b/server/target/classes/mappers/SystemUserMapper.xml
deleted file mode 100644
index fa36380..0000000
--- a/server/target/classes/mappers/SystemUserMapper.xml
+++ /dev/null
@@ -1,110 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.doumee.dao.system.SystemUserMapper">
-
-  <!-- 鏌ヨ鐢ㄦ埛鍒楄〃 -->
-  <resultMap id="SystemUserListVO" type="com.doumee.dao.system.vo.SystemUserListVO" autoMapping="true">
-    <id column="ID" property="id"/>
-    <association property="department" javaType="com.doumee.dao.system.model.SystemDepartment">
-      <result column="DEPARTMENT_ID" property="id"/>
-      <result column="DEPARTMENT_NAME" property="name"/>
-    </association>
-    <association property="createUserInfo" javaType="com.doumee.dao.system.model.SystemUser">
-      <result column="CREATE_USER_ID" property="id"/>
-      <result column="CREATE_USER_NAME" property="username"/>
-    </association>
-    <association property="updateUserInfo" javaType="com.doumee.dao.system.model.SystemUser">
-      <result column="UPDATE_USER_ID" property="id"/>
-      <result column="UPDATE_USER_NAME" property="username"/>
-    </association>
-  </resultMap>
-  <select id="selectManageList" parameterType="com.doumee.dao.system.dto.QuerySystemUserDTO" resultMap="SystemUserListVO">
-    SELECT
-      DISTINCT
-      usr.*,
-      sd.ID AS DEPARTMENT_ID, sd.`NAME` AS DEPARTMENT_NAME,
-      create_user.ID CREATE_USER_ID, create_user.`USERNAME` CREATE_USER_NAME,
-      update_user.ID UPDETE_USER_ID, update_user.`USERNAME` UPDATE_USER_NAME
-    FROM `SYSTEM_USER` usr
-    LEFT JOIN `SYSTEM_USER` create_user ON create_user.ID = usr.CREATE_USER
-    LEFT JOIN `SYSTEM_USER` update_user ON update_user.ID = usr.UPDATE_USER
-    LEFT JOIN `SYSTEM_POSITION_USER` spu ON spu.USER_ID = usr.ID AND spu.DELETED = 0
-    LEFT JOIN `SYSTEM_POSITION` sp ON sp.ID = spu.POSITION_ID AND sp.DELETED = 0
-    LEFT JOIN `SYSTEM_DEPARTMENT_USER` sdu ON sdu.USER_ID = usr.ID AND sdu.DELETED = 0
-    LEFT JOIN `SYSTEM_DEPARTMENT` sd ON sd.ID = sdu.DEPARTMENT_ID AND sd.DELETED = 0
-    <where>
-      usr.DELETED = 0
-      <if test="dto.positionId != null">
-        AND spu.POSITION_ID = #{dto.positionId}
-      </if>
-      <if test="dto.strictDeptId != null">
-        AND sdu.DEPARTMENT_ID = #{dto.strictDeptId}
-      </if>
-      <if test="dto.departmentIds != null and dto.departmentIds.size > 0">
-        AND sdu.DEPARTMENT_ID IN
-        <foreach collection="dto.departmentIds" open="(" close=")" separator="," item="id">
-          #{id}
-        </foreach>
-      </if>
-      <if test="dto.username != null and dto.username != ''">
-        AND usr.`USERNAME` LIKE CONCAT('%', #{dto.username}, '%')
-      </if>
-      <if test="dto.realname != null and dto.realname != ''">
-        AND usr.`REALNAME` LIKE CONCAT('%', #{dto.realname}, '%')
-      </if>
-      <if test="dto.mobile != null and dto.mobile != ''">
-        AND usr.`MOBILE` LIKE CONCAT('%', #{dto.mobile}, '%')
-      </if>
-      <if test="dto.typeList != null and dto.typeList.size()>0">
-        AND usr.`type` in <foreach collection="dto.typeList" item="item" open="(" separator="," close=")">#{item}</foreach>
-      </if>
-    </where>
-    ${orderByClause}
-  </select>
-
-  <select id="selectAllManagerList" parameterType="com.doumee.dao.system.dto.QuerySystemUserDTO"
-          resultType="com.doumee.dao.system.vo.SystemUserDetailVO">
-    SELECT
-      usr.*
-      <if test="dto.type == 1 or dto.type == 2  or dto.type == 4">
-        ,
-        company.id as companyId,
-        company.name as companyName,
-        company.CREDIT_CODE as creditCode,
-        company.AREA_ID as companyAreaId,
-        company.CITY_ID as companyCityId,
-        company.LEGAL_PERSON as legalPerson,
-        company.LINK_NAME as linkName,
-        company.LINK_PHONE as linkPhone,
-        company.CREATE_DATE as createDate
-      </if>
-    FROM `SYSTEM_USER` usr
-    <if test="dto.type == 1 or dto.type == 2  or dto.type == 4">
-      LEFT JOIN `company` company  ON company.id = usr.COMPANY_ID
-    </if>
-    <if test="dto.provinceId != null">
-      LEFT JOIN `areas` areas   ON areas.id = usr.city_id
-    </if>
-
-    <where>
-      usr.DELETED = 0
-      <if test="dto.provinceId != null">
-        and areas.parent_id=#{dto.provinceId }
-      </if>
-      <if test="dto.username !=null and dto.username!=''">
-        AND usr.`USERNAME` LIKE CONCAT('%', #{dto.username}, '%')
-      </if>
-      <if test="dto.cityId != null and dto.cityId != ''">
-        AND usr.`CITY_ID` = #{dto.cityId}
-      </if>
-      <if test="dto.areaId != null and dto.areaId != ''" >
-        AND usr.`AREA_ID` = #{dto.areaId}
-      </if>
-      <if test="dto.typeList != null and dto.typeList.size() > 0">
-        AND usr.`type` in <foreach collection="dto.typeList" item="item" open="(" separator="," close=")">#{item}</foreach>
-      </if>
-    </where>
-    ${orderByClause}
-  </select>
-
-</mapper>

--
Gitblit v1.9.3