From 464df048061965ea3dd62bde94fd0455bdbd0a81 Mon Sep 17 00:00:00 2001 From: JIAN Date: Thu, 15 Aug 2024 13:01:57 +0800 Subject: [PATCH] =?UTF-8?q?refactor(customer):=E5=AF=BC=E5=85=A5=E9=A1=B9?= =?UTF-8?q?=E7=9B=AE=E5=AE=A2=E6=88=B7=E6=A8=A1=E5=9D=97=E5=88=9D=E5=A7=8B?= =?UTF-8?q?=E5=B7=A5=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/jzo2o/api/publics/SmsCodeApi.java | 8 +- jzo2o-customer/Dockerfile | 10 + jzo2o-customer/pom.xml | 107 ++++ .../jzo2o/customer/CustomerApplication.java | 22 + .../customer/client/EvaluationHttpClient.java | 264 +++++++++ .../customer/config/JwtConfiguration.java | 20 + .../jzo2o/customer/config/SecurityConfig.java | 16 + .../customer/constants/EsIndexConstants.java | 5 + .../customer/constants/RedisConstants.java | 11 + .../agency/InstitutionStaffController.java | 72 +++ .../agency/ServeProviderController.java | 35 ++ .../ServeProviderSettingsController.java | 52 ++ .../agency/ServeSkillController.java | 54 ++ .../consumer/CommonUserController.java | 37 ++ .../consumer/EvaluationController.java | 85 +++ .../inner/InnerCommonUserController.java | 30 ++ .../inner/InnerEvaluationController.java | 42 ++ .../InnerInstitutionStaffController.java | 69 +++ .../inner/InnerServeProviderController.java | 64 +++ .../inner/InnerServeSkillController.java | 36 ++ .../controller/open/LoginController.java | 46 ++ .../AgencyCertificationController.java | 31 ++ .../operation/BankAccountController.java | 32 ++ .../operation/CommonUserController.java | 36 ++ .../operation/EvaluationController.java | 41 ++ .../operation/InstitutionStaffController.java | 38 ++ .../operation/ServeProviderController.java | 72 +++ .../WorkerCertificationController.java | 31 ++ .../worker/EvaluationController.java | 44 ++ .../worker/ServeProviderController.java | 32 ++ .../ServeProviderSettingsController.java | 52 ++ .../worker/ServeSkillController.java | 54 ++ .../enums/CertificationStatusEnum.java | 26 + .../handler/ServeProviderHandler.java | 62 +++ .../jzo2o/customer/handler/XxlJobHandler.java | 39 ++ .../customer/listener/EvaluationListener.java | 63 +++ .../customer/mapper/AddressBookMapper.java | 16 + .../mapper/AgencyCertificationMapper.java | 16 + .../customer/mapper/CommonUserMapper.java | 16 + .../mapper/InstitutionStaffMapper.java | 16 + .../customer/mapper/ServeProviderMapper.java | 46 ++ .../mapper/ServeProviderSettingsMapper.java | 23 + .../mapper/ServeProviderSyncMapper.java | 16 + .../customer/mapper/ServeSkillMapper.java | 16 + .../mapper/WorkerCertificationMapper.java | 16 + .../customer/model/domain/AddressBook.java | 111 ++++ .../model/domain/AgencyCertification.java | 80 +++ .../customer/model/domain/CommonUser.java | 79 +++ .../model/domain/InstitutionStaff.java | 83 +++ .../customer/model/domain/ServeProvider.java | 104 ++++ .../model/domain/ServeProviderInfo.java | 63 +++ .../model/domain/ServeProviderSettings.java | 76 +++ .../model/domain/ServeProviderSync.java | 87 +++ .../customer/model/domain/ServeSkill.java | 78 +++ .../model/domain/WorkerCertification.java | 80 +++ .../dto/AgencyCertificationUpdateDTO.java | 60 +++ .../model/dto/EvaluationSubmitDTO.java | 69 +++ .../customer/model/dto/RelationScoreDTO.java | 22 + .../model/dto/ScoreStatisticsMsg.java | 68 +++ .../model/dto/ServeSkillSimpleDTO.java | 22 + .../dto/WorkerCertificationUpdateDTO.java | 55 ++ .../request/AddressBookPageQueryReqDTO.java | 18 + .../dto/request/AddressBookUpsertReqDTO.java | 75 +++ .../AgencyCertificationAuditAddReqDTO.java | 33 ++ ...encyCertificationAuditPageQueryReqDTO.java | 40 ++ .../model/dto/request/AuditReqDTO.java | 39 ++ .../dto/request/BankAccountUpsertReqDTO.java | 80 +++ .../dto/request/CertificationAuditReqDTO.java | 21 + .../request/EvaluationPageByTargetReqDTO.java | 31 ++ .../request/InstitutionRegisterReqDTO.java | 26 + .../InstitutionResetPasswordReqDTO.java | 22 + .../request/InstitutionStaffUpsertReqDTO.java | 42 ++ .../model/dto/request/LikeOrCancelReqDTO.java | 28 + .../dto/request/LoginForCustomerReqDTO.java | 30 ++ .../model/dto/request/LoginForWorkReqDTO.java | 30 ++ .../model/dto/request/ServePickUpReqDTO.java | 16 + .../request/ServeProviderPageQueryReqDTO.java | 43 ++ .../dto/request/ServeScopeSetReqDTO.java | 37 ++ .../dto/request/ServeSkillAddReqDTO.java | 44 ++ .../model/dto/request/SmsCodeSendReqDTO.java | 14 + .../WorkerCertificationAuditAddReqDTO.java | 33 ++ ...rkerCertificationAuditPageQueryReqDTO.java | 40 ++ .../AgencyCertificationAuditResDTO.java | 107 ++++ .../response/AgencyCertificationResDTO.java | 65 +++ .../AllEvaluationSystemInfoResDTO.java | 25 + .../model/dto/response/BankAccountResDTO.java | 95 ++++ .../model/dto/response/BooleanResDTO.java | 26 + .../dto/response/CertificationStatusDTO.java | 48 ++ .../model/dto/response/CityCodeResDTO.java | 28 + .../response/EvaluationAndOrdersResDTO.java | 93 ++++ .../model/dto/response/EvaluationResDTO.java | 145 +++++ .../response/EvaluationSystemInfoResDTO.java | 201 +++++++ .../dto/response/EvaluationTokenDto.java | 20 + .../InstitutionStaffSimpleResDTO.java | 29 + .../model/dto/response/LoginResDTO.java | 17 + .../dto/response/RejectReasonResDTO.java | 22 + .../ServeProviderBasicInformationResDTO.java | 94 ++++ .../dto/response/ServeProviderInfoResDTO.java | 58 ++ .../dto/response/ServeProviderListResDTO.java | 65 +++ .../ServeProviderSettingsGetResDTO.java | 46 ++ .../response/ServeSettingsStatusResDTO.java | 53 ++ .../response/ServeSkillCategoryResDTO.java | 41 ++ .../dto/response/ServeSkillItemResDTO.java | 33 ++ .../dto/response/ServeSkillTypeResDTO.java | 33 ++ .../WorkerCertificationAuditResDTO.java | 107 ++++ .../response/WorkerCertificationResDTO.java | 65 +++ .../properties/ApplicationProperties.java | 16 + .../properties/EvaluationProperties.java | 33 ++ .../EvaluationTargetProperties.java | 20 + .../customer/service/EvaluationService.java | 110 ++++ .../customer/service/IAddressBookService.java | 30 ++ .../service/IAgencyCertificationService.java | 27 + .../customer/service/ICommonUserService.java | 43 ++ .../service/IInstitutionStaffService.java | 82 +++ .../jzo2o/customer/service/ILoginService.java | 35 ++ .../service/IServeProviderService.java | 124 +++++ .../IServeProviderSettingsService.java | 74 +++ .../service/IServeProviderSyncService.java | 28 + .../customer/service/IServeSkillService.java | 59 ++ .../service/IWorkerCertificationService.java | 25 + .../service/impl/AddressBookServiceImpl.java | 55 ++ .../impl/AgencyCertificationServiceImpl.java | 47 ++ .../service/impl/CommonUserServiceImpl.java | 92 ++++ .../service/impl/EvaluationServiceImpl.java | 510 ++++++++++++++++++ .../service/impl/ILoginServiceImpl.java | 133 +++++ .../impl/InstitutionStaffServiceImpl.java | 151 ++++++ .../impl/ServeProviderServiceImpl.java | 276 ++++++++++ .../ServeProviderSettingsServiceImpl.java | 218 ++++++++ .../impl/ServeProviderSyncServiceImpl.java | 40 ++ .../service/impl/ServeSkillServiceImpl.java | 201 +++++++ .../impl/WorkerCertificationServiceImpl.java | 49 ++ .../src/main/resources/bootstrap-dev.yml | 18 + .../src/main/resources/bootstrap-prod.yml | 14 + .../src/main/resources/bootstrap-test.yml | 14 + .../src/main/resources/bootstrap.yml | 77 +++ .../resources/mapper/AddressBookMapper.xml | 5 + .../mapper/AgencyCertificationAuditMapper.xml | 5 + .../mapper/AgencyCertificationMapper.xml | 5 + .../resources/mapper/BankAccountMapper.xml | 5 + .../resources/mapper/CommonUserMapper.xml | 17 + .../mapper/InstitutionStaffMapper.xml | 5 + .../resources/mapper/ServeProviderMapper.xml | 117 ++++ .../mapper/ServeProviderSettingsMapper.xml | 5 + .../mapper/ServeProviderSyncMapper.xml | 5 + .../resources/mapper/ServeSkillMapper.xml | 5 + .../mapper/WorkerCertificationAuditMapper.xml | 5 + .../mapper/WorkerCertificationMapper.xml | 5 + ...TypeEnum.java => SmsBusinessTypeEnum.java} | 6 +- .../inner/InnerSmsCodeController.java | 10 +- .../model/dto/request/SmsCodeSendReqDTO.java | 4 +- .../publics/service/ISmsCodeService.java | 8 +- .../service/impl/SmsCodeServiceImpl.java | 14 +- 152 files changed, 8116 insertions(+), 25 deletions(-) create mode 100644 jzo2o-customer/Dockerfile create mode 100644 jzo2o-customer/pom.xml create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/CustomerApplication.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/client/EvaluationHttpClient.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/config/JwtConfiguration.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/config/SecurityConfig.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/constants/EsIndexConstants.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/constants/RedisConstants.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/controller/agency/InstitutionStaffController.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/controller/agency/ServeProviderController.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/controller/agency/ServeProviderSettingsController.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/controller/agency/ServeSkillController.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/controller/consumer/CommonUserController.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/controller/consumer/EvaluationController.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/controller/inner/InnerCommonUserController.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/controller/inner/InnerEvaluationController.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/controller/inner/InnerInstitutionStaffController.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/controller/inner/InnerServeProviderController.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/controller/inner/InnerServeSkillController.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/controller/open/LoginController.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/controller/operation/AgencyCertificationController.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/controller/operation/BankAccountController.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/controller/operation/CommonUserController.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/controller/operation/EvaluationController.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/controller/operation/InstitutionStaffController.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/controller/operation/ServeProviderController.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/controller/operation/WorkerCertificationController.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/controller/worker/EvaluationController.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/controller/worker/ServeProviderController.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/controller/worker/ServeProviderSettingsController.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/controller/worker/ServeSkillController.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/enums/CertificationStatusEnum.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/handler/ServeProviderHandler.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/handler/XxlJobHandler.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/listener/EvaluationListener.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/mapper/AddressBookMapper.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/mapper/AgencyCertificationMapper.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/mapper/CommonUserMapper.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/mapper/InstitutionStaffMapper.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/mapper/ServeProviderMapper.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/mapper/ServeProviderSettingsMapper.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/mapper/ServeProviderSyncMapper.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/mapper/ServeSkillMapper.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/mapper/WorkerCertificationMapper.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/model/domain/AddressBook.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/model/domain/AgencyCertification.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/model/domain/CommonUser.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/model/domain/InstitutionStaff.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/model/domain/ServeProvider.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/model/domain/ServeProviderInfo.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/model/domain/ServeProviderSettings.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/model/domain/ServeProviderSync.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/model/domain/ServeSkill.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/model/domain/WorkerCertification.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/AgencyCertificationUpdateDTO.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/EvaluationSubmitDTO.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/RelationScoreDTO.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/ScoreStatisticsMsg.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/ServeSkillSimpleDTO.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/WorkerCertificationUpdateDTO.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/request/AddressBookPageQueryReqDTO.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/request/AddressBookUpsertReqDTO.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/request/AgencyCertificationAuditAddReqDTO.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/request/AgencyCertificationAuditPageQueryReqDTO.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/request/AuditReqDTO.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/request/BankAccountUpsertReqDTO.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/request/CertificationAuditReqDTO.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/request/EvaluationPageByTargetReqDTO.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/request/InstitutionRegisterReqDTO.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/request/InstitutionResetPasswordReqDTO.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/request/InstitutionStaffUpsertReqDTO.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/request/LikeOrCancelReqDTO.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/request/LoginForCustomerReqDTO.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/request/LoginForWorkReqDTO.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/request/ServePickUpReqDTO.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/request/ServeProviderPageQueryReqDTO.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/request/ServeScopeSetReqDTO.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/request/ServeSkillAddReqDTO.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/request/SmsCodeSendReqDTO.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/request/WorkerCertificationAuditAddReqDTO.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/request/WorkerCertificationAuditPageQueryReqDTO.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/response/AgencyCertificationAuditResDTO.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/response/AgencyCertificationResDTO.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/response/AllEvaluationSystemInfoResDTO.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/response/BankAccountResDTO.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/response/BooleanResDTO.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/response/CertificationStatusDTO.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/response/CityCodeResDTO.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/response/EvaluationAndOrdersResDTO.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/response/EvaluationResDTO.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/response/EvaluationSystemInfoResDTO.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/response/EvaluationTokenDto.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/response/InstitutionStaffSimpleResDTO.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/response/LoginResDTO.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/response/RejectReasonResDTO.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/response/ServeProviderBasicInformationResDTO.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/response/ServeProviderInfoResDTO.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/response/ServeProviderListResDTO.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/response/ServeProviderSettingsGetResDTO.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/response/ServeSettingsStatusResDTO.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/response/ServeSkillCategoryResDTO.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/response/ServeSkillItemResDTO.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/response/ServeSkillTypeResDTO.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/response/WorkerCertificationAuditResDTO.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/response/WorkerCertificationResDTO.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/properties/ApplicationProperties.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/properties/EvaluationProperties.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/properties/EvaluationTargetProperties.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/service/EvaluationService.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/service/IAddressBookService.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/service/IAgencyCertificationService.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/service/ICommonUserService.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/service/IInstitutionStaffService.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/service/ILoginService.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/service/IServeProviderService.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/service/IServeProviderSettingsService.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/service/IServeProviderSyncService.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/service/IServeSkillService.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/service/IWorkerCertificationService.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/service/impl/AddressBookServiceImpl.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/service/impl/AgencyCertificationServiceImpl.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/service/impl/CommonUserServiceImpl.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/service/impl/EvaluationServiceImpl.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/service/impl/ILoginServiceImpl.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/service/impl/InstitutionStaffServiceImpl.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/service/impl/ServeProviderServiceImpl.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/service/impl/ServeProviderSettingsServiceImpl.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/service/impl/ServeProviderSyncServiceImpl.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/service/impl/ServeSkillServiceImpl.java create mode 100644 jzo2o-customer/src/main/java/com/jzo2o/customer/service/impl/WorkerCertificationServiceImpl.java create mode 100644 jzo2o-customer/src/main/resources/bootstrap-dev.yml create mode 100644 jzo2o-customer/src/main/resources/bootstrap-prod.yml create mode 100644 jzo2o-customer/src/main/resources/bootstrap-test.yml create mode 100644 jzo2o-customer/src/main/resources/bootstrap.yml create mode 100644 jzo2o-customer/src/main/resources/mapper/AddressBookMapper.xml create mode 100644 jzo2o-customer/src/main/resources/mapper/AgencyCertificationAuditMapper.xml create mode 100644 jzo2o-customer/src/main/resources/mapper/AgencyCertificationMapper.xml create mode 100644 jzo2o-customer/src/main/resources/mapper/BankAccountMapper.xml create mode 100644 jzo2o-customer/src/main/resources/mapper/CommonUserMapper.xml create mode 100644 jzo2o-customer/src/main/resources/mapper/InstitutionStaffMapper.xml create mode 100644 jzo2o-customer/src/main/resources/mapper/ServeProviderMapper.xml create mode 100644 jzo2o-customer/src/main/resources/mapper/ServeProviderSettingsMapper.xml create mode 100644 jzo2o-customer/src/main/resources/mapper/ServeProviderSyncMapper.xml create mode 100644 jzo2o-customer/src/main/resources/mapper/ServeSkillMapper.xml create mode 100644 jzo2o-customer/src/main/resources/mapper/WorkerCertificationAuditMapper.xml create mode 100644 jzo2o-customer/src/main/resources/mapper/WorkerCertificationMapper.xml rename jzo2o-framework/jzo2o-common/src/main/java/com/jzo2o/common/enums/{SmsBussinessTypeEnum.java => SmsBusinessTypeEnum.java} (54%) diff --git a/jzo2o-api/src/main/java/com/jzo2o/api/publics/SmsCodeApi.java b/jzo2o-api/src/main/java/com/jzo2o/api/publics/SmsCodeApi.java index a8146e8..0bad17e 100644 --- a/jzo2o-api/src/main/java/com/jzo2o/api/publics/SmsCodeApi.java +++ b/jzo2o-api/src/main/java/com/jzo2o/api/publics/SmsCodeApi.java @@ -1,7 +1,7 @@ package com.jzo2o.api.publics; import com.jzo2o.api.publics.dto.response.BooleanResDTO; -import com.jzo2o.common.enums.SmsBussinessTypeEnum; +import com.jzo2o.common.enums.SmsBusinessTypeEnum; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestParam; @@ -16,12 +16,12 @@ public interface SmsCodeApi { * 校验短信验证码 * * @param phone 验证手机号 - * @param bussinessType 业务类型 + * @param businessType 业务类型 * @param verifyCode 验证码 * @return 验证结果 */ @GetMapping("/verify") BooleanResDTO verify(@RequestParam("phone") String phone, - @RequestParam("bussinessType") SmsBussinessTypeEnum bussinessType, + @RequestParam("businessType") SmsBusinessTypeEnum businessType, @RequestParam("verifyCode") String verifyCode); -} +} \ No newline at end of file diff --git a/jzo2o-customer/Dockerfile b/jzo2o-customer/Dockerfile new file mode 100644 index 0000000..9ca593b --- /dev/null +++ b/jzo2o-customer/Dockerfile @@ -0,0 +1,10 @@ +FROM openjdk:11-jdk +LABEL maintainer="研究院研发组 " +RUN echo "Asia/Shanghai" > /etc/timezone +ARG PACKAGE_PATH=./target/jzo2o-customer.jar + +ADD ${PACKAGE_PATH:-./} app.jar + +EXPOSE 8080 +EXPOSE 9999 +ENTRYPOINT ["sh","-c","java -jar $JAVA_OPTS app.jar"] \ No newline at end of file diff --git a/jzo2o-customer/pom.xml b/jzo2o-customer/pom.xml new file mode 100644 index 0000000..ec297c0 --- /dev/null +++ b/jzo2o-customer/pom.xml @@ -0,0 +1,107 @@ + + + 4.0.0 + + jzo2o-customer + 1.0-SNAPSHOT + + + jzo2o-parent + com.jzo2o + 1.0-SNAPSHOT + + + + + 11 + 11 + + + + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-discovery + + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-config + + + + org.springframework.cloud + spring-cloud-starter-bootstrap + + + com.jzo2o + jzo2o-mvc + + + + com.jzo2o + jzo2o-knife4j-web + + + + com.jzo2o + jzo2o-mysql + + + + com.jzo2o + jzo2o-api + + + + com.jzo2o + jzo2o-redis + + + + + org.springframework.boot + spring-boot-starter-test + test + + + + + + + + + + + + + cn.xiaozhibang + evaluation-sdk + 1.0-SNAPSHOT + + + + + + + + + ${project.artifactId} + + + org.springframework.boot + spring-boot-maven-plugin + + + + build-info + + + + + com.jzo2o.customer.CustomerApplicaiton + + + + + \ No newline at end of file diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/CustomerApplication.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/CustomerApplication.java new file mode 100644 index 0000000..3112c04 --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/CustomerApplication.java @@ -0,0 +1,22 @@ +package com.jzo2o.customer; + +import lombok.extern.slf4j.Slf4j; +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.builder.SpringApplicationBuilder; +import org.springframework.cache.annotation.EnableCaching; +import org.springframework.context.annotation.EnableAspectJAutoProxy; + +@EnableAspectJAutoProxy +@SpringBootApplication +@Slf4j +@EnableCaching +@MapperScan("com.jzo2o.customer.mapper") +public class CustomerApplication { + public static void main(String[] args) { + new SpringApplicationBuilder(CustomerApplication.class) + .build(args) + .run(args); + log.info("家政服务-客户中心启动"); + } +} \ No newline at end of file diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/client/EvaluationHttpClient.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/client/EvaluationHttpClient.java new file mode 100644 index 0000000..133b590 --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/client/EvaluationHttpClient.java @@ -0,0 +1,264 @@ +package com.jzo2o.customer.client; + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.http.Header; +import cn.hutool.http.HttpRequest; +import cn.hutool.json.JSONUtil; +import cn.xiaozhibang.evaluation.sdk.core.TokenHelper; +import cn.xiaozhibang.evaluation.sdk.model.domain.CurrentUser; +import com.jzo2o.common.constants.ErrorInfo; +import com.jzo2o.common.constants.UserType; +import com.jzo2o.common.expcetions.CommonException; +import com.jzo2o.common.model.CurrentUserInfo; +import com.jzo2o.customer.properties.EvaluationProperties; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.util.Map; + +/** + * 评价系统对接http工具类 + * + * @author itcast + * @create 2023/9/8 17:52 + **/ +@Component +public class EvaluationHttpClient { + @Resource + private EvaluationProperties evaluationProperties; + + /** + * 默认连接超时时间 + */ + private static final Integer DEFAULT_CONNECTION_TIMEOUT = 3000; + + /** + * 默认读取超时时间 + */ + private static final Integer DEFAULT_READ_TIMEOUT = 5000; + + /** + * post请求 + * + * @param currentUserInfo 当前用户信息 + * @param url 请求地址 + * @param parameters 请求参数 + * @param body 请求体 + * @return 响应数据 + */ + public String post(CurrentUserInfo currentUserInfo, String url, Map parameters, T body) { + return post(currentUserInfo, url, parameters, body, null, DEFAULT_CONNECTION_TIMEOUT, DEFAULT_READ_TIMEOUT); + } + + /** + * post请求,自定义请求头 + * + * @param currentUserInfo 当前用户信息 + * @param url 请求地址 + * @param parameters 请求参数 + * @param body 请求体 + * @param headers 请求头 + * @return 响应数据 + */ + public String post(CurrentUserInfo currentUserInfo, String url, Map parameters, T body, Map headers) { + return post(currentUserInfo, url, parameters, body, headers, DEFAULT_CONNECTION_TIMEOUT, DEFAULT_READ_TIMEOUT); + } + + /** + * post请求,自定义连接时间 + * + * @param currentUserInfo 当前用户信息 + * @param url 请求地址 + * @param parameters 请求参数 + * @param body 请求体 + * @param headers 请求头 + * @param connectionTimeout 连接超时时间 + * @param readTimeout 读取超时时间 + * @return 响应数据 + */ + public String post(CurrentUserInfo currentUserInfo, String url, Map parameters, T body, Map headers, Integer connectionTimeout, Integer readTimeout) { + //生成token + String token = this.generateToken(currentUserInfo); + + //组装请求参数 + if (ObjectUtil.isNotEmpty(parameters)) { + url = getCompleteUrl(url, parameters); + } + + //组装请求 + HttpRequest httpRequest = HttpRequest.post(url) + .header(Header.AUTHORIZATION, token) + .setConnectionTimeout(connectionTimeout) + .setReadTimeout(readTimeout); + + //组装header + if (ObjectUtil.isNotEmpty(headers)) { + headers.forEach(httpRequest::header); + } + + //组装请求体 + if (ObjectUtil.isNotEmpty(body)) { + httpRequest.body(JSONUtil.toJsonStr(body)); + } + + //发起请求 + String result = httpRequest.execute().body(); + + //校验http响应结果 + checkResult(result); + + return result; + } + + /** + * get请求 + * + * @param currentUserInfo 当前用户信息 + * @param url 请求地址 + * @param parameters 请求参数 + * @return 响应数据 + */ + public String get(CurrentUserInfo currentUserInfo, String url, Map parameters) { + return get(currentUserInfo, url, parameters, DEFAULT_CONNECTION_TIMEOUT, DEFAULT_READ_TIMEOUT); + } + + /** + * get请求,自定义连接时间 + * + * @param currentUserInfo 当前用户信息 + * @param url 请求地址 + * @param parameters 请求参数 + * @param connectionTimeout 连接超时时间 + * @param readTimeout 读取超时时间 + * @return 响应数据 + */ + public String get(CurrentUserInfo currentUserInfo, String url, Map parameters, Integer connectionTimeout, Integer readTimeout) { + //生成token + String token = this.generateToken(currentUserInfo); + + //组装请求参数 + if (ObjectUtil.isNotEmpty(parameters)) { + url = getCompleteUrl(url, parameters); + } + + //发起请求 + String result = HttpRequest.get(url) + .header(Header.AUTHORIZATION, token) + .setConnectionTimeout(connectionTimeout) + .setReadTimeout(readTimeout) + .execute().body(); + + //校验http响应结果 + checkResult(result); + + return result; + } + + /** + * delete请求 + * + * @param currentUserInfo 当前用户信息 + * @param url 请求路径 + * @param parameters 请求参数 + * @return 响应数据 + */ + public String delete(CurrentUserInfo currentUserInfo, String url, Map parameters) { + return delete(currentUserInfo, url, parameters, DEFAULT_CONNECTION_TIMEOUT, DEFAULT_READ_TIMEOUT); + } + + /** + * delete请求,自定义连接时间 + * + * @param currentUserInfo 当前用户信息 + * @param url 请求路径 + * @param parameters 请求参数 + * @param connectionTimeout 连接超时时间 + * @param readTimeout 读取超时时间 + * @return 响应数据 + */ + public String delete(CurrentUserInfo currentUserInfo, String url, Map parameters, Integer connectionTimeout, Integer readTimeout) { + //生成token + String token = this.generateToken(currentUserInfo); + + //组装请求参数 + if (ObjectUtil.isNotEmpty(parameters)) { + url = getCompleteUrl(url, parameters); + } + + //发起请求 + String result = HttpRequest.delete(url) + .header(Header.AUTHORIZATION, token) + .setConnectionTimeout(connectionTimeout) + .setReadTimeout(readTimeout) + .execute().body(); + + //校验http响应结果 + checkResult(result); + + return result; + } + + /** + * 校验http响应结果 + * + * @param result http响应 + */ + private void checkResult(String result) { + String code = JSONUtil.parseObj(result).get("code").toString(); + if (ObjectUtil.equal("608", code)) { + throw new CommonException(ErrorInfo.Code.HTTP_EVALUATION_FAILED, "禁止重复提交"); + } + + if (ObjectUtil.notEqual("200", code)) { + throw new CommonException(ErrorInfo.Code.HTTP_EVALUATION_FAILED, "对接评价系统,http请求失败"); + } + } + + /** + * 拼接请求参数 + * + * @param url 请求路径 + * @param parameters 参数 + * @return 完整请求地址 + */ + private String getCompleteUrl(String url, Map parameters) { + StringBuilder stringBuilder = new StringBuilder(url); + if (ObjectUtil.isNotEmpty(parameters)) { + stringBuilder.append("?"); + + parameters.forEach((k, v) -> { + stringBuilder.append(k); + stringBuilder.append("="); + stringBuilder.append(v.toString()); + stringBuilder.append("&"); + }); + } + return stringBuilder.substring(0, stringBuilder.length() - 1); + } + + /** + * 生成评价系统token + * + * @param currentUserInfo 当前用户信息 + * @return token + */ + public String generateToken(CurrentUserInfo currentUserInfo) { + //配置中心读取应用配置 + String appId = evaluationProperties.getAppId(); + String accessKeyId = evaluationProperties.getAccessKeyId(); + String accessKeySecret = evaluationProperties.getAccessKeySecret(); + + //当前用户信息 + CurrentUser currentUser = new CurrentUser(); + currentUser.setId(currentUserInfo.getId().toString()); + currentUser.setNickName(currentUserInfo.getName()); + currentUser.setUserAvatar(currentUserInfo.getAvatar()); + + //生成token + if (ObjectUtil.equal(UserType.OPERATION, currentUserInfo.getUserType())) { + return TokenHelper.generateTokenOfAdmin(appId, accessKeyId, accessKeySecret, currentUser); + } else { + return TokenHelper.generateTokenOfUser(appId, accessKeyId, accessKeySecret, currentUser); + } + } +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/config/JwtConfiguration.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/config/JwtConfiguration.java new file mode 100644 index 0000000..7868fbb --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/config/JwtConfiguration.java @@ -0,0 +1,20 @@ +package com.jzo2o.customer.config; + +import com.jzo2o.common.utils.JwtTool; +import com.jzo2o.customer.properties.ApplicationProperties; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import javax.annotation.Resource; + +@Configuration +public class JwtConfiguration { + + @Resource + private ApplicationProperties applicationProperties; + + @Bean + public JwtTool jwtTool() { + return new JwtTool(applicationProperties.getJwtKey()); + } +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/config/SecurityConfig.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/config/SecurityConfig.java new file mode 100644 index 0000000..f772850 --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/config/SecurityConfig.java @@ -0,0 +1,16 @@ +package com.jzo2o.customer.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; +import org.springframework.security.crypto.password.PasswordEncoder; + +@Configuration +public class SecurityConfig { + + @Bean + public PasswordEncoder passwordEncoder(){ + return new BCryptPasswordEncoder(); + } + +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/constants/EsIndexConstants.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/constants/EsIndexConstants.java new file mode 100644 index 0000000..94e254b --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/constants/EsIndexConstants.java @@ -0,0 +1,5 @@ +package com.jzo2o.customer.constants; + +public class EsIndexConstants { + public static final String SERVE_PROVIDER_INFO = "serve_provider_info"; +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/constants/RedisConstants.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/constants/RedisConstants.java new file mode 100644 index 0000000..38cc8e4 --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/constants/RedisConstants.java @@ -0,0 +1,11 @@ +package com.jzo2o.customer.constants; + +/** + * redis常量 + */ +public class RedisConstants { + + public static class RedisKey { + + } +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/controller/agency/InstitutionStaffController.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/controller/agency/InstitutionStaffController.java new file mode 100644 index 0000000..71b50c9 --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/controller/agency/InstitutionStaffController.java @@ -0,0 +1,72 @@ +package com.jzo2o.customer.controller.agency; + + +import com.jzo2o.api.customer.dto.request.InstitutionStaffPageQueryReqDTO; +import com.jzo2o.api.customer.dto.response.InstitutionStaffResDTO; +import com.jzo2o.common.model.CurrentUserInfo; +import com.jzo2o.common.model.PageResult; +import com.jzo2o.customer.model.dto.request.InstitutionStaffUpsertReqDTO; +import com.jzo2o.customer.model.dto.response.InstitutionStaffSimpleResDTO; +import com.jzo2o.customer.service.IInstitutionStaffService; +import com.jzo2o.mvc.utils.UserContext; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + *

+ * 机构下属服务人员 前端控制器 + *

+ * + * @author itcast + * @since 2023-07-18 + */ +@RestController("agencyInstitutionStaffController") +@RequestMapping("/agency/institution-staff") +@Api(tags = "机构端 - 机构下属服务人员相关接口") +public class InstitutionStaffController { + @Resource + private IInstitutionStaffService institutionStaffService; + + @PostMapping + @ApiOperation("新增机构下属服务人员") + public void add(@RequestBody InstitutionStaffUpsertReqDTO institutionStaffUpsertReqDTO) { + institutionStaffService.add(institutionStaffUpsertReqDTO); + } + + @PutMapping("/{id}") + @ApiOperation("更新机构下属服务人员") + @ApiImplicitParams({ + @ApiImplicitParam(name = "id", value = "机构下属服务人员id", required = true, dataTypeClass = Long.class) + }) + public void update(@PathVariable("id") Long id, @RequestBody InstitutionStaffUpsertReqDTO institutionStaffUpsertReqDTO) { + institutionStaffService.update(id, institutionStaffUpsertReqDTO); + } + + @DeleteMapping("/{id}") + @ApiOperation("根据id删除") + @ApiImplicitParams({ + @ApiImplicitParam(name = "id", value = "机构下属服务人员id", required = true, dataTypeClass = Long.class) + }) + public void delete(@PathVariable("id") Long id) { + institutionStaffService.delete(id); + } + + @GetMapping("/page") + @ApiOperation("分页查询") + public PageResult page(InstitutionStaffPageQueryReqDTO institutionStaffPageQueryReqDTO) { + institutionStaffPageQueryReqDTO.setInstitutionId(UserContext.currentUserId()); + return institutionStaffService.pageQuery(institutionStaffPageQueryReqDTO); + } + + @GetMapping("/queryInstitutionStaffList") + @ApiOperation("机构下属服务人员列表") + public List queryInstitutionStaffList() { + return institutionStaffService.queryInstitutionStaffList(); + } +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/controller/agency/ServeProviderController.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/controller/agency/ServeProviderController.java new file mode 100644 index 0000000..4022efa --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/controller/agency/ServeProviderController.java @@ -0,0 +1,35 @@ +package com.jzo2o.customer.controller.agency; + + +import com.jzo2o.customer.model.dto.request.InstitutionResetPasswordReqDTO; +import com.jzo2o.customer.model.dto.response.ServeProviderInfoResDTO; +import com.jzo2o.customer.service.IServeProviderService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; + +/** + *

+ * 服务人员/机构表 前端控制器 + *

+ * + * @author itcast + * @since 2023-07-17 + */ +@RestController("agencyServeProviderController") +@RequestMapping("/agency/serve-provider") +@Api(tags = "机构端 - 服务人员或机构相关接口") +public class ServeProviderController { + @Resource + private IServeProviderService serveProviderService; + + + + @GetMapping("/currentUserInfo") + @ApiOperation("获取当前用户信息") + public ServeProviderInfoResDTO currentUserInfo() { + return serveProviderService.currentUserInfo(); + } +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/controller/agency/ServeProviderSettingsController.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/controller/agency/ServeProviderSettingsController.java new file mode 100644 index 0000000..b40c829 --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/controller/agency/ServeProviderSettingsController.java @@ -0,0 +1,52 @@ +package com.jzo2o.customer.controller.agency; + +import com.jzo2o.customer.model.dto.request.ServePickUpReqDTO; +import com.jzo2o.customer.model.dto.request.ServeScopeSetReqDTO; +import com.jzo2o.customer.model.dto.response.ServeProviderSettingsGetResDTO; +import com.jzo2o.customer.model.dto.response.ServeSettingsStatusResDTO; +import com.jzo2o.customer.service.IServeProviderSettingsService; +import com.jzo2o.mvc.utils.UserContext; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; + +/** + * @author 86188 + */ + +@RestController("agencyServeProviderSettingsController") +@RequestMapping("/agency/serve-settings") +@Api(tags = "机构端 - 服务设置相关接口") +public class ServeProviderSettingsController { + + @Resource + private IServeProviderSettingsService serveProviderSettingsService; + + @PutMapping("/serve-scope") + @ApiOperation("服务范围设置") + public void setServeScope(@RequestBody @Validated ServeScopeSetReqDTO serveScopeSetReqDTO) { + serveProviderSettingsService.setServeScope(serveScopeSetReqDTO); + } + + @GetMapping + @ApiOperation("获取设置") + public ServeProviderSettingsGetResDTO getServeScope() { + return serveProviderSettingsService.getServeScope(); + } + + @PutMapping("/pick-up") + @ApiOperation("接单设置") + public void setPickUp(@RequestBody ServePickUpReqDTO servePickUpReqDTO) { +// serveProviderSettingsService.setPickUp(servePickUpReqDTO); + serveProviderSettingsService.setPickUp(UserContext.currentUserId(), servePickUpReqDTO.getCanPickUp()); + } + + @GetMapping("/status") + @ApiOperation("获取所有设置状态") + public ServeSettingsStatusResDTO getStatus() { + return serveProviderSettingsService.getSettingStatus(); + } +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/controller/agency/ServeSkillController.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/controller/agency/ServeSkillController.java new file mode 100644 index 0000000..f6323e7 --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/controller/agency/ServeSkillController.java @@ -0,0 +1,54 @@ +package com.jzo2o.customer.controller.agency; + + +import com.jzo2o.api.foundations.dto.response.ServeItemSimpleResDTO; +import com.jzo2o.api.foundations.dto.response.ServeTypeSimpleResDTO; +import com.jzo2o.customer.model.dto.request.ServeSkillAddReqDTO; +import com.jzo2o.customer.model.dto.response.ServeSkillCategoryResDTO; +import com.jzo2o.customer.service.IServeSkillService; +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 itcast + * @since 2023-07-18 + */ +@RestController("agencyServeSkillController") +@RequestMapping("/agency/serve-skill") +@Api(tags = "机构端 - 服务技能相关接口") +public class ServeSkillController { + @Resource + private IServeSkillService serveSkillService; + + @PostMapping("/batchUpsert") + @ApiOperation("批量新增或修改服务技能") + public void listServeType(@RequestBody List serveSkillAddReqDTOList) { + serveSkillService.batchUpsert(serveSkillAddReqDTOList); + } + + @GetMapping("/category") + @ApiOperation("查询服务技能目录") + public List category() { + return serveSkillService.category(); + } + + @GetMapping("/queryCurrentUserServeSkillTypeList") + @ApiOperation("查询当前用户的服务技能类型") + public List queryCurrentUserServeSkillTypeList() { + return serveSkillService.queryCurrentUserServeSkillTypeList(); + } + + @GetMapping("/queryCurrentUserServeSkillItemList") + @ApiOperation("查询当前用户的服务技能") + public List queryCurrentUserServeSkillItemList() { + return serveSkillService.queryCurrentUserServeSkillItemList(); + } +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/controller/consumer/CommonUserController.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/controller/consumer/CommonUserController.java new file mode 100644 index 0000000..8a34e6e --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/controller/consumer/CommonUserController.java @@ -0,0 +1,37 @@ +package com.jzo2o.customer.controller.consumer; + +import com.jzo2o.customer.service.ICommonUserService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; + +/** + * 普通用户相关接口 + * + * @author itcast + * @create 2023/7/7 19:34 + **/ +@RestController("consumerCommonUserController") +@RequestMapping("/consumer/common-user") +@Api(tags = "用户端 - 普通用户相关接口") +public class CommonUserController { + @Resource + private ICommonUserService commonUserService; + + @PutMapping + @ApiOperation("更新用户手机号") + @ApiImplicitParams({ + @ApiImplicitParam(name = "phoneCode", value = "微信手机号授权码", required = true, dataTypeClass = String.class) + }) + public void update(@RequestParam("phoneCode") String phoneCode) { + commonUserService.updatePhone(phoneCode); + } + +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/controller/consumer/EvaluationController.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/controller/consumer/EvaluationController.java new file mode 100644 index 0000000..63aa08f --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/controller/consumer/EvaluationController.java @@ -0,0 +1,85 @@ +package com.jzo2o.customer.controller.consumer; + +import com.jzo2o.api.customer.dto.request.EvaluationSubmitReqDTO; +import com.jzo2o.customer.model.dto.request.AuditReqDTO; +import com.jzo2o.customer.model.dto.request.EvaluationPageByTargetReqDTO; +import com.jzo2o.customer.model.dto.request.LikeOrCancelReqDTO; +import com.jzo2o.customer.model.dto.response.AllEvaluationSystemInfoResDTO; +import com.jzo2o.customer.model.dto.response.BooleanResDTO; +import com.jzo2o.customer.model.dto.response.EvaluationAndOrdersResDTO; +import com.jzo2o.customer.model.dto.response.EvaluationResDTO; +import com.jzo2o.customer.service.EvaluationService; +import com.jzo2o.mvc.utils.UserContext; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 评价相关接口 + * + * @author itcast + * @create 2023/9/11 16:14 + **/ +@RestController("consumerEvaluationController") +@RequestMapping("/consumer/evaluation") +@Api(tags = "用户端 - 评价相关接口") +public class EvaluationController { + @Resource + private EvaluationService evaluationService; + + @PostMapping + @ApiOperation("发表评价") + public BooleanResDTO submit(@RequestBody EvaluationSubmitReqDTO evaluationSubmitReqDTO) { + evaluationSubmitReqDTO.setCurrentUserInfo(UserContext.currentUser()); + return evaluationService.submit(evaluationSubmitReqDTO); + } + + @GetMapping("/pageByTarget") + @ApiOperation("根据对象属性分页查询评价列表") + public List pageByTargetId(EvaluationPageByTargetReqDTO evaluationPageByTargetReqDTO) { + return evaluationService.pageByTarget(evaluationPageByTargetReqDTO); + } + + @DeleteMapping("/{id}") + @ApiOperation("删除评价") + @ApiImplicitParams({ + @ApiImplicitParam(name = "id", value = "评价id", required = true, dataTypeClass = String.class) + }) + public void delete(@PathVariable("id") String id) { + evaluationService.delete(id); + } + + @PostMapping("/likeOrCancel") + @ApiOperation("点赞或取消点赞接口") + public void likeOrCancel(@RequestBody LikeOrCancelReqDTO likeOrCancelReqDTO) { + evaluationService.likeOrCancel(likeOrCancelReqDTO); + } + + @PostMapping("/userReport") + @ApiOperation("用户举报") + public void userReport(@RequestBody AuditReqDTO auditReqDTO) { + evaluationService.userReport(auditReqDTO); + } + + @GetMapping("/pageByCurrentUser") + @ApiOperation("分页查询当前用户评价列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "pageNo", value = "页码,默认为1", defaultValue = "1", dataTypeClass = Integer.class), + @ApiImplicitParam(name = "pageSize", value = "页面大小,默认为10", defaultValue = "10", dataTypeClass = Integer.class) + }) + public List pageByCurrentUser(@RequestParam(value = "pageNo", required = false, defaultValue = "1") Integer pageNo, + @RequestParam(value = "pageSize", required = false, defaultValue = "10") Integer pageSize) { + return evaluationService.pageByCurrentUser(pageNo, pageSize); + } + + @GetMapping("/findAllSystemInfo") + @ApiOperation("查询评价配置信息") + public AllEvaluationSystemInfoResDTO findAllSystemInfo() { + return evaluationService.findAllSystemInfo(UserContext.currentUser()); + } +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/controller/inner/InnerCommonUserController.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/controller/inner/InnerCommonUserController.java new file mode 100644 index 0000000..7f57430 --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/controller/inner/InnerCommonUserController.java @@ -0,0 +1,30 @@ +package com.jzo2o.customer.controller.inner; + +import com.jzo2o.api.customer.CommonUserApi; +import com.jzo2o.api.customer.dto.response.CommonUserResDTO; +import com.jzo2o.common.utils.BeanUtils; +import com.jzo2o.customer.service.ICommonUserService; +import io.swagger.annotations.Api; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; + +/** + * 内部接口-普通用户相关接口 + * + * @author itcast + * @create 2023/7/7 19:34 + **/ +@RestController +@RequestMapping("inner/common-user") +@Api(tags = "内部接口 - 普通用户相关接口") +public class InnerCommonUserController implements CommonUserApi { + @Resource + private ICommonUserService commonUserService; + + @Override + public CommonUserResDTO findById(Long id) { + return BeanUtils.toBean(commonUserService.getById(id), CommonUserResDTO.class); + } +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/controller/inner/InnerEvaluationController.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/controller/inner/InnerEvaluationController.java new file mode 100644 index 0000000..75a81d3 --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/controller/inner/InnerEvaluationController.java @@ -0,0 +1,42 @@ +package com.jzo2o.customer.controller.inner; + +import com.jzo2o.api.customer.EvaluationApi; +import com.jzo2o.api.customer.dto.request.EvaluationSubmitReqDTO; +import com.jzo2o.api.customer.dto.response.EvaluationScoreResDTO; +import com.jzo2o.customer.service.EvaluationService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; +import java.util.Map; + +/** + * 评价相关接口 + * + * @author itcast + * @create 2023/9/11 16:14 + **/ +@RestController("innerEvaluationController") +@RequestMapping("/inner/evaluation") +@Api(tags = "内部接口 - 评价相关接口") +public class InnerEvaluationController implements EvaluationApi { + @Resource + private EvaluationService evaluationService; + + @Override + @GetMapping("/queryServeProviderScoreByOrdersId") + @ApiOperation("根据订单id列表查询师傅评分") + public EvaluationScoreResDTO queryServeProviderScoreByOrdersId(@RequestParam("orderIds") List orderIds) { + Map scoreMap = evaluationService.queryServeProviderScoreByOrdersId(orderIds); + return new EvaluationScoreResDTO(scoreMap); + } + + @Override + @PostMapping("/autoEvaluate") + @ApiOperation("自动评价") + public void autoEvaluate(@RequestBody EvaluationSubmitReqDTO evaluationSubmitReqDTO) { + evaluationService.autoEvaluate(evaluationSubmitReqDTO); + } +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/controller/inner/InnerInstitutionStaffController.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/controller/inner/InnerInstitutionStaffController.java new file mode 100644 index 0000000..ce67ba8 --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/controller/inner/InnerInstitutionStaffController.java @@ -0,0 +1,69 @@ +package com.jzo2o.customer.controller.inner; + + +import cn.hutool.core.bean.BeanUtil; +import com.jzo2o.api.customer.InstitutionStaffApi; +import com.jzo2o.api.customer.dto.request.InstitutionStaffAddReqDTO; +import com.jzo2o.api.customer.dto.response.InstitutionStaffResDTO; +import com.jzo2o.customer.model.domain.InstitutionStaff; +import com.jzo2o.customer.service.IInstitutionStaffService; +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 itcast + * @since 2023-07-18 + */ +@RestController +@RequestMapping("/inner/institution-staff") +@Api(tags = "内部接口 - 机构下属服务人员相关接口") +public class InnerInstitutionStaffController implements InstitutionStaffApi { + @Resource + private IInstitutionStaffService institutionStaffService; + + @Override + @GetMapping("/findByIds") + @ApiOperation("根据id列表查询") + public List findByIds(@RequestParam("ids") List ids) { + return BeanUtil.copyToList(institutionStaffService.listByIds(ids), InstitutionStaffResDTO.class); + } + + @GetMapping("/findById") + @ApiOperation("根据id查询") + @Override + public InstitutionStaffResDTO findById(Long id) { + InstitutionStaff institutionStaff = institutionStaffService.getById(id); + InstitutionStaffResDTO institutionStaffResDTO = BeanUtil.toBean(institutionStaff, InstitutionStaffResDTO.class); + return institutionStaffResDTO; + } + + + @Override + @GetMapping({"/findByIdAndInstitutionId/{id}"}) + public InstitutionStaffResDTO findByIdAndInstitutionId(@PathVariable("id") Long id, @RequestParam("institutionId") Long institutionId) { + return institutionStaffService.findByIdAndInstitutionId(id, institutionId); + } + + @Override + public List findByInstitutionId(Long institutionId) { + return institutionStaffService.findByInstitutionId(institutionId); + } + + @Override + @PostMapping("/add") + @ApiOperation("内部接口生成服务人员") + public void add(@RequestBody InstitutionStaffAddReqDTO institutionStaffAddReqDTO) { + institutionStaffService.add(institutionStaffAddReqDTO); + + } + + +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/controller/inner/InnerServeProviderController.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/controller/inner/InnerServeProviderController.java new file mode 100644 index 0000000..cb92580 --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/controller/inner/InnerServeProviderController.java @@ -0,0 +1,64 @@ +package com.jzo2o.customer.controller.inner; + + +import com.jzo2o.api.customer.ServeProviderApi; +import com.jzo2o.api.customer.dto.response.ServeProviderResDTO; +import com.jzo2o.api.customer.dto.response.ServeProviderSimpleResDTO; +import com.jzo2o.customer.service.IServeProviderService; +import com.jzo2o.customer.service.IServeProviderSettingsService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; +import java.util.Map; + +/** + *

+ * 服务人员/机构表 前端控制器 + *

+ * + * @author itcast + * @since 2023-07-17 + */ +@RestController +@RequestMapping("/inner/serve-provider") +@Api(tags = "内部接口 - 服务人员、机构相关接口") +public class InnerServeProviderController implements ServeProviderApi { + @Resource + private IServeProviderService serveProviderService; + + @Resource + private IServeProviderSettingsService serveProviderSettingsService; + + + @Override + @GetMapping("/{id}") + @ApiOperation("服务人员/机构详情") + @ApiImplicitParams({ + @ApiImplicitParam(name = "id", value = "服务人员/机构id", required = true, dataTypeClass = Long.class) + }) + public ServeProviderResDTO getDetail(@PathVariable("id") Long id) { + return serveProviderService.findServeProviderInfo(id); + } + + @Override + @GetMapping("/batchCityCode") + @ApiOperation("批量获取服务人员或机构所在城市编码") + public Map batchCityCode(@RequestParam(value = "ids") List ids) { + return serveProviderSettingsService.findManyCityCodeOfServeProvider(ids); + } + + @Override + public Map batchGetProviderType(List ids) { + return null; + } + + @Override + public List batchGet(List ids) { + return serveProviderService.batchGet(ids); + } +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/controller/inner/InnerServeSkillController.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/controller/inner/InnerServeSkillController.java new file mode 100644 index 0000000..07a6815 --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/controller/inner/InnerServeSkillController.java @@ -0,0 +1,36 @@ +package com.jzo2o.customer.controller.inner; + +import com.jzo2o.api.customer.ServeSkillApi; +import com.jzo2o.customer.service.IServeSkillService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 内部接口-服务技能相关接口 + * + * @author itcast + * @create 2023/7/25 10:36 + **/ +@RestController +@RequestMapping("/inner/serve-skill") +@Api(tags = "内部接口 - 服务技能相关接口") +public class InnerServeSkillController implements ServeSkillApi { + @Resource + private IServeSkillService serveSkillService; + + @Override + @GetMapping("/queryServeSkillListByServeProvider") + @ApiOperation("查询服务者的服务技能") + public List queryServeSkillListByServeProvider(@RequestParam("providerId") Long providerId, + @RequestParam("providerType") Integer providerType, + @RequestParam("cityCode") String cityCode) { + return serveSkillService.queryServeSkillListByServeProvider(providerId, providerType, cityCode); + } +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/controller/open/LoginController.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/controller/open/LoginController.java new file mode 100644 index 0000000..89170bc --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/controller/open/LoginController.java @@ -0,0 +1,46 @@ +package com.jzo2o.customer.controller.open; + +import com.jzo2o.common.constants.UserType; +import com.jzo2o.customer.model.dto.request.LoginForCustomerReqDTO; +import com.jzo2o.customer.model.dto.request.LoginForWorkReqDTO; +import com.jzo2o.customer.model.dto.response.LoginResDTO; +import com.jzo2o.customer.service.ILoginService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; + +/** + * @author itcast + */ +@RestController("openLoginController") +@RequestMapping("/open/login") +@Api(tags = "白名单接口 - 客户登录相关接口") +public class LoginController { + @Resource + private ILoginService loginService; + + @PostMapping("/worker") + @ApiOperation("服务人员/机构人员登录接口") + public LoginResDTO loginForWorker(@RequestBody LoginForWorkReqDTO loginForWorkReqDTO) { + if(UserType.INSTITUTION == loginForWorkReqDTO.getUserType()){ + return loginService.loginForPassword(loginForWorkReqDTO); + }else{ + return loginService.loginForVerify(loginForWorkReqDTO); + } + } + + /** + * c端用户登录接口 + */ + @PostMapping("/common/user") + @ApiOperation("c端用户登录接口") + public LoginResDTO loginForCommonUser(@RequestBody LoginForCustomerReqDTO loginForCustomerReqDTO) { + return loginService.loginForCommonUser(loginForCustomerReqDTO); + } + +} \ No newline at end of file diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/controller/operation/AgencyCertificationController.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/controller/operation/AgencyCertificationController.java new file mode 100644 index 0000000..b31a58b --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/controller/operation/AgencyCertificationController.java @@ -0,0 +1,31 @@ +package com.jzo2o.customer.controller.operation; + +import cn.hutool.core.bean.BeanUtil; +import com.jzo2o.customer.model.dto.response.AgencyCertificationResDTO; +import com.jzo2o.customer.service.IAgencyCertificationService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; + +/** + * @author itcast + */ +@RestController("operationAgencyCertificationController") +@RequestMapping("/operation/agency-certification") +@Api(tags = "运营端 - 机构认证信息相关接口") +public class AgencyCertificationController { + + @Resource + private IAgencyCertificationService agencyCertificationService; + + @GetMapping("/{id}") + @ApiOperation("根据机构id查询认证信息") + public AgencyCertificationResDTO queryById(@PathVariable("id") Long id) { + return BeanUtil.toBean(agencyCertificationService.getById(id), AgencyCertificationResDTO.class); + } +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/controller/operation/BankAccountController.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/controller/operation/BankAccountController.java new file mode 100644 index 0000000..466f864 --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/controller/operation/BankAccountController.java @@ -0,0 +1,32 @@ +package com.jzo2o.customer.controller.operation; + +import cn.hutool.core.bean.BeanUtil; +import com.jzo2o.customer.model.dto.response.BankAccountResDTO; +//import com.jzo2o.customer.service.IBankAccountService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; + +/** + * @author itcast + */ +@RestController("operationBankAccountController") +@RequestMapping("/operation/bank-account") +@Api(tags = "运营端 - 银行账户信息相关接口") +public class BankAccountController { + +// @Resource +// private IBankAccountService bankAccountService; + + @GetMapping("/{id}") + @ApiOperation("根据服务人员/机构id查询银行账户信息") + public BankAccountResDTO queryByServeProviderId(@PathVariable("id") Long id) { +// return BeanUtil.toBean(bankAccountService.getById(id), BankAccountResDTO.class); + return new BankAccountResDTO(); + } +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/controller/operation/CommonUserController.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/controller/operation/CommonUserController.java new file mode 100644 index 0000000..cb0a7b0 --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/controller/operation/CommonUserController.java @@ -0,0 +1,36 @@ +package com.jzo2o.customer.controller.operation; + +import com.jzo2o.api.customer.dto.request.CommonUserPageQueryReqDTO; +import com.jzo2o.api.customer.dto.request.CommonUserUpdateReqDTO; +import com.jzo2o.api.customer.dto.response.CommonUserResDTO; +import com.jzo2o.common.model.PageResult; +import com.jzo2o.customer.service.ICommonUserService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; + +/** + * @author itcast + */ +@RestController("operationCommonUserController") +@RequestMapping("/operation/common-user") +@Api(tags = "运营端 - 普通用户相关接口") +public class CommonUserController { + + @Resource + private ICommonUserService commonUserService; + + @GetMapping("/page") + @ApiOperation("普通用户分页查询") + public PageResult page(CommonUserPageQueryReqDTO commonUserPageQueryReqDTO) { + return commonUserService.page(commonUserPageQueryReqDTO); + } + + @PutMapping("/updateStatus") + @ApiOperation("账号冻结/解冻") + public void updateStatus(@RequestBody CommonUserUpdateReqDTO commonUserUpdateReqDTO) { + commonUserService.updateStatus(commonUserUpdateReqDTO); + } +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/controller/operation/EvaluationController.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/controller/operation/EvaluationController.java new file mode 100644 index 0000000..60c441f --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/controller/operation/EvaluationController.java @@ -0,0 +1,41 @@ +package com.jzo2o.customer.controller.operation; + +import com.jzo2o.api.customer.dto.request.EvaluationSubmitReqDTO; +import com.jzo2o.common.model.CurrentUserInfo; +import com.jzo2o.customer.model.dto.request.AuditReqDTO; +import com.jzo2o.customer.model.dto.request.EvaluationPageByTargetReqDTO; +import com.jzo2o.customer.model.dto.request.LikeOrCancelReqDTO; +import com.jzo2o.customer.model.dto.response.EvaluationAndOrdersResDTO; +import com.jzo2o.customer.model.dto.response.EvaluationResDTO; +import com.jzo2o.customer.model.dto.response.EvaluationTokenDto; +import com.jzo2o.customer.service.EvaluationService; +import com.jzo2o.mvc.utils.UserContext; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 评价相关接口 + * + * @author itcast + * @create 2023/9/11 16:14 + **/ +@RestController("operationEvaluationController") +@RequestMapping("/operation/evaluation") +@Api(tags = "运营端 - 评价相关接口") +public class EvaluationController { + @Resource + private EvaluationService evaluationService; + + + @GetMapping("/token") + @ApiOperation("获取评价系统token") + public EvaluationTokenDto getToken() { + return evaluationService.getEvaluationInfo(); + } +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/controller/operation/InstitutionStaffController.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/controller/operation/InstitutionStaffController.java new file mode 100644 index 0000000..8fef770 --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/controller/operation/InstitutionStaffController.java @@ -0,0 +1,38 @@ +package com.jzo2o.customer.controller.operation; + + +import com.jzo2o.api.customer.dto.request.InstitutionStaffPageQueryReqDTO; +import com.jzo2o.api.customer.dto.response.InstitutionStaffResDTO; +import com.jzo2o.common.model.PageResult; +import com.jzo2o.customer.service.IInstitutionStaffService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; + +/** + *

+ * 运营端 - 机构下属服务人员相关接口 + *

+ * + * @author itcast + * @since 2023-07-03 + */ +@Validated +@RestController("operationInstitutionStaffController") +@RequestMapping("/operation/institution-staff") +@Api(tags = "运营端 - 机构下属服务人员相关接口") +public class InstitutionStaffController { + @Resource + private IInstitutionStaffService institutionStaffService; + + @GetMapping("/page") + @ApiOperation("分页查询") + public PageResult page(InstitutionStaffPageQueryReqDTO institutionStaffPageQueryReqDTO) { + return institutionStaffService.pageQuery(institutionStaffPageQueryReqDTO); + } +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/controller/operation/ServeProviderController.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/controller/operation/ServeProviderController.java new file mode 100644 index 0000000..a34f7f7 --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/controller/operation/ServeProviderController.java @@ -0,0 +1,72 @@ +package com.jzo2o.customer.controller.operation; + + +import com.jzo2o.api.customer.dto.request.ServerProviderUpdateStatusReqDTO; +import com.jzo2o.api.customer.dto.response.ServeProviderResDTO; +import com.jzo2o.common.model.PageResult; +import com.jzo2o.customer.model.dto.request.ServeProviderPageQueryReqDTO; +import com.jzo2o.customer.model.dto.response.ServeProviderBasicInformationResDTO; +import com.jzo2o.customer.model.dto.response.ServeProviderListResDTO; +import com.jzo2o.customer.service.IServeProviderService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.validation.constraints.NotNull; + +/** + *

+ * 服务人员/机构相关接口 + *

+ * + * @author itcast + * @since 2023-07-03 + */ +@Validated +@RestController("operationServeProviderController") +@RequestMapping("/operation/serve-provider") +@Api(tags = "运营端 - 服务人员或机构相关接口") +public class ServeProviderController { + @Resource + private IServeProviderService serveProviderService; + + @GetMapping("/pageQueryAgency") + @ApiOperation("机构分页查询") + public PageResult pageQueryAgency(ServeProviderPageQueryReqDTO serveProviderPageQueryReqDTO) { + return serveProviderService.pageQueryAgency(serveProviderPageQueryReqDTO); + } + + @GetMapping("/pageQueryWorker") + @ApiOperation("服务人员分页查询") + public PageResult pageQueryWorker(ServeProviderPageQueryReqDTO serveProviderPageQueryReqDTO) { + return serveProviderService.pageQueryWorker(serveProviderPageQueryReqDTO); + } + + @GetMapping("/{id}") + @ApiOperation("服务人员/机构详情") + @ApiImplicitParams({ + @ApiImplicitParam(name = "id", value = "服务人员/机构id", required = true, dataTypeClass = Long.class) + }) + public ServeProviderResDTO detail(@NotNull(message = "id不能为空") @PathVariable("id") Long id) { + return serveProviderService.findServeProviderInfo(id); + } + + @PutMapping("/updateStatus") + @ApiOperation("账号冻结/解冻") + public void updateStatus(@RequestBody ServerProviderUpdateStatusReqDTO serverProviderUpdateStatusReqDTO) { + serveProviderService.updateStatus(serverProviderUpdateStatusReqDTO); + } + + @GetMapping("/basicInformation/{id}") + @ApiOperation("服务人员/机构基本信息") + @ApiImplicitParams({ + @ApiImplicitParam(name = "id", value = "服务人员/机构id", required = true, dataTypeClass = Long.class) + }) + public ServeProviderBasicInformationResDTO findBasicInformationById(@NotNull(message = "id不能为空") @PathVariable("id") Long id) { + return serveProviderService.findBasicInformationById(id); + } +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/controller/operation/WorkerCertificationController.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/controller/operation/WorkerCertificationController.java new file mode 100644 index 0000000..adbccf6 --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/controller/operation/WorkerCertificationController.java @@ -0,0 +1,31 @@ +package com.jzo2o.customer.controller.operation; + +import cn.hutool.core.bean.BeanUtil; +import com.jzo2o.customer.model.dto.response.WorkerCertificationResDTO; +import com.jzo2o.customer.service.IWorkerCertificationService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; + +/** + * @author itcast + */ +@RestController("operationWorkerCertificationController") +@RequestMapping("/operation/worker-certification") +@Api(tags = "运营端 - 服务人员认证信息相关接口") +public class WorkerCertificationController { + + @Resource + private IWorkerCertificationService workerCertificationService; + + @GetMapping("/{id}") + @ApiOperation("根据服务人员id查询认证信息") + public WorkerCertificationResDTO queryById(@PathVariable("id") Long id) { + return BeanUtil.toBean(workerCertificationService.getById(id), WorkerCertificationResDTO.class); + } +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/controller/worker/EvaluationController.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/controller/worker/EvaluationController.java new file mode 100644 index 0000000..e1dadd7 --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/controller/worker/EvaluationController.java @@ -0,0 +1,44 @@ +package com.jzo2o.customer.controller.worker; + +import com.jzo2o.customer.model.dto.request.EvaluationPageByTargetReqDTO; +import com.jzo2o.customer.model.dto.response.EvaluationAndOrdersResDTO; +import com.jzo2o.customer.model.dto.response.EvaluationResDTO; +import com.jzo2o.customer.service.EvaluationService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 评价相关接口 + * + * @author itcast + * @create 2023/9/11 16:14 + **/ +@RestController("workerEvaluationController") +@RequestMapping("/worker/evaluation") +@Api(tags = "服务端 - 评价相关接口") +public class EvaluationController { + @Resource + private EvaluationService evaluationService; + + @GetMapping("/pageByCurrentUserAndScoreLevel") + @ApiOperation("根据评价等级分页查询当前用户评价列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "scoreLevel", value = "评价等级,1差评,2中评,3好评", dataTypeClass = Integer.class), + @ApiImplicitParam(name = "pageNo", value = "页码,默认为1", defaultValue = "1", dataTypeClass = Integer.class), + @ApiImplicitParam(name = "pageSize", value = "页面大小,默认为10", defaultValue = "10", dataTypeClass = Integer.class) + }) + public List pageByCurrentUserAndScoreLevel(@RequestParam(value = "scoreLevel", required = false) Integer scoreLevel, + @RequestParam(value = "pageNo", required = false, defaultValue = "1") Integer pageNo, + @RequestParam(value = "pageSize", required = false, defaultValue = "10") Integer pageSize) { + return evaluationService.pageByCurrentUserAndScoreLevel(scoreLevel,pageNo, pageSize); + } +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/controller/worker/ServeProviderController.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/controller/worker/ServeProviderController.java new file mode 100644 index 0000000..9b12a25 --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/controller/worker/ServeProviderController.java @@ -0,0 +1,32 @@ +package com.jzo2o.customer.controller.worker; + +import com.jzo2o.customer.model.dto.response.ServeProviderInfoResDTO; +import com.jzo2o.customer.model.dto.response.ServeProviderSettingsGetResDTO; +import com.jzo2o.customer.service.IServeProviderService; +import com.jzo2o.customer.service.IServeProviderSettingsService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; + +/** + * @author 86188 + */ + +@RestController("workerServeProviderController") +@RequestMapping("/worker/serve-provider") +@Api(tags = "服务端 - 服务人员相关接口") +public class ServeProviderController { + + @Resource + private IServeProviderService serveProviderService; + + @GetMapping("/currentUserInfo") + @ApiOperation("获取当前用户信息") + public ServeProviderInfoResDTO currentUserInfo() { + return serveProviderService.currentUserInfo(); + } +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/controller/worker/ServeProviderSettingsController.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/controller/worker/ServeProviderSettingsController.java new file mode 100644 index 0000000..a7b45a7 --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/controller/worker/ServeProviderSettingsController.java @@ -0,0 +1,52 @@ +package com.jzo2o.customer.controller.worker; + +import com.jzo2o.customer.model.dto.request.ServePickUpReqDTO; +import com.jzo2o.customer.model.dto.request.ServeScopeSetReqDTO; +import com.jzo2o.customer.model.dto.response.ServeProviderSettingsGetResDTO; +import com.jzo2o.customer.model.dto.response.ServeSettingsStatusResDTO; +import com.jzo2o.customer.service.IServeProviderSettingsService; +import com.jzo2o.mvc.utils.UserContext; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; + +/** + * @author 86188 + */ + +@RestController("workerServeProviderSettingsController") +@RequestMapping("/worker/serve-settings") +@Api(tags = "服务端 - 服务设置相关接口") +public class ServeProviderSettingsController { + + @Resource + private IServeProviderSettingsService serveProviderSettingsService; + + @PutMapping("/serve-scope") + @ApiOperation("服务范围设置") + public void setServeScope(@RequestBody @Validated ServeScopeSetReqDTO serveScopeSetReqDTO) { + serveProviderSettingsService.setServeScope(serveScopeSetReqDTO); + } + + @GetMapping + @ApiOperation("获取设置") + public ServeProviderSettingsGetResDTO getServeScope() { + return serveProviderSettingsService.getServeScope(); + } + + @PutMapping("/pick-up") + @ApiOperation("接单设置") + public void setPickUp(@RequestBody ServePickUpReqDTO servePickUpReqDTO) { +// serveProviderSettingsService.setPickUp(servePickUpReqDTO); + serveProviderSettingsService.setPickUp(UserContext.currentUserId(), servePickUpReqDTO.getCanPickUp()); + } + + @GetMapping("/status") + @ApiOperation("获取所有设置状态") + public ServeSettingsStatusResDTO getStatus() { + return serveProviderSettingsService.getSettingStatus(); + } +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/controller/worker/ServeSkillController.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/controller/worker/ServeSkillController.java new file mode 100644 index 0000000..88719f9 --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/controller/worker/ServeSkillController.java @@ -0,0 +1,54 @@ +package com.jzo2o.customer.controller.worker; + + +import com.jzo2o.api.foundations.dto.response.ServeItemSimpleResDTO; +import com.jzo2o.api.foundations.dto.response.ServeTypeSimpleResDTO; +import com.jzo2o.customer.model.dto.request.ServeSkillAddReqDTO; +import com.jzo2o.customer.model.dto.response.ServeSkillCategoryResDTO; +import com.jzo2o.customer.service.IServeSkillService; +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 itcast + * @since 2023-07-18 + */ +@RestController("workerServeSkillController") +@RequestMapping("/worker/serve-skill") +@Api(tags = "服务端 - 服务技能相关接口") +public class ServeSkillController { + @Resource + private IServeSkillService serveSkillService; + + @PostMapping("/batchUpsert") + @ApiOperation("批量新增或修改服务技能") + public void listServeType(@RequestBody List serveSkillAddReqDTOList) { + serveSkillService.batchUpsert(serveSkillAddReqDTOList); + } + + @GetMapping("/category") + @ApiOperation("查询服务技能目录") + public List category() { + return serveSkillService.category(); + } + + @GetMapping("/queryCurrentUserServeSkillTypeList") + @ApiOperation("查询当前用户的服务技能类型") + public List queryCurrentUserServeSkillTypeList() { + return serveSkillService.queryCurrentUserServeSkillTypeList(); + } + + @GetMapping("/queryCurrentUserServeSkillItemList") + @ApiOperation("查询当前用户的服务技能") + public List queryCurrentUserServeSkillItemList() { + return serveSkillService.queryCurrentUserServeSkillItemList(); + } +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/enums/CertificationStatusEnum.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/enums/CertificationStatusEnum.java new file mode 100644 index 0000000..cf6eef8 --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/enums/CertificationStatusEnum.java @@ -0,0 +1,26 @@ +package com.jzo2o.customer.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * @author itcast + */ +@Getter +@AllArgsConstructor +public enum CertificationStatusEnum { + INIT(0, "初始态"), + PROGRESSING(1, "认证中"), + SUCCESS(2, "认证成功"), + FAIL(3, "认证失败"); + + /** + * 状态值 + */ + private final int status; + + /** + * 描述 + */ + private final String description; +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/handler/ServeProviderHandler.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/handler/ServeProviderHandler.java new file mode 100644 index 0000000..4ec5bee --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/handler/ServeProviderHandler.java @@ -0,0 +1,62 @@ +//package com.jzo2o.customer.handler; +// +//import com.jzo2o.canal.listeners.AbstractCanalRabbitMqMsgListener; +//import com.jzo2o.common.expcetions.BadRequestException; +//import com.jzo2o.common.expcetions.CommonException; +//import com.jzo2o.common.model.Location; +//import com.jzo2o.common.utils.BeanUtils; +//import com.jzo2o.common.utils.CollUtils; +//import com.jzo2o.customer.constants.EsIndexConstants; +//import com.jzo2o.customer.model.domain.ServeProviderInfo; +//import com.jzo2o.customer.model.domain.ServeProviderSync; +//import com.jzo2o.es.core.ElasticSearchTemplate; +//import lombok.Data; +//import lombok.extern.slf4j.Slf4j; +//import org.springframework.amqp.core.ExchangeTypes; +//import org.springframework.amqp.core.Message; +//import org.springframework.amqp.rabbit.annotation.Exchange; +//import org.springframework.amqp.rabbit.annotation.Queue; +//import org.springframework.amqp.rabbit.annotation.QueueBinding; +//import org.springframework.amqp.rabbit.annotation.RabbitListener; +//import org.springframework.stereotype.Component; +// +//import javax.annotation.Resource; +//import java.util.List; +// +///** +// * @author 86188 +// */ +//@Data +//@Component +//@Slf4j +//public class ServeProviderHandler extends AbstractCanalRabbitMqMsgListener { +// @Resource +// private ElasticSearchTemplate elasticSearchTemplate; +// +// @RabbitListener(bindings = @QueueBinding( +// value = @Queue(name = "canal-mq-jzo2o-customer-provider"), +// exchange = @Exchange(name = "exchange.canal-jzo2o", type = ExchangeTypes.TOPIC), +// key = "canal-mq-jzo2o-customer-provider"), +// concurrency = "1" +// ) +// public void onMessage(Message message) throws Exception { +// parseMsg(message); +// } +// +// @Override +// public void batchSave(List data) { +// List serveProviderInfos = BeanUtils.copyToList(data, ServeProviderInfo.class, (sync, info) -> { +// info.setLocation(new Location(sync.getLon(), sync.getLat())); +// }); +// log.debug("serveProviderInfos : {}", serveProviderInfos); +// +// if(!elasticSearchTemplate.opsForDoc().batchUpsert(EsIndexConstants.SERVE_PROVIDER_INFO, serveProviderInfos)){ +// throw new CommonException("服务人员或机构信息同步异常"); +// } +// } +// +// @Override +// public void batchDelete(List ids) { +// elasticSearchTemplate.opsForDoc().batchDelete(EsIndexConstants.SERVE_PROVIDER_INFO, ids); +// } +//} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/handler/XxlJobHandler.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/handler/XxlJobHandler.java new file mode 100644 index 0000000..34b4ddc --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/handler/XxlJobHandler.java @@ -0,0 +1,39 @@ +//package com.jzo2o.customer.handler; +// +//import com.jzo2o.rabbitmq.plugins.ErrorMessageRecoverer; +//import com.jzo2o.rabbitmq.plugins.RabbitMqResender; +//import com.xxl.job.core.handler.annotation.XxlJob; +//import lombok.extern.slf4j.Slf4j; +//import org.springframework.stereotype.Component; +// +//import javax.annotation.Resource; +// +///** +// * xxl-job定时任务 +// */ +//@Component +//@Slf4j +//public class XxlJobHandler { +// +// @Resource +// private RabbitMqResender rabbitMqResender; +// +// /** +// * rabbitmq异常消息拉取并重新发回队列 +// */ +// @XxlJob("rabbitmqErrorMsgPullAndResend") +// public void rabbitmqErrorMsgPullAndResend(){ +// +// log.debug("rabbitmq异常消息重新"); +// for (int count = 0; count < 100; count++) { +// try { +// if(!rabbitMqResender.getOneMessageAndProcess()) { +// break; +// } +// }catch (Exception e){ +// log.error("rabbitmq异常消息拉取失败,e:",e); +// } +// } +// } +// +//} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/listener/EvaluationListener.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/listener/EvaluationListener.java new file mode 100644 index 0000000..29813d4 --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/listener/EvaluationListener.java @@ -0,0 +1,63 @@ +//package com.jzo2o.customer.listener; +// +//import cn.hutool.core.util.NumberUtil; +//import cn.hutool.core.util.ObjectUtil; +//import cn.hutool.json.JSONUtil; +//import com.jzo2o.common.constants.MqConstants; +//import com.jzo2o.customer.model.dto.ScoreStatisticsMsg; +//import com.jzo2o.customer.properties.EvaluationProperties; +//import com.jzo2o.customer.service.IServeProviderService; +//import lombok.extern.slf4j.Slf4j; +//import org.springframework.amqp.core.ExchangeTypes; +//import org.springframework.amqp.rabbit.annotation.Exchange; +//import org.springframework.amqp.rabbit.annotation.Queue; +//import org.springframework.amqp.rabbit.annotation.QueueBinding; +//import org.springframework.amqp.rabbit.annotation.RabbitListener; +//import org.springframework.stereotype.Component; +// +//import javax.annotation.Resource; +// +///** +// * 监听mq消息 +// * +// * @author itcast +// **/ +//@Slf4j +//@Component +//public class EvaluationListener { +// @Resource +// private EvaluationProperties evaluationProperties; +// @Resource +// private IServeProviderService serveProviderService; +// +// /** +// * +// * @param msg 消息 +// */ +// @RabbitListener(bindings = @QueueBinding( +// value = @Queue(name = MqConstants.Queues.SCORE_STATISTICS), +// exchange = @Exchange(name = MqConstants.Exchanges.EVALUATION_SCORE, type = ExchangeTypes.TOPIC), +// key = MqConstants.RoutingKeys.SCORE_STATISTICS +// )) +// public void listenTradeUpdatePayStatusMsg(String msg) { +// log.info("接收到评价系统评分同步的消息 ({})-> {}", MqConstants.Queues.SCORE_STATISTICS, msg); +// ScoreStatisticsMsg scoreStatisticsMsg = JSONUtil.toBean(msg, ScoreStatisticsMsg.class); +// +// //如果是服务项评分数据,直接跳过 +// if (ObjectUtil.equal(scoreStatisticsMsg.getTargetTypeId(), evaluationProperties.getServeItem().getTargetTypeId())) { +// return; +// } +// +// Long scoreCount = scoreStatisticsMsg.getScoreCount(); +// Long goodLevelCount = scoreStatisticsMsg.getGoodLevelCount(); +// +// //综合评分 +// Double score = (null == scoreCount) ? 5.0 : NumberUtil.round(scoreStatisticsMsg.getTotalScore() * 1.0 / scoreCount, 1).doubleValue(); +// +// //好评率 +// String goodLevelRate =(null == scoreCount) ? "0.0%" : NumberUtil.decimalFormat("#.##%", NumberUtil.div(goodLevelCount, scoreCount, 4)); +// +// //更新分数 +// serveProviderService.updateScoreById(Long.valueOf(scoreStatisticsMsg.getTargetId()), score, goodLevelRate); +// } +//} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/mapper/AddressBookMapper.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/mapper/AddressBookMapper.java new file mode 100644 index 0000000..862ee81 --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/mapper/AddressBookMapper.java @@ -0,0 +1,16 @@ +package com.jzo2o.customer.mapper; + +import com.jzo2o.customer.model.domain.AddressBook; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 地址薄 Mapper 接口 + *

+ * + * @author itcast + * @since 2023-07-06 + */ +public interface AddressBookMapper extends BaseMapper { + +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/mapper/AgencyCertificationMapper.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/mapper/AgencyCertificationMapper.java new file mode 100644 index 0000000..237b4a8 --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/mapper/AgencyCertificationMapper.java @@ -0,0 +1,16 @@ +package com.jzo2o.customer.mapper; + +import com.jzo2o.customer.model.domain.AgencyCertification; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 机构认证信息表 Mapper 接口 + *

+ * + * @author itcast + * @since 2023-09-06 + */ +public interface AgencyCertificationMapper extends BaseMapper { + +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/mapper/CommonUserMapper.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/mapper/CommonUserMapper.java new file mode 100644 index 0000000..485ae34 --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/mapper/CommonUserMapper.java @@ -0,0 +1,16 @@ +package com.jzo2o.customer.mapper; + +import com.jzo2o.customer.model.domain.CommonUser; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author itcast + * @since 2023-07-04 + */ +public interface CommonUserMapper extends BaseMapper { + +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/mapper/InstitutionStaffMapper.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/mapper/InstitutionStaffMapper.java new file mode 100644 index 0000000..dce256e --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/mapper/InstitutionStaffMapper.java @@ -0,0 +1,16 @@ +package com.jzo2o.customer.mapper; + +import com.jzo2o.customer.model.domain.InstitutionStaff; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 机构下属服务人员 Mapper 接口 + *

+ * + * @author itcast + * @since 2023-07-18 + */ +public interface InstitutionStaffMapper extends BaseMapper { + +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/mapper/ServeProviderMapper.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/mapper/ServeProviderMapper.java new file mode 100644 index 0000000..9ad962a --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/mapper/ServeProviderMapper.java @@ -0,0 +1,46 @@ +package com.jzo2o.customer.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.jzo2o.customer.model.domain.ServeProvider; +import com.jzo2o.customer.model.dto.request.ServeProviderPageQueryReqDTO; +import com.jzo2o.customer.model.dto.response.ServeProviderBasicInformationResDTO; +import com.jzo2o.customer.model.dto.response.ServeProviderListResDTO; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 服务人员/机构表 Mapper 接口 + *

+ * + * @author itcast + * @since 2023-07-17 + */ +public interface ServeProviderMapper extends BaseMapper { + + /** + * 分页查询服务人员 + * + * @param serveProviderPageQueryReqDTO 分页查询请求体 + * @return 服务人员列表 + */ + List queryWorkerList(ServeProviderPageQueryReqDTO serveProviderPageQueryReqDTO); + + + /** + * 分页查询机构 + * + * @param serveProviderPageQueryReqDTO 分页查询请求体 + * @return 机构列表 + */ + List queryAgencyList(ServeProviderPageQueryReqDTO serveProviderPageQueryReqDTO); + + /** + * 根据服务人员/机构id查询基本信息 + * + * @param id 服务人员/机构id + * @return 基本信息 + */ + ServeProviderBasicInformationResDTO findBasicInformationById(@Param("id") Long id); +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/mapper/ServeProviderSettingsMapper.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/mapper/ServeProviderSettingsMapper.java new file mode 100644 index 0000000..21448e2 --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/mapper/ServeProviderSettingsMapper.java @@ -0,0 +1,23 @@ +package com.jzo2o.customer.mapper; + +import com.jzo2o.customer.model.domain.ServeProviderSettings; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + *

+ * 服务人员/机构附属信息 Mapper 接口 + *

+ * + * @author itcast + * @since 2023-07-20 + */ +public interface ServeProviderSettingsMapper extends BaseMapper { + + @Select("") + List batchQueryCityCodeByIds(@Param("ids") List ids); + +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/mapper/ServeProviderSyncMapper.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/mapper/ServeProviderSyncMapper.java new file mode 100644 index 0000000..4379d45 --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/mapper/ServeProviderSyncMapper.java @@ -0,0 +1,16 @@ +package com.jzo2o.customer.mapper; + +import com.jzo2o.customer.model.domain.ServeProviderSync; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 评分同步列表 Mapper 接口 + *

+ * + * @author itcast + * @since 2023-08-07 + */ +public interface ServeProviderSyncMapper extends BaseMapper { + +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/mapper/ServeSkillMapper.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/mapper/ServeSkillMapper.java new file mode 100644 index 0000000..60f97e5 --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/mapper/ServeSkillMapper.java @@ -0,0 +1,16 @@ +package com.jzo2o.customer.mapper; + +import com.jzo2o.customer.model.domain.ServeSkill; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 服务技能表 Mapper 接口 + *

+ * + * @author itcast + * @since 2023-07-18 + */ +public interface ServeSkillMapper extends BaseMapper { + +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/mapper/WorkerCertificationMapper.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/mapper/WorkerCertificationMapper.java new file mode 100644 index 0000000..663099d --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/mapper/WorkerCertificationMapper.java @@ -0,0 +1,16 @@ +package com.jzo2o.customer.mapper; + +import com.jzo2o.customer.model.domain.WorkerCertification; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 服务人员认证信息表 Mapper 接口 + *

+ * + * @author itcast + * @since 2023-09-06 + */ +public interface WorkerCertificationMapper extends BaseMapper { + +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/model/domain/AddressBook.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/domain/AddressBook.java new file mode 100644 index 0000000..5c22992 --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/domain/AddressBook.java @@ -0,0 +1,111 @@ +package com.jzo2o.customer.model.domain; + +import com.baomidou.mybatisplus.annotation.*; + +import java.time.LocalDateTime; +import java.io.Serializable; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + *

+ * 地址薄 + *

+ * + * @author itcast + * @since 2023-07-06 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("address_book") +public class AddressBook implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "id", type = IdType.ASSIGN_ID) + private Long id; + + /** + * 用户id + */ + private Long userId; + + /** + * 名称 + */ + private String name; + + /** + * 电话 + */ + private String phone; + + /** + * 省份 + */ + private String province; + + /** + * 市级 + */ + private String city; + + /** + * 区/县 + */ + private String county; + + /** + * 详细地址 + */ + private String address; + + /** + * 经度 + */ + private Double lon; + + /** + * 纬度 + */ + private Double lat; + + /** + * 是否为默认地址,0:否,1:是 + */ + private Integer isDefault; + + /** + * 是否已删除,0:未删除,1:已删除 + */ + private Integer isDeleted; + + /** + * 创建时间 + */ + private LocalDateTime createTime; + + /** + * 创建者 + */ + @TableField(fill = FieldFill.INSERT) + private Long createBy; + + /** + * 更新时间 + */ + private LocalDateTime updateTime; + + /** + * 更新者 + */ + @TableField(fill = FieldFill.INSERT_UPDATE) + private Long updateBy; + + +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/model/domain/AgencyCertification.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/domain/AgencyCertification.java new file mode 100644 index 0000000..2253255 --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/domain/AgencyCertification.java @@ -0,0 +1,80 @@ +package com.jzo2o.customer.model.domain; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.time.LocalDateTime; +import java.io.Serializable; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + *

+ * 机构认证信息表 + *

+ * + * @author itcast + * @since 2023-09-06 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("agency_certification") +public class AgencyCertification implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 机构id + */ + @TableId(value = "id", type = IdType.ASSIGN_ID) + private Long id; + + /** + * 企业名称 + */ + private String name; + + /** + * 统一社会信用代码 + */ + private String idNumber; + + /** + * 法人姓名 + */ + private String legalPersonName; + + /** + * 法人身份证号 + */ + private String legalPersonIdCardNo; + + /** + * 营业执照 + */ + private String businessLicense; + + /** + * 认证状态 + */ + private Integer certificationStatus; + + /** + * 认证时间 + */ + private LocalDateTime certificationTime; + + /** + * 创建时间 + */ + private LocalDateTime createTime; + + /** + * 更新时间 + */ + private LocalDateTime updateTime; + + +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/model/domain/CommonUser.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/domain/CommonUser.java new file mode 100644 index 0000000..76e3b86 --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/domain/CommonUser.java @@ -0,0 +1,79 @@ +package com.jzo2o.customer.model.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + *

+ * + *

+ * + * @author itcast + * @since 2023-07-04 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("common_user") +public class CommonUser implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 用户id + */ + @TableId(value = "id", type = IdType.NONE) + private Long id; + + /** + * 状态,0:正常,1:冻结 + */ + private Integer status; + + /** + * 昵称 + */ + private String nickname; + + /** + * 电话 + */ + private String phone; + + /** + * 头像 + */ + private String avatar; + + /** + * openId + */ + private String openId; + + /** + * 账号冻结原因 + */ + private String accountLockReason; + + /** + * 创建时间 + */ + private LocalDateTime createTime; + + /** + * 更新时间 + */ + private LocalDateTime updateTime; + + /** + * 是否已删除,0未删除,1已删除 + */ + private Integer isDeleted; +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/model/domain/InstitutionStaff.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/domain/InstitutionStaff.java new file mode 100644 index 0000000..cbe2478 --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/domain/InstitutionStaff.java @@ -0,0 +1,83 @@ +package com.jzo2o.customer.model.domain; + +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 com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.List; + +/** + *

+ * 机构下属服务人员 + *

+ * + * @author itcast + * @since 2023-07-18 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName(value = "institution_staff", autoResultMap = true) +public class InstitutionStaff implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "id", type = IdType.ASSIGN_ID) + private Long id; + + /** + * 服务机构id + */ + private Long institutionId; + + /** + * 编号 + */ + private String code; + + /** + * 名称 + */ + private String name; + + /** + * 电话 + */ + private String phone; + + /** + * 身份证号 + */ + private String idCardNo; + + /** + * 证明资料列表 + */ + @TableField(typeHandler = JacksonTypeHandler.class) + private List certificationImgs; + + /** + * 创建时间 + */ + private LocalDateTime createTime; + + /** + * 更新时间 + */ + private LocalDateTime updateTime; + + /** + * 是否已删除,0:未删除,1:已删除 + */ + private Integer isDeleted; +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/model/domain/ServeProvider.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/domain/ServeProvider.java new file mode 100644 index 0000000..269900b --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/domain/ServeProvider.java @@ -0,0 +1,104 @@ +package com.jzo2o.customer.model.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + *

+ * 服务人员/机构表 + *

+ * + * @author itcast + * @since 2023-07-17 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("serve_provider") +public class ServeProvider implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "id", type = IdType.ASSIGN_ID) + private Long id; + + /** + * 编号 + */ + private String code; + + /** + * 类型,2:服务人员,3:服务机构 + */ + private Integer type; + + /** + * 姓名 + */ + private String name; + + /** + * 电话 + */ + private String phone; + + /** + * 头像 + */ + private String avatar; + + /** + * 状态,0:正常,1:冻结 + */ + private Integer status; + + /** + * 首次设置状态,0:未完成设置,1:已完成设置 + */ + private Integer settingsStatus; + + /** + * 机构登录密码 + */ + private String password; + + /** + * 账号冻结原因 + */ + private String accountLockReason; + + /** + * 综合评分 + */ + private Double score; + + /** + * 好评率 + */ + private String goodLevelRate; + + /** + * 创建时间 + */ + private LocalDateTime createTime; + + /** + * 更新时间 + */ + private LocalDateTime updateTime; + + /** + * 是否已删除,0:未删除,1:已删除 + */ + private Integer isDeleted; +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/model/domain/ServeProviderInfo.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/domain/ServeProviderInfo.java new file mode 100644 index 0000000..9047a20 --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/domain/ServeProviderInfo.java @@ -0,0 +1,63 @@ +package com.jzo2o.customer.model.domain; + +import com.jzo2o.common.model.Location; +import lombok.Data; + +import java.util.List; + +@Data +public class ServeProviderInfo { + /** + * 服务人员或机构同步表 + */ + private Long id; + + /** + * 服务人类型,2:服务人员,3:机构 + */ + private Integer serveProviderType; + + /** + * 技能列表 + */ + private List serveItemIds; + + /** + * 经纬度 + */ + private Location location; + + /** + * 城市编码 + */ + private String cityCode; + + /** + * 接单开关1,:接单开启,0:接单关闭 + */ + private Integer pickUp; + + /** + * 评分,默认50分 + */ + private Double evaluationScore; + + /** + * 服务时间 + */ + private List serveTimes; + + /** + * 接单数 + */ + private Integer acceptanceNum; + + /** + * 首次设置状态,0:未完成,1:已完成设置 + */ + private Integer settingStatus; + /** + * 状态,0:正常,1:冻结 + */ + private Integer status; +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/model/domain/ServeProviderSettings.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/domain/ServeProviderSettings.java new file mode 100644 index 0000000..e07b1ba --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/domain/ServeProviderSettings.java @@ -0,0 +1,76 @@ +package com.jzo2o.customer.model.domain; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.IdType; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.TableId; +import java.io.Serializable; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + *

+ * 服务人员/机构附属信息 + *

+ * + * @author itcast + * @since 2023-07-20 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("serve_provider_settings") +public class ServeProviderSettings implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 服务人员/机构id + */ + @TableId(value = "id", type = IdType.NONE) + private Long id; + + /** + * 城市码 + */ + private String cityCode; + + /** + * 城市名称 + */ + private String cityName; + + /** + * 经度 + */ + private Double lon; + + /** + * 纬度 + */ + private Double lat; + + /** + * 意向单范围 + */ + private String intentionScope; + + /** + * 是否有技能 + */ + private Integer haveSkill; + + /** + * 是否可以接单,0:关闭接单,1:开启接单 + */ + private Integer canPickUp; + + private LocalDateTime createTime; + + private LocalDateTime updateTime; + + private Integer isDeleted; + + +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/model/domain/ServeProviderSync.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/domain/ServeProviderSync.java new file mode 100644 index 0000000..8bd73af --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/domain/ServeProviderSync.java @@ -0,0 +1,87 @@ +package com.jzo2o.customer.model.domain; + +import com.jzo2o.common.model.Location; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.io.Serializable; +import java.util.List; + +import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler; +import lombok.*; +import lombok.experimental.Accessors; + +/** + *

+ * 评分同步列表 + *

+ * + * @author itcast + * @since 2023-08-07 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName(value = "serve_provider_sync",autoResultMap = true) +@NoArgsConstructor +@AllArgsConstructor +@Builder +public class ServeProviderSync implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 服务人员或机构同步表 + */ + @TableId(value = "id", type = IdType.NONE) + private Long id; + + /** + * 技能列表 + */ + @TableField(typeHandler = JacksonTypeHandler.class) + private List serveItemIds; + + /** + * 服务者类型,2:服务人员,3:机构人员 + */ + private Integer serveProviderType; + + /** + * 经度 + */ + private Double lon; + + /** + * 纬度 + */ + private Double lat; + + /** + * 城市编码 + */ + private String cityCode; + + /** + * 接单开关1,:接单开启,0:接单关闭 + */ + private Integer pickUp; + + /** + * 评分,默认50分 + */ + private Double evaluationScore; + + /** + * 首次设置状态,0:未完成,1:已完成设置 + */ + private Integer settingStatus; + + /** + * 状态,0:正常,1:冻结 + */ + private Integer status; + + +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/model/domain/ServeSkill.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/domain/ServeSkill.java new file mode 100644 index 0000000..1a3e15a --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/domain/ServeSkill.java @@ -0,0 +1,78 @@ +package com.jzo2o.customer.model.domain; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.IdType; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.TableId; +import java.io.Serializable; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + *

+ * 服务技能表 + *

+ * + * @author itcast + * @since 2023-07-18 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("serve_skill") +public class ServeSkill implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "id", type = IdType.ASSIGN_ID) + private Long id; + + /** + * 服务人员/机构id + */ + private Long serveProviderId; + + /** + * 类型,2:服务人员,3:服务机构 + */ + private Integer serveProviderType; + + /** + * 服务类型id + */ + private Long serveTypeId; + + /** + * 服务类型名称 + */ + private String serveTypeName; + + /** + * 服务项id + */ + private Long serveItemId; + + /** + * 服务项名称 + */ + private String serveItemName; + + /** + * 创建时间 + */ + private LocalDateTime createTime; + + /** + * 更新时间 + */ + private LocalDateTime updateTime; + + /** + * 是否已删除,0:未删除,1:已删除 + */ + private Integer isDelete; +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/model/domain/WorkerCertification.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/domain/WorkerCertification.java new file mode 100644 index 0000000..c029fc6 --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/domain/WorkerCertification.java @@ -0,0 +1,80 @@ +package com.jzo2o.customer.model.domain; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.IdType; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.TableId; +import java.io.Serializable; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + *

+ * 服务人员认证信息表 + *

+ * + * @author itcast + * @since 2023-09-06 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("worker_certification") +public class WorkerCertification implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 服务人员id + */ + @TableId(value = "id", type = IdType.ASSIGN_ID) + private Long id; + + /** + * 姓名 + */ + private String name; + + /** + * 身份证号 + */ + private String idCardNo; + + /** + * 身份证正面 + */ + private String frontImg; + + /** + * 身份证反面 + */ + private String backImg; + + /** + * 证明资料 + */ + private String certificationMaterial; + + /** + * 认证状态,0:初始态,1:认证中,2:认证成功,3认证失败 + */ + private Integer certificationStatus; + + /** + * 认证时间 + */ + private LocalDateTime certificationTime; + + /** + * 创建时间 + */ + private LocalDateTime createTime; + + /** + * 更新时间 + */ + private LocalDateTime updateTime; + + +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/AgencyCertificationUpdateDTO.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/AgencyCertificationUpdateDTO.java new file mode 100644 index 0000000..471b139 --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/AgencyCertificationUpdateDTO.java @@ -0,0 +1,60 @@ +package com.jzo2o.customer.model.dto; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.time.LocalDateTime; + +/** + * 机构认证信息更新模型 + * + * @author itcast + * @create 2023/9/6 10:49 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class AgencyCertificationUpdateDTO { + /** + * 机构id + */ + private Long id; + + /** + * 企业名称 + */ + private String name; + + /** + * 统一社会信用代码 + */ + private String idNumber; + + /** + * 法人姓名 + */ + private String legalPersonName; + + /** + * 法人身份证号 + */ + private String legalPersonIdCardNo; + + /** + * 营业执照 + */ + private String businessLicense; + + /** + * 认证状态 + */ + private Integer certificationStatus; + + /** + * 认证时间 + */ + private LocalDateTime certificationTime; +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/EvaluationSubmitDTO.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/EvaluationSubmitDTO.java new file mode 100644 index 0000000..d362715 --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/EvaluationSubmitDTO.java @@ -0,0 +1,69 @@ +package com.jzo2o.customer.model.dto; + +import com.jzo2o.api.customer.dto.request.ScoreItem; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 评价提交对象 + * + * @author itcast + * @create 2023/4/22 10:32 + **/ +@Data +@ApiModel("评价提交对象") +public class EvaluationSubmitDTO { + /** + * 评价对象id + */ + @ApiModelProperty(value = "评价对象id", required = true) + private String targetId; + + /** + * 关联id(如订单id) + */ + @ApiModelProperty("关联id(如订单id)") + private String relationId; + + /** + * 评价对象名称 + */ + @ApiModelProperty("评价对象名称") + private String targetName; + + /** + * 所属人id + */ + @ApiModelProperty("所属人id") + private String ownerId; + + /** + * 是否匿名 + */ + @ApiModelProperty(value = "是否匿名,0为未匿名,1为匿名", required = true) + private Integer isAnonymous; + + /** + * 评价分数 + */ + @ApiModelProperty("评价分数") + private ScoreItem[] scoreArray; + + /** + * 评价内容 + */ + @ApiModelProperty("评价内容") + private String content; + + /** + * 评价图片列表 + */ + @ApiModelProperty("评价图片列表") + private String[] pictureArray; + + /** + * 非前端传入,在controller层设置 + */ + private String ip; +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/RelationScoreDTO.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/RelationScoreDTO.java new file mode 100644 index 0000000..9029957 --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/RelationScoreDTO.java @@ -0,0 +1,22 @@ +package com.jzo2o.customer.model.dto; + +import lombok.Data; + +/** + * 关联id对应评分数据 + * + * @author itcast + * @create 2023/9/16 10:28 + **/ +@Data +public class RelationScoreDTO { + /** + * 关联id + */ + private String relationId; + + /** + * 评分 + */ + private Double score; +} \ No newline at end of file diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/ScoreStatisticsMsg.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/ScoreStatisticsMsg.java new file mode 100644 index 0000000..ce9bcbc --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/ScoreStatisticsMsg.java @@ -0,0 +1,68 @@ +package com.jzo2o.customer.model.dto; + +import lombok.Data; + +/** + * mq消息 - 评分统计数据 + * + * @author itcast + * @create 2023/9/14 15:56 + **/ +@Data +public class ScoreStatisticsMsg { + /** + * 对象类型id + */ + private String targetTypeId; + + /** + * 对象id + */ + private String targetId; + + /** + * 对象名称 + */ + private String targetName; + + /** + * 评分项id,如果综合评分设为0 + */ + private String itemId; + + /** + * 差评数量 + */ + private Long badLevelCount; + + /** + * 中评数量 + */ + private Long middleLevelCount; + + /** + * 好评数量 + */ + private Long goodLevelCount; + + /** + * 总评价数 + */ + private Long count; + + /** + * 总评分数 + */ + private Long scoreCount; + + /** + * 总分 + */ + private Double totalScore; + + /** + * 平均分 + */ + private Double averageScore; + +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/ServeSkillSimpleDTO.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/ServeSkillSimpleDTO.java new file mode 100644 index 0000000..06fb29c --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/ServeSkillSimpleDTO.java @@ -0,0 +1,22 @@ +package com.jzo2o.customer.model.dto; + +import lombok.Data; + +/** + * 服务技能简略信息 + * + * @author itcast + * @create 2023/9/6 17:12 + **/ +@Data +public class ServeSkillSimpleDTO { + /** + * 服务类型名称 + */ + private String serveTypeName; + + /** + * 服务项名称 + */ + private String serveItemName; +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/WorkerCertificationUpdateDTO.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/WorkerCertificationUpdateDTO.java new file mode 100644 index 0000000..78fcb1b --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/WorkerCertificationUpdateDTO.java @@ -0,0 +1,55 @@ +package com.jzo2o.customer.model.dto; + +import lombok.Data; + +import java.time.LocalDateTime; + +/** + * 服务人员认证更新模型 + * + * @author itcast + * @create 2023/9/6 11:37 + **/ +@Data +public class WorkerCertificationUpdateDTO { + + /** + * 服务人员id + */ + private Long id; + + /** + * 姓名 + */ + private String name; + + /** + * 身份证号 + */ + private String idCardNo; + + /** + * 身份证正面 + */ + private String frontImg; + + /** + * 身份证反面 + */ + private String backImg; + + /** + * 证明资料 + */ + private String certificationMaterial; + + /** + * 认证状态,0:初始态,1:认证中,2:认证成功,3认证失败 + */ + private Integer certificationStatus; + + /** + * 认证时间 + */ + private LocalDateTime certificationTime; +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/request/AddressBookPageQueryReqDTO.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/request/AddressBookPageQueryReqDTO.java new file mode 100644 index 0000000..81dd986 --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/request/AddressBookPageQueryReqDTO.java @@ -0,0 +1,18 @@ +package com.jzo2o.customer.model.dto.request; + +import com.jzo2o.common.model.dto.PageQueryDTO; +import io.swagger.annotations.ApiModel; +import lombok.Data; + +/** + *

+ * 地址薄分页查询请求 + *

+ * + * @author itcast + * @since 2023-07-06 + */ +@Data +@ApiModel("地址薄分页查询请求") +public class AddressBookPageQueryReqDTO extends PageQueryDTO { +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/request/AddressBookUpsertReqDTO.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/request/AddressBookUpsertReqDTO.java new file mode 100644 index 0000000..69bf038 --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/request/AddressBookUpsertReqDTO.java @@ -0,0 +1,75 @@ +package com.jzo2o.customer.model.dto.request; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + *

+ * 地址薄新增更新 + *

+ * + * @author itcast + * @since 2023-07-06 + */ +@Data +@ApiModel("地址薄新增更新") +public class AddressBookUpsertReqDTO { + + /** + * 名称 + */ + @NotNull(message = "名称不能为空") + @ApiModelProperty(value = "名称", required = true) + private String name; + + /** + * 电话 + */ + @NotNull(message = "电话不能为空") + @ApiModelProperty(value = "电话", required = true) + private String phone; + + /** + * 省份 + */ + @NotNull(message = "省份不能为空") + @ApiModelProperty(value = "省份", required = true) + private String province; + + /** + * 市级 + */ + @NotNull(message = "市级不能为空") + @ApiModelProperty(value = "市级", required = true) + private String city; + + /** + * 区/县 + */ + @NotNull(message = "区/县不能为空") + @ApiModelProperty(value = "区/县", required = true) + private String county; + + /** + * 详细地址 + */ + @NotNull(message = "详细地址不能为空") + @ApiModelProperty(value = "详细地址", required = true) + private String address; + + /** + * 是否为默认地址,0:否,1:是 + */ + @NotNull(message = "是否为默认地址不能为空") + @ApiModelProperty(value = "是否为默认地址,0:否,1:是", required = true) + private Integer isDefault; + + /** + * 经纬度 + */ + @ApiModelProperty(value = "经纬度") + private String location; +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/request/AgencyCertificationAuditAddReqDTO.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/request/AgencyCertificationAuditAddReqDTO.java new file mode 100644 index 0000000..a79522c --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/request/AgencyCertificationAuditAddReqDTO.java @@ -0,0 +1,33 @@ +package com.jzo2o.customer.model.dto.request; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 机构认证申请 + * + * @author itcast + * @create 2023/9/6 09:30 + **/ +@Data +@ApiModel("机构认证申请") +public class AgencyCertificationAuditAddReqDTO { + @ApiModelProperty(value = "机构id", required = false) + private Long serveProviderId; + + @ApiModelProperty(value = "企业名称", required = true) + private String name; + + @ApiModelProperty(value = "统一社会信用代码", required = true) + private String idNumber; + + @ApiModelProperty(value = "法人姓名", required = true) + private String legalPersonName; + + @ApiModelProperty(value = "法人身份证号", required = true) + private String legalPersonIdCardNo; + + @ApiModelProperty(value = "营业执照", required = true) + private String businessLicense; +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/request/AgencyCertificationAuditPageQueryReqDTO.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/request/AgencyCertificationAuditPageQueryReqDTO.java new file mode 100644 index 0000000..e304ecc --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/request/AgencyCertificationAuditPageQueryReqDTO.java @@ -0,0 +1,40 @@ +package com.jzo2o.customer.model.dto.request; + +import com.jzo2o.common.model.dto.PageQueryDTO; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 机构分页查询请求 + * + * @author itcast + * @create 2023/9/6 13:52 + **/ +@Data +@ApiModel("机构分页查询请求") +public class AgencyCertificationAuditPageQueryReqDTO extends PageQueryDTO { + /** + * 企业名称 + */ + @ApiModelProperty("企业名称") + private String name; + + /** + * 法人姓名 + */ + @ApiModelProperty("法人姓名") + private String legalPersonName; + + /** + * 审核状态,0:未审核,1:已审核 + */ + @ApiModelProperty("审核状态,0:未审核,1:已审核") + private Integer auditStatus; + + /** + * 认证状态,2:认证通过,3:认证失败 + */ + @ApiModelProperty("认证状态,2:认证通过,3:认证失败") + private Integer certificationStatus; +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/request/AuditReqDTO.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/request/AuditReqDTO.java new file mode 100644 index 0000000..6d44049 --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/request/AuditReqDTO.java @@ -0,0 +1,39 @@ +package com.jzo2o.customer.model.dto.request; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 用户提交举报信息 + * + * @author itcast + * @create 2023/6/2 15:47 + **/ +@Data +@ApiModel("用户提交举报信息") +public class AuditReqDTO { + /** + * 对象类型id + */ + @ApiModelProperty(value = "审核id", required = true) + private String targetTypeId; + + /** + * 业务类型。1:评价,3回复 + */ + @ApiModelProperty(value = "业务类型。1:评价,3回复", required = true) + private Integer bizType = 1; + + /** + * 业务id,评价/回复id + */ + @ApiModelProperty(value = "业务id,评价/回复id", required = true) + private String bizId; + + /** + * 审核原因 + */ + @ApiModelProperty(value = "审核原因", required = true) + private Integer reason; +} \ No newline at end of file diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/request/BankAccountUpsertReqDTO.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/request/BankAccountUpsertReqDTO.java new file mode 100644 index 0000000..6d42ebb --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/request/BankAccountUpsertReqDTO.java @@ -0,0 +1,80 @@ +package com.jzo2o.customer.model.dto.request; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + *

+ * 银行账户新增或更新请求体 + *

+ * + * @author itcast + * @since 2023-09-06 + */ +@Data +@ApiModel("银行账户新增或更新请求体") +public class BankAccountUpsertReqDTO implements Serializable { + + /** + * 服务人员/机构id + */ + @ApiModelProperty(value = "服务人员/机构id", required = false) + private Long id; + + /** + * 类型,2:服务人员,3:服务机构 + */ + @ApiModelProperty(value = "类型,2:服务人员,3:服务机构", required = false) + private Integer type; + + /** + * 户名 + */ + @ApiModelProperty(value = "户名", required = true) + private String name; + + /** + * 银行名称 + */ + @ApiModelProperty(value = "银行名称", required = true) + private String bankName; + + /** + * 省 + */ + @ApiModelProperty(value = "省", required = true) + private String province; + + /** + * 市 + */ + @ApiModelProperty(value = "市", required = true) + private String city; + + /** + * 区 + */ + @ApiModelProperty(value = "区", required = true) + private String district; + + /** + * 网点 + */ + @ApiModelProperty(value = "网点", required = true) + private String branch; + + /** + * 银行账号 + */ + @ApiModelProperty(value = "银行账号", required = true) + private String account; + + /** + * 开户证明 + */ + @ApiModelProperty(value = "开户证明", required = true) + private String accountCertification; +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/request/CertificationAuditReqDTO.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/request/CertificationAuditReqDTO.java new file mode 100644 index 0000000..01f7766 --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/request/CertificationAuditReqDTO.java @@ -0,0 +1,21 @@ +package com.jzo2o.customer.model.dto.request; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 认证信息审核请求体 + * + * @author itcast + * @create 2023/9/6 10:30 + **/ +@Data +@ApiModel("认证信息审核请求体") +public class CertificationAuditReqDTO { + @ApiModelProperty(value = "认证状态,2:认证成功,3认证失败", required = true) + private Integer certificationStatus; + + @ApiModelProperty(value = "驳回原因", required = false) + private String rejectReason; +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/request/EvaluationPageByTargetReqDTO.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/request/EvaluationPageByTargetReqDTO.java new file mode 100644 index 0000000..a6360b0 --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/request/EvaluationPageByTargetReqDTO.java @@ -0,0 +1,31 @@ +package com.jzo2o.customer.model.dto.request; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 根据对象属性分页查询评价请求 + * + * @author itcast + * @create 2023/9/11 21:19 + **/ +@Data +@ApiModel("根据对象属性分页查询评价请求") +public class EvaluationPageByTargetReqDTO { + + @ApiModelProperty(value = "评价类型id,6:服务评价,7:师傅评价",required = true) + private String targetTypeId; + + @ApiModelProperty("评价对象id,服务评价 - 服务项id,师傅评价 - 服务人员/机构id") + private String targetId; + + @ApiModelProperty("页码,默认为1") + private Integer pageNo; + + @ApiModelProperty(value = "页面大小,默认为10") + private Integer pageSize; + + @ApiModelProperty(value = "排序字段,1为按评价时间排序,2为按热度排序", required = true) + private Integer sortBy; +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/request/InstitutionRegisterReqDTO.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/request/InstitutionRegisterReqDTO.java new file mode 100644 index 0000000..2fa2256 --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/request/InstitutionRegisterReqDTO.java @@ -0,0 +1,26 @@ +package com.jzo2o.customer.model.dto.request; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; + +/** + * @author 86188 + */ +@Data +@ApiModel("机构注册信息") +public class InstitutionRegisterReqDTO { + @ApiModelProperty(value = "机构注册手机号",required = true) + @NotNull(message = "注册手机号不能为空") + private String phone; + @ApiModelProperty(value = "注册密码",required = true) + @NotNull(message = "密码输入格式错误,请重新输入") + @Size(max = 16, min = 8, message = "密码输入格式错误,请重新输入") + private String password; + @ApiModelProperty(value = "短信验证码",required = true) + @NotNull(message = "验证码错误,请重新输入") + private String verifyCode; +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/request/InstitutionResetPasswordReqDTO.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/request/InstitutionResetPasswordReqDTO.java new file mode 100644 index 0000000..4113f00 --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/request/InstitutionResetPasswordReqDTO.java @@ -0,0 +1,22 @@ +package com.jzo2o.customer.model.dto.request; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +@Data +@ApiModel("机构密码重置接口") +public class InstitutionResetPasswordReqDTO { + @ApiModelProperty(value = "新密码",required = true) + private String password; + + @ApiModelProperty(value = "手机号",required = true) + private String phone; + + @ApiModelProperty(value = "短信验证码",required = true) + @NotNull(message = "验证码错误,请重新输入") + private String verifyCode; + +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/request/InstitutionStaffUpsertReqDTO.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/request/InstitutionStaffUpsertReqDTO.java new file mode 100644 index 0000000..afc4940 --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/request/InstitutionStaffUpsertReqDTO.java @@ -0,0 +1,42 @@ +package com.jzo2o.customer.model.dto.request; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * 插入更新机构下属服务人员 + * + * @author itcast + * @create 2023/7/18 20:20 + **/ +@Data +@ApiModel("插入更新机构下属服务人员") +public class InstitutionStaffUpsertReqDTO { + + /** + * 名称 + */ + @ApiModelProperty(value = "名称", required = true) + private String name; + + /** + * 电话 + */ + @ApiModelProperty(value = "电话", required = true) + private String phone; + + /** + * 身份证号 + */ + @ApiModelProperty(value = "身份证号", required = true) + private String idCardNo; + + /** + * 证明资料列表 + */ + @ApiModelProperty("证明资料列表") + private List certificationImgs; +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/request/LikeOrCancelReqDTO.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/request/LikeOrCancelReqDTO.java new file mode 100644 index 0000000..914a053 --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/request/LikeOrCancelReqDTO.java @@ -0,0 +1,28 @@ +package com.jzo2o.customer.model.dto.request; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author itcast + */ +@Data +@ApiModel("点赞请求") +public class LikeOrCancelReqDTO { + + @ApiModelProperty("点赞目标类型,1:评论点赞,2:回复点赞") + private Integer likeTargetType = 1; + + /** + * 点赞目标id + */ + @ApiModelProperty("点赞目标id,评论id或回复id") + private String id; + + /** + * 点赞状态,0:取消点赞,1:点赞 + */ + @ApiModelProperty("点赞状态,0:取消点赞,1:点赞") + private Integer state; +} \ No newline at end of file diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/request/LoginForCustomerReqDTO.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/request/LoginForCustomerReqDTO.java new file mode 100644 index 0000000..aec3305 --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/request/LoginForCustomerReqDTO.java @@ -0,0 +1,30 @@ +package com.jzo2o.customer.model.dto.request; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author itcast + */ +@Data +@ApiModel("微信小程序登录模型") +public class LoginForCustomerReqDTO { + /** + * 微信授权code + */ + @ApiModelProperty(value = "微信授权code", required = true) + private String code; + + /** + * 昵称 + */ + @ApiModelProperty("昵称") + private String nickname; + + /** + * 头像 + */ + @ApiModelProperty("头像") + private String avatar; +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/request/LoginForWorkReqDTO.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/request/LoginForWorkReqDTO.java new file mode 100644 index 0000000..d44dc39 --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/request/LoginForWorkReqDTO.java @@ -0,0 +1,30 @@ +package com.jzo2o.customer.model.dto.request; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel("运营人员登录模型") +@Data +public class LoginForWorkReqDTO { + + /** + * 运营人员账号 + */ + @ApiModelProperty(value = "服务人员账号",required = true) + private String phone; + /** + * 登录密码 + */ + @ApiModelProperty(value = "登录密码,机构用户必填",required = false) + private String password; + + @ApiModelProperty("验证码,普通服务人员必填") + private String verifyCode; + + /** + * 登录用户类型 + */ + @ApiModelProperty("服务人员类型,2.普通服务人员,3:机构用户") + private Integer userType; +} \ No newline at end of file diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/request/ServePickUpReqDTO.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/request/ServePickUpReqDTO.java new file mode 100644 index 0000000..f717eb9 --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/request/ServePickUpReqDTO.java @@ -0,0 +1,16 @@ +package com.jzo2o.customer.model.dto.request; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel("接单设置") +public class ServePickUpReqDTO { + + /** + * 是否开启接单设置 + */ + @ApiModelProperty("是否开启接单设置设置,0:关闭接单,1:开启接单") + private Integer canPickUp; +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/request/ServeProviderPageQueryReqDTO.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/request/ServeProviderPageQueryReqDTO.java new file mode 100644 index 0000000..3f9f4f1 --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/request/ServeProviderPageQueryReqDTO.java @@ -0,0 +1,43 @@ +package com.jzo2o.customer.model.dto.request; + +import com.jzo2o.common.model.dto.PageQueryDTO; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + *

+ * 服务人员/机构分页查询请求 + *

+ * + * @author itcast + * @since 2023-07-06 + */ +@Data +@ApiModel("服务人员/机构分页查询请求") +public class ServeProviderPageQueryReqDTO extends PageQueryDTO { + + /** + * 名称 + */ + @ApiModelProperty("名称") + private String name; + + /** + * 手机号 + */ + @ApiModelProperty("手机号") + private String phone; + + /** + * 是否可以接单,0:关闭接单,1:开启接单 + */ + @ApiModelProperty("是否可以接单,0:关闭接单,1:开启接单") + private Integer canPickUp; + + /** + * 状态,0:正常,1:冻结 + */ + @ApiModelProperty("状态,0:正常,1:冻结") + private Integer status; +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/request/ServeScopeSetReqDTO.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/request/ServeScopeSetReqDTO.java new file mode 100644 index 0000000..4338739 --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/request/ServeScopeSetReqDTO.java @@ -0,0 +1,37 @@ +package com.jzo2o.customer.model.dto.request; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @author 86188 + */ +@Data +@ApiModel("服务范围设置模型") +public class ServeScopeSetReqDTO { + /** + * 城市编码 + */ + @ApiModelProperty(value = "城市编码", required = true) + @NotNull(message="请求失败") + private String cityCode; + + @ApiModelProperty(value = "城市名称", required = true) + @NotNull(message="请求失败") + private String cityName; + /** + * 坐标经纬度,例如经度,纬度 + */ + @ApiModelProperty(value = "坐标经纬度,例如经度,纬度", required = true) + @NotNull(message="请求失败") + private String location; + /** + * 意向接单范围 + */ + @ApiModelProperty(value = "意向接单范围", required = true) + @NotNull(message="请求失败") + private String intentionScope; +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/request/ServeSkillAddReqDTO.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/request/ServeSkillAddReqDTO.java new file mode 100644 index 0000000..37ecd26 --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/request/ServeSkillAddReqDTO.java @@ -0,0 +1,44 @@ +package com.jzo2o.customer.model.dto.request; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * 服务技能新增请求 + * + * @author itcast + * @create 2023/7/18 14:27 + **/ +@Data +@ApiModel("服务技能新增请求") +public class ServeSkillAddReqDTO { + + /** + * 服务类型id + */ + @NotNull(message = "服务类型id不能为空") + @ApiModelProperty(value = "服务类型id", required = true) + private Long serveTypeId; + + /** + * 服务类型名称 + */ + @ApiModelProperty(value = "服务类型名称", required = true) + private String serveTypeName; + + /** + * 服务项id + */ + @NotNull(message = "服务项id不能为空") + @ApiModelProperty(value = "服务项id", required = true) + private Long serveItemId; + + /** + * 服务项名称 + */ + @ApiModelProperty(value = "服务项名称", required = true) + private String serveItemName; +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/request/SmsCodeSendReqDTO.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/request/SmsCodeSendReqDTO.java new file mode 100644 index 0000000..f5f6fc1 --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/request/SmsCodeSendReqDTO.java @@ -0,0 +1,14 @@ +package com.jzo2o.customer.model.dto.request; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel("短信验证码下发接口") +public class SmsCodeSendReqDTO { + @ApiModelProperty(value = "下发手机号码",required = true) + private String phone; + @ApiModelProperty("业务类型,1:机构注册,2:机构忘记密码,3:服务人员登录") + private String businessType; +} \ No newline at end of file diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/request/WorkerCertificationAuditAddReqDTO.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/request/WorkerCertificationAuditAddReqDTO.java new file mode 100644 index 0000000..b83464f --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/request/WorkerCertificationAuditAddReqDTO.java @@ -0,0 +1,33 @@ +package com.jzo2o.customer.model.dto.request; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 服务人员申请资质认证 + * + * @author itcast + * @create 2023/9/6 10:24 + **/ +@Data +@ApiModel("服务人员认证申请请求体") +public class WorkerCertificationAuditAddReqDTO { + @ApiModelProperty(value = "服务人员id", required = false) + private Long serveProviderId; + + @ApiModelProperty(value = "姓名", required = true) + private String name; + + @ApiModelProperty(value = "身份证号", required = true) + private String idCardNo; + + @ApiModelProperty(value = "身份证正面", required = true) + private String frontImg; + + @ApiModelProperty(value = "身份证反面", required = true) + private String backImg; + + @ApiModelProperty(value = "证明资料", required = true) + private String certificationMaterial; +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/request/WorkerCertificationAuditPageQueryReqDTO.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/request/WorkerCertificationAuditPageQueryReqDTO.java new file mode 100644 index 0000000..3f51f1f --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/request/WorkerCertificationAuditPageQueryReqDTO.java @@ -0,0 +1,40 @@ +package com.jzo2o.customer.model.dto.request; + +import com.jzo2o.common.model.dto.PageQueryDTO; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 服务人员分页查询请求 + * + * @author itcast + * @create 2023/9/6 13:52 + **/ +@Data +@ApiModel("服务人员分页查询请求") +public class WorkerCertificationAuditPageQueryReqDTO extends PageQueryDTO { + /** + * 姓名 + */ + @ApiModelProperty("姓名") + private String name; + + /** + * 身份证号 + */ + @ApiModelProperty("身份证号") + private String idCardNo; + + /** + * 审核状态,0:未审核,1:已审核 + */ + @ApiModelProperty("审核状态,0:未审核,1:已审核") + private Integer auditStatus; + + /** + * 认证状态,2:认证通过,3:认证失败 + */ + @ApiModelProperty("认证状态,2:认证通过,3:认证失败") + private Integer certificationStatus; +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/response/AgencyCertificationAuditResDTO.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/response/AgencyCertificationAuditResDTO.java new file mode 100644 index 0000000..c9e8e2b --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/response/AgencyCertificationAuditResDTO.java @@ -0,0 +1,107 @@ +package com.jzo2o.customer.model.dto.response; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.time.LocalDateTime; + +/** + * 机构申请认证信息响应值 + * + * @author itcast + * @create 2023/9/6 11:51 + **/ +@Data +@ApiModel("机构申请认证信息响应值") +public class AgencyCertificationAuditResDTO { + /** + * 主键 + */ + @ApiModelProperty("主键") + private Long id; + + /** + * 服务人员id + */ + @ApiModelProperty("服务人员id") + private Long serveProviderId; + + /** + * 企业名称 + */ + @ApiModelProperty("企业名称") + private String name; + + /** + * 统一社会信用代码 + */ + @ApiModelProperty("统一社会信用代码") + private String idNumber; + + /** + * 法人姓名 + */ + @ApiModelProperty("法人姓名") + private String legalPersonName; + + /** + * 法人身份证号 + */ + @ApiModelProperty("法人身份证号") + private String legalPersonIdCardNo; + + /** + * 营业执照 + */ + @ApiModelProperty("营业执照") + private String businessLicense; + + /** + * 审核状态,0:未审核,1:已审核 + */ + @ApiModelProperty("审核状态,0:未审核,1:已审核") + private Integer auditStatus; + + /** + * 审核人id + */ + @ApiModelProperty("审核人id") + private Long auditorId; + + /** + * 审核人姓名 + */ + @ApiModelProperty("审核人姓名") + private String auditorName; + + /** + * 审核时间 + */ + @ApiModelProperty("审核时间") + private LocalDateTime auditTime; + + /** + * 认证状态,1:认证中,2:认证成功,3认证失败 + */ + @ApiModelProperty("认证状态,1:认证中,2:认证成功,3认证失败") + private Integer certificationStatus; + + /** + * 驳回原因 + */ + @ApiModelProperty("驳回原因") + private String rejectReason; + + /** + * 创建时间 + */ + @ApiModelProperty("创建时间") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @ApiModelProperty("更新时间") + private LocalDateTime updateTime; +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/response/AgencyCertificationResDTO.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/response/AgencyCertificationResDTO.java new file mode 100644 index 0000000..2d6bdae --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/response/AgencyCertificationResDTO.java @@ -0,0 +1,65 @@ +package com.jzo2o.customer.model.dto.response; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.time.LocalDateTime; + +/** + * 机构认证信息响应值 + * + * @author itcast + * @create 2023/9/6 11:51 + **/ +@Data +@ApiModel("机构认证信息响应值") +public class AgencyCertificationResDTO { + /** + * 主键 + */ + @ApiModelProperty("机构id") + private Long id; + + /** + * 企业名称 + */ + @ApiModelProperty("企业名称") + private String name; + + /** + * 统一社会信用代码 + */ + @ApiModelProperty("统一社会信用代码") + private String idNumber; + + /** + * 法人姓名 + */ + @ApiModelProperty("法人姓名") + private String legalPersonName; + + /** + * 法人身份证号 + */ + @ApiModelProperty("法人身份证号") + private String legalPersonIdCardNo; + + /** + * 营业执照 + */ + @ApiModelProperty("营业执照") + private String businessLicense; + + /** + * 创建时间 + */ + @ApiModelProperty("创建时间") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @ApiModelProperty("更新时间") + private LocalDateTime updateTime; +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/response/AllEvaluationSystemInfoResDTO.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/response/AllEvaluationSystemInfoResDTO.java new file mode 100644 index 0000000..c1111cc --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/response/AllEvaluationSystemInfoResDTO.java @@ -0,0 +1,25 @@ +package com.jzo2o.customer.model.dto.response; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 全部评价配置信息 + * + * @author itcast + * @create 2023/9/23 10:46 + **/ +@Data +@NoArgsConstructor +@AllArgsConstructor +@ApiModel("全部评价配置信息") +public class AllEvaluationSystemInfoResDTO { + @ApiModelProperty("服务项评价配置信息") + private EvaluationSystemInfoResDTO serveItemEvaluationSystemInfo; + + @ApiModelProperty("师傅评价配置信息") + private EvaluationSystemInfoResDTO serveProviderEvaluationSystemInfo; +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/response/BankAccountResDTO.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/response/BankAccountResDTO.java new file mode 100644 index 0000000..d6fda3e --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/response/BankAccountResDTO.java @@ -0,0 +1,95 @@ +package com.jzo2o.customer.model.dto.response; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + *

+ * 银行账户响应体 + *

+ * + * @author itcast + * @since 2023-09-06 + */ +@Data +@ApiModel("银行账户响应体") +public class BankAccountResDTO implements Serializable { + + /** + * 服务人员/机构id + */ + @ApiModelProperty("服务人员/机构id") + private Long id; + + /** + * 类型,2:服务人员,3:服务机构 + */ + @ApiModelProperty("类型,2:服务人员,3:服务机构") + private Integer type; + + /** + * 名称 + */ + @ApiModelProperty("名称") + private String name; + + /** + * 银行名称 + */ + @ApiModelProperty("银行名称") + private String bankName; + + /** + * 省 + */ + @ApiModelProperty("省") + private String province; + + /** + * 市 + */ + @ApiModelProperty("市") + private String city; + + /** + * 区 + */ + @ApiModelProperty("区") + private String district; + + /** + * 网点 + */ + @ApiModelProperty("网点") + private String branch; + + /** + * 银行账号 + */ + @ApiModelProperty("银行账号") + private String account; + + /** + * 开户证明 + */ + @ApiModelProperty("开户证明") + private String accountCertification; + + /** + * 创建时间 + */ + @ApiModelProperty("创建时间") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @ApiModelProperty("更新时间") + private LocalDateTime updateTime; + + +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/response/BooleanResDTO.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/response/BooleanResDTO.java new file mode 100644 index 0000000..e772eca --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/response/BooleanResDTO.java @@ -0,0 +1,26 @@ +package com.jzo2o.customer.model.dto.response; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 布尔值响应 + * + * @author itcast + * @create 2023/9/22 21:40 + **/ +@Data +@NoArgsConstructor +@AllArgsConstructor +@ApiModel("布尔值响应") +public class BooleanResDTO { + + /** + * 是否成功 + */ + @ApiModelProperty("是否成功") + private Boolean isSuccess = false; +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/response/CertificationStatusDTO.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/response/CertificationStatusDTO.java new file mode 100644 index 0000000..851e1fb --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/response/CertificationStatusDTO.java @@ -0,0 +1,48 @@ +package com.jzo2o.customer.model.dto.response; + +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + *

+ * 机构认证信息表 + *

+ * + * @author itcast + * @since 2023-09-06 + */ +@Data +public class CertificationStatusDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 机构id或服务端id + */ + private Long id; + + + /** + * 认证状态,0:初始态,1:认证中,2:认证成功,3认证失败 + */ + private Integer certificationStatus; + + /** + * 认证时间 + */ + private LocalDateTime certificationTime; + + /** + * 创建时间 + */ + private LocalDateTime createTime; + + /** + * 更新时间 + */ + private LocalDateTime updateTime; + + +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/response/CityCodeResDTO.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/response/CityCodeResDTO.java new file mode 100644 index 0000000..16e839b --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/response/CityCodeResDTO.java @@ -0,0 +1,28 @@ +package com.jzo2o.customer.model.dto.response; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 城市编码响应信息 + * + * @author itcast + * @create 2023/7/10 10:04 + **/ +@Data +@ApiModel("城市编码响应信息") +public class CityCodeResDTO { + + /** + * 城市名称 + */ + @ApiModelProperty("城市名称") + private String cityName; + + /** + * 城市编码 + */ + @ApiModelProperty("城市编码") + private String cityCode; +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/response/EvaluationAndOrdersResDTO.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/response/EvaluationAndOrdersResDTO.java new file mode 100644 index 0000000..d588812 --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/response/EvaluationAndOrdersResDTO.java @@ -0,0 +1,93 @@ +package com.jzo2o.customer.model.dto.response; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.time.LocalDateTime; +import java.util.Date; + +/** + * 评价和订单响应数据 + * + * @author itcast + * @create 2023/4/22 16:34 + **/ +@Data +@ApiModel("评价和订单响应数据") +public class EvaluationAndOrdersResDTO { + + @ApiModelProperty("评价id") + private String id; + + @ApiModelProperty("评价对象id") + private String targetId; + + @ApiModelProperty("关联id(如订单id)") + private String relationId; + + @ApiModelProperty("评价对象名称") + private String targetName; + + @ApiModelProperty("评价人id") + private String evaluatorId; + + @ApiModelProperty("评价人信息") + private Person evaluatorInfo; + + @ApiModelProperty("总分") + private Double totalScore; + + @ApiModelProperty("评价等级,1差评,2中评,3好评") + private Integer scoreLevel; + + @ApiModelProperty("评价内容") + private String content; + + @ApiModelProperty("评价图片列表") + private String[] pictureArray; + + @ApiModelProperty("创建时间") + private Date createTime; + + @ApiModelProperty("更新时间") + private Date updateTime; + + @ApiModelProperty("是否点赞") + private Boolean isLiked; + + @ApiModelProperty("服务预约时间") + private LocalDateTime serveStartTime; + + @ApiModelProperty("服务地址") + private String serveAddress; + + @ApiModelProperty("服务项图片") + private String serveItemImg; + + + /** + * 人物信息 + */ + @Data + @ApiModel("人物信息") + public static class Person { + /** + * 昵称 + */ + @ApiModelProperty("昵称") + private String nickName; + + /** + * 头像 + */ + @ApiModelProperty("头像") + private String avatar; + + /** + * 是否匿名 + */ + @ApiModelProperty("是否匿名,0为未匿名,1为匿名") + private Integer isAnonymous; + } +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/response/EvaluationResDTO.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/response/EvaluationResDTO.java new file mode 100644 index 0000000..49edd13 --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/response/EvaluationResDTO.java @@ -0,0 +1,145 @@ +package com.jzo2o.customer.model.dto.response; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +/** + * 评价完整信息 + * 连带了评价的回复 + * + * @author itcast + * @create 2023/4/22 16:34 + **/ +@Data +@ApiModel("评价完整信息") +public class EvaluationResDTO { + + @ApiModelProperty("评价id") + private String id; + + @ApiModelProperty("评价对象id") + private String targetId; + + @ApiModelProperty("关联id(如订单id)") + private String relationId; + + @ApiModelProperty("评价对象名称") + private String targetName; + + @ApiModelProperty("所属人id") + private String ownerId; + + @ApiModelProperty("评价人id") + private String evaluatorId; + + @ApiModelProperty("评价人信息") + private Person evaluatorInfo; + + @ApiModelProperty("评价分数") + private ScoreItem[] scoreArray; + + @ApiModelProperty("总分") + private Double totalScore; + + @ApiModelProperty("评价等级,1差评,2中评,3好评") + private Integer scoreLevel; + + @ApiModelProperty("评价内容") + private String content; + + @ApiModelProperty("评价图片列表") + private String[] pictureArray; + + @ApiModelProperty("是否置顶,0为取消置顶,1为置顶") + private Integer isTop; + + @ApiModelProperty("热度指标统计") + private HotIndexStatistics statistics; + + @ApiModelProperty("热度值") + private Integer hotScore; + + @ApiModelProperty("省份") + private String province; + + @ApiModelProperty("创建时间") + private Date createTime; + + @ApiModelProperty("更新时间") + private Date updateTime; + + @ApiModelProperty("是否点赞") + private Boolean isLiked; + + /** + * 评分项 + */ + @Data + @ApiModel("评分项信息") + public static class ScoreItem { + /** + * 评分项名称 + */ + @ApiModelProperty("评分项名称") + private String itemName; + + /** + * 分数 + */ + @ApiModelProperty(value = "分数", required = true) + private Double score; + } + + /** + * 人物信息 + */ + @Data + @ApiModel("人物信息") + public static class Person { + /** + * 昵称 + */ + @ApiModelProperty("昵称") + private String nickName; + + /** + * 头像 + */ + @ApiModelProperty("头像") + private String avatar; + + /** + * 是否匿名 + */ + @ApiModelProperty("是否匿名,0为未匿名,1为匿名") + private Integer isAnonymous; + } + + /** + * 热度指标统计 + */ + @Data + @ApiModel("热度指标统计") + public static class HotIndexStatistics { + /** + * 点赞数 + */ + @ApiModelProperty("点赞数") + private Integer likeNumber; + + /** + * 回复数 + */ + @ApiModelProperty("回复数") + private Integer replyNumber; + + /** + * 内容质量分数 + */ + @ApiModelProperty("内容质量分数") + private Integer qualityScore; + } +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/response/EvaluationSystemInfoResDTO.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/response/EvaluationSystemInfoResDTO.java new file mode 100644 index 0000000..a8c5410 --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/response/EvaluationSystemInfoResDTO.java @@ -0,0 +1,201 @@ +package com.jzo2o.customer.model.dto.response; + +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; + +/** + * @author 86188 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@ApiModel("系统信息包含当前用户信息和配置信息") +public class EvaluationSystemInfoResDTO { + + @ApiModelProperty("当前用户信息") + private UserInfo currentUser; + + @ApiModelProperty("评价类配置") + private EvaluationConfig evaluationConfig; + + @ApiModelProperty("回复类配置") + private ReplyConfig replyConfig; + + @Data + @AllArgsConstructor + @NoArgsConstructor + @Builder + public static class UserInfo { + /** + * 用户id + */ + @ApiModelProperty("用户id") + private String id; + /** + * 用户姓名/昵称 + */ + @ApiModelProperty("用户姓名/昵称") + private String nickName; + + /** + * 头像 + */ + @ApiModelProperty("用户头像") + private String avatar; + } + + @ApiModel("评论配置信息") + @Data + public static class EvaluationConfig { + + /** + * 是否可以回复评价 + */ + @ApiModelProperty("是否开启回复评价") + private Boolean canReply; + /** + * 是否开启评分评价 + */ + @ApiModelProperty("是否开启评分评价") + private Boolean canScore; + + /** + * 评分配置 + */ + @ApiModelProperty("评分配置") + private List scoreConfigList; + + /** + * 是否开启匿名评价 + */ + @ApiModelProperty("是否开启匿名评价") + private Boolean canAnonymous; + + /** + * 是否开启点赞 + */ + @ApiModelProperty("是否开启点赞") + private Boolean canLike; + + /** + * 是否开启修改评价 + */ + @ApiModelProperty("是否开启修改评价") + private Boolean canUpdate; + /** + * 是否开启删除评价 + */ + @ApiModelProperty("是否开启删除评价") + private Boolean canDelete; + /** + * 是否开启举报评价 + */ + @ApiModelProperty("是否开启举报评价") + private Boolean canReport; + /** + * 是否开启评价追评 + */ + @ApiModelProperty("是否开启评价追评") + private Boolean canAppend; + /** + * 追评字数限制 + */ + @ApiModelProperty("追评字数限制") + private Integer appendWordNum; + /** + * 是否开启图片评价 + */ + @ApiModelProperty("是否开启图片评价") + private Boolean canAddImg; + /** + * 评价字数限制 + */ + @ApiModelProperty("评价字数限制") + private Integer contentWordNum; + } + + /** + * 评分项 + */ + @Data + @ApiModel("评分项") + public static class ScoreConfig { + /** + * 评分项id + */ + @ApiModelProperty("评分项id") + private String itemId; + + /** + * 评分项名称 + */ + @ApiModelProperty("评分项名称") + private String itemName; + + /** + * 权重 + */ + @ApiModelProperty("权重") + private Integer weight; + + /** + * 启用状态。true表示启用,false表示禁用 + */ + @ApiModelProperty("启用状态。true表示启用,false表示禁用") + private Boolean enabled; + } + + @ApiModel("回复配置信息") + @Data + public static class ReplyConfig { + /** + * 是否开启回复的回复 + */ + @ApiModelProperty("是否开启回复的回复") + private Boolean canReply; + + /** + * 是否开启修改回复 + */ + @ApiModelProperty("是否开启修改回复") + private Boolean canUpdate; + /** + * 是否开启删除回复 + */ + @ApiModelProperty("是否开启删除回复") + private Boolean canDelete; + /** + * 是否开启举报回复 + */ + @ApiModelProperty("是否开启举报回复") + private Boolean canReport; + /** + * 是否开启匿名回复 + */ + @ApiModelProperty("是否开启匿名回复") + private Boolean canAnonymous; + + /** + * 是否开启点赞 + */ + @ApiModelProperty("是否开启点赞") + private Boolean canLike; + /** + * 是否开启图片回复 + */ + @ApiModelProperty("是否开启图片回复") + private Boolean canAddImg; + /** + * 回复字数限制 + */ + @ApiModelProperty("回复字数限制") + private Integer contentWordNum; + } +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/response/EvaluationTokenDto.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/response/EvaluationTokenDto.java new file mode 100644 index 0000000..3fbe784 --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/response/EvaluationTokenDto.java @@ -0,0 +1,20 @@ +package com.jzo2o.customer.model.dto.response; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@NoArgsConstructor +@AllArgsConstructor +@ApiModel("评价系统token信息") +public class EvaluationTokenDto { + + /** + * 评价系统token + */ + @ApiModelProperty("评价系统token") + private String token; +} \ No newline at end of file diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/response/InstitutionStaffSimpleResDTO.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/response/InstitutionStaffSimpleResDTO.java new file mode 100644 index 0000000..f4fbdf3 --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/response/InstitutionStaffSimpleResDTO.java @@ -0,0 +1,29 @@ +package com.jzo2o.customer.model.dto.response; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.time.LocalDateTime; + +/** + * 机构下属服务人员简略响应数据 + * + * @author itcast + * @create 2023/7/18 20:45 + **/ +@Data +@ApiModel("机构下属服务人员简略响应数据") +public class InstitutionStaffSimpleResDTO { + /** + * 服务人员id + */ + @ApiModelProperty("服务人员id") + private Long id; + + /** + * 名称 + */ + @ApiModelProperty("名称") + private String name; +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/response/LoginResDTO.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/response/LoginResDTO.java new file mode 100644 index 0000000..6d6b50d --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/response/LoginResDTO.java @@ -0,0 +1,17 @@ +package com.jzo2o.customer.model.dto.response; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@ApiModel("登录结果") +@NoArgsConstructor +@AllArgsConstructor +public class LoginResDTO { + + @ApiModelProperty("访问token") + private String token; +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/response/RejectReasonResDTO.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/response/RejectReasonResDTO.java new file mode 100644 index 0000000..7a3d8a0 --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/response/RejectReasonResDTO.java @@ -0,0 +1,22 @@ +package com.jzo2o.customer.model.dto.response; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 驳回原因 + * + * @author itcast + * @create 2023/9/7 09:29 + **/ +@Data +@ApiModel("驳回原因响应数据") +@NoArgsConstructor +@AllArgsConstructor +public class RejectReasonResDTO { + @ApiModelProperty("驳回原因") + private String rejectReason; +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/response/ServeProviderBasicInformationResDTO.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/response/ServeProviderBasicInformationResDTO.java new file mode 100644 index 0000000..47e1a00 --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/response/ServeProviderBasicInformationResDTO.java @@ -0,0 +1,94 @@ +package com.jzo2o.customer.model.dto.response; + +import com.jzo2o.customer.model.dto.ServeSkillSimpleDTO; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.time.LocalDateTime; +import java.util.List; + +/** + * 服务人员/机构基本信息 + * + * @author itcast + * @create 2023/9/6 16:32 + **/ +@Data +@ApiModel("服务人员/机构基本信息") +public class ServeProviderBasicInformationResDTO { + /** + * 服务人员/机构id + */ + @ApiModelProperty("服务人员/机构id") + private Long id; + + /** + * 类型,2:服务人员,3:服务机构 + */ + @ApiModelProperty("类型,2:服务人员,3:服务机构") + private Integer type; + + /** + * 名称 + */ + @ApiModelProperty("名称") + private String name; + + /** + * 账号 + */ + @ApiModelProperty("账号") + private String phone; + + @ApiModelProperty("服务技能简略信息") + private List serveSkillSimpleList; + + /** + * 服务分类 + */ + @ApiModelProperty("服务分类") + private String serveTypes; + + /** + * 服务技能 + */ + @ApiModelProperty("服务技能") + private String serveSkills; + + /** + * 城市名称 + */ + @ApiModelProperty("城市名称") + private String cityName; + + /** + * 意向单范围 + */ + @ApiModelProperty("意向接单范围") + private String intentionScope; + + /** + * 是否可以接单,0:关闭接单,1:开启接单 + */ + @ApiModelProperty("是否可以接单,0:关闭接单,1:开启接单") + private Integer canPickUp; + + /** + * 状态,0:正常,1:冻结 + */ + @ApiModelProperty("状态,0:正常,1:冻结") + private Integer status; + + /** + * 综合评分 + */ + @ApiModelProperty("综合评分") + private Double score; + + /** + * 认证时间 + */ + @ApiModelProperty("认证时间") + private LocalDateTime certificationTime; +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/response/ServeProviderInfoResDTO.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/response/ServeProviderInfoResDTO.java new file mode 100644 index 0000000..8ea8bee --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/response/ServeProviderInfoResDTO.java @@ -0,0 +1,58 @@ +package com.jzo2o.customer.model.dto.response; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 服务人员/机构信息 + * + * @author itcast + * @create 2023/9/18 10:01 + **/ +@Data +@ApiModel("服务人员/机构信息") +public class ServeProviderInfoResDTO { + /** + * 主键 + */ + @ApiModelProperty("服务人员/机构id") + private Long id; + + /** + * 编号 + */ + @ApiModelProperty("编号") + private String code; + + /** + * 姓名 + */ + @ApiModelProperty("姓名") + private String name; + + /** + * 电话 + */ + @ApiModelProperty("电话") + private String phone; + + /** + * 头像 + */ + @ApiModelProperty("头像") + private String avatar; + + + /** + * 综合评分 + */ + @ApiModelProperty("综合评分") + private Double score; + + /** + * 好评率 + */ + @ApiModelProperty("好评率") + private String goodLevelRate; +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/response/ServeProviderListResDTO.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/response/ServeProviderListResDTO.java new file mode 100644 index 0000000..0344ffc --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/response/ServeProviderListResDTO.java @@ -0,0 +1,65 @@ +package com.jzo2o.customer.model.dto.response; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.time.LocalDateTime; + +/** + * 服务人员/机构 + * + * @author itcast + * @create 2023/9/4 20:27 + **/ +@Data +@ApiModel("服务人员/机构") +public class ServeProviderListResDTO { + /** + * 服务人员/机构id + */ + @ApiModelProperty("服务人员/机构id") + private Long id; + + /** + * 名称 + */ + @ApiModelProperty("名称") + private String name; + + /** + * 手机号 + */ + @ApiModelProperty("手机号") + private String phone; + + /** + * 身份证号/统一社会信用代码 + */ + @ApiModelProperty("身份证号/统一社会信用代码") + private String idNumber; + + /** + * 城市名称 + */ + @ApiModelProperty("城市名称") + private String cityName; + + /** + * 是否可以接单,0:关闭接单,1:开启接单 + */ + @ApiModelProperty("是否可以接单,0:关闭接单,1:开启接单") + private Integer canPickUp; + + /** + * 状态,0:正常,1:冻结 + */ + @ApiModelProperty("状态,0:正常,1:冻结") + private Integer status; + + /** + * 认证时间 + */ + @ApiModelProperty("认证时间") + private LocalDateTime certificationTime; +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/response/ServeProviderSettingsGetResDTO.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/response/ServeProviderSettingsGetResDTO.java new file mode 100644 index 0000000..8d41319 --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/response/ServeProviderSettingsGetResDTO.java @@ -0,0 +1,46 @@ +package com.jzo2o.customer.model.dto.response; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@ApiModel("服务范围设置") +@Data +@NoArgsConstructor +@AllArgsConstructor +public class ServeProviderSettingsGetResDTO { + /** + * 服务所在城市编码 + */ + @ApiModelProperty("服务所在城市编码") + private String cityCode; + /** + * 服务所在城市名称 + */ + @ApiModelProperty("服务所在城市名称") + private String cityName; + /** + * 服务范围经纬度,格式经度,纬度 + */ + @ApiModelProperty("服务范围经纬度,格式经度,纬度") + private String location; + /** + * 意向接单范围 + */ + @ApiModelProperty("意向接单范围") + private String intentionScope; + + /** + * 是否有技能 + */ + @ApiModelProperty("是否有技能") + private Boolean haveSkill; + + /** + * 是否开启接单 + */ + @ApiModelProperty("是否可以接单") + private Boolean canPickUp; +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/response/ServeSettingsStatusResDTO.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/response/ServeSettingsStatusResDTO.java new file mode 100644 index 0000000..af1b31e --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/response/ServeSettingsStatusResDTO.java @@ -0,0 +1,53 @@ +package com.jzo2o.customer.model.dto.response; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 服务信息设置 + */ +@ApiModel("服务信息设置状态") +@Data +@NoArgsConstructor +@Builder +@AllArgsConstructor +public class ServeSettingsStatusResDTO { + /** + * 认证状态,0:初始态,1:认证中,2:认证成功,3认证失败 + */ + @ApiModelProperty("认证状态,0:初始态,1:认证中,2:认证成功,3认证失败") + private Integer certificationStatus; + +// @ApiModelProperty("是否完成认证") +// private Boolean authed; + + /** + * 是否完成服务信息设置 + */ + @ApiModelProperty("是否完成服务信息设置") + private Boolean serveSkillSetted; + /** + * 是否设置服务范文设置 + */ + @ApiModelProperty("是否设置服务范围") + private Boolean serveScopeSetted; + /** + * 是否开启接单 + */ + @ApiModelProperty("是否开启接单") + private Boolean canPickUp; + /** + * 是否设置过接单 + */ +// @ApiModelProperty("是否设置过接单") +// private Boolean pickUpSetted; + /** + * 设置状态,0:未完成所有设置、认证 + */ + @ApiModelProperty("初次设置状态,0:未完成设置、认证,1:已经完成所有设置、认证") + private Integer settingsStatus; +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/response/ServeSkillCategoryResDTO.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/response/ServeSkillCategoryResDTO.java new file mode 100644 index 0000000..d6d5e67 --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/response/ServeSkillCategoryResDTO.java @@ -0,0 +1,41 @@ +package com.jzo2o.customer.model.dto.response; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * 服务技能目录响应结果 + * + * @author itcast + * @create 2023/7/18 19:16 + **/ +@Data +@ApiModel("服务技能目录响应结果") +public class ServeSkillCategoryResDTO { + /** + * 服务类型d + */ + @ApiModelProperty("服务类型id") + private Long serveTypeId; + + /** + * 服务类型名称 + */ + @ApiModelProperty("服务类型名称") + private String serveTypeName; + + /** + * 下属服务技能数量 + */ + @ApiModelProperty("下属服务技能数量") + private Integer count; + + /** + * 服务技能项列表 + */ + @ApiModelProperty("服务技能项列表") + private List serveSkillItemResDTOList; +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/response/ServeSkillItemResDTO.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/response/ServeSkillItemResDTO.java new file mode 100644 index 0000000..3fd373e --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/response/ServeSkillItemResDTO.java @@ -0,0 +1,33 @@ +package com.jzo2o.customer.model.dto.response; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 服务技能项响应结果 + * + * @author itcast + * @create 2023/7/18 19:16 + **/ +@Data +@ApiModel("服务技能项响应结果") +public class ServeSkillItemResDTO { + /** + * 服务项id + */ + @ApiModelProperty("服务项id") + private Long serveItemId; + + /** + * 服务项名称 + */ + @ApiModelProperty("服务项名称") + private String serveItemName; + + /** + * 是否被选中 + */ + @ApiModelProperty("是否被选中") + private Boolean isSelected; +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/response/ServeSkillTypeResDTO.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/response/ServeSkillTypeResDTO.java new file mode 100644 index 0000000..29947a6 --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/response/ServeSkillTypeResDTO.java @@ -0,0 +1,33 @@ +package com.jzo2o.customer.model.dto.response; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 服务技能类型响应 + * + * @author itcast + * @create 2023/7/18 17:39 + **/ +@Data +@ApiModel("服务技能类型响应") +public class ServeSkillTypeResDTO { + /** + * 服务类型id + */ + @ApiModelProperty("服务类型id") + private Long serveTypeId; + + /** + * 服务类型名称 + */ + @ApiModelProperty("服务类型名称") + private String serveTypeName; + + /** + * 服务类型下属技能数量 + */ + @ApiModelProperty("服务类型下属技能数量") + private Integer count; +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/response/WorkerCertificationAuditResDTO.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/response/WorkerCertificationAuditResDTO.java new file mode 100644 index 0000000..5af7f16 --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/response/WorkerCertificationAuditResDTO.java @@ -0,0 +1,107 @@ +package com.jzo2o.customer.model.dto.response; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.time.LocalDateTime; + +/** + * 服务人员申请认证信息响应值 + * + * @author itcast + * @create 2023/9/6 11:51 + **/ +@Data +@ApiModel("服务人员申请认证信息响应值") +public class WorkerCertificationAuditResDTO { + /** + * 主键 + */ + @ApiModelProperty("主键") + private Long id; + + /** + * 服务人员id + */ + @ApiModelProperty("服务人员id") + private Long serveProviderId; + + /** + * 姓名 + */ + @ApiModelProperty("姓名") + private String name; + + /** + * 身份证号 + */ + @ApiModelProperty("身份证号") + private String idCardNo; + + /** + * 身份证正面 + */ + @ApiModelProperty("身份证正面") + private String frontImg; + + /** + * 身份证反面 + */ + @ApiModelProperty("身份证反面") + private String backImg; + + /** + * 证明资料 + */ + @ApiModelProperty("证明资料") + private String certificationMaterial; + + /** + * 审核状态,0:未审核,1:已审核 + */ + @ApiModelProperty("审核状态,0:未审核,1:已审核") + private Integer auditStatus; + + /** + * 审核人id + */ + @ApiModelProperty("审核人id") + private Long auditorId; + + /** + * 审核人姓名 + */ + @ApiModelProperty("审核人姓名") + private String auditorName; + + /** + * 审核时间 + */ + @ApiModelProperty("审核时间") + private LocalDateTime auditTime; + + /** + * 认证状态,1:认证中,2:认证成功,3认证失败 + */ + @ApiModelProperty("认证状态,1:认证中,2:认证成功,3认证失败") + private Integer certificationStatus; + + /** + * 驳回原因 + */ + @ApiModelProperty("驳回原因") + private String rejectReason; + + /** + * 创建时间 + */ + @ApiModelProperty("创建时间") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @ApiModelProperty("更新时间") + private LocalDateTime updateTime; +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/response/WorkerCertificationResDTO.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/response/WorkerCertificationResDTO.java new file mode 100644 index 0000000..748170a --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/model/dto/response/WorkerCertificationResDTO.java @@ -0,0 +1,65 @@ +package com.jzo2o.customer.model.dto.response; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.time.LocalDateTime; + +/** + * 服务人员申认证信息响应值 + * + * @author itcast + * @create 2023/9/6 11:51 + **/ +@Data +@ApiModel("服务人员认证信息响应值") +public class WorkerCertificationResDTO { + /** + * 主键 + */ + @ApiModelProperty("服务人员id") + private Long id; + + /** + * 姓名 + */ + @ApiModelProperty("姓名") + private String name; + + /** + * 身份证号 + */ + @ApiModelProperty("身份证号") + private String idCardNo; + + /** + * 身份证正面 + */ + @ApiModelProperty("身份证正面") + private String frontImg; + + /** + * 身份证反面 + */ + @ApiModelProperty("身份证反面") + private String backImg; + + /** + * 证明资料 + */ + @ApiModelProperty("证明资料") + private String certificationMaterial; + + /** + * 创建时间 + */ + @ApiModelProperty("创建时间") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @ApiModelProperty("更新时间") + private LocalDateTime updateTime; +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/properties/ApplicationProperties.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/properties/ApplicationProperties.java new file mode 100644 index 0000000..edd90b4 --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/properties/ApplicationProperties.java @@ -0,0 +1,16 @@ +package com.jzo2o.customer.properties; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Configuration; + +/** + * @author itcast + */ +@ConfigurationProperties(prefix = "jzo2o") +@Configuration +@Data +public class ApplicationProperties { + + private String jwtKey; +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/properties/EvaluationProperties.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/properties/EvaluationProperties.java new file mode 100644 index 0000000..f981d68 --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/properties/EvaluationProperties.java @@ -0,0 +1,33 @@ +package com.jzo2o.customer.properties; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Configuration; + +/** + * @author itcast + */ + +@Data +@Configuration +@ConfigurationProperties(prefix = "jzo2o.evaluation") +public class EvaluationProperties { + private String appId; + private String accessKeyId; + private String accessKeySecret; + + /** + * 域名或ip + */ + private String domain; + + /** + * 服务项 + */ + private EvaluationTargetProperties serveItem; + + /** + * 师傅 + */ + private EvaluationTargetProperties serveProvider; +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/properties/EvaluationTargetProperties.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/properties/EvaluationTargetProperties.java new file mode 100644 index 0000000..66df97a --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/properties/EvaluationTargetProperties.java @@ -0,0 +1,20 @@ +package com.jzo2o.customer.properties; + +import lombok.Data; + +/** + * 评价对象配置 + * + * @author itcast + * @create 2023/9/11 17:03 + **/ +@Data +public class EvaluationTargetProperties { + + /** + * 评价对象类型id + */ + private String targetTypeId; + + +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/service/EvaluationService.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/service/EvaluationService.java new file mode 100644 index 0000000..f7d7df0 --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/service/EvaluationService.java @@ -0,0 +1,110 @@ +package com.jzo2o.customer.service; + +import com.jzo2o.api.customer.dto.request.EvaluationSubmitReqDTO; +import com.jzo2o.common.model.CurrentUserInfo; +import com.jzo2o.customer.model.dto.request.AuditReqDTO; +import com.jzo2o.customer.model.dto.request.EvaluationPageByTargetReqDTO; +import com.jzo2o.customer.model.dto.request.LikeOrCancelReqDTO; +import com.jzo2o.customer.model.dto.response.*; + +import java.util.List; +import java.util.Map; + +/** + * @author itcast + */ +public interface EvaluationService { + + /** + * 发表评价 + * + * @param evaluationSubmitReqDTO 发表评价请求体 + */ + BooleanResDTO submit(EvaluationSubmitReqDTO evaluationSubmitReqDTO); + + /** + * 根据对象属性分页查询评价列表 + * + * @param evaluationPageByTargetReqDTO 分页查询请求体 + * @return 分页结果 + */ + List pageByTarget(EvaluationPageByTargetReqDTO evaluationPageByTargetReqDTO); + + /** + * 删除评价 + * + * @param id 评价id + */ + void delete(String id); + + /** + * 点赞或取消点赞 + * + * @param likeOrCancelReqDTO 点赞请求数据 + */ + void likeOrCancel(LikeOrCancelReqDTO likeOrCancelReqDTO); + + /** + * 用户举报 + * + * @param auditReqDTO 举报请求 + */ + void userReport(AuditReqDTO auditReqDTO); + + /** + * 分页查询当前用户评价列表 + * + * @param pageNo 页码,默认为1 + * @param pageSize 页面大小,默认为10 + * @return 当前用户评价列表 + */ + List pageByCurrentUser(Integer pageNo, Integer pageSize); + + /** + * 根据评价等级分页查询当前用户评价列表 + * + * @param scoreLevel 评价等级,1差评,2中评,3好评 + * @param pageNo 页码 + * @param pageSize 页面大小 + * @return 评价列表 + */ + List pageByCurrentUserAndScoreLevel(Integer scoreLevel, Integer pageNo, Integer pageSize); + + /** + * 根据订单id列表查询师傅评分 + * + * @param orderIds 订单id列表 + * @return 评分 + */ + Map queryServeProviderScoreByOrdersId(List orderIds); + + /** + * 获取评价系统信息 + * + * @return 评价系统信息 + */ + EvaluationTokenDto getEvaluationInfo(); + + /** + * 根据对象类型和订单id查询评价 + * + * @param targetTypeId 对象类型id + * @param ordersId 订单id + * @return 评价 + */ + EvaluationResDTO queryByTargetTypeIdAndOrdersId(CurrentUserInfo currentUserInfo, String targetTypeId, Long ordersId); + + /** + * 查询所有的评价配置信息 + * + * @return 评价配置信息 + */ + AllEvaluationSystemInfoResDTO findAllSystemInfo(CurrentUserInfo currentUserInfo); + + /** + * 自动评价 + * + * @param evaluationSubmitReqDTO 评价信息 + */ + void autoEvaluate(EvaluationSubmitReqDTO evaluationSubmitReqDTO); +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/service/IAddressBookService.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/service/IAddressBookService.java new file mode 100644 index 0000000..4c95aa5 --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/service/IAddressBookService.java @@ -0,0 +1,30 @@ +package com.jzo2o.customer.service; + +import com.jzo2o.api.customer.dto.response.AddressBookResDTO; +import com.jzo2o.common.model.PageResult; +import com.jzo2o.customer.model.domain.AddressBook; +import com.jzo2o.customer.model.dto.request.AddressBookPageQueryReqDTO; +import com.jzo2o.customer.model.dto.request.AddressBookUpsertReqDTO; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 地址薄 服务类 + *

+ * + * @author itcast + * @since 2023-07-06 + */ +public interface IAddressBookService extends IService { + + /** + * 根据用户id和城市编码获取地址 + * + * @param userId 用户id + * @param cityCode 城市编码 + * @return 地址编码 + */ + List getByUserIdAndCity(Long userId, String cityCode); +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/service/IAgencyCertificationService.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/service/IAgencyCertificationService.java new file mode 100644 index 0000000..f6fc3c9 --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/service/IAgencyCertificationService.java @@ -0,0 +1,27 @@ +package com.jzo2o.customer.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.jzo2o.customer.model.domain.AgencyCertification; +import com.jzo2o.customer.model.dto.AgencyCertificationUpdateDTO; +import com.jzo2o.customer.model.dto.response.AgencyCertificationResDTO; + +/** + *

+ * 机构认证信息表 服务类 + *

+ * + * @author itcast + * @since 2023-09-06 + */ +public interface IAgencyCertificationService extends IService { + + + /** + * 根据机构id更新 + * + * @param agencyCertificationUpdateDTO 机构认证更新模型 + */ + void updateByServeProviderId(AgencyCertificationUpdateDTO agencyCertificationUpdateDTO); + + +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/service/ICommonUserService.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/service/ICommonUserService.java new file mode 100644 index 0000000..208a0e5 --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/service/ICommonUserService.java @@ -0,0 +1,43 @@ +package com.jzo2o.customer.service; + +import com.jzo2o.api.customer.dto.request.CommonUserPageQueryReqDTO; +import com.jzo2o.api.customer.dto.request.CommonUserUpdateReqDTO; +import com.jzo2o.api.customer.dto.response.CommonUserResDTO; +import com.jzo2o.common.model.PageResult; +import com.jzo2o.customer.model.domain.CommonUser; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 服务类 + *

+ * + * @author itcast + * @since 2023-07-04 + */ +public interface ICommonUserService extends IService { + + CommonUser findByOpenId(String openId); + + /** + * 分页查询 + * + * @param commonUserPageQueryReqDTO 查询条件 + * @return 分页结果 + */ + PageResult page(CommonUserPageQueryReqDTO commonUserPageQueryReqDTO); + + /** + * 更新用户电话 + * + * @param phoneCode 微信手机号授权码 + */ + void updatePhone(String phoneCode); + + /** + * 更新状态 + * + * @param commonUserUpdateReqDTO 更新信息 + */ + void updateStatus(CommonUserUpdateReqDTO commonUserUpdateReqDTO); +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/service/IInstitutionStaffService.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/service/IInstitutionStaffService.java new file mode 100644 index 0000000..d384094 --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/service/IInstitutionStaffService.java @@ -0,0 +1,82 @@ +package com.jzo2o.customer.service; + +import com.jzo2o.api.customer.dto.request.InstitutionStaffAddReqDTO; +import com.jzo2o.api.customer.dto.request.InstitutionStaffPageQueryReqDTO; +import com.jzo2o.api.customer.dto.response.InstitutionStaffResDTO; +import com.jzo2o.common.model.PageResult; +import com.jzo2o.customer.model.domain.InstitutionStaff; +import com.jzo2o.customer.model.dto.request.InstitutionStaffUpsertReqDTO; +import com.jzo2o.customer.model.dto.response.InstitutionStaffSimpleResDTO; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 机构下属服务人员 服务类 + *

+ * + * @author itcast + * @since 2023-07-18 + */ +public interface IInstitutionStaffService extends IService { + + /** + * 新增机构下属服务人员 + * + * @param institutionStaffUpsertReqDTO 插入更新机构下属服务人员 + */ + void add(InstitutionStaffUpsertReqDTO institutionStaffUpsertReqDTO); + + /** + * 新增服务人员,用于模拟下单整个流程 + * @param institutionStaffAddReqDTO + */ + void add(InstitutionStaffAddReqDTO institutionStaffAddReqDTO); + + /** + * 更新机构下属服务人员 + * + * @param id 机构下属服务人员id + * @param institutionStaffUpsertReqDTO 插入更新机构下属服务人员 + */ + void update(Long id, InstitutionStaffUpsertReqDTO institutionStaffUpsertReqDTO); + + /** + * 分页查询 + * + * @param institutionStaffPageQueryReqDTO 分页查询请求 + * @return 分页结果 + */ + PageResult pageQuery(InstitutionStaffPageQueryReqDTO institutionStaffPageQueryReqDTO); + + /** + * 获取机构下属服务人员简略列表 + * + * @return 服务人员简略列表 + */ + List queryInstitutionStaffList(); + + /** + * 删除服务人员 + * + * @param id 服务人员id + */ + void delete(Long id); + + /** + * 查询机构服务人员 + * @param id + * @param institutionId + * @return + */ + InstitutionStaffResDTO findByIdAndInstitutionId(Long id, Long institutionId); + + /** + * 根据机构id获取服务人员 + * + * @param institutionId 机构id + * @return 机构下服务人员列表 + */ + List findByInstitutionId(Long institutionId); +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/service/ILoginService.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/service/ILoginService.java new file mode 100644 index 0000000..571afca --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/service/ILoginService.java @@ -0,0 +1,35 @@ +package com.jzo2o.customer.service; + +import com.jzo2o.customer.model.dto.request.LoginForCustomerReqDTO; +import com.jzo2o.customer.model.dto.request.LoginForWorkReqDTO; +import com.jzo2o.customer.model.dto.response.LoginResDTO; + +/** + * 客户中心登录业务 + */ +public interface ILoginService { + + + /** + * 服务人员验证码登录 + * + * @param loginForWorkReqDTO 登录参数 + * @return + */ + LoginResDTO loginForPassword(LoginForWorkReqDTO loginForWorkReqDTO); + /** + * 机构人员账号密码登录 + * + * @param loginForWorkReqDTO 登录参数 + * @return + */ + LoginResDTO loginForVerify(LoginForWorkReqDTO loginForWorkReqDTO); + + /** + * 客户人员/机构登录接口 + * + * @param loginForCustomerReqDTO 登录请求 + * @return token + */ + LoginResDTO loginForCommonUser(LoginForCustomerReqDTO loginForCustomerReqDTO); +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/service/IServeProviderService.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/service/IServeProviderService.java new file mode 100644 index 0000000..02c10f3 --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/service/IServeProviderService.java @@ -0,0 +1,124 @@ +package com.jzo2o.customer.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.jzo2o.api.customer.dto.request.ServerProviderUpdateStatusReqDTO; +import com.jzo2o.api.customer.dto.response.ServeProviderResDTO; +import com.jzo2o.api.customer.dto.response.ServeProviderSimpleResDTO; +import com.jzo2o.common.model.PageResult; +import com.jzo2o.customer.model.domain.ServeProvider; +import com.jzo2o.customer.model.dto.request.InstitutionRegisterReqDTO; +import com.jzo2o.customer.model.dto.request.InstitutionResetPasswordReqDTO; +import com.jzo2o.customer.model.dto.request.ServeProviderPageQueryReqDTO; +import com.jzo2o.customer.model.dto.response.CertificationStatusDTO; +import com.jzo2o.customer.model.dto.response.ServeProviderBasicInformationResDTO; +import com.jzo2o.customer.model.dto.response.ServeProviderInfoResDTO; +import com.jzo2o.customer.model.dto.response.ServeProviderListResDTO; + +import java.util.List; + +/** + *

+ * 服务人员/机构表 服务类 + *

+ * + * @author itcast + * @since 2023-07-17 + */ +public interface IServeProviderService extends IService { + + /** + * 分页查询服务人员列表 + * + * @param serveProviderPageQueryReqDTO 查询条件 + * @return 分页结果 + */ + PageResult pageQueryWorker(ServeProviderPageQueryReqDTO serveProviderPageQueryReqDTO); + + /** + * 分页查询机构列表 + * + * @param serveProviderPageQueryReqDTO 查询条件 + * @return 分页结果 + */ + PageResult pageQueryAgency(ServeProviderPageQueryReqDTO serveProviderPageQueryReqDTO); + + /** + * 更新服务人员/机构状态 + * + * @param serverProviderUpdateStatusReqDTO 服务人员/机构更新状态请求 + */ + void updateStatus(ServerProviderUpdateStatusReqDTO serverProviderUpdateStatusReqDTO); + + /** + * 根据手机号和用户类型获取用户信息 + * + * @param phone 注册手机号 + * @param type 用户类型,2:服务人员,3:机构人员 + * @return + */ + ServeProvider findByPhoneAndType(String phone, Integer type); + + /** + * 根据id获取 + * + * @param id + * @return + */ + ServeProvider findById(Long id); + + + /** + * 新增用户 + * + * @param phone 新增服务人员或机构的访问手机号 + * @param type 服务人员/机构类型,2:服务人员,3:机构 + * @param password 机构登录密码 + */ + ServeProvider add(String phone, Integer type, String password); + + ServeProviderResDTO findServeProviderInfo(Long id); + + /** + * 根据id更新名称 + * + * @param id 服务人员/机构id + * @param name 名称 + */ + void updateNameById(Long id, String name); + + /** + * 根据服务人员/机构id查询基本信息 + * + * @param id 服务人员/机构id + * @return 基本信息 + */ + ServeProviderBasicInformationResDTO findBasicInformationById(Long id); + + + /** + * 根据id更新评分数据 + * + * @param id 服务人员/机构id + * @param score 综合分数 + * @param goodLevelRate 好评率 + */ + void updateScoreById(Long id, Double score, String goodLevelRate); + + + List batchGet(List ids); + + /** + * 获取当前用户信息 + * + * @return 用户信息 + */ + ServeProviderInfoResDTO currentUserInfo(); + + /** + * 获取服务人员或机构的信息状态 + * @param userType + * @param providerId + * @return + */ + CertificationStatusDTO getCertificationStatus(Integer userType, Long providerId); +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/service/IServeProviderSettingsService.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/service/IServeProviderSettingsService.java new file mode 100644 index 0000000..9cb963b --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/service/IServeProviderSettingsService.java @@ -0,0 +1,74 @@ +package com.jzo2o.customer.service; + +import com.jzo2o.customer.model.domain.ServeProviderSettings; +import com.jzo2o.customer.model.dto.request.ServePickUpReqDTO; +import com.jzo2o.customer.model.dto.request.ServeScopeSetReqDTO; +import com.jzo2o.customer.model.dto.response.ServeProviderSettingsGetResDTO; +import com.jzo2o.customer.model.dto.response.ServeSettingsStatusResDTO; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; +import java.util.Map; + +/** + *

+ * 服务人员/机构附属信息 服务类 + *

+ * + * @author itcast + * @since 2023-07-20 + */ +public interface IServeProviderSettingsService extends IService { + + void add(Long id, Integer serveProviderType); + + /** + * 设置服务范围 + * @param serveScopeSetReqDTO + */ + void setServeScope(ServeScopeSetReqDTO serveScopeSetReqDTO); + + /** + * 获取服务范围 + * @return + */ + ServeProviderSettingsGetResDTO getServeScope(); + + /** + * 设置接单 + * + * @param servePickUpReqDTO + */ + void setPickUp(ServePickUpReqDTO servePickUpReqDTO); + + /** + * 设置接单状态 + * @param id 服务人员/机构id + * @param canPickUp 是否开启接单 + */ + void setPickUp(Long id, Integer canPickUp); + + /** + * 获取设置状态 + * @return + */ + ServeSettingsStatusResDTO getSettingStatus(); + + ServeProviderSettings findById(Long id); + + + /** + * 标记已设置服务技能 + * @param currentUserId + */ + void setHaveSkill(Long currentUserId); + + + /** + * 批量获取服务人员或机构所在城市编码 + * @param serveProviderIds + * @return + */ + Map findManyCityCodeOfServeProvider(List serveProviderIds); + +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/service/IServeProviderSyncService.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/service/IServeProviderSyncService.java new file mode 100644 index 0000000..9ec0c39 --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/service/IServeProviderSyncService.java @@ -0,0 +1,28 @@ +package com.jzo2o.customer.service; + +import com.jzo2o.customer.model.domain.ServeProviderInfo; +import com.jzo2o.customer.model.domain.ServeProviderSync; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 评分同步列表 服务类 + *

+ * + * @author itcast + * @since 2023-08-07 + */ +public interface IServeProviderSyncService extends IService { + + int add(Long id, Integer serveProviderType); + + /** + * 更新评分 + * @param id + * @param evaluationScore + */ + void updateScore(Long id, Double evaluationScore); + + + +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/service/IServeSkillService.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/service/IServeSkillService.java new file mode 100644 index 0000000..f7a8ea7 --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/service/IServeSkillService.java @@ -0,0 +1,59 @@ +package com.jzo2o.customer.service; + +import com.jzo2o.api.foundations.dto.response.ServeItemSimpleResDTO; +import com.jzo2o.api.foundations.dto.response.ServeTypeSimpleResDTO; +import com.jzo2o.customer.model.domain.ServeSkill; +import com.jzo2o.customer.model.dto.request.ServeSkillAddReqDTO; +import com.jzo2o.customer.model.dto.response.ServeSkillCategoryResDTO; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 服务技能表 服务类 + *

+ * + * @author itcast + * @since 2023-07-18 + */ +public interface IServeSkillService extends IService { + + /** + * 批量新增或修改 + * + * @param serveSkillAddReqDTOList 批量新增或修改数据 + */ + void batchUpsert(List serveSkillAddReqDTOList); + + /** + * 查询服务技能目录 + * + * @return 服务技能目录 + */ + List category(); + + /** + * 查询服务者的服务技能 + * + * @param providerId 服务者id + * @param providerType 服务者类型 + * @param cityCode 城市编码 + * @return 服务技能列表 + */ + List queryServeSkillListByServeProvider(Long providerId, Integer providerType, String cityCode); + + /** + * 获取服务者的技能分类 + * + * @return 技能分类列表 + */ + List queryCurrentUserServeSkillTypeList(); + + /** + * 获取服务者的所有技能 + * + * @return 技能列表 + */ + List queryCurrentUserServeSkillItemList(); +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/service/IWorkerCertificationService.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/service/IWorkerCertificationService.java new file mode 100644 index 0000000..1fe9163 --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/service/IWorkerCertificationService.java @@ -0,0 +1,25 @@ +package com.jzo2o.customer.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.jzo2o.customer.model.domain.WorkerCertification; +import com.jzo2o.customer.model.dto.WorkerCertificationUpdateDTO; + +/** + *

+ * 服务人员认证信息表 服务类 + *

+ * + * @author itcast + * @since 2023-09-06 + */ +public interface IWorkerCertificationService extends IService { + + + + /** + * 根据服务人员id更新 + * + * @param workerCertificationUpdateDTO 服务人员认证更新模型 + */ + void updateById(WorkerCertificationUpdateDTO workerCertificationUpdateDTO); +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/service/impl/AddressBookServiceImpl.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/service/impl/AddressBookServiceImpl.java new file mode 100644 index 0000000..a9767e6 --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/service/impl/AddressBookServiceImpl.java @@ -0,0 +1,55 @@ +package com.jzo2o.customer.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.jzo2o.api.customer.dto.response.AddressBookResDTO; +import com.jzo2o.api.publics.MapApi; +import com.jzo2o.api.publics.dto.response.LocationResDTO; +import com.jzo2o.common.model.PageResult; +import com.jzo2o.common.utils.BeanUtils; +import com.jzo2o.common.utils.CollUtils; +import com.jzo2o.common.utils.NumberUtils; +import com.jzo2o.common.utils.StringUtils; +import com.jzo2o.customer.mapper.AddressBookMapper; +import com.jzo2o.customer.model.domain.AddressBook; +import com.jzo2o.customer.model.dto.request.AddressBookPageQueryReqDTO; +import com.jzo2o.customer.model.dto.request.AddressBookUpsertReqDTO; +import com.jzo2o.customer.service.IAddressBookService; +import com.jzo2o.mvc.utils.UserContext; +import com.jzo2o.mysql.utils.PageUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; + +/** + *

+ * 地址薄 服务实现类 + *

+ * + * @author itcast + * @since 2023-07-06 + */ +@Service +public class AddressBookServiceImpl extends ServiceImpl implements IAddressBookService { + + @Override + public List getByUserIdAndCity(Long userId, String city) { + + List addressBooks = lambdaQuery() + .eq(AddressBook::getUserId, userId) + .eq(AddressBook::getCity, city) + .list(); + if(CollUtils.isEmpty(addressBooks)) { + return new ArrayList<>(); + } + return BeanUtils.copyToList(addressBooks, AddressBookResDTO.class); + } +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/service/impl/AgencyCertificationServiceImpl.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/service/impl/AgencyCertificationServiceImpl.java new file mode 100644 index 0000000..02c2afc --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/service/impl/AgencyCertificationServiceImpl.java @@ -0,0 +1,47 @@ +package com.jzo2o.customer.service.impl; + +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.jzo2o.customer.enums.CertificationStatusEnum; +import com.jzo2o.customer.mapper.AgencyCertificationMapper; +import com.jzo2o.customer.model.domain.AgencyCertification; +import com.jzo2o.customer.model.dto.AgencyCertificationUpdateDTO; +import com.jzo2o.customer.service.IAgencyCertificationService; +import org.springframework.stereotype.Service; + +/** + *

+ * 机构认证信息表 服务实现类 + *

+ * + * @author itcast + * @since 2023-09-06 + */ +@Service +public class AgencyCertificationServiceImpl extends ServiceImpl implements IAgencyCertificationService { + + + + /** + * 根据机构id更新 + * + * @param agencyCertificationUpdateDTO 机构认证更新模型 + */ + @Override + public void updateByServeProviderId(AgencyCertificationUpdateDTO agencyCertificationUpdateDTO) { + LambdaUpdateWrapper updateWrapper = Wrappers.lambdaUpdate() + .eq(AgencyCertification::getId, agencyCertificationUpdateDTO.getId()) + .set(AgencyCertification::getCertificationStatus, agencyCertificationUpdateDTO.getCertificationStatus()) + .set(ObjectUtil.isNotEmpty(agencyCertificationUpdateDTO.getName()), AgencyCertification::getName, agencyCertificationUpdateDTO.getName()) + .set(ObjectUtil.isNotEmpty(agencyCertificationUpdateDTO.getIdNumber()), AgencyCertification::getIdNumber, agencyCertificationUpdateDTO.getIdNumber()) + .set(ObjectUtil.isNotEmpty(agencyCertificationUpdateDTO.getLegalPersonName()), AgencyCertification::getLegalPersonName, agencyCertificationUpdateDTO.getLegalPersonName()) + .set(ObjectUtil.isNotEmpty(agencyCertificationUpdateDTO.getLegalPersonIdCardNo()), AgencyCertification::getLegalPersonIdCardNo, agencyCertificationUpdateDTO.getLegalPersonIdCardNo()) + .set(ObjectUtil.isNotEmpty(agencyCertificationUpdateDTO.getBusinessLicense()), AgencyCertification::getBusinessLicense, agencyCertificationUpdateDTO.getBusinessLicense()) + .set(ObjectUtil.isNotEmpty(agencyCertificationUpdateDTO.getCertificationTime()), AgencyCertification::getCertificationTime, agencyCertificationUpdateDTO.getCertificationTime()); + super.update(updateWrapper); + } + + +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/service/impl/CommonUserServiceImpl.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/service/impl/CommonUserServiceImpl.java new file mode 100644 index 0000000..c5886c9 --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/service/impl/CommonUserServiceImpl.java @@ -0,0 +1,92 @@ +package com.jzo2o.customer.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.util.ObjectUtil; +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 com.jzo2o.api.customer.dto.request.CommonUserPageQueryReqDTO; +import com.jzo2o.api.customer.dto.request.CommonUserUpdateReqDTO; +import com.jzo2o.api.customer.dto.response.CommonUserResDTO; +import com.jzo2o.api.orders.OrdersApi; +import com.jzo2o.api.publics.WechatApi; +import com.jzo2o.api.publics.dto.response.PhoneResDTO; +import com.jzo2o.common.model.PageResult; +import com.jzo2o.customer.mapper.CommonUserMapper; +import com.jzo2o.customer.model.domain.CommonUser; +import com.jzo2o.customer.service.ICommonUserService; +import com.jzo2o.mvc.utils.UserContext; +import com.jzo2o.mysql.utils.PageUtils; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; + +/** + *

+ * 服务实现类 + *

+ * + * @author itcast + * @since 2023-07-04 + */ +@Service +public class CommonUserServiceImpl extends ServiceImpl implements ICommonUserService { + @Resource + private CommonUserMapper commonUserMapper; + @Resource + private WechatApi wechatApi; + @Resource + private OrdersApi ordersApi; + + @Override + public CommonUser findByOpenId(String openId) { + return lambdaQuery().eq(CommonUser::getOpenId, openId) + .one(); + } + + /** + * 分页查询 + * + * @param commonUserPageQueryReqDTO 查询条件 + * @return 分页结果 + */ + @Override + public PageResult page(CommonUserPageQueryReqDTO commonUserPageQueryReqDTO) { + //1.分页查询用户 + Page page = PageUtils.parsePageQuery(commonUserPageQueryReqDTO, CommonUser.class); + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery() + .eq(ObjectUtil.isNotEmpty(commonUserPageQueryReqDTO.getNickname()), CommonUser::getNickname, commonUserPageQueryReqDTO.getNickname()) + .eq(ObjectUtil.isNotEmpty(commonUserPageQueryReqDTO.getPhone()), CommonUser::getPhone, commonUserPageQueryReqDTO.getPhone()); + Page commonUserPage = commonUserMapper.selectPage(page, queryWrapper); + + //3.封装数据 + return PageUtils.toPage(commonUserPage, CommonUserResDTO.class); + } + + /** + * 更新用户电话 + * + * @param phoneCode 微信手机号授权码 + */ + @Override + public void updatePhone(String phoneCode) { + PhoneResDTO phoneResDTO = wechatApi.getPhone(phoneCode); + + CommonUser commonUser = new CommonUser(); + commonUser.setId(UserContext.currentUserId()); + commonUser.setPhone(phoneResDTO.getPhone()); + commonUserMapper.updateById(commonUser); + } + + /** + * 更新状态 + * + * @param commonUserUpdateReqDTO 更新信息 + */ + @Override + public void updateStatus(CommonUserUpdateReqDTO commonUserUpdateReqDTO) { + CommonUser commonUser = BeanUtil.toBean(commonUserUpdateReqDTO, CommonUser.class); + commonUserMapper.updateById(commonUser); + } +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/service/impl/EvaluationServiceImpl.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/service/impl/EvaluationServiceImpl.java new file mode 100644 index 0000000..c692310 --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/service/impl/EvaluationServiceImpl.java @@ -0,0 +1,510 @@ +package com.jzo2o.customer.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ArrayUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.json.JSONObject; +import cn.hutool.json.JSONUtil; +import com.jzo2o.api.customer.dto.request.EvaluationSubmitReqDTO; +import com.jzo2o.api.customer.dto.request.ScoreItem; +import com.jzo2o.api.orders.OrdersApi; +import com.jzo2o.api.orders.OrdersServeApi; +import com.jzo2o.api.orders.dto.response.OrderResDTO; +import com.jzo2o.api.orders.dto.response.ServeProviderIdResDTO; +import com.jzo2o.common.constants.UserType; +import com.jzo2o.common.expcetions.ForbiddenOperationException; +import com.jzo2o.common.model.CurrentUserInfo; +import com.jzo2o.customer.client.EvaluationHttpClient; +import com.jzo2o.customer.model.domain.CommonUser; +import com.jzo2o.customer.model.domain.ServeProvider; +import com.jzo2o.customer.model.dto.EvaluationSubmitDTO; +import com.jzo2o.customer.model.dto.RelationScoreDTO; +import com.jzo2o.customer.model.dto.request.AuditReqDTO; +import com.jzo2o.customer.model.dto.request.EvaluationPageByTargetReqDTO; +import com.jzo2o.customer.model.dto.request.LikeOrCancelReqDTO; +import com.jzo2o.customer.model.dto.response.*; +import com.jzo2o.customer.properties.EvaluationProperties; +import com.jzo2o.customer.service.EvaluationService; +import com.jzo2o.customer.service.ICommonUserService; +import com.jzo2o.customer.service.IServeProviderService; +import com.jzo2o.mvc.utils.UserContext; +import org.springframework.cache.annotation.Cacheable; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * 评价服务 - 业务层 + * + * @author itcast + * @create 2023/9/11 16:19 + **/ +@Service +public class EvaluationServiceImpl implements EvaluationService { + @Resource + private EvaluationHttpClient evaluationHttpClient; + @Resource + private EvaluationProperties evaluationProperties; + @Resource + private OrdersApi ordersApi; + @Resource + private OrdersServeApi ordersServeApi; + @Resource + private IServeProviderService serveProviderService; + @Resource + private ICommonUserService commonUserService; + + /** + * 默认评价内容 + */ + private static final String DEFAULT_EVALUATION = "此用户没有填写评价,系统默认好评"; + + /** + * 默认匿名状态,0:不匿名,1:匿名 + */ + private static final Integer DEFAULT_ANONYMOUS_STATUS = 1; + + /** + * 发表评价 + * + * @param evaluationSubmitReqDTO 发表评价请求体 + */ + @Override + public BooleanResDTO submit(EvaluationSubmitReqDTO evaluationSubmitReqDTO) { + //校验订单状态 + OrderResDTO orderResDTO = ordersApi.queryById(evaluationSubmitReqDTO.getOrdersId()); + if (ObjectUtil.notEqual(orderResDTO.getOrdersStatus(), 400)) { + throw new ForbiddenOperationException("非待评价状态不可评价"); + } + + CurrentUserInfo currentUserInfo = evaluationSubmitReqDTO.getCurrentUserInfo(); + + + //发送服务项评价 + EvaluationResDTO serveItemEvaluationResDTO = queryByTargetTypeIdAndOrdersId(UserContext.currentUser(), evaluationProperties.getServeItem().getTargetTypeId(), evaluationSubmitReqDTO.getOrdersId()); + //针对该订单如果没有发表过该服务的评价才进行提交数据 + if (null == serveItemEvaluationResDTO) { + requestSubmitServeItemEvaluation(evaluationSubmitReqDTO, currentUserInfo); + } + + //发送服务人员/机构评价 + EvaluationResDTO serveProviderEvaluationResDTO = queryByTargetTypeIdAndOrdersId(UserContext.currentUser(), evaluationProperties.getServeProvider().getTargetTypeId(), evaluationSubmitReqDTO.getOrdersId()); + //针对该订单如果没有发表过该师傅的评价才进行提交数据 + if (null == serveProviderEvaluationResDTO) { + requestSubmitServeProviderEvaluation(evaluationSubmitReqDTO, currentUserInfo); + } + + //根据订单id评价 + ordersApi.evaluate(evaluationSubmitReqDTO.getOrdersId()); + + return new BooleanResDTO(true); + } + + /** + * 请求发送服务项评价 + * + * @param evaluationSubmitReqDTO 评价请求数据 + * @param currentUserInfo 当前用户数据 + */ + private void requestSubmitServeItemEvaluation(EvaluationSubmitReqDTO evaluationSubmitReqDTO, CurrentUserInfo currentUserInfo) { + + //发表评价url + String url = evaluationProperties.getDomain() + "/common/evaluations"; + + //查询订单 + OrderResDTO orderResDTO = ordersApi.queryById(evaluationSubmitReqDTO.getOrdersId()); + + //组装评价数据 + EvaluationSubmitDTO evaluationSubmitDTO = new EvaluationSubmitDTO(); + evaluationSubmitDTO.setRelationId(orderResDTO.getId().toString()); + evaluationSubmitDTO.setTargetId(orderResDTO.getServeItemId().toString()); + evaluationSubmitDTO.setTargetName(orderResDTO.getServeItemName()); + evaluationSubmitDTO.setIsAnonymous(evaluationSubmitReqDTO.getIsAnonymous()); + evaluationSubmitDTO.setContent(evaluationSubmitReqDTO.getServeItemEvaluationContent()); + evaluationSubmitDTO.setPictureArray(evaluationSubmitReqDTO.getServeItemPictureArray()); + + //组装评分数据 + evaluationSubmitDTO.setScoreArray(evaluationSubmitReqDTO.getServeItemScoreItems()); + + //组装请求参数 + Map serveItemEvaluationParametersMap = new HashMap<>(); + serveItemEvaluationParametersMap.put("targetTypeId", evaluationProperties.getServeItem().getTargetTypeId()); + + //发送请求 + evaluationHttpClient.post(currentUserInfo, url, serveItemEvaluationParametersMap, evaluationSubmitDTO); + } + + /** + * 请求发送服务人员/机构评价 + * + * @param evaluationSubmitReqDTO 评价请求数据 + * @param currentUserInfo 当前用户数据 + */ + private void requestSubmitServeProviderEvaluation(EvaluationSubmitReqDTO evaluationSubmitReqDTO, CurrentUserInfo currentUserInfo) { + //发表评价url + String url = evaluationProperties.getDomain() + "/common/evaluations"; + + //查询服务人员/机构 + ServeProviderIdResDTO serveProviderIdResDTO = ordersServeApi.queryServeProviderIdByOrderId(evaluationSubmitReqDTO.getOrdersId()); + ServeProvider serveProvider = serveProviderService.getById(serveProviderIdResDTO.getServeProviderId()); + + //组装评价数据 + EvaluationSubmitDTO evaluationSubmitDTO = new EvaluationSubmitDTO(); + evaluationSubmitDTO.setRelationId(evaluationSubmitReqDTO.getOrdersId().toString()); + evaluationSubmitDTO.setTargetId(serveProvider.getId().toString()); + evaluationSubmitDTO.setTargetName(serveProvider.getName()); + evaluationSubmitDTO.setIsAnonymous(evaluationSubmitReqDTO.getIsAnonymous()); + evaluationSubmitDTO.setContent(evaluationSubmitReqDTO.getServeProviderEvaluationContent()); + + //组装评分数据 + evaluationSubmitDTO.setScoreArray(evaluationSubmitReqDTO.getServeProviderScoreItems()); + + //组装请求参数 + Map serveItemEvaluationParametersMap = new HashMap<>(); + serveItemEvaluationParametersMap.put("targetTypeId", evaluationProperties.getServeProvider().getTargetTypeId()); + + //发送请求 + evaluationHttpClient.post(currentUserInfo, url, serveItemEvaluationParametersMap, evaluationSubmitDTO); + } + + /** + * 根据对象属性分页查询评价列表 + * + * @param evaluationPageByTargetReqDTO 分页查询请求体 + * @return 分页结果 + */ + @Override + public List pageByTarget(EvaluationPageByTargetReqDTO evaluationPageByTargetReqDTO) { + CurrentUserInfo currentUserInfo = UserContext.currentUser(); + + //如果是用户端请求,查询的评价为服务项评价 + if (ObjectUtil.equal(UserType.C_USER, currentUserInfo.getUserType())) { + evaluationPageByTargetReqDTO.setTargetTypeId(evaluationProperties.getServeItem().getTargetTypeId()); + } + + //请求url + String url = evaluationProperties.getDomain() + "/common/evaluations/pageByTargetId"; + + //封装请求参数 + Map parameterMap = BeanUtil.beanToMap(evaluationPageByTargetReqDTO); + //只查询好评 + parameterMap.put("scoreLevel", 3); + + //向评价系统发送http请求 + String jsonResult = evaluationHttpClient.get(currentUserInfo, url, parameterMap); + + //解析响应结果 + return JSONUtil.parseObj(jsonResult).getJSONObject("data").getJSONArray("list").toList(EvaluationResDTO.class); + } + + /** + * 删除评价 + * + * @param id 评价id + */ + @Override + public void delete(String id) { + //请求url + String url = evaluationProperties.getDomain() + "/common/evaluations/" + id; + + //封装请求参数 + Map parameterMap = new HashMap<>(); + parameterMap.put("targetTypeId", evaluationProperties.getServeItem().getTargetTypeId()); + + //向评价系统发送http请求 + evaluationHttpClient.delete(UserContext.currentUser(), url, parameterMap); + } + + /** + * 点赞或取消点赞 + * + * @param likeOrCancelReqDTO 点赞请求数据 + */ + @Override + public void likeOrCancel(LikeOrCancelReqDTO likeOrCancelReqDTO) { + //请求url + String url = evaluationProperties.getDomain() + "/common/likes"; + + //封装请求参数 + Map parameterMap = new HashMap<>(); + parameterMap.put("targetTypeId", evaluationProperties.getServeItem().getTargetTypeId()); + + //向评价系统发送http请求 + evaluationHttpClient.post(UserContext.currentUser(), url, parameterMap, likeOrCancelReqDTO); + } + + /** + * 用户举报 + * + * @param auditReqDTO 举报请求 + */ + @Override + public void userReport(AuditReqDTO auditReqDTO) { + //请求url + String url = evaluationProperties.getDomain() + "/common/audit"; + + //组装请求体 + auditReqDTO.setTargetTypeId(evaluationProperties.getServeItem().getTargetTypeId()); + + //向评价系统发送http请求 + evaluationHttpClient.post(UserContext.currentUser(), url, null, auditReqDTO); + } + + /** + * 分页查询当前用户评价列表 + * + * @param pageNo 页码,默认为1 + * @param pageSize 页面大小,默认为10 + * @return 当前用户评价列表 + */ + @Override + public List pageByCurrentUser(Integer pageNo, Integer pageSize) { + //请求url + String url = evaluationProperties.getDomain() + "/common/evaluations/pageByEvaluatorId"; + + //封装请求参数 + Map parameterMap = new HashMap<>(); + parameterMap.put("pageNo", pageNo); + parameterMap.put("pageSize", pageSize); + parameterMap.put("targetTypeId", evaluationProperties.getServeItem().getTargetTypeId()); + parameterMap.put("evaluatorId", UserContext.currentUserId()); + + //向评价系统发送http请求 + String jsonResult = evaluationHttpClient.get(UserContext.currentUser(), url, parameterMap); + + //解析响应数据 + if (ObjectUtil.isEmpty(JSONUtil.parseObj(jsonResult).getJSONObject("data").getJSONArray("list"))) { + return Collections.emptyList(); + } + List list = JSONUtil.parseObj(jsonResult).getJSONObject("data").getJSONArray("list").toList(EvaluationAndOrdersResDTO.class); + + //筛选出订单id,批量查询订单详情 + List orderIds = list.stream().map(e -> Long.valueOf(e.getRelationId())).distinct().collect(Collectors.toList()); + List orderResDTOList = ordersApi.queryByIds(orderIds); + Map ordersMap = orderResDTOList.stream().collect(Collectors.toMap(OrderResDTO::getId, o -> o)); + + //组装订单数据 + list.forEach(e -> { + Long ordersId = Long.valueOf(e.getRelationId()); + e.setServeStartTime(ordersMap.get(ordersId).getServeStartTime()); + e.setServeAddress(ordersMap.get(ordersId).getServeAddress()); + e.setServeItemImg(ordersMap.get(ordersId).getServeItemImg()); + }); + return list; + } + + + /** + * 根据评价等级分页查询当前用户评价列表 + * + * @param scoreLevel 评价等级,1差评,2中评,3好评 + * @param pageNo 页码 + * @param pageSize 页面大小 + * @return 评价列表 + */ + @Override + public List pageByCurrentUserAndScoreLevel(Integer scoreLevel, Integer pageNo, Integer pageSize) { + //请求url + String url = evaluationProperties.getDomain() + "/common/evaluations/pageByTargetId"; + + //封装请求参数 + Map parameterMap = new HashMap<>(); + parameterMap.put("pageNo", pageNo); + parameterMap.put("pageSize", pageSize); + parameterMap.put("targetTypeId", evaluationProperties.getServeProvider().getTargetTypeId()); + parameterMap.put("targetId", UserContext.currentUserId()); + parameterMap.put("sortBy", 1); //固定按评价时间排序 + + if (ObjectUtil.isNotEmpty(scoreLevel)) { + parameterMap.put("scoreLevel", scoreLevel); + } + + //向评价系统发送http请求 + String jsonResult = evaluationHttpClient.get(UserContext.currentUser(), url, parameterMap); + + //解析响应数据 + List list = JSONUtil.parseObj(jsonResult).getJSONObject("data").getJSONArray("list").toList(EvaluationAndOrdersResDTO.class); + if (CollUtil.isEmpty(list)) { + return list; + } + + //筛选出订单id,批量查询订单详情 + List orderIds = list.stream().map(e -> Long.valueOf(e.getRelationId())).distinct().collect(Collectors.toList()); + List orderResDTOList = ordersApi.queryByIds(orderIds); + Map ordersMap = orderResDTOList.stream().collect(Collectors.toMap(OrderResDTO::getId, o -> o)); + + //组装订单数据 + list.forEach(e -> { + Long ordersId = Long.valueOf(e.getRelationId()); + e.setServeStartTime(ordersMap.get(ordersId).getServeStartTime()); + e.setServeAddress(ordersMap.get(ordersId).getServeAddress()); + e.setServeItemImg(ordersMap.get(ordersId).getServeItemImg()); + }); + return list; + } + + /** + * 根据订单id列表查询师傅评分 + * + * @param orderIds 订单id列表 + * @return 评分 + */ + @Override + public Map queryServeProviderScoreByOrdersId(List orderIds) { + //请求url + String url = evaluationProperties.getDomain() + "/admin/evaluations/findScoreByRelationIds"; + + //封装请求参数 + Map parameterMap = new HashMap<>(); + parameterMap.put("targetTypeId", evaluationProperties.getServeProvider().getTargetTypeId()); + List ordersIdStr = orderIds.stream().map(String::valueOf).collect(Collectors.toList()); + parameterMap.put("relationIds", String.join(",", ordersIdStr)); + + //向评价系统发送http请求 + CurrentUserInfo currentUserInfo = new CurrentUserInfo(1L, "", "", UserType.OPERATION); + String jsonResult = evaluationHttpClient.get(currentUserInfo, url, parameterMap); + + List scoreList = JSONUtil.parseObj(jsonResult).getJSONArray("data").toList(RelationScoreDTO.class); + //解析响应数据 + + return scoreList.stream().collect(Collectors.toMap(RelationScoreDTO::getRelationId, RelationScoreDTO::getScore)); + } + + /** + * 获取评价系统信息 + * + * @return 评价系统信息 + */ + @Override + public EvaluationTokenDto getEvaluationInfo() { + return new EvaluationTokenDto(evaluationHttpClient.generateToken(UserContext.currentUser())); + } + + /** + * 根据对象类型和订单id查询评价 + * + * @param targetTypeId 对象类型id + * @param ordersId 订单id + * @return 评价 + */ + @Override + public EvaluationResDTO queryByTargetTypeIdAndOrdersId(CurrentUserInfo currentUserInfo, String targetTypeId, Long ordersId) { + //请求url + String url = evaluationProperties.getDomain() + "/common/evaluations/findByRelationId"; + + //封装请求参数 + Map parameterMap = new HashMap<>(); + parameterMap.put("targetTypeId", targetTypeId); + parameterMap.put("relationId", ordersId.toString()); + + //向评价系统发送http请求 + String jsonResult = evaluationHttpClient.get(currentUserInfo, url, parameterMap); + + //解析响应数据 + JSONObject jsonObject = JSONUtil.parseObj(jsonResult).getJSONObject("data"); + if (null == jsonObject) { + return null; + } + return jsonObject.toBean(EvaluationResDTO.class); + } + + /** + * 根据对象类型id查询评价配置信息 + * + * @return 评价配置信息 + */ + private EvaluationSystemInfoResDTO findSystemInfo(String targetTypeId, CurrentUserInfo currentUserInfo) { + //请求url + String url = evaluationProperties.getDomain() + "/common/systems/info"; + + //封装请求参数 + Map parameterMap = new HashMap<>(); + parameterMap.put("targetTypeId", targetTypeId); + + //向评价系统发送http请求 + String jsonResult = evaluationHttpClient.get(currentUserInfo, url, parameterMap); + + //解析响应数据 + JSONObject jsonObject = JSONUtil.parseObj(jsonResult).getJSONObject("data"); + if (null == jsonObject) { + throw new ForbiddenOperationException("查询不到配置信息"); + } + return jsonObject.toBean(EvaluationSystemInfoResDTO.class); + } + + /** + * 查询所有的评价配置信息 + * + * @return 评价配置信息 + */ + @Override + @Cacheable(value = "JZ_CACHE", key = "'ALL_EVALUATION_CONFIG'", cacheManager = "cacheManagerOneDay") + public AllEvaluationSystemInfoResDTO findAllSystemInfo(CurrentUserInfo currentUserInfo) { + //查询服务项配置信息 + EvaluationSystemInfoResDTO serveItemSystemInfo = findSystemInfo(evaluationProperties.getServeItem().getTargetTypeId(), currentUserInfo); + + //查询师傅配置信息 + EvaluationSystemInfoResDTO serveProviderSystemInfo = findSystemInfo(evaluationProperties.getServeProvider().getTargetTypeId(), currentUserInfo); + if (null == serveItemSystemInfo || null == serveProviderSystemInfo) { + throw new ForbiddenOperationException("查询不到配置信息"); + } + return new AllEvaluationSystemInfoResDTO(serveItemSystemInfo, serveProviderSystemInfo); + } + + /** + * 自动评价 + * + * @param evaluationSubmitReqDTO 评价信息 + */ + @Override + public void autoEvaluate(EvaluationSubmitReqDTO evaluationSubmitReqDTO) { + //1.查询当前用户信息 + CommonUser commonUser = commonUserService.getById(evaluationSubmitReqDTO.getUserId()); + CurrentUserInfo currentUserInfo = new CurrentUserInfo(commonUser.getId(), commonUser.getNickname(), commonUser.getAvatar(), UserType.C_USER); + + //2.获取配置信息 + AllEvaluationSystemInfoResDTO allSystemInfo = findAllSystemInfo(currentUserInfo); + + //3.封装服务项默认评分数据 + List serveItemScoreConfigList = allSystemInfo.getServeItemEvaluationSystemInfo().getEvaluationConfig().getScoreConfigList(); + List serveItemScoreList = serveItemScoreConfigList.stream() + .filter(EvaluationSystemInfoResDTO.ScoreConfig::getEnabled) + .map(s -> ScoreItem.defaultScoreItem(s.getItemId(), s.getItemName())) + .collect(Collectors.toList()); + + //4.封装师傅默认评分数据 + List serveProviderScoreConfigList = allSystemInfo.getServeProviderEvaluationSystemInfo().getEvaluationConfig().getScoreConfigList(); + List serveProviderScoreList = serveProviderScoreConfigList.stream() + .filter(EvaluationSystemInfoResDTO.ScoreConfig::getEnabled) + .map(s -> ScoreItem.defaultScoreItem(s.getItemId(), s.getItemName())) + .collect(Collectors.toList()); + + + //5.封装默认评价内容、默认评分、默认匿名信息 + evaluationSubmitReqDTO.setServeItemEvaluationContent(DEFAULT_EVALUATION); + evaluationSubmitReqDTO.setServeItemScoreItems(ArrayUtil.toArray(serveItemScoreList, ScoreItem.class)); + evaluationSubmitReqDTO.setServeProviderEvaluationContent(DEFAULT_EVALUATION); + evaluationSubmitReqDTO.setServeProviderScoreItems(ArrayUtil.toArray(serveProviderScoreList, ScoreItem.class)); + evaluationSubmitReqDTO.setIsAnonymous(DEFAULT_ANONYMOUS_STATUS); + + //6.发送服务项评价 + EvaluationResDTO serveItemEvaluationResDTO = queryByTargetTypeIdAndOrdersId(currentUserInfo, evaluationProperties.getServeItem().getTargetTypeId(), evaluationSubmitReqDTO.getOrdersId()); + //针对该订单如果没有发表过该服务的评价才进行提交数据 + if (null == serveItemEvaluationResDTO) { + requestSubmitServeItemEvaluation(evaluationSubmitReqDTO, currentUserInfo); + } + + //7.发送服务人员/机构评价 + EvaluationResDTO serveProviderEvaluationResDTO = queryByTargetTypeIdAndOrdersId(currentUserInfo, evaluationProperties.getServeProvider().getTargetTypeId(), evaluationSubmitReqDTO.getOrdersId()); + //针对该订单如果没有发表过该师傅的评价才进行提交数据 + if (null == serveProviderEvaluationResDTO) { + requestSubmitServeProviderEvaluation(evaluationSubmitReqDTO, currentUserInfo); + } + } +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/service/impl/ILoginServiceImpl.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/service/impl/ILoginServiceImpl.java new file mode 100644 index 0000000..3c073a0 --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/service/impl/ILoginServiceImpl.java @@ -0,0 +1,133 @@ +package com.jzo2o.customer.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.RandomUtil; +import com.jzo2o.api.publics.SmsCodeApi; +import com.jzo2o.api.publics.WechatApi; +import com.jzo2o.api.publics.dto.response.OpenIdResDTO; +import com.jzo2o.common.constants.CommonStatusConstants; +import com.jzo2o.common.constants.ErrorInfo; +import com.jzo2o.common.constants.UserType; +import com.jzo2o.common.enums.SmsBusinessTypeEnum; +import com.jzo2o.common.expcetions.BadRequestException; +import com.jzo2o.common.expcetions.CommonException; +import com.jzo2o.common.utils.JwtTool; +import com.jzo2o.common.utils.StringUtils; +import com.jzo2o.customer.model.domain.CommonUser; +import com.jzo2o.customer.model.domain.ServeProvider; +import com.jzo2o.customer.model.dto.request.LoginForCustomerReqDTO; +import com.jzo2o.customer.model.dto.request.LoginForWorkReqDTO; +import com.jzo2o.customer.model.dto.response.LoginResDTO; +import com.jzo2o.customer.service.ICommonUserService; +import com.jzo2o.customer.service.ILoginService; +import com.jzo2o.customer.service.IServeProviderService; +import org.springframework.security.crypto.password.PasswordEncoder; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; + +@Service +public class ILoginServiceImpl implements ILoginService { + + @Resource + private ICommonUserService commonUserService; + + @Resource + private JwtTool jwtTool; + + @Resource + private PasswordEncoder passwordEncoder; + + @Resource + private IServeProviderService serveProviderService; + @Resource + private WechatApi wechatApi; + @Resource + private SmsCodeApi smsCodeApi; + + + + @Override + public LoginResDTO loginForPassword(LoginForWorkReqDTO loginForWorkReqDTO) { + // 1.数据校验 + if(StringUtils.isEmpty(loginForWorkReqDTO.getPassword())) { + throw new BadRequestException("请输入密码"); + } + + // 2.登录校验 + // 2.1.根据手机号和用户类型获取服务人员或机构信息 + ServeProvider serveProvider = serveProviderService.findByPhoneAndType(loginForWorkReqDTO.getPhone(), loginForWorkReqDTO.getUserType()); + // 账号禁用校验 + if(serveProvider != null && CommonStatusConstants.USER_STATUS_FREEZE == serveProvider.getStatus()) { + throw new CommonException(ErrorInfo.Code.ACCOUNT_FREEZED, serveProvider.getAccountLockReason()); + } + //密码校验 + if(serveProvider == null || !passwordEncoder.matches(loginForWorkReqDTO.getPassword(), serveProvider.getPassword())){ + throw new BadRequestException("账号或密码错误,请重新输入"); + } + + + // 3.生成登录token + String token = jwtTool.createToken(serveProvider.getId(), serveProvider.getName(), serveProvider.getAvatar(), loginForWorkReqDTO.getUserType()); + return new LoginResDTO(token); + + } + + @Override + public LoginResDTO loginForVerify(LoginForWorkReqDTO loginForWorkReqDTO) { + + // 数据校验 + if(StringUtils.isEmpty(loginForWorkReqDTO.getVerifyCode())){ + throw new BadRequestException("验证码错误,请重新获取"); + } + //远程调用publics服务校验验证码是否正确 + boolean verifyResult = smsCodeApi.verify(loginForWorkReqDTO.getPhone(), SmsBusinessTypeEnum.SERVE_STAFF_LOGIN, loginForWorkReqDTO.getVerifyCode()).getIsSuccess(); + if(!verifyResult) { + throw new BadRequestException("验证码错误,请重新获取"); + } + // 登录校验 + // 根据手机号和用户类型获取服务人员或机构信息 + ServeProvider serveProvider = serveProviderService.findByPhoneAndType(loginForWorkReqDTO.getPhone(), loginForWorkReqDTO.getUserType()); + // 账号禁用校验 + if(serveProvider != null && CommonStatusConstants.USER_STATUS_FREEZE == serveProvider.getStatus()) { + throw new CommonException(ErrorInfo.Code.ACCOUNT_FREEZED, serveProvider.getAccountLockReason()); + } + // 自动注册 + if(serveProvider == null) { + serveProvider = serveProviderService.add(loginForWorkReqDTO.getPhone(), UserType.WORKER, null); + } + + // 生成登录token + String token = jwtTool.createToken(serveProvider.getId(), serveProvider.getName(), serveProvider.getAvatar(), loginForWorkReqDTO.getUserType()); + return new LoginResDTO(token); + } + + @Override + public LoginResDTO loginForCommonUser(LoginForCustomerReqDTO loginForCustomerReqDTO) { + // code换openId + OpenIdResDTO openIdResDTO = wechatApi.getOpenId(loginForCustomerReqDTO.getCode()); + if(ObjectUtil.isEmpty(openIdResDTO) || ObjectUtil.isEmpty(openIdResDTO.getOpenId())){ + // openid申请失败 + throw new CommonException(ErrorInfo.Code.LOGIN_TIMEOUT, ErrorInfo.Msg.REQUEST_FAILD); + } + CommonUser commonUser = commonUserService.findByOpenId(openIdResDTO.getOpenId()); + //如果未从数据库查到,需要新增数据 + if (ObjectUtil.isEmpty(commonUser)) { + commonUser = BeanUtil.toBean(loginForCustomerReqDTO, CommonUser.class); + long snowflakeNextId = IdUtil.getSnowflakeNextId(); + commonUser.setId(snowflakeNextId); + commonUser.setOpenId(openIdResDTO.getOpenId()); + commonUser.setNickname("普通用户"+ RandomUtil.randomInt(10000,99999)); + commonUserService.save(commonUser); + }else if(CommonStatusConstants.USER_STATUS_FREEZE == commonUser.getStatus()) { + // 被冻结 + throw new CommonException(ErrorInfo.Code.ACCOUNT_FREEZED, commonUser.getAccountLockReason()); + } + + //构建token + String token = jwtTool.createToken(commonUser.getId(), commonUser.getNickname(), commonUser.getAvatar(), UserType.C_USER); + return new LoginResDTO(token); + } +} \ No newline at end of file diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/service/impl/InstitutionStaffServiceImpl.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/service/impl/InstitutionStaffServiceImpl.java new file mode 100644 index 0000000..dae7fb5 --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/service/impl/InstitutionStaffServiceImpl.java @@ -0,0 +1,151 @@ +package com.jzo2o.customer.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.ObjectUtil; +import com.jzo2o.api.customer.dto.request.InstitutionStaffAddReqDTO; +import com.jzo2o.api.customer.dto.request.InstitutionStaffPageQueryReqDTO; +import com.jzo2o.api.customer.dto.response.InstitutionStaffResDTO; +import com.jzo2o.api.orders.OrdersServeApi; +import com.jzo2o.api.orders.dto.response.InstitutionStaffServeCountResDTO; +import com.jzo2o.common.expcetions.ForbiddenOperationException; +import com.jzo2o.common.model.PageResult; +import com.jzo2o.common.utils.BeanUtils; +import com.jzo2o.customer.mapper.InstitutionStaffMapper; +import com.jzo2o.customer.model.domain.InstitutionStaff; +import com.jzo2o.customer.model.dto.request.InstitutionStaffUpsertReqDTO; +import com.jzo2o.customer.model.dto.response.InstitutionStaffSimpleResDTO; +import com.jzo2o.customer.service.IInstitutionStaffService; +import com.jzo2o.mvc.utils.UserContext; +import com.jzo2o.mysql.utils.PageUtils; +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.stereotype.Service; + +import javax.annotation.Resource; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +/** + *

+ * 机构下属服务人员 服务实现类 + *

+ * + * @author itcast + * @since 2023-07-18 + */ +@Service +public class InstitutionStaffServiceImpl extends ServiceImpl implements IInstitutionStaffService { + @Resource + private OrdersServeApi ordersServeApi; + + /** + * 新增机构下属服务人员 + * + * @param institutionStaffUpsertReqDTO 插入更新机构下属服务人员 + */ + @Override + public void add(InstitutionStaffUpsertReqDTO institutionStaffUpsertReqDTO) { + InstitutionStaff institutionStaff = BeanUtil.toBean(institutionStaffUpsertReqDTO, InstitutionStaff.class); + institutionStaff.setCertificationImgs(institutionStaffUpsertReqDTO.getCertificationImgs()); + institutionStaff.setInstitutionId(UserContext.currentUserId()); + institutionStaff.setCode(IdUtil.getSnowflakeNextIdStr()); + baseMapper.insert(institutionStaff); + } + + @Override + public void add(InstitutionStaffAddReqDTO institutionStaffAddReqDTO) { + InstitutionStaff institutionStaff = BeanUtil.toBean(institutionStaffAddReqDTO, InstitutionStaff.class); + institutionStaff.setCode(IdUtil.getSnowflakeNextIdStr()); + baseMapper.insert(institutionStaff); + } + + /** + * 更新机构下属服务人员 + * + * @param id 机构下属服务人员id + * @param institutionStaffUpsertReqDTO 插入更新机构下属服务人员 + */ + @Override + public void update(Long id, InstitutionStaffUpsertReqDTO institutionStaffUpsertReqDTO) { + InstitutionStaff institutionStaff = BeanUtil.toBean(institutionStaffUpsertReqDTO, InstitutionStaff.class); + institutionStaff.setCertificationImgs(institutionStaffUpsertReqDTO.getCertificationImgs()); + institutionStaff.setInstitutionId(UserContext.currentUserId()); + institutionStaff.setId(id); + baseMapper.updateById(institutionStaff); + } + + /** + * 分页查询 + * + * @param institutionStaffPageQueryReqDTO 分页查询请求 + * @return 分页结果 + */ + @Override + public PageResult pageQuery(InstitutionStaffPageQueryReqDTO institutionStaffPageQueryReqDTO) { + Page page = PageUtils.parsePageQuery(institutionStaffPageQueryReqDTO, InstitutionStaff.class); + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery() + .eq(InstitutionStaff::getInstitutionId, institutionStaffPageQueryReqDTO.getInstitutionId()) + .eq(ObjectUtil.isNotEmpty(institutionStaffPageQueryReqDTO.getName()), InstitutionStaff::getName, institutionStaffPageQueryReqDTO.getName()) + .eq(ObjectUtil.isNotEmpty(institutionStaffPageQueryReqDTO.getPhone()), InstitutionStaff::getPhone, institutionStaffPageQueryReqDTO.getPhone()); + Page serveTypePage = baseMapper.selectPage(page, queryWrapper); + + return PageUtils.toPage(serveTypePage, InstitutionStaffResDTO.class, (entity, dto) -> { + if (ObjectUtil.isNotEmpty(entity.getCertificationImgs())) { + dto.setCertificationImgs(entity.getCertificationImgs()); + } else { + dto.setCertificationImgs(Collections.emptyList()); + } + }); + } + + /** + * 获取机构下属服务人员简略列表 + * + * @return 服务人员简略列表 + */ + @Override + public List queryInstitutionStaffList() { + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery() + .eq(InstitutionStaff::getInstitutionId, UserContext.currentUserId()) + .orderByDesc(InstitutionStaff::getCreateTime); + return BeanUtil.copyToList(baseMapper.selectList(queryWrapper), InstitutionStaffSimpleResDTO.class); + } + + /** + * 删除服务人员 + * + * @param id 服务人员id + */ + @Override + public void delete(Long id) { + //校验服务人员是否有关联服务单 + InstitutionStaffServeCountResDTO institutionStaffServeCountResDTO = ordersServeApi.countByInstitutionStaffId(id); + if (institutionStaffServeCountResDTO.getCount() > 0) { + throw new ForbiddenOperationException("该服务人员有关联的服务,不可删除"); + } + + //删除机构下服务人员 + baseMapper.deleteById(id); + } + + @Override + public InstitutionStaffResDTO findByIdAndInstitutionId(Long id, Long institutionId) { + InstitutionStaff institutionStaff = lambdaQuery().eq(InstitutionStaff::getId, id) + .eq(InstitutionStaff::getInstitutionId, institutionId) + .one(); + return BeanUtils.toBean(institutionStaff, InstitutionStaffResDTO.class); + } + + @Override + public List findByInstitutionId(Long institutionId) { + + List list = lambdaQuery() + .eq(InstitutionStaff::getInstitutionId, institutionId) + .list(); + return BeanUtils.copyToList(list, InstitutionStaffResDTO.class); + } +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/service/impl/ServeProviderServiceImpl.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/service/impl/ServeProviderServiceImpl.java new file mode 100644 index 0000000..2503e9d --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/service/impl/ServeProviderServiceImpl.java @@ -0,0 +1,276 @@ +package com.jzo2o.customer.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.jzo2o.api.customer.dto.request.ServerProviderUpdateStatusReqDTO; +import com.jzo2o.api.customer.dto.response.ServeProviderResDTO; +import com.jzo2o.api.customer.dto.response.ServeProviderSimpleResDTO; +import com.jzo2o.api.publics.SmsCodeApi; +import com.jzo2o.common.constants.CommonStatusConstants; +import com.jzo2o.common.constants.UserType; +import com.jzo2o.common.enums.EnableStatusEnum; +import com.jzo2o.common.enums.SmsBussinessTypeEnum; +import com.jzo2o.common.expcetions.BadRequestException; +import com.jzo2o.common.model.PageResult; +import com.jzo2o.common.utils.BeanUtils; +import com.jzo2o.common.utils.CollUtils; +import com.jzo2o.common.utils.IdUtils; +import com.jzo2o.common.utils.ObjectUtils; +import com.jzo2o.common.utils.*; +import com.jzo2o.customer.mapper.ServeProviderMapper; +import com.jzo2o.customer.model.domain.*; +import com.jzo2o.customer.model.dto.ServeSkillSimpleDTO; +import com.jzo2o.customer.model.dto.request.InstitutionRegisterReqDTO; +import com.jzo2o.customer.model.dto.request.InstitutionResetPasswordReqDTO; +import com.jzo2o.customer.model.dto.request.ServePickUpReqDTO; +import com.jzo2o.customer.model.dto.request.ServeProviderPageQueryReqDTO; +import com.jzo2o.customer.model.dto.response.CertificationStatusDTO; +import com.jzo2o.customer.model.dto.response.ServeProviderBasicInformationResDTO; +import com.jzo2o.customer.model.dto.response.ServeProviderInfoResDTO; +import com.jzo2o.customer.model.dto.response.ServeProviderListResDTO; +import com.jzo2o.customer.service.*; +import com.jzo2o.mvc.utils.UserContext; +import com.jzo2o.mysql.utils.PageHelperUtils; +import org.springframework.security.crypto.password.PasswordEncoder; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + +/** + *

+ * 服务人员/机构表 服务实现类 + *

+ * + * @author itcast + * @since 2023-07-17 + */ +@Service +public class ServeProviderServiceImpl extends ServiceImpl implements IServeProviderService { + + @Resource + private PasswordEncoder passwordEncoder; + + @Resource + private IServeProviderSettingsService serveProviderSettingsService; + + @Resource + private IServeProviderSyncService serveProviderSyncService; + @Resource + private IAgencyCertificationService agencyCertificationService; + @Resource + private IWorkerCertificationService workerCertificationService; + + @Resource + private IServeProviderService owner; + @Resource + private SmsCodeApi smsCodeApi; + + @Override + public PageResult pageQueryWorker(ServeProviderPageQueryReqDTO serveProviderPageQueryReqDTO) { + return PageHelperUtils.selectPage(serveProviderPageQueryReqDTO, () -> baseMapper.queryWorkerList(serveProviderPageQueryReqDTO)); + } + + @Override + public PageResult pageQueryAgency(ServeProviderPageQueryReqDTO serveProviderPageQueryReqDTO) { + return PageHelperUtils.selectPage(serveProviderPageQueryReqDTO, () -> baseMapper.queryAgencyList(serveProviderPageQueryReqDTO)); + } + + /** + * 更新服务人员/机构状态 + * + * @param serverProviderUpdateStatusReqDTO 服务人员/机构更新状态请求 + */ + @Override + @Transactional + public void updateStatus(ServerProviderUpdateStatusReqDTO serverProviderUpdateStatusReqDTO) { + ServeProvider serveProvider = BeanUtil.toBean(serverProviderUpdateStatusReqDTO, ServeProvider.class); + baseMapper.updateById(serveProvider); + + // 3.同步es + ServeProviderSync serveProviderSync = ServeProviderSync.builder().id(serverProviderUpdateStatusReqDTO.getId()) + .status(serverProviderUpdateStatusReqDTO.getStatus()) + .build(); + serveProviderSyncService.updateById(serveProviderSync); + + //如果更新为冻结状态,且服务人员/机构为开启接单状态,则需要设置为休息状态 + ServeProviderSettings serveProviderSettings = serveProviderSettingsService.getById(serverProviderUpdateStatusReqDTO.getId()); + Integer canPickUp = serveProviderSettings.getCanPickUp(); + if (ObjectUtils.equal(canPickUp, 1) && ObjectUtils.equal(serverProviderUpdateStatusReqDTO.getStatus(), 1)) { + serveProviderSettingsService.setPickUp(serverProviderUpdateStatusReqDTO.getId(), 0); + } + } + + @Override + public ServeProvider findByPhoneAndType(String phone, Integer type) { + return lambdaQuery().eq(ServeProvider::getPhone, phone) + .eq(ServeProvider::getType, type).one(); + } + + @Override + public ServeProvider findById(Long id) { + return baseMapper.selectById(id); + } + + + @Override + @Transactional(rollbackFor = Exception.class) + public ServeProvider add(String phone, Integer type, String password) { + // 校验手机号是否存在 + ServeProvider existServeProvider = lambdaQuery().eq(ServeProvider::getPhone, phone) + .one(); + if (existServeProvider != null) { + if(existServeProvider.getType().equals(UserType.WORKER)){ + throw new BadRequestException("该账号已被服务人员注册"); + }else { + throw new BadRequestException("该账号已被机构注册"); + } + } + + //新增服务人员/机构信息 + ServeProvider serveProvider = new ServeProvider(); + serveProvider.setPhone(phone); + serveProvider.setPassword(password); + serveProvider.setType(type); + serveProvider.setStatus(CommonStatusConstants.USER_STATUS_NORMAL); + serveProvider.setCode(IdUtils.getSnowflakeNextIdStr()); + baseMapper.insert(serveProvider); + + //新增服务人员/机构配置信息同步表信息,方便后期对配置项进行配置 + serveProviderSettingsService.add(serveProvider.getId(), type); + + return serveProvider; + } + + @Override + public ServeProviderResDTO findServeProviderInfo(Long id) { + ServeProvider serveProvider = this.findById(id); + ServeProviderResDTO serveProviderResDTO = BeanUtils.toBean(serveProvider, ServeProviderResDTO.class); + + ServeProviderSettings serveProviderSettings = serveProviderSettingsService.findById(id); + // location + serveProviderResDTO.setLat(serveProviderSettings.getLat()); + serveProviderResDTO.setLon(serveProviderSettings.getLon()); + // cityCode + serveProviderResDTO.setCityCode(serveProviderSettings.getCityCode()); + // 是否开启接单 + serveProviderResDTO.setCanPickUp(EnableStatusEnum.ENABLE.equals(serveProviderSettings.getCanPickUp())); + + //获取认证状态 + CertificationStatusDTO certificationStatusDTO = getCertificationStatus(serveProvider.getType(), id); + //获取认证状态 + Integer certificationStatus = ObjectUtils.get(certificationStatusDTO,CertificationStatusDTO::getCertificationStatus); + serveProviderResDTO.setVerifyStatus(certificationStatus); + + return serveProviderResDTO; + } + + /** + * 根据id更新名称 + * + * @param id 服务人员/机构id + * @param name 名称 + */ + @Override + public void updateNameById(Long id, String name) { + LambdaUpdateWrapper updateWrapper = Wrappers.lambdaUpdate() + .eq(ServeProvider::getId, id) + .set(ServeProvider::getName, name); + super.update(updateWrapper); + } + + /** + * 获取服务人员或机构的信息状态 + * @param userType + * @param providerId + * @return + */ + @Override + public CertificationStatusDTO getCertificationStatus(Integer userType, Long providerId){ + + if (ObjectUtil.equal(UserType.WORKER, userType)) { + WorkerCertification workerCertification = workerCertificationService.getById(providerId); + return BeanUtil.toBean(workerCertification,CertificationStatusDTO.class); + } else { + AgencyCertification agencyCertification = agencyCertificationService.getById(providerId); + return BeanUtil.toBean(agencyCertification,CertificationStatusDTO.class); + } + } + + /** + * 根据服务人员/机构id查询基本信息 + * + * @param id 服务人员/机构id + * @return 基本信息 + */ + @Override + public ServeProviderBasicInformationResDTO findBasicInformationById(Long id) { + ServeProviderBasicInformationResDTO serveProviderBasicInformationResDTO = baseMapper.findBasicInformationById(id); + + //获取认证状态 + CertificationStatusDTO certificationStatus = getCertificationStatus(serveProviderBasicInformationResDTO.getType(), id); + //获取认证时间 + LocalDateTime certificationTime = ObjectUtils.get(certificationStatus,CertificationStatusDTO::getCertificationTime); + serveProviderBasicInformationResDTO.setCertificationTime(certificationTime); + + //如果没有服务技能,直接返回 + List serveSkillSimpleList = serveProviderBasicInformationResDTO.getServeSkillSimpleList(); + if (CollUtil.isEmpty(serveSkillSimpleList)) { + return serveProviderBasicInformationResDTO; + } + + //处理服务类型、服务项名称,去重之后以顿号分割 + List serveTypeNameList = serveSkillSimpleList.stream().map(ServeSkillSimpleDTO::getServeTypeName).filter(Objects::nonNull).distinct().collect(Collectors.toList()); + List serveItemNameList = serveSkillSimpleList.stream().map(ServeSkillSimpleDTO::getServeItemName).filter(Objects::nonNull).distinct().collect(Collectors.toList()); + serveProviderBasicInformationResDTO.setServeTypes(String.join("、", serveTypeNameList)); + serveProviderBasicInformationResDTO.setServeSkills(String.join("、", serveItemNameList)); + return serveProviderBasicInformationResDTO; + } + + /** + * 根据id更新评分数据 + * + * @param id 服务人员/机构id + * @param score 综合分数 + * @param goodLevelRate 好评率 + */ + @Override + public void updateScoreById(Long id, Double score, String goodLevelRate) { + LambdaUpdateWrapper updateWrapper = Wrappers.lambdaUpdate() + .eq(ServeProvider::getId, id) + .set(null != score, ServeProvider::getScore, score) + .set(null != goodLevelRate, ServeProvider::getGoodLevelRate, goodLevelRate); + super.update(updateWrapper); + // 同步评分 + serveProviderSyncService.updateScore(id, NumberUtils.null2Zero(score)); + } + @Override + public List batchGet(List ids) { + + List serveProviders = baseMapper.selectBatchIds(ids); + if(CollUtils.isEmpty(serveProviders)) { + return new ArrayList<>(); + } + return BeanUtils.copyToList(serveProviders, ServeProviderSimpleResDTO.class); + } + + /** + * 获取当前用户信息 + * + * @return 用户信息 + */ + @Override + public ServeProviderInfoResDTO currentUserInfo() { + ServeProvider serveProvider = baseMapper.selectById(UserContext.currentUserId()); + return BeanUtils.toBean(serveProvider,ServeProviderInfoResDTO.class); + } +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/service/impl/ServeProviderSettingsServiceImpl.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/service/impl/ServeProviderSettingsServiceImpl.java new file mode 100644 index 0000000..cf6ab8c --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/service/impl/ServeProviderSettingsServiceImpl.java @@ -0,0 +1,218 @@ +package com.jzo2o.customer.service.impl; + +import com.jzo2o.common.constants.UserType; +import com.jzo2o.common.enums.EnableStatusEnum; +import com.jzo2o.common.expcetions.DBException; +import com.jzo2o.common.utils.*; +import com.jzo2o.customer.model.domain.*; +import com.jzo2o.customer.mapper.ServeProviderSettingsMapper; +import com.jzo2o.customer.model.dto.request.ServePickUpReqDTO; +import com.jzo2o.customer.model.dto.request.ServeScopeSetReqDTO; +import com.jzo2o.customer.model.dto.response.CertificationStatusDTO; +import com.jzo2o.customer.model.dto.response.ServeProviderSettingsGetResDTO; +import com.jzo2o.customer.model.dto.response.ServeSettingsStatusResDTO; +import com.jzo2o.customer.service.*; +import com.jzo2o.mvc.utils.UserContext; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + *

+ * 服务人员/机构附属信息 服务实现类 + *

+ * + * @author itcast + * @since 2023-07-20 + */ +@Service +public class ServeProviderSettingsServiceImpl extends ServiceImpl implements IServeProviderSettingsService { + + @Resource + private IServeProviderService serveProviderService; + + @Resource + private IServeProviderSyncService serveProviderSyncService; + + + + @Override + @Transactional(rollbackFor = {Exception.class}) + public void add(Long id, Integer serveProviderType) { + ServeProviderSettings serveProviderSettings = new ServeProviderSettings(); + serveProviderSettings.setId(id); + if(baseMapper.insert(serveProviderSettings) <= 0 || serveProviderSyncService.add(id, serveProviderType) <= 0){ + throw new DBException("请求失败"); + } + } + + @Override + @Transactional(rollbackFor = {Exception.class}) + public void setServeScope(ServeScopeSetReqDTO serveScopeSetReqDTO) { + String[] latAndLon = serveScopeSetReqDTO.getLocation().split(","); + // 经度 + double lon = NumberUtils.parseDouble(latAndLon[0]); + // 纬度 + double lat = NumberUtils.parseDouble(latAndLon[1]); + // 1.更新服务范围 + ServeProviderSettings serveProviderSettings = BeanUtils.copyBean(serveScopeSetReqDTO, ServeProviderSettings.class); + serveProviderSettings.setId(UserContext.currentUserId()); + serveProviderSettings.setLat(lat); + serveProviderSettings.setLon(lon); + baseMapper.updateById(serveProviderSettings); + +// // 2.初次设置完成配置校验 +// serveProviderService.settingStatus(UserContext.currentUserId()); + + // 3.同步服务信息 + // 经纬度 + ServeProviderSync serveProviderSync = ServeProviderSync.builder() + .id(UserContext.currentUserId()) + .cityCode(serveScopeSetReqDTO.getCityCode()) + .lon(lon) + .lat(lat) + .build(); + serveProviderSyncService.updateById(serveProviderSync); + } + + @Override + public ServeProviderSettingsGetResDTO getServeScope() { + Long currentUserId = UserContext.currentUserId(); + ServeProviderSettings serveProviderSettings = baseMapper.selectById(currentUserId); + if(serveProviderSettings == null) { + return new ServeProviderSettingsGetResDTO(); + } + ServeProviderSettingsGetResDTO serveScopeResDTO = BeanUtils.toBean(serveProviderSettings, ServeProviderSettingsGetResDTO.class); + if(ObjectUtils.isNotNull(serveProviderSettings.getLon())) { + serveScopeResDTO.setLocation(serveProviderSettings.getLon() + "," + serveProviderSettings.getLat()); + } + + return serveScopeResDTO; + } + + @Override + @Transactional(rollbackFor = {Exception.class}) + public void setPickUp(ServePickUpReqDTO servePickUpReqDTO) { + // 1.更新接单信息 + ServeProviderSettings serveProviderSettings = new ServeProviderSettings(); + serveProviderSettings.setId(UserContext.currentUserId()); + serveProviderSettings.setCanPickUp(servePickUpReqDTO.getCanPickUp()); + baseMapper.updateById(serveProviderSettings); +// // 2.初次设置完成配置校验 +// serveProviderService.settingStatus(UserContext.currentUserId()); + // 3.同步es + ServeProviderSync serveProviderSync = ServeProviderSync.builder().id(UserContext.currentUserId()) + .pickUp(servePickUpReqDTO.getCanPickUp()) + .build(); + serveProviderSyncService.updateById(serveProviderSync); + + } + + @Override + @Transactional(rollbackFor = {Exception.class}) + public void setPickUp(Long id, Integer canPickUp) { + // 1.更新接单信息 + ServeProviderSettings serveProviderSettings = new ServeProviderSettings(); + serveProviderSettings.setId(id); + serveProviderSettings.setCanPickUp(canPickUp); + baseMapper.updateById(serveProviderSettings); +// // 2.初次设置完成配置校验 +// serveProviderService.settingStatus(UserContext.currentUserId()); + // 3.同步es + ServeProviderSync serveProviderSync = ServeProviderSync.builder().id(id) + .pickUp(canPickUp) + .build(); + serveProviderSyncService.updateById(serveProviderSync); + } + + //返回的设置状态在前端需要使用 + @Override + public ServeSettingsStatusResDTO getSettingStatus() { + + + //当前用户id + long currentUserId = UserContext.currentUserId(); + + //服务人员或机构的配置信息 + ServeProviderSettings serveProviderSettings = this.baseMapper.selectById(currentUserId); + //服务人员或机构信息 + ServeProvider serveProvider = serveProviderService.findById(currentUserId); + //是否开启接单 + boolean canPickUp = EnableStatusEnum.ENABLE.equals(serveProviderSettings.getCanPickUp()); + //是否设置服务范围 + boolean serveScopeSetted = ObjectUtils.isNotEmpty(serveProviderSettings.getLon()) && + ObjectUtils.isNotEmpty(serveProviderSettings.getLat()) && + ObjectUtils.isNotEmpty(serveProviderSettings.getIntentionScope()) ; + //是否设置技能 + boolean serveSkillSetted = serveProviderSettings.getHaveSkill() > 0; + + //获取认证状态 + CertificationStatusDTO certificationStatusDTO = serveProviderService.getCertificationStatus(serveProvider.getType(), currentUserId); + //获取认证状态 + Integer certificationStatus = ObjectUtils.get(certificationStatusDTO,CertificationStatusDTO::getCertificationStatus); + //如果certificationStatus为空则初始状态为0 + if(ObjectUtils.isNull(certificationStatus)){ + certificationStatus = 0; + } + int settingsStatus = 0; + //认证通过,设置服务技能,设置服务范围 更新 首次设置状态为完成 + if(serveSkillSetted && serveScopeSetted && certificationStatus==2){ + settingsStatus = 1;//完成首次设置状态 + ServeProvider updateServeProvider = new ServeProvider(); + updateServeProvider.setSettingsStatus(settingsStatus); + updateServeProvider.setId(currentUserId); + serveProviderService.updateById(updateServeProvider); + //插入同步表 + ServeProviderSync serveProviderSync = + ServeProviderSync.builder() + .id(currentUserId) + .settingStatus(settingsStatus) + .build(); + serveProviderSyncService.updateById(serveProviderSync); + } + + + ServeSettingsStatusResDTO serveSettingsStatusResDTO = + ServeSettingsStatusResDTO.builder() + .certificationStatus(certificationStatus)//认证状态 + .settingsStatus(settingsStatus)//首先设置状态是否完成 + .serveSkillSetted(serveSkillSetted)//是否设置服务技能 + .serveScopeSetted(serveScopeSetted)//是否设置服务范围 + .canPickUp(canPickUp)//开启接单状态 + .build(); + + return serveSettingsStatusResDTO; + } + + @Override + public ServeProviderSettings findById(Long id) { + return baseMapper.selectById(id); + } + + @Override + @Transactional(rollbackFor = {Exception.class}) + public void setHaveSkill(Long currentUserId) { + lambdaUpdate().set(ServeProviderSettings::getHaveSkill, true) + .update(); + } + + @Override + public Map findManyCityCodeOfServeProvider(List ids) { + if(CollUtils.isEmpty(ids)) { + return new HashMap<>(); + } + List serveProviderSettings = baseMapper.batchQueryCityCodeByIds(ids); + return CollUtils.isEmpty(serveProviderSettings) ? new HashMap<>() : + serveProviderSettings.stream().collect(Collectors.toMap(ServeProviderSettings::getId,ServeProviderSettings::getCityCode)); + + } + + +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/service/impl/ServeProviderSyncServiceImpl.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/service/impl/ServeProviderSyncServiceImpl.java new file mode 100644 index 0000000..e53e003 --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/service/impl/ServeProviderSyncServiceImpl.java @@ -0,0 +1,40 @@ +package com.jzo2o.customer.service.impl; + +import com.jzo2o.customer.mapper.ServeProviderSyncMapper; +import com.jzo2o.customer.model.domain.ServeProviderSync; +import com.jzo2o.customer.service.IServeProviderSyncService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +/** + *

+ * 评分同步列表 服务实现类 + *

+ * + * @author itcast + * @since 2023-08-07 + */ +@Service +public class ServeProviderSyncServiceImpl extends ServiceImpl implements IServeProviderSyncService { + + @Override + @Transactional(rollbackFor = Exception.class) + public int add(Long id, Integer serveProviderType) { + ServeProviderSync serveProviderSync = new ServeProviderSync(); + serveProviderSync.setId(id); + serveProviderSync.setServeProviderType(serveProviderType); + serveProviderSync.setStatus(0);//默认0 + return baseMapper.insert(serveProviderSync); + } + + @Override + public void updateScore(Long id, Double evaluationScore) { + lambdaUpdate() + .set(ServeProviderSync::getEvaluationScore, evaluationScore) + .eq(ServeProviderSync::getId, id) + .update(); + } + + +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/service/impl/ServeSkillServiceImpl.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/service/impl/ServeSkillServiceImpl.java new file mode 100644 index 0000000..bc5c999 --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/service/impl/ServeSkillServiceImpl.java @@ -0,0 +1,201 @@ +package com.jzo2o.customer.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.jzo2o.api.foundations.ServeItemApi; +import com.jzo2o.api.foundations.ServeTypeApi; +import com.jzo2o.api.foundations.dto.response.ServeItemSimpleResDTO; +import com.jzo2o.api.foundations.dto.response.ServeTypeCategoryResDTO; +import com.jzo2o.api.foundations.dto.response.ServeTypeSimpleResDTO; +import com.jzo2o.common.model.CurrentUserInfo; +import com.jzo2o.common.utils.BeanUtils; +import com.jzo2o.common.utils.CollUtils; +import com.jzo2o.customer.mapper.ServeSkillMapper; +import com.jzo2o.customer.model.domain.ServeProviderSync; +import com.jzo2o.customer.model.domain.ServeSkill; +import com.jzo2o.customer.model.dto.request.ServeSkillAddReqDTO; +import com.jzo2o.customer.model.dto.response.ServeSkillCategoryResDTO; +import com.jzo2o.customer.model.dto.response.ServeSkillItemResDTO; +import com.jzo2o.customer.service.IServeProviderService; +import com.jzo2o.customer.service.IServeProviderSettingsService; +import com.jzo2o.customer.service.IServeProviderSyncService; +import com.jzo2o.customer.service.IServeSkillService; +import com.jzo2o.mvc.utils.UserContext; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; + +/** + *

+ * 服务技能表 服务实现类 + *

+ * + * @author itcast + * @since 2023-07-18 + */ +@Service +public class ServeSkillServiceImpl extends ServiceImpl implements IServeSkillService { + @Resource + private ServeTypeApi serveTypeApi; + @Resource + private ServeItemApi serveItemApi; + @Resource + private IServeProviderService serveProviderService; + @Resource + private IServeProviderSettingsService serveProviderSettingsService; + + @Resource + private IServeProviderSyncService serveProviderSyncService; + + /** + * 批量新增或修改 + * + * @param serveSkillAddReqDTOList 批量新增或修改数据 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public void batchUpsert(List serveSkillAddReqDTOList) { + CurrentUserInfo currentUserInfo = UserContext.currentUser(); + + //1.删除上一次该用户设置的服务技能 + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery() + .eq(ServeSkill::getServeProviderType, currentUserInfo.getUserType()) + .eq(ServeSkill::getServeProviderId, currentUserInfo.getId()); + baseMapper.delete(queryWrapper); + + //2.添加新的服务技能 + List serveSkillList = BeanUtil.copyToList(serveSkillAddReqDTOList, ServeSkill.class); + serveSkillList.forEach(s -> { + s.setServeProviderId(currentUserInfo.getId()); + s.setServeProviderType(currentUserInfo.getUserType()); + }); + super.saveBatch(serveSkillList); + + // 3.设置技能 + serveProviderSettingsService.setHaveSkill(UserContext.currentUserId()); +// // 4.校验并设置初次设置完成 +// serveProviderService.settingStatus(UserContext.currentUserId()); + // 5.格式化服务技能,准备插入同步表 + List serveItemIds = serveSkillAddReqDTOList.stream() + .map(ServeSkillAddReqDTO::getServeItemId) + .collect(Collectors.toList()); + //写入服务提供者同步表,将来由同步任务同步到ES + ServeProviderSync serveProviderSync = ServeProviderSync.builder() + .id(UserContext.currentUserId()) + .serveItemIds(serveItemIds) + .build(); + serveProviderSyncService.updateById(serveProviderSync); + } + + /** + * 查询服务技能目录 + * + * @return 服务技能目录 + */ + @Override + public List category() { + //1.查询当前用户的服务技能 + CurrentUserInfo currentUserInfo = UserContext.currentUser(); + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery() + .eq(ServeSkill::getServeProviderType, currentUserInfo.getUserType()) + .eq(ServeSkill::getServeProviderId, currentUserInfo.getId()); + List serveSkillList = baseMapper.selectList(queryWrapper); + + //2.查询启用状态的服务项目录 + List serveTypeCategory = serveItemApi.queryActiveServeItemCategory(); + if (ObjectUtil.isEmpty(serveTypeCategory)) { + return Collections.emptyList(); + } + + //3.封装数据,计算服务类型下属服务技能数量、判断技能是否选中 + List list = BeanUtils.copyToList(serveTypeCategory, ServeSkillCategoryResDTO.class, (origin, target) -> { + target.setServeSkillItemResDTOList(BeanUtils.copyToList(origin.getServeItemList(), ServeSkillItemResDTO.class)); + }); + Map skillTypeCount = CollUtils.defaultIfEmpty(serveSkillList.stream().collect(Collectors.groupingBy(ServeSkill::getServeTypeId, Collectors.counting())), new HashMap<>()); + List serveItemIds = CollUtils.defaultIfEmpty(serveSkillList.stream().map(ServeSkill::getServeItemId).collect(Collectors.toList()), new ArrayList<>()); + list.forEach(type -> { + Long count = skillTypeCount.get(type.getServeTypeId()); + type.setCount(null == count ? 0 : count.intValue()); + type.getServeSkillItemResDTOList().forEach(item -> item.setIsSelected(serveItemIds.contains(item.getServeItemId()))); + }); + return list; + } + + /** + * 查询服务者的服务技能 + * + * @param providerId 服务者id + * @param providerType 服务者类型 + * @param cityCode 城市编码 + * @return 服务技能列表 + */ + @Override + public List queryServeSkillListByServeProvider(Long providerId, Integer providerType, String cityCode) { + //1.获取服务者的所有服务技能 + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery() + .eq(ServeSkill::getServeProviderType, providerType) + .eq(ServeSkill::getServeProviderId, providerId); + List serveSkillList = baseMapper.selectList(queryWrapper); + if (ObjectUtil.isEmpty(serveSkillList)) { + return Collections.emptyList(); + } + + //2.从技能中提取服务项列表 + List skillServeItemIds = serveSkillList.stream().map(ServeSkill::getServeItemId).collect(Collectors.toList()); + + return skillServeItemIds; + } + + /** + * 获取服务者的技能分类 + * + * @return 技能分类列表 + */ + @Override + public List queryCurrentUserServeSkillTypeList() { + //1.查询当前用户的服务技能 + CurrentUserInfo currentUserInfo = UserContext.currentUser(); + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery() + .eq(ServeSkill::getServeProviderType, currentUserInfo.getUserType()) + .eq(ServeSkill::getServeProviderId, currentUserInfo.getId()); + List serveSkillList = baseMapper.selectList(queryWrapper); + if (ObjectUtil.isEmpty(serveSkillList)) { + return Collections.emptyList(); + } + + //2.提取出服务类型id,并去重 + List skillServeTypeId = serveSkillList.stream().map(ServeSkill::getServeTypeId).distinct().collect(Collectors.toList()); + + //3.根据id列表查询服务类型 + return serveTypeApi.listByIds(skillServeTypeId); + } + + /** + * 获取服务者的所有技能 + * + * @return 技能列表 + */ + @Override + public List queryCurrentUserServeSkillItemList() { + //1.查询当前用户的服务技能 + CurrentUserInfo currentUserInfo = UserContext.currentUser(); + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery() + .eq(ServeSkill::getServeProviderType, currentUserInfo.getUserType()) + .eq(ServeSkill::getServeProviderId, currentUserInfo.getId()) + .select(ServeSkill::getServeItemId); + List serveSkillList = baseMapper.selectList(queryWrapper); + if (ObjectUtil.isEmpty(serveSkillList)) { + return Collections.emptyList(); + } + + //2.提取服务项id列表查询名称信息 + List serveItemIds = serveSkillList.stream().map(ServeSkill::getServeItemId).collect(Collectors.toList()); + return serveItemApi.listByIds(serveItemIds); + } +} diff --git a/jzo2o-customer/src/main/java/com/jzo2o/customer/service/impl/WorkerCertificationServiceImpl.java b/jzo2o-customer/src/main/java/com/jzo2o/customer/service/impl/WorkerCertificationServiceImpl.java new file mode 100644 index 0000000..adc43b9 --- /dev/null +++ b/jzo2o-customer/src/main/java/com/jzo2o/customer/service/impl/WorkerCertificationServiceImpl.java @@ -0,0 +1,49 @@ +package com.jzo2o.customer.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.jzo2o.customer.enums.CertificationStatusEnum; +import com.jzo2o.customer.mapper.WorkerCertificationMapper; +import com.jzo2o.customer.model.domain.WorkerCertification; +import com.jzo2o.customer.model.dto.WorkerCertificationUpdateDTO; +import com.jzo2o.customer.model.dto.response.WorkerCertificationResDTO; +import com.jzo2o.customer.service.IWorkerCertificationService; +import org.springframework.stereotype.Service; + +/** + *

+ * 服务人员认证信息表 服务实现类 + *

+ * + * @author itcast + * @since 2023-09-06 + */ +@Service +public class WorkerCertificationServiceImpl extends ServiceImpl implements IWorkerCertificationService { + + + + + /** + * 根据服务人员id更新 + * + * @param workerCertificationUpdateDTO 服务人员认证更新模型 + */ + @Override + public void updateById(WorkerCertificationUpdateDTO workerCertificationUpdateDTO) { + LambdaUpdateWrapper updateWrapper = Wrappers.lambdaUpdate() + .eq(WorkerCertification::getId, workerCertificationUpdateDTO.getId()) + .set(WorkerCertification::getCertificationStatus, workerCertificationUpdateDTO.getCertificationStatus()) + .set(ObjectUtil.isNotEmpty(workerCertificationUpdateDTO.getName()), WorkerCertification::getName, workerCertificationUpdateDTO.getName()) + .set(ObjectUtil.isNotEmpty(workerCertificationUpdateDTO.getIdCardNo()), WorkerCertification::getIdCardNo, workerCertificationUpdateDTO.getIdCardNo()) + .set(ObjectUtil.isNotEmpty(workerCertificationUpdateDTO.getFrontImg()), WorkerCertification::getFrontImg, workerCertificationUpdateDTO.getFrontImg()) + .set(ObjectUtil.isNotEmpty(workerCertificationUpdateDTO.getBackImg()), WorkerCertification::getBackImg, workerCertificationUpdateDTO.getBackImg()) + .set(ObjectUtil.isNotEmpty(workerCertificationUpdateDTO.getCertificationMaterial()), WorkerCertification::getCertificationMaterial, workerCertificationUpdateDTO.getCertificationMaterial()) + .set(ObjectUtil.isNotEmpty(workerCertificationUpdateDTO.getCertificationTime()), WorkerCertification::getCertificationTime, workerCertificationUpdateDTO.getCertificationTime()); + super.update(updateWrapper); + } +} diff --git a/jzo2o-customer/src/main/resources/bootstrap-dev.yml b/jzo2o-customer/src/main/resources/bootstrap-dev.yml new file mode 100644 index 0000000..f6f1d00 --- /dev/null +++ b/jzo2o-customer/src/main/resources/bootstrap-dev.yml @@ -0,0 +1,18 @@ +spring: + cloud: + nacos: + username: nacos + password: nacos + server-addr: 192.168.122.135:8848 + config: + namespace: 75a593f5-33e6-4c65-b2a0-18c403d20f63 + file-extension: yaml + discovery: + namespace: 75a593f5-33e6-4c65-b2a0-18c403d20f63 + ip: ${ACCESS_IP:} + +################# 日志配置 ################# +logging: + level: + com.jzo2o: debug + org.mongodb.driver: info \ No newline at end of file diff --git a/jzo2o-customer/src/main/resources/bootstrap-prod.yml b/jzo2o-customer/src/main/resources/bootstrap-prod.yml new file mode 100644 index 0000000..7569cd9 --- /dev/null +++ b/jzo2o-customer/src/main/resources/bootstrap-prod.yml @@ -0,0 +1,14 @@ +spring: + cloud: + nacos: + username: ${NACOS_USERNAME} + password: ${NACOS_PASSWORD} + server-addr: ${NACOS_ADDR} + config: + namespace: ${NACOS_NAMESPACE} + file-extension: yaml + discovery: + namespace: ${NACOS_NAMESPACE} +logging: + level: + com.jzo2o: debug \ No newline at end of file diff --git a/jzo2o-customer/src/main/resources/bootstrap-test.yml b/jzo2o-customer/src/main/resources/bootstrap-test.yml new file mode 100644 index 0000000..7569cd9 --- /dev/null +++ b/jzo2o-customer/src/main/resources/bootstrap-test.yml @@ -0,0 +1,14 @@ +spring: + cloud: + nacos: + username: ${NACOS_USERNAME} + password: ${NACOS_PASSWORD} + server-addr: ${NACOS_ADDR} + config: + namespace: ${NACOS_NAMESPACE} + file-extension: yaml + discovery: + namespace: ${NACOS_NAMESPACE} +logging: + level: + com.jzo2o: debug \ No newline at end of file diff --git a/jzo2o-customer/src/main/resources/bootstrap.yml b/jzo2o-customer/src/main/resources/bootstrap.yml new file mode 100644 index 0000000..e7a5542 --- /dev/null +++ b/jzo2o-customer/src/main/resources/bootstrap.yml @@ -0,0 +1,77 @@ +################# 服务器配置 ################# +server: + port: 11502 + undertow: + accesslog: + enabled: true + pattern: "%t %a "%r" %s (%D ms)" + dir: /data/logs/undertow/${spring.application.name}/access-logs/ + servlet: + context-path: /customer + +################# spring公共配置 ################# + +spring: + mvc: + path-match: + matching-strategy: ant_path_matcher + format: + date: yyyy-MM-dd HH:mm:ss + jackson: + time-zone: GMT+8 + date-format: yyyy-MM-dd HH:mm:ss + profiles: + active: dev + application: + name: jzo2o-customer + main: + # 支持循环依赖注入 + allow-circular-references: true + # bean名相同覆盖 + allow-bean-definition-overriding: true + cloud: + nacos: + username: ${NACOS_USERNAME} + password: ${NACOS_PASSWORD} + server-addr: ${NACOS_ADDR} + discovery: + namespace: ${NACOS_NAMESPACE} + config: + namespace: ${NACOS_NAMESPACE} + file-extension: yaml + shared-configs: # 共享配置 + - data-id: shared-redis-cluster.yaml # 共享redis集群配置 + refresh: false +# - data-id: shared-xxl-job.yaml # xxl-job配置 +# refresh: false +# - data-id: shared-rabbitmq.yaml # rabbitmq配置 +# refresh: false + - data-id: shared-mysql.yaml # mysql配置 + refresh: false +# - data-id: shared-es.yaml # es +# refresh: false + +################# 项目独有配置 ################# +mysql: + db-name: jzo2o-customer +mybatis: + mapper-locations: mapper/*.xml + type-aliases-package: com.jzo2o.customer.mapper +swagger: + enable: true + package-path: com.jzo2o.customer.controller + title: 家政服务-客户中心接口文档 + description: 用于客户信息管理 + contact-name: 传智教育·研究院 + contact-url: http://www.itcast.cn/ + contact-email: yjy@itcast.cn + version: v1.0 + + +################# 日志配置 ################# +logging: + level: + com.jzo2o: debug + org.mongodb.driver: info +feign: + enable: true diff --git a/jzo2o-customer/src/main/resources/mapper/AddressBookMapper.xml b/jzo2o-customer/src/main/resources/mapper/AddressBookMapper.xml new file mode 100644 index 0000000..8c50cff --- /dev/null +++ b/jzo2o-customer/src/main/resources/mapper/AddressBookMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/jzo2o-customer/src/main/resources/mapper/AgencyCertificationAuditMapper.xml b/jzo2o-customer/src/main/resources/mapper/AgencyCertificationAuditMapper.xml new file mode 100644 index 0000000..27a4ad5 --- /dev/null +++ b/jzo2o-customer/src/main/resources/mapper/AgencyCertificationAuditMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/jzo2o-customer/src/main/resources/mapper/AgencyCertificationMapper.xml b/jzo2o-customer/src/main/resources/mapper/AgencyCertificationMapper.xml new file mode 100644 index 0000000..3cf6c1c --- /dev/null +++ b/jzo2o-customer/src/main/resources/mapper/AgencyCertificationMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/jzo2o-customer/src/main/resources/mapper/BankAccountMapper.xml b/jzo2o-customer/src/main/resources/mapper/BankAccountMapper.xml new file mode 100644 index 0000000..186349a --- /dev/null +++ b/jzo2o-customer/src/main/resources/mapper/BankAccountMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/jzo2o-customer/src/main/resources/mapper/CommonUserMapper.xml b/jzo2o-customer/src/main/resources/mapper/CommonUserMapper.xml new file mode 100644 index 0000000..e4bfb5f --- /dev/null +++ b/jzo2o-customer/src/main/resources/mapper/CommonUserMapper.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/jzo2o-customer/src/main/resources/mapper/InstitutionStaffMapper.xml b/jzo2o-customer/src/main/resources/mapper/InstitutionStaffMapper.xml new file mode 100644 index 0000000..a0b5203 --- /dev/null +++ b/jzo2o-customer/src/main/resources/mapper/InstitutionStaffMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/jzo2o-customer/src/main/resources/mapper/ServeProviderMapper.xml b/jzo2o-customer/src/main/resources/mapper/ServeProviderMapper.xml new file mode 100644 index 0000000..dbe5310 --- /dev/null +++ b/jzo2o-customer/src/main/resources/mapper/ServeProviderMapper.xml @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/jzo2o-customer/src/main/resources/mapper/ServeProviderSettingsMapper.xml b/jzo2o-customer/src/main/resources/mapper/ServeProviderSettingsMapper.xml new file mode 100644 index 0000000..fb98b53 --- /dev/null +++ b/jzo2o-customer/src/main/resources/mapper/ServeProviderSettingsMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/jzo2o-customer/src/main/resources/mapper/ServeProviderSyncMapper.xml b/jzo2o-customer/src/main/resources/mapper/ServeProviderSyncMapper.xml new file mode 100644 index 0000000..4b85c47 --- /dev/null +++ b/jzo2o-customer/src/main/resources/mapper/ServeProviderSyncMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/jzo2o-customer/src/main/resources/mapper/ServeSkillMapper.xml b/jzo2o-customer/src/main/resources/mapper/ServeSkillMapper.xml new file mode 100644 index 0000000..3a7b6b9 --- /dev/null +++ b/jzo2o-customer/src/main/resources/mapper/ServeSkillMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/jzo2o-customer/src/main/resources/mapper/WorkerCertificationAuditMapper.xml b/jzo2o-customer/src/main/resources/mapper/WorkerCertificationAuditMapper.xml new file mode 100644 index 0000000..377d919 --- /dev/null +++ b/jzo2o-customer/src/main/resources/mapper/WorkerCertificationAuditMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/jzo2o-customer/src/main/resources/mapper/WorkerCertificationMapper.xml b/jzo2o-customer/src/main/resources/mapper/WorkerCertificationMapper.xml new file mode 100644 index 0000000..5653d38 --- /dev/null +++ b/jzo2o-customer/src/main/resources/mapper/WorkerCertificationMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/jzo2o-framework/jzo2o-common/src/main/java/com/jzo2o/common/enums/SmsBussinessTypeEnum.java b/jzo2o-framework/jzo2o-common/src/main/java/com/jzo2o/common/enums/SmsBusinessTypeEnum.java similarity index 54% rename from jzo2o-framework/jzo2o-common/src/main/java/com/jzo2o/common/enums/SmsBussinessTypeEnum.java rename to jzo2o-framework/jzo2o-common/src/main/java/com/jzo2o/common/enums/SmsBusinessTypeEnum.java index 029163b..917db2d 100644 --- a/jzo2o-framework/jzo2o-common/src/main/java/com/jzo2o/common/enums/SmsBussinessTypeEnum.java +++ b/jzo2o-framework/jzo2o-common/src/main/java/com/jzo2o/common/enums/SmsBusinessTypeEnum.java @@ -5,8 +5,8 @@ import lombok.Getter; @AllArgsConstructor @Getter -public enum SmsBussinessTypeEnum { - INSTITION_REGISTER(1), INSTITUTION_RESET_PASSWORD(2), SERVE_STAFF_LOGIN(3); +public enum SmsBusinessTypeEnum { + INSTITUTION_REGISTER(1), INSTITUTION_RESET_PASSWORD(2), SERVE_STAFF_LOGIN(3); private int type; -} +} \ No newline at end of file diff --git a/jzo2o-publics/src/main/java/com/jzo2o/publics/controller/inner/InnerSmsCodeController.java b/jzo2o-publics/src/main/java/com/jzo2o/publics/controller/inner/InnerSmsCodeController.java index 78f0974..c47b59d 100644 --- a/jzo2o-publics/src/main/java/com/jzo2o/publics/controller/inner/InnerSmsCodeController.java +++ b/jzo2o-publics/src/main/java/com/jzo2o/publics/controller/inner/InnerSmsCodeController.java @@ -2,7 +2,7 @@ package com.jzo2o.publics.controller.inner; import com.jzo2o.api.publics.SmsCodeApi; import com.jzo2o.api.publics.dto.response.BooleanResDTO; -import com.jzo2o.common.enums.SmsBussinessTypeEnum; +import com.jzo2o.common.enums.SmsBusinessTypeEnum; import com.jzo2o.publics.service.ISmsCodeService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; @@ -33,12 +33,12 @@ public class InnerSmsCodeController implements SmsCodeApi { @ApiOperation("校验短信验证码") @ApiImplicitParams({ @ApiImplicitParam(name = "phone", value = "验证手机号", required = true, dataTypeClass = String.class), - @ApiImplicitParam(name = "bussinessType", value = "业务类型", required = true, dataTypeClass = SmsBussinessTypeEnum.class), + @ApiImplicitParam(name = "businessType", value = "业务类型", required = true, dataTypeClass = SmsBusinessTypeEnum.class), @ApiImplicitParam(name = "verifyCode", value = "验证码", required = true, dataTypeClass = String.class) }) public BooleanResDTO verify(@RequestParam("phone") String phone, - @RequestParam("bussinessType") SmsBussinessTypeEnum bussinessType, + @RequestParam("businessType") SmsBusinessTypeEnum businessType, @RequestParam("verifyCode") String verifyCode) { - return new BooleanResDTO(smsCodeService.verify(phone, bussinessType, verifyCode)); + return new BooleanResDTO(smsCodeService.verify(phone, businessType, verifyCode)); } -} +} \ No newline at end of file diff --git a/jzo2o-publics/src/main/java/com/jzo2o/publics/model/dto/request/SmsCodeSendReqDTO.java b/jzo2o-publics/src/main/java/com/jzo2o/publics/model/dto/request/SmsCodeSendReqDTO.java index d1e841e..3640a47 100644 --- a/jzo2o-publics/src/main/java/com/jzo2o/publics/model/dto/request/SmsCodeSendReqDTO.java +++ b/jzo2o-publics/src/main/java/com/jzo2o/publics/model/dto/request/SmsCodeSendReqDTO.java @@ -10,5 +10,5 @@ public class SmsCodeSendReqDTO { @ApiModelProperty(value = "下发手机号码",required = true) private String phone; @ApiModelProperty("业务类型,1:机构注册,2:机构忘记密码,3:服务人员登录") - private String bussinessType; -} + private String businessType; +} \ No newline at end of file diff --git a/jzo2o-publics/src/main/java/com/jzo2o/publics/service/ISmsCodeService.java b/jzo2o-publics/src/main/java/com/jzo2o/publics/service/ISmsCodeService.java index ac6dbca..ee51593 100644 --- a/jzo2o-publics/src/main/java/com/jzo2o/publics/service/ISmsCodeService.java +++ b/jzo2o-publics/src/main/java/com/jzo2o/publics/service/ISmsCodeService.java @@ -1,6 +1,6 @@ package com.jzo2o.publics.service; -import com.jzo2o.common.enums.SmsBussinessTypeEnum; +import com.jzo2o.common.enums.SmsBusinessTypeEnum; import com.jzo2o.publics.model.dto.request.SmsCodeSendReqDTO; public interface ISmsCodeService { @@ -14,8 +14,8 @@ public interface ISmsCodeService { /** * 校验短信验证码 * @param phone 验证手机号 - * @param bussinessType 业务类型 + * @param businessType 业务类型 * @return 验证结果 */ - boolean verify(String phone, SmsBussinessTypeEnum bussinessType, String verifyCode); -} + boolean verify(String phone, SmsBusinessTypeEnum businessType, String verifyCode); +} \ No newline at end of file diff --git a/jzo2o-publics/src/main/java/com/jzo2o/publics/service/impl/SmsCodeServiceImpl.java b/jzo2o-publics/src/main/java/com/jzo2o/publics/service/impl/SmsCodeServiceImpl.java index 71b5b8f..7fc6c21 100644 --- a/jzo2o-publics/src/main/java/com/jzo2o/publics/service/impl/SmsCodeServiceImpl.java +++ b/jzo2o-publics/src/main/java/com/jzo2o/publics/service/impl/SmsCodeServiceImpl.java @@ -1,7 +1,7 @@ package com.jzo2o.publics.service.impl; import com.jzo2o.common.constants.CommonRedisConstants; -import com.jzo2o.common.enums.SmsBussinessTypeEnum; +import com.jzo2o.common.enums.SmsBusinessTypeEnum; import com.jzo2o.common.utils.StringUtils; import com.jzo2o.publics.model.dto.request.SmsCodeSendReqDTO; import com.jzo2o.publics.service.ISmsCodeService; @@ -21,11 +21,11 @@ public class SmsCodeServiceImpl implements ISmsCodeService { @Override public void smsCodeSend(SmsCodeSendReqDTO smsCodeSendReqDTO) { - if(StringUtils.isEmpty(smsCodeSendReqDTO.getPhone()) || StringUtils.isEmpty(smsCodeSendReqDTO.getBussinessType())) { - log.debug("不能发送短信验证码,phone:{},bussinessType:{}", smsCodeSendReqDTO.getPhone(), smsCodeSendReqDTO.getBussinessType()); + if(StringUtils.isEmpty(smsCodeSendReqDTO.getPhone()) || StringUtils.isEmpty(smsCodeSendReqDTO.getBusinessType())) { + log.debug("不能发送短信验证码,phone:{},businessType:{}", smsCodeSendReqDTO.getPhone(), smsCodeSendReqDTO.getBusinessType()); return; } - String redisKey = String.format(CommonRedisConstants.RedisKey.VERIFY_CODE, smsCodeSendReqDTO.getPhone(), smsCodeSendReqDTO.getBussinessType()); + String redisKey = String.format(CommonRedisConstants.RedisKey.VERIFY_CODE, smsCodeSendReqDTO.getPhone(), smsCodeSendReqDTO.getBusinessType()); // 取6位随机数 // String verifyCode = (int)(Math.random() * 1000000) + ""; String verifyCode = "123456";//为方便测试固定为123456 @@ -36,9 +36,9 @@ public class SmsCodeServiceImpl implements ISmsCodeService { } @Override - public boolean verify(String phone, SmsBussinessTypeEnum bussinessType, String verifyCode) { + public boolean verify(String phone, SmsBusinessTypeEnum businessType, String verifyCode) { // 1.验证前准备 - String redisKey = String.format(CommonRedisConstants.RedisKey.VERIFY_CODE, phone, bussinessType.getType()); + String redisKey = String.format(CommonRedisConstants.RedisKey.VERIFY_CODE, phone, businessType.getType()); String verifyCodeInRedis = redisTemplate.opsForValue().get(redisKey); // 2.短验验证,验证通过后删除code,code只能使用一次 @@ -48,4 +48,4 @@ public class SmsCodeServiceImpl implements ISmsCodeService { } return verifyResult; } -} +} \ No newline at end of file