From 35baa39723180e0de2350b5b2287b1846dabaf58 Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期四, 28 九月 2023 10:48:20 +0800
Subject: [PATCH] 分模块

---
 server/web/src/main/java/com/doumee/config/swagger/SwaggerConfig.java                             |   38 
 server/services/db/paper_rank.permissions.sql                                                     |    0 
 server/services/db/user_choose_class.permissions.sql                                              |    0 
 server/services/src/main/java/com/doumee/core/utils/Sha1Util.java                                 |    0 
 server/services/src/main/java/com/doumee/biz/system/impl/SystemDictBizImpl.java                   |    0 
 server/services/src/main/java/com/doumee/biz/system/impl/SystemPositionBizImpl.java               |    0 
 server/services/db/business.rent_site.permissions.sql                                             |    0 
 server/services/db/business.award.permissions.sql                                                 |    0 
 server/services/src/main/java/com/doumee/core/constants/Constants.java                            |    5 
 server/services/src/main/java/com/doumee/core/utils/FtpUtil.java                                  |    0 
 server/services/src/main/java/com/doumee/service/business/impl/PricingDetailServiceImpl.java      |    0 
 server/services/src/main/java/com/doumee/biz/system/SystemRoleBiz.java                            |    0 
 server/platform/src/main/java/com/doumee/api/business/BikesController.java                        |    6 
 server/services/src/main/java/com/doumee/core/utils/EncryptUtil.java                              |    0 
 server/services/db/ext.paper_ext.permissions.sql                                                  |    0 
 server/services/src/main/java/com/doumee/service/system/SystemDepartmentUserService.java          |    0 
 server/services/db/teacher_have_lesson.permissions.sql                                            |    0 
 server/services/src/main/java/com/doumee/dao/business/BikeRepairMapper.java                       |    0 
 server/services/src/main/java/com/doumee/dao/system/dto/CreateSystemUserDTO.java                  |    0 
 server/services/src/main/java/com/doumee/dao/business/PricingParamMapper.java                     |    0 
 server/services/src/main/java/com/doumee/service/system/impl/SystemTraceLogServiceImpl.java       |    0 
 server/services/src/main/java/com/doumee/dao/system/model/SystemMenu.java                         |    0 
 server/services/src/main/java/com/doumee/core/wx/AccessToken.java                                 |   30 
 server/web/src/main/java/com/doumee/config/shiro/ShiroAuthFilter.java                             |    2 
 server/services/src/main/resources/application-pro.yml                                            |    0 
 server/services/src/main/java/com/doumee/core/annotation/trace/TraceInterceptorConfig.java        |    0 
 server/services/src/main/java/com/doumee/dao/business/AliBillMapper.java                          |    0 
 server/services/src/main/java/com/doumee/service/aware/PositionDataPermissionAware.java           |    0 
 server/services/db/user_contest.permissions.sql                                                   |    0 
 server/services/src/main/java/com/doumee/service/system/SystemDepartmentService.java              |    0 
 server/services/src/main/java/com/doumee/service/business/SitesService.java                       |    0 
 server/services/db/ext.paper_problem_ext.permissions.sql                                          |    0 
 server/services/src/main/java/com/doumee/dao/system/SystemMenuMapper.java                         |    0 
 server/services/src/main/java/com/doumee/dao/system/SystemPositionMapper.java                     |    0 
 server/services/src/main/java/com/doumee/service/system/impl/SystemUserRoleServiceImpl.java       |    0 
 server/services/src/main/java/com/doumee/service/system/impl/SystemRoleServiceImpl.java           |    0 
 server/services/src/main/java/com/doumee/dao/system/model/SystemRoleMenu.java                     |    0 
 server/services/src/main/java/com/doumee/core/utils/redis/model/SubmissionTotalTime.java          |    0 
 server/services/src/main/resources/mappers/SystemPermissionMapper.xml                             |    0 
 server/services/src/main/java/com/doumee/core/constants/DataPermissionConstants.java              |    0 
 server/services/db/business.campus.permissions.sql                                                |    0 
 server/web/src/main/java/com/doumee/config/shiro/ShiroCacheManager.java                           |   44 
 server/services/db/business.declare_done.permissions.sql                                          |    0 
 server/services/db/business.ali_bill_detail.permissions.sql                                       |    0 
 server/services/db/business.pricing_param.permissions.sql                                         |    0 
 server/platform/src/main/java/com/doumee/config/shiro/ShiroSessionSerializer.java                 |    0 
 server/services/db/favorite_problem.permissions.sql                                               |    0 
 server/platform/src/main/java/com/doumee/api/business/WxBillDetailController.java                 |    6 
 server/services/db/business.user_contest.permissions.sql                                          |    0 
 server/services/db/ext.student_learn_lesson_ext.permissions.sql                                   |    0 
 server/services/src/main/java/com/doumee/dao/business/model/RentSite.java                         |    0 
 server/platform/src/main/java/com/doumee/api/common/PublicController.java                         |  327 +++++
 server/services/src/main/java/com/doumee/dao/business/web/request/UpdMemberRequest.java           |   38 
 server/services/src/main/java/com/doumee/core/utils/HttpUtil.java                                 |    0 
 server/platform/src/main/java/com/doumee/task/ScheduleTool.java                                   |    2 
 server/services/src/main/java/com/doumee/dao/business/model/Bikes.java                            |    0 
 server/services/src/main/java/com/doumee/dao/system/model/SystemRole.java                         |    0 
 server/services/src/main/java/com/doumee/service/business/impl/AliBillDetailServiceImpl.java      |    0 
 server/services/src/main/java/com/doumee/dao/system/dto/CreateUserRoleDTO.java                    |    0 
 server/services/src/main/java/com/doumee/dao/business/model/Member.java                           |    0 
 server/services/src/main/java/com/doumee/core/utils/redis/RedisConverter.java                     |    0 
 server/services/db/problem_tags.permissions.sql                                                   |    0 
 server/services/src/main/java/com/doumee/dao/system/vo/SystemMenuListVO.java                      |    0 
 server/web/src/main/java/com/doumee/api/web/ApiController.java                                    |   60 +
 server/services/src/main/java/com/doumee/service/business/PricingParamService.java                |    0 
 server/services/db/award.permissions.sql                                                          |    0 
 server/services/src/main/java/com/doumee/core/annotation/trace/Trace.java                         |    2 
 server/services/src/main/java/com/doumee/service/business/RentSiteService.java                    |    0 
 server/services/src/main/java/com/doumee/service/business/LocksService.java                       |    0 
 server/platform/src/main/java/com/doumee/api/business/LocksController.java                        |    6 
 server/services/src/main/java/com/doumee/service/aware/DepartmentDataPermissionAware.java         |    0 
 server/platform/src/main/java/com/doumee/api/business/ActionLogController.java                    |    6 
 server/services/db/business.bikes.permissions.sql                                                 |    0 
 server/services/db/business.classes.permissions.sql                                               |    0 
 server/services/src/main/java/com/doumee/core/Jwt/JwtTokenUtil.java                               |  176 +++
 server/platform/src/main/java/com/doumee/api/common/CaptchaController.java                        |    4 
 server/services/src/main/java/com/doumee/dao/system/model/SystemDepartment.java                   |    0 
 server/services/src/main/java/com/doumee/core/utils/Http.java                                     |    0 
 server/services/src/main/java/com/doumee/dao/system/dto/CreateRolePermissionDTO.java              |    0 
 server/services/src/main/java/com/doumee/biz/system/SystemPositionBiz.java                        |    0 
 server/services/src/main/java/com/doumee/dao/system/dto/WebLoginDTO.java                          |    0 
 server/services/src/main/java/com/doumee/service/system/impl/SystemRolePermissionServiceImpl.java |    0 
 server/services/src/main/java/com/doumee/dao/system/SystemPositionUserMapper.java                 |    0 
 server/services/src/main/java/com/doumee/dao/system/dto/QuerySystemRoleDTO.java                   |    0 
 server/services/src/main/java/com/doumee/service/business/WxBillDetailService.java                |    0 
 server/services/src/main/java/com/doumee/config/mybatis/MyBatisPlusConfig.java                    |    0 
 server/services/db/campus.permissions.sql                                                         |    0 
 server/services/src/main/java/com/doumee/dao/business/model/Sites.java                            |    0 
 server/services/src/main/resources/mappers/SystemPositionMapper.xml                               |    0 
 server/services/src/main/java/com/doumee/dao/system/dto/ResetSystemUserPwdDTO.java                |    0 
 server/services/src/main/java/com/doumee/biz/system/SystemDictDataBiz.java                        |    0 
 server/services/src/main/java/com/doumee/service/system/SystemMenuService.java                    |    0 
 server/services/src/main/java/com/doumee/core/utils/FileDigest.java                               |    0 
 server/platform/src/main/java/com/doumee/api/business/HolidaysController.java                     |    6 
 server/services/src/main/java/com/doumee/biz/system/SystemDataPermissionBiz.java                  |    0 
 server/services/src/main/java/com/doumee/dao/system/SystemTraceLogMapper.java                     |    0 
 server/web/src/main/java/com/doumee/api/common/PublicController.java                              |  324 +++++
 server/services/src/main/java/com/doumee/core/aware/DefaultDataPermissionAware.java               |    0 
 server/services/src/main/resources/application-test.yml                                           |    0 
 server/services/src/main/resources/mappers/SystemUserMapper.xml                                   |    0 
 server/platform/src/main/java/com/doumee/api/business/RefundController.java                       |    6 
 server/services/src/main/java/com/doumee/dao/business/model/Locks.java                            |    0 
 server/services/db/user.permissions.sql                                                           |    0 
 server/services/db/business.sites.permissions.sql                                                 |    0 
 server/web/pom.xml                                                                                |   56 
 server/services/db/business.contest_course.permissions.sql                                        |    0 
 server/services/src/main/java/com/doumee/dao/system/vo/SystemRoleListVO.java                      |    0 
 server/services/src/main/java/com/doumee/biz/system/SystemDepartmentBiz.java                      |    0 
 server/services/src/main/java/com/doumee/service/system/impl/SystemDepartmentServiceImpl.java     |    0 
 server/services/db/ext.contest_course_ext.permissions.sql                                         |    0 
 server/services/src/main/java/com/doumee/dao/business/model/AliBillDetail.java                    |    0 
 server/services/db/business.user_choose_class.permissions.sql                                     |    0 
 server/platform/src/main/java/com/doumee/api/system/SystemMonitorController.java                  |    0 
 server/services/src/main/resources/logback-spring.xml                                             |    0 
 server/services/src/main/java/com/doumee/dao/business/model/Ad.java                               |    0 
 server/services/src/main/java/com/doumee/service/system/SystemRoleMenuService.java                |    0 
 server/services/src/main/java/com/doumee/dao/business/SitesMapper.java                            |    0 
 server/services/src/main/java/com/doumee/core/exception/BusinessException.java                    |    0 
 server/services/db/business.favorite_problem.permissions.sql                                      |    0 
 server/services/src/main/java/com/doumee/core/utils/MyBatisPlus.java                              |    0 
 server/services/src/main/java/com/doumee/service/system/impl/SystemPositionServiceImpl.java       |    0 
 server/services/src/main/java/com/doumee/dao/business/AdMapper.java                               |    0 
 server/platform/src/main/java/com/doumee/api/business/TransactionsController.java                 |    6 
 server/web/src/main/resources/application.yml                                                     |    8 
 server/platform/src/main/java/com/doumee/config/shiro/ShiroCacheManager.java                      |    0 
 server/services/db/business.lesson.permissions.sql                                                |    0 
 server/services/src/main/java/com/doumee/core/wx/WxMiniUtilService.java                           |   53 
 server/services/src/main/java/com/doumee/service/business/impl/BikeRepairServiceImpl.java         |    0 
 server/platform/src/main/java/com/doumee/api/business/AliBillController.java                      |    6 
 server/services/src/main/java/com/doumee/dao/system/SystemUserMapper.java                         |    0 
 server/services/db/ext.favorite_ext.permissions.sql                                               |    0 
 server/web/src/main/java/com/doumee/config/shiro/ShiroRealm.java                                  |   21 
 server/services/src/main/java/com/doumee/core/utils/Monitor.java                                  |    0 
 server/platform/src/main/java/com/doumee/api/system/SystemMenuController.java                     |    2 
 server/platform/src/main/java/com/doumee/config/swagger/SwaggerInterceptor.java                   |    3 
 server/services/src/main/java/com/doumee/dao/system/model/SystemUserRole.java                     |    0 
 server/services/src/main/java/com/doumee/core/utils/Server.java                                   |    0 
 server/services/src/main/java/com/doumee/core/utils/monitor/Memory.java                           |    0 
 server/platform/src/main/java/com/doumee/api/system/SystemLoginLogController.java                 |    7 
 server/services/src/main/java/com/doumee/dao/system/vo/SystemDepartmentListVO.java                |    0 
 server/web/src/main/java/com/doumee/config/shiro/ShiroSessionManager.java                         |    2 
 server/services/src/main/java/com/doumee/core/model/PageWrap.java                                 |    0 
 server/platform/src/main/java/com/doumee/api/BaseController.java                                  |   60 +
 server/services/src/main/java/com/doumee/dao/business/model/Refund.java                           |    0 
 server/services/src/main/java/com/doumee/core/model/ApiResponse.java                              |    1 
 server/services/src/main/java/com/doumee/core/utils/Html2Text.java                                |    0 
 server/platform/src/main/java/com/doumee/api/business/MemberController.java                       |    6 
 server/services/src/main/java/com/doumee/dao/system/SystemRoleMenuMapper.java                     |    0 
 server/platform/src/main/java/com/doumee/config/shiro/ShiroRealm.java                             |   31 
 server/services/src/main/java/com/doumee/biz/system/SystemDictBiz.java                            |    0 
 server/services/src/main/java/com/doumee/dao/business/model/PricingDetail.java                    |    0 
 server/services/db/business.favorite.permissions.sql                                              |    0 
 server/services/db/business.transactions.permissions.sql                                          |    0 
 server/services/src/main/java/com/doumee/core/annotation/pr/PreventRepeatAdapter.java             |    0 
 server/platform/src/main/java/com/doumee/config/shiro/ShiroConfig.java                            |   29 
 server/services/src/main/java/com/doumee/dao/system/SystemUserRoleMapper.java                     |    0 
 server/services/src/main/java/com/doumee/dao/system/SystemRoleMapper.java                         |    0 
 server/platform/src/main/java/com/doumee/config/shiro/ShiroCache.java                             |    8 
 server/services/src/main/java/com/doumee/core/utils/DateUtil.java                                 |  252 ++--
 server/services/src/main/java/com/doumee/core/Jwt/JwtPayLoad.java                                 |   63 +
 server/services/src/main/java/com/doumee/dao/system/SystemDepartmentMapper.java                   |    0 
 server/web/src/main/java/com/doumee/config/shiro/ShiroCache.java                                  |  113 +
 server/services/src/main/java/com/doumee/service/business/impl/AliBillServiceImpl.java            |    0 
 server/services/db/contest.permissions.sql                                                        |    0 
 server/services/src/main/java/com/doumee/dao/business/web/response/UserResponse.java              |   44 
 server/services/src/main/java/com/doumee/dao/business/RefundMapper.java                           |    0 
 server/services/src/main/java/com/doumee/core/model/PageData.java                                 |    0 
 server/platform/src/main/java/com/doumee/api/business/RentSiteController.java                     |    6 
 server/services/src/main/resources/mappers/SystemMenuMapper.xml                                   |    0 
 server/web/src/main/java/com/doumee/config/shiro/ShiroSessionDAO.java                             |    9 
 server/services/src/main/java/com/doumee/config/mybatis/MyBatisInterceptor.java                   |    0 
 server/services/src/main/java/com/doumee/service/business/impl/RefundServiceImpl.java             |    0 
 server/services/src/main/java/com/doumee/service/system/SystemTraceLogService.java                |    0 
 server/services/src/main/java/com/doumee/service/business/HolidaysService.java                    |    0 
 server/services/src/main/java/com/doumee/dao/system/dto/QuerySystemDepartmentDTO.java             |    0 
 server/services/src/main/java/com/doumee/dao/business/ActionLogMapper.java                        |    0 
 server/platform/src/main/java/com/doumee/api/system/SystemDepartmentController.java               |    2 
 server/services/db/business.contest.permissions.sql                                               |    0 
 server/services/src/main/java/com/doumee/service/business/WxBillService.java                      |    0 
 server/services/src/main/java/com/doumee/core/utils/monitor/JVM.java                              |    0 
 server/platform/src/main/java/com/doumee/api/business/AliBillDetailController.java                |    6 
 server/services/src/main/java/com/doumee/config/redis/RedisValueDefaultSerializer.java            |    0 
 server/services/src/main/java/com/doumee/dao/system/SystemLoginLogMapper.java                     |    0 
 server/services/db/ext.contest_ext.permissions.sql                                                |    0 
 server/services/src/main/java/com/doumee/service/business/RefundService.java                      |    0 
 server/services/src/main/java/com/doumee/dao/business/model/PricingParam.java                     |    0 
 server/services/src/main/java/com/doumee/service/business/impl/TransactionsServiceImpl.java       |    0 
 server/platform/pom.xml                                                                           |   56 
 server/services/db/problem_score_submission.permissions.sql                                       |    0 
 server/services/db/business.paper.permissions.sql                                                 |    0 
 server/services/src/main/java/com/doumee/dao/system/dto/QuerySystemPermissionDTO.java             |    0 
 server/services/src/main/resources/mappers/SystemDictMapper.xml                                   |    0 
 server/platform/src/main/java/com/doumee/api/system/SystemTraceLogController.java                 |    5 
 server/services/src/main/java/com/doumee/dao/business/model/WxBillDetail.java                     |    0 
 server/pom.xml                                                                                    |   29 
 server/services/src/main/java/com/doumee/dao/system/model/SystemLoginLog.java                     |    0 
 server/services/src/main/java/com/doumee/config/redis/RedisConfig.java                            |    0 
 server/platform/src/main/java/com/doumee/api/business/WxBillController.java                       |    6 
 server/services/src/main/java/com/doumee/service/system/SystemDictDataService.java                |    0 
 server/services/src/main/java/com/doumee/dao/system/model/SystemDataPermission.java               |    0 
 server/services/src/main/java/com/doumee/dao/business/RentSiteMapper.java                         |    0 
 server/services/src/main/java/com/doumee/service/business/impl/LocksServiceImpl.java              |    0 
 server/services/db/transactions.permissions.sql                                                   |    0 
 server/services/src/main/java/com/doumee/core/constants/ResponseStatus.java                       |    2 
 server/web/src/main/java/com/doumee/config/swagger/SwaggerInterceptorConfig.java                  |    2 
 server/services/src/main/java/com/doumee/core/filter/DoumeeFilter.java                            |    0 
 server/services/src/main/java/com/doumee/core/utils/redis/RedisUtil.java                          |    0 
 server/services/src/main/java/com/doumee/service/system/SystemPositionService.java                |    0 
 server/platform/src/main/java/com/doumee/api/system/SystemDataPermissionController.java           |    2 
 server/services/src/main/java/com/doumee/core/utils/Utils.java                                    |    0 
 server/services/db/business.wx_bill_detail.permissions.sql                                        |    0 
 server/services/src/main/java/com/doumee/dao/business/WxBillDetailMapper.java                     |    0 
 server/services/src/main/java/com/doumee/core/utils/monitor/CPU.java                              |    0 
 server/services/src/main/java/com/doumee/dao/system/SystemDepartmentUserMapper.java               |    0 
 server/services/src/main/java/com/doumee/service/system/impl/SystemPermissionServiceImpl.java     |    0 
 server/services/src/main/java/com/doumee/core/annotation/excel/ExcelExporter.java                 |    0 
 server/services/src/main/java/com/doumee/service/business/MemberService.java                      |   17 
 server/services/src/main/java/com/doumee/dao/business/WxBillMapper.java                           |    0 
 server/services/src/main/java/com/doumee/dao/business/model/BikeRepair.java                       |    0 
 server/services/src/main/java/com/doumee/service/system/SystemLoginLogService.java                |    0 
 server/services/src/main/java/com/doumee/core/model/api/WebLoginUserInfo.java                     |    0 
 server/services/src/main/java/com/doumee/service/system/SystemRolePermissionService.java          |    0 
 server/services/src/main/java/com/doumee/core/constants/OperaType.java                            |    0 
 server/services/db/business.submission.permissions.sql                                            |    0 
 server/services/db/problem_score.permissions.sql                                                  |    0 
 server/web/src/main/java/com/doumee/api/web/AccountApi.java                                       |   86 +
 server/services/src/main/java/com/doumee/core/servlet/ServletDuplicateInputStream.java            |    0 
 server/services/db/business.paper_problem.permissions.sql                                         |    0 
 server/services/src/main/resources/banner.txt                                                     |    0 
 server/services/src/main/java/com/doumee/dao/system/dto/CreateRoleMenuDTO.java                    |    0 
 server/services/src/main/java/com/doumee/dao/system/dto/QuerySystemDictDTO.java                   |    0 
 server/services/src/main/java/com/doumee/core/annotation/excel/ExcelColumn.java                   |    8 
 server/services/src/main/java/com/doumee/service/business/impl/SitesServiceImpl.java              |    0 
 server/services/src/main/java/com/doumee/dao/system/model/SystemDepartmentUser.java               |    0 
 server/platform/src/main/java/com/doumee/api/business/BikeRepairController.java                   |    6 
 server/services/db/ext.lesson_ext.permissions.sql                                                 |    0 
 server/services/src/main/java/com/doumee/dao/system/dto/UpdatePwdDto.java                         |    0 
 server/services/src/main/java/com/doumee/core/annotation/pr/PreventRepeatDefaultHandler.java      |    0 
 server/services/src/main/java/com/doumee/dao/system/vo/SystemMenuNodeVO.java                      |    0 
 server/services/db/ext.campus_ext.permissions.sql                                                 |    0 
 server/platform/src/main/java/com/doumee/api/business/PricingDetailController.java                |    6 
 server/services/src/main/java/com/doumee/core/servlet/ServletDuplicateOutputStream.java           |    0 
 server/services/src/main/java/com/doumee/dao/system/model/SystemPermission.java                   |    0 
 server/services/db/ext.teacher_have_lesson_ext.permissions.sql                                    |    0 
 server/services/db/ext.problem_score_submission_ext.permissions.sql                               |    0 
 server/services/src/main/java/com/doumee/biz/system/impl/SystemDepartmentBizImpl.java             |    0 
 server/services/src/main/java/com/doumee/service/system/SystemPermissionService.java              |    0 
 server/services/src/main/java/com/doumee/core/wx/SendWxMessage.java                               |   24 
 server/platform/src/main/java/com/doumee/config/shiro/ShiroToken.java                             |   54 
 server/services/src/main/java/com/doumee/dao/business/PricingDetailMapper.java                    |    0 
 server/services/db/business.user_integral.permissions.sql                                         |    0 
 server/services/db/ext.problem_tags_ext.permissions.sql                                           |    0 
 server/services/db/business.ali_bill.permissions.sql                                              |    0 
 server/services/db/business.member_rides.permissions.sql                                          |    0 
 server/services/db/category.permissions.sql                                                       |    0 
 server/services/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java             |   99 +
 server/services/src/main/java/com/doumee/dao/business/HolidaysMapper.java                         |    0 
 server/services/src/main/java/com/doumee/service/proxy/CacheProxy.java                            |    0 
 server/services/src/main/java/com/doumee/service/business/BikeRepairService.java                  |    0 
 server/services/src/main/java/com/doumee/service/business/impl/WxBillServiceImpl.java             |    0 
 server/services/src/main/java/com/doumee/dao/system/model/SystemUser.java                         |    0 
 server/services/db/business.pricing_detail.permissions.sql                                        |    0 
 server/platform/src/main/java/com/doumee/api/business/PricingParamController.java                 |    6 
 server/services/db/ext.problem_ext.permissions.sql                                                |    0 
 server/web/src/main/java/com/doumee/api/BaseController.java                                       |   24 
 server/services/src/main/java/com/doumee/dao/system/SystemDictMapper.java                         |    0 
 server/services/db/ext.classes_ext.permissions.sql                                                |    0 
 server/services/db/ext.user_contest_ext.permissions.sql                                           |    0 
 server/services/src/main/java/com/doumee/dao/business/model/Transactions.java                     |    0 
 server/services/src/main/java/com/doumee/core/wx/WxMsgVO.java                                     |   23 
 server/services/src/main/java/com/doumee/dao/system/SystemDataPermissionMapper.java               |    0 
 server/services/src/main/resources/mappers/SystemDepartmentMapper.xml                             |    0 
 server/services/src/main/java/com/doumee/service/common/CaptchaService.java                       |    0 
 server/platform/src/main/java/com/doumee/api/system/SystemDictDataController.java                 |    2 
 server/services/src/main/java/com/doumee/core/wx/TemplateData.java                                |   19 
 server/services/src/main/java/com/doumee/service/business/BikesService.java                       |    0 
 server/platform/src/main/java/com/doumee/config/swagger/SwaggerConfig.java                        |   21 
 server/services/db/business.ad.permissions.sql                                                    |    0 
 server/services/src/main/java/com/doumee/dao/business/model/MemberRides.java                      |    0 
 server/services/src/main/java/com/doumee/dao/business/MemberRidesMapper.java                      |    0 
 server/services/db/business.problem_score.permissions.sql                                         |    0 
 server/web/src/main/java/com/doumee/config/swagger/SwaggerInterceptor.java                        |    3 
 server/services/db/award_ext.permissions.sql                                                      |    0 
 server/services/src/main/java/com/doumee/service/business/impl/HolidaysServiceImpl.java           |    0 
 server/platform/src/main/java/com/doumee/api/system/SystemPermissionController.java               |    2 
 server/services/db/favorite.permissions.sql                                                       |    0 
 server/services/src/main/java/com/doumee/dao/system/dto/QuerySystemDictDataDTO.java               |    0 
 server/services/db/lesson.permissions.sql                                                         |    0 
 server/services/src/main/java/com/doumee/biz/system/SystemUserBiz.java                            |    0 
 server/platform/src/main/java/com/doumee/PlatformApplication.java                                 |   11 
 server/services/src/main/java/com/doumee/core/servlet/ServletDuplicateRequestWrapper.java         |    0 
 server/services/src/main/java/com/doumee/dao/business/web/request/RegisterRequest.java            |   29 
 server/services/src/main/java/com/doumee/service/business/impl/AdServiceImpl.java                 |    0 
 server/services/src/main/java/com/doumee/dao/business/model/WxBill.java                           |    0 
 server/services/src/main/java/com/doumee/service/system/SystemPositionUserService.java            |    0 
 server/services/src/main/resources/application-dev.yml                                            |   20 
 server/services/src/main/java/com/doumee/service/system/impl/SystemMenuServiceImpl.java           |    0 
 server/services/db/ext.user_integral_ext.permissions.sql                                          |    0 
 server/platform/src/main/java/com/doumee/api/system/SystemPositionController.java                 |    2 
 server/services/db/business.problem.permissions.sql                                               |    0 
 server/services/src/main/java/com/doumee/service/system/impl/SystemRoleMenuServiceImpl.java       |    0 
 server/services/src/main/java/com/doumee/service/business/impl/RentSiteServiceImpl.java           |    0 
 server/services/src/main/java/com/doumee/biz/system/SystemMenuBiz.java                            |    0 
 server/services/db/business.action_log.permissions.sql                                            |    0 
 server/services/src/main/java/com/doumee/dao/system/model/SystemPositionUser.java                 |    0 
 server/services/db/business.problem_score_submission.permissions.sql                              |    0 
 server/platform/src/main/java/com/doumee/api/system/SystemRoleController.java                     |    2 
 server/services/db/ext.category_ext.permissions.sql                                               |    0 
 server/services/db/business.student_learn_lesson.permissions.sql                                  |    0 
 server/services/src/main/java/com/doumee/core/cache/LocalCache.java                               |    0 
 server/services/db/system.system_user.permissions.sql                                             |    0 
 server/services/src/main/java/com/doumee/dao/business/web/request/ForgetPasswordRequest.java      |   27 
 server/services/src/main/java/com/doumee/core/utils/Location.java                                 |    0 
 server/services/db/business.teacher_have_lesson.permissions.sql                                   |    0 
 server/services/src/main/java/com/doumee/dao/system/vo/SystemDictDataListVO.java                  |    0 
 server/services/db/ext.award_ext.permissions.sql                                                  |    0 
 server/services/src/main/java/com/doumee/service/business/impl/WxBillDetailServiceImpl.java       |    0 
 server/services/src/main/java/com/doumee/biz/system/impl/SystemMenuBizImpl.java                   |    0 
 server/services/src/main/java/com/doumee/dao/system/SystemRolePermissionMapper.java               |    0 
 server/services/src/main/java/com/doumee/core/aware/DataPermissionAware.java                      |    0 
 server/services/src/main/java/com/doumee/dao/system/dto/QuerySystemLoginLogDTO.java               |    0 
 server/services/src/main/java/com/doumee/dao/business/model/AliBill.java                          |    0 
 server/services/src/main/java/com/doumee/dao/system/vo/SystemDictListVO.java                      |    0 
 server/platform/src/main/resources/application.yml                                                |    7 
 server/services/db/classes_ext.permissions.sql                                                    |    0 
 server/services/db/student_learn_lesson.permissions.sql                                           |    0 
 server/services/db/course.permissions.sql                                                         |    0 
 server/services/src/main/java/com/doumee/dao/business/MemberMapper.java                           |    0 
 server/services/db/ext.problem_score_ext.permissions.sql                                          |    0 
 server/services/db/business.holidays.permissions.sql                                              |    0 
 server/services/src/main/java/com/doumee/service/system/impl/SystemPositionUserServiceImpl.java   |    0 
 server/services/src/main/java/com/doumee/service/system/SystemDictService.java                    |    0 
 server/services/src/main/java/com/doumee/dao/business/BikesMapper.java                            |    0 
 server/services/src/main/java/com/doumee/service/system/impl/SystemDataPermissionServiceImpl.java |    0 
 server/platform/src/main/java/com/doumee/config/swagger/SwaggerInterceptorConfig.java             |    3 
 server/services/db/business.bike_repair.permissions.sql                                           |    0 
 server/services/src/main/java/com/doumee/biz/system/impl/SystemDataPermissionBizImpl.java         |    0 
 server/services/src/main/java/com/doumee/dao/business/model/Holidays.java                         |    0 
 server/services/src/main/java/com/doumee/dao/business/web/response/AccountResponse.java           |   26 
 server/services/src/main/java/com/doumee/dao/system/dto/QuerySystemUserDTO.java                   |    0 
 server/services/src/main/java/com/doumee/dao/system/vo/SystemPositionListVO.java                  |    0 
 server/platform/src/main/java/com/doumee/api/system/SystemController.java                         |    1 
 server/services/src/main/java/com/doumee/core/Jwt/WebMvcConfig.java                               |  111 +
 server/web/src/main/java/com/doumee/Main.java                                                     |    7 
 server/services/src/main/java/com/doumee/core/utils/ID.java                                       |   89 +
 server/services/src/main/java/com/doumee/dao/system/model/SystemTraceLog.java                     |    0 
 server/services/db/business.user.permissions.sql                                                  |    0 
 server/services/pom.xml                                                                           |   17 
 server/services/db/ext.course_ext.permissions.sql                                                 |    0 
 server/services/db/ext.favorite_problem_ext.permissions.sql                                       |    0 
 server/services/src/main/java/com/doumee/dao/system/vo/SystemPermissionListVO.java                |    0 
 server/services/db/problem_ext.permissions.sql                                                    |    0 
 server/services/src/main/java/com/doumee/dao/system/model/SystemPosition.java                     |    0 
 server/services/src/main/java/com/doumee/dao/business/web/request/UpdPasswordRequest.java         |   27 
 server/services/src/main/java/com/doumee/dao/system/model/SystemDictData.java                     |    0 
 server/services/src/main/java/com/doumee/core/exception/UnSafeSessionException.java               |    0 
 server/services/src/main/java/com/doumee/config/handler/GlobalExceptionHandler.java               |    0 
 server/.gitignore                                                                                 |    4 
 server/services/src/main/java/com/doumee/service/system/impl/SystemDictServiceImpl.java           |    0 
 server/services/db/ext.paper_rank_ext.permissions.sql                                             |    0 
 server/services/src/main/java/com/doumee/Main.java                                                |    7 
 server/services/src/main/java/com/doumee/core/wx/WxMiniConfig.java                                |   91 +
 server/services/src/main/java/com/doumee/service/system/SystemUserService.java                    |    0 
 server/services/src/main/java/com/doumee/core/annotation/trace/TraceStatus.java                   |    0 
 server/platform/src/main/java/com/doumee/api/business/AdController.java                           |    6 
 server/services/src/main/java/com/doumee/dao/business/TransactionsMapper.java                     |    0 
 server/services/db/business.member.permissions.sql                                                |    0 
 server/services/db/ext.user_choose_class_ext.permissions.sql                                      |    0 
 server/services/src/main/java/com/doumee/service/system/SystemDataPermissionService.java          |    0 
 server/platform/src/main/java/com/doumee/api/business/MemberRidesController.java                  |    6 
 server/services/db/business.wx_bill.permissions.sql                                               |    0 
 server/services/src/main/java/com/doumee/core/utils/aliyun/ALiYunUtil.java                        |    0 
 server/services/src/main/java/com/doumee/dao/system/vo/SystemDataPermissionListVO.java            |    0 
 server/services/src/main/java/com/doumee/dao/system/SystemDictDataMapper.java                     |    0 
 server/services/src/main/java/com/doumee/core/annotation/trace/TraceType.java                     |    0 
 server/services/db/paper_problem.permissions.sql                                                  |    0 
 server/services/src/main/java/com/doumee/core/annotation/pr/PreventRepeatInterceptorConfig.java   |    0 
 server/services/src/main/java/com/doumee/core/servlet/ServletRewriteFilter.java                   |    0 
 server/services/db/business.refund.permissions.sql                                                |    0 
 server/services/src/main/java/com/doumee/core/model/LoginUserInfo.java                            |    3 
 server/services/src/main/java/com/doumee/service/system/SystemUserRoleService.java                |    0 
 server/services/src/main/java/com/doumee/core/utils/UserClient.java                               |    0 
 server/services/src/main/java/com/doumee/service/business/ActionLogService.java                   |    0 
 server/services/src/main/java/com/doumee/service/business/TransactionsService.java                |    0 
 server/services/src/main/java/com/doumee/core/annotation/excel/ExcelDataHandlerAdapter.java       |    0 
 server/services/src/main/java/com/doumee/core/utils/CompressUtil.java                             |    0 
 server/platform/src/main/java/com/doumee/api/system/SystemDictController.java                     |    3 
 server/services/src/main/java/com/doumee/dao/business/LocksMapper.java                            |    0 
 server/platform/src/main/java/com/doumee/config/shiro/ShiroSessionDAO.java                        |    7 
 server/services/db/classes.permissions.sql                                                        |    0 
 server/services/src/main/java/com/doumee/dao/system/dto/QuerySystemTraceLogDTO.java               |    0 
 server/services/src/main/java/com/doumee/dao/business/AliBillDetailMapper.java                    |    0 
 server/web/src/main/java/com/doumee/config/shiro/ShiroTokenManager.java                           |   25 
 server/services/src/main/java/com/doumee/dao/business/web/request/WxPhoneRequest.java             |   36 
 server/services/src/main/java/com/doumee/dao/system/model/SystemRolePermission.java               |    0 
 server/services/src/main/java/com/doumee/service/business/impl/PricingParamServiceImpl.java       |    0 
 server/services/db/ext.submission_ext.permissions.sql                                             |    0 
 server/services/src/main/java/com/doumee/biz/system/impl/SystemRoleBizImpl.java                   |    0 
 server/services/src/main/java/com/doumee/service/business/AliBillDetailService.java               |    0 
 server/services/src/main/resources/mappers/SystemDictDataMapper.xml                               |    0 
 server/services/src/main/resources/mappers/SystemDataPermissionMapper.xml                         |    0 
 server/services/src/main/java/com/doumee/service/system/impl/SystemLoginServiceImpl.java          |    0 
 server/services/doc/init.sql                                                                      |    0 
 server/services/src/main/java/com/doumee/dao/business/model/ActionLog.java                        |    0 
 server/services/src/main/java/com/doumee/config/mybatis/SpringUtils.java                          |   69 +
 server/services/src/main/java/com/doumee/service/business/impl/BikesServiceImpl.java              |    0 
 server/services/src/main/java/com/doumee/service/business/impl/MemberRidesServiceImpl.java        |    0 
 server/services/db/business.locks.permissions.sql                                                 |    0 
 server/services/db/user_integral.permissions.sql                                                  |    0 
 server/services/src/main/java/com/doumee/dao/system/SystemPermissionMapper.java                   |    0 
 server/platform/src/main/java/com/doumee/api/business/SitesController.java                        |    6 
 server/services/src/main/java/com/doumee/service/system/impl/SystemDictDataServiceImpl.java       |    0 
 server/services/src/main/java/com/doumee/biz/system/impl/SystemUserBizImpl.java                   |    0 
 server/services/src/main/java/com/doumee/core/annotation/pr/PreventRepeat.java                    |    0 
 server/services/src/main/java/com/doumee/service/business/MemberRidesService.java                 |    0 
 server/services/src/main/java/com/doumee/service/system/impl/SystemDepartmentUserServiceImpl.java |    0 
 server/services/src/main/java/com/doumee/core/aware/DataPermissionMapping.java                    |    2 
 server/web/src/main/java/com/doumee/InterfaceApplication.java                                     |    8 
 server/services/src/main/resources/mappers/SystemRoleMapper.xml                                   |    0 
 server/services/src/main/java/com/doumee/service/business/AdService.java                          |    0 
 server/services/db/problem.permissions.sql                                                        |    0 
 server/services/src/main/java/com/doumee/dao/business/web/request/PageRequest.java                |   38 
 server/services/src/main/java/com/doumee/core/wx/WxPayProperties.java                             |   48 
 server/services/db/business.category.permissions.sql                                              |    0 
 server/services/src/main/java/com/doumee/dao/system/dto/LoginDTO.java                             |    0 
 server/services/src/main/java/com/doumee/core/servlet/ServletDuplicateResponseWrapper.java        |    0 
 server/web/src/main/java/com/doumee/api/common/CaptchaController.java                             |    4 
 server/services/src/main/java/com/doumee/service/system/SystemLoginService.java                   |    0 
 server/services/src/main/java/com/doumee/biz/system/impl/SystemPermissionBizImpl.java             |    0 
 server/services/src/main/java/com/doumee/dao/system/model/SystemDict.java                         |    0 
 server/web/src/main/java/com/doumee/config/shiro/ShiroCredentialsMatcher.java                     |    2 
 server/services/src/main/java/com/doumee/biz/system/impl/SystemDictDataBizImpl.java               |    0 
 server/services/src/main/java/com/doumee/dao/system/vo/SystemUserListVO.java                      |    0 
 server/services/src/main/java/com/doumee/core/annotation/LoginRequired.java                       |   12 
 server/services/src/main/java/com/doumee/core/annotation/pr/PreventRepeatInterceptor.java         |    0 
 server/services/src/main/java/com/doumee/core/utils/Secure.java                                   |    0 
 server/services/src/main/java/com/doumee/service/business/PricingDetailService.java               |    0 
 server/services/src/main/java/com/doumee/service/business/AliBillService.java                     |    0 
 server/services/db/business.course.permissions.sql                                                |    0 
 server/services/src/main/java/com/doumee/core/utils/Base64Util.java                               |    0 
 server/services/src/main/java/com/doumee/service/system/SystemRoleService.java                    |    0 
 server/services/db/paper.permissions.sql                                                          |    0 
 server/services/src/main/java/com/doumee/service/system/impl/SystemUserServiceImpl.java           |    0 
 server/web/src/main/java/com/doumee/config/shiro/ShiroConfig.java                                 |   32 
 server/services/src/main/java/com/doumee/core/annotation/trace/TraceInterceptor.java              |    0 
 server/platform/src/main/java/com/doumee/config/shiro/ShiroCredentialsMatcher.java                |    7 
 server/platform/src/main/java/com/doumee/config/shiro/ShiroAuthFilter.java                        |   27 
 server/services/db/business.paper_rank.permissions.sql                                            |    0 
 server/services/src/main/java/com/doumee/core/utils/Date.java                                     |    0 
 server/services/src/main/java/com/doumee/service/business/impl/ActionLogServiceImpl.java          |    0 
 server/services/src/main/java/com/doumee/core/utils/monitor/Disk.java                             |    0 
 server/services/db/submission.permissions.sql                                                     |    0 
 server/services/db/contest_course.permissions.sql                                                 |    0 
 server/services/db/business.problem_tags.permissions.sql                                          |    0 
 server/services/src/main/java/com/doumee/dao/system/dto/UpdateSystemMenuSortDTO.java              |    0 
 server/services/src/main/java/com/doumee/service/system/impl/SystemLoginLogServiceImpl.java       |    0 
 server/platform/src/main/java/com/doumee/config/shiro/ShiroSessionManager.java                    |    1 
 server/services/src/main/java/com/doumee/core/constants/ExceptionLevel.java                       |    0 
 /dev/null                                                                                         |  145 --
 server/services/db/class.permissions.sql                                                          |    0 
 server/platform/src/main/java/com/doumee/api/system/SystemUserController.java                     |   10 
 server/platform/src/main/java/com/doumee/config/shiro/ShiroTokenManager.java                      |    0 
 server/services/src/main/java/com/doumee/biz/system/SystemPermissionBiz.java                      |    0 
 463 files changed, 2,877 insertions(+), 485 deletions(-)

