goupan
2024-04-03 5506e9a45e717ffcb67ec313b5a4e8206d9b3a39
代码提交
1个文件已修改
2,029个文件已添加
155903 ■■■■■ 已修改文件
.gitignore 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
README.md 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/pom.xml 132 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/controller/CounsellingUserController.java 128 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/controller/CustomerInfoBizController.java 79 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/BaseIdNameDTO.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/CounsellingOrderReservationRequestDTO.java 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/CounsellingOrderReservationResponseDTO.java 116 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/CounsellingOrderResponseDTO.java 102 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/CounsellingReservationDTO.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/CounsellinginfoResponseDTO.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/CourseOrderResponseDTO.java 114 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/CourseResponseDTO.java 203 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/CustomerImInfoDTO.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/ImEffectiveInfoDTO.java 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/ImGroupUserDto.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/ImPushDataDTO.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/MentalAnalysisTimeConfigDetailDTO.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/MentalAnalysisTimeConfigPageDTO.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/MentalAppointmentPageDTO.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/MentalTestContentJsonDTO.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/MentalTestMyMentalAppointmentDTO.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/MentalTestMyTestOrderDTO.java 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/MentalTestMyTestTopicDTO.java 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/MentalTestQuestionOptionDTO.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/MentalTestRecordPageDTO.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/MentalTestTopicAndRecordDTO.java 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/MentalTestTopicDTO.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/MentalTestTopicPageDTO.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/MyTotalResponseDTO.java 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/OrderMentalTestDetailDTO.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/OrderMentalTestPageDTO.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/PageDTO.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/StatMentalTestDTO.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/SysUserEditPostTipDTO.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/TimeConfigDTO.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/TotalResponseDTO.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/UserCounsellingTotalDTO.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/UserCurrentNlwpDTO.java 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/UserMentalAppointmentPageResponseDTO.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/request/BannerAddUpdateRequest.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/request/CounsellingOrderRequest.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/request/CounsellingReservationRequest.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/request/CounsellingUserRequest.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/request/CourseOrderRequest.java 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/request/CoursePlaceOrderRequest.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/request/CourseRequest.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/request/CreateCounsellingOrderRequest.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/request/CreateOrderConsultOneRequest.java 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/request/CreateOrderMentalTestRequest.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/request/CustomerBindOpenIdRequest.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/request/CustomerPhoneLoginRequest.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/request/CustomerUpdateRequest.java 81 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/request/CustomerWxOpenIdLoginRequest.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/request/ImGroupUpdateRequest.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/request/ImTestMessageSendRequest.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/request/MentalAnalysisSpecialTimeConfigDeleteRequest.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/request/MentalAnalysisSpecialTimeConfigEdit2Request.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/request/MentalAnalysisSpecialTimeConfigEditRequest.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/request/MentalAnalysisTimeAddUpdateRequest.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/request/MentalAnalysisTimeConfigAddUpdateRequest.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/request/MentalAnalysisTimeEditRequest.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/request/MentalAppointmentAssignWorkRequest.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/request/MentalAppointmentRecordRequest.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/request/MentalTestAnswerSubmitRequest.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/request/MentalTestTopicAddUpdateRequest.java 144 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/request/OrderPayRequest.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/request/StoreAppointmentRequest.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/request/SysRoleBindMenuButtonRequest.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/request/SysSmsSendParamRequest.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/request/SysUserEditPwdRequest.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/request/SysUserPhoneLoginRequest.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/request/SysUserResetPwdByIdRequest.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/request/SysUserResetPwdRequest.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/request/SysUserUpdateRequest.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/request/TotalRequest.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/request/UserCounsellingOrderReservationRequestDTO.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/entity/Area.java 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/entity/Banner.java 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/entity/ContractRecord.java 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/entity/CounsellingInfo.java 204 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/entity/CounsellingOrder.java 257 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/entity/CounsellingOrderReservation.java 182 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/entity/CounsellingReservationRecord.java 94 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/entity/CounsellingReservationWork.java 95 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/entity/CounsellingSetMeal.java 102 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/entity/CounsellingSpecialTimeConfig.java 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/entity/CounsellingTag.java 79 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/entity/CounsellingTimeConfig.java 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/entity/CounsellingUser.java 213 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/entity/Course.java 185 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/entity/CourseChapter.java 140 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/entity/CourseOrder.java 228 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/entity/CourseStudyNote.java 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/entity/CourseTag.java 79 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/entity/CourseUserLearned.java 99 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/entity/CouserChapterLearningRate.java 105 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/entity/Help.java 83 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/entity/ImGroup.java 120 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/entity/ImGroupUser.java 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/entity/ImNotice.java 116 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/entity/ImUserStatus.java 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/entity/MentalAnalysisSpecialTimeConfig.java 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/entity/MentalAnalysisTime.java 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/entity/MentalAnalysisTimeConfig.java 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/entity/MentalAppointment.java 159 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/entity/MentalTestClass.java 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/entity/MentalTestOption.java 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/entity/MentalTestQuestion.java 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/entity/MentalTestRecord.java 108 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/entity/MentalTestResult.java 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/entity/MentalTestResultSet.java 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/entity/MentalTestTopic.java 135 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/entity/OrderConsultOne.java 185 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/entity/OrderMentalTest.java 169 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/entity/PsychologicalColumn.java 100 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/entity/PsychologicalRead.java 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/entity/StoreAppointment.java 100 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/entity/SystemSet.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/entity/UserEvaluate.java 112 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/AreaMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/BannerMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/ContractRecordMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/CounsellingInfoMapper.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/CounsellingOrderMapper.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/CounsellingOrderReservationMapper.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/CounsellingReservationRecordMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/CounsellingReservationWorkMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/CounsellingSetMealMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/CounsellingSpecialTimeConfigMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/CounsellingTagMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/CounsellingTimeConfigMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/CounsellingUserMapper.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/CourseChapterMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/CourseMapper.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/CourseOrderMapper.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/CourseStudyNoteMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/CourseTagMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/CourseUserLearnedMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/CouserChapterLearningRateMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/HelpMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/ImGroupMapper.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/ImGroupUserMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/ImNoticeMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/ImUserStatusMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/MentalAnalysisSpecialTimeConfigMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/MentalAnalysisTimeConfigMapper.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/MentalAnalysisTimeMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/MentalAppointmentMapper.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/MentalTestClassMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/MentalTestOptionMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/MentalTestQuestionMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/MentalTestRecordMapper.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/MentalTestResultMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/MentalTestResultSetMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/MentalTestTopicMapper.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/OrderConsultOneMapper.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/OrderMentalTestMapper.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/PsychologicalColumnMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/PsychologicalReadMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/StoreAppointmentMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/SystemSetMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/TotalReportMapper.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/UserEvaluateMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/mapping/AreaMapper.xml 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/mapping/BannerMapper.xml 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/mapping/ContractRecordMapper.xml 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/mapping/CounsellingInfoMapper.xml 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/mapping/CounsellingOrderMapper.xml 152 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/mapping/CounsellingOrderReservationMapper.xml 214 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/mapping/CounsellingReservationRecordMapper.xml 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/mapping/CounsellingReservationWorkMapper.xml 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/mapping/CounsellingSetMealMapper.xml 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/mapping/CounsellingSpecialTimeConfigMapper.xml 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/mapping/CounsellingTagMapper.xml 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/mapping/CounsellingTimeConfigMapper.xml 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/mapping/CounsellingUserMapper.xml 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/mapping/CourseChapterMapper.xml 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/mapping/CourseMapper.xml 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/mapping/CourseOrderMapper.xml 105 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/mapping/CourseStudyNoteMapper.xml 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/mapping/CourseTagMapper.xml 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/mapping/CourseUserLearnedMapper.xml 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/mapping/CouserChapterLearningRateMapper.xml 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/mapping/HelpMapper.xml 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/mapping/ImGroupMapper.xml 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/mapping/ImGroupUserMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/mapping/ImNoticeMapper.xml 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/mapping/ImUserStatusMapper.xml 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/mapping/MentalAnalysisSpecialTimeConfigMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/mapping/MentalAnalysisTimeConfigMapper.xml 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/mapping/MentalAnalysisTimeMapper.xml 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/mapping/MentalAppointmentMapper.xml 99 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/mapping/MentalTestClassMapper.xml 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/mapping/MentalTestOptionMapper.xml 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/mapping/MentalTestQuestionMapper.xml 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/mapping/MentalTestRecordMapper.xml 121 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/mapping/MentalTestResultMapper.xml 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/mapping/MentalTestResultSetMapper.xml 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/mapping/MentalTestTopicMapper.xml 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/mapping/OrderConsultOneMapper.xml 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/mapping/OrderMentalTestMapper.xml 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/mapping/PsychologicalColumnMapper.xml 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/mapping/PsychologicalReadMapper.xml 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/mapping/StoreAppointmentMapper.xml 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/mapping/SystemSetMapper.xml 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/mapping/TotalReportMapper.xml 174 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/mapping/UserEvaluateMapper.xml 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/ExcelService.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/IAreaService.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/IBannerService.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/IContractRecordService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/ICounsellingInfoService.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/ICounsellingOrderReservationService.java 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/ICounsellingOrderService.java 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/ICounsellingReservationRecordService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/ICounsellingReservationWorkService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/ICounsellingSetMealService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/ICounsellingSpecialTimeConfigService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/ICounsellingTagService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/ICounsellingTimeConfigService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/ICounsellingUserService.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/ICourseChapterService.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/ICourseOrderService.java 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/ICourseService.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/ICourseStudyNoteService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/ICourseTagService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/ICourseUserLearnedService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/ICouserChapterLearningRateService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/IHelpService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/IImGroupService.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/IImGroupUserService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/IImNoticeService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/IImUserStatusService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/IMentalAnalysisSpecialTimeConfigService.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/IMentalAnalysisTimeConfigService.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/IMentalAnalysisTimeService.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/IMentalAppointmentService.java 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/IMentalTestClassService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/IMentalTestOptionService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/IMentalTestQuestionService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/IMentalTestRecordService.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/IMentalTestResultService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/IMentalTestResultSetService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/IMentalTestTopicService.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/IOrderConsultOneService.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/IOrderMentalTestService.java 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/IPsychologicalColumnService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/IPsychologicalReadService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/IStoreAppointmentService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/ISysUserBusinessService.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/ISystemSetService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/ITotalReportService.java 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/IUserEvaluateService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/impl/AreaServiceImpl.java 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/impl/BannerServiceImpl.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/impl/ContractRecordServiceImpl.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/impl/CounsellingInfoServiceImpl.java 137 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/impl/CounsellingOrderReservationServiceImpl.java 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/impl/CounsellingOrderServiceImpl.java 682 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/impl/CounsellingReservationRecordServiceImpl.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/impl/CounsellingReservationWorkServiceImpl.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/impl/CounsellingSetMealServiceImpl.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/impl/CounsellingSpecialTimeConfigServiceImpl.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/impl/CounsellingTagServiceImpl.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/impl/CounsellingTimeConfigServiceImpl.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/impl/CounsellingUserServiceImpl.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/impl/CourseChapterServiceImpl.java 87 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/impl/CourseOrderServiceImpl.java 282 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/impl/CourseServiceImpl.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/impl/CourseStudyNoteServiceImpl.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/impl/CourseTagServiceImpl.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/impl/CourseUserLearnedServiceImpl.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/impl/CouserChapterLearningRateServiceImpl.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/impl/ExcelServiceImpl.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/impl/HelpServiceImpl.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/impl/ImBizService.java 115 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/impl/ImGroupServiceImpl.java 339 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/impl/ImGroupUserServiceImpl.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/impl/ImNoticeServiceImpl.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/impl/ImUserStatusServiceImpl.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/impl/MentalAnalysisSpecialTimeConfigServiceImpl.java 164 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/impl/MentalAnalysisTimeConfigServiceImpl.java 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/impl/MentalAnalysisTimeServiceImpl.java 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/impl/MentalAppointmentServiceImpl.java 253 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/impl/MentalTestClassServiceImpl.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/impl/MentalTestOptionServiceImpl.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/impl/MentalTestQuestionServiceImpl.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/impl/MentalTestRecordServiceImpl.java 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/impl/MentalTestResultServiceImpl.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/impl/MentalTestResultSetServiceImpl.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/impl/MentalTestTopicServiceImpl.java 164 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/impl/OrderConsultOneServiceImpl.java 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/impl/OrderMentalTestServiceImpl.java 140 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/impl/PsychologicalColumnServiceImpl.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/impl/PsychologicalReadServiceImpl.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/impl/StoreAppointmentServiceImpl.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/impl/SysUserBusinessServiceImpl.java 92 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/impl/SystemSetServiceImpl.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/impl/TotalReportServiceImpl.java 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/impl/UserEvaluateServiceImpl.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/utils/CrmebUtil.java 864 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/utils/ExportUtil.java 164 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/utils/GeneralUtil.java 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/utils/ObsUtil.java 150 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/utils/ReqDebugUtil.java 107 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/utils/StatDataUtil.java 199 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/utils/UploadUtil.java 134 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
generator/pom.xml 85 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
generator/src/main/java/com/mindant/generator/action/GunsCodeBatchGenerator.java 111 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
generator/src/main/java/com/mindant/generator/action/GunsCodeGenerator.java 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
generator/src/main/java/com/mindant/generator/action/config/AbstractGeneratorConfig.java 118 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
generator/src/main/java/com/mindant/generator/action/config/GunsGeneratorConfig.java 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
generator/src/main/java/com/mindant/generator/action/config/WebGeneratorConfig.java 99 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
generator/src/main/java/com/mindant/generator/action/model/GenQo.java 310 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
generator/src/main/java/com/mindant/generator/engine/SimpleTemplateEngine.java 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
generator/src/main/java/com/mindant/generator/engine/base/AbstractTemplateEngine.java 115 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
generator/src/main/java/com/mindant/generator/engine/base/GunsTemplateEngine.java 126 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
generator/src/main/java/com/mindant/generator/engine/config/ContextConfig.java 223 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
generator/src/main/java/com/mindant/generator/engine/config/ControllerConfig.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
generator/src/main/java/com/mindant/generator/engine/config/DaoConfig.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
generator/src/main/java/com/mindant/generator/engine/config/Menu.java 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
generator/src/main/java/com/mindant/generator/engine/config/PageConfig.java 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
generator/src/main/java/com/mindant/generator/engine/config/ServiceConfig.java 91 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
generator/src/main/java/com/mindant/generator/exception/GunsException.java 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
generator/src/main/java/com/mindant/generator/exception/GunsExceptionEnum.java 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
generator/src/main/java/com/mindant/generator/exception/ServiceExceptionEnum.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
generator/src/main/java/com/mindant/generator/util/CollectionKit.java 781 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
generator/src/main/java/com/mindant/generator/util/DateUtil.java 439 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
generator/src/main/java/com/mindant/generator/util/FileUtil.java 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
generator/src/main/java/com/mindant/generator/util/StrKit.java 1385 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
generator/src/main/java/com/mindant/generator/util/ToolUtil.java 820 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
generator/src/main/resources/gunsTemplate/advanced/Controller.java.btl 129 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
generator/src/main/resources/gunsTemplate/advanced/entity.java.vm 130 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
generator/src/main/resources/gunsTemplate/advanced/mapper.java.vm 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
generator/src/main/resources/gunsTemplate/advanced/mapper.xml.vm 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
generator/src/main/resources/gunsTemplate/advanced/menu_sql.sql.btl 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
generator/src/main/resources/gunsTemplate/advanced/page.html.btl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
generator/src/main/resources/gunsTemplate/advanced/page.js.btl 100 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
generator/src/main/resources/gunsTemplate/advanced/page_add.html.btl 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
generator/src/main/resources/gunsTemplate/advanced/page_edit.html.btl 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
generator/src/main/resources/gunsTemplate/advanced/page_info.js.btl 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
generator/src/main/resources/gunsTemplate/advanced/service.java.vm 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
generator/src/main/resources/gunsTemplate/advanced/serviceImpl.java.vm 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
guns/.gitattributes 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
guns/.gitignore 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
guns/_devops/settings.xml 126 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
guns/pom.xml 398 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
guns/src/main/java/cn/stylefeng/guns/GunsApplication.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
guns/src/main/java/cn/stylefeng/guns/GunsServletInitializer.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
guns/src/main/java/cn/stylefeng/guns/config/MapperScanConfiguration.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
guns/src/main/java/cn/stylefeng/guns/config/RefundConfig.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
guns/src/main/java/cn/stylefeng/guns/config/SwaggerConfig.java 140 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
guns/src/main/java/cn/stylefeng/guns/config/TransactionAdviceConfig.java 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
guns/src/main/java/cn/stylefeng/guns/config/web/SpringMvcConfiguration.java 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
guns/src/main/java/cn/stylefeng/guns/core/consts/ProjectConstants.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
guns/src/main/java/cn/stylefeng/guns/core/error/CustomErrorAttributes.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
guns/src/main/java/cn/stylefeng/guns/core/error/GlobalExceptionHandler.java 389 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
guns/src/main/java/cn/stylefeng/guns/core/exception/BusinessException.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
guns/src/main/java/cn/stylefeng/guns/core/security/AuthJwtTokenSecurityInterceptor.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
guns/src/main/java/cn/stylefeng/guns/core/security/PermissionSecurityInterceptor.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
guns/src/main/java/cn/stylefeng/guns/core/security/base/BaseSecurityInterceptor.java 111 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
guns/src/main/java/cn/stylefeng/guns/modular/business/controller/BannerController.java 217 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
guns/src/main/java/cn/stylefeng/guns/modular/business/controller/ContractRecordController.java 110 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
guns/src/main/java/cn/stylefeng/guns/modular/business/controller/CounsellingInfoController.java 337 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
guns/src/main/java/cn/stylefeng/guns/modular/business/controller/CounsellingOrderController.java 265 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
guns/src/main/java/cn/stylefeng/guns/modular/business/controller/CounsellingOrderReservationController.java 132 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
guns/src/main/java/cn/stylefeng/guns/modular/business/controller/CounsellingReservationRecordController.java 129 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
guns/src/main/java/cn/stylefeng/guns/modular/business/controller/CounsellingReservationWorkController.java 129 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
guns/src/main/java/cn/stylefeng/guns/modular/business/controller/CounsellingSetMealController.java 110 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
guns/src/main/java/cn/stylefeng/guns/modular/business/controller/CounsellingSpecialTimeConfigController.java 129 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
guns/src/main/java/cn/stylefeng/guns/modular/business/controller/CounsellingTagController.java 137 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
guns/src/main/java/cn/stylefeng/guns/modular/business/controller/CounsellingTimeConfigController.java 129 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
guns/src/main/java/cn/stylefeng/guns/modular/business/controller/CourseChapterController.java 113 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
guns/src/main/java/cn/stylefeng/guns/modular/business/controller/CourseController.java 276 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
guns/src/main/java/cn/stylefeng/guns/modular/business/controller/CourseOrderController.java 180 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
guns/src/main/java/cn/stylefeng/guns/modular/business/controller/CourseStudyNoteController.java 129 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
guns/src/main/java/cn/stylefeng/guns/modular/business/controller/CourseTagController.java 137 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
guns/src/main/java/cn/stylefeng/guns/modular/business/controller/CourseUserLearnedController.java 129 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
guns/src/main/java/cn/stylefeng/guns/modular/business/controller/CouserChapterLearningRateController.java 129 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
guns/src/main/java/cn/stylefeng/guns/modular/business/controller/ExcelController.java 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
guns/src/main/java/cn/stylefeng/guns/modular/business/controller/HelpController.java 132 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
guns/src/main/java/cn/stylefeng/guns/modular/business/controller/MentalAnalysisSpecialTimeConfigController.java 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
guns/src/main/java/cn/stylefeng/guns/modular/business/controller/MentalAnalysisTimeConfigController.java 181 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
guns/src/main/java/cn/stylefeng/guns/modular/business/controller/MentalAnalysisTimeController.java 120 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
guns/src/main/java/cn/stylefeng/guns/modular/business/controller/MentalTestClassController.java 143 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
guns/src/main/java/cn/stylefeng/guns/modular/business/controller/MentalTestTopicController.java 243 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
guns/src/main/java/cn/stylefeng/guns/modular/business/controller/OrderConsultOneController.java 129 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
guns/src/main/java/cn/stylefeng/guns/modular/business/controller/OrderMentalTestController.java 128 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
guns/src/main/java/cn/stylefeng/guns/modular/business/controller/PsychologicalColumnController.java 120 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
guns/src/main/java/cn/stylefeng/guns/modular/business/controller/StatMentalTestController.java 174 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
guns/src/main/java/cn/stylefeng/guns/modular/business/controller/StoreAppointmentController.java 159 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
guns/src/main/java/cn/stylefeng/guns/modular/business/controller/SysRoleBusinessController.java 217 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
guns/src/main/java/cn/stylefeng/guns/modular/business/controller/SysUserBusinessController.java 761 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
guns/src/main/java/cn/stylefeng/guns/modular/business/controller/SystemSetController.java 133 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
guns/src/main/java/cn/stylefeng/guns/modular/business/controller/TotalReportController.java 134 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
guns/src/main/java/cn/stylefeng/guns/modular/business/controller/UploadController.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
guns/src/main/java/cn/stylefeng/guns/modular/business/controller/UserManageController.java 319 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
guns/src/main/java/cn/stylefeng/guns/modular/test/TestMultiTranController.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
guns/src/main/java/cn/stylefeng/guns/modular/test/TestSingleTranController.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
guns/src/main/java/cn/stylefeng/guns/modular/test/factory/NormalUserFactory.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
guns/src/main/java/cn/stylefeng/guns/modular/test/service/GunsDbService.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
guns/src/main/java/cn/stylefeng/guns/modular/test/service/OtherDbService.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
guns/src/main/java/cn/stylefeng/guns/modular/test/service/TranTestService.java 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
guns/src/main/java/cn/stylefeng/guns/utils/CrmebUtil.java 865 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
guns/src/main/java/cn/stylefeng/guns/utils/ExportUtil.java 165 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
guns/src/main/java/cn/stylefeng/guns/utils/ObsUtil.java 151 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
guns/src/main/java/cn/stylefeng/guns/utils/UploadUtil.java 135 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
guns/src/main/resources/Dockerfile 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
guns/src/main/resources/Dockerfile-dev 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
guns/src/main/resources/application-dev.yml 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
guns/src/main/resources/application-local.yml 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
guns/src/main/resources/application-prod.yml 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
guns/src/main/resources/application.yml 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
guns/src/main/resources/db/migration/mysql/V7.3.0_20221019_2220__init_guns.sql 1794 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
guns/src/main/resources/db/migration/mysql/V7.3.3_20221121_2307__add_message_url.sql 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
guns/src/main/resources/logback-spring.xml 120 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pom.xml 381 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rest/pom.xml 403 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rest/src/main/java/cn/stylefeng/rest/RestApplication.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rest/src/main/java/cn/stylefeng/rest/RestServletInitialize.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rest/src/main/java/cn/stylefeng/rest/config/ImMessageRoutingRedisAutoConfiguration.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rest/src/main/java/cn/stylefeng/rest/config/MapperScanConfiguration.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rest/src/main/java/cn/stylefeng/rest/config/ObjectRedisAutoConfiguration.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rest/src/main/java/cn/stylefeng/rest/config/SwaggerConfig.java 126 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rest/src/main/java/cn/stylefeng/rest/config/TransactionAdviceConfig.java 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rest/src/main/java/cn/stylefeng/rest/config/cache/ImMessageRoutingRedisCache.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rest/src/main/java/cn/stylefeng/rest/config/cache/ObjectRedisCache.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rest/src/main/java/cn/stylefeng/rest/config/web/SpringMvcConfiguration.java 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rest/src/main/java/cn/stylefeng/rest/core/consts/ProjectConstants.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rest/src/main/java/cn/stylefeng/rest/core/error/CustomErrorAttributes.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rest/src/main/java/cn/stylefeng/rest/core/error/GlobalExceptionHandler.java 389 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rest/src/main/java/cn/stylefeng/rest/core/exception/BusinessException.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rest/src/main/java/cn/stylefeng/rest/core/security/AuthJwtTokenSecurityInterceptor.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rest/src/main/java/cn/stylefeng/rest/core/security/PermissionSecurityInterceptor.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rest/src/main/java/cn/stylefeng/rest/core/security/base/BaseSecurityInterceptor.java 110 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rest/src/main/java/cn/stylefeng/rest/ijpay/controller/AliPayController.java 911 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rest/src/main/java/cn/stylefeng/rest/ijpay/controller/WxPayController.java 1070 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rest/src/main/java/cn/stylefeng/rest/ijpay/entity/AliPayBean.java 111 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rest/src/main/java/cn/stylefeng/rest/ijpay/entity/H5SceneInfo.java 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rest/src/main/java/cn/stylefeng/rest/ijpay/entity/WxPayBean.java 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rest/src/main/java/cn/stylefeng/rest/ijpay/entity/request/AliAppPayRequest.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rest/src/main/java/cn/stylefeng/rest/ijpay/entity/request/WxAppPayRequest.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rest/src/main/java/cn/stylefeng/rest/modular/home/controller/HomeIndexController.java 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rest/src/main/java/cn/stylefeng/rest/modular/home/controller/HomePsychologicalColumnController.java 121 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rest/src/main/java/cn/stylefeng/rest/modular/home/controller/PublicController.java 155 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rest/src/main/java/cn/stylefeng/rest/modular/home/service/MentalTestBizService.java 264 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rest/src/main/java/cn/stylefeng/rest/modular/im/controller/ImController.java 367 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rest/src/main/java/cn/stylefeng/rest/modular/im/controller/ImNotifyController.java 81 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rest/src/main/java/cn/stylefeng/rest/modular/order/controller/MentalTestController.java 172 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rest/src/main/java/cn/stylefeng/rest/modular/order/controller/MentalTestOrderController.java 102 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rest/src/main/java/cn/stylefeng/rest/modular/order/service/MentalTestOrderBizService.java 240 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rest/src/main/java/cn/stylefeng/rest/modular/user/controller/CounsellingInfoController.java 862 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rest/src/main/java/cn/stylefeng/rest/modular/user/controller/CourseController.java 357 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rest/src/main/java/cn/stylefeng/rest/modular/user/controller/MyMentalTestController.java 226 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rest/src/main/java/cn/stylefeng/rest/modular/user/controller/UserCenterController.java 349 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rest/src/main/java/cn/stylefeng/rest/modular/user/controller/UserEvaluateController.java 163 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rest/src/main/java/cn/stylefeng/rest/modular/user/service/CustomerLoginBizService.java 103 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rest/src/main/java/cn/stylefeng/rest/modular/work/MentalAppointmentWork.java 156 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rest/src/main/java/cn/stylefeng/rest/modular/work/OrderOutTimeCancelWork.java 599 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rest/src/main/java/cn/stylefeng/rest/modular/worker/controller/MentalAnalysisTimeConfigController.java 195 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rest/src/main/java/cn/stylefeng/rest/modular/worker/controller/TotalReportController.java 245 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rest/src/main/java/cn/stylefeng/rest/modular/worker/controller/WorkerController.java 934 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rest/src/main/java/cn/stylefeng/rest/modular/worker/service/WorkerBizService.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rest/src/main/resources/Dockerfile 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rest/src/main/resources/Dockerfile-dev 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rest/src/main/resources/application-dev.yml 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rest/src/main/resources/application-local.yml 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rest/src/main/resources/application-prod.yml 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rest/src/main/resources/application.yml 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rest/src/main/resources/ijpay/alipay.properties 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rest/src/main/resources/ijpay/cert/apiclient_cert.p12 补丁 | 查看 | 原始文档 | blame | 历史
rest/src/main/resources/ijpay/cert/apiclient_cert.pem 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rest/src/main/resources/ijpay/cert/apiclient_key.pem 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rest/src/main/resources/ijpay/cert/pfx-password.txt 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rest/src/main/resources/ijpay/cert/证书使用说明.txt 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rest/src/main/resources/ijpay/wxpay.properties 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rest/src/main/resources/logback-spring.xml 120 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/README.md 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-a-rule/README.md 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-a-rule/pom.xml 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/annotation/BusinessLog.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/annotation/ChineseDescription.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/annotation/EnumFieldFormat.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/annotation/SimpleFieldFormat.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/base/ReadableEnum.java 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/base/SimpleFieldFormatProcess.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/callback/ConfigUpdateCallback.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/constants/RuleConstants.java 91 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/constants/SymbolConstant.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/constants/TenantConstants.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/constants/TreeConstants.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/context/ApplicationPropertiesContext.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/enums/CustomerMentalAnalysisStatusEnum.java 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/enums/CustomerStatusEnum.java 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/enums/CustomerUserTypeEnum.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/enums/CustomerWorkStatusEnum.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/enums/DbTypeEnum.java 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/enums/DeleteEnum.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/enums/FieldTypeEnum.java 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/enums/FormatTypeEnum.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/enums/ImPushTypeEnum.java 83 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/enums/ImStatusEnum.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/enums/ImUserTypeEnum.java 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/enums/MentalAppointmentConsultStatusEnum.java 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/enums/MentalAppointmentStatusEnum.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/enums/OrderStatusFlagEnum.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/enums/OrderTypeEnum.java 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/enums/PayTypeEnum.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/enums/PostIdEnum.java 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/enums/PostTypeEnum.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/enums/ResBizTypeEnum.java 99 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/enums/SexEnum.java 126 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/enums/SortByEnum.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/enums/StatusEnum.java 110 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/enums/SystemSetEnum.java 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/enums/TreeNodeEnum.java 91 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/enums/YesOrNotEnum.java 115 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/exception/AbstractExceptionEnum.java 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/exception/base/ServiceException.java 122 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/exception/enums/defaults/DefaultBusinessExceptionEnum.java 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/exception/enums/defaults/DefaultThirdExceptionEnum.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/exception/enums/defaults/DefaultUserExceptionEnum.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/exception/enums/http/ServletExceptionEnum.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/format/BaseSimpleFieldFormatProcess.java 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/listener/ApplicationReadyListener.java 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/listener/ApplicationStartedListener.java 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/listener/ContextInitializedListener.java 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/pojo/dict/SimpleDict.java 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/pojo/request/BaseIdRequest.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/pojo/request/BasePageRequest.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/pojo/request/BaseRequest.java 214 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/pojo/response/ErrorResponseData.java 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/pojo/response/ResponseData.java 73 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/pojo/response/SuccessResponseData.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/tenant/OnceTenantCodeHolder.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/tenant/RequestTenantCodeHolder.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/tenant/TenantPrefixApi.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/threadlocal/RemoveThreadLocalApi.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/tree/factory/DefaultTreeBuildFactory.java 118 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/tree/factory/base/AbstractTreeBuildFactory.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/tree/factory/base/AbstractTreeNode.java 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/tree/factory/node/DefaultTreeNode.java 94 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/tree/xmtree/DefaultXmSelectNode.java 91 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/tree/xmtree/base/AbstractXmSelectNode.java 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/tree/ztree/ZTreeNode.java 140 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/util/AntPathMatcherUtil.java 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/util/AopTargetUtils.java 99 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/util/ClassTypeUtil.java 151 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/util/DatabaseTypeUtil.java 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/util/DateRegexUtil.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/util/DbConnectionUtil.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/util/ExceptionUtil.java 98 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/util/GunsResourceCodeUtil.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/util/HttpServletUtil.java 216 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/util/IpInfoUtils.java 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/util/LicenseTitleAppenderUtil.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/util/MacAddressUtil.java 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/util/MixFieldTypeUtil.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/util/MvnDeployUtil.java 345 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/util/ObjectConvertUtil.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/util/ProjectUtil.java 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/util/RedirectUrlBuildUtil.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/util/ResponseRenderUtil.java 108 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/util/StrFilterUtil.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/util/TokenSignUtil.java 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-auth/README.md 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-auth/auth-api/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-auth/auth-api/pom.xml 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/AuthServiceApi.java 139 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/LoginUserApi.java 100 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/PermissionServiceApi.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/SessionManagerApi.java 130 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/SsoServerApi.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/TempSecretApi.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/constants/AuthConstants.java 130 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/constants/LoginCacheConstants.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/context/LoginContext.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/context/LoginUserHolder.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/context/LoginUserRemoveThreadLocalHolder.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/cookie/SessionCookieCreator.java 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/enums/DataScopeTypeEnum.java 92 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/enums/SsoClientTypeEnum.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/exception/AuthException.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/exception/enums/AuthExceptionEnum.java 146 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/expander/AuthConfigExpander.java 276 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/expander/LoginConfigExpander.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/loginuser/CommonLoginUserUtil.java 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/loginuser/api/LoginUserRemoteApi.java 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/loginuser/pojo/LoginUserRequest.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/loginuser/pojo/SessionValidateResponse.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/password/PasswordStoredEncryptApi.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/password/PasswordTransferEncryptApi.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/pojo/auth/LoginRequest.java 108 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/pojo/auth/LoginResponse.java 119 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/pojo/auth/LoginWithTokenRequest.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/pojo/auth/PwdRsaSecretProperties.java 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/pojo/login/LoginUser.java 196 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/pojo/login/basic/SimpleRoleInfo.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/pojo/login/basic/SimpleUserInfo.java 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/pojo/sso/SsoLoginCodeRequest.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/pojo/sso/SsoProperties.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/prop/LoginUserPropExpander.java 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-auth/auth-sdk/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-auth/auth-sdk/pom.xml 131 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-auth/auth-sdk/src/main/java/cn/stylefeng/roses/kernel/auth/auth/AuthServiceImpl.java 507 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-auth/auth-sdk/src/main/java/cn/stylefeng/roses/kernel/auth/auth/LoginUserImpl.java 135 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-auth/auth-sdk/src/main/java/cn/stylefeng/roses/kernel/auth/cache/LoginErrorCountMemoryCache.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-auth/auth-sdk/src/main/java/cn/stylefeng/roses/kernel/auth/cache/LoginErrorCountRedisCache.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-auth/auth-sdk/src/main/java/cn/stylefeng/roses/kernel/auth/callback/TenantCodeRemoveThreadLocalHolder.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-auth/auth-sdk/src/main/java/cn/stylefeng/roses/kernel/auth/config/InitConfigWebSocketCallbackApiImpl.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-auth/auth-sdk/src/main/java/cn/stylefeng/roses/kernel/auth/password/BcryptPasswordStoredEncrypt.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-auth/auth-sdk/src/main/java/cn/stylefeng/roses/kernel/auth/password/RsaPasswordTransferEncrypt.java 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-auth/auth-sdk/src/main/java/cn/stylefeng/roses/kernel/auth/permission/PermissionServiceImpl.java 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-auth/auth-sdk/src/main/java/cn/stylefeng/roses/kernel/auth/session/DefaultSessionManager.java 233 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-auth/auth-sdk/src/main/java/cn/stylefeng/roses/kernel/auth/session/cache/catoken/MemoryCaClientTokenCache.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-auth/auth-sdk/src/main/java/cn/stylefeng/roses/kernel/auth/session/cache/catoken/RedisCaClientTokenCache.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-auth/auth-sdk/src/main/java/cn/stylefeng/roses/kernel/auth/session/cache/logintoken/MemoryLoginTokenCache.java 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-auth/auth-sdk/src/main/java/cn/stylefeng/roses/kernel/auth/session/cache/logintoken/RedisLoginTokenCache.java 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-auth/auth-sdk/src/main/java/cn/stylefeng/roses/kernel/auth/session/cache/loginuser/MemoryLoginUserCache.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-auth/auth-sdk/src/main/java/cn/stylefeng/roses/kernel/auth/session/cache/loginuser/RedisLoginUserCache.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-auth/auth-sdk/src/main/java/cn/stylefeng/roses/kernel/auth/session/cookie/DefaultSessionCookieCreator.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-auth/auth-sdk/src/main/java/cn/stylefeng/roses/kernel/auth/session/timer/ClearInvalidLoginUserCacheTimer.java 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-auth/auth-spring-boot-starter/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-auth/auth-spring-boot-starter/pom.xml 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-auth/auth-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/auth/starter/GunsAuthAutoConfiguration.java 145 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-auth/auth-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/auth/starter/GunsPasswordRsaPropAutoConfiguration.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-auth/auth-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/auth/starter/GunsSsoAutoConfiguration.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-auth/auth-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/auth/starter/cache/GunsAuthTokenMemoryCacheAutoConfiguration.java 109 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-auth/auth-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/auth/starter/cache/GunsAuthTokenRedisCacheAutoConfiguration.java 105 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-auth/auth-spring-boot-starter/src/main/resources/META-INF/spring.factories 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-auth/pom.xml 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-cache/README.md 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-cache/cache-api/README.md 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-cache/cache-api/pom.xml 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-cache/cache-api/src/main/java/cn/stylefeng/roses/kernel/cache/api/CacheOperatorApi.java 245 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-cache/cache-api/src/main/java/cn/stylefeng/roses/kernel/cache/api/constants/CacheConstants.java 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-cache/cache-api/src/main/java/cn/stylefeng/roses/kernel/cache/api/tenant/TenantCacheProxy.java 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-cache/cache-api/src/main/java/cn/stylefeng/roses/kernel/cache/api/tenant/TenantCacheProxyFactory.java 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-cache/cache-sdk-memory/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-cache/cache-sdk-memory/pom.xml 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-cache/cache-sdk-memory/src/main/java/cn/stylefeng/roses/kernel/cache/memory/AbstractMemoryCacheOperator.java 116 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-cache/cache-sdk-memory/src/main/java/cn/stylefeng/roses/kernel/cache/memory/operator/DefaultMemoryCacheOperator.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-cache/cache-sdk-memory/src/main/java/cn/stylefeng/roses/kernel/cache/memory/operator/DefaultStringMemoryCacheOperator.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-cache/cache-sdk-redis/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-cache/cache-sdk-redis/pom.xml 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-cache/cache-sdk-redis/src/main/java/cn/stylefeng/roses/kernel/cache/redis/AbstractRedisCacheOperator.java 124 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-cache/cache-sdk-redis/src/main/java/cn/stylefeng/roses/kernel/cache/redis/AbstractRedisHashCacheOperator.java 125 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-cache/cache-sdk-redis/src/main/java/cn/stylefeng/roses/kernel/cache/redis/operator/DefaultRedisCacheOperator.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-cache/cache-sdk-redis/src/main/java/cn/stylefeng/roses/kernel/cache/redis/operator/DefaultStringRedisCacheOperator.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-cache/cache-sdk-redis/src/main/java/cn/stylefeng/roses/kernel/cache/redis/serializer/FastJson2JsonRedisSerializer.java 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-cache/cache-sdk-redis/src/main/java/cn/stylefeng/roses/kernel/cache/redis/util/CreateRedisTemplateUtil.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-cache/memory-cache-spring-boot-starter/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-cache/memory-cache-spring-boot-starter/pom.xml 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-cache/memory-cache-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/cache/memory/starter/GunsMemoryCacheAutoConfiguration.java 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-cache/memory-cache-spring-boot-starter/src/main/resources/META-INF/spring.factories 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-cache/pom.xml 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-cache/redis-spring-boot-starter/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-cache/redis-spring-boot-starter/pom.xml 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-cache/redis-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/cache/redis/starter/GunsRedisCacheAutoConfiguration.java 102 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-cache/redis-spring-boot-starter/src/main/resources/META-INF/spring.factories 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-config/README.md 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-config/config-api/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-config/config-api/pom.xml 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-config/config-api/src/main/java/cn/stylefeng/roses/kernel/config/api/ConfigApi.java 125 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-config/config-api/src/main/java/cn/stylefeng/roses/kernel/config/api/ConfigInitCallbackApi.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-config/config-api/src/main/java/cn/stylefeng/roses/kernel/config/api/ConfigInitStrategyApi.java 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-config/config-api/src/main/java/cn/stylefeng/roses/kernel/config/api/InitConfigApi.java 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-config/config-api/src/main/java/cn/stylefeng/roses/kernel/config/api/SysConfigDataApi.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-config/config-api/src/main/java/cn/stylefeng/roses/kernel/config/api/constants/ConfigConstants.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-config/config-api/src/main/java/cn/stylefeng/roses/kernel/config/api/context/ConfigContext.java 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-config/config-api/src/main/java/cn/stylefeng/roses/kernel/config/api/exception/ConfigException.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-config/config-api/src/main/java/cn/stylefeng/roses/kernel/config/api/exception/enums/ConfigExceptionEnum.java 115 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-config/config-api/src/main/java/cn/stylefeng/roses/kernel/config/api/pojo/ConfigInitItem.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-config/config-api/src/main/java/cn/stylefeng/roses/kernel/config/api/pojo/ConfigInitRequest.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-config/config-business/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-config/config-business/pom.xml 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-config/config-business/src/main/java/cn/stylefeng/roses/kernel/config/modular/controller/SysConfigController.java 177 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-config/config-business/src/main/java/cn/stylefeng/roses/kernel/config/modular/entity/SysConfig.java 109 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-config/config-business/src/main/java/cn/stylefeng/roses/kernel/config/modular/factory/SysConfigDataFactory.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-config/config-business/src/main/java/cn/stylefeng/roses/kernel/config/modular/listener/ConfigInitListener.java 130 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-config/config-business/src/main/java/cn/stylefeng/roses/kernel/config/modular/mapper/SysConfigMapper.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-config/config-business/src/main/java/cn/stylefeng/roses/kernel/config/modular/mapper/mapping/SysConfigMapper.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-config/config-business/src/main/java/cn/stylefeng/roses/kernel/config/modular/pojo/InitConfigGroup.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-config/config-business/src/main/java/cn/stylefeng/roses/kernel/config/modular/pojo/InitConfigResponse.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-config/config-business/src/main/java/cn/stylefeng/roses/kernel/config/modular/pojo/param/SysConfigParam.java 101 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-config/config-business/src/main/java/cn/stylefeng/roses/kernel/config/modular/service/SysConfigService.java 125 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-config/config-business/src/main/java/cn/stylefeng/roses/kernel/config/modular/service/impl/SysConfigServiceImpl.java 324 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-config/config-business/src/main/java/cn/stylefeng/roses/kernel/config/modular/sqladapter/MssqlSysConfigData.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-config/config-business/src/main/java/cn/stylefeng/roses/kernel/config/modular/sqladapter/MysqlSysConfigData.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-config/config-business/src/main/java/cn/stylefeng/roses/kernel/config/modular/sqladapter/OracleSysConfigData.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-config/config-business/src/main/java/cn/stylefeng/roses/kernel/config/modular/sqladapter/PgsqlSysConfigData.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-config/config-business/src/main/java/cn/stylefeng/roses/kernel/config/modular/strategy/DefaultStrategyImpl.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-config/config-sdk-map/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-config/config-sdk-map/pom.xml 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-config/config-sdk-map/src/main/java/cn/stylefeng/roses/kernel/config/ConfigContainer.java 128 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-config/config-sdk-redis/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-config/config-sdk-redis/pom.xml 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-config/config-sdk-redis/src/main/java/cn/stylefeng/roses/kernel/config/redis/RedisConfigContainer.java 204 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-config/config-spring-boot-starter/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-config/config-spring-boot-starter/pom.xml 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-config/config-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/config/starter/GunsSysConfigAutoConfiguration.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-config/config-spring-boot-starter/src/main/resources/META-INF/spring.factories 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-config/pom.xml 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-db/README.md 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-db/db-api/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-db/db-api/pom.xml 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-db/db-api/src/main/java/cn/stylefeng/roses/kernel/db/api/DbOperatorApi.java 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-db/db-api/src/main/java/cn/stylefeng/roses/kernel/db/api/constants/DbConstants.java 95 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-db/db-api/src/main/java/cn/stylefeng/roses/kernel/db/api/constants/DbFieldConstants.java 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-db/db-api/src/main/java/cn/stylefeng/roses/kernel/db/api/context/DbOperatorContext.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-db/db-api/src/main/java/cn/stylefeng/roses/kernel/db/api/exception/DaoException.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-db/db-api/src/main/java/cn/stylefeng/roses/kernel/db/api/exception/enums/DaoExceptionEnum.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-db/db-api/src/main/java/cn/stylefeng/roses/kernel/db/api/exception/enums/DatabaseExceptionEnum.java 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-db/db-api/src/main/java/cn/stylefeng/roses/kernel/db/api/exception/enums/DbInitEnum.java 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-db/db-api/src/main/java/cn/stylefeng/roses/kernel/db/api/exception/enums/FlywayExceptionEnum.java 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-db/db-api/src/main/java/cn/stylefeng/roses/kernel/db/api/expander/DruidConfigExpander.java 161 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-db/db-api/src/main/java/cn/stylefeng/roses/kernel/db/api/factory/DruidDatasourceFactory.java 129 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-db/db-api/src/main/java/cn/stylefeng/roses/kernel/db/api/factory/PageFactory.java 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-db/db-api/src/main/java/cn/stylefeng/roses/kernel/db/api/factory/PageResultFactory.java 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-db/db-api/src/main/java/cn/stylefeng/roses/kernel/db/api/pojo/db/TableFieldInfo.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-db/db-api/src/main/java/cn/stylefeng/roses/kernel/db/api/pojo/db/TableInfo.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-db/db-api/src/main/java/cn/stylefeng/roses/kernel/db/api/pojo/druid/DruidProperties.java 154 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-db/db-api/src/main/java/cn/stylefeng/roses/kernel/db/api/pojo/entity/BaseEntity.java 104 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-db/db-api/src/main/java/cn/stylefeng/roses/kernel/db/api/pojo/page/PageResult.java 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-db/db-api/src/main/java/cn/stylefeng/roses/kernel/db/api/sqladapter/AbstractSql.java 98 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-db/db-api/src/main/java/cn/stylefeng/roses/kernel/db/api/sqladapter/database/CreateDatabaseSql.java 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-db/db-api/src/main/java/cn/stylefeng/roses/kernel/db/api/sqladapter/database/DropDatabaseSql.java 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-db/db-api/src/main/java/cn/stylefeng/roses/kernel/db/api/sqladapter/database/GetDatabasesSql.java 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-db/db-api/src/main/java/cn/stylefeng/roses/kernel/db/api/sqladapter/table/TableFieldListSql.java 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-db/db-api/src/main/java/cn/stylefeng/roses/kernel/db/api/sqladapter/table/TableListSql.java 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-db/db-api/src/main/java/cn/stylefeng/roses/kernel/db/api/util/ClobUtil.java 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-db/db-api/src/main/java/cn/stylefeng/roses/kernel/db/api/util/DatabaseUtil.java 218 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-db/db-api/src/main/java/cn/stylefeng/roses/kernel/db/api/util/SqlRunUtil.java 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-db/db-sdk-flyway/pom.xml 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-db/db-sdk-flyway/src/main/java/cn/stylefeng/roses/kernel/db/flyway/FlywayInitListener.java 166 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-db/db-sdk-flyway/src/main/resources/META-INF/spring.factories 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-db/db-sdk-init/pom.xml 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-db/db-sdk-init/src/main/java/cn/stylefeng/roses/kernel/db/init/actuator/DbInitializer.java 210 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-db/db-sdk-init/src/main/java/cn/stylefeng/roses/kernel/db/init/listener/InitTableListener.java 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-db/db-sdk-init/src/main/java/cn/stylefeng/roses/kernel/db/init/util/SqlExe.java 212 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-db/db-sdk-init/src/main/java/cn/stylefeng/roses/kernel/db/init/util/SqlUtil.java 112 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-db/db-sdk-mp/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-db/db-sdk-mp/pom.xml 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-db/db-sdk-mp/src/main/java/cn/stylefeng/roses/kernel/db/mp/dbid/CustomDatabaseIdProvider.java 91 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-db/db-sdk-mp/src/main/java/cn/stylefeng/roses/kernel/db/mp/dboperator/DbOperatorImpl.java 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-db/db-sdk-mp/src/main/java/cn/stylefeng/roses/kernel/db/mp/fieldfill/CustomMetaObjectHandler.java 192 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-db/db-sdk-mp/src/main/java/cn/stylefeng/roses/kernel/db/mp/injector/CustomBaseMapper.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-db/db-sdk-mp/src/main/java/cn/stylefeng/roses/kernel/db/mp/injector/CustomInsertBatchSqlInjector.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-db/db-spring-boot-starter/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-db/db-spring-boot-starter/pom.xml 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-db/db-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/db/starter/GunsDataSourceAutoConfiguration.java 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-db/db-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/db/starter/GunsDruidMonitorAutoConfiguration.java 100 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-db/db-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/db/starter/GunsDruidPropertiesAutoConfiguration.java 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-db/db-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/db/starter/GunsMyBatisPlusAutoConfiguration.java 123 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-db/db-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/db/starter/GunsRemoveDruidAdAutoConfiguration.java 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-db/db-spring-boot-starter/src/main/resources/META-INF/spring.factories 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-db/pom.xml 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-ds-container/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-ds-container/ds-container-api/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-ds-container/ds-container-api/pom.xml 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-ds-container/ds-container-api/src/main/java/cn/stylefeng/roses/kernel/dsctn/api/DataSourceApi.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-ds-container/ds-container-api/src/main/java/cn/stylefeng/roses/kernel/dsctn/api/annotation/DataSource.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-ds-container/ds-container-api/src/main/java/cn/stylefeng/roses/kernel/dsctn/api/constants/DatasourceContainerConstants.java 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-ds-container/ds-container-api/src/main/java/cn/stylefeng/roses/kernel/dsctn/api/context/CurrentDataSourceContext.java 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-ds-container/ds-container-api/src/main/java/cn/stylefeng/roses/kernel/dsctn/api/enums/DataSourceStatusEnum.java 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-ds-container/ds-container-api/src/main/java/cn/stylefeng/roses/kernel/dsctn/api/exception/DatasourceContainerException.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-ds-container/ds-container-api/src/main/java/cn/stylefeng/roses/kernel/dsctn/api/exception/enums/DatasourceContainerExceptionEnum.java 121 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-ds-container/ds-container-api/src/main/java/cn/stylefeng/roses/kernel/dsctn/api/pojo/DataBaseInfoDto.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-ds-container/ds-container-api/src/main/java/cn/stylefeng/roses/kernel/dsctn/api/pojo/DataSourceDto.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-ds-container/ds-container-api/src/main/java/cn/stylefeng/roses/kernel/dsctn/api/pojo/request/DatabaseInfoRequest.java 115 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-ds-container/ds-container-business/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-ds-container/ds-container-business/pom.xml 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-ds-container/ds-container-business/src/main/java/cn/stylefeng/roses/kernel/dsctn/modular/controller/DatabaseInfoController.java 137 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-ds-container/ds-container-business/src/main/java/cn/stylefeng/roses/kernel/dsctn/modular/entity/DatabaseInfo.java 128 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-ds-container/ds-container-business/src/main/java/cn/stylefeng/roses/kernel/dsctn/modular/factory/DruidPropertiesFactory.java 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-ds-container/ds-container-business/src/main/java/cn/stylefeng/roses/kernel/dsctn/modular/mapper/DatabaseInfoMapper.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-ds-container/ds-container-business/src/main/java/cn/stylefeng/roses/kernel/dsctn/modular/mapper/mapping/DatabaseInfoMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-ds-container/ds-container-business/src/main/java/cn/stylefeng/roses/kernel/dsctn/modular/service/DatabaseInfoService.java 98 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-ds-container/ds-container-business/src/main/java/cn/stylefeng/roses/kernel/dsctn/modular/service/impl/DatabaseInfoServiceImpl.java 363 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-ds-container/ds-container-business/src/main/java/cn/stylefeng/roses/kernel/dsctn/modular/timer/DataSourceStatusCheckTimer.java 97 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-ds-container/ds-container-sdk/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-ds-container/ds-container-sdk/pom.xml 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-ds-container/ds-container-sdk/src/main/java/cn/stylefeng/roses/kernel/dsctn/AbstractRoutingDataSource.java 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-ds-container/ds-container-sdk/src/main/java/cn/stylefeng/roses/kernel/dsctn/DynamicDataSource.java 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-ds-container/ds-container-sdk/src/main/java/cn/stylefeng/roses/kernel/dsctn/aop/MultiSourceExchangeAop.java 103 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-ds-container/ds-container-sdk/src/main/java/cn/stylefeng/roses/kernel/dsctn/context/DataSourceContext.java 166 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-ds-container/ds-container-sdk/src/main/java/cn/stylefeng/roses/kernel/dsctn/listener/DataSourceInitListener.java 200 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-ds-container/ds-container-sdk/src/main/java/cn/stylefeng/roses/kernel/dsctn/persist/DataBaseInfoPersistence.java 185 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-ds-container/ds-container-sdk/src/main/java/cn/stylefeng/roses/kernel/dsctn/persist/sqladapter/AddDatabaseInfoSql.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-ds-container/ds-container-sdk/src/main/java/cn/stylefeng/roses/kernel/dsctn/persist/sqladapter/DatabaseListSql.java 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-ds-container/ds-container-sdk/src/main/java/cn/stylefeng/roses/kernel/dsctn/persist/sqladapter/DeleteDatabaseInfoSql.java 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-ds-container/ds-container-spring-boot-starter/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-ds-container/ds-container-spring-boot-starter/pom.xml 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-ds-container/ds-container-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/dsctn/starter/GunsDataSourceContainerAutoConfiguration.java 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-ds-container/ds-container-spring-boot-starter/src/main/resources/META-INF/spring.factories 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-ds-container/pom.xml 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-email/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-email/email-api/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-email/email-api/pom.xml 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-email/email-api/src/main/java/cn/stylefeng/roses/kernel/email/api/MailSenderApi.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-email/email-api/src/main/java/cn/stylefeng/roses/kernel/email/api/constants/MailConstants.java 85 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-email/email-api/src/main/java/cn/stylefeng/roses/kernel/email/api/context/MailSenderContext.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-email/email-api/src/main/java/cn/stylefeng/roses/kernel/email/api/exception/MailException.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-email/email-api/src/main/java/cn/stylefeng/roses/kernel/email/api/exception/enums/EmailExceptionEnum.java 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-email/email-api/src/main/java/cn/stylefeng/roses/kernel/email/api/expander/EmailConfigExpander.java 148 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-email/email-api/src/main/java/cn/stylefeng/roses/kernel/email/api/pojo/SendMailParam.java 81 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-email/email-api/src/main/java/cn/stylefeng/roses/kernel/email/api/pojo/aliyun/AliyunMailSenderProperties.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-email/email-api/src/main/java/cn/stylefeng/roses/kernel/email/api/pojo/aliyun/AliyunSendMailParam.java 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-email/email-sdk-aliyun/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-email/email-sdk-aliyun/pom.xml 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-email/email-sdk-aliyun/src/main/java/cn/stylefeng/roses/kernel/email/aliyun/AliyunMailSender.java 248 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-email/email-sdk-java/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-email/email-sdk-java/pom.xml 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-email/email-sdk-java/src/main/java/cn/stylefeng/roses/kernel/email/jdk/JavaMailSender.java 116 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-email/email-spring-boot-starter/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-email/email-spring-boot-starter/pom.xml 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-email/email-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/email/starter/GunsEmailAutoConfiguration.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-email/email-spring-boot-starter/src/main/resources/META-INF/spring.factories 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-email/pom.xml 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-file/README.md 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-file/file-api/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-file/file-api/pom.xml 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-file/file-api/src/main/java/cn/stylefeng/roses/kernel/file/api/FileInfoApi.java 109 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-file/file-api/src/main/java/cn/stylefeng/roses/kernel/file/api/FileOperatorApi.java 200 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-file/file-api/src/main/java/cn/stylefeng/roses/kernel/file/api/constants/FileConstants.java 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-file/file-api/src/main/java/cn/stylefeng/roses/kernel/file/api/context/FileContext.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-file/file-api/src/main/java/cn/stylefeng/roses/kernel/file/api/enums/BucketAuthEnum.java 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-file/file-api/src/main/java/cn/stylefeng/roses/kernel/file/api/enums/FileLocationEnum.java 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-file/file-api/src/main/java/cn/stylefeng/roses/kernel/file/api/enums/FileStatusEnum.java 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-file/file-api/src/main/java/cn/stylefeng/roses/kernel/file/api/exception/FileException.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-file/file-api/src/main/java/cn/stylefeng/roses/kernel/file/api/exception/enums/FileExceptionEnum.java 141 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-file/file-api/src/main/java/cn/stylefeng/roses/kernel/file/api/expander/FileConfigExpander.java 109 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-file/file-api/src/main/java/cn/stylefeng/roses/kernel/file/api/pojo/AntdvFileInfo.java 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-file/file-api/src/main/java/cn/stylefeng/roses/kernel/file/api/pojo/props/AliyunOssProperties.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-file/file-api/src/main/java/cn/stylefeng/roses/kernel/file/api/pojo/props/LocalFileProperties.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-file/file-api/src/main/java/cn/stylefeng/roses/kernel/file/api/pojo/props/MinIoProperties.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-file/file-api/src/main/java/cn/stylefeng/roses/kernel/file/api/pojo/props/TenCosProperties.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-file/file-api/src/main/java/cn/stylefeng/roses/kernel/file/api/pojo/request/SysFileInfoRequest.java 137 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-file/file-api/src/main/java/cn/stylefeng/roses/kernel/file/api/pojo/response/SysFileInfoListResponse.java 152 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-file/file-api/src/main/java/cn/stylefeng/roses/kernel/file/api/pojo/response/SysFileInfoResponse.java 133 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-file/file-api/src/main/java/cn/stylefeng/roses/kernel/file/api/util/DownloadUtil.java 119 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-file/file-api/src/main/java/cn/stylefeng/roses/kernel/file/api/util/PdfFileTypeUtil.java 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-file/file-api/src/main/java/cn/stylefeng/roses/kernel/file/api/util/PicFileTypeUtil.java 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-file/file-business/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-file/file-business/pom.xml 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-file/file-business/src/main/java/cn/stylefeng/roses/kernel/file/modular/controller/SysFileInfoController.java 291 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-file/file-business/src/main/java/cn/stylefeng/roses/kernel/file/modular/entity/SysFileInfo.java 146 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-file/file-business/src/main/java/cn/stylefeng/roses/kernel/file/modular/entity/SysFileStorage.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-file/file-business/src/main/java/cn/stylefeng/roses/kernel/file/modular/factory/FileInfoFactory.java 189 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-file/file-business/src/main/java/cn/stylefeng/roses/kernel/file/modular/mapper/SysFileInfoMapper.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-file/file-business/src/main/java/cn/stylefeng/roses/kernel/file/modular/mapper/SysFileStorageMapper.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-file/file-business/src/main/java/cn/stylefeng/roses/kernel/file/modular/mapper/mapping/SysFileInfoMapper.xml 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-file/file-business/src/main/java/cn/stylefeng/roses/kernel/file/modular/mapper/mapping/SysFileStorageMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-file/file-business/src/main/java/cn/stylefeng/roses/kernel/file/modular/service/SysFileInfoService.java 171 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-file/file-business/src/main/java/cn/stylefeng/roses/kernel/file/modular/service/SysFileStorageService.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-file/file-business/src/main/java/cn/stylefeng/roses/kernel/file/modular/service/impl/SysFileInfoServiceImpl.java 585 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-file/file-business/src/main/java/cn/stylefeng/roses/kernel/file/modular/service/impl/SysFileStorageServiceImpl.java 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-file/file-sdk-aliyun/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-file/file-sdk-aliyun/pom.xml 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-file/file-sdk-aliyun/src/main/java/cn/stylefeng/roses/kernel/file/aliyun/AliyunFileOperator.java 217 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-file/file-sdk-local/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-file/file-sdk-local/pom.xml 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-file/file-sdk-local/src/main/java/cn/stylefeng/roses/kernel/file/local/LocalFileOperator.java 209 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-file/file-sdk-minio/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-file/file-sdk-minio/pom.xml 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-file/file-sdk-minio/src/main/java/cn/stylefeng/roses/kernel/file/minio/MinIoFileOperator.java 294 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-file/file-sdk-tencent/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-file/file-sdk-tencent/pom.xml 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-file/file-sdk-tencent/src/main/java/cn/stylefeng/roses/kernel/file/tencent/TenFileOperator.java 270 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-file/file-spring-boot-starter/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-file/file-spring-boot-starter/pom.xml 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-file/file-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/file/starter/GunsFileAutoConfiguration.java 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-file/file-spring-boot-starter/src/main/resources/META-INF/spring.factories 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-file/pom.xml 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-groovy/README.md 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-groovy/groovy-api/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-groovy/groovy-api/pom.xml 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-groovy/groovy-api/src/main/java/cn/stylefeng/roses/kernel/groovy/api/GroovyApi.java 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-groovy/groovy-api/src/main/java/cn/stylefeng/roses/kernel/groovy/api/constants/GroovyConstants.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-groovy/groovy-api/src/main/java/cn/stylefeng/roses/kernel/groovy/api/exception/GroovyException.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-groovy/groovy-api/src/main/java/cn/stylefeng/roses/kernel/groovy/api/exception/enums/GroovyExceptionEnum.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-groovy/groovy-sdk/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-groovy/groovy-sdk/pom.xml 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-groovy/groovy-sdk/src/main/java/cn/stylefeng/roses/kernel/groovy/GroovyOperator.java 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-groovy/groovy-spring-boot-starter/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-groovy/groovy-spring-boot-starter/pom.xml 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-groovy/groovy-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/groovy/starter/GunsGroovyAutoConfiguration.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-groovy/groovy-spring-boot-starter/src/main/resources/META-INF/spring.factories 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-groovy/pom.xml 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-i18n/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-i18n/i18n-api/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-i18n/i18n-api/pom.xml 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-i18n/i18n-api/src/main/java/cn/stylefeng/roses/kernel/i18n/api/TranslationApi.java 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-i18n/i18n-api/src/main/java/cn/stylefeng/roses/kernel/i18n/api/TranslationPersistenceApi.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-i18n/i18n-api/src/main/java/cn/stylefeng/roses/kernel/i18n/api/constants/TranslationConstants.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-i18n/i18n-api/src/main/java/cn/stylefeng/roses/kernel/i18n/api/context/TranslationContext.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-i18n/i18n-api/src/main/java/cn/stylefeng/roses/kernel/i18n/api/exception/TranslationException.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-i18n/i18n-api/src/main/java/cn/stylefeng/roses/kernel/i18n/api/exception/enums/TranslationExceptionEnum.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-i18n/i18n-api/src/main/java/cn/stylefeng/roses/kernel/i18n/api/pojo/TranslationDict.java 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-i18n/i18n-api/src/main/java/cn/stylefeng/roses/kernel/i18n/api/pojo/request/TranslationRequest.java 101 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-i18n/i18n-business/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-i18n/i18n-business/pom.xml 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-i18n/i18n-business/src/main/java/cn/stylefeng/roses/kernel/i18n/modular/controller/TranslationController.java 131 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-i18n/i18n-business/src/main/java/cn/stylefeng/roses/kernel/i18n/modular/controller/UserTranslationController.java 111 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-i18n/i18n-business/src/main/java/cn/stylefeng/roses/kernel/i18n/modular/entity/Translation.java 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-i18n/i18n-business/src/main/java/cn/stylefeng/roses/kernel/i18n/modular/factory/TranslationDictFactory.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-i18n/i18n-business/src/main/java/cn/stylefeng/roses/kernel/i18n/modular/mapper/TranslationMapper.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-i18n/i18n-business/src/main/java/cn/stylefeng/roses/kernel/i18n/modular/mapper/mapping/TranslationMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-i18n/i18n-business/src/main/java/cn/stylefeng/roses/kernel/i18n/modular/service/TranslationService.java 106 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-i18n/i18n-business/src/main/java/cn/stylefeng/roses/kernel/i18n/modular/service/impl/TranslationServiceImpl.java 196 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-i18n/i18n-sdk/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-i18n/i18n-sdk/pom.xml 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-i18n/i18n-sdk/src/main/java/cn/stylefeng/roses/kernel/i18n/TranslationContainer.java 87 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-i18n/i18n-sdk/src/main/java/cn/stylefeng/roses/kernel/i18n/listener/TranslationDictInitListener.java 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-i18n/i18n-sdk/src/main/java/cn/stylefeng/roses/kernel/i18n/util/QuickTranslateUtil.java 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-i18n/i18n-spring-boot-starter/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-i18n/i18n-spring-boot-starter/pom.xml 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-i18n/i18n-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/i18n/starter/GunsTranslationAutoConfiguration.java 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-i18n/i18n-spring-boot-starter/src/main/resources/META-INF/spring.factories 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-i18n/pom.xml 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-im/im-api/pom.xml 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-im/im-api/src/main/java/cn/stylefeng/roses/kernel/im/api/ImServerApi.java 177 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-im/im-api/src/main/java/cn/stylefeng/roses/kernel/im/api/constants/ImConstants.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-im/im-api/src/main/java/cn/stylefeng/roses/kernel/im/api/context/ImContext.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-im/im-api/src/main/java/cn/stylefeng/roses/kernel/im/api/expander/ImConfigExpander.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-im/im-api/src/main/java/cn/stylefeng/roses/kernel/im/api/pojo/HistoryMessageDTO.java 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-im/im-api/src/main/java/cn/stylefeng/roses/kernel/im/api/pojo/ImMessageRoutingDTO.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-im/im-api/src/main/java/cn/stylefeng/roses/kernel/im/api/pojo/RongCloudProperties.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-im/im-api/src/main/java/cn/stylefeng/roses/kernel/im/api/pojo/request/ImUserModelRequest.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-im/im-business-rongcloud/pom.xml 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-im/im-business-rongcloud/src/main/java/cn/stylefeng/roses/kernel/im/business/controller/ImServerController.java 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-im/im-sdk-rongcloud/pom.xml 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-im/im-sdk-rongcloud/src/main/java/cn/stylefeng/roses/kernel/im/rongcloud/RongCloudImServer.java 357 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-im/im-sdk-rongcloud/src/main/java/cn/stylefeng/roses/kernel/im/rongcloud/enums/RongCloudImResultEnum.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-im/im-spring-boot-starter/pom.xml 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-im/im-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/im/starter/GunsImAutoConfiguration.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-im/im-spring-boot-starter/src/main/resources/META-INF/spring.factories 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-im/pom.xml 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-jwt/README.md 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-jwt/jwt-api/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-jwt/jwt-api/pom.xml 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-jwt/jwt-api/src/main/java/cn/stylefeng/roses/kernel/jwt/api/JwtApi.java 122 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-jwt/jwt-api/src/main/java/cn/stylefeng/roses/kernel/jwt/api/constants/JwtConstants.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-jwt/jwt-api/src/main/java/cn/stylefeng/roses/kernel/jwt/api/context/JwtContext.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-jwt/jwt-api/src/main/java/cn/stylefeng/roses/kernel/jwt/api/exception/JwtException.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-jwt/jwt-api/src/main/java/cn/stylefeng/roses/kernel/jwt/api/exception/enums/JwtExceptionEnum.java 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-jwt/jwt-api/src/main/java/cn/stylefeng/roses/kernel/jwt/api/expander/JwtConfigExpander.java 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-jwt/jwt-api/src/main/java/cn/stylefeng/roses/kernel/jwt/api/pojo/config/JwtConfig.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-jwt/jwt-api/src/main/java/cn/stylefeng/roses/kernel/jwt/api/pojo/payload/DefaultJwtPayload.java 95 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-jwt/jwt-sdk/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-jwt/jwt-sdk/pom.xml 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-jwt/jwt-sdk/src/main/java/cn/stylefeng/roses/kernel/jwt/JwtTokenOperator.java 146 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-jwt/jwt-sdk/src/main/java/cn/stylefeng/roses/kernel/jwt/factory/JwtTokenApiFactory.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-jwt/jwt-spring-boot-starter/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-jwt/jwt-spring-boot-starter/pom.xml 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-jwt/jwt-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/jwt/starter/GunsJwtAutoConfiguration.java 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-jwt/jwt-spring-boot-starter/src/main/resources/META-INF/spring.factories 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-jwt/pom.xml 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-log/README.md 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-log/log-api/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-log/log-api/pom.xml 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-log/log-api/src/main/java/cn/stylefeng/roses/kernel/log/api/LogManagerApi.java 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-log/log-api/src/main/java/cn/stylefeng/roses/kernel/log/api/LogRecordApi.java 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-log/log-api/src/main/java/cn/stylefeng/roses/kernel/log/api/LoginLogServiceApi.java 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-log/log-api/src/main/java/cn/stylefeng/roses/kernel/log/api/constants/LogConstants.java 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-log/log-api/src/main/java/cn/stylefeng/roses/kernel/log/api/constants/LogFileConstants.java 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-log/log-api/src/main/java/cn/stylefeng/roses/kernel/log/api/context/LogRecordContext.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-log/log-api/src/main/java/cn/stylefeng/roses/kernel/log/api/context/ServerInfoContext.java 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-log/log-api/src/main/java/cn/stylefeng/roses/kernel/log/api/enums/LogSaveTypeEnum.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-log/log-api/src/main/java/cn/stylefeng/roses/kernel/log/api/exception/LogException.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-log/log-api/src/main/java/cn/stylefeng/roses/kernel/log/api/exception/enums/LogExceptionEnum.java 81 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-log/log-api/src/main/java/cn/stylefeng/roses/kernel/log/api/expander/LogConfigExpander.java 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-log/log-api/src/main/java/cn/stylefeng/roses/kernel/log/api/factory/LogRecordFactory.java 83 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-log/log-api/src/main/java/cn/stylefeng/roses/kernel/log/api/factory/appender/AuthedLogAppender.java 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-log/log-api/src/main/java/cn/stylefeng/roses/kernel/log/api/factory/appender/HttpLogAppender.java 86 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-log/log-api/src/main/java/cn/stylefeng/roses/kernel/log/api/factory/appender/ParamsLogAppender.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-log/log-api/src/main/java/cn/stylefeng/roses/kernel/log/api/pojo/log/SysLogProperties.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-log/log-api/src/main/java/cn/stylefeng/roses/kernel/log/api/pojo/loginlog/SysLoginLogDto.java 81 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-log/log-api/src/main/java/cn/stylefeng/roses/kernel/log/api/pojo/loginlog/SysLoginLogRequest.java 100 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-log/log-api/src/main/java/cn/stylefeng/roses/kernel/log/api/pojo/manage/LogManagerRequest.java 103 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-log/log-api/src/main/java/cn/stylefeng/roses/kernel/log/api/pojo/record/LogRecordDTO.java 154 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-log/log-api/src/main/java/cn/stylefeng/roses/kernel/log/api/threadpool/LogManagerThreadPool.java 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-log/log-business-login-log/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-log/log-business-login-log/pom.xml 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-log/log-business-login-log/src/main/java/cn/stylefeng/roses/kernel/system/modular/loginlog/constants/LoginLogConstant.java 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-log/log-business-login-log/src/main/java/cn/stylefeng/roses/kernel/system/modular/loginlog/controller/SysLoginLogController.java 91 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-log/log-business-login-log/src/main/java/cn/stylefeng/roses/kernel/system/modular/loginlog/entity/SysLoginLog.java 95 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-log/log-business-login-log/src/main/java/cn/stylefeng/roses/kernel/system/modular/loginlog/mapper/SysLoginLogMapper.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-log/log-business-login-log/src/main/java/cn/stylefeng/roses/kernel/system/modular/loginlog/mapper/mapping/SysLoginLogMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-log/log-business-login-log/src/main/java/cn/stylefeng/roses/kernel/system/modular/loginlog/service/SysLoginLogService.java 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-log/log-business-login-log/src/main/java/cn/stylefeng/roses/kernel/system/modular/loginlog/service/impl/SysLoginLogServiceImpl.java 204 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-log/log-business-manage/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-log/log-business-manage/pom.xml 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-log/log-business-manage/src/main/java/cn/stylefeng/roses/kernel/log/manage/controller/LogManagerController.java 114 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-log/log-business-requestapi/README.md 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-log/log-business-requestapi/pom.xml 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-log/log-business-requestapi/src/main/java/cn/stylefeng/roses/kernel/log/requestapi/RequestApiLogRecordAop.java 318 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-log/log-sdk-db/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-log/log-sdk-db/pom.xml 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-log/log-sdk-db/src/main/java/cn/stylefeng/roses/kernel/log/db/DbLogManagerServiceImpl.java 99 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-log/log-sdk-db/src/main/java/cn/stylefeng/roses/kernel/log/db/DbLogRecordServiceImpl.java 300 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-log/log-sdk-db/src/main/java/cn/stylefeng/roses/kernel/log/db/entity/SysLog.java 124 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-log/log-sdk-db/src/main/java/cn/stylefeng/roses/kernel/log/db/mapper/SysLogMapper.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-log/log-sdk-db/src/main/java/cn/stylefeng/roses/kernel/log/db/mapper/mapping/SysLogMapper.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-log/log-sdk-db/src/main/java/cn/stylefeng/roses/kernel/log/db/service/SysLogService.java 95 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-log/log-sdk-db/src/main/java/cn/stylefeng/roses/kernel/log/db/service/impl/SysLogServiceImpl.java 166 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-log/log-sdk-file/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-log/log-sdk-file/pom.xml 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-log/log-sdk-file/src/main/java/cn/stylefeng/roses/kernel/log/file/FileLogManagerServiceImpl.java 388 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-log/log-sdk-file/src/main/java/cn/stylefeng/roses/kernel/log/file/FileLogRecordServiceImpl.java 351 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-log/log-spring-boot-starter/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-log/log-spring-boot-starter/pom.xml 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-log/log-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/log/starter/GunsLogAutoConfiguration.java 161 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-log/log-spring-boot-starter/src/main/resources/META-INF/spring.factories 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-log/pom.xml 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-mongodb/README.md 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-mongodb/mongodb-api/pom.xml 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-mongodb/mongodb-api/src/main/java/cn/stylefeng/roses/kernel/mongodb/api/MongoFileApi.java 79 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-mongodb/mongodb-api/src/main/java/cn/stylefeng/roses/kernel/mongodb/api/MongodbApi.java 85 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-mongodb/mongodb-api/src/main/java/cn/stylefeng/roses/kernel/mongodb/api/constants/MongodbConstants.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-mongodb/mongodb-api/src/main/java/cn/stylefeng/roses/kernel/mongodb/api/exception/MongodbException.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-mongodb/mongodb-integration-beetl/pom.xml 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-mongodb/mongodb-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/mongodb/integration/controller/ModelViewController.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-mongodb/mongodb-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/mongodb/integration/controller/MongoFileController.java 115 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-mongodb/mongodb-integration-beetl/src/main/resources/assets/modular/mongodb/fileList.js 99 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-mongodb/mongodb-integration-beetl/src/main/resources/pages/modular/mongodb/fileList.html 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-mongodb/mongodb-sdk-file/pom.xml 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-mongodb/mongodb-sdk-file/src/main/java/cn/stylefeng/roses/kernel/mongodb/file/entity/MongoFileEntity.java 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-mongodb/mongodb-sdk-file/src/main/java/cn/stylefeng/roses/kernel/mongodb/file/mapper/MongoFileMapper.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-mongodb/mongodb-sdk-file/src/main/java/cn/stylefeng/roses/kernel/mongodb/file/service/MongoFileService.java 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-mongodb/mongodb-sdk-file/src/main/java/cn/stylefeng/roses/kernel/mongodb/file/service/impl/MongoFileServiceImpl.java 143 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-mongodb/mongodb-sdk-springboot/pom.xml 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-mongodb/mongodb-sdk-springboot/src/main/java/cn/stylefeng/roses/kernel/mongodb/entity/GunsMapEntity.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-mongodb/mongodb-sdk-springboot/src/main/java/cn/stylefeng/roses/kernel/mongodb/mapper/GunsMapRepository.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-mongodb/mongodb-sdk-springboot/src/main/java/cn/stylefeng/roses/kernel/mongodb/service/GunsMapService.java 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-mongodb/mongodb-sdk-springboot/src/main/java/cn/stylefeng/roses/kernel/mongodb/service/impl/GunsMapServiceImpl.java 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-mongodb/mongodb-spring-boot-starter/pom.xml 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-mongodb/mongodb-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/mongodb/starter/GunsMongodbAutoConfiguration.java 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-mongodb/mongodb-spring-boot-starter/src/main/resources/META-INF/spring.factories 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-mongodb/pom.xml 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-office/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-office/office-api/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-office/office-api/pom.xml 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-office/office-api/src/main/java/cn/stylefeng/roses/kernel/office/api/OfficeExcelApi.java 81 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-office/office-api/src/main/java/cn/stylefeng/roses/kernel/office/api/constants/OfficeConstants.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-office/office-api/src/main/java/cn/stylefeng/roses/kernel/office/api/exception/OfficeException.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-office/office-api/src/main/java/cn/stylefeng/roses/kernel/office/api/exception/enums/OfficeExceptionEnum.java 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-office/office-api/src/main/java/cn/stylefeng/roses/kernel/office/api/pojo/report/ExcelExportParam.java 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-office/office-sdk-excel/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-office/office-sdk-excel/pom.xml 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-office/office-sdk-excel/src/main/java/cn/stylefeng/roses/kernel/office/excel/OfficeExcel.java 186 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-office/office-sdk-excel/src/main/java/cn/stylefeng/roses/kernel/office/excel/listener/SimpleDataListener.java 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-office/office-spring-boot-starter/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-office/office-spring-boot-starter/pom.xml 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-office/office-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/office/starter/ExcelAutoConfiguration.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-office/pom.xml 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-openapi/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-openapi/openapi-api/pom.xml 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-openapi/openapi-api/src/main/java/cn/stylefeng/roses/kernel/openapi/api/constants/OpenApiConstants.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-openapi/openapi-api/src/main/java/cn/stylefeng/roses/kernel/openapi/api/exception/OpenApiException.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-openapi/openapi-sdk-springdoc/pom.xml 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-openapi/openapi-sdk-springdoc/src/main/java/cn/stylefeng/roses/kernel/springdoc/converter/GunsModelConverterImpl.java 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-openapi/openapi-sdk-springdoc/src/main/java/cn/stylefeng/roses/kernel/springdoc/providers/GunsJavadocProviderImpl.java 108 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-openapi/openapi-spring-boot-starter/pom.xml 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-openapi/openapi-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/springdoc/starter/SpringdocOpenApiAutoConfiguration.java 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-openapi/openapi-spring-boot-starter/src/main/resources/META-INF/spring.factories 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-openapi/pom.xml 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-pinyin/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-pinyin/pinyin-api/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-pinyin/pinyin-api/pom.xml 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-pinyin/pinyin-api/src/main/java/cn/stylefeng/roses/kernel/pinyin/api/PinYinApi.java 96 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-pinyin/pinyin-api/src/main/java/cn/stylefeng/roses/kernel/pinyin/api/constants/PinyinConstants.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-pinyin/pinyin-api/src/main/java/cn/stylefeng/roses/kernel/pinyin/api/context/PinyinContext.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-pinyin/pinyin-api/src/main/java/cn/stylefeng/roses/kernel/pinyin/api/exception/PinyinException.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-pinyin/pinyin-api/src/main/java/cn/stylefeng/roses/kernel/pinyin/api/exception/enums/PinyinExceptionEnum.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-pinyin/pinyin-sdk-pinyin4j/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-pinyin/pinyin-sdk-pinyin4j/pom.xml 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-pinyin/pinyin-sdk-pinyin4j/src/main/java/cn/stylefeng/roses/kernel/pinyin/PinyinServiceImpl.java 213 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-pinyin/pinyin-spring-boot-starter/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-pinyin/pinyin-spring-boot-starter/pom.xml 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-pinyin/pinyin-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/pinyin/starter/GunsPinyinAutoConfiguration.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-pinyin/pinyin-spring-boot-starter/src/main/resources/META-INF/spring.factories 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-pinyin/pom.xml 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-scanner/README.md 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-scanner/pom.xml 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-scanner/scanner-api/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-scanner/scanner-api/pom.xml 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/DevOpsDetectApi.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/DevOpsReportApi.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/ResourceCollectorApi.java 139 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/ResourceReportApi.java 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/annotation/ApiResource.java 117 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/annotation/GetResource.java 112 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/annotation/PostResource.java 117 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/constants/ScannerConstants.java 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/context/MetadataContext.java 170 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/enums/FieldMetadataTypeEnum.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/enums/ParamTypeEnum.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/exception/ScannerException.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/exception/enums/DevOpsExceptionEnum.java 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/exception/enums/ScannerExceptionEnum.java 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/factory/ClassDetailMetadataFactory.java 173 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/factory/ClassMetadataFactory.java 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/holder/InitScanFlagHolder.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/holder/IpAddrHolder.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/holder/IpAddrRemoveThreadLocalHolder.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/pojo/devops/DevOpsReportProperties.java 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/pojo/devops/DevOpsReportResourceParam.java 79 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/pojo/resource/FieldMetadata.java 119 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/pojo/resource/ParameterMetadata.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/pojo/resource/ReportResourceParam.java 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/pojo/resource/ResourceDefinition.java 172 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/pojo/resource/ResourceUrlParam.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/pojo/resource/SysResourcePersistencePojo.java 162 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/pojo/resource/UserResourceParam.java 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/pojo/scanner/ScannerProperties.java 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/util/ClassDescriptionUtil.java 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/util/ClassReflectUtil.java 431 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/util/FieldDescriptionUtil.java 117 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/util/MethodReflectUtil.java 230 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-scanner/scanner-sdk-scanner/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-scanner/scanner-sdk-scanner/pom.xml 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-scanner/scanner-sdk-scanner/src/main/java/cn/stylefeng/roses/kernel/scanner/ApiResourceScanner.java 412 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-scanner/scanner-sdk-scanner/src/main/java/cn/stylefeng/roses/kernel/scanner/DefaultResourceCollector.java 150 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-scanner/scanner-sdk-scanner/src/main/java/cn/stylefeng/roses/kernel/scanner/ResourceReportListener.java 116 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-scanner/scanner-sdk-scanner/src/main/java/cn/stylefeng/roses/kernel/scanner/devops/DefaultDevOpsReportImpl.java 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-scanner/scanner-sdk-scanner/src/main/java/cn/stylefeng/roses/kernel/scanner/devops/LocalizedDevOpsReportImpl.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-scanner/scanner-spring-boot-starter/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-scanner/scanner-spring-boot-starter/pom.xml 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-scanner/scanner-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/scanner/starter/GunsResourceAutoConfiguration.java 143 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-scanner/scanner-spring-boot-starter/src/main/resources/META-INF/spring.factories 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-seata/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-seata/db/db.sql 111 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-seata/doc/seata使用手册.docx 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-seata/pom.xml 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-seata/seata-demo-order/pom.xml 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-seata/seata-demo-order/src/main/java/cn/stylefeng/roses/kernel/seata/order/consumer/StorageConsumer.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-seata/seata-demo-order/src/main/java/cn/stylefeng/roses/kernel/seata/order/consumer/WalletConsumer.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-seata/seata-demo-order/src/main/java/cn/stylefeng/roses/kernel/seata/order/controller/OrderController.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-seata/seata-demo-order/src/main/java/cn/stylefeng/roses/kernel/seata/order/entity/Order.java 169 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-seata/seata-demo-order/src/main/java/cn/stylefeng/roses/kernel/seata/order/mapper/OrderMapper.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-seata/seata-demo-order/src/main/java/cn/stylefeng/roses/kernel/seata/order/mapper/mapping/OrderMapper.xml 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-seata/seata-demo-order/src/main/java/cn/stylefeng/roses/kernel/seata/order/service/OrderService.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-seata/seata-demo-order/src/main/java/cn/stylefeng/roses/kernel/seata/order/service/impl/OrderServiceImpl.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-seata/seata-demo-storage-api/pom.xml 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-seata/seata-demo-storage-api/src/main/java/cn/stylefeng/roses/kernel/seata/api/StorageApi.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-seata/seata-demo-wallet-api/pom.xml 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-seata/seata-demo-wallet-api/src/main/java/cn/stylefeng/roses/kernel/seata/wallet/api/WalletApi.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-security/README.md 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-security/pom.xml 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-security/security-api/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-security/security-api/pom.xml 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-security/security-api/src/main/java/cn/stylefeng/roses/kernel/security/api/BlackListApi.java 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-security/security-api/src/main/java/cn/stylefeng/roses/kernel/security/api/CountValidatorApi.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-security/security-api/src/main/java/cn/stylefeng/roses/kernel/security/api/DragCaptchaApi.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-security/security-api/src/main/java/cn/stylefeng/roses/kernel/security/api/ImageCaptchaApi.java 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-security/security-api/src/main/java/cn/stylefeng/roses/kernel/security/api/WhiteListApi.java 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-security/security-api/src/main/java/cn/stylefeng/roses/kernel/security/api/constants/CaptchaConstants.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-security/security-api/src/main/java/cn/stylefeng/roses/kernel/security/api/constants/CounterConstants.java 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-security/security-api/src/main/java/cn/stylefeng/roses/kernel/security/api/constants/SecurityConstants.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-security/security-api/src/main/java/cn/stylefeng/roses/kernel/security/api/exception/CountValidateException.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-security/security-api/src/main/java/cn/stylefeng/roses/kernel/security/api/exception/SecurityException.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-security/security-api/src/main/java/cn/stylefeng/roses/kernel/security/api/exception/XssFilterException.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-security/security-api/src/main/java/cn/stylefeng/roses/kernel/security/api/exception/enums/CountValidateExceptionEnum.java 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-security/security-api/src/main/java/cn/stylefeng/roses/kernel/security/api/exception/enums/SecurityExceptionEnum.java 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-security/security-api/src/main/java/cn/stylefeng/roses/kernel/security/api/exception/enums/XssFilterExceptionEnum.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-security/security-api/src/main/java/cn/stylefeng/roses/kernel/security/api/expander/SecurityConfigExpander.java 101 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-security/security-api/src/main/java/cn/stylefeng/roses/kernel/security/api/pojo/DragCaptchaImageDTO.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-security/security-api/src/main/java/cn/stylefeng/roses/kernel/security/api/pojo/ImageCaptcha.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-security/security-sdk-black-white/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-security/security-sdk-black-white/pom.xml 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-security/security-sdk-black-white/src/main/java/cn/stylefeng/roses/kernel/security/blackwhite/BlackListService.java 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-security/security-sdk-black-white/src/main/java/cn/stylefeng/roses/kernel/security/blackwhite/WhiteListService.java 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-security/security-sdk-black-white/src/main/java/cn/stylefeng/roses/kernel/security/blackwhite/cache/BlackListMemoryCache.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-security/security-sdk-black-white/src/main/java/cn/stylefeng/roses/kernel/security/blackwhite/cache/BlackListRedisCache.java 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-security/security-sdk-black-white/src/main/java/cn/stylefeng/roses/kernel/security/blackwhite/cache/WhiteListMemoryCache.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-security/security-sdk-black-white/src/main/java/cn/stylefeng/roses/kernel/security/blackwhite/cache/WhiteListRedisCache.java 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-security/security-sdk-captcha/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-security/security-sdk-captcha/pom.xml 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-security/security-sdk-captcha/src/main/java/cn/stylefeng/roses/kernel/security/captcha/DragCaptchaService.java 106 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-security/security-sdk-captcha/src/main/java/cn/stylefeng/roses/kernel/security/captcha/ImageCaptchaService.java 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-security/security-sdk-captcha/src/main/java/cn/stylefeng/roses/kernel/security/captcha/cache/CaptchaMemoryCache.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-security/security-sdk-captcha/src/main/java/cn/stylefeng/roses/kernel/security/captcha/cache/CaptchaRedisCache.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-security/security-sdk-captcha/src/main/java/cn/stylefeng/roses/kernel/security/captcha/util/DragCaptchaImageUtil.java 261 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-security/security-sdk-clear-threadlocal/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-security/security-sdk-clear-threadlocal/pom.xml 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-security/security-sdk-clear-threadlocal/src/main/java/cn/stylefeng/roses/kernel/security/clear/ClearThreadLocalFilter.java 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-security/security-sdk-cors/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-security/security-sdk-cors/pom.xml 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-security/security-sdk-cors/src/main/java/cn/stylefeng/roses/kernel/security/cors/CorsFilterConfiguration.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-security/security-sdk-count/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-security/security-sdk-count/pom.xml 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-security/security-sdk-count/src/main/java/cn/stylefeng/roses/kernel/security/count/DefaultCountValidator.java 96 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-security/security-sdk-count/src/main/java/cn/stylefeng/roses/kernel/security/count/cache/CountValidateMemoryCache.java 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-security/security-sdk-count/src/main/java/cn/stylefeng/roses/kernel/security/count/cache/CountValidateRedisCache.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-security/security-sdk-database-field/README.md 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-security/security-sdk-database-field/pom.xml 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-security/security-sdk-database-field/src/main/java/cn/stylefeng/roses/kernel/security/database/algorithm/EncryptAlgorithmApi.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-security/security-sdk-database-field/src/main/java/cn/stylefeng/roses/kernel/security/database/algorithm/impl/AesEncryptAlgorithmApiImpl.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-security/security-sdk-database-field/src/main/java/cn/stylefeng/roses/kernel/security/database/annotation/EncryptField.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-security/security-sdk-database-field/src/main/java/cn/stylefeng/roses/kernel/security/database/annotation/ProtectedData.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-security/security-sdk-database-field/src/main/java/cn/stylefeng/roses/kernel/security/database/annotation/ProtectedField.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-security/security-sdk-database-field/src/main/java/cn/stylefeng/roses/kernel/security/database/interceptor/ParameterInterceptor.java 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-security/security-sdk-database-field/src/main/java/cn/stylefeng/roses/kernel/security/database/interceptor/ResultInterceptor.java 140 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-security/security-sdk-request-encrypt-and-decode/README.md 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-security/security-sdk-request-encrypt-and-decode/pom.xml 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-security/security-sdk-request-encrypt-and-decode/src/main/java/cn/stylefeng/roses/kernel/security/request/encrypt/advice/EncryptionRequestBodyAdvice.java 198 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-security/security-sdk-request-encrypt-and-decode/src/main/java/cn/stylefeng/roses/kernel/security/request/encrypt/advice/EncryptionResponseBodyAdvice.java 98 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-security/security-sdk-request-encrypt-and-decode/src/main/java/cn/stylefeng/roses/kernel/security/request/encrypt/constants/EncryptionConstants.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-security/security-sdk-request-encrypt-and-decode/src/main/java/cn/stylefeng/roses/kernel/security/request/encrypt/exception/EncryptionException.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-security/security-sdk-request-encrypt-and-decode/src/main/java/cn/stylefeng/roses/kernel/security/request/encrypt/exception/enums/EncryptionExceptionEnum.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-security/security-sdk-request-encrypt-and-decode/src/main/java/cn/stylefeng/roses/kernel/security/request/encrypt/holder/EncryptRemoveThreadLocalHolder.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-security/security-sdk-request-encrypt-and-decode/src/main/java/cn/stylefeng/roses/kernel/security/request/encrypt/holder/EncryptionHolder.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-security/security-sdk-request-encrypt-and-decode/src/main/java/cn/stylefeng/roses/kernel/security/request/encrypt/holder/EncryptionRsaHolder.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-security/security-sdk-xss/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-security/security-sdk-xss/pom.xml 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-security/security-sdk-xss/src/main/java/cn/stylefeng/roses/kernel/security/xss/XssFilter.java 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-security/security-sdk-xss/src/main/java/cn/stylefeng/roses/kernel/security/xss/XssHttpServletRequestWrapper.java 100 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-security/security-sdk-xss/src/main/java/cn/stylefeng/roses/kernel/security/xss/XssJacksonDeserializer.java 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-security/security-sdk-xss/src/main/java/cn/stylefeng/roses/kernel/security/xss/prop/XssProperties.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-security/security-spring-boot-starter/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-security/security-spring-boot-starter/pom.xml 92 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-security/security-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/security/starter/CaptchaAutoConfiguration.java 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-security/security-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/security/starter/CounterAutoConfiguration.java 95 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-security/security-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/security/starter/EncryptAlgorithmAutoConfiguration.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-security/security-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/security/starter/GunsSecurityAutoConfiguration.java 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-security/security-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/security/starter/GunsXssAutoConfiguration.java 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-security/security-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/security/starter/cache/SecurityMemoryCacheAutoConfiguration.java 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-security/security-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/security/starter/cache/SecurityRedisCacheAutoConfiguration.java 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-security/security-spring-boot-starter/src/main/resources/META-INF/spring.factories 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-sms/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-sms/pom.xml 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-sms/sms-api/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-sms/sms-api/pom.xml 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-sms/sms-api/src/main/java/cn/stylefeng/roses/kernel/sms/api/SmsSenderApi.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-sms/sms-api/src/main/java/cn/stylefeng/roses/kernel/sms/api/constants/SmsConstants.java 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-sms/sms-api/src/main/java/cn/stylefeng/roses/kernel/sms/api/context/SmsContext.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-sms/sms-api/src/main/java/cn/stylefeng/roses/kernel/sms/api/exception/SmsException.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-sms/sms-api/src/main/java/cn/stylefeng/roses/kernel/sms/api/exception/enums/SmsExceptionEnum.java 98 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-sms/sms-api/src/main/java/cn/stylefeng/roses/kernel/sms/api/expander/SmsConfigExpander.java 81 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-sms/sms-api/src/main/java/cn/stylefeng/roses/kernel/sms/api/pojo/AliyunSmsProperties.java 73 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-sms/sms-api/src/main/java/cn/stylefeng/roses/kernel/sms/api/pojo/TencentSmsProperties.java 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-sms/sms-business-validation/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-sms/sms-business-validation/pom.xml 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-sms/sms-business-validation/src/main/java/cn/stylefeng/roses/kernel/sms/modular/controller/SmsSenderController.java 101 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-sms/sms-business-validation/src/main/java/cn/stylefeng/roses/kernel/sms/modular/entity/SysSms.java 121 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-sms/sms-business-validation/src/main/java/cn/stylefeng/roses/kernel/sms/modular/enums/SmsSendSourceEnum.java 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-sms/sms-business-validation/src/main/java/cn/stylefeng/roses/kernel/sms/modular/enums/SmsSendStatusEnum.java 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-sms/sms-business-validation/src/main/java/cn/stylefeng/roses/kernel/sms/modular/enums/SmsTypeEnum.java 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-sms/sms-business-validation/src/main/java/cn/stylefeng/roses/kernel/sms/modular/mapper/SysSmsMapper.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-sms/sms-business-validation/src/main/java/cn/stylefeng/roses/kernel/sms/modular/mapper/mapping/SysSmsMapper.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-sms/sms-business-validation/src/main/java/cn/stylefeng/roses/kernel/sms/modular/param/SysSmsInfoParam.java 102 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-sms/sms-business-validation/src/main/java/cn/stylefeng/roses/kernel/sms/modular/param/SysSmsSendParam.java 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-sms/sms-business-validation/src/main/java/cn/stylefeng/roses/kernel/sms/modular/param/SysSmsVerifyParam.java 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-sms/sms-business-validation/src/main/java/cn/stylefeng/roses/kernel/sms/modular/service/SysSmsInfoService.java 95 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-sms/sms-business-validation/src/main/java/cn/stylefeng/roses/kernel/sms/modular/service/impl/SysSmsInfoServiceImpl.java 241 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-sms/sms-sdk-aliyun/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-sms/sms-sdk-aliyun/pom.xml 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-sms/sms-sdk-aliyun/src/main/java/cn/stylefeng/roses/kernel/sms/aliyun/AliyunSmsSender.java 198 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-sms/sms-sdk-aliyun/src/main/java/cn/stylefeng/roses/kernel/sms/aliyun/enums/AliyunSmsResultEnum.java 148 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-sms/sms-sdk-aliyun/src/main/java/cn/stylefeng/roses/kernel/sms/aliyun/msign/MultiSignManager.java 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-sms/sms-sdk-aliyun/src/main/java/cn/stylefeng/roses/kernel/sms/aliyun/msign/impl/MapBasedMultiSignManager.java 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-sms/sms-sdk-huawei/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-sms/sms-sdk-huawei/pom.xml 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-sms/sms-sdk-huawei/src/main/java/cn/stylefeng/roses/kernel/sms/huawei/HuaweiSmsSender.java 260 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-sms/sms-sdk-tencent/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-sms/sms-sdk-tencent/pom.xml 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-sms/sms-sdk-tencent/src/main/java/cn/stylefeng/roses/kernel/sms/tencent/TencentSmsSender.java 115 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-sms/sms-spring-boot-starter/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-sms/sms-spring-boot-starter/pom.xml 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-sms/sms-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/sms/starter/GunsSmsAutoConfiguration.java 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-sms/sms-spring-boot-starter/src/main/resources/META-INF/spring.factories 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-socket/pom.xml 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-socket/socket-api/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-socket/socket-api/pom.xml 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-socket/socket-api/src/main/java/cn/stylefeng/roses/kernel/socket/api/SocketOperatorApi.java 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-socket/socket-api/src/main/java/cn/stylefeng/roses/kernel/socket/api/constants/SocketConstants.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-socket/socket-api/src/main/java/cn/stylefeng/roses/kernel/socket/api/enums/ClientMessageTypeEnum.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-socket/socket-api/src/main/java/cn/stylefeng/roses/kernel/socket/api/enums/ServerMessageTypeEnum.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-socket/socket-api/src/main/java/cn/stylefeng/roses/kernel/socket/api/enums/SystemMessageTypeEnum.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-socket/socket-api/src/main/java/cn/stylefeng/roses/kernel/socket/api/exception/SocketException.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-socket/socket-api/src/main/java/cn/stylefeng/roses/kernel/socket/api/exception/enums/SocketExceptionEnum.java 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-socket/socket-api/src/main/java/cn/stylefeng/roses/kernel/socket/api/message/SocketMsgCallbackInterface.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-socket/socket-api/src/main/java/cn/stylefeng/roses/kernel/socket/api/session/SocketSessionOperatorApi.java 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-socket/socket-api/src/main/java/cn/stylefeng/roses/kernel/socket/api/session/pojo/SocketSession.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-socket/socket-business-websocket/pom.xml 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-socket/socket-business-websocket/src/main/java/cn/stylefeng/roses/kernel/socket/business/websocket/config/WebSocketConfig.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-socket/socket-business-websocket/src/main/java/cn/stylefeng/roses/kernel/socket/business/websocket/message/SocketMessageCenter.java 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-socket/socket-business-websocket/src/main/java/cn/stylefeng/roses/kernel/socket/business/websocket/operator/WebSocketOperator.java 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-socket/socket-business-websocket/src/main/java/cn/stylefeng/roses/kernel/socket/business/websocket/operator/channel/GunsSocketOperator.java 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-socket/socket-business-websocket/src/main/java/cn/stylefeng/roses/kernel/socket/business/websocket/operator/channel/SocketChannelExpandInterFace.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-socket/socket-business-websocket/src/main/java/cn/stylefeng/roses/kernel/socket/business/websocket/pojo/WebSocketMessageDTO.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-socket/socket-business-websocket/src/main/java/cn/stylefeng/roses/kernel/socket/business/websocket/server/WebSocketServer.java 182 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-socket/socket-business-websocket/src/main/java/cn/stylefeng/roses/kernel/socket/business/websocket/session/SessionCenter.java 145 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-socket/socket-spring-boot-starter/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-socket/socket-spring-boot-starter/pom.xml 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-socket/socket-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/socket/starter/GunsSocketAutoConfiguration.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-socket/socket-spring-boot-starter/src/main/resources/META-INF/spring.factories 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-timer/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-timer/pom.xml 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-timer/timer-api/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-timer/timer-api/pom.xml 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-timer/timer-api/src/main/java/cn/stylefeng/roses/kernel/timer/api/TimerAction.java 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-timer/timer-api/src/main/java/cn/stylefeng/roses/kernel/timer/api/TimerExeService.java 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-timer/timer-api/src/main/java/cn/stylefeng/roses/kernel/timer/api/constants/TimerConstants.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-timer/timer-api/src/main/java/cn/stylefeng/roses/kernel/timer/api/enums/TimerJobStatusEnum.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-timer/timer-api/src/main/java/cn/stylefeng/roses/kernel/timer/api/exception/TimerException.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-timer/timer-api/src/main/java/cn/stylefeng/roses/kernel/timer/api/exception/enums/TimerExceptionEnum.java 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-timer/timer-business/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-timer/timer-business/pom.xml 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-timer/timer-business/src/main/java/cn/stylefeng/roses/kernel/timer/modular/controller/SysTimersController.java 169 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-timer/timer-business/src/main/java/cn/stylefeng/roses/kernel/timer/modular/entity/SysTimers.java 108 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-timer/timer-business/src/main/java/cn/stylefeng/roses/kernel/timer/modular/listener/TaskRunListener.java 81 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-timer/timer-business/src/main/java/cn/stylefeng/roses/kernel/timer/modular/mapper/SysTimersMapper.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-timer/timer-business/src/main/java/cn/stylefeng/roses/kernel/timer/modular/mapper/mapping/SysTimersMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-timer/timer-business/src/main/java/cn/stylefeng/roses/kernel/timer/modular/migration/TimerMigrationImpl.java 109 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-timer/timer-business/src/main/java/cn/stylefeng/roses/kernel/timer/modular/migration/pojo/TimerMigrationInfo.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-timer/timer-business/src/main/java/cn/stylefeng/roses/kernel/timer/modular/migration/pojo/v1/SysTimersMigration.java 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-timer/timer-business/src/main/java/cn/stylefeng/roses/kernel/timer/modular/param/SysTimersParam.java 110 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-timer/timer-business/src/main/java/cn/stylefeng/roses/kernel/timer/modular/service/SysTimersService.java 126 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-timer/timer-business/src/main/java/cn/stylefeng/roses/kernel/timer/modular/service/impl/SysTimersServiceImpl.java 247 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-timer/timer-business/src/main/java/cn/stylefeng/roses/kernel/timer/modular/tasks/SystemOutTaskRunner.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-timer/timer-sdk-hutool/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-timer/timer-sdk-hutool/pom.xml 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-timer/timer-sdk-hutool/src/main/java/cn/stylefeng/roses/kernel/timer/hutool/HutoolTimerExeServiceImpl.java 107 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-timer/timer-sdk-hutool/src/main/java/cn/stylefeng/roses/kernel/timer/hutool/TimerExeServiceImpl.java 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-timer/timer-spring-boot-starter/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-timer/timer-spring-boot-starter/pom.xml 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-timer/timer-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/timer/starter/GunsTimerAutoConfiguration.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-timer/timer-spring-boot-starter/src/main/resources/META-INF/spring.factories 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-validator/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-validator/pom.xml 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-validator/validator-api-table-unique/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-validator/validator-api-table-unique/pom.xml 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-validator/validator-api-table-unique/src/main/java/cn/stylefeng/roses/kernel/validator/api/validators/unique/TableUniqueValue.java 95 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-validator/validator-api-table-unique/src/main/java/cn/stylefeng/roses/kernel/validator/api/validators/unique/TableUniqueValueValidator.java 160 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-validator/validator-api-table-unique/src/main/java/cn/stylefeng/roses/kernel/validator/api/validators/unique/service/TableUniqueValueService.java 174 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-validator/validator-api/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-validator/validator-api/pom.xml 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-validator/validator-api/src/main/java/cn/stylefeng/roses/kernel/validator/api/constants/ValidatorConstants.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-validator/validator-api/src/main/java/cn/stylefeng/roses/kernel/validator/api/context/RequestGroupContext.java 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-validator/validator-api/src/main/java/cn/stylefeng/roses/kernel/validator/api/context/RequestParamContext.java 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-validator/validator-api/src/main/java/cn/stylefeng/roses/kernel/validator/api/context/RequestRemoveThreadLocalHolder.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-validator/validator-api/src/main/java/cn/stylefeng/roses/kernel/validator/api/exception/ParamValidateException.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-validator/validator-api/src/main/java/cn/stylefeng/roses/kernel/validator/api/exception/enums/ValidatorExceptionEnum.java 113 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-validator/validator-api/src/main/java/cn/stylefeng/roses/kernel/validator/api/pojo/UniqueValidateParam.java 85 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-validator/validator-api/src/main/java/cn/stylefeng/roses/kernel/validator/api/utils/ValidatorUtil.java 120 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-validator/validator-api/src/main/java/cn/stylefeng/roses/kernel/validator/api/validators/date/DateValue.java 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-validator/validator-api/src/main/java/cn/stylefeng/roses/kernel/validator/api/validators/date/DateValueValidator.java 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-validator/validator-api/src/main/java/cn/stylefeng/roses/kernel/validator/api/validators/flag/FlagValue.java 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-validator/validator-api/src/main/java/cn/stylefeng/roses/kernel/validator/api/validators/flag/FlagValueValidator.java 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-validator/validator-api/src/main/java/cn/stylefeng/roses/kernel/validator/api/validators/phone/PhoneValue.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-validator/validator-api/src/main/java/cn/stylefeng/roses/kernel/validator/api/validators/phone/PhoneValueValidator.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-validator/validator-api/src/main/java/cn/stylefeng/roses/kernel/validator/api/validators/status/StatusValue.java 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-validator/validator-api/src/main/java/cn/stylefeng/roses/kernel/validator/api/validators/status/StatusValueValidator.java 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-validator/validator-spring-boot-starter/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-validator/validator-spring-boot-starter/pom.xml 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-validator/validator-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/validator/starter/CacheParamRequestBodyAdvice.java 73 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-validator/validator-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/validator/starter/GunsValidator.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-validator/validator-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/validator/starter/GunsValidatorAutoConfiguration.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-validator/validator-spring-boot-starter/src/main/resources/META-INF/spring.factories 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-wrapper/README.md 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-wrapper/pom.xml 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-wrapper/wrapper-api/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-wrapper/wrapper-api/pom.xml 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-wrapper/wrapper-api/src/main/java/cn/stylefeng/roses/kernel/wrapper/api/BaseWrapper.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-wrapper/wrapper-api/src/main/java/cn/stylefeng/roses/kernel/wrapper/api/annotation/Wrapper.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-wrapper/wrapper-api/src/main/java/cn/stylefeng/roses/kernel/wrapper/api/constants/WrapperConstants.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-wrapper/wrapper-api/src/main/java/cn/stylefeng/roses/kernel/wrapper/api/exception/WrapperException.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-wrapper/wrapper-api/src/main/java/cn/stylefeng/roses/kernel/wrapper/api/exception/enums/WrapperExceptionEnum.java 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-wrapper/wrapper-field-sdk/README.md 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-wrapper/wrapper-field-sdk/pom.xml 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-wrapper/wrapper-field-sdk/src/main/java/cn/stylefeng/roses/kernel/wrapper/field/enums/EnumFieldFormatDeserializer.java 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-wrapper/wrapper-field-sdk/src/main/java/cn/stylefeng/roses/kernel/wrapper/field/enums/EnumFieldFormatSerializer.java 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-wrapper/wrapper-field-sdk/src/main/java/cn/stylefeng/roses/kernel/wrapper/field/jackson/CustomJacksonIntrospector.java 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-wrapper/wrapper-field-sdk/src/main/java/cn/stylefeng/roses/kernel/wrapper/field/jackson/package-info.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-wrapper/wrapper-field-sdk/src/main/java/cn/stylefeng/roses/kernel/wrapper/field/mvc/CustomEnumGenericConverter.java 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-wrapper/wrapper-field-sdk/src/main/java/cn/stylefeng/roses/kernel/wrapper/field/simple/SimpleFieldFormatSerializer.java 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-wrapper/wrapper-field-sdk/src/main/java/cn/stylefeng/roses/kernel/wrapper/field/util/CommonFormatUtil.java 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-wrapper/wrapper-sdk/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-wrapper/wrapper-sdk/pom.xml 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-wrapper/wrapper-sdk/src/main/java/cn/stylefeng/roses/kernel/wrapper/WrapperAop.java 222 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-wrapper/wrapper-spring-boot-starter/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-wrapper/wrapper-spring-boot-starter/pom.xml 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-wrapper/wrapper-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/wrapper/starter/GunsDateConvertAutoConfiguration.java 112 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-wrapper/wrapper-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/wrapper/starter/GunsWrapperAutoConfiguration.java 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-d-wrapper/wrapper-spring-boot-starter/src/main/resources/META-INF/spring.factories 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-o-monitor/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-o-monitor/monitor-api/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-o-monitor/monitor-api/pom.xml 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-o-monitor/monitor-api/src/main/java/cn/stylefeng/roses/kernel/monitor/api/constants/MonitorConstants.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-o-monitor/monitor-api/src/main/java/cn/stylefeng/roses/kernel/monitor/api/exception/MonitorException.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-o-monitor/monitor-api/src/main/java/cn/stylefeng/roses/kernel/monitor/api/exception/enums/MonitorExceptionEnum.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-o-monitor/monitor-api/src/main/java/cn/stylefeng/roses/kernel/monitor/api/pojo/CpuInfo.java 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-o-monitor/monitor-api/src/main/java/cn/stylefeng/roses/kernel/monitor/api/pojo/JvmInfo.java 134 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-o-monitor/monitor-api/src/main/java/cn/stylefeng/roses/kernel/monitor/api/pojo/MemInfo.java 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-o-monitor/monitor-api/src/main/java/cn/stylefeng/roses/kernel/monitor/api/pojo/SysFileInfo.java 73 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-o-monitor/monitor-api/src/main/java/cn/stylefeng/roses/kernel/monitor/api/pojo/SysInfo.java 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-o-monitor/monitor-business-system-info/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-o-monitor/monitor-business-system-info/pom.xml 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-o-monitor/monitor-business-system-info/src/main/java/cn/stylefeng/roses/kernel/monitor/system/SystemHardwareCalculator.java 230 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-o-monitor/monitor-business-system-info/src/main/java/cn/stylefeng/roses/kernel/monitor/system/controller/MonitorStatusController.java 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-o-monitor/monitor-business-system-info/src/main/java/cn/stylefeng/roses/kernel/monitor/system/holder/SystemHardwareInfoHolder.java 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-o-monitor/monitor-spring-boot-starter/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-o-monitor/monitor-spring-boot-starter/pom.xml 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-o-monitor/monitor-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/monitor/starter/GunsMonitorAutoConfiguration.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-o-monitor/monitor-spring-boot-starter/src/main/resources/META-INF/spring.factories 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-o-monitor/pom.xml 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-customer/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-customer/customer-api/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-customer/customer-api/pom.xml 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-customer/customer-api/src/main/java/cn/stylefeng/roses/kernel/customer/api/CustomerApi.java 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-customer/customer-api/src/main/java/cn/stylefeng/roses/kernel/customer/api/OldPasswordValidateApi.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-customer/customer-api/src/main/java/cn/stylefeng/roses/kernel/customer/api/constants/CustomerConstants.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-customer/customer-api/src/main/java/cn/stylefeng/roses/kernel/customer/api/exception/CustomerException.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-customer/customer-api/src/main/java/cn/stylefeng/roses/kernel/customer/api/exception/enums/CustomerExceptionEnum.java 111 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-customer/customer-api/src/main/java/cn/stylefeng/roses/kernel/customer/api/expander/CustomerConfigExpander.java 106 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-customer/customer-api/src/main/java/cn/stylefeng/roses/kernel/customer/api/pojo/CustomerInfo.java 196 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-customer/customer-api/src/main/java/cn/stylefeng/roses/kernel/customer/api/pojo/CustomerInfoChangeAvatarPasswordRequest.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-customer/customer-api/src/main/java/cn/stylefeng/roses/kernel/customer/api/pojo/CustomerInfoRequest.java 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-customer/customer-api/src/main/java/cn/stylefeng/roses/kernel/customer/api/pojo/UserDetailMentalTestRecordDTO.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-customer/customer-api/src/main/java/cn/stylefeng/roses/kernel/customer/api/pojo/UserDetailMentalTestRecordNlwpDTO.java 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-customer/customer-api/src/main/java/cn/stylefeng/roses/kernel/customer/api/pojo/UserManagePageResponseDTO.java 106 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-customer/customer-business/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-customer/customer-business/pom.xml 137 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-customer/customer-business/src/main/java/cn/stylefeng/roses/kernel/customer/modular/cache/CustomerMemoryCache.java 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-customer/customer-business/src/main/java/cn/stylefeng/roses/kernel/customer/modular/cache/CustomerRedisCache.java 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-customer/customer-business/src/main/java/cn/stylefeng/roses/kernel/customer/modular/controller/CustomerController.java 97 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-customer/customer-business/src/main/java/cn/stylefeng/roses/kernel/customer/modular/controller/CustomerInfoController.java 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-customer/customer-business/src/main/java/cn/stylefeng/roses/kernel/customer/modular/controller/CustomerManageController.java 109 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-customer/customer-business/src/main/java/cn/stylefeng/roses/kernel/customer/modular/entity/Customer.java 319 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-customer/customer-business/src/main/java/cn/stylefeng/roses/kernel/customer/modular/factory/CustomerFactory.java 151 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-customer/customer-business/src/main/java/cn/stylefeng/roses/kernel/customer/modular/mapper/CustomerMapper.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-customer/customer-business/src/main/java/cn/stylefeng/roses/kernel/customer/modular/mapper/mapping/CustomerMapper.xml 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-customer/customer-business/src/main/java/cn/stylefeng/roses/kernel/customer/modular/request/CustomerIdRequest.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-customer/customer-business/src/main/java/cn/stylefeng/roses/kernel/customer/modular/request/CustomerRequest.java 162 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-customer/customer-business/src/main/java/cn/stylefeng/roses/kernel/customer/modular/service/CustomerService.java 199 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-customer/customer-business/src/main/java/cn/stylefeng/roses/kernel/customer/modular/service/OldPasswordValidateService.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-customer/customer-business/src/main/java/cn/stylefeng/roses/kernel/customer/modular/service/impl/CustomerServiceImpl.java 739 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-customer/customer-spring-boot-starter/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-customer/customer-spring-boot-starter/pom.xml 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-customer/customer-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/customer/starter/GunsCustomerMemoryAutoConfiguration.java 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-customer/customer-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/customer/starter/GunsCustomerRedisAutoConfiguration.java 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-customer/customer-spring-boot-starter/src/main/resources/META-INF/spring.factories 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-customer/pom.xml 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-demo/README.md 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-demo/demo-api/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-demo/demo-api/pom.xml 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-demo/demo-api/src/main/java/cn/stylefeng/roses/kernel/demo/constants/DemoConstants.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-demo/demo-api/src/main/java/cn/stylefeng/roses/kernel/demo/exception/DemoException.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-demo/demo-api/src/main/java/cn/stylefeng/roses/kernel/demo/exception/enums/DemoExceptionEnum.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-demo/demo-api/src/main/java/cn/stylefeng/roses/kernel/demo/expander/DemoConfigExpander.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-demo/demo-api/src/main/java/cn/stylefeng/roses/kernel/demo/util/StartCalcUtil.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-demo/demo-business/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-demo/demo-business/pom.xml 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-demo/demo-business/src/main/java/cn/stylefeng/roses/kernel/demo/interceptor/DemoProfileSqlInterceptor.java 99 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-demo/demo-spring-boot-starter/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-demo/demo-spring-boot-starter/pom.xml 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-demo/demo-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/demo/starter/GunsDemoAutoConfiguration.java 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-demo/demo-spring-boot-starter/src/main/resources/META-INF/spring.factories 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-demo/pom.xml 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-dict/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-dict/dict-api/README.md 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-dict/dict-api/pom.xml 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-dict/dict-api/src/main/java/cn/stylefeng/roses/kernel/dict/api/DictApi.java 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-dict/dict-api/src/main/java/cn/stylefeng/roses/kernel/dict/api/constants/DictConstants.java 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-dict/dict-api/src/main/java/cn/stylefeng/roses/kernel/dict/api/context/DictContext.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-dict/dict-api/src/main/java/cn/stylefeng/roses/kernel/dict/api/enums/DictTypeClassEnum.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-dict/dict-api/src/main/java/cn/stylefeng/roses/kernel/dict/api/exception/DictException.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-dict/dict-api/src/main/java/cn/stylefeng/roses/kernel/dict/api/exception/enums/DictExceptionEnum.java 96 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-dict/dict-api/src/main/java/cn/stylefeng/roses/kernel/dict/api/pojo/dict/request/ParentIdsUpdateRequest.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-dict/dict-api/src/main/java/cn/stylefeng/roses/kernel/dict/api/serializer/DictValueSerializer.java 159 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-dict/dict-business/README.md 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-dict/dict-business/pom.xml 83 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/controller/DictController.java 173 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/controller/DictTypeController.java 172 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/entity/SysDict.java 151 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/entity/SysDictType.java 116 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/init/DictInitializer.java 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/init/DictTypeInitializer.java 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/mapper/DictMapper.java 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/mapper/DictTypeMapper.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/mapper/mapping/DictMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/mapper/mapping/DictTypeMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/pojo/TreeDictInfo.java 97 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/pojo/request/DictRequest.java 157 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/pojo/request/DictTypeRequest.java 123 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/service/DictService.java 112 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/service/DictTypeService.java 108 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/service/impl/DictServiceImpl.java 304 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/service/impl/DictTypeServiceImpl.java 190 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/sqladapter/DictSql.java 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/sqladapter/DictTypeSql.java 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-dict/dict-spring-boot-starter/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-dict/dict-spring-boot-starter/pom.xml 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-dict/dict-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/dict/starter/GunsDictAutoConfiguration.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-dict/dict-spring-boot-starter/src/main/resources/META-INF/spring.factories 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-dict/pom.xml 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-expand/.gitignore 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-expand/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-expand/expand-api/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-expand/expand-api/pom.xml 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-expand/expand-api/src/main/java/cn/stylefeng/roses/kernel/expand/modular/api/ExpandApi.java 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-expand/expand-api/src/main/java/cn/stylefeng/roses/kernel/expand/modular/api/constants/ExpandConstants.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-expand/expand-api/src/main/java/cn/stylefeng/roses/kernel/expand/modular/api/enums/DemoEnum.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-expand/expand-api/src/main/java/cn/stylefeng/roses/kernel/expand/modular/api/enums/FieldTypeEnum.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-expand/expand-api/src/main/java/cn/stylefeng/roses/kernel/expand/modular/api/exception/ExpandException.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-expand/expand-api/src/main/java/cn/stylefeng/roses/kernel/expand/modular/api/exception/enums/ExpandExceptionEnum.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-expand/expand-api/src/main/java/cn/stylefeng/roses/kernel/expand/modular/api/pojo/ExpandDataInfo.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-expand/expand-api/src/main/java/cn/stylefeng/roses/kernel/expand/modular/api/pojo/ExpandFieldInfo.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-expand/expand-business/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-expand/expand-business/pom.xml 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-expand/expand-business/src/main/java/cn/stylefeng/roses/kernel/expand/modular/modular/controller/SysExpandController.java 143 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-expand/expand-business/src/main/java/cn/stylefeng/roses/kernel/expand/modular/modular/controller/SysExpandDataController.java 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-expand/expand-business/src/main/java/cn/stylefeng/roses/kernel/expand/modular/modular/controller/SysExpandFieldController.java 102 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-expand/expand-business/src/main/java/cn/stylefeng/roses/kernel/expand/modular/modular/entity/SysExpand.java 73 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-expand/expand-business/src/main/java/cn/stylefeng/roses/kernel/expand/modular/modular/entity/SysExpandData.java 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-expand/expand-business/src/main/java/cn/stylefeng/roses/kernel/expand/modular/modular/entity/SysExpandField.java 86 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-expand/expand-business/src/main/java/cn/stylefeng/roses/kernel/expand/modular/modular/enums/SysExpandDataExceptionEnum.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-expand/expand-business/src/main/java/cn/stylefeng/roses/kernel/expand/modular/modular/enums/SysExpandExceptionEnum.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-expand/expand-business/src/main/java/cn/stylefeng/roses/kernel/expand/modular/modular/enums/SysExpandFieldExceptionEnum.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-expand/expand-business/src/main/java/cn/stylefeng/roses/kernel/expand/modular/modular/mapper/SysExpandDataMapper.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-expand/expand-business/src/main/java/cn/stylefeng/roses/kernel/expand/modular/modular/mapper/SysExpandFieldMapper.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-expand/expand-business/src/main/java/cn/stylefeng/roses/kernel/expand/modular/modular/mapper/SysExpandMapper.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-expand/expand-business/src/main/java/cn/stylefeng/roses/kernel/expand/modular/modular/mapper/mapping/SysExpandDataMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-expand/expand-business/src/main/java/cn/stylefeng/roses/kernel/expand/modular/modular/mapper/mapping/SysExpandFieldMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-expand/expand-business/src/main/java/cn/stylefeng/roses/kernel/expand/modular/modular/mapper/mapping/SysExpandMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-expand/expand-business/src/main/java/cn/stylefeng/roses/kernel/expand/modular/modular/pojo/request/SysExpandDataRequest.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-expand/expand-business/src/main/java/cn/stylefeng/roses/kernel/expand/modular/modular/pojo/request/SysExpandFieldRequest.java 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-expand/expand-business/src/main/java/cn/stylefeng/roses/kernel/expand/modular/modular/pojo/request/SysExpandRequest.java 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-expand/expand-business/src/main/java/cn/stylefeng/roses/kernel/expand/modular/modular/service/SysExpandDataService.java 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-expand/expand-business/src/main/java/cn/stylefeng/roses/kernel/expand/modular/modular/service/SysExpandFieldService.java 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-expand/expand-business/src/main/java/cn/stylefeng/roses/kernel/expand/modular/modular/service/SysExpandService.java 91 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-expand/expand-business/src/main/java/cn/stylefeng/roses/kernel/expand/modular/modular/service/impl/SysExpandDataServiceImpl.java 140 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-expand/expand-business/src/main/java/cn/stylefeng/roses/kernel/expand/modular/modular/service/impl/SysExpandFieldServiceImpl.java 98 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-expand/expand-business/src/main/java/cn/stylefeng/roses/kernel/expand/modular/modular/service/impl/SysExpandServiceImpl.java 263 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-expand/expand-spring-boot-starter/README.md 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-expand/expand-spring-boot-starter/pom.xml 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-expand/expand-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/expand/modular/starter/ExpandAutoConfiguration.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-expand/expand-spring-boot-starter/src/main/resources/META-INF/spring.factories 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-expand/pom.xml 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-group/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-group/group-api/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-group/group-api/pom.xml 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-group/group-api/src/main/java/cn/stylefeng/roses/kernel/group/api/GroupApi.java 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-group/group-api/src/main/java/cn/stylefeng/roses/kernel/group/api/constants/GroupConstants.java 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-group/group-api/src/main/java/cn/stylefeng/roses/kernel/group/api/exception/GroupException.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-group/group-api/src/main/java/cn/stylefeng/roses/kernel/group/api/exception/enums/GroupExceptionEnum.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-group/group-api/src/main/java/cn/stylefeng/roses/kernel/group/api/pojo/SysGroupDTO.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-group/group-api/src/main/java/cn/stylefeng/roses/kernel/group/api/pojo/SysGroupRequest.java 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-group/group-business/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-group/group-business/pom.xml 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-group/group-business/src/main/java/cn/stylefeng/roses/kernel/group/modular/controller/SysGroupController.java 83 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-group/group-business/src/main/java/cn/stylefeng/roses/kernel/group/modular/entity/SysGroup.java 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-group/group-business/src/main/java/cn/stylefeng/roses/kernel/group/modular/enums/SysGroupExceptionEnum.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-group/group-business/src/main/java/cn/stylefeng/roses/kernel/group/modular/mapper/SysGroupMapper.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-group/group-business/src/main/java/cn/stylefeng/roses/kernel/group/modular/mapper/mapping/SysGroupMapper.xml 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-group/group-business/src/main/java/cn/stylefeng/roses/kernel/group/modular/service/SysGroupService.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-group/group-business/src/main/java/cn/stylefeng/roses/kernel/group/modular/service/impl/SysGroupServiceImpl.java 169 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-group/group-spring-boot-starter/README.md 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-group/group-spring-boot-starter/pom.xml 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-group/group-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/group/starter/GroupAutoConfiguration.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-group/group-spring-boot-starter/src/main/resources/META-INF/spring.factories 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-group/pom.xml 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-message/README.md 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-message/message-api/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-message/message-api/pom.xml 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-message/message-api/src/main/java/cn/stylefeng/roses/kernel/message/api/MessageApi.java 168 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-message/message-api/src/main/java/cn/stylefeng/roses/kernel/message/api/constants/MessageConstants.java 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-message/message-api/src/main/java/cn/stylefeng/roses/kernel/message/api/context/MessageContext.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-message/message-api/src/main/java/cn/stylefeng/roses/kernel/message/api/enums/MessageBusinessTypeEnum.java 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-message/message-api/src/main/java/cn/stylefeng/roses/kernel/message/api/enums/MessagePriorityLevelEnum.java 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-message/message-api/src/main/java/cn/stylefeng/roses/kernel/message/api/enums/MessageReadFlagEnum.java 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-message/message-api/src/main/java/cn/stylefeng/roses/kernel/message/api/enums/MessageTypeEnum.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-message/message-api/src/main/java/cn/stylefeng/roses/kernel/message/api/exception/MessageException.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-message/message-api/src/main/java/cn/stylefeng/roses/kernel/message/api/exception/enums/MessageExceptionEnum.java 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-message/message-api/src/main/java/cn/stylefeng/roses/kernel/message/api/expander/WebSocketConfigExpander.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-message/message-api/src/main/java/cn/stylefeng/roses/kernel/message/api/pojo/request/MessageRequest.java 129 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-message/message-api/src/main/java/cn/stylefeng/roses/kernel/message/api/pojo/request/MessageSendRequest.java 112 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-message/message-api/src/main/java/cn/stylefeng/roses/kernel/message/api/pojo/response/MessageResponse.java 158 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-message/message-business/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-message/message-business/pom.xml 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-message/message-business/src/main/java/cn/stylefeng/roses/kernel/message/modular/controller/SysMessageController.java 164 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-message/message-sdk-db/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-message/message-sdk-db/pom.xml 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-message/message-sdk-db/src/main/java/cn/stylefeng/roses/kernel/message/db/MessageDbServiceImpl.java 265 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-message/message-sdk-db/src/main/java/cn/stylefeng/roses/kernel/message/db/entity/SysMessage.java 135 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-message/message-sdk-db/src/main/java/cn/stylefeng/roses/kernel/message/db/mapper/SysMessageMapper.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-message/message-sdk-db/src/main/java/cn/stylefeng/roses/kernel/message/db/mapper/mapping/SysMessageMapper.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-message/message-sdk-db/src/main/java/cn/stylefeng/roses/kernel/message/db/service/SysMessageService.java 105 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-message/message-sdk-db/src/main/java/cn/stylefeng/roses/kernel/message/db/service/impl/SysMessageServiceImpl.java 159 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-message/message-spring-boot-starter/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-message/message-spring-boot-starter/pom.xml 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-message/message-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/message/starter/GunsMessageAutoConfiguration.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-message/message-spring-boot-starter/src/main/resources/META-INF/spring.factories 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-message/pom.xml 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-migration/migration-api/pom.xml 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-migration/migration-api/src/main/java/cn/stylefeng/roses/kernel/migration/api/AccessMigrationApi.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-migration/migration-api/src/main/java/cn/stylefeng/roses/kernel/migration/api/constants/MigrationConstants.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-migration/migration-api/src/main/java/cn/stylefeng/roses/kernel/migration/api/enums/MigrationAggregationTypeEnum.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-migration/migration-api/src/main/java/cn/stylefeng/roses/kernel/migration/api/exception/MigrationException.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-migration/migration-api/src/main/java/cn/stylefeng/roses/kernel/migration/api/exception/enums/MigrationExceptionEnum.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-migration/migration-api/src/main/java/cn/stylefeng/roses/kernel/migration/api/expander/MigrationConfigExpander.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-migration/migration-api/src/main/java/cn/stylefeng/roses/kernel/migration/api/pojo/MigrationAggregationPOJO.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-migration/migration-api/src/main/java/cn/stylefeng/roses/kernel/migration/api/pojo/MigrationInfo.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-migration/migration-business-web/pom.xml 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-migration/migration-business-web/src/main/java/cn/stylefeng/roses/kernel/migration/web/controller/MigrationController.java 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-migration/migration-business-web/src/main/java/cn/stylefeng/roses/kernel/migration/web/pojo/MigrationRequest.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-migration/migration-business-web/src/main/java/cn/stylefeng/roses/kernel/migration/web/service/MigrationService.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-migration/migration-business-web/src/main/java/cn/stylefeng/roses/kernel/migration/web/service/impl/MigrationServiceImpl.java 99 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-migration/migration-sdk-data-aggregation/pom.xml 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-migration/migration-sdk-data-aggregation/src/main/java/cn/stylefeng/roses/kernel/migration/aggregation/scheduling/SchedulingCenter.java 122 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-migration/migration-spring-boot-starter/pom.xml 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-migration/migration-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/migration/starter/spring/MigrationApplicationRunnerImpl.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-migration/migration-spring-boot-starter/src/main/resources/META-INF/spring.factories 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-migration/pom.xml 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/README.md 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/pom.xml 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/pom.xml 97 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/AppServiceApi.java 95 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/DataScopeApi.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/HomePageServiceApi.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/MenuServiceApi.java 152 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/NoticeServiceApi.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/OrganizationServiceApi.java 98 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/PositionServiceApi.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/ResourceServiceApi.java 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/RoleDataScopeServiceApi.java 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/RoleServiceApi.java 178 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/SysUserRoleApi.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/ThemeServiceApi.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/UserOrgServiceApi.java 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/UserServiceApi.java 181 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/constants/StatisticsCacheConstants.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/constants/SystemCachesConstants.java 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/constants/SystemConstants.java 100 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/enums/AntdvFrontTypeEnum.java 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/enums/DetectModeEnum.java 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/enums/DevopsCheckStatusEnum.java 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/enums/LinkOpenTypeEnum.java 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/enums/OrgApproverTypeEnum.java 122 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/enums/OrgTypeEnum.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/enums/UserGroupSelectTypeEnum.java 79 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/enums/UserStatusEnum.java 110 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/exception/SystemModularException.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/exception/enums/app/AppExceptionEnum.java 81 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/exception/enums/log/LogExceptionEnum.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/exception/enums/menu/SysMenuButtonExceptionEnum.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/exception/enums/menu/SysMenuExceptionEnum.java 73 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/exception/enums/notice/NoticeExceptionEnum.java 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/exception/enums/organization/DataScopeExceptionEnum.java 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/exception/enums/organization/OrganizationExceptionEnum.java 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/exception/enums/organization/PositionExceptionEnum.java 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/exception/enums/role/SysRoleExceptionEnum.java 91 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/exception/enums/theme/SysThemeExceptionEnum.java 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/exception/enums/theme/SysThemeTemplateExceptionEnum.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/exception/enums/theme/SysThemeTemplateFieldExceptionEnum.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/exception/enums/theme/SysThemeTemplateRelExceptionEnum.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/exception/enums/user/SysUserDataScopeExceptionEnum.java 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/exception/enums/user/SysUserExceptionEnum.java 121 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/exception/enums/user/SysUserOrgExceptionEnum.java 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/expander/SystemConfigExpander.java 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/format/UserFormatProcess.java 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/app/SysAppRequest.java 115 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/app/SysAppResult.java 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/home/HomeCompanyInfo.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/login/CurrentUserInfoResponse.java 95 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/login/ValidateTokenRequest.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/login/v3/IndexMenuInfo.java 96 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/login/v3/IndexRoleInfo.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/login/v3/IndexUserInfoV3.java 146 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/menu/MenuAndButtonTreeResponse.java 92 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/menu/SysMenuAddEditRequest.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/menu/SysMenuButtonAddEditRequest.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/menu/SysMenuButtonDTO.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/menu/SysMenuButtonRequest.java 112 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/menu/SysMenuRequest.java 197 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/menu/SysMenuResourceRequest.java 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/menu/antd/AntdMenuSelectTreeNode.java 102 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/menu/antd/AntdSysMenuDTO.java 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/menu/antd/AntdvMenuAuthorityItem.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/menu/antd/AntdvMenuItem.java 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/menu/layui/LayuiAppIndexMenusVO.java 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/menu/layui/LayuiIndexMenuTreeNode.java 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/menu/layui/LayuiMenuAndButtonTreeResponse.java 112 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/notice/SysNoticeRequest.java 102 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/organization/BindUserItem.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/organization/DataScopeDTO.java 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/organization/HrOrganizationAddUpdateRequest.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/organization/HrOrganizationDTO.java 97 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/organization/HrOrganizationRequest.java 159 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/organization/HrPositionDTO.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/organization/HrPositionRequest.java 111 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/organization/OrganizationTreeNode.java 162 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/resource/LayuiApiResourceTreeNode.java 102 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/resource/ResourceRequest.java 176 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/role/dto/RoleAuthorizeInfo.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/role/dto/SysRoleDTO.java 114 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/role/dto/SysRoleMenuButtonDTO.java 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/role/dto/SysRoleMenuDTO.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/role/dto/SysRoleResourceDTO.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/role/request/SysRoleAddEditRequest.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/role/request/SysRoleDataScopeRequest.java 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/role/request/SysRoleGrantMenuAndButtonRequest.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/role/request/SysRoleMenuButtonRequest.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/role/request/SysRoleRequest.java 311 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/theme/SysThemeDTO.java 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/theme/SysThemeRequest.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/theme/SysThemeTemplateDataDTO.java 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/theme/SysThemeTemplateFieldRequest.java 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/theme/SysThemeTemplateRelRequest.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/theme/SysThemeTemplateRequest.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/user/OAuth2AuthUserDTO.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/user/OnlineUserDTO.java 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/user/SysUserAdminDTO.java 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/user/SysUserDTO.java 198 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/user/SysUserOrgDTO.java 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/user/UserLoginInfoDTO.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/user/UserSelectTreeNode.java 87 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/user/request/OnlineUserRequest.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/user/request/SysAdminRequest.java 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/user/request/SysUserAddUpdateRequest.java 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/user/request/SysUserDeleteRequest.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/user/request/SysUserPageRequest.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/user/request/SysUserRequest.java 312 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/user/request/SysUserWorkStatusRequest.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/user/request/UserDataScopeRequest.java 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/user/request/UserOrgRequest.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/user/request/UserRoleRequest.java 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/usergroup/SelectItem.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/util/DataScopeUtil.java 161 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-app/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-app/pom.xml 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-app/src/main/java/cn/stylefeng/roses/kernel/system/modular/app/controller/SysAppController.java 168 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-app/src/main/java/cn/stylefeng/roses/kernel/system/modular/app/entity/SysApp.java 112 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-app/src/main/java/cn/stylefeng/roses/kernel/system/modular/app/mapper/SysAppMapper.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-app/src/main/java/cn/stylefeng/roses/kernel/system/modular/app/mapper/mapping/SysAppMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-app/src/main/java/cn/stylefeng/roses/kernel/system/modular/app/service/SysAppService.java 125 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-app/src/main/java/cn/stylefeng/roses/kernel/system/modular/app/service/impl/SysAppServiceImpl.java 343 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-home/pom.xml 126 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/aop/InterfaceStatisticsAop.java 127 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/cache/InterfaceStatisticsMemoryCache.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/cache/InterfaceStatisticsRedisCache.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/context/StatisticsUrlContext.java 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/controller/HomePageController.java 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/controller/SysStatisticsController.java 102 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/entity/SysStatisticsCount.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/entity/SysStatisticsUrl.java 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/enums/SysStatisticsCountExceptionEnum.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/enums/SysStatisticsUrlExceptionEnum.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/mapper/SysStatisticsCountMapper.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/mapper/SysStatisticsUrlMapper.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/mapper/mapping/SysStatisticsCountMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/mapper/mapping/SysStatisticsUrlMapper.xml 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/pojo/OnlineUserStat.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/pojo/request/SysStatisticsCountRequest.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/pojo/request/SysStatisticsUrlRequest.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/service/HomePageService.java 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/service/SysStatisticsCountService.java 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/service/SysStatisticsUrlService.java 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/service/impl/HomePageServiceImpl.java 250 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/service/impl/SysStatisticsCountServiceImpl.java 115 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/service/impl/SysStatisticsUrlServiceImpl.java 106 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/timer/InterfaceStatisticsTimer.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-menu/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-menu/pom.xml 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/constants/MenuButtonConstant.java 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/controller/SysMenuButtonController.java 138 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/controller/SysMenuController.java 199 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/controller/SysMenuResourceController.java 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/entity/SysMenu.java 275 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/entity/SysMenuButton.java 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/entity/SysMenuResource.java 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/factory/AntdMenusFactory.java 414 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/factory/Antdv3MenusFactory.java 158 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/factory/LayuiMenusFactory.java 129 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/factory/MenuButtonFactory.java 101 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/factory/MenuTypeFactory.java 81 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/listener/MenuResourceUpdateListener.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/mapper/SysMenuButtonMapper.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/mapper/SysMenuMapper.java 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/mapper/SysMenuResourceMapper.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/mapper/mapping/SysMenuButtonMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/mapper/mapping/SysMenuMapper.xml 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/mapper/mapping/SysMenuResourceMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/service/SysMenuButtonService.java 114 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/service/SysMenuResourceService.java 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/service/SysMenuService.java 159 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/service/impl/SysMenuButtonServiceImpl.java 200 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/service/impl/SysMenuResourceServiceImpl.java 123 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/service/impl/SysMenuServiceImpl.java 966 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-notice/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-notice/pom.xml 81 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-notice/src/main/java/cn/stylefeng/roses/kernel/system/modular/notice/controller/SysNoticeController.java 129 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-notice/src/main/java/cn/stylefeng/roses/kernel/system/modular/notice/entity/SysNotice.java 130 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-notice/src/main/java/cn/stylefeng/roses/kernel/system/modular/notice/mapper/SysNoticeMapper.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-notice/src/main/java/cn/stylefeng/roses/kernel/system/modular/notice/mapper/mapping/SysNoticeMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-notice/src/main/java/cn/stylefeng/roses/kernel/system/modular/notice/service/SysNoticeService.java 100 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-notice/src/main/java/cn/stylefeng/roses/kernel/system/modular/notice/service/impl/SysNoticeServiceImpl.java 218 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-organization/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-organization/pom.xml 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-organization/src/main/java/cn/stylefeng/roses/kernel/system/modular/organization/controller/HrOrgApproverController.java 79 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-organization/src/main/java/cn/stylefeng/roses/kernel/system/modular/organization/controller/HrOrganizationController.java 276 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-organization/src/main/java/cn/stylefeng/roses/kernel/system/modular/organization/controller/HrPositionController.java 169 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-organization/src/main/java/cn/stylefeng/roses/kernel/system/modular/organization/entity/HrOrgApprover.java 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-organization/src/main/java/cn/stylefeng/roses/kernel/system/modular/organization/entity/HrOrganization.java 126 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-organization/src/main/java/cn/stylefeng/roses/kernel/system/modular/organization/entity/HrPosition.java 127 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-organization/src/main/java/cn/stylefeng/roses/kernel/system/modular/organization/enums/HrOrgApproverExceptionEnum.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-organization/src/main/java/cn/stylefeng/roses/kernel/system/modular/organization/factory/OrganizationFactory.java 85 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-organization/src/main/java/cn/stylefeng/roses/kernel/system/modular/organization/mapper/HrOrgApproverMapper.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-organization/src/main/java/cn/stylefeng/roses/kernel/system/modular/organization/mapper/HrOrganizationMapper.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-organization/src/main/java/cn/stylefeng/roses/kernel/system/modular/organization/mapper/HrPositionMapper.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-organization/src/main/java/cn/stylefeng/roses/kernel/system/modular/organization/mapper/mapping/HrOrgApproverMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-organization/src/main/java/cn/stylefeng/roses/kernel/system/modular/organization/mapper/mapping/HrOrganizationMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-organization/src/main/java/cn/stylefeng/roses/kernel/system/modular/organization/mapper/mapping/HrPositionMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-organization/src/main/java/cn/stylefeng/roses/kernel/system/modular/organization/pojo/request/HrOrgApproverRequest.java 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-organization/src/main/java/cn/stylefeng/roses/kernel/system/modular/organization/service/DataScopeService.java 154 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-organization/src/main/java/cn/stylefeng/roses/kernel/system/modular/organization/service/HrOrgApproverService.java 92 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-organization/src/main/java/cn/stylefeng/roses/kernel/system/modular/organization/service/HrOrganizationService.java 143 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-organization/src/main/java/cn/stylefeng/roses/kernel/system/modular/organization/service/HrPositionService.java 118 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-organization/src/main/java/cn/stylefeng/roses/kernel/system/modular/organization/service/impl/HrOrgApproverServiceImpl.java 269 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-organization/src/main/java/cn/stylefeng/roses/kernel/system/modular/organization/service/impl/HrOrganizationServiceImpl.java 643 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-organization/src/main/java/cn/stylefeng/roses/kernel/system/modular/organization/service/impl/HrPositionServiceImpl.java 206 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-organization/src/main/java/cn/stylefeng/roses/kernel/system/modular/organization/wrapper/OrgExpandWrapper.java 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-resource/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-resource/pom.xml 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-resource/src/main/java/cn/stylefeng/roses/kernel/system/modular/resource/cache/MemoryResourceCache.java 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-resource/src/main/java/cn/stylefeng/roses/kernel/system/modular/resource/cache/RedisResourceCache.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-resource/src/main/java/cn/stylefeng/roses/kernel/system/modular/resource/controller/ResourceController.java 107 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-resource/src/main/java/cn/stylefeng/roses/kernel/system/modular/resource/controller/ResourceReportController.java 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-resource/src/main/java/cn/stylefeng/roses/kernel/system/modular/resource/entity/SysResource.java 193 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-resource/src/main/java/cn/stylefeng/roses/kernel/system/modular/resource/factory/ResourceFactory.java 221 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-resource/src/main/java/cn/stylefeng/roses/kernel/system/modular/resource/mapper/SysResourceMapper.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-resource/src/main/java/cn/stylefeng/roses/kernel/system/modular/resource/mapper/mapping/SysResourceMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-resource/src/main/java/cn/stylefeng/roses/kernel/system/modular/resource/pojo/ResourceTreeNode.java 101 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-resource/src/main/java/cn/stylefeng/roses/kernel/system/modular/resource/service/SysResourceService.java 125 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-resource/src/main/java/cn/stylefeng/roses/kernel/system/modular/resource/service/impl/SysResourceServiceImpl.java 581 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-role/README.md 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-role/pom.xml 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/cache/RoleDataScopeMemoryCache.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/cache/RoleDataScopeRedisCache.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/cache/RoleMemoryCache.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/cache/RoleRedisCache.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/cache/RoleResourceMemoryCache.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/cache/RoleResourceRedisCache.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/controller/SysRoleAuthController.java 169 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/controller/SysRoleController.java 280 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/entity/SysRole.java 115 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/entity/SysRoleDataScope.java 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/entity/SysRoleMenu.java 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/entity/SysRoleMenuButton.java 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/entity/SysRoleResource.java 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/listener/RoleResourceUpdateListener.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/mapper/SysRoleDataScopeMapper.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/mapper/SysRoleMapper.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/mapper/SysRoleMenuButtonMapper.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/mapper/SysRoleMenuMapper.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/mapper/SysRoleResourceMapper.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/mapper/mapping/SysRoleDataScopeMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/mapper/mapping/SysRoleMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/mapper/mapping/SysRoleMenuButtonMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/mapper/mapping/SysRoleMenuMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/mapper/mapping/SysRoleResourceMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/service/SysRoleDataScopeService.java 117 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/service/SysRoleMenuButtonService.java 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/service/SysRoleMenuService.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/service/SysRoleResourceService.java 104 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/service/SysRoleService.java 178 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/service/impl/SysRoleDataScopeServiceImpl.java 153 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/service/impl/SysRoleMenuButtonServiceImpl.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/service/impl/SysRoleMenuServiceImpl.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/service/impl/SysRoleResourceServiceImpl.java 228 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/service/impl/SysRoleServiceImpl.java 869 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-theme/pom.xml 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-theme/src/main/java/cn/stylefeng/roses/kernel/system/modular/theme/cache/ThemeMemoryCache.java 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-theme/src/main/java/cn/stylefeng/roses/kernel/system/modular/theme/cache/ThemeRedisCache.java 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-theme/src/main/java/cn/stylefeng/roses/kernel/system/modular/theme/clean/ThemeConfigRefresh.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-theme/src/main/java/cn/stylefeng/roses/kernel/system/modular/theme/controller/SysThemeApiController.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-theme/src/main/java/cn/stylefeng/roses/kernel/system/modular/theme/controller/SysThemeController.java 107 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-theme/src/main/java/cn/stylefeng/roses/kernel/system/modular/theme/controller/SysThemeTemplateController.java 119 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-theme/src/main/java/cn/stylefeng/roses/kernel/system/modular/theme/controller/SysThemeTemplateFieldController.java 116 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-theme/src/main/java/cn/stylefeng/roses/kernel/system/modular/theme/controller/SysThemeTemplateRelController.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-theme/src/main/java/cn/stylefeng/roses/kernel/system/modular/theme/entity/SysTheme.java 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-theme/src/main/java/cn/stylefeng/roses/kernel/system/modular/theme/entity/SysThemeTemplate.java 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-theme/src/main/java/cn/stylefeng/roses/kernel/system/modular/theme/entity/SysThemeTemplateField.java 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-theme/src/main/java/cn/stylefeng/roses/kernel/system/modular/theme/entity/SysThemeTemplateRel.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-theme/src/main/java/cn/stylefeng/roses/kernel/system/modular/theme/enums/ThemeFieldTypeEnum.java 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-theme/src/main/java/cn/stylefeng/roses/kernel/system/modular/theme/factory/DefaultThemeFactory.java 87 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-theme/src/main/java/cn/stylefeng/roses/kernel/system/modular/theme/mapper/SysThemeMapper.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-theme/src/main/java/cn/stylefeng/roses/kernel/system/modular/theme/mapper/SysThemeTemplateFieldMapper.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-theme/src/main/java/cn/stylefeng/roses/kernel/system/modular/theme/mapper/SysThemeTemplateMapper.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-theme/src/main/java/cn/stylefeng/roses/kernel/system/modular/theme/mapper/SysThemeTemplateRelMapper.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-theme/src/main/java/cn/stylefeng/roses/kernel/system/modular/theme/mapper/mapping/SysThemeMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-theme/src/main/java/cn/stylefeng/roses/kernel/system/modular/theme/mapper/mapping/SysThemeTemplateFieldMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-theme/src/main/java/cn/stylefeng/roses/kernel/system/modular/theme/mapper/mapping/SysThemeTemplateMapper.xml 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-theme/src/main/java/cn/stylefeng/roses/kernel/system/modular/theme/mapper/mapping/SysThemeTemplateRelMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-theme/src/main/java/cn/stylefeng/roses/kernel/system/modular/theme/pojo/DefaultTheme.java 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-theme/src/main/java/cn/stylefeng/roses/kernel/system/modular/theme/service/SysThemeService.java 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-theme/src/main/java/cn/stylefeng/roses/kernel/system/modular/theme/service/SysThemeTemplateFieldService.java 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-theme/src/main/java/cn/stylefeng/roses/kernel/system/modular/theme/service/SysThemeTemplateRelService.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-theme/src/main/java/cn/stylefeng/roses/kernel/system/modular/theme/service/SysThemeTemplateService.java 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-theme/src/main/java/cn/stylefeng/roses/kernel/system/modular/theme/service/impl/SysThemeServiceImpl.java 412 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-theme/src/main/java/cn/stylefeng/roses/kernel/system/modular/theme/service/impl/SysThemeTemplateFieldServiceImpl.java 204 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-theme/src/main/java/cn/stylefeng/roses/kernel/system/modular/theme/service/impl/SysThemeTemplateRelServiceImpl.java 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-theme/src/main/java/cn/stylefeng/roses/kernel/system/modular/theme/service/impl/SysThemeTemplateServiceImpl.java 171 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-user/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-user/pom.xml 158 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/cache/SysUserMemoryCache.java 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/cache/SysUserRedisCache.java 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/cache/UserOrgMemoryCache.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/cache/UserOrgRedisCache.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/cache/UserRoleMemoryCache.java 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/cache/UserRoleRedisCache.java 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/controller/KaptchaController.java 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/controller/LoginController.java 223 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/controller/OnlineUserController.java 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/controller/PersonalInfoController.java 99 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/controller/SysUserAdminController.java 101 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/controller/SysUserController.java 356 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/controller/SysUserGroupController.java 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/entity/SysUser.java 151 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/entity/SysUserDataScope.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/entity/SysUserGroup.java 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/entity/SysUserGroupDetail.java 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/entity/SysUserOrg.java 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/entity/SysUserRole.java 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/enums/SysUserGroupDetailExceptionEnum.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/enums/SysUserGroupExceptionEnum.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/factory/OnlineUserCreateFactory.java 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/factory/SysUserCreateFactory.java 162 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/factory/UserGroupFactory.java 170 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/factory/UserLoginInfoFactory.java 208 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/mapper/SysUserDataScopeMapper.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/mapper/SysUserGroupDetailMapper.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/mapper/SysUserGroupMapper.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/mapper/SysUserMapper.java 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/mapper/SysUserOrgMapper.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/mapper/SysUserRoleMapper.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/mapper/mapping/SysUserDataScopeMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/mapper/mapping/SysUserGroupDetailMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/mapper/mapping/SysUserGroupMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/mapper/mapping/SysUserMapper.xml 194 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/mapper/mapping/SysUserOrgMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/mapper/mapping/SysUserRoleMapper.xml 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/pojo/request/SysUserGroupDetailRequest.java 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/pojo/request/SysUserGroupRequest.java 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/provider/LoginUserProvider.java 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/IndexUserInfoService.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/SysUserAdminService.java 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/SysUserDataScopeService.java 114 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/SysUserGroupDetailService.java 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/SysUserGroupService.java 83 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/SysUserOrgService.java 139 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/SysUserRoleService.java 125 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/SysUserService.java 293 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/TenantPrefixService.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/impl/IndexUserInfoServiceImpl.java 150 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/impl/SysUserAdminServiceImpl.java 179 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/impl/SysUserDataScopeServiceImpl.java 164 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/impl/SysUserGroupDetailServiceImpl.java 110 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/impl/SysUserGroupServiceImpl.java 142 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/impl/SysUserOrgServiceServiceImpl.java 225 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/impl/SysUserRoleServiceImpl.java 178 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/impl/SysUserServiceImpl.java 1177 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/wrapper/UserExpandWrapper.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-integration-beetl/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-integration-beetl/pom.xml 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/CustomErrorView.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/config/BeetlAutoConfiguration.java 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/config/BeetlErrorViewAutoConfiguration.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/core/CustomBeetlGroupUtilConfiguration.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/core/consts/BeetlConstants.java 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/core/consts/DictTagConstants.java 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/core/enums/SelectTagHeadTypeEnum.java 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/core/expander/BeetlConfigExpander.java 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/core/tag/SysDictBaseTag.java 182 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/core/tag/SysDictCheckBoxTag.java 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/core/tag/SysDictRadioTag.java 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/core/tag/SysDictSelectTag.java 96 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/modular/system/api/ApiViewController.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/modular/system/app/AppViewController.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/modular/system/common/CommonViewController.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/modular/system/common/pojo/CommonTreeRequest.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/modular/system/config/ConfigViewController.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/modular/system/dashboard/DashboardViewController.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/modular/system/dataCenter/dataCenterViewController.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/modular/system/datasource/DataSourceViewController.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/modular/system/dict/DictTypeViewController.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/modular/system/dict/DictViewController.java 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/modular/system/error/ErrorViewController.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/modular/system/file/FileViewController.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/modular/system/i18n/TranslationViewController.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/modular/system/index/controller/IndexViewController.java 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/modular/system/index/service/IndexService.java 121 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/modular/system/log/LogViewController.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/modular/system/log/LoginLogViewController.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/modular/system/login/LoginViewController.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/modular/system/menu/MenuButtonViewController.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/modular/system/menu/MenuViewController.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/modular/system/message/MessageViewController.java 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/modular/system/monitor/MonitorController.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/modular/system/notice/NoticeViewController.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/modular/system/online/OnlineUserViewController.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/modular/system/organization/OrganizationViewController.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/modular/system/package-info.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/modular/system/position/PositionViewController.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/modular/system/resource/ResourceViewController.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/modular/system/role/RoleViewController.java 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/modular/system/timer/TimersViewController.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/modular/system/user/UserViewController.java 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-integration-beetl/src/main/resources/META-INF/spring.factories 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-integration-rest/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-integration-rest/pom.xml 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-integration-rest/src/main/java/cn/stylefeng/roses/kernel/system/integration/ErrorStaticJsonView.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-integration-rest/src/main/java/cn/stylefeng/roses/kernel/system/integration/config/RestErrorViewAutoConfiguration.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-integration-rest/src/main/resources/META-INF/spring.factories 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-spring-boot-starter/README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-spring-boot-starter/pom.xml 106 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/system/starter/GunsSystemHomeStatisticsAutoConfiguration.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/system/starter/cache/GunsResourceMemoryCacheAutoConfiguration.java 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/system/starter/cache/GunsResourceRedisCacheAutoConfiguration.java 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/system/starter/cache/GunsSystemMemoryCacheAutoConfiguration.java 156 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/system/starter/cache/GunsSystemRedisCacheAutoConfiguration.java 156 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/system/starter/init/InitAdminService.java 96 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/system/starter/listener/SuperAdminInitListener.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-system/system-spring-boot-starter/src/main/resources/META-INF/spring.factories 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/pom.xml 476 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
sql/clear_data_20240229.sql 196 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.gitignore
New file
@@ -0,0 +1,5 @@
/.idea/
**/target/
*.iml
/app-log/
**/roses/**/target/
README.md
@@ -1,4 +1,23 @@
## PsychologicalCounseling
## Guns架构说明
心理咨询
### 项目结构
> 后端代码在项目的src/main/java目录下,整体结构如下:
```
|-config                   // 项目的配置,Bean的配置
|-core                     // 项目运行的和新机制和通用常量、枚举等
|-modular                  // 后端业务代码
|    |-business            // 这里写您的后端业务java代码
|    |-system              // 这里写Guns自带业务的java代码
|-GunsApplication          // 项目启动类
|-GunsServletInitializer   // 项目Servlet初始化类,打war包用
```
### 配套手册
`Guns 文档`
[https://www.javaguns.com/gunsDoc?categoryId=1504358893655011330&artId=1504360559456399362](https://www.javaguns.com/gunsDoc?categoryId=1504358893655011330&artId=1504360559456399362)
`Guns DevOps文档`
[https://www.javaguns.com/gunsDoc?categoryId=1504359081752768514&artId=1504394797299843073](https://www.javaguns.com/gunsDoc?categoryId=1504359081752768514&artId=1504394797299843073)
common-buiness/pom.xml
New file
@@ -0,0 +1,132 @@
<?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>cn.xiwang.guns</groupId>
        <artifactId>xinlizixun</artifactId>
        <version>7.3.3</version>
    </parent>
    <artifactId>common-buiness</artifactId>
    <packaging>jar</packaging>
    <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>cn.xiwang.guns</groupId>
            <artifactId>system-business-user</artifactId>
            <version>${roses.version}</version>
        </dependency>
        <!--系统管理的api-->
        <dependency>
            <groupId>cn.xiwang.guns</groupId>
            <artifactId>system-api</artifactId>
            <version>${roses.version}</version>
        </dependency>
        <!--资源api模块-->
        <!--用在资源控制器,资源扫描上-->
        <dependency>
            <groupId>cn.xiwang.guns</groupId>
            <artifactId>scanner-api</artifactId>
            <version>${roses.version}</version>
        </dependency>
        <!--参数校验模块-->
        <!--用在控制器,参数校验-->
        <dependency>
            <groupId>cn.xiwang.guns</groupId>
            <artifactId>validator-api</artifactId>
            <version>${roses.version}</version>
        </dependency>
        <!--数据库sdk-->
        <!--数据库dao框架-->
        <dependency>
            <groupId>cn.xiwang.guns</groupId>
            <artifactId>db-sdk-mp</artifactId>
            <version>${roses.version}</version>
        </dependency>
        <!--web模块-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--缓存api-->
        <!--角色的查询会使用缓存-->
        <dependency>
            <groupId>cn.xiwang.guns</groupId>
            <artifactId>cache-api</artifactId>
            <version>${roses.version}</version>
        </dependency>
        <dependency>
            <groupId>cn.xiwang.guns</groupId>
            <artifactId>cache-sdk-memory</artifactId>
            <version>${roses.version}</version>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>cn.xiwang.guns</groupId>
            <artifactId>cache-sdk-redis</artifactId>
            <version>${roses.version}</version>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>4.1.2</version>
            <scope>compile</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>com.huaweicloud</groupId>
            <artifactId>esdk-obs-java-bundle</artifactId>
            <version>[3.21.11,)</version>
        </dependency>
        <dependency>
            <groupId>cn.xiwang.guns</groupId>
            <artifactId>customer-business</artifactId>
            <version>${roses.version}</version>
            <scope>compile</scope>
        </dependency>
        <!--IM模块-->
        <dependency>
            <groupId>cn.xiwang.guns</groupId>
            <artifactId>im-spring-boot-starter</artifactId>
            <version>${roses.version}</version>
        </dependency>
        <dependency>
            <groupId>cn.xiwang.guns</groupId>
            <artifactId>sms-business-validation</artifactId>
            <version>${roses.version}</version>
        </dependency>
    </dependencies>
</project>
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/controller/CounsellingUserController.java
New file
@@ -0,0 +1,128 @@
package cn.stylefeng.guns.modular.business.controller;
import cn.stylefeng.guns.modular.business.entity.CounsellingUser;
import cn.stylefeng.guns.modular.business.service.ICounsellingUserService;
import cn.hutool.core.collection.ListUtil;
import cn.hutool.core.util.StrUtil;
import cn.stylefeng.roses.kernel.db.api.factory.PageFactory;
import cn.stylefeng.roses.kernel.db.api.factory.PageResultFactory;
import cn.stylefeng.roses.kernel.db.api.pojo.page.PageResult;
import cn.stylefeng.roses.kernel.rule.annotation.BusinessLog;
import cn.stylefeng.roses.kernel.rule.enums.ResBizTypeEnum;
import cn.stylefeng.roses.kernel.rule.pojo.response.ErrorResponseData;
import cn.stylefeng.roses.kernel.rule.pojo.response.ResponseData;
import cn.stylefeng.roses.kernel.rule.pojo.response.SuccessResponseData;
import cn.stylefeng.roses.kernel.scanner.api.annotation.ApiResource;
import cn.stylefeng.roses.kernel.scanner.api.annotation.GetResource;
import cn.stylefeng.roses.kernel.scanner.api.annotation.PostResource;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
/**
 * 用户咨询师课时信息管理类
 * @author guo
 */
@RestController
@Api(tags = "用户咨询师课时信息管理类")
@ApiResource(name = "用户咨询师课时信息管理类", resBizType = ResBizTypeEnum.BUSINESS)
@RequestMapping("/business")
public class CounsellingUserController  {
    @Resource
    private ICounsellingUserService counsellingUserService;
    /**
     * 添加用户咨询师课时信息
     */
    @ApiOperation("添加用户咨询师课时信息")
    @PostResource(name = "添加用户咨询师课时信息", path = "/counsellingUser/add")
    @BusinessLog
    public ResponseData<?> add(@RequestBody CounsellingUser counsellingUser) {
        this.counsellingUserService.save(counsellingUser);
        return new SuccessResponseData<>();
    }
    /**
     * 删除用户咨询师课时信息
     */
    @ApiOperation("删除用户咨询师课时信息")
    @PostResource(name = "删除用户咨询师课时信息", path = "/counsellingUser/delete")
    @BusinessLog
    public ResponseData<?> delete(@RequestParam String ids) {
        if (StrUtil.isBlank(ids)){
            return new ErrorResponseData<>("500","id不能为空");
        }
        LambdaUpdateWrapper<CounsellingUser> lambdaUpdateWrapper = new LambdaUpdateWrapper<CounsellingUser>().set(CounsellingUser::getIsDelete,true);
        lambdaUpdateWrapper.in(CounsellingUser::getId, ListUtil.toList(ids.split(",")));
        this.counsellingUserService.update(lambdaUpdateWrapper);
        return new SuccessResponseData<>();
    }
    /**
     * 修改用户咨询师课时信息
     */
    @ApiOperation("修改用户咨询师课时信息")
    @PostResource(name = "修改用户咨询师课时信息", path = "/counsellingUser/edit")
    @BusinessLog
    public ResponseData<?> edit(@RequestBody CounsellingUser counsellingUser) {
        this.counsellingUserService.updateById(counsellingUser);
        return new SuccessResponseData<>();
    }
    /**
     * 修改用户咨询师课时信息状态
     */
    @ApiOperation("修改用户咨询师课时信息状态")
    @PostResource(name = "修改用户咨询师课时信息状态", path = "/counsellingUser/updateStatus")
    @BusinessLog
    public ResponseData<?> updateStatus(String ids, Integer status) {
        if (StrUtil.isBlank(ids)){
            return new ErrorResponseData<>("500","id不能为空");
        }
        LambdaUpdateWrapper<CounsellingUser> lambdaUpdateWrapper = new LambdaUpdateWrapper<CounsellingUser>().set(CounsellingUser::getStatusFlag,status);
        lambdaUpdateWrapper.in(CounsellingUser::getId, ListUtil.toList(ids.split(",")));
        this.counsellingUserService.update(lambdaUpdateWrapper);
        return new SuccessResponseData<>();
    }
    /**
     * 获取用户咨询师课时信息详情
     */
    @ApiOperation("获取用户咨询师课时信息详情")
    @GetResource(name = "获取用户咨询师课时信息详情", path = "/counsellingUser/detail/{id}", requiredPermission = false)
    public ResponseData<CounsellingUser> detail(@PathVariable("id") Long id) {
        CounsellingUser counsellingUser = this.counsellingUserService.getById(id);
        return new SuccessResponseData<>(counsellingUser);
    }
    /**
     * 获取用户咨询师课时信息列表
     */
    @ApiOperation("获取用户咨询师课时信息列表")
    @GetResource(name = "获取用户咨询师课时信息列表", path = "/counsellingUser/list", requiredPermission = false)
    public ResponseData<List<CounsellingUser>> list(CounsellingUser counsellingUser) {
        LambdaQueryWrapper<CounsellingUser> lambdaQueryWrapper = new LambdaQueryWrapper<CounsellingUser>().eq(CounsellingUser::getIsDelete,false)
                .orderByDesc(CounsellingUser::getId);
        return new SuccessResponseData<>(counsellingUserService.list(lambdaQueryWrapper));
    }
    /**
     * 获取用户咨询师课时信息列表(分页)
     */
    @ApiOperation("获取用户咨询师课时信息列表(分页)")
    @GetResource(name = "获取用户咨询师课时信息列表(分页)", path = "/counsellingUser/page", requiredPermission = false)
    public ResponseData<PageResult<CounsellingUser>> page(CounsellingUser counsellingUser) {
        LambdaQueryWrapper<CounsellingUser> lambdaQueryWrapper = new LambdaQueryWrapper<CounsellingUser>().eq(CounsellingUser::getIsDelete,false)
                .orderByDesc(CounsellingUser::getId);
        Page<CounsellingUser> page = this.counsellingUserService.page(PageFactory.defaultPage(), lambdaQueryWrapper);
        return new SuccessResponseData<>(PageResultFactory.createPageResult(page));
    }
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/controller/CustomerInfoBizController.java
New file
@@ -0,0 +1,79 @@
package cn.stylefeng.guns.modular.business.controller;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.StrUtil;
import cn.stylefeng.guns.modular.business.dto.request.SysSmsSendParamRequest;
import cn.stylefeng.guns.modular.business.service.IAreaService;
import cn.stylefeng.roses.kernel.auth.api.context.LoginContext;
import cn.stylefeng.roses.kernel.auth.api.pojo.login.LoginUser;
import cn.stylefeng.roses.kernel.customer.api.pojo.CustomerInfo;
import cn.stylefeng.roses.kernel.customer.modular.entity.Customer;
import cn.stylefeng.roses.kernel.customer.modular.request.CustomerIdRequest;
import cn.stylefeng.roses.kernel.customer.modular.service.CustomerService;
import cn.stylefeng.roses.kernel.rule.enums.StatusEnum;
import cn.stylefeng.roses.kernel.rule.pojo.response.ResponseData;
import cn.stylefeng.roses.kernel.rule.pojo.response.SuccessResponseData;
import cn.stylefeng.roses.kernel.scanner.api.annotation.ApiResource;
import cn.stylefeng.roses.kernel.scanner.api.annotation.GetResource;
import cn.stylefeng.roses.kernel.scanner.api.annotation.PostResource;
import cn.stylefeng.roses.kernel.sms.modular.param.SysSmsSendParam;
import cn.stylefeng.roses.kernel.sms.modular.service.SysSmsInfoService;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
@Api(tags = "C端用户")
@RestController
@ApiResource(name = "C端用户个人信息修改")
public class CustomerInfoBizController {
    @Resource
    private IAreaService areaService;
    @Resource
    private CustomerService customerService;
    @Resource
    private SysSmsInfoService sysSmsInfoService;
    @ApiOperation(value = "发送验证码短信")
    @PostResource(name = "发送验证码短信", path = "/sms/sendMessageByPhone", requiredLogin = false, requiredPermission = false)
    public ResponseData<Boolean> sendMessageByPhone(@RequestBody SysSmsSendParamRequest req) {
        if (StrUtil.isNotBlank(req.getPhone())) {
            long count = customerService.count(
                    Wrappers.<Customer>lambdaQuery()
                            .eq(Customer::getAccount, req.getPhone())
                            .eq(Customer::getStatusFlag, StatusEnum.ENABLE.getCode())
            );
            Assert.isTrue(count > 0, "手机号不存在");
        }
        SysSmsSendParam sysSmsSendParam = BeanUtil.copyProperties(req, SysSmsSendParam.class);
        return new SuccessResponseData<>(sysSmsInfoService.sendShortMessage(sysSmsSendParam));
    }
    /**
     * 获取个人信息
     */
    @ApiOperation("获取个人信息")
    @GetResource(name = "获取个人信息", path = "/customerInfo/getPersonInfo", requiredPermission = false)
    public ResponseData<CustomerInfo> getPersonInfo(CustomerIdRequest customerRequest) {
        if (customerRequest.getCustomerId() == null) {
            // 获取当前登录用户信息
            LoginUser loginUser = LoginContext.me().getLoginUser();
            Long userId = loginUser.getUserId();
            customerRequest.setCustomerId(userId);
        }
        CustomerInfo customerInfo = customerService.getCustomerInfoById(customerRequest.getCustomerId());
        if (customerInfo != null && StrUtil.isNotBlank(customerInfo.getCityCode())) {
            customerInfo.setCityCodeStr(areaService.getNameByCodeAddPrefix("/", customerInfo.getCityCode()));
        }
        return new SuccessResponseData<>(customerInfo);
    }
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/BaseIdNameDTO.java
New file
@@ -0,0 +1,27 @@
package cn.stylefeng.guns.modular.business.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
 * ID名称
 * @author goupan
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel(value = "ID名称-响应参数")
public class BaseIdNameDTO {
    @ApiModelProperty(value = "ID")
    private Long id;
    @ApiModelProperty(value = "名称")
    private String name;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/CounsellingOrderReservationRequestDTO.java
New file
@@ -0,0 +1,52 @@
package cn.stylefeng.guns.modular.business.dto;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import cn.stylefeng.roses.kernel.rule.pojo.request.BaseRequest;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@ApiModel(value = "咨询订单-请求参数")
@Data
public class CounsellingOrderReservationRequestDTO extends BaseRequest {
    @ApiModelProperty(value = "预约状态 1-待审批,2-待服务,3-服务中,4-已完成,5-已取消,6-已拒绝")
    @ChineseDescription("预约状态 1-待审批,2-待服务,3-服务中,4-已完成,5-已取消,6-已拒绝")
    private Integer stauts;
    @ApiModelProperty(value = "咨询师名称")
    @ChineseDescription("咨询师名称")
    private String counsellingInfoName;
    @ApiModelProperty(value = "用户名称")
    @ChineseDescription("用户名称")
    private String userName;
    @ApiModelProperty(value = "联系电话")
    @ChineseDescription("联系电话")
    private String phone;
    @ApiModelProperty(value = "预约类型 1-首次面诊,2-咨询疗程")
    @ChineseDescription("预约类型 1-首次面诊,2-咨询疗程")
    private Integer reservationType;
    @ApiModelProperty(value = "咨询师信息id")
    @ChineseDescription("咨询师信息id")
    private Long counsellingInfoId;
    @ApiModelProperty(value = "咨询订单id")
    @ChineseDescription("咨询订单id")
    private Long counsellingOrderId;
    @ApiModelProperty(value = "当前用户id(前端不用传)")
    @ChineseDescription("当前用户id(前端不用传)")
    private Long customerId;
    @ApiModelProperty(value = "搜索类型 1-代表行程查询,2-预约管理查询")
    @ChineseDescription("搜索类型 1-代表行程查询,2-预约管理查询")
    private Integer searchType;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/CounsellingOrderReservationResponseDTO.java
New file
@@ -0,0 +1,116 @@
package cn.stylefeng.guns.modular.business.dto;
import cn.hutool.core.date.DateUtil;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
@ApiModel("预约记录实体-响应参数")
@Data
public class CounsellingOrderReservationResponseDTO  implements Serializable {
    private static final long serialVersionUID = 1L;
    /**
     * 主键id
     */
    @ApiModelProperty(value = "预约记录id")
    @ChineseDescription("预约记录id")
    private Long id;
    /**
     * 咨询id
     */
    @ApiModelProperty(value = "咨询id")
    @ChineseDescription("咨询id")
    private Long counsellingInfoId;
    /**
     * 用户id
     */
    @ApiModelProperty(value = "用户id")
    @ChineseDescription("用户id")
    private Long userId;
    /**
     * 预约开始时间点
     */
    @ApiModelProperty(value = "预约开始时间点")
    @ChineseDescription("预约开始时间点")
    private Date reservationBeginTime;
    /**
     * 预约结束时间点
     */
    @ApiModelProperty(value = "预约结束时间点")
    @ChineseDescription("预约结束时间点")
    private Date reservationEndTime;
    @ApiModelProperty(value = "预约日期")
    @ChineseDescription("预约日期")
    private Date reservationDate;
    @ApiModelProperty(value = "用户名称")
    @ChineseDescription("用户名称")
    private String userName;
    @ApiModelProperty(value = "预约类型 1-首次面诊,2-咨询疗程")
    @ChineseDescription("预约类型 1-首次面诊,2-咨询疗程")
    private Integer reservationType;
    @ApiModelProperty(value = "预约状态 1-待审批,2-待服务,3-服务中,4-已完成,5-已取消,6-已拒绝")
    @ChineseDescription("预约状态 1-待审批,2-待服务,3-服务中,4-已完成,5-已取消,6-已拒绝")
    private Integer stauts;
    public Date getReservationDate() {
        if (this.reservationBeginTime != null){
          return   DateUtil.parseDate(DateUtil.format(this.reservationBeginTime,"yyyy-MM-dd"));
        }
        return reservationDate;
    }
    /**
     * 联系电话
     */
    @ApiModelProperty(value = "联系电话")
    @ChineseDescription("联系电话")
    private String phone;
    @ApiModelProperty(value = "订单id")
    @ChineseDescription("订单id")
    private Long counsellingOrderId;
    @ApiModelProperty(value = "预约开始时间点字符串")
    @ChineseDescription("预约开始时间点字符串")
    private String reservationBeginTimeStr;
    /**
     * 预约结束时间点
     */
    @ApiModelProperty(value = "预约结束时间点字符串")
    @ChineseDescription("预约结束时间点字符串")
    private String reservationEndTimeStr;
    public String getReservationBeginTimeStr() {
        if (this.reservationBeginTime != null){
            return DateUtil.format(this.reservationBeginTime,"yyyy-MM-dd HH:mm");
        }
        return reservationBeginTimeStr;
    }
    public String getReservationEndTimeStr() {
        if (this.reservationEndTime != null){
            return DateUtil.format(this.reservationEndTime,"yyyy-MM-dd HH:mm");
        }
        return reservationEndTimeStr;
    }
    @ApiModelProperty(value = "咨询师名称")
    @ChineseDescription("咨询师名称")
    private String counsellingInfoName;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/CounsellingOrderResponseDTO.java
New file
@@ -0,0 +1,102 @@
package cn.stylefeng.guns.modular.business.dto;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import cn.stylefeng.guns.modular.business.dto.request.CustomerUpdateRequest;
import cn.stylefeng.guns.modular.business.entity.CounsellingOrder;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
@Data
@ApiModel("咨询订单-响应参数")
public class CounsellingOrderResponseDTO extends CounsellingOrder {
    @ApiModelProperty("咨询师名称")
    private String counsellingName;
    @ApiModelProperty("用户姓名")
    private String userName;
    @ApiModelProperty("陪护教练名称")
    private String companionUserName;
    @ApiModelProperty("咨询顾问名称")
    private String consultantUserName;
    @ApiModelProperty("展示状态用于后台系统展示:0待支付,1已完成,3服务中,9取消,10退款,11-已支付")
    private Integer showState;
    @ApiModelProperty("现状用户信息")
    private CustomerUpdateRequest customerUpdateRequest;
    @ApiModelProperty(value = "咨询师类型 1-首席咨询师,2-明星咨询师")
    @ChineseDescription("咨询师类型 1-首席咨询师,2-明星咨询师")
    private Integer counsellingType;
    public CustomerUpdateRequest getCustomerUpdateRequest() {
        if (StrUtil.isNotBlank(this.getUserInfoJson())){
            return JSONUtil.toBean(this.getUserInfoJson(), CustomerUpdateRequest.class);
        }
        return customerUpdateRequest;
    }
    public Integer getShowState() {
        Integer statusFlag = getStatusFlag();
        //判断订单状态
        if (statusFlag != null && getOrderType() != null){
            if (statusFlag.intValue() == 0){
                return  0;
            } else if (statusFlag.intValue() == 1) {
                Date nowDate = new Date();
                //判断订单类型
                if (getOrderType().intValue() ==1 ){
                    if (getFirstAppointmentDate() == null){
                        return 3;
                    }else{
                        String Date = DateUtil.formatDate(getFirstAppointmentDate()) + " " + getFirstAppointmentTimes().split("-")[1]+":00";
                        if (nowDate.getTime() > DateUtil.parseDateTime(Date).getTime()){
                            return 1;
                        }else{
                            return 11;
                        }
                    }
                } else  {
                    if (nowDate.getTime() > getEffectiveEndTime().getTime()){
                        return 1;
                    }else{
                        return 3;
                    }
                }
            } else if (statusFlag.intValue() == 2) {
                //订单已完成
                return 1;
            }else {
                return getStatusFlag();
            }
        }
        return showState;
    }
    @ApiModelProperty("最近预约时间")
    private String lastTime;
    @ApiModelProperty("咨询师封面图url")
    private String coverImageUrl;
    @ApiModelProperty("首次咨询预约状态 1-未预约首次咨询,2-已预约首次咨询,等待咨询,3-已完成首次预约咨询")
    private Integer isFirstAppointment;
    @ApiModelProperty("上架状态 1-上架,2-下架")
    private Integer listingStatus;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/CounsellingReservationDTO.java
New file
@@ -0,0 +1,23 @@
package cn.stylefeng.guns.modular.business.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
@ApiModel("咨询预约响应")
@Data
public class CounsellingReservationDTO implements Serializable {
    @ApiModelProperty("咨询师id")
    private Long counsellingInfoId;
    @ApiModelProperty("预约日期")
    private Date reservationDay;
    @ApiModelProperty("剩余人数 0表示已满")
    private Long remainingNum;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/CounsellinginfoResponseDTO.java
New file
@@ -0,0 +1,47 @@
package cn.stylefeng.guns.modular.business.dto;
import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HtmlUtil;
import cn.stylefeng.guns.modular.business.dto.request.CustomerUpdateRequest;
import cn.stylefeng.guns.modular.business.entity.CounsellingInfo;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
@ApiModel("咨询师师响应dto")
@Data
public class CounsellinginfoResponseDTO extends CounsellingInfo {
    @ApiModelProperty("是否进行过首次购买 true-是,false-否")
    private Boolean isFirstBuy = false;
    @ApiModelProperty(value = "个人简介 无标签")
    @ChineseDescription("个人简介 无标签")
    private String personalProfileNotTag;
    public String getPersonalProfileNotTag() {
        if(StrUtil.isNotBlank(this.getPersonalProfile())){
           return HtmlUtil.cleanHtmlTag(this.getPersonalProfile());
        }
        return personalProfileNotTag;
    }
    @ApiModelProperty(value = "咨询师名称")
    @ChineseDescription("咨询师名称")
    private String nikeName;
    @ApiModelProperty(value = "最低价格")
    @ChineseDescription("最低价格")
    private BigDecimal lowPrice;
    @ApiModelProperty("上班状态:1上班,2下班,3离职")
    private Integer workStatus;
    @ApiModelProperty(value = "咨询师名称")
    @ChineseDescription("咨询师名称")
    private String counsellingInfoName;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/CourseOrderResponseDTO.java
New file
@@ -0,0 +1,114 @@
package cn.stylefeng.guns.modular.business.dto;
import cn.hutool.core.util.StrUtil;
import cn.stylefeng.guns.modular.business.entity.CourseOrder;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
import java.util.List;
@ApiModel("课程订单-响应参数")
@Data
public class CourseOrderResponseDTO  extends CourseOrder {
    @ApiModelProperty("课程名称")
    private String courseName;
    @ApiModelProperty("用户姓名")
    private String userName;
    @ApiModelProperty("课程顾问名称")
    private String courseUserName;
    @ApiModelProperty("咨询顾问名称")
    private String tutoringUserName;
    @ApiModelProperty("展示状态用于后台系统展示和查询:0待支付,1已完成,3已支付,9取消,10退款")
    private Integer showState;
    public Integer getShowState() {
        Integer statusFlag = getStatusFlag();
        //判断订单状态
        if (statusFlag != null){
            if (statusFlag.intValue() == 0){
                return  0;
            } else if (statusFlag.intValue() == 1) {
                Date nowDate = new Date();
                if(nowDate.getTime() > getEffectiveEndTime().getTime()){
                    return 1;
                }else{
                    return 3;
                }
            }else if (statusFlag.intValue() == 2) {//订单已完成
                return 1;
            }else{
                return getStatusFlag();
            }
        }
        return showState;
    }
    @ApiModelProperty("总课程时长")
    private String totalCourseShowTime = "00:00:00";
    @ApiModelProperty("已学习总课程时长")
    private String studyCourseShowTime = "00:00:00";
    @ApiModelProperty("学习百分比")
    private Integer studyPercent = 0;
    @ApiModelProperty(value = "课程详细内容")
    @ChineseDescription("课程详细内容")
    private String courseContent;
    @ApiModelProperty(value = "总章节课程数量")
    @ChineseDescription("总章节课程数量")
    private Integer totalCourseChapter;
    @ApiModelProperty(value = "已学章节课程数量")
    @ChineseDescription("已学章节课程数量")
    private Integer studyCourseChapter;
    public Integer getStudyPercent() {
        if (getTotalTime() != null && getLearnedTime() != null){
            return (int)Math.ceil(getLearnedTime()*100f/getTotalTime());
        }
        return studyPercent;
    }
    public String getStudyCourseShowTime() {
        if (getLearnedTime() != null){
            int hour = (int) Math.floor(getLearnedTime().longValue() / 3600f);
            long minute = (int) Math.floor((getLearnedTime().longValue() % 3600) / 60f);
            long sec = (getLearnedTime().longValue() % 3600l) % 60;
            return String.format("%02d",  hour)+":"+String.format("%02d",  minute)+":"+String.format("%02d",  sec);
        }
        return studyCourseShowTime;
    }
    public String getTotalCourseShowTime() {
        if (getTotalTime() != null){
            int hour = (int) Math.floor(getTotalTime().longValue() / 3600f);
            long minute = (int) Math.floor((getTotalTime().longValue() % 3600l) / 60f);
            long sec = (getTotalTime().longValue() % 3600l) % 60;
            return String.format("%02d",  hour)+":"+String.format("%02d",  minute)+":"+String.format("%02d",  sec);
        }
        return totalCourseShowTime;
    }
    @ApiModelProperty(value = "课程章节学习")
    @ChineseDescription("课程详细内容")
    private List<CourseResponseDTO.CourseChapterResponseDTO> courseChapterResponseDTOList;
    @ApiModelProperty(value = "最近一次观看章节id")
    @ChineseDescription("最近一次观看章节id")
    private Long lastLookCourseChapterId;
    @ApiModelProperty(value = "上架状态 1-上架,2-下架")
    @ChineseDescription("上架状态 1-上架,2-下架")
    private Integer listingStatus;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/CourseResponseDTO.java
New file
@@ -0,0 +1,203 @@
package cn.stylefeng.guns.modular.business.dto;
import cn.stylefeng.guns.modular.business.entity.CourseChapter;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
@ApiModel("课程响应对象信息")
@Data
public class CourseResponseDTO implements Serializable {
    /**
     * 主键id
     */
    @ApiModelProperty(value = "主键id")
    @ChineseDescription("主键id")
    private Long id;
    /**
     * 课程/章节名称
     */
    @ApiModelProperty(value = "课程名称")
    @ChineseDescription("课程名称")
    private String courseName;
    /**
     * 课程标签id串,逗号拼接
     */
    @ApiModelProperty(value = "课程标签id串,逗号拼接")
    @ChineseDescription("课程标签id串,逗号拼接")
    private String courseTagIds;
    /**
     * 课程简介
     */
    @ApiModelProperty(value = "课程简介")
    @ChineseDescription("课程简介")
    private String courseIntroduction;
    /**
     * 课程有效期
     */
    @ApiModelProperty(value = "课程有效期")
    @ChineseDescription("课程有效期")
    private Integer courseValidity;
    /**
     * 价格
     */
    @ApiModelProperty(value = "价格")
    @ChineseDescription("价格")
    private BigDecimal price;
    /**
     * 原价
     */
    @ApiModelProperty(value = "原价")
    @ChineseDescription("原价")
    private BigDecimal originalPrice;
    /**
     * 课程封面图
     */
    @ApiModelProperty(value = "课程封面图")
    @ChineseDescription("课程封面图")
    private String coverPictureUrl;
    /**
     * 课程详细图
     */
    @ApiModelProperty(value = "课程详细图")
    @ChineseDescription("课程详细图")
    private String courseDetailUrl;
    /**
     * 课程详细内容
     */
    @ApiModelProperty(value = "课程详细内容")
    @ChineseDescription("课程详细内容")
    private String courseContent;
    /**
     * 总评分
     */
    @ApiModelProperty(value = "总评分")
    @ChineseDescription("总评分")
    private BigDecimal totalScore;
    /**
     * 上架状态 1-上架,2-下架
     */
    @ApiModelProperty(value = "章节集合")
    @ChineseDescription("章节集合")
    private List<CourseChapter> courseChapterList;
    @ApiModelProperty(value = "课程标签名称集合")
    @ChineseDescription("课程标签名称集合")
    private String courseTagNames;
    @ApiModelProperty(value = "是否已购买 true-是,false-否")
    @ChineseDescription("是否已购买 true-是,false-否")
    private Boolean isBuy = false;
    @ApiModelProperty(value = "已购买人数")
    @ChineseDescription("已购买人数")
    private Integer buyNum = 0;
    @ApiModelProperty(value = "课程订单id")
    @ChineseDescription("课程订单id")
    private Long courseOrderId ;
    @ApiModel("课程章节响应")
    @Data
    public static class CourseChapterResponseDTO extends CourseChapter {
        /**
         * 课程总时长 单位S
         */
        @ApiModelProperty(value = "课程总时长 单位S")
        @ChineseDescription("课程总时长 单位S")
        private Long totalTime;
        /**
         * 课程已学时长
         */
        @ApiModelProperty(value = "课程已学时长")
        @ChineseDescription("课程已学时长")
        private Long learnedTime;
        @ApiModelProperty(value = "已学时长显示")
        @ChineseDescription("已学时长显示")
        private String studyShowTime;
        @ApiModelProperty(value = "总时长展示")
        @ChineseDescription("总时长展示")
        private String totalShowTime;
        @ApiModelProperty(value = "学习状态 1-已学,0-未学")
        @ChineseDescription("学习状态 1-已学,0-未学")
        private Integer studyState = 0;
        @ApiModelProperty("学习百分比")
        private Integer studyPercent = 0;
        public Integer getStudyPercent() {
            if (getTotalTime() != null && getLearnedTime() != null){
                return (int)Math.ceil(getLearnedTime()*100f/getTotalTime());
            }
            return studyPercent;
        }
        public String getStudyShowTime() {
            if (this.learnedTime != null){
                int hour = (int) Math.floor(this.learnedTime.longValue() / 3600f);
                long minute = (int) Math.floor((this.learnedTime.longValue() % 3600l) / 60f);
                long sec = (this.learnedTime.longValue() % 3600l) % 60;
                return String.format("%02d",  hour)+":"+String.format("%02d",  minute)+":"+String.format("%02d",  sec);
            }
            return studyShowTime;
        }
        public String getTotalShowTime() {
            if (this.totalTime != null){
                int hour = (int) Math.floor(this.totalTime.longValue() / 3600f);
                long minute = (int) Math.floor((this.totalTime.longValue() % 3600l) / 60f);
                long sec = (this.totalTime.longValue() % 3600l) % 60;
                return String.format("%02d",  hour)+":"+String.format("%02d",  minute)+":"+String.format("%02d",  sec);
            }
            return totalShowTime;
        }
        public Integer getStudyState() {
            if (this.learnedTime != null){
                return 1;
            }
            return studyState;
        }
        @ApiModelProperty(value = "章节响应DTO子集")
        @ChineseDescription("章节响应DTO子集")
        private List<CourseChapterResponseDTO> childCourseChapterResponseDTOList;
        @ApiModelProperty(value = "最新一次学习位置")
        @ChineseDescription("最新一次学习位置")
        private Long lastStudyTime;
    }
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/CustomerImInfoDTO.java
New file
@@ -0,0 +1,35 @@
package cn.stylefeng.guns.modular.business.dto;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * 用户IM信息封装
 */
@Data
@ApiModel(value = "用户IM信息封装")
public class CustomerImInfoDTO {
    @ChineseDescription("主键id")
    private Long customerId;
    @ChineseDescription("昵称")
    private String nickName;
    @ChineseDescription("姓名")
    private String realName;
    @ChineseDescription("用户头像")
    private String avatar;
    @ApiModelProperty("IM通讯token")
    @ChineseDescription("IM通讯token")
    private String imToken;
    @ApiModelProperty("岗位ID串,逗号拼接")
    @ChineseDescription("岗位ID串,逗号拼接")
    private String postIds;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/ImEffectiveInfoDTO.java
New file
@@ -0,0 +1,60 @@
package cn.stylefeng.guns.modular.business.dto;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
@ApiModel("im有效期返回对象")
@Data
public class ImEffectiveInfoDTO implements Serializable {
    @ApiModelProperty(value = "群类型:1课程,2咨询")
    @ChineseDescription("群类型:1课程,2咨询")
    private Integer groupType;
    @ApiModelProperty(value = "业务订单id")
    @ChineseDescription("业务订单id")
    private Long orderId;
    @ApiModelProperty(value = "用户id,非工作人员的id")
    private Long userId;
    @ApiModelProperty(value = "有效结束时间")
    private Date effectiveEndTime;
    @ApiModelProperty(value = "有效开始时间")
    private Date effectiveBeginTime;
    @ApiModelProperty(value = "用户名称")
    private String nickName;
    @ApiModelProperty(value = "有效状态 1-有效,0-无效")
    private Integer effectiveState ;
    @ApiModelProperty(value = "剩余课时数")
    private Integer residueClassHours;
    @ApiModelProperty(value = "课时数")
    private Integer classHours;
    @ApiModelProperty(value = "联系电话")
    private String phone;
    public Integer getEffectiveState() {
        if (this.effectiveEndTime != null){
            Date nowDate = new Date();
            if (nowDate.getTime() >= this.effectiveEndTime.getTime()){
                return 0;
            }else{
                return 1;
            }
        }
        return effectiveState;
    }
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/ImGroupUserDto.java
New file
@@ -0,0 +1,33 @@
package cn.stylefeng.guns.modular.business.dto;
import cn.stylefeng.guns.modular.business.entity.ImGroupUser;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel(value = "群聊用户列表-响应参数")
public class ImGroupUserDto extends ImGroupUser {
    @ApiModelProperty(value = "昵称")
    @ChineseDescription("昵称")
    private String nickName;
    @ApiModelProperty("用户头像")
    @ChineseDescription("用户头像")
    private String avatar;
    @ApiModelProperty(value = "账号类型,0用户,1工作人员")
    @ChineseDescription("账号类型,0用户,1工作人员")
    private String userType;
    @ApiModelProperty(value = "IM通讯token")
    @ChineseDescription("IM通讯token")
    private String imToken;
    @ApiModelProperty(value = "岗位ID串")
    @ChineseDescription("岗位ID串")
    private String postIds;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/ImPushDataDTO.java
New file
@@ -0,0 +1,41 @@
package cn.stylefeng.guns.modular.business.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel(value = "IM推送数据")
public class ImPushDataDTO {
    @ApiModelProperty(value = "消息类型")
    private String type;
    @ApiModelProperty(value = "标题")
    private String title;
    @ApiModelProperty(value = "消息内容")
    private String content;
    @ApiModelProperty(value = "扩展消息")
    private String extra;
    @ApiModelProperty(value = "业务ID")
    private String objId;
    @ApiModelProperty(value = "预留字段1")
    private String data1;
    @ApiModelProperty(value = "预留字段2")
    private String data2;
    @ApiModelProperty(value = "预留字段3")
    private String data3;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/MentalAnalysisTimeConfigDetailDTO.java
New file
@@ -0,0 +1,37 @@
package cn.stylefeng.guns.modular.business.dto;
import cn.stylefeng.guns.modular.business.entity.MentalAnalysisTimeConfig;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel(value = "性格分析师时间配置详情-响应参数")
public class MentalAnalysisTimeConfigDetailDTO {
    @ApiModelProperty(value = "咨询师信息id")
    @ChineseDescription("咨询师信息id")
    private Long counsellingInfoId;
    @ApiModelProperty(value = "咨询师")
    @ChineseDescription("咨询师")
    private String counsellingInfoName;
    @ApiModelProperty(value = "性格分析时间配置列表")
    @ChineseDescription("性格分析时间配置列表")
    List<MentalAnalysisTimeConfig> timeConfigList;
    @ApiModelProperty(value = "性格分析时间配置dot列表")
    @ChineseDescription("性格分析时间配置dto列表")
    List<TimeConfigDTO> timeConfigDtoList;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/MentalAnalysisTimeConfigPageDTO.java
New file
@@ -0,0 +1,24 @@
package cn.stylefeng.guns.modular.business.dto;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel(value = "获取性格分析师配置-响应参数")
public class MentalAnalysisTimeConfigPageDTO {
    @ApiModelProperty(value = "咨询师信息id")
    @ChineseDescription("咨询师信息id")
    private Long counsellingInfoId;
    @ApiModelProperty(value = "用户")
    @ChineseDescription("用户")
    private String nickName;
    @ApiModelProperty(value = "性格分析师上下架状态:1上架,2下架,3无岗位")
    @ChineseDescription("性格分析师上下架状态:1上架,2下架,3无岗位")
    private Integer mentalAnalysisStatus;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/MentalAppointmentPageDTO.java
New file
@@ -0,0 +1,61 @@
package cn.stylefeng.guns.modular.business.dto;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
@Data
@ApiModel(value = "获取性格分析师配置-响应参数")
public class MentalAppointmentPageDTO {
    @ApiModelProperty(value = "预约ID")
    @ChineseDescription("预约ID")
    private Long id;
    @ApiModelProperty(value = "状态:0预约中,2服务中,3已完成,9已取消")
    @ChineseDescription("状态:0预约中,2服务中,3已完成,9已取消")
    private Integer statusFlag;
    @ApiModelProperty(value = "预约类型")
    @ChineseDescription("预约类型")
    private String type;
    @ApiModelProperty(value = "预约时间天(yyyy-MM-dd)")
    @ChineseDescription("预约时间天(yyyy-MM-dd)")
    private Date appointmentDay;
    @ApiModelProperty(value = "预约时间起(HH:mm)")
    @ChineseDescription("预约时间起(HH:mm)")
    private String beginTimePoint;
    @ApiModelProperty(value = "预约时间止(HH:mm)")
    @ChineseDescription("预约时间止(HH:mm)")
    private String endTimePoint;
    @ApiModelProperty(value = "咨询师ID")
    @ChineseDescription("咨询师ID")
    private Long workerId;
    @ApiModelProperty(value = "咨询师")
    @ChineseDescription("咨询师")
    private String workerNickName;
    @ApiModelProperty(value = "咨询师电话")
    @ChineseDescription("咨询师电话")
    private String workerTelephone;
    @ApiModelProperty(value = "用户ID")
    @ChineseDescription("用户ID")
    private Long userId;
    @ApiModelProperty(value = "姓名")
    @ChineseDescription("姓名")
    private String userNickName;
    @ApiModelProperty(value = "联系电话")
    @ChineseDescription("联系电话")
    private String userTelephone;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/MentalTestContentJsonDTO.java
New file
@@ -0,0 +1,30 @@
package cn.stylefeng.guns.modular.business.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
 * 心理测试结果json
 * @author goupan
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel(value = "ID名称-心理测试结果json")
public class MentalTestContentJsonDTO {
    @ApiModelProperty(value = "选项")
    private String itemNo;
    @ApiModelProperty(value = "选项名称")
    private String itemName;
    @ApiModelProperty(value = "分数")
    private Integer score;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/MentalTestMyMentalAppointmentDTO.java
New file
@@ -0,0 +1,17 @@
package cn.stylefeng.guns.modular.business.dto;
import cn.stylefeng.guns.modular.business.entity.MentalAppointment;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel(value = "我的性格分析预约-响应参数")
public class MentalTestMyMentalAppointmentDTO extends MentalAppointment {
    @ApiModelProperty(value = "咨询师姓名")
    @ChineseDescription("咨询师姓名")
    private String workerNickName;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/MentalTestMyTestOrderDTO.java
New file
@@ -0,0 +1,67 @@
package cn.stylefeng.guns.modular.business.dto;
import cn.stylefeng.guns.modular.business.entity.OrderMentalTest;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
@Data
@ApiModel(value = "我的测试(订单)-响应参数")
public class MentalTestMyTestOrderDTO extends OrderMentalTest {
    @ApiModelProperty(value = "题库ID")
    @ChineseDescription("题库ID")
    private Long topicId;
    @ApiModelProperty(value = "状态:1正常,2冻结")
    @ChineseDescription("状态:1正常,2冻结")
    private Integer topicStatus;
    @ApiModelProperty(value = "标题")
    @ChineseDescription("标题")
    private String title;
    @ApiModelProperty(value = "分类")
    @ChineseDescription("分类")
    private String classId;
    @ApiModelProperty(value = "简介")
    @ChineseDescription("简介")
    private String intro;
    @ApiModelProperty(value = "图片")
    @ChineseDescription("图片")
    private String image;
    @ApiModelProperty(value = "测试类型:0免费,1付费")
    @ChineseDescription("测试类型:0免费,1付费")
    private Integer testType;
    @ApiModelProperty(value = "测试费用")
    @ChineseDescription("测试费用")
    private BigDecimal testAmount;
    @ApiModelProperty(value = "咨询1V1,0无,1有")
    @ChineseDescription("咨询1V1,0无,1有")
    private Integer consultOne;
    @ApiModelProperty(value = "咨询费用")
    @ChineseDescription("咨询费用")
    private BigDecimal consultAmount;
    @ApiModelProperty(value = "是否购买")
    @ChineseDescription("是否购买")
    private boolean payFlag;
    @ApiModelProperty(value = "测试人数")
    @ChineseDescription("测试人数")
    private Integer testPeopleNum;
    @ApiModelProperty(value = "测试配置人数")
    @ChineseDescription("测试配置人数")
    private Integer testSetNum;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/MentalTestMyTestTopicDTO.java
New file
@@ -0,0 +1,71 @@
package cn.stylefeng.guns.modular.business.dto;
import cn.stylefeng.guns.modular.business.entity.MentalTestRecord;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
@Data
@ApiModel(value = "我的测试-响应参数")
public class MentalTestMyTestTopicDTO extends MentalTestRecord {
    @ApiModelProperty(value = "状态:1正常,2冻结")
    @ChineseDescription("状态:1正常,2冻结")
    private Integer topicStatus;
    @ApiModelProperty(value = "状态:1正常,2冻结")
    @ChineseDescription("状态:1正常,2冻结")
    private Integer statusFlag;
    @ApiModelProperty(value = "标题")
    @ChineseDescription("标题")
    private String title;
    @ApiModelProperty(value = "分类")
    @ChineseDescription("分类")
    private String classId;
    @ApiModelProperty(value = "简介")
    @ChineseDescription("简介")
    private String intro;
    @ApiModelProperty(value = "图片")
    @ChineseDescription("图片")
    private String image;
    @ApiModelProperty(value = "测试类型:0免费,1付费")
    @ChineseDescription("测试类型:0免费,1付费")
    private Integer testType;
    @ApiModelProperty(value = "测试费用")
    @ChineseDescription("测试费用")
    private BigDecimal testAmount;
    @ApiModelProperty(value = "咨询1V1,0无,1有")
    @ChineseDescription("咨询1V1,0无,1有")
    private Integer consultOne;
    @ApiModelProperty(value = "咨询费用")
    @ChineseDescription("咨询费用")
    private BigDecimal consultAmount;
    @ApiModelProperty(value = "是否测试")
    @ChineseDescription("是否测试")
    private boolean testFlag;
    @ApiModelProperty(value = "是否购买")
    @ChineseDescription("是否购买")
    private boolean payFlag;
    @ApiModelProperty(value = "测试人数")
    @ChineseDescription("测试人数")
    private Integer testPeopleNum;
    @ApiModelProperty(value = "测试配置人数")
    @ChineseDescription("测试配置人数")
    private Integer testSetNum;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/MentalTestQuestionOptionDTO.java
New file
@@ -0,0 +1,20 @@
package cn.stylefeng.guns.modular.business.dto;
import cn.stylefeng.guns.modular.business.entity.MentalTestOption;
import cn.stylefeng.guns.modular.business.entity.MentalTestQuestion;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
@Data
@ApiModel(value = "心理测试问题-响应参数")
public class MentalTestQuestionOptionDTO extends MentalTestQuestion {
    @ApiModelProperty(value = "心理测试问题选项")
    @ChineseDescription("心理测试问题选项")
    private List<MentalTestOption> optionList;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/MentalTestRecordPageDTO.java
New file
@@ -0,0 +1,21 @@
package cn.stylefeng.guns.modular.business.dto;
import cn.stylefeng.guns.modular.business.entity.MentalTestTopic;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel(value = "心理测试记录订单-响应参数")
public class MentalTestRecordPageDTO extends MentalTestTopic {
    @ApiModelProperty(value = "用户")
    @ChineseDescription("用户")
    private String nickName;
    @ApiModelProperty(value = "电话")
    @ChineseDescription("电话")
    private String telephone;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/MentalTestTopicAndRecordDTO.java
New file
@@ -0,0 +1,60 @@
package cn.stylefeng.guns.modular.business.dto;
import cn.stylefeng.guns.modular.business.entity.MentalTestRecord;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
@Data
@ApiModel(value = "我的测试记录-响应参数")
public class MentalTestTopicAndRecordDTO extends MentalTestRecord {
    @ApiModelProperty(value = "标题")
    @ChineseDescription("标题")
    private String title;
    @TableField("class_id")
    @ApiModelProperty(value = "分类")
    @ChineseDescription("分类")
    private String classId;
    @ApiModelProperty(value = "简介")
    @ChineseDescription("简介")
    private String intro;
    @ApiModelProperty(value = "图片")
    @ChineseDescription("图片")
    private String image;
    @ApiModelProperty(value = "测试类型:0免费,1付费")
    @ChineseDescription("测试类型:0免费,1付费")
    private Integer testType;
    @TableField("test_amount")
    @ApiModelProperty(value = "测试费用")
    @ChineseDescription("测试费用")
    private BigDecimal testAmount;
    @TableField("consult_one")
    @ApiModelProperty(value = "咨询1V1,0无,1有")
    @ChineseDescription("咨询1V1,0无,1有")
    private Integer consultOne;
    @TableField("consult_amount")
    @ApiModelProperty(value = "咨询费用")
    @ChineseDescription("咨询费用")
    private BigDecimal consultAmount;
    @ApiModelProperty(value = "是否后台创建")
    @ChineseDescription("是否后台创建")
    private Boolean isBack;
    @ApiModelProperty(value = "是否支付1v1咨询订单")
    @ChineseDescription("是否支付1v1咨询订单")
    private Boolean isPayOrderConsultOne;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/MentalTestTopicDTO.java
New file
@@ -0,0 +1,40 @@
package cn.stylefeng.guns.modular.business.dto;
import cn.stylefeng.guns.modular.business.entity.MentalTestResultSet;
import cn.stylefeng.guns.modular.business.entity.MentalTestTopic;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
@Data
@ApiModel(value = "心理测试详情-响应参数")
public class MentalTestTopicDTO extends MentalTestTopic {
    @ApiModelProperty(value = "测试人数")
    @ChineseDescription("测试人数")
    private Integer testPeopleNum;
    @ApiModelProperty(value = "是否测试")
    @ChineseDescription("是否测试")
    private boolean testFlag;
    @ApiModelProperty(value = "是否购买")
    @ChineseDescription("是否购买")
    private boolean payFlag;
    @ApiModelProperty(value = "测试题数")
    @ChineseDescription("测试题数")
    private Integer questionCount;
    @ApiModelProperty(value = "测试题目列表")
    @ChineseDescription("测试题目列表")
    private List<MentalTestQuestionOptionDTO> questionList;
    @ApiModelProperty(value = "结果区间配置列表")
    @ChineseDescription("结果区间配置列表")
    private List<MentalTestResultSet> resultSetList;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/MentalTestTopicPageDTO.java
New file
@@ -0,0 +1,23 @@
package cn.stylefeng.guns.modular.business.dto;
import cn.stylefeng.guns.modular.business.entity.MentalTestTopic;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
@Data
@ApiModel(value = "心理测试题库详情-响应参数")
public class MentalTestTopicPageDTO extends MentalTestTopic {
    @ApiModelProperty(value = "是否测试")
    @ChineseDescription("是否测试")
    private boolean testFlag;
    @ApiModelProperty(value = "测试结果记录ID列表")
    @ChineseDescription("测试结果记录ID列表")
    private List<Long> mentalTestRecordIdList;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/MyTotalResponseDTO.java
New file
@@ -0,0 +1,65 @@
package cn.stylefeng.guns.modular.business.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Map;
@ApiModel("我的统计信息")
@Data
public class MyTotalResponseDTO implements Serializable {
    @ApiModelProperty("今日数据-性格分析师")
    private Long todayNumP31;
    @ApiModelProperty("本月数据-性格分析师")
    private Long monthNumP31;
    @ApiModelProperty("订单数量-性格分析师")
    private Long orderNumP31;
    @ApiModelProperty("累计收益-性格分析师")
    private BigDecimal sumMoneyP31;
    @ApiModelProperty("今日新增培训群量")
    private Long todayGroupNum;
    @ApiModelProperty("本月新增培训群量")
    private Long monthGroupNum;
    @ApiModelProperty("订单数量")
    private Long orderNum;
    @ApiModelProperty("累计收益")
    private BigDecimal sumMoney;
    @ApiModelProperty("已完成咨询统计")
    private Long counsellingTotal;
    @ApiModelProperty("今日咨询课时")
    private Integer todayCounsellingHours;
    @ApiModelProperty("今日首次咨询数")
    private Long todayFirstCounsellingNum;
    @ApiModelProperty("本月咨询课时")
    private Integer monthCounsellingHours;
    @ApiModelProperty("本月首次咨询数")
    private Long monthFirstCounsellingNum;
    @ApiModelProperty("今日课程订单")
    private Long todayCourseOrderNum;
    @ApiModelProperty("本月课程订单")
    private Long monthCourseOrderNum;
    @ApiModelProperty("今日课程数据Map")
    private Map<String,Integer> todayCourseMap;
    @ApiModelProperty("本月课程数据Map")
    private Map<String,Integer> monthCourseMap;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/OrderMentalTestDetailDTO.java
New file
@@ -0,0 +1,45 @@
package cn.stylefeng.guns.modular.business.dto;
import cn.stylefeng.guns.modular.business.entity.MentalTestTopic;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel(value = "心理测试订单详情-响应")
public class OrderMentalTestDetailDTO extends MentalTestTopic {
    @ApiModelProperty(value = "订单编号")
    @ChineseDescription("订单编号")
    private String orderNo;
    @ApiModelProperty(value = "题库ID")
    @ChineseDescription("题库ID")
    private Long topicId;
    @ApiModelProperty(value = "结果计算方式:0得分,1选项,2测试")
    @ChineseDescription("结果计算方式:0得分,1选项,2测试")
    private Integer resultCalculateMode;
    @ApiModelProperty(value = "1v1咨询性格分析师")
    @ChineseDescription("1v1咨询性格分析师")
    private Long consultWorkerId;
    @ApiModelProperty(value = "1v1咨询性格分析师")
    @ChineseDescription("1v1咨询性格分析师")
    private String consultWorkerName;
    @ApiModelProperty(value = "分值")
    @ChineseDescription("分值")
    private Integer score;
    @ApiModelProperty(value = "结果描述")
    @ChineseDescription("结果描述")
    private String content;
    @ApiModelProperty(value = "是否支付1v1咨询订单")
    @ChineseDescription("是否支付1v1咨询订单")
    private Boolean isPayOrderConsultOne;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/OrderMentalTestPageDTO.java
New file
@@ -0,0 +1,37 @@
package cn.stylefeng.guns.modular.business.dto;
import cn.stylefeng.guns.modular.business.entity.MentalTestTopic;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel(value = "心理测试订单-响应参数")
public class OrderMentalTestPageDTO extends MentalTestTopic {
    @ApiModelProperty(value = "心理测试订单编号")
    @ChineseDescription("心理测试订单编号")
    private String orderNo;
    @ApiModelProperty(value = "题库ID")
    @ChineseDescription("题库ID")
    private Long topicId;
    @ApiModelProperty(value = "用户")
    @ChineseDescription("用户")
    private String nickName;
    @ApiModelProperty(value = "电话")
    @ChineseDescription("电话")
    private String telephone;
    @ApiModelProperty(value = "测试时间")
    @ChineseDescription("测试时间")
    private String testCreateTime;
    @ApiModelProperty(value = "是否支付1v1咨询订单")
    @ChineseDescription("是否支付1v1咨询订单")
    private Boolean isPayOrderConsultOne;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/PageDTO.java
New file
@@ -0,0 +1,20 @@
package cn.stylefeng.guns.modular.business.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * 分页数据
 * @author goupan
 */
@Data
@ApiModel(value = "分页数据-请求参数")
public class PageDTO {
    @ApiModelProperty(value = "当前页数")
    private Integer pageNo = 1 ;
    @ApiModelProperty(value = "分页条数")
    private Integer pageSize = 20;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/StatMentalTestDTO.java
New file
@@ -0,0 +1,41 @@
package cn.stylefeng.guns.modular.business.dto;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
import java.util.Map;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel(value = "心理测试订单统计数据-响应参数")
public class StatMentalTestDTO {
    @ApiModelProperty(value = "金额列表")
    @ChineseDescription("金额列表")
    private List<Map<String, Object>> moneyList;
    @ApiModelProperty(value = "总金额")
    @ChineseDescription("总金额")
    private Object moneySum;
    @ApiModelProperty(value = "数量列表")
    @ChineseDescription("数量列表")
    private List<Map<String, Object>> numberList;
    @ApiModelProperty(value = "总数量")
    @ChineseDescription("总数量")
    private Object numberSum;
    @ApiModelProperty(value = "用户购买数")
    @ChineseDescription("用户购买数")
    private Object userBuyCount;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/SysUserEditPostTipDTO.java
New file
@@ -0,0 +1,21 @@
package cn.stylefeng.guns.modular.business.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * 工作人员_编辑岗位提示
 * @author goupan
 */
@Data
@ApiModel(value = "工作人员_编辑岗位提示-响应参数")
public class SysUserEditPostTipDTO {
    @ApiModelProperty(value = "咨询师-是否配置")
    private boolean isSetPo22;
    @ApiModelProperty(value = "性格分析师-是否配置")
    private boolean isSetPo31;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/TimeConfigDTO.java
New file
@@ -0,0 +1,28 @@
package cn.stylefeng.guns.modular.business.dto;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
/**
 * @author guohongjin
 * @create 2024/2/6 17:02
 */
@Data
@ApiModel("预约时间配置")
public class TimeConfigDTO implements Serializable {
    @ApiModelProperty(value = "预约时间星期集合 1,2,3,4,5,6,7 1-星期一以此类推")
    @ChineseDescription("预约时间星期集合 1,2,3,4,5,6,7 1-星期一以此类推")
    private String weeks;
    /**
     * 时间配置集合11:00,12:00 等
     */
    @ApiModelProperty(value = "时间配置集合11:00-12:00,10:00-11:00 等")
    @ChineseDescription("时间配置集合11:00-12:00,10:00-11:00 等")
    private String timePoints;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/TotalResponseDTO.java
New file
@@ -0,0 +1,54 @@
package cn.stylefeng.guns.modular.business.dto;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
import java.util.Map;
@Data
@ApiModel("统计响应类")
public class TotalResponseDTO implements Serializable {
    @ApiModelProperty(value = "金额列表 data-数据,time-时间")
    @ChineseDescription("金额列表")
    private List<Map<String, Object>> moneyList;
    @ApiModelProperty(value = "总金额")
    @ChineseDescription("总金额")
    private Object moneySum;
    @ApiModelProperty(value = "数量列表 data-数据,time-时间")
    @ChineseDescription("数量列表 data-数据,time-时间")
    private List<Map<String, Object>> numberList;
    @ApiModelProperty(value = "总数量")
    @ChineseDescription("总数量")
    private Object numberSum;
    @ApiModelProperty(value = "用户购买数")
    @ChineseDescription("用户购买数")
    private Object userBuyCount;
    @ApiModelProperty(value = "课程销售数量 courseName-课程名称,number-数量")
    @ChineseDescription("课程销售数量")
    private List<Map<String, Object>> courseSaleNumberList;
    @ApiModelProperty("课程标签占比 tagName-标签名称,number-数量")
    @ChineseDescription("课程标签占比")
    private List<Map<String, Object>> courseTagsList;
    @ApiModelProperty("咨询数据统计-类型数量 type-类型,number-数量")
    @ChineseDescription("咨询数据统计-类型数量")
    private List<Map<String, Object>> counsellingTypeNumList;
    @ApiModelProperty("咨询数据统计-咨询师类型 type-类型,number-数量")
    @ChineseDescription("咨询数据统计-咨询师类型 type-类型,number-数量")
    private List<Map<String, Object>> counsellingInfoTypeList;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/UserCounsellingTotalDTO.java
New file
@@ -0,0 +1,20 @@
package cn.stylefeng.guns.modular.business.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
@ApiModel("用户课时统计")
@Data
public class UserCounsellingTotalDTO implements Serializable {
    @ApiModelProperty("总课时数")
    private Integer totalNum;
    @ApiModelProperty("未上课时数")
    private Integer residueClassHoursNum;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/UserCurrentNlwpDTO.java
New file
@@ -0,0 +1,59 @@
package cn.stylefeng.guns.modular.business.dto;
import cn.stylefeng.guns.modular.business.entity.MentalTestRecord;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
@Data
@ApiModel(value = "用户现状及NLWP-响应参数")
public class UserCurrentNlwpDTO {
    @ApiModelProperty("性别:M-男,F-女")
    @ChineseDescription("性别:M-男,F-女")
    private String sex;
    @ApiModelProperty("生日")
    @ChineseDescription("生日")
    private Date birthday;
    @ApiModelProperty("教育程度")
    @ChineseDescription("教育程度")
    private String educationLevel;
    @ApiModelProperty("职业")
    @ChineseDescription("职业")
    private String occupation;
    @ApiModelProperty("婚姻状况")
    @ChineseDescription("婚姻状况")
    private String marital;
    @ApiModelProperty("所在城市")
    @ChineseDescription("所在城市")
    private String cityCode;
    @ApiModelProperty("所在城市")
    @ChineseDescription("所在城市")
    private String cityCodeStr;
    @ApiModelProperty("收入")
    @ChineseDescription("收入")
    private String income;
    @ApiModelProperty("子女年龄")
    @ChineseDescription("子女年龄")
    private String childAge;
    @ApiModelProperty("现状备注")
    @ChineseDescription("现状备注")
    private String currentRemark;
    @ApiModelProperty("NLWP类型测试题结果")
    @ChineseDescription("NLWP类型测试题结果")
    private MentalTestRecord mentalTestRecord;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/UserMentalAppointmentPageResponseDTO.java
New file
@@ -0,0 +1,24 @@
package cn.stylefeng.guns.modular.business.dto;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel(value = "性格分析1v1咨询预约-响应参数")
public class UserMentalAppointmentPageResponseDTO {
    @ApiModelProperty(value = "用户")
    @ChineseDescription("用户")
    private String nickName;
    @ApiModelProperty(value = "电话")
    @ChineseDescription("电话")
    private String telephone;
    @ApiModelProperty(value = "测试时间")
    @ChineseDescription("测试时间")
    private String testCreateTime;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/request/BannerAddUpdateRequest.java
New file
@@ -0,0 +1,43 @@
package cn.stylefeng.guns.modular.business.dto.request;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@ApiModel("Banner添加编辑-请求参数")
@Data
public class BannerAddUpdateRequest {
    @ApiModelProperty(value = "主键")
    @ChineseDescription("主键")
    private Long id;
    @ApiModelProperty(value = "类型:1首页、2课程、3咨询")
    @ChineseDescription("类型:1首页、2课程、3咨询")
    private Integer type;
    @ApiModelProperty(value = "名称")
    @ChineseDescription("名称")
    private String name;
    @ApiModelProperty(value = "图片")
    @ChineseDescription("图片")
    private String image;
    @ApiModelProperty(value = "跳转模块:0不跳转,1心理测试,2课程,3咨询")
    @ChineseDescription("跳转模块:0不跳转,1心理测试,2课程,3咨询")
    private Integer jumpModule;
    @ApiModelProperty(value = "跳转页面,1主页,2详情页")
    @ChineseDescription("跳转页面,1主页,2详情页")
    private Integer jumpPage;
    @ApiModelProperty(value = "跳转ID")
    @ChineseDescription("跳转ID")
    private Long jumpId;
    @ApiModelProperty(value = "排序,默认desc")
    @ChineseDescription("排序,默认desc")
    private Integer sort;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/request/CounsellingOrderRequest.java
New file
@@ -0,0 +1,48 @@
package cn.stylefeng.guns.modular.business.dto.request;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import cn.stylefeng.roses.kernel.rule.pojo.request.BaseRequest;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
@ApiModel("咨询订单请求类")
@Data
public class CounsellingOrderRequest extends BaseRequest  {
    @ApiModelProperty("咨询师名称")
    private String counsellingName;
    @ApiModelProperty("用户姓名/客户姓名")
    private String userName;
    @ApiModelProperty("陪护教练名称")
    private String companionUserName;
    @ApiModelProperty("咨询顾问名称")
    private String consultantUserName;
    @ApiModelProperty("咨询电话")
    private String phone;
    @ApiModelProperty(value = "订单类型 1-首次咨询,2-咨询疗程,3-课程续费")
    private Integer orderType;
    @ApiModelProperty(value = "状态:0待支付,1已支付,2已完成,9取消,10退款")
    private Integer statusFlag;
    @ApiModelProperty(value = "用户id")
    private Long userId;
    @ApiModelProperty(value = "咨询师id")
    private Long counsellingInfoId;
    @ApiModelProperty(value = "工作人员id(工作人员管理端会使用)")
    private Long customerId;
    @ApiModelProperty(value = "查询类型 1-订单详细,2-预约信息,不给值默认1")
    private Integer searchType;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/request/CounsellingReservationRequest.java
New file
@@ -0,0 +1,31 @@
package cn.stylefeng.guns.modular.business.dto.request;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
@ApiModel("咨询预约")
@Data
public class CounsellingReservationRequest implements Serializable {
    @ApiModelProperty("预约时间日期 yyyy-MM-dd")
    private String dayTime;
    @ApiModelProperty("预约时间点 HH:mm-HH:mm")
    private String timePoint;
    @ApiModelProperty("预约订单id")
    private Long counsellingOrderId;
    @ApiModelProperty("用户信息对象")
    private CustomerUpdateRequest customerUpdateRequest;
    @ApiModelProperty("咨询师id")
    private Long counsellingId;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/request/CounsellingUserRequest.java
New file
@@ -0,0 +1,39 @@
package cn.stylefeng.guns.modular.business.dto.request;
import cn.stylefeng.roses.kernel.rule.pojo.request.BaseRequest;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@ApiModel("咨询师用户请求信息")
@Data
public class CounsellingUserRequest extends BaseRequest {
    @ApiModelProperty("咨询师名称")
    private String counsellingName;
    @ApiModelProperty("用户姓名/客户姓名")
    private String userName;
    @ApiModelProperty("陪护教练名称")
    private String companionUserName;
    @ApiModelProperty("咨询顾问名称")
    private String consultantUserName;
    @ApiModelProperty("咨询电话")
    private String phone;
    @ApiModelProperty(value = "用户id")
    private Long userId;
    @ApiModelProperty(value = "状态:0待支付,1已支付,2已完成,9取消,10退款")
    private Integer statusFlag;
    @ApiModelProperty("咨询师Id")
    private Long counsellingInfoId;
    @ApiModelProperty(value = "工作人员id(工作人员管理端会使用)")
    private Long customerId;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/request/CourseOrderRequest.java
New file
@@ -0,0 +1,44 @@
package cn.stylefeng.guns.modular.business.dto.request;
import cn.stylefeng.roses.kernel.rule.pojo.request.BaseRequest;
import cn.stylefeng.roses.kernel.validator.api.validators.date.DateValue;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
@ApiModel("课程订单请求")
@Data
public class CourseOrderRequest  extends BaseRequest {
    @ApiModelProperty("课程名称")
    private String courseName;
    @ApiModelProperty("用户姓名")
    private String userName;
    @ApiModelProperty("课程顾问名称")
    private String courseUserName;
    @ApiModelProperty("课程辅导名称")
    private String tutoringUserName;
    @ApiModelProperty("咨询电话")
    private String phone;
    @ApiModelProperty(value = "状态app端使用:0待支付,1已支付,2已过期,9取消,10退款")
    private Integer statusFlag;
    @ApiModelProperty("展示状态用于后台系统展示和查询:0待支付,1已完成,3已支付,9取消,10退款")
    private Integer showState;
    @ApiModelProperty(value = "用户id")
    private Long userId;
    @ApiModelProperty(value = "查询我的课程使用,传多个需要的状态值 使用,隔开 末尾不要,号")
    private String statuFlags;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/request/CoursePlaceOrderRequest.java
New file
@@ -0,0 +1,31 @@
package cn.stylefeng.guns.modular.business.dto.request;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
@ApiModel("课程下单DTO")
@Data
public class CoursePlaceOrderRequest implements Serializable {
    @ApiModelProperty("课程id")
    private Long courseId;
    @ApiModelProperty("用户id")
    private Long userId;
    @ApiModelProperty("是否后台创建 true-是,false-否")
    private Boolean isBack;
    @ApiModelProperty(value = "支付方式,1微信,2支付宝")
    @ChineseDescription("支付方式,1微信,2支付宝")
    private String payType;
    @ApiModelProperty(value = "联系电话")
    @ChineseDescription("联系电话")
    private String phone;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/request/CourseRequest.java
New file
@@ -0,0 +1,23 @@
package cn.stylefeng.guns.modular.business.dto.request;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import cn.stylefeng.roses.kernel.rule.pojo.request.BaseRequest;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@ApiModel("课程请求类")
@Data
public class CourseRequest  extends BaseRequest {
    @ApiModelProperty(value = "课程名称")
    @ChineseDescription("课程名称")
    private String courseName;
    @ApiModelProperty(value = "上架状态 1-上架,2-下架")
    @ChineseDescription("上架状态 1-上架,2-下架")
    private Integer listingStatus;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/request/CreateCounsellingOrderRequest.java
New file
@@ -0,0 +1,62 @@
package cn.stylefeng.guns.modular.business.dto.request;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
@ApiModel("咨询订单创建DTO")
@Data
public class CreateCounsellingOrderRequest implements Serializable {
    @ApiModelProperty(value = "用户id")
    private Long userId;
    @ApiModelProperty(value = "咨询师id")
    private Long counsellingInfoId;
    @ApiModelProperty(value = "订单类型 1-首次咨询,2-咨询疗程,3-课程续费")
    private Integer orderType;
    @ApiModelProperty(value = "咨询套餐id,首次咨询不用传值")
    private Long counsellingSetMealId;
    @ApiModelProperty("是否后台创建 true-是,false-否")
    private Boolean isBack;
    @ApiModelProperty(value = "支付方式,1微信,2支付宝")
    @ChineseDescription("支付方式,1微信,2支付宝")
    private String payType;
    /**
     * 订单金额
     */
    @ApiModelProperty(value = "订单金额")
    @ChineseDescription("订单金额")
    private BigDecimal orderAmount;
    /**
     * 支付金额
     */
    @ApiModelProperty(value = "支付金额")
    @ChineseDescription("支付金额")
    private BigDecimal payAmount;
    @ApiModelProperty("首次咨询预约日期")
    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
    private Date firstAppointmentDate;
    @ApiModelProperty("首次预约时间点 10:00-11:00")
    private String firstAppointmentTimes;
    @ApiModelProperty("用户信息对象")
    private CustomerUpdateRequest customerUpdateRequest;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/request/CreateOrderConsultOneRequest.java
New file
@@ -0,0 +1,76 @@
package cn.stylefeng.guns.modular.business.dto.request;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel(value = "1v1咨询性格分析师下单-请求参数")
public class CreateOrderConsultOneRequest {
    @ApiModelProperty(value = "用户ID")
    @ChineseDescription("用户ID")
    private Long userId;
    @ApiModelProperty(value = "心理测试结果ID")
    @ChineseDescription("心理测试结果ID")
    private Long mentalTestRecordId;
    @ApiModelProperty(value = "预约时间(yyyy-MM-dd)")
    @ChineseDescription("预约时间(yyyy-MM-dd)")
    private String appointmentDay;
    @ApiModelProperty(value = "预约时间段起(HH:mm)")
    @ChineseDescription("预约时间段起(HH:mm)")
    private String beginTimePoint;
    @ApiModelProperty(value = "预约时间段止(HH:mm)")
    @ChineseDescription("预约时间段止(HH:mm)")
    private String endTimePoint;
    @ApiModelProperty("姓名")
    @ChineseDescription("姓名")
    private String realName;
    @ApiModelProperty("联系电话")
    @ChineseDescription("联系电话")
    private String linkPhone;
    @ApiModelProperty("性别:M-男,F-女")
    @ChineseDescription("性别:M-男,F-女")
    private String sex;
    @ApiModelProperty("生日(yyyy-MM-dd)")
    @ChineseDescription("生日(yyyy-MM-dd)")
    private String birthday;
    @ApiModelProperty("教育程度")
    @ChineseDescription("教育程度")
    private String educationLevel;
    @ApiModelProperty("职业")
    @ChineseDescription("职业")
    private String occupation;
    @ApiModelProperty("婚姻状况")
    @ChineseDescription("婚姻状况")
    private String marital;
    @ApiModelProperty("所在城市")
    @ChineseDescription("所在城市")
    private String cityCode;
    @ApiModelProperty("收入")
    @ChineseDescription("收入")
    private String income;
    @ApiModelProperty("子女年龄")
    @ChineseDescription("子女年龄")
    private String childAge;
    @ApiModelProperty("现状备注")
    @ChineseDescription("现状备注")
    private String currentRemark;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/request/CreateOrderMentalTestRequest.java
New file
@@ -0,0 +1,20 @@
package cn.stylefeng.guns.modular.business.dto.request;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel(value = "心理测试下单-请求参数")
public class CreateOrderMentalTestRequest {
    @ApiModelProperty(value = "用户ID")
    @ChineseDescription("用户ID")
    private Long userId;
    @ApiModelProperty(value = "题库ID")
    @ChineseDescription("题库ID")
    private Long topicId;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/request/CustomerBindOpenIdRequest.java
New file
@@ -0,0 +1,16 @@
package cn.stylefeng.guns.modular.business.dto.request;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel(value = "绑定微信OpenId-请求参数")
public class CustomerBindOpenIdRequest {
    @ApiModelProperty(value = "微信OpenId")
    @ChineseDescription("微信OpenId")
    private String wxOpenId;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/request/CustomerPhoneLoginRequest.java
New file
@@ -0,0 +1,20 @@
package cn.stylefeng.guns.modular.business.dto.request;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel(value = "用户手机号登录-请求参数")
public class CustomerPhoneLoginRequest {
    @ApiModelProperty(value = "手机号")
    @ChineseDescription("手机号")
    private String phone;
    @ApiModelProperty(value = "32位小写md5(加密盐+手机号)")
    @ChineseDescription("32位小写md5(加密盐+手机号)")
    private String phoneMd5;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/request/CustomerUpdateRequest.java
New file
@@ -0,0 +1,81 @@
package cn.stylefeng.guns.modular.business.dto.request;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel(value = "修改用户信息-请求参数")
public class CustomerUpdateRequest {
    @ApiModelProperty("主键id")
    @ChineseDescription("主键id")
    private Long customerId;
    @ApiModelProperty("昵称")
    @ChineseDescription("昵称")
    private String nickName;
    @ApiModelProperty("邮箱")
    @ChineseDescription("邮箱")
    private String email;
    @ApiModelProperty("用户头像")
    @ChineseDescription("用户头像")
    private String avatar;
    @ApiModelProperty("用户头像的文件全名")
    @ChineseDescription("用户头像的文件全名")
    private String avatarObjectName;
    @ApiModelProperty("联系姓名")
    @ChineseDescription("联系姓名")
    private String realName;
    @ApiModelProperty(value = "联系电话")
    @ChineseDescription("联系电话")
    private String linkPhone;
    @ApiModelProperty("性别:M-男,F-女")
    @ChineseDescription("性别:M-男,F-女")
    private String sex;
    @ApiModelProperty("生日(yyyy-MM-dd)")
    @ChineseDescription("生日(yyyy-MM-dd)")
    private String birthday;
    @ApiModelProperty("教育程度")
    @ChineseDescription("教育程度")
    private String educationLevel;
    @ApiModelProperty("职业")
    @ChineseDescription("职业")
    private String occupation;
    @ApiModelProperty("婚姻状况")
    @ChineseDescription("婚姻状况")
    private String marital;
    @ApiModelProperty("所在城市")
    @ChineseDescription("所在城市")
    private String cityCode;
    @ApiModelProperty("城市地址名称")
    @ChineseDescription("城市地址名称")
    private String cityCodeStr;
    @ApiModelProperty("收入")
    @ChineseDescription("收入")
    private String income;
    @ApiModelProperty("子女年龄")
    @ChineseDescription("子女年龄")
    private String childAge;
    @ApiModelProperty("现状备注")
    @ChineseDescription("现状备注")
    private String currentRemark;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/request/CustomerWxOpenIdLoginRequest.java
New file
@@ -0,0 +1,20 @@
package cn.stylefeng.guns.modular.business.dto.request;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel(value = "微信OpenId登录-请求参数")
public class CustomerWxOpenIdLoginRequest {
    @ApiModelProperty(value = "微信OpenId", required = true)
    @ChineseDescription("微信OpenId")
    private String wxOpenId;
    @ApiModelProperty(value = "手机号")
    @ChineseDescription("手机号")
    private String phone;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/request/ImGroupUpdateRequest.java
New file
@@ -0,0 +1,24 @@
package cn.stylefeng.guns.modular.business.dto.request;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@ApiModel("群聊信息编辑-请求参数")
@Data
public class ImGroupUpdateRequest {
    @ApiModelProperty(value = "主键")
    @ChineseDescription("主键")
    private Long id;
    @ApiModelProperty(value = "群名")
    @ChineseDescription("群名")
    private String name;
    @ApiModelProperty(value = "简介")
    @ChineseDescription("简介")
    private String intro;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/request/ImTestMessageSendRequest.java
New file
@@ -0,0 +1,24 @@
package cn.stylefeng.guns.modular.business.dto.request;
import cn.stylefeng.guns.modular.business.dto.ImPushDataDTO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel("测试发送IM消息-请求参数")
public class ImTestMessageSendRequest {
    @ApiModelProperty(value = "消息类型,0系统通知,1单聊,2群聊")
    private Integer sendTpe;
    @ApiModelProperty(value = "发送方ID")
    private String fromUserId;
    @ApiModelProperty(value = "发送方ID")
    private String toId;
    @ApiModelProperty(value = "IM推送数据")
    private ImPushDataDTO pushData;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/request/MentalAnalysisSpecialTimeConfigDeleteRequest.java
New file
@@ -0,0 +1,20 @@
package cn.stylefeng.guns.modular.business.dto.request;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel("性格分析特殊时段删除-请求参数")
public class MentalAnalysisSpecialTimeConfigDeleteRequest {
    @ApiModelProperty(value = "咨询师信息id")
    @ChineseDescription("咨询师信息id")
    private Long counsellingInfoId;
    @ApiModelProperty(value = "特殊日期 yyyy-MM-dd")
    @ChineseDescription("特殊日期 yyyy-MM-dd")
    private String specialDay;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/request/MentalAnalysisSpecialTimeConfigEdit2Request.java
New file
@@ -0,0 +1,38 @@
package cn.stylefeng.guns.modular.business.dto.request;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
import java.util.List;
@Data
@ApiModel("性格分析特殊时段-请求参数")
public class MentalAnalysisSpecialTimeConfigEdit2Request {
    @ApiModelProperty(value = "咨询师信息id")
    @ChineseDescription("咨询师信息id")
    private Long counsellingInfoId;
    @ApiModelProperty(value = "特殊日期 yyyy-MM-dd")
    @ChineseDescription("特殊日期 yyyy-MM-dd")
    private String specialDay;
    @ApiModelProperty(value = "时间段列表(空设置取消当天)")
    @ChineseDescription("时间段列表(空设置取消当天)")
    private List<SpecialTimeConfig> specialTimeConfigList;
    @Data
    public static class SpecialTimeConfig {
        @ApiModelProperty(value = "特殊开始时间点 HH:mm")
        @ChineseDescription("特殊开始时间点 HH:mm")
        private String specialBeginTimePoint;
        @ApiModelProperty(value = "特殊结束时间点 HH:mm")
        @ChineseDescription("特殊结束时间点 HH:mm")
        private String specialEndTimePoint;
    }
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/request/MentalAnalysisSpecialTimeConfigEditRequest.java
New file
@@ -0,0 +1,38 @@
package cn.stylefeng.guns.modular.business.dto.request;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
@Data
@ApiModel("性格分析特殊时段-请求参数")
public class MentalAnalysisSpecialTimeConfigEditRequest {
    @ApiModelProperty(value = "主键id")
    @ChineseDescription("主键id")
    private Long id;
    @ApiModelProperty(value = "咨询师信息id")
    @ChineseDescription("咨询师信息id")
    private Long counsellingInfoId;
    @ApiModelProperty(value = "特殊日期 yyyy-MM-dd")
    @ChineseDescription("特殊日期 yyyy-MM-dd")
    private Date specialDay;
    @ApiModelProperty(value = "特殊开始时间点 HH:mm")
    @ChineseDescription("特殊开始时间点 HH:mm")
    private String specialBeginTimePoint;
    @ApiModelProperty(value = "特殊结束时间点 HH:mm")
    @ChineseDescription("特殊结束时间点 HH:mm")
    private String specialEndTimePoint;
    @ApiModelProperty(value = "是否取消当天 1-是 0-否")
    @ChineseDescription("是否取消当天 1-是 0-否")
    private Integer isCancelDay;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/request/MentalAnalysisTimeAddUpdateRequest.java
New file
@@ -0,0 +1,19 @@
package cn.stylefeng.guns.modular.business.dto.request;
import cn.stylefeng.guns.modular.business.dto.TimeConfigDTO;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
@ApiModel("性格分析师配置可预约时间新增修改-请求参数")
@Data
public class MentalAnalysisTimeAddUpdateRequest {
    @ApiModelProperty(value = "可预约时间配置集合")
    @ChineseDescription("可预约时间配置集合")
    private List<TimeConfigDTO> timeConfigDTOList;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/request/MentalAnalysisTimeConfigAddUpdateRequest.java
New file
@@ -0,0 +1,54 @@
package cn.stylefeng.guns.modular.business.dto.request;
import cn.stylefeng.guns.modular.business.dto.TimeConfigDTO;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
@ApiModel("性格分析师时间配置新增修改-请求参数")
@Data
public class MentalAnalysisTimeConfigAddUpdateRequest {
    @ApiModelProperty(value = "咨询师信息id")
    @ChineseDescription("咨询师信息id")
    private Long counsellingInfoId;
    @ApiModelProperty(value = "预约时间配置集合")
    @ChineseDescription("预约时间配置集合")
    private List<TimeConfigDTO> timeConfigDTOList;
//    @ApiModelProperty(value = "性格分析师配置")
//    @ChineseDescription("性格分析师配置")
//    private List<TimeConfigRequest> timeConfigList;
//
//    @Data
//    public static class TimeConfigRequest {
//        @ApiModelProperty(value = "主键id(编辑、删除必填)")
//        @ChineseDescription("主键id(编辑、删除必填)")
//        private Long id;
//
//        @ApiModelProperty(value = "模块编号")
//        @ChineseDescription("模块编号")
//        private String moduleNo;
//
//        @ApiModelProperty(value = "星期几")
//        @ChineseDescription("星期几")
//        private Integer weekDay;
//
//        @ApiModelProperty(value = "时间点 HH:mm")
//        @ChineseDescription("时间点 HH:mm")
//        private String beginTimePoint;
//
//        @ApiModelProperty(value = "结束时间点")
//        @ChineseDescription("结束时间点")
//        private String endTimePoint;
//
//        @ApiModelProperty(value = "删除状态(删除必填) 是否删除 1-是,0-否")
//        @ChineseDescription("删除状态(删除必填) 是否删除 1-是,0-否")
//        private Integer isDelete;
//    }
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/request/MentalAnalysisTimeEditRequest.java
New file
@@ -0,0 +1,36 @@
package cn.stylefeng.guns.modular.business.dto.request;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel("性格分析可预约时间编辑-请求参数")
public class MentalAnalysisTimeEditRequest {
    @ApiModelProperty(value = "ID(编辑必填)")
    @ChineseDescription("ID(编辑必填)")
    private Long id;
    @ApiModelProperty(value = "模块编号")
    @ChineseDescription("模块编号")
    private String moduleNo;
    @ApiModelProperty(value = "星期几")
    @ChineseDescription("星期几")
    private Integer weekDay;
    @ApiModelProperty(value = "时间点 HH:mm")
    @ChineseDescription("时间点 HH:mm")
    private String beginTimePoint;
    @ApiModelProperty(value = "结束时间点")
    @ChineseDescription("结束时间点")
    private String endTimePoint;
    @ApiModelProperty(value = "删除标记:1已删除,0未删除")
    @ChineseDescription("删除标记(删除必填):1已删除,0未删除")
    private Integer isDelete;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/request/MentalAppointmentAssignWorkRequest.java
New file
@@ -0,0 +1,24 @@
package cn.stylefeng.guns.modular.business.dto.request;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@ApiModel("性格分析师布置作业-请求参数")
@Data
public class MentalAppointmentAssignWorkRequest {
    @ApiModelProperty(value = "预约ID")
    @ChineseDescription("预约ID")
    private Long id;
    @ApiModelProperty(value = "作业内容")
    @ChineseDescription("作业内容")
    private String workContent;
    @ApiModelProperty(value = "作业图片")
    @ChineseDescription("作业图片")
    private String workImage;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/request/MentalAppointmentRecordRequest.java
New file
@@ -0,0 +1,24 @@
package cn.stylefeng.guns.modular.business.dto.request;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@ApiModel("性格分析师咨询记录内容-请求参数")
@Data
public class MentalAppointmentRecordRequest {
    @ApiModelProperty(value = "预约ID")
    @ChineseDescription("预约ID")
    private Long id;
    @ApiModelProperty(value = "记录内容")
    @ChineseDescription("记录内容")
    private String recordContent;
    @ApiModelProperty(value = "记录图片")
    @ChineseDescription("记录图片")
    private String recordImage;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/request/MentalTestAnswerSubmitRequest.java
New file
@@ -0,0 +1,41 @@
package cn.stylefeng.guns.modular.business.dto.request;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
@Data
@ApiModel(value = "心理测试答题提交-请求参数")
public class MentalTestAnswerSubmitRequest {
    @ApiModelProperty(value = "心理测试订单编号")
    @ChineseDescription("心理测试订单编号")
    private String mentalTestOrderNo;
    @ApiModelProperty(value = "用户ID")
    @ChineseDescription("用户ID")
    private Long userId;
    @ApiModelProperty(value = "题库ID")
    @ChineseDescription("题库ID")
    private Long topicId;
    @ApiModelProperty(value = "问题选项")
    @ChineseDescription("问题选项")
    private List<QuestionRequest> questionRequestsList;
    @Data
    public static class QuestionRequest {
        @ApiModelProperty(value = "问题ID")
        @ChineseDescription("问题ID")
        private Long questionId;
        @ApiModelProperty(value = "选项编号")
        @ChineseDescription("选项编号")
        private String itemNo;
    }
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/request/MentalTestTopicAddUpdateRequest.java
New file
@@ -0,0 +1,144 @@
package cn.stylefeng.guns.modular.business.dto.request;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.List;
@Data
@ApiModel("心理测试题添加编辑-请求")
public class MentalTestTopicAddUpdateRequest {
    @ApiModelProperty(value = "ID(编辑必填)")
    @ChineseDescription("ID(编辑必填)")
    private Long id;
    @ApiModelProperty(value = "分类")
    @ChineseDescription("分类")
    private String classId;
    @ApiModelProperty(value = "标题")
    @ChineseDescription("标题")
    private String title;
    @ApiModelProperty(value = "简介")
    @ChineseDescription("简介")
    private String intro;
    @ApiModelProperty(value = "图片")
    @ChineseDescription("图片")
    private String image;
    @ApiModelProperty(value = "测试类型:0免费,1付费")
    @ChineseDescription("测试类型:0免费,1付费")
    private Integer testType;
    @ApiModelProperty(value = "测试费用")
    @ChineseDescription("测试费用")
    private BigDecimal testAmount;
    @ApiModelProperty(value = "咨询1V1,0无,1有")
    @ChineseDescription("咨询1V1,0无,1有")
    private Integer consultOne;
    @ApiModelProperty(value = "咨询费用")
    @ChineseDescription("咨询费用")
    private BigDecimal consultAmount;
    @ApiModelProperty(value = "结果计算方式:0得分,1选项,2测试")
    @ChineseDescription("结果计算方式:0得分,1选项,2测试")
    private Integer resultCalculateMode;
    @ApiModelProperty(value = "测试配置人数")
    @ChineseDescription("测试配置人数")
    private Integer testSetNum;
    @ApiModelProperty(value = "测试问题")
    @ChineseDescription("测试问题")
    private List<QuestionRequest> questionList;
    @Data
    public static class QuestionRequest {
        @ApiModelProperty(value = "ID(编辑必填)")
        @ChineseDescription("ID(编辑必填)")
        private Long id;
        @ApiModelProperty(value = "删除标记:1已删除,0未删除")
        @ChineseDescription("删除标记:1已删除,0未删除")
        private Integer isDelete;
        @ApiModelProperty(value = "标题")
        @ChineseDescription("标题")
        private String title;
        @ApiModelProperty(value = "类型:1单选,2多选")
        @ChineseDescription("类型:1单选,2多选")
        private Integer type;
        @ApiModelProperty(value = "排序,默认asc")
        @ChineseDescription("排序,默认asc")
        private String itemNo;
        @ApiModelProperty(value = "测试问题选项")
        @ChineseDescription("测试问题选项")
        private List<OptionRequest> optionList;
        @Data
        public static class OptionRequest {
            @ApiModelProperty(value = "ID(编辑必填)")
            @ChineseDescription("ID(编辑必填)")
            private Long id;
            @ApiModelProperty(value = "删除标记:1已删除,0未删除")
            @ChineseDescription("删除标记:1已删除,0未删除")
            private Integer isDelete;
            @ApiModelProperty(value = "排序(ABCD/1234)")
            @ChineseDescription("排序(ABCD/1234)")
            private String itemNo;
            @ApiModelProperty(value = "分值")
            @ChineseDescription("分值")
            private Integer score;
            @ApiModelProperty(value = "选项内容")
            @ChineseDescription("选项内容")
            private String content;
        }
    }
    @ApiModelProperty(value = "结果区间配置")
    @ChineseDescription("结果区间配置")
    private List<ResultSetRequest> resultSetList;
    @Data
    public static class ResultSetRequest {
        @ApiModelProperty(value = "ID(编辑必填)")
        @ChineseDescription("ID(编辑必填)")
        private Long id;
        @ApiModelProperty(value = "最低分")
        @ChineseDescription("最低分")
        private Integer min;
        @ApiModelProperty(value = "最高分")
        @ChineseDescription("最高分")
        private Integer max;
        @ApiModelProperty(value = "选项编号")
        @ChineseDescription("选项编号")
        private String itemNo;
        @ApiModelProperty(value = "选项名称")
        @ChineseDescription("选项名称")
        private String itemName;
        @ApiModelProperty(value = "结果描述")
        @ChineseDescription("结果描述")
        private String content;
    }
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/request/OrderPayRequest.java
New file
@@ -0,0 +1,26 @@
package cn.stylefeng.guns.modular.business.dto.request;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
@ApiModel("订单支付回调")
@Data
public class OrderPayRequest implements Serializable {
    @ApiModelProperty("订单编号")
    private String orderNo;
    @ApiModelProperty("交易流水号")
    private String transactionNo;
    @ApiModelProperty(value = "订单类型 1-课程,2-咨询")
    private Integer orderType;
    @ApiModelProperty(value = "支付方式,1微信,2支付宝")
    @ChineseDescription("支付方式,1微信,2支付宝")
    private String payType;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/request/StoreAppointmentRequest.java
New file
@@ -0,0 +1,24 @@
package cn.stylefeng.guns.modular.business.dto.request;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel(value = "门店预约-请求参数")
public class StoreAppointmentRequest {
    @ApiModelProperty(value = "用户ID")
    @ChineseDescription("用户ID")
    private Long userId;
    @ApiModelProperty(value = "用户姓名")
    @ChineseDescription("用户姓名")
    private String userName;
    @ApiModelProperty(value = "联系电话")
    @ChineseDescription("联系电话")
    private String phone;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/request/SysRoleBindMenuButtonRequest.java
New file
@@ -0,0 +1,18 @@
package cn.stylefeng.guns.modular.business.dto.request;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
@ApiModel("角色绑定菜单按钮-请求参数")
@Data
public class SysRoleBindMenuButtonRequest {
    @ApiModelProperty(value = "角色ID")
    @ChineseDescription("角色ID")
    private List<Long> roleIdList;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/request/SysSmsSendParamRequest.java
New file
@@ -0,0 +1,17 @@
package cn.stylefeng.guns.modular.business.dto.request;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import cn.stylefeng.roses.kernel.sms.modular.param.SysSmsSendParam;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel("发送短信-请求参数")
public class SysSmsSendParamRequest extends SysSmsSendParam {
    @ApiModelProperty(value = "手机号")
    @ChineseDescription("手机号")
    private String phone;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/request/SysUserEditPwdRequest.java
New file
@@ -0,0 +1,23 @@
package cn.stylefeng.guns.modular.business.dto.request;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import cn.stylefeng.roses.kernel.sms.modular.param.SysSmsVerifyParam;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel("系统用户修改密码参数")
public class SysUserEditPwdRequest extends SysSmsVerifyParam {
    @ApiModelProperty("原密码")
    @ChineseDescription("原密码")
    private String password;
    @ApiModelProperty("新密码")
    @ChineseDescription("新密码")
    private String newPassword;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/request/SysUserPhoneLoginRequest.java
New file
@@ -0,0 +1,20 @@
package cn.stylefeng.guns.modular.business.dto.request;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel(value = "工作人员手机号登录-请求参数")
public class SysUserPhoneLoginRequest {
    @ApiModelProperty(value = "手机号")
    @ChineseDescription("手机号")
    private String phone;
    @ApiModelProperty(value = "32位小写md5(加密盐+手机号)")
    @ChineseDescription("32位小写md5(加密盐+手机号)")
    private String phoneMd5;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/request/SysUserResetPwdByIdRequest.java
New file
@@ -0,0 +1,22 @@
package cn.stylefeng.guns.modular.business.dto.request;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel("系统用户重置密码ById参数")
public class SysUserResetPwdByIdRequest {
    @ApiModelProperty("用户ID")
    @ChineseDescription("用户ID")
    private Long userId;
    @ApiModelProperty("新密码(为空手机号后6位)")
    @ChineseDescription("新密码(为空手机号后6位)")
    private String newPassword;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/request/SysUserResetPwdRequest.java
New file
@@ -0,0 +1,19 @@
package cn.stylefeng.guns.modular.business.dto.request;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import cn.stylefeng.roses.kernel.sms.modular.param.SysSmsVerifyParam;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel("系统用户重置密码参数")
public class SysUserResetPwdRequest extends SysSmsVerifyParam {
    @ApiModelProperty("新密码")
    @ChineseDescription("新密码")
    private String newPassword;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/request/SysUserUpdateRequest.java
New file
@@ -0,0 +1,36 @@
package cn.stylefeng.guns.modular.business.dto.request;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel(value = "修改工作人员信息-请求参数")
public class SysUserUpdateRequest {
    @ApiModelProperty("主键id")
    @ChineseDescription("主键id")
    private Long userId;
    @ApiModelProperty("昵称")
    @ChineseDescription("昵称")
    private String nickName;
    @ApiModelProperty("姓名")
    @ChineseDescription("姓名")
    private String realName;
    @ApiModelProperty("用户头像")
    @ChineseDescription("用户头像")
    private String avatar;
    @ApiModelProperty("生日(yyyy-MM-dd)")
    @ChineseDescription("生日(yyyy-MM-dd)")
    private String birthday;
    @ApiModelProperty("性别:M-男,F-女")
    @ChineseDescription("性别:M-男,F-女")
    private String sex;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/request/TotalRequest.java
New file
@@ -0,0 +1,29 @@
package cn.stylefeng.guns.modular.business.dto.request;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.expression.spel.ast.Literal;
import java.io.Serializable;
import java.util.List;
@Data
@ApiModel("报表统计查询")
public class TotalRequest implements Serializable {
    @ApiModelProperty("类型:1日,2周,3月,4年")
    private Integer type;
    @ApiModelProperty("开始时间")
    private String beginTime;
    @ApiModelProperty("结束时间")
    private String endTime;
    @ApiModelProperty("用户id")
    private Long userId;
    @ApiModelProperty("时间格式,前端不用传")
    private String dateFormat;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/request/UserCounsellingOrderReservationRequestDTO.java
New file
@@ -0,0 +1,24 @@
package cn.stylefeng.guns.modular.business.dto.request;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import cn.stylefeng.roses.kernel.rule.pojo.request.BasePageRequest;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@ApiModel(value = "用户预约记录-请求参数")
@Data
public class UserCounsellingOrderReservationRequestDTO extends BasePageRequest {
    @ApiModelProperty(value = "预约状态 1-待审批,2-待服务,3-服务中,4-已完成,5-已取消,6-已拒绝")
    @ChineseDescription("预约状态 1-待审批,2-待服务,3-服务中,4-已完成,5-已取消,6-已拒绝")
    private Integer stauts;
    @ApiModelProperty(value = "咨询师名称")
    @ChineseDescription("咨询师名称")
    private String counsellingInfoName;
    @ApiModelProperty(value = "用户id")
    @ChineseDescription("用户id")
    private Long customerId;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/entity/Area.java
New file
@@ -0,0 +1,84 @@
package cn.stylefeng.guns.modular.business.entity;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
 * <p>
 * 地区码表
 * </p>
 *
 * @author guohongjin
 * @since 2023-05-03
 */
@Data
@TableName("t_area")
@ApiModel(value = "地区码表")
public class Area {
    private static final long serialVersionUID = 1L;
    /**
     * 主键
     */
    @TableId(value="id", type = IdType.AUTO)
    @ApiModelProperty(value = "主键")
    @ChineseDescription("主键")
    private Integer id;
    /**
     * 父级
     */
    @ApiModelProperty(value = "父级")
    @ChineseDescription("父级")
    private Integer pid;
    /**
     * 名称
     */
    @ApiModelProperty(value = "名称")
    @ChineseDescription("名称")
    private String name;
    /**
     * 简称
     */
    @ApiModelProperty(value = "简称")
    @ChineseDescription("简称")
    private String shortname;
    /**
     * 经度
     */
    @ApiModelProperty(value = "经度")
    @ChineseDescription("经度")
    private String longitude;
    /**
     * 纬度
     */
    @ApiModelProperty(value = "纬度")
    @ChineseDescription("纬度")
    private String latitude;
    /**
     * 级别
     */
    @ApiModelProperty(value = "级别")
    @ChineseDescription("级别")
    private Integer level;
    /**
     * 排序
     */
    @ApiModelProperty(value = "排序")
    @ChineseDescription("排序")
    private Integer sort;
    @ApiModelProperty(value = "子级地域")
    @ChineseDescription("子级地域")
    @TableField(exist = false)
    private List<Area> childAreaList;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/entity/Banner.java
New file
@@ -0,0 +1,93 @@
package cn.stylefeng.guns.modular.business.entity;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * <p>
 * banner
 * </p>
 *
 * @author goupan
 * @since 2024-01-01
 */
@Data
@TableName("t_banner")
@ApiModel(value = "banner")
public class Banner {
    private static final long serialVersionUID = 1L;
    /**
     * 主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    @ApiModelProperty(value = "主键")
    @ChineseDescription("主键")
    private Long id;
    /**
     * 状态:1上架,2下架
     */
    @TableField("status_flag")
    @ApiModelProperty(value = "状态:1上架,2下架")
    @ChineseDescription("状态:1上架,2下架")
    private Integer statusFlag;
    /**
     * 删除标记:1已删除,0未删除
     */
    @TableField("is_delete")
    @ApiModelProperty(value = "删除标记:1已删除,0未删除")
    @ChineseDescription("删除标记:1已删除,0未删除")
    private Integer isDelete;
    /**
     * 类型:1首页、2课程、3咨询
     */
    @ApiModelProperty(value = "类型:1首页、2课程、3咨询")
    @ChineseDescription("类型:1首页、2课程、3咨询")
    private Integer type;
    /**
     * 名称
     */
    @ApiModelProperty(value = "名称")
    @ChineseDescription("名称")
    private String name;
    /**
     * 图片
     */
    @ApiModelProperty(value = "图片")
    @ChineseDescription("图片")
    private String image;
    /**
     * 跳转模块:0不跳转,1心理测试,2课程,3咨询
     */
    @TableField("jump_module")
    @ApiModelProperty(value = "跳转模块:0不跳转,1心理测试,2课程,3咨询")
    @ChineseDescription("跳转模块:0不跳转,1心理测试,2课程,3咨询")
    private Integer jumpModule;
    /**
     * 跳转页面,1主页,2详情页
     */
    @TableField("jump_page")
    @ApiModelProperty(value = "跳转页面,1主页,2详情页")
    @ChineseDescription("跳转页面,1主页,2详情页")
    private Integer jumpPage;
    /**
     * 跳转ID
     */
    @TableField("jump_id")
    @ApiModelProperty(value = "跳转ID")
    @ChineseDescription("跳转ID")
    private Long jumpId;
    /**
     * 排序,默认desc
     */
    @ApiModelProperty(value = "排序,默认desc")
    @ChineseDescription("排序,默认desc")
    private Integer sort;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/entity/ContractRecord.java
New file
@@ -0,0 +1,64 @@
package cn.stylefeng.guns.modular.business.entity;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
 * <p>
 * 合同签订记录
 * </p>
 *
 * @author goupan
 * @since 2024-01-01
 */
@Data
@TableName("t_contract_record")
@ApiModel(value = "合同签订记录")
public class ContractRecord {
    private static final long serialVersionUID = 1L;
    /**
     * 主键id
     */
    @TableId(value = "id", type = IdType.AUTO)
    @ApiModelProperty(value = "主键id")
    @ChineseDescription("主键id")
    private Long id;
    /**
     * 用户id
     */
    @TableField("user_id")
    @ApiModelProperty(value = "用户id")
    @ChineseDescription("用户id")
    private Long userId;
    /**
     * 合同内容
     */
    @TableField("contract_content")
    @ApiModelProperty(value = "合同内容")
    @ChineseDescription("合同内容")
    private String contractContent;
    /**
     * 签订时间
     */
    @TableField("signing_time")
    @ApiModelProperty(value = "签订时间")
    @ChineseDescription("签订时间")
    private Date signingTime;
    /**
     * 签字图片
     */
    @TableField("sign_url")
    @ApiModelProperty(value = "签字图片")
    @ChineseDescription("签字图片")
    private String signUrl;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/entity/CounsellingInfo.java
New file
@@ -0,0 +1,204 @@
package cn.stylefeng.guns.modular.business.entity;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import cn.stylefeng.guns.modular.business.dto.TimeConfigDTO;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
/**
 * <p>
 * 咨询师信息
 * </p>
 *
 * @author goupan
 * @since 2024-01-01
 */
@Data
@TableName("t_counselling_info")
@ApiModel(value = "咨询师信息")
public class CounsellingInfo {
    private static final long serialVersionUID = 1L;
    /**
     * 主键id
     */
    @TableId(value = "id", type = IdType.AUTO)
    @ApiModelProperty(value = "主键id")
    @ChineseDescription("主键id")
    private Long id;
    /**
     * 咨询师id
     */
    @TableField("user_id")
    @ApiModelProperty(value = "咨询师id")
    @ChineseDescription("咨询师id")
    private Long userId;
    /**
     * 咨询师类型 1-首席咨询师,2-明星咨询师
     */
    @TableField("counselling_type")
    @ApiModelProperty(value = "咨询师类型 1-首席咨询师,2-明星咨询师")
    @ChineseDescription("咨询师类型 1-首席咨询师,2-明星咨询师")
    private Integer counsellingType;
    /**
     * 擅长领域标签ids
     */
    @TableField("counselling_tag_ids")
    @ApiModelProperty(value = "擅长领域标签ids")
    @ChineseDescription("擅长领域标签ids")
    private String counsellingTagIds;
    /**
     * 资质简介
     */
    @TableField("qualification_introduction")
    @ApiModelProperty(value = "资质简介")
    @ChineseDescription("资质简介")
    private String qualificationIntroduction;
    /**
     * 首次咨询价格
     */
    @TableField("frist_price")
    @ApiModelProperty(value = "首次咨询价格")
    @ChineseDescription("首次咨询价格")
    private BigDecimal fristPrice;
    /**
     * 咨询师封面图url
     */
    @TableField("cover_image_url")
    @ApiModelProperty(value = "咨询师封面图url")
    @ChineseDescription("咨询师封面图url")
    private String coverImageUrl;
    /**
     * 咨询师详细图url
     */
    @TableField("detail_url")
    @ApiModelProperty(value = "咨询师详细图url")
    @ChineseDescription("咨询师详细图url")
    private String detailUrl;
    /**
     * 个人简介
     */
    @TableField("personal_profile")
    @ApiModelProperty(value = "个人简介")
    @ChineseDescription("个人简介")
    private String personalProfile;
    /**
     * 创建人
     */
    @TableField("create_user")
    @ApiModelProperty(value = "创建人")
    @ChineseDescription("创建人")
    private Long createUser;
    /**
     * 删除状态 是否删除 1-是,0-否
     */
    @TableField("is_delete")
    @ApiModelProperty(value = "删除状态 是否删除 1-是,0-否")
    @ChineseDescription("删除状态 是否删除 1-是,0-否")
    private Integer isDelete;
    /**
     * 创建时间
     */
    @TableField("create_time")
    @ApiModelProperty(value = "创建时间")
    @ChineseDescription("创建时间")
    private Date createTime;
    /**
     * 更新人
     */
    @TableField("update_user")
    @ApiModelProperty(value = "更新人")
    @ChineseDescription("更新人")
    private Long updateUser;
    /**
     * 更新时间
     */
    @TableField("update_time")
    @ApiModelProperty(value = "更新时间")
    @ChineseDescription("更新时间")
    private Date updateTime;
    /**
     * 总评分
     */
    @TableField("total_score")
    @ApiModelProperty(value = "总评分")
    @ChineseDescription("总评分")
    private BigDecimal totalScore;
    /**
     * 上架状态 1-上架,2-下架
     */
    @TableField("listing_status")
    @ApiModelProperty(value = "上架状态 1-上架,2-下架")
    @ChineseDescription("上架状态 1-上架,2-下架")
    private Integer listingStatus;
//    /**
//     * 预约时间星期集合 1,2,3,4,5,6,7 1-星期一以此类推
//     */
//    @ApiModelProperty(value = "预约时间星期集合 1,2,3,4,5,6,7 1-星期一以此类推")
//    @ChineseDescription("预约时间星期集合 1,2,3,4,5,6,7 1-星期一以此类推")
//    private String weeks;
//    /**
//     * 时间配置集合11:00,12:00 等
//     */
//    @TableField("time_points")
//    @ApiModelProperty(value = "时间配置集合11:00-12:00,10:00-11:00 等")
//    @ChineseDescription("时间配置集合11:00-12:00,10:00-11:00 等")
//    private String timePoints;
    @TableField(exist = false)
    @ApiModelProperty(value = "咨询师名称")
    @ChineseDescription("咨询师名称")
    private String userName;
    @TableField(exist = false)
    @ApiModelProperty(value = "咨询套餐信息")
    @ChineseDescription("咨询套餐信息")
    private List<CounsellingSetMeal> counsellingSetMealList;
    @TableField(exist = false)
    @ApiModelProperty(value = "擅长领域标签名称S")
    @ChineseDescription("擅长领域标签名称S")
    private String counsellingTagNames;
    @TableField("time_config")
    @ApiModelProperty(value = "预约时间配置")
    @ChineseDescription("预约时间配置")
    private String timeConfig;
    @TableField(exist = false)
    @ApiModelProperty(value = "预约时间配置集合")
    @ChineseDescription("预约时间配置集合")
    private List<TimeConfigDTO> timeConfigDTOList;
    public void setTimeConfigDTOList(List<TimeConfigDTO> timeConfigDTOList) {
        if (CollectionUtil.isNotEmpty(timeConfigDTOList)){
            this.timeConfig = JSONUtil.toJsonStr(timeConfigDTOList);
        }
        this.timeConfigDTOList = timeConfigDTOList;
    }
    public List<TimeConfigDTO> getTimeConfigDTOList() {
        if (StrUtil.isNotBlank(this.timeConfig)){
            return JSONUtil.toList(timeConfig,TimeConfigDTO.class);
        }
        return timeConfigDTOList;
    }
    @TableField("sort")
    @ApiModelProperty(value = "排序字段")
    private Integer sort;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/entity/CounsellingOrder.java
New file
@@ -0,0 +1,257 @@
package cn.stylefeng.guns.modular.business.entity;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import com.baomidou.mybatisplus.annotation.*;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
 * <p>
 * 咨询订单信息
 * </p>
 *
 * @author guohongjin
 * @since 2024-01-02
 */
@Data
@TableName("t_counselling_order")
@ApiModel(value = "咨询订单信息")
public class CounsellingOrder implements Serializable {
    private static final long serialVersionUID = 1L;
    /**
     * 主键id
     */
    @TableId(value = "id", type = IdType.AUTO)
    @ApiModelProperty(value = "主键id")
    @ChineseDescription("主键id")
    private Long id;
    /**
     * 咨询id
     */
    @TableField("counselling_info_id")
    @ApiModelProperty(value = "咨询id")
    @ChineseDescription("咨询id")
    private Long counsellingInfoId;
    /**
     * 用户id
     */
    @TableField("user_id")
    @ApiModelProperty(value = "用户id")
    @ChineseDescription("用户id")
    private Long userId;
    /**
     * 咨询顾问id
     */
    @TableField("consultant_user_id")
    @ApiModelProperty(value = "咨询顾问id")
    @ChineseDescription("咨询顾问id")
    private Long consultantUserId;
    /**
     * 陪护教练id
     */
    @TableField("companion_user_id")
    @ApiModelProperty(value = "陪护教练id")
    @ChineseDescription("陪护教练id")
    private Long companionUserId;
    /**
     * 订单类型 1-首次咨询,2-咨询疗程,3-课程续费
     */
    @TableField("order_type")
    @ApiModelProperty(value = "订单类型 1-首次咨询,2-咨询疗程,3-课程续费")
    @ChineseDescription("订单类型 1-首次咨询,2-咨询疗程,3-课程续费")
    private Integer orderType;
    /**
     * 联系电话
     */
    @ApiModelProperty(value = "联系电话")
    @ChineseDescription("联系电话")
    private String phone;
    /**
     * 有效开始时间
     */
    @TableField("effective_begin_time")
    @ApiModelProperty(value = "有效开始时间")
    @ChineseDescription("有效开始时间")
    private Date effectiveBeginTime;
    /**
     * 有效结束时间
     */
    @TableField("effective_end_time")
    @ApiModelProperty(value = "有效结束时间")
    @ChineseDescription("有效结束时间")
    private Date effectiveEndTime;
    /**
     * 咨询套餐id
     */
    @TableField("counselling_set_meal_id")
    @ApiModelProperty(value = "咨询套餐id")
    @ChineseDescription("咨询套餐id")
    private Long counsellingSetMealId;
    /**
     * 咨询套餐json
     */
    @TableField("set_meal_json")
    @ApiModelProperty(value = "咨询套餐json")
    @ChineseDescription("咨询套餐json")
    private String setMealJson;
    /**
     * 课时数
     */
    @TableField("class_hours")
    @ApiModelProperty(value = "课时数")
    @ChineseDescription("课时数")
    private Integer classHours;
    /**
     * 剩余课时数
     */
    @TableField("residue_class_hours")
    @ApiModelProperty(value = "剩余课时数")
    @ChineseDescription("剩余课时数")
    private Integer residueClassHours;
    /**
     * 个人信息
     */
    @TableField("user_info_json")
    @ApiModelProperty(value = "个人信息")
    @ChineseDescription("个人信息")
    private String userInfoJson;
    /**
     * 状态:0待支付,1已支付,2已完成,9取消,10退款
     */
    @TableField("status_flag")
    @ApiModelProperty(value = "状态:0待支付,1已支付,2已完成,9取消,10退款")
    @ChineseDescription("状态:0待支付,1已支付,2已完成,9取消,10退款")
    private Integer statusFlag;
    /**
     * 删除标记:1已删除,0未删除
     */
    @TableField("is_delete")
    @ApiModelProperty(value = "删除标记:1已删除,0未删除")
    @ChineseDescription("删除标记:1已删除,0未删除")
    private Integer isDelete;
    /**
     * 订单编号
     */
    @TableField("order_no")
    @ApiModelProperty(value = "订单编号")
    @ChineseDescription("订单编号")
    private String orderNo;
    /**
     * 订单金额
     */
    @TableField("order_amount")
    @ApiModelProperty(value = "订单金额")
    @ChineseDescription("订单金额")
    private BigDecimal orderAmount;
    /**
     * 支付金额
     */
    @TableField("pay_amount")
    @ApiModelProperty(value = "支付金额")
    @ChineseDescription("支付金额")
    private BigDecimal payAmount;
    /**
     * 支付时间
     */
    @TableField("pay_time")
    @ApiModelProperty(value = "支付时间")
    @ChineseDescription("支付时间")
    private Date payTime;
    /**
     * 支付方式,1微信,2支付宝
     */
    @TableField("pay_type")
    @ApiModelProperty(value = "支付方式,1微信,2支付宝")
    @ChineseDescription("支付方式,1微信,2支付宝")
    private String payType;
    /**
     * 交易号
     */
    @TableField("transaction_no")
    @ApiModelProperty(value = "交易号")
    @ChineseDescription("交易号")
    private String transactionNo;
    /**
     * 退款金额
     */
    @TableField("refund_amount")
    @ApiModelProperty(value = "退款金额")
    @ChineseDescription("退款金额")
    private BigDecimal refundAmount;
    /**
     * 退款时间
     */
    @TableField("refund_time")
    @ApiModelProperty(value = "退款时间")
    @ChineseDescription("退款时间")
    private Date refundTime;
    /**
     * 创建时间
     */
    @ApiModelProperty("创建时间")
    @TableField(value = "create_time", fill = FieldFill.INSERT)
    @ChineseDescription("创建时间")
    private Date createTime;
    /**
     * 创建人
     */
    @ApiModelProperty("创建人")
    @TableField(value = "create_user", fill = FieldFill.INSERT)
    @ChineseDescription("创建人")
    private Long createUser;
    /**
     * 更新时间
     */
    @ApiModelProperty("更新时间")
    @TableField(value = "update_time", fill = FieldFill.UPDATE)
    @ChineseDescription("更新时间")
    private Date updateTime;
    /**
     * 更新人
     */
    @ApiModelProperty("更新人")
    @TableField(value = "update_user", fill = FieldFill.UPDATE)
    @ChineseDescription("更新人")
    private Long updateUser;
    @TableField("first_appointment_date")
    @ApiModelProperty("首次咨询预约日期")
    private Date firstAppointmentDate;
    @TableField("first_appointment_times")
    @ApiModelProperty("首次预约时间点 10:00-11:00")
    private String firstAppointmentTimes;
    @TableField("cancel_time")
    @ApiModelProperty("取消时间")
    private Date cancelTime;
    @TableField("cancel_remark")
    @ApiModelProperty("取消说明")
    private String cancelRemark;
    @TableField(exist = false)
    @ApiModelProperty("套餐对象信息")
    private CounsellingSetMeal counsellingSetMeal;
    public CounsellingSetMeal getCounsellingSetMeal() {
        if (StrUtil.isNotBlank(this.setMealJson)){
            return JSONUtil.toBean(this.setMealJson,CounsellingSetMeal.class);
        }
        return counsellingSetMeal;
    }
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/entity/CounsellingOrderReservation.java
New file
@@ -0,0 +1,182 @@
package cn.stylefeng.guns.modular.business.entity;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import com.baomidou.mybatisplus.annotation.*;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
 * <p>
 * 咨询订单预约记录
 * </p>
 *
 * @author guohongjin
 * @since 2024-01-02
 */
@Data
@TableName("t_counselling_order_reservation")
@ApiModel(value = "咨询订单预约记录")
public class CounsellingOrderReservation implements Serializable {
    private static final long serialVersionUID = 1L;
    /**
     * 主键id
     */
    @TableId(value = "id", type = IdType.AUTO)
    @ApiModelProperty(value = "主键id")
    @ChineseDescription("主键id")
    private Long id;
    /**
     * 咨询id
     */
    @TableField("counselling_info_id")
    @ApiModelProperty(value = "咨询id")
    @ChineseDescription("咨询id")
    private Long counsellingInfoId;
    /**
     * 用户id
     */
    @TableField("user_id")
    @ApiModelProperty(value = "用户id")
    @ChineseDescription("用户id")
    private Long userId;
    /**
     * 咨询顾问id
     */
    @TableField("consultant_user_id")
    @ApiModelProperty(value = "咨询顾问id")
    @ChineseDescription("咨询顾问id")
    private Long consultantUserId;
    /**
     * 陪护教练id
     */
    @TableField("companion_user_id")
    @ApiModelProperty(value = "陪护教练id")
    @ChineseDescription("陪护教练id")
    private Long companionUserId;
    /**
     * 订单id
     */
    @TableField("counselling_order_id")
    @ApiModelProperty(value = "订单id")
    @ChineseDescription("订单id")
    private Long counsellingOrderId;
    /**
     * 预约开始时间点
     */
    @TableField("reservation_begin_time")
    @ApiModelProperty(value = "预约开始时间点")
    @ChineseDescription("预约开始时间点")
    private Date reservationBeginTime;
    /**
     * 预约结束时间点
     */
    @TableField("reservation_end_time")
    @ApiModelProperty(value = "预约结束时间点")
    @ChineseDescription("预约结束时间点")
    private Date reservationEndTime;
    /**
     * 预约状态 1-待审批,2-待服务,3-服务中,4-已完成,5-已取消,6-已拒绝
     */
    @ApiModelProperty(value = "预约状态 1-待审批,2-待服务,3-服务中,4-已完成,5-已取消,6-已拒绝")
    @ChineseDescription("预约状态 1-待审批,2-待服务,3-服务中,4-已完成,5-已取消,6-已拒绝")
    private Integer stauts;
    /**
     * 预约创建时间
     */
    @TableField("create_time")
    @ApiModelProperty(value = "预约创建时间")
    @ChineseDescription("预约创建时间")
    private Date createTime;
    /**
     * 服务开始时间
     */
    @TableField("service_begin_time")
    @ApiModelProperty(value = "服务开始时间")
    @ChineseDescription("服务开始时间")
    private Date serviceBeginTime;
    /**
     * 服务结束时间
     */
    @TableField("service_end_time")
    @ApiModelProperty(value = "服务结束时间")
    @ChineseDescription("服务结束时间")
    private Date serviceEndTime;
    /**
     * 服务审批时间
     */
    @TableField("service_approve_time")
    @ApiModelProperty(value = "服务审批时间")
    @ChineseDescription("服务审批时间")
    private Date serviceApproveTime;
    /**
     * 服务完成时间
     */
    @TableField("servie_complete_time")
    @ApiModelProperty(value = "服务完成时间")
    @ChineseDescription("服务完成时间")
    private Date servieCompleteTime;
    /**
     * 本次耗费课时数
     */
    @TableField("consume_course_hour")
    @ApiModelProperty(value = "本次耗费课时数")
    @ChineseDescription("本次耗费课时数")
    private Integer consumeCourseHour;
    @TableField("reservation_type")
    @ApiModelProperty(value = "预约类型 1-首次面诊,2-咨询疗程")
    @ChineseDescription("预约类型 1-首次面诊,2-咨询疗程")
    private Integer reservationType;
    /**
     * 更新时间
     */
    @ApiModelProperty("更新时间")
    @TableField(value = "update_time", fill = FieldFill.UPDATE)
    @ChineseDescription("更新时间")
    private Date updateTime;
    /**
     * 更新人
     */
    @ApiModelProperty("更新人")
    @TableField(value = "update_user", fill = FieldFill.UPDATE)
    @ChineseDescription("更新人")
    private Long updateUser;
    @TableField("remark")
    @ApiModelProperty("备注")
    @ChineseDescription("备注")
    private String remark;
    @TableField("cancle_reason")
    @ApiModelProperty("取消理由")
    @ChineseDescription("取消理由")
    private String cancleReason;
    @TableField(exist = false)
    @ApiModelProperty(value = "咨询师名称")
    @ChineseDescription("咨询师名称")
    private String counsellingInfoName;
    @TableField(exist = false)
    @ApiModelProperty(value = "用户名称")
    @ChineseDescription("用户名称")
    private String userName;
    @TableField(exist = false)
    @ApiModelProperty(value = "作业数量")
    @ChineseDescription("作业数量")
    private Long workNum;
    @TableField(exist = false)
    @ApiModelProperty(value = "联系电话")
    @ChineseDescription("联系电话")
    private String phone;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/entity/CounsellingReservationRecord.java
New file
@@ -0,0 +1,94 @@
package cn.stylefeng.guns.modular.business.entity;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import com.baomidou.mybatisplus.annotation.*;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
 * <p>
 * 咨询记录信息
 * </p>
 *
 * @author guohongjin
 * @since 2024-01-02
 */
@Data
@TableName("t_counselling_reservation_record")
@ApiModel(value = "咨询记录信息")
public class CounsellingReservationRecord {
    private static final long serialVersionUID = 1L;
    /**
     * 主键id
     */
    @TableId(value = "id", type = IdType.AUTO)
    @ApiModelProperty(value = "主键id")
    @ChineseDescription("主键id")
    private Long id;
    /**
     * 咨询订单预约id
     */
    @TableField("counselling_order_reservation_id")
    @ApiModelProperty(value = "咨询订单预约id")
    @ChineseDescription("咨询订单预约id")
    private Long counsellingOrderReservationId;
    /**
     * 内容
     */
    @ApiModelProperty(value = "内容")
    @ChineseDescription("内容")
    private String content;
    /**
     * 图片
     */
    @TableField("image_urls")
    @ApiModelProperty(value = "图片")
    @ChineseDescription("图片")
    private String imageUrls;
    /**
     * 删除状态 是否删除 1-是,0-否
     */
    @TableField("is_delete")
    @ApiModelProperty(value = "删除状态 是否删除 1-是,0-否")
    @ChineseDescription("删除状态 是否删除 1-是,0-否")
    private Integer isDelete;
    /**
     * 创建时间
     */
    @ApiModelProperty("创建时间")
    @TableField(value = "create_time", fill = FieldFill.INSERT)
    @ChineseDescription("创建时间")
    private Date createTime;
    /**
     * 创建人
     */
    @ApiModelProperty("创建人")
    @TableField(value = "create_user", fill = FieldFill.INSERT)
    @ChineseDescription("创建人")
    private Long createUser;
    /**
     * 更新时间
     */
    @ApiModelProperty("更新时间")
    @TableField(value = "update_time", fill = FieldFill.UPDATE)
    @ChineseDescription("更新时间")
    private Date updateTime;
    /**
     * 更新人
     */
    @ApiModelProperty("更新人")
    @TableField(value = "update_user", fill = FieldFill.UPDATE)
    @ChineseDescription("更新人")
    private Long updateUser;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/entity/CounsellingReservationWork.java
New file
@@ -0,0 +1,95 @@
package cn.stylefeng.guns.modular.business.entity;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import com.baomidou.mybatisplus.annotation.*;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
 * <p>
 * 咨询作业
 * </p>
 *
 * @author guohongjin
 * @since 2024-01-02
 */
@Data
@TableName("t_counselling_reservation_work")
@ApiModel(value = "咨询作业")
public class CounsellingReservationWork {
    private static final long serialVersionUID = 1L;
    /**
     * 主键id
     */
    @TableId(value = "id", type = IdType.AUTO)
    @ApiModelProperty(value = "主键id")
    @ChineseDescription("主键id")
    private Long id;
    /**
     * 咨询订单预约id
     */
    @TableField("counselling_order_reservation_id")
    @ApiModelProperty(value = "咨询订单预约id")
    @ChineseDescription("咨询订单预约id")
    private Long counsellingOrderReservationId;
    /**
     * 作业内容
     */
    @TableField("work_content")
    @ApiModelProperty(value = "作业内容")
    @ChineseDescription("作业内容")
    private String workContent;
    /**
     * 作业图片
     */
    @TableField("work_image_urls")
    @ApiModelProperty(value = "作业图片")
    @ChineseDescription("作业图片")
    private String workImageUrls;
    /**
     * 删除状态 是否删除 1-是,0-否
     */
    @TableField("is_delete")
    @ApiModelProperty(value = "删除状态 是否删除 1-是,0-否")
    @ChineseDescription("删除状态 是否删除 1-是,0-否")
    private Integer isDelete;
    /**
     * 创建时间
     */
    @ApiModelProperty("创建时间")
    @TableField(value = "create_time", fill = FieldFill.INSERT)
    @ChineseDescription("创建时间")
    private Date createTime;
    /**
     * 创建人
     */
    @ApiModelProperty("创建人")
    @TableField(value = "create_user", fill = FieldFill.INSERT)
    @ChineseDescription("创建人")
    private Long createUser;
    /**
     * 更新时间
     */
    @ApiModelProperty("更新时间")
    @TableField(value = "update_time", fill = FieldFill.UPDATE)
    @ChineseDescription("更新时间")
    private Date updateTime;
    /**
     * 更新人
     */
    @ApiModelProperty("更新人")
    @TableField(value = "update_user", fill = FieldFill.UPDATE)
    @ChineseDescription("更新人")
    private Long updateUser;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/entity/CounsellingSetMeal.java
New file
@@ -0,0 +1,102 @@
package cn.stylefeng.guns.modular.business.entity;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
/**
 * <p>
 * 咨询套餐信息
 * </p>
 *
 * @author goupan
 * @since 2024-01-01
 */
@Data
@TableName("t_counselling_set_meal")
@ApiModel(value = "咨询套餐信息")
public class CounsellingSetMeal {
    private static final long serialVersionUID = 1L;
    /**
     * 主键id
     */
    @TableId(value = "id", type = IdType.AUTO)
    @ApiModelProperty(value = "主键id")
    @ChineseDescription("主键id")
    private Long id;
    /**
     * 咨询师信息id
     */
    @TableField("counselling_info_id")
    @ApiModelProperty(value = "咨询师信息id")
    @ChineseDescription("咨询师信息id")
    private Long counsellingInfoId;
    /**
     * 套餐类型 1-咨询疗程,2-续课
     */
    @TableField("set_meal_type")
    @ApiModelProperty(value = "套餐类型 1-咨询疗程,2-续课")
    @ChineseDescription("套餐类型 1-咨询疗程,2-续课")
    private Integer setMealType;
    /**
     * 有效期
     */
    @TableField("period_validity")
    @ApiModelProperty(value = "有效期")
    @ChineseDescription("有效期")
    private Integer periodValidity;
    /**
     * 课时数
     */
    @TableField("class_hours")
    @ApiModelProperty(value = "课时数")
    @ChineseDescription("课时数")
    private Integer classHours;
    /**
     * 是否赠送陪护 1-是,0-否
     */
    @TableField("is_give")
    @ApiModelProperty(value = "是否赠送陪护 1-是,0-否")
    @ChineseDescription("是否赠送陪护 1-是,0-否")
    private Integer isGive;
    /**
     * 价格
     */
    @ApiModelProperty(value = "价格")
    @ChineseDescription("价格")
    private BigDecimal price;
    /**
     * 原价
     */
    @TableField("original_price")
    @ApiModelProperty(value = "原价")
    @ChineseDescription("原价")
    private BigDecimal originalPrice;
    @TableField("is_delete")
    @ApiModelProperty(value = "删除状态 是否删除 1-是,0-否")
    @ChineseDescription("删除状态 是否删除 1-是,0-否")
    private Integer isDelete;
    @TableField(exist = false)
    @ApiModelProperty(value = "有效期时间天")
    @ChineseDescription("有效期时间天")
    private Integer periodValidityDay;
    public Integer getPeriodValidityDay() {
        //咨询疗程
        if (this.setMealType != null && this.setMealType.intValue() ==1){
            return this.periodValidity*30;
        }
        return periodValidity;
    }
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/entity/CounsellingSpecialTimeConfig.java
New file
@@ -0,0 +1,71 @@
package cn.stylefeng.guns.modular.business.entity;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
 * <p>
 * 咨询预约特殊时间配置
 * </p>
 *
 * @author guohongjin
 * @since 2024-01-02
 */
@Data
@TableName("t_counselling_special_time_config")
@ApiModel(value = "咨询预约特殊时间配置")
public class CounsellingSpecialTimeConfig {
    private static final long serialVersionUID = 1L;
    /**
     * 主键id
     */
    @TableId(value = "id", type = IdType.AUTO)
    @ApiModelProperty(value = "主键id")
    @ChineseDescription("主键id")
    private Long id;
    /**
     * 咨询师信息id
     */
    @TableField("counselling_info_id")
    @ApiModelProperty(value = "咨询师信息id")
    @ChineseDescription("咨询师信息id")
    private Long counsellingInfoId;
    /**
     * 特殊日期 yyyy-MM-dd
     */
    @TableField("special_day")
    @ApiModelProperty(value = "特殊日期 yyyy-MM-dd")
    @ChineseDescription("特殊日期 yyyy-MM-dd")
    private Date specialDay;
    /**
     * 特殊开始时间点 HH:mm
     */
    @TableField("special_begin_time_point")
    @ApiModelProperty(value = "特殊开始时间点 HH:mm")
    @ChineseDescription("特殊开始时间点 HH:mm")
    private String specialBeginTimePoint;
    /**
     * 特殊结束时间点 HH:mm
     */
    @TableField("special_end_time_point")
    @ApiModelProperty(value = "特殊结束时间点 HH:mm")
    @ChineseDescription("特殊结束时间点 HH:mm")
    private String specialEndTimePoint;
    /**
     * 是否取消当天 1-是 0-否
     */
    @TableField("is_cancel_day")
    @ApiModelProperty(value = "是否取消当天 1-是 0-否")
    @ChineseDescription("是否取消当天 1-是 0-否")
    private Integer isCancelDay;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/entity/CounsellingTag.java
New file
@@ -0,0 +1,79 @@
package cn.stylefeng.guns.modular.business.entity;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import cn.stylefeng.roses.kernel.rule.pojo.request.BaseRequest;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
 * <p>
 * 咨询擅长领域标签表
 * </p>
 *
 * @author goupan
 * @since 2024-01-01
 */
@Data
@TableName("t_counselling_tag")
@ApiModel(value = "咨询擅长领域标签表")
public class CounsellingTag extends BaseRequest {
    private static final long serialVersionUID = 1L;
    /**
     * 主键id
     */
    @TableId(value = "id", type = IdType.AUTO)
    @ApiModelProperty(value = "主键id")
    @ChineseDescription("主键id")
    private Long id;
    /**
     * 标签名称
     */
    @TableField("tag_name")
    @ApiModelProperty(value = "标签名称")
    @ChineseDescription("标签名称")
    private String tagName;
    /**
     * 创建人
     */
    @TableField("create_user")
    @ApiModelProperty(value = "创建人")
    @ChineseDescription("创建人")
    private Long createUser;
    /**
     * 删除状态 是否删除 1-是,0-否
     */
    @TableField("is_delete")
    @ApiModelProperty(value = "删除状态 是否删除 1-是,0-否")
    @ChineseDescription("删除状态 是否删除 1-是,0-否")
    private Integer isDelete;
    /**
     * 创建时间
     */
    @TableField("create_time")
    @ApiModelProperty(value = "创建时间")
    @ChineseDescription("创建时间")
    private Date createTime;
    /**
     * 更新人
     */
    @TableField("update_user")
    @ApiModelProperty(value = "更新人")
    @ChineseDescription("更新人")
    private Long updateUser;
    /**
     * 更新时间
     */
    @TableField("update_time")
    @ApiModelProperty(value = "更新时间")
    @ChineseDescription("更新时间")
    private Date updateTime;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/entity/CounsellingTimeConfig.java
New file
@@ -0,0 +1,69 @@
package cn.stylefeng.guns.modular.business.entity;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * <p>
 * 咨询预约时间配置
 * </p>
 *
 * @author guohongjin
 * @since 2024-01-02
 */
@Data
@TableName("t_counselling_time_config")
@ApiModel(value = "咨询预约时间配置")
public class CounsellingTimeConfig {
    private static final long serialVersionUID = 1L;
    /**
     * 主键id
     */
    @TableId(value = "id", type = IdType.AUTO)
    @ApiModelProperty(value = "主键id")
    @ChineseDescription("主键id")
    private Long id;
    /**
     * 咨询师信息id
     */
    @TableField("counselling_info_id")
    @ApiModelProperty(value = "咨询师信息id")
    @ChineseDescription("咨询师信息id")
    private Long counsellingInfoId;
    /**
     * 模块编号
     */
    @TableField("module_no")
    @ApiModelProperty(value = "模块编号")
    @ChineseDescription("模块编号")
    private String moduleNo;
    /**
     * 星期几
     */
    @TableField("week_day")
    @ApiModelProperty(value = "星期几")
    @ChineseDescription("星期几")
    private Integer weekDay;
    /**
     * 时间点 HH:mm
     */
    @TableField("begin_time_point")
    @ApiModelProperty(value = "时间点 HH:mm")
    @ChineseDescription("时间点 HH:mm")
    private String beginTimePoint;
    /**
     * 结束时间点
     */
    @TableField("end_time_point")
    @ApiModelProperty(value = "结束时间点")
    @ChineseDescription("结束时间点")
    private String endTimePoint;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/entity/CounsellingUser.java
New file
@@ -0,0 +1,213 @@
package cn.stylefeng.guns.modular.business.entity;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import cn.stylefeng.guns.modular.business.dto.request.CustomerUpdateRequest;
import com.baomidou.mybatisplus.annotation.IdType;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import lombok.Data;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import cn.stylefeng.roses.kernel.db.api.pojo.entity.BaseEntity;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
/**
 * <p>
 * 用户咨询师课时信息
 * </p>
 *
 * @author guohongjin
 * @since 2024-02-29
 */
@Data
@TableName("t_counselling_user")
@ApiModel(value = "用户咨询师课时信息")
public class CounsellingUser {
    private static final long serialVersionUID = 1L;
    /**
     * 主键id
     */
    @TableId(value = "id", type = IdType.AUTO)
    @ApiModelProperty(value = "主键id")
    @ChineseDescription("主键id")
    private Long id;
    /**
     * 咨询id
     */
    @TableField("counselling_info_id")
    @ApiModelProperty(value = "咨询id")
    @ChineseDescription("咨询id")
    private Long counsellingInfoId;
    /**
     * 用户id
     */
    @TableField("user_id")
    @ApiModelProperty(value = "用户id")
    @ChineseDescription("用户id")
    private Long userId;
    /**
     * 咨询顾问id
     */
    @TableField("consultant_user_id")
    @ApiModelProperty(value = "咨询顾问id")
    @ChineseDescription("咨询顾问id")
    private Long consultantUserId;
    /**
     * 陪护教练id
     */
    @TableField("companion_user_id")
    @ApiModelProperty(value = "陪护教练id")
    @ChineseDescription("陪护教练id")
    private Long companionUserId;
    /**
     * 联系电话
     */
    @ApiModelProperty(value = "联系电话")
    @ChineseDescription("联系电话")
    private String phone;
    /**
     * 有效开始时间
     */
    @TableField("effective_begin_time")
    @ApiModelProperty(value = "有效开始时间")
    @ChineseDescription("有效开始时间")
    private Date effectiveBeginTime;
    /**
     * 有效结束时间
     */
    @TableField("effective_end_time")
    @ApiModelProperty(value = "有效结束时间")
    @ChineseDescription("有效结束时间")
    private Date effectiveEndTime;
    /**
     * 课时数
     */
    @TableField("class_hours")
    @ApiModelProperty(value = "课时数")
    @ChineseDescription("课时数")
    private Integer classHours;
    /**
     * 剩余课时数
     */
    @TableField("residue_class_hours")
    @ApiModelProperty(value = "剩余课时数")
    @ChineseDescription("剩余课时数")
    private Integer residueClassHours;
    /**
     * 个人信息
     */
    @TableField("user_info_json")
    @ApiModelProperty(value = "个人信息")
    @ChineseDescription("个人信息")
    private String userInfoJson;
    /**
     * 状态:0待支付,1已支付,2已完成,9取消,10退款
     */
    @TableField("status_flag")
    @ApiModelProperty(value = "状态:0待支付,1已支付,2已完成,9取消,10退款")
    @ChineseDescription("状态:0待支付,1已支付,2已完成,9取消,10退款")
    private Integer statusFlag;
    /**
     * 删除标记:1已删除,0未删除
     */
    @TableField("is_delete")
    @ApiModelProperty(value = "删除标记:1已删除,0未删除")
    @ChineseDescription("删除标记:1已删除,0未删除")
    private Integer isDelete;
    /**
     * 创建时间
     */
    @TableField("create_time")
    @ApiModelProperty(value = "创建时间")
    @ChineseDescription("创建时间")
    private Date createTime;
    /**
     * 创建人
     */
    @TableField("create_user")
    @ApiModelProperty(value = "创建人")
    @ChineseDescription("创建人")
    private Long createUser;
    /**
     * 更新人
     */
    @TableField("update_user")
    @ApiModelProperty(value = "更新人")
    @ChineseDescription("更新人")
    private Long updateUser;
    /**
     * 更新时间
     */
    @TableField("update_time")
    @ApiModelProperty(value = "更新时间")
    @ChineseDescription("更新时间")
    private Date updateTime;
    /**
     * 首次咨询预约日期
     */
    @TableField("first_appointment_date")
    @ApiModelProperty(value = "首次咨询预约日期")
    @ChineseDescription("首次咨询预约日期")
    private Date firstAppointmentDate;
    /**
     * 首次预约时间点 10:00-11:00
     */
    @TableField("first_appointment_times")
    @ApiModelProperty(value = "首次预约时间点 10:00-11:00")
    @ChineseDescription("首次预约时间点 10:00-11:00")
    private String firstAppointmentTimes;
    /**
     * 是否完成首次咨询 1-是,0-否
     */
    @TableField("is_first_appointment")
    @ApiModelProperty(value = "首次咨询预约状态 1-未预约首次咨询,2-已预约首次咨询,等待咨询,3-已完成首次预约咨询")
    @ChineseDescription("首次咨询预约状态 1-未预约首次咨询,2-已预约首次咨询,等待咨询,3-已完成首次预约咨询")
    private Integer isFirstAppointment;
    @TableField(exist = false)
    @ApiModelProperty("最近预约时间")
    private String lastTime;
    @TableField(exist = false)
    @ApiModelProperty("咨询师封面图url")
    private String coverImageUrl;
    @TableField(exist = false)
    @ApiModelProperty("上架状态 1-上架,2-下架")
    private Integer listingStatus;
    @TableField(exist = false)
    @ApiModelProperty("咨询师名称")
    private String counsellingName;
    @TableField(exist = false)
    @ApiModelProperty(value = "咨询师类型 1-首席咨询师,2-明星咨询师")
    @ChineseDescription("咨询师类型 1-首席咨询师,2-明星咨询师")
    private Integer counsellingType;
    @TableField(exist = false)
    @ApiModelProperty("现状用户信息")
    private CustomerUpdateRequest customerUpdateRequest;
    @ApiModelProperty("用户姓名")
    @TableField(exist = false)
    private String userName;
    @TableField("cancel_num")
    @ApiModelProperty("咨询预约取消次数")
    private Integer cancelNum;
    public CustomerUpdateRequest getCustomerUpdateRequest() {
        if (StrUtil.isNotBlank(this.getUserInfoJson())){
            return JSONUtil.toBean(this.getUserInfoJson(), CustomerUpdateRequest.class);
        }
        return customerUpdateRequest;
    }
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/entity/Course.java
New file
@@ -0,0 +1,185 @@
package cn.stylefeng.guns.modular.business.entity;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import cn.stylefeng.roses.kernel.rule.pojo.request.BaseRequest;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
/**
 * <p>
 * 课程管理
 * </p>
 *
 * @author goupan
 * @since 2024-01-01
 */
@Data
@TableName("t_course")
@ApiModel(value = "课程管理")
public class Course extends BaseRequest {
    private static final long serialVersionUID = 1L;
    /**
     * 主键id
     */
    @TableId(value = "id", type = IdType.AUTO)
    @ApiModelProperty(value = "主键id")
    @ChineseDescription("主键id")
    private Long id;
    /**
     * 课程/章节名称
     */
    @TableField("course_name")
    @ApiModelProperty(value = "课程名称")
    @ChineseDescription("课程名称")
    private String courseName;
    /**
     * 课程标签id串,逗号拼接
     */
    @TableField("course_tag_ids")
    @ApiModelProperty(value = "课程标签id串,逗号拼接")
    @ChineseDescription("课程标签id串,逗号拼接")
    private String courseTagIds;
    /**
     * 课程简介
     */
    @TableField("course_introduction")
    @ApiModelProperty(value = "课程简介")
    @ChineseDescription("课程简介")
    private String courseIntroduction;
    /**
     * 课程有效期
     */
    @TableField("course_validity")
    @ApiModelProperty(value = "课程有效期")
    @ChineseDescription("课程有效期")
    private Integer courseValidity;
    /**
     * 价格
     */
    @ApiModelProperty(value = "价格")
    @ChineseDescription("价格")
    private BigDecimal price;
    /**
     * 原价
     */
    @TableField("original_price")
    @ApiModelProperty(value = "原价")
    @ChineseDescription("原价")
    private BigDecimal originalPrice;
    /**
     * 课程封面图
     */
    @TableField("cover_picture_url")
    @ApiModelProperty(value = "课程封面图")
    @ChineseDescription("课程封面图")
    private String coverPictureUrl;
    /**
     * 创建人
     */
    @TableField("create_user")
    @ApiModelProperty(value = "创建人")
    @ChineseDescription("创建人")
    private Long createUser;
    /**
     * 删除状态 是否删除 1-是,0-否
     */
    @TableField("is_delete")
    @ApiModelProperty(value = "删除状态 是否删除 1-是,0-否")
    @ChineseDescription("删除状态 是否删除 1-是,0-否")
    private Integer isDelete;
    /**
     * 创建时间
     */
    @TableField("create_time")
    @ApiModelProperty(value = "创建时间")
    @ChineseDescription("创建时间")
    private Date createTime;
    /**
     * 更新人
     */
    @TableField("update_user")
    @ApiModelProperty(value = "更新人")
    @ChineseDescription("更新人")
    private Long updateUser;
    /**
     * 更新时间
     */
    @TableField("update_time")
    @ApiModelProperty(value = "更新时间")
    @ChineseDescription("更新时间")
    private Date updateTime;
    /**
     * 课程详细图
     */
    @TableField("course_detail_url")
    @ApiModelProperty(value = "课程详细图")
    @ChineseDescription("课程详细图")
    private String courseDetailUrl;
    /**
     * 课程详细内容
     */
    @TableField("course_content")
    @ApiModelProperty(value = "课程详细内容")
    @ChineseDescription("课程详细内容")
    private String courseContent;
    /**
     * 总评分
     */
    @TableField("total_score")
    @ApiModelProperty(value = "总评分")
    @ChineseDescription("总评分")
    private BigDecimal totalScore;
    /**
     * 上架状态 1-上架,2-下架
     */
    @TableField("listing_status")
    @ApiModelProperty(value = "上架状态 1-上架,2-下架")
    @ChineseDescription("上架状态 1-上架,2-下架")
    private Integer listingStatus;
    @TableField("total_time")
    @ApiModelProperty(value = "课程总时长")
    @ChineseDescription("课程总时长")
    private Long totalTime;
    @TableField("buy_num")
    @ApiModelProperty(value = "已购买人数")
    @ChineseDescription("已购买人数")
    private Integer buyNum;
    @TableField(exist = false)
    @ApiModelProperty(value = "章节集合")
    @ChineseDescription("章节集合")
    private List<CourseChapter> courseChapterList;
    @TableField(exist = false)
    @ApiModelProperty(value = "课程标签名称集合")
    @ChineseDescription("课程标签名称集合")
    private String courseTagNames;
    @TableField(exist = false)
    @ApiModelProperty(value = "课程内容信息(表格显示用)")
    @ChineseDescription("课程内容信息(表格显示用)")
    private String courseContentInfos;
    @TableField("sort")
    @ApiModelProperty(value = "排序字段")
    private Integer sort;
    @TableField(exist = false)
    @ApiModelProperty(value = "课程订单id")
    @ChineseDescription("课程订单id")
    private Long courseOrderId ;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/entity/CourseChapter.java
New file
@@ -0,0 +1,140 @@
package cn.stylefeng.guns.modular.business.entity;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
 * <p>
 * 章节管理
 * </p>
 *
 * @author goupan
 * @since 2024-01-01
 */
@Data
@TableName("t_course_chapter")
@ApiModel(value = "章节管理")
public class CourseChapter implements Serializable {
    private static final long serialVersionUID = 1L;
    /**
     * 主键id
     */
    @TableId(value = "id", type = IdType.AUTO)
    @ApiModelProperty(value = "主键id")
    @ChineseDescription("主键id")
    private Long id;
    /**
     * 课程id
     */
    @TableField("course_id")
    @ApiModelProperty(value = "课程id")
    @ChineseDescription("课程id")
    private Long courseId;
    /**
     * 章节名称
     */
    @TableField("chapter_name")
    @ApiModelProperty(value = "章节名称")
    @ChineseDescription("章节名称")
    private String chapterName;
    /**
     * 章节父级id 0-代表最高级
     */
    @TableField("parent_id")
    @ApiModelProperty(value = "章节父级id 0-代表最高级")
    @ChineseDescription("章节父级id 0-代表最高级")
    private Long parentId;
    /**
     * 视频名称
     */
    @TableField("video_name")
    @ApiModelProperty(value = "视频名称")
    @ChineseDescription("视频名称")
    private String videoName;
    /**
     * 视频地址
     */
    @TableField("video_url")
    @ApiModelProperty(value = "视频地址")
    @ChineseDescription("视频地址")
    private String videoUrl;
    /**
     * 创建人
     */
    @TableField("create_user")
    @ApiModelProperty(value = "创建人")
    @ChineseDescription("创建人")
    private Long createUser;
    /**
     * 删除状态 是否删除 1-是,0-否
     */
    @TableField("is_delete")
    @ApiModelProperty(value = "删除状态 是否删除 1-是,0-否")
    @ChineseDescription("删除状态 是否删除 1-是,0-否")
    private Integer isDelete;
    /**
     * 创建时间
     */
    @TableField("create_time")
    @ApiModelProperty(value = "创建时间")
    @ChineseDescription("创建时间")
    private Date createTime;
    /**
     * 更新人
     */
    @TableField("update_user")
    @ApiModelProperty(value = "更新人")
    @ChineseDescription("更新人")
    private Long updateUser;
    /**
     * 更新时间
     */
    @TableField("update_time")
    @ApiModelProperty(value = "更新时间")
    @ChineseDescription("更新时间")
    private Date updateTime;
    @TableField("minute_num")
    @ApiModelProperty(value = "分钟数")
    @ChineseDescription("分钟数")
    private Integer minuteNum;
    @TableField("second_num")
    @ApiModelProperty(value = "秒数")
    @ChineseDescription("秒数")
    private Integer secondNum;
    @TableField(exist = false)
    @ApiModelProperty(value = "章节子集")
    @ChineseDescription("章节子集")
    private List<CourseChapter> childList;
    @TableField(exist = false)
    @ApiModelProperty(value = "总秒数")
    @ChineseDescription("总秒数")
    private Integer totalSecondNum = 0;
    public Integer getTotalSecondNum() {
        if (this.minuteNum != null ){
            totalSecondNum = minuteNum *60;
        }
        if (this.secondNum != null){
            totalSecondNum = totalSecondNum +secondNum;
        }
        return totalSecondNum;
    }
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/entity/CourseOrder.java
New file
@@ -0,0 +1,228 @@
package cn.stylefeng.guns.modular.business.entity;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import com.baomidou.mybatisplus.annotation.*;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
/**
 * <p>
 * 课程订单信息
 * </p>
 *
 * @author guohongjin
 * @since 2024-01-02
 */
@Data
@TableName("t_course_order")
@ApiModel(value = "课程订单信息")
public class CourseOrder {
    private static final long serialVersionUID = 1L;
    /**
     * 主键id
     */
    @TableId(value = "id", type = IdType.AUTO)
    @ApiModelProperty(value = "主键id")
    @ChineseDescription("主键id")
    private Long id;
    /**
     * 课程id
     */
    @TableField("course_id")
    @ApiModelProperty(value = "课程id")
    @ChineseDescription("课程id")
    private Long courseId;
    /**
     * 用户id
     */
    @TableField("user_id")
    @ApiModelProperty(value = "用户id")
    @ChineseDescription("用户id")
    private Long userId;
    /**
     * 课程顾问id
     */
    @TableField("course_user_id")
    @ApiModelProperty(value = "课程顾问id")
    @ChineseDescription("课程顾问id")
    private Long courseUserId;
    /**
     * 课程辅导id
     */
    @TableField("tutoring_user_id")
    @ApiModelProperty(value = "课程辅导id")
    @ChineseDescription("课程辅导id")
    private Long tutoringUserId;
    /**
     * 联系电话
     */
    @ApiModelProperty(value = "联系电话")
    @ChineseDescription("联系电话")
    private String phone;
    /**
     * 课程有效开始时间
     */
    @TableField("effective_begin_time")
    @ApiModelProperty(value = "课程有效开始时间")
    @ChineseDescription("课程有效开始时间")
    private Date effectiveBeginTime;
    /**
     * 课程有效结束时间
     */
    @TableField("effective_end_time")
    @ApiModelProperty(value = "课程有效结束时间")
    @ChineseDescription("课程有效结束时间")
    private Date effectiveEndTime;
    /**
     * 课程总时长 单位S
     */
    @TableField("total_time")
    @ApiModelProperty(value = "课程总时长 单位S")
    @ChineseDescription("课程总时长 单位S")
    private Long totalTime;
    /**
     * 课程已学时长
     */
    @TableField("learned_time")
    @ApiModelProperty(value = "课程已学时长")
    @ChineseDescription("课程已学时长")
    private Long learnedTime;
    /**
     * 状态:0待支付,1已支付,2已过期,9取消,10退款
     */
    @TableField("status_flag")
    @ApiModelProperty(value = "状态:0待支付,1已支付,2已过期,9取消,10退款")
    @ChineseDescription("状态:0待支付,1已支付,2已过期,9取消,10退款")
    private Integer statusFlag;
    /**
     * 删除标记:1已删除,0未删除
     */
    @TableField("is_delete")
    @ApiModelProperty(value = "删除标记:1已删除,0未删除")
    @ChineseDescription("删除标记:1已删除,0未删除")
    private Integer isDelete;
    /**
     * 订单编号
     */
    @TableField("order_no")
    @ApiModelProperty(value = "订单编号")
    @ChineseDescription("订单编号")
    private String orderNo;
    /**
     * 订单金额
     */
    @TableField("order_amount")
    @ApiModelProperty(value = "订单金额")
    @ChineseDescription("订单金额")
    private BigDecimal orderAmount;
    /**
     * 支付金额
     */
    @TableField("pay_amount")
    @ApiModelProperty(value = "支付金额")
    @ChineseDescription("支付金额")
    private BigDecimal payAmount;
    /**
     * 支付时间
     */
    @TableField("pay_time")
    @ApiModelProperty(value = "支付时间")
    @ChineseDescription("支付时间")
    private Date payTime;
    /**
     * 支付方式,1微信,2支付宝
     */
    @TableField("pay_type")
    @ApiModelProperty(value = "支付方式,1微信,2支付宝")
    @ChineseDescription("支付方式,1微信,2支付宝")
    private String payType;
    /**
     * 交易号
     */
    @TableField("transaction_no")
    @ApiModelProperty(value = "交易号")
    @ChineseDescription("交易号")
    private String transactionNo;
    /**
     * 退款金额
     */
    @TableField("refund_amount")
    @ApiModelProperty(value = "退款金额")
    @ChineseDescription("退款金额")
    private BigDecimal refundAmount;
    /**
     * 退款时间
     */
    @TableField("refund_time")
    @ApiModelProperty(value = "退款时间")
    @ChineseDescription("退款时间")
    private Date refundTime;
    /**
     * 课程信息json
     */
    @TableField("course_json")
    @ApiModelProperty(value = "课程信息json")
    @ChineseDescription("课程信息json")
    private String courseJson;
    /**
     * 创建时间
     */
    @ApiModelProperty("创建时间")
    @TableField(value = "create_time", fill = FieldFill.INSERT)
    @ChineseDescription("创建时间")
    private Date createTime;
    /**
     * 创建人
     */
    @ApiModelProperty("创建人")
    @TableField(value = "create_user", fill = FieldFill.INSERT)
    @ChineseDescription("创建人")
    private Long createUser;
    /**
     * 更新时间
     */
    @ApiModelProperty("更新时间")
    @TableField(value = "update_time", fill = FieldFill.UPDATE)
    @ChineseDescription("更新时间")
    private Date updateTime;
    /**
     * 更新人
     */
    @ApiModelProperty("更新人")
    @TableField(value = "update_user", fill = FieldFill.UPDATE)
    @ChineseDescription("更新人")
    private Long updateUser;
    @TableField(exist = false)
    @ApiModelProperty("课程对象信息")
    @ChineseDescription("课程对象信息")
    private Course course;
    @TableField("cancel_time")
    @ApiModelProperty("取消时间")
    private Date cancelTime;
    @TableField("cancel_remark")
    @ApiModelProperty("取消说明")
    private String cancelRemark;
    public Course getCourse() {
        if (StrUtil.isNotBlank(this.courseJson)){
            return JSONUtil.toBean(this.courseJson,Course.class);
        }
        return course;
    }
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/entity/CourseStudyNote.java
New file
@@ -0,0 +1,72 @@
package cn.stylefeng.guns.modular.business.entity;
import cn.stylefeng.roses.kernel.db.api.pojo.entity.BaseEntity;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * <p>
 * 课程学习笔记
 * </p>
 *
 * @author guohongjin
 * @since 2024-01-02
 */
@Data
@TableName("t_course_study_note")
@ApiModel(value = "课程学习笔记")
public class CourseStudyNote extends BaseEntity {
    private static final long serialVersionUID = 1L;
    /**
     * 主键id
     */
    @TableId(value = "id", type = IdType.AUTO)
    @ApiModelProperty(value = "主键id")
    @ChineseDescription("主键id")
    private Long id;
    /**
     * 课程id
     */
    @TableField("course_id")
    @ApiModelProperty(value = "课程id")
    @ChineseDescription("课程id")
    private Long courseId;
    /**
     * 订单id
     */
    @TableField("course_order_id")
    @ApiModelProperty(value = "订单id")
    @ChineseDescription("订单id")
    private Long courseOrderId;
    /**
     * 用户id
     */
    @TableField("user_id")
    @ApiModelProperty(value = "用户id")
    @ChineseDescription("用户id")
    private Long userId;
    /**
     * 笔记内容
     */
    @TableField("note_content")
    @ApiModelProperty(value = "笔记内容")
    @ChineseDescription("笔记内容")
    private String noteContent;
    /**
     * 删除状态 是否删除 1-是,0-否
     */
    @TableField("is_delete")
    @ApiModelProperty(value = "删除状态 是否删除 1-是,0-否")
    @ChineseDescription("删除状态 是否删除 1-是,0-否")
    private Integer isDelete;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/entity/CourseTag.java
New file
@@ -0,0 +1,79 @@
package cn.stylefeng.guns.modular.business.entity;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import cn.stylefeng.roses.kernel.rule.pojo.request.BaseRequest;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
 * <p>
 * 课程标签
 * </p>
 *
 * @author goupan
 * @since 2024-01-01
 */
@Data
@TableName("t_course_tag")
@ApiModel(value = "课程标签")
public class CourseTag extends BaseRequest {
    private static final long serialVersionUID = 1L;
    /**
     * 主键id
     */
    @TableId(value = "id", type = IdType.AUTO)
    @ApiModelProperty(value = "主键id")
    @ChineseDescription("主键id")
    private Long id;
    /**
     * 标签名称
     */
    @TableField("tag_name")
    @ApiModelProperty(value = "标签名称")
    @ChineseDescription("标签名称")
    private String tagName;
    /**
     * 创建人
     */
    @TableField("create_user")
    @ApiModelProperty(value = "创建人")
    @ChineseDescription("创建人")
    private Long createUser;
    /**
     * 删除状态 是否删除 1-是,0-否
     */
    @TableField("is_delete")
    @ApiModelProperty(value = "删除状态 是否删除 1-是,0-否")
    @ChineseDescription("删除状态 是否删除 1-是,0-否")
    private Integer isDelete;
    /**
     * 创建时间
     */
    @TableField("create_time")
    @ApiModelProperty(value = "创建时间")
    @ChineseDescription("创建时间")
    private Date createTime;
    /**
     * 更新人
     */
    @TableField("update_user")
    @ApiModelProperty(value = "更新人")
    @ChineseDescription("更新人")
    private Long updateUser;
    /**
     * 更新时间
     */
    @TableField("update_time")
    @ApiModelProperty(value = "更新时间")
    @ChineseDescription("更新时间")
    private Date updateTime;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/entity/CourseUserLearned.java
New file
@@ -0,0 +1,99 @@
package cn.stylefeng.guns.modular.business.entity;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
 * <p>
 * 课程学习记录
 * </p>
 *
 * @author guohongjin
 * @since 2024-01-02
 */
@Data
@TableName("t_course_user_learned")
@ApiModel(value = "课程学习记录")
public class CourseUserLearned {
    private static final long serialVersionUID = 1L;
    /**
     * 主键id
     */
    @TableId(value = "id", type = IdType.AUTO)
    @ApiModelProperty(value = "主键id")
    @ChineseDescription("主键id")
    private Long id;
    /**
     * 课程id
     */
    @TableField("course_id")
    @ApiModelProperty(value = "课程id")
    @ChineseDescription("课程id")
    private Long courseId;
    /**
     * 章节id
     */
    @TableField("course_chapter_id")
    @ApiModelProperty(value = "章节id")
    @ChineseDescription("章节id")
    private Long courseChapterId;
    /**
     * 订单id
     */
    @TableField("course_order_id")
    @ApiModelProperty(value = "订单id")
    @ChineseDescription("订单id")
    private Long courseOrderId;
    /**
     * 用户id
     */
    @TableField("user_id")
    @ApiModelProperty(value = "用户id")
    @ChineseDescription("用户id")
    private Long userId;
    /**
     * 本次学习时长
     */
    @TableField("study_time")
    @ApiModelProperty(value = "本次学习时长")
    @ChineseDescription("本次学习时长")
    private Long studyTime;
    /**
     * 课程学习时长
     */
    @TableField("course_study_time")
    @ApiModelProperty(value = "课程学习时长")
    @ChineseDescription("课程学习时长")
    private Long courseStudyTime;
    /**
     * 学习开始时间
     */
    @TableField("begin_time")
    @ApiModelProperty(value = "学习开始时间")
    @ChineseDescription("学习开始时间")
    private Date beginTime;
    /**
     * 学习结束时间
     */
    @TableField("end_time")
    @ApiModelProperty(value = "学习结束时间")
    @ChineseDescription("学习结束时间")
    private Date endTime;
    /**
     * 更新时间
     */
    @TableField("update_time")
    @ApiModelProperty(value = "更新时间")
    @ChineseDescription("更新时间")
    private Date updateTime;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/entity/CouserChapterLearningRate.java
New file
@@ -0,0 +1,105 @@
package cn.stylefeng.guns.modular.business.entity;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
 * <p>
 * 课程章节学习进度
 * </p>
 *
 * @author guohongjin
 * @since 2024-01-02
 */
@Data
@TableName("t_couser_chapter_learning_rate")
@ApiModel(value = "课程章节学习进度")
public class CouserChapterLearningRate {
    private static final long serialVersionUID = 1L;
    /**
     * 主键id
     */
    @TableId(value = "id", type = IdType.AUTO)
    @ApiModelProperty(value = "主键id")
    @ChineseDescription("主键id")
    private Long id;
    /**
     * 课程id
     */
    @TableField("course_id")
    @ApiModelProperty(value = "课程id")
    @ChineseDescription("课程id")
    private Long courseId;
    /**
     * 章节id
     */
    @TableField("course_chapter_id")
    @ApiModelProperty(value = "章节id")
    @ChineseDescription("章节id")
    private Long courseChapterId;
    /**
     * 订单id
     */
    @TableField("course_order_id")
    @ApiModelProperty(value = "订单id")
    @ChineseDescription("订单id")
    private Long courseOrderId;
    /**
     * 用户id
     */
    @TableField("user_id")
    @ApiModelProperty(value = "用户id")
    @ChineseDescription("用户id")
    private Long userId;
    /**
     * 课程学习时长
     */
    @TableField("course_study_time")
    @ApiModelProperty(value = "课程学习时长 指代总共看课程的时长")
    @ChineseDescription("课程学习时长 指代总共看课程的时长")
    private Long courseStudyTime;
    /**
     * 更新时间
     */
    @TableField("update_time")
    @ApiModelProperty(value = "更新时间")
    @ChineseDescription("更新时间")
    private Date updateTime;
    /**
     * 学习状态 1-学习中,2-学习完成
     */
    @TableField("study_status")
    @ApiModelProperty(value = "学习状态 1-学习中,2-学习完成")
    @ChineseDescription("学习状态 1-学习中,2-学习完成")
    private Integer studyStatus;
    /**
     * 课程总时长 单位S
     */
    @TableField("total_time")
    @ApiModelProperty(value = "课程总时长 单位S")
    @ChineseDescription("课程总时长 单位S")
    private Long totalTime;
    /**
     * 课程已学时长
     */
    @TableField("learned_time")
    @ApiModelProperty(value = "课程已学时长")
    @ChineseDescription("课程已学时长")
    private Long learnedTime;
    @TableField("last_study_time")
    @ApiModelProperty(value = "最新一次学习位置")
    @ChineseDescription("最新一次学习位置")
    private Long lastStudyTime;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/entity/Help.java
New file
@@ -0,0 +1,83 @@
package cn.stylefeng.guns.modular.business.entity;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import cn.stylefeng.roses.kernel.rule.pojo.request.BaseRequest;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
 * <p>
 * 帮助
 * </p>
 *
 * @author goupan
 * @since 2024-01-01
 */
@Data
@TableName("t_help")
@ApiModel(value = "帮助")
public class Help extends BaseRequest {
    private static final long serialVersionUID = 1L;
    /**
     * 主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    @ApiModelProperty(value = "主键")
    @ChineseDescription("主键")
    private Long id;
    /**
     * 状态:1正常,2冻结
     */
    @TableField("status_flag")
    @ApiModelProperty(value = "状态:1正常,2冻结")
    @ChineseDescription("状态:1正常,2冻结")
    private Integer statusFlag;
    /**
     * 删除标记:1已删除,0未删除
     */
    @TableField("is_delete")
    @ApiModelProperty(value = "删除标记:1已删除,0未删除")
    @ChineseDescription("删除标记:1已删除,0未删除")
    private Integer isDelete;
    /**
     * 排序,默认desc
     */
    @ApiModelProperty(value = "排序,默认desc")
    @ChineseDescription("排序,默认desc")
    private Integer sort;
    /**
     * 创建时间
     */
    @TableField("create_time")
    @ApiModelProperty(value = "创建时间")
    @ChineseDescription("创建时间")
    private Date createTime;
    /**
     * 创建人
     */
    @TableField("create_user")
    @ApiModelProperty(value = "创建人")
    @ChineseDescription("创建人")
    private Long createUser;
    /**
     * 标题
     */
    @ApiModelProperty(value = "标题")
    @ChineseDescription("标题")
    private String title;
    /**
     * 内容
     */
    @ApiModelProperty(value = "内容")
    @ChineseDescription("内容")
    private String content;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/entity/ImGroup.java
New file
@@ -0,0 +1,120 @@
package cn.stylefeng.guns.modular.business.entity;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
 * <p>
 * 消息群信息
 * </p>
 *
 * @author goupan
 * @since 2024-01-01
 */
@Data
@TableName("im_group")
@ApiModel(value = "消息群信息")
public class ImGroup {
    private static final long serialVersionUID = 1L;
    /**
     * 主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    @ApiModelProperty(value = "主键")
    @ChineseDescription("主键")
    private Long id;
    /**
     * 状态:1正常,2冻结
     */
    @TableField("status_flag")
    @ApiModelProperty(value = "状态:1正常,2冻结")
    @ChineseDescription("状态:1正常,2冻结")
    private Integer statusFlag;
    /**
     * 删除标记:1已删除,0未删除
     */
    @TableField("is_delete")
    @ApiModelProperty(value = "删除标记:1已删除,0未删除")
    @ChineseDescription("删除标记:1已删除,0未删除")
    private Integer isDelete;
    /**
     * 排序,默认desc
     */
    @ApiModelProperty(value = "排序,默认desc")
    @ChineseDescription("排序,默认desc")
    private Integer sort;
    /**
     * 创建时间
     */
    @TableField("create_time")
    @ApiModelProperty(value = "创建时间")
    @ChineseDescription("创建时间")
    private Date createTime;
    /**
     * 创建人
     */
    @TableField("create_user")
    @ApiModelProperty(value = "创建人")
    @ChineseDescription("创建人")
    private Long createUser;
    /**
     * 更新时间
     */
    @TableField("update_time")
    @ApiModelProperty(value = "更新时间")
    @ChineseDescription("更新时间")
    private Date updateTime;
    /**
     * 更新人
     */
    @TableField("update_user")
    @ApiModelProperty(value = "更新人")
    @ChineseDescription("更新人")
    private Long updateUser;
    /**
     * 群名
     */
    @ApiModelProperty(value = "群名")
    @ChineseDescription("群名")
    private String name;
    /**
     * 简介
     */
    @ApiModelProperty(value = "简介")
    @ChineseDescription("简介")
    private String intro;
    /**
     * 解散日期
     */
    @TableField("disband_date")
    @ApiModelProperty(value = "解散日期")
    @ChineseDescription("解散日期")
    private Date disbandDate;
    /**
     * 群类型:1课程,2咨询
     */
    @TableField("group_type")
    @ApiModelProperty(value = "群类型:1课程,2咨询")
    @ChineseDescription("群类型:1课程,2咨询")
    private Integer groupType;
    @TableField("order_id")
    @ApiModelProperty(value = "业务订单id")
    @ChineseDescription("业务订单id")
    private Long orderId;
    @TableField("last_chat_time")
    @ApiModelProperty(value = "最近聊天时间")
    @ChineseDescription("最近聊天时间")
    private Date lastChatTime;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/entity/ImGroupUser.java
New file
@@ -0,0 +1,84 @@
package cn.stylefeng.guns.modular.business.entity;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
 * <p>
 * 消息群用户
 * </p>
 *
 * @author goupan
 * @since 2024-01-01
 */
@Data
@TableName("im_group_user")
@ApiModel(value = "消息群用户")
public class ImGroupUser {
    private static final long serialVersionUID = 1L;
    /**
     * 主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    @ApiModelProperty(value = "主键")
    @ChineseDescription("主键")
    private Long id;
    /**
     * 删除标记:1已删除,0未删除
     */
    @TableField("is_delete")
    @ApiModelProperty(value = "删除标记:1已删除,0未删除")
    @ChineseDescription("删除标记:1已删除,0未删除")
    private Integer isDelete;
    /**
     * 排序,默认desc
     */
    @ApiModelProperty(value = "排序,默认desc")
    @ChineseDescription("排序,默认desc")
    private Integer sort;
    /**
     * 创建时间
     */
    @TableField("create_time")
    @ApiModelProperty(value = "创建时间")
    @ChineseDescription("创建时间")
    private Date createTime;
    /**
     * 用户ID
     */
    @TableField("user_id")
    @ApiModelProperty(value = "用户ID")
    @ChineseDescription("用户ID")
    private Long userId;
    /**
     * 用户岗位
     */
    @TableField("user_post")
    @ApiModelProperty(value = "用户岗位")
    @ChineseDescription("用户岗位")
    private Long userPost;
    /**
     * 群ID
     */
    @TableField("group_id")
    @ApiModelProperty(value = "群ID")
    @ChineseDescription("群ID")
    private Long groupId;
    /**
     * 群别名
     */
    @TableField("group_alias")
    @ApiModelProperty(value = "群别名")
    @ChineseDescription("群别名")
    private String groupAlias;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/entity/ImNotice.java
New file
@@ -0,0 +1,116 @@
package cn.stylefeng.guns.modular.business.entity;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
/**
 * <p>
 * 消息通知
 * </p>
 *
 * @author goupan
 * @since 2024-01-01
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@TableName("im_notice")
@ApiModel(value = "消息通知")
public class ImNotice {
    private static final long serialVersionUID = 1L;
    /**
     * 主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    @ApiModelProperty(value = "主键")
    @ChineseDescription("主键")
    private Long id;
    /**
     * 删除标记:1已删除,0未删除
     */
    @TableField("is_delete")
    @ApiModelProperty(value = "删除标记:1已删除,0未删除")
    @ChineseDescription("删除标记:1已删除,0未删除")
    private Integer isDelete;
    /**
     * 创建时间
     */
    @TableField("create_time")
    @ApiModelProperty(value = "创建时间")
    @ChineseDescription("创建时间")
    private Date createTime;
    /**
     * 用户类型:1用户,2工作人员
     */
    @TableField("user_type")
    @ApiModelProperty(value = "用户类型:1用户,2工作人员")
    @ChineseDescription("用户类型:1用户,2工作人员")
    private Integer userType;
    /**
     * 岗位ID
     */
    @TableField("post_id")
    @ApiModelProperty(value = "岗位ID")
    @ChineseDescription("岗位ID")
    private Integer postId;
    /**
     * 用户ID
     */
    @TableField("user_id")
    @ApiModelProperty(value = "用户ID")
    @ChineseDescription("用户ID")
    private Long userId;
    /**
     * 业务类型ImPushTypeEnum
     */
    @ApiModelProperty(value = "业务类型ImPushTypeEnum")
    @ChineseDescription("业务类型ImPushTypeEnum")
    private String type;
    /**
     * 业务对象ID
     */
    @TableField("business_id")
    @ApiModelProperty(value = "业务对象ID")
    @ChineseDescription("业务对象ID")
    private String businessId;
    /**
     * 标题
     */
    @ApiModelProperty(value = "标题")
    @ChineseDescription("标题")
    private String title;
    /**
     * 内容
     */
    @ApiModelProperty(value = "内容")
    @ChineseDescription("内容")
    private String content;
    /**
     * 阅读标记:1已读,0未读
     */
    @TableField("read_flag")
    @ApiModelProperty(value = "阅读标记:1已读,0未读")
    @ChineseDescription("阅读标记:1已读,0未读")
    private Integer readFlag;
    /**
     * 推送json消息
     */
    @TableField("push_json")
    @ApiModelProperty(value = "推送json消息")
    @ChineseDescription("推送json消息")
    private String pushJson;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/entity/ImUserStatus.java
New file
@@ -0,0 +1,69 @@
package cn.stylefeng.guns.modular.business.entity;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * <p>
 * IM用户在线状态
 * </p>
 *
 * @author goupan
 * @since 2024-01-11
 */
@Data
@TableName("im_user_status")
@ApiModel(value = "IM用户在线状态")
public class ImUserStatus {
    private static final long serialVersionUID = 1L;
    /**
     * 主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    @ApiModelProperty(value = "主键")
    @ChineseDescription("主键")
    private Long id;
    /**
     * 用户ID
     */
    @ApiModelProperty(value = "用户ID")
    @ChineseDescription("用户ID")
    private String userid;
    /**
     * 在线状态,0在线,1离线,2登出
     */
    @ApiModelProperty(value = "在线状态,0在线,1离线,2登出")
    @ChineseDescription("在线状态,0在线,1离线,2登出")
    private String status;
    /**
     * 操作系统
     */
    @ApiModelProperty(value = "操作系统")
    @ChineseDescription("操作系统")
    private String os;
    /**
     * 发生时间
     */
    @ApiModelProperty(value = "发生时间")
    @ChineseDescription("发生时间")
    private Long time;
    /**
     * 用户当前的IP地址及端口
     */
    @ApiModelProperty(value = "用户当前的IP地址及端口")
    @ChineseDescription("用户当前的IP地址及端口")
    private String clientIp;
    /**
     * 一个连接的唯一 ID
     */
    @ApiModelProperty(value = "一个连接的唯一 ID")
    @ChineseDescription("一个连接的唯一 ID")
    private String sessionId;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/entity/MentalAnalysisSpecialTimeConfig.java
New file
@@ -0,0 +1,71 @@
package cn.stylefeng.guns.modular.business.entity;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
 * <p>
 * 性格分析特殊时间配置
 * </p>
 *
 * @author goupan
 * @since 2024-01-26
 */
@Data
@TableName("t_mental_analysis_special_time_config")
@ApiModel(value = "性格分析特殊时间配置")
public class MentalAnalysisSpecialTimeConfig {
    private static final long serialVersionUID = 1L;
    /**
     * 主键id
     */
    @TableId(value = "id", type = IdType.AUTO)
    @ApiModelProperty(value = "主键id")
    @ChineseDescription("主键id")
    private Long id;
    /**
     * 咨询师信息id
     */
    @TableField("counselling_info_id")
    @ApiModelProperty(value = "咨询师信息id")
    @ChineseDescription("咨询师信息id")
    private Long counsellingInfoId;
    /**
     * 特殊日期 yyyy-MM-dd
     */
    @TableField("special_day")
    @ApiModelProperty(value = "特殊日期 yyyy-MM-dd")
    @ChineseDescription("特殊日期 yyyy-MM-dd")
    private Date specialDay;
    /**
     * 特殊开始时间点 HH:mm
     */
    @TableField("special_begin_time_point")
    @ApiModelProperty(value = "特殊开始时间点 HH:mm")
    @ChineseDescription("特殊开始时间点 HH:mm")
    private String specialBeginTimePoint;
    /**
     * 特殊结束时间点 HH:mm
     */
    @TableField("special_end_time_point")
    @ApiModelProperty(value = "特殊结束时间点 HH:mm")
    @ChineseDescription("特殊结束时间点 HH:mm")
    private String specialEndTimePoint;
    /**
     * 是否取消当天 1-是 0-否
     */
    @TableField("is_cancel_day")
    @ApiModelProperty(value = "是否取消当天 1-是 0-否")
    @ChineseDescription("是否取消当天 1-是 0-否")
    private Integer isCancelDay;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/entity/MentalAnalysisTime.java
New file
@@ -0,0 +1,69 @@
package cn.stylefeng.guns.modular.business.entity;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * <p>
 * 性格分析可预约时间
 * </p>
 *
 * @author guohongjin
 * @since 2024-01-27
 */
@Data
@TableName("t_mental_analysis_time")
@ApiModel(value = "性格分析可预约时间")
public class MentalAnalysisTime {
    private static final long serialVersionUID = 1L;
    /**
     * 主键id
     */
    @TableId(value = "id", type = IdType.AUTO)
    @ApiModelProperty(value = "主键id")
    @ChineseDescription("主键id")
    private Long id;
    /**
     * 模块编号
     */
    @TableField("module_no")
    @ApiModelProperty(value = "模块编号")
    @ChineseDescription("模块编号")
    private String moduleNo;
    /**
     * 星期几
     */
    @TableField("week_day")
    @ApiModelProperty(value = "星期几")
    @ChineseDescription("星期几")
    private Integer weekDay;
    /**
     * 时间点 HH:mm
     */
    @TableField("begin_time_point")
    @ApiModelProperty(value = "时间点 HH:mm")
    @ChineseDescription("时间点 HH:mm")
    private String beginTimePoint;
    /**
     * 结束时间点
     */
    @TableField("end_time_point")
    @ApiModelProperty(value = "结束时间点")
    @ChineseDescription("结束时间点")
    private String endTimePoint;
    /**
     * 删除标记:1已删除,0未删除
     */
    @TableField("is_delete")
    @ApiModelProperty(value = "删除标记:1已删除,0未删除")
    @ChineseDescription("删除标记:1已删除,0未删除")
    private Integer isDelete;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/entity/MentalAnalysisTimeConfig.java
New file
@@ -0,0 +1,76 @@
package cn.stylefeng.guns.modular.business.entity;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * <p>
 * 性格分析时间配置
 * </p>
 *
 * @author goupan
 * @since 2024-01-26
 */
@Data
@TableName("t_mental_analysis_time_config")
@ApiModel(value = "性格分析时间配置")
public class MentalAnalysisTimeConfig {
    private static final long serialVersionUID = 1L;
    /**
     * 主键id
     */
    @TableId(value = "id", type = IdType.AUTO)
    @ApiModelProperty(value = "主键id")
    @ChineseDescription("主键id")
    private Long id;
    /**
     * 咨询师信息id
     */
    @TableField("counselling_info_id")
    @ApiModelProperty(value = "咨询师信息id")
    @ChineseDescription("咨询师信息id")
    private Long counsellingInfoId;
    /**
     * 模块编号
     */
    @TableField("module_no")
    @ApiModelProperty(value = "模块编号")
    @ChineseDescription("模块编号")
    private String moduleNo;
    /**
     * 星期几
     */
    @TableField("week_day")
    @ApiModelProperty(value = "星期几")
    @ChineseDescription("星期几")
    private Integer weekDay;
    /**
     * 时间点 HH:mm
     */
    @TableField("begin_time_point")
    @ApiModelProperty(value = "时间点 HH:mm")
    @ChineseDescription("时间点 HH:mm")
    private String beginTimePoint;
    /**
     * 结束时间点
     */
    @TableField("end_time_point")
    @ApiModelProperty(value = "结束时间点")
    @ChineseDescription("结束时间点")
    private String endTimePoint;
    /**
     * 删除状态 是否删除 1-是,0-否
     */
    @TableField("is_delete")
    @ApiModelProperty(value = "删除状态 是否删除 1-是,0-否")
    @ChineseDescription("删除状态 是否删除 1-是,0-否")
    private Integer isDelete;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/entity/MentalAppointment.java
New file
@@ -0,0 +1,159 @@
package cn.stylefeng.guns.modular.business.entity;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
/**
 * <p>
 * 性格分析预约
 * </p>
 *
 * @author goupan
 * @since 2024-01-01
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@TableName("t_mental_appointment")
@ApiModel(value = "性格分析预约")
public class MentalAppointment {
    private static final long serialVersionUID = 1L;
    /**
     * 主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    @ApiModelProperty(value = "主键")
    @ChineseDescription("主键")
    private Long id;
    /**
     * 状态:0支付中,1已分配,2服务中,3已完成,9已取消
     */
    @TableField("status_flag")
    @ApiModelProperty(value = "状态:0支付中,1已分配,2服务中,3已完成,9已取消")
    @ChineseDescription("状态:0支付中,1已分配,2服务中,3已完成,9已取消")
    private Integer statusFlag;
    /**
     * 删除标记:1已删除,0未删除
     */
    @TableField("is_delete")
    @ApiModelProperty(value = "删除标记:1已删除,0未删除")
    @ChineseDescription("删除标记:1已删除,0未删除")
    private Integer isDelete;
    /**
     * 创建时间
     */
    @TableField("create_time")
    @ApiModelProperty(value = "创建时间")
    @ChineseDescription("创建时间")
    private Date createTime;
    /**
     * 创建人
     */
    @TableField("create_user")
    @ApiModelProperty(value = "创建人")
    @ChineseDescription("创建人")
    private Long createUser;
    /**
     * 预约类型
     */
    @ApiModelProperty(value = "预约类型")
    @ChineseDescription("预约类型")
    private String type;
    /**
     * 预约时间天(yyyy-MM-dd)
     */
    @TableField("appointment_day")
    @ApiModelProperty(value = "预约时间天(yyyy-MM-dd)")
    @ChineseDescription("预约时间天(yyyy-MM-dd)")
    private Date appointmentDay;
    /**
     * 预约时间起(HH:mm)
     */
    @TableField("begin_time_point")
    @ApiModelProperty(value = "预约时间起(HH:mm)")
    @ChineseDescription("预约时间起(HH:mm)")
    private String beginTimePoint;
    /**
     * 预约时间止(HH:mm)
     */
    @TableField("end_time_point")
    @ApiModelProperty(value = "预约时间止(HH:mm)")
    @ChineseDescription("预约时间止(HH:mm)")
    private String endTimePoint;
    /**
     * 用户ID
     */
    @TableField("user_id")
    @ApiModelProperty(value = "用户ID")
    @ChineseDescription("用户ID")
    private Long userId;
    /**
     * 工作人员ID
     */
    @TableField("worker_id")
    @ApiModelProperty(value = "工作人员ID")
    @ChineseDescription("工作人员ID")
    private Long workerId;
    /**
     * 用户姓名
     */
    @TableField("user_name")
    @ApiModelProperty(value = "用户姓名")
    @ChineseDescription("用户姓名")
    private String userName;
    /**
     * 联系电话
     */
    @ApiModelProperty(value = "联系电话")
    @ChineseDescription("联系电话")
    private String phone;
    /**
     * 作业内容
     */
    @TableField("work_content")
    @ApiModelProperty(value = "作业内容")
    @ChineseDescription("作业内容")
    private String workContent;
    /**
     * 作业图片
     */
    @TableField("work_image")
    @ApiModelProperty(value = "作业图片")
    @ChineseDescription("作业图片")
    private String workImage;
    /**
     * 记录内容
     */
    @TableField("record_content")
    @ApiModelProperty(value = "记录内容")
    @ChineseDescription("记录内容")
    private String recordContent;
    /**
     * 记录图片
     */
    @TableField("record_image")
    @ApiModelProperty(value = "记录图片")
    @ChineseDescription("记录图片")
    private String recordImage;
    /**
     * 咨询聊天状态:0未开始,1咨询中,2已结束
     */
    @TableField("consult_status")
    @ApiModelProperty(value = "咨询聊天状态:0未开始,1咨询中,2已结束")
    @ChineseDescription("咨询聊天状态:0未开始,1咨询中,2已结束")
    private Integer consultStatus;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/entity/MentalTestClass.java
New file
@@ -0,0 +1,76 @@
package cn.stylefeng.guns.modular.business.entity;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
 * <p>
 * 心理测试分类
 * </p>
 *
 * @author goupan
 * @since 2024-01-01
 */
@Data
@TableName("t_mental_test_class")
@ApiModel(value = "心理测试分类")
public class MentalTestClass {
    private static final long serialVersionUID = 1L;
    /**
     * 主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    @ApiModelProperty(value = "主键")
    @ChineseDescription("主键")
    private Long id;
    /**
     * 分类名称
     */
    @ApiModelProperty(value = "分类名称")
    @ChineseDescription("分类名称")
    private String name;
    /**
     * 状态:1正常,2冻结
     */
    @TableField("status_flag")
    @ApiModelProperty(value = "状态:1正常,2冻结")
    @ChineseDescription("状态:1正常,2冻结")
    private Integer statusFlag;
    /**
     * 删除标记:1已删除,0未删除
     */
    @TableField("is_delete")
    @ApiModelProperty(value = "删除标记:1已删除,0未删除")
    @ChineseDescription("删除标记:1已删除,0未删除")
    private Integer isDelete;
    /**
     * 排序,默认desc
     */
    @ApiModelProperty(value = "排序,默认desc")
    @ChineseDescription("排序,默认desc")
    private Integer sort;
    /**
     * 创建时间
     */
    @TableField("create_time")
    @ApiModelProperty(value = "创建时间")
    @ChineseDescription("创建时间")
    private Date createTime;
    /**
     * 创建人
     */
    @TableField("create_user")
    @ApiModelProperty(value = "创建人")
    @ChineseDescription("创建人")
    private Long createUser;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/entity/MentalTestOption.java
New file
@@ -0,0 +1,74 @@
package cn.stylefeng.guns.modular.business.entity;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * <p>
 * 心理测试选项
 * </p>
 *
 * @author goupan
 * @since 2024-01-01
 */
@Data
@TableName("t_mental_test_option")
@ApiModel(value = "心理测试选项")
public class MentalTestOption {
    private static final long serialVersionUID = 1L;
    /**
     * 主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    @ApiModelProperty(value = "主键")
    @ChineseDescription("主键")
    private Long id;
    /**
     * 删除标记:1已删除,0未删除
     */
    @TableField("is_delete")
    @ApiModelProperty(value = "删除标记:1已删除,0未删除")
    @ChineseDescription("删除标记:1已删除,0未删除")
    private Integer isDelete;
    /**
     * 题库ID
     */
    @TableField("topic_id")
    @ApiModelProperty(value = "题库ID")
    @ChineseDescription("题库ID")
    private Long topicId;
    /**
     * 问题ID
     */
    @TableField("question_id")
    @ApiModelProperty(value = "问题ID")
    @ChineseDescription("问题ID")
    private Long questionId;
    /**
     * 排序(ABCD/1234)
     */
    @TableField("item_no")
    @ApiModelProperty(value = "排序(ABCD/1234)")
    @ChineseDescription("排序(ABCD/1234)")
    private String itemNo;
    /**
     * 分值
     */
    @ApiModelProperty(value = "分值")
    @ChineseDescription("分值")
    private Integer score;
    /**
     * 选项内容
     */
    @ApiModelProperty(value = "选项内容")
    @ChineseDescription("选项内容")
    private String content;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/entity/MentalTestQuestion.java
New file
@@ -0,0 +1,67 @@
package cn.stylefeng.guns.modular.business.entity;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * <p>
 * 心理测试问题
 * </p>
 *
 * @author goupan
 * @since 2024-01-01
 */
@Data
@TableName("t_mental_test_question")
@ApiModel(value = "心理测试问题")
public class MentalTestQuestion {
    private static final long serialVersionUID = 1L;
    /**
     * 主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    @ApiModelProperty(value = "主键")
    @ChineseDescription("主键")
    private Long id;
    /**
     * 删除标记:1已删除,0未删除
     */
    @TableField("is_delete")
    @ApiModelProperty(value = "删除标记:1已删除,0未删除")
    @ChineseDescription("删除标记:1已删除,0未删除")
    private Integer isDelete;
    /**
     * 题目ID
     */
    @TableField("topic_id")
    @ApiModelProperty(value = "题目ID")
    @ChineseDescription("题目ID")
    private Long topicId;
    /**
     * 标题
     */
    @ApiModelProperty(value = "标题")
    @ChineseDescription("标题")
    private String title;
    /**
     * 类型:1单选,2多选
     */
    @ApiModelProperty(value = "类型:1单选,2多选")
    @ChineseDescription("类型:1单选,2多选")
    private Integer type;
    /**
     * 排序,默认asc
     */
    @TableField("item_no")
    @ApiModelProperty(value = "排序,默认asc")
    @ChineseDescription("排序,默认asc")
    private String itemNo;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/entity/MentalTestRecord.java
New file
@@ -0,0 +1,108 @@
package cn.stylefeng.guns.modular.business.entity;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
/**
 * <p>
 * 心理测试记录
 * </p>
 *
 * @author goupan
 * @since 2024-01-09
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@TableName("t_mental_test_record")
@ApiModel(value = "心理测试记录")
public class MentalTestRecord {
    private static final long serialVersionUID = 1L;
    /**
     * 主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    @ApiModelProperty(value = "主键")
    @ChineseDescription("主键")
    private Long id;
    /**
     * 答题编号
     */
    @TableField("answer_no")
    @ApiModelProperty(value = "答题编号")
    @ChineseDescription("答题编号")
    private String answerNo;
    /**
     * 题库ID
     */
    @TableField("topic_id")
    @ApiModelProperty(value = "题库ID")
    @ChineseDescription("题库ID")
    private Long topicId;
    /**
     * 结果计算方式:0得分,1选项,2测试
     */
    @TableField("result_calculate_mode")
    @ApiModelProperty(value = "结果计算方式:0得分,1选项,2测试")
    @ChineseDescription("结果计算方式:0得分,1选项,2测试")
    private Integer resultCalculateMode;
    /**
     * 用户ID
     */
    @TableField("user_id")
    @ApiModelProperty(value = "用户ID")
    @ChineseDescription("用户ID")
    private Long userId;
    /**
     * 分值
     */
    @ApiModelProperty(value = "分值")
    @ChineseDescription("分值")
    private Integer score;
    /**
     * 结果描述
     */
    @ApiModelProperty(value = "结果描述")
    @ChineseDescription("结果描述")
    private String content;
    /**
     * 创建时间
     */
    @TableField("create_time")
    @ApiModelProperty(value = "创建时间")
    @ChineseDescription("创建时间")
    private Date createTime;
    /**
     * 1v1咨询性格分析师
     */
    @TableField("consult_worker_id")
    @ApiModelProperty(value = "1v1咨询性格分析师")
    @ChineseDescription("1v1咨询性格分析师")
    private Long consultWorkerId;
    /**
     * 1v1咨询订单ID
     */
    @TableField("order_consult_one_id")
    @ApiModelProperty(value = "1v1咨询订单ID")
    @ChineseDescription("1v1咨询订单ID")
    private Long orderConsultOneId;
    @TableField("mental_appointment_id")
    @ApiModelProperty(value = "性格分析预约ID")
    @ChineseDescription("性格分析预约ID")
    private Long mentalAppointmentId;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/entity/MentalTestResult.java
New file
@@ -0,0 +1,84 @@
package cn.stylefeng.guns.modular.business.entity;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
 * <p>
 * 心理测试结果
 * </p>
 *
 * @author goupan
 * @since 2024-01-09
 */
@Data
@TableName("t_mental_test_result")
@ApiModel(value = "心理测试结果")
public class MentalTestResult {
    private static final long serialVersionUID = 1L;
    /**
     * 主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    @ApiModelProperty(value = "主键")
    @ChineseDescription("主键")
    private Long id;
    /**
     * 答题编号
     */
    @TableField("answer_no")
    @ApiModelProperty(value = "答题编号")
    @ChineseDescription("答题编号")
    private String answerNo;
    /**
     * 题库ID
     */
    @TableField("topic_id")
    @ApiModelProperty(value = "题库ID")
    @ChineseDescription("题库ID")
    private Long topicId;
    /**
     * 问题ID
     */
    @TableField("question_id")
    @ApiModelProperty(value = "问题ID")
    @ChineseDescription("问题ID")
    private Long questionId;
    /**
     * 用户ID
     */
    @TableField("user_id")
    @ApiModelProperty(value = "用户ID")
    @ChineseDescription("用户ID")
    private Long userId;
    /**
     * 选项编号
     */
    @TableField("item_no")
    @ApiModelProperty(value = "选项编号")
    @ChineseDescription("选项编号")
    private String itemNo;
    /**
     * 分值
     */
    @ApiModelProperty(value = "分值")
    @ChineseDescription("分值")
    private Integer score;
    /**
     * 创建时间
     */
    @TableField("create_time")
    @ApiModelProperty(value = "创建时间")
    @ChineseDescription("创建时间")
    private Date createTime;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/entity/MentalTestResultSet.java
New file
@@ -0,0 +1,80 @@
package cn.stylefeng.guns.modular.business.entity;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * <p>
 * 心理测试结果配置
 * </p>
 *
 * @author goupan
 * @since 2024-01-01
 */
@Data
@TableName("t_mental_test_result_set")
@ApiModel(value = "心理测试结果配置")
public class MentalTestResultSet {
    private static final long serialVersionUID = 1L;
    /**
     * 主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    @ApiModelProperty(value = "主键")
    @ChineseDescription("主键")
    private Long id;
    /**
     * 题库ID
     */
    @TableField("topic_id")
    @ApiModelProperty(value = "题库ID")
    @ChineseDescription("题库ID")
    private Long topicId;
    /**
     * 结果计算方式:0得分,1选项,2测试
     */
    @TableField("result_calculate_mode")
    @ApiModelProperty(value = "结果计算方式:0得分,1选项,2测试")
    @ChineseDescription("结果计算方式:0得分,1选项,2测试")
    private Integer resultCalculateMode;
    /**
     * 最低分
     */
    @ApiModelProperty(value = "最低分")
    @ChineseDescription("最低分")
    private Integer min;
    /**
     * 最高分
     */
    @ApiModelProperty(value = "最高分")
    @ChineseDescription("最高分")
    private Integer max;
    /**
     * 选项编号
     */
    @TableField("item_no")
    @ApiModelProperty(value = "选项编号")
    @ChineseDescription("选项编号")
    private String itemNo;
    /**
     * 选项名称
     */
    @TableField("item_name")
    @ApiModelProperty(value = "选项名称")
    @ChineseDescription("选项名称")
    private String itemName;
    /**
     * 结果描述
     */
    @ApiModelProperty(value = "结果描述")
    @ChineseDescription("结果描述")
    private String content;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/entity/MentalTestTopic.java
New file
@@ -0,0 +1,135 @@
package cn.stylefeng.guns.modular.business.entity;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
/**
 * <p>
 * 心理测试题库
 * </p>
 *
 * @author goupan
 * @since 2024-01-01
 */
@Data
@TableName("t_mental_test_topic")
@ApiModel(value = "心理测试题库")
public class MentalTestTopic {
    private static final long serialVersionUID = 1L;
    /**
     * 主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    @ApiModelProperty(value = "主键")
    @ChineseDescription("主键")
    private Long id;
    /**
     * 状态:1正常,2冻结
     */
    @TableField("status_flag")
    @ApiModelProperty(value = "状态:1正常,2冻结")
    @ChineseDescription("状态:1正常,2冻结")
    private Integer statusFlag;
    /**
     * 删除标记:1已删除,0未删除
     */
    @TableField("is_delete")
    @ApiModelProperty(value = "删除标记:1已删除,0未删除")
    @ChineseDescription("删除标记:1已删除,0未删除")
    private Integer isDelete;
    /**
     * 创建时间
     */
    @TableField("create_time")
    @ApiModelProperty(value = "创建时间")
    @ChineseDescription("创建时间")
    private Date createTime;
    /**
     * 创建人
     */
    @TableField("create_user")
    @ApiModelProperty(value = "创建人")
    @ChineseDescription("创建人")
    private Long createUser;
    /**
     * 标题
     */
    @ApiModelProperty(value = "标题")
    @ChineseDescription("标题")
    private String title;
    /**
     * 分类
     */
    @TableField("class_id")
    @ApiModelProperty(value = "分类")
    @ChineseDescription("分类")
    private String classId;
    /**
     * 简介
     */
    @ApiModelProperty(value = "简介")
    @ChineseDescription("简介")
    private String intro;
    /**
     * 图片
     */
    @ApiModelProperty(value = "图片")
    @ChineseDescription("图片")
    private String image;
    /**
     * 测试类型:0免费,1付费
     */
    @TableField("test_type")
    @ApiModelProperty(value = "测试类型:0免费,1付费")
    @ChineseDescription("测试类型:0免费,1付费")
    private Integer testType;
    /**
     * 测试费用
     */
    @TableField("test_amount")
    @ApiModelProperty(value = "测试费用")
    @ChineseDescription("测试费用")
    private BigDecimal testAmount;
    /**
     * 咨询1V1,0无,1有
     */
    @TableField("consult_one")
    @ApiModelProperty(value = "咨询1V1,0无,1有")
    @ChineseDescription("咨询1V1,0无,1有")
    private Integer consultOne;
    /**
     * 咨询费用
     */
    @TableField("consult_amount")
    @ApiModelProperty(value = "咨询费用")
    @ChineseDescription("咨询费用")
    private BigDecimal consultAmount;
    /**
     * 结果计算方式:0得分,1选项,2测试
     */
    @TableField("result_calculate_mode")
    @ApiModelProperty(value = "结果计算方式:0得分,1选项,2测试")
    @ChineseDescription("结果计算方式:0得分,1选项,2测试")
    private Integer resultCalculateMode;
    @TableField("test_people_num")
    @ApiModelProperty(value = "测试人数")
    @ChineseDescription("测试人数")
    private Integer testPeopleNum;
    @TableField("test_set_num")
    @ApiModelProperty(value = "测试配置人数")
    @ChineseDescription("测试配置人数")
    private Integer testSetNum;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/entity/OrderConsultOne.java
New file
@@ -0,0 +1,185 @@
package cn.stylefeng.guns.modular.business.entity;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.math.BigDecimal;
import java.util.Date;
/**
 * <p>
 * 心理咨询1V1订单
 * </p>
 *
 * @author goupan
 * @since 2024-01-01
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@TableName("t_order_consult_one")
@ApiModel(value = "心理咨询1V1订单")
public class OrderConsultOne {
    private static final long serialVersionUID = 1L;
    /**
     * 主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    @ApiModelProperty(value = "主键")
    @ChineseDescription("主键")
    private Long id;
    /**
     * 状态:0待支付,1已支付,9取消
     */
    @TableField("status_flag")
    @ApiModelProperty(value = "状态:0待支付,1已支付,9取消")
    @ChineseDescription("状态:0待支付,1已支付,9取消")
    private Integer statusFlag;
    /**
     * 删除标记:1已删除,0未删除
     */
    @TableField("is_delete")
    @ApiModelProperty(value = "删除标记:1已删除,0未删除")
    @ChineseDescription("删除标记:1已删除,0未删除")
    private Integer isDelete;
    /**
     * 创建时间
     */
    @TableField("create_time")
    @ApiModelProperty(value = "创建时间")
    @ChineseDescription("创建时间")
    private Date createTime;
    /**
     * 创建人
     */
    @TableField("create_user")
    @ApiModelProperty(value = "创建人")
    @ChineseDescription("创建人")
    private Long createUser;
    /**
     * 订单编号
     */
    @TableField("order_no")
    @ApiModelProperty(value = "订单编号")
    @ChineseDescription("订单编号")
    private String orderNo;
    /**
     * 用户ID
     */
    @TableField("user_id")
    @ApiModelProperty(value = "用户ID")
    @ChineseDescription("用户ID")
    private Long userId;
    /**
     * 商品ID
     */
    @TableField("goods_id")
    @ApiModelProperty(value = "商品ID")
    @ChineseDescription("商品ID")
    private Long goodsId;
    /**
     * 订单金额
     */
    @TableField("order_amount")
    @ApiModelProperty(value = "订单金额")
    @ChineseDescription("订单金额")
    private BigDecimal orderAmount;
    /**
     * 支付金额
     */
    @TableField("pay_amount")
    @ApiModelProperty(value = "支付金额")
    @ChineseDescription("支付金额")
    private BigDecimal payAmount;
    /**
     * 支付时间
     */
    @TableField("pay_time")
    @ApiModelProperty(value = "支付时间")
    @ChineseDescription("支付时间")
    private Date payTime;
    /**
     * 支付方式,1微信,2支付宝
     */
    @TableField("pay_type")
    @ApiModelProperty(value = "支付方式,1微信,2支付宝")
    @ChineseDescription("支付方式,1微信,2支付宝")
    private String payType;
    /**
     * 交易号
     */
    @TableField("transaction_no")
    @ApiModelProperty(value = "交易号")
    @ChineseDescription("交易号")
    private String transactionNo;
    /**
     * 退款金额
     */
    @TableField("refund_amount")
    @ApiModelProperty(value = "退款金额")
    @ChineseDescription("退款金额")
    private BigDecimal refundAmount;
    /**
     * 退款时间
     */
    @TableField("refund_time")
    @ApiModelProperty(value = "退款时间")
    @ChineseDescription("退款时间")
    private Date refundTime;
    /**
     * 取消时间
     */
    @TableField("cancel_time")
    @ApiModelProperty(value = "取消时间")
    @ChineseDescription("取消时间")
    private Date cancelTime;
    /**
     * 取消说明
     */
    @TableField("cancel_remark")
    @ApiModelProperty(value = "取消说明")
    @ChineseDescription("取消说明")
    private String cancelRemark;
    @TableField("appointment_day")
    @ApiModelProperty(value = "预约时间天(yyyy-MM-dd)")
    @ChineseDescription("预约时间天(yyyy-MM-dd)")
    private Date appointmentDay;
    @TableField("begin_time_point")
    @ApiModelProperty(value = "预约时间起(HH:mm)")
    @ChineseDescription("预约时间起(HH:mm)")
    private String beginTimePoint;
    @TableField("end_time_point")
    @ApiModelProperty(value = "预约时间止(HH:mm)")
    @ChineseDescription("预约时间止(HH:mm)")
    private String endTimePoint;
    @TableField("mental_appointment_id")
    @ApiModelProperty(value = "性格分析预约ID")
    @ChineseDescription("性格分析预约ID")
    private Long mentalAppointmentId;
    @TableField("mental_test_record_id")
    @ApiModelProperty(value = "心理测试结果ID")
    @ChineseDescription("心理测试结果ID")
    private Long mentalTestRecordId;
    @TableField("mental_test_order_no")
    @ApiModelProperty(value = "心理测试订单编号")
    @ChineseDescription("心理测试订单编号")
    private String mentalTestOrderNo;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/entity/OrderMentalTest.java
New file
@@ -0,0 +1,169 @@
package cn.stylefeng.guns.modular.business.entity;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.math.BigDecimal;
import java.util.Date;
/**
 * <p>
 * 心理测试订单
 * </p>
 *
 * @author goupan
 * @since 2024-01-01
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@TableName("t_order_mental_test")
@ApiModel(value = "心理测试订单")
public class OrderMentalTest {
    private static final long serialVersionUID = 1L;
    /**
     * 主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    @ApiModelProperty(value = "主键")
    @ChineseDescription("主键")
    private Long id;
    /**
     * 状态:0待支付,1已支付,9取消
     */
    @TableField("status_flag")
    @ApiModelProperty(value = "状态:0待支付,1已支付,9取消")
    @ChineseDescription("状态:0待支付,1已支付,9取消")
    private Integer statusFlag;
    /**
     * 删除标记:1已删除,0未删除
     */
    @TableField("is_delete")
    @ApiModelProperty(value = "删除标记:1已删除,0未删除")
    @ChineseDescription("删除标记:1已删除,0未删除")
    private Integer isDelete;
    /**
     * 创建时间
     */
    @TableField("create_time")
    @ApiModelProperty(value = "创建时间")
    @ChineseDescription("创建时间")
    private Date createTime;
    /**
     * 创建人
     */
    @TableField("create_user")
    @ApiModelProperty(value = "创建人")
    @ChineseDescription("创建人")
    private Long createUser;
    /**
     * 订单编号
     */
    @TableField("order_no")
    @ApiModelProperty(value = "订单编号")
    @ChineseDescription("订单编号")
    private String orderNo;
    /**
     * 用户ID
     */
    @TableField("user_id")
    @ApiModelProperty(value = "用户ID")
    @ChineseDescription("用户ID")
    private Long userId;
    /**
     * 商品ID
     */
    @TableField("goods_id")
    @ApiModelProperty(value = "商品ID")
    @ChineseDescription("商品ID")
    private Long goodsId;
    /**
     * 订单金额
     */
    @TableField("order_amount")
    @ApiModelProperty(value = "订单金额")
    @ChineseDescription("订单金额")
    private BigDecimal orderAmount;
    /**
     * 支付金额
     */
    @TableField("pay_amount")
    @ApiModelProperty(value = "支付金额")
    @ChineseDescription("支付金额")
    private BigDecimal payAmount;
    /**
     * 支付时间
     */
    @TableField("pay_time")
    @ApiModelProperty(value = "支付时间")
    @ChineseDescription("支付时间")
    private Date payTime;
    /**
     * 支付方式,1微信,2支付宝
     */
    @TableField("pay_type")
    @ApiModelProperty(value = "支付方式,1微信,2支付宝")
    @ChineseDescription("支付方式,1微信,2支付宝")
    private String payType;
    /**
     * 交易号
     */
    @TableField("transaction_no")
    @ApiModelProperty(value = "交易号")
    @ChineseDescription("交易号")
    private String transactionNo;
    /**
     * 退款金额
     */
    @TableField("refund_amount")
    @ApiModelProperty(value = "退款金额")
    @ChineseDescription("退款金额")
    private BigDecimal refundAmount;
    /**
     * 退款时间
     */
    @TableField("refund_time")
    @ApiModelProperty(value = "退款时间")
    @ChineseDescription("退款时间")
    private Date refundTime;
    /**
     * 取消时间
     */
    @TableField("cancel_time")
    @ApiModelProperty(value = "取消时间")
    @ChineseDescription("取消时间")
    private Date cancelTime;
    /**
     * 取消说明
     */
    @TableField("cancel_remark")
    @ApiModelProperty(value = "取消说明")
    @ChineseDescription("取消说明")
    private String cancelRemark;
    /**
     * 是否后台创建
     */
    @TableField("is_back")
    @ApiModelProperty(value = "是否后台创建")
    @ChineseDescription("是否后台创建")
    private Boolean isBack;
    /**
     * 是否测试
     */
    @TableField("test_flag")
    @ApiModelProperty(value = "是否测试")
    @ChineseDescription("是否测试")
    private Boolean testFlag;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/entity/PsychologicalColumn.java
New file
@@ -0,0 +1,100 @@
package cn.stylefeng.guns.modular.business.entity;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import cn.stylefeng.roses.kernel.rule.pojo.request.BaseRequest;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
 * <p>
 * 心理专栏管理
 * </p>
 *
 * @author goupan
 * @since 2024-01-01
 */
@Data
@TableName("t_psychological_column")
@ApiModel(value = "心理专栏管理")
public class PsychologicalColumn extends BaseRequest {
    private static final long serialVersionUID = 1L;
    /**
     * 主键id
     */
    @TableId(value = "id", type = IdType.AUTO)
    @ApiModelProperty(value = "主键id")
    @ChineseDescription("主键id")
    private Long id;
    /**
     * 文章标题
     */
    @TableField("article_title")
    @ApiModelProperty(value = "文章标题")
    @ChineseDescription("文章标题")
    private String articleTitle;
    /**
     * 文章内容
     */
    @TableField("article_content")
    @ApiModelProperty(value = "文章内容")
    @ChineseDescription("文章内容")
    private String articleContent;
    /**
     * 发布时间
     */
    @TableField("release_time")
    @ApiModelProperty(value = "发布时间")
    @ChineseDescription("发布时间")
    private Date releaseTime;
    /**
     * 创建人
     */
    @TableField("create_user")
    @ApiModelProperty(value = "创建人")
    @ChineseDescription("创建人")
    private Long createUser;
    /**
     * 删除状态 是否删除 1-是,0-否
     */
    @TableField("is_delete")
    @ApiModelProperty(value = "删除状态 是否删除 1-是,0-否")
    @ChineseDescription("删除状态 是否删除 1-是,0-否")
    private Integer isDelete;
    /**
     * 创建时间
     */
    @TableField("create_time")
    @ApiModelProperty(value = "创建时间")
    @ChineseDescription("创建时间")
    private Date createTime;
    /**
     * 更新人
     */
    @TableField("update_user")
    @ApiModelProperty(value = "更新人")
    @ChineseDescription("更新人")
    private Long updateUser;
    /**
     * 更新时间
     */
    @TableField("update_time")
    @ApiModelProperty(value = "更新时间")
    @ChineseDescription("更新时间")
    private Date updateTime;
    /**
     * 阅读数量
     */
    @TableField("read_num")
    @ApiModelProperty(value = "阅读数量")
    @ChineseDescription("阅读数量")
    private Integer readNum;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/entity/PsychologicalRead.java
New file
@@ -0,0 +1,57 @@
package cn.stylefeng.guns.modular.business.entity;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
 * <p>
 * 心理专栏阅读记录
 * </p>
 *
 * @author goupan
 * @since 2024-01-01
 */
@Data
@TableName("t_psychological_read")
@ApiModel(value = "心理专栏阅读记录")
public class PsychologicalRead {
    private static final long serialVersionUID = 1L;
    /**
     * 主键id
     */
    @TableId(value = "id", type = IdType.AUTO)
    @ApiModelProperty(value = "主键id")
    @ChineseDescription("主键id")
    private Long id;
    /**
     * 用户id
     */
    @TableField("user_id")
    @ApiModelProperty(value = "用户id")
    @ChineseDescription("用户id")
    private Long userId;
    /**
     * 心理专栏id
     */
    @TableField("psychological_column_id")
    @ApiModelProperty(value = "心理专栏id")
    @ChineseDescription("心理专栏id")
    private Long psychologicalColumnId;
    /**
     * 阅读时间
     */
    @TableField("read_time")
    @ApiModelProperty(value = "阅读时间")
    @ChineseDescription("阅读时间")
    private Date readTime;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/entity/StoreAppointment.java
New file
@@ -0,0 +1,100 @@
package cn.stylefeng.guns.modular.business.entity;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import cn.stylefeng.roses.kernel.rule.pojo.request.BaseRequest;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
 * <p>
 * 门店预约
 * </p>
 *
 * @author goupan
 * @since 2024-01-01
 */
@Data
@TableName("t_store_appointment")
@ApiModel(value = "门店预约")
public class StoreAppointment extends BaseRequest {
    private static final long serialVersionUID = 1L;
    /**
     * 主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    @ApiModelProperty(value = "主键")
    @ChineseDescription("主键")
    private Long id;
    /**
     * 状态:0预约中,1已分配,2已跟进
     */
    @TableField("status_flag")
    @ApiModelProperty(value = "跟进状态:0预约中/未跟进,2-表示已跟进 (1已分配,2已跟进,列表显示的时候1和2都代表已跟进)")
    @ChineseDescription("跟进状态:0预约中/未跟进,2-表示已跟进 (1已分配,2已跟进,列表显示的时候1和2都代表已跟进)")
    private Integer statusFlag;
    /**
     * 删除标记:1已删除,0未删除
     */
    @TableField("is_delete")
    @ApiModelProperty(value = "删除标记:1已删除,0未删除")
    @ChineseDescription("删除标记:1已删除,0未删除")
    private Integer isDelete;
    /**
     * 创建时间
     */
    @TableField("create_time")
    @ApiModelProperty(value = "创建时间")
    @ChineseDescription("创建时间")
    private Date createTime;
    /**
     * 用户ID
     */
    @TableField("user_id")
    @ApiModelProperty(value = "用户ID")
    @ChineseDescription("用户ID")
    private Long userId;
    /**
     * 用户姓名
     */
    @TableField("user_name")
    @ApiModelProperty(value = "用户姓名")
    @ChineseDescription("用户姓名")
    private String userName;
    /**
     * 联系电话
     */
    @ApiModelProperty(value = "联系电话")
    @ChineseDescription("联系电话")
    private String phone;
    /**
     * 备注说明
     */
    @ApiModelProperty(value = "备注说明")
    @ChineseDescription("备注说明")
    private String remark;
    @TableField("follow_user_id")
    @ApiModelProperty(value = "跟进人id")
    @ChineseDescription("跟进人id")
    private Long followUserId;
    @TableField("follow_time")
    @ApiModelProperty(value = "跟进时间")
    @ChineseDescription("跟进时间")
    private Date followTime;
    @TableField(exist = false)
    @ApiModelProperty(value = "跟进人名称")
    @ChineseDescription("跟进人名称")
    private String followUserName;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/entity/SystemSet.java
New file
@@ -0,0 +1,55 @@
package cn.stylefeng.guns.modular.business.entity;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
/**
 * <p>
 * 系统配置(H5、客服电话)
 * </p>
 *
 * @author goupan
 * @since 2024-01-01
 */
@Data
@TableName("t_system_set")
@ApiModel(value = "系统配置(H5、客服电话)")
public class SystemSet {
    private static final long serialVersionUID = 1L;
    /**
     * 主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    @ApiModelProperty(value = "主键")
    @ChineseDescription("主键")
    private Long id;
    /**
     * 键值
     */
    @NotBlank
    @ApiModelProperty(value = "键值 COUNSELLING_CONTRACT-咨询合同h5,CUSTOMER_SERVICE_NUMBER-客服电话,COOPERATIVE_ENTERPRISE-合作企业h5")
    @ChineseDescription("键值")
    private String keyStr;
    /**
     * 内容
     */
    @ApiModelProperty(value = "内容")
    @ChineseDescription("内容")
    private String content;
    /**
     * 配置说明
     */
    @ApiModelProperty(value = "配置说明")
    @ChineseDescription("配置说明")
    private String remark;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/entity/UserEvaluate.java
New file
@@ -0,0 +1,112 @@
package cn.stylefeng.guns.modular.business.entity;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import com.baomidou.mybatisplus.annotation.*;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
/**
 * <p>
 * 用户评价表
 * </p>
 *
 * @author guohongjin
 * @since 2024-01-02
 */
@Data
@TableName("t_user_evaluate")
@ApiModel(value = "用户评价表")
public class UserEvaluate {
    private static final long serialVersionUID = 1L;
    /**
     * 主键id
     */
    @TableId(value = "id", type = IdType.AUTO)
    @ApiModelProperty(value = "主键id")
    @ChineseDescription("主键id")
    private Long id;
    /**
     * 用户id
     */
    @TableField("user_id")
    @ApiModelProperty(value = "用户id")
    @ChineseDescription("用户id")
    private Long userId;
    /**
     * 业务类型 1-课程,2-咨询
     */
    @TableField("buiness_type")
    @ApiModelProperty(value = "业务类型 1-课程,2-咨询")
    @ChineseDescription("业务类型 1-课程,2-咨询")
    private Integer buinessType;
    /**
     * 业务id 课程id或咨询预约id
     */
    @TableField("buiness_id")
    @ApiModelProperty(value = "业务id 课程id或咨询人员id")
    @ChineseDescription("业务id 课程id或咨询人员id")
    private Long buinessId;
    /**
     * 评分
     */
    @ApiModelProperty(value = "评分")
    @ChineseDescription("评分")
    private BigDecimal score;
    /**
     * 内容
     */
    @ApiModelProperty(value = "内容")
    @ChineseDescription("内容")
    private String content;
    /**
     * 删除状态 是否删除 1-是,0-否
     */
    @TableField("is_delete")
    @ApiModelProperty(value = "删除状态 是否删除 1-是,0-否")
    @ChineseDescription("删除状态 是否删除 1-是,0-否")
    private Integer isDelete;
    /**
     * 创建时间
     */
    @ApiModelProperty("创建时间")
    @TableField(value = "create_time", fill = FieldFill.INSERT)
    @ChineseDescription("创建时间")
    private Date createTime;
    /**
     * 更新时间
     */
    @ApiModelProperty("更新时间")
    @TableField(value = "update_time", fill = FieldFill.UPDATE)
    @ChineseDescription("更新时间")
    private Date updateTime;
    /**
     * 更新人
     */
    @ApiModelProperty("更新人")
    @TableField(value = "update_user", fill = FieldFill.UPDATE)
    @ChineseDescription("更新人")
    private Long updateUser;
    @ApiModelProperty("头像")
    @TableField(exist = false)
    @ChineseDescription("头像")
    private String avatar;
    @ApiModelProperty("昵称用户名")
    @TableField(exist = false)
    @ChineseDescription("昵称用户名")
    private String nickName;
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/AreaMapper.java
New file
@@ -0,0 +1,16 @@
package cn.stylefeng.guns.modular.business.mapper;
import cn.stylefeng.guns.modular.business.entity.Area;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
 * <p>
 * 地区码表 Mapper 接口
 * </p>
 *
 * @author guohongjin
 * @since 2023-12-27
 */
public interface AreaMapper extends BaseMapper<Area> {
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/BannerMapper.java
New file
@@ -0,0 +1,16 @@
package cn.stylefeng.guns.modular.business.mapper;
import cn.stylefeng.guns.modular.business.entity.Banner;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
 * <p>
 * banner Mapper 接口
 * </p>
 *
 * @author goupan
 * @since 2024-01-01
 */
public interface BannerMapper extends BaseMapper<Banner> {
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/ContractRecordMapper.java
New file
@@ -0,0 +1,16 @@
package cn.stylefeng.guns.modular.business.mapper;
import cn.stylefeng.guns.modular.business.entity.ContractRecord;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
 * <p>
 * 合同签订记录 Mapper 接口
 * </p>
 *
 * @author goupan
 * @since 2024-01-01
 */
public interface ContractRecordMapper extends BaseMapper<ContractRecord> {
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/CounsellingInfoMapper.java
New file
@@ -0,0 +1,21 @@
package cn.stylefeng.guns.modular.business.mapper;
import cn.stylefeng.guns.modular.business.entity.CounsellingInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
 * <p>
 * 咨询师信息 Mapper 接口
 * </p>
 *
 * @author goupan
 * @since 2024-01-01
 */
public interface CounsellingInfoMapper extends BaseMapper<CounsellingInfo> {
    long getCountCounsellingInfo(@Param("list") List<String> tagIds);
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/CounsellingOrderMapper.java
New file
@@ -0,0 +1,24 @@
package cn.stylefeng.guns.modular.business.mapper;
import cn.stylefeng.guns.modular.business.dto.CounsellingOrderResponseDTO;
import cn.stylefeng.guns.modular.business.dto.request.CounsellingOrderRequest;
import cn.stylefeng.guns.modular.business.entity.CounsellingOrder;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;
/**
 * <p>
 * 咨询订单信息 Mapper 接口
 * </p>
 *
 * @author guohongjin
 * @since 2024-01-02
 */
public interface CounsellingOrderMapper extends BaseMapper<CounsellingOrder> {
    Page<CounsellingOrderResponseDTO> findCounsellingOrderPage(@Param("page") Page<CounsellingOrderRequest> page, @Param("param") CounsellingOrderRequest counsellingOrderRequest);
    Page<CounsellingOrderResponseDTO> findWorkCounsellingOrderPage(@Param("page") Page<CounsellingOrderRequest> page, @Param("param") CounsellingOrderRequest counsellingOrderRequest);
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/CounsellingOrderReservationMapper.java
New file
@@ -0,0 +1,33 @@
package cn.stylefeng.guns.modular.business.mapper;
import cn.stylefeng.guns.modular.business.dto.CounsellingOrderReservationRequestDTO;
import cn.stylefeng.guns.modular.business.dto.UserCounsellingTotalDTO;
import cn.stylefeng.guns.modular.business.dto.request.UserCounsellingOrderReservationRequestDTO;
import cn.stylefeng.guns.modular.business.entity.CounsellingOrderReservation;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;
/**
 * <p>
 * 咨询订单预约记录 Mapper 接口
 * </p>
 *
 * @author guohongjin
 * @since 2024-01-02
 */
public interface CounsellingOrderReservationMapper extends BaseMapper<CounsellingOrderReservation> {
    Page<CounsellingOrderReservation> findPage(@Param("page") Page page,@Param("params") CounsellingOrderReservationRequestDTO counsellingOrderReservationRequestDTO);
    Page<CounsellingOrderReservation> findWorkPage(@Param("page") Page page,@Param("params") CounsellingOrderReservationRequestDTO counsellingOrderReservationRequestDTO);
     Page<CounsellingOrderReservation> findOrderReservationByUserIdPage(@Param("page") Page page,@Param("params") UserCounsellingOrderReservationRequestDTO userCounsellingOrderReservationRequestDTO);
    UserCounsellingTotalDTO getCounsellingNumTotalByUserId(UserCounsellingOrderReservationRequestDTO userCounsellingOrderReservationRequestDTO);
    Page<CounsellingOrderReservation> findReservationPage(@Param("page") Page page,@Param("params") CounsellingOrderReservationRequestDTO counsellingOrderReservationRequestDTO);
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/CounsellingReservationRecordMapper.java
New file
@@ -0,0 +1,16 @@
package cn.stylefeng.guns.modular.business.mapper;
import cn.stylefeng.guns.modular.business.entity.CounsellingReservationRecord;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
 * <p>
 * 咨询记录信息 Mapper 接口
 * </p>
 *
 * @author guohongjin
 * @since 2024-01-02
 */
public interface CounsellingReservationRecordMapper extends BaseMapper<CounsellingReservationRecord> {
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/CounsellingReservationWorkMapper.java
New file
@@ -0,0 +1,16 @@
package cn.stylefeng.guns.modular.business.mapper;
import cn.stylefeng.guns.modular.business.entity.CounsellingReservationWork;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
 * <p>
 * 咨询作业 Mapper 接口
 * </p>
 *
 * @author guohongjin
 * @since 2024-01-02
 */
public interface CounsellingReservationWorkMapper extends BaseMapper<CounsellingReservationWork> {
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/CounsellingSetMealMapper.java
New file
@@ -0,0 +1,16 @@
package cn.stylefeng.guns.modular.business.mapper;
import cn.stylefeng.guns.modular.business.entity.CounsellingSetMeal;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
 * <p>
 * 咨询套餐信息 Mapper 接口
 * </p>
 *
 * @author goupan
 * @since 2024-01-01
 */
public interface CounsellingSetMealMapper extends BaseMapper<CounsellingSetMeal> {
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/CounsellingSpecialTimeConfigMapper.java
New file
@@ -0,0 +1,16 @@
package cn.stylefeng.guns.modular.business.mapper;
import cn.stylefeng.guns.modular.business.entity.CounsellingSpecialTimeConfig;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
 * <p>
 * 咨询预约特殊时间配置 Mapper 接口
 * </p>
 *
 * @author guohongjin
 * @since 2024-01-02
 */
public interface CounsellingSpecialTimeConfigMapper extends BaseMapper<CounsellingSpecialTimeConfig> {
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/CounsellingTagMapper.java
New file
@@ -0,0 +1,16 @@
package cn.stylefeng.guns.modular.business.mapper;
import cn.stylefeng.guns.modular.business.entity.CounsellingTag;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
 * <p>
 * 咨询擅长领域标签表 Mapper 接口
 * </p>
 *
 * @author goupan
 * @since 2024-01-01
 */
public interface CounsellingTagMapper extends BaseMapper<CounsellingTag> {
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/CounsellingTimeConfigMapper.java
New file
@@ -0,0 +1,16 @@
package cn.stylefeng.guns.modular.business.mapper;
import cn.stylefeng.guns.modular.business.entity.CounsellingTimeConfig;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
 * <p>
 * 咨询预约时间配置 Mapper 接口
 * </p>
 *
 * @author guohongjin
 * @since 2024-01-02
 */
public interface CounsellingTimeConfigMapper extends BaseMapper<CounsellingTimeConfig> {
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/CounsellingUserMapper.java
New file
@@ -0,0 +1,21 @@
package cn.stylefeng.guns.modular.business.mapper;
import cn.stylefeng.guns.modular.business.dto.request.CounsellingUserRequest;
import cn.stylefeng.guns.modular.business.entity.CounsellingUser;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;
/**
 * <p>
 * 用户咨询师课时信息 Mapper 接口
 * </p>
 *
 * @author guohongjin
 * @since 2024-02-29
 */
public interface CounsellingUserMapper extends BaseMapper<CounsellingUser> {
    Page<CounsellingUser> findCounsellingUserPage(@Param("page") Page<CounsellingUser> page, @Param("param") CounsellingUserRequest counsellingUserRequest);
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/CourseChapterMapper.java
New file
@@ -0,0 +1,16 @@
package cn.stylefeng.guns.modular.business.mapper;
import cn.stylefeng.guns.modular.business.entity.CourseChapter;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
 * <p>
 * 章节管理 Mapper 接口
 * </p>
 *
 * @author goupan
 * @since 2024-01-01
 */
public interface CourseChapterMapper extends BaseMapper<CourseChapter> {
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/CourseMapper.java
New file
@@ -0,0 +1,21 @@
package cn.stylefeng.guns.modular.business.mapper;
import cn.stylefeng.guns.modular.business.entity.Course;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
 * <p>
 * 课程管理 Mapper 接口
 * </p>
 *
 * @author goupan
 * @since 2024-01-01
 */
public interface CourseMapper extends BaseMapper<Course> {
    long getCountCourse(@Param("list") List<String> tagIds);
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/CourseOrderMapper.java
New file
@@ -0,0 +1,22 @@
package cn.stylefeng.guns.modular.business.mapper;
import cn.stylefeng.guns.modular.business.dto.CourseOrderResponseDTO;
import cn.stylefeng.guns.modular.business.dto.request.CourseOrderRequest;
import cn.stylefeng.guns.modular.business.entity.CourseOrder;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;
/**
 * <p>
 * 课程订单信息 Mapper 接口
 * </p>
 *
 * @author guohongjin
 * @since 2024-01-02
 */
public interface CourseOrderMapper extends BaseMapper<CourseOrder> {
    Page<CourseOrderResponseDTO> findCounseOrderPage(@Param("page") Page<CourseOrderResponseDTO> page,@Param("param") CourseOrderRequest courseOrderRequest);
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/CourseStudyNoteMapper.java
New file
@@ -0,0 +1,16 @@
package cn.stylefeng.guns.modular.business.mapper;
import cn.stylefeng.guns.modular.business.entity.CourseStudyNote;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
 * <p>
 * 课程学习笔记 Mapper 接口
 * </p>
 *
 * @author guohongjin
 * @since 2024-01-02
 */
public interface CourseStudyNoteMapper extends BaseMapper<CourseStudyNote> {
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/CourseTagMapper.java
New file
@@ -0,0 +1,16 @@
package cn.stylefeng.guns.modular.business.mapper;
import cn.stylefeng.guns.modular.business.entity.CourseTag;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
 * <p>
 * 课程标签 Mapper 接口
 * </p>
 *
 * @author goupan
 * @since 2024-01-01
 */
public interface CourseTagMapper extends BaseMapper<CourseTag> {
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/CourseUserLearnedMapper.java
New file
@@ -0,0 +1,16 @@
package cn.stylefeng.guns.modular.business.mapper;
import cn.stylefeng.guns.modular.business.entity.CourseUserLearned;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
 * <p>
 * 课程学习记录 Mapper 接口
 * </p>
 *
 * @author guohongjin
 * @since 2024-01-02
 */
public interface CourseUserLearnedMapper extends BaseMapper<CourseUserLearned> {
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/CouserChapterLearningRateMapper.java
New file
@@ -0,0 +1,16 @@
package cn.stylefeng.guns.modular.business.mapper;
import cn.stylefeng.guns.modular.business.entity.CouserChapterLearningRate;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
 * <p>
 * 课程章节学习进度 Mapper 接口
 * </p>
 *
 * @author guohongjin
 * @since 2024-01-02
 */
public interface CouserChapterLearningRateMapper extends BaseMapper<CouserChapterLearningRate> {
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/HelpMapper.java
New file
@@ -0,0 +1,16 @@
package cn.stylefeng.guns.modular.business.mapper;
import cn.stylefeng.guns.modular.business.entity.Help;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
 * <p>
 * 帮助 Mapper 接口
 * </p>
 *
 * @author goupan
 * @since 2024-01-01
 */
public interface HelpMapper extends BaseMapper<Help> {
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/ImGroupMapper.java
New file
@@ -0,0 +1,24 @@
package cn.stylefeng.guns.modular.business.mapper;
import cn.stylefeng.guns.modular.business.dto.ImGroupUserDto;
import cn.stylefeng.guns.modular.business.entity.ImGroup;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
 * <p>
 * 消息群信息 Mapper 接口
 * </p>
 *
 * @author goupan
 * @since 2024-01-01
 */
public interface ImGroupMapper extends BaseMapper<ImGroup> {
    List<ImGroup> getMyGroup(@Param("userId") Long userId, @Param("groupName") String groupName, @Param("statusFlag") Integer statusFlag, @Param("nickName") String nickName, @Param("groupType") Integer groupType, @Param("orderId") String orderId);
    List<ImGroupUserDto> groupUser(@Param("groupId") Long groupId);
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/ImGroupUserMapper.java
New file
@@ -0,0 +1,16 @@
package cn.stylefeng.guns.modular.business.mapper;
import cn.stylefeng.guns.modular.business.entity.ImGroupUser;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
 * <p>
 * 消息群用户 Mapper 接口
 * </p>
 *
 * @author goupan
 * @since 2024-01-01
 */
public interface ImGroupUserMapper extends BaseMapper<ImGroupUser> {
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/ImNoticeMapper.java
New file
@@ -0,0 +1,16 @@
package cn.stylefeng.guns.modular.business.mapper;
import cn.stylefeng.guns.modular.business.entity.ImNotice;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
 * <p>
 * 消息通知 Mapper 接口
 * </p>
 *
 * @author goupan
 * @since 2024-01-01
 */
public interface ImNoticeMapper extends BaseMapper<ImNotice> {
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/ImUserStatusMapper.java
New file
@@ -0,0 +1,16 @@
package cn.stylefeng.guns.modular.business.mapper;
import cn.stylefeng.guns.modular.business.entity.ImUserStatus;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
 * <p>
 * IM用户在线状态 Mapper 接口
 * </p>
 *
 * @author goupan
 * @since 2024-01-11
 */
public interface ImUserStatusMapper extends BaseMapper<ImUserStatus> {
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/MentalAnalysisSpecialTimeConfigMapper.java
New file
@@ -0,0 +1,16 @@
package cn.stylefeng.guns.modular.business.mapper;
import cn.stylefeng.guns.modular.business.entity.MentalAnalysisSpecialTimeConfig;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
 * <p>
 * 性格分析特殊时间配置 Mapper 接口
 * </p>
 *
 * @author goupan
 * @since 2024-01-26
 */
public interface MentalAnalysisSpecialTimeConfigMapper extends BaseMapper<MentalAnalysisSpecialTimeConfig> {
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/MentalAnalysisTimeConfigMapper.java
New file
@@ -0,0 +1,25 @@
package cn.stylefeng.guns.modular.business.mapper;
import cn.stylefeng.guns.modular.business.dto.MentalAnalysisTimeConfigPageDTO;
import cn.stylefeng.guns.modular.business.entity.MentalAnalysisTimeConfig;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
 * <p>
 * 性格分析时间配置 Mapper 接口
 * </p>
 *
 * @author goupan
 * @since 2024-01-26
 */
public interface MentalAnalysisTimeConfigMapper extends BaseMapper<MentalAnalysisTimeConfig> {
    Page<MentalAnalysisTimeConfigPageDTO> getWorkerPage(@Param("page") Page<Object> page, @Param("nickName") String nickName);
    List<MentalAnalysisTimeConfig> getWorkerListByAppointmentTime(@Param("mentalAnalysisStatus") Integer mentalAnalysisStatus, @Param("weekDay") Integer weekDay, @Param("appointmentDay") String appointmentDay, @Param("beginTimePoint") String beginTimePoint, @Param("endTimePoint") String endTimePoint);
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/MentalAnalysisTimeMapper.java
New file
@@ -0,0 +1,16 @@
package cn.stylefeng.guns.modular.business.mapper;
import cn.stylefeng.guns.modular.business.entity.MentalAnalysisTime;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
 * <p>
 * 性格分析可预约时间 Mapper 接口
 * </p>
 *
 * @author guohongjin
 * @since 2024-01-27
 */
public interface MentalAnalysisTimeMapper extends BaseMapper<MentalAnalysisTime> {
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/MentalAppointmentMapper.java
New file
@@ -0,0 +1,31 @@
package cn.stylefeng.guns.modular.business.mapper;
import cn.stylefeng.guns.modular.business.dto.MentalAppointmentPageDTO;
import cn.stylefeng.guns.modular.business.dto.MentalTestMyMentalAppointmentDTO;
import cn.stylefeng.guns.modular.business.dto.UserMentalAppointmentPageResponseDTO;
import cn.stylefeng.guns.modular.business.entity.MentalAppointment;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
 * <p>
 * 性格分析预约 Mapper 接口
 * </p>
 *
 * @author goupan
 * @since 2024-01-01
 */
public interface MentalAppointmentMapper extends BaseMapper<MentalAppointment> {
    List<MentalTestMyMentalAppointmentDTO> myMentalAppointment(@Param("userId") Long userId, @Param("consultantName") String consultantName, @Param("statusFlagList") List<Integer> statusFlagList);
    Page<UserMentalAppointmentPageResponseDTO> userMentalAppointmentPage(@Param("page") Page<Object> page, @Param("userId") Long userId, @Param("name") String name, @Param("telephone") String telephone, @Param("statusFlag") Integer statusFlag);
    Page<MentalAppointmentPageDTO> mentalAnalysisTimeConfigSchedule(@Param("page") Page<Object> page, @Param("searchBeginTime") String searchBeginTime, @Param("searchEndTime") String searchEndTime, @Param("counsellingInfoId") Long counsellingInfoId, @Param("workerNickName") String workerNickName, @Param("userNickName") String userNickName, @Param("userTelephone") String userTelephone, @Param("statusFlag") Integer statusFlag, @Param("statusFlagList") List<Integer> statusFlagList);
    List<MentalAppointmentPageDTO> mentalAnalysisTimeConfigSchedule(@Param("searchBeginTime") String searchBeginTime, @Param("searchEndTime") String searchEndTime, @Param("counsellingInfoId") Long counsellingInfoId, @Param("workerNickName") String workerNickName, @Param("userNickName") String userNickName, @Param("userTelephone") String userTelephone, @Param("statusFlag") Integer statusFlag, @Param("statusFlagList") List<Integer> statusFlagList);
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/MentalTestClassMapper.java
New file
@@ -0,0 +1,16 @@
package cn.stylefeng.guns.modular.business.mapper;
import cn.stylefeng.guns.modular.business.entity.MentalTestClass;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
 * <p>
 * 心理测试分类 Mapper 接口
 * </p>
 *
 * @author goupan
 * @since 2024-01-01
 */
public interface MentalTestClassMapper extends BaseMapper<MentalTestClass> {
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/MentalTestOptionMapper.java
New file
@@ -0,0 +1,16 @@
package cn.stylefeng.guns.modular.business.mapper;
import cn.stylefeng.guns.modular.business.entity.MentalTestOption;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
 * <p>
 * 心理测试选项 Mapper 接口
 * </p>
 *
 * @author goupan
 * @since 2024-01-01
 */
public interface MentalTestOptionMapper extends BaseMapper<MentalTestOption> {
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/MentalTestQuestionMapper.java
New file
@@ -0,0 +1,16 @@
package cn.stylefeng.guns.modular.business.mapper;
import cn.stylefeng.guns.modular.business.entity.MentalTestQuestion;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
 * <p>
 * 心理测试问题 Mapper 接口
 * </p>
 *
 * @author goupan
 * @since 2024-01-01
 */
public interface MentalTestQuestionMapper extends BaseMapper<MentalTestQuestion> {
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/MentalTestRecordMapper.java
New file
@@ -0,0 +1,31 @@
package cn.stylefeng.guns.modular.business.mapper;
import cn.stylefeng.guns.modular.business.dto.MentalTestMyTestOrderDTO;
import cn.stylefeng.guns.modular.business.dto.MentalTestMyTestTopicDTO;
import cn.stylefeng.guns.modular.business.dto.MentalTestRecordPageDTO;
import cn.stylefeng.guns.modular.business.entity.MentalTestRecord;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
 * <p>
 * 心理测试记录 Mapper 接口
 * </p>
 *
 * @author goupan
 * @since 2024-01-09
 */
public interface MentalTestRecordMapper extends BaseMapper<MentalTestRecord> {
    List<MentalTestMyTestTopicDTO> myTestTopic(@Param("userId") Long userId, @Param("topicId") Long topicId);
    List<MentalTestMyTestTopicDTO> myTestRecordTopicByMentalAppointmentId(@Param("mentalAppointmentId") Long mentalAppointmentId, @Param("mentalAppointmentIdList") List<Long> mentalAppointmentIdList);
    List<MentalTestMyTestOrderDTO> myTestOrder(@Param("userId") Long userId, @Param("topicId") Long topicId);
    Page<MentalTestRecordPageDTO> getPage(@Param("page") Page<Object> page, @Param("title") String title, @Param("nickName") String nickName, @Param("telephone") String telephone, @Param("testType") Integer testType);
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/MentalTestResultMapper.java
New file
@@ -0,0 +1,16 @@
package cn.stylefeng.guns.modular.business.mapper;
import cn.stylefeng.guns.modular.business.entity.MentalTestResult;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
 * <p>
 * 心理测试结果 Mapper 接口
 * </p>
 *
 * @author goupan
 * @since 2024-01-09
 */
public interface MentalTestResultMapper extends BaseMapper<MentalTestResult> {
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/MentalTestResultSetMapper.java
New file
@@ -0,0 +1,16 @@
package cn.stylefeng.guns.modular.business.mapper;
import cn.stylefeng.guns.modular.business.entity.MentalTestResultSet;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
 * <p>
 * 心理测试结果配置 Mapper 接口
 * </p>
 *
 * @author goupan
 * @since 2024-01-01
 */
public interface MentalTestResultSetMapper extends BaseMapper<MentalTestResultSet> {
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/MentalTestTopicMapper.java
New file
@@ -0,0 +1,23 @@
package cn.stylefeng.guns.modular.business.mapper;
import cn.stylefeng.guns.modular.business.dto.MentalTestTopicPageDTO;
import cn.stylefeng.guns.modular.business.entity.MentalTestTopic;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
 * <p>
 * 心理测试题库 Mapper 接口
 * </p>
 *
 * @author goupan
 * @since 2024-01-01
 */
public interface MentalTestTopicMapper extends BaseMapper<MentalTestTopic> {
    Page<MentalTestTopicPageDTO> topicPage(Page page, @Param("classIdList") List<String> classIdList, @Param("title") String title, @Param("testType") Integer testType, @Param("testFlag") Integer testFlag, @Param("userId") Long userId, @Param("statusFlag") Integer statusFlag);
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/OrderConsultOneMapper.java
New file
@@ -0,0 +1,22 @@
package cn.stylefeng.guns.modular.business.mapper;
import cn.stylefeng.guns.modular.business.entity.OrderConsultOne;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
/**
 * <p>
 * 心理咨询1V1订单 Mapper 接口
 * </p>
 *
 * @author goupan
 * @since 2024-01-01
 */
public interface OrderConsultOneMapper extends BaseMapper<OrderConsultOne> {
    List<Map<String, Object>> getStatOrderList(@Param("dateFormat") String dateFormat, @Param("beginTime") String beginTime, @Param("endTime") String endTime, @Param("workerId") Long workerId, @Param("statusList") List<Integer> statusList);
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/OrderMentalTestMapper.java
New file
@@ -0,0 +1,29 @@
package cn.stylefeng.guns.modular.business.mapper;
import cn.stylefeng.guns.modular.business.dto.OrderMentalTestDetailDTO;
import cn.stylefeng.guns.modular.business.dto.OrderMentalTestPageDTO;
import cn.stylefeng.guns.modular.business.entity.OrderMentalTest;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
/**
 * <p>
 * 心理测试订单 Mapper 接口
 * </p>
 *
 * @author goupan
 * @since 2024-01-01
 */
public interface OrderMentalTestMapper extends BaseMapper<OrderMentalTest> {
    Page<OrderMentalTestPageDTO> getPage(@Param("page") Page<Object> page, @Param("title") String title, @Param("nickName") String nickName, @Param("telephone") String telephone, @Param("testType") Integer testType, @Param("statusFlag") Integer statusFlag, @Param("adminView") Integer adminView);
    OrderMentalTestDetailDTO getInfoById(@Param("id") Long id);
    List<Map<String, Object>> getStatOrderList(@Param("dateFormat") String dateFormat, @Param("beginTime") String beginTime, @Param("endTime") String endTime, @Param("workerId") Long workerId, @Param("statusList") List<Integer> statusList);
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/PsychologicalColumnMapper.java
New file
@@ -0,0 +1,16 @@
package cn.stylefeng.guns.modular.business.mapper;
import cn.stylefeng.guns.modular.business.entity.PsychologicalColumn;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
 * <p>
 * 心理专栏管理 Mapper 接口
 * </p>
 *
 * @author goupan
 * @since 2024-01-01
 */
public interface PsychologicalColumnMapper extends BaseMapper<PsychologicalColumn> {
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/PsychologicalReadMapper.java
New file
@@ -0,0 +1,16 @@
package cn.stylefeng.guns.modular.business.mapper;
import cn.stylefeng.guns.modular.business.entity.PsychologicalRead;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
 * <p>
 * 心理专栏阅读记录 Mapper 接口
 * </p>
 *
 * @author goupan
 * @since 2024-01-01
 */
public interface PsychologicalReadMapper extends BaseMapper<PsychologicalRead> {
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/StoreAppointmentMapper.java
New file
@@ -0,0 +1,16 @@
package cn.stylefeng.guns.modular.business.mapper;
import cn.stylefeng.guns.modular.business.entity.StoreAppointment;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
 * <p>
 * 门店预约 Mapper 接口
 * </p>
 *
 * @author goupan
 * @since 2024-01-01
 */
public interface StoreAppointmentMapper extends BaseMapper<StoreAppointment> {
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/SystemSetMapper.java
New file
@@ -0,0 +1,16 @@
package cn.stylefeng.guns.modular.business.mapper;
import cn.stylefeng.guns.modular.business.entity.SystemSet;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
 * <p>
 * 系统配置(H5、客服电话) Mapper 接口
 * </p>
 *
 * @author goupan
 * @since 2024-01-01
 */
public interface SystemSetMapper extends BaseMapper<SystemSet> {
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/TotalReportMapper.java
New file
@@ -0,0 +1,34 @@
package cn.stylefeng.guns.modular.business.mapper;
import cn.stylefeng.guns.modular.business.dto.request.TotalRequest;
import java.util.List;
import java.util.Map;
public interface TotalReportMapper {
    List<Map<String,Object>> courseTotalData(TotalRequest totalRequest);
    List<Map<String,Object>> mentalTestTotalData(TotalRequest totalRequest);
    List<Map<String,Object>> orderConsultOneTotalData(TotalRequest totalRequest);
    List<Map<String,Object>> courseNameTotalData(TotalRequest totalRequest);
    List<Map<String,Object>> courseTagTotalData(TotalRequest totalRequest);
    long courseBuyTotal(TotalRequest totalRequest);
    /**
     * 咨询统计
     * @param totalRequest
     * @return
     */
    List<Map<String,Object>> counsellingTotalData(TotalRequest totalRequest);
    List<Map<String,Object>> counsellingOrderTypeTotalData( TotalRequest totalRequest);
    List<Map<String,Object>> counsellingTypeTotalData( TotalRequest totalRequest);
    long counsellingBuyTotal(TotalRequest totalRequest);
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/UserEvaluateMapper.java
New file
@@ -0,0 +1,16 @@
package cn.stylefeng.guns.modular.business.mapper;
import cn.stylefeng.guns.modular.business.entity.UserEvaluate;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
 * <p>
 * 用户评价表 Mapper 接口
 * </p>
 *
 * @author guohongjin
 * @since 2024-01-02
 */
public interface UserEvaluateMapper extends BaseMapper<UserEvaluate> {
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/mapping/AreaMapper.xml
New file
@@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.stylefeng.guns.modular.business.mapper.AreaMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="cn.stylefeng.guns.modular.business.entity.Area">
        <id column="id" property="id" />
        <result column="pid" property="pid" />
        <result column="name" property="name" />
        <result column="shortname" property="shortname" />
        <result column="longitude" property="longitude" />
        <result column="latitude" property="latitude" />
        <result column="level" property="level" />
        <result column="sort" property="sort" />
    </resultMap>
    <!-- 通用查询结果列 -->
    <sql id="Base_Column_List">
        id, pid, name, shortname, longitude, latitude, level, sort
    </sql>
</mapper>
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/mapping/BannerMapper.xml
New file
@@ -0,0 +1,24 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.stylefeng.guns.modular.business.mapper.BannerMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="cn.stylefeng.guns.modular.business.entity.Banner">
        <id column="id" property="id" />
        <result column="status_flag" property="statusFlag" />
        <result column="is_delete" property="isDelete" />
        <result column="type" property="type" />
        <result column="name" property="name" />
        <result column="image" property="image" />
        <result column="jump_module" property="jumpModule" />
        <result column="jump_page" property="jumpPage" />
        <result column="jump_id" property="jumpId" />
        <result column="sort" property="sort" />
    </resultMap>
    <!-- 通用查询结果列 -->
    <sql id="Base_Column_List">
        id, status_flag, is_delete, type, name, image, jump_module, jump_page, jump_id, sort
    </sql>
</mapper>
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/mapping/ContractRecordMapper.xml
New file
@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.stylefeng.guns.modular.business.mapper.ContractRecordMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="cn.stylefeng.guns.modular.business.entity.ContractRecord">
        <id column="id" property="id" />
        <result column="user_id" property="userId" />
        <result column="contract_content" property="contractContent" />
        <result column="signing_time" property="signingTime" />
        <result column="sign_url" property="signUrl" />
    </resultMap>
    <!-- 通用查询结果列 -->
    <sql id="Base_Column_List">
        id, user_id, contract_content, signing_time, sign_url
    </sql>
</mapper>
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/mapping/CounsellingInfoMapper.xml
New file
@@ -0,0 +1,45 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.stylefeng.guns.modular.business.mapper.CounsellingInfoMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="cn.stylefeng.guns.modular.business.entity.CounsellingInfo">
        <id column="id" property="id" />
        <result column="user_id" property="userId" />
        <result column="counselling_type" property="counsellingType" />
        <result column="counselling_tag_ids" property="counsellingTagIds" />
        <result column="qualification_introduction" property="qualificationIntroduction" />
        <result column="frist_price" property="fristPrice" />
        <result column="cover_image_url" property="coverImageUrl" />
        <result column="detail_url" property="detailUrl" />
        <result column="personal_profile" property="personalProfile" />
        <result column="create_user" property="createUser" />
        <result column="is_delete" property="isDelete" />
        <result column="create_time" property="createTime" />
        <result column="update_user" property="updateUser" />
        <result column="update_time" property="updateTime" />
        <result column="total_score" property="totalScore" />
        <result column="listing_status" property="listingStatus" />
        <result column="weeks" property="weeks" />
        <result column="time_points" property="timePoints" />
    </resultMap>
    <!-- 通用查询结果列 -->
    <sql id="Base_Column_List">
        id, user_id, counselling_type, counselling_tag_ids, qualification_introduction, frist_price, cover_image_url, detail_url, personal_profile, create_user, is_delete, create_time, update_user, update_time, total_score, listing_status, weeks, time_points
    </sql>
    <select id="getCountCounsellingInfo" resultType="java.lang.Long">
        select  count(1)  from  t_counselling_info
        where is_delete = 0
        <if test="list != null">
            and
            <foreach collection="list" item="item" open="(" close=")" separator="or">
                FIND_IN_SET(#{item},counselling_tag_ids)
            </foreach>
        </if>
    </select>
</mapper>
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/mapping/CounsellingOrderMapper.xml
New file
@@ -0,0 +1,152 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.stylefeng.guns.modular.business.mapper.CounsellingOrderMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="cn.stylefeng.guns.modular.business.entity.CounsellingOrder">
        <id column="id" property="id" />
        <result column="counselling_info_id" property="counsellingInfoId" />
        <result column="user_id" property="userId" />
        <result column="consultant_user_id" property="consultantUserId" />
        <result column="companion_user_id" property="companionUserId" />
        <result column="order_type" property="orderType" />
        <result column="phone" property="phone" />
        <result column="effective_begin_time" property="effectiveBeginTime" />
        <result column="effective_end_time" property="effectiveEndTime" />
        <result column="counselling_set_meal_id" property="counsellingSetMealId" />
        <result column="set_meal_json" property="setMealJson" />
        <result column="class_hours" property="classHours" />
        <result column="residue_class_hours" property="residueClassHours" />
        <result column="user_info_json" property="userInfoJson" />
        <result column="status_flag" property="statusFlag" />
        <result column="is_delete" property="isDelete" />
        <result column="create_time" property="createTime" />
        <result column="create_user" property="createUser" />
        <result column="order_no" property="orderNo" />
        <result column="order_amount" property="orderAmount" />
        <result column="pay_amount" property="payAmount" />
        <result column="pay_time" property="payTime" />
        <result column="pay_type" property="payType" />
        <result column="transaction_no" property="transactionNo" />
        <result column="refund_amount" property="refundAmount" />
        <result column="refund_time" property="refundTime" />
        <result column="update_user" property="updateUser"/>
        <result column="update_time" property="updateTime"/>
        <result column="first_appointment_date" property="firstAppointmentDate"/>
        <result column="first_appointment_times" property="firstAppointmentTimes"/>
    </resultMap>
    <resultMap id="BaseDtoMap" type="cn.stylefeng.guns.modular.business.dto.CounsellingOrderResponseDTO" extends="BaseResultMap">
        <result column="counsellingName" property="counsellingName"/>
        <result column="userName" property="userName"/>
        <result column="companionUserName" property="companionUserName"/>
        <result column="consultantUserName" property="consultantUserName"/>
        <result column="lastTime" property="lastTime"/>
        <result column="coverImageUrl" property="coverImageUrl"/>
        <result column="isFirstAppointment" property="isFirstAppointment"/>
        <result column="listingStatus" property="listingStatus"/>
    </resultMap>
    <!-- 通用查询结果列 -->
    <sql id="Base_Column_List">
        id, counselling_info_id, user_id, consultant_user_id, companion_user_id, order_type, phone, effective_begin_time, effective_end_time, counselling_set_meal_id, set_meal_json, class_hours, residue_class_hours, user_info_json, status_flag, is_delete, create_time, create_user, order_no, order_amount, pay_amount, pay_time, pay_type, transaction_no, refund_amount, refund_time
    </sql>
    <select id="findCounsellingOrderPage" resultMap="BaseDtoMap">
        SELECT
            tco.*,toci.nick_name counsellingName,toc1.nick_name userName,toc2.nick_name companionUserName,toc3.nick_name consultantUserName,tci.counselling_type counsellingType,
            tci.cover_image_url coverImageUrl,tcu.is_first_appointment isFirstAppointment,tci.listing_status listingStatus
        FROM t_counselling_order tco
                 LEFT JOIN toc_customer toc1 ON toc1.customer_id = tco.user_id
                 LEFT JOIN toc_customer toc2 ON toc2.customer_id = tco.companion_user_id
                 LEFT JOIN toc_customer toc3 ON toc3.customer_id = tco.consultant_user_id
                 LEFT JOIN t_counselling_info tci ON  tci.id = tco.counselling_info_id
                 LEFT JOIN toc_customer toci ON toci.customer_id = tci.user_id
                LEFT JOIN t_counselling_user tcu on tcu.counselling_info_id = tco.counselling_info_id and tcu.user_id = tco.user_id
        <where>
            AND tco.is_delete = 0
            <if test="param.counsellingName != null and param.counsellingName != ''">
                AND  toci.nick_name LIKE CONCAT('%',#{param.counsellingName},'%')
            </if>
            <if test="param.userName != null and param.userName != ''">
                AND  toc1.nick_name LIKE CONCAT('%',#{param.userName},'%')
            </if>
            <if test="param.companionUserName != null and param.companionUserName != ''">
                AND  toc2.nick_name LIKE CONCAT('%',#{param.companionUserName},'%')
            </if>
            <if test="param.consultantUserName != null and param.consultantUserName != ''">
                AND  toc3.nick_name LIKE CONCAT('%',#{param.consultantUserName},'%')
            </if>
            <if test="param.phone != null and param.phone != ''">
                AND tco.phone LIKE CONCAT('%',#{param.phone},'%')
            </if>
            <if test="param.orderType != null">
                AND tco.order_type = #{param.orderType}
            </if>
            <if test="param.statusFlag != null">
                AND tco.status_flag =  #{param.statusFlag}
            </if>
            <if test="param.userId != null">
                AND tco.user_id =  #{param.userId}
            </if>
            <if test="param.counsellingInfoId != null">
                AND tco.counselling_info_id =  #{param.counsellingInfoId}
            </if>
            <if test="param.searchType != null and param.searchType == 2">
                AND tco.status_flag IN (1,2)
            </if>
        </where>
        ORDER BY tco.create_time DESC
    </select>
    <select id="findWorkCounsellingOrderPage" resultMap="BaseDtoMap">
        SELECT
        tcu.*,toci.nick_name counsellingName,toc1.nick_name userName,toc2.nick_name companionUserName,toc3.nick_name consultantUserName,
        tcor.lastTime,tci.listing_status listingStatus,tci.cover_image_url coverImageUrl,tcu.is_first_appointment isFirstAppointment
        FROM t_counselling_user tcu
        LEFT JOIN toc_customer toc1 ON toc1.customer_id = tcu.user_id
        LEFT JOIN toc_customer toc2 ON toc2.customer_id = tcu.companion_user_id
        LEFT JOIN toc_customer toc3 ON toc3.customer_id = tcu.consultant_user_id
        LEFT JOIN t_counselling_info tci ON  tci.id = tcu.counselling_info_id
        LEFT JOIN toc_customer toci ON toci.customer_id = tci.user_id
        LEFT JOIN (
        SELECT counselling_info_id,user_id,MAX(reservation_begin_time) lastTime FROM
        t_counselling_order_reservation
        WHERE stauts IN (2,3,4) and reservation_type =2
        GROUP BY counselling_info_id,user_id
        ) tcor ON tcor.counselling_info_id = tcu.counselling_info_id and tcor.user_id = tcu.user_id
        <where>
            AND tcu.is_delete = 0 AND tcu.is_first_appointment = 3
            <if test="param.counsellingName != null and param.counsellingName != ''">
                AND  toci.nick_name LIKE CONCAT('%',#{param.counsellingName},'%')
            </if>
            <if test="param.userName != null and param.userName != ''">
                AND  toc1.nick_name LIKE CONCAT('%',#{param.userName},'%')
            </if>
            <if test="param.companionUserName != null and param.companionUserName != ''">
                AND  toc2.nick_name LIKE CONCAT('%',#{param.companionUserName},'%')
            </if>
            <if test="param.consultantUserName != null and param.consultantUserName != ''">
                AND  toc3.nick_name LIKE CONCAT('%',#{param.consultantUserName},'%')
            </if>
            <if test="param.phone != null and param.phone != ''">
                AND tcu.phone LIKE CONCAT('%',#{param.phone},'%')
            </if>
            <if test="param.userId != null">
                AND tcu.user_id =  #{param.userId}
            </if>
            <if test="param.counsellingInfoId != null">
                AND tcu.counselling_info_id =  #{param.counsellingInfoId}
            </if>
            <if test="param.customerId != null">
                AND ( tcu.companion_user_id = #{param.customerId} OR tcu.consultant_user_id = #{param.customerId} OR tci.user_id = #{param.customerId} )
            </if>
        </where>
        ORDER BY tcu.create_time DESC
    </select>
</mapper>
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/mapping/CounsellingOrderReservationMapper.xml
New file
@@ -0,0 +1,214 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.stylefeng.guns.modular.business.mapper.CounsellingOrderReservationMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="cn.stylefeng.guns.modular.business.entity.CounsellingOrderReservation">
        <id column="id" property="id" />
        <result column="counselling_info_id" property="counsellingInfoId" />
        <result column="user_id" property="userId" />
        <result column="consultant_user_id" property="consultantUserId" />
        <result column="companion_user_id" property="companionUserId" />
        <result column="counselling_order_id" property="counsellingOrderId" />
        <result column="reservation_begin_time" property="reservationBeginTime" />
        <result column="reservation_end_time" property="reservationEndTime" />
        <result column="stauts" property="stauts" />
        <result column="create_time" property="createTime" />
        <result column="service_begin_time" property="serviceBeginTime" />
        <result column="service_end_time" property="serviceEndTime" />
        <result column="service_approve_time" property="serviceApproveTime" />
        <result column="servie_complete_time" property="servieCompleteTime" />
        <result column="consume_course_hour" property="consumeCourseHour" />
        <result column="reservation_type" property="reservationType"/>
        <result column="counsellingInfoName" property="counsellingInfoName"/>
        <result column="userName" property="userName"/>
        <result column="workNum" property="workNum"/>
        <result column="phone" property="phone"/>
    </resultMap>
    <!-- 通用查询结果列 -->
    <sql id="Base_Column_List">
        id, counselling_info_id, user_id, consultant_user_id, companion_user_id, counselling_order_id, reservation_begin_time, reservation_end_time, stauts, create_time, service_begin_time, service_end_time, service_approve_time, servie_complete_time, consume_course_hour
    </sql>
    <select id="findPage" resultMap="BaseResultMap">
        SELECT tcor.*,tco.phone,tc.nick_name userName,tcus.nick_name counsellingInfoName,
        (
        SELECT count(1) FROM t_counselling_reservation_work WHERE is_delete = 0 and counselling_order_reservation_id = tcor.id
        ) workNum
        FROM t_counselling_order_reservation tcor
        INNER JOIN toc_customer tc on tc.customer_id = tcor.user_id
        INNER JOIN t_counselling_info tci on tci.id = tcor.counselling_info_id
        INNER JOIN toc_customer tcus on tcus.customer_id = tci.user_id
        INNER JOIN t_counselling_user tco on tco.counselling_info_id = tcor.counselling_info_id and tco.user_id = tcor.user_id
        <where>
            <if test="params.stauts != null">
                AND tcor.stauts = #{params.stauts}
            </if>
            <if test="params.userName != null and params.userName != ''">
                AND tc.nick_name LIKE CONCAT('%',#{params.userName},'%')
            </if>
            <if test="params.counsellingInfoName != null and params.counsellingInfoName != ''">
                AND tcus.nick_name LIKE CONCAT('%',#{params.counsellingInfoName},'%')
            </if>
            <if test="params.phone != null and params.phone != ''">
                AND tco.phone  LIKE CONCAT('%',#{params.phone},'%')
            </if>
            <if test="params.searchBeginTime != null and params.searchBeginTime != ''">
                AND tcor.reservation_begin_time >= #{params.searchBeginTime}
            </if>
            <if test="params.searchEndTime != null and params.searchEndTime != ''">
                AND tcor.reservation_end_time &lt;= #{params.searchEndTime}
            </if>
            <if test="params.reservationType != null">
                AND tcor.reservation_type = #{params.reservationType}
            </if>
            <if test="params.counsellingInfoId != null">
                AND tcor.counselling_info_id = #{params.counsellingInfoId}
            </if>
            <if test="params.counsellingOrderId != null">
                AND tcor.counselling_order_id = #{params.counsellingOrderId}
            </if>
            <if test="params.customerId != null">
                AND tcor.user_id = #{params.customerId}
            </if>
        </where>
        ORDER BY tcor.reservation_begin_time DESC
    </select>
    <select id="findWorkPage" resultMap="BaseResultMap">
        SELECT tcor.*,tco.phone,tc.nick_name userName,tcus.nick_name counsellingInfoName FROM t_counselling_order_reservation tcor
        INNER JOIN toc_customer tc on tc.customer_id = tcor.user_id
        INNER JOIN t_counselling_info tci on tci.id = tcor.counselling_info_id
        INNER JOIN toc_customer tcus on tcus.customer_id = tci.user_id
        INNER JOIN t_counselling_user tco on tco.counselling_info_id = tcor.counselling_info_id and tco.user_id = tcor.user_id
        <where>
            <if test="params.stauts != null">
                AND tcor.stauts = #{params.stauts}
            </if>
            <if test="params.userName != null and params.userName != ''">
                AND tc.nick_name LIKE CONCAT('%',#{params.userName},'%')
            </if>
            <if test="params.counsellingInfoName != null and params.counsellingInfoName != ''">
                AND tcus.nick_name LIKE CONCAT('%',#{params.counsellingInfoName},'%')
            </if>
            <if test="params.phone != null and params.phone != ''">
                AND tco.phone  LIKE CONCAT('%',#{params.phone},'%')
            </if>
            <if test="params.searchBeginTime != null and params.searchBeginTime != ''">
                AND tcor.reservation_begin_time >= #{params.searchBeginTime}
            </if>
            <if test="params.searchEndTime != null and params.searchEndTime != ''">
                AND tcor.reservation_end_time &lt;= #{params.searchEndTime}
            </if>
            <if test="params.reservationType != null">
                AND tcor.reservation_type = #{params.reservationType}
            </if>
            <if test="params.counsellingInfoId != null">
                AND tcor.counselling_info_id = #{params.counsellingInfoId}
            </if>
            <if test="params.counsellingOrderId != null">
                AND tcor.counselling_order_id = #{params.counsellingOrderId}
            </if>
            <if test="params.customerId != null">
                AND (tcor.consultant_user_id = #{params.customerId} or tcor.companion_user_id = #{params.customerId}
                    or tci.user_id = #{params.customerId} )
            </if>
            <if test="params.searchType != null and params.searchType == 1">
                AND tcor.stauts IN (2,3,4)
            </if>
        </where>
        ORDER BY tcor.reservation_begin_time DESC
    </select>
    <select id="findOrderReservationByUserIdPage"
            resultType="cn.stylefeng.guns.modular.business.entity.CounsellingOrderReservation">
        SELECT tcor.*,tco.phone,tc.nick_name userName,tcus.nick_name counsellingInfoName FROM t_counselling_order_reservation tcor
        INNER JOIN toc_customer tc on tc.customer_id = tcor.user_id
        INNER JOIN t_counselling_info tci on tci.id = tcor.counselling_info_id
        INNER JOIN toc_customer tcus on tcus.customer_id = tci.user_id
        INNER JOIN t_counselling_user tco on tco.counselling_info_id = tcor.counselling_info_id and tco.user_id = tcor.user_id
        <where>
            <if test="params.stauts != null">
                AND tcor.stauts = #{params.stauts}
            </if>
            <if test="params.customerId != null and params.customerId != ''">
                AND tc.customer_id = #{params.customerId}
            </if>
            <if test="params.counsellingInfoName != null and params.counsellingInfoName != ''">
                AND tcus.nick_name LIKE CONCAT('%',#{params.counsellingInfoName},'%')
            </if>
        </where>
        ORDER BY tcor.reservation_begin_time DESC
    </select>
    <select id="getCounsellingNumTotalByUserId"
            resultType="cn.stylefeng.guns.modular.business.dto.UserCounsellingTotalDTO"
            parameterType="cn.stylefeng.guns.modular.business.dto.request.UserCounsellingOrderReservationRequestDTO">
        SELECT IFNUll(SUM(tco.class_hours),0) totalNum,IFNULL(SUM(tco.residue_class_hours),0) residueClassHoursNum  FROM t_counselling_user tco
        INNER JOIN t_counselling_info tci ON tci.id = tco.counselling_info_id
        INNER JOIN toc_customer tc ON tc.customer_id = tci.user_id
        <where>
            <if test="counsellingInfoName != null and counsellingInfoName != ''">
                AND tc.nick_name LIKE CONCAT('%',#{counsellingInfoName},'%')
            </if>
            <if test="customerId != null and customerId != ''">
                AND tco.user_id = #{customerId}
            </if>
        </where>
    </select>
    <select id="findReservationPage"
            resultType="cn.stylefeng.guns.modular.business.entity.CounsellingOrderReservation">
        SELECT tcor.*,tco.phone,tc.nick_name userName,tcus.nick_name counsellingInfoName,
        (
        SELECT count(1) FROM t_counselling_reservation_work WHERE is_delete = 0 and counselling_order_reservation_id = tcor.id
        ) workNum
        FROM t_counselling_order_reservation tcor
        INNER JOIN t_counselling_order  tcord ON tcord.id = tcor.counselling_order_id AND tcord.status_flag NOT IN (9,10)
        INNER JOIN toc_customer tc on tc.customer_id = tcor.user_id
        INNER JOIN t_counselling_info tci on tci.id = tcor.counselling_info_id
        INNER JOIN toc_customer tcus on tcus.customer_id = tci.user_id
        INNER JOIN t_counselling_user tco on tco.counselling_info_id = tcor.counselling_info_id and tco.user_id = tcor.user_id
        <where>
            AND ((tcor.reservation_type = 1 AND tcor.stauts != 5) OR (tcor.reservation_type = 2))
            <if test="params.stauts != null">
                AND tcor.stauts = #{params.stauts}
            </if>
            <if test="params.userName != null and params.userName != ''">
                AND tc.nick_name LIKE CONCAT('%',#{params.userName},'%')
            </if>
            <if test="params.counsellingInfoName != null and params.counsellingInfoName != ''">
                AND tcus.nick_name LIKE CONCAT('%',#{params.counsellingInfoName},'%')
            </if>
            <if test="params.phone != null and params.phone != ''">
                AND tco.phone  LIKE CONCAT('%',#{params.phone},'%')
            </if>
            <if test="params.searchBeginTime != null and params.searchBeginTime != ''">
                AND tcor.reservation_begin_time >= #{params.searchBeginTime}
            </if>
            <if test="params.searchEndTime != null and params.searchEndTime != ''">
                AND tcor.reservation_end_time &lt;= #{params.searchEndTime}
            </if>
            <if test="params.reservationType != null">
                AND tcor.reservation_type = #{params.reservationType}
            </if>
            <if test="params.counsellingInfoId != null">
                AND tcor.counselling_info_id = #{params.counsellingInfoId}
            </if>
            <if test="params.counsellingOrderId != null">
                AND tcor.counselling_order_id = #{params.counsellingOrderId}
            </if>
            <if test="params.customerId != null">
                AND tcor.user_id = #{params.customerId}
            </if>
        </where>
        ORDER BY tcor.create_time DESC
    </select>
</mapper>
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/mapping/CounsellingReservationRecordMapper.xml
New file
@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.stylefeng.guns.modular.business.mapper.CounsellingReservationRecordMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="cn.stylefeng.guns.modular.business.entity.CounsellingReservationRecord">
        <id column="id" property="id" />
        <result column="counselling_order_reservation_id" property="counsellingOrderReservationId" />
        <result column="content" property="content" />
        <result column="image_urls" property="imageUrls" />
        <result column="create_user" property="createUser" />
        <result column="is_delete" property="isDelete" />
        <result column="create_time" property="createTime" />
        <result column="update_user" property="updateUser" />
        <result column="update_time" property="updateTime" />
    </resultMap>
    <!-- 通用查询结果列 -->
    <sql id="Base_Column_List">
        id, counselling_order_reservation_id, content, image_urls, create_user, is_delete, create_time, update_user, update_time
    </sql>
</mapper>
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/mapping/CounsellingReservationWorkMapper.xml
New file
@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.stylefeng.guns.modular.business.mapper.CounsellingReservationWorkMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="cn.stylefeng.guns.modular.business.entity.CounsellingReservationWork">
        <id column="id" property="id" />
        <result column="counselling_order_reservation_id" property="counsellingOrderReservationId" />
        <result column="work_content" property="workContent" />
        <result column="work_image_urls" property="workImageUrls" />
        <result column="create_user" property="createUser" />
        <result column="is_delete" property="isDelete" />
        <result column="create_time" property="createTime" />
        <result column="update_user" property="updateUser" />
        <result column="update_time" property="updateTime" />
    </resultMap>
    <!-- 通用查询结果列 -->
    <sql id="Base_Column_List">
        id, counselling_order_reservation_id, work_content, work_image_urls, create_user, is_delete, create_time, update_user, update_time
    </sql>
</mapper>
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/mapping/CounsellingSetMealMapper.xml
New file
@@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.stylefeng.guns.modular.business.mapper.CounsellingSetMealMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="cn.stylefeng.guns.modular.business.entity.CounsellingSetMeal">
        <id column="id" property="id" />
        <result column="counselling_info_id" property="counsellingInfoId" />
        <result column="set_meal_type" property="setMealType" />
        <result column="period_validity" property="periodValidity" />
        <result column="class_hours" property="classHours" />
        <result column="is_give" property="isGive" />
        <result column="price" property="price" />
        <result column="original_price" property="originalPrice" />
    </resultMap>
    <!-- 通用查询结果列 -->
    <sql id="Base_Column_List">
        id, counselling_info_id, set_meal_type, period_validity, class_hours, is_give, price, original_price
    </sql>
</mapper>
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/mapping/CounsellingSpecialTimeConfigMapper.xml
New file
@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.stylefeng.guns.modular.business.mapper.CounsellingSpecialTimeConfigMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="cn.stylefeng.guns.modular.business.entity.CounsellingSpecialTimeConfig">
        <id column="id" property="id" />
        <result column="counselling_info_id" property="counsellingInfoId" />
        <result column="special_day" property="specialDay" />
        <result column="special_begin_time_point" property="specialBeginTimePoint" />
        <result column="special_end_time_point" property="specialEndTimePoint" />
        <result column="is_cancel_day" property="isCancelDay" />
    </resultMap>
    <!-- 通用查询结果列 -->
    <sql id="Base_Column_List">
        id, counselling_info_id, special_day, special_begin_time_point, special_end_time_point, is_cancel_day
    </sql>
</mapper>
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/mapping/CounsellingTagMapper.xml
New file
@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.stylefeng.guns.modular.business.mapper.CounsellingTagMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="cn.stylefeng.guns.modular.business.entity.CounsellingTag">
        <id column="id" property="id" />
        <result column="tag_name" property="tagName" />
        <result column="create_user" property="createUser" />
        <result column="is_delete" property="isDelete" />
        <result column="create_time" property="createTime" />
        <result column="update_user" property="updateUser" />
        <result column="update_time" property="updateTime" />
    </resultMap>
    <!-- 通用查询结果列 -->
    <sql id="Base_Column_List">
        id, tag_name, create_user, is_delete, create_time, update_user, update_time
    </sql>
</mapper>
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/mapping/CounsellingTimeConfigMapper.xml
New file
@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.stylefeng.guns.modular.business.mapper.CounsellingTimeConfigMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="cn.stylefeng.guns.modular.business.entity.CounsellingTimeConfig">
        <id column="id" property="id" />
        <result column="counselling_info_id" property="counsellingInfoId" />
        <result column="week_day" property="weekDay" />
        <result column="begin_time_point" property="beginTimePoint" />
        <result column="end_time_point" property="endTimePoint" />
    </resultMap>
    <!-- 通用查询结果列 -->
    <sql id="Base_Column_List">
        id, counselling_info_id, week_day, begin_time_point, end_time_point
    </sql>
</mapper>
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/mapping/CounsellingUserMapper.xml
New file
@@ -0,0 +1,89 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.stylefeng.guns.modular.business.mapper.CounsellingUserMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="cn.stylefeng.guns.modular.business.entity.CounsellingUser">
        <id column="id" property="id" />
        <result column="counselling_info_id" property="counsellingInfoId" />
        <result column="user_id" property="userId" />
        <result column="consultant_user_id" property="consultantUserId" />
        <result column="companion_user_id" property="companionUserId" />
        <result column="phone" property="phone" />
        <result column="effective_begin_time" property="effectiveBeginTime" />
        <result column="effective_end_time" property="effectiveEndTime" />
        <result column="class_hours" property="classHours" />
        <result column="residue_class_hours" property="residueClassHours" />
        <result column="user_info_json" property="userInfoJson" />
        <result column="status_flag" property="statusFlag" />
        <result column="is_delete" property="isDelete" />
        <result column="create_time" property="createTime" />
        <result column="create_user" property="createUser" />
        <result column="update_user" property="updateUser" />
        <result column="update_time" property="updateTime" />
        <result column="first_appointment_date" property="firstAppointmentDate" />
        <result column="first_appointment_times" property="firstAppointmentTimes" />
        <result column="is_first_appointment" property="isFirstAppointment" />
        <result column="counsellingName" property="counsellingName"/>
        <result column="userName" property="userName"/>
        <result column="lastTime" property="lastTime"/>
        <result column="coverImageUrl" property="coverImageUrl"/>
        <result column="listingStatus" property="listingStatus"/>
    </resultMap>
    <!-- 通用查询结果列 -->
    <sql id="Base_Column_List">
        id, counselling_info_id, user_id, consultant_user_id, companion_user_id, phone, effective_begin_time, effective_end_time, class_hours, residue_class_hours, user_info_json, status_flag, is_delete, create_time, create_user, update_user, update_time, first_appointment_date, first_appointment_times, is_first_appointment
    </sql>
    <select id="findCounsellingUserPage" resultMap="BaseResultMap">
        SELECT
        tco.*,toci.nick_name counsellingName,toc1.nick_name userName,toc2.nick_name companionUserName,toc3.nick_name consultantUserName,tci.counselling_type counsellingType,
        tci.cover_image_url coverImageUrl,tci.listing_status listingStatus,tcor.lastTime
        FROM t_counselling_user tco
        LEFT JOIN toc_customer toc1 ON toc1.customer_id = tco.user_id
        LEFT JOIN toc_customer toc2 ON toc2.customer_id = tco.companion_user_id
        LEFT JOIN toc_customer toc3 ON toc3.customer_id = tco.consultant_user_id
        LEFT JOIN t_counselling_info tci ON  tci.id = tco.counselling_info_id
        LEFT JOIN toc_customer toci ON toci.customer_id = tci.user_id
        LEFT JOIN (
        SELECT counselling_info_id,user_id,MAX(reservation_begin_time) lastTime FROM
        t_counselling_order_reservation
        WHERE stauts IN (2,3,4)
        GROUP BY counselling_info_id,user_id
        ) tcor ON tcor.counselling_info_id = tco.counselling_info_id and tcor.user_id = tco.user_id
        <where>
            AND tco.is_delete = 0 AND tco.status_flag NOT IN (0,9,10)
            <if test="param.counsellingName != null and param.counsellingName != ''">
                AND  toci.nick_name LIKE CONCAT('%',#{param.counsellingName},'%')
            </if>
            <if test="param.userName != null and param.userName != ''">
                AND  toc1.nick_name LIKE CONCAT('%',#{param.userName},'%')
            </if>
            <if test="param.companionUserName != null and param.companionUserName != ''">
                AND  toc2.nick_name LIKE CONCAT('%',#{param.companionUserName},'%')
            </if>
            <if test="param.consultantUserName != null and param.consultantUserName != ''">
                AND  toc3.nick_name LIKE CONCAT('%',#{param.consultantUserName},'%')
            </if>
            <if test="param.phone != null and param.phone != ''">
                AND tco.phone LIKE CONCAT('%',#{param.phone},'%')
            </if>
            <if test="param.statusFlag != null">
                AND tco.status_flag =  #{param.statusFlag}
            </if>
            <if test="param.userId != null">
                AND tco.user_id =  #{param.userId}
            </if>
            <if test="param.counsellingInfoId != null">
                AND tco.counselling_info_id =  #{param.counsellingInfoId}
            </if>
            <if test="param.customerId != null">
                AND ( tco.companion_user_id = #{param.customerId} OR tco.consultant_user_id = #{param.customerId} OR tci.user_id = #{param.customerId} )
            </if>
        </where>
        ORDER BY tco.create_time DESC
    </select>
</mapper>
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/mapping/CourseChapterMapper.xml
New file
@@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.stylefeng.guns.modular.business.mapper.CourseChapterMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="cn.stylefeng.guns.modular.business.entity.CourseChapter">
        <id column="id" property="id" />
        <result column="course_id" property="courseId" />
        <result column="chapter_name" property="chapterName" />
        <result column="parent_id" property="parentId" />
        <result column="video_name" property="videoName" />
        <result column="video_url" property="videoUrl" />
        <result column="create_user" property="createUser" />
        <result column="is_delete" property="isDelete" />
        <result column="create_time" property="createTime" />
        <result column="update_user" property="updateUser" />
        <result column="update_time" property="updateTime" />
    </resultMap>
    <!-- 通用查询结果列 -->
    <sql id="Base_Column_List">
        id, course_id, chapter_name, parent_id, video_name, video_url, create_user, is_delete, create_time, update_user, update_time
    </sql>
</mapper>
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/mapping/CourseMapper.xml
New file
@@ -0,0 +1,42 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.stylefeng.guns.modular.business.mapper.CourseMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="cn.stylefeng.guns.modular.business.entity.Course">
        <id column="id" property="id" />
        <result column="course_name" property="courseName" />
        <result column="course_tag_ids" property="courseTagIds" />
        <result column="course_introduction" property="courseIntroduction" />
        <result column="course_validity" property="courseValidity" />
        <result column="price" property="price" />
        <result column="original_price" property="originalPrice" />
        <result column="cover_picture_url" property="coverPictureUrl" />
        <result column="create_user" property="createUser" />
        <result column="is_delete" property="isDelete" />
        <result column="create_time" property="createTime" />
        <result column="update_user" property="updateUser" />
        <result column="update_time" property="updateTime" />
        <result column="course_detail_url" property="courseDetailUrl" />
        <result column="course_content" property="courseContent" />
        <result column="total_score" property="totalScore" />
        <result column="listing_status" property="listingStatus" />
    </resultMap>
    <!-- 通用查询结果列 -->
    <sql id="Base_Column_List">
        id, course_name, course_tag_ids, course_introduction, course_validity, price, original_price, cover_picture_url, create_user, is_delete, create_time, update_user, update_time, course_detail_url, course_content, total_score, listing_status
    </sql>
    <select id="getCountCourse" resultType="java.lang.Long">
        select  count(1)  from  t_course
        where is_delete = 0
          <if test="list != null">
              and
              <foreach collection="list" item="item" open="(" close=")" separator="or">
                  FIND_IN_SET(#{item},course_tag_ids)
              </foreach>
          </if>
    </select>
</mapper>
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/mapping/CourseOrderMapper.xml
New file
@@ -0,0 +1,105 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.stylefeng.guns.modular.business.mapper.CourseOrderMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="cn.stylefeng.guns.modular.business.entity.CourseOrder">
        <id column="id" property="id" />
        <result column="course_id" property="courseId" />
        <result column="user_id" property="userId" />
        <result column="course_user_id" property="courseUserId" />
        <result column="tutoring_user_id" property="tutoringUserId" />
        <result column="phone" property="phone" />
        <result column="effective_begin_time" property="effectiveBeginTime" />
        <result column="effective_end_time" property="effectiveEndTime" />
        <result column="total_time" property="totalTime" />
        <result column="learned_time" property="learnedTime" />
        <result column="status_flag" property="statusFlag" />
        <result column="is_delete" property="isDelete" />
        <result column="create_time" property="createTime" />
        <result column="create_user" property="createUser" />
        <result column="order_no" property="orderNo" />
        <result column="order_amount" property="orderAmount" />
        <result column="pay_amount" property="payAmount" />
        <result column="pay_time" property="payTime" />
        <result column="pay_type" property="payType" />
        <result column="transaction_no" property="transactionNo" />
        <result column="refund_amount" property="refundAmount" />
        <result column="refund_time" property="refundTime" />
        <result column="course_json" property="courseJson" />
        <result column="update_user" property="updateUser"/>
        <result column="update_time" property="updateTime"/>
    </resultMap>
    <resultMap id="BaseDtoMap" type="cn.stylefeng.guns.modular.business.dto.CourseOrderResponseDTO">
        <result column="tutoringUserName" property="tutoringUserName"/>
        <result column="userName" property="userName"/>
        <result column="courseName" property="courseName"/>
        <result column="courseUserName" property="courseUserName"/>
        <result column="listingStatus" property="listingStatus"/>
    </resultMap>
    <!-- 通用查询结果列 -->
    <sql id="Base_Column_List">
        id, course_id, user_id, course_user_id, tutoring_user_id, phone, effective_begin_time, effective_end_time, total_time, learned_time, status_flag, is_delete, create_time, create_user, order_no, order_amount, pay_amount, pay_time, pay_type, transaction_no, refund_amount, refund_time, course_json
    </sql>
    <select id="findCounseOrderPage" resultMap="BaseDtoMap">
        SELECT
        tco.*,toc1.nick_name userName,toc2.nick_name courseUserName,toc3.nick_name tutoringUserName,tc.course_name courseName,tc.listing_status listingStatus
        FROM t_course_order tco
        LEFT JOIN toc_customer toc1 ON toc1.customer_id = tco.user_id
        LEFT JOIN toc_customer toc2 ON toc2.customer_id = tco.course_user_id
        LEFT JOIN toc_customer toc3 ON toc3.customer_id = tco.tutoring_user_id
        LEFT JOIN t_course tc ON  tc.id = tco.course_id
        <where>
            AND tco.is_delete = 0
            <if test="param.userName != null and param.userName != ''">
                AND  toc1.nick_name LIKE CONCAT('%',#{param.userName},'%')
            </if>
            <if test="param.courseUserName != null and param.courseUserName != ''">
                AND  toc2.nick_name LIKE CONCAT('%',#{param.courseUserName},'%')
            </if>
            <if test="param.tutoringUserName != null and param.tutoringUserName != ''">
                AND  toc3.nick_name LIKE CONCAT('%',#{param.tutoringUserName},'%')
            </if>
            <if test="param.phone != null and param.phone != ''">
                AND tco.phone LIKE CONCAT('%',#{param.phone},'%')
            </if>
            <if test="param.statusFlag != null">
                AND tco.status_flag =  #{param.statusFlag}
            </if>
            <if test="param.userId != null">
                AND tco.user_id =  #{param.userId}
            </if>
            <if test="param.courseName != null and param.courseName != ''">
                AND tc.course_name  LIKE CONCAT('%',#{param.courseName},'%')
            </if>
            <if test="param.showState != null">
              <choose>
                  <when test="param.showState == 0">
                      AND tco.status_flag = 0
                  </when>
                  <when test="param.showState == 2">
                      AND tco.status_flag = 1 AND NOW() &lt; tco.effective_end_time
                  </when>
                  <when test="param.showState == 1">
                      AND tco.status_flag = 2
                  </when>
                  <otherwise>
                      AND tco.status_flag =  #{param.showState}
                  </otherwise>
              </choose>
            </if>
            <if test="param.statuFlags != null and param.statuFlags != ''">
                AND tco.status_flag IN (${param.statuFlags})
            </if>
        </where>
        ORDER BY tco.create_time DESC
    </select>
</mapper>
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/mapping/CourseStudyNoteMapper.xml
New file
@@ -0,0 +1,24 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.stylefeng.guns.modular.business.mapper.CourseStudyNoteMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="cn.stylefeng.guns.modular.business.entity.CourseStudyNote">
        <id column="id" property="id" />
        <result column="course_id" property="courseId" />
        <result column="course_order_id" property="courseOrderId" />
        <result column="user_id" property="userId" />
        <result column="note_content" property="noteContent" />
        <result column="create_user" property="createUser" />
        <result column="is_delete" property="isDelete" />
        <result column="create_time" property="createTime" />
        <result column="update_user" property="updateUser" />
        <result column="update_time" property="updateTime" />
    </resultMap>
    <!-- 通用查询结果列 -->
    <sql id="Base_Column_List">
        id, course_id, course_order_id, user_id, note_content, create_user, is_delete, create_time, update_user, update_time
    </sql>
</mapper>
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/mapping/CourseTagMapper.xml
New file
@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.stylefeng.guns.modular.business.mapper.CourseTagMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="cn.stylefeng.guns.modular.business.entity.CourseTag">
        <id column="id" property="id" />
        <result column="tag_name" property="tagName" />
        <result column="create_user" property="createUser" />
        <result column="is_delete" property="isDelete" />
        <result column="create_time" property="createTime" />
        <result column="update_user" property="updateUser" />
        <result column="update_time" property="updateTime" />
    </resultMap>
    <!-- 通用查询结果列 -->
    <sql id="Base_Column_List">
        id, tag_name, create_user, is_delete, create_time, update_user, update_time
    </sql>
</mapper>
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/mapping/CourseUserLearnedMapper.xml
New file
@@ -0,0 +1,24 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.stylefeng.guns.modular.business.mapper.CourseUserLearnedMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="cn.stylefeng.guns.modular.business.entity.CourseUserLearned">
        <id column="id" property="id" />
        <result column="course_id" property="courseId" />
        <result column="course_chapter_id" property="courseChapterId" />
        <result column="course_order_id" property="courseOrderId" />
        <result column="user_id" property="userId" />
        <result column="study_time" property="studyTime" />
        <result column="course_study_time" property="courseStudyTime" />
        <result column="begin_time" property="beginTime" />
        <result column="end_time" property="endTime" />
        <result column="update_time" property="updateTime" />
    </resultMap>
    <!-- 通用查询结果列 -->
    <sql id="Base_Column_List">
        id, course_id, course_chapter_id, course_order_id, user_id, study_time, course_study_time, begin_time, end_time, update_time
    </sql>
</mapper>
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/mapping/CouserChapterLearningRateMapper.xml
New file
@@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.stylefeng.guns.modular.business.mapper.CouserChapterLearningRateMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="cn.stylefeng.guns.modular.business.entity.CouserChapterLearningRate">
        <id column="id" property="id" />
        <result column="course_id" property="courseId" />
        <result column="course_chapter_id" property="courseChapterId" />
        <result column="course_order_id" property="courseOrderId" />
        <result column="user_id" property="userId" />
        <result column="course_study_time" property="courseStudyTime" />
        <result column="update_time" property="updateTime" />
        <result column="study_status" property="studyStatus" />
    </resultMap>
    <!-- 通用查询结果列 -->
    <sql id="Base_Column_List">
        id, course_id, course_chapter_id, course_order_id, user_id, course_study_time, update_time, study_status
    </sql>
</mapper>
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/mapping/HelpMapper.xml
New file
@@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.stylefeng.guns.modular.business.mapper.HelpMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="cn.stylefeng.guns.modular.business.entity.Help">
        <id column="id" property="id" />
        <result column="status_flag" property="statusFlag" />
        <result column="is_delete" property="isDelete" />
        <result column="sort" property="sort" />
        <result column="create_time" property="createTime" />
        <result column="create_user" property="createUser" />
        <result column="title" property="title" />
        <result column="content" property="content" />
    </resultMap>
    <!-- 通用查询结果列 -->
    <sql id="Base_Column_List">
        id, status_flag, is_delete, sort, create_time, create_user, title, content
    </sql>
</mapper>
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/mapping/ImGroupMapper.xml
New file
@@ -0,0 +1,48 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.stylefeng.guns.modular.business.mapper.ImGroupMapper">
    <select id="getMyGroup" resultType="cn.stylefeng.guns.modular.business.entity.ImGroup">
        SELECT * FROM im_group o
        LEFT JOIN im_group_user gu ON gu.group_id = o.id
        LEFT JOIN toc_customer tu ON tu.customer_id = gu.user_id
        <where>
            o.is_delete = 0 AND gu.is_delete = 0
            <if test="groupType != null">
                AND o.group_type = #{groupType}
            </if>
            <if test="orderId != null">
                AND o.order_id = #{orderId}
            </if>
            <if test="statusFlag != null">
                AND o.status_flag = #{statusFlag}
            </if>
            <if test="userId != null">
                AND gu.user_id = #{userId}
            </if>
            <if test="groupName != null and groupName != ''">
                AND o.`name` LIKE CONCAT('%',#{groupName},'%')
            </if>
            <if test="nickName != null and nickName != ''">
                AND tu.nick_name LIKE CONCAT('%',#{nickName},'%')
            </if>
        </where>
        GROUP BY o.id
    </select>
    <select id="groupUser" resultType="cn.stylefeng.guns.modular.business.dto.ImGroupUserDto">
        SELECT
            o.*, u.nick_name, u.avatar, u.user_type, u.im_token, u.post_ids
        FROM
            im_group_user o
        LEFT JOIN
            toc_customer u ON o.user_id = u.customer_id
        <where>
            o.is_delete = 0
            <if test="groupId != null">
                AND o.group_id = #{groupId}
            </if>
        </where>
    </select>
</mapper>
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/mapping/ImGroupUserMapper.xml
New file
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.stylefeng.guns.modular.business.mapper.ImGroupUserMapper">
</mapper>
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/mapping/ImNoticeMapper.xml
New file
@@ -0,0 +1,24 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.stylefeng.guns.modular.business.mapper.ImNoticeMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="cn.stylefeng.guns.modular.business.entity.ImNotice">
        <id column="id" property="id" />
        <result column="is_delete" property="isDelete" />
        <result column="create_time" property="createTime" />
        <result column="user_type" property="userType" />
        <result column="user_id" property="userId" />
        <result column="type" property="type" />
        <result column="business_id" property="businessId" />
        <result column="title" property="title" />
        <result column="content" property="content" />
        <result column="read_flag" property="readFlag" />
    </resultMap>
    <!-- 通用查询结果列 -->
    <sql id="Base_Column_List">
        id, is_delete, create_time, user_type, user_id, type, business_id, title, content, read_flag
    </sql>
</mapper>
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/mapping/ImUserStatusMapper.xml
New file
@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.stylefeng.guns.modular.business.mapper.ImUserStatusMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="cn.stylefeng.guns.modular.business.entity.ImUserStatus">
        <id column="id" property="id" />
        <result column="userid" property="userid" />
        <result column="status" property="status" />
        <result column="os" property="os" />
        <result column="time" property="time" />
        <result column="clientIp" property="clientIp" />
        <result column="sessionId" property="sessionId" />
    </resultMap>
    <!-- 通用查询结果列 -->
    <sql id="Base_Column_List">
        id, userid, status, os, time, clientIp, sessionId
    </sql>
</mapper>
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/mapping/MentalAnalysisSpecialTimeConfigMapper.xml
New file
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.stylefeng.guns.modular.business.mapper.MentalAnalysisSpecialTimeConfigMapper">
</mapper>
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/mapping/MentalAnalysisTimeConfigMapper.xml
New file
@@ -0,0 +1,48 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.stylefeng.guns.modular.business.mapper.MentalAnalysisTimeConfigMapper">
    <select id="getWorkerPage" resultType="cn.stylefeng.guns.modular.business.dto.MentalAnalysisTimeConfigPageDTO">
        SELECT
            tu.customer_id AS counsellingInfoId,
            tu.nick_name AS nickName,
            tu.mental_analysis_status
        FROM
            t_mental_analysis_time_config o
            LEFT JOIN toc_customer tu ON tu.customer_id = o.counselling_info_id
        <where>
            <if test="nickName != null and nickName != ''">
                AND tu.nick_name LIKE CONCAT('%',#{nickName},'%')
            </if>
        </where>
        GROUP BY counselling_info_id
    </select>
    <select id="getWorkerListByAppointmentTime" resultType="cn.stylefeng.guns.modular.business.entity.MentalAnalysisTimeConfig">
        SELECT
            tc.*
        FROM
            t_mental_analysis_time_config tc
            LEFT JOIN toc_customer u ON tc.counselling_info_id = u.customer_id
            LEFT JOIN t_counselling_special_time_config stc ON stc.counselling_info_id = u.customer_id
        <where>
            <if test="mentalAnalysisStatus != null">
                AND u.mental_analysis_status = #{mentalAnalysisStatus}
            </if>
            <if test="weekDay != null">
                AND tc.week_day = #{weekDay}
            </if>
            <if test="beginTimePoint != null and beginTimePoint != ''">
                AND tc.begin_time_point = #{beginTimePoint}
            </if>
            <if test="endTimePoint != null and endTimePoint != ''">
                AND tc.end_time_point = #{endTimePoint}
            </if>
            <if test="appointmentDay != null and appointmentDay != ''">
                AND u.customer_id NOT IN (
                    SELECT counselling_info_id FROM t_counselling_special_time_config stc
                    WHERE stc.special_day <![CDATA[ <> ]]> #{appointmentDay} AND stc.is_cancel_day = 1
            )
            </if>
        </where>
    </select>
</mapper>
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/mapping/MentalAnalysisTimeMapper.xml
New file
@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.stylefeng.guns.modular.business.mapper.MentalAnalysisTimeMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="cn.stylefeng.guns.modular.business.entity.MentalAnalysisTime">
        <id column="id" property="id" />
        <result column="counselling_info_id" property="counsellingInfoId" />
        <result column="week_day" property="weekDay" />
        <result column="begin_time_point" property="beginTimePoint" />
        <result column="end_time_point" property="endTimePoint" />
        <result column="is_delete" property="isDelete" />
    </resultMap>
    <!-- 通用查询结果列 -->
    <sql id="Base_Column_List">
        id, counselling_info_id, week_day, begin_time_point, end_time_point, is_delete
    </sql>
</mapper>
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/mapping/MentalAppointmentMapper.xml
New file
@@ -0,0 +1,99 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.stylefeng.guns.modular.business.mapper.MentalAppointmentMapper">
    <select id="myMentalAppointment" resultType="cn.stylefeng.guns.modular.business.dto.MentalTestMyMentalAppointmentDTO">
        SELECT
            o.*,
            wu.nick_name workerNickName
        FROM
            t_mental_appointment o
        LEFT JOIN toc_customer wu ON o.worker_id = wu.customer_id
        <where>
            <if test="statusFlagList != null and statusFlagList.size != 0">
                AND o.status_flag IN
                <foreach item="item" collection="statusFlagList" index="index" open="(" separator="," close=")">
                    #{item}
                </foreach>
            </if>
            <if test="userId != null">
                AND o.user_id = #{userId}
            </if>
            <if test="consultantName != null">
                AND wu.nick_name LIKE CONCAT('%', #{consultantName}, '%')
            </if>
        </where>
        ORDER BY o.create_time DESC
    </select>
    <select id="mentalAnalysisTimeConfigSchedule" resultType="cn.stylefeng.guns.modular.business.dto.MentalAppointmentPageDTO">
        SELECT
            o.id,
            o.type,
            o.status_flag,
            o.appointment_day,
            o.begin_time_point,
            o.end_time_point,
            o.user_id user_id,
            o.user_name userNickName,
            o.phone userTelephone,
            wu.customer_id worker_id,
            wu.nick_name worker_nick_name,
            wu.telephone worker_telephone
        FROM
            t_mental_appointment o
            LEFT JOIN toc_customer wu ON o.worker_id = wu.customer_id
        <where> AND o.is_delete = 0
            <if test="counsellingInfoId != null">
                AND o.worker_id = #{counsellingInfoId}
            </if>
            <if test="statusFlag != null">
                AND o.status_flag = #{statusFlag}
            </if>
            <if test="statusFlag == null and statusFlagList != null and statusFlagList.size != 0">
                AND o.status_flag IN
                <foreach item="item" collection="statusFlagList" index="index" open="(" separator="," close=")">
                    #{item}
                </foreach>
            </if>
            <if test="searchBeginTime != null and searchBeginTime != ''">
                AND o.appointment_day <![CDATA[ >= ]]> #{searchBeginTime}
            </if>
            <if test="searchEndTime != null and searchEndTime != ''">
                AND o.appointment_day <![CDATA[ <= ]]> #{searchEndTime}
            </if>
            <if test="workerNickName != null and workerNickName != ''">
                AND wu.nick_name LIKE CONCAT( '%', #{workerNickName}, '%' )
            </if>
            <if test="userNickName != null and userNickName != ''">
                AND o.user_name LIKE CONCAT( '%', #{userNickName}, '%' )
            </if>
            <if test="userTelephone != null and userTelephone != ''">
                AND o.phone LIKE CONCAT( '%', #{userTelephone}, '%' )
            </if>
        </where>
        ORDER BY
            o.create_time DESC
    </select>
    <select id="userMentalAppointmentPage" resultType="cn.stylefeng.guns.modular.business.dto.UserMentalAppointmentPageResponseDTO">
        SELECT * FROM t_mental_appointment o
        LEFT JOIN toc_customer tw ON tw.customer_id = o.worker_id
        <where>
            <if test="userId != null">
                AND o.user_id = #{userId}
            </if>
            <if test="userId != null">
                AND o.status_flag = #{statusFlag}
            </if>
            <if test="name != null and name != ''">
                AND tw.nick_name LIKE CONCAT('%',#{name},'%')
            </if>
            <if test="telephone != null and telephone != ''">
                AND tw.telephone LIKE CONCAT('%',#{telephone},'%')
            </if>
        </where>
        ORDER BY o.create_time DESC
    </select>
</mapper>
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/mapping/MentalTestClassMapper.xml
New file
@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.stylefeng.guns.modular.business.mapper.MentalTestClassMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="cn.stylefeng.guns.modular.business.entity.MentalTestClass">
        <id column="id" property="id" />
        <result column="name" property="name" />
        <result column="status_flag" property="statusFlag" />
        <result column="is_delete" property="isDelete" />
        <result column="sort" property="sort" />
        <result column="create_time" property="createTime" />
        <result column="create_user" property="createUser" />
    </resultMap>
    <!-- 通用查询结果列 -->
    <sql id="Base_Column_List">
        id, name, status_flag, is_delete, sort, create_time, create_user
    </sql>
</mapper>
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/mapping/MentalTestOptionMapper.xml
New file
@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.stylefeng.guns.modular.business.mapper.MentalTestOptionMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="cn.stylefeng.guns.modular.business.entity.MentalTestOption">
        <id column="id" property="id" />
        <result column="topic_id" property="topicId" />
        <result column="question_id" property="questionId" />
        <result column="item_no" property="itemNo" />
        <result column="score" property="score" />
        <result column="content" property="content" />
    </resultMap>
    <!-- 通用查询结果列 -->
    <sql id="Base_Column_List">
        id, topic_id, question_id, item_no, score, content
    </sql>
</mapper>
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/mapping/MentalTestQuestionMapper.xml
New file
@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.stylefeng.guns.modular.business.mapper.MentalTestQuestionMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="cn.stylefeng.guns.modular.business.entity.MentalTestQuestion">
        <id column="id" property="id" />
        <result column="topic_id" property="topicId" />
        <result column="title" property="title" />
        <result column="type" property="type" />
        <result column="item_no" property="itemNo" />
    </resultMap>
    <!-- 通用查询结果列 -->
    <sql id="Base_Column_List">
        id, topic_id, title, type, item_no
    </sql>
</mapper>
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/mapping/MentalTestRecordMapper.xml
New file
@@ -0,0 +1,121 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.stylefeng.guns.modular.business.mapper.MentalTestRecordMapper">
    <select id="myTestTopic" resultType="cn.stylefeng.guns.modular.business.dto.MentalTestMyTestTopicDTO">
        SELECT
            o.*,
            tt.status_flag topicStatus,
            tt.title,
            tt.class_id,
            tt.intro,
            tt.image,
            tt.test_type,
            tt.test_amount,
            tt.consult_one,
            tt.consult_amount,
            tt.test_people_num,
            tt.test_set_num
        FROM
            t_mental_test_record o
            LEFT JOIN t_mental_test_topic tt ON tt.id = o.topic_id
        <where>
            <if test="userId != null">
                AND o.user_id = #{userId}
            </if>
            <if test="topicId != null">
                AND o.topic_id = #{topicId}
            </if>
        </where>
        ORDER BY o.create_time DESC
    </select>
    <select id="myTestRecordTopicByMentalAppointmentId" resultType="cn.stylefeng.guns.modular.business.dto.MentalTestMyTestTopicDTO">
        SELECT
            o.*,
            tt.status_flag topicStatus,
            tt.title,
            tt.class_id,
            tt.intro,
            tt.image,
            tt.test_type,
            tt.test_amount,
            tt.consult_one,
            tt.consult_amount,
            tt.test_people_num,
            tt.test_set_num
        FROM
            t_mental_test_record o
            LEFT JOIN t_mental_test_topic tt ON tt.id = o.topic_id
        <where>
            <if test="mentalAppointmentId != null">
                AND o.mental_appointment_id = #{mentalAppointmentId}
            </if>
            <if test="mentalAppointmentIdList != null">
                AND o.mental_appointment_id IN
                <foreach collection="mentalAppointmentIdList" item="item" open="(" close=")" separator=",">
                    #{item}
                </foreach>
            </if>
        </where>
        ORDER BY o.create_time DESC
    </select>
    <select id="myTestOrder" resultType="cn.stylefeng.guns.modular.business.dto.MentalTestMyTestOrderDTO">
        SELECT
            o.*,
            tt.id topicId,
            tt.status_flag topicStatus,
            tt.title,
            tt.class_id,
            tt.intro,
            tt.image,
            tt.test_type,
            tt.test_amount,
            tt.consult_one,
            tt.consult_amount,
            tt.test_people_num,
            tt.test_set_num
        FROM
            t_order_mental_test o
            LEFT JOIN t_mental_test_topic tt ON tt.id = o.goods_id
        <where>
            AND o.status_flag = 1 AND ( ( tt.test_type = 0 AND o.test_flag = 1 ) OR tt.test_type = 1 OR o.is_back = 1 )
            <if test="userId != null">
                AND o.user_id = #{userId}
            </if>
            <if test="topicId != null">
                AND o.goods_id = #{topicId}
            </if>
        </where>
        ORDER BY o.create_time DESC
    </select>
    <select id="getPage" resultType="cn.stylefeng.guns.modular.business.dto.MentalTestRecordPageDTO">
        SELECT
            tt.*,
            o.create_time,
            tu.nick_name,
            tu.telephone
        FROM
            t_mental_test_record o
                LEFT JOIN t_mental_test_topic tt ON tt.id = o.topic_id
                LEFT JOIN toc_customer tu ON tu.customer_id = o.user_id
        <where>
            <if test="title != null and title != ''">
                AND tt.title LIKE CONCAT('%', #{title}, '%')
            </if>
            <if test="testType != null">
                AND tt.test_type = #{testType}
            </if>
            <if test="nickName != null and nickName != ''">
                AND tu.nick_name LIKE CONCAT('%', #{nickName}, '%')
            </if>
            <if test="telephone != null and telephone != ''">
                AND tu.telephone LIKE CONCAT('%', #{telephone}, '%')
            </if>
        </where>
        ORDER BY o.create_time DESC
    </select>
</mapper>
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/mapping/MentalTestResultMapper.xml
New file
@@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.stylefeng.guns.modular.business.mapper.MentalTestResultMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="cn.stylefeng.guns.modular.business.entity.MentalTestResult">
        <id column="id" property="id" />
        <result column="answer_no" property="answerNo" />
        <result column="topic_id" property="topicId" />
        <result column="question_id" property="questionId" />
        <result column="user_id" property="userId" />
        <result column="item_no" property="itemNo" />
        <result column="score" property="score" />
        <result column="create_time" property="createTime" />
    </resultMap>
    <!-- 通用查询结果列 -->
    <sql id="Base_Column_List">
        id, answer_no, topic_id, question_id, user_id, item_no, score, create_time
    </sql>
</mapper>
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/mapping/MentalTestResultSetMapper.xml
New file
@@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.stylefeng.guns.modular.business.mapper.MentalTestResultSetMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="cn.stylefeng.guns.modular.business.entity.MentalTestResultSet">
        <id column="id" property="id" />
        <result column="topic_id" property="topicId" />
        <result column="result_calculate_mode" property="resultCalculateMode" />
        <result column="min" property="min" />
        <result column="max" property="max" />
        <result column="item_no" property="itemNo" />
        <result column="item_name" property="itemName" />
        <result column="content" property="content" />
    </resultMap>
    <!-- 通用查询结果列 -->
    <sql id="Base_Column_List">
        id, topic_id, result_calculate_mode, min, max, item_no, item_name, content
    </sql>
</mapper>
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/mapping/MentalTestTopicMapper.xml
New file
@@ -0,0 +1,32 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.stylefeng.guns.modular.business.mapper.MentalTestTopicMapper">
    <select id="topicPage" resultType="cn.stylefeng.guns.modular.business.dto.MentalTestTopicPageDTO">
        SELECT * FROM t_mental_test_topic o
        <where>
            AND status_flag = 1
            AND is_delete = 0
            <if test="classIdList != null and classIdList.size != 0">
                AND ( 1 = 2
                <foreach collection="classIdList" item="item" index="index" separator=",">
                    OR FIND_IN_SET( #{item}, class_id ) > 0
                </foreach>
                )
            </if>
            <if test="title != null and title != ''">
                AND o.title LIKE CONCAT('%', #{title}, '%')
            </if>
            <if test="testType != null">
                AND o.test_type = #{testType}
            </if>
            <if test="testFlag != null">
                AND o.id <if test="testFlag == 0">NOT</if> IN (SELECT topic_id FROM t_mental_test_result WHERE user_id = #{userId})
            </if>
            <if test="statusFlag != null">
                AND o.status_flag = #{statusFlag}
            </if>
        </where>
    </select>
</mapper>
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/mapping/OrderConsultOneMapper.xml
New file
@@ -0,0 +1,32 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.stylefeng.guns.modular.business.mapper.OrderConsultOneMapper">
    <select id="getStatOrderList" resultType="java.util.Map">
        SELECT
            DATE_FORMAT( create_time, #{dateFormat} ) `time`,
            SUM( order_amount ) `data`,
            COUNT( 1 ) `number`
        FROM
            t_order_consult_one o
        <where>
            <if test="statusList != null and statusList.size != 0">
                AND o.status_flag IN
                <foreach collection="statusList" item="item" open="(" separator="," close=")">
                    #{item}
                </foreach>
            </if>
            <if test="workerId != null">
                AND o.goods_id = #{workerId}
            </if>
            <if test="beginTime != null and beginTime != ''">
                AND o.create_time <![CDATA[ >= ]]> #{beginTime}
            </if>
            <if test="endTime != null and endTime != ''">
                AND o.create_time <![CDATA[ <= ]]> #{endTime}
            </if>
        </where>
        GROUP BY `time`
    </select>
</mapper>
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/mapping/OrderMentalTestMapper.xml
New file
@@ -0,0 +1,82 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.stylefeng.guns.modular.business.mapper.OrderMentalTestMapper">
    <select id="getPage" resultType="cn.stylefeng.guns.modular.business.dto.OrderMentalTestPageDTO">
        SELECT
            o.id id, o.order_no,
            o.create_time test_create_time,
            tt.*, tt.id topicId,
            tu.nick_name, tu.telephone
        FROM
            t_order_mental_test o
            LEFT JOIN t_mental_test_topic tt ON o.goods_id = tt.id
            LEFT JOIN toc_customer tu ON tu.customer_id = o.user_id
        <where>
            <if test="adminView != null and adminView == 1">
                AND o.status_flag = 1 AND ( ( tt.test_type = 0 AND o.test_flag = 1 ) OR tt.test_type = 1 OR o.is_back = 1 )
            </if>
            <if test="title != null and title != ''">
                AND tt.title LIKE CONCAT('%', #{title}, '%')
            </if>
            <if test="testType != null">
                AND tt.test_type = #{testType}
            </if>
            <if test="statusFlag != null">
                AND o.status_flag = #{statusFlag}
            </if>
            <if test="nickName != null and nickName != ''">
                AND tu.nick_name LIKE CONCAT('%', #{nickName}, '%')
            </if>
            <if test="telephone != null and telephone != ''">
                AND tu.telephone LIKE CONCAT('%', #{telephone}, '%')
            </if>
        </where>
        ORDER BY o.create_time DESC
    </select>
    <select id="getInfoById" resultType="cn.stylefeng.guns.modular.business.dto.OrderMentalTestDetailDTO">
        SELECT
            o.*,
            t.*, t.id topicId,
            tr.*,
            worker.nick_name consultWorkerName
        FROM
            t_order_mental_test o
            LEFT JOIN t_mental_test_topic t ON o.goods_id = t.id
            LEFT JOIN t_mental_test_record tr ON tr.answer_no = o.order_no
            LEFT JOIN toc_customer worker ON worker.customer_id = tr.consult_worker_id
        <where>
            AND o.id = #{id}
        </where>
        LIMIT 1
    </select>
    <select id="getStatOrderList" resultType="java.util.Map">
        SELECT
            DATE_FORMAT( create_time, #{dateFormat} ) `time`,
            SUM( order_amount ) `data`,
            COUNT( 1 ) `number`
        FROM
            t_order_mental_test o
        <where>
            <if test="statusList != null and statusList.size != 0">
                AND o.status_flag IN
                <foreach collection="statusList" item="item" open="(" separator="," close=")">
                    #{item}
                </foreach>
            </if>
            <if test="workerId != null">
                AND o.user_id = #{workerId}
            </if>
            <if test="beginTime != null and beginTime != ''">
                AND o.create_time <![CDATA[ >= ]]> #{beginTime}
            </if>
            <if test="endTime != null and endTime != ''">
                AND o.create_time <![CDATA[ <= ]]> #{endTime}
            </if>
        </where>
        GROUP BY `time`
    </select>
</mapper>
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/mapping/PsychologicalColumnMapper.xml
New file
@@ -0,0 +1,24 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.stylefeng.guns.modular.business.mapper.PsychologicalColumnMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="cn.stylefeng.guns.modular.business.entity.PsychologicalColumn">
        <id column="id" property="id" />
        <result column="article_title" property="articleTitle" />
        <result column="article_content" property="articleContent" />
        <result column="release_time" property="releaseTime" />
        <result column="create_user" property="createUser" />
        <result column="is_delete" property="isDelete" />
        <result column="create_time" property="createTime" />
        <result column="update_user" property="updateUser" />
        <result column="update_time" property="updateTime" />
        <result column="read_num" property="readNum" />
    </resultMap>
    <!-- 通用查询结果列 -->
    <sql id="Base_Column_List">
        id, article_title, article_content, release_time, create_user, is_delete, create_time, update_user, update_time, read_num
    </sql>
</mapper>
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/mapping/PsychologicalReadMapper.xml
New file
@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.stylefeng.guns.modular.business.mapper.PsychologicalReadMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="cn.stylefeng.guns.modular.business.entity.PsychologicalRead">
        <id column="id" property="id" />
        <result column="user_id" property="userId" />
        <result column="psychological_column_id" property="psychologicalColumnId" />
        <result column="read_time" property="readTime" />
    </resultMap>
    <!-- 通用查询结果列 -->
    <sql id="Base_Column_List">
        id, user_id, psychological_column_id, read_time
    </sql>
</mapper>
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/mapping/StoreAppointmentMapper.xml
New file
@@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.stylefeng.guns.modular.business.mapper.StoreAppointmentMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="cn.stylefeng.guns.modular.business.entity.StoreAppointment">
        <id column="id" property="id" />
        <result column="status_flag" property="statusFlag" />
        <result column="is_delete" property="isDelete" />
        <result column="create_time" property="createTime" />
        <result column="user_id" property="userId" />
        <result column="user_name" property="userName" />
        <result column="phone" property="phone" />
        <result column="remark" property="remark" />
    </resultMap>
    <!-- 通用查询结果列 -->
    <sql id="Base_Column_List">
        id, status_flag, is_delete, create_time, user_id, user_name, phone, remark
    </sql>
</mapper>
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/mapping/SystemSetMapper.xml
New file
@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.stylefeng.guns.modular.business.mapper.SystemSetMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="cn.stylefeng.guns.modular.business.entity.SystemSet">
        <id column="id" property="id" />
        <result column="key_str" property="keyStr" />
        <result column="content" property="content" />
        <result column="remark" property="remark" />
    </resultMap>
    <!-- 通用查询结果列 -->
    <sql id="Base_Column_List">
        id, key_str, content, remark
    </sql>
</mapper>
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/mapping/TotalReportMapper.xml
New file
@@ -0,0 +1,174 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.stylefeng.guns.modular.business.mapper.TotalReportMapper">
    <select id="courseTotalData" resultType="java.util.Map" parameterType="cn.stylefeng.guns.modular.business.dto.request.TotalRequest">
        SELECT DATE_FORMAT( tco.create_time, #{dateFormat}  ) time,IFNULL(SUM(tco.pay_amount),0) data,count(1) number FROM t_course_order tco
        WHERE
        tco.status_flag IN (1,2)
        <if test="userId != null">
            AND ( tco.course_user_id = #{userId} OR tco.tutoring_user_id = #{userId} )
        </if>
        <if test="beginTime != null and beginTime != ''">
            AND tco.create_time <![CDATA[ >= ]]> #{beginTime}
        </if>
        <if test="endTime != null and endTime != ''">
            AND  tco.create_time <![CDATA[ <= ]]> #{endTime}
        </if>
        GROUP BY time
    </select>
    <select id="mentalTestTotalData" resultType="java.util.Map" parameterType="cn.stylefeng.guns.modular.business.dto.request.TotalRequest">
        SELECT DATE_FORMAT( o.create_time, #{dateFormat} ) time,IFNULL(SUM(o.pay_amount),0) data,count(1) number FROM
            t_order_mental_test o
        WHERE
            o.status_flag = 1
        <if test="beginTime != null and beginTime != ''">
            AND o.create_time  <![CDATA[ >= ]]> #{beginTime}
        </if>
        <if test="endTime != null and endTime != ''">
            AND o.create_time <![CDATA[ <= ]]> #{endTime}
        </if>
        GROUP BY time
    </select>
    <select id="orderConsultOneTotalData" resultType="java.util.Map" parameterType="cn.stylefeng.guns.modular.business.dto.request.TotalRequest">
        SELECT DATE_FORMAT( o.create_time, #{dateFormat} ) time,IFNULL(SUM(o.pay_amount),0) data,count(1) number FROM
            t_order_consult_one o
        WHERE
            o.status_flag = 1
        <if test="userId != null">
            AND ( o.goods_id = #{userId} )
        </if>
        <if test="beginTime != null and beginTime != ''">
            AND o.create_time <![CDATA[ >= ]]> #{beginTime}
        </if>
        <if test="endTime != null and endTime != ''">
            AND o.create_time <![CDATA[ <= ]]> #{endTime}
        </if>
        GROUP BY time
    </select>
    <select id="counsellingTotalData" resultType="java.util.Map"
            parameterType="cn.stylefeng.guns.modular.business.dto.request.TotalRequest">
        SELECT DATE_FORMAT( tco.create_time, #{dateFormat}  ) time,IFNULL(SUM(tco.pay_amount),0) data,count(1) number FROM t_counselling_order tco
        INNER JOIN t_counselling_info tci ON tci.id = tco.counselling_info_id
        WHERE
        tco.status_flag IN (1,2)
        <if test="userId != null">
            AND (tci.user_id = #{userId} OR tco.companion_user_id = #{userId} OR tco.consultant_user_id = #{userId} )
        </if>
        <if test="beginTime != null and beginTime != ''">
            AND  tco.create_time <![CDATA[ >= ]]> #{beginTime}
        </if>
        <if test="endTime != null and endTime != ''">
            AND  tco.create_time <![CDATA[ <= ]]> #{endTime}
        </if>
        GROUP BY time
    </select>
    <select id="counsellingOrderTypeTotalData" resultType="java.util.Map">
        SELECT type,IFNULL(SUM(number),0) number  FROM
        (
            SELECT CASE WHEN tco.order_type =1 THEN '首次面诊' ELSE '咨询疗程'  END  type,
            COUNT(tco.id) number FROM t_counselling_order tco
            INNER JOIN t_counselling_info tci ON tci.id = tco.counselling_info_id
            WHERE
            tco.status_flag IN (1,2)
            <if test="userId != null">
                AND (tci.user_id = #{userId} OR tco.companion_user_id = #{userId} OR tco.consultant_user_id = #{userId} )
            </if>
            <if test="beginTime != null and beginTime != ''">
                AND  tco.create_time <![CDATA[ >= ]]> #{beginTime}
            </if>
            <if test="endTime != null and endTime != ''">
                AND  tco.create_time <![CDATA[ <= ]]> #{endTime}
            </if>
            GROUP BY tco.order_type
        ) total
        GROUP BY type
    </select>
    <select id="counsellingTypeTotalData" resultType="java.util.Map">
        SELECT CASE WHEN tci.counselling_type =1 THEN '首席咨询师' ELSE '明星咨询师'  END  type,
        COUNT(DISTINCT tco.counselling_info_id) number FROM t_counselling_order tco
        INNER JOIN t_counselling_info tci ON tci.id = tco.counselling_info_id
        WHERE
        tco.status_flag IN (1,2)
        <if test="userId != null">
            AND (tci.user_id = #{userId} OR tco.companion_user_id = #{userId} OR tco.consultant_user_id = #{userId} )
        </if>
        <if test="beginTime != null and beginTime != ''">
            AND  tco.create_time <![CDATA[ >= ]]> #{beginTime}
        </if>
        <if test="endTime != null and endTime != ''">
            AND tco.create_time <![CDATA[ <= ]]> #{endTime}
        </if>
        GROUP BY     tci.counselling_type
    </select>
    <select id="counsellingBuyTotal" resultType="java.lang.Long">
        SELECT count(DISTINCT tci.user_id) number FROM t_counselling_order tco
        INNER JOIN t_counselling_info tci ON tci.id = tco.counselling_info_id
        WHERE
        tco.status_flag IN (1,2)
        <if test="userId != null">
            AND (tci.user_id = #{userId} OR tco.companion_user_id = #{userId} OR tco.consultant_user_id = #{userId} )
        </if>
        <if test="beginTime != null and beginTime != ''">
            AND  tco.create_time <![CDATA[ >= ]]> #{beginTime}
        </if>
        <if test="endTime != null and endTime != ''">
            AND  tco.create_time <![CDATA[ <= ]]> #{endTime}
        </if>
    </select>
    <select id="courseBuyTotal" resultType="java.lang.Long">
        SELECT count(DISTINCT tco.user_id) number FROM t_course_order tco
        WHERE
        tco.status_flag IN (1,2)
        <if test="userId != null">
            AND ( tco.course_user_id = #{userId} OR tco.tutoring_user_id = #{userId} )
        </if>
        <if test="beginTime != null and beginTime != ''">
            AND tco.create_time <![CDATA[ >= ]]> #{beginTime}
        </if>
        <if test="endTime != null and endTime != ''">
            AND  tco.create_time <![CDATA[ <= ]]> #{endTime}
        </if>
    </select>
    <select id="courseNameTotalData" resultType="java.util.Map">
        SELECT tc.course_name courseName,COUNT(tco.id) number FROM t_course_order tco
        INNER JOIN t_course tc ON tc.id = tco.course_id
        WHERE
        tco.status_flag IN (1,2)
        <if test="userId != null">
            AND ( tco.course_user_id = #{userId} OR tco.tutoring_user_id = #{userId} )
        </if>
        <if test="beginTime != null and beginTime != ''">
            AND tco.create_time <![CDATA[ >= ]]> #{beginTime}
        </if>
        <if test="endTime != null and endTime != ''">
            AND tco.create_time <![CDATA[ <= ]]> #{endTime}
        </if>
        GROUP BY tc.course_name
    </select>
    <select id="courseTagTotalData" resultType="java.util.Map">
        SELECT tct.tag_name tagName,COUNT(tco.id) number FROM t_course_order tco
        INNER JOIN t_course tc ON tc.id = tco.course_id
        INNER JOIN t_course_tag tct ON  FIND_IN_SET(tct.id,tc.course_tag_ids)
        WHERE
        tco.status_flag IN (1,2)
        <if test="userId != null">
            AND ( tco.course_user_id = #{userId} OR tco.tutoring_user_id = #{userId} )
        </if>
        <if test="beginTime != null and beginTime != ''">
            AND  tco.create_time <![CDATA[ >= ]]> #{beginTime}
        </if>
        <if test="endTime != null and endTime != ''">
            AND tco.create_time <![CDATA[ <= ]]> #{endTime}
        </if>
        GROUP BY     tct.id
    </select>
</mapper>
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/mapper/mapping/UserEvaluateMapper.xml
New file
@@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.stylefeng.guns.modular.business.mapper.UserEvaluateMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="cn.stylefeng.guns.modular.business.entity.UserEvaluate">
        <id column="id" property="id" />
        <result column="user_id" property="userId" />
        <result column="buiness_type" property="buinessType" />
        <result column="buiness_id" property="buinessId" />
        <result column="score" property="score" />
        <result column="content" property="content" />
        <result column="create_user" property="createUser" />
        <result column="is_delete" property="isDelete" />
        <result column="create_time" property="createTime" />
        <result column="update_user" property="updateUser" />
        <result column="update_time" property="updateTime" />
    </resultMap>
    <!-- 通用查询结果列 -->
    <sql id="Base_Column_List">
        id, user_id, buiness_type, buiness_id, score, content, create_user, is_delete, create_time, update_user, update_time
    </sql>
</mapper>
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/ExcelService.java
New file
@@ -0,0 +1,14 @@
package cn.stylefeng.guns.modular.business.service;
import java.util.List;
import java.util.Map;
public interface ExcelService {
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/IAreaService.java
New file
@@ -0,0 +1,20 @@
package cn.stylefeng.guns.modular.business.service;
import cn.stylefeng.guns.modular.business.entity.Area;
import com.baomidou.mybatisplus.extension.service.IService;
/**
 * <p>
 * 地区码表 服务类
 * </p>
 *
 * @author guohongjin
 * @since 2023-12-27
 */
public interface IAreaService extends IService<Area> {
    String getNameByCode(String code);
    String getNameByCodeAddPrefix(String prefix, String code);
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/IBannerService.java
New file
@@ -0,0 +1,18 @@
package cn.stylefeng.guns.modular.business.service;
import cn.stylefeng.guns.modular.business.entity.Banner;
import com.baomidou.mybatisplus.extension.service.IService;
/**
 * <p>
 * banner 服务类
 * </p>
 *
 * @author goupan
 * @since 2024-01-01
 */
public interface IBannerService extends IService<Banner> {
    Banner wrapperBannerByJumpModule(Banner banner);
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/IContractRecordService.java
New file
@@ -0,0 +1,16 @@
package cn.stylefeng.guns.modular.business.service;
import cn.stylefeng.guns.modular.business.entity.ContractRecord;
import com.baomidou.mybatisplus.extension.service.IService;
/**
 * <p>
 * 合同签订记录 服务类
 * </p>
 *
 * @author goupan
 * @since 2024-01-01
 */
public interface IContractRecordService extends IService<ContractRecord> {
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/ICounsellingInfoService.java
New file
@@ -0,0 +1,32 @@
package cn.stylefeng.guns.modular.business.service;
import cn.stylefeng.guns.modular.business.entity.CounsellingInfo;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
/**
 * <p>
 * 咨询师信息 服务类
 * </p>
 *
 * @author goupan
 * @since 2024-01-01
 */
public interface ICounsellingInfoService extends IService<CounsellingInfo> {
    /**
     * 查询标签是否被引用
     * @param tagIds 标签ids
     * @return
     */
    long getCountCounsellingInfo(List<String> tagIds);
    /**
     * 添加或者修改咨询师信息
     * @param counsellingInfo
     */
    void saveOrUpdateCounsellingInfo(CounsellingInfo counsellingInfo);
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/ICounsellingOrderReservationService.java
New file
@@ -0,0 +1,64 @@
package cn.stylefeng.guns.modular.business.service;
import cn.stylefeng.guns.modular.business.dto.CounsellingOrderReservationRequestDTO;
import cn.stylefeng.guns.modular.business.dto.UserCounsellingTotalDTO;
import cn.stylefeng.guns.modular.business.dto.request.UserCounsellingOrderReservationRequestDTO;
import cn.stylefeng.guns.modular.business.entity.CounsellingOrderReservation;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
/**
 * <p>
 * 咨询订单预约记录 服务类
 * </p>
 *
 * @author guohongjin
 * @since 2024-01-02
 */
public interface ICounsellingOrderReservationService extends IService<CounsellingOrderReservation> {
    /**
     * 分页查询预约记录
     * @param page 分页对象
     * @param counsellingOrderReservationRequestDTO 查询条件
     * @return
     */
    Page<CounsellingOrderReservation> findPage(Page page, CounsellingOrderReservationRequestDTO counsellingOrderReservationRequestDTO);
    /**
     * 分页查询预约记录
     * @param page 分页对象
     * @param counsellingOrderReservationRequestDTO 查询条件
     * @return
     */
    Page<CounsellingOrderReservation> findReservationPage(Page page, CounsellingOrderReservationRequestDTO counsellingOrderReservationRequestDTO);
    /**
     * 工作人员分页查询预约记录
     * @param page 分页对象
     * @param counsellingOrderReservationRequestDTO 查询条件
     * @return
     */
    Page<CounsellingOrderReservation> findWorkPage(Page page, CounsellingOrderReservationRequestDTO counsellingOrderReservationRequestDTO);
    /**
     * 根据用户id查询预约记录
     * @param page
     * @param userCounsellingOrderReservationRequestDTO
     * @return
     */
    Page<CounsellingOrderReservation> findOrderReservationByUserIdPage(Page page, UserCounsellingOrderReservationRequestDTO userCounsellingOrderReservationRequestDTO);
    /**
     * 统计课时
     * @param userCounsellingOrderReservationRequestDTO
     * @return
     */
    UserCounsellingTotalDTO getCounsellingNumTotalByUserId(UserCounsellingOrderReservationRequestDTO userCounsellingOrderReservationRequestDTO);
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/ICounsellingOrderService.java
New file
@@ -0,0 +1,58 @@
package cn.stylefeng.guns.modular.business.service;
import cn.stylefeng.guns.modular.business.dto.CounsellingOrderResponseDTO;
import cn.stylefeng.guns.modular.business.dto.request.CounsellingOrderRequest;
import cn.stylefeng.guns.modular.business.dto.request.CreateCounsellingOrderRequest;
import cn.stylefeng.guns.modular.business.dto.request.OrderPayRequest;
import cn.stylefeng.guns.modular.business.entity.CounsellingOrder;
import cn.stylefeng.guns.modular.business.entity.CourseOrder;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import org.apache.ibatis.annotations.Param;
/**
 * <p>
 * 咨询订单信息 服务类
 * </p>
 *
 * @author guohongjin
 * @since 2024-01-02
 */
public interface ICounsellingOrderService extends IService<CounsellingOrder> {
    /**
     * 分页查询咨询订单
     * @param page
     * @param counsellingOrderRequest 咨询订单请求
     * @return
     */
    Page<CounsellingOrderResponseDTO> findCounsellingOrderPage(Page<CounsellingOrderRequest> page, CounsellingOrderRequest counsellingOrderRequest);
    /**
     * 工作人员端分页查询咨询订单
     * @param page
     * @param counsellingOrderRequest 咨询订单请求
     * @return
     */
    Page<CounsellingOrderResponseDTO> findWorkCounsellingOrderPage(Page<CounsellingOrderRequest> page, CounsellingOrderRequest counsellingOrderRequest);
    /**
     * 创建咨询订单
     * @param counsellingOrderRequest
     */
    CounsellingOrder createCounsellingOrder(CreateCounsellingOrderRequest counsellingOrderRequest);
   void payCounsellingOrder(OrderPayRequest orderPayRequest);
    /**
     * 根据订单号查询咨询订单信息
     * @param orderNo
     * @return
     */
    CounsellingOrder getCounsellingOrderByNo(String orderNo);
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/ICounsellingReservationRecordService.java
New file
@@ -0,0 +1,16 @@
package cn.stylefeng.guns.modular.business.service;
import cn.stylefeng.guns.modular.business.entity.CounsellingReservationRecord;
import com.baomidou.mybatisplus.extension.service.IService;
/**
 * <p>
 * 咨询记录信息 服务类
 * </p>
 *
 * @author guohongjin
 * @since 2024-01-02
 */
public interface ICounsellingReservationRecordService extends IService<CounsellingReservationRecord> {
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/ICounsellingReservationWorkService.java
New file
@@ -0,0 +1,16 @@
package cn.stylefeng.guns.modular.business.service;
import cn.stylefeng.guns.modular.business.entity.CounsellingReservationWork;
import com.baomidou.mybatisplus.extension.service.IService;
/**
 * <p>
 * 咨询作业 服务类
 * </p>
 *
 * @author guohongjin
 * @since 2024-01-02
 */
public interface ICounsellingReservationWorkService extends IService<CounsellingReservationWork> {
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/ICounsellingSetMealService.java
New file
@@ -0,0 +1,16 @@
package cn.stylefeng.guns.modular.business.service;
import cn.stylefeng.guns.modular.business.entity.CounsellingSetMeal;
import com.baomidou.mybatisplus.extension.service.IService;
/**
 * <p>
 * 咨询套餐信息 服务类
 * </p>
 *
 * @author goupan
 * @since 2024-01-01
 */
public interface ICounsellingSetMealService extends IService<CounsellingSetMeal> {
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/ICounsellingSpecialTimeConfigService.java
New file
@@ -0,0 +1,16 @@
package cn.stylefeng.guns.modular.business.service;
import cn.stylefeng.guns.modular.business.entity.CounsellingSpecialTimeConfig;
import com.baomidou.mybatisplus.extension.service.IService;
/**
 * <p>
 * 咨询预约特殊时间配置 服务类
 * </p>
 *
 * @author guohongjin
 * @since 2024-01-02
 */
public interface ICounsellingSpecialTimeConfigService extends IService<CounsellingSpecialTimeConfig> {
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/ICounsellingTagService.java
New file
@@ -0,0 +1,16 @@
package cn.stylefeng.guns.modular.business.service;
import cn.stylefeng.guns.modular.business.entity.CounsellingTag;
import com.baomidou.mybatisplus.extension.service.IService;
/**
 * <p>
 * 咨询擅长领域标签表 服务类
 * </p>
 *
 * @author goupan
 * @since 2024-01-01
 */
public interface ICounsellingTagService extends IService<CounsellingTag> {
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/ICounsellingTimeConfigService.java
New file
@@ -0,0 +1,16 @@
package cn.stylefeng.guns.modular.business.service;
import cn.stylefeng.guns.modular.business.entity.CounsellingTimeConfig;
import com.baomidou.mybatisplus.extension.service.IService;
/**
 * <p>
 * 咨询预约时间配置 服务类
 * </p>
 *
 * @author guohongjin
 * @since 2024-01-02
 */
public interface ICounsellingTimeConfigService extends IService<CounsellingTimeConfig> {
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/ICounsellingUserService.java
New file
@@ -0,0 +1,29 @@
package cn.stylefeng.guns.modular.business.service;
import cn.stylefeng.guns.modular.business.dto.CounsellingOrderResponseDTO;
import cn.stylefeng.guns.modular.business.dto.request.CounsellingOrderRequest;
import cn.stylefeng.guns.modular.business.dto.request.CounsellingUserRequest;
import cn.stylefeng.guns.modular.business.entity.CounsellingUser;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
/**
 * <p>
 * 用户咨询师课时信息 服务类
 * </p>
 *
 * @author guohongjin
 * @since 2024-02-29
 */
public interface ICounsellingUserService extends IService<CounsellingUser> {
    /**
     * 分页查询咨询用户信息
     * @param page
     * @param counsellingUserRequest 咨询用户信息请求
     * @return
     */
    Page<CounsellingUser> findCounsellingUserPage(Page<CounsellingUser> page, CounsellingUserRequest counsellingUserRequest);
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/ICourseChapterService.java
New file
@@ -0,0 +1,26 @@
package cn.stylefeng.guns.modular.business.service;
import cn.stylefeng.guns.modular.business.entity.CourseChapter;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
/**
 * <p>
 * 章节管理 服务类
 * </p>
 *
 * @author goupan
 * @since 2024-01-01
 */
public interface ICourseChapterService extends IService<CourseChapter> {
    /**
     * 根据课程id获取章节层次信息
     * @param courseId 课程id
     * @return
     */
    List<CourseChapter> getAllByCourseId(Long courseId);
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/ICourseOrderService.java
New file
@@ -0,0 +1,63 @@
package cn.stylefeng.guns.modular.business.service;
import cn.stylefeng.guns.modular.business.dto.CounsellingOrderResponseDTO;
import cn.stylefeng.guns.modular.business.dto.CourseOrderResponseDTO;
import cn.stylefeng.guns.modular.business.dto.CourseResponseDTO;
import cn.stylefeng.guns.modular.business.dto.request.CounsellingOrderRequest;
import cn.stylefeng.guns.modular.business.dto.request.CourseOrderRequest;
import cn.stylefeng.guns.modular.business.dto.request.CoursePlaceOrderRequest;
import cn.stylefeng.guns.modular.business.dto.request.OrderPayRequest;
import cn.stylefeng.guns.modular.business.entity.CourseOrder;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
/**
 * <p>
 * 课程订单信息 服务类
 * </p>
 *
 * @author guohongjin
 * @since 2024-01-02
 */
public interface ICourseOrderService extends IService<CourseOrder> {
    /**
     * 分页查询课程订单
     * @param page
     * @param courseOrderRequest 课程订单请求
     * @return
     */
    Page<CourseOrderResponseDTO> findCounseOrderPage(Page<CourseOrderResponseDTO> page, CourseOrderRequest courseOrderRequest);
    /**
     *  根据订单查询订单信息
     * @param orderId 订单id
     * @return
     */
    CourseOrderResponseDTO getCourseChapterInfoByOrderId(Long orderId);
    /**
     *
     * 创建课程订单
     * @param coursePlaceOrderRequest 创建课程订单
     * @return
     */
    CourseOrder createCourseOrder(CoursePlaceOrderRequest coursePlaceOrderRequest);
    /**
     * 支付课程订单
     * @param orderPayRequest
     */
    void payCourseOrder(OrderPayRequest orderPayRequest);
    /**
     * 根据订单编号查询
     * @param orderNo
     * @return
     */
    CourseOrder getCourseOrderByNo(String orderNo);
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/ICourseService.java
New file
@@ -0,0 +1,25 @@
package cn.stylefeng.guns.modular.business.service;
import cn.stylefeng.guns.modular.business.entity.Course;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
/**
 * <p>
 * 课程管理 服务类
 * </p>
 *
 * @author goupan
 * @since 2024-01-01
 */
public interface ICourseService extends IService<Course> {
    /**
     * 查询标签是否被引用
     * @param tagIds 标签ids
     * @return
     */
    long getCountCourse(List<String> tagIds);
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/ICourseStudyNoteService.java
New file
@@ -0,0 +1,16 @@
package cn.stylefeng.guns.modular.business.service;
import cn.stylefeng.guns.modular.business.entity.CourseStudyNote;
import com.baomidou.mybatisplus.extension.service.IService;
/**
 * <p>
 * 课程学习笔记 服务类
 * </p>
 *
 * @author guohongjin
 * @since 2024-01-02
 */
public interface ICourseStudyNoteService extends IService<CourseStudyNote> {
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/ICourseTagService.java
New file
@@ -0,0 +1,16 @@
package cn.stylefeng.guns.modular.business.service;
import cn.stylefeng.guns.modular.business.entity.CourseTag;
import com.baomidou.mybatisplus.extension.service.IService;
/**
 * <p>
 * 课程标签 服务类
 * </p>
 *
 * @author goupan
 * @since 2024-01-01
 */
public interface ICourseTagService extends IService<CourseTag> {
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/ICourseUserLearnedService.java
New file
@@ -0,0 +1,16 @@
package cn.stylefeng.guns.modular.business.service;
import cn.stylefeng.guns.modular.business.entity.CourseUserLearned;
import com.baomidou.mybatisplus.extension.service.IService;
/**
 * <p>
 * 课程学习记录 服务类
 * </p>
 *
 * @author guohongjin
 * @since 2024-01-02
 */
public interface ICourseUserLearnedService extends IService<CourseUserLearned> {
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/ICouserChapterLearningRateService.java
New file
@@ -0,0 +1,16 @@
package cn.stylefeng.guns.modular.business.service;
import cn.stylefeng.guns.modular.business.entity.CouserChapterLearningRate;
import com.baomidou.mybatisplus.extension.service.IService;
/**
 * <p>
 * 课程章节学习进度 服务类
 * </p>
 *
 * @author guohongjin
 * @since 2024-01-02
 */
public interface ICouserChapterLearningRateService extends IService<CouserChapterLearningRate> {
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/IHelpService.java
New file
@@ -0,0 +1,16 @@
package cn.stylefeng.guns.modular.business.service;
import cn.stylefeng.guns.modular.business.entity.Help;
import com.baomidou.mybatisplus.extension.service.IService;
/**
 * <p>
 * 帮助 服务类
 * </p>
 *
 * @author goupan
 * @since 2024-01-01
 */
public interface IHelpService extends IService<Help> {
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/IImGroupService.java
New file
@@ -0,0 +1,55 @@
package cn.stylefeng.guns.modular.business.service;
import cn.stylefeng.guns.modular.business.dto.ImGroupUserDto;
import cn.stylefeng.guns.modular.business.entity.ImGroup;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
/**
 * <p>
 * 消息群信息 服务类
 * </p>
 *
 * @author goupan
 * @since 2024-01-01
 */
public interface IImGroupService extends IService<ImGroup> {
    /**
     * 创建群聊
     * @param groupType 群类型:1课程,2咨询
     * @param consultantUserId
     * @param companionUserId
     * @param counsellingUserId
     * @param courseUserId
     * @param tutoringUserId
     */
    void createGroup(Integer groupType, Long consultantUserId,Long companionUserId,
                     Long counsellingUserId,Long courseUserId,Long tutoringUserId,Long userId,Long orderId);
    /**
     * 获取我的群聊
     * @param userId
     * @return
     */
    List<ImGroup> getMyGroup(Long userId, String groupName, Integer statusFlag, String nickName, Integer groupType, String orderId);
    /**
     * 获取群聊用户
     * @param groupId
     * @return
     */
    List<ImGroupUserDto> groupUser(Long groupId);
    /**
     * 修改咨询和幸福顾问
     * @param userId 咨询和幸福顾问id
     * @param groupType 分群类型
     * @param customerId 客户id
     */
    void updateGroupUserForOrderinfo(Long userId,Integer groupType,Long customerId);
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/IImGroupUserService.java
New file
@@ -0,0 +1,16 @@
package cn.stylefeng.guns.modular.business.service;
import cn.stylefeng.guns.modular.business.entity.ImGroupUser;
import com.baomidou.mybatisplus.extension.service.IService;
/**
 * <p>
 * 消息群用户 服务类
 * </p>
 *
 * @author goupan
 * @since 2024-01-01
 */
public interface IImGroupUserService extends IService<ImGroupUser> {
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/IImNoticeService.java
New file
@@ -0,0 +1,16 @@
package cn.stylefeng.guns.modular.business.service;
import cn.stylefeng.guns.modular.business.entity.ImNotice;
import com.baomidou.mybatisplus.extension.service.IService;
/**
 * <p>
 * 消息通知 服务类
 * </p>
 *
 * @author goupan
 * @since 2024-01-01
 */
public interface IImNoticeService extends IService<ImNotice> {
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/IImUserStatusService.java
New file
@@ -0,0 +1,16 @@
package cn.stylefeng.guns.modular.business.service;
import cn.stylefeng.guns.modular.business.entity.ImUserStatus;
import com.baomidou.mybatisplus.extension.service.IService;
/**
 * <p>
 * IM用户在线状态 服务类
 * </p>
 *
 * @author goupan
 * @since 2024-01-11
 */
public interface IImUserStatusService extends IService<ImUserStatus> {
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/IMentalAnalysisSpecialTimeConfigService.java
New file
@@ -0,0 +1,25 @@
package cn.stylefeng.guns.modular.business.service;
import cn.stylefeng.guns.modular.business.dto.request.MentalAnalysisSpecialTimeConfigEdit2Request;
import cn.stylefeng.guns.modular.business.entity.MentalAnalysisSpecialTimeConfig;
import cn.stylefeng.roses.kernel.rule.pojo.response.ResponseData;
import com.baomidou.mybatisplus.extension.service.IService;
/**
 * <p>
 * 性格分析特殊时间配置 服务类
 * </p>
 *
 * @author goupan
 * @since 2024-01-26
 */
public interface IMentalAnalysisSpecialTimeConfigService extends IService<MentalAnalysisSpecialTimeConfig> {
    /**
     * 特殊时段修改
     * @param req
     * @return
     */
    ResponseData editSpecialTimeConfig(MentalAnalysisSpecialTimeConfigEdit2Request req);
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/IMentalAnalysisTimeConfigService.java
New file
@@ -0,0 +1,31 @@
package cn.stylefeng.guns.modular.business.service;
import cn.stylefeng.guns.modular.business.dto.MentalAnalysisTimeConfigPageDTO;
import cn.stylefeng.guns.modular.business.dto.request.MentalAnalysisTimeConfigAddUpdateRequest;
import cn.stylefeng.guns.modular.business.entity.MentalAnalysisTimeConfig;
import cn.stylefeng.roses.kernel.customer.modular.entity.Customer;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.Date;
import java.util.List;
/**
 * <p>
 * 性格分析时间配置 服务类
 * </p>
 *
 * @author goupan
 * @since 2024-01-26
 */
public interface IMentalAnalysisTimeConfigService extends IService<MentalAnalysisTimeConfig> {
    Page<MentalAnalysisTimeConfigPageDTO> getWorkerPage(Page<Object> page, String nickName);
    void addTimeConfig(MentalAnalysisTimeConfigAddUpdateRequest req);
    void editTimeConfig(MentalAnalysisTimeConfigAddUpdateRequest req);
    List<MentalAnalysisTimeConfig> getWorkerListByAppointmentTime(Integer mentalAnalysisStatus, Integer weekDay, String appointmentDay, String beginTimePoint, String endTimePoint);
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/IMentalAnalysisTimeService.java
New file
@@ -0,0 +1,19 @@
package cn.stylefeng.guns.modular.business.service;
import cn.stylefeng.guns.modular.business.dto.request.MentalAnalysisTimeAddUpdateRequest;
import cn.stylefeng.guns.modular.business.entity.MentalAnalysisTime;
import com.baomidou.mybatisplus.extension.service.IService;
/**
 * <p>
 * 性格分析可预约时间 服务类
 * </p>
 *
 * @author guohongjin
 * @since 2024-01-27
 */
public interface IMentalAnalysisTimeService extends IService<MentalAnalysisTime> {
    void updateTime(MentalAnalysisTimeAddUpdateRequest req);
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/IMentalAppointmentService.java
New file
@@ -0,0 +1,57 @@
package cn.stylefeng.guns.modular.business.service;
import cn.stylefeng.guns.modular.business.dto.MentalAppointmentPageDTO;
import cn.stylefeng.guns.modular.business.dto.MentalTestMyMentalAppointmentDTO;
import cn.stylefeng.guns.modular.business.dto.UserMentalAppointmentPageResponseDTO;
import cn.stylefeng.guns.modular.business.entity.MentalAppointment;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.Date;
import java.util.List;
/**
 * <p>
 * 性格分析预约 服务类
 * </p>
 *
 * @author goupan
 * @since 2024-01-01
 */
public interface IMentalAppointmentService extends IService<MentalAppointment> {
    List<MentalTestMyMentalAppointmentDTO> myMentalAppointment(Long userId, String consultantName, List<Integer> statusFlagList);
    /**
     * 性格分析1v1咨询预约
     * @param page
     * @param userId
     * @param name
     * @param telephone
     * @param statusFlag
     * @return
     */
    Page<UserMentalAppointmentPageResponseDTO> userMentalAppointmentPage(Page<Object> page, Long userId, String name, String telephone, Integer statusFlag);
    Page<MentalAppointmentPageDTO> getPage(Page<Object> page, Long counsellingInfoId, String workerNickName, String userNickName, String userTelephone, Integer statusFlag, List<Integer> statusFlagList);
    List<MentalAppointmentPageDTO> mentalAnalysisTimeConfigSchedule(String searchBeginTime, String searchEndTime, Long counsellingInfoId, String workerNickName, String userNickName, String userTelephone, Integer statusFlag, List<Integer> statusFlagList);
    /**
     * 1V1咨询预约取消
     * @param id
     * @return
     */
    boolean mentalAppointmentCancel(Long id);
    /**
     * 预约时间匹配性格分析师
     * @param appointmentDay
     * @param beginTimePoint
     * @param endTimePoint
     * @return
     */
    Long assignMentalAppointmentWorkerId(Date appointmentDay, String beginTimePoint, String endTimePoint);
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/IMentalTestClassService.java
New file
@@ -0,0 +1,16 @@
package cn.stylefeng.guns.modular.business.service;
import cn.stylefeng.guns.modular.business.entity.MentalTestClass;
import com.baomidou.mybatisplus.extension.service.IService;
/**
 * <p>
 * 心理测试分类 服务类
 * </p>
 *
 * @author goupan
 * @since 2024-01-01
 */
public interface IMentalTestClassService extends IService<MentalTestClass> {
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/IMentalTestOptionService.java
New file
@@ -0,0 +1,16 @@
package cn.stylefeng.guns.modular.business.service;
import cn.stylefeng.guns.modular.business.entity.MentalTestOption;
import com.baomidou.mybatisplus.extension.service.IService;
/**
 * <p>
 * 心理测试选项 服务类
 * </p>
 *
 * @author goupan
 * @since 2024-01-01
 */
public interface IMentalTestOptionService extends IService<MentalTestOption> {
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/IMentalTestQuestionService.java
New file
@@ -0,0 +1,16 @@
package cn.stylefeng.guns.modular.business.service;
import cn.stylefeng.guns.modular.business.entity.MentalTestQuestion;
import com.baomidou.mybatisplus.extension.service.IService;
/**
 * <p>
 * 心理测试问题 服务类
 * </p>
 *
 * @author goupan
 * @since 2024-01-01
 */
public interface IMentalTestQuestionService extends IService<MentalTestQuestion> {
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/IMentalTestRecordService.java
New file
@@ -0,0 +1,55 @@
package cn.stylefeng.guns.modular.business.service;
import cn.stylefeng.guns.modular.business.dto.MentalTestMyTestOrderDTO;
import cn.stylefeng.guns.modular.business.dto.MentalTestMyTestTopicDTO;
import cn.stylefeng.guns.modular.business.dto.MentalTestRecordPageDTO;
import cn.stylefeng.guns.modular.business.entity.MentalTestRecord;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
/**
 * <p>
 * 心理测试记录 服务类
 * </p>
 *
 * @author goupan
 * @since 2024-01-09
 */
public interface IMentalTestRecordService extends IService<MentalTestRecord> {
    /**
     * 我的测试
     * @param userId
     * @return
     */
    List<MentalTestMyTestTopicDTO> myTestTopic(Long userId, Long topicId);
    /**
     * 我的测试(含题库信息)
     * @param mentalAppointmentId
     * @param mentalAppointmentIdList
     * @return
     */
    List<MentalTestMyTestTopicDTO> myTestRecordTopicByMentalAppointmentId(Long mentalAppointmentId, List<Long> mentalAppointmentIdList);
    /**
     * 我的测试(订单)
     * @param userId
     * @param topicId
     * @return
     */
    List<MentalTestMyTestOrderDTO> myTestOrder(Long userId, Long topicId);
    /**
     * 从测试记录中获取1v1咨询师
     * @param mentalTestRecordId
     * @param userId
     * @return
     */
    Long getConsultWorkerIdByRecord(Long mentalTestRecordId, Long userId);
    Page<MentalTestRecordPageDTO> getPage(Page<Object> page, String title, String nickName, String telephone, Integer testType);
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/IMentalTestResultService.java
New file
@@ -0,0 +1,16 @@
package cn.stylefeng.guns.modular.business.service;
import cn.stylefeng.guns.modular.business.entity.MentalTestResult;
import com.baomidou.mybatisplus.extension.service.IService;
/**
 * <p>
 * 心理测试结果 服务类
 * </p>
 *
 * @author goupan
 * @since 2024-01-09
 */
public interface IMentalTestResultService extends IService<MentalTestResult> {
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/IMentalTestResultSetService.java
New file
@@ -0,0 +1,16 @@
package cn.stylefeng.guns.modular.business.service;
import cn.stylefeng.guns.modular.business.entity.MentalTestResultSet;
import com.baomidou.mybatisplus.extension.service.IService;
/**
 * <p>
 * 心理测试结果配置 服务类
 * </p>
 *
 * @author goupan
 * @since 2024-01-01
 */
public interface IMentalTestResultSetService extends IService<MentalTestResultSet> {
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/IMentalTestTopicService.java
New file
@@ -0,0 +1,47 @@
package cn.stylefeng.guns.modular.business.service;
import cn.stylefeng.guns.modular.business.dto.MentalTestQuestionOptionDTO;
import cn.stylefeng.guns.modular.business.dto.MentalTestTopicPageDTO;
import cn.stylefeng.guns.modular.business.dto.request.MentalTestTopicAddUpdateRequest;
import cn.stylefeng.guns.modular.business.entity.MentalTestTopic;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
/**
 * <p>
 * 心理测试题库 服务类
 * </p>
 *
 * @author goupan
 * @since 2024-01-01
 */
public interface IMentalTestTopicService extends IService<MentalTestTopic> {
    /**
     * 题库分页
     *
     * @param page
     * @param classIds
     * @param title
     * @param testType
     * @param testFlag
     * @param userId
     * @param statusFlag
     * @return
     */
    Page<MentalTestTopicPageDTO> topicPage(Page page, String classIds, String title, Integer testType, Integer testFlag, Long userId, Integer statusFlag);
    void saveTopic(MentalTestTopicAddUpdateRequest req);
    void editTopic(MentalTestTopicAddUpdateRequest req);
    /**
     * 获取心理测试问题、选项
     * @param topicId
     * @return
     */
    List<MentalTestQuestionOptionDTO> getQuestionOptionByTopicId(Long topicId);
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/IOrderConsultOneService.java
New file
@@ -0,0 +1,38 @@
package cn.stylefeng.guns.modular.business.service;
import cn.stylefeng.guns.modular.business.entity.OrderConsultOne;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
import java.util.Map;
/**
 * <p>
 * 心理咨询1V1订单 服务类
 * </p>
 *
 * @author goupan
 * @since 2024-01-01
 */
public interface IOrderConsultOneService extends IService<OrderConsultOne> {
    /**
     * 根据订单号查询订单
     *
     * @param orderNo
     * @return
     */
    OrderConsultOne getOrderByNo(String orderNo);
    /**
     * 统计订单数据
     */
    List<Map<String, Object>> getStatOrderList(String dateFormat, String beginTime, String endTime, Long workerId, List<Integer> statusList);
    /**
     * 是否支付1v1咨询订单
     * @return
     */
    boolean getIsPayOrderConsultOne(Long orderConsultOneId, String mentalTestOrderNo);
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/IOrderMentalTestService.java
New file
@@ -0,0 +1,70 @@
package cn.stylefeng.guns.modular.business.service;
import cn.stylefeng.guns.modular.business.dto.OrderMentalTestDetailDTO;
import cn.stylefeng.guns.modular.business.dto.OrderMentalTestPageDTO;
import cn.stylefeng.guns.modular.business.entity.OrderMentalTest;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
import java.util.Map;
/**
 * <p>
 * 心理测试订单 服务类
 * </p>
 *
 * @author goupan
 * @since 2024-01-01
 */
public interface IOrderMentalTestService extends IService<OrderMentalTest> {
    /**
     * 根据订单号获取订单
     *
     * @param orderNo
     * @return
     */
    OrderMentalTest getOrderByNo(String orderNo);
    /**
     * 支付成功
     *
     * @param orderNo
     * @param tradeNo
     * @param totalAmount
     * @param payType
     * @return
     */
    Boolean paySuccess(String orderNo, String tradeNo, String totalAmount, Integer payType);
    /**
     * 获取心理测试订单列表
     * @param page
     * @param title
     * @param nickName
     * @param telephone
     * @param testType 测试类型:0免费,1付费
     * @param statusFlag 订单状态
     * @param adminView 后台显示1(免费必须是提交测试的)
     * @return
     */
    Page<OrderMentalTestPageDTO> getPage(Page<Object> page, String title, String nickName, String telephone, Integer testType, Integer statusFlag, Integer adminView);
    OrderMentalTestDetailDTO getInfoById(Long Id);
    /**
     * 创建心理测试订单
     * @param userId 用户ID
     * @param topicId 题库ID
     * @param isNeedPay 是否需要支付,false无须支付直接创建,true需要支付
     * @param isBack 是否后台创建
     * @return
     */
    OrderMentalTest createOrderMentalTest(Long userId, Long topicId, Boolean isNeedPay, Boolean isBack);
    /**
     * 统计订单数据
     */
    List<Map<String, Object>> getStatOrderList(String dateFormat, String beginTime, String endTime, Long workerId, List<Integer> statusList);
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/IPsychologicalColumnService.java
New file
@@ -0,0 +1,16 @@
package cn.stylefeng.guns.modular.business.service;
import cn.stylefeng.guns.modular.business.entity.PsychologicalColumn;
import com.baomidou.mybatisplus.extension.service.IService;
/**
 * <p>
 * 心理专栏管理 服务类
 * </p>
 *
 * @author goupan
 * @since 2024-01-01
 */
public interface IPsychologicalColumnService extends IService<PsychologicalColumn> {
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/IPsychologicalReadService.java
New file
@@ -0,0 +1,16 @@
package cn.stylefeng.guns.modular.business.service;
import cn.stylefeng.guns.modular.business.entity.PsychologicalRead;
import com.baomidou.mybatisplus.extension.service.IService;
/**
 * <p>
 * 心理专栏阅读记录 服务类
 * </p>
 *
 * @author goupan
 * @since 2024-01-01
 */
public interface IPsychologicalReadService extends IService<PsychologicalRead> {
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/IStoreAppointmentService.java
New file
@@ -0,0 +1,16 @@
package cn.stylefeng.guns.modular.business.service;
import cn.stylefeng.guns.modular.business.entity.StoreAppointment;
import com.baomidou.mybatisplus.extension.service.IService;
/**
 * <p>
 * 门店预约 服务类
 * </p>
 *
 * @author goupan
 * @since 2024-01-01
 */
public interface IStoreAppointmentService extends IService<StoreAppointment> {
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/ISysUserBusinessService.java
New file
@@ -0,0 +1,22 @@
package cn.stylefeng.guns.modular.business.service;
import cn.stylefeng.guns.modular.business.dto.request.SysUserResetPwdByIdRequest;
import cn.stylefeng.guns.modular.business.dto.request.SysUserResetPwdRequest;
import cn.stylefeng.roses.kernel.rule.pojo.response.ResponseData;
import cn.stylefeng.roses.kernel.system.modular.user.entity.SysUser;
import com.baomidou.mybatisplus.extension.service.IService;
/**
 * <p>
 * 用户评价表 服务类
 * </p>
 *
 * @author guohongjin
 * @since 2024-01-02
 */
public interface ISysUserBusinessService extends IService<SysUser> {
    ResponseData resetPwd(SysUserResetPwdRequest req);
    ResponseData resetPwdById(SysUserResetPwdByIdRequest req);
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/ISystemSetService.java
New file
@@ -0,0 +1,16 @@
package cn.stylefeng.guns.modular.business.service;
import cn.stylefeng.guns.modular.business.entity.SystemSet;
import com.baomidou.mybatisplus.extension.service.IService;
/**
 * <p>
 * 系统配置(H5、客服电话) 服务类
 * </p>
 *
 * @author goupan
 * @since 2024-01-01
 */
public interface ISystemSetService extends IService<SystemSet> {
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/ITotalReportService.java
New file
@@ -0,0 +1,84 @@
package cn.stylefeng.guns.modular.business.service;
import cn.stylefeng.guns.modular.business.dto.request.TotalRequest;
import java.util.List;
import java.util.Map;
/**
 * 数据统计
 */
public interface ITotalReportService {
    /**
     * 课程统计
     * @param totalRequest
     * @return
     */
   List<Map<String,Object>> courseTotalData( TotalRequest totalRequest);
    /**
     * 心理测试统计
     * @param totalRequest
     * @return
     */
   List<Map<String,Object>> mentalTestTotalData( TotalRequest totalRequest);
    /**
     * 心理测试1v1咨询统计
     * @param totalRequest
     * @return
     */
   List<Map<String,Object>> orderConsultOneTotalData(TotalRequest totalRequest);
    /**
     * 咨询统计
     * @param totalRequest
     * @return
     */
    List<Map<String,Object>> counsellingTotalData( TotalRequest totalRequest);
    /**
     * 课程名称统计
     * @param totalRequest
     * @return
     */
    List<Map<String,Object>> courseNameTotalData(TotalRequest totalRequest);
    /**
     * 课程标签统计
     * @param totalRequest
     * @return
     */
    List<Map<String,Object>> courseTagTotalData(TotalRequest totalRequest);
    /**
     * 课程购买人数
     * @param totalRequest
     * @return
     */
    long courseBuyTotal(TotalRequest totalRequest);
    /**
     * 咨询订单类型
     * @param totalRequest
     * @return
     */
    List<Map<String,Object>> counsellingOrderTypeTotalData( TotalRequest totalRequest);
    /**
     * 咨询师类型
     * @param totalRequest
     * @return
     */
    List<Map<String,Object>> counsellingTypeTotalData( TotalRequest totalRequest);
    /**
     * 咨询已购买人数
     * @param totalRequest
     * @return
     */
    long counsellingBuyTotal(TotalRequest totalRequest);
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/IUserEvaluateService.java
New file
@@ -0,0 +1,16 @@
package cn.stylefeng.guns.modular.business.service;
import cn.stylefeng.guns.modular.business.entity.UserEvaluate;
import com.baomidou.mybatisplus.extension.service.IService;
/**
 * <p>
 * 用户评价表 服务类
 * </p>
 *
 * @author guohongjin
 * @since 2024-01-02
 */
public interface IUserEvaluateService extends IService<UserEvaluate> {
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/impl/AreaServiceImpl.java
New file
@@ -0,0 +1,71 @@
package cn.stylefeng.guns.modular.business.service.impl;
import cn.hutool.core.util.StrUtil;
import cn.stylefeng.guns.modular.business.entity.Area;
import cn.stylefeng.guns.modular.business.mapper.AreaMapper;
import cn.stylefeng.guns.modular.business.service.IAreaService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
 * <p>
 * 地区码表 服务实现类
 * </p>
 *
 * @author guohongjin
 * @since 2023-12-27
 */
@Service
public class AreaServiceImpl extends ServiceImpl<AreaMapper, Area> implements IAreaService {
    @Override
    public String getNameByCode(String code) {
        return getNameByCodeAddPrefix(null, code);
    }
    @Override
    public String getNameByCodeAddPrefix(String prefix, String code) {
        String a1 = "", a2 = "", a3 = "", a4 = "";
        if (StrUtil.isBlank(prefix)) {
            prefix = "";
        }
        Area area = this.baseMapper.selectById(code);
        // 4级地址
        if (area != null && area.getLevel() == 4) {
            a4 = prefix + area.getName();
            Area area3 = this.baseMapper.selectById(area.getPid());
            a3 = prefix + area3.getName();
            Area area2 = this.baseMapper.selectById(area3.getPid());
            a2 = prefix + area2.getName();
            Area area1 = this.baseMapper.selectById(area2.getPid());
            a1 = prefix + area1.getName();
        }
        // 3级地址
        if (area != null && area.getLevel() == 3) {
            a3 = prefix + area.getName();
            Area area2 = this.baseMapper.selectById(area.getPid());
            a2 = prefix + area2.getName();
            Area area1 = this.baseMapper.selectById(area2.getPid());
            a1 = prefix + area1.getName();
        }
        // 2级地址
        if (area != null && area.getLevel() == 2) {
            a2 = prefix + area.getName();
            Area area1 = this.baseMapper.selectById(area.getPid());
            a1 = prefix + area1.getName();
        }
        // 1级地址
        if (area != null && area.getLevel() == 1) {
            a1 = prefix + area.getName();
        }
        return a1 + a2 + a3 + a4;
    }
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/impl/BannerServiceImpl.java
New file
@@ -0,0 +1,34 @@
package cn.stylefeng.guns.modular.business.service.impl;
import cn.stylefeng.guns.modular.business.entity.Banner;
import cn.stylefeng.guns.modular.business.mapper.BannerMapper;
import cn.stylefeng.guns.modular.business.service.IBannerService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
 * <p>
 * banner 服务实现类
 * </p>
 *
 * @author goupan
 * @since 2024-01-01
 */
@Service
public class BannerServiceImpl extends ServiceImpl<BannerMapper, Banner> implements IBannerService {
    public Banner wrapperBannerByJumpModule(Banner banner) {
        if (banner != null && banner.getJumpModule() != null && banner.getJumpModule() == 0) {
            // 跳转模块:0不跳转,1心理测试,2课程,3咨询
            banner.setJumpPage(null);
            banner.setJumpId(null);
            return banner;
        } else if (banner != null && banner.getJumpPage() != null && banner.getJumpPage() == 1) {
            // 跳转页面,1主页,2详情页
            banner.setJumpId(null);
            return banner;
        }
        return banner;
    }
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/impl/ContractRecordServiceImpl.java
New file
@@ -0,0 +1,21 @@
package cn.stylefeng.guns.modular.business.service.impl;
import cn.stylefeng.guns.modular.business.entity.ContractRecord;
import cn.stylefeng.guns.modular.business.mapper.ContractRecordMapper;
import cn.stylefeng.guns.modular.business.service.IContractRecordService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
 * <p>
 * 合同签订记录 服务实现类
 * </p>
 *
 * @author goupan
 * @since 2024-01-01
 */
@Service
public class ContractRecordServiceImpl extends ServiceImpl<ContractRecordMapper, ContractRecord> implements IContractRecordService {
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/impl/CounsellingInfoServiceImpl.java
New file
@@ -0,0 +1,137 @@
package cn.stylefeng.guns.modular.business.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.collection.ListUtil;
import cn.hutool.core.util.StrUtil;
import cn.stylefeng.guns.modular.business.entity.CounsellingInfo;
import cn.stylefeng.guns.modular.business.entity.CounsellingSetMeal;
import cn.stylefeng.guns.modular.business.entity.CounsellingTimeConfig;
import cn.stylefeng.guns.modular.business.mapper.CounsellingInfoMapper;
import cn.stylefeng.guns.modular.business.service.ICounsellingInfoService;
import cn.stylefeng.guns.modular.business.service.ICounsellingSetMealService;
import cn.stylefeng.guns.modular.business.service.ICounsellingTimeConfigService;
import cn.stylefeng.guns.utils.GeneralUtil;
import cn.stylefeng.roses.kernel.auth.api.context.LoginContext;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.google.common.collect.Lists;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
/**
 * <p>
 * 咨询师信息 服务实现类
 * </p>
 *
 * @author goupan
 * @since 2024-01-01
 */
@Service
public class CounsellingInfoServiceImpl extends ServiceImpl<CounsellingInfoMapper, CounsellingInfo> implements ICounsellingInfoService {
    @Autowired
    private ICounsellingSetMealService counsellingSetMealService;
    @Autowired
    private ICounsellingTimeConfigService counsellingTimeConfigService;
    @Override
    public long getCountCounsellingInfo(List<String> tagIds) {
        return this.baseMapper.getCountCounsellingInfo(tagIds);
    }
    @Override
    public void saveOrUpdateCounsellingInfo(CounsellingInfo counsellingInfo) {
        //判断是否新增
        if (counsellingInfo.getId() != null){
            counsellingInfo.setUpdateUser(LoginContext.me().getLoginUser().getUserId());
            this.updateById(counsellingInfo);
            //处理所有套餐信息为删除状态
            this.counsellingSetMealService.update(new LambdaUpdateWrapper<CounsellingSetMeal>().set(CounsellingSetMeal::getIsDelete,1)
                    .eq(CounsellingSetMeal::getCounsellingInfoId,counsellingInfo.getId()));
            //生成套餐信息
            if (CollectionUtil.isNotEmpty(counsellingInfo.getCounsellingSetMealList())){
                counsellingInfo.getCounsellingSetMealList().forEach(counsellingSetMeal -> {
                    counsellingSetMeal.setCounsellingInfoId(counsellingInfo.getId());
                });
                this.counsellingSetMealService.saveOrUpdateBatch(counsellingInfo.getCounsellingSetMealList());
            }
            //删除时间配置重新生成
            this.counsellingTimeConfigService.remove(new LambdaQueryWrapper<CounsellingTimeConfig>().eq(CounsellingTimeConfig::getCounsellingInfoId,counsellingInfo.getId()));
            //处理预约时间配置
            if (CollectionUtil.isNotEmpty(counsellingInfo.getTimeConfigDTOList()) ){
                List<CounsellingTimeConfig> counsellingTimeConfigs = new ArrayList<>();
                counsellingInfo.getTimeConfigDTOList().forEach(timeConfigDTO -> {
                    // 模块编号
                    String moduleNo = GeneralUtil.generateModuleNo();
                    //星期几
                    List<String> weekList = ListUtil.toList(timeConfigDTO.getWeeks().split(","));
                    //时间点
                    List<String> timePointList = ListUtil.toList(timeConfigDTO.getTimePoints().split(","));
                    weekList.stream().forEach(week->{
                        timePointList.forEach(timePoint ->{
                            CounsellingTimeConfig counsellingTimeConfig = new CounsellingTimeConfig();
                            counsellingTimeConfig.setModuleNo(moduleNo);
                            counsellingTimeConfig.setWeekDay(Integer.parseInt(week));
                            counsellingTimeConfig.setCounsellingInfoId(counsellingInfo.getId());
                            counsellingTimeConfig.setBeginTimePoint(timePoint.split("-")[0]);
                            counsellingTimeConfig.setEndTimePoint(timePoint.split("-")[1]);
                            counsellingTimeConfigs.add(counsellingTimeConfig);
                        });
                    });
                });
                if (CollectionUtil.isNotEmpty(counsellingTimeConfigs)){
                    this.counsellingTimeConfigService.saveBatch(counsellingTimeConfigs);
                }
            }
        }else{
            counsellingInfo.setListingStatus(1);
            counsellingInfo.setCreateUser(LoginContext.me().getLoginUser().getUserId());
            this.save(counsellingInfo);
            //生成套餐信息
            if (CollectionUtil.isNotEmpty(counsellingInfo.getCounsellingSetMealList())){
                counsellingInfo.getCounsellingSetMealList().forEach(counsellingSetMeal -> {
                    counsellingSetMeal.setCounsellingInfoId(counsellingInfo.getId());
                });
                this.counsellingSetMealService.saveBatch(counsellingInfo.getCounsellingSetMealList());
            }
            //生成预约时间配置
            if (CollectionUtil.isNotEmpty(counsellingInfo.getTimeConfigDTOList())){
                List<CounsellingTimeConfig> counsellingTimeConfigs = new ArrayList<>();
                counsellingInfo.getTimeConfigDTOList().forEach(timeConfigDTO -> {
                    // 模块编号
                    String moduleNo = GeneralUtil.generateModuleNo();
                    //星期几
                    List<String> weekList = ListUtil.toList(timeConfigDTO.getWeeks().split(","));
                    //时间点
                    List<String> timePointList = ListUtil.toList(timeConfigDTO.getTimePoints().split(","));
                    weekList.stream().forEach(week->{
                        timePointList.forEach(timePoint ->{
                            CounsellingTimeConfig counsellingTimeConfig = new CounsellingTimeConfig();
                            counsellingTimeConfig.setModuleNo(moduleNo);
                            counsellingTimeConfig.setWeekDay(Integer.parseInt(week));
                            counsellingTimeConfig.setCounsellingInfoId(counsellingInfo.getId());
                            counsellingTimeConfig.setBeginTimePoint(timePoint.split("-")[0]);
                            counsellingTimeConfig.setEndTimePoint(timePoint.split("-")[1]);
                            counsellingTimeConfigs.add(counsellingTimeConfig);
                        });
                    });
                });
                if (CollectionUtil.isNotEmpty(counsellingTimeConfigs)){
                    this.counsellingTimeConfigService.saveBatch(counsellingTimeConfigs);
                }
            }
        }
    }
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/impl/CounsellingOrderReservationServiceImpl.java
New file
@@ -0,0 +1,68 @@
package cn.stylefeng.guns.modular.business.service.impl;
import cn.stylefeng.guns.modular.business.dto.CounsellingOrderReservationRequestDTO;
import cn.stylefeng.guns.modular.business.dto.UserCounsellingTotalDTO;
import cn.stylefeng.guns.modular.business.dto.request.UserCounsellingOrderReservationRequestDTO;
import cn.stylefeng.guns.modular.business.entity.CounsellingOrderReservation;
import cn.stylefeng.guns.modular.business.mapper.CounsellingOrderReservationMapper;
import cn.stylefeng.guns.modular.business.service.ICounsellingOrderReservationService;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
 * <p>
 * 咨询订单预约记录 服务实现类
 * </p>
 *
 * @author guohongjin
 * @since 2024-01-02
 */
@Service
public class CounsellingOrderReservationServiceImpl extends ServiceImpl<CounsellingOrderReservationMapper, CounsellingOrderReservation> implements ICounsellingOrderReservationService {
    /**
     * 分页查询预约记录
     * @param page 分页对象
     * @param counsellingOrderReservationRequestDTO 查询条件
     * @return
     */
    @Override
    public Page<CounsellingOrderReservation> findPage(Page page, CounsellingOrderReservationRequestDTO counsellingOrderReservationRequestDTO) {
        return this.baseMapper.findPage(page,counsellingOrderReservationRequestDTO);
    }
    @Override
    public Page<CounsellingOrderReservation> findReservationPage(Page page, CounsellingOrderReservationRequestDTO counsellingOrderReservationRequestDTO) {
        return this.baseMapper.findReservationPage(page, counsellingOrderReservationRequestDTO);
    }
    /**
     * 工作人员分页查询预约记录
     * @param page 分页对象
     * @param counsellingOrderReservationRequestDTO 查询条件
     * @return
     */
    @Override
    public Page<CounsellingOrderReservation> findWorkPage(Page page, CounsellingOrderReservationRequestDTO counsellingOrderReservationRequestDTO) {
        return this.baseMapper.findWorkPage(page,counsellingOrderReservationRequestDTO);
    }
    /**
     * 根据用户id查询预约记录
     * @param page
     * @param userCounsellingOrderReservationRequestDTO
     * @return
     */
    @Override
    public Page<CounsellingOrderReservation> findOrderReservationByUserIdPage(Page page, UserCounsellingOrderReservationRequestDTO userCounsellingOrderReservationRequestDTO) {
        return this.baseMapper.findOrderReservationByUserIdPage(page,userCounsellingOrderReservationRequestDTO);
    }
    @Override
    public UserCounsellingTotalDTO getCounsellingNumTotalByUserId(UserCounsellingOrderReservationRequestDTO userCounsellingOrderReservationRequestDTO) {
        return this.baseMapper.getCounsellingNumTotalByUserId(userCounsellingOrderReservationRequestDTO);
    }
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/impl/CounsellingOrderServiceImpl.java
New file
@@ -0,0 +1,682 @@
package cn.stylefeng.guns.modular.business.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import cn.stylefeng.guns.modular.business.dto.CounsellingOrderResponseDTO;
import cn.stylefeng.guns.modular.business.dto.ImPushDataDTO;
import cn.stylefeng.guns.modular.business.dto.request.CounsellingOrderRequest;
import cn.stylefeng.guns.modular.business.dto.request.CreateCounsellingOrderRequest;
import cn.stylefeng.guns.modular.business.dto.request.CustomerUpdateRequest;
import cn.stylefeng.guns.modular.business.dto.request.OrderPayRequest;
import cn.stylefeng.guns.modular.business.entity.*;
import cn.stylefeng.guns.modular.business.mapper.CounsellingOrderMapper;
import cn.stylefeng.guns.modular.business.service.*;
import cn.stylefeng.guns.utils.GeneralUtil;
import cn.stylefeng.roses.kernel.auth.api.context.LoginContext;
import cn.stylefeng.roses.kernel.customer.modular.entity.Customer;
import cn.stylefeng.roses.kernel.customer.modular.service.CustomerService;
import cn.stylefeng.roses.kernel.rule.enums.*;
import cn.stylefeng.roses.kernel.rule.exception.base.ServiceException;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Date;
import java.util.List;
/**
 * <p>
 * 咨询订单信息 服务实现类
 * </p>
 *
 * @author guohongjin
 * @since 2024-01-02
 */
@Service
public class CounsellingOrderServiceImpl extends ServiceImpl<CounsellingOrderMapper, CounsellingOrder> implements ICounsellingOrderService {
    @Autowired
    private CustomerService customerService;
    @Autowired
    private ICounsellingInfoService counsellingInfoService;
    @Autowired
    private ICounsellingSetMealService counsellingSetMealService;
    @Autowired
    private ICounsellingOrderReservationService counsellingOrderReservationService;
    @Autowired
    private IImGroupService iImGroupService;
    @Resource
    private ImBizService imBizService;
    @Resource
    private ICounsellingUserService counsellingUserService;
    @Resource
    private IAreaService areaService;
    @Override
    public Page<CounsellingOrderResponseDTO> findCounsellingOrderPage(Page<CounsellingOrderRequest> page, CounsellingOrderRequest counsellingOrderRequest) {
        return this.baseMapper.findCounsellingOrderPage(page, counsellingOrderRequest);
    }
    @Override
    public Page<CounsellingOrderResponseDTO> findWorkCounsellingOrderPage(Page<CounsellingOrderRequest> page, CounsellingOrderRequest counsellingOrderRequest) {
        return this.baseMapper.findWorkCounsellingOrderPage(page, counsellingOrderRequest);
    }
    @Override
    public CounsellingOrder createCounsellingOrder(CreateCounsellingOrderRequest counsellingOrderRequest) {
        if (counsellingOrderRequest.getUserId() == null){
            counsellingOrderRequest.setUserId(LoginContext.me().getLoginUser().getUserId());
        }
        //判断是否有用户咨询师信息
        CounsellingUser counsellingUserOld = this.counsellingUserService.getOne(new LambdaQueryWrapper<CounsellingUser>().eq(CounsellingUser::getCounsellingInfoId,counsellingOrderRequest.getCounsellingInfoId())
                .eq(CounsellingUser::getUserId,counsellingOrderRequest.getUserId()));
        if(counsellingOrderRequest.getOrderType().intValue() != 1){
            if (counsellingUserOld == null){
                throw new ServiceException("请先购买首次咨询!");
            } else if (counsellingUserOld != null && counsellingUserOld.getIsFirstAppointment() != null && counsellingUserOld.getIsFirstAppointment().intValue() != 3) {
                throw new ServiceException("请先完成首次咨询,再进行疗程购买!");
            }
        }
        //查询客户信息
        Customer customerOld = this.customerService.getById(counsellingOrderRequest.getUserId());
        CounsellingInfo counsellingInfo = this.counsellingInfoService.getById(counsellingOrderRequest.getCounsellingInfoId());
        CounsellingOrder counsellingOrder = BeanUtil.copyProperties(counsellingOrderRequest,CounsellingOrder.class);
        if (counsellingOrderRequest.getCustomerUpdateRequest() != null){
            counsellingOrder.setPhone(counsellingOrderRequest.getCustomerUpdateRequest().getLinkPhone());
        }
        counsellingOrder.setOrderNo(GeneralUtil.generateOrderNo(OrderTypeEnum.COUNSELLING_ORDER));
        //订单类型 1-首次咨询,2-咨询疗程,3-课程续费
        if (counsellingOrderRequest.getOrderType().intValue() ==1){
            //是否后台创建
            if (counsellingOrderRequest.getIsBack()){
                Customer customerUser = this.customerService.getById(counsellingOrderRequest.getUserId());
                if (customerUser != null){
                    CustomerUpdateRequest customerUpdateRequest = BeanUtil.copyProperties(customerUser, CustomerUpdateRequest.class);
                    counsellingOrder.setUserInfoJson(JSONUtil.toJsonStr(customerUpdateRequest));
                }
                counsellingOrder.setStatusFlag(1);
//                if (counsellingUserOld != null && counsellingUserOld.getCompanionUserId() != null){
//                    //陪护教练id
//                    counsellingOrder.setCompanionUserId(counsellingUserOld.getCompanionUserId());
//                }else {
//
//                    Customer customerCompanion = customerService.randomWorkerByLineStatusAndPost(ImStatusEnum.ON_LINE.getCode(), null, PostIdEnum.PO_23.getCode(), CustomerWorkStatusEnum.ON_WORK.getCode());
//                    if (customerCompanion != null){
//                        //陪护教练id
//                        counsellingOrder.setCompanionUserId(customerCompanion.getCustomerId());
////                        counsellingUserOld.setCompanionUserId(customerCompanion.getCustomerId());
//                    }else{
//                        Customer customerCompanion2 = customerService.randomWorkerByLineStatusAndPost(null, null, PostIdEnum.PO_23.getCode(), CustomerWorkStatusEnum.ON_WORK.getCode());
//                        if (customerCompanion2 != null){
//                            //陪护教练id
//                            counsellingOrder.setCompanionUserId(customerCompanion2.getCustomerId());
////                            counsellingUserOld.setCompanionUserId(customerCompanion2.getCustomerId());
//                        }else{
//                            throw new ServiceException("没有在线的陪护教练!");
//                        }
//
//                    }
//                }
//                counsellingOrder.setPhone(customerUser.getLinkPhone());
                counsellingOrder.setOrderAmount(counsellingInfo.getFristPrice());
                counsellingOrder.setPayAmount(counsellingInfo.getFristPrice());
                counsellingOrder.setCreateUser(LoginContext.me().getLoginUser().getUserId());
            }else{
                counsellingOrder.setStatusFlag(0);
                CustomerUpdateRequest customerUpdateRequest = counsellingOrderRequest.getCustomerUpdateRequest();
                if (customerUpdateRequest != null){
                    customerUpdateRequest.setCustomerId(counsellingOrderRequest.getUserId());
                     Customer customer = BeanUtil.toBean(customerUpdateRequest, Customer.class);
                     customer.setCustomerId(counsellingOrderRequest.getUserId());
                    // 修改用户信息
                    Boolean update = customerService.updateCustomerRemoveCache(customer);
                    counsellingOrder.setUserInfoJson(JSONUtil.toJsonStr(customerUpdateRequest));
                }
            }
            if (counsellingUserOld != null && counsellingUserOld.getConsultantUserId() != null){
                counsellingOrder.setConsultantUserId(counsellingUserOld.getConsultantUserId());
            }else{
                if (customerOld.getConsultWorkerId() != null){
                    counsellingOrder.setConsultantUserId(customerOld.getConsultWorkerId());
                }else{
                    Customer customer2 = customerService.randomWorkerByLineStatusAndPost(ImStatusEnum.ON_LINE.getCode(), null, PostIdEnum.PO_21.getCode(), CustomerWorkStatusEnum.ON_WORK.getCode());
                    if (customer2 != null){
                        //咨询顾问id
                        counsellingOrder.setConsultantUserId(customer2.getCustomerId());
//                        counsellingUserOld.setConsultantUserId(customer2.getCustomerId());
                    }else {
                        Customer customer3 = customerService.randomWorkerByLineStatusAndPost(null, null, PostIdEnum.PO_21.getCode(), CustomerWorkStatusEnum.ON_WORK.getCode());
                        if (customer3 != null){
                            //咨询顾问id
                            counsellingOrder.setConsultantUserId(customer3.getCustomerId());
//                            counsellingUserOld.setConsultantUserId(customer3.getCustomerId());
                        }else{
                            throw new ServiceException("没有在线的咨询顾问!");
                        }
                    }
                }
            }
        }else if (counsellingOrderRequest.getOrderType().intValue() ==2){
            //获取下单人个人信息
            Customer customerUser = this.customerService.getById(counsellingOrderRequest.getUserId());
            if (customerUser != null){
                CustomerUpdateRequest customerUpdateRequest = BeanUtil.copyProperties(customerUser, CustomerUpdateRequest.class);
                if (StrUtil.isNotBlank(customerUser.getCityCode())) {
                    customerUpdateRequest.setCityCodeStr(areaService.getNameByCodeAddPrefix("/", customerUpdateRequest.getCityCode()));
                }
                counsellingOrder.setUserInfoJson(JSONUtil.toJsonStr(customerUpdateRequest));
            }
            //跟进套餐设置订单信息
            CounsellingSetMeal counsellingSetMeal = this.counsellingSetMealService.getById(counsellingOrderRequest.getCounsellingSetMealId());
            if (counsellingSetMeal != null){
                counsellingOrder.setCounsellingSetMealId(counsellingSetMeal.getId());
                counsellingOrder.setSetMealJson(JSONUtil.toJsonStr(counsellingSetMeal));
                counsellingOrder.setPayAmount(counsellingSetMeal.getPrice());
                counsellingOrder.setOrderAmount(counsellingSetMeal.getOriginalPrice());
                counsellingOrder.setClassHours(counsellingSetMeal.getClassHours());
                counsellingOrder.setResidueClassHours(counsellingSetMeal.getClassHours());
            }else {
                throw new ServiceException("咨询套餐不存在!");
            }
            counsellingOrder.setPhone(customerUser.getTelephone());
            if (counsellingUserOld != null && counsellingUserOld.getConsultantUserId() != null){
                counsellingOrder.setConsultantUserId(counsellingUserOld.getConsultantUserId());
            }else{
                if (counsellingUserOld != null && counsellingUserOld.getConsultantUserId() != null){
                    counsellingOrder.setConsultantUserId(counsellingUserOld.getConsultantUserId());
                }else {
                    if (customerOld.getConsultWorkerId() != null) {
                        counsellingOrder.setConsultantUserId(customerOld.getConsultWorkerId());
                    } else {
                        Customer customer2 = customerService.randomWorkerByLineStatusAndPost(ImStatusEnum.ON_LINE.getCode(), null, PostIdEnum.PO_21.getCode(), CustomerWorkStatusEnum.ON_WORK.getCode());
                        if (customer2 != null) {
                            //咨询顾问id
                            counsellingOrder.setConsultantUserId(customer2.getCustomerId());
//                        counsellingUserOld.setConsultantUserId(customer2.getCustomerId());
                        } else {
                            Customer customer3 = customerService.randomWorkerByLineStatusAndPost(null, null, PostIdEnum.PO_21.getCode(), CustomerWorkStatusEnum.ON_WORK.getCode());
                            if (customer3 != null) {
                                //咨询顾问id
                                counsellingOrder.setConsultantUserId(customer3.getCustomerId());
//                            counsellingUserOld.setConsultantUserId(customer3.getCustomerId());
                            } else {
                                throw new ServiceException("没有在线的咨询顾问!");
                            }
                        }
                    }
                }
            }
            //是否赠送陪护
            if (counsellingSetMeal.getIsGive() != null && counsellingSetMeal.getIsGive().intValue() == 1){
                if (counsellingUserOld != null && counsellingUserOld.getCompanionUserId() != null){
                    //陪护教练id
                    counsellingOrder.setCompanionUserId(counsellingUserOld.getCompanionUserId());
                }else {
                    Customer customerCompanion = customerService.randomWorkerByLineStatusAndPost(ImStatusEnum.ON_LINE.getCode(), null, PostIdEnum.PO_23.getCode(), CustomerWorkStatusEnum.ON_WORK.getCode());
                    if (customerCompanion != null){
                        //陪护教练id
                        counsellingOrder.setCompanionUserId(customerCompanion.getCustomerId());
                        counsellingUserOld.setCompanionUserId(customerCompanion.getCustomerId());
                    }else{
                        Customer customerCompanion2 = customerService.randomWorkerByLineStatusAndPost(null, null, PostIdEnum.PO_23.getCode(), CustomerWorkStatusEnum.ON_WORK.getCode());
                        if (customerCompanion2 != null){
                            //陪护教练id
                            counsellingOrder.setCompanionUserId(customerCompanion2.getCustomerId());
                            counsellingUserOld.setCompanionUserId(customerCompanion2.getCustomerId());
                        }else{
                            throw new ServiceException("没有在线的陪护教练!");
                        }
                    }
                }
            }
            //是否后台创建
            if (counsellingOrderRequest.getIsBack()){
                counsellingOrder.setStatusFlag(1);
                counsellingOrder.setEffectiveBeginTime(new Date());
                counsellingOrder.setEffectiveEndTime(DateUtil.endOfDay(DateUtil.offsetDay(counsellingOrder.getEffectiveBeginTime(),counsellingSetMeal.getPeriodValidityDay())));
                counsellingOrder.setCreateUser(LoginContext.me().getLoginUser().getUserId());
                //查询是否已经存在群聊
                //查询是否已经存在群聊
//                long imCount = this.iImGroupService.count(new LambdaQueryWrapper<ImGroup>().eq(ImGroup::getOrderId,counsellingOrder.getCounsellingInfoId())
//                        .eq(ImGroup::getGroupType,2).eq(ImGroup::getCreateUser,counsellingOrder.getUserId()).eq(ImGroup::getIsDelete,0));
//                if ( imCount ==0l  ){
                if (counsellingSetMeal.getIsGive() != null && counsellingSetMeal.getIsGive().intValue() == 1){
                    //生成群聊
                    iImGroupService.createGroup(2,counsellingOrder.getConsultantUserId(),counsellingOrder.getCompanionUserId(),counsellingInfo.getUserId(),null,null,counsellingOrder.getUserId(),counsellingOrder.getCounsellingInfoId());
                }else{
                    //生成群聊
                    iImGroupService.createGroup(2,null,null,counsellingInfo.getUserId(),null,null,counsellingOrder.getUserId(),counsellingOrder.getCounsellingInfoId());
                }
//                }
            }else {
                counsellingOrder.setStatusFlag(0);
            }
        } else if (counsellingOrderRequest.getOrderType().intValue() ==3) {
            //获取下单人个人信息
            Customer customerUser = this.customerService.getById(counsellingOrderRequest.getUserId());
            if (customerUser != null){
                CustomerUpdateRequest customerUpdateRequest = BeanUtil.copyProperties(customerUser, CustomerUpdateRequest.class);
                if (StrUtil.isNotBlank(customerUser.getCityCode())) {
                    customerUpdateRequest.setCityCodeStr(areaService.getNameByCodeAddPrefix("/", customerUpdateRequest.getCityCode()));
                }
                counsellingOrder.setUserInfoJson(JSONUtil.toJsonStr(customerUpdateRequest));
            }
            //跟进套餐设置订单信息
            CounsellingSetMeal counsellingSetMeal = this.counsellingSetMealService.getById(counsellingOrderRequest.getCounsellingSetMealId());
            if (counsellingSetMeal != null){
                counsellingOrder.setCounsellingSetMealId(counsellingSetMeal.getId());
                counsellingOrder.setSetMealJson(JSONUtil.toJsonStr(counsellingSetMeal));
                counsellingOrder.setPayAmount(counsellingSetMeal.getPrice());
                counsellingOrder.setOrderAmount(counsellingSetMeal.getOriginalPrice());
                counsellingOrder.setClassHours(counsellingSetMeal.getClassHours());
                counsellingOrder.setResidueClassHours(counsellingSetMeal.getClassHours());
//                counsellingOrder.setEffectiveBeginTime(new Date());
//                counsellingOrder.setEffectiveEndTime(DateUtil.offsetDay(counsellingOrder.getEffectiveBeginTime(),counsellingSetMeal.getPeriodValidityDay()));
            }else {
                throw new ServiceException("咨询套餐不存在!");
            }
            counsellingOrder.setPhone(customerUser.getTelephone());
            if (counsellingUserOld != null && counsellingUserOld.getConsultantUserId() != null){
                counsellingOrder.setConsultantUserId(counsellingUserOld.getConsultantUserId());
            }else{
                if (counsellingUserOld != null && counsellingUserOld.getConsultantUserId() != null){
                    counsellingOrder.setConsultantUserId(counsellingUserOld.getConsultantUserId());
                }else {
                    if (customerOld.getConsultWorkerId() != null) {
                        counsellingOrder.setConsultantUserId(customerOld.getConsultWorkerId());
                    } else {
                        Customer customer2 = customerService.randomWorkerByLineStatusAndPost(ImStatusEnum.ON_LINE.getCode(), null, PostIdEnum.PO_21.getCode(), CustomerWorkStatusEnum.ON_WORK.getCode());
                        if (customer2 != null) {
                            //咨询顾问id
                            counsellingOrder.setConsultantUserId(customer2.getCustomerId());
//                        counsellingUserOld.setConsultantUserId(customer2.getCustomerId());
                        } else {
                            Customer customer3 = customerService.randomWorkerByLineStatusAndPost(null, null, PostIdEnum.PO_21.getCode(), CustomerWorkStatusEnum.ON_WORK.getCode());
                            if (customer3 != null) {
                                //咨询顾问id
                                counsellingOrder.setConsultantUserId(customer3.getCustomerId());
//                            counsellingUserOld.setConsultantUserId(customer3.getCustomerId());
                            } else {
                                throw new ServiceException("没有在线的咨询顾问!");
                            }
                        }
                    }
                }
            }
            //是否后台创建
            if (counsellingOrderRequest.getIsBack()){
                Date nowDate = new Date();
                if (counsellingUserOld == null || (counsellingUserOld != null && (counsellingUserOld.getEffectiveEndTime() == null ||
                        (counsellingUserOld.getEffectiveEndTime() != null && counsellingUserOld.getEffectiveEndTime().getTime() < nowDate.getTime())))){
                    counsellingOrder.setEffectiveBeginTime(nowDate);
                    counsellingOrder.setEffectiveEndTime(DateUtil.endOfDay(DateUtil.offsetDay(counsellingOrder.getEffectiveBeginTime(),counsellingSetMeal.getPeriodValidityDay())));
                }else{
                    counsellingOrder.setEffectiveBeginTime(counsellingUserOld.getEffectiveEndTime());
                    counsellingOrder.setEffectiveEndTime(DateUtil.endOfDay(DateUtil.offsetDay(counsellingOrder.getEffectiveBeginTime(),counsellingSetMeal.getPeriodValidityDay())));
                }
                 counsellingOrder.setStatusFlag(1);
                counsellingOrder.setCreateUser(LoginContext.me().getLoginUser().getUserId());
                //查询是否已经存在群聊
//                long imCount = this.iImGroupService.count(new LambdaQueryWrapper<ImGroup>().eq(ImGroup::getOrderId,counsellingOrder.getCounsellingInfoId())
//                        .eq(ImGroup::getGroupType,2).eq(ImGroup::getCreateUser,counsellingOrder.getUserId()).eq(ImGroup::getIsDelete,0));
//                if ( imCount ==0l  ){
                    //生成群聊
                    iImGroupService.createGroup(2,counsellingOrder.getConsultantUserId(),counsellingOrder.getCompanionUserId(),counsellingInfo.getUserId(),null,null,counsellingOrder.getUserId(),counsellingOrder.getCounsellingInfoId());
//                }
            }else {
                counsellingOrder.setStatusFlag(0);
            }
        }
        //是否后台创建
        if (counsellingOrderRequest.getIsBack()){
            if (counsellingUserOld == null ){
                CounsellingUser counsellingUser = BeanUtil.copyProperties(counsellingOrder,CounsellingUser.class);
                counsellingUser.setId(null);
                counsellingUser.setIsFirstAppointment(1);
                this.counsellingUserService.save(counsellingUser);
            }else{
                if (counsellingOrder.getOrderType().intValue() != 1){
                    if (counsellingUserOld.getEffectiveBeginTime() == null){
                        counsellingUserOld.setEffectiveBeginTime(counsellingOrder.getEffectiveBeginTime());
                    }
                    counsellingUserOld.setEffectiveEndTime(counsellingOrder.getEffectiveEndTime());
                    counsellingUserOld.setClassHours(counsellingUserOld.getClassHours() !=null ? counsellingUserOld.getClassHours().intValue() + counsellingOrder.getClassHours().intValue():counsellingOrder.getClassHours());
                    counsellingUserOld.setResidueClassHours(counsellingUserOld.getResidueClassHours() !=null ? counsellingUserOld.getResidueClassHours().intValue() + counsellingOrder.getResidueClassHours().intValue():counsellingOrder.getResidueClassHours());
                    counsellingUserOld.setStatusFlag(counsellingOrder.getStatusFlag());
                }else {
                    counsellingUserOld.setUserInfoJson(counsellingOrder.getUserInfoJson());
                    counsellingUserOld.setIsFirstAppointment(1);
                }
                if (counsellingUserOld.getCompanionUserId() != null){
                    counsellingOrder.setCompanionUserId(counsellingUserOld.getCompanionUserId());
                }else{
                    counsellingUserOld.setCompanionUserId(counsellingOrder.getCompanionUserId());
                }
                if (counsellingUserOld.getConsultantUserId() != null){
                    counsellingOrder.setConsultantUserId(counsellingUserOld.getConsultantUserId());
                }else{
                    counsellingUserOld.setConsultantUserId(counsellingOrder.getConsultantUserId());
                }
                if (StrUtil.isBlank(counsellingUserOld.getPhone())  && StrUtil.isNotBlank(counsellingOrder.getPhone())){
                    counsellingUserOld.setPhone(counsellingOrder.getPhone());
                }
                if (StrUtil.isBlank(counsellingUserOld.getUserInfoJson()) && StrUtil.isNotBlank(counsellingOrder.getUserInfoJson())){
                    counsellingUserOld.setUserInfoJson(counsellingOrder.getUserInfoJson());
                }
                counsellingUserOld.setStatusFlag(counsellingOrder.getStatusFlag());
                this.counsellingUserService.updateById(counsellingUserOld);
            }
        }
        if (counsellingOrderRequest.getIsBack()){
            counsellingOrder.setPayTime(new Date());
        }
        this.save(counsellingOrder);
        //分配咨询顾问
        if (customerOld.getConsultWorkerId() == null && counsellingOrder.getConsultantUserId() != null ){
            customerOld.setConsultWorkerId(counsellingOrder.getConsultantUserId());
            this.customerService.updateCustomerRemoveCache(customerOld);
        }
        return counsellingOrder;
    }
    @Override
    public void payCounsellingOrder(OrderPayRequest orderPayRequest) {
        CounsellingOrder counsellingOrder = this.getOne(new LambdaQueryWrapper<CounsellingOrder>().eq(CounsellingOrder::getOrderNo,orderPayRequest.getOrderNo()));
        counsellingOrder.setTransactionNo(orderPayRequest.getTransactionNo());
        counsellingOrder.setStatusFlag(1);
        counsellingOrder.setPayTime(new Date());
        counsellingOrder.setPayType(orderPayRequest.getPayType());
        //查询客户信息
        Customer customerold = this.customerService.getById(counsellingOrder.getUserId());
        CounsellingInfo counsellingInfo = this.counsellingInfoService.getById(counsellingOrder.getCounsellingInfoId());
        //判断是否有用户咨询师信息
        CounsellingUser counsellingUserOld = this.counsellingUserService.getOne(new LambdaQueryWrapper<CounsellingUser>().eq(CounsellingUser::getCounsellingInfoId,counsellingOrder.getCounsellingInfoId())
                .eq(CounsellingUser::getUserId,counsellingOrder.getUserId()));
        //订单类型 1-首次咨询,2-咨询疗程,3-课程续费
        if (counsellingOrder.getOrderType().intValue() == 1){
            Customer customer = JSONUtil.toBean(counsellingOrder.getUserInfoJson(),Customer.class);
            //生成预约记录
            CounsellingOrderReservation counsellingOrderReservation = new CounsellingOrderReservation();
            counsellingOrderReservation.setCounsellingOrderId(counsellingOrder.getId());
            counsellingOrderReservation.setCounsellingInfoId(counsellingOrder.getCounsellingInfoId());
            counsellingOrderReservation.setCompanionUserId(counsellingOrder.getCompanionUserId());
            counsellingOrderReservation.setConsultantUserId(counsellingOrder.getConsultantUserId());
            counsellingOrderReservation.setRemark(customer.getCurrentRemark());
            counsellingOrderReservation.setUserId(counsellingOrder.getUserId());
            //预约类型 1-首次面诊,2-咨询疗程
            counsellingOrderReservation.setReservationType(1);
            String reservDate = DateUtil.formatDate(counsellingOrder.getFirstAppointmentDate());
            String[] times = counsellingOrder.getFirstAppointmentTimes().split("-");
            counsellingOrderReservation.setReservationBeginTime(DateUtil.parse(reservDate+" "+times[0]+":00"));
            counsellingOrderReservation.setReservationEndTime(DateUtil.parse(reservDate+" "+times[1]+":00"));
            //预约状态 1-待审批,2-待服务,3-服务中,4-已完成,5-已取消,6-已拒绝 - 首次面诊直接待服务
            counsellingOrderReservation.setStauts(2);
            this.counsellingOrderReservationService.save(counsellingOrderReservation);
            // 推送消息内容
//            String pushContent = "我购买了心理咨询疗程,需要咨询";
//            // IM推送数据json
//            ImPushDataDTO pushData = ImPushDataDTO.builder()
//                    .type(ImPushTypeEnum.S_TO_W_TIP_CONSULT_PAY_SUCCESS.getCode())
//                    .objId(ObjUtil.toString(counsellingOrderReservation.getId()))
//                    .title("通知")
//                    .content(pushContent)
////                    .extra("心理咨询疗程")
//                    .build();
//            // 发送首次预约
//            imBizService.messageSendGroup(counsellingOrderReservation.getUserId()+"", new String[]{counsellingOrderReservation.getUserId()+""}, pushData);
        } else if (counsellingOrder.getOrderType().intValue() == 2){
            if (counsellingUserOld != null && counsellingUserOld.getConsultantUserId() != null){
                counsellingOrder.setConsultantUserId(counsellingUserOld.getConsultantUserId());
            }else{
                if (customerold.getConsultWorkerId() != null){
                    counsellingOrder.setConsultantUserId(customerold.getConsultWorkerId());
                }else{
                    Customer customer2 = customerService.randomWorkerByLineStatusAndPost(ImStatusEnum.ON_LINE.getCode(), null, PostIdEnum.PO_21.getCode(), CustomerWorkStatusEnum.ON_WORK.getCode());
                    if (customer2 != null){
                        //咨询顾问id
                        counsellingOrder.setConsultantUserId(customer2.getCustomerId());
//                        counsellingUserOld.setConsultantUserId(customer2.getCustomerId());
                    }else {
                        Customer customer3 = customerService.randomWorkerByLineStatusAndPost(null, null, PostIdEnum.PO_21.getCode(), CustomerWorkStatusEnum.ON_WORK.getCode());
                        if (customer3 != null){
                            //咨询顾问id
                            counsellingOrder.setConsultantUserId(customer3.getCustomerId());
//                            counsellingUserOld.setConsultantUserId(customer3.getCustomerId());
                        }else{
                            throw new ServiceException("没有在线的咨询顾问!");
                        }
                    }
                }
            }
//            Customer customer2 = customerService.randomWorkerByLineStatusAndPost(ImStatusEnum.ON_LINE.getCode(), null, PostIdEnum.PO_21.getCode());
//            if (customer2 != null){
//                //咨询顾问id
//                counsellingOrder.setConsultantUserId(customer2.getCustomerId());
//            }else {
//                throw new ServiceException("没有在线的咨询顾问!");
//            }
            CounsellingSetMeal counsellingSetMeal = JSONUtil.toBean(counsellingOrder.getSetMealJson(),CounsellingSetMeal.class);
            //是否赠送陪护
            if (counsellingSetMeal.getIsGive() != null && counsellingSetMeal.getIsGive().intValue() == 1){
                if (counsellingUserOld != null && counsellingUserOld.getCompanionUserId() != null){
                    //陪护教练id
                    counsellingOrder.setCompanionUserId(counsellingUserOld.getCompanionUserId());
                }else if (counsellingUserOld != null && counsellingUserOld.getCompanionUserId() == null){
                    Customer customerCompanion = customerService.randomWorkerByLineStatusAndPost(ImStatusEnum.ON_LINE.getCode(), null, PostIdEnum.PO_23.getCode(), CustomerWorkStatusEnum.ON_WORK.getCode());
                    if (customerCompanion != null){
                        //陪护教练id
                        counsellingOrder.setCompanionUserId(customerCompanion.getCustomerId());
                        counsellingUserOld.setCompanionUserId(customerCompanion.getCustomerId());
                    }else{
                        Customer customerCompanion2 = customerService.randomWorkerByLineStatusAndPost(null, null, PostIdEnum.PO_23.getCode(), CustomerWorkStatusEnum.ON_WORK.getCode());
                        if (customerCompanion2 != null){
                            //陪护教练id
                            counsellingOrder.setCompanionUserId(customerCompanion2.getCustomerId());
                            counsellingUserOld.setCompanionUserId(customerCompanion2.getCustomerId());
                        }else{
                            throw new ServiceException("没有在线的陪护教练!");
                        }
                    }
                }
//                Customer customerCompanion = customerService.randomWorkerByLineStatusAndPost(ImStatusEnum.ON_LINE.getCode(), null, PostIdEnum.PO_23.getCode());
//                if (customerCompanion != null){
//                    //陪护教练id
//                    counsellingOrder.setCompanionUserId(customerCompanion.getCustomerId());
//                }else{
//                    throw new ServiceException("没有在线的陪护教练!");
//                }
            }
            counsellingOrder.setEffectiveBeginTime(new Date());
            counsellingOrder.setEffectiveEndTime(DateUtil.endOfDay(DateUtil.offsetDay(counsellingOrder.getEffectiveBeginTime(),counsellingSetMeal.getPeriodValidityDay())));
            //生成群聊
//            //查询是否已经存在群聊
//            long imCount = this.iImGroupService.count(new LambdaQueryWrapper<ImGroup>().eq(ImGroup::getOrderId,counsellingOrder.getCounsellingInfoId())
//                    .eq(ImGroup::getGroupType,2).eq(ImGroup::getCreateUser,counsellingOrder.getUserId()).eq(ImGroup::getIsDelete,0));
//            if ( imCount ==0l  ){
                //生成群聊
//                iImGroupService.createGroup(2,counsellingOrder.getConsultantUserId(),counsellingOrder.getCompanionUserId(),counsellingInfo.getUserId(),null,null,counsellingOrder.getUserId(),counsellingOrder.getCounsellingInfoId());
            if (counsellingSetMeal.getIsGive() != null && counsellingSetMeal.getIsGive().intValue() == 1){
                //生成群聊
                iImGroupService.createGroup(2,counsellingOrder.getConsultantUserId(),counsellingOrder.getCompanionUserId(),counsellingInfo.getUserId(),null,null,counsellingOrder.getUserId(),counsellingOrder.getCounsellingInfoId());
            }else{
                //生成群聊
                iImGroupService.createGroup(2,null,null,counsellingInfo.getUserId(),null,null,counsellingOrder.getUserId(),counsellingOrder.getCounsellingInfoId());
            }
//            }
        } else if (counsellingOrder.getOrderType().intValue() == 3) {
            if (counsellingUserOld != null && counsellingUserOld.getConsultantUserId() != null){
                counsellingOrder.setConsultantUserId(counsellingUserOld.getConsultantUserId());
            }else{
                if (customerold.getConsultWorkerId() != null){
                    counsellingOrder.setConsultantUserId(customerold.getConsultWorkerId());
                }else{
                    Customer customer2 = customerService.randomWorkerByLineStatusAndPost(ImStatusEnum.ON_LINE.getCode(), null, PostIdEnum.PO_21.getCode(), CustomerWorkStatusEnum.ON_WORK.getCode());
                    if (customer2 != null){
                        //咨询顾问id
                        counsellingOrder.setConsultantUserId(customer2.getCustomerId());
//                        counsellingUserOld.setConsultantUserId(customer2.getCustomerId());
                    }else {
                        Customer customer3 = customerService.randomWorkerByLineStatusAndPost(null, null, PostIdEnum.PO_21.getCode(), CustomerWorkStatusEnum.ON_WORK.getCode());
                        if (customer3 != null){
                            //咨询顾问id
                            counsellingOrder.setConsultantUserId(customer3.getCustomerId());
//                            counsellingUserOld.setConsultantUserId(customer3.getCustomerId());
                        }else{
                            throw new ServiceException("没有在线的咨询顾问!");
                        }
                    }
                }
            }
            CounsellingSetMeal counsellingSetMeal = JSONUtil.toBean(counsellingOrder.getSetMealJson(),CounsellingSetMeal.class);
            Date nowDate = new Date();
            if (counsellingUserOld == null || counsellingUserOld.getEffectiveEndTime().getTime() < nowDate.getTime()){
                counsellingOrder.setEffectiveBeginTime(nowDate);
                counsellingOrder.setEffectiveEndTime(DateUtil.endOfDay(DateUtil.offsetDay(counsellingOrder.getEffectiveBeginTime(),counsellingSetMeal.getPeriodValidityDay())));
            }else{
                counsellingOrder.setEffectiveBeginTime(counsellingUserOld.getEffectiveEndTime());
                counsellingOrder.setEffectiveEndTime(DateUtil.endOfDay(DateUtil.offsetDay(counsellingOrder.getEffectiveBeginTime(),counsellingSetMeal.getPeriodValidityDay())));
            }
            //查询是否已经存在群聊
//            long imCount = this.iImGroupService.count(new LambdaQueryWrapper<ImGroup>().eq(ImGroup::getOrderId,counsellingOrder.getCounsellingInfoId())
//                    .eq(ImGroup::getGroupType,2).eq(ImGroup::getCreateUser,counsellingOrder.getUserId()).eq(ImGroup::getIsDelete,0));
//            if ( imCount ==0l  ){
                //生成群聊
                iImGroupService.createGroup(2,counsellingOrder.getConsultantUserId(),counsellingOrder.getCompanionUserId(),counsellingInfo.getUserId(),null,null,counsellingOrder.getUserId(),counsellingOrder.getCounsellingInfoId());
//            }
            //生成群聊
//            iImGroupService.createGroup(2,counsellingOrder.getConsultantUserId(),counsellingOrder.getCompanionUserId(),counsellingInfo.getUserId(),null,null,counsellingOrder.getUserId(),counsellingOrder.getId());
        }
        //添加咨询用户信息
        if (counsellingUserOld == null ){
            CounsellingUser counsellingUser = BeanUtil.copyProperties(counsellingOrder,CounsellingUser.class);
            counsellingUser.setId(null);
            counsellingUser.setIsFirstAppointment(2);
            this.counsellingUserService.save(counsellingUser);
        }else{
            if (counsellingOrder.getOrderType().intValue() != 1){
                if (counsellingUserOld.getEffectiveBeginTime() == null){
                    counsellingUserOld.setEffectiveBeginTime(counsellingOrder.getEffectiveBeginTime());
                }
                counsellingUserOld.setEffectiveEndTime(counsellingOrder.getEffectiveEndTime());
                counsellingUserOld.setClassHours(counsellingUserOld.getClassHours() !=null ? counsellingUserOld.getClassHours().intValue() + counsellingOrder.getClassHours().intValue():counsellingOrder.getClassHours());
                counsellingUserOld.setResidueClassHours(counsellingUserOld.getResidueClassHours() !=null ? counsellingUserOld.getResidueClassHours().intValue() + counsellingOrder.getResidueClassHours().intValue():counsellingOrder.getResidueClassHours());
                counsellingUserOld.setStatusFlag(counsellingOrder.getStatusFlag());
            }else {
                counsellingUserOld.setUserInfoJson(counsellingOrder.getUserInfoJson());
                counsellingUserOld.setIsFirstAppointment(2);
            }
            if (StrUtil.isBlank(counsellingUserOld.getUserInfoJson()) && StrUtil.isNotBlank(counsellingOrder.getUserInfoJson())){
                counsellingUserOld.setUserInfoJson(counsellingOrder.getUserInfoJson());
            }
            if (counsellingUserOld.getCompanionUserId() != null){
                counsellingOrder.setCompanionUserId(counsellingUserOld.getCompanionUserId());
            }else{
                counsellingUserOld.setCompanionUserId(counsellingOrder.getCompanionUserId());
            }
            if (counsellingUserOld.getConsultantUserId() != null){
                counsellingOrder.setConsultantUserId(counsellingUserOld.getConsultantUserId());
            }else{
                counsellingUserOld.setConsultantUserId(counsellingOrder.getConsultantUserId());
            }
            if (StrUtil.isBlank(counsellingUserOld.getPhone())  && StrUtil.isNotBlank(counsellingOrder.getPhone())){
                counsellingUserOld.setPhone(counsellingOrder.getPhone());
            }
            counsellingUserOld.setStatusFlag(counsellingOrder.getStatusFlag());
            this.counsellingUserService.updateById(counsellingUserOld);
        }
        this.updateById(counsellingOrder);
        //分配咨询顾问
        if (customerold.getConsultWorkerId() == null && counsellingOrder.getConsultantUserId() != null ){
//            Customer customer = JSONUtil.toBean(counsellingOrder.getUserInfoJson(),Customer.class);
//            if (customer != null){
//                customer.setCustomerId(counsellingOrder.getUserId());
//                customerold.setRealName(customer.getRealName());
//                customerold.setSex(customer.getSex());
//                customerold.setAvatar(customer.getAvatar());
//                customerold.setAvatarObjectName(customer.getAvatarObjectName());
//                customerold.setLinkPhone(customer.getLinkPhone());
//                customerold.setBirthday(customer.getBirthday());
//                customerold.setEmail(customer.getEmail());
//                customerold.setEducationLevel(customer.getEducationLevel());
//                customerold.setOccupation(customer.getOccupation());
//                customerold.setMarital(customer.getMarital());
//                customerold.setCityCode(customer.getCityCode());
//                customerold.setIncome(customer.getIncome());
//                customerold.setChildAge(customer.getChildAge());
//            }
            customerold.setConsultWorkerId(counsellingOrder.getConsultantUserId());
            this.customerService.updateCustomerRemoveCache(customerold);
        }
    }
    @Override
    public CounsellingOrder getCounsellingOrderByNo(String orderNo) {
        return this.getOne(
                Wrappers.<CounsellingOrder>lambdaQuery()
                        .eq(CounsellingOrder::getOrderNo, orderNo)
                        .last("limit 1")
        );
    }
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/impl/CounsellingReservationRecordServiceImpl.java
New file
@@ -0,0 +1,21 @@
package cn.stylefeng.guns.modular.business.service.impl;
import cn.stylefeng.guns.modular.business.entity.CounsellingReservationRecord;
import cn.stylefeng.guns.modular.business.mapper.CounsellingReservationRecordMapper;
import cn.stylefeng.guns.modular.business.service.ICounsellingReservationRecordService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
 * <p>
 * 咨询记录信息 服务实现类
 * </p>
 *
 * @author guohongjin
 * @since 2024-01-02
 */
@Service
public class CounsellingReservationRecordServiceImpl extends ServiceImpl<CounsellingReservationRecordMapper, CounsellingReservationRecord> implements ICounsellingReservationRecordService {
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/impl/CounsellingReservationWorkServiceImpl.java
New file
@@ -0,0 +1,21 @@
package cn.stylefeng.guns.modular.business.service.impl;
import cn.stylefeng.guns.modular.business.entity.CounsellingReservationWork;
import cn.stylefeng.guns.modular.business.mapper.CounsellingReservationWorkMapper;
import cn.stylefeng.guns.modular.business.service.ICounsellingReservationWorkService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
 * <p>
 * 咨询作业 服务实现类
 * </p>
 *
 * @author guohongjin
 * @since 2024-01-02
 */
@Service
public class CounsellingReservationWorkServiceImpl extends ServiceImpl<CounsellingReservationWorkMapper, CounsellingReservationWork> implements ICounsellingReservationWorkService {
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/impl/CounsellingSetMealServiceImpl.java
New file
@@ -0,0 +1,21 @@
package cn.stylefeng.guns.modular.business.service.impl;
import cn.stylefeng.guns.modular.business.entity.CounsellingSetMeal;
import cn.stylefeng.guns.modular.business.mapper.CounsellingSetMealMapper;
import cn.stylefeng.guns.modular.business.service.ICounsellingSetMealService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
 * <p>
 * 咨询套餐信息 服务实现类
 * </p>
 *
 * @author goupan
 * @since 2024-01-01
 */
@Service
public class CounsellingSetMealServiceImpl extends ServiceImpl<CounsellingSetMealMapper, CounsellingSetMeal> implements ICounsellingSetMealService {
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/impl/CounsellingSpecialTimeConfigServiceImpl.java
New file
@@ -0,0 +1,21 @@
package cn.stylefeng.guns.modular.business.service.impl;
import cn.stylefeng.guns.modular.business.entity.CounsellingSpecialTimeConfig;
import cn.stylefeng.guns.modular.business.mapper.CounsellingSpecialTimeConfigMapper;
import cn.stylefeng.guns.modular.business.service.ICounsellingSpecialTimeConfigService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
 * <p>
 * 咨询预约特殊时间配置 服务实现类
 * </p>
 *
 * @author guohongjin
 * @since 2024-01-02
 */
@Service
public class CounsellingSpecialTimeConfigServiceImpl extends ServiceImpl<CounsellingSpecialTimeConfigMapper, CounsellingSpecialTimeConfig> implements ICounsellingSpecialTimeConfigService {
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/impl/CounsellingTagServiceImpl.java
New file
@@ -0,0 +1,21 @@
package cn.stylefeng.guns.modular.business.service.impl;
import cn.stylefeng.guns.modular.business.entity.CounsellingTag;
import cn.stylefeng.guns.modular.business.mapper.CounsellingTagMapper;
import cn.stylefeng.guns.modular.business.service.ICounsellingTagService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
 * <p>
 * 咨询擅长领域标签表 服务实现类
 * </p>
 *
 * @author goupan
 * @since 2024-01-01
 */
@Service
public class CounsellingTagServiceImpl extends ServiceImpl<CounsellingTagMapper, CounsellingTag> implements ICounsellingTagService {
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/impl/CounsellingTimeConfigServiceImpl.java
New file
@@ -0,0 +1,21 @@
package cn.stylefeng.guns.modular.business.service.impl;
import cn.stylefeng.guns.modular.business.entity.CounsellingTimeConfig;
import cn.stylefeng.guns.modular.business.mapper.CounsellingTimeConfigMapper;
import cn.stylefeng.guns.modular.business.service.ICounsellingTimeConfigService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
 * <p>
 * 咨询预约时间配置 服务实现类
 * </p>
 *
 * @author guohongjin
 * @since 2024-01-02
 */
@Service
public class CounsellingTimeConfigServiceImpl extends ServiceImpl<CounsellingTimeConfigMapper, CounsellingTimeConfig> implements ICounsellingTimeConfigService {
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/impl/CounsellingUserServiceImpl.java
New file
@@ -0,0 +1,27 @@
package cn.stylefeng.guns.modular.business.service.impl;
import cn.stylefeng.guns.modular.business.dto.request.CounsellingUserRequest;
import cn.stylefeng.guns.modular.business.entity.CounsellingUser;
import cn.stylefeng.guns.modular.business.mapper.CounsellingUserMapper;
import cn.stylefeng.guns.modular.business.service.ICounsellingUserService;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
 * <p>
 * 用户咨询师课时信息 服务实现类
 * </p>
 *
 * @author guohongjin
 * @since 2024-02-29
 */
@Service
public class CounsellingUserServiceImpl extends ServiceImpl<CounsellingUserMapper, CounsellingUser> implements ICounsellingUserService {
    @Override
    public Page<CounsellingUser> findCounsellingUserPage(Page<CounsellingUser> page, CounsellingUserRequest counsellingUserRequest) {
        return this.baseMapper.findCounsellingUserPage(page, counsellingUserRequest);
    }
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/impl/CourseChapterServiceImpl.java
New file
@@ -0,0 +1,87 @@
package cn.stylefeng.guns.modular.business.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.stylefeng.guns.modular.business.entity.CourseChapter;
import cn.stylefeng.guns.modular.business.mapper.CourseChapterMapper;
import cn.stylefeng.guns.modular.business.service.ICourseChapterService;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
 * <p>
 * 章节管理 服务实现类
 * </p>
 *
 * @author goupan
 * @since 2024-01-01
 */
@Service
public class CourseChapterServiceImpl extends ServiceImpl<CourseChapterMapper, CourseChapter> implements ICourseChapterService {
    /**
     * 根据课程id获取章节层次信息
     * @param courseId 课程id
     * @return
     */
    @Override
    public List<CourseChapter> getAllByCourseId(Long courseId) {
        List<CourseChapter> courseChapterList = this.list(new LambdaQueryWrapper<CourseChapter>().eq(CourseChapter::getCourseId,courseId).eq(CourseChapter::getIsDelete,false)
                .eq(CourseChapter::getParentId,0L));
        //获取一级章节目录
        if (CollectionUtil.isNotEmpty(courseChapterList)) {
            //获取所有子集章节信息
            List<CourseChapter> courseChapterChildList = this.list(new LambdaQueryWrapper<CourseChapter>().eq(CourseChapter::getCourseId,courseId).eq(CourseChapter::getIsDelete,false)
                    .ne(CourseChapter::getParentId,0L));
            if (CollectionUtil.isNotEmpty(courseChapterChildList)){
                Map<Long,List<CourseChapter>> courseChapterMap = new HashMap<>();
                //处理课程下面非一级的章节内容,形成统一map
                courseChapterChildList.stream().forEach(courseChapter -> {
                    if (ObjectUtil.isNotEmpty(courseChapterMap.get(courseChapter.getParentId()))){
                        List<CourseChapter> courseChapterList1 = courseChapterMap.get(courseChapter.getParentId());
                        courseChapterList1.add(courseChapter);
                    }else{
                        List<CourseChapter> childCourseChapList = new ArrayList<>();
                        childCourseChapList.add(courseChapter);
                        courseChapterMap.put(courseChapter.getParentId(),childCourseChapList);
                    }
                });
                if (ObjectUtil.isNotEmpty(courseChapterMap)){
                  return this.getChildCourseChapter(courseChapterMap,courseChapterList);
                }
            }
        }
        return courseChapterList;
    }
    /**
     * 处理层次章节信息
     * @param courseChapterMap 子集章节map信息
     * @param courseChapterList 高层级章节信息
     * @return
     */
    private List<CourseChapter> getChildCourseChapter(Map<Long,List<CourseChapter>> courseChapterMap,List<CourseChapter> courseChapterList){
        if (ObjectUtil.isNotEmpty(courseChapterMap)){
            courseChapterList.forEach(courseChapter -> {
                List<CourseChapter> childCourseChapterList = courseChapterMap.get(courseChapter.getId());
                if (ObjectUtil.isNotEmpty(childCourseChapterList)){
                    childCourseChapterList = this.getChildCourseChapter(courseChapterMap,childCourseChapterList);
                    courseChapter.setChildList(childCourseChapterList);
                }
            });
        }
        return courseChapterList;
    }
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/impl/CourseOrderServiceImpl.java
New file
@@ -0,0 +1,282 @@
package cn.stylefeng.guns.modular.business.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjUtil;
import cn.hutool.json.JSONUtil;
import cn.stylefeng.guns.modular.business.dto.CourseOrderResponseDTO;
import cn.stylefeng.guns.modular.business.dto.CourseResponseDTO;
import cn.stylefeng.guns.modular.business.dto.ImPushDataDTO;
import cn.stylefeng.guns.modular.business.dto.request.CourseOrderRequest;
import cn.stylefeng.guns.modular.business.dto.request.CoursePlaceOrderRequest;
import cn.stylefeng.guns.modular.business.dto.request.OrderPayRequest;
import cn.stylefeng.guns.modular.business.entity.Course;
import cn.stylefeng.guns.modular.business.entity.CourseChapter;
import cn.stylefeng.guns.modular.business.entity.CourseOrder;
import cn.stylefeng.guns.modular.business.entity.CouserChapterLearningRate;
import cn.stylefeng.guns.modular.business.mapper.CourseOrderMapper;
import cn.stylefeng.guns.modular.business.service.*;
import cn.stylefeng.guns.utils.GeneralUtil;
import cn.stylefeng.roses.kernel.auth.api.context.LoginContext;
import cn.stylefeng.roses.kernel.customer.modular.entity.Customer;
import cn.stylefeng.roses.kernel.customer.modular.service.CustomerService;
import cn.stylefeng.roses.kernel.rule.enums.*;
import cn.stylefeng.roses.kernel.rule.exception.base.ServiceException;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
 * <p>
 * 课程订单信息 服务实现类
 * </p>
 *
 * @author guohongjin
 * @since 2024-01-02
 */
@Service
public class CourseOrderServiceImpl extends ServiceImpl<CourseOrderMapper, CourseOrder> implements ICourseOrderService {
    @Autowired
    private ICourseChapterService courseChapterService;
    @Autowired
    private ICouserChapterLearningRateService couserChapterLearningRateService;
    @Autowired
    private ICourseService courseService;
    @Autowired
    private CustomerService customerService;
    @Autowired
    private IImGroupService iImGroupService;
    @Resource
    private ImBizService imBizService;
    @Override
    public Page<CourseOrderResponseDTO> findCounseOrderPage(Page<CourseOrderResponseDTO> page, CourseOrderRequest courseOrderRequest) {
        return this.baseMapper.findCounseOrderPage(page, courseOrderRequest);
    }
    @Override
    public CourseOrderResponseDTO getCourseChapterInfoByOrderId(Long orderId) {
        CourseOrderResponseDTO courseOrderResponseDTO = BeanUtil.copyProperties(this.getById(orderId),CourseOrderResponseDTO.class);
        //查询章节信息
        List<CourseChapter> courseChapterList = this.courseChapterService.getAllByCourseId(courseOrderResponseDTO.getCourseId());
        //查询章节学习进度
        List<CouserChapterLearningRate> couserChapterLearningRates = this.couserChapterLearningRateService.list(new LambdaQueryWrapper<CouserChapterLearningRate>().eq(CouserChapterLearningRate::getCourseId,courseOrderResponseDTO.getCourseId())
                .eq(CouserChapterLearningRate::getCourseOrderId,orderId));
        Map<Long,CouserChapterLearningRate> learnMap = new HashMap<>();
        if (CollectionUtil.isNotEmpty(couserChapterLearningRates)){
            learnMap = couserChapterLearningRates.stream().collect(Collectors.toMap(CouserChapterLearningRate::getCourseChapterId, Function.identity()));
            courseOrderResponseDTO.setStudyCourseChapter(learnMap.size());
        }
        //查询总课程章节
        long totalChapter = this.courseChapterService.count(new LambdaQueryWrapper<CourseChapter>().eq(CourseChapter::getCourseId,courseOrderResponseDTO.getCourseId())
                .eq(CourseChapter::getIsDelete,false).ne(CourseChapter::getParentId,0).isNotNull(CourseChapter::getMinuteNum));
        courseOrderResponseDTO.setTotalCourseChapter(Integer.parseInt(totalChapter+""));
        //处理课程学习进度
        List<CourseResponseDTO.CourseChapterResponseDTO> courseChapterResponseDTOList = new ArrayList<>();
        courseChapterResponseDTOList = turnChapterResponseDTO(courseChapterResponseDTOList,courseChapterList,learnMap);
        courseOrderResponseDTO.setCourseChapterResponseDTOList(courseChapterResponseDTOList);
        return courseOrderResponseDTO;
    }
    private List<CourseResponseDTO.CourseChapterResponseDTO> turnChapterResponseDTO(List<CourseResponseDTO.CourseChapterResponseDTO> courseChapterResponseDTOList,List<CourseChapter> courseChapterList,
                                                                                    Map<Long,CouserChapterLearningRate> learnMap){
        if (CollectionUtil.isNotEmpty(courseChapterList)){
            courseChapterResponseDTOList.addAll(BeanUtil.copyToList(courseChapterList,CourseResponseDTO.CourseChapterResponseDTO.class));
            courseChapterResponseDTOList.forEach(courseChapterResponseDTO -> {
                if (learnMap.get(courseChapterResponseDTO.getId()) != null){
                    CouserChapterLearningRate couserChapterLearningRate = learnMap.get(courseChapterResponseDTO.getId());
                    courseChapterResponseDTO.setLearnedTime(couserChapterLearningRate.getLearnedTime());
                    courseChapterResponseDTO.setTotalTime(couserChapterLearningRate.getTotalTime());
                    courseChapterResponseDTO.setLastStudyTime(couserChapterLearningRate.getLastStudyTime());
                }
            });
            courseChapterList.stream().forEach(courseChapter -> {
                if (CollectionUtil.isNotEmpty(courseChapter.getChildList())){
                    List<CourseResponseDTO.CourseChapterResponseDTO> courseChapterResponseDTOS = new ArrayList<>();
                    this.turnChapterResponseDTO(courseChapterResponseDTOS,courseChapter.getChildList(),learnMap);
                    courseChapterResponseDTOList.forEach(courseChapterResponseDTO -> {
                        if (courseChapterResponseDTO.getId().longValue() == courseChapter.getId().longValue()){
                            courseChapterResponseDTO.setChildCourseChapterResponseDTOList(courseChapterResponseDTOS);
                        }
                    });
                }
            });
            return courseChapterResponseDTOList;
        }
        return null;
    }
    @Override
    public CourseOrder createCourseOrder(CoursePlaceOrderRequest coursePlaceOrderRequest) {
        Course course = this.courseService.getById(coursePlaceOrderRequest.getCourseId());
        CourseOrder courseOrder = new CourseOrder();
        courseOrder.setUserId(coursePlaceOrderRequest.getUserId());
        courseOrder.setCourseId(coursePlaceOrderRequest.getCourseId());
        courseOrder.setCreateUser(LoginContext.me().getLoginUser().getUserId());
        //生成单号
        courseOrder.setOrderNo(GeneralUtil.generateOrderNo(OrderTypeEnum.COURSE_ORDER));
        courseOrder.setCourseJson(JSONUtil.toJsonStr(course));
        courseOrder.setTotalTime(course.getTotalTime());
        courseOrder.setLearnedTime(0l);
        courseOrder.setOrderAmount(course.getPrice());
        courseOrder.setPayAmount(courseOrder.getOrderAmount());
        Customer customerOld = this.customerService.getById(coursePlaceOrderRequest.getUserId());
        //是否是后台创建订单
            if (customerOld.getClassWorkerId() != null){
                courseOrder.setCourseUserId(customerOld.getClassWorkerId());
            }else{
                //幸福顾问
                Customer worker = customerService.randomWorkerByLineStatusAndPost(ImStatusEnum.ON_LINE.getCode(), null, PostIdEnum.PO_11.getCode(), CustomerWorkStatusEnum.ON_WORK.getCode());
                if (worker != null){
                    courseOrder.setCourseUserId(worker.getCustomerId());
                }else{
                    Customer worker3 = customerService.randomWorkerByLineStatusAndPost(null, null, PostIdEnum.PO_11.getCode(), CustomerWorkStatusEnum.ON_WORK.getCode());
                    if (worker3 != null){
                        courseOrder.setCourseUserId(worker3.getCustomerId());
                    }
                }
            }
            //课程辅导
            Customer worker2 = customerService.randomWorkerByLineStatusAndPost(ImStatusEnum.ON_LINE.getCode(), null, PostIdEnum.PO_12.getCode(), CustomerWorkStatusEnum.ON_WORK.getCode());
            if (worker2 != null){
                courseOrder.setTutoringUserId(worker2.getCustomerId());
            }else{
                Customer worker3 = customerService.randomWorkerByLineStatusAndPost(null, null, PostIdEnum.PO_12.getCode(), CustomerWorkStatusEnum.ON_WORK.getCode());
                if (worker3 != null){
                    courseOrder.setTutoringUserId(worker3.getCustomerId());
                }
            }
        if (coursePlaceOrderRequest.getIsBack()){
            Customer customer = this.customerService.getById(coursePlaceOrderRequest.getUserId());
            courseOrder.setPhone(customer.getTelephone());
            courseOrder.setPayTime(new Date());
            courseOrder.setStatusFlag(1);
            Date nowDate = new Date();
            courseOrder.setEffectiveBeginTime(nowDate);
            courseOrder.setEffectiveEndTime(DateUtil.endOfDay(DateUtil.offsetDay(nowDate,course.getCourseValidity())));
            this.save(courseOrder);
            //生成群聊
            iImGroupService.createGroup(1,null,null,null,courseOrder.getCourseUserId(),courseOrder.getTutoringUserId(),courseOrder.getUserId(),courseOrder.getId());
            UpdateWrapper<Course> courseUpdateWrapper = new UpdateWrapper<Course>().setSql(" buy_num = buy_num+1 ");
            //添加购买人数
            this.courseService.update(courseUpdateWrapper.lambda().eq(Course::getId,courseOrder.getCourseId()));
        }else{
            courseOrder.setPhone(coursePlaceOrderRequest.getPhone());
            courseOrder.setPayType(coursePlaceOrderRequest.getPayType());
            courseOrder.setStatusFlag(0);
            this.save(courseOrder);
        }
        if (customerOld.getClassWorkerId() == null && courseOrder.getCourseUserId() != null){
            customerOld.setClassWorkerId(courseOrder.getCourseUserId());
            this.customerService.updateCustomerRemoveCache(customerOld);
//            if (!coursePlaceOrderRequest.getIsBack()){
//
//                // 推送消息内容
//                String pushContent = "用户:"+customerOld.getNickName()+",有未支付的课程订单,";
//                // IM推送数据json
//                ImPushDataDTO pushData = ImPushDataDTO.builder()
//                        .type(ImPushTypeEnum.S_TO_W_TIP_COURSE_NOT_PAY.getCode())
//                        .objId(ObjUtil.toString(courseOrder.getId()))
//                        .title("通知")
//                        .content(pushContent)
////                    .extra("去查看。")
//                        .build();
//                // 发送预约提示
//                imBizService.messageSendSystem(courseOrder.getUserId()+"", new String[]{customerOld.getClassWorkerId()+""}, pushData, ImUserTypeEnum.WORKER, PostIdEnum.PO_11, true);
//
//            }
        }
        return courseOrder;
    }
    @Override
    public void payCourseOrder(OrderPayRequest orderPayRequest) {
        CourseOrder courseOrder = this.getOne(new LambdaQueryWrapper<CourseOrder>().eq(CourseOrder::getOrderNo,orderPayRequest.getOrderNo()));
        if (courseOrder == null){
            throw new ServiceException("订单号不存在!");
        }
        Course course = this.courseService.getById(courseOrder.getCourseId());
        courseOrder.setTransactionNo(orderPayRequest.getTransactionNo());
        courseOrder.setStatusFlag(1);
        courseOrder.setPayTime(new Date());
        courseOrder.setPayType(orderPayRequest.getPayType());
        Customer customerOld = this.customerService.getById(courseOrder.getUserId());
        if (courseOrder.getCourseUserId() == null){
            //幸福顾问
            if (customerOld.getClassWorkerId() != null){
                courseOrder.setCourseUserId(customerOld.getClassWorkerId());
            }else{
                //幸福顾问
                Customer worker = customerService.randomWorkerByLineStatusAndPost(ImStatusEnum.ON_LINE.getCode(), null, PostIdEnum.PO_11.getCode(), CustomerWorkStatusEnum.ON_WORK.getCode());
                if (worker != null){
                    courseOrder.setCourseUserId(worker.getCustomerId());
                }else{
                    Customer worker3 = customerService.randomWorkerByLineStatusAndPost(null, null, PostIdEnum.PO_11.getCode(), CustomerWorkStatusEnum.ON_WORK.getCode());
                    if (worker3 != null){
                        courseOrder.setCourseUserId(worker3.getCustomerId());
                    }
                }
            }
        }
        if (courseOrder.getTutoringUserId() == null) {
            //课程辅导
            Customer worker2 = customerService.randomWorkerByLineStatusAndPost(ImStatusEnum.ON_LINE.getCode(), null, PostIdEnum.PO_12.getCode(), CustomerWorkStatusEnum.ON_WORK.getCode());
            if (worker2 != null) {
                courseOrder.setTutoringUserId(worker2.getCustomerId());
            } else {
                Customer worker3 = customerService.randomWorkerByLineStatusAndPost(null, null, PostIdEnum.PO_12.getCode(), CustomerWorkStatusEnum.ON_WORK.getCode());
                if (worker3 != null) {
                    courseOrder.setTutoringUserId(worker3.getCustomerId());
                }
            }
        }
        Date nowDate = new Date();
        courseOrder.setEffectiveBeginTime(nowDate);
        courseOrder.setEffectiveEndTime(DateUtil.endOfDay(DateUtil.offsetDay(nowDate,course.getCourseValidity())));
        //生成群聊
        iImGroupService.createGroup(1,null,null,null,courseOrder.getCourseUserId(),courseOrder.getTutoringUserId(),courseOrder.getUserId(),courseOrder.getId());
        UpdateWrapper<Course> courseUpdateWrapper = new UpdateWrapper<Course>().setSql(" buy_num = buy_num+1 ");
        //添加购买人数
        this.courseService.update(courseUpdateWrapper.lambda().eq(Course::getId,courseOrder.getCourseId()));
        this.updateById(courseOrder);
        if (customerOld.getClassWorkerId() == null && courseOrder.getCourseUserId() != null){
            customerOld.setClassWorkerId(courseOrder.getCourseUserId());
            this.customerService.updateCustomerRemoveCache(customerOld);
        }
    }
    @Override
    public CourseOrder getCourseOrderByNo(String orderNo) {
        return this.getOne(
                Wrappers.<CourseOrder>lambdaQuery()
                        .eq(CourseOrder::getOrderNo, orderNo)
                        .last("limit 1")
        );
    }
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/impl/CourseServiceImpl.java
New file
@@ -0,0 +1,32 @@
package cn.stylefeng.guns.modular.business.service.impl;
import cn.stylefeng.guns.modular.business.entity.Course;
import cn.stylefeng.guns.modular.business.mapper.CourseMapper;
import cn.stylefeng.guns.modular.business.service.ICourseService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import java.util.List;
/**
 * <p>
 * 课程管理 服务实现类
 * </p>
 *
 * @author goupan
 * @since 2024-01-01
 */
@Service
public class CourseServiceImpl extends ServiceImpl<CourseMapper, Course> implements ICourseService {
    /**
     * 查询标签是否被引用
     * @param tagIds 标签ids
     * @return
     */
    @Override
    public long getCountCourse(List<String> tagIds) {
        return this.baseMapper.getCountCourse(tagIds);
    }
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/impl/CourseStudyNoteServiceImpl.java
New file
@@ -0,0 +1,21 @@
package cn.stylefeng.guns.modular.business.service.impl;
import cn.stylefeng.guns.modular.business.entity.CourseStudyNote;
import cn.stylefeng.guns.modular.business.mapper.CourseStudyNoteMapper;
import cn.stylefeng.guns.modular.business.service.ICourseStudyNoteService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
 * <p>
 * 课程学习笔记 服务实现类
 * </p>
 *
 * @author guohongjin
 * @since 2024-01-02
 */
@Service
public class CourseStudyNoteServiceImpl extends ServiceImpl<CourseStudyNoteMapper, CourseStudyNote> implements ICourseStudyNoteService {
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/impl/CourseTagServiceImpl.java
New file
@@ -0,0 +1,21 @@
package cn.stylefeng.guns.modular.business.service.impl;
import cn.stylefeng.guns.modular.business.entity.CourseTag;
import cn.stylefeng.guns.modular.business.mapper.CourseTagMapper;
import cn.stylefeng.guns.modular.business.service.ICourseTagService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
 * <p>
 * 课程标签 服务实现类
 * </p>
 *
 * @author goupan
 * @since 2024-01-01
 */
@Service
public class CourseTagServiceImpl extends ServiceImpl<CourseTagMapper, CourseTag> implements ICourseTagService {
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/impl/CourseUserLearnedServiceImpl.java
New file
@@ -0,0 +1,21 @@
package cn.stylefeng.guns.modular.business.service.impl;
import cn.stylefeng.guns.modular.business.entity.CourseUserLearned;
import cn.stylefeng.guns.modular.business.mapper.CourseUserLearnedMapper;
import cn.stylefeng.guns.modular.business.service.ICourseUserLearnedService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
 * <p>
 * 课程学习记录 服务实现类
 * </p>
 *
 * @author guohongjin
 * @since 2024-01-02
 */
@Service
public class CourseUserLearnedServiceImpl extends ServiceImpl<CourseUserLearnedMapper, CourseUserLearned> implements ICourseUserLearnedService {
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/impl/CouserChapterLearningRateServiceImpl.java
New file
@@ -0,0 +1,21 @@
package cn.stylefeng.guns.modular.business.service.impl;
import cn.stylefeng.guns.modular.business.entity.CouserChapterLearningRate;
import cn.stylefeng.guns.modular.business.mapper.CouserChapterLearningRateMapper;
import cn.stylefeng.guns.modular.business.service.ICouserChapterLearningRateService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
 * <p>
 * 课程章节学习进度 服务实现类
 * </p>
 *
 * @author guohongjin
 * @since 2024-01-02
 */
@Service
public class CouserChapterLearningRateServiceImpl extends ServiceImpl<CouserChapterLearningRateMapper, CouserChapterLearningRate> implements ICouserChapterLearningRateService {
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/impl/ExcelServiceImpl.java
New file
@@ -0,0 +1,22 @@
package cn.stylefeng.guns.modular.business.service.impl;
import cn.hutool.core.date.DateUtil;
import cn.stylefeng.guns.modular.business.service.ExcelService;
import cn.stylefeng.guns.utils.ExportUtil;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.*;
import java.util.concurrent.atomic.AtomicInteger;
@Service
public class ExcelServiceImpl implements ExcelService {
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/impl/HelpServiceImpl.java
New file
@@ -0,0 +1,21 @@
package cn.stylefeng.guns.modular.business.service.impl;
import cn.stylefeng.guns.modular.business.entity.Help;
import cn.stylefeng.guns.modular.business.mapper.HelpMapper;
import cn.stylefeng.guns.modular.business.service.IHelpService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
 * <p>
 * 帮助 服务实现类
 * </p>
 *
 * @author goupan
 * @since 2024-01-01
 */
@Service
public class HelpServiceImpl extends ServiceImpl<HelpMapper, Help> implements IHelpService {
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/impl/ImBizService.java
New file
@@ -0,0 +1,115 @@
package cn.stylefeng.guns.modular.business.service.impl;
import cn.hutool.core.util.BooleanUtil;
import cn.hutool.core.util.ObjUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import cn.stylefeng.guns.modular.business.dto.ImPushDataDTO;
import cn.stylefeng.guns.modular.business.entity.ImNotice;
import cn.stylefeng.guns.modular.business.service.IImNoticeService;
import cn.stylefeng.roses.kernel.customer.api.pojo.CustomerInfo;
import cn.stylefeng.roses.kernel.customer.modular.entity.Customer;
import cn.stylefeng.roses.kernel.customer.modular.service.CustomerService;
import cn.stylefeng.roses.kernel.im.api.ImServerApi;
import cn.stylefeng.roses.kernel.rule.enums.ImUserTypeEnum;
import cn.stylefeng.roses.kernel.rule.enums.PostIdEnum;
import io.rong.messages.BaseMessage;
import io.rong.messages.TxtMessage;
import io.rong.models.response.ResponseResult;
import io.rong.models.response.TokenResult;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@Slf4j
@Service
public class ImBizService {
    @Resource
    private ImServerApi imServerApi;
    @Resource
    private IImNoticeService imNoticeService;
    @Resource
    private CustomerService customerService;
    public String getImToken(Long customerId) {
        // 获取用户的详细信息
        CustomerInfo customerInfo = customerService.getCustomerInfoById(customerId);
        String imToken = customerInfo.getImToken();
        if (StrUtil.isEmpty(imToken)) {
            // IM用户注册
            TokenResult tokenResult = imServerApi.userRegister(customerInfo.getCustomerId().toString(), customerInfo.getNickName(), customerInfo.getAvatarObjectUrl());
            if (tokenResult.getCode() == 200) {
                imToken = tokenResult.getToken();
                // 更新用户IM通讯token
                Customer customer = new Customer();
                customer.setCustomerId(customerId);
                customer.setImToken(imToken);
                customerService.updateCustomerRemoveCache(customer);
            }
        }
        return imToken;
    }
    public <T extends BaseMessage> ResponseResult messageSendSystem(String fromUserId, String[] toUserIds, ImPushDataDTO pushData, ImUserTypeEnum userTypeEnum, PostIdEnum postIdEnum, Boolean isSaveImNotice) {
        // 推送json消息
        String pushDataStr = JSONUtil.toJsonStr(pushData);
        try {
            // 是否保存IM通知
            if (BooleanUtil.isTrue(isSaveImNotice)) {
                for (String userId : toUserIds) {
                    // 保存IM通知
                    imNoticeService.save(
                            ImNotice.builder()
                                    .type(pushData.getType())
                                    .userType(userTypeEnum == null ? null : userTypeEnum.getCode())
                                    .postId(postIdEnum == null ? null : postIdEnum.getCode())
                                    .userId(Long.valueOf(userId))
                                    .title(pushData.getTitle())
                                    .content(pushData.getContent())
                                    .pushJson(pushDataStr)
                                    .businessId(ObjUtil.toString(pushData.getObjId()))
                                    .build()
                    );
                }
            }
        } catch (Exception e) {
            log.error("保存IM通知异常");
            e.printStackTrace();
        }
        if (toUserIds.length > 0) {
            log.info("融云发送群消息:{}", pushDataStr);
            // 融云发送通知
            return imServerApi.messageSendSystem(fromUserId, toUserIds, new TxtMessage(pushDataStr, pushData.getExtra()));
        }
        return null;
    }
    public <T extends BaseMessage> ResponseResult messageSendPrivate(String fromUserId, String[] toUserIds, ImPushDataDTO pushData) {
        // 推送json消息
        String pushDataStr = JSONUtil.toJsonStr(pushData);
        if (toUserIds.length > 0) {
            log.info("融云发送单聊消息:{}", pushDataStr);
            // 融云发送单聊消息
            return imServerApi.messageSendPrivate(fromUserId, toUserIds, new TxtMessage(pushDataStr, pushData.getExtra()));
        }
        return null;
    }
    public <T extends BaseMessage> ResponseResult messageSendGroup(String fromUserId, String[] toUserIds, ImPushDataDTO pushData) {
        // 推送json消息
        String pushDataStr = JSONUtil.toJsonStr(pushData);
        if (toUserIds.length > 0) {
            log.info("融云发送群消息:{}", pushDataStr);
            // 融云发送群消息
            return imServerApi.messageSendGroup(fromUserId, toUserIds, new TxtMessage(pushDataStr, pushData.getExtra()));
        }
        return null;
    }
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/impl/ImGroupServiceImpl.java
New file
@@ -0,0 +1,339 @@
package cn.stylefeng.guns.modular.business.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.ObjUtil;
import cn.hutool.json.JSON;
import cn.stylefeng.guns.modular.business.dto.ImGroupUserDto;
import cn.stylefeng.guns.modular.business.dto.ImPushDataDTO;
import cn.stylefeng.guns.modular.business.entity.*;
import cn.stylefeng.guns.modular.business.mapper.ImGroupMapper;
import cn.stylefeng.guns.modular.business.service.*;
import cn.stylefeng.roses.kernel.customer.modular.entity.Customer;
import cn.stylefeng.roses.kernel.customer.modular.service.CustomerService;
import cn.stylefeng.roses.kernel.im.api.ImServerApi;
import cn.stylefeng.roses.kernel.rule.enums.ImPushTypeEnum;
import cn.stylefeng.roses.kernel.rule.enums.PostIdEnum;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.*;
import java.util.stream.Collectors;
/**
 * <p>
 * 消息群信息 服务实现类
 * </p>
 *
 * @author goupan
 * @since 2024-01-01
 */
@Service
public class ImGroupServiceImpl extends ServiceImpl<ImGroupMapper, ImGroup> implements IImGroupService {
    @Resource
    ImServerApi imServerApi;
    @Resource
    ImBizService imBizService;
    @Resource
    private IImGroupUserService imGroupUserService;
    @Resource
    private ICounsellingOrderService counsellingOrderService;
    @Resource
    private ICourseOrderService courseOrderService;
    @Resource
    private ICounsellingUserService counsellingUserService;
    @Resource
    private ICourseService courseService;
    @Resource
    private CustomerService customerService;
    @Override
    public void createGroup(Integer groupType, Long consultantUserId, Long companionUserId,
                            Long counsellingUserId, Long courseUserId, Long tutoringUserId,Long userId,Long orderId) {
        ImGroup imGroup = new ImGroup();
        imGroup.setGroupType(groupType);
        imGroup.setStatusFlag(1);
        imGroup.setOrderId(orderId);
        imGroup.setCreateUser(userId);
        LambdaQueryWrapper<ImGroup> lambdaQueryWrapper = new LambdaQueryWrapper<ImGroup>().eq(ImGroup::getIsDelete,0).eq(ImGroup::getStatusFlag,1);
        lambdaQueryWrapper.eq(ImGroup::getOrderId,orderId);
        lambdaQueryWrapper.eq(ImGroup::getCreateUser,userId);
        //群类型:1课程,2咨询
        if (groupType.intValue() ==1 ){
            CourseOrder courseOrder = this.courseOrderService.getById(orderId);
            Course course = this.courseService.getById(courseOrder.getCourseId());
            Customer customer = this.customerService.getById(courseOrder.getUserId());
            imGroup.setName(course.getCourseName()+"_"+customer.getNickName());
            lambdaQueryWrapper.eq(ImGroup::getGroupType,1);
        } else if (groupType.intValue() == 2) {
            Customer customer = this.customerService.getById(userId);
            imGroup.setName(DateTime.now().toDateStr()+"_"+customer.getNickName());
            lambdaQueryWrapper.eq(ImGroup::getGroupType,2);
        }
        List<ImGroupUser> imGroupUserList = new ArrayList<>();
        List<Long> olduserIdList =  new ArrayList<>();
        //查询是否存在群聊
        ImGroup imGroup1 = this.baseMapper.selectOne(lambdaQueryWrapper);
        if (imGroup1 == null){
            this.save(imGroup);
        }else{
            imGroup = imGroup1;
            olduserIdList = this.imGroupUserService.list(new LambdaQueryWrapper<ImGroupUser>().eq(ImGroupUser::getGroupId,imGroup.getId()).eq(ImGroupUser::getIsDelete,0))
                    .stream().map(ImGroupUser::getUserId).collect(Collectors.toList());
        }
        List<String> userIdList =  new ArrayList<>();
        //咨询顾问id
        if (consultantUserId != null){
            ImGroupUser imGroupUser = new ImGroupUser();
            imGroupUser.setGroupId(imGroup.getId());
            imGroupUser.setGroupAlias(imGroup.getName());
            imGroupUser.setSort(0);
            imGroupUser.setUserId(consultantUserId);
            imGroupUser.setUserPost(PostIdEnum.PO_21.getCode().longValue());
            if (!olduserIdList.contains(consultantUserId)){
                imGroupUserList.add(imGroupUser);
                userIdList.add(imGroupUser.getUserId().toString());
            }
        }
        //陪护教练id
        if (companionUserId != null){
            ImGroupUser imGroupUser = new ImGroupUser();
            imGroupUser.setGroupId(imGroup.getId());
            imGroupUser.setGroupAlias(imGroup.getName());
            imGroupUser.setSort(1);
            imGroupUser.setUserId(companionUserId);
            imGroupUser.setUserPost(PostIdEnum.PO_23.getCode().longValue());
            if (!olduserIdList.contains(companionUserId)){
                imGroupUserList.add(imGroupUser);
                userIdList.add(imGroupUser.getUserId().toString());
            }
        }
        //咨询师id
        if (counsellingUserId != null){
            ImGroupUser imGroupUser = new ImGroupUser();
            imGroupUser.setGroupId(imGroup.getId());
            imGroupUser.setGroupAlias(imGroup.getName());
            imGroupUser.setSort(2);
            imGroupUser.setUserId(counsellingUserId);
            imGroupUser.setUserPost(PostIdEnum.PO_22.getCode().longValue());
            if (!olduserIdList.contains(counsellingUserId)){
                imGroupUserList.add(imGroupUser);
                userIdList.add(imGroupUser.getUserId().toString());
            }
        }
        //课程顾问id
        if (courseUserId != null){
            ImGroupUser imGroupUser = new ImGroupUser();
            imGroupUser.setGroupId(imGroup.getId());
            imGroupUser.setGroupAlias(imGroup.getName());
            imGroupUser.setSort(3);
            imGroupUser.setUserId(courseUserId);
            imGroupUser.setUserPost(PostIdEnum.PO_11.getCode().longValue());
            if (!olduserIdList.contains(courseUserId)){
                imGroupUserList.add(imGroupUser);
                userIdList.add(imGroupUser.getUserId().toString());
            }
        }
        //课程辅导id
        if (tutoringUserId != null){
            ImGroupUser imGroupUser = new ImGroupUser();
            imGroupUser.setGroupId(imGroup.getId());
            imGroupUser.setGroupAlias(imGroup.getName());
            imGroupUser.setSort(4);
            imGroupUser.setUserId(tutoringUserId);
            imGroupUser.setUserPost(PostIdEnum.PO_12.getCode().longValue());
            if (!olduserIdList.contains(tutoringUserId)){
                imGroupUserList.add(imGroupUser);
                userIdList.add(imGroupUser.getUserId().toString());
            }
        }
        if (userId != null){
            ImGroupUser imGroupUser = new ImGroupUser();
            imGroupUser.setGroupId(imGroup.getId());
            imGroupUser.setGroupAlias(imGroup.getName());
            imGroupUser.setSort(5);
            imGroupUser.setUserId(userId);
            if (!olduserIdList.contains(userId)){
                imGroupUserList.add(imGroupUser);
                userIdList.add(imGroupUser.getUserId().toString());
            }
        }
        this.imGroupUserService.saveBatch(imGroupUserList);
        if (imGroup1 == null){
            //调用群聊
            this.imServerApi.groupCreate(imGroup.getId().toString(),imGroup.getName(), ArrayUtil.toArray(userIdList,String.class));
        }else {
//            //调用群聊
//            this.imServerApi.groupUpdate(imGroup.getId().toString(),imGroup.getName(), ArrayUtil.toArray(userIdList,String.class));
            if (CollectionUtil.isNotEmpty(userIdList)){
                //添加入群
                this.imServerApi.groupJoin(imGroup.getId().toString(),imGroup.getName(), ArrayUtil.toArray(userIdList,String.class));
            }
        }
        if (imGroup.getGroupType().intValue() == 1){
            Map<String,String> buinessmap = new HashMap<>();
            buinessmap.put("buinessName","心理咨询课程");
            // 推送消息内容
            String pushContent = "我购买了心理咨询课程,需要咨询";
            // IM推送数据json
            ImPushDataDTO pushData = ImPushDataDTO.builder()
                    .type(ImPushTypeEnum.S_TO_W_TIP_COURSE_PAY_GROUP_SUCCESS.getCode())
                    .objId(ObjUtil.toString(orderId))
                    .title("通知")
                    .content(pushContent)
                    .extra(JSONObject.toJSONString(buinessmap))
                    .build();
            // 发送咨询
            imBizService.messageSendGroup(userId+"", new String[]{imGroup.getId()+""}, pushData);
        } else if (imGroup.getGroupType().intValue() == 2) {
            Map<String,String> buinessmap = new HashMap<>();
            buinessmap.put("buinessName","心理咨询疗程");
            // 推送消息内容
            String pushContent = "我购买了心理咨询疗程,需要咨询";
            // IM推送数据json
            ImPushDataDTO pushData = ImPushDataDTO.builder()
                    .type(ImPushTypeEnum.S_TO_W_TIP_CONSULT_PAY_GROUP_SUCCESS.getCode())
                    .objId(ObjUtil.toString(orderId))
                    .title("通知")
                    .content(pushContent)
                    .extra(JSONObject.toJSONString(buinessmap))
                    .build();
            // 发送咨询
            imBizService.messageSendGroup(userId+"", new String[]{imGroup.getId()+""}, pushData);
        }
    }
    @Override
    public List<ImGroup> getMyGroup(Long userId, String groupName, Integer statusFlag, String nickName, Integer groupType, String orderId) {
        return this.baseMapper.getMyGroup(userId, groupName, statusFlag, nickName, groupType, orderId);
    }
    @Override
    public List<ImGroupUserDto> groupUser(Long groupId) {
        return this.baseMapper.groupUser(groupId);
    }
    @Override
    public void updateGroupUserForOrderinfo(Long userId, Integer groupType, Long customerId) {
        if (groupType != null ){
            //群类型:1课程,2咨询
            if (groupType.intValue() == 1){
               List<CourseOrder> courseOrderList = this.courseOrderService.list(new LambdaQueryWrapper<CourseOrder>().eq(CourseOrder::getUserId,customerId)
                        .eq(CourseOrder::getStatusFlag,1).eq(CourseOrder::getIsDelete,0).ne(CourseOrder::getCourseUserId,userId));
               if (CollectionUtil.isNotEmpty(courseOrderList)){
                   courseOrderList.stream().forEach(courseOrder -> {
                       courseOrder.setCourseUserId(userId);
                       ImGroup imGroup = this.baseMapper.selectOne(new LambdaQueryWrapper<ImGroup>().eq(ImGroup::getOrderId,courseOrder.getId())
                               .eq(ImGroup::getGroupType,groupType).eq(ImGroup::getStatusFlag,1));
                       if (imGroup != null){
                           //退出老顾问
                           ImGroupUser imGroupUserOld = this.imGroupUserService.getOne(new LambdaQueryWrapper<ImGroupUser>().eq(ImGroupUser::getGroupId,imGroup.getId())
                                   .eq(ImGroupUser::getUserPost,PostIdEnum.PO_11.getCode().longValue()).last(" limit 1 ").eq(ImGroupUser::getIsDelete,0)
                                   .ne(ImGroupUser::getUserId,userId));
                           if (imGroupUserOld != null){
                               this.imGroupUserService.update(new LambdaUpdateWrapper<ImGroupUser>().set(ImGroupUser::getIsDelete,1).eq(ImGroupUser::getId,imGroupUserOld.getId()));
                               this.imServerApi.groupQuit(imGroup.getId()+"",new String[]{imGroupUserOld.getUserId()+""});
                               //邀请进入新群
                               ImGroupUser imGroupUser = new ImGroupUser();
                               imGroupUser.setGroupId(imGroup.getId());
                               imGroupUser.setGroupAlias(imGroup.getName());
                               imGroupUser.setSort(3);
                               imGroupUser.setUserId(userId);
                               imGroupUser.setUserPost(PostIdEnum.PO_11.getCode().longValue());
                               this.imGroupUserService.save(imGroupUser);
                               this.imServerApi.groupJoin(imGroup.getId()+"",imGroup.getName(),new String[]{imGroupUser.getUserId()+""});
                           }
                       }
                       this.courseOrderService.updateById(courseOrder);
                   });
               }
            }else if (groupType.intValue() == 2){
                //修改使用的订单咨询顾问
                List<CounsellingOrder> counsellingOrderList = this.counsellingOrderService.list(new LambdaQueryWrapper<CounsellingOrder>().eq(CounsellingOrder::getUserId,customerId)
                        .eq(CounsellingOrder::getStatusFlag,1).eq(CounsellingOrder::getIsDelete,0).ne(CounsellingOrder::getConsultantUserId,userId));
                if (CollectionUtil.isNotEmpty(counsellingOrderList)){
                    counsellingOrderList.stream().forEach(counsellingOrder -> {
                        counsellingOrder.setConsultantUserId(userId);
                        ImGroup imGroup = this.baseMapper.selectOne(new LambdaQueryWrapper<ImGroup>().eq(ImGroup::getOrderId,counsellingOrder.getCounsellingInfoId())
                                .eq(ImGroup::getGroupType,groupType).eq(ImGroup::getStatusFlag,1).eq(ImGroup::getCreateUser,counsellingOrder.getUserId()));
                        if (imGroup != null){
                            //退出老顾问
                            ImGroupUser imGroupUserOld = this.imGroupUserService.getOne(new LambdaQueryWrapper<ImGroupUser>().eq(ImGroupUser::getGroupId,imGroup.getId())
                                    .eq(ImGroupUser::getUserPost,PostIdEnum.PO_21.getCode().longValue()).last(" limit 1 ").eq(ImGroupUser::getIsDelete,0)
                                    .ne(ImGroupUser::getUserId,userId));
                            if (imGroupUserOld != null){
                                this.imGroupUserService.update(new LambdaUpdateWrapper<ImGroupUser>().set(ImGroupUser::getIsDelete,1).eq(ImGroupUser::getId,imGroupUserOld.getId()));
                                this.imServerApi.groupQuit(imGroup.getId()+"",new String[]{imGroupUserOld.getUserId()+""});
                                //邀请进入新群
                                ImGroupUser imGroupUser = new ImGroupUser();
                                imGroupUser.setGroupId(imGroup.getId());
                                imGroupUser.setGroupAlias(imGroup.getName());
                                imGroupUser.setSort(0);
                                imGroupUser.setUserId(userId);
                                imGroupUser.setUserPost(PostIdEnum.PO_21.getCode().longValue());
                                this.imGroupUserService.save(imGroupUser);
                                this.imServerApi.groupJoin(imGroup.getId()+"",imGroup.getName(),new String[]{imGroupUser.getUserId()+""});
                            }
                        }
                        this.counsellingOrderService.updateById(counsellingOrder);
                        //修改咨询师的咨询顾问
                        CounsellingUser counsellingUser = this.counsellingUserService.getOne(new LambdaQueryWrapper<CounsellingUser>().eq(CounsellingUser::getUserId,customerId)
                                .eq(CounsellingUser::getCounsellingInfoId,counsellingOrder.getCounsellingInfoId()).eq(CounsellingUser::getIsDelete,0)
                                .last(" limit 1"));
                        if (counsellingUser != null){
                            counsellingUser.setConsultantUserId(userId);
                            this.counsellingUserService.updateById(counsellingUser);
                        }
                    });
                }
            }
        }
    }
    public static void main(String[] args) {
        List<Long> userIds = new ArrayList<>();
        userIds.add(200L);
        System.out.println(userIds.contains(200L));
    }
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/impl/ImGroupUserServiceImpl.java
New file
@@ -0,0 +1,21 @@
package cn.stylefeng.guns.modular.business.service.impl;
import cn.stylefeng.guns.modular.business.entity.ImGroupUser;
import cn.stylefeng.guns.modular.business.mapper.ImGroupUserMapper;
import cn.stylefeng.guns.modular.business.service.IImGroupUserService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
 * <p>
 * 消息群用户 服务实现类
 * </p>
 *
 * @author goupan
 * @since 2024-01-01
 */
@Service
public class ImGroupUserServiceImpl extends ServiceImpl<ImGroupUserMapper, ImGroupUser> implements IImGroupUserService {
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/impl/ImNoticeServiceImpl.java
New file
@@ -0,0 +1,21 @@
package cn.stylefeng.guns.modular.business.service.impl;
import cn.stylefeng.guns.modular.business.entity.ImNotice;
import cn.stylefeng.guns.modular.business.mapper.ImNoticeMapper;
import cn.stylefeng.guns.modular.business.service.IImNoticeService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
 * <p>
 * 消息通知 服务实现类
 * </p>
 *
 * @author goupan
 * @since 2024-01-01
 */
@Service
public class ImNoticeServiceImpl extends ServiceImpl<ImNoticeMapper, ImNotice> implements IImNoticeService {
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/impl/ImUserStatusServiceImpl.java
New file
@@ -0,0 +1,21 @@
package cn.stylefeng.guns.modular.business.service.impl;
import cn.stylefeng.guns.modular.business.entity.ImUserStatus;
import cn.stylefeng.guns.modular.business.mapper.ImUserStatusMapper;
import cn.stylefeng.guns.modular.business.service.IImUserStatusService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
 * <p>
 * IM用户在线状态 服务实现类
 * </p>
 *
 * @author goupan
 * @since 2024-01-11
 */
@Service
public class ImUserStatusServiceImpl extends ServiceImpl<ImUserStatusMapper, ImUserStatus> implements IImUserStatusService {
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/impl/MentalAnalysisSpecialTimeConfigServiceImpl.java
New file
@@ -0,0 +1,164 @@
package cn.stylefeng.guns.modular.business.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
import cn.stylefeng.guns.modular.business.dto.request.MentalAnalysisSpecialTimeConfigEdit2Request;
import cn.stylefeng.guns.modular.business.entity.MentalAnalysisSpecialTimeConfig;
import cn.stylefeng.guns.modular.business.entity.MentalAppointment;
import cn.stylefeng.guns.modular.business.mapper.MentalAnalysisSpecialTimeConfigMapper;
import cn.stylefeng.guns.modular.business.service.IMentalAnalysisSpecialTimeConfigService;
import cn.stylefeng.guns.modular.business.service.IMentalAppointmentService;
import cn.stylefeng.roses.kernel.rule.enums.MentalAppointmentStatusEnum;
import cn.stylefeng.roses.kernel.rule.pojo.response.ErrorResponseData;
import cn.stylefeng.roses.kernel.rule.pojo.response.ResponseData;
import cn.stylefeng.roses.kernel.rule.pojo.response.SuccessResponseData;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.jetbrains.annotations.Nullable;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
/**
 * <p>
 * 性格分析特殊时间配置 服务实现类
 * </p>
 *
 * @author goupan
 * @since 2024-01-26
 */
@Service
public class MentalAnalysisSpecialTimeConfigServiceImpl extends ServiceImpl<MentalAnalysisSpecialTimeConfigMapper, MentalAnalysisSpecialTimeConfig> implements IMentalAnalysisSpecialTimeConfigService {
    @Resource
    private IMentalAppointmentService mentalAppointmentService;
    @Transactional(rollbackFor = Exception.class)
    @Override
    public ResponseData editSpecialTimeConfig(MentalAnalysisSpecialTimeConfigEdit2Request req) {
        List<MentalAnalysisSpecialTimeConfig> batchSpecialTimeConfigList = new ArrayList<>();
        // 转日期格式
        Date specialDayDate = DateUtil.parseDate(req.getSpecialDay());
        // 判断是设置当天、还是指定时间段
        if (req.getSpecialTimeConfigList() == null || req.getSpecialTimeConfigList().size() == 0) {
            // 获取当天预约(服务中)
            Long inServiceMentalAppointmentCount = mentalAppointmentService.count(
                    Wrappers.<MentalAppointment>lambdaQuery()
                            .eq(MentalAppointment::getWorkerId, req.getCounsellingInfoId())
                            .eq(MentalAppointment::getAppointmentDay, req.getSpecialDay())
                            .eq(MentalAppointment::getStatusFlag, MentalAppointmentStatusEnum.IN_SERVICE.getCode())
            );
            if (inServiceMentalAppointmentCount > 0) {
                return new ErrorResponseData("500", "当天有预约服务中,设置特殊时段失败!");
            }
            // 获取当天预约(待服务)
            List<MentalAppointment> todayMentalAppointmentList = mentalAppointmentService.list(
                    Wrappers.<MentalAppointment>lambdaQuery()
                            .eq(MentalAppointment::getWorkerId, req.getCounsellingInfoId())
                            .eq(MentalAppointment::getAppointmentDay, req.getSpecialDay())
                            .eq(MentalAppointment::getStatusFlag, MentalAppointmentStatusEnum.WAIT_SERVICE.getCode())
            );
            // 预约单新分配性格分析师
            ResponseData x = updateMentalAppointmentNewWorkerOperation(todayMentalAppointmentList);
            if (x != null) {
                return x;
            }
            // 设置当天
            MentalAnalysisSpecialTimeConfig o = BeanUtil.toBean(req, MentalAnalysisSpecialTimeConfig.class);
            o.setIsCancelDay(1);
            o.setCounsellingInfoId(req.getCounsellingInfoId());
            o.setSpecialDay(specialDayDate);
            batchSpecialTimeConfigList.add(o);
        } else {
            // 特殊时间段,是否未覆盖预约时间
            List<MentalAppointment> todayMentalAppointmentList = mentalAppointmentService.list(
                    Wrappers.<MentalAppointment>lambdaQuery()
                            .eq(MentalAppointment::getWorkerId, req.getCounsellingInfoId())
                            .eq(MentalAppointment::getAppointmentDay, req.getSpecialDay())
                            .in(MentalAppointment::getStatusFlag, Arrays.asList(
                                    MentalAppointmentStatusEnum.WAIT_SERVICE.getCode(),
                                    MentalAppointmentStatusEnum.IN_SERVICE.getCode()
                            ))
                            .and(wand ->
                                    req.getSpecialTimeConfigList().forEach(st -> {
                                        wand.or(wor -> wor.ne(MentalAppointment::getBeginTimePoint, st.getSpecialBeginTimePoint())
                                                .ne(MentalAppointment::getEndTimePoint, st.getSpecialEndTimePoint()));
                                    })
                            )
            );
            // 服务中存在,未覆盖,提示失败
            Boolean inServicePresent = todayMentalAppointmentList.stream().filter(tma -> MentalAppointmentStatusEnum.IN_SERVICE.getCode().equals(tma.getStatusFlag())).findAny().isPresent();
            if (inServicePresent) {
                return new ErrorResponseData("500", "有预约服务中,设置特殊时段失败!");
            }
            // 预约单新分配性格分析师
            ResponseData x = updateMentalAppointmentNewWorkerOperation(todayMentalAppointmentList);
            if (x != null) {
                return x;
            }
            // 设置时间段特殊时间
            for (MentalAnalysisSpecialTimeConfigEdit2Request.SpecialTimeConfig t : req.getSpecialTimeConfigList()) {
                MentalAnalysisSpecialTimeConfig o = BeanUtil.toBean(t, MentalAnalysisSpecialTimeConfig.class);
                o.setCounsellingInfoId(req.getCounsellingInfoId());
                o.setSpecialDay(specialDayDate);
                batchSpecialTimeConfigList.add(o);
            }
        }
        // 清除当天的设置
        this.remove(
                Wrappers.<MentalAnalysisSpecialTimeConfig>lambdaQuery()
                        .eq(MentalAnalysisSpecialTimeConfig::getCounsellingInfoId, req.getCounsellingInfoId())
                        .eq(MentalAnalysisSpecialTimeConfig::getSpecialDay, req.getSpecialDay())
        );
        if (CollUtil.isNotEmpty(batchSpecialTimeConfigList)) {
            this.saveOrUpdateBatch(batchSpecialTimeConfigList);
        }
        return new SuccessResponseData();
    }
    /**
     * 预约单新分配性格分析师
     * @param todayMentalAppointmentList
     * @return
     */
    @Nullable
    private ResponseData updateMentalAppointmentNewWorkerOperation(List<MentalAppointment> todayMentalAppointmentList) {
        if (CollUtil.isNotEmpty(todayMentalAppointmentList)) {
            // 修改待服务的预约性格分析师
            List<MentalAppointment> waitUpdateMentalAppointmentList = new ArrayList<>();
            for (MentalAppointment o : todayMentalAppointmentList) {
                MentalAppointment newMa = new MentalAppointment();
                newMa.setId(o.getId());
                // 预约时间匹配性格分析师
                Long workerId = mentalAppointmentService.assignMentalAppointmentWorkerId(o.getAppointmentDay(), o.getBeginTimePoint(), o.getEndTimePoint());
                if (workerId == null) {
                    return new ErrorResponseData("500", "新分配性格分析师失败!");
                }
                // 分配新的性格分析师
                newMa.setWorkerId(workerId);
                waitUpdateMentalAppointmentList.add(newMa);
            }
            if (CollUtil.isNotEmpty(waitUpdateMentalAppointmentList)) {
                mentalAppointmentService.updateBatchById(waitUpdateMentalAppointmentList);
            }
        }
        return null;
    }
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/impl/MentalAnalysisTimeConfigServiceImpl.java
New file
@@ -0,0 +1,89 @@
package cn.stylefeng.guns.modular.business.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.collection.ListUtil;
import cn.stylefeng.guns.modular.business.dto.MentalAnalysisTimeConfigPageDTO;
import cn.stylefeng.guns.modular.business.dto.request.MentalAnalysisTimeConfigAddUpdateRequest;
import cn.stylefeng.guns.modular.business.entity.MentalAnalysisTimeConfig;
import cn.stylefeng.guns.modular.business.mapper.MentalAnalysisTimeConfigMapper;
import cn.stylefeng.guns.modular.business.service.IMentalAnalysisTimeConfigService;
import cn.stylefeng.guns.utils.GeneralUtil;
import cn.stylefeng.roses.kernel.customer.modular.entity.Customer;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
 * <p>
 * 性格分析时间配置 服务实现类
 * </p>
 *
 * @author goupan
 * @since 2024-01-26
 */
@Service
public class MentalAnalysisTimeConfigServiceImpl extends ServiceImpl<MentalAnalysisTimeConfigMapper, MentalAnalysisTimeConfig> implements IMentalAnalysisTimeConfigService {
    @Override
    public Page<MentalAnalysisTimeConfigPageDTO> getWorkerPage(Page<Object> page, String nickName) {
        return this.baseMapper.getWorkerPage(page, nickName);
    }
    @Override
    public void addTimeConfig(MentalAnalysisTimeConfigAddUpdateRequest req) {
//        for (MentalAnalysisTimeConfigAddUpdateRequest.TimeConfigRequest tc : req.getTimeConfigList()) {
//            MentalAnalysisTimeConfig o = BeanUtil.toBean(tc, MentalAnalysisTimeConfig.class);
//            o.setCounsellingInfoId(req.getCounsellingInfoId());
//            this.save(o);
//        }
        // 删除时间配置重新生成
        this.remove(new LambdaQueryWrapper<MentalAnalysisTimeConfig>().eq(MentalAnalysisTimeConfig::getCounsellingInfoId, req.getCounsellingInfoId()));
        // 处理预约时间配置
        if (CollectionUtil.isNotEmpty(req.getTimeConfigDTOList()) ){
            List<MentalAnalysisTimeConfig> counsellingTimeConfigs = new ArrayList<>();
            req.getTimeConfigDTOList().forEach(timeConfigDTO -> {
                // 模块编号
                String moduleNo = GeneralUtil.generateModuleNo();
                // 星期几
                List<String> weekList = ListUtil.toList(timeConfigDTO.getWeeks().split(","));
                // 时间点
                List<String> timePointList = ListUtil.toList(timeConfigDTO.getTimePoints().split(","));
                weekList.stream().forEach(week -> {
                    timePointList.forEach(timePoint -> {
                        MentalAnalysisTimeConfig obj = new MentalAnalysisTimeConfig();
                        obj.setModuleNo(moduleNo);
                        obj.setWeekDay(Integer.parseInt(week));
                        obj.setCounsellingInfoId(req.getCounsellingInfoId());
                        obj.setBeginTimePoint(timePoint.split("-")[0]);
                        obj.setEndTimePoint(timePoint.split("-")[1]);
                        counsellingTimeConfigs.add(obj);
                    });
                });
            });
            if (CollectionUtil.isNotEmpty(counsellingTimeConfigs)){
                this.saveBatch(counsellingTimeConfigs);
            }
        }
    }
    @Override
    public void editTimeConfig(MentalAnalysisTimeConfigAddUpdateRequest req) {
//        for (MentalAnalysisTimeConfigAddUpdateRequest.TimeConfigRequest tc : req.getTimeConfigList()) {
//            MentalAnalysisTimeConfig o = BeanUtil.toBean(tc, MentalAnalysisTimeConfig.class);
//            o.setCounsellingInfoId(req.getCounsellingInfoId());
//            this.saveOrUpdate(o);
//        }
    }
    @Override
    public List<MentalAnalysisTimeConfig> getWorkerListByAppointmentTime(Integer mentalAnalysisStatus, Integer weekDay, String appointmentDay, String beginTimePoint, String endTimePoint) {
        return this.baseMapper.getWorkerListByAppointmentTime(mentalAnalysisStatus, weekDay, appointmentDay, beginTimePoint, endTimePoint);
    }
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/impl/MentalAnalysisTimeServiceImpl.java
New file
@@ -0,0 +1,60 @@
package cn.stylefeng.guns.modular.business.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.collection.ListUtil;
import cn.stylefeng.guns.modular.business.dto.request.MentalAnalysisTimeAddUpdateRequest;
import cn.stylefeng.guns.modular.business.entity.MentalAnalysisTime;
import cn.stylefeng.guns.modular.business.mapper.MentalAnalysisTimeMapper;
import cn.stylefeng.guns.modular.business.service.IMentalAnalysisTimeService;
import cn.stylefeng.guns.utils.GeneralUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
/**
 * <p>
 * 性格分析可预约时间 服务实现类
 * </p>
 *
 * @author guohongjin
 * @since 2024-01-27
 */
@Service
public class MentalAnalysisTimeServiceImpl extends ServiceImpl<MentalAnalysisTimeMapper, MentalAnalysisTime> implements IMentalAnalysisTimeService {
    @Override
    public void updateTime(MentalAnalysisTimeAddUpdateRequest req) {
        // 删除时间配置重新生成
        this.remove(new LambdaQueryWrapper<>());
        // 处理预约时间配置
        if (CollectionUtil.isNotEmpty(req.getTimeConfigDTOList()) ){
            List<MentalAnalysisTime> counsellingTimes = new ArrayList<>();
            req.getTimeConfigDTOList().forEach(timeConfigDTO -> {
                // 模块编号
                String moduleNo = GeneralUtil.generateModuleNo();
                // 星期几
                List<String> weekList = ListUtil.toList(timeConfigDTO.getWeeks().split(","));
                // 时间点
                List<String> timePointList = ListUtil.toList(timeConfigDTO.getTimePoints().split(","));
                weekList.stream().forEach(week -> {
                    timePointList.forEach(timePoint -> {
                        MentalAnalysisTime obj = new MentalAnalysisTime();
                        obj.setModuleNo(moduleNo);
                        obj.setWeekDay(Integer.parseInt(week));
                        obj.setBeginTimePoint(timePoint.split("-")[0]);
                        obj.setEndTimePoint(timePoint.split("-")[1]);
                        counsellingTimes.add(obj);
                    });
                });
            });
            if (CollectionUtil.isNotEmpty(counsellingTimes)){
                this.saveBatch(counsellingTimes);
            }
        }
    }
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/impl/MentalAppointmentServiceImpl.java
New file
@@ -0,0 +1,253 @@
package cn.stylefeng.guns.modular.business.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.BooleanUtil;
import cn.hutool.http.HttpUtil;
import cn.stylefeng.guns.modular.business.dto.MentalAppointmentPageDTO;
import cn.stylefeng.guns.modular.business.dto.MentalTestMyMentalAppointmentDTO;
import cn.stylefeng.guns.modular.business.dto.UserMentalAppointmentPageResponseDTO;
import cn.stylefeng.guns.modular.business.entity.MentalAnalysisSpecialTimeConfig;
import cn.stylefeng.guns.modular.business.entity.MentalAnalysisTimeConfig;
import cn.stylefeng.guns.modular.business.entity.MentalAppointment;
import cn.stylefeng.guns.modular.business.entity.OrderConsultOne;
import cn.stylefeng.guns.modular.business.mapper.MentalAppointmentMapper;
import cn.stylefeng.guns.modular.business.service.IMentalAnalysisSpecialTimeConfigService;
import cn.stylefeng.guns.modular.business.service.IMentalAnalysisTimeConfigService;
import cn.stylefeng.guns.modular.business.service.IMentalAppointmentService;
import cn.stylefeng.guns.modular.business.service.IOrderConsultOneService;
import cn.stylefeng.roses.kernel.auth.api.context.LoginContext;
import cn.stylefeng.roses.kernel.auth.api.pojo.login.LoginUser;
import cn.stylefeng.roses.kernel.customer.modular.service.CustomerService;
import cn.stylefeng.roses.kernel.rule.enums.*;
import com.baomidou.mybatisplus.core.toolkit.Assert;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.annotations.Param;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.*;
import java.util.stream.Collectors;
/**
 * <p>
 * 性格分析预约 服务实现类
 * </p>
 *
 * @author goupan
 * @since 2024-01-01
 */
@Slf4j
@Service
public class MentalAppointmentServiceImpl extends ServiceImpl<MentalAppointmentMapper, MentalAppointment> implements IMentalAppointmentService {
    @Value("${refund.alipay-url}")
    private String refundAlipayUrl;
    @Value("${refund.wxpay-url}")
    private String refundWxpayUrl;
    @Resource
    private CustomerService customerService;
    @Resource
    private IMentalAppointmentService mentalAppointmentService;
    @Resource
    private IMentalAnalysisTimeConfigService mentalAnalysisTimeConfigService;
    @Resource
    private IMentalAnalysisSpecialTimeConfigService mentalAnalysisSpecialTimeConfigService;
    @Resource
    private IOrderConsultOneService orderConsultOneService;
    @Override
    public List<MentalTestMyMentalAppointmentDTO> myMentalAppointment(Long userId, String consultantName, List<Integer> statusFlagList) {
        return this.baseMapper.myMentalAppointment(userId, consultantName, statusFlagList);
    }
    @Override
    public Page<UserMentalAppointmentPageResponseDTO> userMentalAppointmentPage(Page<Object> page, Long userId, String name, String telephone, Integer statusFlag) {
        return this.baseMapper.userMentalAppointmentPage(page, userId, name, telephone, statusFlag);
    }
    @Override
    public Page<MentalAppointmentPageDTO> getPage(Page<Object> page, Long counsellingInfoId, String workerNickName, String userNickName, String userTelephone, Integer statusFlag, List<Integer> statusFlagList) {
        return this.baseMapper.mentalAnalysisTimeConfigSchedule(page, null, null, counsellingInfoId, workerNickName, userNickName, userTelephone, statusFlag, statusFlagList);
    }
    @Override
    public List<MentalAppointmentPageDTO> mentalAnalysisTimeConfigSchedule(String searchBeginTime, String searchEndTime, Long counsellingInfoId, String workerNickName, String userNickName, String userTelephone, Integer statusFlag, List<Integer> statusFlagList) {
        return this.baseMapper.mentalAnalysisTimeConfigSchedule(searchBeginTime, searchEndTime, counsellingInfoId, workerNickName, userNickName, userTelephone, statusFlag, statusFlagList);
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public boolean mentalAppointmentCancel(Long id) {
        // 获取当前登录用户信息
        LoginUser loginUser = LoginContext.me().getLoginUser();
        Long userId = loginUser.getUserId();
        // 性格分析预约
        MentalAppointment mentalAppointment = this.getById(id);
        Assert.isTrue(userId.equals(mentalAppointment.getUserId()), "预约用户信息错误");
        // 服务中可取消
        if (mentalAppointment != null
                && MentalAppointmentStatusEnum.WAIT_SERVICE.getCode().equals(mentalAppointment.getStatusFlag())) {
            // 1V1咨询订单信息
            OrderConsultOne orderConsultOne = orderConsultOneService.getOne(
                    Wrappers.<OrderConsultOne>lambdaQuery()
                            .eq(OrderConsultOne::getMentalAppointmentId, id)
                            .gt(OrderConsultOne::getPayAmount, 0)
                            .isNotNull(OrderConsultOne::getPayType)
            );
            boolean update = orderConsultOneService.update(
                    Wrappers.<OrderConsultOne>lambdaUpdate()
                            .set(OrderConsultOne::getStatusFlag, OrderStatusFlagEnum.CANCEL.getCode())
                            .set(OrderConsultOne::getRefundAmount, orderConsultOne.getPayAmount())
                            .set(OrderConsultOne::getRefundTime, new Date())
                            .set(OrderConsultOne::getCancelTime, new Date())
                            .set(OrderConsultOne::getCancelRemark, "申请取消")
                            .eq(OrderConsultOne::getId, orderConsultOne.getId())
                            .eq(OrderConsultOne::getStatusFlag, OrderStatusFlagEnum.PAY_SUCCESS.getCode())
            );
            if (update) {
                this.update(
                        Wrappers.<MentalAppointment>lambdaUpdate()
                                .set(MentalAppointment::getStatusFlag, MentalAppointmentStatusEnum.CANCEL.getCode())
                                .eq(MentalAppointment::getId, mentalAppointment.getId())
                );
            }
            Assert.isTrue(update, "订单取消失败");
            Boolean isRefund = true;
            if (PayTypeEnum.ALIPAY.getCode().toString().equals(orderConsultOne.getPayType())) {
                Map<String, Object> map = new HashMap(2);
                map.put("outTradeNo", orderConsultOne.getOrderNo());
                map.put("tradeNo", orderConsultOne.getTransactionNo());
                String result = HttpUtil.createGet(refundAlipayUrl).form(map).execute().body();
                log.info("1v1咨询订单退款支付宝:{},{},{}", orderConsultOne.getOrderNo(), orderConsultOne.getTransactionNo(), result);
                isRefund = BooleanUtil.toBoolean(result);
            } else if (PayTypeEnum.WXPAY.getCode().toString().equals(orderConsultOne.getPayType())) {
                // TODO: 1v1咨询订单退款微信
                String result = "";
                log.info("1v1咨询订单退款微信:{},{},{}", orderConsultOne.getOrderNo(), orderConsultOne.getTransactionNo(), result);
                isRefund = BooleanUtil.toBoolean(result);
            }
            Assert.isTrue(isRefund, "退款失败");
            return true;
        }
        return false;
    }
    @Override
    public Long assignMentalAppointmentWorkerId(Date appointmentDay, String beginTimePoint, String endTimePoint) {
        // 预约时间日期
        String appointmentDayYmd = DateUtil.format(appointmentDay, DatePattern.NORM_DATE_PATTERN);
        // 获取预约时段有服务的分析师(不可预约)
        List<MentalAppointment> sameTimeAppointmentList = mentalAppointmentService.list(
                Wrappers.<MentalAppointment>lambdaQuery()
                        .eq(MentalAppointment::getAppointmentDay, appointmentDayYmd)
                        .eq(MentalAppointment::getBeginTimePoint, beginTimePoint)
                        .eq(MentalAppointment::getEndTimePoint, endTimePoint)
                        .in(MentalAppointment::getStatusFlag, Arrays.asList(
                                MentalAppointmentStatusEnum.WAIT_SERVICE.getCode(),
                                MentalAppointmentStatusEnum.IN_SERVICE.getCode()
                        ))
                        .isNotNull(MentalAppointment::getWorkerId)
        );
        List<Long> neWorkerIdList = sameTimeAppointmentList.stream().map(MentalAppointment::getWorkerId).collect(Collectors.toList());
        // 查询特殊时间段,取消当天的分析师(不可预约)
        List<Long> isCancelDaySpecialTimeConfigList = mentalAnalysisSpecialTimeConfigService.listObjs(
                Wrappers.<MentalAnalysisSpecialTimeConfig>lambdaQuery()
                        .select(MentalAnalysisSpecialTimeConfig::getCounsellingInfoId)
                        .eq(MentalAnalysisSpecialTimeConfig::getSpecialDay, appointmentDayYmd)
                        .eq(MentalAnalysisSpecialTimeConfig::getIsCancelDay, 1)
                , obj -> {
                    Long counsellingInfoId = (Long) obj;
                    return counsellingInfoId;
                }
        );
        neWorkerIdList.addAll(isCancelDaySpecialTimeConfigList);
        neWorkerIdList.stream().distinct();
        // 获取当前星期
        Integer weekDay = DateUtil.dayOfWeekEnum(appointmentDay).getIso8601Value();
        // 预约时间段配置匹配的性格分析师
        List<MentalAnalysisTimeConfig> eqWorkerTimeConfigList = mentalAnalysisTimeConfigService.getWorkerListByAppointmentTime(1, weekDay, appointmentDayYmd, beginTimePoint, endTimePoint);
        // 分析师ID(预约时间段配置匹配)
        List<Long> eqWorkerIdByTimeConfigList = eqWorkerTimeConfigList.isEmpty() ? Collections.singletonList(0L) :
                eqWorkerTimeConfigList.stream()
                        .map(MentalAnalysisTimeConfig::getCounsellingInfoId)
                        .distinct()
                        .collect(Collectors.toList());
        // 查询有特殊时间段配置,分析师(可预约)
        List<MentalAnalysisSpecialTimeConfig> specialTimeConfigList = mentalAnalysisSpecialTimeConfigService.list(
                Wrappers.<MentalAnalysisSpecialTimeConfig>lambdaQuery()
                        .in(MentalAnalysisSpecialTimeConfig::getCounsellingInfoId, eqWorkerIdByTimeConfigList)
                        .eq(MentalAnalysisSpecialTimeConfig::getSpecialDay, appointmentDayYmd)
                        .eq(MentalAnalysisSpecialTimeConfig::getIsCancelDay, 0)
        );
        // 根据预约时间段、特殊时间段(优先)判断是否符合预约时间
        List<Long> eqWorkerIdList = eqWorkerTimeConfigList.stream()
                .filter(wtc -> {
                    // 特殊时间段(优先),存在判断是否符合时间段,不存在直接过
                    boolean isPresentSpecialTimeConfig = specialTimeConfigList.stream().filter(stc -> stc.getCounsellingInfoId().equals(wtc.getCounsellingInfoId())).findFirst().isPresent();
                    if (isPresentSpecialTimeConfig) {
                        // 如果存在特殊时间段,判断是否有匹配预约时间段的特殊时段设置,未设置(不可预约)
                        return specialTimeConfigList.stream().filter(stc -> stc.getSpecialBeginTimePoint().equals(beginTimePoint)
                                        && stc.getSpecialEndTimePoint().equals(endTimePoint)
                                )
                                .findFirst()
                                .isPresent();
                    } else {
                        return true;
                    }
                })
                .map(MentalAnalysisTimeConfig::getCounsellingInfoId)
                .collect(Collectors.toList());
        // 特殊时间段符合的分析师(可预约)
        List<MentalAnalysisSpecialTimeConfig> specialTimePointList = mentalAnalysisSpecialTimeConfigService.list(
                Wrappers.<MentalAnalysisSpecialTimeConfig>lambdaQuery()
                        .select(MentalAnalysisSpecialTimeConfig::getCounsellingInfoId)
                        .eq(MentalAnalysisSpecialTimeConfig::getSpecialDay, appointmentDayYmd)
                        .eq(MentalAnalysisSpecialTimeConfig::getSpecialBeginTimePoint, beginTimePoint)
                        .eq(MentalAnalysisSpecialTimeConfig::getSpecialEndTimePoint, endTimePoint)
                        .eq(MentalAnalysisSpecialTimeConfig::getIsCancelDay, 0)
        );
        // 特殊时间段符合的分析师ID
        List<Long> specialTimePointWorkerIdList = specialTimePointList.stream().map(MentalAnalysisSpecialTimeConfig::getCounsellingInfoId).collect(Collectors.toList());
        // 特殊时间段的补充
        eqWorkerIdList.addAll(specialTimePointWorkerIdList);
        if (CollUtil.isEmpty(eqWorkerIdList)) {
            // 没有分配
            eqWorkerIdList = Collections.singletonList(0L);
        } else {
            // 去重
            eqWorkerIdList.stream().distinct();
        }
        // 分配性格分析师
        Long consultWorkerId = customerService.randomWorkerIdByLineStatusAndPostNeWorkerId(ImStatusEnum.ON_LINE.getCode(), null, PostIdEnum.PO_31.getCode(), CustomerWorkStatusEnum.ON_WORK.getCode(), eqWorkerIdList, neWorkerIdList);
        if (consultWorkerId == null) {
            consultWorkerId = customerService.randomWorkerIdByLineStatusAndPostNeWorkerId(null, null, PostIdEnum.PO_31.getCode(), CustomerWorkStatusEnum.ON_WORK.getCode(), eqWorkerIdList, neWorkerIdList);
        }
        return consultWorkerId;
    }
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/impl/MentalTestClassServiceImpl.java
New file
@@ -0,0 +1,21 @@
package cn.stylefeng.guns.modular.business.service.impl;
import cn.stylefeng.guns.modular.business.entity.MentalTestClass;
import cn.stylefeng.guns.modular.business.mapper.MentalTestClassMapper;
import cn.stylefeng.guns.modular.business.service.IMentalTestClassService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
 * <p>
 * 心理测试分类 服务实现类
 * </p>
 *
 * @author goupan
 * @since 2024-01-01
 */
@Service
public class MentalTestClassServiceImpl extends ServiceImpl<MentalTestClassMapper, MentalTestClass> implements IMentalTestClassService {
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/impl/MentalTestOptionServiceImpl.java
New file
@@ -0,0 +1,21 @@
package cn.stylefeng.guns.modular.business.service.impl;
import cn.stylefeng.guns.modular.business.entity.MentalTestOption;
import cn.stylefeng.guns.modular.business.mapper.MentalTestOptionMapper;
import cn.stylefeng.guns.modular.business.service.IMentalTestOptionService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
 * <p>
 * 心理测试选项 服务实现类
 * </p>
 *
 * @author goupan
 * @since 2024-01-01
 */
@Service
public class MentalTestOptionServiceImpl extends ServiceImpl<MentalTestOptionMapper, MentalTestOption> implements IMentalTestOptionService {
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/impl/MentalTestQuestionServiceImpl.java
New file
@@ -0,0 +1,21 @@
package cn.stylefeng.guns.modular.business.service.impl;
import cn.stylefeng.guns.modular.business.entity.MentalTestQuestion;
import cn.stylefeng.guns.modular.business.mapper.MentalTestQuestionMapper;
import cn.stylefeng.guns.modular.business.service.IMentalTestQuestionService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
 * <p>
 * 心理测试问题 服务实现类
 * </p>
 *
 * @author goupan
 * @since 2024-01-01
 */
@Service
public class MentalTestQuestionServiceImpl extends ServiceImpl<MentalTestQuestionMapper, MentalTestQuestion> implements IMentalTestQuestionService {
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/impl/MentalTestRecordServiceImpl.java
New file
@@ -0,0 +1,78 @@
package cn.stylefeng.guns.modular.business.service.impl;
import cn.stylefeng.guns.modular.business.dto.MentalTestMyTestOrderDTO;
import cn.stylefeng.guns.modular.business.dto.MentalTestMyTestTopicDTO;
import cn.stylefeng.guns.modular.business.dto.MentalTestRecordPageDTO;
import cn.stylefeng.guns.modular.business.entity.MentalTestRecord;
import cn.stylefeng.guns.modular.business.mapper.MentalTestRecordMapper;
import cn.stylefeng.guns.modular.business.service.IMentalTestRecordService;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import java.util.List;
/**
 * <p>
 * 心理测试记录 服务实现类
 * </p>
 *
 * @author goupan
 * @since 2024-01-09
 */
@Service
public class MentalTestRecordServiceImpl extends ServiceImpl<MentalTestRecordMapper, MentalTestRecord> implements IMentalTestRecordService {
    @Override
    public List<MentalTestMyTestTopicDTO> myTestTopic(Long userId, Long topicId) {
        return this.baseMapper.myTestTopic(userId, topicId);
    }
    @Override
    public List<MentalTestMyTestTopicDTO> myTestRecordTopicByMentalAppointmentId(Long mentalAppointmentId, List<Long> mentalAppointmentIdList) {
        return this.baseMapper.myTestRecordTopicByMentalAppointmentId(mentalAppointmentId, mentalAppointmentIdList);
    }
    @Override
    public List<MentalTestMyTestOrderDTO> myTestOrder(Long userId, Long topicId) {
        return this.baseMapper.myTestOrder(userId, topicId);
    }
    @Override
    public Long getConsultWorkerIdByRecord(Long mentalTestRecordId, Long userId) {
        // 咨询性格分析师
        Long consultWorkerId = null;
        if (mentalTestRecordId != null) {
            // 从性格测试结果获取,性格分析师ID
            MentalTestRecord mentalTestRecord = this.getById(mentalTestRecordId);
            consultWorkerId = mentalTestRecord.getConsultWorkerId();
        }
        if (consultWorkerId == null && userId != null) {
            // 从其他记录中获取
            consultWorkerId = this.getObj(
                    Wrappers.<MentalTestRecord>lambdaQuery()
                            .select(MentalTestRecord::getConsultWorkerId)
                            .eq(MentalTestRecord::getUserId, userId)
                            .isNotNull(MentalTestRecord::getConsultWorkerId)
                            .last("limit 1"),
                    l -> (Long) l
            );
            if (consultWorkerId != null) {
                // 将性格分析师分配入测试记录
                this.update(
                        Wrappers.<MentalTestRecord>lambdaUpdate()
                                .set(MentalTestRecord::getConsultWorkerId, consultWorkerId)
                                .eq(MentalTestRecord::getId, mentalTestRecordId)
                );
            }
        }
        return consultWorkerId;
    }
    @Override
    public Page<MentalTestRecordPageDTO> getPage(Page<Object> page, String title, String nickName, String telephone, Integer testType) {
        return this.baseMapper.getPage(page, title, nickName, telephone, testType);
    }
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/impl/MentalTestResultServiceImpl.java
New file
@@ -0,0 +1,22 @@
package cn.stylefeng.guns.modular.business.service.impl;
import cn.stylefeng.guns.modular.business.entity.MentalTestResult;
import cn.stylefeng.guns.modular.business.mapper.MentalTestResultMapper;
import cn.stylefeng.guns.modular.business.service.IMentalTestResultService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
/**
 * <p>
 * 心理测试结果 服务实现类
 * </p>
 *
 * @author goupan
 * @since 2024-01-09
 */
@Slf4j
@Service
public class MentalTestResultServiceImpl extends ServiceImpl<MentalTestResultMapper, MentalTestResult> implements IMentalTestResultService {
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/impl/MentalTestResultSetServiceImpl.java
New file
@@ -0,0 +1,21 @@
package cn.stylefeng.guns.modular.business.service.impl;
import cn.stylefeng.guns.modular.business.entity.MentalTestResultSet;
import cn.stylefeng.guns.modular.business.mapper.MentalTestResultSetMapper;
import cn.stylefeng.guns.modular.business.service.IMentalTestResultSetService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
 * <p>
 * 心理测试结果配置 服务实现类
 * </p>
 *
 * @author goupan
 * @since 2024-01-01
 */
@Service
public class MentalTestResultSetServiceImpl extends ServiceImpl<MentalTestResultSetMapper, MentalTestResultSet> implements IMentalTestResultSetService {
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/impl/MentalTestTopicServiceImpl.java
New file
@@ -0,0 +1,164 @@
package cn.stylefeng.guns.modular.business.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.StrUtil;
import cn.stylefeng.guns.modular.business.dto.MentalTestQuestionOptionDTO;
import cn.stylefeng.guns.modular.business.dto.MentalTestTopicPageDTO;
import cn.stylefeng.guns.modular.business.dto.request.MentalTestTopicAddUpdateRequest;
import cn.stylefeng.guns.modular.business.entity.MentalTestOption;
import cn.stylefeng.guns.modular.business.entity.MentalTestQuestion;
import cn.stylefeng.guns.modular.business.entity.MentalTestResultSet;
import cn.stylefeng.guns.modular.business.entity.MentalTestTopic;
import cn.stylefeng.guns.modular.business.mapper.MentalTestTopicMapper;
import cn.stylefeng.guns.modular.business.service.IMentalTestOptionService;
import cn.stylefeng.guns.modular.business.service.IMentalTestQuestionService;
import cn.stylefeng.guns.modular.business.service.IMentalTestResultSetService;
import cn.stylefeng.guns.modular.business.service.IMentalTestTopicService;
import cn.stylefeng.roses.kernel.rule.enums.DeleteEnum;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
 * <p>
 * 心理测试题库 服务实现类
 * </p>
 *
 * @author goupan
 * @since 2024-01-01
 */
@Service
public class MentalTestTopicServiceImpl extends ServiceImpl<MentalTestTopicMapper, MentalTestTopic> implements IMentalTestTopicService {
    @Resource
    IMentalTestQuestionService mentalTestQuestionService;
    @Resource
    IMentalTestOptionService mentalTestOptionService;
    @Resource
    IMentalTestResultSetService mentalTestResultSetService;
    @Override
    public Page<MentalTestTopicPageDTO> topicPage(Page page, String classIds, String title, Integer testType, Integer testFlag, Long userId, Integer statusFlag) {
        List<String> classIdList = StrUtil.isNotBlank(classIds) ? Arrays.asList(classIds.split(",")) : null;
        return this.baseMapper.topicPage(page, classIdList, title, testType, testFlag, userId, statusFlag);
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void saveTopic(MentalTestTopicAddUpdateRequest req) {
        // 保存题库信息
        MentalTestTopic topic = BeanUtil.toBean(req, MentalTestTopic.class);
        this.save(topic);
        Long topicId = topic.getId();
        for (MentalTestTopicAddUpdateRequest.QuestionRequest qu : req.getQuestionList()) {
            // 保存问题
            MentalTestQuestion question = BeanUtil.toBean(qu, MentalTestQuestion.class);
            question.setTopicId(topicId);
            mentalTestQuestionService.save(question);
            Long questionId = question.getId();
            // 保存问题选项
            for (MentalTestTopicAddUpdateRequest.QuestionRequest.OptionRequest op : qu.getOptionList()) {
                MentalTestOption option = BeanUtil.toBean(op, MentalTestOption.class);
                option.setTopicId(topicId);
                option.setQuestionId(questionId);
                mentalTestOptionService.save(option);
            }
        }
        // 保存结果区间配置
        for (MentalTestTopicAddUpdateRequest.ResultSetRequest rs : req.getResultSetList()) {
            MentalTestResultSet resultSet = BeanUtil.toBean(rs, MentalTestResultSet.class);
            resultSet.setTopicId(topicId);
            resultSet.setResultCalculateMode(req.getResultCalculateMode());
            mentalTestResultSetService.save(resultSet);
        }
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void editTopic(MentalTestTopicAddUpdateRequest req) {
        // 保存题库信息
        MentalTestTopic topic = BeanUtil.toBean(req, MentalTestTopic.class);
        this.saveOrUpdate(topic);
        Long topicId = topic.getId();
        // 清空问题、问题选项
        mentalTestQuestionService.remove(
                Wrappers.<MentalTestQuestion>lambdaQuery()
                        .eq(MentalTestQuestion::getTopicId, topicId)
        );
        mentalTestOptionService.remove(
                Wrappers.<MentalTestOption>lambdaQuery()
                        .eq(MentalTestOption::getTopicId, topicId)
        );
        for (MentalTestTopicAddUpdateRequest.QuestionRequest qu : req.getQuestionList()) {
            // 保存问题
            MentalTestQuestion question = BeanUtil.toBean(qu, MentalTestQuestion.class);
            question.setTopicId(topicId);
            mentalTestQuestionService.saveOrUpdate(question);
            Long questionId = question.getId();
            // 保存问题选项
            for (MentalTestTopicAddUpdateRequest.QuestionRequest.OptionRequest op : qu.getOptionList()) {
                MentalTestOption option = BeanUtil.toBean(op, MentalTestOption.class);
                option.setTopicId(topicId);
                option.setQuestionId(questionId);
                mentalTestOptionService.saveOrUpdate(option);
            }
        }
        // 清空结果区间配置
        mentalTestResultSetService.remove(
                Wrappers.<MentalTestResultSet>lambdaQuery()
                        .eq(MentalTestResultSet::getTopicId, topicId)
        );
        // 保存结果区间配置
        for (MentalTestTopicAddUpdateRequest.ResultSetRequest rs : req.getResultSetList()) {
            MentalTestResultSet resultSet = BeanUtil.toBean(rs, MentalTestResultSet.class);
            resultSet.setTopicId(topicId);
            resultSet.setResultCalculateMode(req.getResultCalculateMode());
            mentalTestResultSetService.saveOrUpdate(resultSet);
        }
    }
    @Override
    public List<MentalTestQuestionOptionDTO> getQuestionOptionByTopicId(Long topicId) {
        // 心理测试问题
        List<MentalTestQuestion> questionList = mentalTestQuestionService.list(
                Wrappers.<MentalTestQuestion>lambdaQuery()
                        .eq(MentalTestQuestion::getTopicId, topicId)
                        .eq(MentalTestQuestion::getIsDelete, DeleteEnum.NOT_DELETE.getCode())
        );
        // 心理测试问题选项
        List<MentalTestOption> optionList = mentalTestOptionService.list(
                Wrappers.<MentalTestOption>lambdaQuery()
                        .eq(MentalTestOption::getTopicId, topicId)
                        .eq(MentalTestOption::getIsDelete, DeleteEnum.NOT_DELETE.getCode())
        );
        // 封装问题、选项信息
        List<MentalTestQuestionOptionDTO> dtoList = questionList.stream()
                .map(o -> {
                    MentalTestQuestionOptionDTO questionDto = BeanUtil.toBean(o, MentalTestQuestionOptionDTO.class);
                    List<MentalTestOption> options = optionList.stream()
                            .filter(op -> op.getQuestionId().equals(o.getId()))
                            .collect(Collectors.toList());
                    questionDto.setOptionList(options);
                    return questionDto;
                })
                .collect(Collectors.toList());
        return dtoList;
    }
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/impl/OrderConsultOneServiceImpl.java
New file
@@ -0,0 +1,66 @@
package cn.stylefeng.guns.modular.business.service.impl;
import cn.hutool.core.util.StrUtil;
import cn.stylefeng.guns.modular.business.entity.OrderConsultOne;
import cn.stylefeng.guns.modular.business.mapper.OrderConsultOneMapper;
import cn.stylefeng.guns.modular.business.service.IOrderConsultOneService;
import cn.stylefeng.roses.kernel.rule.enums.OrderStatusFlagEnum;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
/**
 * <p>
 * 心理咨询1V1订单 服务实现类
 * </p>
 *
 * @author goupan
 * @since 2024-01-01
 */
@Service
public class OrderConsultOneServiceImpl extends ServiceImpl<OrderConsultOneMapper, OrderConsultOne> implements IOrderConsultOneService {
    @Override
    public OrderConsultOne getOrderByNo(String orderNo) {
        return this.getOne(
                Wrappers.<OrderConsultOne>lambdaQuery()
                        .eq(OrderConsultOne::getOrderNo, orderNo)
                        .last("limit 1")
        );
    }
    @Override
    public List<Map<String, Object>> getStatOrderList(String dateFormat, String beginTime, String endTime, Long workerId, List<Integer> statusList) {
        return this.baseMapper.getStatOrderList(dateFormat, beginTime, endTime, workerId, statusList);
    }
    @Override
    public boolean getIsPayOrderConsultOne(Long orderConsultOneId, String mentalTestOrderNo) {
        // 查询支付成功的1v1咨询订单
        long payOrderConsultOneCount = 0;
        if (orderConsultOneId != null) {
            payOrderConsultOneCount = this.count(
                    Wrappers.<OrderConsultOne>lambdaQuery()
                            .eq(OrderConsultOne::getStatusFlag, OrderStatusFlagEnum.PAY_SUCCESS.getCode())
                            //.gt(OrderConsultOne::getPayAmount, 0)
                            .eq(OrderConsultOne::getId, orderConsultOneId)
            );
        }
        if (StrUtil.isNotEmpty(mentalTestOrderNo)) {
            payOrderConsultOneCount = this.count(
                    Wrappers.<OrderConsultOne>lambdaQuery()
                            .eq(OrderConsultOne::getStatusFlag, OrderStatusFlagEnum.PAY_SUCCESS.getCode())
                            //.gt(OrderConsultOne::getPayAmount, 0)
                            .eq(OrderConsultOne::getMentalTestOrderNo, mentalTestOrderNo)
            );
        }
        // 是否支付1v1咨询订单
        return payOrderConsultOneCount > 0;
    }
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/impl/OrderMentalTestServiceImpl.java
New file
@@ -0,0 +1,140 @@
package cn.stylefeng.guns.modular.business.service.impl;
import cn.hutool.core.lang.Assert;
import cn.stylefeng.guns.modular.business.dto.OrderMentalTestDetailDTO;
import cn.stylefeng.guns.modular.business.dto.OrderMentalTestPageDTO;
import cn.stylefeng.guns.modular.business.entity.MentalTestTopic;
import cn.stylefeng.guns.modular.business.entity.OrderMentalTest;
import cn.stylefeng.guns.modular.business.mapper.OrderMentalTestMapper;
import cn.stylefeng.guns.modular.business.service.IMentalTestTopicService;
import cn.stylefeng.guns.modular.business.service.IOrderMentalTestService;
import cn.stylefeng.guns.utils.GeneralUtil;
import cn.stylefeng.roses.kernel.rule.enums.OrderStatusFlagEnum;
import cn.stylefeng.roses.kernel.rule.enums.OrderTypeEnum;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
/**
 * <p>
 * 心理测试订单 服务实现类
 * </p>
 *
 * @author goupan
 * @since 2024-01-01
 */
@Service
public class OrderMentalTestServiceImpl extends ServiceImpl<OrderMentalTestMapper, OrderMentalTest> implements IOrderMentalTestService {
    @Resource
    IMentalTestTopicService mentalTestTopicService;
    @Override
    public OrderMentalTest getOrderByNo(String orderNo) {
        return this.getOne(
                Wrappers.<OrderMentalTest>lambdaQuery()
                        .eq(OrderMentalTest::getOrderNo, orderNo)
                        .last("limit 1")
        );
    }
    @Override
    public Boolean paySuccess(String orderNo, String tradeNo, String totalAmount, Integer payType) {
        // 获取订单信息
        OrderMentalTest order = getOrderByNo(orderNo);
        Assert.notNull(order, "订单不存在");
        Assert.isTrue(order.getPayAmount().compareTo(new BigDecimal(totalAmount)) == 0, "订单支付金额错误!");
        boolean update = this.update(
                Wrappers.<OrderMentalTest>lambdaUpdate()
                        .set(OrderMentalTest::getStatusFlag, OrderStatusFlagEnum.PAY_SUCCESS.getCode())
                        .set(OrderMentalTest::getPayType, payType)
                        .set(OrderMentalTest::getTransactionNo, tradeNo)
                        .eq(OrderMentalTest::getOrderNo, orderNo)
        );
        return update;
    }
    @Override
    public Page<OrderMentalTestPageDTO> getPage(Page<Object> page, String title, String nickName, String telephone, Integer testType, Integer statusFlag, Integer adminView) {
        return this.baseMapper.getPage(page, title, nickName, telephone, testType, statusFlag, adminView);
    }
    @Override
    public OrderMentalTestDetailDTO getInfoById(Long id) {
        return this.baseMapper.getInfoById(id);
    }
    @Override
    public OrderMentalTest createOrderMentalTest(Long userId, Long topicId, Boolean isNeedPay, Boolean isBack) {
        // 题库信息
        MentalTestTopic topic = mentalTestTopicService.getById(topicId);
        Assert.notNull(topic, "题库不存在");
        // 获取用户最近创建的待支付订单
        OrderMentalTest o = this.baseMapper.selectOne(
                Wrappers.<OrderMentalTest>lambdaQuery()
                        .eq(OrderMentalTest::getUserId, userId)
                        .eq(OrderMentalTest::getGoodsId, topicId)
                        .eq(OrderMentalTest::getStatusFlag, OrderStatusFlagEnum.WAIT_PAY.getCode())
                        .orderByDesc(OrderMentalTest::getCreateTime)
                        .last("LIMIT 1")
        );
        if (o == null) {
            // 下单
            o = OrderMentalTest.builder()
                    .orderNo(GeneralUtil.generateOrderNo(OrderTypeEnum.MENTAL_TEST))
                    .userId(userId)
                    .goodsId(topicId)
                    .statusFlag(OrderStatusFlagEnum.WAIT_PAY.getCode())
                    .payAmount(topic.getTestAmount())
                    .orderAmount(topic.getTestAmount())
                    .build();
        }
        // 测试类型:0免费,1付费
        if (topic.getTestType() == 1) {
            if (isNeedPay == null || isNeedPay) {
                // 获取用户已经支付过的题库
                long count = this.count(
                        Wrappers.<OrderMentalTest>lambdaQuery()
                                .eq(OrderMentalTest::getUserId, userId)
                                .eq(OrderMentalTest::getGoodsId, topicId)
                                .eq(OrderMentalTest::getStatusFlag, OrderStatusFlagEnum.PAY_SUCCESS.getCode())
                );
                if (count > 0) {
                    // 已支付过的标记无须支付
                    isNeedPay = false;
                }
            }
        }
        // 题库免费 或 题库无须支付
        if (!isNeedPay || topic.getTestType() == 0) {
            o.setStatusFlag(OrderStatusFlagEnum.PAY_SUCCESS.getCode());
            if (!isBack) {
                // 后台添加的需统计
                o.setPayAmount(BigDecimal.ZERO);
                o.setOrderAmount(BigDecimal.ZERO);
            }
        }
        // 保存订单信息
        o.setIsBack(isBack);
        this.saveOrUpdate(o);
        return o;
    }
    @Override
    public List<Map<String, Object>> getStatOrderList(String dateFormat, String beginTime, String endTime, Long workerId, List<Integer> statusList) {
        return this.baseMapper.getStatOrderList(dateFormat, beginTime, endTime, workerId, statusList);
    }
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/impl/PsychologicalColumnServiceImpl.java
New file
@@ -0,0 +1,21 @@
package cn.stylefeng.guns.modular.business.service.impl;
import cn.stylefeng.guns.modular.business.entity.PsychologicalColumn;
import cn.stylefeng.guns.modular.business.mapper.PsychologicalColumnMapper;
import cn.stylefeng.guns.modular.business.service.IPsychologicalColumnService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
 * <p>
 * 心理专栏管理 服务实现类
 * </p>
 *
 * @author goupan
 * @since 2024-01-01
 */
@Service
public class PsychologicalColumnServiceImpl extends ServiceImpl<PsychologicalColumnMapper, PsychologicalColumn> implements IPsychologicalColumnService {
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/impl/PsychologicalReadServiceImpl.java
New file
@@ -0,0 +1,21 @@
package cn.stylefeng.guns.modular.business.service.impl;
import cn.stylefeng.guns.modular.business.entity.PsychologicalRead;
import cn.stylefeng.guns.modular.business.mapper.PsychologicalReadMapper;
import cn.stylefeng.guns.modular.business.service.IPsychologicalReadService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
 * <p>
 * 心理专栏阅读记录 服务实现类
 * </p>
 *
 * @author goupan
 * @since 2024-01-01
 */
@Service
public class PsychologicalReadServiceImpl extends ServiceImpl<PsychologicalReadMapper, PsychologicalRead> implements IPsychologicalReadService {
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/impl/StoreAppointmentServiceImpl.java
New file
@@ -0,0 +1,21 @@
package cn.stylefeng.guns.modular.business.service.impl;
import cn.stylefeng.guns.modular.business.entity.StoreAppointment;
import cn.stylefeng.guns.modular.business.mapper.StoreAppointmentMapper;
import cn.stylefeng.guns.modular.business.service.IStoreAppointmentService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
 * <p>
 * 门店预约 服务实现类
 * </p>
 *
 * @author goupan
 * @since 2024-01-01
 */
@Service
public class StoreAppointmentServiceImpl extends ServiceImpl<StoreAppointmentMapper, StoreAppointment> implements IStoreAppointmentService {
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/impl/SysUserBusinessServiceImpl.java
New file
@@ -0,0 +1,92 @@
package cn.stylefeng.guns.modular.business.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.StrUtil;
import cn.stylefeng.guns.modular.business.dto.request.SysUserResetPwdByIdRequest;
import cn.stylefeng.guns.modular.business.dto.request.SysUserResetPwdRequest;
import cn.stylefeng.guns.modular.business.service.ISysUserBusinessService;
import cn.stylefeng.roses.kernel.auth.api.password.PasswordStoredEncryptApi;
import cn.stylefeng.roses.kernel.customer.modular.entity.Customer;
import cn.stylefeng.roses.kernel.customer.modular.service.CustomerService;
import cn.stylefeng.roses.kernel.rule.enums.DeleteEnum;
import cn.stylefeng.roses.kernel.rule.enums.StatusEnum;
import cn.stylefeng.roses.kernel.rule.pojo.response.ErrorResponseData;
import cn.stylefeng.roses.kernel.rule.pojo.response.ResponseData;
import cn.stylefeng.roses.kernel.rule.pojo.response.SuccessResponseData;
import cn.stylefeng.roses.kernel.sms.modular.service.SysSmsInfoService;
import cn.stylefeng.roses.kernel.system.api.expander.SystemConfigExpander;
import cn.stylefeng.roses.kernel.system.api.pojo.user.request.SysUserRequest;
import cn.stylefeng.roses.kernel.system.modular.user.entity.SysUser;
import cn.stylefeng.roses.kernel.system.modular.user.mapper.SysUserMapper;
import cn.stylefeng.roses.kernel.system.modular.user.service.SysUserService;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@Service
public class SysUserBusinessServiceImpl extends ServiceImpl<SysUserMapper, SysUser> implements ISysUserBusinessService {
    @Resource
    private SysSmsInfoService sysSmsInfoService;
    @Resource
    private SysUserService sysUserService;
    @Resource
    private CustomerService customerService;
    @Resource
    private PasswordStoredEncryptApi passwordStoredEncryptApi;
    @Override
    public ResponseData resetPwd(SysUserResetPwdRequest req) {
        // 验证码通过
        sysSmsInfoService.validateSmsInfo(req);
        SysUser sysUser = sysUserService.getOne(
                Wrappers.<SysUser>lambdaQuery()
                        .and(w -> w.eq(SysUser::getAccount, req.getPhone())
                                .or().eq(SysUser::getPhone, req.getPhone())
                        )
                        .eq(SysUser::getStatusFlag, StatusEnum.ENABLE.getCode())
                        .eq(SysUser::getDelFlag, DeleteEnum.NOT_DELETE.getCode())
                        .last("LIMIT 1")
        );
        if (sysUser == null || (!req.getPhone().equals(sysUser.getAccount()) && !req.getPhone().equals(sysUser.getPhone()))) {
            return new ErrorResponseData<>("手机号验证错误");
        }
        SysUserRequest sysUserRequest = BeanUtil.toBean(req, SysUserRequest.class);
        return resetPwdOption(sysUserRequest, sysUser);
    }
    @Override
    public ResponseData resetPwdById(SysUserResetPwdByIdRequest req) {
        SysUser sysUser = sysUserService.getById(req.getUserId());
        SysUserRequest sysUserRequest = BeanUtil.toBean(req, SysUserRequest.class);
        return resetPwdOption(sysUserRequest, sysUser);
    }
    public ResponseData resetPwdOption(SysUserRequest sysUserRequest, SysUser sysUser) {
        sysUserRequest.setUserId(sysUser.getUserId());
        sysUserService.resetPassword(sysUserRequest);
        // C端用户更新
        Customer user = customerService.getOne(Wrappers.<Customer>lambdaQuery().eq(Customer::getSysUserId, sysUserRequest.getUserId()).last("LIMIT 1"));
        Customer customer = new Customer();
        customer.setCustomerId(user.getCustomerId());
        customer.setAccount(user.getAccount());
        String password = sysUserRequest.getNewPassword();
        if (StrUtil.isBlank(password)) {
            if (customer.getAccount().length() >= 6) {
                // 密码设置为手机号后六位
                password = StrUtil.sub(customer.getAccount(), -6, customer.getAccount().length());
            } else {
                // 默认密码
                password = SystemConfigExpander.getDefaultPassWord();
            }
        }
        customer.setPassword(passwordStoredEncryptApi.encrypt(password));
        customerService.updateCustomerRemoveCache(customer);
        return new SuccessResponseData<>();
    }
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/impl/SystemSetServiceImpl.java
New file
@@ -0,0 +1,21 @@
package cn.stylefeng.guns.modular.business.service.impl;
import cn.stylefeng.guns.modular.business.entity.SystemSet;
import cn.stylefeng.guns.modular.business.mapper.SystemSetMapper;
import cn.stylefeng.guns.modular.business.service.ISystemSetService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
 * <p>
 * 系统配置(H5、客服电话) 服务实现类
 * </p>
 *
 * @author goupan
 * @since 2024-01-01
 */
@Service
public class SystemSetServiceImpl extends ServiceImpl<SystemSetMapper, SystemSet> implements ISystemSetService {
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/impl/TotalReportServiceImpl.java
New file
@@ -0,0 +1,67 @@
package cn.stylefeng.guns.modular.business.service.impl;
import cn.stylefeng.guns.modular.business.dto.request.TotalRequest;
import cn.stylefeng.guns.modular.business.mapper.TotalReportMapper;
import cn.stylefeng.guns.modular.business.service.ITotalReportService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
@Service
public class TotalReportServiceImpl implements ITotalReportService {
    @Autowired
    private TotalReportMapper totalReportMapper;
    @Override
    public List<Map<String, Object>> courseTotalData(TotalRequest totalRequest) {
        return this.totalReportMapper.courseTotalData(totalRequest);
    }
    @Override
    public List<Map<String, Object>> mentalTestTotalData(TotalRequest totalRequest) {
        return this.totalReportMapper.mentalTestTotalData(totalRequest);
    }
    @Override
    public List<Map<String, Object>> orderConsultOneTotalData(TotalRequest totalRequest) {
        return this.totalReportMapper.orderConsultOneTotalData(totalRequest);
    }
    @Override
    public List<Map<String, Object>> counsellingTotalData(TotalRequest totalRequest) {
        return this.totalReportMapper.counsellingTotalData(totalRequest);
    }
    @Override
    public List<Map<String, Object>> courseNameTotalData(TotalRequest totalRequest) {
        return this.totalReportMapper.courseNameTotalData(totalRequest);
    }
    @Override
    public List<Map<String, Object>> courseTagTotalData(TotalRequest totalRequest) {
        return this.totalReportMapper.courseTagTotalData(totalRequest);
    }
    @Override
    public long courseBuyTotal(TotalRequest totalRequest) {
        return this.totalReportMapper.courseBuyTotal(totalRequest);
    }
    @Override
    public List<Map<String, Object>> counsellingOrderTypeTotalData(TotalRequest totalRequest) {
        return this.totalReportMapper.counsellingOrderTypeTotalData(totalRequest);
    }
    @Override
    public List<Map<String, Object>> counsellingTypeTotalData(TotalRequest totalRequest) {
        return this.totalReportMapper.counsellingTypeTotalData(totalRequest);
    }
    @Override
    public long counsellingBuyTotal(TotalRequest totalRequest) {
        return this.totalReportMapper.counsellingBuyTotal(totalRequest);
    }
}
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/service/impl/UserEvaluateServiceImpl.java
New file
@@ -0,0 +1,21 @@
package cn.stylefeng.guns.modular.business.service.impl;
import cn.stylefeng.guns.modular.business.entity.UserEvaluate;
import cn.stylefeng.guns.modular.business.mapper.UserEvaluateMapper;
import cn.stylefeng.guns.modular.business.service.IUserEvaluateService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
 * <p>
 * 用户评价表 服务实现类
 * </p>
 *
 * @author guohongjin
 * @since 2024-01-02
 */
@Service
public class UserEvaluateServiceImpl extends ServiceImpl<UserEvaluateMapper, UserEvaluate> implements IUserEvaluateService {
}
common-buiness/src/main/java/cn/stylefeng/guns/utils/CrmebUtil.java
New file
@@ -0,0 +1,864 @@
package cn.stylefeng.guns.utils;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.crypto.SecureUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
import javax.servlet.http.HttpServletRequest;
import java.io.UnsupportedEncodingException;
import java.math.BigDecimal;
import java.nio.charset.StandardCharsets;
import java.security.Key;
import java.security.Security;
import java.text.NumberFormat;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class CrmebUtil {
    public static String encryptPassword(String pwd, String key) throws Exception {
        try {
            Security.addProvider(new com.sun.crypto.provider.SunJCE());
            Key _key = getDESSercretKey(key);
            Cipher cipher = Cipher.getInstance("DES");
            cipher.init(Cipher.ENCRYPT_MODE, _key);
            byte[] data = pwd.getBytes(StandardCharsets.UTF_8);
            byte[] result = cipher.doFinal(data);
            return new sun.misc.BASE64Encoder().encode(result);
        }catch (Exception e){
            throw new Exception("密码处理异常");
        }
    }
    /**
     * 解密密码
     */
    public static String decryptPassowrd(String pwd, String key)
            throws Exception {
        Security.addProvider(new com.sun.crypto.provider.SunJCE());
        Key aKey = getDESSercretKey(key);
        Cipher cipher = Cipher.getInstance("DES");
        cipher.init(Cipher.DECRYPT_MODE, aKey);
        byte[] data = new sun.misc.BASE64Decoder().decodeBuffer(pwd);
        byte[] result = cipher.doFinal(data);
        return new String(result, StandardCharsets.UTF_8);
    }
    /**
     * 获得DES加密秘钥
     * @param key
     * @return
     * @throws UnsupportedEncodingException
     */
    public static SecretKey getDESSercretKey(String key) throws UnsupportedEncodingException {
        byte[] result = new byte[8];
        byte[] keys = null;
        keys = key.getBytes(StandardCharsets.UTF_8);
        for(int i = 0; i<8;i++){
            if(i < keys.length){
                result[i] = keys[i];
            }else{
                result[i] = 0x01;
            }
        }
        return new SecretKeySpec(result, "DES");
    }
    /**
     * 对象转map
     * @param object 对象
     * @author Mr.Zhang
     * @since 2020-04-14
     * @return Map
     */
    public static Map objectToMap(Object object){
        return JSONObject.parseObject(JSONObject.toJSONString(object), Map.class);
    }
    public static Map StringToMap(String strValue){
        return JSONObject.parseObject(strValue, HashMap.class);
    }
    /**
     * map转对象
     * @param map map
     * @param clz 对象
     * @author Mr.Zhang
     * @since 2020-04-14
     * @return Map
     */
    public static <T> T mapToObj(HashMap<String,Object> map, Class<T> clz){
        if (map == null) return null;
        return JSONObject.parseObject(JSONObject.toJSONString(map), clz);
    }
    /**
     * map转对象
     * @param map map
     * @param clz 对象
     * @author Mr.Zhang
     * @since 2020-04-14
     * @return Map
     */
    public static <T> T mapStringToObj(HashMap<String,String> map, Class<T> clz){
        if (map == null) return null;
        return JSONObject.parseObject(JSONObject.toJSONString(map), clz);
    }
    /**
     * 密码工具
     * @param args String[] 字符串数组
     */
    public static void main(String[] args) throws Exception {
//        System.out.println(encryptPassword("123456", "admin"));
        System.out.println(decryptPassowrd("Rb/KmlSjAxI=", "demo"));
    }
    /**
     * map合并
     * @param map 对象
     * @author Mr.Zhang
     * @since 2020-04-14
     * @return Object
     */
    public static Map<String, Object> mergeMap(Map<String, Object> map, Map<String, Object> map1){
        HashMap<String, Object> map2 = new HashMap<>();
        map2.putAll(map);
        map2.putAll(map1);
        return map2;
    }
    /**
     * 字符串分割,转化为数组
     * @param str 字符串
     * @author Mr.Zhang
     * @since 2020-04-22
     * @return List<Integer>
     */
    public static List<Integer> stringToArray(String str){
        return stringToArrayByRegex(str, ",");
    }
    /**
     * 字符串分割,转化为数组
     * @param str 字符串
     * @param regex 分隔符有
     * @author Mr.Zhang
     * @since 2020-04-22
     * @return List<Integer>
     */
    public static List<Integer> stringToArrayByRegex(String str, String regex ){
        List<Integer> list = new ArrayList<>();
        if (str.contains(regex)){
            String[] split = str.split(regex);
            for (String value : split) {
                if(!StrUtil.isBlank(value)){
                    list.add(Integer.parseInt(value.trim()));
                }
            }
        }else {
            list.add(Integer.parseInt(str));
        }
        return list;
    }
    /**
     * 字符串分割,转化为数组
     * @param str 字符串
     * @author Mr.Zhang
     * @since 2020-04-22
     * @return List<String>
     */
    public static List<String> stringToArrayStr(String str){
        return stringToArrayStrRegex(str, ",");
    }
    /**
     * 数字字符数据转int格式数据
     * @param str 待转换的数字字符串
     * @return int数组
     */
    public static List<Integer> stringToArrayInt(String str){
        List<String> strings = stringToArrayStrRegex(str, ",");
        List<Integer> ids = new ArrayList<>();
        for (String string : strings) {
            ids.add(Integer.parseInt(string.trim()));
        }
        return ids;
    }
    /**
     * 字符串分割,转化为数组
     * @param str 字符串
     * @param regex 分隔符有
     * @author Mr.Zhang
     * @since 2020-04-22
     * @return List<String>
     */
    public static List<String> stringToArrayStrRegex(String str, String regex ){
        List<String> list = new ArrayList<>();
        if (str.contains(regex)){
            String[] split = str.split(regex);
            for (String value : split) {
                if(!StrUtil.isBlank(value)){
                    list.add(value);
                }
            }
        }else {
            list.add(str);
        }
        return list;
    }
    /**
     * 字符串分割,转化为数组
     * @param str 字符串
     * @author Mr.Zhang
     * @since 2020-04-22
     * @return List<Object>
     */
    public static List<Object> stringToArrayObject(String str){
        return stringToArrayObjectRegex(str, ",");
    }
    /**
     * 字符串分割,转化为数组
     * @param str 字符串
     * @param regex 分隔符有
     * @author Mr.Zhang
     * @since 2020-04-22
     * @return List<Object>
     */
    public static List<Object> stringToArrayObjectRegex(String str, String regex ){
        List<Object> list = new ArrayList<>();
        if (str.contains(regex)){
            String[] split = str.split(regex);
            for (String value : split) {
                if(!StrUtil.isBlank(value)){
                    list.add(value);
                }
            }
        }else {
            list.add(str);
        }
        return list;
    }
    /**
     * json字符串转数组
     * @param str 字符串
     * @author Mr.Zhang
     * @since 2020-04-22
     * @return List<String>
     */
    public static List<String> jsonToListString(String str){
        try{
            return JSONObject.parseArray(str).toJavaList(String.class);
        }catch (Exception e){
            ArrayList<String> list = new ArrayList<>();
            list.add(str);
            return list;
        }
    }
    /**
     * json字符串转数组
     * @param str 字符串
     * @author Mr.Zhang
     * @since 2020-04-22
     * @return List<Integer>
     */
    public static List<Integer> jsonToListInteger(String str){
        try{
            return JSONObject.parseArray(str).toJavaList(Integer.class);
        }catch (Exception e){
            ArrayList<Integer> list = new ArrayList<>();
            list.add(Integer.parseInt(str));
            return list;
        }
    }
    /**
     * json字符串转数组
     * @param str 字符串
     * @author Mr.Zhang
     * @since 2020-04-22
     * @return List<Integer>
     */
    public static List<Object> jsonToListObject(String str){
        try{
            return JSONObject.parseArray(str).toJavaList(Object.class);
        }catch (Exception e){
            ArrayList<Object> list = new ArrayList<>();
            list.add(str);
            return list;
        }
    }
    /**
     * json字符串转数组
     * @param str 字符串
     * @author Mr.Zhang
     * @since 2020-04-22
     * @return List<T>
     */
    public static <T> List<T> jsonToListClass(String str, Class<T> cls){
        try{
            return JSONObject.parseArray(str, cls);
        }catch (Exception e){
            return new ArrayList<>();
        }
    }
    /**
     * 去掉域名 https / http / www 信息
     * @param domain 域名
     * @author Mr.Zhang
     * @since 2020-04-22
     * @return String
     */
    public static String getCleanLowerDomain(String domain){
        domain = domain.toLowerCase();
        domain = domain.replaceAll("http://", "");
        domain = domain.replaceAll("https://", "");
        domain = domain.replaceAll("www.", "");
        domain = domain.replaceAll("/", "");
        return domain;
    }
    /**
     * 获取根域名
     * @param domain 域名
     * @author Mr.Zhang
     * @since 2020-04-22
     * @return String
     */
    public static String getBaseLowerDomain(String domain){
        if(!domain.contains(".")){
            domain  += ".com";
        }
        domain = getCleanLowerDomain(domain);
        String[] split = domain.split("\\.");
        int len = split.length;
        if(len == 0){
            return domain;
        }
        return split[len - 2] + "." + split[len - 1];
    }
    /**
     * 获取客户端ip
     * @param request 参数
     * @author Mr.Zhang
     * @since 2020-04-22
     * @return String
     */
    public static String getClientIp(HttpServletRequest request){
        String ip = request.getHeader("X-Forwarded-For");
        if(checkIsIp(ip)){
            return ip;
        }
        ip = request.getHeader("X-Real-IP");
        if(checkIsIp(ip)){
            return ip;
        }
        ip = request.getRemoteAddr();
        if(ip.equals("0:0:0:0:0:0:0:1")){
            //本地 localhost访问 ipv6
            ip = "127.0.0.1";
        }
        if(checkIsIp(ip)){
            return ip;
        }
        return "";
    }
    /**
     * 检测是否为ip
     * @param ip 参数
     * @author Mr.Zhang
     * @since 2020-04-22
     * @return String
     */
    public static boolean checkIsIp(String ip){
        if(StrUtil.isBlank(ip)){
            return false;
        }
        if(ip.equals("unKnown")){
            return false;
        }
        if(ip.equals("unknown")){
            return false;
        }
        return ip.split("\\.").length == 4;
    }
    /**
     * 获取fin_in_set拼装sql
     * @param field String 字段
     * @param value Integer 值
     * @author Mr.Zhang
     * @since 2020-04-22
     * @return String
     */
    public static String getFindInSetSql(String field, Integer value ){
        return "find_in_set(" + value +", " + field + ")";
    }
    /**
     * 获取fin_in_set拼装sql
     * @param field String 字段
     * @param list ArrayList<Integer> 值
     * @author Mr.Zhang
     * @since 2020-04-22
     * @return String
     */
    public static String getFindInSetSql(String field, ArrayList<Integer> list ){
        ArrayList<String> sqlList = new ArrayList<>();
        for (Integer value: list) {
            sqlList.add(getFindInSetSql(field, value));
        }
        return "( " + StrUtil.join(" or ",sqlList) + ")";
    }
    /**
     * 获取fin_in_set拼装sql
     * @param field String 字段
     * @param idStr String 多个值,逗号分割
     * @author Mr.Zhang
     * @since 2020-04-22
     * @return String
     */
    public static String getFindInSetSql(String field, String idStr ){
        List<Integer> list = stringToArray(idStr);
        ArrayList<String> sqlList = new ArrayList<>();
        for (Integer value: list) {
            sqlList.add(getFindInSetSql(field, value));
        }
        return "( " + StrUtil.join( " or ",sqlList) + ")";
    }
    /**
     * 通过id获取分类名称
     * @param list 分类集合
     * @param categoryIdStr id字符串
     * @author Mr.Zhang
     * @since 2020-05-06
     * @
     */
    public static String getValueByIndex(HashMap<Integer, String> list, String categoryIdStr){
        if(list.size() < 1 || StrUtil.isBlank(categoryIdStr)){
            return "";
        }
        ArrayList<String> name = new ArrayList<>();
        List<Integer> idList = CrmebUtil.stringToArray(categoryIdStr);
        String str = "";
        for (Integer id : idList) {
             str = getStrValueByIndex(list, id);
            if(!StrUtil.isBlank(str)){
                name.add(getStrValueByIndex(list, id));
            }
        }
        if(name.size() < 1){
            return "";
        }
        return StrUtil.join(",",name);
    }
    /**
     * 通过id获取分类名称
     * @param list 分类集合
     * @param key id
     * @author Mr.Zhang
     * @since 2020-05-06
     * @
     */
    public static String getStrValueByIndex(HashMap<Integer, String> list, Integer key){
        if(list.size() < 1){
            return "";
        }
        return list.getOrDefault(key, "");
    }
    /**
     * 通过id获取分类名称
     * @param list 分类集合
     * @param key id
     * @author Mr.Zhang
     * @since 2020-05-06
     * @
     */
    public static Integer getIntValueByIndex(HashMap<Integer, Integer> list, Integer key){
        if(null == list ||list.size() < 1){
            return 0;
        }
        return list.getOrDefault(key, 0);
    }
    /**
     * 获取uuid
     * @author Mr.Zhang
     * @since 2020-05-06
     * @
     */
    public static String getUuid(){
        return UUID.randomUUID().toString().replace("-", "");
    }
//    /**
//     * 同比率计算 //同比增长率= ((当前周期 - 上一个周期) ÷ 上一个周期 ) *100%
//     * @param i1 当前周期
//     * @param i2 上一个周期
//     * @author Mr.Zhang
//     * @since 2020-05-06
//     * @
//     */
//    public static int getRate(Integer i1, Integer i2){
//        BigDecimal b1 = new BigDecimal(i1);
//        BigDecimal b2 = new BigDecimal(i2);
//        return getRate(b1, b2);
//    }
//    /**
//     * 同比率计算 //同比增长率= ((当前周期 - 上一个周期) ÷ 上一个周期 ) *100%
//     * @param b1 当前周期
//     * @param b2 上一个周期
//     * @author Mr.Zhang
//     * @since 2020-05-06
//     * @
//     */
//    public static int getRate(BigDecimal b1, BigDecimal b2){
//        //计算差值
//
//        if(b2.equals(b1)){
//            //数值一样,说明没有增长
//            return Constants.NUM_ZERO;
//        }
//
//        if(b2.equals(BigDecimal.ZERO)){
//            //b2是0
//            return Constants.NUM_ONE_HUNDRED;
//        }
//
//        return (b1.subtract(b2)).divide(b2, 2, BigDecimal.ROUND_UP).multiply(BigDecimal.TEN).multiply(BigDecimal.TEN).intValue();
//
//
////        BigDecimal.setScale();//用于格式化小数点
////        setScale(1);//表示保留以为小数,默认用四舍五入方式
////        setScale(1,BigDecimal.ROUND_DOWN);//直接删除多余的小数位,如2.35会变成2.3
////        setScale(1,BigDecimal.ROUND_UP);//进位处理,2.35变成2.4
////        setScale(1,BigDecimal.ROUND_HALF_UP);//四舍五入,2.35变成2.4
////        setScaler(1,BigDecimal.ROUND_HALF_DOWN);//四舍五入,2.35变成2.3,如果是5则向下舍
//    }
    /**
     * 同比率计算 //同比增长率= ((当前周期 - 上一个周期) ÷ 上一个周期 ) *100%
     * @param i1 当前周期
     * @param i2 上一个周期
     * @author Mr.Zhang
     * @since 2020-05-06
     * @
     */
    public static BigDecimal getRateBig(Integer i1, Integer i2){
        BigDecimal b1 = new BigDecimal(i1);
        BigDecimal b2 = new BigDecimal(i2);
        return getRateBig(b1, b2);
    }
    /**
     * 同比率计算 //同比增长率= ((当前周期 - 上一个周期) ÷ 上一个周期 ) *100%
     * 如果上个周期为0, = 当前周期 * 100%
     * @param b1 当前周期
     * @param b2 上一个周期
     * @author Mr.Zhang
     * @since 2020-05-06
     * @
     */
    public static BigDecimal getRateBig(BigDecimal b1, BigDecimal b2){
        //计算差值
        if(b2.compareTo(b1) == 0){
            //数值一样,说明没有增长
            return BigDecimal.ZERO;
        }
        if(b2.compareTo(BigDecimal.ZERO) == 0){
            //b2是0
            return b1.setScale(2, BigDecimal.ROUND_UP);
        }
        return (b1.subtract(b2)).multiply(BigDecimal.TEN).multiply(BigDecimal.TEN).divide(b2, BigDecimal.ROUND_UP);
    }
    /**
     * hash 转换
     * @param hash final byte[] hash参数
     * @author Mr.Zhang
     * @since 2020-06-03
     * @return String
     */
    public static String byteToHex(final byte[] hash) {
        Formatter formatter = new Formatter();
        for (byte b : hash) {
            formatter.format("%02x", b);
        }
        String result = formatter.toString();
        formatter.close();
        return result;
    }
    /**
     * hash 转换
     * @param base64 String 图片流
     * @author Mr.Zhang
     * @since 2020-06-03
     * @return String
     */
    public static String getBase64Image(String base64) {
        return "data:image/png;base64," + base64;
    }
    /**
     * 去掉字符串第一位和最后一位
     * @param param String 参数
     * @return String
     */
    public static String trimSingeQua(String param){
        return param.substring(1,param.length()-1);
    }
    /**
     * 根据长度生成随机数字
     * @param start 起始数字
     * @param end 结束数字
     * @return 生成的随机码
     */
    public static Integer randomCount(Integer start, Integer end){
        return (int)(Math.random()*(end - start +1) + start);
    }
    /**
     * 订单号生成
     * @param payType String 支付类型
     * @return 生成的随机码
     */
    public static String getOrderNo(String payType){
        return payType + randomCount(11111, 99999) + System.currentTimeMillis() + randomCount(11111, 99999);
    }
    /**
     * map排序
     * @param map Map<String, Object> 支付类型
     * @return 生成的随机码
     */
    public static Map<String, Object> mapSort(Map<String, Object> map) {
        return new TreeMap<>(map);
    }
    /**
     * map排序然后按照url模式拼接
     * @param map Map<String, Object> 支付类型
     * @return 生成的随机码
     */
    public static String mapToStringUrl(Map<String, Object> map){
        map = CrmebUtil.mapSort(map);
        StringBuilder sb = new StringBuilder();       // 多线程访问的情况下需要用StringBuffer
        Set es = map.keySet();                 // 所有参与传参的key按照accsii排序(升序)
        for (Object set : es) {
            String k = set.toString();
            Object v = map.get(k);
            sb.append(k).append("=").append(v.toString()).append("&");
        }
        String str = sb.toString();
        return str.substring(0, str.length() - 1);
    }
    public static BigDecimal getBigDecimalRate(String rate) {
        return new BigDecimal(rate).divide(BigDecimal.TEN.multiply(BigDecimal.TEN));
    }
    /**
     * unicode编码转换为汉字
     * @param unicodeStr 待转化的编码
     * @return 返回转化后的汉子
     */
    public static String UnicodeToCN(String unicodeStr) {
        Pattern pattern = Pattern.compile("(\\\\u(\\p{XDigit}{4}))");
        Matcher matcher = pattern.matcher(unicodeStr);
        char ch;
        while (matcher.find()) {
            //group
            String group = matcher.group(2);
            //ch:'李四'
            ch = (char) Integer.parseInt(group, 16);
            //group1
            String group1 = matcher.group(1);
            unicodeStr = unicodeStr.replace(group1, ch + "");
        }
        return unicodeStr.replace("\\", "").trim();
    }
    /**
     * 汉字转化为Unicode编码
     * @param CN 待转化的中文
     * @return 返回转化之后的unicode编码
     */
    public static String CNToUnicode(String CN) {
        try {
            StringBuffer out = new StringBuffer("");
            //直接获取字符串的unicode二进制
            byte[] bytes = CN.getBytes("unicode");
            //然后将其byte转换成对应的16进制表示即可
            for (int i = 0; i < bytes.length - 1; i += 2) {
                out.append("\\u");
                String str = Integer.toHexString(bytes[i + 1] & 0xff);
                for (int j = str.length(); j < 2; j++) {
                    out.append("0");
                }
                String str1 = Integer.toHexString(bytes[i] & 0xff);
                out.append(str1);
                out.append(str);
            }
            return out.toString();
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
            return null;
        }
    }
    public static String getSign(Map<String, Object> map, String signKey){
        String result = CrmebUtil.mapToStringUrl(map) + "&key=" + signKey;
//        return DigestUtils.md5Hex(result).toUpperCase();
        String sign = SecureUtil.md5(result).toUpperCase();
        System.out.println("sign ========== " + sign);
        return sign;
    }
    /**
     * 检查是否可以转换int
     * @param str
     * @return
     */
    public static boolean isString2Num(String str){
        Pattern pattern = Pattern.compile("^[0-9]*$");
        Matcher matcher = pattern.matcher(str);
        return matcher.matches();
    }
    //数组去重
    public static List<Integer> arrayUnique(Integer[] arr){
        List<Integer> list = new ArrayList<>();
        for (Integer integer : arr) {
            if (!list.contains(integer)) {
                list.add(integer);
            }
        }
        return list;
    }
    /**
     * 百分比计算
     * @param detailTotalNumber  销售量
     * @param totalNumber  限量库存
     * @return  百分比
     */
    public static String percentInstance(Integer detailTotalNumber, Integer totalNumber) {
        Double bfTotalNumber = Double.valueOf(detailTotalNumber);
        Double zcTotalNumber = Double.valueOf(totalNumber);
        double percent = bfTotalNumber/zcTotalNumber;
        //获取格式化对象
        NumberFormat nt = NumberFormat.getPercentInstance();
        //设置百分数精确度2即保留两位小数
        nt.setMinimumFractionDigits(2);
        return nt.format(percent);
    }
    /**
     * 百分比计算
     * @param detailTotalNumber  销售量
     * @param totalNumber  限量库存
     * @return  百分比
     */
    public static int percentInstanceIntVal(Integer detailTotalNumber, Integer totalNumber) {
        BigDecimal sales = new BigDecimal(detailTotalNumber);
        BigDecimal total = new BigDecimal(totalNumber);
        int percentage = sales.divide(total, 2, BigDecimal.ROUND_UP).multiply(new BigDecimal(100)).intValue();
        return Math.min(percentage, 100);
    }
    /**
     * 百分比计算
     * @param detailTotalNumber  销售量
     * @param totalNumber  限量库存
     * @return  百分比
     */
    public static int percentInstanceIntVal(BigDecimal detailTotalNumber, BigDecimal totalNumber) {
        int percentage = detailTotalNumber.divide(totalNumber, 2, BigDecimal.ROUND_UP).multiply(new BigDecimal(100)).intValue();
        return Math.min(percentage, 100);
    }
    /**
     * Object转List
     */
    public static <T> List<T> castList(Object obj, Class<T> clazz) {
        List<T> result = new ArrayList<>();
        if(obj instanceof List<?>) {
            for (Object o : (List<?>) obj) {
                result.add(clazz.cast(o));
            }
            return result;
        }
        return null;
    }
    public static List<JSONObject> jsonArrayToJsonObjectList(JSONArray jsonArray) {
        List<JSONObject> list = CollUtil.newArrayList();
        for (int i = 0; i < jsonArray.size(); i++) {
            JSONObject arrayJSONObject = jsonArray.getJSONObject(i);
            list.add(arrayJSONObject);
        }
        return list;
    }
    /**
     * 手机号脱敏处理
     * @param phone 手机号
     */
    public static String maskMobile(String phone) {
        if (StrUtil.isBlank(phone)) {
            return "";
        }
        return phone.replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2");
    }
}
common-buiness/src/main/java/cn/stylefeng/guns/utils/ExportUtil.java
New file
@@ -0,0 +1,164 @@
package cn.stylefeng.guns.utils;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.poi.excel.ExcelUtil;
import cn.hutool.poi.excel.ExcelWriter;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.Font;
import java.io.File;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
/**
 * 导出工具类
 *  +----------------------------------------------------------------------
 *  | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
 *  +----------------------------------------------------------------------
 *  | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved.
 *  +----------------------------------------------------------------------
 *  | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
 *  +----------------------------------------------------------------------
 *  | Author: CRMEB Team <admin@crmeb.com>
 *  +----------------------------------------------------------------------
 */
public class ExportUtil {
    //上传类型
    public static final String DOWNLOAD_TYPE_FILE = "downloadf"; // 文件导出下载拦截关键字
    public static final String UPLOAD_TYPE_FILE = "uploadf"; // 文件前端上传后下载关键字
    //    public static final String UPLOAD_ROOT_PATH_CONFIG_KEY = "upload_root_path";//上传地址
    public static final String UPLOAD_MODEL_PATH_EXCEL = "excel";// excel
    /**
     * 导出Excel文件
     * @param fileName  文件名
     * @param title     文件标题
     * @param voList    数据列表
     * @param aliasMap  别名Map(别名需要与数据列表的数据对应)
     * @return 返回给前端的文件名(路径+文件名)
     */
    public static String exportExecl(String fileName, String title, List<?> voList, LinkedHashMap<String, String> aliasMap) throws Exception {
        if (StrUtil.isBlank(fileName)) {
            throw new Exception("文件名不能为空");
        }
        if (StrUtil.isBlank(title)) {
            throw new Exception("标题不能为空");
        }
        if (CollUtil.isEmpty(voList)) {
            throw new Exception("数据列表不能为空");
        }
        if (CollUtil.isEmpty(aliasMap)) {
            throw new Exception("别名map不能为空");
        }
        // 文件名部分
        String newFileName = UploadUtil.getWebPath() +  fileName;
        String filePath = UploadUtil.getServerPath();
        // 判断是否存在当前目录,不存在则创建
        File file = new File(filePath);
        if (!file.exists()) {
            file.mkdirs();
        }
        fileName = filePath.concat(fileName);
        // 通过工具类创建writer
        ExcelWriter writer = ExcelUtil.getWriter(fileName);
//        ExcelWriter writer = ExcelUtil.getWriter("d:/writeMapTest.xlsx");
        CellStyle headCellStyle = writer.getHeadCellStyle();
        Font font = writer.createFont();
        font.setBold(true);
        headCellStyle.setFont(font);
        //自定义标题别名
        aliasMap.forEach((key, value) -> writer.addHeaderAlias(key, value));
        // 合并单元格后的标题行,使用默认标题样式
        writer.merge(aliasMap.size() - 1, title);
        writer.merge(aliasMap.size() - 1, StrUtil.format("生成时间:{}", DateUtil.now()));
        //设置宽度自适应
        writer.setColumnWidth(-1, 22);
        // 一次性写出内容,使用默认样式,强制输出标题
        writer.write(voList, true);
        // 关闭writer,释放内存
        writer.close();
        return newFileName;
    }
    /**
     * 导出Excel文件
     * @param fileName  文件名
     * @param title     文件标题
     * @param voList    数据列表
     * @param aliasMap  别名Map(别名需要与数据列表的数据对应)
     * @return 返回给前端的文件名(路径+文件名)
     */
    public static Map<String,String> exportExeclOss(String fileName, String title, List<?> voList, LinkedHashMap<String, String> aliasMap) throws Exception {
        if (StrUtil.isBlank(fileName)) {
            throw new Exception("文件名不能为空");
        }
        if (StrUtil.isBlank(title)) {
            throw new Exception("标题不能为空");
        }
        if (CollUtil.isEmpty(voList)) {
            throw new Exception("数据列表不能为空");
        }
        if (CollUtil.isEmpty(aliasMap)) {
            throw new Exception("别名map不能为空");
        }
        // 文件名部分
        String newFileName = UploadUtil.getWebPath() +  fileName;
        String filePath = UploadUtil.getServerPath();
        // 判断是否存在当前目录,不存在则创建
        File file = new File(filePath);
        if (!file.exists()) {
            file.mkdirs();
        }
        fileName = filePath.concat(fileName);
        // 通过工具类创建writer
        ExcelWriter writer = ExcelUtil.getWriter(fileName);
//        ExcelWriter writer = ExcelUtil.getWriter("d:/writeMapTest.xlsx");
        CellStyle headCellStyle = writer.getHeadCellStyle();
        Font font = writer.createFont();
        font.setBold(true);
        headCellStyle.setFont(font);
        //自定义标题别名
        aliasMap.forEach((key, value) -> writer.addHeaderAlias(key, value));
        // 合并单元格后的标题行,使用默认标题样式
        writer.merge(aliasMap.size() - 1, title);
        writer.merge(aliasMap.size() - 1, StrUtil.format("生成时间:{}", DateUtil.now()));
        //设置宽度自适应
        writer.setColumnWidth(-1, 22);
        // 一次性写出内容,使用默认样式,强制输出标题
        writer.write(voList, true);
        // 关闭writer,释放内存
        writer.close();
        Map<String,String> map = new HashMap<>();
        map.put("fileName",newFileName);
        map.put("filePath",fileName);
        return map;
    }
    /**
     * 上传部分设置
     */
    public static void setUpload( String modelPath, String type)  {
        UploadUtil.setModelPath("guns/"+UPLOAD_TYPE_FILE+"/"+modelPath);
        UploadUtil.setType(type);
    }
}
common-buiness/src/main/java/cn/stylefeng/guns/utils/GeneralUtil.java
New file
@@ -0,0 +1,88 @@
package cn.stylefeng.guns.utils;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.RandomUtil;
import cn.hutool.core.util.StrUtil;
import cn.stylefeng.roses.kernel.rule.enums.OrderTypeEnum;
import lombok.experimental.UtilityClass;
/**
 * 工具类
 */
@UtilityClass
public class GeneralUtil {
    /**
     * 生成订单号
     * 生成规则:订单前缀(2) + 时间(15) + 随机数(5)
     */
    public String generateOrderNo(OrderTypeEnum e) {
        return e.getCode() +
                DateUtil.format(DateUtil.date(), "yyMMddHHmmssSSS") +
                RandomUtil.randomNumbers(4);
    }
    /**
     * 生成退款订单号
     * 生成规则:订单前缀(3) + 业务订单号
     */
    public String generateRefundOrderNo(String orderNo) {
        return OrderTypeEnum.REFUND_ORDER.getCode() +
                orderNo;
    }
    /**
     * 生成员工工号
     * 生成规则:六位数字员工号,唯一
     */
    public String generateWorkNo() {
        return RandomUtil.randomString(RandomUtil.BASE_NUMBER.toUpperCase(), 6);
    }
    /**
     * 生成用户展示ID
     * 生成规则:XTT+随机六位数字
     */
    public String generateShowId() {
        return "XTT" + RandomUtil.randomNumbers(6);
    }
    /**
     * 生成用户昵称
     * 生成规则:大写字母(2) + 随机数(4)
     */
    public String generateNickName() {
        return RandomUtil.randomString(RandomUtil.BASE_CHAR.toUpperCase(), 2) + RandomUtil.randomNumbers(4);
    }
    /**
     * 虚拟一个注册邮箱
     */
    public String generateEmail(String email) {
        //return email + "@yjjjxlzx.com";
        return "";
    }
    /**
     * 生成随机模块编号
     * 生成规则:时间(15) + 随机数(5)
     */
    public String generateModuleNo() {
        return DateUtil.format(DateUtil.date(), "yyMMddHHmmssSSS") +
                RandomUtil.randomNumbers(4);
    }
    /**
     * 统一的工作人员昵称
     * 生成规则:有昵称优先使用昵称,没有昵称使用姓名
     */
    public static String getUnifyNickName(String nickName, String realName) {
        if (StrUtil.isNotBlank(nickName)) {
            return nickName;
        }
        if (StrUtil.isNotBlank(realName)) {
            return realName;
        }
        return null;
    }
}
common-buiness/src/main/java/cn/stylefeng/guns/utils/ObsUtil.java
New file
@@ -0,0 +1,150 @@
package cn.stylefeng.guns.utils;
import cn.hutool.core.lang.UUID;
import com.obs.services.ObsClient;
import com.obs.services.model.PutObjectResult;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
/**
 * @author guohongjin
 * @create 2023/5/8 17:37
 */
@Slf4j
@Data
@Component
@ConfigurationProperties(prefix = "obs")
public class ObsUtil {
    //endpoint
    private  String endPoint;
    private  String ak;
    private  String sk;
    //桶名
    private String bucketName;
    private  static ObsClient obsClient;
    //生成obsclient
    private ObsClient createObsClient(){
        if (obsClient == null){
            synchronized (ObsClient.class){
                if (obsClient == null){
                    // 创建ObsClient实例
                    obsClient = new ObsClient(ak, sk, endPoint);
                }
            }
        }
       return obsClient;
    }
    /**
     * 文件上传
     * @param filePath 文件地址
     * @param fileName 文件名称
     */
    public String upload(String filePath,String fileName){
        // 待上传的本地文件路径,需要指定到具体的文件名
        FileInputStream fis = null;
        try {
            fis = new FileInputStream(new File(filePath));
            String obsName = fileName.substring(fileName.lastIndexOf("/")+1,fileName.length());
            String obsFilePath = UUID.randomUUID().toString().replace("-","")+"/"+fileName.substring(0,fileName.lastIndexOf("/")+1);
//            createObsClient().putObject(this.bucketName, obsFilePath, new ByteArrayInputStream(new byte[0]));
            PutObjectResult putObjectResult = createObsClient().putObject(this.bucketName, "//teest//tet//"+obsName, fis);
            return putObjectResult.getObjectUrl();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        return null;
    }
    /**
     * 文件上传
     * @param file 文件对象
     * @param fileName 文件名称
     */
    public  String upload(File file,String fileName){
        // 待上传的本地文件路径,需要指定到具体的文件名
        FileInputStream fis = null;
        try {
            fis = new FileInputStream(file);
            PutObjectResult putObjectResult = createObsClient().putObject(this.bucketName, UUID.randomUUID().toString().replace("-","")+"/"+fileName, fis);
            return putObjectResult.getObjectUrl();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        return null;
    }
    /**
     * 文件上传
     * @param file 文件对象
     */
    public String upload(MultipartFile file){
        // 待上传的本地文件路径,需要指定到具体的文件名
        try {
            PutObjectResult putObjectResult = createObsClient().putObject(this.bucketName, UUID.randomUUID().toString().replace("-","")+"/"+file.getOriginalFilename(), file.getInputStream());
            return putObjectResult.getObjectUrl();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }catch(Exception ex){
            ex.printStackTrace();
            log.error("上传文件失败!",ex);
        }
        return null;
    }
//    public static void main(String[] args) {
//        // Endpoint以北京四为例,其他地区请按实际情况填写。
//        String endPoint = "https://obs.cn-east-3.myhuaweicloud.com";
//        String ak = "AYQCHVTCQUTHVDVLQZMJ";
//        String sk = "QSC0iTbxmugIzYoTH13lptrOkix6e15DGK1LOoky";
//        // 创建ObsClient实例
//        ObsClient obsClient = new ObsClient(ak, sk, endPoint);
//
//        // 待上传的本地文件路径,需要指定到具体的文件名
//        FileInputStream fis = null;
//        try {
//            fis = new FileInputStream(new File("C:\\Users\\hyb\\Desktop\\CI.xlsx"));
//            PutObjectResult putObjectResult = obsClient.putObject("fbwl", "CI.xlsx", fis);
//            System.out.println(JSONObject.toJSON(putObjectResult));
//        } catch (FileNotFoundException e) {
//            e.printStackTrace();
//        }
//
//
////        // 待上传的本地文件路径,需要指定到具体的文件名
////        FileInputStream fis2 = new FileInputStream(new File("localfile2"));
////        PutObjectRequest request = new PutObjectRequest();
////        request.setBucketName("bucketname");
////        request.setObjectKey("objectname2");
////        request.setInput(fis2);
////        obsClient.putObject(request);
//    }
//    public static String uploadFile(String fileUrl){
//
//    }
}
common-buiness/src/main/java/cn/stylefeng/guns/utils/ReqDebugUtil.java
New file
@@ -0,0 +1,107 @@
package cn.stylefeng.guns.utils;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.google.common.collect.ImmutableSet;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import org.springframework.web.util.ContentCachingRequestWrapper;
import org.springframework.web.util.ContentCachingResponseWrapper;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
/**
 * 调试请求日志过滤器
 *
 * @author goupan
 */
@Slf4j
@Component
public class ReqDebugUtil implements Filter {
    private static final ImmutableSet<String> IGNORED_HEADERS;
    static {
        Set<String> ignoredHeaders = ImmutableSet.of(
                        "Content-Type",
                        "User-Agent",
                        "Accept",
                        "Cache-Control",
                        "Postman-Token",
                        "Host",
                        "Accept-Encoding",
                        "Connection",
                        "Content-Length")
                .stream()
                .map(String::toUpperCase)
                .collect(Collectors.toSet());
        IGNORED_HEADERS = ImmutableSet.copyOf(ignoredHeaders);
    }
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        // 通过filterConfig获取初始化参数
        log.info("调试请求日志过滤器 init..");
    }
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        HttpServletRequest request = (HttpServletRequest) servletRequest;
        HttpServletResponse response = (HttpServletResponse) servletResponse;
        ContentCachingRequestWrapper requestWrapper = new ContentCachingRequestWrapper(request);
        ContentCachingResponseWrapper responseWrapper = new ContentCachingResponseWrapper(response);
        try {
            filterChain.doFilter(requestWrapper, responseWrapper);
        } finally {
            try {
                // 请求地址
                String url = request.getRequestURL().toString();
                if (StrUtil.isBlank(FileUtil.getSuffix(url))
                        && !url.contains("/doc.html")
                        && !url.contains("/swagger")
                        && !url.contains("/webjars")
                        && !url.contains("/api-docs")
                ) {
                    // 构造header
                    Map header = new HashMap(16);
                    Enumeration<String> headerNames = request.getHeaderNames();
                    while (headerNames.hasMoreElements()) {
                        String headerName = headerNames.nextElement();
                        if (!IGNORED_HEADERS.contains(headerName.toUpperCase())) {
                            header.put(headerName, request.getHeader(headerName));
                        }
                    }
                    log.info(
                            "请求url: " + url + "  method: " + request.getMethod()
                                    + "\nheader: " + JSONUtil.toJsonStr(header)
                                    + "\nparams: " + request.getQueryString()
                                    + "\nreqBody: " + new String(requestWrapper.getContentAsByteArray(), StandardCharsets.UTF_8)
                                    + "\nrepData: " + new String(responseWrapper.getContentAsByteArray(), StandardCharsets.UTF_8)
                    );
                }
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                // 这一行必须添加,否则就一直不返回
                responseWrapper.copyBodyToResponse();
            }
        }
    }
    @Override
    public void destroy() {
    }
}
common-buiness/src/main/java/cn/stylefeng/guns/utils/StatDataUtil.java
New file
@@ -0,0 +1,199 @@
package cn.stylefeng.guns.utils;
import cn.hutool.core.date.DateField;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.StrUtil;
import lombok.experimental.UtilityClass;
import java.util.*;
import java.util.stream.Collectors;
@UtilityClass
public class StatDataUtil {
    /**
     * 获取日期格式化SQL
     *
     * @param type
     * @return
     */
    public String getDateFormatSql(Integer type) {
        String dateFormatSql = "%Y-%m-%d";
        if (type != null) {
            switch (type) {
                case 2:
                    return "%Y-%u";
                case 3:
                    return "%Y-%m";
                case 4:
                    return "%Y";
            }
        }
        return dateFormatSql;
    }
    /**
     * 获取开始时间和结束时间(空使用默认)
     *
     * @param type      类型:1日,2周,3月,4年
     * @param beginTime 开始时间
     * @param endTime   结束时间
     * @return
     */
    public List<String> getStartAndEndTime(Integer type, String beginTime, String endTime) {
        Date nowDate = new Date();
        if (type == null || type == 1) {
            if (StrUtil.isEmpty(beginTime)) {
                beginTime = DateUtil.beginOfDay(DateUtil.offsetDay(nowDate, -30)).toString();
            }else{
                beginTime = beginTime + " 00:00:00";
            }
            if (StrUtil.isEmpty(endTime)) {
                endTime = DateUtil.endOfDay(nowDate).toString();
            }else{
                endTime = endTime + " 23:59:59";
            }
        } else if (type == 2) {
            if (StrUtil.isEmpty(beginTime)) {
                DateTime weekDate = DateUtil.offsetWeek(nowDate, -11);
//                int week = DateUtil.weekOfYear(weekDate);
//                beginTime = DateUtil.format(weekDate, "yyyy") + "-" + StrUtil.padPre(String.valueOf(week), 2, "0");
             beginTime = DateUtil.beginOfDay(weekDate).toString();
            }else{
                beginTime = beginTime + " 00:00:00";
            }
            if (StrUtil.isEmpty(endTime)) {
//                int week = DateUtil.weekOfYear(nowDate);
                endTime = DateUtil.endOfDay(nowDate).toString();
//                endTime = DateUtil.format(nowDate, "yyyy") + "-" + StrUtil.padPre(String.valueOf(week), 2, "0");
            }else{
                endTime = endTime + " 23:59:59";
            }
        } else if (type == 3) {
            if (StrUtil.isEmpty(beginTime)) {
                beginTime =  DateUtil.beginOfDay(DateUtil.offsetMonth(nowDate, -5)).toString();
            }else{
                beginTime = beginTime + " 00:00:00";
            }
            if (StrUtil.isEmpty(endTime)) {
                endTime = DateUtil.endOfDay(nowDate).toString();
            }else{
                endTime = endTime + " 23:59:59";
            }
        } else if (type == 4) {
            if (StrUtil.isEmpty(beginTime)) {
                beginTime = DateUtil.beginOfDay(DateUtil.offset(nowDate, DateField.YEAR, -2)).toString();
            }else{
                beginTime = beginTime + " 00:00:00";
            }
            if (StrUtil.isEmpty(endTime)) {
                endTime = DateUtil.endOfDay(nowDate).toString();
            }else{
                endTime = endTime + " 23:59:59";
            }
        }
        return Arrays.asList(beginTime, endTime);
    }
    /**
     * 获取时间范围
     *
     * @param type      类型:1日,2周,3月,4年
     * @param beginTime 开始时间
     * @param endTime   结束时间
     * @return
     */
    public List<String> getBeginEndTimeRangeList(Integer type, String beginTime, String endTime) {
        if (type == null || type == 1) {
            return DateUtil.rangeToList(DateUtil.parse(beginTime), DateUtil.parse(endTime), DateField.DAY_OF_MONTH)
                    .stream()
                    .map(date -> DateUtil.format(date, "yyyy-MM-dd"))
                    .collect(Collectors.toList());
        } else if (type == 2) {
            //return DateUtil.rangeToList(DateUtil.parse(beginTime, "yyyy-ww"), DateUtil.parse(endTime, "yyyy-ww"), DateField.WEEK_OF_YEAR)
            return DateUtil.rangeToList(DateUtil.parse(beginTime), DateUtil.parse(endTime), DateField.WEEK_OF_YEAR)
                    .stream()
                    .map(date -> DateUtil.format(date, "yyyy-ww"))
                    .collect(Collectors.toList());
        } else if (type == 3) {
            return DateUtil.rangeToList(DateUtil.parse(beginTime, "yyyy-MM"), DateUtil.parse(endTime, "yyyy-MM"), DateField.MONTH)
                    .stream()
                    .map(date -> DateUtil.format(date, "yyyy-MM"))
                    .collect(Collectors.toList());
        } else if (type == 4) {
            return DateUtil.rangeToList(DateUtil.parse(beginTime, "yyyy"), DateUtil.parse(endTime, "yyyy"), DateField.YEAR)
                    .stream()
                    .map(date -> DateUtil.format(date, "yyyy"))
                    .collect(Collectors.toList());
        }
        return null;
    }
    /**
     * 封装时间数据
     *
     * @param timeList 时间范围
     * @param dataList 数据列表
     * @param dataFieldName 数据字段名,默认:data
     * @return
     */
    public List<Map<String, Object>> wrapperTimeLIst(List<String> timeList, List<Map<String, Object>> dataList, String dataFieldName) {
        dataFieldName = StrUtil.isNotEmpty(dataFieldName) ? dataFieldName : "data";
        String finalDataFieldName = dataFieldName;
        return timeList.stream()
                .map(time -> {
                    Object data = dataList.stream()
                            .filter(map -> map.get("time").equals(time))
                            .findFirst()
                            .map(map -> map.get(finalDataFieldName))
                            .orElse(0);
                    Map<String, Object> hashMap = MapUtil.newHashMap();
                    hashMap.put("time", time);
                    hashMap.put("data", data);
                    return hashMap;
                })
                .collect(Collectors.toList());
    }
    public static void main(String[] args) {
        List<String> timeList = StatDataUtil.getStartAndEndTime(2, "", "");
        System.out.println(timeList.get(0));
        System.out.println(timeList.get(1));
        System.out.println("-------------------------------------");
//        Integer type = 1;
//        String beginTime = "2023-01-01", endTime = "2023-02-02";
        Integer type = 2;
        String beginTime = "2023-46", endTime = "2024-05";
//        Integer type = 3;
//        String beginTime = "2023-01", endTime = "2024-02";
//        Integer type = 4;
//        String beginTime = "2020", endTime = "2024";
        timeList = StatDataUtil.getBeginEndTimeRangeList(type, beginTime, endTime);
        timeList.forEach(System.out::println);
        System.out.println("-------------------------------------");
        HashMap m1 = new HashMap();
        m1.put("time", "2023-48");
        m1.put("data", "233");
        HashMap m2 = new HashMap();
        m2.put("time", "2024-02");
        m2.put("data", "123");
        HashMap m3 = new HashMap();
        m3.put("time", "2023-50");
        m3.put("data", "444");
        List<Map<String, Object>> dataList = Arrays.asList(m1, m2, m3);
        List<Map<String, Object>> maps = StatDataUtil.wrapperTimeLIst(timeList, dataList, null);
        for (Map<String, Object> map : maps) {
            System.out.println(map.get("time") + "----" + map.get("data"));
        }
    }
}
common-buiness/src/main/java/cn/stylefeng/guns/utils/UploadUtil.java
New file
@@ -0,0 +1,134 @@
package cn.stylefeng.guns.utils;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.lang.UUID;
import cn.hutool.core.util.RandomUtil;
import org.apache.commons.io.FilenameUtils;
import java.io.File;
import java.io.IOException;
public class UploadUtil {
    //服务器存储地址
//    private static String rootPath  = "/www/wwwroot/upload";
    private static String rootPath  = "/file/";
    //类型
    private static String type = "/guns" ;
    //模块
//    private static String modelPath = "/store";
    private static String modelPath = "/public";
    //扩展名
    private static String extStr = "png,jpg";
    //文件大小上限
    private static int size = 2;
    public static String getRootPath() {
        return rootPath;
    }
    public static void setRootPath(String rootPath) {
        UploadUtil.rootPath = (rootPath + "/").replace(" ", "").replace("//", "/");
    }
    public static String getType() {
        return type;
    }
    public static void setType(String type) {
        UploadUtil.type = type + "/";
    }
    public static String getModelPath() {
        return modelPath;
    }
    public static void setModelPath(String modelPath) {
        UploadUtil.modelPath = modelPath + "/";
    }
    public static String getExtStr() {
        return extStr;
    }
    public static void setExtStr(String extStr) {
        UploadUtil.extStr = extStr;
    }
    public static int getSize() {
        return size;
    }
    public static void setSize(int size) {
        UploadUtil.size = size;
    }
    /**
     * 根据文件的绝对路径创建一个文件对象.
     * @return 返回创建的这个文件对象
     * @author Mr.Zhang
     * @since 2020-05-08
     */
    public static File createFile(String filePath) throws IOException,Exception {
        // 获取文件的完整目录
        String fileDir = FilenameUtils.getFullPath(filePath);
        // 判断目录是否存在,不存在就创建一个目录
        File file = new File(fileDir);
        if (!file.isDirectory()) {
            //创建失败返回null
            if (!file.mkdirs()) {
                throw new Exception("文件目录创建失败...");
            }
        }
        // 判断这个文件是否存在,不存在就创建
        file = new File(filePath);
        if (!file.exists()) {
            if (!file.createNewFile()) {
                throw new Exception("目标文件创建失败...");
            }
        }
        return file;
    }
    /**
     * 生成文件文件名
     * @param fileName 文件名
     * @author Mr.Zhang
     * @since 2020-05-08
     */
    public static String getDestPath(String fileName) {
        //规则:  子目录/年/月/日.后缀名
        return getServerPath() + fileName;
    }
    public static String fileName(String extName){
        return UUID.randomUUID().toString() + RandomUtil.randomString(10) + "." + extName;
    }
    /**
     * 生成文件在的实际的路径
     * @author Mr.Zhang
     * @since 2020-05-08
     */
    public static String getServerPath() {
        // 文件分隔符转化为当前系统的格式
        return FilenameUtils.separatorsToSystem( getRootPath() + getWebPath());
    }
    /**
     * web目录可访问的路径
     * @author Mr.Zhang
     * @since 2020-05-08
     */
    public static String getWebPath() {
        // 文件分隔符转化为当前系统的格式
        return getModelPath() + DateUtil.today().replace("-", "/") + "/";
//        return getType() + getModelPath() + DateUtil.nowDate(Constants.DATE_FORMAT_DATE).replace("-", "/") + "/";
    }
}
generator/pom.xml
New file
@@ -0,0 +1,85 @@
<?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>cn.xiwang.guns</groupId>
        <artifactId>xinlizixun</artifactId>
        <version>7.3.3</version>
        <relativePath>../pom.xml</relativePath>
    </parent>
    <artifactId>generator</artifactId>
    <packaging>jar</packaging>
    <dependencies>
        <dependency>
            <groupId>com.ibeetl</groupId>
            <artifactId>beetl</artifactId>
            <version>2.8.5</version>
        </dependency>
        <!--通用依赖-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generate</artifactId>
            <version>2.3</version>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatisplus-spring-boot-starter</artifactId>
            <version>1.0.5</version>
        </dependency>
        <dependency>
            <groupId>org.apache.velocity</groupId>
            <artifactId>velocity</artifactId>
            <version>1.7</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
        </dependency>
        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>${hutool.version}</version>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus</artifactId>
            <version>2.3</version>
        </dependency>
    </dependencies>
</project>
generator/src/main/java/com/mindant/generator/action/GunsCodeBatchGenerator.java
New file
@@ -0,0 +1,111 @@
package com.mindant.generator.action;
import cn.hutool.db.Db;
import cn.hutool.db.Entity;
import cn.hutool.db.ds.simple.SimpleDataSource;
import com.mindant.generator.action.config.WebGeneratorConfig;
import com.mindant.generator.action.model.GenQo;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
 * 代码生成器,可以生成实体,dao,service,controller,html,js
 *
 * @author stylefeng
 * @Date 2017/5/21 12:38
 */
public class GunsCodeBatchGenerator {
    public static void main(String[] args) throws Exception {
        // 数据库名
        String dbName = "xlzx";
        // 数据库连接
        String url = "jdbc:mysql://rm-2vc47rysl5jt6gv312o.mysql.cn-chengdu.rds.aliyuncs.com:3306/"
                + dbName
                + "?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=CTT&nullCatalogMeansCurrent=true";
        // 用户名
        String userName = "root_dev";
        // 密码
        String password = "00aabb00";
        // 查询数据库表名、注释
        String tableSql = "SELECT TABLE_NAME AS tableName,TABLE_COMMENT AS tableComment FROM information_schema.`TABLES` WHERE TABLE_SCHEMA = '" + dbName + "'" +
                " AND TABLE_NAME NOT LIKE 'sys_%'" +
                " ORDER BY TABLE_NAME ASC";
        // 创建数据源
        SimpleDataSource ds = new SimpleDataSource(url, userName, password);
        // 使用数据源连接数据库
        Db db = Db.use(ds);
        List<Entity> list = db.query(tableSql);
        // 查询表名、注释
        LinkedHashMap<String, String> tableCommentMap = list.stream().collect(Collectors.toMap(e -> e.getStr("tableName"), e -> e.getStr("tableComment"), (e1, e2) -> e1, LinkedHashMap::new));
        // 执行SQL查询
        for (String k : tableCommentMap.keySet()) {
            // 打印数据表名
            System.out.println("\"" + k + "\",");
//            System.out.println(k + ":" + tableCommentMap.get(k));
        }
        String[] tableNameArray = new String[]{
//                "hr_org_approver",
//                "hr_organization",
//                "hr_position",
                "t_counselling_user"
        };
        for (String tableName : tableNameArray) {
            genTableModel(dbName, url, userName, password, tableName, tableCommentMap);
        }
    }
    public static void genTableModel(String dbName, String url, String userName, String password, String tableName, Map<String, String> tableCommentMap) {
        /*
         * guns的生成器:
         * guns的代码生成器可以生成controller,html页面,页面对应的js
         */
//        GunsGeneratorConfig gunsGeneratorConfig = new GunsGeneratorConfig();
//        gunsGeneratorConfig.doMpGeneration();
//        gunsGeneratorConfig.doGunsGeneration();
        // 代码生成的查询参数
        GenQo genQo = new GenQo();
        //数据库url
        genQo.setUrl(url);
        // 数据库用户名
        genQo.setUserName(userName);
        // 数据库密码
        genQo.setPassword(password);
        // 表名
        genQo.setTableName(tableName);
        // 作者
        genQo.setAuthor("guohongjin");
        // 数据库名
        genQo.setDbName(dbName);
        // 项目包
        genQo.setProjectPackage("cn.stylefeng.guns");
        genQo.setModuleName("business");
        // 代码生成位置
        genQo.setProjectPath("D:\\code\\xinlizixun_dev\\common-buiness");
        // 用户信息
        genQo.setBizName(tableCommentMap.get(tableName));
        genQo.setControllerSwitch(true);
        genQo.setEntitySwitch(true);
        genQo.setServiceSwitch(true);
        genQo.setDaoSwitch(true);
        genQo.setIgnoreTabelPrefix("t_");
        WebGeneratorConfig webGeneratorConfig = new WebGeneratorConfig(genQo);
        webGeneratorConfig.doMpGeneration();
        webGeneratorConfig.doGunsGeneration();
    }
}
generator/src/main/java/com/mindant/generator/action/GunsCodeGenerator.java
New file
@@ -0,0 +1,60 @@
package com.mindant.generator.action;
import com.mindant.generator.action.config.GunsGeneratorConfig;
import com.mindant.generator.action.config.WebGeneratorConfig;
import com.mindant.generator.action.model.GenQo;
/**
 * 代码生成器,可以生成实体,dao,service,controller,html,js
 *
 * @author stylefeng
 * @Date 2017/5/21 12:38
 */
public class GunsCodeGenerator {
    public static void main(String[] args) {
//        /**
//         * Mybatis-Plus的代码生成器:
//         *      mp的代码生成器可以生成实体,mapper,mapper对应的xml,service
//         */
//        GunsGeneratorConfig gunsGeneratorConfig = new GunsGeneratorConfig();
//        gunsGeneratorConfig.doMpGeneration();
        /**
         * guns的生成器:
         *      guns的代码生成器可以生成controller,html页面,页面对应的js
         */
//        gunsGeneratorConfig.doGunsGeneration();
        GenQo genQo = new GenQo();
        //数据库url
        genQo.setUrl("jdbc:mysql://rm-2vc47rysl5jt6gv312o.mysql.cn-chengdu.rds.aliyuncs.com:3306/fbwl?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=CTT&nullCatalogMeansCurrent=true");
        //数据库密码
        genQo.setPassword("00aabb00");
        //数据库用户名
        genQo.setUserName("root_dev");
        //表名
        genQo.setTableName("t_area");
        genQo.setAuthor("guohongjin");
        //数据库名
        genQo.setDbName("fbwl");
        //项目包
        genQo.setProjectPackage("cn.stylefeng.guns");
        genQo.setModuleName("business");
        //代码生成位置
        genQo.setProjectPath("D:\\code\\xinlizixun_dev\\common-buiness");
        //用户信息
        genQo.setBizName("地区码表");
        genQo.setControllerSwitch(true);
        genQo.setEntitySwitch(true);
        genQo.setServiceSwitch(true);
        genQo.setDaoSwitch(true);
        genQo.setIgnoreTabelPrefix("t_");
        WebGeneratorConfig webGeneratorConfig = new WebGeneratorConfig(genQo);
        webGeneratorConfig.doMpGeneration();
        webGeneratorConfig.doGunsGeneration();
    }
}
generator/src/main/java/com/mindant/generator/action/config/AbstractGeneratorConfig.java
New file
@@ -0,0 +1,118 @@
package com.mindant.generator.action.config;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.*;
import com.baomidou.mybatisplus.generator.config.po.TableInfo;
import com.mindant.generator.engine.SimpleTemplateEngine;
import com.mindant.generator.engine.base.GunsTemplateEngine;
import com.mindant.generator.engine.config.ContextConfig;
import com.mindant.generator.util.FileUtil;
import java.io.File;
import java.util.List;
/**
 * 代码生成的抽象配置
 */
public abstract class AbstractGeneratorConfig {
    /**
     * Java实体自定义模板(在/src/main/resources目录下,*建议:与Rest模板保持一致*)
     */
    private static final String templateFilePath = "/gunsTemplate/advanced/entity.java.vm";
    /**
     * mybatis-plus代码生成器配置
     */
    GlobalConfig globalConfig = new GlobalConfig();
    DataSourceConfig dataSourceConfig = new DataSourceConfig();
    StrategyConfig strategyConfig = new StrategyConfig();
    PackageConfig packageConfig = new PackageConfig();
    TableInfo tableInfo = null;
    /**
     * Guns代码生成器配置
     */
    ContextConfig contextConfig = new ContextConfig();
//    SqlConfig sqlConfig = new SqlConfig();
    protected abstract void config();
    public void init() {
        config();
        packageConfig.setService(contextConfig.getProPackage() + ".modular." + contextConfig.getModuleName() + ".service");
        packageConfig.setServiceImpl(contextConfig.getProPackage() + ".modular." + contextConfig.getModuleName() + ".service.impl");
        //controller没用掉,生成之后会自动删掉
        packageConfig.setController("TTT");
        if (!contextConfig.getEntitySwitch()) {
            packageConfig.setEntity("TTT");
        }
        if (!contextConfig.getDaoSwitch()) {
            packageConfig.setMapper("TTT");
            packageConfig.setXml("TTT");
        }
        if (!contextConfig.getServiceSwitch()) {
            packageConfig.setService("TTT");
            packageConfig.setServiceImpl("TTT");
        }
    }
    /**
     * 删除不必要的代码
     */
    public void destory() {
        String outputDir = globalConfig.getOutputDir() + "/TTT";
        FileUtil.deleteDir(new File(outputDir));
    }
    public AbstractGeneratorConfig() {
    }
    public void doMpGeneration() {
        init();
        AutoGenerator autoGenerator = new AutoGenerator();
        autoGenerator.setGlobalConfig(globalConfig);
        autoGenerator.setDataSource(dataSourceConfig);
        autoGenerator.setStrategy(strategyConfig);
        autoGenerator.setPackageInfo(packageConfig);
        // 自定义模板配置【如使用默认模板,则注释此段代码】
        TemplateConfig tc = new TemplateConfig();
        tc.setEntity(templateFilePath);
        tc.setMapper("/gunsTemplate/advanced/mapper.java.vm");
        tc.setService("/gunsTemplate/advanced/service.java.vm");
        tc.setServiceImpl("/gunsTemplate/advanced/serviceImpl.java.vm");
        // 如上任何一个模块如果设置 空 OR Null 将不生成该模块。
        autoGenerator.setTemplate(tc);
        autoGenerator.execute();
        destory();
        //获取table信息,用于guns代码生成
        List<TableInfo> tableInfoList = autoGenerator.getConfig().getTableInfoList();
        if (tableInfoList != null && tableInfoList.size() > 0) {
            this.tableInfo = tableInfoList.get(0);
        }
    }
    public void doGunsGeneration() {
        GunsTemplateEngine GunsTemplateEngine = new SimpleTemplateEngine();
        GunsTemplateEngine.setContextConfig(contextConfig);
//        sqlConfig.setConnection(dataSourceConfig.getConn());
//        GunsTemplateEngine.setSqlConfig(sqlConfig);
        GunsTemplateEngine.setTableInfo(tableInfo);
        GunsTemplateEngine.start();
    }
}
generator/src/main/java/com/mindant/generator/action/config/GunsGeneratorConfig.java
New file
@@ -0,0 +1,80 @@
package com.mindant.generator.action.config;
import com.baomidou.mybatisplus.generator.config.rules.DbType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
/**
 * 默认的代码生成的配置
 */
public class GunsGeneratorConfig extends AbstractGeneratorConfig {
    protected void globalConfig() {
        globalConfig.setOutputDir("D:\\ttt");//写自己项目的绝对路径,注意具体到java目录
        globalConfig.setFileOverride(true);
        globalConfig.setEnableCache(false);
        globalConfig.setBaseResultMap(true);
        globalConfig.setBaseColumnList(true);
        globalConfig.setOpen(false);
        globalConfig.setAuthor("stylefeng");
    }
    protected void dataSourceConfig() {
        dataSourceConfig.setDbType(DbType.MYSQL);
        dataSourceConfig.setDriverName("com.mysql.jdbc.Driver");
        dataSourceConfig.setUsername("root");
        dataSourceConfig.setPassword("root");
        dataSourceConfig.setUrl("jdbc:mysql://127.0.0.1:3306/guns?characterEncoding=utf8");
    }
    protected void strategyConfig() {
        strategyConfig.setTablePrefix(new String[]{"sys_"});// 此处可以修改为您的表前缀
        strategyConfig.setNaming(NamingStrategy.underline_to_camel);
        // 是否使用Lombok简化代码
        strategyConfig.setEntityLombokModel(true);
    }
    protected void packageConfig() {
        packageConfig.setParent(null);
        packageConfig.setEntity("com.mindant.admin.common.persistence.model");
        packageConfig.setMapper("com.mindant.admin.common.persistence.dao");
        packageConfig.setXml("com.mindant.admin.common.persistence.dao.mapping");
    }
    protected void contextConfig() {
        contextConfig.setProPackage("com.mindant.admin");
        contextConfig.setCoreBasePackage("com.mindant.core");
        contextConfig.setBizChName("字典管理");
        contextConfig.setBizEnName("sysDict");
        contextConfig.setModuleName("system");
        contextConfig.setProjectPath("D:\\ideaSpace\\guns\\guns-admin");//写自己项目的绝对路径
        contextConfig.setEntityName("SysDict");
//        sqlConfig.setParentMenuName(null);//这里写已有菜单的名称,当做父节点
        /**
         * mybatis-plus 生成器开关
         */
        contextConfig.setEntitySwitch(true);
        contextConfig.setDaoSwitch(true);
        contextConfig.setServiceSwitch(true);
        /**
         * guns 生成器开关
         */
        contextConfig.setControllerSwitch(true);
        contextConfig.setIndexPageSwitch(true);
        contextConfig.setAddPageSwitch(true);
        contextConfig.setEditPageSwitch(true);
        contextConfig.setJsSwitch(true);
        contextConfig.setInfoJsSwitch(true);
        contextConfig.setSqlSwitch(true);
    }
    @Override
    protected void config() {
        globalConfig();
        dataSourceConfig();
        strategyConfig();
        packageConfig();
        contextConfig();
    }
}
generator/src/main/java/com/mindant/generator/action/config/WebGeneratorConfig.java
New file
@@ -0,0 +1,99 @@
package com.mindant.generator.action.config;
import com.baomidou.mybatisplus.generator.config.rules.DbType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import com.mindant.generator.action.model.GenQo;
import com.mindant.generator.util.StrKit;
import com.mindant.generator.util.ToolUtil;
import java.io.File;
/**
 * 默认的代码生成的配置
 */
public class WebGeneratorConfig extends AbstractGeneratorConfig {
    private GenQo genQo;
    public WebGeneratorConfig(GenQo genQo) {
        this.genQo = genQo;
    }
    @Override
    protected void config() {
        /**
         * 数据库配置
         */
        dataSourceConfig.setDbType(DbType.MYSQL);
        dataSourceConfig.setDriverName("com.mysql.cj.jdbc.Driver");
        dataSourceConfig.setUsername(genQo.getUserName());
        dataSourceConfig.setPassword(genQo.getPassword());
        dataSourceConfig.setUrl(genQo.getUrl());
        /**
         * 全局配置
         */
        globalConfig.setOutputDir(genQo.getProjectPath() + File.separator + "src" + File.separator + "main" + File.separator + "java");
        globalConfig.setFileOverride(true);
        globalConfig.setEnableCache(false);
        globalConfig.setBaseResultMap(true);
        globalConfig.setBaseColumnList(true);
        globalConfig.setOpen(false);
        globalConfig.setAuthor(genQo.getAuthor());
        contextConfig.setProPackage(genQo.getProjectPackage());
        contextConfig.setCoreBasePackage(genQo.getCorePackage());
        /**
         * 生成策略
         */
        if (genQo.getIgnoreTabelPrefix() != null) {
            strategyConfig.setTablePrefix(new String[]{genQo.getIgnoreTabelPrefix()});
        }
        strategyConfig.setInclude(new String[]{genQo.getTableName()});
        strategyConfig.setNaming(NamingStrategy.underline_to_camel);
        // 是否使用Lombok简化代码
        strategyConfig.setEntityLombokModel(true);
        packageConfig.setParent(null);
        packageConfig.setEntity(genQo.getProjectPackage() + ".modular." + genQo.getModuleName() + ".entity");
        packageConfig.setMapper(genQo.getProjectPackage() + ".modular." + genQo.getModuleName() + ".mapper");
        packageConfig.setXml(genQo.getProjectPackage() + ".modular." + genQo.getModuleName() + ".mapper.mapping");
        /**
         * 业务代码配置
         */
        // 数据库名
        contextConfig.setDbName(genQo.getDbName());
        contextConfig.setBizChName(genQo.getBizName());
        contextConfig.setModuleName(genQo.getModuleName());
        contextConfig.setProjectPath(genQo.getProjectPath());//写自己项目的绝对路径
        if(ToolUtil.isEmpty(genQo.getIgnoreTabelPrefix())){
            String entityName = StrKit.toCamelCase(genQo.getTableName());
            contextConfig.setEntityName(StrKit.firstCharToUpperCase(entityName));
            contextConfig.setBizEnName(StrKit.firstCharToLowerCase(entityName));
        }else{
            String entiyName = StrKit.toCamelCase(StrKit.removePrefix(genQo.getTableName(), genQo.getIgnoreTabelPrefix()));
            contextConfig.setEntityName(StrKit.firstCharToUpperCase(entiyName));
            contextConfig.setBizEnName(StrKit.firstCharToLowerCase(entiyName));
        }
        //这里写已有菜单的名称,当做父节点
//        sqlConfig.setParentMenuName(genQo.getParentMenuName());
        /**
         * mybatis-plus 生成器开关
         */
        contextConfig.setEntitySwitch(genQo.getEntitySwitch());
        contextConfig.setDaoSwitch(genQo.getDaoSwitch());
        contextConfig.setServiceSwitch(genQo.getServiceSwitch());
        /**
         * guns 生成器开关
         */
        contextConfig.setControllerSwitch(genQo.getControllerSwitch());
        contextConfig.setIndexPageSwitch(genQo.getIndexPageSwitch());
        contextConfig.setAddPageSwitch(genQo.getAddPageSwitch());
        contextConfig.setEditPageSwitch(genQo.getEditPageSwitch());
        contextConfig.setJsSwitch(genQo.getJsSwitch());
        contextConfig.setInfoJsSwitch(genQo.getInfoJsSwitch());
        contextConfig.setSqlSwitch( false);
    }
}
generator/src/main/java/com/mindant/generator/action/model/GenQo.java
New file
@@ -0,0 +1,310 @@
package com.mindant.generator.action.model;
/**
 * 代码生成的查询参数
 *
 * @author fengshuonan
 * @date 2017-11-30-下午2:05
 */
public class GenQo {
    /**
     * 数据库名
     */
    private String dbName;
    /**
     * 数据库账号
     */
    private String userName;
    /**
     * 数据库密码
     */
    private String password;
    /**
     * 数据库url
     */
    private String url;
    /**
     * 项目地址
     */
    private String projectPath;
    /**
     * 作者
     */
    private String author;
    /**
     * 项目的包
     */
    private String projectPackage;
    /**
     * 核心模块的包
     */
    private String corePackage;
    /**
     * 表名称
     */
    private String tableName;
    /**
     * 忽略的表前缀
     */
    private String ignoreTabelPrefix;
    /**
     * 业务名称
     */
    private String bizName;
    /**
     * 模块名
     */
    private String moduleName;
    /**
     * 父级菜单名称
     */
    private String parentMenuName;
    /**
     * 是否生成控制器代码开关
     */
    private Boolean controllerSwitch = false;
    /**
     * 主页
     */
    private Boolean indexPageSwitch = false;
    /**
     * 添加页面
     */
    private Boolean addPageSwitch = false;
    /**
     * 编辑页面
     */
    private Boolean editPageSwitch = false;
    /**
     * 主页的js
     */
    private Boolean jsSwitch = false;
    /**
     * 详情页面js
     */
    private Boolean infoJsSwitch = false;
    /**
     * dao的开关
     */
    private Boolean daoSwitch = false;
    /**
     * service
     */
    private Boolean serviceSwitch = false;
    /**
     * 生成实体的开关
     */
    private Boolean entitySwitch = false;
    /**
     * 生成sql的开关
     */
    private Boolean sqlSwitch = false;
    public String getDbName() {
        return dbName;
    }
    public void setDbName(String dbName) {
        this.dbName = dbName;
    }
    public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    public String getUrl() {
        return url;
    }
    public void setUrl(String url) {
        this.url = url;
    }
    public String getProjectPath() {
        return projectPath;
    }
    public void setProjectPath(String projectPath) {
        this.projectPath = projectPath;
    }
    public String getAuthor() {
        return author;
    }
    public void setAuthor(String author) {
        this.author = author;
    }
    public String getCorePackage() {
        return corePackage;
    }
    public void setCorePackage(String corePackage) {
        this.corePackage = corePackage;
    }
    public String getProjectPackage() {
        return projectPackage;
    }
    public void setProjectPackage(String projectPackage) {
        this.projectPackage = projectPackage;
    }
    public String getTableName() {
        return tableName;
    }
    public void setTableName(String tableName) {
        this.tableName = tableName;
    }
    public String getIgnoreTabelPrefix() {
        return ignoreTabelPrefix;
    }
    public void setIgnoreTabelPrefix(String ignoreTabelPrefix) {
        this.ignoreTabelPrefix = ignoreTabelPrefix;
    }
    public String getBizName() {
        return bizName;
    }
    public void setBizName(String bizName) {
        this.bizName = bizName;
    }
    public String getModuleName() {
        return moduleName;
    }
    public void setModuleName(String moduleName) {
        this.moduleName = moduleName;
    }
    public Boolean getControllerSwitch() {
        return controllerSwitch;
    }
    public void setControllerSwitch(Boolean controllerSwitch) {
        this.controllerSwitch = controllerSwitch;
    }
    public Boolean getIndexPageSwitch() {
        return indexPageSwitch;
    }
    public void setIndexPageSwitch(Boolean indexPageSwitch) {
        this.indexPageSwitch = indexPageSwitch;
    }
    public Boolean getAddPageSwitch() {
        return addPageSwitch;
    }
    public void setAddPageSwitch(Boolean addPageSwitch) {
        this.addPageSwitch = addPageSwitch;
    }
    public Boolean getEditPageSwitch() {
        return editPageSwitch;
    }
    public void setEditPageSwitch(Boolean editPageSwitch) {
        this.editPageSwitch = editPageSwitch;
    }
    public Boolean getJsSwitch() {
        return jsSwitch;
    }
    public void setJsSwitch(Boolean jsSwitch) {
        this.jsSwitch = jsSwitch;
    }
    public Boolean getInfoJsSwitch() {
        return infoJsSwitch;
    }
    public void setInfoJsSwitch(Boolean infoJsSwitch) {
        this.infoJsSwitch = infoJsSwitch;
    }
    public Boolean getDaoSwitch() {
        return daoSwitch;
    }
    public void setDaoSwitch(Boolean daoSwitch) {
        this.daoSwitch = daoSwitch;
    }
    public Boolean getServiceSwitch() {
        return serviceSwitch;
    }
    public void setServiceSwitch(Boolean serviceSwitch) {
        this.serviceSwitch = serviceSwitch;
    }
    public Boolean getEntitySwitch() {
        return entitySwitch;
    }
    public void setEntitySwitch(Boolean entitySwitch) {
        this.entitySwitch = entitySwitch;
    }
    public Boolean getSqlSwitch() {
        return sqlSwitch;
    }
    public void setSqlSwitch(Boolean sqlSwitch) {
        this.sqlSwitch = sqlSwitch;
    }
    public String getParentMenuName() {
        return parentMenuName;
    }
    public void setParentMenuName(String parentMenuName) {
        this.parentMenuName = parentMenuName;
    }
}
generator/src/main/java/com/mindant/generator/engine/SimpleTemplateEngine.java
New file
@@ -0,0 +1,71 @@
package com.mindant.generator.engine;
import com.mindant.generator.engine.base.GunsTemplateEngine;
import com.mindant.generator.util.ToolUtil;
/**
 * 通用的模板生成引擎
 *
 * @author fengshuonan
 * @date 2017-05-09 20:32
 */
public class SimpleTemplateEngine extends GunsTemplateEngine {
    @Override
    protected void generatePageEditHtml() {
        String path = ToolUtil.format(super.getContextConfig().getProjectPath() + getPageConfig().getPageEditPathTemplate(),
                super.getContextConfig().getBizEnName(), super.getContextConfig().getBizEnName());
        generateFile(super.getContextConfig().getTemplatePrefixPath() + "/page_edit.html.btl", path);
        System.out.println("生成编辑页面成功!");
    }
    @Override
    protected void generatePageAddHtml() {
        String path = ToolUtil.format(super.getContextConfig().getProjectPath() + getPageConfig().getPageAddPathTemplate(),
                super.getContextConfig().getBizEnName(), super.getContextConfig().getBizEnName());
        generateFile(super.getContextConfig().getTemplatePrefixPath() + "/page_add.html.btl", path);
        System.out.println("生成添加页面成功!");
    }
    @Override
    protected void generatePageInfoJs() {
        String path = ToolUtil.format(super.getContextConfig().getProjectPath() + getPageConfig().getPageInfoJsPathTemplate(),
                super.getContextConfig().getBizEnName(), super.getContextConfig().getBizEnName());
        generateFile(super.getContextConfig().getTemplatePrefixPath() + "/page_info.js.btl", path);
        System.out.println("生成页面详情js成功!");
    }
    @Override
    protected void generatePageJs() {
        String path = ToolUtil.format(super.getContextConfig().getProjectPath() + getPageConfig().getPageJsPathTemplate(),
                super.getContextConfig().getBizEnName(), super.getContextConfig().getBizEnName());
        generateFile(super.getContextConfig().getTemplatePrefixPath() + "/page.js.btl", path);
        System.out.println("生成页面js成功!");
    }
    @Override
    protected void generatePageHtml() {
        String path = ToolUtil.format(super.getContextConfig().getProjectPath() + getPageConfig().getPagePathTemplate(),
                super.getContextConfig().getBizEnName(), super.getContextConfig().getBizEnName());
        generateFile(super.getContextConfig().getTemplatePrefixPath() + "/page.html.btl", path);
        System.out.println("生成页面成功!");
    }
    @Override
    protected void generateController() {
        String controllerPath = ToolUtil.format(super.getContextConfig().getProjectPath() + super.getControllerConfig().getControllerPathTemplate(),
                ToolUtil.firstLetterToUpper(super.getContextConfig().getBizEnName()));
        generateFile(super.getContextConfig().getTemplatePrefixPath() + "/Controller.java.btl", controllerPath);
        System.out.println("生成控制器成功!");
    }
    @Override
    protected void generateSqls() {
//        String path = ToolUtil.format(super.getContextConfig().getProjectPath() + super.sqlConfig.getSqlPathTemplate(),
//                ToolUtil.firstLetterToUpper(super.getContextConfig().getBizEnName()));
//        generateFile(super.getContextConfig().getTemplatePrefixPath() + "/menu_sql.sql.btl", path);
//        System.out.println("生成sql成功!");
    }
}
generator/src/main/java/com/mindant/generator/engine/base/AbstractTemplateEngine.java
New file
@@ -0,0 +1,115 @@
package com.mindant.generator.engine.base;
import com.baomidou.mybatisplus.generator.config.po.TableInfo;
import com.mindant.generator.engine.config.*;
/**
 * 模板生成父类
 *
 * @author fengshuonan
 * @date 2017-05-08 20:17
 */
public class AbstractTemplateEngine {
    protected ContextConfig contextConfig;                //全局配置
    protected ControllerConfig controllerConfig;          //控制器的配置
    protected PageConfig pageConfig;                      //页面的控制器
    protected DaoConfig daoConfig;                        //Dao配置
    protected ServiceConfig serviceConfig;                //Service配置
//    protected SqlConfig sqlConfig;                        //sql配置
    protected TableInfo tableInfo;                        //表的信息
    public void initConfig() {
        if (this.contextConfig == null) {
            this.contextConfig = new ContextConfig();
        }
        if (this.controllerConfig == null) {
            this.controllerConfig = new ControllerConfig();
        }
        if (this.pageConfig == null) {
            this.pageConfig = new PageConfig();
        }
        if (this.daoConfig == null) {
            this.daoConfig = new DaoConfig();
        }
        if (this.serviceConfig == null) {
            this.serviceConfig = new ServiceConfig();
        }
//        if (this.sqlConfig == null) {
//            this.sqlConfig = new SqlConfig();
//        }
        this.contextConfig.init();
        this.controllerConfig.setContextConfig(this.contextConfig);
        this.controllerConfig.init();
        this.serviceConfig.setContextConfig(this.contextConfig);
        this.serviceConfig.init();
        this.daoConfig.setContextConfig(this.contextConfig);
        this.daoConfig.init();
        this.pageConfig.setContextConfig(this.contextConfig);
        this.pageConfig.init();
//        this.sqlConfig.setContextConfig(this.contextConfig);
//        this.sqlConfig.init();
    }
    public PageConfig getPageConfig() {
        return pageConfig;
    }
    public void setPageConfig(PageConfig pageConfig) {
        this.pageConfig = pageConfig;
    }
    public ContextConfig getContextConfig() {
        return contextConfig;
    }
    public void setContextConfig(ContextConfig contextConfig) {
        this.contextConfig = contextConfig;
    }
    public ControllerConfig getControllerConfig() {
        return controllerConfig;
    }
    public void setControllerConfig(ControllerConfig controllerConfig) {
        this.controllerConfig = controllerConfig;
    }
    public DaoConfig getDaoConfig() {
        return daoConfig;
    }
    public void setDaoConfig(DaoConfig daoConfig) {
        this.daoConfig = daoConfig;
    }
    public ServiceConfig getServiceConfig() {
        return serviceConfig;
    }
    public void setServiceConfig(ServiceConfig serviceConfig) {
        this.serviceConfig = serviceConfig;
    }
//    public SqlConfig getSqlConfig() {
//        return sqlConfig;
//    }
//
//    public void setSqlConfig(SqlConfig sqlConfig) {
//        this.sqlConfig = sqlConfig;
//    }
    public TableInfo getTableInfo() {
        return tableInfo;
    }
    public void setTableInfo(TableInfo tableInfo) {
        this.tableInfo = tableInfo;
    }
}
generator/src/main/java/com/mindant/generator/engine/base/GunsTemplateEngine.java
New file
@@ -0,0 +1,126 @@
package com.mindant.generator.engine.base;
import com.mindant.generator.util.ToolUtil;
import com.sun.javafx.PlatformUtil;
import org.beetl.core.Configuration;
import org.beetl.core.GroupTemplate;
import org.beetl.core.Template;
import org.beetl.core.resource.ClasspathResourceLoader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Properties;
/**
 * ADI项目模板生成 引擎
 *
 * @author fengshuonan
 * @date 2017-05-07 22:15
 */
public abstract class GunsTemplateEngine extends AbstractTemplateEngine {
    private GroupTemplate groupTemplate;
    public GunsTemplateEngine() {
        initBeetlEngine();
    }
    protected void initBeetlEngine() {
        Properties properties = new Properties();
        properties.put("RESOURCE.root", "");
        properties.put("DELIMITER_STATEMENT_START", "<%");
        properties.put("DELIMITER_STATEMENT_END", "%>");
        properties.put("HTML_TAG_FLAG", "##");
        Configuration cfg = null;
        try {
            cfg = new Configuration(properties);
        } catch (IOException e) {
            e.printStackTrace();
        }
        ClasspathResourceLoader resourceLoader = new ClasspathResourceLoader();
        groupTemplate = new GroupTemplate(resourceLoader, cfg);
        groupTemplate.registerFunctionPackage("tool", new ToolUtil());
    }
    protected void configTemplate(Template template) {
        template.binding("controller", super.controllerConfig);
        template.binding("context", super.contextConfig);
        template.binding("dao", super.daoConfig);
        template.binding("service", super.serviceConfig);
//        template.binding("sqls", super.sqlConfig);
        template.binding("table", super.tableInfo);
    }
    protected void generateFile(String template, String filePath) {
        Template pageTemplate = groupTemplate.getTemplate(template);
        configTemplate(pageTemplate);
        if (PlatformUtil.isWindows()) {
            filePath = filePath.replaceAll("/+|\\\\+", "\\\\");
        } else {
            filePath = filePath.replaceAll("/+|\\\\+", "/");
        }
        File file = new File(filePath);
        File parentFile = file.getParentFile();
        if (!parentFile.exists()) {
            parentFile.mkdirs();
        }
        FileOutputStream fileOutputStream = null;
        try {
            fileOutputStream = new FileOutputStream(file);
            pageTemplate.renderTo(fileOutputStream);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } finally {
            try {
                fileOutputStream.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    public void start() {
        //配置之间的相互依赖
        super.initConfig();
        //生成模板
        if (super.contextConfig.getControllerSwitch()) {
            generateController();
        }
        if (super.contextConfig.getIndexPageSwitch()) {
            generatePageHtml();
        }
        if (super.contextConfig.getAddPageSwitch()) {
            generatePageAddHtml();
        }
        if (super.contextConfig.getEditPageSwitch()) {
            generatePageEditHtml();
        }
        if (super.contextConfig.getJsSwitch()) {
            generatePageJs();
        }
        if (super.contextConfig.getInfoJsSwitch()) {
            generatePageInfoJs();
        }
        if (super.contextConfig.getSqlSwitch()) {
            generateSqls();
        }
    }
    protected abstract void generatePageEditHtml();
    protected abstract void generatePageAddHtml();
    protected abstract void generatePageInfoJs();
    protected abstract void generatePageJs();
    protected abstract void generatePageHtml();
    protected abstract void generateController();
    protected abstract void generateSqls();
}
generator/src/main/java/com/mindant/generator/engine/config/ContextConfig.java
New file
@@ -0,0 +1,223 @@
package com.mindant.generator.engine.config;
import com.mindant.generator.util.ToolUtil;
/**
 * 全局配置
 *
 * @author fengshuonan
 * @date 2017-05-08 20:21
 */
public class ContextConfig {
    private String templatePrefixPath = "gunsTemplate/advanced";
    private String projectPath = "D:\\ideaSpace\\guns";//模板输出的项目目录
    private String dbName;   //数据库名称
    private String bizChName;   //业务名称
    private String bizEnName;   //业务英文名称
    private String bizEnBigName;//业务英文名称(大写)
    private String moduleName = "system";  //模块名称
    private String proPackage = "com.mindant.admin";
    private String coreBasePackage = "com.mindant.core";
    private String modelPackageName = "com.mindant.modular." + moduleName + ".entity";        //model的包名
    private String modelMapperPackageName = "com.mindant.modular." + moduleName + ".dao";    //model的dao
    private String entityName;              //实体的名称
    private Boolean controllerSwitch = true;    //是否生成控制器代码开关
    private Boolean indexPageSwitch = true;     //主页
    private Boolean addPageSwitch = true;       //添加页面
    private Boolean editPageSwitch = true;      //编辑页面
    private Boolean jsSwitch = true;            //js
    private Boolean infoJsSwitch = true;        //详情页面js
    private Boolean daoSwitch = true;           //dao
    private Boolean serviceSwitch = true;       //service
    private Boolean entitySwitch = true;        //生成实体的开关
    private Boolean sqlSwitch = true;           //生成sql的开关
    public void init() {
        if (entityName == null) {
            entityName = bizEnBigName;
        }
        modelPackageName = proPackage + "." + "modular." + moduleName +".entity" ;
        modelMapperPackageName = proPackage + "." + "modular." + moduleName + ".dao";
    }
    public String getDbName() {
        return dbName;
    }
    public void setDbName(String dbName) {
        this.dbName = dbName;
    }
    public String getBizEnBigName() {
        return bizEnBigName;
    }
    public void setBizEnBigName(String bizEnBigName) {
        this.bizEnBigName = bizEnBigName;
    }
    public String getBizChName() {
        return bizChName;
    }
    public void setBizChName(String bizChName) {
        this.bizChName = bizChName;
    }
    public String getBizEnName() {
        return bizEnName;
    }
    public void setBizEnName(String bizEnName) {
        this.bizEnName = bizEnName;
        this.bizEnBigName = ToolUtil.firstLetterToUpper(this.bizEnName);
    }
    public String getProjectPath() {
        return projectPath;
    }
    public void setProjectPath(String projectPath) {
        this.projectPath = projectPath;
    }
    public String getModuleName() {
        return moduleName;
    }
    public void setModuleName(String moduleName) {
        this.moduleName = moduleName;
    }
    public Boolean getControllerSwitch() {
        return controllerSwitch;
    }
    public void setControllerSwitch(Boolean controllerSwitch) {
        this.controllerSwitch = controllerSwitch;
    }
    public Boolean getIndexPageSwitch() {
        return indexPageSwitch;
    }
    public void setIndexPageSwitch(Boolean indexPageSwitch) {
        this.indexPageSwitch = indexPageSwitch;
    }
    public Boolean getAddPageSwitch() {
        return addPageSwitch;
    }
    public void setAddPageSwitch(Boolean addPageSwitch) {
        this.addPageSwitch = addPageSwitch;
    }
    public Boolean getEditPageSwitch() {
        return editPageSwitch;
    }
    public void setEditPageSwitch(Boolean editPageSwitch) {
        this.editPageSwitch = editPageSwitch;
    }
    public Boolean getJsSwitch() {
        return jsSwitch;
    }
    public void setJsSwitch(Boolean jsSwitch) {
        this.jsSwitch = jsSwitch;
    }
    public Boolean getInfoJsSwitch() {
        return infoJsSwitch;
    }
    public void setInfoJsSwitch(Boolean infoJsSwitch) {
        this.infoJsSwitch = infoJsSwitch;
    }
    public Boolean getDaoSwitch() {
        return daoSwitch;
    }
    public void setDaoSwitch(Boolean daoSwitch) {
        this.daoSwitch = daoSwitch;
    }
    public Boolean getServiceSwitch() {
        return serviceSwitch;
    }
    public void setServiceSwitch(Boolean serviceSwitch) {
        this.serviceSwitch = serviceSwitch;
    }
    public String getTemplatePrefixPath() {
        return templatePrefixPath;
    }
    public void setTemplatePrefixPath(String templatePrefixPath) {
        this.templatePrefixPath = templatePrefixPath;
    }
    public String getModelPackageName() {
        return modelPackageName;
    }
    public void setModelPackageName(String modelPackageName) {
        this.modelPackageName = modelPackageName;
    }
    public String getEntityName() {
        return entityName;
    }
    public void setEntityName(String entityName) {
        this.entityName = entityName;
    }
    public String getModelMapperPackageName() {
        return modelMapperPackageName;
    }
    public void setModelMapperPackageName(String modelMapperPackageName) {
        this.modelMapperPackageName = modelMapperPackageName;
    }
    public Boolean getEntitySwitch() {
        return entitySwitch;
    }
    public void setEntitySwitch(Boolean entitySwitch) {
        this.entitySwitch = entitySwitch;
    }
    public Boolean getSqlSwitch() {
        return sqlSwitch;
    }
    public void setSqlSwitch(Boolean sqlSwitch) {
        this.sqlSwitch = sqlSwitch;
    }
    public String getProPackage() {
        return proPackage;
    }
    public void setProPackage(String proPackage) {
        this.proPackage = proPackage;
    }
    public String getCoreBasePackage() {
        return coreBasePackage;
    }
    public void setCoreBasePackage(String coreBasePackage) {
        this.coreBasePackage = coreBasePackage;
    }
}
generator/src/main/java/com/mindant/generator/engine/config/ControllerConfig.java
New file
@@ -0,0 +1,61 @@
package com.mindant.generator.engine.config;
import java.util.ArrayList;
import java.util.List;
/**
 * 控制器模板生成的配置
 *
 * @author fengshuonan
 * @date 2017-05-07 22:12
 */
public class ControllerConfig {
    private ContextConfig contextConfig;
    private String controllerPathTemplate;
    private String packageName;//包名称
    private List<String> imports;//所引入的包
    public void init() {
        ArrayList<String> imports = new ArrayList<>();
        imports.add(contextConfig.getModelPackageName() + "." + contextConfig.getEntityName());
        imports.add(contextConfig.getProPackage() + ".modular." + contextConfig.getModuleName() + ".service" + ".I" + contextConfig.getEntityName() + "Service");
        this.imports = imports;
        this.packageName = contextConfig.getProPackage() + ".modular." + contextConfig.getModuleName() + ".controller";
        this.controllerPathTemplate = "\\src\\main\\java\\"+contextConfig.getProPackage().replaceAll("\\.","\\\\")+"\\modular\\" + contextConfig.getModuleName() + "\\controller\\{}Controller.java";
    }
    public String getPackageName() {
        return packageName;
    }
    public void setPackageName(String packageName) {
        this.packageName = packageName;
    }
    public List<String> getImports() {
        return imports;
    }
    public void setImports(List<String> imports) {
        this.imports = imports;
    }
    public String getControllerPathTemplate() {
        return controllerPathTemplate;
    }
    public void setControllerPathTemplate(String controllerPathTemplate) {
        this.controllerPathTemplate = controllerPathTemplate;
    }
    public ContextConfig getContextConfig() {
        return contextConfig;
    }
    public void setContextConfig(ContextConfig contextConfig) {
        this.contextConfig = contextConfig;
    }
}
generator/src/main/java/com/mindant/generator/engine/config/DaoConfig.java
New file
@@ -0,0 +1,55 @@
package com.mindant.generator.engine.config;
/**
 * Dao模板生成的配置
 *
 * @author fengshuonan
 * @date 2017-05-07 22:12
 */
public class DaoConfig {
    private ContextConfig contextConfig;
    private String daoPathTemplate;
    private String xmlPathTemplate;
    private String packageName;
    public void init() {
        this.daoPathTemplate = "\\src\\main\\java\\" + contextConfig.getProPackage().replaceAll("\\.", "\\\\") + "\\modular\\" + contextConfig.getModuleName() + "\\dao\\{}Dao.java";
        this.xmlPathTemplate = "\\src\\main\\java\\" + contextConfig.getProPackage().replaceAll("\\.", "\\\\") + "\\modular\\" + contextConfig.getModuleName() + "\\dao\\mapping\\{}Dao.xml";
        this.packageName = contextConfig.getProPackage() + ".modular." + contextConfig.getModuleName() + ".mapper";
    }
    public String getPackageName() {
        return packageName;
    }
    public void setPackageName(String packageName) {
        this.packageName = packageName;
    }
    public String getDaoPathTemplate() {
        return daoPathTemplate;
    }
    public void setDaoPathTemplate(String daoPathTemplate) {
        this.daoPathTemplate = daoPathTemplate;
    }
    public String getXmlPathTemplate() {
        return xmlPathTemplate;
    }
    public void setXmlPathTemplate(String xmlPathTemplate) {
        this.xmlPathTemplate = xmlPathTemplate;
    }
    public ContextConfig getContextConfig() {
        return contextConfig;
    }
    public void setContextConfig(ContextConfig contextConfig) {
        this.contextConfig = contextConfig;
    }
}
generator/src/main/java/com/mindant/generator/engine/config/Menu.java
New file
@@ -0,0 +1,89 @@
package com.mindant.generator.engine.config;
import com.baomidou.mybatisplus.activerecord.Model;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.enums.IdType;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
/**
 * <p>
 * 菜单表
 * </p>
 *
 * @author stylefeng
 * @since 2017-07-11
 */
@Data
@Accessors( chain = true)
public class Menu extends Model<Menu> {
    private static final long serialVersionUID = 1L;
    /**
     * 主键id
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;
    /**
     * 数据库名
     */
    private String dbName;
    /**
     * 菜单编号
     */
    private String code;
    /**
     * 菜单父编号
     */
    @TableField( "p_code")
    private String pCode;
    /**
     * 当前菜单的所有父菜单编号
     */
    @TableField( "p_codes")
    private String pCodes;
    /**
     * 菜单名称
     */
    private String name;
    /**
     * 菜单图标
     */
    private String icon;
    /**
     * url地址
     */
    private String url;
    /**
     * 菜单排序号
     */
    private Integer num;
    /**
     * 菜单层级
     */
    private Integer levels;
    /**
     * 是否是菜单(1:是  0:不是)
     */
    @TableField( "is_menu")
    private Integer isMenu;
    /**
     * 备注
     */
    private String tips;
    /**
     * 菜单状态 :  1:启用   0:不启用
     */
    private Integer status;
    @Override
    protected Serializable pkVal() {
        return this.id;
    }
}
generator/src/main/java/com/mindant/generator/engine/config/PageConfig.java
New file
@@ -0,0 +1,74 @@
package com.mindant.generator.engine.config;
/**
 * 页面 模板生成的配置
 *
 * @author fengshuonan
 * @date 2017-05-07 22:12
 */
public class PageConfig {
    private ContextConfig contextConfig;
    private String pagePathTemplate;
    private String pageAddPathTemplate;
    private String pageEditPathTemplate;
    private String pageJsPathTemplate;
    private String pageInfoJsPathTemplate;
    public void init() {
        pagePathTemplate = "\\src\\main\\webapp\\WEB-INF\\view\\" + contextConfig.getModuleName() + "\\{}\\{}.html";
        pageAddPathTemplate = "\\src\\main\\webapp\\WEB-INF\\view\\" + contextConfig.getModuleName() + "\\{}\\{}_add.html";
        pageEditPathTemplate = "\\src\\main\\webapp\\WEB-INF\\view\\" + contextConfig.getModuleName() + "\\{}\\{}_edit.html";
        pageJsPathTemplate = "\\src\\main\\webapp\\static\\modular\\" + contextConfig.getModuleName() + "\\{}\\{}.js";
        pageInfoJsPathTemplate = "\\src\\main\\webapp\\static\\modular\\" + contextConfig.getModuleName() + "\\{}\\{}_info.js";
    }
    public String getPagePathTemplate() {
        return pagePathTemplate;
    }
    public void setPagePathTemplate(String pagePathTemplate) {
        this.pagePathTemplate = pagePathTemplate;
    }
    public String getPageJsPathTemplate() {
        return pageJsPathTemplate;
    }
    public void setPageJsPathTemplate(String pageJsPathTemplate) {
        this.pageJsPathTemplate = pageJsPathTemplate;
    }
    public String getPageAddPathTemplate() {
        return pageAddPathTemplate;
    }
    public void setPageAddPathTemplate(String pageAddPathTemplate) {
        this.pageAddPathTemplate = pageAddPathTemplate;
    }
    public String getPageEditPathTemplate() {
        return pageEditPathTemplate;
    }
    public void setPageEditPathTemplate(String pageEditPathTemplate) {
        this.pageEditPathTemplate = pageEditPathTemplate;
    }
    public String getPageInfoJsPathTemplate() {
        return pageInfoJsPathTemplate;
    }
    public void setPageInfoJsPathTemplate(String pageInfoJsPathTemplate) {
        this.pageInfoJsPathTemplate = pageInfoJsPathTemplate;
    }
    public ContextConfig getContextConfig() {
        return contextConfig;
    }
    public void setContextConfig(ContextConfig contextConfig) {
        this.contextConfig = contextConfig;
    }
}
generator/src/main/java/com/mindant/generator/engine/config/ServiceConfig.java
New file
@@ -0,0 +1,91 @@
package com.mindant.generator.engine.config;
import java.util.ArrayList;
import java.util.List;
/**
 * Service模板生成的配置
 *
 * @author fengshuonan
 * @date 2017-05-07 22:12
 */
public class ServiceConfig {
    private ContextConfig contextConfig;
    private String servicePathTemplate;
    private String serviceImplPathTemplate;
    private String packageName;
    private List<String> serviceInterfaceImports;
    private List<String> serviceImplImports;
    public void init() {
        ArrayList<String> imports = new ArrayList<>();
        imports.add("org.springframework.stereotype.Service");
        imports.add("com.baomidou.mybatisplus.service.impl.ServiceImpl");
        imports.add(contextConfig.getModelPackageName() + "." + contextConfig.getEntityName());
        imports.add(contextConfig.getModelMapperPackageName() + "." + contextConfig.getEntityName() + "Mapper");
        imports.add(contextConfig.getProPackage() + ".modular." + contextConfig.getModuleName() + ".service.I" + contextConfig.getBizEnBigName() + "Service");
        this.serviceImplImports = imports;
        ArrayList<String> interfaceImports = new ArrayList<>();
        interfaceImports.add("com.baomidou.mybatisplus.service.IService");
        interfaceImports.add(contextConfig.getModelPackageName() + "." + contextConfig.getEntityName());
        this.serviceInterfaceImports = interfaceImports;
        this.servicePathTemplate = "\\src\\main\\java\\" + contextConfig.getProPackage().replaceAll("\\.", "\\\\") + "\\modular\\" + contextConfig.getModuleName() + "\\service\\I{}Service.java";
        this.serviceImplPathTemplate = "\\src\\main\\java\\" + contextConfig.getProPackage().replaceAll("\\.", "\\\\") + "\\modular\\" + contextConfig.getModuleName() + "\\service\\impl\\{}ServiceImpl.java";
        this.packageName = contextConfig.getProPackage() + ".modular." + contextConfig.getModuleName() + ".service";
    }
    public String getServicePathTemplate() {
        return servicePathTemplate;
    }
    public void setServicePathTemplate(String servicePathTemplate) {
        this.servicePathTemplate = servicePathTemplate;
    }
    public String getPackageName() {
        return packageName;
    }
    public void setPackageName(String packageName) {
        this.packageName = packageName;
    }
    public String getServiceImplPathTemplate() {
        return serviceImplPathTemplate;
    }
    public void setServiceImplPathTemplate(String serviceImplPathTemplate) {
        this.serviceImplPathTemplate = serviceImplPathTemplate;
    }
    public List<String> getServiceImplImports() {
        return serviceImplImports;
    }
    public void setServiceImplImports(List<String> serviceImplImports) {
        this.serviceImplImports = serviceImplImports;
    }
    public ContextConfig getContextConfig() {
        return contextConfig;
    }
    public void setContextConfig(ContextConfig contextConfig) {
        this.contextConfig = contextConfig;
    }
    public List<String> getServiceInterfaceImports() {
        return serviceInterfaceImports;
    }
    public void setServiceInterfaceImports(List<String> serviceInterfaceImports) {
        this.serviceInterfaceImports = serviceInterfaceImports;
    }
}
generator/src/main/java/com/mindant/generator/exception/GunsException.java
New file
@@ -0,0 +1,46 @@
package com.mindant.generator.exception;
/**
 * 封装guns的异常
 *
 * @author fengshuonan
 * @Date 2017/12/28 下午10:32
 */
public class GunsException extends RuntimeException {
    private Integer code;
    private String message;
    public GunsException(ServiceExceptionEnum serviceExceptionEnum) {
        this.code = serviceExceptionEnum.getCode();
        this.message = serviceExceptionEnum.getMessage();
    }
    public GunsException(String message) {
        this.code = GunsExceptionEnum.SERVER_ERROR.getCode();
        this.message = message;
    }
    public GunsException(Integer code, String message) {
        this.code = code;
        this.message = message;
    }
    public Integer getCode() {
        return code;
    }
    public void setCode(Integer code) {
        this.code = code;
    }
    @Override
    public String getMessage() {
        return message;
    }
    public void setMessage(String message) {
        this.message = message;
    }
}
generator/src/main/java/com/mindant/generator/exception/GunsExceptionEnum.java
New file
@@ -0,0 +1,60 @@
package com.mindant.generator.exception;
/**
 * Guns异常枚举
 *
 * @author fengshuonan
 * @Date 2017/12/28 下午10:33
 */
public enum GunsExceptionEnum implements ServiceExceptionEnum {
    /**
     * 其他
     */
    INVLIDE_DATE_STRING(400, "输入日期格式不对"),
    /**
     * 其他
     */
    WRITE_ERROR(500, "渲染界面错误"),
    /**
     * 文件上传
     */
    FILE_READING_ERROR(400, "FILE_READING_ERROR!"),
    FILE_NOT_FOUND(400, "FILE_NOT_FOUND!"),
    /**
     * 错误的请求
     */
    REQUEST_NULL(400, "请求有错误"),
    CUSTOMER_NOT_EXITS(4000, "客服不存在"),
    SERVER_ERROR(500, "服务器异常");
    GunsExceptionEnum(int code, String message) {
        this.code = code;
        this.message = message;
    }
    private Integer code;
    private String message;
    @Override
    public Integer getCode() {
        return code;
    }
    public void setCode(Integer code) {
        this.code = code;
    }
    @Override
    public String getMessage() {
        return message;
    }
    public void setMessage(String message) {
        this.message = message;
    }
}
generator/src/main/java/com/mindant/generator/exception/ServiceExceptionEnum.java
New file
@@ -0,0 +1,20 @@
package com.mindant.generator.exception;
/**
 * 抽象接口
 *
 * @author fengshuonan
 * @date 2017-12-28-下午10:27
 */
public interface ServiceExceptionEnum {
    /**
     * 获取异常编码
     */
    Integer getCode();
    /**
     * 获取异常信息
     */
    String getMessage();
}
generator/src/main/java/com/mindant/generator/util/CollectionKit.java
New file
@@ -0,0 +1,781 @@
package com.mindant.generator.util;
import java.lang.reflect.Array;
import java.util.*;
import java.util.Map.Entry;
/**
 * 集合相关工具类,包括数组
 *
 * @author xiaoleilu
 *
 */
public class CollectionKit {
    private CollectionKit() {
        // 静态类不可实例化
    }
    /**
     * 以 conjunction 为分隔符将集合转换为字符串
     *
     * @param <T> 被处理的集合
     * @param collection 集合
     * @param conjunction 分隔符
     * @return 连接后的字符串
     */
    public static <T> String join(Iterable<T> collection, String conjunction) {
        StringBuilder sb = new StringBuilder();
        boolean isFirst = true;
        for (T item : collection) {
            if (isFirst) {
                isFirst = false;
            } else {
                sb.append(conjunction);
            }
            sb.append(item);
        }
        return sb.toString();
    }
    /**
     * 以 conjunction 为分隔符将数组转换为字符串
     *
     * @param <T> 被处理的集合
     * @param array 数组
     * @param conjunction 分隔符
     * @return 连接后的字符串
     */
    public static <T> String join(T[] array, String conjunction) {
        StringBuilder sb = new StringBuilder();
        boolean isFirst = true;
        for (T item : array) {
            if (isFirst) {
                isFirst = false;
            } else {
                sb.append(conjunction);
            }
            sb.append(item);
        }
        return sb.toString();
    }
    /**
     * 将多个集合排序并显示不同的段落(分页)
     * @param pageNo 页码
     * @param numPerPage 每页的条目数
     * @param comparator 比较器
     * @param colls 集合数组
     * @return 分业后的段落内容
     */
//    @SafeVarargs
//    public static <T> List<T> sortPageAll2(int pageNo, int numPerPage, Comparator<T> comparator, Collection<T>... colls) {
//        BoundedPriorityQueue<T> queue = new BoundedPriorityQueue<T>(pageNo * numPerPage);
//        for (Collection<T> coll : colls) {
//            queue.addAll(coll);
//        }
//
//        //第一页且数目少于第一页显示的数目
//        if(pageNo <=1 && queue.size() <= numPerPage) {
//            return queue.toList();
//        }
//
//        final int[] startEnd = PageKit.transToStartEnd(pageNo, numPerPage);
//        return queue.toList().subList(startEnd[0], startEnd[1]);
//    }
    /**
     * 将Set排序(根据Entry的值)
     *
     * @param set 被排序的Set
     * @return 排序后的Set
     */
    public static List<Entry<Long, Long>> sortEntrySetToList(Set<Entry<Long, Long>> set) {
        List<Entry<Long, Long>> list = new LinkedList<Entry<Long, Long>>(set);
        Collections.sort(list, new Comparator<Entry<Long, Long>>(){
            @Override
            public int compare(Entry<Long, Long> o1, Entry<Long, Long> o2) {
                if (o1.getValue() > o2.getValue()){
                    return 1;
                }
                if (o1.getValue() < o2.getValue()){
                    return -1;
                }
                return 0;
            }
        });
        return list;
    }
    /**
     * 切取部分数据
     *
     * @param <T> 集合元素类型
     * @param surplusAlaDatas 原数据
     * @param partSize 每部分数据的长度
     * @return 切取出的数据或null
     */
    public static <T> List<T> popPart(Stack<T> surplusAlaDatas, int partSize) {
        if (surplusAlaDatas == null || surplusAlaDatas.size() <= 0){
            return null;
        }
        final List<T> currentAlaDatas = new ArrayList<T>();
        int size = surplusAlaDatas.size();
        // 切割
        if (size > partSize) {
            for (int i = 0; i < partSize; i++) {
                currentAlaDatas.add(surplusAlaDatas.pop());
            }
        } else {
            for (int i = 0; i < size; i++) {
                currentAlaDatas.add(surplusAlaDatas.pop());
            }
        }
        return currentAlaDatas;
    }
    /**
     * 切取部分数据
     *
     * @param <T> 集合元素类型
     * @param surplusAlaDatas 原数据
     * @param partSize 每部分数据的长度
     * @return 切取出的数据或null
     */
    public static <T> List<T> popPart(Deque<T> surplusAlaDatas, int partSize) {
        if (surplusAlaDatas == null || surplusAlaDatas.size() <= 0){
            return null;
        }
        final List<T> currentAlaDatas = new ArrayList<T>();
        int size = surplusAlaDatas.size();
        // 切割
        if (size > partSize) {
            for (int i = 0; i < partSize; i++) {
                currentAlaDatas.add(surplusAlaDatas.pop());
            }
        } else {
            for (int i = 0; i < size; i++) {
                currentAlaDatas.add(surplusAlaDatas.pop());
            }
        }
        return currentAlaDatas;
    }
    /**
     * 新建一个HashMap
     *
     * @return HashMap对象
     */
    public static <T, K> HashMap<T, K> newHashMap() {
        return new HashMap<T, K>();
    }
    /**
     * 新建一个HashMap
     * @param size 初始大小,由于默认负载因子0.75,传入的size会实际初始大小为size / 0.75
     * @return HashMap对象
     */
    public static <T, K> HashMap<T, K> newHashMap(int size) {
        return new HashMap<T, K>((int)(size / 0.75));
    }
    /**
     * 新建一个HashSet
     *
     * @return HashSet对象
     */
    public static <T> HashSet<T> newHashSet() {
        return new HashSet<T>();
    }
    /**
     * 新建一个HashSet
     *
     * @return HashSet对象
     */
    @SafeVarargs
    public static <T> HashSet<T> newHashSet(T... ts) {
        HashSet<T> set = new HashSet<T>();
        for (T t : ts) {
            set.add(t);
        }
        return set;
    }
    /**
     * 新建一个ArrayList
     *
     * @return ArrayList对象
     */
    public static <T> ArrayList<T> newArrayList() {
        return new ArrayList<T>();
    }
    /**
     * 新建一个ArrayList
     *
     * @return ArrayList对象
     */
    @SafeVarargs
    public static <T> ArrayList<T> newArrayList(T... values) {
        return new ArrayList<T>(Arrays.asList(values));
    }
    /**
     * 将新元素添加到已有数组中<br/>
     * 添加新元素会生成一个新的数组,不影响原数组
     *
     * @param buffer 已有数组
     * @param newElement 新元素
     * @return 新数组
     */
    public static <T> T[] append(T[] buffer, T newElement) {
        T[] t = resize(buffer, buffer.length + 1, newElement.getClass());
        t[buffer.length] = newElement;
        return t;
    }
    /**
     * 生成一个新的重新设置大小的数组
     *
     * @param buffer 原数组
     * @param newSize 新的数组大小
     * @param componentType 数组元素类型
     * @return 调整后的新数组
     */
    public static <T> T[] resize(T[] buffer, int newSize, Class<?> componentType) {
        T[] newArray = newArray(componentType, newSize);
        System.arraycopy(buffer, 0, newArray, 0, buffer.length >= newSize ? newSize : buffer.length);
        return newArray;
    }
    /**
     * 新建一个空数组
     * @param componentType 元素类型
     * @param newSize 大小
     * @return 空数组
     */
    @SuppressWarnings("unchecked")
    public static <T> T[] newArray(Class<?> componentType, int newSize) {
        return (T[]) Array.newInstance(componentType, newSize);
    }
    /**
     * 生成一个新的重新设置大小的数组<br/>
     * 新数组的类型为原数组的类型
     *
     * @param buffer 原数组
     * @param newSize 新的数组大小
     * @return 调整后的新数组
     */
    public static <T> T[] resize(T[] buffer, int newSize) {
        return resize(buffer, newSize, buffer.getClass().getComponentType());
    }
    /**
     * 将多个数组合并在一起<br>
     * 忽略null的数组
     *
     * @param arrays 数组集合
     * @return 合并后的数组
     */
    @SafeVarargs
    public static <T> T[] addAll(T[]... arrays) {
        if (arrays.length == 1) {
            return arrays[0];
        }
        int length = 0;
        for (T[] array : arrays) {
            if(array == null) {
                continue;
            }
            length += array.length;
        }
        T[] result = newArray(arrays.getClass().getComponentType().getComponentType(), length);
        length = 0;
        for (T[] array : arrays) {
            if(array == null) {
                continue;
            }
            System.arraycopy(array, 0, result, length, array.length);
            length += array.length;
        }
        return result;
    }
    /**
     * 克隆数组
     * @param array 被克隆的数组
     * @return 新数组
     */
    public static <T> T[] clone(T[] array) {
        if (array == null) {
            return null;
        }
        return array.clone();
    }
    /**
     * 生成一个数字列表<br>
     * 自动判定正序反序
     * @param excludedEnd 结束的数字(不包含)
     * @return 数字列表
     */
    public static int[] range(int excludedEnd) {
        return range(0, excludedEnd, 1);
    }
    /**
     * 生成一个数字列表<br>
     * 自动判定正序反序
     * @param includedStart 开始的数字(包含)
     * @param excludedEnd 结束的数字(不包含)
     * @return 数字列表
     */
    public static int[] range(int includedStart, int excludedEnd) {
        return range(includedStart, excludedEnd, 1);
    }
    /**
     * 生成一个数字列表<br>
     * 自动判定正序反序
     * @param includedStart 开始的数字(包含)
     * @param excludedEnd 结束的数字(不包含)
     * @param step 步进
     * @return 数字列表
     */
    public static int[] range(int includedStart, int excludedEnd, int step) {
        if(includedStart > excludedEnd) {
            int tmp = includedStart;
            includedStart = excludedEnd;
            excludedEnd = tmp;
        }
        if(step <=0) {
            step = 1;
        }
        int deviation = excludedEnd - includedStart;
        int length = deviation / step;
        if(deviation % step != 0) {
            length += 1;
        }
        int[] range = new int[length];
        for(int i = 0; i < length; i++) {
            range[i] = includedStart;
            includedStart += step;
        }
        return range;
    }
    /**
     * 截取数组的部分
     * @param list 被截取的数组
     * @param start 开始位置(包含)
     * @param end 结束位置(不包含)
     * @return 截取后的数组,当开始位置超过最大时,返回null
     */
    public static <T> List<T> sub(List<T> list, int start, int end) {
        if(list == null || list.isEmpty()) {
            return null;
        }
        if(start < 0) {
            start = 0;
        }
        if(end < 0) {
            end = 0;
        }
        if(start > end) {
            int tmp = start;
            start = end;
            end = tmp;
        }
        final int size = list.size();
        if(end > size) {
            if(start >= size) {
                return null;
            }
            end = size;
        }
        return list.subList(start, end);
    }
    /**
     * 截取集合的部分
     * @param list 被截取的数组
     * @param start 开始位置(包含)
     * @param end 结束位置(不包含)
     * @return 截取后的数组,当开始位置超过最大时,返回null
     */
    public static <T> List<T> sub(Collection<T> list, int start, int end) {
        if(list == null || list.isEmpty()) {
            return null;
        }
        return sub(new ArrayList<T>(list), start, end);
    }
    /**
     * 数组是否为空
     * @param array 数组
     * @return 是否为空
     */
    public static <T> boolean isEmpty(T[] array) {
        return array == null || array.length == 0;
    }
    /**
     * 数组是否为非空
     * @param array 数组
     * @return 是否为非空
     */
    public static <T> boolean isNotEmpty(T[] array) {
        return false == isEmpty(array);
    }
    /**
     * 集合是否为空
     * @param collection 集合
     * @return 是否为空
     */
    public static boolean isEmpty(Collection<?> collection) {
        return collection == null || collection.isEmpty();
    }
    /**
     * 集合是否为非空
     * @param collection 集合
     * @return 是否为非空
     */
    public static boolean isNotEmpty(Collection<?> collection) {
        return false == isEmpty(collection);
    }
    /**
     * Map是否为空
     * @param map 集合
     * @return 是否为空
     */
    public static boolean isEmpty(Map<?, ?> map) {
        return map == null || map.isEmpty();
    }
    /**
     * Map是否为非空
     * @param map 集合
     * @return 是否为非空
     */
    public static <T> boolean isNotEmpty(Map<?, ?> map) {
        return false == isEmpty(map);
    }
    /**
     * 映射键值(参考Python的zip()函数)<br>
     * 例如:<br>
     *         keys =    [a,b,c,d]<br>
     *        values = [1,2,3,4]<br>
     * 则得到的Map是 {a=1, b=2, c=3, d=4}<br>
     * 如果两个数组长度不同,则只对应最短部分
     * @param keys 键列表
     * @param values 值列表
     * @return Map
     */
    public static <T, K> Map<T, K> zip(T[] keys, K[] values) {
        if(isEmpty(keys) || isEmpty(values)) {
            return null;
        }
        final int size = Math.min(keys.length, values.length);
        final Map<T, K> map = new HashMap<T, K>((int)(size / 0.75));
        for(int i = 0; i < size; i++) {
            map.put(keys[i], values[i]);
        }
        return map;
    }
    /**
     * 映射键值(参考Python的zip()函数)<br>
     * 例如:<br>
     *         keys =    a,b,c,d<br>
     *        values = 1,2,3,4<br>
     *        delimiter = ,
     * 则得到的Map是 {a=1, b=2, c=3, d=4}<br>
     * 如果两个数组长度不同,则只对应最短部分
     * @param keys 键列表
     * @param values 值列表
     * @return Map
     */
    public static Map<String, String> zip(String keys, String values, String delimiter) {
        return zip(StrKit.split(keys, delimiter), StrKit.split(values, delimiter));
    }
    /**
     * 映射键值(参考Python的zip()函数)<br>
     * 例如:<br>
     *         keys =    [a,b,c,d]<br>
     *        values = [1,2,3,4]<br>
     * 则得到的Map是 {a=1, b=2, c=3, d=4}<br>
     * 如果两个数组长度不同,则只对应最短部分
     * @param keys 键列表
     * @param values 值列表
     * @return Map
     */
    public static <T, K> Map<T, K> zip(Collection<T> keys, Collection<K> values) {
        if(isEmpty(keys) || isEmpty(values)) {
            return null;
        }
        final List<T> keyList = new ArrayList<T>(keys);
        final List<K> valueList = new ArrayList<K>(values);
        final int size = Math.min(keys.size(), values.size());
        final Map<T, K> map = new HashMap<T, K>((int)(size / 0.75));
        for(int i = 0; i < size; i++) {
            map.put(keyList.get(i), valueList.get(i));
        }
        return map;
    }
    /**
     * 数组中是否包含元素
     * @param array 数组
     * @param value 被检查的元素
     * @return 是否包含
     */
    public static <T> boolean contains(T[] array, T value) {
        final Class<?> componetType = array.getClass().getComponentType();
        boolean isPrimitive = false;
        if(null != componetType) {
            isPrimitive = componetType.isPrimitive();
        }
        for (T t : array) {
            if(t == value) {
                return true;
            }else if(false == isPrimitive && null != value && value.equals(t)) {
                return true;
            }
        }
        return false;
    }
    /**
     * 将Entry集合转换为HashMap
     * @param entryCollection entry集合
     * @return Map
     */
    public static <T, K> HashMap<T, K> toMap(Collection<Entry<T, K>> entryCollection) {
        HashMap<T,K> map = new HashMap<T, K>();
        for (Entry<T, K> entry : entryCollection) {
            map.put(entry.getKey(), entry.getValue());
        }
        return map;
    }
    /**
     * 将集合转换为排序后的TreeSet
     * @param collection 集合
     * @param comparator 比较器
     * @return treeSet
     */
    public static <T> TreeSet<T> toTreeSet(Collection<T> collection, Comparator<T> comparator){
        final TreeSet<T> treeSet = new TreeSet<T>(comparator);
        for (T t : collection) {
            treeSet.add(t);
        }
        return treeSet;
    }
    /**
     * 排序集合
     * @param collection 集合
     * @param comparator 比较器
     * @return treeSet
     */
    public static <T> List<T> sort(Collection<T> collection, Comparator<T> comparator){
        List<T> list = new ArrayList<T>(collection);
        Collections.sort(list, comparator);
        return list;
    }
    //------------------------------------------------------------------- 基本类型的数组转换为包装类型数组
    /**
     * 将基本类型数组包装为包装类型
     * @param values 基本类型数组
     * @return 包装类型数组
     */
    public static Integer[] wrap(int... values){
        final int length = values.length;
        Integer[] array = new Integer[length];
        for(int i = 0; i < length; i++){
            array[i] = values[i];
        }
        return array;
    }
    /**
     * 将基本类型数组包装为包装类型
     * @param values 基本类型数组
     * @return 包装类型数组
     */
    public static Long[] wrap(long... values){
        final int length = values.length;
        Long[] array = new Long[length];
        for(int i = 0; i < length; i++){
            array[i] = values[i];
        }
        return array;
    }
    /**
     * 将基本类型数组包装为包装类型
     * @param values 基本类型数组
     * @return 包装类型数组
     */
    public static Character[] wrap(char... values){
        final int length = values.length;
        Character[] array = new Character[length];
        for(int i = 0; i < length; i++){
            array[i] = values[i];
        }
        return array;
    }
    /**
     * 将基本类型数组包装为包装类型
     * @param values 基本类型数组
     * @return 包装类型数组
     */
    public static Byte[] wrap(byte... values){
        final int length = values.length;
        Byte[] array = new Byte[length];
        for(int i = 0; i < length; i++){
            array[i] = values[i];
        }
        return array;
    }
    /**
     * 将基本类型数组包装为包装类型
     * @param values 基本类型数组
     * @return 包装类型数组
     */
    public static Short[] wrap(short... values){
        final int length = values.length;
        Short[] array = new Short[length];
        for(int i = 0; i < length; i++){
            array[i] = values[i];
        }
        return array;
    }
    /**
     * 将基本类型数组包装为包装类型
     * @param values 基本类型数组
     * @return 包装类型数组
     */
    public static Float[] wrap(float... values){
        final int length = values.length;
        Float[] array = new Float[length];
        for(int i = 0; i < length; i++){
            array[i] = values[i];
        }
        return array;
    }
    /**
     * 将基本类型数组包装为包装类型
     * @param values 基本类型数组
     * @return 包装类型数组
     */
    public static Double[] wrap(double... values){
        final int length = values.length;
        Double[] array = new Double[length];
        for(int i = 0; i < length; i++){
            array[i] = values[i];
        }
        return array;
    }
    /**
     * 将基本类型数组包装为包装类型
     * @param values 基本类型数组
     * @return 包装类型数组
     */
    public static Boolean[] wrap(boolean... values){
        final int length = values.length;
        Boolean[] array = new Boolean[length];
        for(int i = 0; i < length; i++){
            array[i] = values[i];
        }
        return array;
    }
    /**
     * 判定给定对象是否为数组类型
     * @param obj 对象
     * @return 是否为数组类型
     */
    public static boolean isArray(Object obj){
        return obj.getClass().isArray();
    }
    /**
     * 数组或集合转String
     *
     * @param obj 集合或数组对象
     * @return 数组字符串,与集合转字符串格式相同
     */
    public static String toString(Object obj) {
        if (null == obj) {
            return null;
        }
        if (isArray(obj)) {
            try {
                return Arrays.deepToString((Object[]) obj);
            } catch (Exception e) {
                final String className = obj.getClass().getComponentType().getName();
                switch (className) {
                    case "long":
                        return Arrays.toString((long[]) obj);
                    case "int":
                        return Arrays.toString((int[]) obj);
                    case "short":
                        return Arrays.toString((short[]) obj);
                    case "char":
                        return Arrays.toString((char[]) obj);
                    case "byte":
                        return Arrays.toString((byte[]) obj);
                    case "boolean":
                        return Arrays.toString((boolean[]) obj);
                    case "float":
                        return Arrays.toString((float[]) obj);
                    case "double":
                        return Arrays.toString((double[]) obj);
                    default:
                        try {
                            throw new Exception(e);
                        } catch (Exception exception) {
                            exception.printStackTrace();
                        }
                }
            }
        }
        return obj.toString();
    }
}
Diff truncated after the above file
generator/src/main/java/com/mindant/generator/util/DateUtil.java generator/src/main/java/com/mindant/generator/util/FileUtil.java generator/src/main/java/com/mindant/generator/util/StrKit.java generator/src/main/java/com/mindant/generator/util/ToolUtil.java generator/src/main/resources/gunsTemplate/advanced/Controller.java.btl generator/src/main/resources/gunsTemplate/advanced/entity.java.vm generator/src/main/resources/gunsTemplate/advanced/mapper.java.vm generator/src/main/resources/gunsTemplate/advanced/mapper.xml.vm generator/src/main/resources/gunsTemplate/advanced/menu_sql.sql.btl generator/src/main/resources/gunsTemplate/advanced/page.html.btl generator/src/main/resources/gunsTemplate/advanced/page.js.btl generator/src/main/resources/gunsTemplate/advanced/page_add.html.btl generator/src/main/resources/gunsTemplate/advanced/page_edit.html.btl generator/src/main/resources/gunsTemplate/advanced/page_info.js.btl generator/src/main/resources/gunsTemplate/advanced/service.java.vm generator/src/main/resources/gunsTemplate/advanced/serviceImpl.java.vm guns/.gitattributes guns/.gitignore guns/_devops/settings.xml guns/pom.xml guns/src/main/java/cn/stylefeng/guns/GunsApplication.java guns/src/main/java/cn/stylefeng/guns/GunsServletInitializer.java guns/src/main/java/cn/stylefeng/guns/config/MapperScanConfiguration.java guns/src/main/java/cn/stylefeng/guns/config/RefundConfig.java guns/src/main/java/cn/stylefeng/guns/config/SwaggerConfig.java guns/src/main/java/cn/stylefeng/guns/config/TransactionAdviceConfig.java guns/src/main/java/cn/stylefeng/guns/config/web/SpringMvcConfiguration.java guns/src/main/java/cn/stylefeng/guns/core/consts/ProjectConstants.java guns/src/main/java/cn/stylefeng/guns/core/error/CustomErrorAttributes.java guns/src/main/java/cn/stylefeng/guns/core/error/GlobalExceptionHandler.java guns/src/main/java/cn/stylefeng/guns/core/exception/BusinessException.java guns/src/main/java/cn/stylefeng/guns/core/security/AuthJwtTokenSecurityInterceptor.java guns/src/main/java/cn/stylefeng/guns/core/security/PermissionSecurityInterceptor.java guns/src/main/java/cn/stylefeng/guns/core/security/base/BaseSecurityInterceptor.java guns/src/main/java/cn/stylefeng/guns/modular/business/controller/BannerController.java guns/src/main/java/cn/stylefeng/guns/modular/business/controller/ContractRecordController.java guns/src/main/java/cn/stylefeng/guns/modular/business/controller/CounsellingInfoController.java guns/src/main/java/cn/stylefeng/guns/modular/business/controller/CounsellingOrderController.java guns/src/main/java/cn/stylefeng/guns/modular/business/controller/CounsellingOrderReservationController.java guns/src/main/java/cn/stylefeng/guns/modular/business/controller/CounsellingReservationRecordController.java guns/src/main/java/cn/stylefeng/guns/modular/business/controller/CounsellingReservationWorkController.java guns/src/main/java/cn/stylefeng/guns/modular/business/controller/CounsellingSetMealController.java guns/src/main/java/cn/stylefeng/guns/modular/business/controller/CounsellingSpecialTimeConfigController.java guns/src/main/java/cn/stylefeng/guns/modular/business/controller/CounsellingTagController.java guns/src/main/java/cn/stylefeng/guns/modular/business/controller/CounsellingTimeConfigController.java guns/src/main/java/cn/stylefeng/guns/modular/business/controller/CourseChapterController.java guns/src/main/java/cn/stylefeng/guns/modular/business/controller/CourseController.java guns/src/main/java/cn/stylefeng/guns/modular/business/controller/CourseOrderController.java guns/src/main/java/cn/stylefeng/guns/modular/business/controller/CourseStudyNoteController.java guns/src/main/java/cn/stylefeng/guns/modular/business/controller/CourseTagController.java guns/src/main/java/cn/stylefeng/guns/modular/business/controller/CourseUserLearnedController.java guns/src/main/java/cn/stylefeng/guns/modular/business/controller/CouserChapterLearningRateController.java guns/src/main/java/cn/stylefeng/guns/modular/business/controller/ExcelController.java guns/src/main/java/cn/stylefeng/guns/modular/business/controller/HelpController.java guns/src/main/java/cn/stylefeng/guns/modular/business/controller/MentalAnalysisSpecialTimeConfigController.java guns/src/main/java/cn/stylefeng/guns/modular/business/controller/MentalAnalysisTimeConfigController.java guns/src/main/java/cn/stylefeng/guns/modular/business/controller/MentalAnalysisTimeController.java guns/src/main/java/cn/stylefeng/guns/modular/business/controller/MentalTestClassController.java guns/src/main/java/cn/stylefeng/guns/modular/business/controller/MentalTestTopicController.java guns/src/main/java/cn/stylefeng/guns/modular/business/controller/OrderConsultOneController.java guns/src/main/java/cn/stylefeng/guns/modular/business/controller/OrderMentalTestController.java guns/src/main/java/cn/stylefeng/guns/modular/business/controller/PsychologicalColumnController.java guns/src/main/java/cn/stylefeng/guns/modular/business/controller/StatMentalTestController.java guns/src/main/java/cn/stylefeng/guns/modular/business/controller/StoreAppointmentController.java guns/src/main/java/cn/stylefeng/guns/modular/business/controller/SysRoleBusinessController.java guns/src/main/java/cn/stylefeng/guns/modular/business/controller/SysUserBusinessController.java guns/src/main/java/cn/stylefeng/guns/modular/business/controller/SystemSetController.java guns/src/main/java/cn/stylefeng/guns/modular/business/controller/TotalReportController.java guns/src/main/java/cn/stylefeng/guns/modular/business/controller/UploadController.java guns/src/main/java/cn/stylefeng/guns/modular/business/controller/UserManageController.java guns/src/main/java/cn/stylefeng/guns/modular/test/TestMultiTranController.java guns/src/main/java/cn/stylefeng/guns/modular/test/TestSingleTranController.java guns/src/main/java/cn/stylefeng/guns/modular/test/factory/NormalUserFactory.java guns/src/main/java/cn/stylefeng/guns/modular/test/service/GunsDbService.java guns/src/main/java/cn/stylefeng/guns/modular/test/service/OtherDbService.java guns/src/main/java/cn/stylefeng/guns/modular/test/service/TranTestService.java guns/src/main/java/cn/stylefeng/guns/utils/CrmebUtil.java guns/src/main/java/cn/stylefeng/guns/utils/ExportUtil.java guns/src/main/java/cn/stylefeng/guns/utils/ObsUtil.java guns/src/main/java/cn/stylefeng/guns/utils/UploadUtil.java guns/src/main/resources/Dockerfile guns/src/main/resources/Dockerfile-dev guns/src/main/resources/application-dev.yml guns/src/main/resources/application-local.yml guns/src/main/resources/application-prod.yml guns/src/main/resources/application.yml guns/src/main/resources/db/migration/mysql/V7.3.0_20221019_2220__init_guns.sql guns/src/main/resources/db/migration/mysql/V7.3.3_20221121_2307__add_message_url.sql guns/src/main/resources/logback-spring.xml pom.xml rest/pom.xml rest/src/main/java/cn/stylefeng/rest/RestApplication.java rest/src/main/java/cn/stylefeng/rest/RestServletInitialize.java rest/src/main/java/cn/stylefeng/rest/config/ImMessageRoutingRedisAutoConfiguration.java rest/src/main/java/cn/stylefeng/rest/config/MapperScanConfiguration.java rest/src/main/java/cn/stylefeng/rest/config/ObjectRedisAutoConfiguration.java rest/src/main/java/cn/stylefeng/rest/config/SwaggerConfig.java rest/src/main/java/cn/stylefeng/rest/config/TransactionAdviceConfig.java rest/src/main/java/cn/stylefeng/rest/config/cache/ImMessageRoutingRedisCache.java rest/src/main/java/cn/stylefeng/rest/config/cache/ObjectRedisCache.java rest/src/main/java/cn/stylefeng/rest/config/web/SpringMvcConfiguration.java rest/src/main/java/cn/stylefeng/rest/core/consts/ProjectConstants.java rest/src/main/java/cn/stylefeng/rest/core/error/CustomErrorAttributes.java rest/src/main/java/cn/stylefeng/rest/core/error/GlobalExceptionHandler.java rest/src/main/java/cn/stylefeng/rest/core/exception/BusinessException.java rest/src/main/java/cn/stylefeng/rest/core/security/AuthJwtTokenSecurityInterceptor.java rest/src/main/java/cn/stylefeng/rest/core/security/PermissionSecurityInterceptor.java rest/src/main/java/cn/stylefeng/rest/core/security/base/BaseSecurityInterceptor.java rest/src/main/java/cn/stylefeng/rest/ijpay/controller/AliPayController.java rest/src/main/java/cn/stylefeng/rest/ijpay/controller/WxPayController.java rest/src/main/java/cn/stylefeng/rest/ijpay/entity/AliPayBean.java rest/src/main/java/cn/stylefeng/rest/ijpay/entity/H5SceneInfo.java rest/src/main/java/cn/stylefeng/rest/ijpay/entity/WxPayBean.java rest/src/main/java/cn/stylefeng/rest/ijpay/entity/request/AliAppPayRequest.java rest/src/main/java/cn/stylefeng/rest/ijpay/entity/request/WxAppPayRequest.java rest/src/main/java/cn/stylefeng/rest/modular/home/controller/HomeIndexController.java rest/src/main/java/cn/stylefeng/rest/modular/home/controller/HomePsychologicalColumnController.java rest/src/main/java/cn/stylefeng/rest/modular/home/controller/PublicController.java rest/src/main/java/cn/stylefeng/rest/modular/home/service/MentalTestBizService.java rest/src/main/java/cn/stylefeng/rest/modular/im/controller/ImController.java rest/src/main/java/cn/stylefeng/rest/modular/im/controller/ImNotifyController.java rest/src/main/java/cn/stylefeng/rest/modular/order/controller/MentalTestController.java rest/src/main/java/cn/stylefeng/rest/modular/order/controller/MentalTestOrderController.java rest/src/main/java/cn/stylefeng/rest/modular/order/service/MentalTestOrderBizService.java rest/src/main/java/cn/stylefeng/rest/modular/user/controller/CounsellingInfoController.java rest/src/main/java/cn/stylefeng/rest/modular/user/controller/CourseController.java rest/src/main/java/cn/stylefeng/rest/modular/user/controller/MyMentalTestController.java rest/src/main/java/cn/stylefeng/rest/modular/user/controller/UserCenterController.java rest/src/main/java/cn/stylefeng/rest/modular/user/controller/UserEvaluateController.java rest/src/main/java/cn/stylefeng/rest/modular/user/service/CustomerLoginBizService.java rest/src/main/java/cn/stylefeng/rest/modular/work/MentalAppointmentWork.java rest/src/main/java/cn/stylefeng/rest/modular/work/OrderOutTimeCancelWork.java rest/src/main/java/cn/stylefeng/rest/modular/worker/controller/MentalAnalysisTimeConfigController.java rest/src/main/java/cn/stylefeng/rest/modular/worker/controller/TotalReportController.java rest/src/main/java/cn/stylefeng/rest/modular/worker/controller/WorkerController.java rest/src/main/java/cn/stylefeng/rest/modular/worker/service/WorkerBizService.java rest/src/main/resources/Dockerfile rest/src/main/resources/Dockerfile-dev rest/src/main/resources/application-dev.yml rest/src/main/resources/application-local.yml rest/src/main/resources/application-prod.yml rest/src/main/resources/application.yml rest/src/main/resources/ijpay/alipay.properties rest/src/main/resources/ijpay/cert/apiclient_cert.p12 rest/src/main/resources/ijpay/cert/apiclient_cert.pem rest/src/main/resources/ijpay/cert/apiclient_key.pem rest/src/main/resources/ijpay/cert/pfx-password.txt rest/src/main/resources/ijpay/cert/证书使用说明.txt rest/src/main/resources/ijpay/wxpay.properties rest/src/main/resources/logback-spring.xml roses/README.md roses/kernel-a-rule/README.md roses/kernel-a-rule/pom.xml roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/annotation/BusinessLog.java roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/annotation/ChineseDescription.java roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/annotation/EnumFieldFormat.java roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/annotation/SimpleFieldFormat.java roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/base/ReadableEnum.java roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/base/SimpleFieldFormatProcess.java roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/callback/ConfigUpdateCallback.java roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/constants/RuleConstants.java roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/constants/SymbolConstant.java roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/constants/TenantConstants.java roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/constants/TreeConstants.java roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/context/ApplicationPropertiesContext.java roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/enums/CustomerMentalAnalysisStatusEnum.java roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/enums/CustomerStatusEnum.java roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/enums/CustomerUserTypeEnum.java roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/enums/CustomerWorkStatusEnum.java roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/enums/DbTypeEnum.java roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/enums/DeleteEnum.java roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/enums/FieldTypeEnum.java roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/enums/FormatTypeEnum.java roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/enums/ImPushTypeEnum.java roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/enums/ImStatusEnum.java roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/enums/ImUserTypeEnum.java roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/enums/MentalAppointmentConsultStatusEnum.java roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/enums/MentalAppointmentStatusEnum.java roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/enums/OrderStatusFlagEnum.java roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/enums/OrderTypeEnum.java roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/enums/PayTypeEnum.java roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/enums/PostIdEnum.java roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/enums/PostTypeEnum.java roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/enums/ResBizTypeEnum.java roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/enums/SexEnum.java roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/enums/SortByEnum.java roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/enums/StatusEnum.java roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/enums/SystemSetEnum.java roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/enums/TreeNodeEnum.java roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/enums/YesOrNotEnum.java roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/exception/AbstractExceptionEnum.java roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/exception/base/ServiceException.java roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/exception/enums/defaults/DefaultBusinessExceptionEnum.java roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/exception/enums/defaults/DefaultThirdExceptionEnum.java roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/exception/enums/defaults/DefaultUserExceptionEnum.java roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/exception/enums/http/ServletExceptionEnum.java roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/format/BaseSimpleFieldFormatProcess.java roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/listener/ApplicationReadyListener.java roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/listener/ApplicationStartedListener.java roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/listener/ContextInitializedListener.java roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/pojo/dict/SimpleDict.java roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/pojo/request/BaseIdRequest.java roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/pojo/request/BasePageRequest.java roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/pojo/request/BaseRequest.java roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/pojo/response/ErrorResponseData.java roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/pojo/response/ResponseData.java roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/pojo/response/SuccessResponseData.java roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/tenant/OnceTenantCodeHolder.java roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/tenant/RequestTenantCodeHolder.java roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/tenant/TenantPrefixApi.java roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/threadlocal/RemoveThreadLocalApi.java roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/tree/factory/DefaultTreeBuildFactory.java roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/tree/factory/base/AbstractTreeBuildFactory.java roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/tree/factory/base/AbstractTreeNode.java roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/tree/factory/node/DefaultTreeNode.java roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/tree/xmtree/DefaultXmSelectNode.java roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/tree/xmtree/base/AbstractXmSelectNode.java roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/tree/ztree/ZTreeNode.java roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/util/AntPathMatcherUtil.java roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/util/AopTargetUtils.java roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/util/ClassTypeUtil.java roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/util/DatabaseTypeUtil.java roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/util/DateRegexUtil.java roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/util/DbConnectionUtil.java roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/util/ExceptionUtil.java roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/util/GunsResourceCodeUtil.java roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/util/HttpServletUtil.java roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/util/IpInfoUtils.java roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/util/LicenseTitleAppenderUtil.java roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/util/MacAddressUtil.java roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/util/MixFieldTypeUtil.java roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/util/MvnDeployUtil.java roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/util/ObjectConvertUtil.java roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/util/ProjectUtil.java roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/util/RedirectUrlBuildUtil.java roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/util/ResponseRenderUtil.java roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/util/StrFilterUtil.java roses/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/util/TokenSignUtil.java roses/kernel-d-auth/README.md roses/kernel-d-auth/auth-api/README.md roses/kernel-d-auth/auth-api/pom.xml roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/AuthServiceApi.java roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/LoginUserApi.java roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/PermissionServiceApi.java roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/SessionManagerApi.java roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/SsoServerApi.java roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/TempSecretApi.java roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/constants/AuthConstants.java roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/constants/LoginCacheConstants.java roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/context/LoginContext.java roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/context/LoginUserHolder.java roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/context/LoginUserRemoveThreadLocalHolder.java roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/cookie/SessionCookieCreator.java roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/enums/DataScopeTypeEnum.java roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/enums/SsoClientTypeEnum.java roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/exception/AuthException.java roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/exception/enums/AuthExceptionEnum.java roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/expander/AuthConfigExpander.java roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/expander/LoginConfigExpander.java roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/loginuser/CommonLoginUserUtil.java roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/loginuser/api/LoginUserRemoteApi.java roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/loginuser/pojo/LoginUserRequest.java roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/loginuser/pojo/SessionValidateResponse.java roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/password/PasswordStoredEncryptApi.java roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/password/PasswordTransferEncryptApi.java roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/pojo/auth/LoginRequest.java roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/pojo/auth/LoginResponse.java roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/pojo/auth/LoginWithTokenRequest.java roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/pojo/auth/PwdRsaSecretProperties.java roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/pojo/login/LoginUser.java roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/pojo/login/basic/SimpleRoleInfo.java roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/pojo/login/basic/SimpleUserInfo.java roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/pojo/sso/SsoLoginCodeRequest.java roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/pojo/sso/SsoProperties.java roses/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/prop/LoginUserPropExpander.java roses/kernel-d-auth/auth-sdk/README.md roses/kernel-d-auth/auth-sdk/pom.xml roses/kernel-d-auth/auth-sdk/src/main/java/cn/stylefeng/roses/kernel/auth/auth/AuthServiceImpl.java roses/kernel-d-auth/auth-sdk/src/main/java/cn/stylefeng/roses/kernel/auth/auth/LoginUserImpl.java roses/kernel-d-auth/auth-sdk/src/main/java/cn/stylefeng/roses/kernel/auth/cache/LoginErrorCountMemoryCache.java roses/kernel-d-auth/auth-sdk/src/main/java/cn/stylefeng/roses/kernel/auth/cache/LoginErrorCountRedisCache.java roses/kernel-d-auth/auth-sdk/src/main/java/cn/stylefeng/roses/kernel/auth/callback/TenantCodeRemoveThreadLocalHolder.java roses/kernel-d-auth/auth-sdk/src/main/java/cn/stylefeng/roses/kernel/auth/config/InitConfigWebSocketCallbackApiImpl.java roses/kernel-d-auth/auth-sdk/src/main/java/cn/stylefeng/roses/kernel/auth/password/BcryptPasswordStoredEncrypt.java roses/kernel-d-auth/auth-sdk/src/main/java/cn/stylefeng/roses/kernel/auth/password/RsaPasswordTransferEncrypt.java roses/kernel-d-auth/auth-sdk/src/main/java/cn/stylefeng/roses/kernel/auth/permission/PermissionServiceImpl.java roses/kernel-d-auth/auth-sdk/src/main/java/cn/stylefeng/roses/kernel/auth/session/DefaultSessionManager.java roses/kernel-d-auth/auth-sdk/src/main/java/cn/stylefeng/roses/kernel/auth/session/cache/catoken/MemoryCaClientTokenCache.java roses/kernel-d-auth/auth-sdk/src/main/java/cn/stylefeng/roses/kernel/auth/session/cache/catoken/RedisCaClientTokenCache.java roses/kernel-d-auth/auth-sdk/src/main/java/cn/stylefeng/roses/kernel/auth/session/cache/logintoken/MemoryLoginTokenCache.java roses/kernel-d-auth/auth-sdk/src/main/java/cn/stylefeng/roses/kernel/auth/session/cache/logintoken/RedisLoginTokenCache.java roses/kernel-d-auth/auth-sdk/src/main/java/cn/stylefeng/roses/kernel/auth/session/cache/loginuser/MemoryLoginUserCache.java roses/kernel-d-auth/auth-sdk/src/main/java/cn/stylefeng/roses/kernel/auth/session/cache/loginuser/RedisLoginUserCache.java roses/kernel-d-auth/auth-sdk/src/main/java/cn/stylefeng/roses/kernel/auth/session/cookie/DefaultSessionCookieCreator.java roses/kernel-d-auth/auth-sdk/src/main/java/cn/stylefeng/roses/kernel/auth/session/timer/ClearInvalidLoginUserCacheTimer.java roses/kernel-d-auth/auth-spring-boot-starter/README.md roses/kernel-d-auth/auth-spring-boot-starter/pom.xml roses/kernel-d-auth/auth-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/auth/starter/GunsAuthAutoConfiguration.java roses/kernel-d-auth/auth-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/auth/starter/GunsPasswordRsaPropAutoConfiguration.java roses/kernel-d-auth/auth-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/auth/starter/GunsSsoAutoConfiguration.java roses/kernel-d-auth/auth-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/auth/starter/cache/GunsAuthTokenMemoryCacheAutoConfiguration.java roses/kernel-d-auth/auth-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/auth/starter/cache/GunsAuthTokenRedisCacheAutoConfiguration.java roses/kernel-d-auth/auth-spring-boot-starter/src/main/resources/META-INF/spring.factories roses/kernel-d-auth/pom.xml roses/kernel-d-cache/README.md roses/kernel-d-cache/cache-api/README.md roses/kernel-d-cache/cache-api/pom.xml roses/kernel-d-cache/cache-api/src/main/java/cn/stylefeng/roses/kernel/cache/api/CacheOperatorApi.java roses/kernel-d-cache/cache-api/src/main/java/cn/stylefeng/roses/kernel/cache/api/constants/CacheConstants.java roses/kernel-d-cache/cache-api/src/main/java/cn/stylefeng/roses/kernel/cache/api/tenant/TenantCacheProxy.java roses/kernel-d-cache/cache-api/src/main/java/cn/stylefeng/roses/kernel/cache/api/tenant/TenantCacheProxyFactory.java roses/kernel-d-cache/cache-sdk-memory/README.md roses/kernel-d-cache/cache-sdk-memory/pom.xml roses/kernel-d-cache/cache-sdk-memory/src/main/java/cn/stylefeng/roses/kernel/cache/memory/AbstractMemoryCacheOperator.java roses/kernel-d-cache/cache-sdk-memory/src/main/java/cn/stylefeng/roses/kernel/cache/memory/operator/DefaultMemoryCacheOperator.java roses/kernel-d-cache/cache-sdk-memory/src/main/java/cn/stylefeng/roses/kernel/cache/memory/operator/DefaultStringMemoryCacheOperator.java roses/kernel-d-cache/cache-sdk-redis/README.md roses/kernel-d-cache/cache-sdk-redis/pom.xml roses/kernel-d-cache/cache-sdk-redis/src/main/java/cn/stylefeng/roses/kernel/cache/redis/AbstractRedisCacheOperator.java roses/kernel-d-cache/cache-sdk-redis/src/main/java/cn/stylefeng/roses/kernel/cache/redis/AbstractRedisHashCacheOperator.java roses/kernel-d-cache/cache-sdk-redis/src/main/java/cn/stylefeng/roses/kernel/cache/redis/operator/DefaultRedisCacheOperator.java roses/kernel-d-cache/cache-sdk-redis/src/main/java/cn/stylefeng/roses/kernel/cache/redis/operator/DefaultStringRedisCacheOperator.java roses/kernel-d-cache/cache-sdk-redis/src/main/java/cn/stylefeng/roses/kernel/cache/redis/serializer/FastJson2JsonRedisSerializer.java roses/kernel-d-cache/cache-sdk-redis/src/main/java/cn/stylefeng/roses/kernel/cache/redis/util/CreateRedisTemplateUtil.java roses/kernel-d-cache/memory-cache-spring-boot-starter/README.md roses/kernel-d-cache/memory-cache-spring-boot-starter/pom.xml roses/kernel-d-cache/memory-cache-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/cache/memory/starter/GunsMemoryCacheAutoConfiguration.java roses/kernel-d-cache/memory-cache-spring-boot-starter/src/main/resources/META-INF/spring.factories roses/kernel-d-cache/pom.xml roses/kernel-d-cache/redis-spring-boot-starter/README.md roses/kernel-d-cache/redis-spring-boot-starter/pom.xml roses/kernel-d-cache/redis-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/cache/redis/starter/GunsRedisCacheAutoConfiguration.java roses/kernel-d-cache/redis-spring-boot-starter/src/main/resources/META-INF/spring.factories roses/kernel-d-config/README.md roses/kernel-d-config/config-api/README.md roses/kernel-d-config/config-api/pom.xml roses/kernel-d-config/config-api/src/main/java/cn/stylefeng/roses/kernel/config/api/ConfigApi.java roses/kernel-d-config/config-api/src/main/java/cn/stylefeng/roses/kernel/config/api/ConfigInitCallbackApi.java roses/kernel-d-config/config-api/src/main/java/cn/stylefeng/roses/kernel/config/api/ConfigInitStrategyApi.java roses/kernel-d-config/config-api/src/main/java/cn/stylefeng/roses/kernel/config/api/InitConfigApi.java roses/kernel-d-config/config-api/src/main/java/cn/stylefeng/roses/kernel/config/api/SysConfigDataApi.java roses/kernel-d-config/config-api/src/main/java/cn/stylefeng/roses/kernel/config/api/constants/ConfigConstants.java roses/kernel-d-config/config-api/src/main/java/cn/stylefeng/roses/kernel/config/api/context/ConfigContext.java roses/kernel-d-config/config-api/src/main/java/cn/stylefeng/roses/kernel/config/api/exception/ConfigException.java roses/kernel-d-config/config-api/src/main/java/cn/stylefeng/roses/kernel/config/api/exception/enums/ConfigExceptionEnum.java roses/kernel-d-config/config-api/src/main/java/cn/stylefeng/roses/kernel/config/api/pojo/ConfigInitItem.java roses/kernel-d-config/config-api/src/main/java/cn/stylefeng/roses/kernel/config/api/pojo/ConfigInitRequest.java roses/kernel-d-config/config-business/README.md roses/kernel-d-config/config-business/pom.xml roses/kernel-d-config/config-business/src/main/java/cn/stylefeng/roses/kernel/config/modular/controller/SysConfigController.java roses/kernel-d-config/config-business/src/main/java/cn/stylefeng/roses/kernel/config/modular/entity/SysConfig.java roses/kernel-d-config/config-business/src/main/java/cn/stylefeng/roses/kernel/config/modular/factory/SysConfigDataFactory.java roses/kernel-d-config/config-business/src/main/java/cn/stylefeng/roses/kernel/config/modular/listener/ConfigInitListener.java roses/kernel-d-config/config-business/src/main/java/cn/stylefeng/roses/kernel/config/modular/mapper/SysConfigMapper.java roses/kernel-d-config/config-business/src/main/java/cn/stylefeng/roses/kernel/config/modular/mapper/mapping/SysConfigMapper.xml roses/kernel-d-config/config-business/src/main/java/cn/stylefeng/roses/kernel/config/modular/pojo/InitConfigGroup.java roses/kernel-d-config/config-business/src/main/java/cn/stylefeng/roses/kernel/config/modular/pojo/InitConfigResponse.java roses/kernel-d-config/config-business/src/main/java/cn/stylefeng/roses/kernel/config/modular/pojo/param/SysConfigParam.java roses/kernel-d-config/config-business/src/main/java/cn/stylefeng/roses/kernel/config/modular/service/SysConfigService.java roses/kernel-d-config/config-business/src/main/java/cn/stylefeng/roses/kernel/config/modular/service/impl/SysConfigServiceImpl.java roses/kernel-d-config/config-business/src/main/java/cn/stylefeng/roses/kernel/config/modular/sqladapter/MssqlSysConfigData.java roses/kernel-d-config/config-business/src/main/java/cn/stylefeng/roses/kernel/config/modular/sqladapter/MysqlSysConfigData.java roses/kernel-d-config/config-business/src/main/java/cn/stylefeng/roses/kernel/config/modular/sqladapter/OracleSysConfigData.java roses/kernel-d-config/config-business/src/main/java/cn/stylefeng/roses/kernel/config/modular/sqladapter/PgsqlSysConfigData.java roses/kernel-d-config/config-business/src/main/java/cn/stylefeng/roses/kernel/config/modular/strategy/DefaultStrategyImpl.java roses/kernel-d-config/config-sdk-map/README.md roses/kernel-d-config/config-sdk-map/pom.xml roses/kernel-d-config/config-sdk-map/src/main/java/cn/stylefeng/roses/kernel/config/ConfigContainer.java roses/kernel-d-config/config-sdk-redis/README.md roses/kernel-d-config/config-sdk-redis/pom.xml roses/kernel-d-config/config-sdk-redis/src/main/java/cn/stylefeng/roses/kernel/config/redis/RedisConfigContainer.java roses/kernel-d-config/config-spring-boot-starter/README.md roses/kernel-d-config/config-spring-boot-starter/pom.xml roses/kernel-d-config/config-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/config/starter/GunsSysConfigAutoConfiguration.java roses/kernel-d-config/config-spring-boot-starter/src/main/resources/META-INF/spring.factories roses/kernel-d-config/pom.xml roses/kernel-d-db/README.md roses/kernel-d-db/db-api/README.md roses/kernel-d-db/db-api/pom.xml roses/kernel-d-db/db-api/src/main/java/cn/stylefeng/roses/kernel/db/api/DbOperatorApi.java roses/kernel-d-db/db-api/src/main/java/cn/stylefeng/roses/kernel/db/api/constants/DbConstants.java roses/kernel-d-db/db-api/src/main/java/cn/stylefeng/roses/kernel/db/api/constants/DbFieldConstants.java roses/kernel-d-db/db-api/src/main/java/cn/stylefeng/roses/kernel/db/api/context/DbOperatorContext.java roses/kernel-d-db/db-api/src/main/java/cn/stylefeng/roses/kernel/db/api/exception/DaoException.java roses/kernel-d-db/db-api/src/main/java/cn/stylefeng/roses/kernel/db/api/exception/enums/DaoExceptionEnum.java roses/kernel-d-db/db-api/src/main/java/cn/stylefeng/roses/kernel/db/api/exception/enums/DatabaseExceptionEnum.java roses/kernel-d-db/db-api/src/main/java/cn/stylefeng/roses/kernel/db/api/exception/enums/DbInitEnum.java roses/kernel-d-db/db-api/src/main/java/cn/stylefeng/roses/kernel/db/api/exception/enums/FlywayExceptionEnum.java roses/kernel-d-db/db-api/src/main/java/cn/stylefeng/roses/kernel/db/api/expander/DruidConfigExpander.java roses/kernel-d-db/db-api/src/main/java/cn/stylefeng/roses/kernel/db/api/factory/DruidDatasourceFactory.java roses/kernel-d-db/db-api/src/main/java/cn/stylefeng/roses/kernel/db/api/factory/PageFactory.java roses/kernel-d-db/db-api/src/main/java/cn/stylefeng/roses/kernel/db/api/factory/PageResultFactory.java roses/kernel-d-db/db-api/src/main/java/cn/stylefeng/roses/kernel/db/api/pojo/db/TableFieldInfo.java roses/kernel-d-db/db-api/src/main/java/cn/stylefeng/roses/kernel/db/api/pojo/db/TableInfo.java roses/kernel-d-db/db-api/src/main/java/cn/stylefeng/roses/kernel/db/api/pojo/druid/DruidProperties.java roses/kernel-d-db/db-api/src/main/java/cn/stylefeng/roses/kernel/db/api/pojo/entity/BaseEntity.java roses/kernel-d-db/db-api/src/main/java/cn/stylefeng/roses/kernel/db/api/pojo/page/PageResult.java roses/kernel-d-db/db-api/src/main/java/cn/stylefeng/roses/kernel/db/api/sqladapter/AbstractSql.java roses/kernel-d-db/db-api/src/main/java/cn/stylefeng/roses/kernel/db/api/sqladapter/database/CreateDatabaseSql.java roses/kernel-d-db/db-api/src/main/java/cn/stylefeng/roses/kernel/db/api/sqladapter/database/DropDatabaseSql.java roses/kernel-d-db/db-api/src/main/java/cn/stylefeng/roses/kernel/db/api/sqladapter/database/GetDatabasesSql.java roses/kernel-d-db/db-api/src/main/java/cn/stylefeng/roses/kernel/db/api/sqladapter/table/TableFieldListSql.java roses/kernel-d-db/db-api/src/main/java/cn/stylefeng/roses/kernel/db/api/sqladapter/table/TableListSql.java roses/kernel-d-db/db-api/src/main/java/cn/stylefeng/roses/kernel/db/api/util/ClobUtil.java roses/kernel-d-db/db-api/src/main/java/cn/stylefeng/roses/kernel/db/api/util/DatabaseUtil.java roses/kernel-d-db/db-api/src/main/java/cn/stylefeng/roses/kernel/db/api/util/SqlRunUtil.java roses/kernel-d-db/db-sdk-flyway/pom.xml roses/kernel-d-db/db-sdk-flyway/src/main/java/cn/stylefeng/roses/kernel/db/flyway/FlywayInitListener.java roses/kernel-d-db/db-sdk-flyway/src/main/resources/META-INF/spring.factories roses/kernel-d-db/db-sdk-init/pom.xml roses/kernel-d-db/db-sdk-init/src/main/java/cn/stylefeng/roses/kernel/db/init/actuator/DbInitializer.java roses/kernel-d-db/db-sdk-init/src/main/java/cn/stylefeng/roses/kernel/db/init/listener/InitTableListener.java roses/kernel-d-db/db-sdk-init/src/main/java/cn/stylefeng/roses/kernel/db/init/util/SqlExe.java roses/kernel-d-db/db-sdk-init/src/main/java/cn/stylefeng/roses/kernel/db/init/util/SqlUtil.java roses/kernel-d-db/db-sdk-mp/README.md roses/kernel-d-db/db-sdk-mp/pom.xml roses/kernel-d-db/db-sdk-mp/src/main/java/cn/stylefeng/roses/kernel/db/mp/dbid/CustomDatabaseIdProvider.java roses/kernel-d-db/db-sdk-mp/src/main/java/cn/stylefeng/roses/kernel/db/mp/dboperator/DbOperatorImpl.java roses/kernel-d-db/db-sdk-mp/src/main/java/cn/stylefeng/roses/kernel/db/mp/fieldfill/CustomMetaObjectHandler.java roses/kernel-d-db/db-sdk-mp/src/main/java/cn/stylefeng/roses/kernel/db/mp/injector/CustomBaseMapper.java roses/kernel-d-db/db-sdk-mp/src/main/java/cn/stylefeng/roses/kernel/db/mp/injector/CustomInsertBatchSqlInjector.java roses/kernel-d-db/db-spring-boot-starter/README.md roses/kernel-d-db/db-spring-boot-starter/pom.xml roses/kernel-d-db/db-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/db/starter/GunsDataSourceAutoConfiguration.java roses/kernel-d-db/db-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/db/starter/GunsDruidMonitorAutoConfiguration.java roses/kernel-d-db/db-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/db/starter/GunsDruidPropertiesAutoConfiguration.java roses/kernel-d-db/db-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/db/starter/GunsMyBatisPlusAutoConfiguration.java roses/kernel-d-db/db-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/db/starter/GunsRemoveDruidAdAutoConfiguration.java roses/kernel-d-db/db-spring-boot-starter/src/main/resources/META-INF/spring.factories roses/kernel-d-db/pom.xml roses/kernel-d-ds-container/README.md roses/kernel-d-ds-container/ds-container-api/README.md roses/kernel-d-ds-container/ds-container-api/pom.xml roses/kernel-d-ds-container/ds-container-api/src/main/java/cn/stylefeng/roses/kernel/dsctn/api/DataSourceApi.java roses/kernel-d-ds-container/ds-container-api/src/main/java/cn/stylefeng/roses/kernel/dsctn/api/annotation/DataSource.java roses/kernel-d-ds-container/ds-container-api/src/main/java/cn/stylefeng/roses/kernel/dsctn/api/constants/DatasourceContainerConstants.java roses/kernel-d-ds-container/ds-container-api/src/main/java/cn/stylefeng/roses/kernel/dsctn/api/context/CurrentDataSourceContext.java roses/kernel-d-ds-container/ds-container-api/src/main/java/cn/stylefeng/roses/kernel/dsctn/api/enums/DataSourceStatusEnum.java roses/kernel-d-ds-container/ds-container-api/src/main/java/cn/stylefeng/roses/kernel/dsctn/api/exception/DatasourceContainerException.java roses/kernel-d-ds-container/ds-container-api/src/main/java/cn/stylefeng/roses/kernel/dsctn/api/exception/enums/DatasourceContainerExceptionEnum.java roses/kernel-d-ds-container/ds-container-api/src/main/java/cn/stylefeng/roses/kernel/dsctn/api/pojo/DataBaseInfoDto.java roses/kernel-d-ds-container/ds-container-api/src/main/java/cn/stylefeng/roses/kernel/dsctn/api/pojo/DataSourceDto.java roses/kernel-d-ds-container/ds-container-api/src/main/java/cn/stylefeng/roses/kernel/dsctn/api/pojo/request/DatabaseInfoRequest.java roses/kernel-d-ds-container/ds-container-business/README.md roses/kernel-d-ds-container/ds-container-business/pom.xml roses/kernel-d-ds-container/ds-container-business/src/main/java/cn/stylefeng/roses/kernel/dsctn/modular/controller/DatabaseInfoController.java roses/kernel-d-ds-container/ds-container-business/src/main/java/cn/stylefeng/roses/kernel/dsctn/modular/entity/DatabaseInfo.java roses/kernel-d-ds-container/ds-container-business/src/main/java/cn/stylefeng/roses/kernel/dsctn/modular/factory/DruidPropertiesFactory.java roses/kernel-d-ds-container/ds-container-business/src/main/java/cn/stylefeng/roses/kernel/dsctn/modular/mapper/DatabaseInfoMapper.java roses/kernel-d-ds-container/ds-container-business/src/main/java/cn/stylefeng/roses/kernel/dsctn/modular/mapper/mapping/DatabaseInfoMapper.xml roses/kernel-d-ds-container/ds-container-business/src/main/java/cn/stylefeng/roses/kernel/dsctn/modular/service/DatabaseInfoService.java roses/kernel-d-ds-container/ds-container-business/src/main/java/cn/stylefeng/roses/kernel/dsctn/modular/service/impl/DatabaseInfoServiceImpl.java roses/kernel-d-ds-container/ds-container-business/src/main/java/cn/stylefeng/roses/kernel/dsctn/modular/timer/DataSourceStatusCheckTimer.java roses/kernel-d-ds-container/ds-container-sdk/README.md roses/kernel-d-ds-container/ds-container-sdk/pom.xml roses/kernel-d-ds-container/ds-container-sdk/src/main/java/cn/stylefeng/roses/kernel/dsctn/AbstractRoutingDataSource.java roses/kernel-d-ds-container/ds-container-sdk/src/main/java/cn/stylefeng/roses/kernel/dsctn/DynamicDataSource.java roses/kernel-d-ds-container/ds-container-sdk/src/main/java/cn/stylefeng/roses/kernel/dsctn/aop/MultiSourceExchangeAop.java roses/kernel-d-ds-container/ds-container-sdk/src/main/java/cn/stylefeng/roses/kernel/dsctn/context/DataSourceContext.java roses/kernel-d-ds-container/ds-container-sdk/src/main/java/cn/stylefeng/roses/kernel/dsctn/listener/DataSourceInitListener.java roses/kernel-d-ds-container/ds-container-sdk/src/main/java/cn/stylefeng/roses/kernel/dsctn/persist/DataBaseInfoPersistence.java roses/kernel-d-ds-container/ds-container-sdk/src/main/java/cn/stylefeng/roses/kernel/dsctn/persist/sqladapter/AddDatabaseInfoSql.java roses/kernel-d-ds-container/ds-container-sdk/src/main/java/cn/stylefeng/roses/kernel/dsctn/persist/sqladapter/DatabaseListSql.java roses/kernel-d-ds-container/ds-container-sdk/src/main/java/cn/stylefeng/roses/kernel/dsctn/persist/sqladapter/DeleteDatabaseInfoSql.java roses/kernel-d-ds-container/ds-container-spring-boot-starter/README.md roses/kernel-d-ds-container/ds-container-spring-boot-starter/pom.xml roses/kernel-d-ds-container/ds-container-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/dsctn/starter/GunsDataSourceContainerAutoConfiguration.java roses/kernel-d-ds-container/ds-container-spring-boot-starter/src/main/resources/META-INF/spring.factories roses/kernel-d-ds-container/pom.xml roses/kernel-d-email/README.md roses/kernel-d-email/email-api/README.md roses/kernel-d-email/email-api/pom.xml roses/kernel-d-email/email-api/src/main/java/cn/stylefeng/roses/kernel/email/api/MailSenderApi.java roses/kernel-d-email/email-api/src/main/java/cn/stylefeng/roses/kernel/email/api/constants/MailConstants.java roses/kernel-d-email/email-api/src/main/java/cn/stylefeng/roses/kernel/email/api/context/MailSenderContext.java roses/kernel-d-email/email-api/src/main/java/cn/stylefeng/roses/kernel/email/api/exception/MailException.java roses/kernel-d-email/email-api/src/main/java/cn/stylefeng/roses/kernel/email/api/exception/enums/EmailExceptionEnum.java roses/kernel-d-email/email-api/src/main/java/cn/stylefeng/roses/kernel/email/api/expander/EmailConfigExpander.java roses/kernel-d-email/email-api/src/main/java/cn/stylefeng/roses/kernel/email/api/pojo/SendMailParam.java roses/kernel-d-email/email-api/src/main/java/cn/stylefeng/roses/kernel/email/api/pojo/aliyun/AliyunMailSenderProperties.java roses/kernel-d-email/email-api/src/main/java/cn/stylefeng/roses/kernel/email/api/pojo/aliyun/AliyunSendMailParam.java roses/kernel-d-email/email-sdk-aliyun/README.md roses/kernel-d-email/email-sdk-aliyun/pom.xml roses/kernel-d-email/email-sdk-aliyun/src/main/java/cn/stylefeng/roses/kernel/email/aliyun/AliyunMailSender.java roses/kernel-d-email/email-sdk-java/README.md roses/kernel-d-email/email-sdk-java/pom.xml roses/kernel-d-email/email-sdk-java/src/main/java/cn/stylefeng/roses/kernel/email/jdk/JavaMailSender.java roses/kernel-d-email/email-spring-boot-starter/README.md roses/kernel-d-email/email-spring-boot-starter/pom.xml roses/kernel-d-email/email-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/email/starter/GunsEmailAutoConfiguration.java roses/kernel-d-email/email-spring-boot-starter/src/main/resources/META-INF/spring.factories roses/kernel-d-email/pom.xml roses/kernel-d-file/README.md roses/kernel-d-file/file-api/README.md roses/kernel-d-file/file-api/pom.xml roses/kernel-d-file/file-api/src/main/java/cn/stylefeng/roses/kernel/file/api/FileInfoApi.java roses/kernel-d-file/file-api/src/main/java/cn/stylefeng/roses/kernel/file/api/FileOperatorApi.java roses/kernel-d-file/file-api/src/main/java/cn/stylefeng/roses/kernel/file/api/constants/FileConstants.java roses/kernel-d-file/file-api/src/main/java/cn/stylefeng/roses/kernel/file/api/context/FileContext.java roses/kernel-d-file/file-api/src/main/java/cn/stylefeng/roses/kernel/file/api/enums/BucketAuthEnum.java roses/kernel-d-file/file-api/src/main/java/cn/stylefeng/roses/kernel/file/api/enums/FileLocationEnum.java roses/kernel-d-file/file-api/src/main/java/cn/stylefeng/roses/kernel/file/api/enums/FileStatusEnum.java roses/kernel-d-file/file-api/src/main/java/cn/stylefeng/roses/kernel/file/api/exception/FileException.java roses/kernel-d-file/file-api/src/main/java/cn/stylefeng/roses/kernel/file/api/exception/enums/FileExceptionEnum.java roses/kernel-d-file/file-api/src/main/java/cn/stylefeng/roses/kernel/file/api/expander/FileConfigExpander.java roses/kernel-d-file/file-api/src/main/java/cn/stylefeng/roses/kernel/file/api/pojo/AntdvFileInfo.java roses/kernel-d-file/file-api/src/main/java/cn/stylefeng/roses/kernel/file/api/pojo/props/AliyunOssProperties.java roses/kernel-d-file/file-api/src/main/java/cn/stylefeng/roses/kernel/file/api/pojo/props/LocalFileProperties.java roses/kernel-d-file/file-api/src/main/java/cn/stylefeng/roses/kernel/file/api/pojo/props/MinIoProperties.java roses/kernel-d-file/file-api/src/main/java/cn/stylefeng/roses/kernel/file/api/pojo/props/TenCosProperties.java roses/kernel-d-file/file-api/src/main/java/cn/stylefeng/roses/kernel/file/api/pojo/request/SysFileInfoRequest.java roses/kernel-d-file/file-api/src/main/java/cn/stylefeng/roses/kernel/file/api/pojo/response/SysFileInfoListResponse.java roses/kernel-d-file/file-api/src/main/java/cn/stylefeng/roses/kernel/file/api/pojo/response/SysFileInfoResponse.java roses/kernel-d-file/file-api/src/main/java/cn/stylefeng/roses/kernel/file/api/util/DownloadUtil.java roses/kernel-d-file/file-api/src/main/java/cn/stylefeng/roses/kernel/file/api/util/PdfFileTypeUtil.java roses/kernel-d-file/file-api/src/main/java/cn/stylefeng/roses/kernel/file/api/util/PicFileTypeUtil.java roses/kernel-d-file/file-business/README.md roses/kernel-d-file/file-business/pom.xml roses/kernel-d-file/file-business/src/main/java/cn/stylefeng/roses/kernel/file/modular/controller/SysFileInfoController.java roses/kernel-d-file/file-business/src/main/java/cn/stylefeng/roses/kernel/file/modular/entity/SysFileInfo.java roses/kernel-d-file/file-business/src/main/java/cn/stylefeng/roses/kernel/file/modular/entity/SysFileStorage.java roses/kernel-d-file/file-business/src/main/java/cn/stylefeng/roses/kernel/file/modular/factory/FileInfoFactory.java roses/kernel-d-file/file-business/src/main/java/cn/stylefeng/roses/kernel/file/modular/mapper/SysFileInfoMapper.java roses/kernel-d-file/file-business/src/main/java/cn/stylefeng/roses/kernel/file/modular/mapper/SysFileStorageMapper.java roses/kernel-d-file/file-business/src/main/java/cn/stylefeng/roses/kernel/file/modular/mapper/mapping/SysFileInfoMapper.xml roses/kernel-d-file/file-business/src/main/java/cn/stylefeng/roses/kernel/file/modular/mapper/mapping/SysFileStorageMapper.xml roses/kernel-d-file/file-business/src/main/java/cn/stylefeng/roses/kernel/file/modular/service/SysFileInfoService.java roses/kernel-d-file/file-business/src/main/java/cn/stylefeng/roses/kernel/file/modular/service/SysFileStorageService.java roses/kernel-d-file/file-business/src/main/java/cn/stylefeng/roses/kernel/file/modular/service/impl/SysFileInfoServiceImpl.java roses/kernel-d-file/file-business/src/main/java/cn/stylefeng/roses/kernel/file/modular/service/impl/SysFileStorageServiceImpl.java roses/kernel-d-file/file-sdk-aliyun/README.md roses/kernel-d-file/file-sdk-aliyun/pom.xml roses/kernel-d-file/file-sdk-aliyun/src/main/java/cn/stylefeng/roses/kernel/file/aliyun/AliyunFileOperator.java roses/kernel-d-file/file-sdk-local/README.md roses/kernel-d-file/file-sdk-local/pom.xml roses/kernel-d-file/file-sdk-local/src/main/java/cn/stylefeng/roses/kernel/file/local/LocalFileOperator.java roses/kernel-d-file/file-sdk-minio/README.md roses/kernel-d-file/file-sdk-minio/pom.xml roses/kernel-d-file/file-sdk-minio/src/main/java/cn/stylefeng/roses/kernel/file/minio/MinIoFileOperator.java roses/kernel-d-file/file-sdk-tencent/README.md roses/kernel-d-file/file-sdk-tencent/pom.xml roses/kernel-d-file/file-sdk-tencent/src/main/java/cn/stylefeng/roses/kernel/file/tencent/TenFileOperator.java roses/kernel-d-file/file-spring-boot-starter/README.md roses/kernel-d-file/file-spring-boot-starter/pom.xml roses/kernel-d-file/file-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/file/starter/GunsFileAutoConfiguration.java roses/kernel-d-file/file-spring-boot-starter/src/main/resources/META-INF/spring.factories roses/kernel-d-file/pom.xml roses/kernel-d-groovy/README.md roses/kernel-d-groovy/groovy-api/README.md roses/kernel-d-groovy/groovy-api/pom.xml roses/kernel-d-groovy/groovy-api/src/main/java/cn/stylefeng/roses/kernel/groovy/api/GroovyApi.java roses/kernel-d-groovy/groovy-api/src/main/java/cn/stylefeng/roses/kernel/groovy/api/constants/GroovyConstants.java roses/kernel-d-groovy/groovy-api/src/main/java/cn/stylefeng/roses/kernel/groovy/api/exception/GroovyException.java roses/kernel-d-groovy/groovy-api/src/main/java/cn/stylefeng/roses/kernel/groovy/api/exception/enums/GroovyExceptionEnum.java roses/kernel-d-groovy/groovy-sdk/README.md roses/kernel-d-groovy/groovy-sdk/pom.xml roses/kernel-d-groovy/groovy-sdk/src/main/java/cn/stylefeng/roses/kernel/groovy/GroovyOperator.java roses/kernel-d-groovy/groovy-spring-boot-starter/README.md roses/kernel-d-groovy/groovy-spring-boot-starter/pom.xml roses/kernel-d-groovy/groovy-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/groovy/starter/GunsGroovyAutoConfiguration.java roses/kernel-d-groovy/groovy-spring-boot-starter/src/main/resources/META-INF/spring.factories roses/kernel-d-groovy/pom.xml roses/kernel-d-i18n/README.md roses/kernel-d-i18n/i18n-api/README.md roses/kernel-d-i18n/i18n-api/pom.xml roses/kernel-d-i18n/i18n-api/src/main/java/cn/stylefeng/roses/kernel/i18n/api/TranslationApi.java roses/kernel-d-i18n/i18n-api/src/main/java/cn/stylefeng/roses/kernel/i18n/api/TranslationPersistenceApi.java roses/kernel-d-i18n/i18n-api/src/main/java/cn/stylefeng/roses/kernel/i18n/api/constants/TranslationConstants.java roses/kernel-d-i18n/i18n-api/src/main/java/cn/stylefeng/roses/kernel/i18n/api/context/TranslationContext.java roses/kernel-d-i18n/i18n-api/src/main/java/cn/stylefeng/roses/kernel/i18n/api/exception/TranslationException.java roses/kernel-d-i18n/i18n-api/src/main/java/cn/stylefeng/roses/kernel/i18n/api/exception/enums/TranslationExceptionEnum.java roses/kernel-d-i18n/i18n-api/src/main/java/cn/stylefeng/roses/kernel/i18n/api/pojo/TranslationDict.java roses/kernel-d-i18n/i18n-api/src/main/java/cn/stylefeng/roses/kernel/i18n/api/pojo/request/TranslationRequest.java roses/kernel-d-i18n/i18n-business/README.md roses/kernel-d-i18n/i18n-business/pom.xml roses/kernel-d-i18n/i18n-business/src/main/java/cn/stylefeng/roses/kernel/i18n/modular/controller/TranslationController.java roses/kernel-d-i18n/i18n-business/src/main/java/cn/stylefeng/roses/kernel/i18n/modular/controller/UserTranslationController.java roses/kernel-d-i18n/i18n-business/src/main/java/cn/stylefeng/roses/kernel/i18n/modular/entity/Translation.java roses/kernel-d-i18n/i18n-business/src/main/java/cn/stylefeng/roses/kernel/i18n/modular/factory/TranslationDictFactory.java roses/kernel-d-i18n/i18n-business/src/main/java/cn/stylefeng/roses/kernel/i18n/modular/mapper/TranslationMapper.java roses/kernel-d-i18n/i18n-business/src/main/java/cn/stylefeng/roses/kernel/i18n/modular/mapper/mapping/TranslationMapper.xml roses/kernel-d-i18n/i18n-business/src/main/java/cn/stylefeng/roses/kernel/i18n/modular/service/TranslationService.java roses/kernel-d-i18n/i18n-business/src/main/java/cn/stylefeng/roses/kernel/i18n/modular/service/impl/TranslationServiceImpl.java roses/kernel-d-i18n/i18n-sdk/README.md roses/kernel-d-i18n/i18n-sdk/pom.xml roses/kernel-d-i18n/i18n-sdk/src/main/java/cn/stylefeng/roses/kernel/i18n/TranslationContainer.java roses/kernel-d-i18n/i18n-sdk/src/main/java/cn/stylefeng/roses/kernel/i18n/listener/TranslationDictInitListener.java roses/kernel-d-i18n/i18n-sdk/src/main/java/cn/stylefeng/roses/kernel/i18n/util/QuickTranslateUtil.java roses/kernel-d-i18n/i18n-spring-boot-starter/README.md roses/kernel-d-i18n/i18n-spring-boot-starter/pom.xml roses/kernel-d-i18n/i18n-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/i18n/starter/GunsTranslationAutoConfiguration.java roses/kernel-d-i18n/i18n-spring-boot-starter/src/main/resources/META-INF/spring.factories roses/kernel-d-i18n/pom.xml roses/kernel-d-im/im-api/pom.xml roses/kernel-d-im/im-api/src/main/java/cn/stylefeng/roses/kernel/im/api/ImServerApi.java roses/kernel-d-im/im-api/src/main/java/cn/stylefeng/roses/kernel/im/api/constants/ImConstants.java roses/kernel-d-im/im-api/src/main/java/cn/stylefeng/roses/kernel/im/api/context/ImContext.java roses/kernel-d-im/im-api/src/main/java/cn/stylefeng/roses/kernel/im/api/expander/ImConfigExpander.java roses/kernel-d-im/im-api/src/main/java/cn/stylefeng/roses/kernel/im/api/pojo/HistoryMessageDTO.java roses/kernel-d-im/im-api/src/main/java/cn/stylefeng/roses/kernel/im/api/pojo/ImMessageRoutingDTO.java roses/kernel-d-im/im-api/src/main/java/cn/stylefeng/roses/kernel/im/api/pojo/RongCloudProperties.java roses/kernel-d-im/im-api/src/main/java/cn/stylefeng/roses/kernel/im/api/pojo/request/ImUserModelRequest.java roses/kernel-d-im/im-business-rongcloud/pom.xml roses/kernel-d-im/im-business-rongcloud/src/main/java/cn/stylefeng/roses/kernel/im/business/controller/ImServerController.java roses/kernel-d-im/im-sdk-rongcloud/pom.xml roses/kernel-d-im/im-sdk-rongcloud/src/main/java/cn/stylefeng/roses/kernel/im/rongcloud/RongCloudImServer.java roses/kernel-d-im/im-sdk-rongcloud/src/main/java/cn/stylefeng/roses/kernel/im/rongcloud/enums/RongCloudImResultEnum.java roses/kernel-d-im/im-spring-boot-starter/pom.xml roses/kernel-d-im/im-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/im/starter/GunsImAutoConfiguration.java roses/kernel-d-im/im-spring-boot-starter/src/main/resources/META-INF/spring.factories roses/kernel-d-im/pom.xml roses/kernel-d-jwt/README.md roses/kernel-d-jwt/jwt-api/README.md roses/kernel-d-jwt/jwt-api/pom.xml roses/kernel-d-jwt/jwt-api/src/main/java/cn/stylefeng/roses/kernel/jwt/api/JwtApi.java roses/kernel-d-jwt/jwt-api/src/main/java/cn/stylefeng/roses/kernel/jwt/api/constants/JwtConstants.java roses/kernel-d-jwt/jwt-api/src/main/java/cn/stylefeng/roses/kernel/jwt/api/context/JwtContext.java roses/kernel-d-jwt/jwt-api/src/main/java/cn/stylefeng/roses/kernel/jwt/api/exception/JwtException.java roses/kernel-d-jwt/jwt-api/src/main/java/cn/stylefeng/roses/kernel/jwt/api/exception/enums/JwtExceptionEnum.java roses/kernel-d-jwt/jwt-api/src/main/java/cn/stylefeng/roses/kernel/jwt/api/expander/JwtConfigExpander.java roses/kernel-d-jwt/jwt-api/src/main/java/cn/stylefeng/roses/kernel/jwt/api/pojo/config/JwtConfig.java roses/kernel-d-jwt/jwt-api/src/main/java/cn/stylefeng/roses/kernel/jwt/api/pojo/payload/DefaultJwtPayload.java roses/kernel-d-jwt/jwt-sdk/README.md roses/kernel-d-jwt/jwt-sdk/pom.xml roses/kernel-d-jwt/jwt-sdk/src/main/java/cn/stylefeng/roses/kernel/jwt/JwtTokenOperator.java roses/kernel-d-jwt/jwt-sdk/src/main/java/cn/stylefeng/roses/kernel/jwt/factory/JwtTokenApiFactory.java roses/kernel-d-jwt/jwt-spring-boot-starter/README.md roses/kernel-d-jwt/jwt-spring-boot-starter/pom.xml roses/kernel-d-jwt/jwt-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/jwt/starter/GunsJwtAutoConfiguration.java roses/kernel-d-jwt/jwt-spring-boot-starter/src/main/resources/META-INF/spring.factories roses/kernel-d-jwt/pom.xml roses/kernel-d-log/README.md roses/kernel-d-log/log-api/README.md roses/kernel-d-log/log-api/pom.xml roses/kernel-d-log/log-api/src/main/java/cn/stylefeng/roses/kernel/log/api/LogManagerApi.java roses/kernel-d-log/log-api/src/main/java/cn/stylefeng/roses/kernel/log/api/LogRecordApi.java roses/kernel-d-log/log-api/src/main/java/cn/stylefeng/roses/kernel/log/api/LoginLogServiceApi.java roses/kernel-d-log/log-api/src/main/java/cn/stylefeng/roses/kernel/log/api/constants/LogConstants.java roses/kernel-d-log/log-api/src/main/java/cn/stylefeng/roses/kernel/log/api/constants/LogFileConstants.java roses/kernel-d-log/log-api/src/main/java/cn/stylefeng/roses/kernel/log/api/context/LogRecordContext.java roses/kernel-d-log/log-api/src/main/java/cn/stylefeng/roses/kernel/log/api/context/ServerInfoContext.java roses/kernel-d-log/log-api/src/main/java/cn/stylefeng/roses/kernel/log/api/enums/LogSaveTypeEnum.java roses/kernel-d-log/log-api/src/main/java/cn/stylefeng/roses/kernel/log/api/exception/LogException.java roses/kernel-d-log/log-api/src/main/java/cn/stylefeng/roses/kernel/log/api/exception/enums/LogExceptionEnum.java roses/kernel-d-log/log-api/src/main/java/cn/stylefeng/roses/kernel/log/api/expander/LogConfigExpander.java roses/kernel-d-log/log-api/src/main/java/cn/stylefeng/roses/kernel/log/api/factory/LogRecordFactory.java roses/kernel-d-log/log-api/src/main/java/cn/stylefeng/roses/kernel/log/api/factory/appender/AuthedLogAppender.java roses/kernel-d-log/log-api/src/main/java/cn/stylefeng/roses/kernel/log/api/factory/appender/HttpLogAppender.java roses/kernel-d-log/log-api/src/main/java/cn/stylefeng/roses/kernel/log/api/factory/appender/ParamsLogAppender.java roses/kernel-d-log/log-api/src/main/java/cn/stylefeng/roses/kernel/log/api/pojo/log/SysLogProperties.java roses/kernel-d-log/log-api/src/main/java/cn/stylefeng/roses/kernel/log/api/pojo/loginlog/SysLoginLogDto.java roses/kernel-d-log/log-api/src/main/java/cn/stylefeng/roses/kernel/log/api/pojo/loginlog/SysLoginLogRequest.java roses/kernel-d-log/log-api/src/main/java/cn/stylefeng/roses/kernel/log/api/pojo/manage/LogManagerRequest.java roses/kernel-d-log/log-api/src/main/java/cn/stylefeng/roses/kernel/log/api/pojo/record/LogRecordDTO.java roses/kernel-d-log/log-api/src/main/java/cn/stylefeng/roses/kernel/log/api/threadpool/LogManagerThreadPool.java roses/kernel-d-log/log-business-login-log/README.md roses/kernel-d-log/log-business-login-log/pom.xml roses/kernel-d-log/log-business-login-log/src/main/java/cn/stylefeng/roses/kernel/system/modular/loginlog/constants/LoginLogConstant.java roses/kernel-d-log/log-business-login-log/src/main/java/cn/stylefeng/roses/kernel/system/modular/loginlog/controller/SysLoginLogController.java roses/kernel-d-log/log-business-login-log/src/main/java/cn/stylefeng/roses/kernel/system/modular/loginlog/entity/SysLoginLog.java roses/kernel-d-log/log-business-login-log/src/main/java/cn/stylefeng/roses/kernel/system/modular/loginlog/mapper/SysLoginLogMapper.java roses/kernel-d-log/log-business-login-log/src/main/java/cn/stylefeng/roses/kernel/system/modular/loginlog/mapper/mapping/SysLoginLogMapper.xml roses/kernel-d-log/log-business-login-log/src/main/java/cn/stylefeng/roses/kernel/system/modular/loginlog/service/SysLoginLogService.java roses/kernel-d-log/log-business-login-log/src/main/java/cn/stylefeng/roses/kernel/system/modular/loginlog/service/impl/SysLoginLogServiceImpl.java roses/kernel-d-log/log-business-manage/README.md roses/kernel-d-log/log-business-manage/pom.xml roses/kernel-d-log/log-business-manage/src/main/java/cn/stylefeng/roses/kernel/log/manage/controller/LogManagerController.java roses/kernel-d-log/log-business-requestapi/README.md roses/kernel-d-log/log-business-requestapi/pom.xml roses/kernel-d-log/log-business-requestapi/src/main/java/cn/stylefeng/roses/kernel/log/requestapi/RequestApiLogRecordAop.java roses/kernel-d-log/log-sdk-db/README.md roses/kernel-d-log/log-sdk-db/pom.xml roses/kernel-d-log/log-sdk-db/src/main/java/cn/stylefeng/roses/kernel/log/db/DbLogManagerServiceImpl.java roses/kernel-d-log/log-sdk-db/src/main/java/cn/stylefeng/roses/kernel/log/db/DbLogRecordServiceImpl.java roses/kernel-d-log/log-sdk-db/src/main/java/cn/stylefeng/roses/kernel/log/db/entity/SysLog.java roses/kernel-d-log/log-sdk-db/src/main/java/cn/stylefeng/roses/kernel/log/db/mapper/SysLogMapper.java roses/kernel-d-log/log-sdk-db/src/main/java/cn/stylefeng/roses/kernel/log/db/mapper/mapping/SysLogMapper.xml roses/kernel-d-log/log-sdk-db/src/main/java/cn/stylefeng/roses/kernel/log/db/service/SysLogService.java roses/kernel-d-log/log-sdk-db/src/main/java/cn/stylefeng/roses/kernel/log/db/service/impl/SysLogServiceImpl.java roses/kernel-d-log/log-sdk-file/README.md roses/kernel-d-log/log-sdk-file/pom.xml roses/kernel-d-log/log-sdk-file/src/main/java/cn/stylefeng/roses/kernel/log/file/FileLogManagerServiceImpl.java roses/kernel-d-log/log-sdk-file/src/main/java/cn/stylefeng/roses/kernel/log/file/FileLogRecordServiceImpl.java roses/kernel-d-log/log-spring-boot-starter/README.md roses/kernel-d-log/log-spring-boot-starter/pom.xml roses/kernel-d-log/log-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/log/starter/GunsLogAutoConfiguration.java roses/kernel-d-log/log-spring-boot-starter/src/main/resources/META-INF/spring.factories roses/kernel-d-log/pom.xml roses/kernel-d-mongodb/README.md roses/kernel-d-mongodb/mongodb-api/pom.xml roses/kernel-d-mongodb/mongodb-api/src/main/java/cn/stylefeng/roses/kernel/mongodb/api/MongoFileApi.java roses/kernel-d-mongodb/mongodb-api/src/main/java/cn/stylefeng/roses/kernel/mongodb/api/MongodbApi.java roses/kernel-d-mongodb/mongodb-api/src/main/java/cn/stylefeng/roses/kernel/mongodb/api/constants/MongodbConstants.java roses/kernel-d-mongodb/mongodb-api/src/main/java/cn/stylefeng/roses/kernel/mongodb/api/exception/MongodbException.java roses/kernel-d-mongodb/mongodb-integration-beetl/pom.xml roses/kernel-d-mongodb/mongodb-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/mongodb/integration/controller/ModelViewController.java roses/kernel-d-mongodb/mongodb-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/mongodb/integration/controller/MongoFileController.java roses/kernel-d-mongodb/mongodb-integration-beetl/src/main/resources/assets/modular/mongodb/fileList.js roses/kernel-d-mongodb/mongodb-integration-beetl/src/main/resources/pages/modular/mongodb/fileList.html roses/kernel-d-mongodb/mongodb-sdk-file/pom.xml roses/kernel-d-mongodb/mongodb-sdk-file/src/main/java/cn/stylefeng/roses/kernel/mongodb/file/entity/MongoFileEntity.java roses/kernel-d-mongodb/mongodb-sdk-file/src/main/java/cn/stylefeng/roses/kernel/mongodb/file/mapper/MongoFileMapper.java roses/kernel-d-mongodb/mongodb-sdk-file/src/main/java/cn/stylefeng/roses/kernel/mongodb/file/service/MongoFileService.java roses/kernel-d-mongodb/mongodb-sdk-file/src/main/java/cn/stylefeng/roses/kernel/mongodb/file/service/impl/MongoFileServiceImpl.java roses/kernel-d-mongodb/mongodb-sdk-springboot/pom.xml roses/kernel-d-mongodb/mongodb-sdk-springboot/src/main/java/cn/stylefeng/roses/kernel/mongodb/entity/GunsMapEntity.java roses/kernel-d-mongodb/mongodb-sdk-springboot/src/main/java/cn/stylefeng/roses/kernel/mongodb/mapper/GunsMapRepository.java roses/kernel-d-mongodb/mongodb-sdk-springboot/src/main/java/cn/stylefeng/roses/kernel/mongodb/service/GunsMapService.java roses/kernel-d-mongodb/mongodb-sdk-springboot/src/main/java/cn/stylefeng/roses/kernel/mongodb/service/impl/GunsMapServiceImpl.java roses/kernel-d-mongodb/mongodb-spring-boot-starter/pom.xml roses/kernel-d-mongodb/mongodb-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/mongodb/starter/GunsMongodbAutoConfiguration.java roses/kernel-d-mongodb/mongodb-spring-boot-starter/src/main/resources/META-INF/spring.factories roses/kernel-d-mongodb/pom.xml roses/kernel-d-office/README.md roses/kernel-d-office/office-api/README.md roses/kernel-d-office/office-api/pom.xml roses/kernel-d-office/office-api/src/main/java/cn/stylefeng/roses/kernel/office/api/OfficeExcelApi.java roses/kernel-d-office/office-api/src/main/java/cn/stylefeng/roses/kernel/office/api/constants/OfficeConstants.java roses/kernel-d-office/office-api/src/main/java/cn/stylefeng/roses/kernel/office/api/exception/OfficeException.java roses/kernel-d-office/office-api/src/main/java/cn/stylefeng/roses/kernel/office/api/exception/enums/OfficeExceptionEnum.java roses/kernel-d-office/office-api/src/main/java/cn/stylefeng/roses/kernel/office/api/pojo/report/ExcelExportParam.java roses/kernel-d-office/office-sdk-excel/README.md roses/kernel-d-office/office-sdk-excel/pom.xml roses/kernel-d-office/office-sdk-excel/src/main/java/cn/stylefeng/roses/kernel/office/excel/OfficeExcel.java roses/kernel-d-office/office-sdk-excel/src/main/java/cn/stylefeng/roses/kernel/office/excel/listener/SimpleDataListener.java roses/kernel-d-office/office-spring-boot-starter/README.md roses/kernel-d-office/office-spring-boot-starter/pom.xml roses/kernel-d-office/office-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/office/starter/ExcelAutoConfiguration.java roses/kernel-d-office/pom.xml roses/kernel-d-openapi/README.md roses/kernel-d-openapi/openapi-api/pom.xml roses/kernel-d-openapi/openapi-api/src/main/java/cn/stylefeng/roses/kernel/openapi/api/constants/OpenApiConstants.java roses/kernel-d-openapi/openapi-api/src/main/java/cn/stylefeng/roses/kernel/openapi/api/exception/OpenApiException.java roses/kernel-d-openapi/openapi-sdk-springdoc/pom.xml roses/kernel-d-openapi/openapi-sdk-springdoc/src/main/java/cn/stylefeng/roses/kernel/springdoc/converter/GunsModelConverterImpl.java roses/kernel-d-openapi/openapi-sdk-springdoc/src/main/java/cn/stylefeng/roses/kernel/springdoc/providers/GunsJavadocProviderImpl.java roses/kernel-d-openapi/openapi-spring-boot-starter/pom.xml roses/kernel-d-openapi/openapi-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/springdoc/starter/SpringdocOpenApiAutoConfiguration.java roses/kernel-d-openapi/openapi-spring-boot-starter/src/main/resources/META-INF/spring.factories roses/kernel-d-openapi/pom.xml roses/kernel-d-pinyin/README.md roses/kernel-d-pinyin/pinyin-api/README.md roses/kernel-d-pinyin/pinyin-api/pom.xml roses/kernel-d-pinyin/pinyin-api/src/main/java/cn/stylefeng/roses/kernel/pinyin/api/PinYinApi.java roses/kernel-d-pinyin/pinyin-api/src/main/java/cn/stylefeng/roses/kernel/pinyin/api/constants/PinyinConstants.java roses/kernel-d-pinyin/pinyin-api/src/main/java/cn/stylefeng/roses/kernel/pinyin/api/context/PinyinContext.java roses/kernel-d-pinyin/pinyin-api/src/main/java/cn/stylefeng/roses/kernel/pinyin/api/exception/PinyinException.java roses/kernel-d-pinyin/pinyin-api/src/main/java/cn/stylefeng/roses/kernel/pinyin/api/exception/enums/PinyinExceptionEnum.java roses/kernel-d-pinyin/pinyin-sdk-pinyin4j/README.md roses/kernel-d-pinyin/pinyin-sdk-pinyin4j/pom.xml roses/kernel-d-pinyin/pinyin-sdk-pinyin4j/src/main/java/cn/stylefeng/roses/kernel/pinyin/PinyinServiceImpl.java roses/kernel-d-pinyin/pinyin-spring-boot-starter/README.md roses/kernel-d-pinyin/pinyin-spring-boot-starter/pom.xml roses/kernel-d-pinyin/pinyin-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/pinyin/starter/GunsPinyinAutoConfiguration.java roses/kernel-d-pinyin/pinyin-spring-boot-starter/src/main/resources/META-INF/spring.factories roses/kernel-d-pinyin/pom.xml roses/kernel-d-scanner/README.md roses/kernel-d-scanner/pom.xml roses/kernel-d-scanner/scanner-api/README.md roses/kernel-d-scanner/scanner-api/pom.xml roses/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/DevOpsDetectApi.java roses/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/DevOpsReportApi.java roses/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/ResourceCollectorApi.java roses/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/ResourceReportApi.java roses/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/annotation/ApiResource.java roses/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/annotation/GetResource.java roses/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/annotation/PostResource.java roses/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/constants/ScannerConstants.java roses/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/context/MetadataContext.java roses/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/enums/FieldMetadataTypeEnum.java roses/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/enums/ParamTypeEnum.java roses/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/exception/ScannerException.java roses/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/exception/enums/DevOpsExceptionEnum.java roses/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/exception/enums/ScannerExceptionEnum.java roses/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/factory/ClassDetailMetadataFactory.java roses/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/factory/ClassMetadataFactory.java roses/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/holder/InitScanFlagHolder.java roses/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/holder/IpAddrHolder.java roses/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/holder/IpAddrRemoveThreadLocalHolder.java roses/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/pojo/devops/DevOpsReportProperties.java roses/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/pojo/devops/DevOpsReportResourceParam.java roses/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/pojo/resource/FieldMetadata.java roses/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/pojo/resource/ParameterMetadata.java roses/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/pojo/resource/ReportResourceParam.java roses/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/pojo/resource/ResourceDefinition.java roses/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/pojo/resource/ResourceUrlParam.java roses/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/pojo/resource/SysResourcePersistencePojo.java roses/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/pojo/resource/UserResourceParam.java roses/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/pojo/scanner/ScannerProperties.java roses/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/util/ClassDescriptionUtil.java roses/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/util/ClassReflectUtil.java roses/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/util/FieldDescriptionUtil.java roses/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/util/MethodReflectUtil.java roses/kernel-d-scanner/scanner-sdk-scanner/README.md roses/kernel-d-scanner/scanner-sdk-scanner/pom.xml roses/kernel-d-scanner/scanner-sdk-scanner/src/main/java/cn/stylefeng/roses/kernel/scanner/ApiResourceScanner.java roses/kernel-d-scanner/scanner-sdk-scanner/src/main/java/cn/stylefeng/roses/kernel/scanner/DefaultResourceCollector.java roses/kernel-d-scanner/scanner-sdk-scanner/src/main/java/cn/stylefeng/roses/kernel/scanner/ResourceReportListener.java roses/kernel-d-scanner/scanner-sdk-scanner/src/main/java/cn/stylefeng/roses/kernel/scanner/devops/DefaultDevOpsReportImpl.java roses/kernel-d-scanner/scanner-sdk-scanner/src/main/java/cn/stylefeng/roses/kernel/scanner/devops/LocalizedDevOpsReportImpl.java roses/kernel-d-scanner/scanner-spring-boot-starter/README.md roses/kernel-d-scanner/scanner-spring-boot-starter/pom.xml roses/kernel-d-scanner/scanner-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/scanner/starter/GunsResourceAutoConfiguration.java roses/kernel-d-scanner/scanner-spring-boot-starter/src/main/resources/META-INF/spring.factories roses/kernel-d-seata/README.md roses/kernel-d-seata/db/db.sql roses/kernel-d-seata/doc/seata使用手册.docx roses/kernel-d-seata/pom.xml roses/kernel-d-seata/seata-demo-order/pom.xml roses/kernel-d-seata/seata-demo-order/src/main/java/cn/stylefeng/roses/kernel/seata/order/consumer/StorageConsumer.java roses/kernel-d-seata/seata-demo-order/src/main/java/cn/stylefeng/roses/kernel/seata/order/consumer/WalletConsumer.java roses/kernel-d-seata/seata-demo-order/src/main/java/cn/stylefeng/roses/kernel/seata/order/controller/OrderController.java roses/kernel-d-seata/seata-demo-order/src/main/java/cn/stylefeng/roses/kernel/seata/order/entity/Order.java roses/kernel-d-seata/seata-demo-order/src/main/java/cn/stylefeng/roses/kernel/seata/order/mapper/OrderMapper.java roses/kernel-d-seata/seata-demo-order/src/main/java/cn/stylefeng/roses/kernel/seata/order/mapper/mapping/OrderMapper.xml roses/kernel-d-seata/seata-demo-order/src/main/java/cn/stylefeng/roses/kernel/seata/order/service/OrderService.java roses/kernel-d-seata/seata-demo-order/src/main/java/cn/stylefeng/roses/kernel/seata/order/service/impl/OrderServiceImpl.java roses/kernel-d-seata/seata-demo-storage-api/pom.xml roses/kernel-d-seata/seata-demo-storage-api/src/main/java/cn/stylefeng/roses/kernel/seata/api/StorageApi.java roses/kernel-d-seata/seata-demo-wallet-api/pom.xml roses/kernel-d-seata/seata-demo-wallet-api/src/main/java/cn/stylefeng/roses/kernel/seata/wallet/api/WalletApi.java roses/kernel-d-security/README.md roses/kernel-d-security/pom.xml roses/kernel-d-security/security-api/README.md roses/kernel-d-security/security-api/pom.xml roses/kernel-d-security/security-api/src/main/java/cn/stylefeng/roses/kernel/security/api/BlackListApi.java roses/kernel-d-security/security-api/src/main/java/cn/stylefeng/roses/kernel/security/api/CountValidatorApi.java roses/kernel-d-security/security-api/src/main/java/cn/stylefeng/roses/kernel/security/api/DragCaptchaApi.java roses/kernel-d-security/security-api/src/main/java/cn/stylefeng/roses/kernel/security/api/ImageCaptchaApi.java roses/kernel-d-security/security-api/src/main/java/cn/stylefeng/roses/kernel/security/api/WhiteListApi.java roses/kernel-d-security/security-api/src/main/java/cn/stylefeng/roses/kernel/security/api/constants/CaptchaConstants.java roses/kernel-d-security/security-api/src/main/java/cn/stylefeng/roses/kernel/security/api/constants/CounterConstants.java roses/kernel-d-security/security-api/src/main/java/cn/stylefeng/roses/kernel/security/api/constants/SecurityConstants.java roses/kernel-d-security/security-api/src/main/java/cn/stylefeng/roses/kernel/security/api/exception/CountValidateException.java roses/kernel-d-security/security-api/src/main/java/cn/stylefeng/roses/kernel/security/api/exception/SecurityException.java roses/kernel-d-security/security-api/src/main/java/cn/stylefeng/roses/kernel/security/api/exception/XssFilterException.java roses/kernel-d-security/security-api/src/main/java/cn/stylefeng/roses/kernel/security/api/exception/enums/CountValidateExceptionEnum.java roses/kernel-d-security/security-api/src/main/java/cn/stylefeng/roses/kernel/security/api/exception/enums/SecurityExceptionEnum.java roses/kernel-d-security/security-api/src/main/java/cn/stylefeng/roses/kernel/security/api/exception/enums/XssFilterExceptionEnum.java roses/kernel-d-security/security-api/src/main/java/cn/stylefeng/roses/kernel/security/api/expander/SecurityConfigExpander.java roses/kernel-d-security/security-api/src/main/java/cn/stylefeng/roses/kernel/security/api/pojo/DragCaptchaImageDTO.java roses/kernel-d-security/security-api/src/main/java/cn/stylefeng/roses/kernel/security/api/pojo/ImageCaptcha.java roses/kernel-d-security/security-sdk-black-white/README.md roses/kernel-d-security/security-sdk-black-white/pom.xml roses/kernel-d-security/security-sdk-black-white/src/main/java/cn/stylefeng/roses/kernel/security/blackwhite/BlackListService.java roses/kernel-d-security/security-sdk-black-white/src/main/java/cn/stylefeng/roses/kernel/security/blackwhite/WhiteListService.java roses/kernel-d-security/security-sdk-black-white/src/main/java/cn/stylefeng/roses/kernel/security/blackwhite/cache/BlackListMemoryCache.java roses/kernel-d-security/security-sdk-black-white/src/main/java/cn/stylefeng/roses/kernel/security/blackwhite/cache/BlackListRedisCache.java roses/kernel-d-security/security-sdk-black-white/src/main/java/cn/stylefeng/roses/kernel/security/blackwhite/cache/WhiteListMemoryCache.java roses/kernel-d-security/security-sdk-black-white/src/main/java/cn/stylefeng/roses/kernel/security/blackwhite/cache/WhiteListRedisCache.java roses/kernel-d-security/security-sdk-captcha/README.md roses/kernel-d-security/security-sdk-captcha/pom.xml roses/kernel-d-security/security-sdk-captcha/src/main/java/cn/stylefeng/roses/kernel/security/captcha/DragCaptchaService.java roses/kernel-d-security/security-sdk-captcha/src/main/java/cn/stylefeng/roses/kernel/security/captcha/ImageCaptchaService.java roses/kernel-d-security/security-sdk-captcha/src/main/java/cn/stylefeng/roses/kernel/security/captcha/cache/CaptchaMemoryCache.java roses/kernel-d-security/security-sdk-captcha/src/main/java/cn/stylefeng/roses/kernel/security/captcha/cache/CaptchaRedisCache.java roses/kernel-d-security/security-sdk-captcha/src/main/java/cn/stylefeng/roses/kernel/security/captcha/util/DragCaptchaImageUtil.java roses/kernel-d-security/security-sdk-clear-threadlocal/README.md roses/kernel-d-security/security-sdk-clear-threadlocal/pom.xml roses/kernel-d-security/security-sdk-clear-threadlocal/src/main/java/cn/stylefeng/roses/kernel/security/clear/ClearThreadLocalFilter.java roses/kernel-d-security/security-sdk-cors/README.md roses/kernel-d-security/security-sdk-cors/pom.xml roses/kernel-d-security/security-sdk-cors/src/main/java/cn/stylefeng/roses/kernel/security/cors/CorsFilterConfiguration.java roses/kernel-d-security/security-sdk-count/README.md roses/kernel-d-security/security-sdk-count/pom.xml roses/kernel-d-security/security-sdk-count/src/main/java/cn/stylefeng/roses/kernel/security/count/DefaultCountValidator.java roses/kernel-d-security/security-sdk-count/src/main/java/cn/stylefeng/roses/kernel/security/count/cache/CountValidateMemoryCache.java roses/kernel-d-security/security-sdk-count/src/main/java/cn/stylefeng/roses/kernel/security/count/cache/CountValidateRedisCache.java roses/kernel-d-security/security-sdk-database-field/README.md roses/kernel-d-security/security-sdk-database-field/pom.xml roses/kernel-d-security/security-sdk-database-field/src/main/java/cn/stylefeng/roses/kernel/security/database/algorithm/EncryptAlgorithmApi.java roses/kernel-d-security/security-sdk-database-field/src/main/java/cn/stylefeng/roses/kernel/security/database/algorithm/impl/AesEncryptAlgorithmApiImpl.java roses/kernel-d-security/security-sdk-database-field/src/main/java/cn/stylefeng/roses/kernel/security/database/annotation/EncryptField.java roses/kernel-d-security/security-sdk-database-field/src/main/java/cn/stylefeng/roses/kernel/security/database/annotation/ProtectedData.java roses/kernel-d-security/security-sdk-database-field/src/main/java/cn/stylefeng/roses/kernel/security/database/annotation/ProtectedField.java roses/kernel-d-security/security-sdk-database-field/src/main/java/cn/stylefeng/roses/kernel/security/database/interceptor/ParameterInterceptor.java roses/kernel-d-security/security-sdk-database-field/src/main/java/cn/stylefeng/roses/kernel/security/database/interceptor/ResultInterceptor.java roses/kernel-d-security/security-sdk-request-encrypt-and-decode/README.md roses/kernel-d-security/security-sdk-request-encrypt-and-decode/pom.xml roses/kernel-d-security/security-sdk-request-encrypt-and-decode/src/main/java/cn/stylefeng/roses/kernel/security/request/encrypt/advice/EncryptionRequestBodyAdvice.java roses/kernel-d-security/security-sdk-request-encrypt-and-decode/src/main/java/cn/stylefeng/roses/kernel/security/request/encrypt/advice/EncryptionResponseBodyAdvice.java roses/kernel-d-security/security-sdk-request-encrypt-and-decode/src/main/java/cn/stylefeng/roses/kernel/security/request/encrypt/constants/EncryptionConstants.java roses/kernel-d-security/security-sdk-request-encrypt-and-decode/src/main/java/cn/stylefeng/roses/kernel/security/request/encrypt/exception/EncryptionException.java roses/kernel-d-security/security-sdk-request-encrypt-and-decode/src/main/java/cn/stylefeng/roses/kernel/security/request/encrypt/exception/enums/EncryptionExceptionEnum.java roses/kernel-d-security/security-sdk-request-encrypt-and-decode/src/main/java/cn/stylefeng/roses/kernel/security/request/encrypt/holder/EncryptRemoveThreadLocalHolder.java roses/kernel-d-security/security-sdk-request-encrypt-and-decode/src/main/java/cn/stylefeng/roses/kernel/security/request/encrypt/holder/EncryptionHolder.java roses/kernel-d-security/security-sdk-request-encrypt-and-decode/src/main/java/cn/stylefeng/roses/kernel/security/request/encrypt/holder/EncryptionRsaHolder.java roses/kernel-d-security/security-sdk-xss/README.md roses/kernel-d-security/security-sdk-xss/pom.xml roses/kernel-d-security/security-sdk-xss/src/main/java/cn/stylefeng/roses/kernel/security/xss/XssFilter.java roses/kernel-d-security/security-sdk-xss/src/main/java/cn/stylefeng/roses/kernel/security/xss/XssHttpServletRequestWrapper.java roses/kernel-d-security/security-sdk-xss/src/main/java/cn/stylefeng/roses/kernel/security/xss/XssJacksonDeserializer.java roses/kernel-d-security/security-sdk-xss/src/main/java/cn/stylefeng/roses/kernel/security/xss/prop/XssProperties.java roses/kernel-d-security/security-spring-boot-starter/README.md roses/kernel-d-security/security-spring-boot-starter/pom.xml roses/kernel-d-security/security-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/security/starter/CaptchaAutoConfiguration.java roses/kernel-d-security/security-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/security/starter/CounterAutoConfiguration.java roses/kernel-d-security/security-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/security/starter/EncryptAlgorithmAutoConfiguration.java roses/kernel-d-security/security-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/security/starter/GunsSecurityAutoConfiguration.java roses/kernel-d-security/security-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/security/starter/GunsXssAutoConfiguration.java roses/kernel-d-security/security-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/security/starter/cache/SecurityMemoryCacheAutoConfiguration.java roses/kernel-d-security/security-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/security/starter/cache/SecurityRedisCacheAutoConfiguration.java roses/kernel-d-security/security-spring-boot-starter/src/main/resources/META-INF/spring.factories roses/kernel-d-sms/README.md roses/kernel-d-sms/pom.xml roses/kernel-d-sms/sms-api/README.md roses/kernel-d-sms/sms-api/pom.xml roses/kernel-d-sms/sms-api/src/main/java/cn/stylefeng/roses/kernel/sms/api/SmsSenderApi.java roses/kernel-d-sms/sms-api/src/main/java/cn/stylefeng/roses/kernel/sms/api/constants/SmsConstants.java roses/kernel-d-sms/sms-api/src/main/java/cn/stylefeng/roses/kernel/sms/api/context/SmsContext.java roses/kernel-d-sms/sms-api/src/main/java/cn/stylefeng/roses/kernel/sms/api/exception/SmsException.java roses/kernel-d-sms/sms-api/src/main/java/cn/stylefeng/roses/kernel/sms/api/exception/enums/SmsExceptionEnum.java roses/kernel-d-sms/sms-api/src/main/java/cn/stylefeng/roses/kernel/sms/api/expander/SmsConfigExpander.java roses/kernel-d-sms/sms-api/src/main/java/cn/stylefeng/roses/kernel/sms/api/pojo/AliyunSmsProperties.java roses/kernel-d-sms/sms-api/src/main/java/cn/stylefeng/roses/kernel/sms/api/pojo/TencentSmsProperties.java roses/kernel-d-sms/sms-business-validation/README.md roses/kernel-d-sms/sms-business-validation/pom.xml roses/kernel-d-sms/sms-business-validation/src/main/java/cn/stylefeng/roses/kernel/sms/modular/controller/SmsSenderController.java roses/kernel-d-sms/sms-business-validation/src/main/java/cn/stylefeng/roses/kernel/sms/modular/entity/SysSms.java roses/kernel-d-sms/sms-business-validation/src/main/java/cn/stylefeng/roses/kernel/sms/modular/enums/SmsSendSourceEnum.java roses/kernel-d-sms/sms-business-validation/src/main/java/cn/stylefeng/roses/kernel/sms/modular/enums/SmsSendStatusEnum.java roses/kernel-d-sms/sms-business-validation/src/main/java/cn/stylefeng/roses/kernel/sms/modular/enums/SmsTypeEnum.java roses/kernel-d-sms/sms-business-validation/src/main/java/cn/stylefeng/roses/kernel/sms/modular/mapper/SysSmsMapper.java roses/kernel-d-sms/sms-business-validation/src/main/java/cn/stylefeng/roses/kernel/sms/modular/mapper/mapping/SysSmsMapper.xml roses/kernel-d-sms/sms-business-validation/src/main/java/cn/stylefeng/roses/kernel/sms/modular/param/SysSmsInfoParam.java roses/kernel-d-sms/sms-business-validation/src/main/java/cn/stylefeng/roses/kernel/sms/modular/param/SysSmsSendParam.java roses/kernel-d-sms/sms-business-validation/src/main/java/cn/stylefeng/roses/kernel/sms/modular/param/SysSmsVerifyParam.java roses/kernel-d-sms/sms-business-validation/src/main/java/cn/stylefeng/roses/kernel/sms/modular/service/SysSmsInfoService.java roses/kernel-d-sms/sms-business-validation/src/main/java/cn/stylefeng/roses/kernel/sms/modular/service/impl/SysSmsInfoServiceImpl.java roses/kernel-d-sms/sms-sdk-aliyun/README.md roses/kernel-d-sms/sms-sdk-aliyun/pom.xml roses/kernel-d-sms/sms-sdk-aliyun/src/main/java/cn/stylefeng/roses/kernel/sms/aliyun/AliyunSmsSender.java roses/kernel-d-sms/sms-sdk-aliyun/src/main/java/cn/stylefeng/roses/kernel/sms/aliyun/enums/AliyunSmsResultEnum.java roses/kernel-d-sms/sms-sdk-aliyun/src/main/java/cn/stylefeng/roses/kernel/sms/aliyun/msign/MultiSignManager.java roses/kernel-d-sms/sms-sdk-aliyun/src/main/java/cn/stylefeng/roses/kernel/sms/aliyun/msign/impl/MapBasedMultiSignManager.java roses/kernel-d-sms/sms-sdk-huawei/README.md roses/kernel-d-sms/sms-sdk-huawei/pom.xml roses/kernel-d-sms/sms-sdk-huawei/src/main/java/cn/stylefeng/roses/kernel/sms/huawei/HuaweiSmsSender.java roses/kernel-d-sms/sms-sdk-tencent/README.md roses/kernel-d-sms/sms-sdk-tencent/pom.xml roses/kernel-d-sms/sms-sdk-tencent/src/main/java/cn/stylefeng/roses/kernel/sms/tencent/TencentSmsSender.java roses/kernel-d-sms/sms-spring-boot-starter/README.md roses/kernel-d-sms/sms-spring-boot-starter/pom.xml roses/kernel-d-sms/sms-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/sms/starter/GunsSmsAutoConfiguration.java roses/kernel-d-sms/sms-spring-boot-starter/src/main/resources/META-INF/spring.factories roses/kernel-d-socket/pom.xml roses/kernel-d-socket/socket-api/README.md roses/kernel-d-socket/socket-api/pom.xml roses/kernel-d-socket/socket-api/src/main/java/cn/stylefeng/roses/kernel/socket/api/SocketOperatorApi.java roses/kernel-d-socket/socket-api/src/main/java/cn/stylefeng/roses/kernel/socket/api/constants/SocketConstants.java roses/kernel-d-socket/socket-api/src/main/java/cn/stylefeng/roses/kernel/socket/api/enums/ClientMessageTypeEnum.java roses/kernel-d-socket/socket-api/src/main/java/cn/stylefeng/roses/kernel/socket/api/enums/ServerMessageTypeEnum.java roses/kernel-d-socket/socket-api/src/main/java/cn/stylefeng/roses/kernel/socket/api/enums/SystemMessageTypeEnum.java roses/kernel-d-socket/socket-api/src/main/java/cn/stylefeng/roses/kernel/socket/api/exception/SocketException.java roses/kernel-d-socket/socket-api/src/main/java/cn/stylefeng/roses/kernel/socket/api/exception/enums/SocketExceptionEnum.java roses/kernel-d-socket/socket-api/src/main/java/cn/stylefeng/roses/kernel/socket/api/message/SocketMsgCallbackInterface.java roses/kernel-d-socket/socket-api/src/main/java/cn/stylefeng/roses/kernel/socket/api/session/SocketSessionOperatorApi.java roses/kernel-d-socket/socket-api/src/main/java/cn/stylefeng/roses/kernel/socket/api/session/pojo/SocketSession.java roses/kernel-d-socket/socket-business-websocket/pom.xml roses/kernel-d-socket/socket-business-websocket/src/main/java/cn/stylefeng/roses/kernel/socket/business/websocket/config/WebSocketConfig.java roses/kernel-d-socket/socket-business-websocket/src/main/java/cn/stylefeng/roses/kernel/socket/business/websocket/message/SocketMessageCenter.java roses/kernel-d-socket/socket-business-websocket/src/main/java/cn/stylefeng/roses/kernel/socket/business/websocket/operator/WebSocketOperator.java roses/kernel-d-socket/socket-business-websocket/src/main/java/cn/stylefeng/roses/kernel/socket/business/websocket/operator/channel/GunsSocketOperator.java roses/kernel-d-socket/socket-business-websocket/src/main/java/cn/stylefeng/roses/kernel/socket/business/websocket/operator/channel/SocketChannelExpandInterFace.java roses/kernel-d-socket/socket-business-websocket/src/main/java/cn/stylefeng/roses/kernel/socket/business/websocket/pojo/WebSocketMessageDTO.java roses/kernel-d-socket/socket-business-websocket/src/main/java/cn/stylefeng/roses/kernel/socket/business/websocket/server/WebSocketServer.java roses/kernel-d-socket/socket-business-websocket/src/main/java/cn/stylefeng/roses/kernel/socket/business/websocket/session/SessionCenter.java roses/kernel-d-socket/socket-spring-boot-starter/README.md roses/kernel-d-socket/socket-spring-boot-starter/pom.xml roses/kernel-d-socket/socket-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/socket/starter/GunsSocketAutoConfiguration.java roses/kernel-d-socket/socket-spring-boot-starter/src/main/resources/META-INF/spring.factories roses/kernel-d-timer/README.md roses/kernel-d-timer/pom.xml roses/kernel-d-timer/timer-api/README.md roses/kernel-d-timer/timer-api/pom.xml roses/kernel-d-timer/timer-api/src/main/java/cn/stylefeng/roses/kernel/timer/api/TimerAction.java roses/kernel-d-timer/timer-api/src/main/java/cn/stylefeng/roses/kernel/timer/api/TimerExeService.java roses/kernel-d-timer/timer-api/src/main/java/cn/stylefeng/roses/kernel/timer/api/constants/TimerConstants.java roses/kernel-d-timer/timer-api/src/main/java/cn/stylefeng/roses/kernel/timer/api/enums/TimerJobStatusEnum.java roses/kernel-d-timer/timer-api/src/main/java/cn/stylefeng/roses/kernel/timer/api/exception/TimerException.java roses/kernel-d-timer/timer-api/src/main/java/cn/stylefeng/roses/kernel/timer/api/exception/enums/TimerExceptionEnum.java roses/kernel-d-timer/timer-business/README.md roses/kernel-d-timer/timer-business/pom.xml roses/kernel-d-timer/timer-business/src/main/java/cn/stylefeng/roses/kernel/timer/modular/controller/SysTimersController.java roses/kernel-d-timer/timer-business/src/main/java/cn/stylefeng/roses/kernel/timer/modular/entity/SysTimers.java roses/kernel-d-timer/timer-business/src/main/java/cn/stylefeng/roses/kernel/timer/modular/listener/TaskRunListener.java roses/kernel-d-timer/timer-business/src/main/java/cn/stylefeng/roses/kernel/timer/modular/mapper/SysTimersMapper.java roses/kernel-d-timer/timer-business/src/main/java/cn/stylefeng/roses/kernel/timer/modular/mapper/mapping/SysTimersMapper.xml roses/kernel-d-timer/timer-business/src/main/java/cn/stylefeng/roses/kernel/timer/modular/migration/TimerMigrationImpl.java roses/kernel-d-timer/timer-business/src/main/java/cn/stylefeng/roses/kernel/timer/modular/migration/pojo/TimerMigrationInfo.java roses/kernel-d-timer/timer-business/src/main/java/cn/stylefeng/roses/kernel/timer/modular/migration/pojo/v1/SysTimersMigration.java roses/kernel-d-timer/timer-business/src/main/java/cn/stylefeng/roses/kernel/timer/modular/param/SysTimersParam.java roses/kernel-d-timer/timer-business/src/main/java/cn/stylefeng/roses/kernel/timer/modular/service/SysTimersService.java roses/kernel-d-timer/timer-business/src/main/java/cn/stylefeng/roses/kernel/timer/modular/service/impl/SysTimersServiceImpl.java roses/kernel-d-timer/timer-business/src/main/java/cn/stylefeng/roses/kernel/timer/modular/tasks/SystemOutTaskRunner.java roses/kernel-d-timer/timer-sdk-hutool/README.md roses/kernel-d-timer/timer-sdk-hutool/pom.xml roses/kernel-d-timer/timer-sdk-hutool/src/main/java/cn/stylefeng/roses/kernel/timer/hutool/HutoolTimerExeServiceImpl.java roses/kernel-d-timer/timer-sdk-hutool/src/main/java/cn/stylefeng/roses/kernel/timer/hutool/TimerExeServiceImpl.java roses/kernel-d-timer/timer-spring-boot-starter/README.md roses/kernel-d-timer/timer-spring-boot-starter/pom.xml roses/kernel-d-timer/timer-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/timer/starter/GunsTimerAutoConfiguration.java roses/kernel-d-timer/timer-spring-boot-starter/src/main/resources/META-INF/spring.factories roses/kernel-d-validator/README.md roses/kernel-d-validator/pom.xml roses/kernel-d-validator/validator-api-table-unique/README.md roses/kernel-d-validator/validator-api-table-unique/pom.xml roses/kernel-d-validator/validator-api-table-unique/src/main/java/cn/stylefeng/roses/kernel/validator/api/validators/unique/TableUniqueValue.java roses/kernel-d-validator/validator-api-table-unique/src/main/java/cn/stylefeng/roses/kernel/validator/api/validators/unique/TableUniqueValueValidator.java roses/kernel-d-validator/validator-api-table-unique/src/main/java/cn/stylefeng/roses/kernel/validator/api/validators/unique/service/TableUniqueValueService.java roses/kernel-d-validator/validator-api/README.md roses/kernel-d-validator/validator-api/pom.xml roses/kernel-d-validator/validator-api/src/main/java/cn/stylefeng/roses/kernel/validator/api/constants/ValidatorConstants.java roses/kernel-d-validator/validator-api/src/main/java/cn/stylefeng/roses/kernel/validator/api/context/RequestGroupContext.java roses/kernel-d-validator/validator-api/src/main/java/cn/stylefeng/roses/kernel/validator/api/context/RequestParamContext.java roses/kernel-d-validator/validator-api/src/main/java/cn/stylefeng/roses/kernel/validator/api/context/RequestRemoveThreadLocalHolder.java roses/kernel-d-validator/validator-api/src/main/java/cn/stylefeng/roses/kernel/validator/api/exception/ParamValidateException.java roses/kernel-d-validator/validator-api/src/main/java/cn/stylefeng/roses/kernel/validator/api/exception/enums/ValidatorExceptionEnum.java roses/kernel-d-validator/validator-api/src/main/java/cn/stylefeng/roses/kernel/validator/api/pojo/UniqueValidateParam.java roses/kernel-d-validator/validator-api/src/main/java/cn/stylefeng/roses/kernel/validator/api/utils/ValidatorUtil.java roses/kernel-d-validator/validator-api/src/main/java/cn/stylefeng/roses/kernel/validator/api/validators/date/DateValue.java roses/kernel-d-validator/validator-api/src/main/java/cn/stylefeng/roses/kernel/validator/api/validators/date/DateValueValidator.java roses/kernel-d-validator/validator-api/src/main/java/cn/stylefeng/roses/kernel/validator/api/validators/flag/FlagValue.java roses/kernel-d-validator/validator-api/src/main/java/cn/stylefeng/roses/kernel/validator/api/validators/flag/FlagValueValidator.java roses/kernel-d-validator/validator-api/src/main/java/cn/stylefeng/roses/kernel/validator/api/validators/phone/PhoneValue.java roses/kernel-d-validator/validator-api/src/main/java/cn/stylefeng/roses/kernel/validator/api/validators/phone/PhoneValueValidator.java roses/kernel-d-validator/validator-api/src/main/java/cn/stylefeng/roses/kernel/validator/api/validators/status/StatusValue.java roses/kernel-d-validator/validator-api/src/main/java/cn/stylefeng/roses/kernel/validator/api/validators/status/StatusValueValidator.java roses/kernel-d-validator/validator-spring-boot-starter/README.md roses/kernel-d-validator/validator-spring-boot-starter/pom.xml roses/kernel-d-validator/validator-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/validator/starter/CacheParamRequestBodyAdvice.java roses/kernel-d-validator/validator-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/validator/starter/GunsValidator.java roses/kernel-d-validator/validator-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/validator/starter/GunsValidatorAutoConfiguration.java roses/kernel-d-validator/validator-spring-boot-starter/src/main/resources/META-INF/spring.factories roses/kernel-d-wrapper/README.md roses/kernel-d-wrapper/pom.xml roses/kernel-d-wrapper/wrapper-api/README.md roses/kernel-d-wrapper/wrapper-api/pom.xml roses/kernel-d-wrapper/wrapper-api/src/main/java/cn/stylefeng/roses/kernel/wrapper/api/BaseWrapper.java roses/kernel-d-wrapper/wrapper-api/src/main/java/cn/stylefeng/roses/kernel/wrapper/api/annotation/Wrapper.java roses/kernel-d-wrapper/wrapper-api/src/main/java/cn/stylefeng/roses/kernel/wrapper/api/constants/WrapperConstants.java roses/kernel-d-wrapper/wrapper-api/src/main/java/cn/stylefeng/roses/kernel/wrapper/api/exception/WrapperException.java roses/kernel-d-wrapper/wrapper-api/src/main/java/cn/stylefeng/roses/kernel/wrapper/api/exception/enums/WrapperExceptionEnum.java roses/kernel-d-wrapper/wrapper-field-sdk/README.md roses/kernel-d-wrapper/wrapper-field-sdk/pom.xml roses/kernel-d-wrapper/wrapper-field-sdk/src/main/java/cn/stylefeng/roses/kernel/wrapper/field/enums/EnumFieldFormatDeserializer.java roses/kernel-d-wrapper/wrapper-field-sdk/src/main/java/cn/stylefeng/roses/kernel/wrapper/field/enums/EnumFieldFormatSerializer.java roses/kernel-d-wrapper/wrapper-field-sdk/src/main/java/cn/stylefeng/roses/kernel/wrapper/field/jackson/CustomJacksonIntrospector.java roses/kernel-d-wrapper/wrapper-field-sdk/src/main/java/cn/stylefeng/roses/kernel/wrapper/field/jackson/package-info.java roses/kernel-d-wrapper/wrapper-field-sdk/src/main/java/cn/stylefeng/roses/kernel/wrapper/field/mvc/CustomEnumGenericConverter.java roses/kernel-d-wrapper/wrapper-field-sdk/src/main/java/cn/stylefeng/roses/kernel/wrapper/field/simple/SimpleFieldFormatSerializer.java roses/kernel-d-wrapper/wrapper-field-sdk/src/main/java/cn/stylefeng/roses/kernel/wrapper/field/util/CommonFormatUtil.java roses/kernel-d-wrapper/wrapper-sdk/README.md roses/kernel-d-wrapper/wrapper-sdk/pom.xml roses/kernel-d-wrapper/wrapper-sdk/src/main/java/cn/stylefeng/roses/kernel/wrapper/WrapperAop.java roses/kernel-d-wrapper/wrapper-spring-boot-starter/README.md roses/kernel-d-wrapper/wrapper-spring-boot-starter/pom.xml roses/kernel-d-wrapper/wrapper-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/wrapper/starter/GunsDateConvertAutoConfiguration.java roses/kernel-d-wrapper/wrapper-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/wrapper/starter/GunsWrapperAutoConfiguration.java roses/kernel-d-wrapper/wrapper-spring-boot-starter/src/main/resources/META-INF/spring.factories roses/kernel-o-monitor/README.md roses/kernel-o-monitor/monitor-api/README.md roses/kernel-o-monitor/monitor-api/pom.xml roses/kernel-o-monitor/monitor-api/src/main/java/cn/stylefeng/roses/kernel/monitor/api/constants/MonitorConstants.java roses/kernel-o-monitor/monitor-api/src/main/java/cn/stylefeng/roses/kernel/monitor/api/exception/MonitorException.java roses/kernel-o-monitor/monitor-api/src/main/java/cn/stylefeng/roses/kernel/monitor/api/exception/enums/MonitorExceptionEnum.java roses/kernel-o-monitor/monitor-api/src/main/java/cn/stylefeng/roses/kernel/monitor/api/pojo/CpuInfo.java roses/kernel-o-monitor/monitor-api/src/main/java/cn/stylefeng/roses/kernel/monitor/api/pojo/JvmInfo.java roses/kernel-o-monitor/monitor-api/src/main/java/cn/stylefeng/roses/kernel/monitor/api/pojo/MemInfo.java roses/kernel-o-monitor/monitor-api/src/main/java/cn/stylefeng/roses/kernel/monitor/api/pojo/SysFileInfo.java roses/kernel-o-monitor/monitor-api/src/main/java/cn/stylefeng/roses/kernel/monitor/api/pojo/SysInfo.java roses/kernel-o-monitor/monitor-business-system-info/README.md roses/kernel-o-monitor/monitor-business-system-info/pom.xml roses/kernel-o-monitor/monitor-business-system-info/src/main/java/cn/stylefeng/roses/kernel/monitor/system/SystemHardwareCalculator.java roses/kernel-o-monitor/monitor-business-system-info/src/main/java/cn/stylefeng/roses/kernel/monitor/system/controller/MonitorStatusController.java roses/kernel-o-monitor/monitor-business-system-info/src/main/java/cn/stylefeng/roses/kernel/monitor/system/holder/SystemHardwareInfoHolder.java roses/kernel-o-monitor/monitor-spring-boot-starter/README.md roses/kernel-o-monitor/monitor-spring-boot-starter/pom.xml roses/kernel-o-monitor/monitor-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/monitor/starter/GunsMonitorAutoConfiguration.java roses/kernel-o-monitor/monitor-spring-boot-starter/src/main/resources/META-INF/spring.factories roses/kernel-o-monitor/pom.xml roses/kernel-s-customer/README.md roses/kernel-s-customer/customer-api/README.md roses/kernel-s-customer/customer-api/pom.xml roses/kernel-s-customer/customer-api/src/main/java/cn/stylefeng/roses/kernel/customer/api/CustomerApi.java roses/kernel-s-customer/customer-api/src/main/java/cn/stylefeng/roses/kernel/customer/api/OldPasswordValidateApi.java roses/kernel-s-customer/customer-api/src/main/java/cn/stylefeng/roses/kernel/customer/api/constants/CustomerConstants.java roses/kernel-s-customer/customer-api/src/main/java/cn/stylefeng/roses/kernel/customer/api/exception/CustomerException.java roses/kernel-s-customer/customer-api/src/main/java/cn/stylefeng/roses/kernel/customer/api/exception/enums/CustomerExceptionEnum.java roses/kernel-s-customer/customer-api/src/main/java/cn/stylefeng/roses/kernel/customer/api/expander/CustomerConfigExpander.java roses/kernel-s-customer/customer-api/src/main/java/cn/stylefeng/roses/kernel/customer/api/pojo/CustomerInfo.java roses/kernel-s-customer/customer-api/src/main/java/cn/stylefeng/roses/kernel/customer/api/pojo/CustomerInfoChangeAvatarPasswordRequest.java roses/kernel-s-customer/customer-api/src/main/java/cn/stylefeng/roses/kernel/customer/api/pojo/CustomerInfoRequest.java roses/kernel-s-customer/customer-api/src/main/java/cn/stylefeng/roses/kernel/customer/api/pojo/UserDetailMentalTestRecordDTO.java roses/kernel-s-customer/customer-api/src/main/java/cn/stylefeng/roses/kernel/customer/api/pojo/UserDetailMentalTestRecordNlwpDTO.java roses/kernel-s-customer/customer-api/src/main/java/cn/stylefeng/roses/kernel/customer/api/pojo/UserManagePageResponseDTO.java roses/kernel-s-customer/customer-business/README.md roses/kernel-s-customer/customer-business/pom.xml roses/kernel-s-customer/customer-business/src/main/java/cn/stylefeng/roses/kernel/customer/modular/cache/CustomerMemoryCache.java roses/kernel-s-customer/customer-business/src/main/java/cn/stylefeng/roses/kernel/customer/modular/cache/CustomerRedisCache.java roses/kernel-s-customer/customer-business/src/main/java/cn/stylefeng/roses/kernel/customer/modular/controller/CustomerController.java roses/kernel-s-customer/customer-business/src/main/java/cn/stylefeng/roses/kernel/customer/modular/controller/CustomerInfoController.java roses/kernel-s-customer/customer-business/src/main/java/cn/stylefeng/roses/kernel/customer/modular/controller/CustomerManageController.java roses/kernel-s-customer/customer-business/src/main/java/cn/stylefeng/roses/kernel/customer/modular/entity/Customer.java roses/kernel-s-customer/customer-business/src/main/java/cn/stylefeng/roses/kernel/customer/modular/factory/CustomerFactory.java roses/kernel-s-customer/customer-business/src/main/java/cn/stylefeng/roses/kernel/customer/modular/mapper/CustomerMapper.java roses/kernel-s-customer/customer-business/src/main/java/cn/stylefeng/roses/kernel/customer/modular/mapper/mapping/CustomerMapper.xml roses/kernel-s-customer/customer-business/src/main/java/cn/stylefeng/roses/kernel/customer/modular/request/CustomerIdRequest.java roses/kernel-s-customer/customer-business/src/main/java/cn/stylefeng/roses/kernel/customer/modular/request/CustomerRequest.java roses/kernel-s-customer/customer-business/src/main/java/cn/stylefeng/roses/kernel/customer/modular/service/CustomerService.java roses/kernel-s-customer/customer-business/src/main/java/cn/stylefeng/roses/kernel/customer/modular/service/OldPasswordValidateService.java roses/kernel-s-customer/customer-business/src/main/java/cn/stylefeng/roses/kernel/customer/modular/service/impl/CustomerServiceImpl.java roses/kernel-s-customer/customer-spring-boot-starter/README.md roses/kernel-s-customer/customer-spring-boot-starter/pom.xml roses/kernel-s-customer/customer-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/customer/starter/GunsCustomerMemoryAutoConfiguration.java roses/kernel-s-customer/customer-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/customer/starter/GunsCustomerRedisAutoConfiguration.java roses/kernel-s-customer/customer-spring-boot-starter/src/main/resources/META-INF/spring.factories roses/kernel-s-customer/pom.xml roses/kernel-s-demo/README.md roses/kernel-s-demo/demo-api/README.md roses/kernel-s-demo/demo-api/pom.xml roses/kernel-s-demo/demo-api/src/main/java/cn/stylefeng/roses/kernel/demo/constants/DemoConstants.java roses/kernel-s-demo/demo-api/src/main/java/cn/stylefeng/roses/kernel/demo/exception/DemoException.java roses/kernel-s-demo/demo-api/src/main/java/cn/stylefeng/roses/kernel/demo/exception/enums/DemoExceptionEnum.java roses/kernel-s-demo/demo-api/src/main/java/cn/stylefeng/roses/kernel/demo/expander/DemoConfigExpander.java roses/kernel-s-demo/demo-api/src/main/java/cn/stylefeng/roses/kernel/demo/util/StartCalcUtil.java roses/kernel-s-demo/demo-business/README.md roses/kernel-s-demo/demo-business/pom.xml roses/kernel-s-demo/demo-business/src/main/java/cn/stylefeng/roses/kernel/demo/interceptor/DemoProfileSqlInterceptor.java roses/kernel-s-demo/demo-spring-boot-starter/README.md roses/kernel-s-demo/demo-spring-boot-starter/pom.xml roses/kernel-s-demo/demo-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/demo/starter/GunsDemoAutoConfiguration.java roses/kernel-s-demo/demo-spring-boot-starter/src/main/resources/META-INF/spring.factories roses/kernel-s-demo/pom.xml roses/kernel-s-dict/README.md roses/kernel-s-dict/dict-api/README.md roses/kernel-s-dict/dict-api/pom.xml roses/kernel-s-dict/dict-api/src/main/java/cn/stylefeng/roses/kernel/dict/api/DictApi.java roses/kernel-s-dict/dict-api/src/main/java/cn/stylefeng/roses/kernel/dict/api/constants/DictConstants.java roses/kernel-s-dict/dict-api/src/main/java/cn/stylefeng/roses/kernel/dict/api/context/DictContext.java roses/kernel-s-dict/dict-api/src/main/java/cn/stylefeng/roses/kernel/dict/api/enums/DictTypeClassEnum.java roses/kernel-s-dict/dict-api/src/main/java/cn/stylefeng/roses/kernel/dict/api/exception/DictException.java roses/kernel-s-dict/dict-api/src/main/java/cn/stylefeng/roses/kernel/dict/api/exception/enums/DictExceptionEnum.java roses/kernel-s-dict/dict-api/src/main/java/cn/stylefeng/roses/kernel/dict/api/pojo/dict/request/ParentIdsUpdateRequest.java roses/kernel-s-dict/dict-api/src/main/java/cn/stylefeng/roses/kernel/dict/api/serializer/DictValueSerializer.java roses/kernel-s-dict/dict-business/README.md roses/kernel-s-dict/dict-business/pom.xml roses/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/controller/DictController.java roses/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/controller/DictTypeController.java roses/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/entity/SysDict.java roses/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/entity/SysDictType.java roses/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/init/DictInitializer.java roses/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/init/DictTypeInitializer.java roses/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/mapper/DictMapper.java roses/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/mapper/DictTypeMapper.java roses/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/mapper/mapping/DictMapper.xml roses/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/mapper/mapping/DictTypeMapper.xml roses/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/pojo/TreeDictInfo.java roses/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/pojo/request/DictRequest.java roses/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/pojo/request/DictTypeRequest.java roses/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/service/DictService.java roses/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/service/DictTypeService.java roses/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/service/impl/DictServiceImpl.java roses/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/service/impl/DictTypeServiceImpl.java roses/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/sqladapter/DictSql.java roses/kernel-s-dict/dict-business/src/main/java/cn/stylefeng/roses/kernel/dict/modular/sqladapter/DictTypeSql.java roses/kernel-s-dict/dict-spring-boot-starter/README.md roses/kernel-s-dict/dict-spring-boot-starter/pom.xml roses/kernel-s-dict/dict-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/dict/starter/GunsDictAutoConfiguration.java roses/kernel-s-dict/dict-spring-boot-starter/src/main/resources/META-INF/spring.factories roses/kernel-s-dict/pom.xml roses/kernel-s-expand/.gitignore roses/kernel-s-expand/README.md roses/kernel-s-expand/expand-api/README.md roses/kernel-s-expand/expand-api/pom.xml roses/kernel-s-expand/expand-api/src/main/java/cn/stylefeng/roses/kernel/expand/modular/api/ExpandApi.java roses/kernel-s-expand/expand-api/src/main/java/cn/stylefeng/roses/kernel/expand/modular/api/constants/ExpandConstants.java roses/kernel-s-expand/expand-api/src/main/java/cn/stylefeng/roses/kernel/expand/modular/api/enums/DemoEnum.java roses/kernel-s-expand/expand-api/src/main/java/cn/stylefeng/roses/kernel/expand/modular/api/enums/FieldTypeEnum.java roses/kernel-s-expand/expand-api/src/main/java/cn/stylefeng/roses/kernel/expand/modular/api/exception/ExpandException.java roses/kernel-s-expand/expand-api/src/main/java/cn/stylefeng/roses/kernel/expand/modular/api/exception/enums/ExpandExceptionEnum.java roses/kernel-s-expand/expand-api/src/main/java/cn/stylefeng/roses/kernel/expand/modular/api/pojo/ExpandDataInfo.java roses/kernel-s-expand/expand-api/src/main/java/cn/stylefeng/roses/kernel/expand/modular/api/pojo/ExpandFieldInfo.java roses/kernel-s-expand/expand-business/README.md roses/kernel-s-expand/expand-business/pom.xml roses/kernel-s-expand/expand-business/src/main/java/cn/stylefeng/roses/kernel/expand/modular/modular/controller/SysExpandController.java roses/kernel-s-expand/expand-business/src/main/java/cn/stylefeng/roses/kernel/expand/modular/modular/controller/SysExpandDataController.java roses/kernel-s-expand/expand-business/src/main/java/cn/stylefeng/roses/kernel/expand/modular/modular/controller/SysExpandFieldController.java roses/kernel-s-expand/expand-business/src/main/java/cn/stylefeng/roses/kernel/expand/modular/modular/entity/SysExpand.java roses/kernel-s-expand/expand-business/src/main/java/cn/stylefeng/roses/kernel/expand/modular/modular/entity/SysExpandData.java roses/kernel-s-expand/expand-business/src/main/java/cn/stylefeng/roses/kernel/expand/modular/modular/entity/SysExpandField.java roses/kernel-s-expand/expand-business/src/main/java/cn/stylefeng/roses/kernel/expand/modular/modular/enums/SysExpandDataExceptionEnum.java roses/kernel-s-expand/expand-business/src/main/java/cn/stylefeng/roses/kernel/expand/modular/modular/enums/SysExpandExceptionEnum.java roses/kernel-s-expand/expand-business/src/main/java/cn/stylefeng/roses/kernel/expand/modular/modular/enums/SysExpandFieldExceptionEnum.java roses/kernel-s-expand/expand-business/src/main/java/cn/stylefeng/roses/kernel/expand/modular/modular/mapper/SysExpandDataMapper.java roses/kernel-s-expand/expand-business/src/main/java/cn/stylefeng/roses/kernel/expand/modular/modular/mapper/SysExpandFieldMapper.java roses/kernel-s-expand/expand-business/src/main/java/cn/stylefeng/roses/kernel/expand/modular/modular/mapper/SysExpandMapper.java roses/kernel-s-expand/expand-business/src/main/java/cn/stylefeng/roses/kernel/expand/modular/modular/mapper/mapping/SysExpandDataMapper.xml roses/kernel-s-expand/expand-business/src/main/java/cn/stylefeng/roses/kernel/expand/modular/modular/mapper/mapping/SysExpandFieldMapper.xml roses/kernel-s-expand/expand-business/src/main/java/cn/stylefeng/roses/kernel/expand/modular/modular/mapper/mapping/SysExpandMapper.xml roses/kernel-s-expand/expand-business/src/main/java/cn/stylefeng/roses/kernel/expand/modular/modular/pojo/request/SysExpandDataRequest.java roses/kernel-s-expand/expand-business/src/main/java/cn/stylefeng/roses/kernel/expand/modular/modular/pojo/request/SysExpandFieldRequest.java roses/kernel-s-expand/expand-business/src/main/java/cn/stylefeng/roses/kernel/expand/modular/modular/pojo/request/SysExpandRequest.java roses/kernel-s-expand/expand-business/src/main/java/cn/stylefeng/roses/kernel/expand/modular/modular/service/SysExpandDataService.java roses/kernel-s-expand/expand-business/src/main/java/cn/stylefeng/roses/kernel/expand/modular/modular/service/SysExpandFieldService.java roses/kernel-s-expand/expand-business/src/main/java/cn/stylefeng/roses/kernel/expand/modular/modular/service/SysExpandService.java roses/kernel-s-expand/expand-business/src/main/java/cn/stylefeng/roses/kernel/expand/modular/modular/service/impl/SysExpandDataServiceImpl.java roses/kernel-s-expand/expand-business/src/main/java/cn/stylefeng/roses/kernel/expand/modular/modular/service/impl/SysExpandFieldServiceImpl.java roses/kernel-s-expand/expand-business/src/main/java/cn/stylefeng/roses/kernel/expand/modular/modular/service/impl/SysExpandServiceImpl.java roses/kernel-s-expand/expand-spring-boot-starter/README.md roses/kernel-s-expand/expand-spring-boot-starter/pom.xml roses/kernel-s-expand/expand-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/expand/modular/starter/ExpandAutoConfiguration.java roses/kernel-s-expand/expand-spring-boot-starter/src/main/resources/META-INF/spring.factories roses/kernel-s-expand/pom.xml roses/kernel-s-group/README.md roses/kernel-s-group/group-api/README.md roses/kernel-s-group/group-api/pom.xml roses/kernel-s-group/group-api/src/main/java/cn/stylefeng/roses/kernel/group/api/GroupApi.java roses/kernel-s-group/group-api/src/main/java/cn/stylefeng/roses/kernel/group/api/constants/GroupConstants.java roses/kernel-s-group/group-api/src/main/java/cn/stylefeng/roses/kernel/group/api/exception/GroupException.java roses/kernel-s-group/group-api/src/main/java/cn/stylefeng/roses/kernel/group/api/exception/enums/GroupExceptionEnum.java roses/kernel-s-group/group-api/src/main/java/cn/stylefeng/roses/kernel/group/api/pojo/SysGroupDTO.java roses/kernel-s-group/group-api/src/main/java/cn/stylefeng/roses/kernel/group/api/pojo/SysGroupRequest.java roses/kernel-s-group/group-business/README.md roses/kernel-s-group/group-business/pom.xml roses/kernel-s-group/group-business/src/main/java/cn/stylefeng/roses/kernel/group/modular/controller/SysGroupController.java roses/kernel-s-group/group-business/src/main/java/cn/stylefeng/roses/kernel/group/modular/entity/SysGroup.java roses/kernel-s-group/group-business/src/main/java/cn/stylefeng/roses/kernel/group/modular/enums/SysGroupExceptionEnum.java roses/kernel-s-group/group-business/src/main/java/cn/stylefeng/roses/kernel/group/modular/mapper/SysGroupMapper.java roses/kernel-s-group/group-business/src/main/java/cn/stylefeng/roses/kernel/group/modular/mapper/mapping/SysGroupMapper.xml roses/kernel-s-group/group-business/src/main/java/cn/stylefeng/roses/kernel/group/modular/service/SysGroupService.java roses/kernel-s-group/group-business/src/main/java/cn/stylefeng/roses/kernel/group/modular/service/impl/SysGroupServiceImpl.java roses/kernel-s-group/group-spring-boot-starter/README.md roses/kernel-s-group/group-spring-boot-starter/pom.xml roses/kernel-s-group/group-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/group/starter/GroupAutoConfiguration.java roses/kernel-s-group/group-spring-boot-starter/src/main/resources/META-INF/spring.factories roses/kernel-s-group/pom.xml roses/kernel-s-message/README.md roses/kernel-s-message/message-api/README.md roses/kernel-s-message/message-api/pom.xml roses/kernel-s-message/message-api/src/main/java/cn/stylefeng/roses/kernel/message/api/MessageApi.java roses/kernel-s-message/message-api/src/main/java/cn/stylefeng/roses/kernel/message/api/constants/MessageConstants.java roses/kernel-s-message/message-api/src/main/java/cn/stylefeng/roses/kernel/message/api/context/MessageContext.java roses/kernel-s-message/message-api/src/main/java/cn/stylefeng/roses/kernel/message/api/enums/MessageBusinessTypeEnum.java roses/kernel-s-message/message-api/src/main/java/cn/stylefeng/roses/kernel/message/api/enums/MessagePriorityLevelEnum.java roses/kernel-s-message/message-api/src/main/java/cn/stylefeng/roses/kernel/message/api/enums/MessageReadFlagEnum.java roses/kernel-s-message/message-api/src/main/java/cn/stylefeng/roses/kernel/message/api/enums/MessageTypeEnum.java roses/kernel-s-message/message-api/src/main/java/cn/stylefeng/roses/kernel/message/api/exception/MessageException.java roses/kernel-s-message/message-api/src/main/java/cn/stylefeng/roses/kernel/message/api/exception/enums/MessageExceptionEnum.java roses/kernel-s-message/message-api/src/main/java/cn/stylefeng/roses/kernel/message/api/expander/WebSocketConfigExpander.java roses/kernel-s-message/message-api/src/main/java/cn/stylefeng/roses/kernel/message/api/pojo/request/MessageRequest.java roses/kernel-s-message/message-api/src/main/java/cn/stylefeng/roses/kernel/message/api/pojo/request/MessageSendRequest.java roses/kernel-s-message/message-api/src/main/java/cn/stylefeng/roses/kernel/message/api/pojo/response/MessageResponse.java roses/kernel-s-message/message-business/README.md roses/kernel-s-message/message-business/pom.xml roses/kernel-s-message/message-business/src/main/java/cn/stylefeng/roses/kernel/message/modular/controller/SysMessageController.java roses/kernel-s-message/message-sdk-db/README.md roses/kernel-s-message/message-sdk-db/pom.xml roses/kernel-s-message/message-sdk-db/src/main/java/cn/stylefeng/roses/kernel/message/db/MessageDbServiceImpl.java roses/kernel-s-message/message-sdk-db/src/main/java/cn/stylefeng/roses/kernel/message/db/entity/SysMessage.java roses/kernel-s-message/message-sdk-db/src/main/java/cn/stylefeng/roses/kernel/message/db/mapper/SysMessageMapper.java roses/kernel-s-message/message-sdk-db/src/main/java/cn/stylefeng/roses/kernel/message/db/mapper/mapping/SysMessageMapper.xml roses/kernel-s-message/message-sdk-db/src/main/java/cn/stylefeng/roses/kernel/message/db/service/SysMessageService.java roses/kernel-s-message/message-sdk-db/src/main/java/cn/stylefeng/roses/kernel/message/db/service/impl/SysMessageServiceImpl.java roses/kernel-s-message/message-spring-boot-starter/README.md roses/kernel-s-message/message-spring-boot-starter/pom.xml roses/kernel-s-message/message-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/message/starter/GunsMessageAutoConfiguration.java roses/kernel-s-message/message-spring-boot-starter/src/main/resources/META-INF/spring.factories roses/kernel-s-message/pom.xml roses/kernel-s-migration/migration-api/pom.xml roses/kernel-s-migration/migration-api/src/main/java/cn/stylefeng/roses/kernel/migration/api/AccessMigrationApi.java roses/kernel-s-migration/migration-api/src/main/java/cn/stylefeng/roses/kernel/migration/api/constants/MigrationConstants.java roses/kernel-s-migration/migration-api/src/main/java/cn/stylefeng/roses/kernel/migration/api/enums/MigrationAggregationTypeEnum.java roses/kernel-s-migration/migration-api/src/main/java/cn/stylefeng/roses/kernel/migration/api/exception/MigrationException.java roses/kernel-s-migration/migration-api/src/main/java/cn/stylefeng/roses/kernel/migration/api/exception/enums/MigrationExceptionEnum.java roses/kernel-s-migration/migration-api/src/main/java/cn/stylefeng/roses/kernel/migration/api/expander/MigrationConfigExpander.java roses/kernel-s-migration/migration-api/src/main/java/cn/stylefeng/roses/kernel/migration/api/pojo/MigrationAggregationPOJO.java roses/kernel-s-migration/migration-api/src/main/java/cn/stylefeng/roses/kernel/migration/api/pojo/MigrationInfo.java roses/kernel-s-migration/migration-business-web/pom.xml roses/kernel-s-migration/migration-business-web/src/main/java/cn/stylefeng/roses/kernel/migration/web/controller/MigrationController.java roses/kernel-s-migration/migration-business-web/src/main/java/cn/stylefeng/roses/kernel/migration/web/pojo/MigrationRequest.java roses/kernel-s-migration/migration-business-web/src/main/java/cn/stylefeng/roses/kernel/migration/web/service/MigrationService.java roses/kernel-s-migration/migration-business-web/src/main/java/cn/stylefeng/roses/kernel/migration/web/service/impl/MigrationServiceImpl.java roses/kernel-s-migration/migration-sdk-data-aggregation/pom.xml roses/kernel-s-migration/migration-sdk-data-aggregation/src/main/java/cn/stylefeng/roses/kernel/migration/aggregation/scheduling/SchedulingCenter.java roses/kernel-s-migration/migration-spring-boot-starter/pom.xml roses/kernel-s-migration/migration-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/migration/starter/spring/MigrationApplicationRunnerImpl.java roses/kernel-s-migration/migration-spring-boot-starter/src/main/resources/META-INF/spring.factories roses/kernel-s-migration/pom.xml roses/kernel-s-system/README.md roses/kernel-s-system/pom.xml roses/kernel-s-system/system-api/README.md roses/kernel-s-system/system-api/pom.xml roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/AppServiceApi.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/DataScopeApi.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/HomePageServiceApi.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/MenuServiceApi.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/NoticeServiceApi.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/OrganizationServiceApi.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/PositionServiceApi.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/ResourceServiceApi.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/RoleDataScopeServiceApi.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/RoleServiceApi.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/SysUserRoleApi.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/ThemeServiceApi.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/UserOrgServiceApi.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/UserServiceApi.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/constants/StatisticsCacheConstants.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/constants/SystemCachesConstants.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/constants/SystemConstants.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/enums/AntdvFrontTypeEnum.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/enums/DetectModeEnum.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/enums/DevopsCheckStatusEnum.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/enums/LinkOpenTypeEnum.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/enums/OrgApproverTypeEnum.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/enums/OrgTypeEnum.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/enums/UserGroupSelectTypeEnum.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/enums/UserStatusEnum.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/exception/SystemModularException.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/exception/enums/app/AppExceptionEnum.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/exception/enums/log/LogExceptionEnum.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/exception/enums/menu/SysMenuButtonExceptionEnum.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/exception/enums/menu/SysMenuExceptionEnum.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/exception/enums/notice/NoticeExceptionEnum.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/exception/enums/organization/DataScopeExceptionEnum.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/exception/enums/organization/OrganizationExceptionEnum.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/exception/enums/organization/PositionExceptionEnum.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/exception/enums/role/SysRoleExceptionEnum.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/exception/enums/theme/SysThemeExceptionEnum.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/exception/enums/theme/SysThemeTemplateExceptionEnum.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/exception/enums/theme/SysThemeTemplateFieldExceptionEnum.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/exception/enums/theme/SysThemeTemplateRelExceptionEnum.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/exception/enums/user/SysUserDataScopeExceptionEnum.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/exception/enums/user/SysUserExceptionEnum.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/exception/enums/user/SysUserOrgExceptionEnum.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/expander/SystemConfigExpander.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/format/UserFormatProcess.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/app/SysAppRequest.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/app/SysAppResult.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/home/HomeCompanyInfo.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/login/CurrentUserInfoResponse.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/login/ValidateTokenRequest.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/login/v3/IndexMenuInfo.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/login/v3/IndexRoleInfo.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/login/v3/IndexUserInfoV3.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/menu/MenuAndButtonTreeResponse.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/menu/SysMenuAddEditRequest.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/menu/SysMenuButtonAddEditRequest.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/menu/SysMenuButtonDTO.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/menu/SysMenuButtonRequest.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/menu/SysMenuRequest.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/menu/SysMenuResourceRequest.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/menu/antd/AntdMenuSelectTreeNode.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/menu/antd/AntdSysMenuDTO.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/menu/antd/AntdvMenuAuthorityItem.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/menu/antd/AntdvMenuItem.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/menu/layui/LayuiAppIndexMenusVO.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/menu/layui/LayuiIndexMenuTreeNode.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/menu/layui/LayuiMenuAndButtonTreeResponse.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/notice/SysNoticeRequest.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/organization/BindUserItem.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/organization/DataScopeDTO.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/organization/HrOrganizationAddUpdateRequest.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/organization/HrOrganizationDTO.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/organization/HrOrganizationRequest.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/organization/HrPositionDTO.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/organization/HrPositionRequest.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/organization/OrganizationTreeNode.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/resource/LayuiApiResourceTreeNode.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/resource/ResourceRequest.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/role/dto/RoleAuthorizeInfo.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/role/dto/SysRoleDTO.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/role/dto/SysRoleMenuButtonDTO.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/role/dto/SysRoleMenuDTO.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/role/dto/SysRoleResourceDTO.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/role/request/SysRoleAddEditRequest.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/role/request/SysRoleDataScopeRequest.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/role/request/SysRoleGrantMenuAndButtonRequest.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/role/request/SysRoleMenuButtonRequest.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/role/request/SysRoleRequest.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/theme/SysThemeDTO.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/theme/SysThemeRequest.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/theme/SysThemeTemplateDataDTO.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/theme/SysThemeTemplateFieldRequest.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/theme/SysThemeTemplateRelRequest.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/theme/SysThemeTemplateRequest.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/user/OAuth2AuthUserDTO.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/user/OnlineUserDTO.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/user/SysUserAdminDTO.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/user/SysUserDTO.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/user/SysUserOrgDTO.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/user/UserLoginInfoDTO.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/user/UserSelectTreeNode.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/user/request/OnlineUserRequest.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/user/request/SysAdminRequest.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/user/request/SysUserAddUpdateRequest.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/user/request/SysUserDeleteRequest.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/user/request/SysUserPageRequest.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/user/request/SysUserRequest.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/user/request/SysUserWorkStatusRequest.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/user/request/UserDataScopeRequest.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/user/request/UserOrgRequest.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/user/request/UserRoleRequest.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/usergroup/SelectItem.java roses/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/util/DataScopeUtil.java roses/kernel-s-system/system-business-app/README.md roses/kernel-s-system/system-business-app/pom.xml roses/kernel-s-system/system-business-app/src/main/java/cn/stylefeng/roses/kernel/system/modular/app/controller/SysAppController.java roses/kernel-s-system/system-business-app/src/main/java/cn/stylefeng/roses/kernel/system/modular/app/entity/SysApp.java roses/kernel-s-system/system-business-app/src/main/java/cn/stylefeng/roses/kernel/system/modular/app/mapper/SysAppMapper.java roses/kernel-s-system/system-business-app/src/main/java/cn/stylefeng/roses/kernel/system/modular/app/mapper/mapping/SysAppMapper.xml roses/kernel-s-system/system-business-app/src/main/java/cn/stylefeng/roses/kernel/system/modular/app/service/SysAppService.java roses/kernel-s-system/system-business-app/src/main/java/cn/stylefeng/roses/kernel/system/modular/app/service/impl/SysAppServiceImpl.java roses/kernel-s-system/system-business-home/pom.xml roses/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/aop/InterfaceStatisticsAop.java roses/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/cache/InterfaceStatisticsMemoryCache.java roses/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/cache/InterfaceStatisticsRedisCache.java roses/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/context/StatisticsUrlContext.java roses/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/controller/HomePageController.java roses/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/controller/SysStatisticsController.java roses/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/entity/SysStatisticsCount.java roses/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/entity/SysStatisticsUrl.java roses/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/enums/SysStatisticsCountExceptionEnum.java roses/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/enums/SysStatisticsUrlExceptionEnum.java roses/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/mapper/SysStatisticsCountMapper.java roses/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/mapper/SysStatisticsUrlMapper.java roses/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/mapper/mapping/SysStatisticsCountMapper.xml roses/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/mapper/mapping/SysStatisticsUrlMapper.xml roses/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/pojo/OnlineUserStat.java roses/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/pojo/request/SysStatisticsCountRequest.java roses/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/pojo/request/SysStatisticsUrlRequest.java roses/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/service/HomePageService.java roses/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/service/SysStatisticsCountService.java roses/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/service/SysStatisticsUrlService.java roses/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/service/impl/HomePageServiceImpl.java roses/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/service/impl/SysStatisticsCountServiceImpl.java roses/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/service/impl/SysStatisticsUrlServiceImpl.java roses/kernel-s-system/system-business-home/src/main/java/cn/stylefeng/roses/kernel/system/modular/home/timer/InterfaceStatisticsTimer.java roses/kernel-s-system/system-business-menu/README.md roses/kernel-s-system/system-business-menu/pom.xml roses/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/constants/MenuButtonConstant.java roses/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/controller/SysMenuButtonController.java roses/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/controller/SysMenuController.java roses/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/controller/SysMenuResourceController.java roses/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/entity/SysMenu.java roses/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/entity/SysMenuButton.java roses/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/entity/SysMenuResource.java roses/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/factory/AntdMenusFactory.java roses/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/factory/Antdv3MenusFactory.java roses/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/factory/LayuiMenusFactory.java roses/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/factory/MenuButtonFactory.java roses/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/factory/MenuTypeFactory.java roses/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/listener/MenuResourceUpdateListener.java roses/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/mapper/SysMenuButtonMapper.java roses/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/mapper/SysMenuMapper.java roses/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/mapper/SysMenuResourceMapper.java roses/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/mapper/mapping/SysMenuButtonMapper.xml roses/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/mapper/mapping/SysMenuMapper.xml roses/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/mapper/mapping/SysMenuResourceMapper.xml roses/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/service/SysMenuButtonService.java roses/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/service/SysMenuResourceService.java roses/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/service/SysMenuService.java roses/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/service/impl/SysMenuButtonServiceImpl.java roses/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/service/impl/SysMenuResourceServiceImpl.java roses/kernel-s-system/system-business-menu/src/main/java/cn/stylefeng/roses/kernel/system/modular/menu/service/impl/SysMenuServiceImpl.java roses/kernel-s-system/system-business-notice/README.md roses/kernel-s-system/system-business-notice/pom.xml roses/kernel-s-system/system-business-notice/src/main/java/cn/stylefeng/roses/kernel/system/modular/notice/controller/SysNoticeController.java roses/kernel-s-system/system-business-notice/src/main/java/cn/stylefeng/roses/kernel/system/modular/notice/entity/SysNotice.java roses/kernel-s-system/system-business-notice/src/main/java/cn/stylefeng/roses/kernel/system/modular/notice/mapper/SysNoticeMapper.java roses/kernel-s-system/system-business-notice/src/main/java/cn/stylefeng/roses/kernel/system/modular/notice/mapper/mapping/SysNoticeMapper.xml roses/kernel-s-system/system-business-notice/src/main/java/cn/stylefeng/roses/kernel/system/modular/notice/service/SysNoticeService.java roses/kernel-s-system/system-business-notice/src/main/java/cn/stylefeng/roses/kernel/system/modular/notice/service/impl/SysNoticeServiceImpl.java roses/kernel-s-system/system-business-organization/README.md roses/kernel-s-system/system-business-organization/pom.xml roses/kernel-s-system/system-business-organization/src/main/java/cn/stylefeng/roses/kernel/system/modular/organization/controller/HrOrgApproverController.java roses/kernel-s-system/system-business-organization/src/main/java/cn/stylefeng/roses/kernel/system/modular/organization/controller/HrOrganizationController.java roses/kernel-s-system/system-business-organization/src/main/java/cn/stylefeng/roses/kernel/system/modular/organization/controller/HrPositionController.java roses/kernel-s-system/system-business-organization/src/main/java/cn/stylefeng/roses/kernel/system/modular/organization/entity/HrOrgApprover.java roses/kernel-s-system/system-business-organization/src/main/java/cn/stylefeng/roses/kernel/system/modular/organization/entity/HrOrganization.java roses/kernel-s-system/system-business-organization/src/main/java/cn/stylefeng/roses/kernel/system/modular/organization/entity/HrPosition.java roses/kernel-s-system/system-business-organization/src/main/java/cn/stylefeng/roses/kernel/system/modular/organization/enums/HrOrgApproverExceptionEnum.java roses/kernel-s-system/system-business-organization/src/main/java/cn/stylefeng/roses/kernel/system/modular/organization/factory/OrganizationFactory.java roses/kernel-s-system/system-business-organization/src/main/java/cn/stylefeng/roses/kernel/system/modular/organization/mapper/HrOrgApproverMapper.java roses/kernel-s-system/system-business-organization/src/main/java/cn/stylefeng/roses/kernel/system/modular/organization/mapper/HrOrganizationMapper.java roses/kernel-s-system/system-business-organization/src/main/java/cn/stylefeng/roses/kernel/system/modular/organization/mapper/HrPositionMapper.java roses/kernel-s-system/system-business-organization/src/main/java/cn/stylefeng/roses/kernel/system/modular/organization/mapper/mapping/HrOrgApproverMapper.xml roses/kernel-s-system/system-business-organization/src/main/java/cn/stylefeng/roses/kernel/system/modular/organization/mapper/mapping/HrOrganizationMapper.xml roses/kernel-s-system/system-business-organization/src/main/java/cn/stylefeng/roses/kernel/system/modular/organization/mapper/mapping/HrPositionMapper.xml roses/kernel-s-system/system-business-organization/src/main/java/cn/stylefeng/roses/kernel/system/modular/organization/pojo/request/HrOrgApproverRequest.java roses/kernel-s-system/system-business-organization/src/main/java/cn/stylefeng/roses/kernel/system/modular/organization/service/DataScopeService.java roses/kernel-s-system/system-business-organization/src/main/java/cn/stylefeng/roses/kernel/system/modular/organization/service/HrOrgApproverService.java roses/kernel-s-system/system-business-organization/src/main/java/cn/stylefeng/roses/kernel/system/modular/organization/service/HrOrganizationService.java roses/kernel-s-system/system-business-organization/src/main/java/cn/stylefeng/roses/kernel/system/modular/organization/service/HrPositionService.java roses/kernel-s-system/system-business-organization/src/main/java/cn/stylefeng/roses/kernel/system/modular/organization/service/impl/HrOrgApproverServiceImpl.java roses/kernel-s-system/system-business-organization/src/main/java/cn/stylefeng/roses/kernel/system/modular/organization/service/impl/HrOrganizationServiceImpl.java roses/kernel-s-system/system-business-organization/src/main/java/cn/stylefeng/roses/kernel/system/modular/organization/service/impl/HrPositionServiceImpl.java roses/kernel-s-system/system-business-organization/src/main/java/cn/stylefeng/roses/kernel/system/modular/organization/wrapper/OrgExpandWrapper.java roses/kernel-s-system/system-business-resource/README.md roses/kernel-s-system/system-business-resource/pom.xml roses/kernel-s-system/system-business-resource/src/main/java/cn/stylefeng/roses/kernel/system/modular/resource/cache/MemoryResourceCache.java roses/kernel-s-system/system-business-resource/src/main/java/cn/stylefeng/roses/kernel/system/modular/resource/cache/RedisResourceCache.java roses/kernel-s-system/system-business-resource/src/main/java/cn/stylefeng/roses/kernel/system/modular/resource/controller/ResourceController.java roses/kernel-s-system/system-business-resource/src/main/java/cn/stylefeng/roses/kernel/system/modular/resource/controller/ResourceReportController.java roses/kernel-s-system/system-business-resource/src/main/java/cn/stylefeng/roses/kernel/system/modular/resource/entity/SysResource.java roses/kernel-s-system/system-business-resource/src/main/java/cn/stylefeng/roses/kernel/system/modular/resource/factory/ResourceFactory.java roses/kernel-s-system/system-business-resource/src/main/java/cn/stylefeng/roses/kernel/system/modular/resource/mapper/SysResourceMapper.java roses/kernel-s-system/system-business-resource/src/main/java/cn/stylefeng/roses/kernel/system/modular/resource/mapper/mapping/SysResourceMapper.xml roses/kernel-s-system/system-business-resource/src/main/java/cn/stylefeng/roses/kernel/system/modular/resource/pojo/ResourceTreeNode.java roses/kernel-s-system/system-business-resource/src/main/java/cn/stylefeng/roses/kernel/system/modular/resource/service/SysResourceService.java roses/kernel-s-system/system-business-resource/src/main/java/cn/stylefeng/roses/kernel/system/modular/resource/service/impl/SysResourceServiceImpl.java roses/kernel-s-system/system-business-role/README.md roses/kernel-s-system/system-business-role/pom.xml roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/cache/RoleDataScopeMemoryCache.java roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/cache/RoleDataScopeRedisCache.java roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/cache/RoleMemoryCache.java roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/cache/RoleRedisCache.java roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/cache/RoleResourceMemoryCache.java roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/cache/RoleResourceRedisCache.java roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/controller/SysRoleAuthController.java roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/controller/SysRoleController.java roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/entity/SysRole.java roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/entity/SysRoleDataScope.java roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/entity/SysRoleMenu.java roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/entity/SysRoleMenuButton.java roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/entity/SysRoleResource.java roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/listener/RoleResourceUpdateListener.java roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/mapper/SysRoleDataScopeMapper.java roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/mapper/SysRoleMapper.java roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/mapper/SysRoleMenuButtonMapper.java roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/mapper/SysRoleMenuMapper.java roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/mapper/SysRoleResourceMapper.java roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/mapper/mapping/SysRoleDataScopeMapper.xml roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/mapper/mapping/SysRoleMapper.xml roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/mapper/mapping/SysRoleMenuButtonMapper.xml roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/mapper/mapping/SysRoleMenuMapper.xml roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/mapper/mapping/SysRoleResourceMapper.xml roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/service/SysRoleDataScopeService.java roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/service/SysRoleMenuButtonService.java roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/service/SysRoleMenuService.java roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/service/SysRoleResourceService.java roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/service/SysRoleService.java roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/service/impl/SysRoleDataScopeServiceImpl.java roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/service/impl/SysRoleMenuButtonServiceImpl.java roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/service/impl/SysRoleMenuServiceImpl.java roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/service/impl/SysRoleResourceServiceImpl.java roses/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/service/impl/SysRoleServiceImpl.java roses/kernel-s-system/system-business-theme/pom.xml roses/kernel-s-system/system-business-theme/src/main/java/cn/stylefeng/roses/kernel/system/modular/theme/cache/ThemeMemoryCache.java roses/kernel-s-system/system-business-theme/src/main/java/cn/stylefeng/roses/kernel/system/modular/theme/cache/ThemeRedisCache.java roses/kernel-s-system/system-business-theme/src/main/java/cn/stylefeng/roses/kernel/system/modular/theme/clean/ThemeConfigRefresh.java roses/kernel-s-system/system-business-theme/src/main/java/cn/stylefeng/roses/kernel/system/modular/theme/controller/SysThemeApiController.java roses/kernel-s-system/system-business-theme/src/main/java/cn/stylefeng/roses/kernel/system/modular/theme/controller/SysThemeController.java roses/kernel-s-system/system-business-theme/src/main/java/cn/stylefeng/roses/kernel/system/modular/theme/controller/SysThemeTemplateController.java roses/kernel-s-system/system-business-theme/src/main/java/cn/stylefeng/roses/kernel/system/modular/theme/controller/SysThemeTemplateFieldController.java roses/kernel-s-system/system-business-theme/src/main/java/cn/stylefeng/roses/kernel/system/modular/theme/controller/SysThemeTemplateRelController.java roses/kernel-s-system/system-business-theme/src/main/java/cn/stylefeng/roses/kernel/system/modular/theme/entity/SysTheme.java roses/kernel-s-system/system-business-theme/src/main/java/cn/stylefeng/roses/kernel/system/modular/theme/entity/SysThemeTemplate.java roses/kernel-s-system/system-business-theme/src/main/java/cn/stylefeng/roses/kernel/system/modular/theme/entity/SysThemeTemplateField.java roses/kernel-s-system/system-business-theme/src/main/java/cn/stylefeng/roses/kernel/system/modular/theme/entity/SysThemeTemplateRel.java roses/kernel-s-system/system-business-theme/src/main/java/cn/stylefeng/roses/kernel/system/modular/theme/enums/ThemeFieldTypeEnum.java roses/kernel-s-system/system-business-theme/src/main/java/cn/stylefeng/roses/kernel/system/modular/theme/factory/DefaultThemeFactory.java roses/kernel-s-system/system-business-theme/src/main/java/cn/stylefeng/roses/kernel/system/modular/theme/mapper/SysThemeMapper.java roses/kernel-s-system/system-business-theme/src/main/java/cn/stylefeng/roses/kernel/system/modular/theme/mapper/SysThemeTemplateFieldMapper.java roses/kernel-s-system/system-business-theme/src/main/java/cn/stylefeng/roses/kernel/system/modular/theme/mapper/SysThemeTemplateMapper.java roses/kernel-s-system/system-business-theme/src/main/java/cn/stylefeng/roses/kernel/system/modular/theme/mapper/SysThemeTemplateRelMapper.java roses/kernel-s-system/system-business-theme/src/main/java/cn/stylefeng/roses/kernel/system/modular/theme/mapper/mapping/SysThemeMapper.xml roses/kernel-s-system/system-business-theme/src/main/java/cn/stylefeng/roses/kernel/system/modular/theme/mapper/mapping/SysThemeTemplateFieldMapper.xml roses/kernel-s-system/system-business-theme/src/main/java/cn/stylefeng/roses/kernel/system/modular/theme/mapper/mapping/SysThemeTemplateMapper.xml roses/kernel-s-system/system-business-theme/src/main/java/cn/stylefeng/roses/kernel/system/modular/theme/mapper/mapping/SysThemeTemplateRelMapper.xml roses/kernel-s-system/system-business-theme/src/main/java/cn/stylefeng/roses/kernel/system/modular/theme/pojo/DefaultTheme.java roses/kernel-s-system/system-business-theme/src/main/java/cn/stylefeng/roses/kernel/system/modular/theme/service/SysThemeService.java roses/kernel-s-system/system-business-theme/src/main/java/cn/stylefeng/roses/kernel/system/modular/theme/service/SysThemeTemplateFieldService.java roses/kernel-s-system/system-business-theme/src/main/java/cn/stylefeng/roses/kernel/system/modular/theme/service/SysThemeTemplateRelService.java roses/kernel-s-system/system-business-theme/src/main/java/cn/stylefeng/roses/kernel/system/modular/theme/service/SysThemeTemplateService.java roses/kernel-s-system/system-business-theme/src/main/java/cn/stylefeng/roses/kernel/system/modular/theme/service/impl/SysThemeServiceImpl.java roses/kernel-s-system/system-business-theme/src/main/java/cn/stylefeng/roses/kernel/system/modular/theme/service/impl/SysThemeTemplateFieldServiceImpl.java roses/kernel-s-system/system-business-theme/src/main/java/cn/stylefeng/roses/kernel/system/modular/theme/service/impl/SysThemeTemplateRelServiceImpl.java roses/kernel-s-system/system-business-theme/src/main/java/cn/stylefeng/roses/kernel/system/modular/theme/service/impl/SysThemeTemplateServiceImpl.java roses/kernel-s-system/system-business-user/README.md roses/kernel-s-system/system-business-user/pom.xml roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/cache/SysUserMemoryCache.java roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/cache/SysUserRedisCache.java roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/cache/UserOrgMemoryCache.java roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/cache/UserOrgRedisCache.java roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/cache/UserRoleMemoryCache.java roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/cache/UserRoleRedisCache.java roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/controller/KaptchaController.java roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/controller/LoginController.java roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/controller/OnlineUserController.java roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/controller/PersonalInfoController.java roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/controller/SysUserAdminController.java roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/controller/SysUserController.java roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/controller/SysUserGroupController.java roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/entity/SysUser.java roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/entity/SysUserDataScope.java roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/entity/SysUserGroup.java roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/entity/SysUserGroupDetail.java roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/entity/SysUserOrg.java roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/entity/SysUserRole.java roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/enums/SysUserGroupDetailExceptionEnum.java roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/enums/SysUserGroupExceptionEnum.java roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/factory/OnlineUserCreateFactory.java roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/factory/SysUserCreateFactory.java roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/factory/UserGroupFactory.java roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/factory/UserLoginInfoFactory.java roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/mapper/SysUserDataScopeMapper.java roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/mapper/SysUserGroupDetailMapper.java roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/mapper/SysUserGroupMapper.java roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/mapper/SysUserMapper.java roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/mapper/SysUserOrgMapper.java roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/mapper/SysUserRoleMapper.java roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/mapper/mapping/SysUserDataScopeMapper.xml roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/mapper/mapping/SysUserGroupDetailMapper.xml roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/mapper/mapping/SysUserGroupMapper.xml roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/mapper/mapping/SysUserMapper.xml roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/mapper/mapping/SysUserOrgMapper.xml roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/mapper/mapping/SysUserRoleMapper.xml roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/pojo/request/SysUserGroupDetailRequest.java roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/pojo/request/SysUserGroupRequest.java roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/provider/LoginUserProvider.java roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/IndexUserInfoService.java roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/SysUserAdminService.java roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/SysUserDataScopeService.java roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/SysUserGroupDetailService.java roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/SysUserGroupService.java roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/SysUserOrgService.java roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/SysUserRoleService.java roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/SysUserService.java roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/TenantPrefixService.java roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/impl/IndexUserInfoServiceImpl.java roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/impl/SysUserAdminServiceImpl.java roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/impl/SysUserDataScopeServiceImpl.java roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/impl/SysUserGroupDetailServiceImpl.java roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/impl/SysUserGroupServiceImpl.java roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/impl/SysUserOrgServiceServiceImpl.java roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/impl/SysUserRoleServiceImpl.java roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/impl/SysUserServiceImpl.java roses/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/wrapper/UserExpandWrapper.java roses/kernel-s-system/system-integration-beetl/README.md roses/kernel-s-system/system-integration-beetl/pom.xml roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/CustomErrorView.java roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/config/BeetlAutoConfiguration.java roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/config/BeetlErrorViewAutoConfiguration.java roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/core/CustomBeetlGroupUtilConfiguration.java roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/core/consts/BeetlConstants.java roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/core/consts/DictTagConstants.java roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/core/enums/SelectTagHeadTypeEnum.java roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/core/expander/BeetlConfigExpander.java roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/core/tag/SysDictBaseTag.java roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/core/tag/SysDictCheckBoxTag.java roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/core/tag/SysDictRadioTag.java roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/core/tag/SysDictSelectTag.java roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/modular/system/api/ApiViewController.java roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/modular/system/app/AppViewController.java roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/modular/system/common/CommonViewController.java roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/modular/system/common/pojo/CommonTreeRequest.java roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/modular/system/config/ConfigViewController.java roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/modular/system/dashboard/DashboardViewController.java roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/modular/system/dataCenter/dataCenterViewController.java roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/modular/system/datasource/DataSourceViewController.java roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/modular/system/dict/DictTypeViewController.java roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/modular/system/dict/DictViewController.java roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/modular/system/error/ErrorViewController.java roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/modular/system/file/FileViewController.java roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/modular/system/i18n/TranslationViewController.java roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/modular/system/index/controller/IndexViewController.java roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/modular/system/index/service/IndexService.java roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/modular/system/log/LogViewController.java roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/modular/system/log/LoginLogViewController.java roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/modular/system/login/LoginViewController.java roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/modular/system/menu/MenuButtonViewController.java roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/modular/system/menu/MenuViewController.java roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/modular/system/message/MessageViewController.java roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/modular/system/monitor/MonitorController.java roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/modular/system/notice/NoticeViewController.java roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/modular/system/online/OnlineUserViewController.java roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/modular/system/organization/OrganizationViewController.java roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/modular/system/package-info.java roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/modular/system/position/PositionViewController.java roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/modular/system/resource/ResourceViewController.java roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/modular/system/role/RoleViewController.java roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/modular/system/timer/TimersViewController.java roses/kernel-s-system/system-integration-beetl/src/main/java/cn/stylefeng/roses/kernel/system/integration/modular/system/user/UserViewController.java roses/kernel-s-system/system-integration-beetl/src/main/resources/META-INF/spring.factories roses/kernel-s-system/system-integration-rest/README.md roses/kernel-s-system/system-integration-rest/pom.xml roses/kernel-s-system/system-integration-rest/src/main/java/cn/stylefeng/roses/kernel/system/integration/ErrorStaticJsonView.java roses/kernel-s-system/system-integration-rest/src/main/java/cn/stylefeng/roses/kernel/system/integration/config/RestErrorViewAutoConfiguration.java roses/kernel-s-system/system-integration-rest/src/main/resources/META-INF/spring.factories roses/kernel-s-system/system-spring-boot-starter/README.md roses/kernel-s-system/system-spring-boot-starter/pom.xml roses/kernel-s-system/system-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/system/starter/GunsSystemHomeStatisticsAutoConfiguration.java roses/kernel-s-system/system-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/system/starter/cache/GunsResourceMemoryCacheAutoConfiguration.java roses/kernel-s-system/system-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/system/starter/cache/GunsResourceRedisCacheAutoConfiguration.java roses/kernel-s-system/system-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/system/starter/cache/GunsSystemMemoryCacheAutoConfiguration.java roses/kernel-s-system/system-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/system/starter/cache/GunsSystemRedisCacheAutoConfiguration.java roses/kernel-s-system/system-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/system/starter/init/InitAdminService.java roses/kernel-s-system/system-spring-boot-starter/src/main/java/cn/stylefeng/roses/kernel/system/starter/listener/SuperAdminInitListener.java roses/kernel-s-system/system-spring-boot-starter/src/main/resources/META-INF/spring.factories roses/pom.xml sql/clear_data_20240229.sql