diff --git a/server/.gitignore b/server/.gitignore
index 5003e5f..8beec74 100644
--- a/server/.gitignore
+++ b/server/.gitignore
@@ -1,7 +1,7 @@
 coderd.json
 target/
 *.iml
-log/
+service/log/
 #idea
 .idea
 *.iws
@@ -15,7 +15,7 @@
 
 # Log file
 *.log
-log/
+service/log/
 logs
 .DS_Store
 tmp
diff --git a/server/platform/pom.xml b/server/platform/pom.xml
new file mode 100644
index 0000000..d5334ec
--- /dev/null
+++ b/server/platform/pom.xml
@@ -0,0 +1,56 @@
+<?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>parkbike</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>services</artifactId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <finalName>platform</finalName>
+        <resources>
+            <resource>
+                <directory>src/main/resources</directory>
+            </resource>
+        </resources>
+
+        <plugins>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+                <configuration>
+                    <fork>true</fork>
+                    <mainClass>com.doumee.PlatformApplication</mainClass>
+                    <layout>ZIP</layout>
+                </configuration>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>repackage</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+
+        </plugins>
+    </build>
+</project>
\ No newline at end of file
diff --git a/server/src/main/java/com/doumee/Application.java b/server/platform/src/main/java/com/doumee/PlatformApplication.java
similarity index 78%
rename from server/src/main/java/com/doumee/Application.java
rename to server/platform/src/main/java/com/doumee/PlatformApplication.java
index 5a19b7b..22cc2c5 100644
--- a/server/src/main/java/com/doumee/Application.java
+++ b/server/platform/src/main/java/com/doumee/PlatformApplication.java
@@ -5,23 +5,20 @@
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.context.ApplicationContext;
-
 import org.springframework.scheduling.annotation.EnableAsync;
 
 /**
  * 鍚姩绫�
  * @author Eva.Caesar Liu
- * @date 2022/03/15 09:54
+ * @date 2023/02/14 11:14
  */
 @Slf4j
 @SpringBootApplication
-@EnableAsync
 @MapperScan("com.doumee.dao")
-public class Application {
-
+@EnableAsync
+public class PlatformApplication {
     public static void main(String[] args) {
-        ApplicationContext context = SpringApplication.run(Application.class);
+        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..c45000d
--- /dev/null
+++ b/server/platform/src/main/java/com/doumee/api/BaseController.java
@@ -0,0 +1,60 @@
+package com.doumee.api;
+
+import com.doumee.core.model.LoginUserInfo;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.shiro.SecurityUtils;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 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();
+    }
+
+    /**
+     * 鑾峰彇ID闆嗗悎
+     *
+     * @param ids 浣跨敤","闅斿紑鐨勫涓狪D
+     * @return List<Integer>
+     */
+    protected List<Integer> getIdList (String ids) {
+        String [] idArray = ids.split(",");
+        List<Integer> idList = new ArrayList<>();
+        for (String id : idArray) {
+            idList.add(Integer.valueOf(id));
+        }
+        return idList;
+    }
+
+    /**
+     * 鑾峰彇鏂囦欢瀛楄妭娴�
+     *
+     * @param is 杈撳叆娴�
+     * @return ByteArrayOutputStream
+     */
+    protected ByteArrayOutputStream getOutputStream (InputStream is) throws IOException {
+        ByteArrayOutputStream baos = new ByteArrayOutputStream();
+        byte[] bs = new byte[is.available()];
+        int len;
+        while ((len = is.read(bs)) != -1) {
+            baos.write(bs, 0, len);
+        }
+        return baos;
+    }
+}
diff --git a/server/src/main/java/com/doumee/api/business/ActionLogController.java b/server/platform/src/main/java/com/doumee/api/business/ActionLogController.java
similarity index 97%
rename from server/src/main/java/com/doumee/api/business/ActionLogController.java
rename to server/platform/src/main/java/com/doumee/api/business/ActionLogController.java
index 5a0dda2..3f40b12 100644
--- a/server/src/main/java/com/doumee/api/business/ActionLogController.java
+++ b/server/platform/src/main/java/com/doumee/api/business/ActionLogController.java
@@ -4,17 +4,17 @@
 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.core.model.PageWrap;
 import com.doumee.dao.business.model.ActionLog;
 import com.doumee.service.business.ActionLogService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-import org.apache.shiro.authz.annotation.RequiresPermissions;    
+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 javax.servlet.http.HttpServletResponse;
 import java.util.ArrayList;
 import java.util.List;
 
diff --git a/server/src/main/java/com/doumee/api/business/AdController.java b/server/platform/src/main/java/com/doumee/api/business/AdController.java
similarity index 97%
rename from server/src/main/java/com/doumee/api/business/AdController.java
rename to server/platform/src/main/java/com/doumee/api/business/AdController.java
index a72b85f..a5fe192 100644
--- a/server/src/main/java/com/doumee/api/business/AdController.java
+++ b/server/platform/src/main/java/com/doumee/api/business/AdController.java
@@ -4,17 +4,17 @@
 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.core.model.PageWrap;
 import com.doumee.dao.business.model.Ad;
 import com.doumee.service.business.AdService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-import org.apache.shiro.authz.annotation.RequiresPermissions;    
+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 javax.servlet.http.HttpServletResponse;
 import java.util.ArrayList;
 import java.util.List;
 
diff --git a/server/src/main/java/com/doumee/api/business/AliBillController.java b/server/platform/src/main/java/com/doumee/api/business/AliBillController.java
similarity index 97%
rename from server/src/main/java/com/doumee/api/business/AliBillController.java
rename to server/platform/src/main/java/com/doumee/api/business/AliBillController.java
index 9389d96..21ef1d9 100644
--- a/server/src/main/java/com/doumee/api/business/AliBillController.java
+++ b/server/platform/src/main/java/com/doumee/api/business/AliBillController.java
@@ -4,17 +4,17 @@
 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.core.model.PageWrap;
 import com.doumee.dao.business.model.AliBill;
 import com.doumee.service.business.AliBillService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-import org.apache.shiro.authz.annotation.RequiresPermissions;    
+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 javax.servlet.http.HttpServletResponse;
 import java.util.ArrayList;
 import java.util.List;
 
diff --git a/server/src/main/java/com/doumee/api/business/AliBillDetailController.java b/server/platform/src/main/java/com/doumee/api/business/AliBillDetailController.java
similarity index 97%
rename from server/src/main/java/com/doumee/api/business/AliBillDetailController.java
rename to server/platform/src/main/java/com/doumee/api/business/AliBillDetailController.java
index a45b1b3..898327b 100644
--- a/server/src/main/java/com/doumee/api/business/AliBillDetailController.java
+++ b/server/platform/src/main/java/com/doumee/api/business/AliBillDetailController.java
@@ -4,17 +4,17 @@
 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.core.model.PageWrap;
 import com.doumee.dao.business.model.AliBillDetail;
 import com.doumee.service.business.AliBillDetailService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-import org.apache.shiro.authz.annotation.RequiresPermissions;    
+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 javax.servlet.http.HttpServletResponse;
 import java.util.ArrayList;
 import java.util.List;
 
diff --git a/server/src/main/java/com/doumee/api/business/BikeRepairController.java b/server/platform/src/main/java/com/doumee/api/business/BikeRepairController.java
similarity index 97%
rename from server/src/main/java/com/doumee/api/business/BikeRepairController.java
rename to server/platform/src/main/java/com/doumee/api/business/BikeRepairController.java
index dddca2d..fab238d 100644
--- a/server/src/main/java/com/doumee/api/business/BikeRepairController.java
+++ b/server/platform/src/main/java/com/doumee/api/business/BikeRepairController.java
@@ -4,17 +4,17 @@
 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.core.model.PageWrap;
 import com.doumee.dao.business.model.BikeRepair;
 import com.doumee.service.business.BikeRepairService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-import org.apache.shiro.authz.annotation.RequiresPermissions;    
+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 javax.servlet.http.HttpServletResponse;
 import java.util.ArrayList;
 import java.util.List;
 
diff --git a/server/src/main/java/com/doumee/api/business/BikesController.java b/server/platform/src/main/java/com/doumee/api/business/BikesController.java
similarity index 97%
rename from server/src/main/java/com/doumee/api/business/BikesController.java
rename to server/platform/src/main/java/com/doumee/api/business/BikesController.java
index bb5fd94..89649b8 100644
--- a/server/src/main/java/com/doumee/api/business/BikesController.java
+++ b/server/platform/src/main/java/com/doumee/api/business/BikesController.java
@@ -4,17 +4,17 @@
 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.core.model.PageWrap;
 import com.doumee.dao.business.model.Bikes;
 import com.doumee.service.business.BikesService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-import org.apache.shiro.authz.annotation.RequiresPermissions;    
+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 javax.servlet.http.HttpServletResponse;
 import java.util.ArrayList;
 import java.util.List;
 
diff --git a/server/src/main/java/com/doumee/api/business/HolidaysController.java b/server/platform/src/main/java/com/doumee/api/business/HolidaysController.java
similarity index 97%
rename from server/src/main/java/com/doumee/api/business/HolidaysController.java
rename to server/platform/src/main/java/com/doumee/api/business/HolidaysController.java
index da7be37..81df234 100644
--- a/server/src/main/java/com/doumee/api/business/HolidaysController.java
+++ b/server/platform/src/main/java/com/doumee/api/business/HolidaysController.java
@@ -4,17 +4,17 @@
 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.core.model.PageWrap;
 import com.doumee.dao.business.model.Holidays;
 import com.doumee.service.business.HolidaysService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-import org.apache.shiro.authz.annotation.RequiresPermissions;    
+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 javax.servlet.http.HttpServletResponse;
 import java.util.ArrayList;
 import java.util.List;
 
diff --git a/server/src/main/java/com/doumee/api/business/LocksController.java b/server/platform/src/main/java/com/doumee/api/business/LocksController.java
similarity index 97%
rename from server/src/main/java/com/doumee/api/business/LocksController.java
rename to server/platform/src/main/java/com/doumee/api/business/LocksController.java
index d90319b..b926095 100644
--- a/server/src/main/java/com/doumee/api/business/LocksController.java
+++ b/server/platform/src/main/java/com/doumee/api/business/LocksController.java
@@ -4,17 +4,17 @@
 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.core.model.PageWrap;
 import com.doumee.dao.business.model.Locks;
 import com.doumee.service.business.LocksService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-import org.apache.shiro.authz.annotation.RequiresPermissions;    
+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 javax.servlet.http.HttpServletResponse;
 import java.util.ArrayList;
 import java.util.List;
 
diff --git a/server/src/main/java/com/doumee/api/business/MemberController.java b/server/platform/src/main/java/com/doumee/api/business/MemberController.java
similarity index 97%
rename from server/src/main/java/com/doumee/api/business/MemberController.java
rename to server/platform/src/main/java/com/doumee/api/business/MemberController.java
index 3a5a28b..7962b8d 100644
--- a/server/src/main/java/com/doumee/api/business/MemberController.java
+++ b/server/platform/src/main/java/com/doumee/api/business/MemberController.java
@@ -4,17 +4,17 @@
 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.core.model.PageWrap;
 import com.doumee.dao.business.model.Member;
 import com.doumee.service.business.MemberService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-import org.apache.shiro.authz.annotation.RequiresPermissions;    
+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 javax.servlet.http.HttpServletResponse;
 import java.util.ArrayList;
 import java.util.List;
 
diff --git a/server/src/main/java/com/doumee/api/business/MemberRidesController.java b/server/platform/src/main/java/com/doumee/api/business/MemberRidesController.java
similarity index 97%
rename from server/src/main/java/com/doumee/api/business/MemberRidesController.java
rename to server/platform/src/main/java/com/doumee/api/business/MemberRidesController.java
index a8ea58e..05fd57f 100644
--- a/server/src/main/java/com/doumee/api/business/MemberRidesController.java
+++ b/server/platform/src/main/java/com/doumee/api/business/MemberRidesController.java
@@ -4,17 +4,17 @@
 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.core.model.PageWrap;
 import com.doumee.dao.business.model.MemberRides;
 import com.doumee.service.business.MemberRidesService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-import org.apache.shiro.authz.annotation.RequiresPermissions;    
+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 javax.servlet.http.HttpServletResponse;
 import java.util.ArrayList;
 import java.util.List;
 
diff --git a/server/src/main/java/com/doumee/api/business/PricingDetailController.java b/server/platform/src/main/java/com/doumee/api/business/PricingDetailController.java
similarity index 97%
rename from server/src/main/java/com/doumee/api/business/PricingDetailController.java
rename to server/platform/src/main/java/com/doumee/api/business/PricingDetailController.java
index 605442a..f329cd4 100644
--- a/server/src/main/java/com/doumee/api/business/PricingDetailController.java
+++ b/server/platform/src/main/java/com/doumee/api/business/PricingDetailController.java
@@ -4,17 +4,17 @@
 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.core.model.PageWrap;
 import com.doumee.dao.business.model.PricingDetail;
 import com.doumee.service.business.PricingDetailService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-import org.apache.shiro.authz.annotation.RequiresPermissions;    
+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 javax.servlet.http.HttpServletResponse;
 import java.util.ArrayList;
 import java.util.List;
 
diff --git a/server/src/main/java/com/doumee/api/business/PricingParamController.java b/server/platform/src/main/java/com/doumee/api/business/PricingParamController.java
similarity index 97%
rename from server/src/main/java/com/doumee/api/business/PricingParamController.java
rename to server/platform/src/main/java/com/doumee/api/business/PricingParamController.java
index 5353d78..1a85aac 100644
--- a/server/src/main/java/com/doumee/api/business/PricingParamController.java
+++ b/server/platform/src/main/java/com/doumee/api/business/PricingParamController.java
@@ -4,17 +4,17 @@
 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.core.model.PageWrap;
 import com.doumee.dao.business.model.PricingParam;
 import com.doumee.service.business.PricingParamService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-import org.apache.shiro.authz.annotation.RequiresPermissions;    
+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 javax.servlet.http.HttpServletResponse;
 import java.util.ArrayList;
 import java.util.List;
 
diff --git a/server/src/main/java/com/doumee/api/business/RefundController.java b/server/platform/src/main/java/com/doumee/api/business/RefundController.java
similarity index 97%
rename from server/src/main/java/com/doumee/api/business/RefundController.java
rename to server/platform/src/main/java/com/doumee/api/business/RefundController.java
index 714c9f1..dd710dd 100644
--- a/server/src/main/java/com/doumee/api/business/RefundController.java
+++ b/server/platform/src/main/java/com/doumee/api/business/RefundController.java
@@ -4,17 +4,17 @@
 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.core.model.PageWrap;
 import com.doumee.dao.business.model.Refund;
 import com.doumee.service.business.RefundService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-import org.apache.shiro.authz.annotation.RequiresPermissions;    
+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 javax.servlet.http.HttpServletResponse;
 import java.util.ArrayList;
 import java.util.List;
 
diff --git a/server/src/main/java/com/doumee/api/business/RentSiteController.java b/server/platform/src/main/java/com/doumee/api/business/RentSiteController.java
similarity index 97%
rename from server/src/main/java/com/doumee/api/business/RentSiteController.java
rename to server/platform/src/main/java/com/doumee/api/business/RentSiteController.java
index e5991c7..163dc3a 100644
--- a/server/src/main/java/com/doumee/api/business/RentSiteController.java
+++ b/server/platform/src/main/java/com/doumee/api/business/RentSiteController.java
@@ -4,17 +4,17 @@
 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.core.model.PageWrap;
 import com.doumee.dao.business.model.RentSite;
 import com.doumee.service.business.RentSiteService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-import org.apache.shiro.authz.annotation.RequiresPermissions;    
+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 javax.servlet.http.HttpServletResponse;
 import java.util.ArrayList;
 import java.util.List;
 
diff --git a/server/src/main/java/com/doumee/api/business/SitesController.java b/server/platform/src/main/java/com/doumee/api/business/SitesController.java
similarity index 97%
rename from server/src/main/java/com/doumee/api/business/SitesController.java
rename to server/platform/src/main/java/com/doumee/api/business/SitesController.java
index 045404b..54f7469 100644
--- a/server/src/main/java/com/doumee/api/business/SitesController.java
+++ b/server/platform/src/main/java/com/doumee/api/business/SitesController.java
@@ -4,17 +4,17 @@
 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.core.model.PageWrap;
 import com.doumee.dao.business.model.Sites;
 import com.doumee.service.business.SitesService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-import org.apache.shiro.authz.annotation.RequiresPermissions;    
+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 javax.servlet.http.HttpServletResponse;
 import java.util.ArrayList;
 import java.util.List;
 
diff --git a/server/src/main/java/com/doumee/api/business/TransactionsController.java b/server/platform/src/main/java/com/doumee/api/business/TransactionsController.java
similarity index 97%
rename from server/src/main/java/com/doumee/api/business/TransactionsController.java
rename to server/platform/src/main/java/com/doumee/api/business/TransactionsController.java
index c27b0a4..1861c18 100644
--- a/server/src/main/java/com/doumee/api/business/TransactionsController.java
+++ b/server/platform/src/main/java/com/doumee/api/business/TransactionsController.java
@@ -4,17 +4,17 @@
 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.core.model.PageWrap;
 import com.doumee.dao.business.model.Transactions;
 import com.doumee.service.business.TransactionsService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-import org.apache.shiro.authz.annotation.RequiresPermissions;    
+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 javax.servlet.http.HttpServletResponse;
 import java.util.ArrayList;
 import java.util.List;
 
diff --git a/server/src/main/java/com/doumee/api/business/WxBillController.java b/server/platform/src/main/java/com/doumee/api/business/WxBillController.java
similarity index 97%
rename from server/src/main/java/com/doumee/api/business/WxBillController.java
rename to server/platform/src/main/java/com/doumee/api/business/WxBillController.java
index 1335b47..1517eb8 100644
--- a/server/src/main/java/com/doumee/api/business/WxBillController.java
+++ b/server/platform/src/main/java/com/doumee/api/business/WxBillController.java
@@ -4,17 +4,17 @@
 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.core.model.PageWrap;
 import com.doumee.dao.business.model.WxBill;
 import com.doumee.service.business.WxBillService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-import org.apache.shiro.authz.annotation.RequiresPermissions;    
+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 javax.servlet.http.HttpServletResponse;
 import java.util.ArrayList;
 import java.util.List;
 
diff --git a/server/src/main/java/com/doumee/api/business/WxBillDetailController.java b/server/platform/src/main/java/com/doumee/api/business/WxBillDetailController.java
similarity index 97%
rename from server/src/main/java/com/doumee/api/business/WxBillDetailController.java
rename to server/platform/src/main/java/com/doumee/api/business/WxBillDetailController.java
index e3f3cfc..8358d4e 100644
--- a/server/src/main/java/com/doumee/api/business/WxBillDetailController.java
+++ b/server/platform/src/main/java/com/doumee/api/business/WxBillDetailController.java
@@ -4,17 +4,17 @@
 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.core.model.PageWrap;
 import com.doumee.dao.business.model.WxBillDetail;
 import com.doumee.service.business.WxBillDetailService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-import org.apache.shiro.authz.annotation.RequiresPermissions;    
+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 javax.servlet.http.HttpServletResponse;
 import java.util.ArrayList;
 import java.util.List;
 
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 94%
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
index 45813e1..2162667 100644
--- a/server/src/main/java/com/doumee/api/common/CaptchaController.java
+++ b/server/platform/src/main/java/com/doumee/api/common/CaptchaController.java
@@ -13,7 +13,7 @@
 
 /**
  * @author Eva.Caesar Liu
- * @date 2022/03/15 09:54
+ * @date 2023/02/14 11:14
  */
 @Api(tags = "鍥剧墖楠岃瘉鐮佹帴鍙�")
 @Trace(exclude = true)
@@ -26,7 +26,7 @@
 
     /**
      * @author Eva.Caesar Liu
-     * @date 2022/03/15 09:54
+     * @date 2023/02/14 11:14
      */
     @ApiOperation("鑾峰彇鍥剧墖楠岃瘉鐮�")
     @GetMapping("/captcha")
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..dea582c
--- /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.constants.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.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 97%
rename from server/src/main/java/com/doumee/api/system/SystemController.java
rename to server/platform/src/main/java/com/doumee/api/system/SystemController.java
index 47c2d82..9db6a9a 100644
--- a/server/src/main/java/com/doumee/api/system/SystemController.java
+++ b/server/platform/src/main/java/com/doumee/api/system/SystemController.java
@@ -4,7 +4,6 @@
 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.ResponseStatus;
 import com.doumee.core.exception.BusinessException;
 import com.doumee.core.model.ApiResponse;
 import com.doumee.core.model.LoginUserInfo;
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 98%
rename from server/src/main/java/com/doumee/api/system/SystemDataPermissionController.java
rename to server/platform/src/main/java/com/doumee/api/system/SystemDataPermissionController.java
index 784913d..eb41254 100644
--- a/server/src/main/java/com/doumee/api/system/SystemDataPermissionController.java
+++ b/server/platform/src/main/java/com/doumee/api/system/SystemDataPermissionController.java
@@ -14,7 +14,7 @@
 import com.doumee.service.system.SystemDataPermissionService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-import org.apache.shiro.authz.annotation.RequiresPermissions;    
+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.*;
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 99%
rename from server/src/main/java/com/doumee/api/system/SystemDepartmentController.java
rename to server/platform/src/main/java/com/doumee/api/system/SystemDepartmentController.java
index ba4116b..626ca3f 100644
--- a/server/src/main/java/com/doumee/api/system/SystemDepartmentController.java
+++ b/server/platform/src/main/java/com/doumee/api/system/SystemDepartmentController.java
@@ -4,8 +4,8 @@
 import com.doumee.biz.system.SystemDepartmentBiz;
 import com.doumee.core.annotation.pr.PreventRepeat;
 import com.doumee.core.annotation.trace.Trace;
-import com.doumee.core.model.ApiResponse;
 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.QuerySystemUserDTO;
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 99%
rename from server/src/main/java/com/doumee/api/system/SystemDictController.java
rename to server/platform/src/main/java/com/doumee/api/system/SystemDictController.java
index d018519..c6208a6 100644
--- a/server/src/main/java/com/doumee/api/system/SystemDictController.java
+++ b/server/platform/src/main/java/com/doumee/api/system/SystemDictController.java
@@ -4,8 +4,8 @@
 import com.doumee.biz.system.SystemDictBiz;
 import com.doumee.core.annotation.pr.PreventRepeat;
 import com.doumee.core.constants.Constants;
-import com.doumee.core.model.ApiResponse;
 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.QuerySystemDictDTO;
@@ -87,7 +87,6 @@
     public ApiResponse<PageData<SystemDictListVO>> findPage (@RequestBody PageWrap<QuerySystemDictDTO> pageWrap) {
         return ApiResponse.success(systemDictService.findPage(pageWrap));
     }
-
 
     @ApiOperation("绉戠洰鍒楄〃")
     @GetMapping("/subjectAndTypeList")
diff --git a/server/src/main/java/com/doumee/api/system/SystemDictDataController.java b/server/platform/src/main/java/com/doumee/api/system/SystemDictDataController.java
similarity index 99%
rename from server/src/main/java/com/doumee/api/system/SystemDictDataController.java
rename to server/platform/src/main/java/com/doumee/api/system/SystemDictDataController.java
index 4b431e0..152535f 100644
--- a/server/src/main/java/com/doumee/api/system/SystemDictDataController.java
+++ b/server/platform/src/main/java/com/doumee/api/system/SystemDictDataController.java
@@ -3,8 +3,8 @@
 import com.doumee.api.BaseController;
 import com.doumee.biz.system.SystemDictDataBiz;
 import com.doumee.core.annotation.pr.PreventRepeat;
-import com.doumee.core.model.ApiResponse;
 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;
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 83%
rename from server/src/main/java/com/doumee/api/system/SystemLoginLogController.java
rename to server/platform/src/main/java/com/doumee/api/system/SystemLoginLogController.java
index 7fb000f..5a5ad2d 100644
--- a/server/src/main/java/com/doumee/api/system/SystemLoginLogController.java
+++ b/server/platform/src/main/java/com/doumee/api/system/SystemLoginLogController.java
@@ -10,9 +10,12 @@
 import com.doumee.service.system.SystemLoginLogService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-import org.apache.shiro.authz.annotation.RequiresPermissions;    
+import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
 
 import javax.servlet.http.HttpServletResponse;
 
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 99%
rename from server/src/main/java/com/doumee/api/system/SystemMenuController.java
rename to server/platform/src/main/java/com/doumee/api/system/SystemMenuController.java
index 775a3b1..f8b67b7 100644
--- a/server/src/main/java/com/doumee/api/system/SystemMenuController.java
+++ b/server/platform/src/main/java/com/doumee/api/system/SystemMenuController.java
@@ -3,8 +3,8 @@
 import com.doumee.api.BaseController;
 import com.doumee.biz.system.SystemMenuBiz;
 import com.doumee.core.annotation.pr.PreventRepeat;
-import com.doumee.core.model.ApiResponse;
 import com.doumee.core.constants.OperaType;
+import com.doumee.core.model.ApiResponse;
 import com.doumee.dao.system.dto.UpdateSystemMenuSortDTO;
 import com.doumee.dao.system.model.SystemMenu;
 import com.doumee.dao.system.vo.SystemMenuListVO;
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%
rename from server/src/main/java/com/doumee/api/system/SystemMonitorController.java
rename 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 99%
rename from server/src/main/java/com/doumee/api/system/SystemPermissionController.java
rename to server/platform/src/main/java/com/doumee/api/system/SystemPermissionController.java
index 9f222c1..1705139 100644
--- a/server/src/main/java/com/doumee/api/system/SystemPermissionController.java
+++ b/server/platform/src/main/java/com/doumee/api/system/SystemPermissionController.java
@@ -4,8 +4,8 @@
 import com.doumee.biz.system.SystemPermissionBiz;
 import com.doumee.core.annotation.pr.PreventRepeat;
 import com.doumee.core.constants.Constants;
-import com.doumee.core.model.ApiResponse;
 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.QuerySystemPermissionDTO;
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 99%
rename from server/src/main/java/com/doumee/api/system/SystemPositionController.java
rename to server/platform/src/main/java/com/doumee/api/system/SystemPositionController.java
index d1b578c..368f43e 100644
--- a/server/src/main/java/com/doumee/api/system/SystemPositionController.java
+++ b/server/platform/src/main/java/com/doumee/api/system/SystemPositionController.java
@@ -5,8 +5,8 @@
 import com.doumee.core.annotation.pr.PreventRepeat;
 import com.doumee.core.annotation.trace.Trace;
 import com.doumee.core.constants.Constants;
-import com.doumee.core.model.ApiResponse;
 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.QuerySystemUserDTO;
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 99%
rename from server/src/main/java/com/doumee/api/system/SystemRoleController.java
rename to server/platform/src/main/java/com/doumee/api/system/SystemRoleController.java
index 088bc68..1f5dd21 100644
--- a/server/src/main/java/com/doumee/api/system/SystemRoleController.java
+++ b/server/platform/src/main/java/com/doumee/api/system/SystemRoleController.java
@@ -4,8 +4,8 @@
 import com.doumee.biz.system.SystemRoleBiz;
 import com.doumee.core.annotation.pr.PreventRepeat;
 import com.doumee.core.constants.Constants;
-import com.doumee.core.model.ApiResponse;
 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.CreateRoleMenuDTO;
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 86%
rename from server/src/main/java/com/doumee/api/system/SystemTraceLogController.java
rename to server/platform/src/main/java/com/doumee/api/system/SystemTraceLogController.java
index 5fdc2c1..d8670ea 100644
--- a/server/src/main/java/com/doumee/api/system/SystemTraceLogController.java
+++ b/server/platform/src/main/java/com/doumee/api/system/SystemTraceLogController.java
@@ -11,7 +11,10 @@
 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 org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
 
 import javax.servlet.http.HttpServletResponse;
 
diff --git a/server/src/main/java/com/doumee/api/system/SystemUserController.java b/server/platform/src/main/java/com/doumee/api/system/SystemUserController.java
similarity index 99%
rename from server/src/main/java/com/doumee/api/system/SystemUserController.java
rename to server/platform/src/main/java/com/doumee/api/system/SystemUserController.java
index fad5c06..5392e70 100644
--- a/server/src/main/java/com/doumee/api/system/SystemUserController.java
+++ b/server/platform/src/main/java/com/doumee/api/system/SystemUserController.java
@@ -4,8 +4,8 @@
 import com.doumee.biz.system.SystemUserBiz;
 import com.doumee.core.annotation.pr.PreventRepeat;
 import com.doumee.core.annotation.trace.Trace;
-import com.doumee.core.model.ApiResponse;
 import com.doumee.core.constants.OperaType;
+import com.doumee.core.model.ApiResponse;
 import com.doumee.core.model.LoginUserInfo;
 import com.doumee.core.model.PageData;
 import com.doumee.core.model.PageWrap;
@@ -126,4 +126,12 @@
         return ApiResponse.success(getLoginUser());
     }
 
+
+
+
+
+
+
+
+
 }
diff --git a/server/platform/src/main/java/com/doumee/config/shiro/ShiroAuthFilter.java b/server/platform/src/main/java/com/doumee/config/shiro/ShiroAuthFilter.java
new file mode 100644
index 0000000..4a70d72
--- /dev/null
+++ b/server/platform/src/main/java/com/doumee/config/shiro/ShiroAuthFilter.java
@@ -0,0 +1,27 @@
+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 {
+
+        @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/platform/src/main/java/com/doumee/config/shiro/ShiroCache.java
similarity index 95%
rename from server/src/main/java/com/doumee/config/shiro/ShiroCache.java
rename to server/platform/src/main/java/com/doumee/config/shiro/ShiroCache.java
index 4e61661..6fe6153 100644
--- a/server/src/main/java/com/doumee/config/shiro/ShiroCache.java
+++ b/server/platform/src/main/java/com/doumee/config/shiro/ShiroCache.java
@@ -29,7 +29,7 @@
 @Component
 public class ShiroCache implements Cache<Object, Serializable> {
 
-    private String keyPrefix = "";
+    private String keyPrefix = "ProSelect";
 
     @Resource(name="sessionRedisTemplate")
     private RedisTemplate<Object, Serializable> redisTemplate;
@@ -64,7 +64,11 @@
         if (key == null) {
             return null;
         }
-        redisTemplate.opsForValue().set(getKey(key), value, timeout, TimeUnit.SECONDS);
+        try {
+            redisTemplate.opsForValue().set(getKey(key), value, timeout, TimeUnit.SECONDS);
+        }catch (Exception e){
+
+        }
         return value;
     }
 
diff --git a/server/src/main/java/com/doumee/config/shiro/ShiroCacheManager.java b/server/platform/src/main/java/com/doumee/config/shiro/ShiroCacheManager.java
similarity index 100%
rename from server/src/main/java/com/doumee/config/shiro/ShiroCacheManager.java
rename to server/platform/src/main/java/com/doumee/config/shiro/ShiroCacheManager.java
diff --git a/server/src/main/java/com/doumee/config/shiro/ShiroConfig.java b/server/platform/src/main/java/com/doumee/config/shiro/ShiroConfig.java
similarity index 82%
rename from server/src/main/java/com/doumee/config/shiro/ShiroConfig.java
rename to server/platform/src/main/java/com/doumee/config/shiro/ShiroConfig.java
index c4c6cf3..fdd05c9 100644
--- a/server/src/main/java/com/doumee/config/shiro/ShiroConfig.java
+++ b/server/platform/src/main/java/com/doumee/config/shiro/ShiroConfig.java
@@ -88,19 +88,40 @@
         shiroFilterFactoryBean.setSecurityManager(securityManager);
         Map<String, String> map = new LinkedHashMap<>();
         // 璺緞鎷︽埅閰嶇疆
-        map.put("/web/user/login", "anon");
-        map.put("/public/uploadRichText", "anon");
+        // 璺緞鎷︽埅閰嶇疆
+//        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("/public/uploadPicture","anon");
+//        map.put("/public/uploadLocal","anon");
+
+        map.put("/system/dictData/companyUserRules","anon");
         map.put("/system/login", "anon");
         map.put("/system/logout", "anon");
+        map.put("/system/loginH5", "anon");
         map.put("/common/captcha", "anon");
-        //鏀捐 scratch 鎺ュ彛
-        map.put("/web/scratch/**", "anon");
+        map.put("/business/areas/*", "anon");
+        map.put("/public/uploadPicture","anon");
+        map.put("/public/uploadLocal","anon");
+
+
+//        map.put("/business/company/register", "anon");
+//        map.put("/business/labels/page","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);
diff --git a/server/src/main/java/com/doumee/config/shiro/ShiroCredentialsMatcher.java b/server/platform/src/main/java/com/doumee/config/shiro/ShiroCredentialsMatcher.java
similarity index 88%
copy from server/src/main/java/com/doumee/config/shiro/ShiroCredentialsMatcher.java
copy to server/platform/src/main/java/com/doumee/config/shiro/ShiroCredentialsMatcher.java
index 062e899..b032b8c 100644
--- a/server/src/main/java/com/doumee/config/shiro/ShiroCredentialsMatcher.java
+++ b/server/platform/src/main/java/com/doumee/config/shiro/ShiroCredentialsMatcher.java
@@ -19,7 +19,6 @@
  */
 @Component
 public class ShiroCredentialsMatcher extends HashedCredentialsMatcher {
-
     @Lazy
     @Autowired
     private SystemUserService systemUserService;
@@ -34,6 +33,12 @@
         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());
         // 姣旇緝瀵嗙爜
diff --git a/server/src/main/java/com/doumee/config/shiro/ShiroRealm.java b/server/platform/src/main/java/com/doumee/config/shiro/ShiroRealm.java
similarity index 79%
rename from server/src/main/java/com/doumee/config/shiro/ShiroRealm.java
rename to server/platform/src/main/java/com/doumee/config/shiro/ShiroRealm.java
index 0d526f3..b824008 100644
--- a/server/src/main/java/com/doumee/config/shiro/ShiroRealm.java
+++ b/server/platform/src/main/java/com/doumee/config/shiro/ShiroRealm.java
@@ -1,15 +1,17 @@
 package com.doumee.config.shiro;
 
-import com.doumee.biz.system.SystemDictDataBiz;
-import com.doumee.core.constants.Constants;
+import com.doumee.core.constants.ResponseStatus;
+import com.doumee.core.exception.BusinessException;
 import com.doumee.core.model.LoginUserInfo;
+import com.doumee.core.constants.Constants;
+import com.doumee.core.utils.DateUtil;
 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.commons.lang3.StringUtils;
 import org.apache.shiro.authc.AuthenticationException;
 import org.apache.shiro.authc.AuthenticationInfo;
 import org.apache.shiro.authc.AuthenticationToken;
@@ -22,6 +24,7 @@
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Component;
 
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -34,14 +37,14 @@
 
     @Lazy
     @Autowired
+    private SystemDataPermissionService systemDataPermissionService;
+    @Lazy
+    @Autowired
     private SystemUserService systemUserService;
 
     @Lazy
     @Autowired
     private SystemRoleService systemRoleService;
-    @Lazy
-    @Autowired
-    private SystemDictDataBiz systemDictDataBiz;
 
     @Lazy
     @Autowired
@@ -68,7 +71,7 @@
      * @date 2022/03/15 09:54
      */
     @Override
-    protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) throws AuthenticationException {
+    protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) throws AuthenticationException{
         // 鑾峰彇鐢ㄦ埛鍚�
         String username = authenticationToken.getPrincipal().toString();
         // 鏍规嵁鐢ㄦ埛鍚嶆煡璇㈢敤鎴峰璞�
@@ -76,15 +79,13 @@
         queryDto.setUsername(username);
         queryDto.setDeleted(Constants.ZERO);
         SystemUser user = systemUserService.findOne(queryDto);
-        if (user == null) {
-            return null;
+        if(user == null){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝璐﹀彿鎴栧瘑鐮佷笉姝g‘锛�");
         }
-            // 鑾峰彇鐧诲綍鐢ㄦ埛淇℃伅
-        List<SystemRole>       roles = systemRoleService.findByUserId(user.getId());
-        List<SystemPermission>     permissions = systemPermissionService.findByUserId(user.getId());
-
-        String imgPath = systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode()+systemDictDataBiz.queryByCode(Constants.FILES_DIR,Constants.AVATAR_FILE).getCode();
-        LoginUserInfo userInfo = LoginUserInfo.from(user, imgPath,roles, permissions);
+        // 鑾峰彇鐧诲綍鐢ㄦ埛淇℃伅
+        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/platform/src/main/java/com/doumee/config/shiro/ShiroSessionDAO.java
similarity index 95%
copy from server/src/main/java/com/doumee/config/shiro/ShiroSessionDAO.java
copy to server/platform/src/main/java/com/doumee/config/shiro/ShiroSessionDAO.java
index f18ace9..1fe90bf 100644
--- a/server/src/main/java/com/doumee/config/shiro/ShiroSessionDAO.java
+++ b/server/platform/src/main/java/com/doumee/config/shiro/ShiroSessionDAO.java
@@ -10,7 +10,10 @@
 import org.springframework.stereotype.Component;
 
 import java.io.Serializable;
-import java.util.*;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Set;
 
 /**
  * 鑷畾涔塖hiro SessionDAO锛屽皢浼氳瘽淇℃伅瀛樺叆缂撳瓨涓�
@@ -27,7 +30,7 @@
     @Autowired
     private ShiroCache shiroCache;
 
-    private int expireTime = 60 * 60 * 3;
+    private int expireTime = 60 * 60 * 24;
 
     @Autowired
     private ShiroTokenManager shiroTokenManager;
diff --git a/server/src/main/java/com/doumee/config/shiro/ShiroSessionManager.java b/server/platform/src/main/java/com/doumee/config/shiro/ShiroSessionManager.java
similarity index 99%
rename from server/src/main/java/com/doumee/config/shiro/ShiroSessionManager.java
rename to server/platform/src/main/java/com/doumee/config/shiro/ShiroSessionManager.java
index af19931..32b0379 100644
--- a/server/src/main/java/com/doumee/config/shiro/ShiroSessionManager.java
+++ b/server/platform/src/main/java/com/doumee/config/shiro/ShiroSessionManager.java
@@ -65,7 +65,6 @@
         }
         return sessionId;
     }
-
     @Override
     public boolean isServletContainerSessions() {
         return false;
diff --git a/server/src/main/java/com/doumee/config/shiro/ShiroSessionSerializer.java b/server/platform/src/main/java/com/doumee/config/shiro/ShiroSessionSerializer.java
similarity index 100%
rename from server/src/main/java/com/doumee/config/shiro/ShiroSessionSerializer.java
rename to server/platform/src/main/java/com/doumee/config/shiro/ShiroSessionSerializer.java
diff --git a/server/platform/src/main/java/com/doumee/config/shiro/ShiroToken.java b/server/platform/src/main/java/com/doumee/config/shiro/ShiroToken.java
new file mode 100644
index 0000000..74c09df
--- /dev/null
+++ b/server/platform/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/src/main/java/com/doumee/config/shiro/ShiroTokenManager.java b/server/platform/src/main/java/com/doumee/config/shiro/ShiroTokenManager.java
similarity index 100%
rename from server/src/main/java/com/doumee/config/shiro/ShiroTokenManager.java
rename to server/platform/src/main/java/com/doumee/config/shiro/ShiroTokenManager.java
diff --git a/server/src/main/java/com/doumee/config/swagger/SwaggerConfig.java b/server/platform/src/main/java/com/doumee/config/swagger/SwaggerConfig.java
similarity index 86%
rename from server/src/main/java/com/doumee/config/swagger/SwaggerConfig.java
rename to server/platform/src/main/java/com/doumee/config/swagger/SwaggerConfig.java
index 1a2de87..9817cda 100644
--- a/server/src/main/java/com/doumee/config/swagger/SwaggerConfig.java
+++ b/server/platform/src/main/java/com/doumee/config/swagger/SwaggerConfig.java
@@ -46,11 +46,10 @@
                 .version(version)
                 .build();
     }
-
     @Bean
     public Docket getDocket() {
         return new Docket(DocumentationType.SWAGGER_2)
-                .apiInfo(this.getApiInfo()).groupName("銆愮鐞嗙鎺ュ彛API銆�")
+                .apiInfo(this.getApiInfo()).groupName("銆愮郴缁熺鐞嗘帴鍙PI銆�")
                 .host(host)
                 .select()
                 .apis( basePackage("com.doumee.api.system;com.doumee.api.business;"))
@@ -59,19 +58,17 @@
                 .paths(PathSelectors.any())
                 .build();
     }
-
-
     @Bean
-    public Docket getDocket2() {
+    public Docket getDocket1() {
         return new Docket(DocumentationType.SWAGGER_2)
-                .apiInfo(this.getApiInfo()).groupName("銆愬叕鍏辨帴鍙PI銆�")
-                .host(host)
-                .select()
-                .apis( basePackage("com.doumee.api.common"))
-                // 璁剧疆闇�瑕佽鎵弿鐨勭被锛岃繖閲岃缃负娣诲姞浜咢Api娉ㄨВ鐨勭被
+            .apiInfo(this.getApiInfo()).groupName("銆愬叕鍏辨帴鍙PI銆�")
+            .host(host)
+            .select()
+            .apis( basePackage("com.doumee.api.common"))
+            // 璁剧疆闇�瑕佽鎵弿鐨勭被锛岃繖閲岃缃负娣诲姞浜咢Api娉ㄨВ鐨勭被
 //                .apis(RequestHandlerSelectors.withClassAnnotation(Api.class))
-                .paths(PathSelectors.any())
-                .build();
+            .paths(PathSelectors.any())
+            .build();
     }
     /**
      * 閲嶅啓basePackage鏂规硶锛屼娇鑳藉瀹炵幇澶氬寘璁块棶锛屽鍒惰创涓婂幓
diff --git a/server/src/main/java/com/doumee/config/swagger/SwaggerInterceptor.java b/server/platform/src/main/java/com/doumee/config/swagger/SwaggerInterceptor.java
similarity index 97%
rename from server/src/main/java/com/doumee/config/swagger/SwaggerInterceptor.java
rename to server/platform/src/main/java/com/doumee/config/swagger/SwaggerInterceptor.java
index b4d3259..8fd55c6 100644
--- a/server/src/main/java/com/doumee/config/swagger/SwaggerInterceptor.java
+++ b/server/platform/src/main/java/com/doumee/config/swagger/SwaggerInterceptor.java
@@ -1,4 +1,5 @@
 package com.doumee.config.swagger;
+
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Value;
@@ -12,7 +13,7 @@
 /**
  * Swagger鎷︽埅鍣�
  * @author Eva.Caesar Liu
- * @date 2022/03/15 09:54
+ * @date 2022/04/18 18:12
  */
 @Slf4j
 @Component
diff --git a/server/src/main/java/com/doumee/config/swagger/SwaggerInterceptorConfig.java b/server/platform/src/main/java/com/doumee/config/swagger/SwaggerInterceptorConfig.java
similarity index 96%
rename from server/src/main/java/com/doumee/config/swagger/SwaggerInterceptorConfig.java
rename to server/platform/src/main/java/com/doumee/config/swagger/SwaggerInterceptorConfig.java
index 7055950..ca3aa45 100644
--- a/server/src/main/java/com/doumee/config/swagger/SwaggerInterceptorConfig.java
+++ b/server/platform/src/main/java/com/doumee/config/swagger/SwaggerInterceptorConfig.java
@@ -8,14 +8,13 @@
 /**
  * Swagger鎷︽埅鍣ㄩ厤缃�
  * @author Eva.Caesar Liu
- * @date 2022/03/15 09:54
+ * @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 95%
rename from server/src/main/java/com/doumee/task/ScheduleTool.java
rename to server/platform/src/main/java/com/doumee/task/ScheduleTool.java
index f0b305e..c9873e4 100644
--- a/server/src/main/java/com/doumee/task/ScheduleTool.java
+++ b/server/platform/src/main/java/com/doumee/task/ScheduleTool.java
@@ -15,7 +15,7 @@
  */
 @Component
 @EnableScheduling
-public class ScheduleTool  {
+public class ScheduleTool {
 
 
 
diff --git a/server/src/main/resources/application.yml b/server/platform/src/main/resources/application.yml
similarity index 95%
rename from server/src/main/resources/application.yml
rename to server/platform/src/main/resources/application.yml
index 88f8e03..821f382 100644
--- a/server/src/main/resources/application.yml
+++ b/server/platform/src/main/resources/application.yml
@@ -7,7 +7,7 @@
 
 spring:
 #  application:
-#    name: tielangtou
+#    name: parkbike
   profiles:
     active: dev
   # JSON杩斿洖閰嶇疆
@@ -56,4 +56,7 @@
   # 鎸囧畾浣跨敤鐨勬暟鎹簱鏁版嵁搴�
   helperDialect: postgresql
   # reasonable锛氬垎椤靛悎鐞嗗寲鍙傛暟锛岄粯璁ゅ�间负false銆傚綋璇ュ弬鏁拌缃负 true 鏃讹紝pageNum<=0 鏃朵細鏌ヨ绗竴椤碉紝 		pageNum>pages锛堣秴杩囨�绘暟鏃讹級锛屼細鏌ヨ鏈�鍚庝竴椤点�傞粯璁alse 鏃讹紝鐩存帴鏍规嵁鍙傛暟杩涜鏌ヨ銆�
-  reasonable: true
\ No newline at end of file
+  reasonable: true
+# WEB鏈嶅姟鍣ㄩ厤缃�
+server:
+  port: 10012
diff --git a/server/pom.xml b/server/pom.xml
index ddc70e5..d8c21c1 100644
--- a/server/pom.xml
+++ b/server/pom.xml
@@ -3,13 +3,18 @@
          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>
-  <groupId>com.parkbike</groupId>
+  <groupId>com.doumee</groupId>
   <artifactId>parkbike</artifactId>
   <version>1.0.0-SNAPSHOT</version>
-  <packaging>jar</packaging>
+  <packaging>pom</packaging>
 
   <name>parkbike</name>
   <description></description>
+  <modules>
+    <module>platform</module>
+    <module>web</module>
+    <module>services</module>
+  </modules>
 
   <parent>
     <groupId>org.springframework.boot</groupId>
@@ -31,8 +36,15 @@
     <jna.version>5.7.0</jna.version>
     <poi.version>5.0.0</poi.version>
     <okhttp.version>3.14.2</okhttp.version>
+
     <!-- jwtToken -->
     <jjwt.version>0.9.1</jjwt.version>
+    <!-- hutool 宸ュ叿鐩稿叧-->
+    <hutool.version>5.5.8</hutool.version>
+    <!-- 寰俊灏忕▼搴� -->
+    <weixin-java-miniapp.version>4.1.0</weixin-java-miniapp.version>
+    <!-- 寰俊鏀粯 -->
+    <weixin-java-pay.version>4.1.0</weixin-java-pay.version>
   </properties>
 
   <dependencies>
@@ -256,6 +268,19 @@
       <artifactId>commons-net</artifactId>
       <version>3.8.0</version>
     </dependency>
+
+    <!-- WeChat 灏忕▼搴� -->
+    <dependency>
+      <groupId>com.github.binarywang</groupId>
+      <artifactId>weixin-java-miniapp</artifactId>
+      <version>${weixin-java-miniapp.version}</version>
+    </dependency>
+    <!-- WeChat 鏀粯 -->
+    <dependency>
+      <groupId>com.github.binarywang</groupId>
+      <artifactId>weixin-java-pay</artifactId>
+      <version>${weixin-java-pay.version}</version>
+    </dependency>
   </dependencies>
 
   <build>
diff --git a/server/db/award.permissions.sql b/server/services/db/award.permissions.sql
similarity index 100%
rename from server/db/award.permissions.sql
rename to server/services/db/award.permissions.sql
diff --git a/server/db/award_ext.permissions.sql b/server/services/db/award_ext.permissions.sql
similarity index 100%
rename from server/db/award_ext.permissions.sql
rename to server/services/db/award_ext.permissions.sql
diff --git a/server/db/business.action_log.permissions.sql b/server/services/db/business.action_log.permissions.sql
similarity index 100%
rename from server/db/business.action_log.permissions.sql
rename to server/services/db/business.action_log.permissions.sql
diff --git a/server/db/business.ad.permissions.sql b/server/services/db/business.ad.permissions.sql
similarity index 100%
rename from server/db/business.ad.permissions.sql
rename to server/services/db/business.ad.permissions.sql
diff --git a/server/db/business.ali_bill.permissions.sql b/server/services/db/business.ali_bill.permissions.sql
similarity index 100%
rename from server/db/business.ali_bill.permissions.sql
rename to server/services/db/business.ali_bill.permissions.sql
diff --git a/server/db/business.ali_bill_detail.permissions.sql b/server/services/db/business.ali_bill_detail.permissions.sql
similarity index 100%
rename from server/db/business.ali_bill_detail.permissions.sql
rename to server/services/db/business.ali_bill_detail.permissions.sql
diff --git a/server/db/business.award.permissions.sql b/server/services/db/business.award.permissions.sql
similarity index 100%
rename from server/db/business.award.permissions.sql
rename to server/services/db/business.award.permissions.sql
diff --git a/server/db/business.bike_repair.permissions.sql b/server/services/db/business.bike_repair.permissions.sql
similarity index 100%
rename from server/db/business.bike_repair.permissions.sql
rename to server/services/db/business.bike_repair.permissions.sql
diff --git a/server/db/business.bikes.permissions.sql b/server/services/db/business.bikes.permissions.sql
similarity index 100%
rename from server/db/business.bikes.permissions.sql
rename to server/services/db/business.bikes.permissions.sql
diff --git a/server/db/business.campus.permissions.sql b/server/services/db/business.campus.permissions.sql
similarity index 100%
rename from server/db/business.campus.permissions.sql
rename to server/services/db/business.campus.permissions.sql
diff --git a/server/db/business.category.permissions.sql b/server/services/db/business.category.permissions.sql
similarity index 100%
rename from server/db/business.category.permissions.sql
rename to server/services/db/business.category.permissions.sql
diff --git a/server/db/business.classes.permissions.sql b/server/services/db/business.classes.permissions.sql
similarity index 100%
rename from server/db/business.classes.permissions.sql
rename to server/services/db/business.classes.permissions.sql
diff --git a/server/db/business.contest.permissions.sql b/server/services/db/business.contest.permissions.sql
similarity index 100%
rename from server/db/business.contest.permissions.sql
rename to server/services/db/business.contest.permissions.sql
diff --git a/server/db/business.contest_course.permissions.sql b/server/services/db/business.contest_course.permissions.sql
similarity index 100%
rename from server/db/business.contest_course.permissions.sql
rename to server/services/db/business.contest_course.permissions.sql
diff --git a/server/db/business.course.permissions.sql b/server/services/db/business.course.permissions.sql
similarity index 100%
rename from server/db/business.course.permissions.sql
rename to server/services/db/business.course.permissions.sql
diff --git a/server/db/business.declare_done.permissions.sql b/server/services/db/business.declare_done.permissions.sql
similarity index 100%
rename from server/db/business.declare_done.permissions.sql
rename to server/services/db/business.declare_done.permissions.sql
diff --git a/server/db/business.favorite.permissions.sql b/server/services/db/business.favorite.permissions.sql
similarity index 100%
rename from server/db/business.favorite.permissions.sql
rename to server/services/db/business.favorite.permissions.sql
diff --git a/server/db/business.favorite_problem.permissions.sql b/server/services/db/business.favorite_problem.permissions.sql
similarity index 100%
rename from server/db/business.favorite_problem.permissions.sql
rename to server/services/db/business.favorite_problem.permissions.sql
diff --git a/server/db/business.holidays.permissions.sql b/server/services/db/business.holidays.permissions.sql
similarity index 100%
rename from server/db/business.holidays.permissions.sql
rename to server/services/db/business.holidays.permissions.sql
diff --git a/server/db/business.lesson.permissions.sql b/server/services/db/business.lesson.permissions.sql
similarity index 100%
rename from server/db/business.lesson.permissions.sql
rename to server/services/db/business.lesson.permissions.sql
diff --git a/server/db/business.locks.permissions.sql b/server/services/db/business.locks.permissions.sql
similarity index 100%
rename from server/db/business.locks.permissions.sql
rename to server/services/db/business.locks.permissions.sql
diff --git a/server/db/business.member.permissions.sql b/server/services/db/business.member.permissions.sql
similarity index 100%
rename from server/db/business.member.permissions.sql
rename to server/services/db/business.member.permissions.sql
diff --git a/server/db/business.member_rides.permissions.sql b/server/services/db/business.member_rides.permissions.sql
similarity index 100%
rename from server/db/business.member_rides.permissions.sql
rename to server/services/db/business.member_rides.permissions.sql
diff --git a/server/db/business.paper.permissions.sql b/server/services/db/business.paper.permissions.sql
similarity index 100%
rename from server/db/business.paper.permissions.sql
rename to server/services/db/business.paper.permissions.sql
diff --git a/server/db/business.paper_problem.permissions.sql b/server/services/db/business.paper_problem.permissions.sql
similarity index 100%
rename from server/db/business.paper_problem.permissions.sql
rename to server/services/db/business.paper_problem.permissions.sql
diff --git a/server/db/business.paper_rank.permissions.sql b/server/services/db/business.paper_rank.permissions.sql
similarity index 100%
rename from server/db/business.paper_rank.permissions.sql
rename to server/services/db/business.paper_rank.permissions.sql
diff --git a/server/db/business.pricing_detail.permissions.sql b/server/services/db/business.pricing_detail.permissions.sql
similarity index 100%
rename from server/db/business.pricing_detail.permissions.sql
rename to server/services/db/business.pricing_detail.permissions.sql
diff --git a/server/db/business.pricing_param.permissions.sql b/server/services/db/business.pricing_param.permissions.sql
similarity index 100%
rename from server/db/business.pricing_param.permissions.sql
rename to server/services/db/business.pricing_param.permissions.sql
diff --git a/server/db/business.problem.permissions.sql b/server/services/db/business.problem.permissions.sql
similarity index 100%
rename from server/db/business.problem.permissions.sql
rename to server/services/db/business.problem.permissions.sql
diff --git a/server/db/business.problem_score.permissions.sql b/server/services/db/business.problem_score.permissions.sql
similarity index 100%
rename from server/db/business.problem_score.permissions.sql
rename to server/services/db/business.problem_score.permissions.sql
diff --git a/server/db/business.problem_score_submission.permissions.sql b/server/services/db/business.problem_score_submission.permissions.sql
similarity index 100%
rename from server/db/business.problem_score_submission.permissions.sql
rename to server/services/db/business.problem_score_submission.permissions.sql
diff --git a/server/db/business.problem_tags.permissions.sql b/server/services/db/business.problem_tags.permissions.sql
similarity index 100%
rename from server/db/business.problem_tags.permissions.sql
rename to server/services/db/business.problem_tags.permissions.sql
diff --git a/server/db/business.refund.permissions.sql b/server/services/db/business.refund.permissions.sql
similarity index 100%
rename from server/db/business.refund.permissions.sql
rename to server/services/db/business.refund.permissions.sql
diff --git a/server/db/business.rent_site.permissions.sql b/server/services/db/business.rent_site.permissions.sql
similarity index 100%
rename from server/db/business.rent_site.permissions.sql
rename to server/services/db/business.rent_site.permissions.sql
diff --git a/server/db/business.sites.permissions.sql b/server/services/db/business.sites.permissions.sql
similarity index 100%
rename from server/db/business.sites.permissions.sql
rename to server/services/db/business.sites.permissions.sql
diff --git a/server/db/business.student_learn_lesson.permissions.sql b/server/services/db/business.student_learn_lesson.permissions.sql
similarity index 100%
rename from server/db/business.student_learn_lesson.permissions.sql
rename to server/services/db/business.student_learn_lesson.permissions.sql
diff --git a/server/db/business.submission.permissions.sql b/server/services/db/business.submission.permissions.sql
similarity index 100%
rename from server/db/business.submission.permissions.sql
rename to server/services/db/business.submission.permissions.sql
diff --git a/server/db/business.teacher_have_lesson.permissions.sql b/server/services/db/business.teacher_have_lesson.permissions.sql
similarity index 100%
rename from server/db/business.teacher_have_lesson.permissions.sql
rename to server/services/db/business.teacher_have_lesson.permissions.sql
diff --git a/server/db/business.transactions.permissions.sql b/server/services/db/business.transactions.permissions.sql
similarity index 100%
rename from server/db/business.transactions.permissions.sql
rename to server/services/db/business.transactions.permissions.sql
diff --git a/server/db/business.user.permissions.sql b/server/services/db/business.user.permissions.sql
similarity index 100%
rename from server/db/business.user.permissions.sql
rename to server/services/db/business.user.permissions.sql
diff --git a/server/db/business.user_choose_class.permissions.sql b/server/services/db/business.user_choose_class.permissions.sql
similarity index 100%
rename from server/db/business.user_choose_class.permissions.sql
rename to server/services/db/business.user_choose_class.permissions.sql
diff --git a/server/db/business.user_contest.permissions.sql b/server/services/db/business.user_contest.permissions.sql
similarity index 100%
rename from server/db/business.user_contest.permissions.sql
rename to server/services/db/business.user_contest.permissions.sql
diff --git a/server/db/business.user_integral.permissions.sql b/server/services/db/business.user_integral.permissions.sql
similarity index 100%
rename from server/db/business.user_integral.permissions.sql
rename to server/services/db/business.user_integral.permissions.sql
diff --git a/server/db/business.wx_bill.permissions.sql b/server/services/db/business.wx_bill.permissions.sql
similarity index 100%
rename from server/db/business.wx_bill.permissions.sql
rename to server/services/db/business.wx_bill.permissions.sql
diff --git a/server/db/business.wx_bill_detail.permissions.sql b/server/services/db/business.wx_bill_detail.permissions.sql
similarity index 100%
rename from server/db/business.wx_bill_detail.permissions.sql
rename to server/services/db/business.wx_bill_detail.permissions.sql
diff --git a/server/db/campus.permissions.sql b/server/services/db/campus.permissions.sql
similarity index 100%
rename from server/db/campus.permissions.sql
rename to server/services/db/campus.permissions.sql
diff --git a/server/db/category.permissions.sql b/server/services/db/category.permissions.sql
similarity index 100%
rename from server/db/category.permissions.sql
rename to server/services/db/category.permissions.sql
diff --git a/server/db/class.permissions.sql b/server/services/db/class.permissions.sql
similarity index 100%
rename from server/db/class.permissions.sql
rename to server/services/db/class.permissions.sql
diff --git a/server/db/classes.permissions.sql b/server/services/db/classes.permissions.sql
similarity index 100%
rename from server/db/classes.permissions.sql
rename to server/services/db/classes.permissions.sql
diff --git a/server/db/classes_ext.permissions.sql b/server/services/db/classes_ext.permissions.sql
similarity index 100%
rename from server/db/classes_ext.permissions.sql
rename to server/services/db/classes_ext.permissions.sql
diff --git a/server/db/contest.permissions.sql b/server/services/db/contest.permissions.sql
similarity index 100%
rename from server/db/contest.permissions.sql
rename to server/services/db/contest.permissions.sql
diff --git a/server/db/contest_course.permissions.sql b/server/services/db/contest_course.permissions.sql
similarity index 100%
rename from server/db/contest_course.permissions.sql
rename to server/services/db/contest_course.permissions.sql
diff --git a/server/db/course.permissions.sql b/server/services/db/course.permissions.sql
similarity index 100%
rename from server/db/course.permissions.sql
rename to server/services/db/course.permissions.sql
diff --git a/server/db/ext.award_ext.permissions.sql b/server/services/db/ext.award_ext.permissions.sql
similarity index 100%
rename from server/db/ext.award_ext.permissions.sql
rename to server/services/db/ext.award_ext.permissions.sql
diff --git a/server/db/ext.campus_ext.permissions.sql b/server/services/db/ext.campus_ext.permissions.sql
similarity index 100%
rename from server/db/ext.campus_ext.permissions.sql
rename to server/services/db/ext.campus_ext.permissions.sql
diff --git a/server/db/ext.category_ext.permissions.sql b/server/services/db/ext.category_ext.permissions.sql
similarity index 100%
rename from server/db/ext.category_ext.permissions.sql
rename to server/services/db/ext.category_ext.permissions.sql
diff --git a/server/db/ext.classes_ext.permissions.sql b/server/services/db/ext.classes_ext.permissions.sql
similarity index 100%
rename from server/db/ext.classes_ext.permissions.sql
rename to server/services/db/ext.classes_ext.permissions.sql
diff --git a/server/db/ext.contest_course_ext.permissions.sql b/server/services/db/ext.contest_course_ext.permissions.sql
similarity index 100%
rename from server/db/ext.contest_course_ext.permissions.sql
rename to server/services/db/ext.contest_course_ext.permissions.sql
diff --git a/server/db/ext.contest_ext.permissions.sql b/server/services/db/ext.contest_ext.permissions.sql
similarity index 100%
rename from server/db/ext.contest_ext.permissions.sql
rename to server/services/db/ext.contest_ext.permissions.sql
diff --git a/server/db/ext.course_ext.permissions.sql b/server/services/db/ext.course_ext.permissions.sql
similarity index 100%
rename from server/db/ext.course_ext.permissions.sql
rename to server/services/db/ext.course_ext.permissions.sql
diff --git a/server/db/ext.favorite_ext.permissions.sql b/server/services/db/ext.favorite_ext.permissions.sql
similarity index 100%
rename from server/db/ext.favorite_ext.permissions.sql
rename to server/services/db/ext.favorite_ext.permissions.sql
diff --git a/server/db/ext.favorite_problem_ext.permissions.sql b/server/services/db/ext.favorite_problem_ext.permissions.sql
similarity index 100%
rename from server/db/ext.favorite_problem_ext.permissions.sql
rename to server/services/db/ext.favorite_problem_ext.permissions.sql
diff --git a/server/db/ext.lesson_ext.permissions.sql b/server/services/db/ext.lesson_ext.permissions.sql
similarity index 100%
rename from server/db/ext.lesson_ext.permissions.sql
rename to server/services/db/ext.lesson_ext.permissions.sql
diff --git a/server/db/ext.paper_ext.permissions.sql b/server/services/db/ext.paper_ext.permissions.sql
similarity index 100%
rename from server/db/ext.paper_ext.permissions.sql
rename to server/services/db/ext.paper_ext.permissions.sql
diff --git a/server/db/ext.paper_problem_ext.permissions.sql b/server/services/db/ext.paper_problem_ext.permissions.sql
similarity index 100%
rename from server/db/ext.paper_problem_ext.permissions.sql
rename to server/services/db/ext.paper_problem_ext.permissions.sql
diff --git a/server/db/ext.paper_rank_ext.permissions.sql b/server/services/db/ext.paper_rank_ext.permissions.sql
similarity index 100%
rename from server/db/ext.paper_rank_ext.permissions.sql
rename to server/services/db/ext.paper_rank_ext.permissions.sql
diff --git a/server/db/ext.problem_ext.permissions.sql b/server/services/db/ext.problem_ext.permissions.sql
similarity index 100%
rename from server/db/ext.problem_ext.permissions.sql
rename to server/services/db/ext.problem_ext.permissions.sql
diff --git a/server/db/ext.problem_score_ext.permissions.sql b/server/services/db/ext.problem_score_ext.permissions.sql
similarity index 100%
rename from server/db/ext.problem_score_ext.permissions.sql
rename to server/services/db/ext.problem_score_ext.permissions.sql
diff --git a/server/db/ext.problem_score_submission_ext.permissions.sql b/server/services/db/ext.problem_score_submission_ext.permissions.sql
similarity index 100%
rename from server/db/ext.problem_score_submission_ext.permissions.sql
rename to server/services/db/ext.problem_score_submission_ext.permissions.sql
diff --git a/server/db/ext.problem_tags_ext.permissions.sql b/server/services/db/ext.problem_tags_ext.permissions.sql
similarity index 100%
rename from server/db/ext.problem_tags_ext.permissions.sql
rename to server/services/db/ext.problem_tags_ext.permissions.sql
diff --git a/server/db/ext.student_learn_lesson_ext.permissions.sql b/server/services/db/ext.student_learn_lesson_ext.permissions.sql
similarity index 100%
rename from server/db/ext.student_learn_lesson_ext.permissions.sql
rename to server/services/db/ext.student_learn_lesson_ext.permissions.sql
diff --git a/server/db/ext.submission_ext.permissions.sql b/server/services/db/ext.submission_ext.permissions.sql
similarity index 100%
rename from server/db/ext.submission_ext.permissions.sql
rename to server/services/db/ext.submission_ext.permissions.sql
diff --git a/server/db/ext.teacher_have_lesson_ext.permissions.sql b/server/services/db/ext.teacher_have_lesson_ext.permissions.sql
similarity index 100%
rename from server/db/ext.teacher_have_lesson_ext.permissions.sql
rename to server/services/db/ext.teacher_have_lesson_ext.permissions.sql
diff --git a/server/db/ext.user_choose_class_ext.permissions.sql b/server/services/db/ext.user_choose_class_ext.permissions.sql
similarity index 100%
rename from server/db/ext.user_choose_class_ext.permissions.sql
rename to server/services/db/ext.user_choose_class_ext.permissions.sql
diff --git a/server/db/ext.user_contest_ext.permissions.sql b/server/services/db/ext.user_contest_ext.permissions.sql
similarity index 100%
rename from server/db/ext.user_contest_ext.permissions.sql
rename to server/services/db/ext.user_contest_ext.permissions.sql
diff --git a/server/db/ext.user_integral_ext.permissions.sql b/server/services/db/ext.user_integral_ext.permissions.sql
similarity index 100%
rename from server/db/ext.user_integral_ext.permissions.sql
rename to server/services/db/ext.user_integral_ext.permissions.sql
diff --git a/server/db/favorite.permissions.sql b/server/services/db/favorite.permissions.sql
similarity index 100%
rename from server/db/favorite.permissions.sql
rename to server/services/db/favorite.permissions.sql
diff --git a/server/db/favorite_problem.permissions.sql b/server/services/db/favorite_problem.permissions.sql
similarity index 100%
rename from server/db/favorite_problem.permissions.sql
rename to server/services/db/favorite_problem.permissions.sql
diff --git a/server/db/lesson.permissions.sql b/server/services/db/lesson.permissions.sql
similarity index 100%
rename from server/db/lesson.permissions.sql
rename to server/services/db/lesson.permissions.sql
diff --git a/server/db/paper.permissions.sql b/server/services/db/paper.permissions.sql
similarity index 100%
rename from server/db/paper.permissions.sql
rename to server/services/db/paper.permissions.sql
diff --git a/server/db/paper_problem.permissions.sql b/server/services/db/paper_problem.permissions.sql
similarity index 100%
rename from server/db/paper_problem.permissions.sql
rename to server/services/db/paper_problem.permissions.sql
diff --git a/server/db/paper_rank.permissions.sql b/server/services/db/paper_rank.permissions.sql
similarity index 100%
rename from server/db/paper_rank.permissions.sql
rename to server/services/db/paper_rank.permissions.sql
diff --git a/server/db/problem.permissions.sql b/server/services/db/problem.permissions.sql
similarity index 100%
rename from server/db/problem.permissions.sql
rename to server/services/db/problem.permissions.sql
diff --git a/server/db/problem_ext.permissions.sql b/server/services/db/problem_ext.permissions.sql
similarity index 100%
rename from server/db/problem_ext.permissions.sql
rename to server/services/db/problem_ext.permissions.sql
diff --git a/server/db/problem_score.permissions.sql b/server/services/db/problem_score.permissions.sql
similarity index 100%
rename from server/db/problem_score.permissions.sql
rename to server/services/db/problem_score.permissions.sql
diff --git a/server/db/problem_score_submission.permissions.sql b/server/services/db/problem_score_submission.permissions.sql
similarity index 100%
rename from server/db/problem_score_submission.permissions.sql
rename to server/services/db/problem_score_submission.permissions.sql
diff --git a/server/db/problem_tags.permissions.sql b/server/services/db/problem_tags.permissions.sql
similarity index 100%
rename from server/db/problem_tags.permissions.sql
rename to server/services/db/problem_tags.permissions.sql
diff --git a/server/db/student_learn_lesson.permissions.sql b/server/services/db/student_learn_lesson.permissions.sql
similarity index 100%
rename from server/db/student_learn_lesson.permissions.sql
rename to server/services/db/student_learn_lesson.permissions.sql
diff --git a/server/db/submission.permissions.sql b/server/services/db/submission.permissions.sql
similarity index 100%
rename from server/db/submission.permissions.sql
rename to server/services/db/submission.permissions.sql
diff --git a/server/db/system.system_user.permissions.sql b/server/services/db/system.system_user.permissions.sql
similarity index 100%
rename from server/db/system.system_user.permissions.sql
rename to server/services/db/system.system_user.permissions.sql
diff --git a/server/db/teacher_have_lesson.permissions.sql b/server/services/db/teacher_have_lesson.permissions.sql
similarity index 100%
rename from server/db/teacher_have_lesson.permissions.sql
rename to server/services/db/teacher_have_lesson.permissions.sql
diff --git a/server/db/transactions.permissions.sql b/server/services/db/transactions.permissions.sql
similarity index 100%
rename from server/db/transactions.permissions.sql
rename to server/services/db/transactions.permissions.sql
diff --git a/server/db/user.permissions.sql b/server/services/db/user.permissions.sql
similarity index 100%
rename from server/db/user.permissions.sql
rename to server/services/db/user.permissions.sql
diff --git a/server/db/user_choose_class.permissions.sql b/server/services/db/user_choose_class.permissions.sql
similarity index 100%
rename from server/db/user_choose_class.permissions.sql
rename to server/services/db/user_choose_class.permissions.sql
diff --git a/server/db/user_contest.permissions.sql b/server/services/db/user_contest.permissions.sql
similarity index 100%
rename from server/db/user_contest.permissions.sql
rename to server/services/db/user_contest.permissions.sql
diff --git a/server/db/user_integral.permissions.sql b/server/services/db/user_integral.permissions.sql
similarity index 100%
rename from server/db/user_integral.permissions.sql
rename to server/services/db/user_integral.permissions.sql
diff --git a/server/doc/init.sql b/server/services/doc/init.sql
similarity index 100%
rename from server/doc/init.sql
rename to server/services/doc/init.sql
diff --git a/server/services/pom.xml b/server/services/pom.xml
new file mode 100644
index 0000000..21d05af
--- /dev/null
+++ b/server/services/pom.xml
@@ -0,0 +1,17 @@
+<?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>
+
+    <groupId>com.doumee</groupId>
+    <artifactId>services</artifactId>
+    <version>1.0-SNAPSHOT</version>
+
+    <parent>
+        <groupId>com.doumee</groupId>
+        <artifactId>parkbike</artifactId>
+        <version>1.0.0-SNAPSHOT</version>
+    </parent>
+
+</project>
\ No newline at end of file
diff --git a/server/services/src/main/java/com/doumee/Main.java b/server/services/src/main/java/com/doumee/Main.java
new file mode 100644
index 0000000..ada0d0d
--- /dev/null
+++ b/server/services/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/biz/system/SystemDataPermissionBiz.java b/server/services/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/services/src/main/java/com/doumee/biz/system/SystemDataPermissionBiz.java
diff --git a/server/src/main/java/com/doumee/biz/system/SystemDepartmentBiz.java b/server/services/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/services/src/main/java/com/doumee/biz/system/SystemDepartmentBiz.java
diff --git a/server/src/main/java/com/doumee/biz/system/SystemDictBiz.java b/server/services/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/services/src/main/java/com/doumee/biz/system/SystemDictBiz.java
diff --git a/server/src/main/java/com/doumee/biz/system/SystemDictDataBiz.java b/server/services/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/services/src/main/java/com/doumee/biz/system/SystemDictDataBiz.java
diff --git a/server/src/main/java/com/doumee/biz/system/SystemMenuBiz.java b/server/services/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/services/src/main/java/com/doumee/biz/system/SystemMenuBiz.java
diff --git a/server/src/main/java/com/doumee/biz/system/SystemPermissionBiz.java b/server/services/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/services/src/main/java/com/doumee/biz/system/SystemPermissionBiz.java
diff --git a/server/src/main/java/com/doumee/biz/system/SystemPositionBiz.java b/server/services/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/services/src/main/java/com/doumee/biz/system/SystemPositionBiz.java
diff --git a/server/src/main/java/com/doumee/biz/system/SystemRoleBiz.java b/server/services/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/services/src/main/java/com/doumee/biz/system/SystemRoleBiz.java
diff --git a/server/src/main/java/com/doumee/biz/system/SystemUserBiz.java b/server/services/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/services/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/services/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/services/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/services/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/services/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/services/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/services/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/services/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/services/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/services/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/services/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/services/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/services/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/services/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/services/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/services/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/services/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/services/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/services/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/services/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/services/src/main/java/com/doumee/config/handler/GlobalExceptionHandler.java
diff --git a/server/src/main/java/com/doumee/config/mybatis/MyBatisInterceptor.java b/server/services/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/services/src/main/java/com/doumee/config/mybatis/MyBatisInterceptor.java
diff --git a/server/src/main/java/com/doumee/config/mybatis/MyBatisPlusConfig.java b/server/services/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/services/src/main/java/com/doumee/config/mybatis/MyBatisPlusConfig.java
diff --git a/server/services/src/main/java/com/doumee/config/mybatis/SpringUtils.java b/server/services/src/main/java/com/doumee/config/mybatis/SpringUtils.java
new file mode 100644
index 0000000..f813d05
--- /dev/null
+++ b/server/services/src/main/java/com/doumee/config/mybatis/SpringUtils.java
@@ -0,0 +1,69 @@
+package com.doumee.config.mybatis;
+
+import org.springframework.beans.BeansException;
+import org.springframework.beans.factory.config.BeanDefinition;
+import org.springframework.beans.factory.support.BeanDefinitionBuilder;
+import org.springframework.beans.factory.support.BeanDefinitionRegistry;
+import org.springframework.beans.factory.support.DefaultListableBeanFactory;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.ApplicationContextAware;
+import org.springframework.stereotype.Component;
+
+/**
+ * NOTICE: NEVER USE IT WHEN REGISTERING A SPRING BEAN.
+ *
+ * @author Guang YANG
+ */
+@Component
+public class SpringUtils implements ApplicationContextAware {
+
+    private static ApplicationContext CTX;
+
+    public static ApplicationContext get() {
+        return CTX;
+    }
+
+    @Override
+    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
+        CTX = applicationContext;
+    }
+
+    /**
+     * 鍚戝鍣ㄤ腑鍔ㄦ�佹坊鍔燘ean
+     *
+     * @param ctx
+     * @param beanName
+     * @param beanClass
+     */
+    public static void addBean(ApplicationContext ctx, String beanName, Class beanClass) {
+        BeanDefinitionRegistry beanDefReg = (DefaultListableBeanFactory)ctx.getAutowireCapableBeanFactory();
+        BeanDefinitionBuilder beanDefBuilder = BeanDefinitionBuilder.genericBeanDefinition(beanClass);
+        BeanDefinition beanDef = beanDefBuilder.getBeanDefinition();
+        if (!beanDefReg.containsBeanDefinition(beanName)) {
+            beanDefReg.registerBeanDefinition(beanName, beanDef);
+        }
+    }
+
+    /**
+     * 浠庡鍣ㄤ腑绉婚櫎Bean
+     *
+     * @param ctx
+     * @param beanName
+     */
+   public static void removeBean(ApplicationContext ctx, String beanName) {
+        BeanDefinitionRegistry beanDefReg = (DefaultListableBeanFactory) ctx.getAutowireCapableBeanFactory();
+        beanDefReg.getBeanDefinition(beanName);
+        beanDefReg.removeBeanDefinition(beanName);
+    }
+
+    /**
+     * 閬嶅巻杈撳嚭鎵�鏈塀ean鐨勪俊鎭�
+     */
+    static void showAllBeans(ApplicationContext ctx) {
+        //閬嶅巻
+        for (String name : ctx.getBeanDefinitionNames()) {
+            System.out.println("name:" + name + ",class:" + ctx.getBean(name).getClass());
+        }
+    }
+
+}
diff --git a/server/src/main/java/com/doumee/config/redis/RedisConfig.java b/server/services/src/main/java/com/doumee/config/redis/RedisConfig.java
similarity index 100%
rename from server/src/main/java/com/doumee/config/redis/RedisConfig.java
rename to server/services/src/main/java/com/doumee/config/redis/RedisConfig.java
diff --git a/server/src/main/java/com/doumee/config/redis/RedisValueDefaultSerializer.java b/server/services/src/main/java/com/doumee/config/redis/RedisValueDefaultSerializer.java
similarity index 100%
rename from server/src/main/java/com/doumee/config/redis/RedisValueDefaultSerializer.java
rename to server/services/src/main/java/com/doumee/config/redis/RedisValueDefaultSerializer.java
diff --git a/server/services/src/main/java/com/doumee/core/Jwt/JwtPayLoad.java b/server/services/src/main/java/com/doumee/core/Jwt/JwtPayLoad.java
new file mode 100644
index 0000000..6201c02
--- /dev/null
+++ b/server/services/src/main/java/com/doumee/core/Jwt/JwtPayLoad.java
@@ -0,0 +1,63 @@
+package com.doumee.core.Jwt;
+
+import io.swagger.models.auth.In;
+import lombok.Data;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * jwt鐨勭浜岄儴鍒�
+ *
+ * @author fengshuonan
+ * @Date 2019/7/20 20:45
+ */
+@Data
+public class JwtPayLoad {
+
+    /**
+     * 鐢ㄦ埛id
+     */
+    private Integer memberId;
+    private long expire;
+
+
+    public JwtPayLoad() {
+    }
+
+    public JwtPayLoad(Integer memberId) {
+        this.memberId = memberId;
+    }
+
+    /**
+     * payload杞寲涓簃ap褰㈠紡
+     *
+     * @author fengshuonan
+     * @Date 2019/7/20 20:50
+     */
+    public Map<String, Object> toMap() {
+        HashMap<String, Object> map = new HashMap<>();
+        map.put("memberId", this.memberId);
+        return map;
+    }
+
+    /**
+     * payload杞寲涓簃ap褰㈠紡
+     *
+     * @author fengshuonan
+     * @Date 2019/7/20 20:50
+     */
+    public static JwtPayLoad toBean(Map<String, Object> map) {
+        if (map == null || map.size() == 0) {
+            return new JwtPayLoad();
+        } else {
+            JwtPayLoad jwtPayLoad = new JwtPayLoad();
+            jwtPayLoad.setMemberId((Integer) map.get("memberId"));
+
+            return jwtPayLoad;
+        }
+    }
+
+
+
+}
diff --git a/server/services/src/main/java/com/doumee/core/Jwt/JwtTokenUtil.java b/server/services/src/main/java/com/doumee/core/Jwt/JwtTokenUtil.java
new file mode 100644
index 0000000..3b1c474
--- /dev/null
+++ b/server/services/src/main/java/com/doumee/core/Jwt/JwtTokenUtil.java
@@ -0,0 +1,176 @@
+/**
+ * Copyright 2018-2020 stylefeng & fengshuonan (sn93@qq.com)
+ * <p>
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * <p>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p>
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.doumee.core.Jwt;
+
+
+import io.jsonwebtoken.*;
+import org.apache.commons.lang3.StringUtils;
+
+import java.util.Date;
+import java.util.Map;
+
+/**
+ * <p>鍚庡彴绯荤粺jwt token宸ュ叿绫�</p>
+ * <pre>
+ *     jwt鐨刢laim閲屼竴鑸寘鍚互涓嬪嚑绉嶆暟鎹�:
+ *         1. iss -- token鐨勫彂琛岃��
+ *         2. sub -- 璇WT鎵�闈㈠悜鐨勭敤鎴�
+ *         3. aud -- 鎺ユ敹璇WT鐨勪竴鏂�
+ *         4. exp -- token鐨勫け鏁堟椂闂�
+ *         5. nbf -- 鍦ㄦ鏃堕棿娈典箣鍓�,涓嶄細琚鐞�
+ *         6. iat -- jwt鍙戝竷鏃堕棿
+ *         7. jti -- jwt鍞竴鏍囪瘑,闃叉閲嶅浣跨敤
+ * </pre>
+ *
+ * @author fengshuonan
+ * @Date 2017/8/25 10:59
+ */
+public class JwtTokenUtil {
+    //Header 鍚嶇О
+    public static final String HEADER_KEY = "token";
+    //鍙栧�煎悕绉�
+    public static final String UserId_Name = "AppUserId";
+    //鍔犲瘑瀵嗛挜
+    private final static String jwtSecret = "MhAjU9poLf8ko54K25XBDtonaL33vtt1";
+    //杩囨湡鏃堕棿(s) 86400L=1澶� 604800L=7澶�
+    private static final long expire = 86400L;
+
+    /**
+     * 鐢熸垚token,鏍规嵁userId鍜岄粯璁よ繃鏈熸椂闂�
+     */
+    public static String generateToken(JwtPayLoad jwtPayLoad) {
+        Long expiredSeconds = getExpireSeconds();
+        final Date expirationDate = new Date(System.currentTimeMillis() + expiredSeconds * 1000);
+        return generateToken(jwtPayLoad.getMemberId(), expirationDate, jwtPayLoad.toMap());
+    }
+
+    /**
+     * 楠岃瘉token鏄惁澶辨晥
+     */
+    public static Boolean isTokenExpired(String token) {
+        try {
+            final Date expiration = getExpirationDateFromToken(token);
+            return expiration.before(new Date());
+        } catch (ExpiredJwtException expiredJwtException) {
+            return true;
+        }
+    }
+
+    /**
+     * 鐢熸垚token,鏍规嵁userId鍜岄粯璁よ繃鏈熸椂闂�
+     */
+    public static String generateTokenOld(JwtPayLoad jwtPayLoad) {
+        Long expiredSeconds = getExpireSeconds();
+        final Date expirationDate = new Date(System.currentTimeMillis() + expiredSeconds * 1000);
+        return generateToken(jwtPayLoad.getMemberId(), expirationDate, jwtPayLoad.toMap());
+    }
+
+    /**
+     * 鑾峰彇jwt鐨刾ayload閮ㄥ垎
+     */
+    public static JwtPayLoad getJwtPayLoad(String token) {
+        Claims claimFromToken = getClaimFromToken(token);
+        return JwtPayLoad.toBean(claimFromToken);
+    }
+
+    /**
+     * 瑙f瀽token鏄惁姝g‘(true-姝g‘, false-閿欒)
+     */
+    public static Boolean checkToken(String token) {
+        try {
+            String jwtSecret = getJwtSecret();
+            Jwts.parser().setSigningKey(jwtSecret).parseClaimsJws(token).getBody();
+            return true;
+        } catch (JwtException e) {
+            return false;
+        }
+    }
+
+    /**
+     * 楠岃瘉token鏄惁澶辨晥
+     */
+    public static Boolean isTokenExpiredOld(String token) {
+        try {
+            final Date expiration = getExpirationDateFromToken(token);
+            return expiration.before(new Date());
+        } catch (ExpiredJwtException expiredJwtException) {
+            return true;
+        }
+    }
+
+    // 浠巘oken涓幏鍙栫敤鎴稩D
+    public static String getUserId(String token){
+        return getClaimFromToken(token).getSubject();
+    }
+
+    /**
+     * 鑾峰彇jwt澶辨晥鏃堕棿
+     */
+    public static Date getExpirationDateFromToken(String token) {
+        return getClaimFromToken(token).getExpiration();
+    }
+
+    /**
+     * 鐢熸垚token,鏍规嵁userId鍜岃繃鏈熸椂闂�
+     */
+    public static String generateToken(Integer userId, Date exppiredDate, Map<String, Object> claims) {
+
+        final Date createdDate = new Date();
+        String secret = getJwtSecret();
+
+        if (claims == null) {
+            return Jwts.builder()
+                    .setSubject(userId.toString())
+                    .setIssuedAt(createdDate)
+                    .setExpiration(exppiredDate)
+                    .signWith(SignatureAlgorithm.HS512, secret)
+                    .compact();
+        } else {
+            return Jwts.builder()
+                    .setClaims(claims)
+                    .setSubject(userId.toString())
+                    .setIssuedAt(createdDate)
+                    .setExpiration(exppiredDate)
+                    .signWith(SignatureAlgorithm.HS512, secret)
+                    .compact();
+        }
+    }
+
+    /**
+     * 鑾峰彇jwt鐨刾ayload閮ㄥ垎
+     */
+    public static Claims getClaimFromToken(String token) {
+        if (StringUtils.isBlank(token)) {
+            throw new IllegalArgumentException("token鍙傛暟涓虹┖锛�");
+        }
+        String jwtSecret = getJwtSecret();
+        return Jwts.parser().setSigningKey(jwtSecret).parseClaimsJws(token).getBody();
+    }
+
+    /**
+     * 鑾峰彇绯荤粺鍦板瘑閽�
+     */
+    private static String getJwtSecret() {
+        return jwtSecret;
+    }
+
+    /**
+     * 鑾峰彇绯荤粺鍦板瘑閽ヨ繃鏈熸椂闂达紙鍗曚綅锛氱锛�
+     */
+    private static Long getExpireSeconds() {
+        return expire;
+    }
+}
\ No newline at end of file
diff --git a/server/services/src/main/java/com/doumee/core/Jwt/WebMvcConfig.java b/server/services/src/main/java/com/doumee/core/Jwt/WebMvcConfig.java
new file mode 100644
index 0000000..f84ca05
--- /dev/null
+++ b/server/services/src/main/java/com/doumee/core/Jwt/WebMvcConfig.java
@@ -0,0 +1,111 @@
+package com.doumee.core.Jwt;
+
+import com.doumee.core.annotation.LoginRequired;
+import com.doumee.core.constants.Constants;
+import com.doumee.core.constants.ResponseStatus;
+import com.doumee.core.exception.BusinessException;
+import io.jsonwebtoken.JwtException;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.web.client.RestTemplate;
+import org.springframework.web.method.HandlerMethod;
+import org.springframework.web.servlet.HandlerInterceptor;
+import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.lang.reflect.Method;
+
+@Configuration
+public class WebMvcConfig implements WebMvcConfigurer {
+
+
+    @Autowired
+    private JdbcTemplate dao;
+
+    /**
+     * 娣诲姞鎷︽埅鍣�
+     */
+    @Override
+    public void addInterceptors(InterceptorRegistry registry) {
+        //API鎺ュ彛JwtToken鎷︽埅鍣�
+        HandlerInterceptor TokenInterceptor = new HandlerInterceptor() {
+            @Override
+            public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
+                // 濡傛灉涓嶆槸鏄犲皠鍒版柟娉曠洿鎺ラ�氳繃
+                if (!(handler instanceof HandlerMethod)) {
+                    return true;
+                }
+                HandlerMethod handlerMethod = (HandlerMethod) handler;
+
+                Class<?> beanType = handlerMethod.getBeanType();
+
+//                Method method = handlerMethod.getMethod();
+
+                // 鏈� @LoginRequired 娉ㄨВ锛岄渶瑕佺櫥褰曡璇�
+                if (beanType.isAnnotationPresent(LoginRequired.class)) {
+                    //鑾峰彇token
+                    String token = request.getHeader(JwtTokenUtil.HEADER_KEY);  // 浠� http 璇锋眰澶翠腑鍙栧嚭 token
+                    if (StringUtils.isNotBlank(token)) {
+                        checkLogin(request,response);
+                    } else {
+                        throw new BusinessException(ResponseStatus.BE_OVERDUE.getCode(),"鏈櫥褰�");
+                    }
+                }else if (handlerMethod.hasMethodAnnotation(LoginRequired.class)){
+                    //鑾峰彇token
+                    String token = request.getHeader(JwtTokenUtil.HEADER_KEY);  // 浠� http 璇锋眰澶翠腑鍙栧嚭 token
+                    if (StringUtils.isNotBlank(token)) {
+                        checkLogin(request,response);
+                    } else {
+                        throw new BusinessException(ResponseStatus.BE_OVERDUE.getCode(),"鏈櫥褰�");
+                    }
+                }
+                return true;
+            }
+        };
+        registry.addInterceptor(TokenInterceptor).addPathPatterns("/web/**");
+    }
+
+
+
+    public Boolean checkLogin(HttpServletRequest request, HttpServletResponse response){
+        String token = request.getHeader(JwtTokenUtil.HEADER_KEY);
+        try {
+            //鍒ゆ柇Token鏄惁瓒呮椂
+            boolean expiration = JwtTokenUtil.isTokenExpired(token);
+            if (expiration) {
+                throw new BusinessException(ResponseStatus.TOKEN_EXCEED_TIME.getCode(),"闀挎椂闂存湭鎿嶄綔,璇烽噸鏂扮櫥褰�");
+            }
+            //鑾峰彇璐﹀彿ID
+            Integer memberId = JwtTokenUtil.getJwtPayLoad(token).getMemberId();
+            Integer isDeleted = dao.queryForObject(" select COALESCE(ISDELETED,1)  from `member` where id  = ?", Integer.class, memberId);
+            if(isDeleted== Constants.ONE){
+                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鐢ㄦ埛宸插垹闄�,璇疯仈绯荤鐞嗗憳");
+            }
+            Integer isForbidden = dao.queryForObject(" select COALESCE(STATUS,1)  from `member` where id  = ?", Integer.class, memberId);
+            if(isForbidden== Constants.ONE){
+                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鐢ㄦ埛宸茬鐢�,璇疯仈绯荤鐞嗗憳");
+            }
+            Integer count = dao.queryForObject("select count(1) from `member` where id  = ?", Integer.class, memberId);
+            if (count != null && count > 0) {
+                request.setAttribute(JwtTokenUtil.UserId_Name, memberId);
+                return true;
+            }else{
+                throw new BusinessException(ResponseStatus.BE_OVERDUE.getCode(),"鐢ㄦ埛淇℃伅鍑洪敊");
+            }
+        } catch (IllegalArgumentException | JwtException e) {
+            throw new BusinessException(ResponseStatus.BE_OVERDUE.getCode(),"鏈櫥褰�");
+        }
+    }
+
+    @Bean
+    public RestTemplate getRestTemplate(){
+        return new RestTemplate();
+    }
+
+
+}
diff --git a/server/services/src/main/java/com/doumee/core/annotation/LoginRequired.java b/server/services/src/main/java/com/doumee/core/annotation/LoginRequired.java
new file mode 100644
index 0000000..e406b69
--- /dev/null
+++ b/server/services/src/main/java/com/doumee/core/annotation/LoginRequired.java
@@ -0,0 +1,12 @@
+package com.doumee.core.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Target({ElementType.METHOD,ElementType.TYPE})
+@Retention(RetentionPolicy.RUNTIME)
+public @interface LoginRequired {
+
+}
diff --git a/server/src/main/java/com/doumee/core/annotation/excel/ExcelColumn.java b/server/services/src/main/java/com/doumee/core/annotation/excel/ExcelColumn.java
similarity index 90%
rename from server/src/main/java/com/doumee/core/annotation/excel/ExcelColumn.java
rename to server/services/src/main/java/com/doumee/core/annotation/excel/ExcelColumn.java
index 532cd35..b649597 100644
--- a/server/src/main/java/com/doumee/core/annotation/excel/ExcelColumn.java
+++ b/server/services/src/main/java/com/doumee/core/annotation/excel/ExcelColumn.java
@@ -48,22 +48,22 @@
     /**
      * 瀛椾綋棰滆壊
      */
-    IndexedColors color () default IndexedColors.BLACK;
+    IndexedColors color() default IndexedColors.BLACK;
 
     /**
      * 瀛椾綋澶у皬锛堝儚绱狅級
      */
-    short fontSize () default 12;
+    short fontSize() default 12;
 
     /**
      * 绮椾綋
      */
-    boolean bold () default false;
+    boolean bold() default false;
 
     /**
      * 鏂滀綋
      */
-    boolean italic () default false;
+    boolean italic() default false;
 
     /**
      * 鍊兼槧灏勶紝濡�0=濂�;1=鐢�
diff --git a/server/src/main/java/com/doumee/core/annotation/excel/ExcelDataHandlerAdapter.java b/server/services/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/services/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/services/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/services/src/main/java/com/doumee/core/annotation/excel/ExcelExporter.java
diff --git a/server/src/main/java/com/doumee/core/annotation/pr/PreventRepeat.java b/server/services/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/services/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/services/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/services/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/services/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/services/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/services/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/services/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/services/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/services/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/services/src/main/java/com/doumee/core/annotation/trace/Trace.java
similarity index 94%
rename from server/src/main/java/com/doumee/core/annotation/trace/Trace.java
rename to server/services/src/main/java/com/doumee/core/annotation/trace/Trace.java
index 96fc39f..420fe45 100644
--- a/server/src/main/java/com/doumee/core/annotation/trace/Trace.java
+++ b/server/services/src/main/java/com/doumee/core/annotation/trace/Trace.java
@@ -40,5 +40,5 @@
     /**
      * 鏄惁璁板綍璇锋眰缁撴灉
      */
-    boolean withRequestResult () default true;
+    boolean withRequestResult() default true;
 }
diff --git a/server/src/main/java/com/doumee/core/annotation/trace/TraceInterceptor.java b/server/services/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/services/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/services/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/services/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/services/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/services/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/services/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/services/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/services/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/services/src/main/java/com/doumee/core/aware/DataPermissionAware.java
diff --git a/server/src/main/java/com/doumee/core/aware/DataPermissionMapping.java b/server/services/src/main/java/com/doumee/core/aware/DataPermissionMapping.java
similarity index 92%
rename from server/src/main/java/com/doumee/core/aware/DataPermissionMapping.java
rename to server/services/src/main/java/com/doumee/core/aware/DataPermissionMapping.java
index c4412f0..ac96224 100644
--- a/server/src/main/java/com/doumee/core/aware/DataPermissionMapping.java
+++ b/server/services/src/main/java/com/doumee/core/aware/DataPermissionMapping.java
@@ -32,5 +32,5 @@
     /**
      * 娉ㄥ叆鑷畾涔夋暟鎹弬鏁�
      */
-    boolean injectCustomData () default false;
+    boolean injectCustomData() default false;
 }
diff --git a/server/src/main/java/com/doumee/core/aware/DefaultDataPermissionAware.java b/server/services/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/services/src/main/java/com/doumee/core/aware/DefaultDataPermissionAware.java
diff --git a/server/src/main/java/com/doumee/core/cache/LocalCache.java b/server/services/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/services/src/main/java/com/doumee/core/cache/LocalCache.java
diff --git a/server/src/main/java/com/doumee/core/constants/Constants.java b/server/services/src/main/java/com/doumee/core/constants/Constants.java
similarity index 97%
rename from server/src/main/java/com/doumee/core/constants/Constants.java
rename to server/services/src/main/java/com/doumee/core/constants/Constants.java
index f4ad81a..11b1dc1 100644
--- a/server/src/main/java/com/doumee/core/constants/Constants.java
+++ b/server/services/src/main/java/com/doumee/core/constants/Constants.java
@@ -22,7 +22,10 @@
   public static final String TRUE = "t";
   public static final String FALSE = "f";
   public static final String TOKEN ="TOKEN" ;
-  public static String REDIS_DEBUG_STR="test_";
+    public static final String SYSTEM ="SYSTEM" ;
+    public static final String IMG_DIR = "IMG_DIR";
+    public static final String FILE_DIR ="FILE_DIR" ;
+    public static String REDIS_DEBUG_STR="test_";
 
   /**
    * 鏁版嵁鏉冮檺鑼冨洿锛�0鍙湅鑷繁锛�1鍙湅鑷繁鎵�鍦ㄦ牎鍖猴紱2鐪嬪叏閮ㄦ牎鍖猴紱3鐪嬫寚瀹氭牎鍖猴紙澶氶�夛級
diff --git a/server/src/main/java/com/doumee/core/constants/DataPermissionConstants.java b/server/services/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/services/src/main/java/com/doumee/core/constants/DataPermissionConstants.java
diff --git a/server/src/main/java/com/doumee/core/constants/ExceptionLevel.java b/server/services/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/services/src/main/java/com/doumee/core/constants/ExceptionLevel.java
diff --git a/server/src/main/java/com/doumee/core/constants/OperaType.java b/server/services/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/services/src/main/java/com/doumee/core/constants/OperaType.java
diff --git a/server/src/main/java/com/doumee/core/constants/ResponseStatus.java b/server/services/src/main/java/com/doumee/core/constants/ResponseStatus.java
similarity index 92%
rename from server/src/main/java/com/doumee/core/constants/ResponseStatus.java
rename to server/services/src/main/java/com/doumee/core/constants/ResponseStatus.java
index a128d59..1f5270c 100644
--- a/server/src/main/java/com/doumee/core/constants/ResponseStatus.java
+++ b/server/services/src/main/java/com/doumee/core/constants/ResponseStatus.java
@@ -1,5 +1,6 @@
 package com.doumee.core.constants;
 
+import javafx.scene.input.KeyCodeCombination;
 import lombok.AllArgsConstructor;
 import lombok.Getter;
 
@@ -27,6 +28,7 @@
     MASSIVE_REQUEST(5101, "璇锋眰杩囦簬棰戠箒锛岃5绉掑悗閲嶈瘯锛�"),
     NOT_ALLOWED(5110, "涓嶅厑璁哥殑鎿嶄綔"),
     BE_OVERDUE(5112, "鏈櫥褰�"),
+    TOKEN_EXCEED_TIME(5113, "鐧婚檰宸茶繃鏈�"),
     ;
 
     private int code;
diff --git a/server/src/main/java/com/doumee/core/exception/BusinessException.java b/server/services/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/services/src/main/java/com/doumee/core/exception/BusinessException.java
diff --git a/server/src/main/java/com/doumee/core/exception/UnSafeSessionException.java b/server/services/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/services/src/main/java/com/doumee/core/exception/UnSafeSessionException.java
diff --git a/server/src/main/java/com/doumee/core/filter/DoumeeFilter.java b/server/services/src/main/java/com/doumee/core/filter/DoumeeFilter.java
similarity index 100%
rename from server/src/main/java/com/doumee/core/filter/DoumeeFilter.java
rename to server/services/src/main/java/com/doumee/core/filter/DoumeeFilter.java
diff --git a/server/src/main/java/com/doumee/core/model/ApiResponse.java b/server/services/src/main/java/com/doumee/core/model/ApiResponse.java
similarity index 98%
rename from server/src/main/java/com/doumee/core/model/ApiResponse.java
rename to server/services/src/main/java/com/doumee/core/model/ApiResponse.java
index 3aab985..53278c1 100644
--- a/server/src/main/java/com/doumee/core/model/ApiResponse.java
+++ b/server/services/src/main/java/com/doumee/core/model/ApiResponse.java
@@ -2,6 +2,7 @@
 
 import com.alibaba.fastjson.JSONObject;
 import com.doumee.core.constants.ResponseStatus;
+import com.doumee.dao.business.web.response.AccountResponse;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.AllArgsConstructor;
diff --git a/server/src/main/java/com/doumee/core/model/LoginUserInfo.java b/server/services/src/main/java/com/doumee/core/model/LoginUserInfo.java
similarity index 91%
rename from server/src/main/java/com/doumee/core/model/LoginUserInfo.java
rename to server/services/src/main/java/com/doumee/core/model/LoginUserInfo.java
index c648cdb..463d292 100644
--- a/server/src/main/java/com/doumee/core/model/LoginUserInfo.java
+++ b/server/services/src/main/java/com/doumee/core/model/LoginUserInfo.java
@@ -48,14 +48,13 @@
 
     private List<String> permissions;
 
-    public static LoginUserInfo from(SystemUser user,String imgPath, List<SystemRole> roles, List<SystemPermission> permissions) {
+    public static LoginUserInfo from(SystemUser user, List<SystemRole> roles, List<SystemPermission> permissions) {
         if (user == null) {
             return null;
         }
         // 鎷疯礉鐢ㄦ埛淇℃伅
         LoginUserInfo loginUserInfo = new LoginUserInfo();
         BeanUtils.copyProperties(user, loginUserInfo);
-        loginUserInfo.setAvatar(Constants.formatImgPath(loginUserInfo.getAvatar(),imgPath));
         loginUserInfo.setLast_login(DateUtil.getPlusTime2(user.getLastLogin()));
         loginUserInfo.setReal_name(user.getRealname());
         loginUserInfo.setStatus(user.getStatus());
diff --git a/server/src/main/java/com/doumee/core/model/PageData.java b/server/services/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/services/src/main/java/com/doumee/core/model/PageData.java
diff --git a/server/src/main/java/com/doumee/core/model/PageWrap.java b/server/services/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/services/src/main/java/com/doumee/core/model/PageWrap.java
diff --git a/server/src/main/java/com/doumee/core/model/api/WebLoginUserInfo.java b/server/services/src/main/java/com/doumee/core/model/api/WebLoginUserInfo.java
similarity index 100%
rename from server/src/main/java/com/doumee/core/model/api/WebLoginUserInfo.java
rename to server/services/src/main/java/com/doumee/core/model/api/WebLoginUserInfo.java
diff --git a/server/src/main/java/com/doumee/core/servlet/ServletDuplicateInputStream.java b/server/services/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/services/src/main/java/com/doumee/core/servlet/ServletDuplicateInputStream.java
diff --git a/server/src/main/java/com/doumee/core/servlet/ServletDuplicateOutputStream.java b/server/services/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/services/src/main/java/com/doumee/core/servlet/ServletDuplicateOutputStream.java
diff --git a/server/src/main/java/com/doumee/core/servlet/ServletDuplicateRequestWrapper.java b/server/services/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/services/src/main/java/com/doumee/core/servlet/ServletDuplicateRequestWrapper.java
diff --git a/server/src/main/java/com/doumee/core/servlet/ServletDuplicateResponseWrapper.java b/server/services/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/services/src/main/java/com/doumee/core/servlet/ServletDuplicateResponseWrapper.java
diff --git a/server/src/main/java/com/doumee/core/servlet/ServletRewriteFilter.java b/server/services/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/services/src/main/java/com/doumee/core/servlet/ServletRewriteFilter.java
diff --git a/server/src/main/java/com/doumee/core/utils/Base64Util.java b/server/services/src/main/java/com/doumee/core/utils/Base64Util.java
similarity index 100%
rename from server/src/main/java/com/doumee/core/utils/Base64Util.java
rename to server/services/src/main/java/com/doumee/core/utils/Base64Util.java
diff --git a/server/src/main/java/com/doumee/core/utils/CompressUtil.java b/server/services/src/main/java/com/doumee/core/utils/CompressUtil.java
similarity index 100%
rename from server/src/main/java/com/doumee/core/utils/CompressUtil.java
rename to server/services/src/main/java/com/doumee/core/utils/CompressUtil.java
diff --git a/server/src/main/java/com/doumee/core/utils/Date.java b/server/services/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/services/src/main/java/com/doumee/core/utils/Date.java
diff --git a/server/src/main/java/com/doumee/core/utils/DateUtil.java b/server/services/src/main/java/com/doumee/core/utils/DateUtil.java
similarity index 91%
rename from server/src/main/java/com/doumee/core/utils/DateUtil.java
rename to server/services/src/main/java/com/doumee/core/utils/DateUtil.java
index f6961c0..f96e181 100644
--- a/server/src/main/java/com/doumee/core/utils/DateUtil.java
+++ b/server/services/src/main/java/com/doumee/core/utils/DateUtil.java
@@ -40,12 +40,12 @@
     public DateUtil() {
     }
 
-    public static java.util.Date StringToDate2(String DATE) {
+    public static Date StringToDate2(String DATE) {
         if(StringUtils.isBlank(DATE)){
             return null;
         }
         DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-        java.util.Date dt1 = null;
+        Date dt1 = null;
         try {
             dt1 = df.parse(DATE);
         } catch (Exception exception) {
@@ -60,7 +60,7 @@
      * @return String
      * @throws Exception
      */
-    public static String getDateLong(java.util.Date date) {
+    public static String getDateLong(Date date) {
         String nowDate = "";
         try {
             if (date != null)
@@ -72,7 +72,7 @@
         }
     }
 
-    public static String getDateLongSlash(java.util.Date date) {
+    public static String getDateLongSlash(Date date) {
         String nowDate = "";
         try {
             if (date != null)
@@ -93,7 +93,7 @@
      *            鏍煎紡涓簓yyy-MM-dd
      * @return int
      */
-    public static long getBetweenHours(java.util.Date fromDate, java.util.Date toDate) {
+    public static long getBetweenHours(Date fromDate, Date toDate) {
         long m_intervalday = 0;// 鍒濆鍖栨椂闂撮棿闅旂殑鍊间负0
         // 浣跨敤鐨勬椂闂存牸寮忎负yyyy-MM-dd
         try {
@@ -112,7 +112,7 @@
      * @return String
      * @throws Exception
      */
-    public static String getDateShortPoint(java.util.Date date) {
+    public static String getDateShortPoint(Date date) {
         String nowDate = "";
         try {
             if (date != null)
@@ -124,7 +124,7 @@
         }
     }
 
-    public static int getDateNum(java.util.Date date) {
+    public static int getDateNum(Date date) {
         Calendar calendar = Calendar.getInstance();
         calendar.setTime(date);
         try {
@@ -141,7 +141,7 @@
      * @return String
      * @throws Exception
      */
-    public static String getDateLongCn(java.util.Date date) {
+    public static String getDateLongCn(Date date) {
         String nowDate = "";
         try {
             if (date != null)
@@ -158,7 +158,7 @@
      * @return String
      * @throws Exception
      */
-    public static String getDateMD(java.util.Date date) {
+    public static String getDateMD(Date date) {
         String nowDate = "";
         try {
             if (date != null)
@@ -176,7 +176,7 @@
      * @return String
      * @throws Exception
      */
-    public static String getDateShortLongTimeCn(java.util.Date date) {
+    public static String getDateShortLongTimeCn(Date date) {
         String nowDate = "";
         try {
             if (date != null)
@@ -194,7 +194,7 @@
      * @return String
      * @throws Exception
      */
-    public static String getDateUS(java.util.Date date) {
+    public static String getDateUS(Date date) {
         String nowDate = "";
         try {
             if (date != null)
@@ -212,7 +212,7 @@
      * @return String
      * @throws Exception
      */
-    public static String getDateUSShort(java.util.Date date) {
+    public static String getDateUSShort(Date date) {
         String nowDate = "";
         try {
             if (date != null)
@@ -231,12 +231,12 @@
      * @param format
      * @return String
      */
-    public static String getFomartDate(java.util.Date date, String format) {
+    public static String getFomartDate(Date date, String format) {
         try {
             return new SimpleDateFormat(format, Locale.UK).format(date);
         } catch (Exception e) {
             e.printStackTrace();
-            return (date == null) ? new java.util.Date().toString() : date.toString();
+            return (date == null) ? new Date().toString() : date.toString();
         }
     }
 
@@ -250,7 +250,7 @@
         String nowTime = "";
         try {
             java.sql.Date date = null;
-            date = new java.sql.Date(new java.util.Date().getTime());
+            date = new java.sql.Date(new Date().getTime());
             nowTime = sdfLongTime.format(date);
             return nowTime;
         } catch (Exception e) {
@@ -264,7 +264,7 @@
      * @return String
      * @throws Exception
      */
-    public static String getHourMinute(java.util.Date date) throws Exception {
+    public static String getHourMinute(Date date) throws Exception {
         String nowTime = "";
         try {
             if (date != null) {
@@ -286,7 +286,7 @@
         String nowDate = "";
         try {
             java.sql.Date date = null;
-            date = new java.sql.Date(new java.util.Date().getTime());
+            date = new java.sql.Date(new Date().getTime());
             nowDate = sdfShort.format(date);
             return nowDate;
         } catch (Exception e) {
@@ -304,7 +304,7 @@
         String nowDate = "";
         try {
             java.sql.Date date = null;
-            date = new java.sql.Date(new java.util.Date().getTime());
+            date = new java.sql.Date(new Date().getTime());
             nowDate = sdfLong.format(date);
             return nowDate;
         } catch (Exception e) {
@@ -322,7 +322,7 @@
         String nowDate = "";
         try {
             java.sql.Date date = null;
-            date = new java.sql.Date(new java.util.Date().getTime());
+            date = new java.sql.Date(new Date().getTime());
             nowDate = sdfLongTimePlus.format(date);
             return nowDate;
         } catch (Exception e) {
@@ -336,7 +336,7 @@
      * @return String
      * @throws Exception
      */
-    public static String getPlusTime(java.util.Date date) throws Exception {
+    public static String getPlusTime(Date date) throws Exception {
         if (date == null)
             return null;
         try {
@@ -353,7 +353,7 @@
      * @return String
      * @throws Exception
      */
-    public static String getPlusTime2(java.util.Date date) {
+    public static String getPlusTime2(Date date) {
 
         if (date == null)
             return "";
@@ -376,7 +376,7 @@
         String nowDate = "";
         try {
             java.sql.Date date = null;
-            date = new java.sql.Date(new java.util.Date().getTime());
+            date = new java.sql.Date(new Date().getTime());
             nowDate = sdfLongTimePlusMill.format(date);
             return nowDate;
         } catch (Exception e) {
@@ -488,7 +488,7 @@
      * @return String
      * @throws Exception
      */
-    public static String getPlusTimeSecond(java.util.Date date) throws Exception {
+    public static String getPlusTimeSecond(Date date) throws Exception {
         if (date == null)
             return null;
         try {
@@ -538,7 +538,7 @@
      *            鏃ユ湡
      * @return yyyy鏍煎紡鐨勫勾浠�
      */
-    public static int convertDateToYear(java.util.Date date) {
+    public static int convertDateToYear(Date date) {
         SimpleDateFormat df = new SimpleDateFormat("yyyy", new DateFormatSymbols());
         return Integer.parseInt(df.format(date));
     }
@@ -550,7 +550,7 @@
      *            鏃ユ湡
      * @return yyyyMM鏍煎紡鐨勫勾鏈堝瓧绗︿覆
      */
-    public static String convertDateToYearMonth(java.util.Date d) {
+    public static String convertDateToYearMonth(Date d) {
         SimpleDateFormat df = new SimpleDateFormat("yyyyMM", new DateFormatSymbols());
         return df.format(d);
     }
@@ -562,7 +562,7 @@
      *            鏃ユ湡
      * @return yyyyMMdd鏍煎紡鐨勫勾鏈堟棩瀛楃涓�
      */
-    public static String convertDateToYearMonthDay(java.util.Date d) {
+    public static String convertDateToYearMonthDay(Date d) {
         SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd", new DateFormatSymbols());
         return df.format(d);
     }
@@ -574,7 +574,7 @@
      *            鏃ユ湡
      * @return yyyy鏍煎紡鐨勫勾浠�
      */
-    public static String convertDateToMonth(java.util.Date d) {
+    public static String convertDateToMonth(Date d) {
         SimpleDateFormat df = new SimpleDateFormat("MM", new DateFormatSymbols());
         return df.format(d);
     }
@@ -585,7 +585,7 @@
      *            鏃ユ湡
      * @return yyyy鏍煎紡鐨勫勾浠�
      */
-    public static String convertDateToDay(java.util.Date d) {
+    public static String convertDateToDay(Date d) {
         SimpleDateFormat df = new SimpleDateFormat("dd", new DateFormatSymbols());
         return df.format(d);
     }
@@ -596,7 +596,7 @@
      *            鏃ユ湡
      * @return HH鏍煎紡鐨勫皬鏃�
      */
-    public static String convertDateToHour(java.util.Date d) {
+    public static String convertDateToHour(Date d) {
         SimpleDateFormat df = new SimpleDateFormat("HH", new DateFormatSymbols());
         return df.format(d);
     }
@@ -608,7 +608,7 @@
      *            鏃ユ湡
      * @return mm鏍煎紡鐨勫垎閽�
      */
-    public static String convertDateToMinute(java.util.Date d) {
+    public static String convertDateToMinute(Date d) {
         SimpleDateFormat df = new SimpleDateFormat("mm", new DateFormatSymbols());
         return df.format(d);
     }
@@ -618,11 +618,11 @@
      *
      * @return 褰撳墠鏃ユ湡锛宩ava.util.Date绫诲瀷
      */
-    public static java.util.Date getCurrentDate() {
+    public static Date getCurrentDate() {
         Calendar cal = Calendar.getInstance();
 
         // String currentDate = null;
-        java.util.Date d = cal.getTime();
+        Date d = cal.getTime();
 
         return d;
     }
@@ -632,11 +632,11 @@
      *
      * @return 褰撳墠鏃ユ湡锛宩ava.util.Date绫诲瀷
      */
-    public static java.util.Date getCurrentDateDelay() {
+    public static Date getCurrentDateDelay() {
         Calendar cal = Calendar.getInstance();
         cal.add(Calendar.SECOND, 1);
         // String currentDate = null;
-        java.util.Date d = cal.getTime();
+        Date d = cal.getTime();
 
         return d;
     }
@@ -862,7 +862,7 @@
      * @return 杞崲寰楀埌鐨勬棩鏈�
      */
     @SuppressWarnings("unchecked")
-    public static java.util.Date stringToDate(String strDate, String oracleFormat) {
+    public static Date stringToDate(String strDate, String oracleFormat) {
         if (strDate == null)
             return null;
         Hashtable<Integer, String> h = new Hashtable<Integer, String>();
@@ -941,7 +941,7 @@
         }
         SimpleDateFormat df = new SimpleDateFormat(javaFormat);
 
-        java.util.Date myDate = new java.util.Date();
+        Date myDate = new Date();
         try {
             myDate = df.parse(strDate);
         } catch (Exception e) {
@@ -952,9 +952,9 @@
         return myDate;
     }
 
-    public static java.util.Date StringToDate(String DATE1) {
+    public static Date StringToDate(String DATE1) {
         DateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
-        java.util.Date dt1 = null;
+        Date dt1 = null;
         try {
             dt1 = df.parse(DATE1);
         } catch (Exception exception) {
@@ -972,7 +972,7 @@
      *            - 鎸囧畾鏃ユ湡鏍煎紡锛屾牸寮忕殑鍐欐硶涓篛racle鏍煎紡
      * @return 鎸夋寚瀹氱殑鏃ユ湡鏍煎紡杞崲鍚庣殑鏃ユ湡瀛楃涓�
      */
-    public static String dateToString(java.util.Date d, String format) {
+    public static String dateToString(Date d, String format) {
         if (d == null)
             return "";
         Hashtable<Integer, String> h = new Hashtable<Integer, String>();
@@ -1063,7 +1063,7 @@
      *            - 鎸囧畾鏃ユ湡鏍煎紡锛屾牸寮忕殑鍐欐硶涓篛racle鏍煎紡
      * @return 鎸夋寚瀹氱殑鏃ユ湡鏍煎紡杞崲鍚庣殑鏃ユ湡瀛楃涓�
      */
-    public static String getDate(java.util.Date d, String format) {
+    public static String getDate(Date d, String format) {
         if (d == null)
             return "";
         Hashtable<Integer, String> h = new Hashtable<Integer, String>();
@@ -1227,7 +1227,7 @@
      *            灏忕殑鏃ユ湡
      * @return newDate-oldDate鐩稿樊鐨勫ぉ鏁�
      */
-    public static int daysBetweenDates(java.util.Date newDate, java.util.Date oldDate) {
+    public static int daysBetweenDates(Date newDate, Date oldDate) {
         long days = 0;
         try {
             long nDay = 0;
@@ -1250,7 +1250,7 @@
         return (int) days;
     }
 
-    public static int daysBetweenDates11(java.util.Date newDate, java.util.Date oldDate) {
+    public static int daysBetweenDates11(Date newDate, Date oldDate) {
         int days = 0;
         Calendar calo = Calendar.getInstance();
         Calendar caln = Calendar.getInstance();
@@ -1281,7 +1281,7 @@
      *            鐩稿樊鐨勫ぉ鏁�
      * @return date鍔犱笂intBetween澶╁悗鐨勬棩鏈�
      */
-    public static java.util.Date getDateBetween(java.util.Date date, int intBetween) {
+    public static Date getDateBetween(Date date, int intBetween) {
         Calendar calo = Calendar.getInstance();
         calo.setTime(date);
         calo.add(Calendar.DATE, intBetween);
@@ -1299,8 +1299,8 @@
      *            杩斿洖鏃ユ湡鐨勬牸寮�
      * @return date鍔犱笂intBetween澶╁悗鐨勬棩鏈�
      */
-    public static String getDateBetween_String(java.util.Date date, int intBetween, String strFromat) {
-        java.util.Date dateOld = getDateBetween(date, intBetween);
+    public static String getDateBetween_String(Date date, int intBetween, String strFromat) {
+        Date dateOld = getDateBetween(date, intBetween);
         return getDate(dateOld, strFromat);
     }
 
@@ -1461,7 +1461,7 @@
      *            鏃ユ湡
      * @return 鏍煎紡鍖栧悗鐨勫瓧绗︿覆
      */
-    public static String getOracleFormatDateStr(java.util.Date date) {
+    public static String getOracleFormatDateStr(Date date) {
         return getDate(date, "YYYY-MM-DD HH24:MI:SS");
     }
 
@@ -1590,7 +1590,7 @@
      *            骞存湀绫诲瀷鐨勫瓧绗︿覆
      * @return String
      */
-    public static String getYear(java.util.Date date) {
+    public static String getYear(Date date) {
         if (null == date)
         {
             return "";
@@ -1664,7 +1664,7 @@
      *            澧炲姞鐨勬湀浠�
      * @return date 鍔犱笂intBetween鏈堟暟鍚庣殑鏃ユ湡
      */
-    public static java.util.Date increaseMonth(java.util.Date date, int intBetween) {
+    public static Date increaseMonth(Date date, int intBetween) {
         Calendar calo = Calendar.getInstance();
         calo.setTime(date);
         calo.add(Calendar.MONTH, intBetween);
@@ -1680,7 +1680,7 @@
      *            澧炲姞鐨勫ぉ鏁�
      * @return date 鍔犱笂intBetween澶╂暟鍚庣殑鏃ユ湡
      */
-    public static java.util.Date increaseDay(java.util.Date date, int intBetween) {
+    public static Date increaseDay(Date date, int intBetween) {
         if (date == null) {
             return null;
         }
@@ -1699,7 +1699,7 @@
      *            澧炲姞鐨勫勾鏁�
      * @return date鍔犱笂intBetween骞存暟鍚庣殑鏃ユ湡
      */
-    public static java.util.Date increaseYear(java.util.Date date, int intBetween) {
+    public static Date increaseYear(Date date, int intBetween) {
         Calendar calo = Calendar.getInstance();
         calo.setTime(date);
         calo.add(Calendar.YEAR, intBetween);
@@ -1718,7 +1718,7 @@
      */
     public static int compareDate(String str1, String str2) {
         SimpleDateFormat formatter = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
-        java.util.Date date1 = null, date2 = null;
+        Date date1 = null, date2 = null;
         try {
             date1 = formatter.parse(str1);
             date2 = formatter.parse(str2);
@@ -1738,7 +1738,7 @@
      * @return int negative integer, zero, or a positive integer as str1 is less
      *         than, equal to, or greater than str2
      */
-    public static int compareDate(java.util.Date date1, java.util.Date date2) {
+    public static int compareDate(Date date1, Date date2) {
         if (date1 == null && date2 == null) {
             return 0;
         }
@@ -1752,7 +1752,7 @@
         return date2.compareTo(date1);
     }
 
-    public static int compare_date(java.util.Date dt1, java.util.Date dt2, java.util.Date dtime) {
+    public static int compare_date(Date dt1, Date dt2, Date dtime) {
         try {
             if (dtime.compareTo(dt1) >= 0 && dt2.compareTo(dtime) >= 0) {
                 return 1;
@@ -1765,14 +1765,14 @@
         return 0;
     }
 
-    public static int compareDate(String str1, java.util.Date date2) {
-        java.util.Date date1 = getDateByString(str1);
+    public static int compareDate(String str1, Date date2) {
+        Date date1 = getDateByString(str1);
         return date1.compareTo(date2);
     }
 
-    public static int compareDate(String format, String str1, java.util.Date date2) {
+    public static int compareDate(String format, String str1, Date date2) {
 
-        java.util.Date date1 = null;
+        Date date1 = null;
         try {
             date1 = fromStringToDate(format, str1);
         } catch (ParseException e) {
@@ -1830,7 +1830,7 @@
      * @return String 鏍煎紡鍖栫殑鏃ユ湡瀛楃涓�
      */
     public static String getToday() {
-        java.util.Date cDate = new java.util.Date();
+        Date cDate = new Date();
         SimpleDateFormat cSimpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
         return cSimpleDateFormat.format(cDate);
     }
@@ -1841,7 +1841,7 @@
      * @return String 鏍煎紡鍖栫殑鏃ユ湡瀛楃涓�
      */
     public static String getYesterday() {
-        java.util.Date cDate = new java.util.Date();
+        Date cDate = new Date();
         cDate.setTime(cDate.getTime() - 24 * 3600 * 1000);
         SimpleDateFormat cSimpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
         return cSimpleDateFormat.format(cDate);
@@ -1853,7 +1853,7 @@
      * @return String 鏍煎紡鍖栫殑鏃ユ湡瀛楃涓�
      */
     public static String getTomorrow() {
-        java.util.Date cDate = new java.util.Date();
+        Date cDate = new Date();
         cDate.setTime(cDate.getTime() + 24 * 3600 * 1000);
         SimpleDateFormat cSimpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
         return cSimpleDateFormat.format(cDate);
@@ -2114,7 +2114,7 @@
         return szTime;
     }
 
-    public static String getFormattedDateUtil(java.util.Date dtDate, String strFormatTo) {
+    public static String getFormattedDateUtil(Date dtDate, String strFormatTo) {
         if (dtDate == null) {
             return "";
         }
@@ -2142,8 +2142,8 @@
         // 浣跨敤鐨勬椂闂存牸寮忎负yyyy-MM-dd
         SimpleDateFormat m_simpledateformat = new SimpleDateFormat("yyyy-MM-dd");
         try {
-            java.util.Date fromDate = m_simpledateformat.parse(strFromDate);
-            java.util.Date toDate = m_simpledateformat.parse(strToDate);
+            Date fromDate = m_simpledateformat.parse(strFromDate);
+            Date toDate = m_simpledateformat.parse(strToDate);
             m_intervalday = toDate.getTime() - fromDate.getTime();// 璁$畻鎵�寰椾负寰鏁�
             m_intervalday = m_intervalday / 1000 / 60 / 60 / 24;// 璁$畻鎵�寰楃殑澶╂暟
 
@@ -2222,13 +2222,13 @@
      * before midnight. If a null day is passed in, a new Date is created.
      * midnight (00m 00h 00s)
      */
-    public static java.util.Date getEndOfDay(java.util.Date day) {
+    public static Date getEndOfDay(Date day) {
         return getEndOfDay(day, Calendar.getInstance());
     }
 
-    public static java.util.Date getEndOfDay(java.util.Date day, Calendar cal) {
+    public static Date getEndOfDay(Date day, Calendar cal) {
         if (day == null)
-            day = new java.util.Date();
+            day = new Date();
         cal.setTime(day);
         cal.set(Calendar.HOUR_OF_DAY, cal.getMaximum(Calendar.HOUR_OF_DAY));
         cal.set(Calendar.MINUTE, cal.getMaximum(Calendar.MINUTE));
@@ -2243,7 +2243,7 @@
      * after midnight. If a null day is passed in, a new Date is created.
      * midnight (00m 00h 00s)
      */
-    public static java.util.Date getStartOfDay(java.util.Date day) {
+    public static Date getStartOfDay(Date day) {
         return getStartOfDay(day, Calendar.getInstance());
     }
 
@@ -2252,9 +2252,9 @@
      * after midnight. If a null day is passed in, a new Date is created.
      * midnight (00m 00h 00s)
      */
-    public static java.util.Date getStartOfDay(java.util.Date day, Calendar cal) {
+    public static Date getStartOfDay(Date day, Calendar cal) {
         if (day == null)
-            day = new java.util.Date();
+            day = new Date();
         cal.setTime(day);
         cal.set(Calendar.HOUR_OF_DAY, cal.getMinimum(Calendar.HOUR_OF_DAY));
         cal.set(Calendar.MINUTE, cal.getMinimum(Calendar.MINUTE));
@@ -2268,10 +2268,10 @@
      * the day. If a null day is passed in, a new Date is created. nnoon (00m
      * 12h 00s)
      */
-    public static java.util.Date getNoonOfDay(java.util.Date day, Calendar cal) {
+    public static Date getNoonOfDay(Date day, Calendar cal) {
         if (day == null)
         {
-            day = new java.util.Date();
+            day = new Date();
         }
         cal.setTime(day);
         cal.set(Calendar.HOUR_OF_DAY, 12);
@@ -2288,9 +2288,9 @@
      *            String 鏃ユ湡瀛楃涓�
      * @return java.util.Date 鏃ユ湡瀵硅薄
      */
-    public static java.util.Date getDateFromString(String strDate) {
+    public static Date getDateFromString(String strDate) {
         if (StringUtils.isEmpty(strDate)) {
-            return new java.util.Date(System.currentTimeMillis());
+            return new Date(System.currentTimeMillis());
         }
         try {
             return sdfLongTimePlus.parse(strDate);
@@ -2300,7 +2300,7 @@
     }
 
     // -----------------------------------------------------------------------
-    public static java.util.Date parseFromFormats(String aValue) {
+    public static Date parseFromFormats(String aValue) {
         if (StringUtils.isEmpty(aValue))
             return null;
 
@@ -2310,7 +2310,7 @@
             return null;
 
         // iterate over the array and parse
-        java.util.Date myDate = null;
+        Date myDate = null;
         for (int i = 0; i < formats.length; i++) {
             try {
                 myDate = DateUtil.parse(aValue, formats[i]);
@@ -2333,7 +2333,7 @@
         }
 
         // call the regular Date formatter
-        java.util.Date myDate = DateUtil.parseFromFormats(aValue);
+        Date myDate = DateUtil.parseFromFormats(aValue);
         if (myDate != null)
         {
             return new Timestamp(myDate.getTime());
@@ -2355,7 +2355,7 @@
      * the passed-in format. Returns an empty string if the date or the format
      * is null.
      **/
-    public static String format(java.util.Date aDate, SimpleDateFormat aFormat) {
+    public static String format(Date aDate, SimpleDateFormat aFormat) {
         if (aDate == null || aFormat == null) {
             return "";
         }
@@ -2389,7 +2389,7 @@
      * string is null or empty or if the format is null. The string must match
      * the format.
      **/
-    public static java.util.Date parse(String aValue, SimpleDateFormat aFormat) throws ParseException {
+    public static Date parse(String aValue, SimpleDateFormat aFormat) throws ParseException {
         if (StringUtils.isEmpty(aValue) || aFormat == null) {
             return null;
         }
@@ -2402,7 +2402,7 @@
      * Returns true if endDate is after startDate or if startDate equals endDate
      * or if they are the same date. Returns false if either value is null.
      **/
-    public static boolean isValidDateRange(java.util.Date startDate, java.util.Date endDate) {
+    public static boolean isValidDateRange(Date startDate, Date endDate) {
         return isValidDateRange(startDate, endDate, true);
     }
 
@@ -2412,7 +2412,7 @@
      * endDate. Returns false if either value is null. If equalOK, returns true
      * if the dates are equal.
      **/
-    public static boolean isValidDateRange(java.util.Date startDate, java.util.Date endDate, boolean equalOK) {
+    public static boolean isValidDateRange(Date startDate, Date endDate, boolean equalOK) {
         // false if either value is null
         if (startDate == null || endDate == null) {
             return false;
@@ -2453,13 +2453,13 @@
 
     // -----------------------------------------------------------------------
     // convenience method
-    public static String defaultTimestamp(java.util.Date date) {
+    public static String defaultTimestamp(Date date) {
         return DateUtil.format(date, DateUtil.defaultTimestampFormat());
     }
 
     // -----------------------------------------------------------------------
     // convenience method
-    public static String defaultDate(java.util.Date date) {
+    public static String defaultDate(Date date) {
         return DateUtil.format(date, DateUtil.defaultDateFormat());
     }
 
@@ -2471,19 +2471,19 @@
 
     // -----------------------------------------------------------------------
     // convenience method returns long friendly formatted timestamp
-    public static String friendlyTimestamp(java.util.Date date) {
+    public static String friendlyTimestamp(Date date) {
         return DateUtil.format(date, DateUtil.friendlyTimestampFormat());
     }
 
     // -----------------------------------------------------------------------
     // convenience method returns long friendly formatted timestamp
-    public static String format8chars(java.util.Date date) {
+    public static String format8chars(Date date) {
         return DateUtil.format(date, mFormat8chars);
     }
 
     // -----------------------------------------------------------------------
     // convenience method returns long friendly formatted timestamp
-    public static String formatIso8601Day(java.util.Date date) {
+    public static String formatIso8601Day(Date date) {
         return DateUtil.format(date, mFormatIso8601Day);
     }
 
@@ -2493,18 +2493,18 @@
         return DateUtil.format(calendar.getTime(), mFormatIso8601Day);
     }
 
-    public static String formatTradeEasy(java.util.Date date) {
+    public static String formatTradeEasy(Date date) {
         return DateUtil.format(date, mFormatTradeEasy);
     }
 
     // add by huyanzhi
-    public static String formatTradeEasyProduct(java.util.Date date) {
+    public static String formatTradeEasyProduct(Date date) {
         return DateUtil.format(date, mFormatTradeEasyProduct);
     }
 
     //
 
-    public static String formatFormatTradeEasyMMddyyyy(java.util.Date date) {
+    public static String formatFormatTradeEasyMMddyyyy(Date date) {
         return DateUtil.format(date, mFormatTradeEasyMMddyyyy);
     }
 
@@ -2515,17 +2515,17 @@
     }
 
     // -----------------------------------------------------------------------
-    public static String formatRfc822(java.util.Date date) {
+    public static String formatRfc822(Date date) {
         return DateUtil.format(date, mFormatRfc822);
     }
 
-    public static String formatExpire(java.util.Date date) {
+    public static String formatExpire(Date date) {
         return DateUtil.format(date, mFormatExpire);
     }
 
     // -----------------------------------------------------------------------
     // This is a hack, but it seems to work
-    public static String formatIso8601(java.util.Date date) {
+    public static String formatIso8601(Date date) {
         if (date == null)
             return "";
 
@@ -2548,7 +2548,7 @@
 
     // -----------------------------------------------------------------------
     // convenience method using minimal date format
-    public static String minimalDate(java.util.Date date) {
+    public static String minimalDate(Date date) {
         return DateUtil.format(date, DateUtil.minimalDateFormat());
     }
 
@@ -2560,7 +2560,7 @@
     }
 
     // -----------------------------------------------------------------------
-    public static String fullDate(java.util.Date date) {
+    public static String fullDate(Date date) {
         return DateUtil.format(date, DateUtil.fullDateFormat());
     }
 
@@ -2583,18 +2583,18 @@
     /**
      * Format the date using the "friendly" date format.
      */
-    public static String friendlyDate(java.util.Date date, boolean minimalFormat) {
+    public static String friendlyDate(Date date, boolean minimalFormat) {
         return DateUtil.format(date, DateUtil.friendlyDateFormat(minimalFormat));
     }
 
     // -----------------------------------------------------------------------
     // convenience method
-    public static String friendlyDate(java.util.Date date) {
+    public static String friendlyDate(Date date) {
         return DateUtil.format(date, DateUtil.friendlyDateFormat(true));
     }
 
-    public static java.util.Date parseFormatIso8601Date(String date) throws Exception {
-        java.util.Date returnDate = null;
+    public static Date parseFormatIso8601Date(String date) throws Exception {
+        Date returnDate = null;
         try {
             returnDate = mFormatIso8601Day.parse(date);
         } catch (Exception e) {
@@ -2609,7 +2609,7 @@
         String Sdate = "";
         try {
             GregorianCalendar grc = new GregorianCalendar();
-            grc.setTime(new java.util.Date(date));
+            grc.setTime(new Date(date));
             if (type.equals("D")) {
                 grc.add(GregorianCalendar.DATE, into);
             } else if (type.equals("M")) {
@@ -2632,7 +2632,7 @@
             date = date.replaceAll("-", "/");
             date = date.substring(0, date.length() - 2);
             GregorianCalendar grc = new GregorianCalendar();
-            grc.setTime(new java.util.Date(date));
+            grc.setTime(new Date(date));
             grc.add(GregorianCalendar.DATE, Integer.parseInt(into));
             SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
             Sdate = new String(formatter.format(grc.getTime()));
@@ -2642,7 +2642,7 @@
         return Sdate;
     }
 
-    public static String formatDate(java.util.Date date, String pattern) {
+    public static String formatDate(Date date, String pattern) {
         if (date == null) {
             return null;
         }
@@ -2662,7 +2662,7 @@
             date = date.replaceAll("-", "/");
             date = date.substring(0, date.length() - 2);
             GregorianCalendar grc = new GregorianCalendar();
-            grc.setTime(new java.util.Date(date));
+            grc.setTime(new Date(date));
             grc.add(GregorianCalendar.DATE, Integer.parseInt(into));
             Sdate = new String(mFormatExpire.format(grc.getTime()));
         } catch (Exception e) {
@@ -2674,10 +2674,10 @@
     public static String addDayToStringDate(String formate, String strDate, String days) {
         String stringDate = null;
         try {
-            java.util.Date date = fromStringToDate(formate, strDate);
+            Date date = fromStringToDate(formate, strDate);
             long now = date.getTime() + (long) Integer.parseInt(days) * DAY_IN_MILLISECOND;
 
-            stringDate = getFomartDate(new java.util.Date(now), formate);
+            stringDate = getFomartDate(new Date(now), formate);
 
         } catch (ParseException e) {
 
@@ -2687,13 +2687,13 @@
         return stringDate;
     }
 
-    public static java.util.Date addDayToStringDate2(String formate, String strDate, String days) {
-        java.util.Date date = null;
+    public static Date addDayToStringDate2(String formate, String strDate, String days) {
+        Date date = null;
         try {
             date = fromStringToDate(formate, strDate);
             long now = date.getTime() + (long) Integer.parseInt(days) * DAY_IN_MILLISECOND;
 
-            date = new java.util.Date(now);
+            date = new Date(now);
 
         } catch (ParseException e) {
 
@@ -2703,17 +2703,17 @@
         return date;
     }
 
-    public static java.util.Date dateDayAdd(java.util.Date date, int days) {
+    public static Date dateDayAdd(Date date, int days) {
         long now = date.getTime() + (long) days * DAY_IN_MILLISECOND;
-        return new java.util.Date(now);
+        return new Date(now);
     }
 
     /**
      *
      * 瀛楃涓插舰寮忚浆鍖栦负Date绫诲瀷 String绫诲瀷鎸夌収format鏍煎紡杞负Date绫诲瀷
      **/
-    public static java.util.Date fromStringToDate(String format, String dateTime) throws ParseException {
-        java.util.Date date = null;
+    public static Date fromStringToDate(String format, String dateTime) throws ParseException {
+        Date date = null;
         SimpleDateFormat sdf = new SimpleDateFormat(format);
         date = sdf.parse(dateTime);
         return date;
@@ -2723,7 +2723,7 @@
      *
      * 瀛楃涓插舰寮忚浆鍖栦负Date绫诲瀷 String绫诲瀷鎸夌収format鏍煎紡杞负Date绫诲瀷
      **/
-    public static java.util.Date fromStringToDate(java.util.Date date) throws ParseException {
+    public static Date fromStringToDate(Date date) throws ParseException {
         return sdfLongTimePlus.parse(sdfLongTimePlus.format(date));
     }
 
@@ -2745,7 +2745,7 @@
      * @param date
      * @return
      */
-    public static Integer getTimeFormatIntger(java.util.Date date) {
+    public static Integer getTimeFormatIntger(Date date) {
         if (date == null) {
             return 0;
         }
@@ -2754,7 +2754,7 @@
         return Integer.valueOf(nowTime);
     }
 
-    public static String getNowDayStr(java.util.Date date) {
+    public static String getNowDayStr(Date date) {
         if (date == null) {
             return "";
         }
@@ -2776,7 +2776,7 @@
      */
     public static String toDayToStr(String format) {
         try {
-            java.util.Date now = new java.util.Date();
+            Date now = new Date();
             return DateToStr(now, format) + " " + getWeekOfDate(now);
         } catch (Exception e) {
             System.out.println("Date 杞� String 绫诲瀷澶辫触: " + e);
@@ -2792,7 +2792,7 @@
      * @author zhangyong
      * @return String
      */
-    public static String DateToStr(java.util.Date date, String format) {
+    public static String DateToStr(Date date, String format) {
         try {
             SimpleDateFormat sdf = new SimpleDateFormat(format);
             return sdf.format(date);
@@ -2809,9 +2809,9 @@
      * @param date
      *            date, int days
      */
-    public static java.util.Date dateAddDays(java.util.Date date, int days) {
+    public static Date dateAddDays(Date date, int days) {
         long now = date.getTime() + (long) days * DAY_IN_MILLISECOND;
-        return new java.util.Date(now);
+        return new Date(now);
     }
 
     /**
@@ -2820,7 +2820,7 @@
      * @param date
      *            date,String fFormatStr eg:yyyy-MM-dd HH:mm:ss
      */
-    public static String dateTypeToString(java.util.Date date, String fFormatStr) {
+    public static String dateTypeToString(Date date, String fFormatStr) {
         // yyyy-MM-dd HH:mm:ss
         SimpleDateFormat dateformat = new SimpleDateFormat(fFormatStr);
         String strDate = dateformat.format(date);
@@ -2834,7 +2834,7 @@
      * @鑾峰彇褰撳墠鐨勭郴缁熸椂闂达紝骞舵寜鐓у浐瀹氱殑鏍煎紡鍒濆璇�
      */
     public static String getStringOfNowDate(String fFormatStr) {
-        String nowDateString = dateTypeToString(new java.util.Date(), fFormatStr);
+        String nowDateString = dateTypeToString(new Date(), fFormatStr);
         return nowDateString;
     }
 
@@ -2842,7 +2842,7 @@
      * @ author zhangyong @ 鑾峰彇褰撴湀鐨勭涓�澶╋紝2009-05-01
      */
     public static String getStringOfFirstDayInMonth() {
-        java.util.Date date = new java.util.Date();
+        Date date = new Date();
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
         String temp = sdf.format(date);
         String firstDayInMoth = "";
@@ -2858,7 +2858,7 @@
      * @param dt
      * @return 褰撳墠鏃ユ湡鏄槦鏈熷嚑
      */
-    public static String getWeekOfDate(java.util.Date dt) {
+    public static String getWeekOfDate(Date dt) {
         String[] weekDays = { "鏄熸湡鏃�", "鏄熸湡涓�", "鏄熸湡浜�", "鏄熸湡涓�", "鏄熸湡鍥�", "鏄熸湡浜�", "鏄熸湡鍏�" };
         Calendar cal = Calendar.getInstance();
         cal.setTime(dt);
@@ -2878,7 +2878,7 @@
      * @param dt
      * @return
      */
-    public static int getWeekNumOfDate(java.util.Date dt) {
+    public static int getWeekNumOfDate(Date dt) {
         Calendar cal = Calendar.getInstance();
         cal.setTime(dt);
 
@@ -2889,7 +2889,7 @@
         return w;
     }
 
-    public static Long twoDaysBetween(java.util.Date beginDate, java.util.Date endDate) throws ParseException {
+    public static Long twoDaysBetween(Date beginDate, Date endDate) throws ParseException {
         long minute = (endDate.getTime() - beginDate.getTime()) / (60 * 1000);
         return minute;
     }
@@ -2899,9 +2899,9 @@
      *
      * @return
      */
-    public static java.util.Date initDateByTwoMonthAgo() {
+    public static Date initDateByTwoMonthAgo() {
         Calendar calendar = Calendar.getInstance();
-        calendar.setTime(new java.util.Date());
+        calendar.setTime(new Date());
         calendar.set(Calendar.DAY_OF_MONTH, 1);
         calendar.set(Calendar.HOUR_OF_DAY, 0);
         calendar.set(Calendar.MINUTE, 0);
@@ -2915,7 +2915,7 @@
      *
      * @return
      */
-    public static java.util.Date addDaysToDate(Date date, int days) {
+    public static Date addDaysToDate(Date date, int days) {
         Calendar calendar = Calendar.getInstance();
         calendar.setTime(date);
         calendar.add(Calendar.DATE, days);//
diff --git a/server/src/main/java/com/doumee/core/utils/EncryptUtil.java b/server/services/src/main/java/com/doumee/core/utils/EncryptUtil.java
similarity index 100%
rename from server/src/main/java/com/doumee/core/utils/EncryptUtil.java
rename to server/services/src/main/java/com/doumee/core/utils/EncryptUtil.java
diff --git a/server/src/main/java/com/doumee/core/utils/FileDigest.java b/server/services/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/services/src/main/java/com/doumee/core/utils/FileDigest.java
diff --git a/server/src/main/java/com/doumee/core/utils/FtpUtil.java b/server/services/src/main/java/com/doumee/core/utils/FtpUtil.java
similarity index 100%
rename from server/src/main/java/com/doumee/core/utils/FtpUtil.java
rename to server/services/src/main/java/com/doumee/core/utils/FtpUtil.java
diff --git a/server/src/main/java/com/doumee/core/utils/Html2Text.java b/server/services/src/main/java/com/doumee/core/utils/Html2Text.java
similarity index 100%
rename from server/src/main/java/com/doumee/core/utils/Html2Text.java
rename to server/services/src/main/java/com/doumee/core/utils/Html2Text.java
diff --git a/server/src/main/java/com/doumee/core/utils/Http.java b/server/services/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/services/src/main/java/com/doumee/core/utils/Http.java
diff --git a/server/src/main/java/com/doumee/core/utils/HttpUtil.java b/server/services/src/main/java/com/doumee/core/utils/HttpUtil.java
similarity index 100%
rename from server/src/main/java/com/doumee/core/utils/HttpUtil.java
rename to server/services/src/main/java/com/doumee/core/utils/HttpUtil.java
diff --git a/server/services/src/main/java/com/doumee/core/utils/ID.java b/server/services/src/main/java/com/doumee/core/utils/ID.java
new file mode 100644
index 0000000..236191b
--- /dev/null
+++ b/server/services/src/main/java/com/doumee/core/utils/ID.java
@@ -0,0 +1,89 @@
+package com.doumee.core.utils;
+
+import org.apache.logging.log4j.util.Strings;
+
+import java.util.UUID;
+
+/**
+ * A utility to generate id using various strategies.
+ *
+ * @author Guang YANG
+ * @version 1.0
+ */
+public class ID {
+
+  private static final SnowflakeIdGenerator snowflake = new SnowflakeIdGenerator(0);
+
+
+
+  /**
+   * Generate a random guid string of 32 byte.
+   */
+  public static String nextGUID() {
+    return UUID.randomUUID().toString().replace("-", Strings.EMPTY).toUpperCase();
+  }
+
+  /**
+   * Generate a random uuid string of 36 byte.
+   */
+  public static String nextUUID() {
+    return UUID.randomUUID().toString();
+  }
+
+  /**
+   * Generate a long number of 20 bit which is monotonically increasing by each call.
+   */
+  public static long nextSnowflakeId() {
+    return snowflake.nextId();
+  }
+
+  public static class SnowflakeIdGenerator {
+
+    private final long workerIdBits = 10L;
+    private final long maxWorkerId = -1L ^ (-1L << workerIdBits);
+    private final long sequenceBits = 12L;
+    private final long workerIdShift = sequenceBits;
+    private final long timestampLeftShift = sequenceBits + workerIdBits;
+    private final long sequenceMask = -1L ^ (-1L << sequenceBits);
+
+    private long workerId;
+    private long sequence = 0L;
+    private long lastTimestamp = -1L;
+
+    public SnowflakeIdGenerator(long workerId) {
+      if (workerId > maxWorkerId || workerId < 0) {
+        throw new IllegalArgumentException(String.format("worker Id can't be greater than %d or less than 0", maxWorkerId));
+      }
+      this.workerId = workerId;
+    }
+
+    public synchronized long nextId() {
+      long timestamp = System.currentTimeMillis();
+      if (timestamp < lastTimestamp) {
+        throw new RuntimeException(String.format("Clock moved backwards.  Refusing to generate id for %d milliseconds", lastTimestamp - timestamp));
+      }
+      if (lastTimestamp == timestamp) {
+        sequence = (sequence + 1) & sequenceMask;
+        if (sequence == 0) {
+          timestamp = tilNextMillis(lastTimestamp);
+        }
+      } else {
+        sequence = 0L;
+      }
+
+      lastTimestamp = timestamp;
+
+      return (timestamp << timestampLeftShift) | (workerId << workerIdShift) | sequence;
+    }
+
+    protected long tilNextMillis(long lastTimestamp) {
+      long timestamp = System.currentTimeMillis();
+      while (timestamp <= lastTimestamp) {
+        timestamp = System.currentTimeMillis();
+      }
+      return timestamp;
+    }
+
+  }
+
+}
diff --git a/server/src/main/java/com/doumee/core/utils/Location.java b/server/services/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/services/src/main/java/com/doumee/core/utils/Location.java
diff --git a/server/src/main/java/com/doumee/core/utils/Monitor.java b/server/services/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/services/src/main/java/com/doumee/core/utils/Monitor.java
diff --git a/server/src/main/java/com/doumee/core/utils/MyBatisPlus.java b/server/services/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/services/src/main/java/com/doumee/core/utils/MyBatisPlus.java
diff --git a/server/src/main/java/com/doumee/core/utils/Secure.java b/server/services/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/services/src/main/java/com/doumee/core/utils/Secure.java
diff --git a/server/src/main/java/com/doumee/core/utils/Server.java b/server/services/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/services/src/main/java/com/doumee/core/utils/Server.java
diff --git a/server/src/main/java/com/doumee/core/utils/Sha1Util.java b/server/services/src/main/java/com/doumee/core/utils/Sha1Util.java
similarity index 100%
rename from server/src/main/java/com/doumee/core/utils/Sha1Util.java
rename to server/services/src/main/java/com/doumee/core/utils/Sha1Util.java
diff --git a/server/src/main/java/com/doumee/core/utils/UserClient.java b/server/services/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/services/src/main/java/com/doumee/core/utils/UserClient.java
diff --git a/server/src/main/java/com/doumee/core/utils/Utils.java b/server/services/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/services/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/services/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/services/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/services/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/services/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/services/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/services/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/services/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/services/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/services/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/services/src/main/java/com/doumee/core/utils/monitor/Memory.java
diff --git a/server/src/main/java/com/doumee/core/utils/redis/RedisConverter.java b/server/services/src/main/java/com/doumee/core/utils/redis/RedisConverter.java
similarity index 100%
rename from server/src/main/java/com/doumee/core/utils/redis/RedisConverter.java
rename to server/services/src/main/java/com/doumee/core/utils/redis/RedisConverter.java
diff --git a/server/src/main/java/com/doumee/core/utils/redis/RedisUtil.java b/server/services/src/main/java/com/doumee/core/utils/redis/RedisUtil.java
similarity index 100%
rename from server/src/main/java/com/doumee/core/utils/redis/RedisUtil.java
rename to server/services/src/main/java/com/doumee/core/utils/redis/RedisUtil.java
diff --git a/server/src/main/java/com/doumee/core/utils/redis/model/SubmissionTotalTime.java b/server/services/src/main/java/com/doumee/core/utils/redis/model/SubmissionTotalTime.java
similarity index 100%
rename from server/src/main/java/com/doumee/core/utils/redis/model/SubmissionTotalTime.java
rename to server/services/src/main/java/com/doumee/core/utils/redis/model/SubmissionTotalTime.java
diff --git a/server/services/src/main/java/com/doumee/core/wx/AccessToken.java b/server/services/src/main/java/com/doumee/core/wx/AccessToken.java
new file mode 100644
index 0000000..ff6a0c4
--- /dev/null
+++ b/server/services/src/main/java/com/doumee/core/wx/AccessToken.java
@@ -0,0 +1,30 @@
+package com.doumee.core.wx;
+
+import lombok.Data;
+
+/**
+ * Created by IntelliJ IDEA.
+ *
+ * @Author : Rk
+ * @create 2022/12/7 17:26
+ */
+@Data
+public class AccessToken {
+
+    private String accessToken;
+    //杩囨湡鏃堕棿 褰撳墠绯荤粺鏃堕棿+寰俊浼犳潵鐨勮繃鏈熸椂闂�
+    private Long expiresTime;
+
+    public AccessToken(String accessToken, String expiresIn) {
+        this.accessToken = accessToken;
+        this.expiresTime = System.currentTimeMillis()+Integer.parseInt(expiresIn)*1000;
+    }
+
+    /**
+     * 鍒ゆ柇token鏄惁杩囨湡
+     * @return
+     */
+    public boolean isExpired(){
+        return System.currentTimeMillis()>expiresTime;
+    }
+}
diff --git a/server/services/src/main/java/com/doumee/core/wx/SendWxMessage.java b/server/services/src/main/java/com/doumee/core/wx/SendWxMessage.java
new file mode 100644
index 0000000..b306587
--- /dev/null
+++ b/server/services/src/main/java/com/doumee/core/wx/SendWxMessage.java
@@ -0,0 +1,24 @@
+package com.doumee.core.wx;
+
+import com.doumee.biz.system.SystemDictDataBiz;
+import com.doumee.dao.system.model.SystemUser;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * Created by IntelliJ IDEA.
+ *
+ * @Author : Rk
+ * @create 2022/12/7 17:27
+ */
+@Service
+@Slf4j
+public class SendWxMessage {
+
+    private static String programUrl = "packagesMine/meetingDetails/meetingDetails?id=";
+
+    @Autowired
+    private SystemDictDataBiz systemDictDataBiz;
+
+}
diff --git a/server/services/src/main/java/com/doumee/core/wx/TemplateData.java b/server/services/src/main/java/com/doumee/core/wx/TemplateData.java
new file mode 100644
index 0000000..aad9cf6
--- /dev/null
+++ b/server/services/src/main/java/com/doumee/core/wx/TemplateData.java
@@ -0,0 +1,19 @@
+package com.doumee.core.wx;
+
+import lombok.Data;
+
+/**
+ * Created by IntelliJ IDEA.
+ *
+ * @Author : Rk
+ * @create 2022/12/7 17:28
+ */
+@Data
+public class TemplateData {
+    private String value;
+
+    public TemplateData(String value) {
+        this.value = value;
+    }
+
+}
diff --git a/server/services/src/main/java/com/doumee/core/wx/WxMiniConfig.java b/server/services/src/main/java/com/doumee/core/wx/WxMiniConfig.java
new file mode 100644
index 0000000..8225591
--- /dev/null
+++ b/server/services/src/main/java/com/doumee/core/wx/WxMiniConfig.java
@@ -0,0 +1,91 @@
+package com.doumee.core.wx;
+
+import cn.binarywang.wx.miniapp.api.WxMaService;
+import cn.binarywang.wx.miniapp.api.impl.WxMaServiceImpl;
+import cn.binarywang.wx.miniapp.config.impl.WxMaDefaultConfigImpl;
+import com.doumee.config.mybatis.SpringUtils;
+import com.github.binarywang.wxpay.service.WxPayService;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Configuration;
+
+import javax.annotation.PostConstruct;
+
+/**
+ * 寰俊灏忕▼搴忕粍浠�
+ */
+@Configuration
+public class WxMiniConfig {
+    /********寰俊灏忕▼搴忔湇鍔�**********/
+    public static WxMaService wxMaService;
+    /********寰俊灏忕▼搴忔敮浠�**********/
+    public static WxPayService wxPayService;
+    /********寰俊APP鏀粯**********/
+    public static WxPayService wxAppPayService;
+
+
+    @Autowired
+    private WxPayProperties wxPayProperties;
+
+    public static WxMiniConfig me() {
+        return SpringUtils.get().getBean(WxMiniConfig.class);
+    }
+
+    @PostConstruct
+    void init() {
+        this.load_WxMaService();
+//        this.load_wxPayService();
+//        this.load_wxAppPayService();
+    }
+    /**
+     * 鍒濆鍖栧井淇″皬绋嬪簭
+     */
+    public void load_WxMaService() {
+        WxMaDefaultConfigImpl config = new WxMaDefaultConfigImpl();
+        config.setAppid(StringUtils.trimToNull(wxPayProperties.getAppId()));
+        config.setSecret(StringUtils.trimToNull(wxPayProperties.getAppSecret()));
+        config.setMsgDataFormat("JSON");
+        //config.setToken("");
+        //config.setAesKey("");
+        WxMaService wxMaService = new WxMaServiceImpl();
+        wxMaService.setWxMaConfig(config);
+        this.wxMaService = wxMaService;
+    }
+
+    /**
+     * 鍒濆鍖栧井淇″皬绋嬪簭鏀粯
+     */
+//    public void load_wxPayService() {
+//        WxPayConfig payConfig = new WxPayConfig();
+//        payConfig.setTradeType(WxPayConstants.TradeType.JSAPI);
+//        payConfig.setSignType(WxPayConstants.SignType.MD5);
+//        payConfig.setAppId(StringUtils.trimToNull(wxPayProperties.getAppId()));
+//        payConfig.setMchId(StringUtils.trimToNull(wxPayProperties.getMchId()));
+//        payConfig.setMchKey(StringUtils.trimToNull(wxPayProperties.getMchKey()));
+//        payConfig.setKeyPath(StringUtils.trimToNull(wxPayProperties.getKeyPath()));
+//        payConfig.setNotifyUrl(StringUtils.trimToNull(wxPayProperties.getNotifyUrl()));
+//        WxPayService wxPayService = new WxPayServiceImpl();
+//        wxPayService.setConfig(payConfig);
+//        this.wxPayService = wxPayService;
+//    }
+
+
+
+//    /**
+//     * 鍒濆鍖朅pp鏀粯
+//     */
+//    public void load_wxAppPayService() {
+//        WxPayConfig payConfig = new WxPayConfig();
+//        payConfig.setTradeType(WxPayConstants.TradeType.APP);
+//        payConfig.setSignType(WxPayConstants.SignType.MD5);
+//        payConfig.setAppId("");
+//        payConfig.setMchId(StringUtils.trimToNull(sysDictService.getSysDictValue(SysDictEnum.WX_MINI_MchId.getCode())));
+//        payConfig.setMchKey(StringUtils.trimToNull(sysDictService.getSysDictValue(SysDictEnum.WX_MINI_MchKey.getCode())));
+//        payConfig.setKeyPath(StringUtils.trimToNull(sysDictService.getSysDictValue(SysDictEnum.WX_MINI_KeyPath.getCode())));
+//        payConfig.setNotifyUrl(StringUtils.trimToNull(sysDictService.getSysDictValue(SysDictEnum.WX_MINI_NotifyUrl.getCode())));
+//        WxPayService wxPayService = new WxPayServiceImpl();
+//        wxPayService.setConfig(payConfig);
+//        this.wxAppPayService = wxPayService;
+//    }
+
+}
diff --git a/server/services/src/main/java/com/doumee/core/wx/WxMiniUtilService.java b/server/services/src/main/java/com/doumee/core/wx/WxMiniUtilService.java
new file mode 100644
index 0000000..71d329e
--- /dev/null
+++ b/server/services/src/main/java/com/doumee/core/wx/WxMiniUtilService.java
@@ -0,0 +1,53 @@
+package com.doumee.core.wx;
+
+import com.doumee.core.constants.ResponseStatus;
+import com.doumee.core.exception.BusinessException;
+import com.doumee.core.utils.ID;
+import com.github.binarywang.wxpay.bean.request.BaseWxPayRequest;
+import com.github.binarywang.wxpay.bean.request.WxPayRefundRequest;
+import com.github.binarywang.wxpay.bean.result.WxPayRefundResult;
+import com.github.binarywang.wxpay.exception.WxPayException;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.math.BigDecimal;
+
+/**
+ * 寰俊灏忕▼搴�-鍏叡鏂规硶
+ */
+@Service
+@Slf4j
+public class WxMiniUtilService {
+
+
+    /**
+     * 璁㈠崟寰俊閫�娆�
+     * orderNo:鍟嗘埛璁㈠崟鍙�
+     * totalPrice锛氳鍗曟�婚噾棰�
+     * refundPrice锛涢��娆鹃噾棰�
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public static String wxRefund(String orderNo, BigDecimal totalPrice, BigDecimal refundPrice) {
+        try {
+            // 鍙戦�侀��娆捐姹�
+            String refNum = ID.nextGUID();
+            WxPayRefundRequest request = new WxPayRefundRequest();
+            request.setOutTradeNo(orderNo);
+            request.setOutRefundNo(refNum);
+           // request.setTotalFee(2);
+          //  request.setRefundFee(1);
+            request.setTotalFee(BaseWxPayRequest.yuanToFen(totalPrice.toString()));
+            request.setRefundFee(BaseWxPayRequest.yuanToFen(refundPrice.toString()));
+            WxPayRefundResult response = WxMiniConfig.wxPayService.refund(request);
+            if ("SUCCESS".equals(response.getReturnCode()) && "SUCCESS".equals(response.getResultCode())) {
+                return refNum;
+            } else {
+                throw  new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),response.getErrCode() + response.getErrCodeDes());
+            }
+        } catch (WxPayException e) {
+            e.printStackTrace();
+        }
+        throw  new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"閫�娆惧彂鐢熷紓甯歌鑱旂郴绠$悊鍛�");
+    }
+}
diff --git a/server/services/src/main/java/com/doumee/core/wx/WxMsgVO.java b/server/services/src/main/java/com/doumee/core/wx/WxMsgVO.java
new file mode 100644
index 0000000..cee69e6
--- /dev/null
+++ b/server/services/src/main/java/com/doumee/core/wx/WxMsgVO.java
@@ -0,0 +1,23 @@
+package com.doumee.core.wx;
+
+import lombok.Data;
+
+import java.util.Map;
+
+/**
+ * Created by IntelliJ IDEA.
+ *
+ * @Author : Rk
+ * @create 2022/12/7 17:27
+ */
+@Data
+public class WxMsgVO {
+    //鐢ㄦ埛openId
+    private String touser;
+    //妯$増id
+    private String template_id;
+    //鎺ㄩ�佹枃瀛�
+    private Map<String , TemplateData> data;
+    //璺宠浆璺緞 锛岄粯璁よ烦杞埌灏忕▼搴忛椤�
+    private String page="pages/index/index";
+}
diff --git a/server/services/src/main/java/com/doumee/core/wx/WxPayProperties.java b/server/services/src/main/java/com/doumee/core/wx/WxPayProperties.java
new file mode 100644
index 0000000..efe67cb
--- /dev/null
+++ b/server/services/src/main/java/com/doumee/core/wx/WxPayProperties.java
@@ -0,0 +1,48 @@
+package com.doumee.core.wx;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+/**
+ * Created by IntelliJ IDEA.
+ *
+ * @Author : Rk
+ * @create 2023/3/22 18:04
+ */
+@Component
+@ConfigurationProperties(prefix = "wx.pay")
+@Data
+public class WxPayProperties {
+
+    /**
+     * AppID
+     */
+    private String appId;
+
+    /**
+     * AppSecret
+     */
+    private String appSecret;
+
+    /**
+     * 寰俊鍟嗘埛鍙�
+     */
+    private String mchId;
+
+    /**
+     * 鏀粯API瀵嗛挜
+     */
+    private String mchKey;
+
+    /**
+     * 鏀粯鍥炶皟鍦板潃
+     */
+    private String notifyUrl;
+
+    /**
+     * 鏀粯璇佷功(p12)
+     */
+    private String keyPath;
+
+}
diff --git a/server/src/main/java/com/doumee/dao/business/ActionLogMapper.java b/server/services/src/main/java/com/doumee/dao/business/ActionLogMapper.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/business/ActionLogMapper.java
rename to server/services/src/main/java/com/doumee/dao/business/ActionLogMapper.java
diff --git a/server/src/main/java/com/doumee/dao/business/AdMapper.java b/server/services/src/main/java/com/doumee/dao/business/AdMapper.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/business/AdMapper.java
rename to server/services/src/main/java/com/doumee/dao/business/AdMapper.java
diff --git a/server/src/main/java/com/doumee/dao/business/AliBillDetailMapper.java b/server/services/src/main/java/com/doumee/dao/business/AliBillDetailMapper.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/business/AliBillDetailMapper.java
rename to server/services/src/main/java/com/doumee/dao/business/AliBillDetailMapper.java
diff --git a/server/src/main/java/com/doumee/dao/business/AliBillMapper.java b/server/services/src/main/java/com/doumee/dao/business/AliBillMapper.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/business/AliBillMapper.java
rename to server/services/src/main/java/com/doumee/dao/business/AliBillMapper.java
diff --git a/server/src/main/java/com/doumee/dao/business/BikeRepairMapper.java b/server/services/src/main/java/com/doumee/dao/business/BikeRepairMapper.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/business/BikeRepairMapper.java
rename to server/services/src/main/java/com/doumee/dao/business/BikeRepairMapper.java
diff --git a/server/src/main/java/com/doumee/dao/business/BikesMapper.java b/server/services/src/main/java/com/doumee/dao/business/BikesMapper.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/business/BikesMapper.java
rename to server/services/src/main/java/com/doumee/dao/business/BikesMapper.java
diff --git a/server/src/main/java/com/doumee/dao/business/HolidaysMapper.java b/server/services/src/main/java/com/doumee/dao/business/HolidaysMapper.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/business/HolidaysMapper.java
rename to server/services/src/main/java/com/doumee/dao/business/HolidaysMapper.java
diff --git a/server/src/main/java/com/doumee/dao/business/LocksMapper.java b/server/services/src/main/java/com/doumee/dao/business/LocksMapper.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/business/LocksMapper.java
rename to server/services/src/main/java/com/doumee/dao/business/LocksMapper.java
diff --git a/server/src/main/java/com/doumee/dao/business/MemberMapper.java b/server/services/src/main/java/com/doumee/dao/business/MemberMapper.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/business/MemberMapper.java
rename to server/services/src/main/java/com/doumee/dao/business/MemberMapper.java
diff --git a/server/src/main/java/com/doumee/dao/business/MemberRidesMapper.java b/server/services/src/main/java/com/doumee/dao/business/MemberRidesMapper.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/business/MemberRidesMapper.java
rename to server/services/src/main/java/com/doumee/dao/business/MemberRidesMapper.java
diff --git a/server/src/main/java/com/doumee/dao/business/PricingDetailMapper.java b/server/services/src/main/java/com/doumee/dao/business/PricingDetailMapper.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/business/PricingDetailMapper.java
rename to server/services/src/main/java/com/doumee/dao/business/PricingDetailMapper.java
diff --git a/server/src/main/java/com/doumee/dao/business/PricingParamMapper.java b/server/services/src/main/java/com/doumee/dao/business/PricingParamMapper.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/business/PricingParamMapper.java
rename to server/services/src/main/java/com/doumee/dao/business/PricingParamMapper.java
diff --git a/server/src/main/java/com/doumee/dao/business/RefundMapper.java b/server/services/src/main/java/com/doumee/dao/business/RefundMapper.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/business/RefundMapper.java
rename to server/services/src/main/java/com/doumee/dao/business/RefundMapper.java
diff --git a/server/src/main/java/com/doumee/dao/business/RentSiteMapper.java b/server/services/src/main/java/com/doumee/dao/business/RentSiteMapper.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/business/RentSiteMapper.java
rename to server/services/src/main/java/com/doumee/dao/business/RentSiteMapper.java
diff --git a/server/src/main/java/com/doumee/dao/business/SitesMapper.java b/server/services/src/main/java/com/doumee/dao/business/SitesMapper.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/business/SitesMapper.java
rename to server/services/src/main/java/com/doumee/dao/business/SitesMapper.java
diff --git a/server/src/main/java/com/doumee/dao/business/TransactionsMapper.java b/server/services/src/main/java/com/doumee/dao/business/TransactionsMapper.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/business/TransactionsMapper.java
rename to server/services/src/main/java/com/doumee/dao/business/TransactionsMapper.java
diff --git a/server/src/main/java/com/doumee/dao/business/WxBillDetailMapper.java b/server/services/src/main/java/com/doumee/dao/business/WxBillDetailMapper.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/business/WxBillDetailMapper.java
rename to server/services/src/main/java/com/doumee/dao/business/WxBillDetailMapper.java
diff --git a/server/src/main/java/com/doumee/dao/business/WxBillMapper.java b/server/services/src/main/java/com/doumee/dao/business/WxBillMapper.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/business/WxBillMapper.java
rename to server/services/src/main/java/com/doumee/dao/business/WxBillMapper.java
diff --git a/server/src/main/java/com/doumee/dao/business/model/ActionLog.java b/server/services/src/main/java/com/doumee/dao/business/model/ActionLog.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/business/model/ActionLog.java
rename to server/services/src/main/java/com/doumee/dao/business/model/ActionLog.java
diff --git a/server/src/main/java/com/doumee/dao/business/model/Ad.java b/server/services/src/main/java/com/doumee/dao/business/model/Ad.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/business/model/Ad.java
rename to server/services/src/main/java/com/doumee/dao/business/model/Ad.java
diff --git a/server/src/main/java/com/doumee/dao/business/model/AliBill.java b/server/services/src/main/java/com/doumee/dao/business/model/AliBill.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/business/model/AliBill.java
rename to server/services/src/main/java/com/doumee/dao/business/model/AliBill.java
diff --git a/server/src/main/java/com/doumee/dao/business/model/AliBillDetail.java b/server/services/src/main/java/com/doumee/dao/business/model/AliBillDetail.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/business/model/AliBillDetail.java
rename to server/services/src/main/java/com/doumee/dao/business/model/AliBillDetail.java
diff --git a/server/src/main/java/com/doumee/dao/business/model/BikeRepair.java b/server/services/src/main/java/com/doumee/dao/business/model/BikeRepair.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/business/model/BikeRepair.java
rename to server/services/src/main/java/com/doumee/dao/business/model/BikeRepair.java
diff --git a/server/src/main/java/com/doumee/dao/business/model/Bikes.java b/server/services/src/main/java/com/doumee/dao/business/model/Bikes.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/business/model/Bikes.java
rename to server/services/src/main/java/com/doumee/dao/business/model/Bikes.java
diff --git a/server/src/main/java/com/doumee/dao/business/model/Holidays.java b/server/services/src/main/java/com/doumee/dao/business/model/Holidays.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/business/model/Holidays.java
rename to server/services/src/main/java/com/doumee/dao/business/model/Holidays.java
diff --git a/server/src/main/java/com/doumee/dao/business/model/Locks.java b/server/services/src/main/java/com/doumee/dao/business/model/Locks.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/business/model/Locks.java
rename to server/services/src/main/java/com/doumee/dao/business/model/Locks.java
diff --git a/server/src/main/java/com/doumee/dao/business/model/Member.java b/server/services/src/main/java/com/doumee/dao/business/model/Member.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/business/model/Member.java
rename to server/services/src/main/java/com/doumee/dao/business/model/Member.java
diff --git a/server/src/main/java/com/doumee/dao/business/model/MemberRides.java b/server/services/src/main/java/com/doumee/dao/business/model/MemberRides.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/business/model/MemberRides.java
rename to server/services/src/main/java/com/doumee/dao/business/model/MemberRides.java
diff --git a/server/src/main/java/com/doumee/dao/business/model/PricingDetail.java b/server/services/src/main/java/com/doumee/dao/business/model/PricingDetail.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/business/model/PricingDetail.java
rename to server/services/src/main/java/com/doumee/dao/business/model/PricingDetail.java
diff --git a/server/src/main/java/com/doumee/dao/business/model/PricingParam.java b/server/services/src/main/java/com/doumee/dao/business/model/PricingParam.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/business/model/PricingParam.java
rename to server/services/src/main/java/com/doumee/dao/business/model/PricingParam.java
diff --git a/server/src/main/java/com/doumee/dao/business/model/Refund.java b/server/services/src/main/java/com/doumee/dao/business/model/Refund.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/business/model/Refund.java
rename to server/services/src/main/java/com/doumee/dao/business/model/Refund.java
diff --git a/server/src/main/java/com/doumee/dao/business/model/RentSite.java b/server/services/src/main/java/com/doumee/dao/business/model/RentSite.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/business/model/RentSite.java
rename to server/services/src/main/java/com/doumee/dao/business/model/RentSite.java
diff --git a/server/src/main/java/com/doumee/dao/business/model/Sites.java b/server/services/src/main/java/com/doumee/dao/business/model/Sites.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/business/model/Sites.java
rename to server/services/src/main/java/com/doumee/dao/business/model/Sites.java
diff --git a/server/src/main/java/com/doumee/dao/business/model/Transactions.java b/server/services/src/main/java/com/doumee/dao/business/model/Transactions.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/business/model/Transactions.java
rename to server/services/src/main/java/com/doumee/dao/business/model/Transactions.java
diff --git a/server/src/main/java/com/doumee/dao/business/model/WxBill.java b/server/services/src/main/java/com/doumee/dao/business/model/WxBill.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/business/model/WxBill.java
rename to server/services/src/main/java/com/doumee/dao/business/model/WxBill.java
diff --git a/server/src/main/java/com/doumee/dao/business/model/WxBillDetail.java b/server/services/src/main/java/com/doumee/dao/business/model/WxBillDetail.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/business/model/WxBillDetail.java
rename to server/services/src/main/java/com/doumee/dao/business/model/WxBillDetail.java
diff --git a/server/services/src/main/java/com/doumee/dao/business/web/request/ForgetPasswordRequest.java b/server/services/src/main/java/com/doumee/dao/business/web/request/ForgetPasswordRequest.java
new file mode 100644
index 0000000..be9ef15
--- /dev/null
+++ b/server/services/src/main/java/com/doumee/dao/business/web/request/ForgetPasswordRequest.java
@@ -0,0 +1,27 @@
+package com.doumee.dao.business.web.request;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * Created by IntelliJ IDEA.
+ *
+ * @Author : Rk
+ * @create 2023/6/27 17:07
+ */
+@Data
+@ApiModel("灏忕▼搴忓繕璁板瘑鐮佷笟鍔�")
+public class ForgetPasswordRequest {
+
+    @ApiModelProperty(value = "鎵嬫満鍙�",example = "1")
+    private String mobile;
+
+    @ApiModelProperty(value = "楠岃瘉鐮�",example = "1")
+    private String code;
+
+    @ApiModelProperty(value = "鏂板瘑鐮�",example = "1")
+    private String newPassword;
+
+
+}
diff --git a/server/services/src/main/java/com/doumee/dao/business/web/request/PageRequest.java b/server/services/src/main/java/com/doumee/dao/business/web/request/PageRequest.java
new file mode 100644
index 0000000..b20ab3e
--- /dev/null
+++ b/server/services/src/main/java/com/doumee/dao/business/web/request/PageRequest.java
@@ -0,0 +1,38 @@
+package com.doumee.dao.business.web.request;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+
+@ApiModel("鍒嗛〉璇锋眰")
+public class PageRequest implements Serializable {
+
+  @ApiModelProperty("褰撳墠椤�")
+  private long current = 1;
+
+  @ApiModelProperty("椤电爜")
+  private long size = 20;
+
+  public long getCurrent() {
+    return current;
+  }
+
+  public void setCurrent(long current) {
+    this.current = current;
+  }
+
+  public long getSize() {
+    return size;
+  }
+
+  public void setSize(long size) {
+    this.size = size;
+  }
+
+  public <T> Page<T> toPage() {
+    return new Page<>(current, size);
+  }
+
+}
diff --git a/server/services/src/main/java/com/doumee/dao/business/web/request/RegisterRequest.java b/server/services/src/main/java/com/doumee/dao/business/web/request/RegisterRequest.java
new file mode 100644
index 0000000..f0082e0
--- /dev/null
+++ b/server/services/src/main/java/com/doumee/dao/business/web/request/RegisterRequest.java
@@ -0,0 +1,29 @@
+package com.doumee.dao.business.web.request;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotEmpty;
+
+/**
+ * Created by IntelliJ IDEA.
+ *
+ * @Author : Rk
+ * @create 2023/6/25 14:52
+ */
+@Data
+public class RegisterRequest {
+
+    @NotEmpty(message = "鎵嬫満鍙� 涓嶈兘涓虹┖")
+    @ApiModelProperty(value = "mobile")
+    private String mobile;
+
+    @NotEmpty(message = "楠岃瘉鐮� 涓嶈兘涓虹┖")
+    @ApiModelProperty(value = "code")
+    private String code;
+
+    @NotEmpty(message = "瀵嗙爜 涓嶈兘涓虹┖")
+    @ApiModelProperty(value = "password")
+    private String password;
+
+}
diff --git a/server/services/src/main/java/com/doumee/dao/business/web/request/UpdMemberRequest.java b/server/services/src/main/java/com/doumee/dao/business/web/request/UpdMemberRequest.java
new file mode 100644
index 0000000..c5edb61
--- /dev/null
+++ b/server/services/src/main/java/com/doumee/dao/business/web/request/UpdMemberRequest.java
@@ -0,0 +1,38 @@
+package com.doumee.dao.business.web.request;
+
+import com.doumee.core.utils.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * Created by IntelliJ IDEA.
+ *
+ * @Author : Rk
+ * @create 2023/6/25 16:45
+ */
+@Data
+public class UpdMemberRequest {
+
+
+    @ApiModelProperty(value = "澶村儚")
+    private String imgurl;
+
+    @ApiModelProperty(value = "鏄电О")
+    private String nickname;
+
+    @ApiModelProperty(value = "鐪熷疄濮撳悕")
+    private String name;
+
+    @ApiModelProperty(value = "鎬у埆")
+    private Integer sex;
+
+    @ApiModelProperty(value = "鐢熸棩")
+    private String birthday;
+
+    private Integer id;
+
+
+
+
+}
diff --git a/server/services/src/main/java/com/doumee/dao/business/web/request/UpdPasswordRequest.java b/server/services/src/main/java/com/doumee/dao/business/web/request/UpdPasswordRequest.java
new file mode 100644
index 0000000..bd33029
--- /dev/null
+++ b/server/services/src/main/java/com/doumee/dao/business/web/request/UpdPasswordRequest.java
@@ -0,0 +1,27 @@
+package com.doumee.dao.business.web.request;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * Created by IntelliJ IDEA.
+ *
+ * @Author : Rk
+ * @create 2023/6/27 17:07
+ */
+@Data
+@ApiModel("灏忕▼搴忎慨鏀瑰瘑鐮佷笟鍔�")
+public class UpdPasswordRequest {
+
+    @ApiModelProperty(value = "鐢ㄦ埛涓婚敭",example = "1")
+    private Integer memberId;
+
+    @ApiModelProperty(value = "楠岃瘉鐮�",example = "1")
+    private String code;
+
+    @ApiModelProperty(value = "鏂板瘑鐮�",example = "1")
+    private String newPassword;
+
+
+}
diff --git a/server/services/src/main/java/com/doumee/dao/business/web/request/WxPhoneRequest.java b/server/services/src/main/java/com/doumee/dao/business/web/request/WxPhoneRequest.java
new file mode 100644
index 0000000..84dc7db
--- /dev/null
+++ b/server/services/src/main/java/com/doumee/dao/business/web/request/WxPhoneRequest.java
@@ -0,0 +1,36 @@
+package com.doumee.dao.business.web.request;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotEmpty;
+import java.io.Serializable;
+
+/**
+ * Created by IntelliJ IDEA.
+ *
+ * @Author : Rk
+ * @create 2023/3/23 9:50
+ */
+@Data
+@ApiModel("寰俊鎺堟潈鎵嬫満鍙疯姹傜被")
+public class WxPhoneRequest implements Serializable {
+
+    @NotEmpty(message = "encryptedData 涓嶈兘涓虹┖")
+    @ApiModelProperty(value = "encryptedData")
+    private String encryptedData;
+
+    @NotEmpty(message = "iv 涓嶈兘涓虹┖")
+    @ApiModelProperty(value = "iv")
+    private String iv;
+
+    @NotEmpty(message = "sessionKey 涓嶈兘涓虹┖")
+    @ApiModelProperty(value = "sessionKey")
+    private String sessionKey;
+
+    @NotEmpty(message = "openId 涓嶈兘涓虹┖")
+    @ApiModelProperty(value = "openId")
+    private String openId;
+
+}
diff --git a/server/services/src/main/java/com/doumee/dao/business/web/response/AccountResponse.java b/server/services/src/main/java/com/doumee/dao/business/web/response/AccountResponse.java
new file mode 100644
index 0000000..5692bce
--- /dev/null
+++ b/server/services/src/main/java/com/doumee/dao/business/web/response/AccountResponse.java
@@ -0,0 +1,26 @@
+package com.doumee.dao.business.web.response;
+
+import com.doumee.dao.system.model.SystemUser;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * Created by IntelliJ IDEA.
+ *
+ * @Author : Rk
+ * @create 2023/3/23 9:25
+ */
+@Data
+@ApiModel("鐧诲綍杩斿洖绫�")
+public class AccountResponse implements Serializable {
+
+    @ApiModelProperty(value = "鐢ㄦ埛token")
+    private String token;
+
+    @ApiModelProperty(value = "鐢ㄦ埛淇℃伅")
+    private UserResponse userResponse;
+
+}
diff --git a/server/services/src/main/java/com/doumee/dao/business/web/response/UserResponse.java b/server/services/src/main/java/com/doumee/dao/business/web/response/UserResponse.java
new file mode 100644
index 0000000..55825c4
--- /dev/null
+++ b/server/services/src/main/java/com/doumee/dao/business/web/response/UserResponse.java
@@ -0,0 +1,44 @@
+package com.doumee.dao.business.web.response;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * Created by IntelliJ IDEA.
+ *
+ * @Author : Rk
+ * @create 2023/3/23 9:25
+ */
+@Data
+@ApiModel("鏌ヨ鐢ㄦ埛杩斿洖绫�")
+public class UserResponse {
+
+    @ApiModelProperty(value = "鐢ㄦ埛涓婚敭")
+    private Integer id;
+
+    @ApiModelProperty(value = "濮撳悕")
+    private String name;
+
+    @ApiModelProperty(value = "鎵嬫満鍙�")
+    private String mobile;
+
+    @ApiModelProperty(value = "鏄电О")
+    private String nickname;
+
+    @ApiModelProperty(value = "澶村儚")
+    private String imgurl;
+
+    @ApiModelProperty(value = "澶村儚鍓嶇紑")
+    private String prefixUrl;
+
+
+    @ApiModelProperty(value = "寰俊openid")
+    private String openid;
+
+    @ApiModelProperty(value = "鎬у埆")
+    private Integer sex;
+
+
+
+}
diff --git a/server/src/main/java/com/doumee/dao/system/SystemDataPermissionMapper.java b/server/services/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/services/src/main/java/com/doumee/dao/system/SystemDataPermissionMapper.java
diff --git a/server/src/main/java/com/doumee/dao/system/SystemDepartmentMapper.java b/server/services/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/services/src/main/java/com/doumee/dao/system/SystemDepartmentMapper.java
diff --git a/server/src/main/java/com/doumee/dao/system/SystemDepartmentUserMapper.java b/server/services/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/services/src/main/java/com/doumee/dao/system/SystemDepartmentUserMapper.java
diff --git a/server/src/main/java/com/doumee/dao/system/SystemDictDataMapper.java b/server/services/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/services/src/main/java/com/doumee/dao/system/SystemDictDataMapper.java
diff --git a/server/src/main/java/com/doumee/dao/system/SystemDictMapper.java b/server/services/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/services/src/main/java/com/doumee/dao/system/SystemDictMapper.java
diff --git a/server/src/main/java/com/doumee/dao/system/SystemLoginLogMapper.java b/server/services/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/services/src/main/java/com/doumee/dao/system/SystemLoginLogMapper.java
diff --git a/server/src/main/java/com/doumee/dao/system/SystemMenuMapper.java b/server/services/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/services/src/main/java/com/doumee/dao/system/SystemMenuMapper.java
diff --git a/server/src/main/java/com/doumee/dao/system/SystemPermissionMapper.java b/server/services/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/services/src/main/java/com/doumee/dao/system/SystemPermissionMapper.java
diff --git a/server/src/main/java/com/doumee/dao/system/SystemPositionMapper.java b/server/services/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/services/src/main/java/com/doumee/dao/system/SystemPositionMapper.java
diff --git a/server/src/main/java/com/doumee/dao/system/SystemPositionUserMapper.java b/server/services/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/services/src/main/java/com/doumee/dao/system/SystemPositionUserMapper.java
diff --git a/server/src/main/java/com/doumee/dao/system/SystemRoleMapper.java b/server/services/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/services/src/main/java/com/doumee/dao/system/SystemRoleMapper.java
diff --git a/server/src/main/java/com/doumee/dao/system/SystemRoleMenuMapper.java b/server/services/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/services/src/main/java/com/doumee/dao/system/SystemRoleMenuMapper.java
diff --git a/server/src/main/java/com/doumee/dao/system/SystemRolePermissionMapper.java b/server/services/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/services/src/main/java/com/doumee/dao/system/SystemRolePermissionMapper.java
diff --git a/server/src/main/java/com/doumee/dao/system/SystemTraceLogMapper.java b/server/services/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/services/src/main/java/com/doumee/dao/system/SystemTraceLogMapper.java
diff --git a/server/src/main/java/com/doumee/dao/system/SystemUserMapper.java b/server/services/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/services/src/main/java/com/doumee/dao/system/SystemUserMapper.java
diff --git a/server/src/main/java/com/doumee/dao/system/SystemUserRoleMapper.java b/server/services/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/services/src/main/java/com/doumee/dao/system/SystemUserRoleMapper.java
diff --git a/server/src/main/java/com/doumee/dao/system/dto/CreateRoleMenuDTO.java b/server/services/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/services/src/main/java/com/doumee/dao/system/dto/CreateRoleMenuDTO.java
diff --git a/server/src/main/java/com/doumee/dao/system/dto/CreateRolePermissionDTO.java b/server/services/src/main/java/com/doumee/dao/system/dto/CreateRolePermissionDTO.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/system/dto/CreateRolePermissionDTO.java
rename to server/services/src/main/java/com/doumee/dao/system/dto/CreateRolePermissionDTO.java
diff --git a/server/src/main/java/com/doumee/dao/system/dto/CreateSystemUserDTO.java b/server/services/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/services/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/services/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/services/src/main/java/com/doumee/dao/system/dto/CreateUserRoleDTO.java
diff --git a/server/src/main/java/com/doumee/dao/system/dto/LoginDTO.java b/server/services/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/services/src/main/java/com/doumee/dao/system/dto/LoginDTO.java
diff --git a/server/src/main/java/com/doumee/dao/system/dto/QuerySystemDepartmentDTO.java b/server/services/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/services/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/services/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/services/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/services/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/services/src/main/java/com/doumee/dao/system/dto/QuerySystemDictDataDTO.java
diff --git a/server/src/main/java/com/doumee/dao/system/dto/QuerySystemLoginLogDTO.java b/server/services/src/main/java/com/doumee/dao/system/dto/QuerySystemLoginLogDTO.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/system/dto/QuerySystemLoginLogDTO.java
rename to server/services/src/main/java/com/doumee/dao/system/dto/QuerySystemLoginLogDTO.java
diff --git a/server/src/main/java/com/doumee/dao/system/dto/QuerySystemPermissionDTO.java b/server/services/src/main/java/com/doumee/dao/system/dto/QuerySystemPermissionDTO.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/system/dto/QuerySystemPermissionDTO.java
rename to server/services/src/main/java/com/doumee/dao/system/dto/QuerySystemPermissionDTO.java
diff --git a/server/src/main/java/com/doumee/dao/system/dto/QuerySystemRoleDTO.java b/server/services/src/main/java/com/doumee/dao/system/dto/QuerySystemRoleDTO.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/system/dto/QuerySystemRoleDTO.java
rename to server/services/src/main/java/com/doumee/dao/system/dto/QuerySystemRoleDTO.java
diff --git a/server/src/main/java/com/doumee/dao/system/dto/QuerySystemTraceLogDTO.java b/server/services/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/services/src/main/java/com/doumee/dao/system/dto/QuerySystemTraceLogDTO.java
diff --git a/server/src/main/java/com/doumee/dao/system/dto/QuerySystemUserDTO.java b/server/services/src/main/java/com/doumee/dao/system/dto/QuerySystemUserDTO.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/system/dto/QuerySystemUserDTO.java
rename to server/services/src/main/java/com/doumee/dao/system/dto/QuerySystemUserDTO.java
diff --git a/server/src/main/java/com/doumee/dao/system/dto/ResetSystemUserPwdDTO.java b/server/services/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/services/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/services/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/services/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/services/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/services/src/main/java/com/doumee/dao/system/dto/UpdateSystemMenuSortDTO.java
diff --git a/server/src/main/java/com/doumee/dao/system/dto/WebLoginDTO.java b/server/services/src/main/java/com/doumee/dao/system/dto/WebLoginDTO.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/system/dto/WebLoginDTO.java
rename to server/services/src/main/java/com/doumee/dao/system/dto/WebLoginDTO.java
diff --git a/server/src/main/java/com/doumee/dao/system/model/SystemDataPermission.java b/server/services/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/services/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/services/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/services/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/services/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/services/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/services/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/services/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/services/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/services/src/main/java/com/doumee/dao/system/model/SystemDictData.java
diff --git a/server/src/main/java/com/doumee/dao/system/model/SystemLoginLog.java b/server/services/src/main/java/com/doumee/dao/system/model/SystemLoginLog.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/system/model/SystemLoginLog.java
rename to server/services/src/main/java/com/doumee/dao/system/model/SystemLoginLog.java
diff --git a/server/src/main/java/com/doumee/dao/system/model/SystemMenu.java b/server/services/src/main/java/com/doumee/dao/system/model/SystemMenu.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/system/model/SystemMenu.java
rename to server/services/src/main/java/com/doumee/dao/system/model/SystemMenu.java
diff --git a/server/src/main/java/com/doumee/dao/system/model/SystemPermission.java b/server/services/src/main/java/com/doumee/dao/system/model/SystemPermission.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/system/model/SystemPermission.java
rename to server/services/src/main/java/com/doumee/dao/system/model/SystemPermission.java
diff --git a/server/src/main/java/com/doumee/dao/system/model/SystemPosition.java b/server/services/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/services/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/services/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/services/src/main/java/com/doumee/dao/system/model/SystemPositionUser.java
diff --git a/server/src/main/java/com/doumee/dao/system/model/SystemRole.java b/server/services/src/main/java/com/doumee/dao/system/model/SystemRole.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/system/model/SystemRole.java
rename to server/services/src/main/java/com/doumee/dao/system/model/SystemRole.java
diff --git a/server/src/main/java/com/doumee/dao/system/model/SystemRoleMenu.java b/server/services/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/services/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/services/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/services/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/services/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/services/src/main/java/com/doumee/dao/system/model/SystemTraceLog.java
diff --git a/server/src/main/java/com/doumee/dao/system/model/SystemUser.java b/server/services/src/main/java/com/doumee/dao/system/model/SystemUser.java
similarity index 100%
rename from server/src/main/java/com/doumee/dao/system/model/SystemUser.java
rename to server/services/src/main/java/com/doumee/dao/system/model/SystemUser.java
diff --git a/server/src/main/java/com/doumee/dao/system/model/SystemUserRole.java b/server/services/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/services/src/main/java/com/doumee/dao/system/model/SystemUserRole.java
diff --git a/server/src/main/java/com/doumee/dao/system/vo/SystemDataPermissionListVO.java b/server/services/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/services/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/services/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/services/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/services/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/services/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/services/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/services/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/services/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/services/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/services/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/services/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/services/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/services/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/services/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/services/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/services/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/services/src/main/java/com/doumee/dao/system/vo/SystemRoleListVO.java
diff --git a/server/src/main/java/com/doumee/dao/system/vo/SystemUserListVO.java b/server/services/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/services/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/services/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/services/src/main/java/com/doumee/service/aware/DepartmentDataPermissionAware.java
diff --git a/server/src/main/java/com/doumee/service/aware/PositionDataPermissionAware.java b/server/services/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/services/src/main/java/com/doumee/service/aware/PositionDataPermissionAware.java
diff --git a/server/src/main/java/com/doumee/service/business/ActionLogService.java b/server/services/src/main/java/com/doumee/service/business/ActionLogService.java
similarity index 100%
rename from server/src/main/java/com/doumee/service/business/ActionLogService.java
rename to server/services/src/main/java/com/doumee/service/business/ActionLogService.java
diff --git a/server/src/main/java/com/doumee/service/business/AdService.java b/server/services/src/main/java/com/doumee/service/business/AdService.java
similarity index 100%
rename from server/src/main/java/com/doumee/service/business/AdService.java
rename to server/services/src/main/java/com/doumee/service/business/AdService.java
diff --git a/server/src/main/java/com/doumee/service/business/AliBillDetailService.java b/server/services/src/main/java/com/doumee/service/business/AliBillDetailService.java
similarity index 100%
rename from server/src/main/java/com/doumee/service/business/AliBillDetailService.java
rename to server/services/src/main/java/com/doumee/service/business/AliBillDetailService.java
diff --git a/server/src/main/java/com/doumee/service/business/AliBillService.java b/server/services/src/main/java/com/doumee/service/business/AliBillService.java
similarity index 100%
rename from server/src/main/java/com/doumee/service/business/AliBillService.java
rename to server/services/src/main/java/com/doumee/service/business/AliBillService.java
diff --git a/server/src/main/java/com/doumee/service/business/BikeRepairService.java b/server/services/src/main/java/com/doumee/service/business/BikeRepairService.java
similarity index 100%
rename from server/src/main/java/com/doumee/service/business/BikeRepairService.java
rename to server/services/src/main/java/com/doumee/service/business/BikeRepairService.java
diff --git a/server/src/main/java/com/doumee/service/business/BikesService.java b/server/services/src/main/java/com/doumee/service/business/BikesService.java
similarity index 100%
rename from server/src/main/java/com/doumee/service/business/BikesService.java
rename to server/services/src/main/java/com/doumee/service/business/BikesService.java
diff --git a/server/src/main/java/com/doumee/service/business/HolidaysService.java b/server/services/src/main/java/com/doumee/service/business/HolidaysService.java
similarity index 100%
rename from server/src/main/java/com/doumee/service/business/HolidaysService.java
rename to server/services/src/main/java/com/doumee/service/business/HolidaysService.java
diff --git a/server/src/main/java/com/doumee/service/business/LocksService.java b/server/services/src/main/java/com/doumee/service/business/LocksService.java
similarity index 100%
rename from server/src/main/java/com/doumee/service/business/LocksService.java
rename to server/services/src/main/java/com/doumee/service/business/LocksService.java
diff --git a/server/src/main/java/com/doumee/service/business/MemberRidesService.java b/server/services/src/main/java/com/doumee/service/business/MemberRidesService.java
similarity index 100%
rename from server/src/main/java/com/doumee/service/business/MemberRidesService.java
rename to server/services/src/main/java/com/doumee/service/business/MemberRidesService.java
diff --git a/server/src/main/java/com/doumee/service/business/MemberService.java b/server/services/src/main/java/com/doumee/service/business/MemberService.java
similarity index 78%
rename from server/src/main/java/com/doumee/service/business/MemberService.java
rename to server/services/src/main/java/com/doumee/service/business/MemberService.java
index 554b802..558f9ce 100644
--- a/server/src/main/java/com/doumee/service/business/MemberService.java
+++ b/server/services/src/main/java/com/doumee/service/business/MemberService.java
@@ -3,6 +3,10 @@
 import com.doumee.core.model.PageData;
 import com.doumee.core.model.PageWrap;
 import com.doumee.dao.business.model.Member;
+import com.doumee.dao.business.web.request.RegisterRequest;
+import com.doumee.dao.business.web.response.AccountResponse;
+import com.doumee.dao.business.web.response.UserResponse;
+
 import java.util.List;
 
 /**
@@ -94,4 +98,17 @@
      * @return long
      */
     long count(Member member);
+
+    AccountResponse userRegister(RegisterRequest registerRequest);
+
+    void wxEmpower(String code, String memberId);
+
+    /**
+     * 鎷夊彇鐧诲綍
+     * @param code
+     * @param userId
+     */
+    AccountResponse wxLogin(String code);
+
+    UserResponse getUserInfo(String memberId);
 }
diff --git a/server/src/main/java/com/doumee/service/business/PricingDetailService.java b/server/services/src/main/java/com/doumee/service/business/PricingDetailService.java
similarity index 100%
rename from server/src/main/java/com/doumee/service/business/PricingDetailService.java
rename to server/services/src/main/java/com/doumee/service/business/PricingDetailService.java
diff --git a/server/src/main/java/com/doumee/service/business/PricingParamService.java b/server/services/src/main/java/com/doumee/service/business/PricingParamService.java
similarity index 100%
rename from server/src/main/java/com/doumee/service/business/PricingParamService.java
rename to server/services/src/main/java/com/doumee/service/business/PricingParamService.java
diff --git a/server/src/main/java/com/doumee/service/business/RefundService.java b/server/services/src/main/java/com/doumee/service/business/RefundService.java
similarity index 100%
rename from server/src/main/java/com/doumee/service/business/RefundService.java
rename to server/services/src/main/java/com/doumee/service/business/RefundService.java
diff --git a/server/src/main/java/com/doumee/service/business/RentSiteService.java b/server/services/src/main/java/com/doumee/service/business/RentSiteService.java
similarity index 100%
rename from server/src/main/java/com/doumee/service/business/RentSiteService.java
rename to server/services/src/main/java/com/doumee/service/business/RentSiteService.java
diff --git a/server/src/main/java/com/doumee/service/business/SitesService.java b/server/services/src/main/java/com/doumee/service/business/SitesService.java
similarity index 100%
rename from server/src/main/java/com/doumee/service/business/SitesService.java
rename to server/services/src/main/java/com/doumee/service/business/SitesService.java
diff --git a/server/src/main/java/com/doumee/service/business/TransactionsService.java b/server/services/src/main/java/com/doumee/service/business/TransactionsService.java
similarity index 100%
rename from server/src/main/java/com/doumee/service/business/TransactionsService.java
rename to server/services/src/main/java/com/doumee/service/business/TransactionsService.java
diff --git a/server/src/main/java/com/doumee/service/business/WxBillDetailService.java b/server/services/src/main/java/com/doumee/service/business/WxBillDetailService.java
similarity index 100%
rename from server/src/main/java/com/doumee/service/business/WxBillDetailService.java
rename to server/services/src/main/java/com/doumee/service/business/WxBillDetailService.java
diff --git a/server/src/main/java/com/doumee/service/business/WxBillService.java b/server/services/src/main/java/com/doumee/service/business/WxBillService.java
similarity index 100%
rename from server/src/main/java/com/doumee/service/business/WxBillService.java
rename to server/services/src/main/java/com/doumee/service/business/WxBillService.java
diff --git a/server/src/main/java/com/doumee/service/business/impl/ActionLogServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/ActionLogServiceImpl.java
similarity index 100%
rename from server/src/main/java/com/doumee/service/business/impl/ActionLogServiceImpl.java
rename to server/services/src/main/java/com/doumee/service/business/impl/ActionLogServiceImpl.java
diff --git a/server/src/main/java/com/doumee/service/business/impl/AdServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/AdServiceImpl.java
similarity index 100%
rename from server/src/main/java/com/doumee/service/business/impl/AdServiceImpl.java
rename to server/services/src/main/java/com/doumee/service/business/impl/AdServiceImpl.java
diff --git a/server/src/main/java/com/doumee/service/business/impl/AliBillDetailServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/AliBillDetailServiceImpl.java
similarity index 100%
rename from server/src/main/java/com/doumee/service/business/impl/AliBillDetailServiceImpl.java
rename to server/services/src/main/java/com/doumee/service/business/impl/AliBillDetailServiceImpl.java
diff --git a/server/src/main/java/com/doumee/service/business/impl/AliBillServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/AliBillServiceImpl.java
similarity index 100%
rename from server/src/main/java/com/doumee/service/business/impl/AliBillServiceImpl.java
rename to server/services/src/main/java/com/doumee/service/business/impl/AliBillServiceImpl.java
diff --git a/server/src/main/java/com/doumee/service/business/impl/BikeRepairServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/BikeRepairServiceImpl.java
similarity index 100%
rename from server/src/main/java/com/doumee/service/business/impl/BikeRepairServiceImpl.java
rename to server/services/src/main/java/com/doumee/service/business/impl/BikeRepairServiceImpl.java
diff --git a/server/src/main/java/com/doumee/service/business/impl/BikesServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/BikesServiceImpl.java
similarity index 100%
rename from server/src/main/java/com/doumee/service/business/impl/BikesServiceImpl.java
rename to server/services/src/main/java/com/doumee/service/business/impl/BikesServiceImpl.java
diff --git a/server/src/main/java/com/doumee/service/business/impl/HolidaysServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/HolidaysServiceImpl.java
similarity index 100%
rename from server/src/main/java/com/doumee/service/business/impl/HolidaysServiceImpl.java
rename to server/services/src/main/java/com/doumee/service/business/impl/HolidaysServiceImpl.java
diff --git a/server/src/main/java/com/doumee/service/business/impl/LocksServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/LocksServiceImpl.java
similarity index 100%
rename from server/src/main/java/com/doumee/service/business/impl/LocksServiceImpl.java
rename to server/services/src/main/java/com/doumee/service/business/impl/LocksServiceImpl.java
diff --git a/server/src/main/java/com/doumee/service/business/impl/MemberRidesServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/MemberRidesServiceImpl.java
similarity index 100%
rename from server/src/main/java/com/doumee/service/business/impl/MemberRidesServiceImpl.java
rename to server/services/src/main/java/com/doumee/service/business/impl/MemberRidesServiceImpl.java
diff --git a/server/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
similarity index 66%
rename from server/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
rename to server/services/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
index 37a10c5..5d255d6 100644
--- a/server/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
+++ b/server/services/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
@@ -1,20 +1,33 @@
 package com.doumee.service.business.impl;
 
-import com.doumee.core.model.PageData;
-import com.doumee.core.model.PageWrap;
-import com.doumee.core.utils.Utils;
-import com.doumee.dao.business.MemberMapper;
-import com.doumee.dao.business.model.Member;
-import com.doumee.service.business.MemberService;
+import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.doumee.core.Jwt.JwtPayLoad;
+import com.doumee.core.Jwt.JwtTokenUtil;
+import com.doumee.core.constants.Constants;
+import com.doumee.core.constants.ResponseStatus;
+import com.doumee.core.exception.BusinessException;
+import com.doumee.core.model.PageData;
+import com.doumee.core.model.PageWrap;
+import com.doumee.core.utils.Utils;
+import com.doumee.core.wx.WxMiniConfig;
+import com.doumee.dao.business.MemberMapper;
+import com.doumee.dao.business.model.Member;
+import com.doumee.dao.business.web.request.RegisterRequest;
+import com.doumee.dao.business.web.response.AccountResponse;
+import com.doumee.dao.business.web.response.UserResponse;
+import com.doumee.service.business.MemberService;
+import me.chanjar.weixin.common.error.WxErrorException;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 
 import java.util.List;
+import java.util.Objects;
 
 /**
  * 鐢ㄦ埛淇℃伅琛⊿ervice瀹炵幇
@@ -177,4 +190,78 @@
         QueryWrapper<Member> wrapper = new QueryWrapper<>(member);
         return memberMapper.selectCount(wrapper);
     }
+    @Override
+    public AccountResponse userRegister(RegisterRequest registerRequest){
+        return  new AccountResponse();
+    }
+
+    /**
+     * 鎷夊彇寰俊鎺堟潈
+     * @param code
+     * @param userId
+     */
+    @Override
+    public void wxEmpower(String code,String userId){
+        Member member = memberMapper.selectById(userId);
+        if(Objects.isNull(member)){
+            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈煡璇㈠埌璐︽埛淇℃伅");
+        }
+        try {
+            //鑾峰彇寰俊鏁忔劅鏁版嵁
+            WxMaJscode2SessionResult session = WxMiniConfig.wxMaService.getUserService().getSessionInfo(code);
+            String openId = session.getOpenid();
+            if (com.baomidou.mybatisplus.core.toolkit.StringUtils.isBlank(openId)) {
+                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鑾峰彇openid澶辫触锛佽鑱旂郴绠$悊鍛�");
+            }
+            member.setOpenid(openId);
+            memberMapper.updateById(member);
+            memberMapper.update(null,
+                    new UpdateWrapper<Member>()
+                            .set("openId",null)
+                            .eq("openId",openId)
+                            .ne("id",member.getId()));
+        } catch (WxErrorException e) {
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"寰俊鐧诲綍寮傚父锛佽鑱旂郴绠$悊鍛�");
+        }
+    }
+
+
+    @Override
+    public AccountResponse wxLogin(String code) {
+        try {
+            //鑾峰彇寰俊鏁忔劅鏁版嵁
+            WxMaJscode2SessionResult session = WxMiniConfig.wxMaService.getUserService().getSessionInfo(code);
+            String openId = session.getOpenid();
+            if (com.baomidou.mybatisplus.core.toolkit.StringUtils.isBlank(openId)) {
+                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "鑾峰彇openid澶辫触锛佽鑱旂郴绠$悊鍛�");
+            }
+            Member member = memberMapper.selectOne(new QueryWrapper<Member>().eq("OPENID", openId).eq("ISDELETED", Constants.ZERO).last("limit 1"));
+            AccountResponse accountResponse = new AccountResponse();
+            if (Objects.isNull(member)) {
+                return accountResponse;
+            }
+
+            memberMapper.updateById(member);
+            UserResponse userResponse = getUserInfo(member.getId());
+            JwtPayLoad payLoad = new JwtPayLoad(userResponse.getId());
+            accountResponse.setToken(JwtTokenUtil.generateToken(payLoad));
+            accountResponse.setUserResponse(userResponse);
+            return accountResponse;
+        } catch (WxErrorException e) {
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "寰俊鐧诲綍寮傚父锛佽鑱旂郴绠$悊鍛�");
+        }
+
+    }
+
+    @Override
+    public UserResponse getUserInfo(String id) {
+        Member member = memberMapper.selectById(id);
+        UserResponse userResponse = new UserResponse();
+        BeanUtils.copyProperties(member,userResponse);
+        userResponse.setMobile(member.getPhone());
+
+        return userResponse;
+    }
+
+
 }
diff --git a/server/src/main/java/com/doumee/service/business/impl/PricingDetailServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/PricingDetailServiceImpl.java
similarity index 100%
rename from server/src/main/java/com/doumee/service/business/impl/PricingDetailServiceImpl.java
rename to server/services/src/main/java/com/doumee/service/business/impl/PricingDetailServiceImpl.java
diff --git a/server/src/main/java/com/doumee/service/business/impl/PricingParamServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/PricingParamServiceImpl.java
similarity index 100%
rename from server/src/main/java/com/doumee/service/business/impl/PricingParamServiceImpl.java
rename to server/services/src/main/java/com/doumee/service/business/impl/PricingParamServiceImpl.java
diff --git a/server/src/main/java/com/doumee/service/business/impl/RefundServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/RefundServiceImpl.java
similarity index 100%
rename from server/src/main/java/com/doumee/service/business/impl/RefundServiceImpl.java
rename to server/services/src/main/java/com/doumee/service/business/impl/RefundServiceImpl.java
diff --git a/server/src/main/java/com/doumee/service/business/impl/RentSiteServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/RentSiteServiceImpl.java
similarity index 100%
rename from server/src/main/java/com/doumee/service/business/impl/RentSiteServiceImpl.java
rename to server/services/src/main/java/com/doumee/service/business/impl/RentSiteServiceImpl.java
diff --git a/server/src/main/java/com/doumee/service/business/impl/SitesServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/SitesServiceImpl.java
similarity index 100%
rename from server/src/main/java/com/doumee/service/business/impl/SitesServiceImpl.java
rename to server/services/src/main/java/com/doumee/service/business/impl/SitesServiceImpl.java
diff --git a/server/src/main/java/com/doumee/service/business/impl/TransactionsServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/TransactionsServiceImpl.java
similarity index 100%
rename from server/src/main/java/com/doumee/service/business/impl/TransactionsServiceImpl.java
rename to server/services/src/main/java/com/doumee/service/business/impl/TransactionsServiceImpl.java
diff --git a/server/src/main/java/com/doumee/service/business/impl/WxBillDetailServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/WxBillDetailServiceImpl.java
similarity index 100%
rename from server/src/main/java/com/doumee/service/business/impl/WxBillDetailServiceImpl.java
rename to server/services/src/main/java/com/doumee/service/business/impl/WxBillDetailServiceImpl.java
diff --git a/server/src/main/java/com/doumee/service/business/impl/WxBillServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/WxBillServiceImpl.java
similarity index 100%
rename from server/src/main/java/com/doumee/service/business/impl/WxBillServiceImpl.java
rename to server/services/src/main/java/com/doumee/service/business/impl/WxBillServiceImpl.java
diff --git a/server/src/main/java/com/doumee/service/common/CaptchaService.java b/server/services/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/services/src/main/java/com/doumee/service/common/CaptchaService.java
diff --git a/server/src/main/java/com/doumee/service/proxy/CacheProxy.java b/server/services/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/services/src/main/java/com/doumee/service/proxy/CacheProxy.java
diff --git a/server/src/main/java/com/doumee/service/system/SystemDataPermissionService.java b/server/services/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/services/src/main/java/com/doumee/service/system/SystemDataPermissionService.java
diff --git a/server/src/main/java/com/doumee/service/system/SystemDepartmentService.java b/server/services/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/services/src/main/java/com/doumee/service/system/SystemDepartmentService.java
diff --git a/server/src/main/java/com/doumee/service/system/SystemDepartmentUserService.java b/server/services/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/services/src/main/java/com/doumee/service/system/SystemDepartmentUserService.java
diff --git a/server/src/main/java/com/doumee/service/system/SystemDictDataService.java b/server/services/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/services/src/main/java/com/doumee/service/system/SystemDictDataService.java
diff --git a/server/src/main/java/com/doumee/service/system/SystemDictService.java b/server/services/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/services/src/main/java/com/doumee/service/system/SystemDictService.java
diff --git a/server/src/main/java/com/doumee/service/system/SystemLoginLogService.java b/server/services/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/services/src/main/java/com/doumee/service/system/SystemLoginLogService.java
diff --git a/server/src/main/java/com/doumee/service/system/SystemLoginService.java b/server/services/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/services/src/main/java/com/doumee/service/system/SystemLoginService.java
diff --git a/server/src/main/java/com/doumee/service/system/SystemMenuService.java b/server/services/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/services/src/main/java/com/doumee/service/system/SystemMenuService.java
diff --git a/server/src/main/java/com/doumee/service/system/SystemPermissionService.java b/server/services/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/services/src/main/java/com/doumee/service/system/SystemPermissionService.java
diff --git a/server/src/main/java/com/doumee/service/system/SystemPositionService.java b/server/services/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/services/src/main/java/com/doumee/service/system/SystemPositionService.java
diff --git a/server/src/main/java/com/doumee/service/system/SystemPositionUserService.java b/server/services/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/services/src/main/java/com/doumee/service/system/SystemPositionUserService.java
diff --git a/server/src/main/java/com/doumee/service/system/SystemRoleMenuService.java b/server/services/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/services/src/main/java/com/doumee/service/system/SystemRoleMenuService.java
diff --git a/server/src/main/java/com/doumee/service/system/SystemRolePermissionService.java b/server/services/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/services/src/main/java/com/doumee/service/system/SystemRolePermissionService.java
diff --git a/server/src/main/java/com/doumee/service/system/SystemRoleService.java b/server/services/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/services/src/main/java/com/doumee/service/system/SystemRoleService.java
diff --git a/server/src/main/java/com/doumee/service/system/SystemTraceLogService.java b/server/services/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/services/src/main/java/com/doumee/service/system/SystemTraceLogService.java
diff --git a/server/src/main/java/com/doumee/service/system/SystemUserRoleService.java b/server/services/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/services/src/main/java/com/doumee/service/system/SystemUserRoleService.java
diff --git a/server/src/main/java/com/doumee/service/system/SystemUserService.java b/server/services/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/services/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/services/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/services/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/services/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/services/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/services/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/services/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/services/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/services/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/services/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/services/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/services/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/services/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/services/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/services/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/services/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/services/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/services/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/services/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/services/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/services/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/services/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/services/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/services/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/services/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/services/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/services/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/services/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/services/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/services/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/services/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/services/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/services/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/services/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/services/src/main/java/com/doumee/service/system/impl/SystemUserServiceImpl.java
diff --git a/server/src/main/resources/application-dev.yml b/server/services/src/main/resources/application-dev.yml
similarity index 68%
rename from server/src/main/resources/application-dev.yml
rename to server/services/src/main/resources/application-dev.yml
index c8a78a1..b783443 100644
--- a/server/src/main/resources/application-dev.yml
+++ b/server/services/src/main/resources/application-dev.yml
@@ -1,7 +1,3 @@
-# WEB鏈嶅姟鍣ㄩ厤缃�
-server:
-  port: 10012
-
 spring:
   # 鏁版嵁婧愰厤缃�
   datasource:
@@ -43,3 +39,19 @@
   enabled: true
   # 绂佺敤swagger鏃剁殑閲嶅畾鍚戝湴鍧�
   redirect-uri: /
+
+########################寰俊鏀粯鐩稿叧閰嶇疆########################
+wx:
+  pay:
+    appId: wx6b8c6d9df01fbe1e
+    appSecret: 8ae8fbe2e4b9866439a87d64a42b9214
+    mchId: 1229817002
+    mchKey: u4TSNtv0wFP7WRfnxBgijYOtRhS9FvlM
+    notifyUrl: https://dmtest.ahapp.net/martempo_interface/web/api/wxPayNotify
+    keyPath: /usr/local/apiclient_cert.p12
+
+tencent:
+  map:
+    remoteHost: https://apis.map.qq.com
+    appKey: 3AYBZ-I5R3V-2BVP3-UWBDQ-ETBM5-B2BBQ
+
diff --git a/server/src/main/resources/application-pro.yml b/server/services/src/main/resources/application-pro.yml
similarity index 100%
rename from server/src/main/resources/application-pro.yml
rename to server/services/src/main/resources/application-pro.yml
diff --git a/server/src/main/resources/application-test.yml b/server/services/src/main/resources/application-test.yml
similarity index 100%
rename from server/src/main/resources/application-test.yml
rename to server/services/src/main/resources/application-test.yml
diff --git a/server/src/main/resources/banner.txt b/server/services/src/main/resources/banner.txt
similarity index 100%
rename from server/src/main/resources/banner.txt
rename to server/services/src/main/resources/banner.txt
diff --git a/server/src/main/resources/logback-spring.xml b/server/services/src/main/resources/logback-spring.xml
similarity index 100%
rename from server/src/main/resources/logback-spring.xml
rename to server/services/src/main/resources/logback-spring.xml
diff --git a/server/src/main/resources/mappers/SystemDataPermissionMapper.xml b/server/services/src/main/resources/mappers/SystemDataPermissionMapper.xml
similarity index 100%
rename from server/src/main/resources/mappers/SystemDataPermissionMapper.xml
rename to server/services/src/main/resources/mappers/SystemDataPermissionMapper.xml
diff --git a/server/src/main/resources/mappers/SystemDepartmentMapper.xml b/server/services/src/main/resources/mappers/SystemDepartmentMapper.xml
similarity index 100%
rename from server/src/main/resources/mappers/SystemDepartmentMapper.xml
rename to server/services/src/main/resources/mappers/SystemDepartmentMapper.xml
diff --git a/server/src/main/resources/mappers/SystemDictDataMapper.xml b/server/services/src/main/resources/mappers/SystemDictDataMapper.xml
similarity index 100%
rename from server/src/main/resources/mappers/SystemDictDataMapper.xml
rename to server/services/src/main/resources/mappers/SystemDictDataMapper.xml
diff --git a/server/src/main/resources/mappers/SystemDictMapper.xml b/server/services/src/main/resources/mappers/SystemDictMapper.xml
similarity index 100%
rename from server/src/main/resources/mappers/SystemDictMapper.xml
rename to server/services/src/main/resources/mappers/SystemDictMapper.xml
diff --git a/server/src/main/resources/mappers/SystemMenuMapper.xml b/server/services/src/main/resources/mappers/SystemMenuMapper.xml
similarity index 100%
rename from server/src/main/resources/mappers/SystemMenuMapper.xml
rename to server/services/src/main/resources/mappers/SystemMenuMapper.xml
diff --git a/server/src/main/resources/mappers/SystemPermissionMapper.xml b/server/services/src/main/resources/mappers/SystemPermissionMapper.xml
similarity index 100%
rename from server/src/main/resources/mappers/SystemPermissionMapper.xml
rename to server/services/src/main/resources/mappers/SystemPermissionMapper.xml
diff --git a/server/src/main/resources/mappers/SystemPositionMapper.xml b/server/services/src/main/resources/mappers/SystemPositionMapper.xml
similarity index 100%
rename from server/src/main/resources/mappers/SystemPositionMapper.xml
rename to server/services/src/main/resources/mappers/SystemPositionMapper.xml
diff --git a/server/src/main/resources/mappers/SystemRoleMapper.xml b/server/services/src/main/resources/mappers/SystemRoleMapper.xml
similarity index 100%
rename from server/src/main/resources/mappers/SystemRoleMapper.xml
rename to server/services/src/main/resources/mappers/SystemRoleMapper.xml
diff --git a/server/src/main/resources/mappers/SystemUserMapper.xml b/server/services/src/main/resources/mappers/SystemUserMapper.xml
similarity index 100%
rename from server/src/main/resources/mappers/SystemUserMapper.xml
rename to server/services/src/main/resources/mappers/SystemUserMapper.xml
diff --git a/server/src/main/java/com/doumee/api/BaseController.java b/server/src/main/java/com/doumee/api/BaseController.java
deleted file mode 100644
index 5cbe50f..0000000
--- a/server/src/main/java/com/doumee/api/BaseController.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package com.doumee.api;
-
-import com.doumee.core.model.LoginUserInfo;
-import lombok.extern.slf4j.Slf4j;
-import org.apache.shiro.SecurityUtils;
-import org.springframework.web.context.request.RequestContextHolder;
-import org.springframework.web.context.request.ServletRequestAttributes;
-
-import javax.servlet.http.HttpServletRequest;
-
-/**
- * Controller鍩虹被
- * @author Eva.Caesar Liu
- * @date 2022/03/15 09:54
- */
-@Slf4j
-public class BaseController {
-
-    /**
-     * 鑾峰彇褰撳墠鐧诲綍鐢ㄦ埛
-     * @author Eva.Caesar Liu
-     * @date 2022/03/15 09:54
-     */
-    protected LoginUserInfo getLoginUser () {
-        return (LoginUserInfo)SecurityUtils.getSubject().getPrincipal();
-    }
-
-    /**
-     * 寰楀埌request瀵硅薄
-     *
-     * @return
-     */
-    public HttpServletRequest getRequest() {
-        HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
-        return request;
-    }
-
-}
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 751ccaf..0000000
--- a/server/src/main/java/com/doumee/api/common/PublicController.java
+++ /dev/null
@@ -1,477 +0,0 @@
-package com.doumee.api.common;
-
-import com.doumee.api.BaseController;
-import com.doumee.biz.system.SystemDictDataBiz;
-import com.doumee.core.constants.Constants;
-import com.doumee.core.model.ApiResponse;
-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 java.io.*;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Scanner;
-import java.util.UUID;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import net.lingala.zip4j.core.ZipFile;
-import net.lingala.zip4j.model.FileHeader;
-import net.sf.json.JSONObject;
-import org.apache.commons.codec.digest.DigestUtils;
-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;
-
-/**
- * 鍏叡鎺ュ彛
- * @author 姹熻箘韫�
- * @date 2022/03/15 13:58
- */
-@RestController
-@RequestMapping("/public")
-@Api(tags = "鍏叡鎺ュ彛")
-public class PublicController extends BaseController {
-
-    @Autowired
-    private SystemDictDataBiz systemDictDataBiz;
-
-    /**
-     *  涓婁紶
-     *
-     * @param folder
-     * @param request
-     * @param response
-     * @throws Exception
-     */
-    @ApiOperation(value = "涓婁紶", notes = "涓婁紶", httpMethod = "POST", position = 6)
-    @ApiImplicitParams({
-            @ApiImplicitParam(name = "folder", value = "鏂囦欢澶� 澶村儚锛歛vatar 鏂囦欢锛歶pload ", required = true, paramType = "query", dataType = "String", dataTypeClass = String.class),
-    })
-    @PostMapping(value = "/upload", headers = "content-type=multipart/form-data")
-    public ApiResponse uploadMobile(String folder, HttpServletRequest request, HttpServletResponse response) throws Exception {
-        MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
-        return upload(multipartRequest, response, "public/"+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 = "鏂囦欢澶� 澶村儚锛歛vatar 鏂囦欢锛歶pload ", required = true, paramType = "query", dataType = "String", dataTypeClass = String.class),
-    })
-    @PostMapping(value = "/uploadRichText", headers = "content-type=multipart/form-data")
-    public ApiResponse uploadRichText( HttpServletRequest request, HttpServletResponse response) throws Exception {
-        MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
-        return upload(multipartRequest, response, "public/upload/",
-                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 ApiResponse 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", 0);
-                        context.put("message", "瀵逛笉璧凤紝鏂囦欢鏍煎紡\".exe\"涓婁紶鏈夎锛�");
-                        return ApiResponse.failed("瀵逛笉璧凤紝鏂囦欢鏍煎紡\".exe\"涓婁紶鏈夎锛�");
-                    }
-                    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("error", 0);
-                        context.put("code", 200);
-                        context.put("success", true);
-                        context.put("url", resourcePath + key);
-                        context.put("imgaddr", tempFileName);
-                        context.put("imgname", fileName);
-                        context.put("originname", originname);
-//                        ApiResponse.writerJson(response, context);
-                        return ApiResponse.success(context);
-                    } else {
-                        // 绉诲姩澶辫触
-                        context.put("code", 0);
-                        context.put("success", false);
-                        context.put("message", "涓婁紶澶辫触");
-//                        ApiResponse.writerJson(response, context);
-                        return ApiResponse.failed("涓婁紶澶辫触");
-                    }
-                }
-            }
-        }
-        context.put("code", 0);
-        context.put("message", "涓婁紶澶辫触");
-//        ApiResponse.writerJson(response, context);
-        return ApiResponse.failed("涓婁紶澶辫触");
-    }
-
-
-    /**
-     *  鍘嬬缉鍖呬笂浼�
-     *
-     * @param request
-     * @param response
-     * @throws Exception
-     */
-    @ApiOperation(value = "鍘嬬缉鍖呬笂浼�", notes = "涓婁紶", httpMethod = "POST", position = 6)
-    @PostMapping(value = "/zipUpload", headers = "content-type=multipart/form-data")
-    public ApiResponse zipUpload(HttpServletRequest request, HttpServletResponse response) throws Exception {
-        MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
-        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)) {
-            Iterator<String> it = multipartRequest.getFileNames();
-            while (it.hasNext()) {
-                MultipartFile file = multipartRequest.getFile((String) it.next());// file
-                // 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("."));
-                    }
-                    String uuid = UUID.randomUUID().toString();
-                    String fileName = uuid + nfix;
-                    File newFile = new File(  systemDictDataBiz.queryByCode(Constants.OSS,Constants.TESTCASE_UPLOAD_PATH).getCode() +"/"+fileName);
-                    file.transferTo(newFile);
-                    return this.Uncompress(systemDictDataBiz.queryByCode(Constants.OSS,Constants.TESTCASE_UPLOAD_PATH).getCode() +"/"+fileName , uuid);
-                }
-            }
-        }
-        return ApiResponse.failed("涓婁紶鏁版嵁鏂囦欢寮傚父");
-    }
-
-
-    public ApiResponse Uncompress(String filePath,String uuid) {
-        Map<String,Object> test_cases = new LinkedHashMap<>();
-        String fileSavePath = filePath.replace(".zip","")+"/";
-            try {
-                File zipFile = new File(filePath);
-                ZipFile zFile = new ZipFile(zipFile);// 棣栧厛鍒涘缓ZipFile鎸囧悜纾佺洏涓婄殑.zip鏂囦欢
-                zFile.setFileNameCharset("GBK");
-                File destDir = new File(fileSavePath);// 瑙e帇鐩綍
-                zFile.extractAll(fileSavePath);      // 灏嗘枃浠舵娊鍑哄埌瑙e帇鐩綍(瑙e帇)
-                List<net.lingala.zip4j.model.FileHeader > headerList = zFile.getFileHeaders();
-                List<File> extractedFileList= new ArrayList<File>();
-                for(FileHeader fileHeader : headerList) {
-                    if (!fileHeader.isDirectory()) {
-                        System.out.println(fileHeader.getFileName());
-                        extractedFileList.add(new File(destDir,fileHeader.getFileName()));
-                    }
-                }
-
-                File [] extractedFiles = new File[extractedFileList.size()];
-                extractedFileList.toArray(extractedFiles);
-                Map<String,Object> resultMap = new HashMap<>();
-                List<Map<String,Object>> resultList = new ArrayList<>();
-                List<Map<String,String>> inFileList = new ArrayList<>();
-                List<Map<String,String>> outFileList = new ArrayList<>();
-                Integer inNum = 0;
-                Integer outNum = 0;
-                //澶勭悊瑙e帇鏂囦欢  鏂囦欢鍚嶇О锛堟棤鍚庣紑锛夈�佹枃浠跺叏鍚嶇О銆佹枃浠惰矾寰�
-                for(File f:extractedFileList){
-                    String fileName = f.getName();
-                    String destDirFilePath = f.getAbsolutePath();
-                    if(fileName.indexOf(".in")>=0){
-                        inNum = inNum + 1;
-                        Map<String,String> inFileMap = new HashMap<>();
-                        inFileMap.put("fileName",fileName);
-                        inFileMap.put("destDirFilePath",destDirFilePath);
-                        inFileMap.put("checkName",fileName.replace(".in",""));
-                        inFileList.add(inFileMap);
-                    }else if(fileName.indexOf(".out")>=0){
-                        outNum = outNum + 1 ;
-                        Map<String,String> outFileMap = new HashMap<>();
-                        outFileMap.put("fileName",fileName);
-                        outFileMap.put("destDirFilePath",destDirFilePath);
-                        outFileMap.put("checkName",fileName.replace(".out",""));
-                        outFileList.add(outFileMap);
-                    }else {
-                        continue;
-                    }
-                }
-                //杈撳叆杈撳嚭鏂囦欢鏁伴噺涓嶄竴鑷达紝杩斿洖寮傚父
-                if(inNum != outNum || inNum == 0 ){
-                    return ApiResponse.failed("杈撳叆鏂囦欢涓庤緭鍑烘枃浠舵暟閲忎笉涓�鑷�");
-                }
-                //璁$畻骞冲潎鍒嗗�� 榛樿鎬诲垎 100鍒� 鑻ュ瓨鍦ㄤ綑鏁帮紝鍚戜笂鍙栨暣
-                int avgScore = 100/inFileList.size();
-                if(100 % inFileList.size() > 0){
-                    avgScore = avgScore  + 1  ;
-                }
-                int index = 1;
-                //鍒ゆ柇杈撳叆杈撳嚭鏂囦欢鍚嶇О鏄惁瀵瑰簲锛屼笉瀵瑰簲 鎻愮ず閿欒淇℃伅
-
-
-
-
-                Collections.sort(inFileList, new Comparator<Map<String,String>>() {
-                    @Override
-                    public int compare(Map<String,String> o1, Map<String,String> o2) {
-                        if(Integer.valueOf(o1.get("checkName")) > Integer.valueOf(o2.get("checkName"))){
-                            return 1;
-                        }else
-                        if(Integer.valueOf(o1.get("checkName")) < Integer.valueOf(o2.get("checkName"))){
-                            return -1;
-                        }
-                        return Integer.valueOf(o2.get("checkName")).compareTo(Integer.valueOf(o1.get("checkName")));
-                    }
-                });
-
-
-                for (Map<String,String> inMap:inFileList) {
-                    //鏈�缁堣繑鍥炶鏁版嵁
-                    Map<String,Object> resultLineMap = new HashMap<>();
-                    resultLineMap.put("input_name",inMap.get("fileName"));
-                    resultLineMap.put("score",avgScore);
-                    boolean isCheck = false;
-                    for (Map<String,String> outMap:outFileList) {
-                        if (inMap.get("checkName").equals(outMap.get("checkName"))){
-                            resultLineMap.put("output_name",outMap.get("fileName"));
-                            Map<String,Object> test_cases_data = new HashMap<>();
-                            test_cases_data.put("stripped_output_md5",DigestUtils.md5Hex(readFileContent(fileSavePath + outMap.get("fileName"))));
-                            File inFile = new File(inMap.get("destDirFilePath"));
-                            File outFile = new File(outMap.get("destDirFilePath"));
-                            test_cases_data.put("input_size",inFile.length());
-                            test_cases_data.put("output_size",outFile.length());
-                            test_cases_data.put("input_name",inMap.get("fileName"));
-                            test_cases_data.put("output_name",outMap.get("fileName"));
-                            test_cases.put(Integer.toString(index),test_cases_data);
-                            isCheck = true;
-                            break;
-                        }
-                    }
-                    if(!isCheck){
-                        return ApiResponse.failed("鏈煡璇㈠埌杈撳叆鏂囦欢銆�" + inMap.get("fileName") +"銆戝搴旇緭鍑烘枃浠�");
-                    }
-                    resultList.add(resultLineMap);
-                    index = index + 1 ;
-                }
-                String infoFilePath  = fileSavePath+"info";
-                //info鏂囦欢鍒涘缓
-                File infoFile = new File(infoFilePath);
-                infoFile.createNewFile();
-                //info鏂囦欢鍐欏叆鏂囦欢
-                Map<String,Object> infoMap = new HashMap<>();
-                infoMap.put("spj",false);
-                infoMap.put("test_cases",test_cases);
-                writeFileContent(infoFilePath, JSONObject.fromObject(infoMap).toString());
-                resultMap.put("dataList",resultList);
-                resultMap.put("test_case_id",uuid);
-                //鍒犻櫎涓婁紶鐨剒ip鏂囦欢锛堜笉闇�瑕侊級
-//                zipFile.delete();
-                //寮�濮嬪紓姝ヤ笂浼犲埌璇勬祴鏈虹殑ftp鏈嶅姟鍣�
-//                judgeServerService.startFtpUpload(fileSavePath);
-                return ApiResponse.success(resultMap);
-            }catch(Exception e) {
-                return ApiResponse.failed("鏂囦欢瑙e帇寮傚父");
-            }
-        }
-
-    public static String readFileContent(String filePath){
-        StringBuilder sbd = new StringBuilder();
-        try (Scanner sc = new Scanner(new FileReader(filePath))) {
-            while (sc.hasNextLine()) {  //鎸夎璇诲彇瀛楃涓�
-                sbd.append(sc.nextLine()+"\n");
-            }
-        }catch (Exception e){
-            return "鏈鍙栧埌鏂囦欢鍐呭";
-        }
-        String str =sbd.toString();
-        if(str.endsWith("\n")&& str.length()>0){
-            //鍘婚櫎鏈熬绌虹櫧鎹㈣
-            str = str.substring(0,str.length()-1);
-        }
-        return str.trim();
-    }
-
-
-
-
-    /**
-     * 鍚戞枃浠朵腑鍐欏叆鍐呭
-     *
-     * @param filepath 鏂囦欢璺緞涓庡悕绉�
-     * @param newstr   鍐欏叆鐨勫唴瀹�
-     * @return
-     * @throws IOException
-     */
-    public static boolean writeFileContent(String filepath, String newstr) throws IOException {
-        Boolean bool = false;
-        String filein = newstr + "\r\n";//鏂板啓鍏ョ殑琛岋紝鎹㈣
-//        String temp = "";
-//        FileInputStream fis = null;
-//        InputStreamReader isr = null;
-//        BufferedReader br = null;
-//        FileOutputStream fos = null;
-        PrintWriter pw = null;
-        try {
-            File file = new File(filepath);//鏂囦欢璺緞(鍖呮嫭鏂囦欢鍚嶇О)
-            //灏嗘枃浠惰鍏ヨ緭鍏ユ祦
-     /*       fis = new FileInputStream(file);
-            isr = new InputStreamReader(fis);
-            br = new BufferedReader(isr);
-            //鏂囦欢鍘熸湁鍐呭
-            for (int i = 0; (temp = br.readLine()) != null; i++) {
-                buffer.append(temp);
-                // 琛屼笌琛屼箣闂寸殑鍒嗛殧绗� 鐩稿綋浜庘�淺n鈥�
-                buffer = buffer.append(System.getProperty("line.separator"));
-            }
-            buffer.append(filein);*/
-            StringBuffer buffer = new StringBuffer(filein);
-//            fos = new FileOutputStream(file);
-            pw = new PrintWriter(file);
-            pw.write(buffer.toString().toCharArray());
-            pw.flush();
-            bool = true;
-        } catch (Exception e) {
-            // TODO: handle exception
-            e.printStackTrace();
-        } finally {
-            //涓嶈蹇樿鍏抽棴
-            if (pw != null) {
-                pw.close();
-            }
-        /*
-            if (fos != null) {
-                fos.close();
-            }
-            if (br != null) {
-                br.close();
-            }
-            if (isr != null) {
-                isr.close();
-            }
-            if (fis != null) {
-                fis.close();
-            }*/
-        }
-        return bool;
-    }
-
-
-   /*
-    public ApiResponse uploadBatchFile(HttpServletResponse response, String folder, String bucketName,
-                              String access_id, String access_key, String resourcePath, String endpoint,MultipartFile[] files) throws Exception {
-        response.setCharacterEncoding("UTF-8");
-        response.setContentType("text/html;charset=UTF-8");
-        Map<String,Object> resultMap = new HashMap<>();
-        List<Map<String,Object>> listMap = new ArrayList<>();
-        if (null != files && files.length > 0) {
-            //鐢ㄤ簬鍒ゆ柇鏂囦欢涓暟
-            final int length = files.length;
-            for (MultipartFile file : files) {
-                final String originalFilename = file.getOriginalFilename();
-                assert originalFilename != 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("."));
-                }
-                Map<String, Object> context = new HashMap<>();
-                if ( StringUtils.equalsIgnoreCase(nfix, ".exe")) {
-                    context.put("code", 0);
-                    context.put("message", "瀵逛笉璧凤紝鏂囦欢鏍煎紡\".exe\"涓婁紶鏈夎锛�");
-                    return ApiResponse.failed("瀵逛笉璧凤紝鏂囦欢鏍煎紡\".exe\"涓婁紶鏈夎锛�");
-                }
-                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("error", 0);
-                    context.put("code", 200);
-                    context.put("success", true);
-                    context.put("url", resourcePath + key);
-                    context.put("imgaddr", tempFileName);
-                    context.put("imgname", fileName);
-                    context.put("originname", originname);
-                } else {
-                    // 绉诲姩澶辫触
-                    resultMap.put("code", 0);
-                    resultMap.put("success", false);
-                    resultMap.put("message", "涓婁紶澶辫触");
-                }
-                listMap.add(context);
-            }
-            resultMap.put("fileList",listMap);
-            return ApiResponse.success(resultMap);
-        }
-        return ApiResponse.failed("涓婁紶澶辫触");
-    }
-
-    @ApiOperation(value = "瀵屾枃鏈枃浠朵笂浼�", notes = "瀵屾枃鏈枃浠朵笂浼�", httpMethod = "POST", position = 6)
-    @PostMapping(value = "/uploadBatch", headers = "content-type=multipart/form-data")
-    public void uploadBatch( HttpServletRequest request, HttpServletResponse response,MultipartFile[] files) throws Exception {
-        uploadBatchFile(response, "public/upload/",
-                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(),files);
-    }*/
-
-}
-
-
diff --git a/server/src/main/java/com/doumee/config/shiro/ShiroRedisSessionDAO.java b/server/src/main/java/com/doumee/config/shiro/ShiroRedisSessionDAO.java
deleted file mode 100644
index f97764f..0000000
--- a/server/src/main/java/com/doumee/config/shiro/ShiroRedisSessionDAO.java
+++ /dev/null
@@ -1,145 +0,0 @@
-package com.doumee.config.shiro;
-import java.io.Serializable;
-
-import java.util.Collection;
-
-import java.util.concurrent.TimeUnit;
-
-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;
-
-//@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鎿嶄綔绫伙紝瀵硅繖涓娇鐢ㄤ笉鐔熸倝鐨勶紝鍙互鍙傝�冨墠闈㈢殑鍗氬
-
-//    @Autowired
-//    private StringRedisTemplate redisTemplate;
-    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/web/pom.xml b/server/web/pom.xml
new file mode 100644
index 0000000..595ac4f
--- /dev/null
+++ b/server/web/pom.xml
@@ -0,0 +1,56 @@
+<?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>parkbike</artifactId>
+        <version>1.0.0-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>web</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>services</artifactId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <finalName>web</finalName>
+        <resources>
+            <resource>
+                <directory>src/main/resources</directory>
+            </resource>
+        </resources>
+
+        <plugins>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+                <configuration>
+                    <fork>true</fork>
+                    <mainClass>com.doumee.InterfaceApplication</mainClass>
+                    <layout>ZIP</layout>
+                </configuration>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>repackage</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+
+        </plugins>
+    </build>
+</project>
\ No newline at end of file
diff --git a/server/src/main/java/com/doumee/Application.java b/server/web/src/main/java/com/doumee/InterfaceApplication.java
similarity index 78%
copy from server/src/main/java/com/doumee/Application.java
copy to server/web/src/main/java/com/doumee/InterfaceApplication.java
index 5a19b7b..d29475d 100644
--- a/server/src/main/java/com/doumee/Application.java
+++ b/server/web/src/main/java/com/doumee/InterfaceApplication.java
@@ -5,23 +5,21 @@
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.context.ApplicationContext;
-
 import org.springframework.scheduling.annotation.EnableAsync;
 
 /**
  * 鍚姩绫�
  * @author Eva.Caesar Liu
- * @date 2022/03/15 09:54
+ * @date 2023/03/21 14:49
  */
 @Slf4j
 @SpringBootApplication
 @EnableAsync
 @MapperScan("com.doumee.dao")
-public class Application {
+public class InterfaceApplication {
 
     public static void main(String[] args) {
-        ApplicationContext context = SpringApplication.run(Application.class);
+        ApplicationContext context = SpringApplication.run(InterfaceApplication.class);
         context.getEnvironment();
     }
-
 }
diff --git a/server/web/src/main/java/com/doumee/Main.java b/server/web/src/main/java/com/doumee/Main.java
new file mode 100644
index 0000000..ada0d0d
--- /dev/null
+++ b/server/web/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/web/src/main/java/com/doumee/api/BaseController.java b/server/web/src/main/java/com/doumee/api/BaseController.java
new file mode 100644
index 0000000..bcff305
--- /dev/null
+++ b/server/web/src/main/java/com/doumee/api/BaseController.java
@@ -0,0 +1,24 @@
+package com.doumee.api;
+
+import com.doumee.core.model.LoginUserInfo;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.shiro.SecurityUtils;
+
+/**
+ * Controller鍩虹被
+ * @author Eva.Caesar Liu
+ * @date 2023/03/21 14:49
+ */
+@Slf4j
+public class BaseController {
+
+    /**
+     * 鑾峰彇褰撳墠鐧诲綍鐢ㄦ埛
+     * @author Eva.Caesar Liu
+     * @date 2023/03/21 14:49
+     */
+    protected LoginUserInfo getLoginUser () {
+        return (LoginUserInfo)SecurityUtils.getSubject().getPrincipal();
+    }
+
+}
diff --git a/server/src/main/java/com/doumee/api/common/CaptchaController.java b/server/web/src/main/java/com/doumee/api/common/CaptchaController.java
similarity index 94%
rename from server/src/main/java/com/doumee/api/common/CaptchaController.java
rename to server/web/src/main/java/com/doumee/api/common/CaptchaController.java
index 45813e1..f79c623 100644
--- a/server/src/main/java/com/doumee/api/common/CaptchaController.java
+++ b/server/web/src/main/java/com/doumee/api/common/CaptchaController.java
@@ -13,7 +13,7 @@
 
 /**
  * @author Eva.Caesar Liu
- * @date 2022/03/15 09:54
+ * @date 2023/03/21 14:49
  */
 @Api(tags = "鍥剧墖楠岃瘉鐮佹帴鍙�")
 @Trace(exclude = true)
@@ -26,7 +26,7 @@
 
     /**
      * @author Eva.Caesar Liu
-     * @date 2022/03/15 09:54
+     * @date 2023/03/21 14:49
      */
     @ApiOperation("鑾峰彇鍥剧墖楠岃瘉鐮�")
     @GetMapping("/captcha")
diff --git a/server/web/src/main/java/com/doumee/api/common/PublicController.java b/server/web/src/main/java/com/doumee/api/common/PublicController.java
new file mode 100644
index 0000000..e118c5d
--- /dev/null
+++ b/server/web/src/main/java/com/doumee/api/common/PublicController.java
@@ -0,0 +1,324 @@
+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.constants.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.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/web/src/main/java/com/doumee/api/web/AccountApi.java b/server/web/src/main/java/com/doumee/api/web/AccountApi.java
new file mode 100644
index 0000000..44011bc
--- /dev/null
+++ b/server/web/src/main/java/com/doumee/api/web/AccountApi.java
@@ -0,0 +1,86 @@
+package com.doumee.api.web;
+
+import com.doumee.core.annotation.LoginRequired;
+import com.doumee.core.annotation.trace.Trace;
+import com.doumee.core.model.ApiResponse;
+import com.doumee.dao.business.web.request.RegisterRequest;
+import com.doumee.dao.business.web.response.AccountResponse;
+import com.doumee.dao.business.web.response.UserResponse;
+import com.doumee.service.business.MemberService;
+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.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * Created by IntelliJ IDEA.
+ *
+ * @Author : Rk
+ * @create 2023/5/5 16:02
+ */
+
+@Api(tags = "1銆佺櫥褰曚笟鍔�")
+@Trace(exclude = true)
+@RestController
+@RequestMapping("/web/account")
+@Slf4j
+public class AccountApi extends ApiController{
+
+    @Autowired
+    private MemberService memberService;
+
+    @ApiOperation(value = "鐢ㄦ埛娉ㄥ唽", notes = "灏忕▼搴忕")
+    @PostMapping("/userRegister")
+    public ApiResponse<AccountResponse> userRegister(@RequestBody RegisterRequest registerRequest) {
+        return  ApiResponse.success("鎿嶄綔鎴愬姛",memberService.userRegister(registerRequest));
+    }
+
+    @Trace
+    @LoginRequired
+    @ApiOperation(value = "寰俊鎺堟潈锛堢櫥褰曞悗锛�", notes = "灏忕▼搴忕")
+    @GetMapping("/wxEmpower")
+    @ApiImplicitParams({
+            @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "鐢ㄦ埛token鍊�", required = true),
+            @ApiImplicitParam(paramType = "query", dataType = "String", name = "code", value = "寰俊code", required = true)
+    })
+    public ApiResponse wxEmpower(@RequestParam String code) {
+        memberService.wxEmpower(code,getMemberId());
+        return  ApiResponse.success("鎿嶄綔鎴愬姛");
+    }
+
+
+
+
+    @Trace
+    @ApiOperation(value = "寰俊鎺堟潈", notes = "灏忕▼搴忕")
+    @GetMapping("/wxLogin")
+    @ApiImplicitParams({
+            @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "鐢ㄦ埛token鍊�", required = true),
+            @ApiImplicitParam(paramType = "query", dataType = "String", name = "code", value = "寰俊code", required = true)
+    })
+    public ApiResponse<AccountResponse> wxLogin(@RequestParam String code) {
+        return  ApiResponse.success("鎿嶄綔鎴愬姛",memberService.wxLogin(code));
+    }
+
+
+    @LoginRequired
+    @ApiOperation(value = "鑾峰彇鐢ㄦ埛淇℃伅", notes = "灏忕▼搴忕")
+    @GetMapping("/getUserInfo")
+    @ApiImplicitParams({
+            @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "鐢ㄦ埛token鍊�", required = true),
+    })
+    public ApiResponse<UserResponse> getUserInfo() {
+        UserResponse userResponse = memberService.getUserInfo(getMemberId());
+        return  ApiResponse.success("鏌ヨ鎴愬姛",userResponse);
+    }
+
+
+
+}
+
+
+
+
diff --git a/server/web/src/main/java/com/doumee/api/web/ApiController.java b/server/web/src/main/java/com/doumee/api/web/ApiController.java
new file mode 100644
index 0000000..cf76fae
--- /dev/null
+++ b/server/web/src/main/java/com/doumee/api/web/ApiController.java
@@ -0,0 +1,60 @@
+package com.doumee.api.web;
+
+import com.doumee.core.Jwt.JwtTokenUtil;
+import com.doumee.core.constants.ResponseStatus;
+import com.doumee.core.exception.BusinessException;
+import com.doumee.dao.business.web.response.UserResponse;
+import com.doumee.service.business.MemberService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
+
+import javax.servlet.http.HttpServletRequest;
+
+/**
+ * Controller鍩虹被
+ * @author Eva.Caesar Liu
+ * @date 2022/03/15 09:54
+ */
+@Slf4j
+@Service
+public class ApiController {
+
+    @Autowired
+    public MemberService memberService;
+
+    /**
+     * 寰楀埌request瀵硅薄
+     *
+     * @return
+     */
+    public HttpServletRequest getRequest() {
+        HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
+        return request;
+    }
+    /**
+     * 鑾峰彇鐢ㄦ埛ID
+     *
+     * @return
+     */
+    protected String getMemberId() {
+        Object obj = this.getRequest().getAttribute(JwtTokenUtil.UserId_Name);
+        return obj != null ? (String) obj : null;
+    }
+
+
+    /**
+     * 鑾峰彇鐧诲綍鐢ㄦ埛瀵硅薄淇℃伅
+     * @return
+     */
+    protected UserResponse getUserResponse(){
+        Object obj = this.getRequest().getAttribute(JwtTokenUtil.UserId_Name);
+        if(obj != null){
+            return memberService.getUserInfo((String) obj);
+        }
+        return null;
+    }
+
+}
diff --git a/server/src/main/java/com/doumee/config/shiro/ShiroAuthFilter.java b/server/web/src/main/java/com/doumee/config/shiro/ShiroAuthFilter.java
similarity index 97%
rename from server/src/main/java/com/doumee/config/shiro/ShiroAuthFilter.java
rename to server/web/src/main/java/com/doumee/config/shiro/ShiroAuthFilter.java
index 30d7dc0..f978edf 100644
--- a/server/src/main/java/com/doumee/config/shiro/ShiroAuthFilter.java
+++ b/server/web/src/main/java/com/doumee/config/shiro/ShiroAuthFilter.java
@@ -12,7 +12,7 @@
 /**
  * Shiro璁よ瘉杩囨护鍣紝澶勭悊鏈璇佹儏鍐电殑鍝嶅簲
  * @author Eva.Caesar Liu
- * @date 2023/04/17 12:11
+ * @date 2023/03/21 14:49
  */
 public class ShiroAuthFilter extends FormAuthenticationFilter {
 
diff --git a/server/web/src/main/java/com/doumee/config/shiro/ShiroCache.java b/server/web/src/main/java/com/doumee/config/shiro/ShiroCache.java
new file mode 100644
index 0000000..36cd7af
--- /dev/null
+++ b/server/web/src/main/java/com/doumee/config/shiro/ShiroCache.java
@@ -0,0 +1,113 @@
+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/03/21 14:49
+ */
+@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/web/src/main/java/com/doumee/config/shiro/ShiroCacheManager.java b/server/web/src/main/java/com/doumee/config/shiro/ShiroCacheManager.java
new file mode 100644
index 0000000..fedcb98
--- /dev/null
+++ b/server/web/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/03/21 14:49
+ */
+@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/web/src/main/java/com/doumee/config/shiro/ShiroConfig.java
similarity index 74%
copy from server/src/main/java/com/doumee/config/shiro/ShiroConfig.java
copy to server/web/src/main/java/com/doumee/config/shiro/ShiroConfig.java
index c4c6cf3..86411e1 100644
--- a/server/src/main/java/com/doumee/config/shiro/ShiroConfig.java
+++ b/server/web/src/main/java/com/doumee/config/shiro/ShiroConfig.java
@@ -10,19 +10,16 @@
 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.HashMap;
 import java.util.LinkedHashMap;
 import java.util.Map;
 
 /**
  * Shiro閰嶇疆
  * @author Eva.Caesar Liu
- * @date 2023/04/17 12:11
+ * @date 2023/03/21 14:49
  */
 @Configuration
 public class ShiroConfig {
@@ -42,20 +39,6 @@
     @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();
@@ -67,9 +50,6 @@
     public SessionManager sessionManager() {
         ShiroSessionManager sessionManager = new ShiroSessionManager();
         sessionManager.setSessionDAO(shiroSessionDAO);
-        sessionManager.setGlobalSessionTimeout(sessionExpireTime*1000);
-        // 鍒犻櫎澶辨晥鐨剆ession
-        sessionManager.setDeleteInvalidSessions(true);
         return sessionManager;
     }
 
@@ -88,14 +68,12 @@
         shiroFilterFactoryBean.setSecurityManager(securityManager);
         Map<String, String> map = new LinkedHashMap<>();
         // 璺緞鎷︽埅閰嶇疆
-        map.put("/web/user/login", "anon");
-        map.put("/public/uploadRichText", "anon");
         map.put("/system/login", "anon");
         map.put("/system/logout", "anon");
         map.put("/common/captcha", "anon");
-        //鏀捐 scratch 鎺ュ彛
-        map.put("/web/scratch/**", "anon");
-
+        map.put("/web/**", "anon");
+        //鏂囦欢涓婁紶鍙栨秷鎷︽埅
+        map.put("/public/**", "anon");
         // - 鏀捐swagger
         map.put("/doc.html", "anon");
         map.put("/webjars/**", "anon");
diff --git a/server/src/main/java/com/doumee/config/shiro/ShiroCredentialsMatcher.java b/server/web/src/main/java/com/doumee/config/shiro/ShiroCredentialsMatcher.java
similarity index 98%
rename from server/src/main/java/com/doumee/config/shiro/ShiroCredentialsMatcher.java
rename to server/web/src/main/java/com/doumee/config/shiro/ShiroCredentialsMatcher.java
index 062e899..23b843e 100644
--- a/server/src/main/java/com/doumee/config/shiro/ShiroCredentialsMatcher.java
+++ b/server/web/src/main/java/com/doumee/config/shiro/ShiroCredentialsMatcher.java
@@ -15,7 +15,7 @@
 /**
  * Shiro瀵嗙爜姣斿澶勭悊
  * @author Eva.Caesar Liu
- * @date 2023/04/17 12:11
+ * @date 2023/03/21 14:49
  */
 @Component
 public class ShiroCredentialsMatcher extends HashedCredentialsMatcher {
diff --git a/server/src/main/java/com/doumee/config/shiro/ShiroRealm.java b/server/web/src/main/java/com/doumee/config/shiro/ShiroRealm.java
similarity index 78%
copy from server/src/main/java/com/doumee/config/shiro/ShiroRealm.java
copy to server/web/src/main/java/com/doumee/config/shiro/ShiroRealm.java
index 0d526f3..0d562b0 100644
--- a/server/src/main/java/com/doumee/config/shiro/ShiroRealm.java
+++ b/server/web/src/main/java/com/doumee/config/shiro/ShiroRealm.java
@@ -1,6 +1,5 @@
 package com.doumee.config.shiro;
 
-import com.doumee.biz.system.SystemDictDataBiz;
 import com.doumee.core.constants.Constants;
 import com.doumee.core.model.LoginUserInfo;
 import com.doumee.dao.system.model.SystemPermission;
@@ -9,7 +8,6 @@
 import com.doumee.service.system.SystemPermissionService;
 import com.doumee.service.system.SystemRoleService;
 import com.doumee.service.system.SystemUserService;
-import org.apache.commons.lang3.StringUtils;
 import org.apache.shiro.authc.AuthenticationException;
 import org.apache.shiro.authc.AuthenticationInfo;
 import org.apache.shiro.authc.AuthenticationToken;
@@ -27,7 +25,7 @@
 /**
  * 鑷畾涔塕ealm锛屽鐞嗚璇佸拰鏉冮檺
  * @author Eva.Caesar Liu
- * @date 2022/03/15 09:54
+ * @date 2023/03/21 14:49
  */
 @Component
 public class ShiroRealm extends AuthorizingRealm {
@@ -39,9 +37,6 @@
     @Lazy
     @Autowired
     private SystemRoleService systemRoleService;
-    @Lazy
-    @Autowired
-    private SystemDictDataBiz systemDictDataBiz;
 
     @Lazy
     @Autowired
@@ -50,7 +45,7 @@
     /**
      * 鏉冮檺澶勭悊
      * @author Eva.Caesar Liu
-     * @date 2022/03/15 09:54
+     * @date 2023/03/21 14:49
      */
     @Override
     protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) {
@@ -65,7 +60,7 @@
     /**
      * 璁よ瘉澶勭悊
      * @author Eva.Caesar Liu
-     * @date 2022/03/15 09:54
+     * @date 2023/03/21 14:49
      */
     @Override
     protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) throws AuthenticationException {
@@ -79,12 +74,10 @@
         if (user == null) {
             return null;
         }
-            // 鑾峰彇鐧诲綍鐢ㄦ埛淇℃伅
-        List<SystemRole>       roles = systemRoleService.findByUserId(user.getId());
-        List<SystemPermission>     permissions = systemPermissionService.findByUserId(user.getId());
-
-        String imgPath = systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode()+systemDictDataBiz.queryByCode(Constants.FILES_DIR,Constants.AVATAR_FILE).getCode();
-        LoginUserInfo userInfo = LoginUserInfo.from(user, imgPath,roles, permissions);
+        // 鑾峰彇鐧诲綍鐢ㄦ埛淇℃伅
+        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/web/src/main/java/com/doumee/config/shiro/ShiroSessionDAO.java
similarity index 95%
rename from server/src/main/java/com/doumee/config/shiro/ShiroSessionDAO.java
rename to server/web/src/main/java/com/doumee/config/shiro/ShiroSessionDAO.java
index f18ace9..2cc6a11 100644
--- a/server/src/main/java/com/doumee/config/shiro/ShiroSessionDAO.java
+++ b/server/web/src/main/java/com/doumee/config/shiro/ShiroSessionDAO.java
@@ -10,12 +10,15 @@
 import org.springframework.stereotype.Component;
 
 import java.io.Serializable;
-import java.util.*;
+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
+ * @date 2023/03/21 14:49
  */
 @Data
 @Slf4j
@@ -27,7 +30,7 @@
     @Autowired
     private ShiroCache shiroCache;
 
-    private int expireTime = 60 * 60 * 3;
+    private int expireTime = 1800;
 
     @Autowired
     private ShiroTokenManager shiroTokenManager;
diff --git a/server/src/main/java/com/doumee/config/shiro/ShiroSessionManager.java b/server/web/src/main/java/com/doumee/config/shiro/ShiroSessionManager.java
similarity index 98%
copy from server/src/main/java/com/doumee/config/shiro/ShiroSessionManager.java
copy to server/web/src/main/java/com/doumee/config/shiro/ShiroSessionManager.java
index af19931..ef159a7 100644
--- a/server/src/main/java/com/doumee/config/shiro/ShiroSessionManager.java
+++ b/server/web/src/main/java/com/doumee/config/shiro/ShiroSessionManager.java
@@ -19,7 +19,7 @@
 /**
  * 鑷畾涔変細璇濈鐞嗗櫒
  * @author Eva.Caesar Liu
- * @date 2023/04/17 12:11
+ * @date 2023/03/21 14:49
  */
 @Slf4j
 public class ShiroSessionManager extends DefaultSessionManager implements WebSessionManager {
diff --git a/server/web/src/main/java/com/doumee/config/shiro/ShiroTokenManager.java b/server/web/src/main/java/com/doumee/config/shiro/ShiroTokenManager.java
new file mode 100644
index 0000000..1ba1679
--- /dev/null
+++ b/server/web/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/03/21 14:49
+ */
+@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/web/src/main/java/com/doumee/config/swagger/SwaggerConfig.java
similarity index 69%
copy from server/src/main/java/com/doumee/config/swagger/SwaggerConfig.java
copy to server/web/src/main/java/com/doumee/config/swagger/SwaggerConfig.java
index 1a2de87..97c15be 100644
--- a/server/src/main/java/com/doumee/config/swagger/SwaggerConfig.java
+++ b/server/web/src/main/java/com/doumee/config/swagger/SwaggerConfig.java
@@ -8,12 +8,17 @@
 import org.springframework.context.annotation.Configuration;
 import springfox.documentation.RequestHandler;
 import springfox.documentation.builders.ApiInfoBuilder;
+import springfox.documentation.builders.ParameterBuilder;
+import springfox.documentation.service.Parameter;
 import springfox.documentation.builders.PathSelectors;
 import springfox.documentation.oas.annotations.EnableOpenApi;
+import springfox.documentation.schema.ModelRef;
 import springfox.documentation.service.ApiInfo;
 import springfox.documentation.spi.DocumentationType;
 import springfox.documentation.spring.web.plugins.Docket;
 
+import java.util.ArrayList;
+import java.util.List;
 import java.util.function.Predicate;
 
 /**
@@ -46,32 +51,39 @@
                 .version(version)
                 .build();
     }
-
     @Bean
-    public Docket getDocket() {
+    public Docket getDocket3() {
         return new Docket(DocumentationType.SWAGGER_2)
-                .apiInfo(this.getApiInfo()).groupName("銆愮鐞嗙鎺ュ彛API銆�")
+                .apiInfo(this.getApiInfo()).groupName("銆愬皬绋嬪簭鎺ュ彛API銆�")
                 .host(host)
                 .select()
-                .apis( basePackage("com.doumee.api.system;com.doumee.api.business;"))
+                .apis( basePackage("com.doumee.api.web"))
                 // 璁剧疆闇�瑕佽鎵弿鐨勭被锛岃繖閲岃缃负娣诲姞浜咢Api娉ㄨВ鐨勭被
 //                .apis(RequestHandlerSelectors.withClassAnnotation(Api.class))
                 .paths(PathSelectors.any())
-                .build();
+                .build()
+                .globalOperationParameters(this.getParameterList());
     }
 
+    private List<Parameter> getParameterList() {
+        ParameterBuilder tokenPar = new ParameterBuilder();
+        List<Parameter> pars = new ArrayList<>();
+        tokenPar.name("token").description("浠ょ墝").modelRef(new ModelRef("string")).defaultValue("璁剧疆token榛樿鍊�").modelRef(new ModelRef("string")).parameterType("header").required(false).build();
+        pars.add(tokenPar.build());
+        return  pars;
+    }
 
     @Bean
-    public Docket getDocket2() {
+    public Docket getDocket1() {
         return new Docket(DocumentationType.SWAGGER_2)
-                .apiInfo(this.getApiInfo()).groupName("銆愬叕鍏辨帴鍙PI銆�")
-                .host(host)
-                .select()
-                .apis( basePackage("com.doumee.api.common"))
-                // 璁剧疆闇�瑕佽鎵弿鐨勭被锛岃繖閲岃缃负娣诲姞浜咢Api娉ㄨВ鐨勭被
+            .apiInfo(this.getApiInfo()).groupName("銆愬叕鍏辨帴鍙PI銆�")
+            .host(host)
+            .select()
+            .apis( basePackage("com.doumee.api.common"))
+            // 璁剧疆闇�瑕佽鎵弿鐨勭被锛岃繖閲岃缃负娣诲姞浜咢Api娉ㄨВ鐨勭被
 //                .apis(RequestHandlerSelectors.withClassAnnotation(Api.class))
-                .paths(PathSelectors.any())
-                .build();
+            .paths(PathSelectors.any())
+            .build();
     }
     /**
      * 閲嶅啓basePackage鏂规硶锛屼娇鑳藉瀹炵幇澶氬寘璁块棶锛屽鍒惰创涓婂幓
diff --git a/server/src/main/java/com/doumee/config/swagger/SwaggerInterceptor.java b/server/web/src/main/java/com/doumee/config/swagger/SwaggerInterceptor.java
similarity index 97%
copy from server/src/main/java/com/doumee/config/swagger/SwaggerInterceptor.java
copy to server/web/src/main/java/com/doumee/config/swagger/SwaggerInterceptor.java
index b4d3259..8fd55c6 100644
--- a/server/src/main/java/com/doumee/config/swagger/SwaggerInterceptor.java
+++ b/server/web/src/main/java/com/doumee/config/swagger/SwaggerInterceptor.java
@@ -1,4 +1,5 @@
 package com.doumee.config.swagger;
+
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Value;
@@ -12,7 +13,7 @@
 /**
  * Swagger鎷︽埅鍣�
  * @author Eva.Caesar Liu
- * @date 2022/03/15 09:54
+ * @date 2022/04/18 18:12
  */
 @Slf4j
 @Component
diff --git a/server/src/main/java/com/doumee/config/swagger/SwaggerInterceptorConfig.java b/server/web/src/main/java/com/doumee/config/swagger/SwaggerInterceptorConfig.java
similarity index 96%
copy from server/src/main/java/com/doumee/config/swagger/SwaggerInterceptorConfig.java
copy to server/web/src/main/java/com/doumee/config/swagger/SwaggerInterceptorConfig.java
index 7055950..f67e9a8 100644
--- a/server/src/main/java/com/doumee/config/swagger/SwaggerInterceptorConfig.java
+++ b/server/web/src/main/java/com/doumee/config/swagger/SwaggerInterceptorConfig.java
@@ -8,7 +8,7 @@
 /**
  * Swagger鎷︽埅鍣ㄩ厤缃�
  * @author Eva.Caesar Liu
- * @date 2022/03/15 09:54
+ * @date 2022/04/18 18:12
  */
 @Configuration
 public class SwaggerInterceptorConfig implements WebMvcConfigurer {
diff --git a/server/src/main/resources/application.yml b/server/web/src/main/resources/application.yml
similarity index 94%
copy from server/src/main/resources/application.yml
copy to server/web/src/main/resources/application.yml
index 88f8e03..bc36fff 100644
--- a/server/src/main/resources/application.yml
+++ b/server/web/src/main/resources/application.yml
@@ -7,7 +7,7 @@
 
 spring:
 #  application:
-#    name: tielangtou
+#    name: parkbike
   profiles:
     active: dev
   # JSON杩斿洖閰嶇疆
@@ -56,4 +56,8 @@
   # 鎸囧畾浣跨敤鐨勬暟鎹簱鏁版嵁搴�
   helperDialect: postgresql
   # reasonable锛氬垎椤靛悎鐞嗗寲鍙傛暟锛岄粯璁ゅ�间负false銆傚綋璇ュ弬鏁拌缃负 true 鏃讹紝pageNum<=0 鏃朵細鏌ヨ绗竴椤碉紝 		pageNum>pages锛堣秴杩囨�绘暟鏃讹級锛屼細鏌ヨ鏈�鍚庝竴椤点�傞粯璁alse 鏃讹紝鐩存帴鏍规嵁鍙傛暟杩涜鏌ヨ銆�
-  reasonable: true
\ No newline at end of file
+  reasonable: true
+
+  # WEB鏈嶅姟鍣ㄩ厤缃�
+  server:
+    port: 10013

--
Gitblit v1.9.3